Beok, Zigbee, Tuya, Heizkörper Thermostat, Mqtt Befehl?

Tuya basierte Hardware. Geflasht oder ungeflasht ...

Moderator: seppy

oh73
Beiträge: 285
Registriert: 7. Mär 2021 14:49
Answers: 1

Beok, Zigbee, Tuya, Heizkörper Thermostat, Mqtt Befehl?

Beitrag von oh73 »

neues Spielzeug, neues Problem!

wir sollen ja Energie sparen, deshalb hab ich mir mal ein Zigbee Heizkörper Thermostat bestellt.
https://www.amazon.de/dp/B09TF7P33M/ref ... CE_3p_dp_1

bei der Beschreibung wird auch ein Conbee Stick mit angeboten, deshalb meine Hoffnung ich könnte das mit meinem Conbee Ii Gateway betreiben.

Leider lässt sich das in der Phoscon APP (noch) nicht anmelden!

Da ja auch Tuya kompatibel, hab ich das mal in der Smart Live App mit einem anderen Zigbee Gateway (von 7Links)
angemeldet.

dann bei Tuya-mqtt in der Devices.conf die Daten dazu eingetragen, und mit dem MQTT-Explorer geschaut was für Daten kommen.

Also abrufen kann ich alles, Soll-Temperatur, Ist-Temperatur, Ventilstellung, usw.
nur die Temperatur einstellen hab ich scheinbar nicht den richtigen Befehl!

Bild

dps/2 = soll Temperatur,
dps/3 = ist Temperatur,
dps/6 = open , close
dps/102 = Ventilstellung 0-100%
dps/ state = werden Änderungen angezeigt!

ich kann mit

Code: Alles auswählen

Type number : Beok_soll_senden "H Beok Soll Temperatur" 		[ 
				commandTopic="tuya/zx-5028/dps/2/state" 
			]
die soll Temperatur senden, aber das Ventil reagiert nicht darauf!

irgend wie fehlt mir dazu das richtige Commando?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
OH 4.0.3 auf HP 26o G1 Dm Mini Pc mit MX_Linux

Benutzeravatar
udo1toni
Beiträge: 13865
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Beok, Zigbee, Tuya, Heizkörper Thermostat, Mqtt Befehl?

Beitrag von udo1toni »

Die Kommunikation in mqtt ist immer gerichtet. state ist per Wortdefinition ein Zustand. Du kannst über diese Topics also etwas über dne Zustand erfahren, weil das Device etwas an diese Topics sendet. Es hört aber nicht auf Nachrichten in diesem Topics.
Dazu gibt es andere Topics, die Du ausschließlich über eine Doku erfahren kannst, das Gerät wird niemals auf einem solchen Topic senden.
Vergleiche auch mit Tasmota:
stat -> Status-Informationen, die Folge eines Befehls sind.
tele -> Status-Informationen, die zyklisch gesendet werden.
cmnd -> hier wartet Tasmota auf Befehle von außerhalb.

Laut Doku ist das Schlüsselwort tatsächlich command, es könnte also ausreichen, den Channel so anzupasssen:

Code: Alles auswählen

Type number : Beok_soll_senden "H Beok Soll Temperatur" 		[ 
				commandTopic="tuya/zx-5028/dps/2/command",
				  stateTopic="tuya/zx-5028/dps/2/state" 
			]
Wohlgemerkt: Der channel geht in beide Richtungen, er erhält den aktuellen Status vom Gerät und sendet die Befehle an das Gerät. Die Anzeig in openHAB sollte ich also ändern, wenn Du das Soll am Thermostaten änderst und umgekehrt sollte die Solltemperatur im Thermostaten geändert werden, wenn Du in openHAB den Wert änderst.

So als Tipp am Rande: Nutze ein Thing pro Gerät, so ist es von den Entwicklern gedacht. Setze einen sinnvollen kurzen Namen für das Gerät, mitsamt sinnvollem Label. Das Label spielt nur in der Verwaltung eine Rolle (Auffindbarkeit des Things innerhalb der Thing Liste).
Setze keine komplexen Namen für die Channel. Ein Thermostat hat einen Channel ist, einen Channel soll, eventuell einen Channel mode und einen Channel window, vielleicht auch noch weitere, je nach Ausstattung des Thermostaten. Dabei müssen die Channel pro Thing eindeutig sein, aber ein weiteres Thing desselben Typs kann die identischen Channel nutzen. Das ergäbe bei der Definition von Items z.B. folgendes Bild:

Code: Alles auswählen

