payload korrekt interpreteieren bei Tradfri & Xiaomi via zigbee2mqtt & mosquitto

Begonnen von Ephes, 24 März 2019, 16:54:39

Vorheriges Thema - Nächstes Thema

Ephes

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!

OdfFhem


Ephes

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?

OdfFhem

Bitte mal ein list vom MQTT_DEVICE und expandJSON bereitstellen ...

Ephes

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

OdfFhem

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.

OdfFhem


Ephes

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