NEWS
zigbee2mqtt Datenpunkt hinzufügen - TS0004
-
@malaus Doch mit dem mqtt Adapter geht es schon. Nur mach mal die ganzen Haken weg - damit machst Du Dir Endlosschleifen ohne Ende.
Das mit dem eine Ebene höher gehen, hast Du ja rausbekommen.
Mit dem externen Broker wäre nur eine Lösung gewesen, wenn Du den zigbee2mqtt Adapter unbedingt hättest behalten wollen. Dieser arbeitet in sofern nämlich vorbildlich, dass er auch einen externen Broker verwenden kann. Ich glaube sogar, dass er an den mqtt-Adapter als Broker andocken kann. Aber wie gesagt ich brauche das nicht. Ich hab allerdings einen mosquitto mit dem mqtt-Adapter laufen. Aber mit dem mqtt-Adapter alleine als Broker geht es sicher auch. Mach nur die Haken weg, wenn Du nicht weißt was sie bedeuten. Solche Dinge wie nur Änderungen publishen und Zustände publishen sind einfach Gift - wenn man nicht weiß was man tut.
-
@mickym das mit get und set funktioniert nun.
Jetzt stellt sich mir nur noch die Frage, wie erhalte ich den Wert vom Schalter.
Das Gerät schaltet sobald sich der Zustand des Schalters ändert. Ich möchte aber den Schalter vom Relais trennen und dessen Zustand auslesen.
Wenn ich diesen Zustand unter Entwickler Konsole auslesen kann, kann ich diesen dann auch über Mqtt empfangen?Bei Eingabe von "state_4" passiert nichts.
-
@mickym wenn ich unter set folgendes eintrage:
{ "read": { "attributes": [ "onOff" ], "cluster": "genOnOff", "options": {} } }
Erhalte ich auf der zigbee2mqtt Seite die Antwort des Zustands.
2023-01-07 17:56:44Received MQTT message on 'zigbee2mqtt/Fußbodenheizung/4/set' with data '{"read":{"attributes":["onOff"],"cluster":"genOnOff","options":{}}}' 2023-01-07 17:56:44Publishing 'set' 'read' to 'Fußbodenheizung' 2023-01-07 17:56:45Received Zigbee message from 'Fußbodenheizung', type 'readResponse', cluster 'genOnOff', data '{"onOff":1}' from endpoint 4 with groupID 0
Jetzt stellt sich mir die Frage, wie kann ich das bei get einbauen bzw. so das ich diesen Wert dauerhaft zusammen mit den anderen Werten erhalte.
Hast du Erfahrung damit? -
@malaus Gib doch nur mal state ein - was Du in den get Punkt eingeben kannst steht genau in der Beschreibung der Devices zu zigbee2mqtt. Den Zustand Deiner Schalter solltest DU doch in dem übergeordneten JSON erhalten.
Poste halt mal Dein Gerät - so wie es unter den supported DEvices unter zigbee2mqtt auftaucht. Da steht doch auch drin, was für Befehle valide sind.
-
@mickym wenn ich state eingebe, passiert nichts.
Das Gerät ist hier:
https://www.zigbee2mqtt.io/devices/TS0004_switch_module.html
-
@malaus Ok verstehe - steht ja auch drin Du musst die 4 Endpunkte einzeln abfragen. Trotzdem in dem übergeordneten JSON müssten doch alle drin stehen?
Poste doch den ganzen JSON mal.
ANsonsten steht es ja genau so drin:
The current state of this switch is in the published state under the state_l1 property (value is ON or OFF). To control this switch publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"state_l1": "ON"}, {"state_l1": "OFF"} or {"state_l1": "TOGGLE"}. To read the current state of this switch publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"state_l1": ""}
Die Frage ist doch nur musst Du diese Werte auslesen oder werden die nicht automatisch im oberen JSON gesetzt, nachdem die geschaltet sind. Pollen ist in meinen Augen immer die schlechteste Lösung.
Sprich wenn Du in den get DP
{"state_l1": ""}
eingibst, sollte eigentlich in dem JSON obendrüber der Status von Relay1 auftauchen. GEnauso, wenn Du mit set schaltest. Das Lesen braucht man doch nur in Ausnahmefällen. Oben sollte wie gesagt immer der letzte Status drin stehen.
Also nicht state_4, sonder state_l4. Denke ist ein kleines L - kann aber auch großes I sein - musst halt ausprobieren.
-
das ist der JSON:
{ "last_seen": "2023-01-07T17:47:12+00:00", "linkquality": 120, "power_on_behavior": "off", "power_on_behavior_l1": "off", "state_l1": "OFF", "state_l2": "OFF", "state_l3": "OFF", "state_l4": "OFF", "switch_type": "state" }
Ich erhalte die Werte von den Relais aber nicht von den Schaltern.
Mit den Schaltern, bin ich auf die Idee gekommen, da ich unter Konsole, diese auslesen kann. Da ich ja den Wert des Schalters und nicht des Relais möchte, setze ich nur die 4 ein - ohne zu wissen ob das richtig ist.
Und da ich den Zustand des Schalters abfragen kann, habe ich mich gefragt, ob ich diesen auch als JSON erhalten kann.Getestet habe ich das ganze natürlich auch, ob ich wirklich nur den Zustand erhalte und nicht das Relais. Aber ich vermute, dass das ganze einfach nicht geht. Also das ich den Schalter nicht vom Relais koppeln kann.
-
@malaus In meinen Augen bekommst Du immer nur den Zustand des Relais - der Schalter geht in meinen Augen nicht bzw. das musst erfragen. Der Schalter wäre in meinen Augen nur dann identisch und somit abfragbar, wenn Du den switch-type state nimmst. Momentary - verstehe ich einen Taster und Toogle heißt das Relais wird geschalten egal welche Stellung der Schalter hat. Insofern macht das keinen Sinn. Bei den Shellies kann man das zwar glaub zusätzlich sehen, aber normal fragt man nur das Relay ab.
Wenn man da mehr möchte - dann könntest du ggf. ein neues Devices erstellen: https://www.zigbee2mqtt.io/advanced/support-new-devices/02_support_new_tuya_devices.html
und dann auf die zigbee-Nachrichten hören, ob da Nachrichten dabei sind, die man dann auswerten könnte, aber da bin ich raus - da muss dann einer von den zigbee Spezialsiten wie @Asgothian was dazu sagen. -
@mickym ja ich kenne das auch von Shelly, das man den Schalter vom Relais trennen kann. Daher war meine Überlegung, ob das hier auch möglich ist.
Trotz allem, vielen Dank für Deine Hilfe!
-
@malaus Ich gehe mal davon aus, dass wenn man die Relais unabhängig von den Schaltern überwachen könnte, dann gäbe es wie bei den Shellies auch den Detached Mode. Und wie gesagt vielleicht kann man das auch sehen, aber dann müsste man in die Tiefen der zigbee Nachrichten vordringen und da bin ich kein Experte.