Number EGWoziTempSet "Soll Temperatur Wohnzimmer" {channel="mqtt:topic:mosquitto:thermoWozi:soll"}
Number EGWoziTempIst "Ist Temperatur Wohnzimmer"  {channel="mqtt:topic:mosquitto:thermoWozi:ist"}
Number EGKuecheTempSet "Soll Temperatur Küche"    {channel="mqtt:topic:mosquitto:thermoKueche:soll"}
Number EGKuecheTempIst "Ist Temperatur Küche"     {channel="mqtt:topic:mosquitto:thermoKueche:ist"}
Die Things geben also Auskunft über das individuelle Gerät, die eigentlichen Channelnamen sind aber identisch, jeweils soll für die Solltemperatur und ist für die gemessene Temperatur. Auch die Channel Label können jeweils kurz und prägnant sein. beim automatischen Generieren von Items werden sie zum Erzeugen des Namens und des Labels herangezogen, aber das sollte man nur zum Probieren machen, die automatisch erzeugten Namen sind lächerlich kompliziert.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

oh73
Beiträge: 285
Registriert: 7. Mär 2021 14:49
Answers: 1

Re: Beok, Zigbee, Tuya, Heizkörper Thermostat, Mqtt Befehl?

Beitrag von oh73 »

ja, eine Doku zu dem Teil wäre gut, finde ich allerdings noch nicht!

das es da ein spezielles Commando zum setzen der Temperatur gibt hab ich mir auch schon gedacht und diverses probiert, command, cmnd, set, setto, set_temp, temp_set, power, usw.

bisher ohne Erfolg!

ich hab hier mal 2 Code Scripts, vielleicht kannst du daraus was erkennen, oder einen Befehl davon ableiten?

Code: Alles auswählen

[
  {
    "code": "mode",
    "value": "manual"
  },
  {
    "code": "temp_set",
    "value": 175
  },
  {
    "code": "switch_rapid",
    "value": false
  },
  {
    "code": "countdown_rapid",
    "value": 0
  },
  {
    "code": "window_check",
    "value": false
  },
  {
    "code": "child_lock",
    "value": false
  },
  {
    "code": "lower_temp",
    "value": 50
  },
  {
    "code": "upper_temp",
    "value": 300
  }
]

Code: Alles auswählen

{
  "range": [
    "auto",
    "manual",
    "off"
  ]
}

temp_set	Integer	

{
  "unit": "℃",
  "min": 50,
  "max": 350,
  "scale": 1,
  "step": 5
}

switch_rapid	Boolean	

"{true,false}"

countdown_rapid	Integer	

{
  "unit": "min",
  "min": 0,
  "max": 720,
  "scale": 0,
  "step": 10
}

window_check	Boolean	

"{true,false}"

child_lock	Boolean	

"{true,false}"

lower_temp	Integer	

{
  "unit": "℃",
  "min": 50,
  "max": 150,
  "scale": 1,
  "step": 10
}

upper_temp	Integer	

{
  "unit": "℃",
  "min": 200,
  "max": 350,
  "scale": 1,
  "step": 10
}
das ist aus dem Device Debug von dem Teil.

temp_set sollte danach eventuell funktionieren?
OH 4.0.3 auf HP 26o G1 Dm Mini Pc mit MX_Linux

Benutzeravatar
udo1toni
Beiträge: 13865
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Beok, Zigbee, Tuya, Heizkörper Thermostat, Mqtt Befehl?

Beitrag von udo1toni »

Nein, die Doku ist ja da (in meinem letzten Post verlinkt), es handelt sich um die Doku von Tuya-mqtt, welches Du nutzt. Dort stammt die Schreibweise mit command her.

Ich kann mich dunkel erinnern, dass es bei jemand anderen nur mit der json-Variante funktioniert hat (ist aber schon etwas her, vielleicht habe ich das falsch in Erinnerung)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

oh73
Beiträge: 285
Registriert: 7. Mär 2021 14:49
Answers: 1

Re: Beok, Zigbee, Tuya, Heizkörper Thermostat, Mqtt Befehl?

Beitrag von oh73 »

habe immer noch kein Erfolg!

aber ich habe eine Vermutung warum das nicht funktioniert.

im MQTT-Explorer wird das Gateway (zx-5028) angezeigt und danach gleich die dps Kanäle, aber nicht das Subdevice!
ist: tuya/zx-5028/dps/2/state = 210
müsste das nicht so sein? tuya/zx-5028/smarttrv/dps/2/state =

deshalb vermute ich kommt der Befehl nicht an!

gibt es bei Mqtt sowas wie ein Ping mit Rückmeldung?
um festzustellen ob der Pfad richtig ist.

das Kommando selbst dürfte schon richtig sein.

