Hallo,
zigbee2mqtt übergibt dem mqtt-broker (hier: mosquitto) die komplette Statusinformation im payload. z.B.
von der Glühbirne : {"state":"ON","linkquality":10,"brightness":30}
oder dem Bewegungsmelder {"illuminance":11,"linkquality":5,"occupancy":false}
das würde ich gerne bei dem entsprechenden MQTT_DEVICE als separate Readings einbinden.
mit "attr Bewegungsmelder subscribeReading_state
zigbee2mqtt/Bewegungsmelder" habe ich logischerweise den kompletten payload als state.
Weiß jemand wie ich mein "attr Bewegungsmelder subscribeReading_occupancy ....." gestalten muss damit ich nur "false" oder "true" als status des readings "occupancy" bekomme ?
danke!
Bei Verwendung von MQTT_DEVICE kann zu diesem Zweck expandJSON (https://fhem.de/commandref.html#expandJSON (https://fhem.de/commandref.html#expandJSON)) genutzt werden.
danke für den Hinweis!
so halb funktioniert das auch schon.
mit
define ej_bewegungsmelder
expandJSON Bewegungsmelder.*:state.*:.{.*}
werden dem Bewegungsmelder zwar illuminace und linkquality als readings hinzugefügt aber leieder die occupancy nicht.
Muss ich das "true" irgendwie für fhem übersetzen?
Bitte mal ein list vom MQTT_DEVICE und expandJSON bereitstellen ...
hier list lists:
Internals:
IODev MQTTBroker
NAME Bewegungsmelder
NR 625
STATE {"illuminance":6,"linkquality":0,"occupancy":true}
TYPE MQTT_DEVICE
OLDREADINGS:
READINGS:
2019-03-24 18:46:38 illuminance 8
2019-03-24 18:46:38 linkquality 39
2019-03-24 18:46:38 payload {"illuminance":8,"linkquality":39,"occupancy":false}
2019-03-24 19:52:23 transmission-state unsubscription acknowledged
message_ids:
sets:
subscribe:
subscribeExpr:
subscribeQos:
subscribeReadings:
Attributes:
IODev MQTTBroker
subscribeReading_payload zigbee2mqtt/Bewegungsmelder
Internals:
DEF .*:payload.*:.{.*}
NAME expandJSON_for_zigbee_Devices
NR 628
NTFY_ORDER 50-expandJSON_for_zigbee_Devices
STATE 2019-03-24 19:50:24
TYPE expandJSON
s_regexp .*:payload.*:.{.*}
t_regexp .*
version 1.13
READINGS:
2019-03-24 18:58:13 state active
helper:
Attributes:
room MQTT
Sieht auf den ersten Blick gut aus. Ich bin mir nicht sicher, aber vermutlich steht im FHEM-Log ein Konvertierungsfehler.
In meiner 99_myUtils.pm verwende ich - aus einem ganz anderen Grund - folgende Definition:
#
# Konstanten für die boolschen Werte definieren
#
use constant false => 0;
use constant true => 1;
Einfach mal ergänzen und prüfen, ob das Reading dann - mit 0 oder 1 - angelegt wird.
Hier noch ein relativ aktueller Beitrag, bei dem es auch um das true/false-Problem geht:https://forum.fhem.de/index.php?topic=90847.0 (https://forum.fhem.de/index.php?topic=90847.0)
ZitatHier noch ein relativ aktueller Beitrag, bei dem es auch um das true/false-Problem geht:https://forum.fhem.de/index.php?topic=90847.0
^ das war die Lösung
das JSON Modul war zwar schon installiert aber das JSON:XS noch nicht
zusammenfassend: sudo cpan install JSON und sudo cpan install JSON::XS, danach Restart von fhem