Da ich grade mit fakeWallThermostat experimentiere, würde ich mir gerne die dem CUL1 zur Verfügung stehenden Credits im Floorplan anzeigen lassen. Das funktioniert auch soweit mit der readingsGroup ANTENNAS, allerdings wird die Anzeige nicht per longpoll aktualisiert (wohl aber beim Browser-Refresh). Gibt es da eine Möglichkeit das umzusetzen, bzw. habe ich einen Fehler in meiner Definition?
define WEB FHEMWEB 8083 global
attr WEB longpoll 1
[...]
define CUL1 CUL /dev/ttyACM0@38400 1234
attr CUL1 devStateIcon Initialized:cul_cul@green .*:cul_cul@red
attr CUL1 fp_Wohnung 600,30,0
attr CUL1 fp_Wohnung2 715,1040,0
attr CUL1 group Antenne
attr CUL1 icon cul_usb
attr CUL1 rfmode MAX
attr CUL1 room 90 System
define ANTENNAS readingsGroup CUL1:credit10ms
attr ANTENNAS fp_Wohnung2 693,1040,0,
attr ANTENNAS noheading 1
attr ANTENNAS nonames 1
attr ANTENNAS notime 1
attr ANTENNAS room hidden
attr ANTENNAS valueStyle {($READING eq "credit10ms" && $VALUE <= 300)?'style="color:red"':($READING eq "credit10ms" && $VALUE == 900)?'style="display:none"':'style="color:none"'}
Lösung: Für das Reading credit10ms muss ein Event ausgelöst werden:
define CUL1_CREDIT10MS notify .*:temperature.* { fhem( "trigger CUL1 credit10ms: ".ReadingsVal("CUL1", "credit10ms", "") )}
attr CUL1_CREDIT10MS room hidden
Vielen Dank an justme1968!
das credit10ms reading wird ohne ein event zu erzeugen aktualisiert.
du kannst an der stelle an der du das reading mit get aktualisieren lässt ein passendes trigger kommando absetzen damit das event erzeugt wird.
etwas in der art trigger CUL1 credit10ms: <wert>
gruss
andre
Zitat von: justme1968 am 07 Januar 2015, 15:55:43
du kannst an der stelle an der du das reading mit get aktualisieren lässt ein passendes trigger kommando absetzen damit das event erzeugt wird.
Danke für deine Antwort! Ich hatte mir jetzt daraus folgendes zusammen gereimt:
define CUL1_CREDIT10MS notify TYPE=MAX:temperature,TYPE=LaCrosse:temperature trigger CUL1 credit10ms:1
Was ich glaube, was es tun sollte: "Jedes mal, wenn ein MAX- oder ein LaCrose-Device einen Temperature-Wert meldet, wird das Event "CUL1 credit10ms" ausgelöst, was dazu führen sollte, dass die readingsGroup ANTENNAS aktualisiert wird."
Scheint aber nicht zum Ziel zu führen, im Eventmonitor erscheint nichts und die readingsGroup wird nicht aktualisiert. Ich fürchte ich habe nicht verstanden, was du mir sagen willst und http://fhem.de/commandref.html#trigger bringt mich auch nicht weiter. Auch die Bedeutung von <wert> ist mir nicht klar.
-v? :-)
ein notify erwartet eine regex die auf das/die device(s) matched. nicht ein devspec. devspec gibt es nur für fhem kommandos wie set,get und attr. d.h. ein notify mit TYPE=... geht nicht.
<value> ist der aktuelle wert der im event erscheinen soll. den bekommst du entweder mit ReadingsVal oder mit einem get.
du brauchst etwas wie das:
define CUL1_CREDIT10MS notify .*:temperature.* {my $credits = ReadingsVal("CUL1", "credits10ms", ""); fhem( "trigger CUL1 credit10ms: $credits" );}
gruss
andre
Verdammt, da bin ich schön reingefallen. Danke für die Hilfe! Nach Entfernen eines "s" und Einfügen zweier ";" funktioniert's wunderbar! :-)
Für mein Verständnis: <value> muss übergeben werden, weil die readingsGroup den neuen Wert nicht aus dem Device, sondern direkt aus dem Event liest?
ja. die werte für den longpoll update kommen direkt aus dem event.