hab aber auch im englischen Forum was gefunden, da hat einer das gleiche Problem und auch keine Lösung.
https://community.openhab.org/t/step-by ... 55?page=13
OH 4.0.3 auf HP 26o G1 Dm Mini Pc mit MX_Linux

Benutzeravatar
udo1toni
Beiträge: 13865
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Beok, Zigbee, Tuya, Heizkörper Thermostat, Mqtt Befehl?

Beitrag von udo1toni »

Das ist dann aber ein Problem in tuya-mqtt.

Probiere bitte mal, ob Du direkt vom MQTT Explorer aus mit dem korrekten Topic eine Reaktion bekommst, um einfahc mal openHAB aus dieser Gleichung zu entfernen...

MQTT ist eine m2m Schnittstelle, bei der Gestaltung wurde darauf geachtet, diese auch menschenlesbar zu gestalten :) Wenn Du im MQTT Explorer den Baum betrachtest, kannst Du gewöhnlich für jedes Gerät ein Topic finden. Manchmal befindet sich dieses auf der obersten Ebene, manchmal auch eine Ebene darunter (z.B. Tasmota hat ein "prefix", welches die Unterscheindung senden, empfangen, zyklisch senden erlaubt. Weil Tasmota mqtt schon seit vielen auf diese Art nutzt, befindet sich die Unterscheidung noch über den Geräten, die geräte tauchen also jeweils dreimal auf, in stat/, cmnd/ und tele/. Man kann das aber umkonfigurieren :) oder gar eine zusätzliche Gruppierung vornehmen, das ist in Tasmota vorbildlich gelöst.
Jedenfalls sollte jedes Gerät, welches sich am Broker meldet auch ein LWT eintragen (LastWillTestament). Das Topic meinGeraet/LetzterWille wird dann z.B. als LWT definiert. Weiterhin wird als Letzter Wille "nicht erreichbar" hinterlegt.
Nun sendet das Gerät auf das Topic meinGeraet/LetzterWille die Payload "erreichbar".
Solange das Gerät auf den Broker reagiert, bleibt das LWT auf errechbar gesetzt. Sobald aber der Broker feststellt, dass das Gerät nicht reagiert, übernimmt er den Job, das Topic mit dem hinterlegten Payload zu wüllen. Absofort ist meinGeraet/LetzterWille dann mit der Payload "nicht erreichbar" gesetzt.
Meist heißt das Topic tatsächlich LWT und als Payload wird online/offline verwendet, aber weder das eine noch das andere ist zwingend, weshalb ich hier mal ein anderes Beispiel verwendet habe.
Gemeinsam haben die LWT aber IMMER, dass sie retained sind. der Wert ist jederzeit abrufbar, nicht nur, wenn er gerade vom Gerät gesendet wird. Ein Client, der das Topic abonniert, erhält sofort den Zustand.
Wenn Du also den MQTT Explorer öffnest, gibt es das Topic mit Sicherheit, denn tuya-mqtt stellt diese Funktion mit hoher Wahrscheinlichkeit zur Verfügung - Du musst nur herausfinden, wie es heißt :) aber mit der Beschreibung von oben sollte es kein Hexenwerk sein, das korrekte Topic zu identifizieren.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

oh73
Beiträge: 285
Registriert: 7. Mär 2021 14:49
Answers: 1

Re: Beok, Zigbee, Tuya, Heizkörper Thermostat, Mqtt Befehl?

Beitrag von oh73 »

Versuche das schon die letzten 2 Tage nur noch über den MQTT Explorer.
ber keine Reaktion!

hab mir das bei iot.tuya.com noch mal angesehen,
da wird alle komplett in einem json String gesendet!

du machst dir ja viel Mühe mit deiner Beschreibung zu MQTT, nur als Laie muss ich erst mal versuchen das umzusetzen.

soweit ich das verstehe fehlt da einfach das richtige Topic.
die geräte tauchen also jeweils dreimal auf, in stat/, cmnd/ und tele/
das ist bei mir nicht so!
Man kann das aber umkonfigurieren :) oder gar eine zusätzliche Gruppierung vornehmen, das ist in Tasmota vorbildlich gelöst
da bin ich wieder zu doof dafür!

wenn ich den MQTT Explorer aufmache wird erst mal von dem Thermostat nichts angezeigt.
nach einiger Zeit kommmt dann das
Gateway mit Status = online
und dps mit state {}

Bild

wenn ich dann am Gerät oder mit der App die Temperatur ändere kommt
unter dps ein weiteren Zweig "2" mit state = 200
und der state direkt unter dps ändert sich in state {"2":200}

Bild

