[GELÖST] Kann man die Farbe von stateFormat Werte-abhängig ändern?

Begonnen von Gisbert, 06 Mai 2018, 17:49:29

Vorheriges Thema - Nächstes Thema

Gisbert

Hallo,

ich möchte den state bzw. stateFormat in Abhängigkeit vom Wert farbig gestalten.

Konkret geht es um folgendes:
define Device MQTT
attr Device stateFormat Lüftung: an (bzw. aus)


Ich hätte gerne "Lüftung: an" in rot und "Lüftung: aus" in schwarz.

Kann man das innerhalb des Devices lösen, ohne Verwendung eines zusätzlichen notify's oder DOIF's?

Viele Grüße Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Gisbert

Hallo Otto,

ich hab im Forum, commandref und Wiki gesucht, aber nichts Greifbares gefunden.

Man kann Attribute mit Hilfe von notifys und DOIFs setzen, was aber mehr Einträge erzeugt. Das würde ich gerne vermeiden, bzw. es wäre in dieser Konstellation für mich uninteressant.

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

tarum

Hallo,

probier es so

devStateIcon on:phone_call@limegreen off:phone_call_end@red
Linux Server 22.04 CUL 868+433, CCU3, Homematic, Intertechno, FritzDect 200, JeeLink+LaCrosse, Duofern Stick+Rollotron Gurtwickler,smartVISU-3.0.0

mumpitzstuff

Ist ganz einfach:

<span style="color:#FF0000">Dein stateFormat in Rot.</span>

Das in Kombination mit Perlcode dann in etwa so:

{
  my $value = ReadingsVal('device', 'reading', 'aus');
  if ('an' eq $value)
  {
    return "an in rot";
  }
  else
  {
    return "aus";
  }
}

Otto123

Oder so (mit rot/grün):{(ReadingsVal($name,"state","") eq "off") ? "<span style='color:#FF0000'>Gerät Aus</span>":"<span style='color:#00FF00'>Gerät Ein</span>"}

Wieder was gelernt  ;D Danke!

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Gisbert

Zitat von: mumpitzstuff am 07 Mai 2018, 12:19:54
Ist ganz einfach:

<span style="color:#FF0000">Dein stateFormat in Rot.</span>

Das in Kombination mit Perlcode dann in etwa so:

{
  my $value = ReadingsVal('device', 'reading', 'aus');
  if ('an' eq $value)
  {
    return "an in rot";
  }
  else
  {
    return "aus";
  }
}


Hallo mumpitzstuff,

Vielen Dank für deine Anregung.
Vielleicht sollte ich an dieser Stelle erwähnen, dass ich nicht programmieren kann - ich weiß, dass das keine Entschuldigung ist, aber es ist nun mal so, und wird sich leider nicht in absehbarer Zeit wesentlich ändern.

Mein Problem ist jetzt, deine Information in stateFormat und/oder userReadings in der richtigen Reihenfolge unterzubringen, so dass es funktioniert.

---------------------------------

Zitat von: Otto123 am 07 Mai 2018, 13:06:09
Oder so (mit rot/grün):{(ReadingsVal($name,"state","") eq "off") ? "<span style='color:#FF0000'>Gerät Aus</span>":"<span style='color:#00FF00'>Gerät Ein</span>"}

Wieder was gelernt  ;D Danke!

Gruß Otto

Hallo Otto,

es funktioniert, so wie du es vorgeschlagen hast, wenn man die Definition in ein userReadings packt.
Vielen Dank.

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

mumpitzstuff


Otto123

Zitat von: Gisbert am 07 Mai 2018, 21:56:21
es funktioniert, so wie du es vorgeschlagen hast, wenn man die Definition in ein userReadings packt.
Hallo Gisbert,

das habe ich so direkt im stateFormat stehen!

Noch zu Erklärung des Programmcodes:Mein Konstrukt macht quasi das Gleiche wie das von mumpitzstuff, nur seines ist noch etwas sprechender.
Das Konstrukt ist -> Bedingung | Frage | Rückgabe:
{(Bedingung) ? Auswertung der Bedingung ist wahr : ... ist falsch}
Die roten Elemente sind sozusagen die Pflichtteile der Text ist auszustauschen.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Gisbert

Hallo Otto und mumpitzstuff,

vielen Dank für die Erklärung.
Ich hatte vorher eine Definition in userReadings, die ich beibehalten habe - jetzt mit der Variante Farbe -, und dieses Reading wurde dann in stateFormat aufgerufen.

Wenn ich es gleich in stateFormat definiere, spare ich mir den Zwischenschritt über userReadings.

Damit ist die Aufgabe für mich gelöst; ich gebe das dann noch im ersten Beitrag bekannt.

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Gisbert

Zitat von: Otto123 am 08 Mai 2018, 13:48:37
Das Konstrukt ist -> Bedingung | Frage | Rückgabe:
{(Bedingung) ? Auswertung der Bedingung ist wahr : ... ist falsch}
Die roten Elemente sind sozusagen die Pflichtteile der Text ist auszustauschen.

Hallo Otto,

könnte man auch statt "Auswertung der Bedingung ist wahr" ein Reading reinschreiben, welches numerisch ist und sich entsprechend ändern kann?
Ich hab's versucht, aber statt des Readingswertes wird der eingetippte Text (mit geschweften Klammern, runden Klammern, etc.) rausgeschrieben.

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Otto123

Hallo Gisbert,

ja klar, so in der Art {Perlausdruck}:
{return ReadingsVal("SensorAussen","temperature",0)}
Du rufst quasi wieder eine Perl Funktion auf und gibst eine Wert zurück (deswegen return)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Gisbert

Hallo Otto,

attr Device stateFormat {(ReadingsVal($name,'Summe','') <= 0) ? "<span style='color:#000000'>{return ReadingsVal($name,'Summe',0)}</span>":"<span style='color:#FF0000'>{return ReadingsVal($name,'Summe',0)}</span>"}
liefert:
{return ReadingsVal(Device,'Summe',0)}
in schwarzer Farbe, da der Wert (Summe) kleiner Null war; d.h. den String, aber nicht Wert "Summe".

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Otto123

Hallo Gisbert,

nach der Farbe hast Du diesmal nicht gefragt.  ;D
Also ohne die Farbe geht das, statt "<span style ...." nur der {} Ausdruck.
Geht sicher auch mit Farbe, aber da bin ich adhock nicht so fit und zu müde  ;)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Gisbert

Hallo Otto,

falls dir in den nächsten Tagen eine Lösung einfällt, dann bin ich nach wie vor sehr interessiert.

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY