Seite 1 von 2

tuya-mqtt neben Mosquitto installiert, keine Verbindung!

Verfasst: 6. Aug 2022 22:00
von oh73
Hallo,
hab da noch 2 Schalter rumliegen (Teckin SP 21)die normal nur über die Tuya SmartLife App gehen.

hab jetzt eine Anleitung gefunden wie man die mit Tuya-Mqtt auch mit openhab schalten kann.
Anleitung von hier: https://edv.mueggelland.de/tuya-geraete ... hne-cloud/
hab das nach Anleitung installiert.
tuya-mqtt Service läuft fehlerfrei!

jetzt hab ich allerdings Probleme das in openhab 3 einzubinden!

wollte ähnlich wie bei Tasmota Mqtt eine Bridge erstellen,

Code: Alles auswählen

Bridge mqtt:broker:tuya-mqtt "Tuya Broker" [host="localhost", port="1884", clientID="xxxxxxx", secure=false, username="xxxxxx", password="xxxxxxx"]
aber da verbindet nichts , Verbindungsaufbau wird abgelehnt!

wo ich nicht sicher bin, muss ich für tuya-mqtt einen anderen Port nehmen?
hab es mit dem standard Port 1883 aber auch mal mit Port 1884 versucht!

meine Daten von clientID, username und password sollten richtig sein!
verlangt tuya-mqtt eventuell da etwas ganz anderes?
oder muss ich da in der Mosquitto Passwd Datei zusätzliche angaben machen?

erst wenn ich da eine Verbindung habe, wollte ich mit den Channels weiter versuchen.

das ganze läuft auf meinem Ubutu Mini-Pc , Ubuntu 22.04
kleines Problem bei der installation,
bei dem Befehl
sudo npm install
gab es einige Warn Meldungen!

hab das ganze erst nach Anleitung in das Verzeichnis /opt/tuya-mqtt installiert,
dann noch mal deinstalliert und neu in das Verzeichnis /etc/openhab/scripts/tuya-mqtt installiert!

aber leider immer das gleiche, in openhab keine Verbindung!

Re: tuya-mqtt neben Mosquitto installiert, keine Verbindung!

Verfasst: 7. Aug 2022 12:50
von udo1toni
So wie ich die Anleitung verstehe, baut tuya-mqtt eine Verbindung zu Deinem mqtt Broker auf. Du musst also in der Konfiguration von tuya-mqtt die Zugangsdaten für mosquitto eintragen.
In openHAB hingegen hast Du ja schon eine Verbindung zum mosquitto erstellt und kannst einfach diese nutzen.

Re: tuya-mqtt neben Mosquitto installiert, keine Verbindung!

Verfasst: 7. Aug 2022 14:03
von oh73
das funktioniert auch nicht, dann verbinden beide nicht mehr!

aber etwas weiter bin ich doch schon,
da ist noch ein Port 8883 für MQtt reserviert.
und da verbindet er dann wenn ich zumindest den username weg lasse!
kann auch die kompletten Zugangsdaten, ClientID, Username und Password weglassen, und tuya-mqtt Broker verbindet, wird grün.

komme aber trotzdem nicht so richtig weiter, da die Syntax für den Channel scheinbar nicht stimmt!
habe ein Beispiel gefunden

Code: Alles auswählen

Switch tuya_kitchen_coffeemachine_mqtt "Steckdose Kaffeemaschine" <socket> (<GROUPS>) ["Switchable"] {
		mqtt="<[broker:tuya/<tuyAPI-id>/<tuyAPI-key>/<tuyAPI-ip>/state:state:default:.*],
          >[broker:tuya/<tuyAPI-id>/<tuyAPI-key>/<tuyAPI-ip>/command/on:command:ON:true],
          >[broker:tuya/<tuyAPI-id>/<tuyAPI-key>/<tuyAPI-ip>/command/off:command:OFF:false]"
und das so umgesetzt

Code: Alles auswählen

commandTopic= "tuya/pr49ed8ma4j7klxxxxx/f6e8e6ef0340447da0f52d5346xxxxx/192.168.178.xxx/command",
stateTopic="tuya/pr49ed8ma4j7klhxxxxx/f6e8e6ef0340447da0f52d53462xxxxx/192.168.178.xxx/state",
on="true",
off="false" 
aber noch schaltet da nichts!

Re: tuya-mqtt neben Mosquitto installiert, keine Verbindung!

Verfasst: 7. Aug 2022 14:58
von udo1toni
Schau erst mal mit einem mqtt Sniffer wie z.B. MQTT Explorer direkt auf mosquitto nach, was da für Nachrichten bzw. Topics kommen.
Das Gerät sollte bei einem Schaltvorgang ja auf jeden Fall ein Status Update senden, aus dem Du dann auf den grundsätzlichen Aufbau des Topics pro Gerät schließen kannst.
Für openHAB ist außerdem Groß/Kleinschreibung relevant, das gilt uneingeschränkt auch für mqtt.
Umgekehrt gibt es aber viele Geräte, die hier keinen Unterschied machen.
Im Standard ist allerdings die Unterscheidung sehr wohl definiert, es ist also ein Unterschied, ob ich A/POWER als Topic nutze oder a/POWER (oder gar A/Power).

EDIT: Wenn ich mich nicht fürchterlich täusche, müsste es außerdem lauf der mqtt1-Konfiguration zwei verschiedene Topics für ON und OFF geben (was absolut unsinnig erscheint).

Re: tuya-mqtt neben Mosquitto installiert, keine Verbindung!

Verfasst: 7. Aug 2022 15:12
von udo1toni
So, mal kurz quergelesen.

Du brauchst entweder pro Device ein Template, in dem beschrieben ist, wie die "friendly topics" übersetzt werden, oder Du musst die Tuya kompatiblen DPS Messages verwenden. Dabei wird dann wohl ein JSON Objekt gesendet.

Ich gewinne den Eindruck, dass das Ganze nicht ganz trivial ist :) und nur für solche Geräte interessant sein kann, die nicht mit Tasmota oder einer anderen alternativen Firmware bespielt werden können.
Tuya hat ja extra die Microcontroller gewechselt, um inkompatibel zu Tasmota & Co. zu werden.

In der Anleitung auf github ist hinten ein Fehler. Dort ist einmal command und state vertauscht. state liefert immer den Status, command dient immer der Steuerung. 1 ist der Schaltkanal, 2 ist der Dimmkanal

Ich habe dazu einen Issue erstellt und die Korrektur zur Verfügung gestellt. Keine Ahnung, ob das reicht ;) da sind die Befindlichkeiten in dne Projekten ja höchst unterschiedlich...

Re: tuya-mqtt neben Mosquitto installiert, keine Verbindung!

Verfasst: 7. Aug 2022 16:43
von oh73
hab mir mal einen MQtt Explorer installiert,

verstehe da aber erst mal nicht viel,
nur soviel, es wird was gesendet, aber keine Statusänderung empfangen , wennman zB. von Hand schaltet.

gesendet wird z.B.

Code: Alles auswählen

{ "dps": 1, "set": true }
erwartet wird aber (bei iot.tuya.com nachgeschaut)

Code: Alles auswählen

[
  {
    "code": "switch_1",
    "value": true
  },
  {
    "code": "countdown_1",
    "value": 0
  }
]
was mir der MQtt Explorer anzeigt,
teckin_1 , Status = online wenn der Stecker eingesteckt ist
und tecken_1, Status = offline wenn der Stecker rausgezogen wird!

Re: tuya-mqtt neben Mosquitto installiert, keine Verbindung!

Verfasst: 7. Aug 2022 18:36
von udo1toni
Na, das kann aber nicht sein.
Also erst mal können die Topics für die Meldung nicht unterschiedlich sein (ich vermute aber mal, dass es sich hier nur um einen Tippfehler handelt), aber teckin_1 kann vor allem nicht das ganze Topic sein.

Aber ich vermute, Du machst immer noch einen grundsätzlichen Fehler. Ich hatte das oben vielleicht nicht klar genug formuliert.
tuya-mqtt ist ein mqtt Client, kein Broker. Du musst eine normale Client Verbindung zu mosquitto aufbauen.

Die Kommunikation läuft also so:

Code: Alles auswählen

Tuya Device(s) <-> tuya-mqtt <-> mosquitto <-> openHAB mqtt Binding (Bridge) <-> mqtt Thing <-> Item (über Channel)
Port 8883 ist lediglich der Port für MQTT mit SSL/TLS. 1883 ist der "ungeschützte" Kommunikationsweg, was aber im Heimnetz keine Rolle spielt. Die Ports sollten ohnehin nicht nach außen geroutet werden, weil es selbst mit SSL/TLS keine gute Idee ist, einen mosquitto ins Internet zu stellen (ohne zusätzliche Maßnahmen zu ergreifen). Die Kommunikation muss auch über 1883 funktionieren, sofern die korrekten Credentials verwendet werden. das sind im Zweifel dieselben, die Du auch in allen anderen mqtt Clients eingetragen hast.

Wenn Du MQTT Explorer dann mit mosquitto verbindest (gleiche Credentials), bekommst Du auf der linken Seite eine überschaubare Liste mit wenigen Topics auf der ersten Ebene, je nach Organisation z.B. ein Topic pro Device oder auch z.B. lediglich ein Topic tele/ für alle Tasmota Devices.
Mit der Zeit kommen aber automatisch weitere Topics dazu, eben sobald der Broker ein Topic empfängt, denn MQTT Explorer abonniert
automatisch # und $SYS, womit sämtliche Topics abgedeckt sind, welche mosquitto verwaltet.
Die Topics, welche direkt bei Programmstart gelistet werden, sind Retained Messages, also solche, die mosquitto im eigenen Speicher hält. Dazu gehört z.B. das LWT, welches gewöhnlich Auskunft darüber gibt, ob ein Gerät Online oder Offline ist. (Bei Tasmota gewöhnlich tele/%topic%/LWT)

Wenn die Tuya Devices über tuya-mqtt keine Statusmeldung absetzen, sind sie nicht korrekt eingebunden. Das hat dann aber nichts mit mosquitto oder openHAB zu tun, sondern betrifft erst mal nur die Verbindung Tuya Device <-> tuya-mqtt

Re: tuya-mqtt neben Mosquitto installiert, keine Verbindung!

Verfasst: 7. Aug 2022 20:18
von oh73
vermute auch das die Devices nicht richtig eingebunden sind.

hab mal alle anderen Sachen mit MQTT (Tasmota) deaktiviert und den Port auf 1883 gesetzt.

aber da ändert sich nichts!

hier mal eine Ausgabe von

Code: Alles auswählen

DEBUG=tuya-mqtt:* node tuya-mqtt.js

Code: Alles auswählen

tuya-mqtt:info Connection established to MQTT server +0ms
  tuya-mqtt:tuyapi Search for device id bfb92749aac0697xxxxx +0ms
  tuya-mqtt:tuyapi Search for device id 03410103a4e57c0xxxxx +1ms
  tuya-mqtt:tuyapi Search for device id bf51b009a88853d4xxxxx +0ms
  tuya-mqtt:tuyapi Found device id bfb92749aac0697bxxxxx +1ms
  tuya-mqtt:tuyapi Found device id 03410103a4e57cxxxxxx +2ms
  tuya-mqtt:tuyapi Found device id bf51b009a88853dxxxxxx +0ms
  tuya-mqtt:error Error: Error from socket
  tuya-mqtt:error     at Socket.<anonymous> (/etc/openhab/scripts/tuya-mqtt/node_modules/tuyapi/index.js:399:30)
  tuya-mqtt:error     at Socket.emit (events.js:314:20)
  tuya-mqtt:error     at emitErrorNT (internal/streams/destroy.js:92:8)
  tuya-mqtt:error     at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
  tuya-mqtt:error     at processTicksAndRejections (internal/process/task_queues.js:84:21) +0ms
  tuya-mqtt:tuyapi Disconnected from device meter (192.168.178.xxx, 03410103a4e57c0xxxxx d760a70210xxxxx) +98ms
  tuya-mqtt:tuyapi Received string data from device bf51b009a88853d45xxxxx -> parse data error +247ms
  tuya-mqtt:tuyapi Received string data from device bfb92749aac0697b8xxxxx -> parse data error +4ms
  tuya-mqtt:error Error connecting to device id 03410103a4e57xxxxxx...retry in 10 seconds. +1s
  tuya-mqtt:tuyapi Connected to device teckin_1 (192.168.178.xxx, bf51b009a88853d4xxxxx, 8c6ef82b63fxxxxx) +974ms
  tuya-mqtt:tuyapi Connected to device teckin_2 (192.168.178.xxx, bfb92749aac0697bxxxxx, 9e8f17b72b6bxxxxx) +7ms
  tuya-mqtt:tuyapi Received string data from device bf51b009a88853d4xxxxx -> parse data error +16ms
  tuya-mqtt:tuyapi Received string data from device bfb92749aac0697bxxxxx -> parse data error +38ms
  tuya-mqtt:tuyapi Search for device id 03410103a4e57c0xxxxx +10s
  tuya-mqtt:tuyapi Found device id 03410103a4e57cxxxxxx +0ms
  tuya-mqtt:tuyapi Connected to device meter (192.168.178.xxx, 03410103a4e57xxxx, d760a7021xxxxxx) +1s
  tuya-mqtt:tuyapi Received string data from device 03410103a4e57cxxxxx -> 33vEYIvmOfSnckBSxxxxx +16s
^C  tuya-mqtt:tuyapi Disconnected from device teckin_2 (192.168.178.xxx, bfb92749aac0697b8xxxxx, 9e8f17b72b6xxxxx) +15s
  tuya-mqtt:tuyapi Disconnected from device meter (192.168.178.xxx, 03410103a4e57cxxxxxx, d760a7021xxxxx) +0ms
  tuya-mqtt:tuyapi Disconnected from device teckin_1 (192.168.178.xxx, bf51b009a88853d4xxx, 8c6ef82b63xxxxx) +1ms
  tuya-mqtt:info Exit code: SIGINT +43s
  tuya-mqtt:info Exit code: 0 +1s
da sieht man zwar das die Devices gefunden werden, aber auch das Error´s da sind!

werde das erst mal aufgeben!
so wichtig ist es nicht.

vieleicht finde ich noch mal was wie die Chanels richtig angelegt werden?
und Socket Fehler müsste ich auch noch mal suchen!

Re: tuya-mqtt neben Mosquitto installiert, keine Verbindung!

Verfasst: 8. Aug 2022 01:14
von udo1toni
Aber das sieht doch soweit gut aus. Der Fehler besagt ja nur, dass er zu dem Zeitpunkt keine Verbindung aufbauen kann. Später dann hat es aber wohl geklappt. (Disconnected from device meter)
Und oben heißt es auch Connection establised to MQTT server.
Also so weit sieht das alles gut aus. Was passiert, wenn Du den Dienst startest?

Re: tuya-mqtt neben Mosquitto installiert, keine Verbindung!

Verfasst: 8. Aug 2022 01:30
von udo1toni
Ach so... das mit dem Verzeichnis /etc/openhab/scripts/ war eine schlechte Idee.

Grundsätzlich: Der Pfad /etc/ beinhaltet ausschließlich Konfigurationsdateien. Das können auch Scripte sein (in denen dann Konfigurationen festgelegt werden), aber hier werden keinesfalls Programme installiert. tuya-mqtt gehört wenn, dann unter /usr/local/, aber wenn die Installation nach Anleitung /opt/ als Pfad vorschlägt, solltest Du auch diesen Pfad nutzen.

/etc/openhab/scripts/ ist ohnehin ein missverstandener Ordner. In diesen Ordner gehören ausschließlich Scripte mit der Endung .script, welche durch die DSL gestartet werden (mit der Action callscript(<scriptname>)).
Da gehören weder bash Scripte hin noch Python Scripte oder so, nur die DSL Scripte. Das kann man auch recht einfach an der gesamten Organisation des Pfades /etc/openhab/ erkennen, für jeden Typ Konfigurationsdatei gibt es einen Unterordner.
Die große Ausnahme ist ./html/, weil man dort alles reinpacken kann, was jetty statisch zum Download anbieten soll, mitsamt Unterverzeichnissen. Auch die readme.txt im Verzeichnis ./scripts/ gibt hier eine denkbar klare Aussage.