ändert sich die Temperatur erscheint unter dps ein Topic "3" mit state = 210
und gleichzeitig andert sich wieder der state direkt unter dps in state = {"3":210}

ändere ich bei iot.tuya.com die Temperatur macht er nach ganze Liste von Topics auf.

Bild

auslesen kann ich das mit openhab alles!

für meine Begriffe fehlt da die zusätzliche Gruppe für mein Thermostat!

ein weiterer Versuch von mir ein 2. (exotisches) Zigbee Gerät , ein Visortech Schließzylinder, an dem Gateway angemeldet, macht im Prinzip das selbe.
es werden neue Topics direkt unter dps aufgemacht mit Zahlen zum Teil über 100!

aber wieder keine eigene Gruppe!

dachte ja schon in meiner devices.conf wäre ein Fehler,
aber die Daten dafür rufe ich ja mit dem tuya-cli wizard direkt von iot.tuya.com ab.
in der devices.conf sind meine Geräte als subDevices eingetragen, solte eigentlich richtig sein!

Code: Alles auswählen

[
  {
    name: 'zx5028',
    id: 'bfa0299fcca430xxxxxx',
    key: '3760145877xxxxxx',
    subDevices: [
	  {
        name: 'visortech',
        id: 'bf88738568a202xxxxxx',
        cid: '842e14fffexxxxxx'
      },
      {
        name: 'smarttrv',
        id: 'bfc7b577ad350f2xxxxx',
        cid: '0c4314fffe0xxxxx'
      }
    ]
  },
  {
    name: 'teckinzwei',
    id: 'bf1af9dbbee45a77axxxxx',
    key: '7d1d77fa343xxxxxx'
  },
  {
    name: 'teckineins',
    id: 'bf9e954174c808d9xxxxxx',
    key: '19e0677dd064xxxxx'
  },
  {
    name: 'strom',
    id: '03410103a4e57cxxxxxxx',
    key: '5c1e41e6b6fxxxxx'
  }
]
senden versucht vom MQTT Explorer mit :
tuya/zx5028/dps/2/command
tuya/zx5028/dps/command
tuya/zx5028/command
auch mal Versucht mein Gerät einzufügen mit
tuya/zx5028/smarttrv/dps/2/command
tuya/zx5028/smarttrv/dps/command
tuya/zx5028/smarttrv/command

dabei immer mit RohDaten und auch mit JSON String versucht.

aber das richtige LWT ist da nicht dabei.

werde noch etwas weiter versuchen , aber ich denke so langsam gebe ich das auf.
Geht einfach nicht!

mögliche Fehlerquelle könnte auch das Zigbee Gateway sein, hab zwar auch schon 2 verschiedene versucht.
kann zwar meine Geräte Problemlos anmelden, aber bei den Gateways finde ich nichts ob die Tuya kompatibel sind?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
OH 4.0.3 auf HP 26o G1 Dm Mini Pc mit MX_Linux

Benutzeravatar
udo1toni
Beiträge: 13865
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Beok, Zigbee, Tuya, Heizkörper Thermostat, Mqtt Befehl?

Beitrag von udo1toni »

Na, stopp, ich habe Beispiele anderer mqtt Systeme beschrieben (konkret Tasmota, das ist eine alternative Firmware für IoT-Geräte, die auf einem ESP8266 oder einem ESP32-dingsbums ;) aufsetzen)
Dein Gerät unterstützt selbst gar kein mqtt, Tuya hat das nie integriert.

tuya-mqtt ist ein Opensource Projekt, welches als Gateway die Tuya Geräte mittels mqtt steuerbar macht, ohne die Firmware zu tauschen.
Vorteil: Man erspart sich das Flashen, man kann auch Geräte verwenden, die einen anderen Mircocontroller verwenden.
Nachteil: Man muss die Geräte dennoch zwingend über die Tuya App in der Cloud anmelden, auch wenn die Kommunikation später im LAN bleibt (wobei das nur angelesen ist, keine Ahnung, ob die Geräte dann tatsächlich nicht mehr nach außen verbunden sein müssen)

Wenn Du also zu tuya-mqtt etwas suchst, ist iot.tuya.com die ganz falsche Adresse, Du musst bei https://github.com/TheAgentK/tuya-mqtt vorbei schauen.
Ich weiß auch nicht, ob einfach "alle" Tuya Devices unterstützt werden, oder nur solche, die schon irgendwie integriert wurden - ich hab ja diesen Krempel gar nicht... Aber da Du zumindest irgendwelche Daten siehst, gehe ich stark davon aus, dass das Gerät grundsätzlich unterstützt wird.

