devStateIcon zurück erhalten

Begonnen von Steffen@Home, 12 Januar 2018, 09:16:03

Vorheriges Thema - Nächstes Thema

Ellert

Zitat von: Steffen@Home am 24 Januar 2018, 08:43:20
Hallo Hr. Ellert,

- Grundsätzlich verstehe ich nicht warum hier überhaupt einzelne ' verwendet sind und dann mal wieder doppelte und das alles ohne System oder ich verstehe es noch nicht. Erst wurde '<Div> geschrieben jetzt so "<div> ...was ist denn jetzt richtig?  :o
Benötige ich hier die einzelnen ' überhaupt? Ist es für HTML, also die <div> Angabe nötig?
Sonst würde ich nur " verwenden.
{my $state = ReadingsVal($name, "state", "off"); return "<div>".FW_makeImage("temperature_humidity\@red","tooltip")"." ".ReadingsVal($name,"humidity",0)." %</div>" if($state eq "on"); return "<div>".FW_makeImage("temperature_humidity\@grey","tooltip")"." ".ReadingsVal($name,"humidity",0)." %</div>" if($state eq "off");}

- für was wird der Punkt (.) verwendet ?



Soweit ich weiss Ergibt "variable" die Ausgabe: variable (Den Text zwischen den Hochkommas)
$variable Ausgabe: den Inhalt der Variablen


'<div>".FW_ma : Hier wird z.B. die Zeichenkette nicht vom gleichen Hochkommatyp eingeschlossen.
Würde ich so schreiben:
"<div>".FW_ma....

