Hallo zusammen,
ich erstelle gerade einen einfachen Wecker mit "at".
Dazu brauche ich den Status des "at" im MQTT.
Wenn ich über MQTT-Bridge das publishState nutze kommt zwar beim "inactive" was durch, die Änderung auf "active" wird zwar im Eventmonitor angezeigt, aber nicht über MQTT übertragen.
Also habe ich ein Userreading "Power" angelegt, welches eigentlich nur "STATE" des "at" wiederspiegelt und dann über MQTT sendet. Soweit so gut. Funktioniert auch - nur nicht ganz richtig.
Setze ich das "at" auf "active" springt das Userreading auf "inactive" und umgekehrt - also "at" auf inactive, dann ist das Userreading "Next hh:mm:ss"
Irgendwie sollte das doch nicht so sein... oder?
Hier noch ein List des "at":
Internals:
CFGFN
COMMAND {
if (!$we){
fhem ("set Kugellampe dim 50");
}
}
DEF *07:40 {
if (!$we){
fhem ("set Kugellampe dim 50");
}
}
NAME Wecker
NR 114
PERIODIC yes
RELATIVE no
REP -1
STATE Next: 07:40:00
TIMESPEC 07:40
TRIGGERTIME 1535866800
TRIGGERTIME_FMT 2018-09-02 07:40:00
TYPE at
READINGS:
2018-09-01 09:21:08 Power inactive
2018-09-01 09:21:08 Zeit 07:40
2018-09-01 09:21:08 state Next: 07:40:00
Attributes:
room 90_Logik
userReadings Zeit {InternalVal("Wecker", "TIMESPEC", "00:00");},Power {InternalVal("Wecker", "STATE", "FEHLER");}
Über eine Antwort würde ich mich sehr freuen!
Viele Grüße,
Ingo
STATE ist kein Reading, sondern ein Internal und wird erst nach den Readings aktualisiert. Bin ich auch schon drauf reingefallen.
Kleine Erklaerung:
- das Internal STATE wird fuer die Anzeige verwendet, und leitet sich entweder direkt aus dem Reading state ab, oder indirekt ueber stateFormat.
- das Setzen von STATE passiert _nach_ Auswertung von userReading und stateFormat, aber _vor_ dem Aufruf von notify/DOIF/FileLog/etc.
- at setzt in manchen Faellen STATE direkt, was eigentlich ein Fehler ist.
- InternalVal($dev, "STATE", "default") wird normalerweise als Value($dev) geschrieben.
Okay,
hab ich verstanden - danke für die Erklärung.
Dann habe ich scheinbar ein Problem mit der MQTT-BRIDGE.
Ein Event wird bei Änderung des Readings(!) "state" erzeugt, aber nicht per MQTT übertragen.
Allerdings nur beim Wechsel des "at" von "inactive" nach "active".
Der Wechsel von "active" nach "inactive" wird übertragen. Sehr merkwürdig...
Viele Grüße,
Ingo
Edit:
Ich hänge mal den entsprechenden Auszug aus dem Event-Monitor an:
Das Userreading "Zeit" wird in beiden Fällen übertragen.
2018-09-01 11:51:30 MQTT_BRIDGE MQTT_Wecker transmission-state: outgoing publish sent
2018-09-01 11:51:30 MQTT_BRIDGE MQTT_Wecker transmission-state: outgoing publish sent
2018-09-01 11:51:30 at Wecker inactive
2018-09-01 11:51:30 at Wecker Zeit: 06:15
2018-09-01 11:51:44 MQTT_BRIDGE MQTT_Wecker transmission-state: outgoing publish sent
2018-09-01 11:51:44 at Wecker Next: 06:15:00
2018-09-01 11:51:44 at Wecker Zeit: 06:15
Letztes Edit:
Hier: https://forum.fhem.de/index.php/topic,90735.msg832361.html#msg832361 (https://forum.fhem.de/index.php/topic,90735.msg832361.html#msg832361) gehts weiter... hoffentlich...