NEWS
zigbee2mqtt Datenpunkt hinzufügen - TS0004
-
@mickym vielen Dank für deine Antwort.
Das habe ich in der Doku auch entdeckt aber leider konnte ich damit nichts anfangen. Also ich habe nicht verstanden, wo ich das eintrage.
Ich habe jetzt mal die Datenpunkte erstellt und das {"state": ""} abgeändert auf "state_l4". Wie erhalte ich aber nun eine Antwort? -
@malaus Nun ich hoffe du nutzt reines mqtt und nicht den Adapter - der Dir die Datenpunkte zerlegt. Ich bin auch nicht sicher ob state_i4 richtig ist oder ob Du nicht lieber nur state eingibst. Die Antwort erhälst Du normalerweise in dem aktualisierten JSON zu Deinem Gerät:
Also entweder da wo ich markiert habe - wenn Du den zigbee2mqtt Adapter verwendest und diese Datenpunkte aufgedröselt sind schau - ob Dein Datenpunkt mit dem state_I4 nicht aktualisiert wurde. Das ist die Antwort.
Das sehe ich auf Deinem Screenshot ggf. rudimentär. Das Problem ist aber auch ggf. wenn Du hier nicht reines mqtt verwendest, sondern wieder Adapter, die Nachrichten auseinanderreißen.
Wie gesagt ich nutze aber auch keine zigbee Adapter, sondern arbeite mit originalem mqtt.
-
@mickym dann liegt es daran. Ich nutze den zigbee2mqtt Adapter und nicht den mqtt Adapter
-
@malaus Ja dann musst Dich mit dem Entwickler mal zusammensetzen, wie man das dort machen kann. Aber das ist genau der Grund, warum ich keine Adapter mag, die mqtt sprechen, da nutze ich lieber das Original. Wenn Du einen externen Broker (z.Bsp. mosquitto) mit dem zigbee2mqtt Adapter verwendest, dann müsste es aber gehen, da dann der Adapter das JSON erneut zum Zerlegen bekommt.
-
@mickym ich habe das ganze mal auf den mqtt Adapter umgestellt.
Leider kann ich dort keinen Datenpunkt erstellen - auch nicht per Skript. Wie hast du das gemacht?
Gelöst:
In dem ich eine Etage höher gehe und dort einen Datenpunkt erstelle - mit Punkt um im richtigen Ordner zu kommen.
Wenn Du einen externen Broker (z.Bsp. mosquitto) mit dem zigbee2mqtt Adapter verwendest, dann müsste es aber gehen, da dann der Adapter das JSON erneut zum Zerlegen bekommt.
Bedeutet, es geht auch nicht mit dem mqtt Adapter?
-
@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.