Xiaomi Temperatur Sensor auf floorplan Darstellung anpassen

Begonnen von ofno, 22 Oktober 2017, 19:55:00

Vorheriges Thema - Nächstes Thema

ofno

Hallo
ich habe meine Temperatur Sensoren auf dem Floorplan, mit dem Style 4 (S300TH specific) dadurch werden die Messwerte nicht in einzelne class Elemente gepackt, sondern alle unter Messwerte unter col2 dargestellt.

MODEL sensor_ht
<tr class="devicestate fp_Ansicht" id="XMI_158d00012xz">
<td><div id="XMI_158d00012xz"  title="22.18 °C, 61.01 %" class="col2">22.18 °C, 61.01 %</div>
</td></tr>

bzw.
MODEL weather.v1
<tr class="devicestate fp_Ansicht" id="XMI_158d00019xz">
<td><div id="XMI_158d00019xz"  title="10.70 °C, 81.90 %, 100.341 kPa" class="col2">10.70 °C, 81.90 %, 100.341 kPa</div>
</td></tr>

Die beispielhaften style Elemente

.fp_tempvalue            {color:red; font-size:20px; }
.fp_humvalue             {color:blue; font-size:20px; }

sind somit nicht möglich.

Wie kann man das Erzeugen des HTML Codes anpassen, dass es zu dem Sensor passt.

Kann man eine eigene Style Nr definieren und dort den HTML Code entsprechend ausgeben.

Danke!

Gruß ofno

MiKn

Hi ofno,

vielleicht hilft es. Ich mach das bei mir über readingGroups:

defmod AOG_WZ readingsGroup HM_31CF1A_Weather:,<Temperatur>,temperature,<Luftfeuchte>,humidity
attr AOG_WZ fp_WG.FP.Heating 273,299,1,<b>Thermostat</b></br><small>Wohnzimmer</small>,
attr AOG_WZ noheading 1
attr AOG_WZ nolinks 1
attr AOG_WZ nonames 1
attr AOG_WZ room Floorplan
attr AOG_WZ style style="font-size:30px;;font-weight:bold;;color:white;;text-align:left;;width: 770px;; height: 65px;;"
attr AOG_WZ valueFormat {temperature => "%.1f°C", humidity =>"%.f%" }
attr AOG_WZ valueIcon {'humidity'=>'humidity@6FD9FB','temperature'=>'temp_control@6FD9FB'}
attr AOG_WZ valueStyle { if($READING eq "temperature" && $VALUE > 22.5) { 'style="color:red"'}elsif($READING eq "temperature" && $VALUE > 21.8) { 'style="color:orange"'}elsif($READING eq "temperature" && $VALUE < 5) { 'style="color:blue"'}elsif($READING eq "temperature" && $VALUE < 20) { 'style="color:orange"'}elsif($DEVICE eq "Wohnzimmer" && $READING eq "temperature" && $VALUE < 20) { 'style="color:blue"' }elsif($READING eq "humidity" && $VALUE > 75) { 'style="color:red"'}elsif($READING eq "humidity" && $VALUE > 61) { 'style="color:orange"'}else{'style="color:green"'} }
attr AOG_WZ valueSuffix {"temperature"=>" ".ReadingsVal($DEVICE,$READING,0)."°C", "humidity"=>" ".ReadingsVal($DEVICE,$READING,0)." %"}


und über css File:
table#table-AOG_WZ { font-size:32px; font-weight:bold; border:3px solid #ffffff; width:810px; height:240px; text-align: left; background: linear-gradient(225deg, rgb(8, 7, 9), rgba(24, 139, 212, 0.73)); box-shadow:8px 8px 5px #109;}
table#table-AOG_WZ svg { height:45px; width:45px; vertical-align:middle; margin:2px 0; }


Grüße, Michael

ofno

danke MiKn, ich habe aber einen Plan im Hintergrund und möchte darauf die Werte anzeigen.
Ich habe deshalb mal die  95_FLOORPLAN.pm in Zeile 609 angepasst und die 2te Bedingung entfernt.
if ($style == 4 && $txt =~ /T: ([\-0-9\.]+)[ ]+H: ([\-0-9\.]+).*/) {               # S300TH-specific
Es werden zwar ab und zu Werte angezeigt, aber nicht dauerhaft, die class stimmt jetzt.
Ich bin noch nicht dahinter gekommen warum dies so ist bzw. wie die Werte über haupt angezeigt werden.
Gruß ofno

ofno

#3
nachdem ich die Seite etwas stehen habe lassen werden scheinbar die Werte immer dann gefüllt, wenn aktuelle Werte übermittelt werden, über die fhemweb.js

Gibt es die Möglichkeit, dass nach dem Laden der Seite direkt ein Aufruf gemacht wird, ein "get Gateway UpdateAll" würde alle Werte direkt füllen.