Das LWT ist mit an Wahrscheinlichkeit grenzender Sicherheit tuya/strom/zx5028/status, wobei "online" für bereit steht (und mutmaßlich offline für nicht bereit). Testen kannst Du das, indem Du das jeweilige Device abschaltest, das LWT ändert quasi sofort seinen Status. Außerdem kannst Du den MQTT Explorer neu starten. Dabei tauchen zunächst nur die Topics auf, die retained sind (LWT sind immer retained).
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

oh73
Beiträge: 285
Registriert: 7. Mär 2021 14:49
Answers: 1

Re: Beok, Zigbee, Tuya, Heizkörper Thermostat, Mqtt Befehl?

Beitrag von oh73 »

Teilerfolg!!

ich hab mir noch mal die github Seite vorgenommen und wegen mangelnder englisch Kentnisse Zeile für Zeile mit dem Translatur übersetzt!

irgendwann hab ich dann den Hinweis gefunden mit tuya-cli versuchen!

nach 2 Stunden Kampf und weiterm suchen nach Beispielen kam ich dann irgendwann hier hin:
https://github.com/make-all/tuya-local/issues/70
den Befehl zum abfragen hab ich dann zum senden umgewandelt,

Code: Alles auswählen

tuya-cli set --ip 192.168.178.38 --id bfca7bf97f11fddxxxxx tap ID --key 2a449ede5f7xxxx --cid 0c4314fffe01eab4 --set 195 --dps 2 --protocol-version 3.3
und siehe da mein Thermostat reagiert!!

wie ich das jetzt in openhab hin bekomme und ob ich die Paremeter wirklich alle brauche? muss ich erst noch mal drüber schlafen!

id, ip, und key ist vom Gateway und cid vom Thermostatventil.
OH 4.0.3 auf HP 26o G1 Dm Mini Pc mit MX_Linux

oh73
Beiträge: 285
Registriert: 7. Mär 2021 14:49
Answers: 1

Re: Beok, Zigbee, Tuya, Heizkörper Thermostat, Mqtt Befehl?

Beitrag von oh73 »

mein Heizkörperthermostat funktioniert ja soweit ganz gut,
Werte mit Openhab über tuya-cli einstellen geht Problemlos.

nun bin ich mutig geworden und hab mir noch 2 Zigbee Tuya Temperatur Sensoren bestellt,

jetzt kommt aber das nächste Problem!

da beim MQTT-Explorer die Namen der SubGateways nicht angezeigt werden, sind die dps Kanäle doppelt belegt!
liegt aber nicht am MQTT-Explorer, sondern an tuya-mqtt selbst!
hab das gleiche Ergebnis auch wenn ich die Werte in der Shell mit tuya-cli abrufe.

Heizkörperthermostat mit Tuya-cli abfragen,

Code: Alles auswählen

tuya-cli get --ip 192.168.178.41 --id bfbb148000d626f828xxxx tap ID --key 2b57ef5d32fxxxx --cid 0c4314fffe0xxxx --full --protocol-version 3.3
Ergebnis :

Code: Alles auswählen

{
  dps: {
    '1': 'manual',
    '2': 210,
    '3': 221,
    '4': false,
    '5': 0,
    '8': false,
    '12': false,
    '15': 50,
    '16': 300,
    '102': 0
  },
  cid: '0c4314fffe0xxxx'
}
Temperatur Sonsor 1 mit tuya-cli abfragen,

Code: Alles auswählen

tuya-cli get --ip 192.168.178.41 --id bfbb148000d626f828xxxx tap ID --key 2b57ef5d32fxxxx --cid a4c1385e3c75xxxx --full --protocol-version 3.3
Ergebnis :

Code: Alles auswählen

{ dps: { '1': 215, '2': 540, '4': 100 }, cid: 'a4c1385e3c75xxxx' }
Temperatur Sensor 2 mit tuya-cli abfragen,

Code: Alles auswählen

tuya-cli get --ip 192.168.178.41 --id bfbb148000d626f828xxxx tap ID --key 2b57ef5d32fxxxx --cid a4c13891922dxxxx --full --protocol-version 3.3
Ergebnis :

Code: Alles auswählen

{ dps: { '1': 238, '2': 510, '4': 100 }, cid: 'a4c13891922dxxxx' }
jetzt kann ich mir wieder Gedanken machen wie ich das gelöst bekomme?
dps umprogrammieren? weiß ich nicht ob das geht?

ich denke mal in dem Programm tuya-mqtt ist ein Bug, das die Subgateway´s zwar erkannt werden, aber nicht bei der Ausgabe berücksichtigt werden!
OH 4.0.3 auf HP 26o G1 Dm Mini Pc mit MX_Linux

Antworten