." %</div>" if($
Das % soll doch als Text Dargestellt sein ist für mich also kein einleitendes Zeichen für etwas  ???

Ich sehe, dass Dir nicht nur das Wissen zu den Hochkommas fehlt, sondern Grundwissen zu Perl.
Daher würde ich vorschlagen, dass Du Dein Perl-Grundwissen im Selbststudium erweiterst, dann hast Du mehr davon, als wenn Du  nur Einzelaspekte nachfragst und die Antworten zu mehr Verwirrung führen, da hier kein Perl-Tutorial nacherzählt werden kann..

Steffen@Home

ja da hast du absolut Recht. Perl ist leider völliges Neuland ja und wenn dann noch unterschiedliche Vorgehensweisen verwendet werden ist das total verwirrend für mich.

Das Beispiel von nils werde ich noch testen.
Pi 1 - FHEM, HM-MOD-RPI-PCB, HM-RT-CC-DN, HM-WDS10-TH-O, HM-Sec-SCo, HM-LC-Sw1PBU-FM, Relais Platine für ext. Ansteuerung, LD382 Wifi LED Controller, DHT
Pi 2 - Kamera, DHT
Pi 3 - FHEM2, Grafana, DHT, Magnet-Sensoren, Relais-Platine

Steffen@Home

Bekomme leider eine Fehlermeldung von FHEM zurück:
Argument FW_makeImage( for attr d_GaOstHumAlarm devStateIcon is not a valid regexp: Unmatched ( in regex; marked by <-- HERE in m/^FW_makeImage( <-- HERE $/ at fhem.pl line 2777.

Zitat von: nils_ am 24 Januar 2018, 08:42:38
versuch mal:

return "<div>" . FW_makeImage( (ReadingsVal($name, "state", "off") eq "on" ? "temperature_humidity\@red" : "temperature_humidity\@grey"), "tooltip") . " " . ReadingsVal($name,"humidity",0) . " %</div>";
Pi 1 - FHEM, HM-MOD-RPI-PCB, HM-RT-CC-DN, HM-WDS10-TH-O, HM-Sec-SCo, HM-LC-Sw1PBU-FM, Relais Platine für ext. Ansteuerung, LD382 Wifi LED Controller, DHT
Pi 2 - Kamera, DHT
Pi 3 - FHEM2, Grafana, DHT, Magnet-Sensoren, Relais-Platine

KernSani

RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Steffen@Home

Perfekt! Super, Danke dafür!  8)
Pi 1 - FHEM, HM-MOD-RPI-PCB, HM-RT-CC-DN, HM-WDS10-TH-O, HM-Sec-SCo, HM-LC-Sw1PBU-FM, Relais Platine für ext. Ansteuerung, LD382 Wifi LED Controller, DHT
Pi 2 - Kamera, DHT
Pi 3 - FHEM2, Grafana, DHT, Magnet-Sensoren, Relais-Platine

nils_

sorry, die {} hatte ich nicht mitgepostet. (für mich war klar das die da hin kommen....  ??? )


funktioniert alles soweit?
viele Wege in FHEM es gibt!

Steffen@Home

Hallo Nils, ja funktioniert perfekt Danke!
Könnte man eigentlich den hinteren Teil (ReadingsVal($name,"humidity",0) . " %) auch separat formatieren z.b. Schriftfarbe ... ?

{return "<div>" . FW_makeImage( (ReadingsVal($name, "state", "off") eq "on" ? "temperature_humidity\@red" : "temperature_humidity\@grey"), "tooltip") . " " . ReadingsVal($name,"humidity",0) . " %</div>";}
Pi 1 - FHEM, HM-MOD-RPI-PCB, HM-RT-CC-DN, HM-WDS10-TH-O, HM-Sec-SCo, HM-LC-Sw1PBU-FM, Relais Platine für ext. Ansteuerung, LD382 Wifi LED Controller, DHT
Pi 2 - Kamera, DHT
Pi 3 - FHEM2, Grafana, DHT, Magnet-Sensoren, Relais-Platine

nils_

Zitat von: Steffen@Home am 26 Januar 2018, 11:52:38
Hallo Nils, ja funktioniert perfekt Danke!
ok. gut!

Zitat von: Steffen@Home am 26 Januar 2018, 11:52:38
Könnte man eigentlich den hinteren Teil (ReadingsVal($name,"humidity",0) . " %) auch separat formatieren z.b. Schriftfarbe ... ?
geht das bei html einfach so? oder muss man dafür das css anpacken??
das weiß ich nicht genau.
falls es da was gibt, musst du es nur an die richtige stelle in deinem string setzen ;)
viele Wege in FHEM es gibt!

Steffen@Home

Müsste ich mal versuchen ob das funktioniert...

{return "<div style=\"color:#0000FF\">" . FW_makeImage( (ReadingsVal($name, "state", "off") eq "on" ? "temperature_humidity\@red" : "temperature_humidity\@grey"), "tooltip") . " " . ReadingsVal($name,"humidity",0) . " %</div>";}

oder ein 2. <div> im <div> vielleicht.
Pi 1 - FHEM, HM-MOD-RPI-PCB, HM-RT-CC-DN, HM-WDS10-TH-O, HM-Sec-SCo, HM-LC-Sw1PBU-FM, Relais Platine für ext. Ansteuerung, LD382 Wifi LED Controller, DHT
Pi 2 - Kamera, DHT
Pi 3 - FHEM2, Grafana, DHT, Magnet-Sensoren, Relais-Platine

Steffen@Home

Zitat von: Steffen@Home am 26 Januar 2018, 12:34:31
{return "<div style=\"color:#0000FF\">" . FW_makeImage( (ReadingsVal($name, "state", "off") eq "on" ? "temperature_humidity\@red" : "temperature_humidity\@grey"), "tooltip") . " " . ReadingsVal($name,"humidity",0) . " %</div>";}

funktioniert  :)

Allerdings was mir aufgefallen ist, ist dass das UserReading des dummy leider nicht aktualisiert wird.
Folgend ist das humidity nicht aktuell.

Das DOIF das den meinen dummy auf on oder off setzt löst leider keinen Event auf das ReadingsProxy aus damit sich dieses auch den neuen Wert holt.


DOIF:
Internals:
   DEF        ([GaOstHum:humidity] > 50) (set d_GaOstHumAlarm on) DOELSE (set d_GaOstHumAlarm off)
   NAME       doif_GaOstHumAlarm
   NR         171
   NTFY_ORDER 50-doif_GaOstHumAlarm
   STATE      cmd_2
   TYPE       DOIF
   READINGS:
     2018-01-31 19:00:11   Device          GaOstHum
     2018-01-25 18:19:19   cmd             2
     2018-01-25 18:19:19   cmd_event       set_cmd_2
     2018-01-25 18:19:19   cmd_nr          2
     2018-01-31 19:00:11   e_GaOstHum_humidity 47.7
     2018-01-25 18:19:19   state           cmd_2
   condition:
     0          ReadingValDoIf($hash,'GaOstHum','humidity') > 50
   devices:
     0           GaOstHum
     all         GaOstHum
   do:
     0:
       0          set d_GaOstHumAlarm on
     1:
       0          set d_GaOstHumAlarm off
   helper:
     event      temperature: 12.1,absFeuchte: 5.1,dewpoint: 1.3
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   GaOstHum
     timerevent temperature: 12.1,absFeuchte: 5.1,dewpoint: 1.3
     triggerDev GaOstHum
     timerevents:
       temperature: 12.1
       absFeuchte: 5.1
       dewpoint: 1.3
     timereventsState:
       temperature: 12.1
       absFeuchte: 5.1
       dewpoint: 1.3
     triggerEvents:
       temperature: 12.1
       absFeuchte: 5.1
       dewpoint: 1.3
     triggerEventsState:
       temperature: 12.1
       absFeuchte: 5.1
       dewpoint: 1.3
   internals:
   itimer:
   readings:
     0           GaOstHum:humidity
     all         GaOstHum:humidity
   regexp:
     0:
     all:
   state:
     STATE:
   trigger:
Attributes:
   DbLogExclude .*
   room       GarageOst
Pi 1 - FHEM, HM-MOD-RPI-PCB, HM-RT-CC-DN, HM-WDS10-TH-O, HM-Sec-SCo, HM-LC-Sw1PBU-FM, Relais Platine für ext. Ansteuerung, LD382 Wifi LED Controller, DHT
Pi 2 - Kamera, DHT
Pi 3 - FHEM2, Grafana, DHT, Magnet-Sensoren, Relais-Platine

nils_

Zitat von: Steffen@Home am 31 Januar 2018, 19:29:20
Allerdings was mir aufgefallen ist, ist dass das UserReading des dummy leider nicht aktualisiert wird.
Folgend ist das humidity nicht aktuell.
welches userreading??
welcher dummy??

Bitte bitte bitte gewöhn dir an, ein list von den devices zu posten!!! (in code-tags!)
so ist es wieder nur raten und nachfragen....

Zitat von: Steffen@Home am 31 Januar 2018, 19:29:20
Das DOIF das den meinen dummy auf on oder off setzt löst leider keinen Event auf das ReadingsProxy aus damit sich dieses auch den neuen Wert holt.
wie oft und wann soll das passieren??
dein doif triggert nur bei über/unterschreiten des schwellwertes (bei dir 50)
momentan ist es im DOELSE-Zweig (cmd_2) weil hum 47.7 ist !
und da bleibt es bis hum mal irgendwann über 50 ist (das kann unter umständen auch mal 2 bis 3 jahre dauern!!!)
viele Wege in FHEM es gibt!

Steffen@Home

#41
Hallo Nils,

das List ist auf Seite 1 / 1. Post. Wollte ich nicht noch einmal posten, aber ok.

Ok, Ich dachte das DOIF löst immer bei einer Änderung der Luftfeuchtigkeit aus und startet entweder den cmd1 oder cmd2.
Aber du hast recht die Readings im Ziel Dummy sind auch vom 25.01.2018

D.h. ich müsste das DOIF durch ein notify ersetzen das auf humidity.* reagiert und den cmd1 oder cmd2 ausführt.
Somit würde der auslösende Event im Ziel dummy sein UserReading auch aktualisieren.

Richtig?

aus DOIF:
([GaOstHum:humidity] > 50) (set d_GaOstHumAlarm on) DOELSE (set d_GaOstHumAlarm off)
wird notify:
define n_GaOstHumAlarm notify GaOstHum:humidity.* IF ($EVENT > 50) (set d_GaOstHumAlarm on) ELSE (set d_GaOstHumAlarm off)
Pi 1 - FHEM, HM-MOD-RPI-PCB, HM-RT-CC-DN, HM-WDS10-TH-O, HM-Sec-SCo, HM-LC-Sw1PBU-FM, Relais Platine für ext. Ansteuerung, LD382 Wifi LED Controller, DHT
Pi 2 - Kamera, DHT
Pi 3 - FHEM2, Grafana, DHT, Magnet-Sensoren, Relais-Platine

nils_

Zitat von: Steffen@Home am 01 Februar 2018, 11:56:13
das List ist auf Seite 1 / 1. Post. Wollte ich nicht noch einmal posten, aber ok.
ok, hab da nochmal reingeschaut.

Zitat von: Steffen@Home am 01 Februar 2018, 11:56:13
Ok, Ich dachte das DOIF löst immer bei einer Änderung der Luftfeuchtigkeit aus und startet entweder den cmd1 oder cmd2.
nein, so funktioniert doif nicht. um das zu erreichen musst du das attribut 'do always' setzen. (siehe commendref!)

Zitat von: Steffen@Home am 01 Februar 2018, 11:56:13
Aber du hast recht die Readings im Ziel Dummy sind auch vom 25.01.2018
kann sein. wenn deine humi seitdem nicht über 50 war ?!


Zitat von: Steffen@Home am 01 Februar 2018, 11:56:13
D.h. ich müsste das DOIF durch ein notify ersetzen das auf humidity.* reagiert und den cmd1 oder cmd2 ausführt.
Somit würde der auslösende Event im Ziel dummy sein UserReading auch aktualisieren.
du kannst auch DOIF nehmen (siehe oben)

notify sollte so passen, wenn du es denn verwenden willst...

viele Wege in FHEM es gibt!

Steffen@Home

Hallo Nils,

Danke für den Tipp mit do always. Habe es so umgesetzt. Kommt ja eigentlich auf´s gleiche raus wie das notify von den Aktivitäten denk ich.
Pi 1 - FHEM, HM-MOD-RPI-PCB, HM-RT-CC-DN, HM-WDS10-TH-O, HM-Sec-SCo, HM-LC-Sw1PBU-FM, Relais Platine für ext. Ansteuerung, LD382 Wifi LED Controller, DHT
Pi 2 - Kamera, DHT
Pi 3 - FHEM2, Grafana, DHT, Magnet-Sensoren, Relais-Platine