Tuya-Gerä­te: MQTT lokal - ohne Cloud

Tuya ist den Smart-Home-Betrei­bern seit lan­gem ein Begriff. Die chi­ne­si­sche Fir­ma stellt smar­te Gerä­te wie Lam­pen, Sen­so­ren, Schal­ter und Steck­do­sen her. Die Steue­rung erfolgt nor­ma­ler­wei­se über die Tuya-Cloud.

4fach-Steck­do­se von essentials

Zudem bie­tet Tuya ande­ren Fir­men an, die Gerä­te unter ihrem eige­nen Mar­ken­na­men zu ver­kau­fen und ihren Kun­den eine eige­ne, gebran­de­te Ver­si­on der Cloud-Funk­tio­nen anzu­bie­ten. So fin­det man Tuya-Gerä­te unter vie­len Namen, unter ande­ren auch als „essen­ti­als Smart Home Solu­ti­ons”.

Was die Tuya-Gerä­te inter­es­sant macht, ist ihre leich­te Umrüst­bar­keit auf ande­re Firm­ware. Damit befreit man sich vom Zwang, die chi­ne­si­sche Cloud-Lösung benut­zen zu müs­sen, die nach vie­le Berich­ten mit­un­ter lang­sam und unzu­ver­läs­sig ist. Unter ande­rem bei Tas­mo­ta, einer der alter­na­ti­ven Firm­ware-Lösun­gen, wer­den die ver­schie­de­nen Mög­lich­kei­ten beschrieben.

Tuya-Local

Es geht aber noch ein­fa­cher. Wer sich die Umrüs­tung nicht zutraut oder sich ein­fach die Mühe erspa­ren will, kann auch mit der Ori­gi­nal-Firm­ware ohne Umwe­ge über die Cloud arbei­ten. Grund­la­ge dafür ist die Soft­ware TuyA­PI, die den Zugriff auf die Tuya-Gerä­te für ver­schie­de­ne Sys­te­me bereitstellt.

Die Kom­mu­ni­ka­ti­on erfolgt dabei direkt vom loka­len Sys­tem über WLAN zum Tuya-Gerät; die Tuya-Cloud ist dann nicht mehr beteiligt.

Ein­zi­ge Hür­de ist die Beschaf­fung der nöti­gen Gerä­te-IDs und -Keys. Die TuyA­PI-Sei­te beschreibt den Vor­gang zwar aus­führ­lich, aber ich fas­se das unten noch­mal mit Abbil­dun­gen in Deutsch zusammen.

Wo Inte­grie­ren?

Die TuyA­PI kann in ver­schie­de­ne Soft­ware-Sys­te­me inte­griert wer­den. Ich habe mir das für die Kom­man­do­zei­le (tuyAPI/cli), home­as­sistant (local tuya), Node-Red (node-red-con­trib-tuya-smart) und MQTT (tuya-mqtt) ange­se­hen und getes­tet. Alle Lösun­gen funk­tio­nier­ten (nach etwas Ein­ar­bei­tung) ohne Pro­ble­me. Wei­te­re Lösun­gen gibt es u.a. auch für Open­HAB und FHEM.

Für jedes Gerät kann aber immer nur eine Lösung aktiv sein, weil tuyA­PI stän­dig Ver­bin­dung zum Gerä­te-Inter­face hält. Akti­viert man eine zwei­te Instanz, bekommt die­se kei­ne Ver­bin­dung. Will man also die Tuya-Lösung par­al­lel etwa in home­as­sistant und Node-Red nut­zen, bleibt eigent­lich nur die MQTT-Vari­an­te als uni­ver­sel­le Basis-Lösung übrig. In home­as­sistant, Node-Red und ande­re über­ge­ord­ne­te Steu­er­sys­te­me wer­den die Gerä­te dann über die jewei­li­ge MQTT-Inte­gra­ti­on eingebunden.

IDs und Keys besorgen

IDs und Keys wer­den für den Auf­bau der Kom­mu­ni­ka­ti­on zu den Tuya-Gerä­ten benö­tigt. Die ID ist eine ein­deu­ti­ge Adres­se im Tuya-Netz, wäh­rend der Key zur Authen­ti­sie­rung nötig ist. Bei­des bekommt man über die Tuya-Ent­wick­lungs­um­ge­bung. Und das läuft so:

  1. Gerä­te über die Tuya-Smart-App regis­trie­ren:
    - App auf eurem Smart­phone instal­lie­ren
    - Kon­to erstel­len und akti­vie­ren
    - Gerä­te­re­gis­trie­rung nach Anwei­sung
    Die Tuya-App funk­tio­niert auch für alle ande­ren Tuya-basier­ten Marken.
  2. Auf der Tuya-Ent­wick­lungs­platt­form iot​.tuya​.com regis­trie­ren und anmelden
  3. Ein neu­es Cloud Pro­jekt anle­gen und öffnen
  4. Unter dem Pro­jekt­na­men ste­hen Access ID und Access Secret - für spä­te­ren Gebrauch kopieren
  5. Unter Link Devices den Tab Link Devices by App Account wäh­len und nach den Anwei­sun­gen die Tuya-Smart-App verlinken
  6. Auf dem Tab Device List erschei­nen dann die Gerä­te aus der App - die ID unter dem Device Name für jedes Gerät notieren

Unse­re notier­te Lis­te ent­hält jetzt die Access ID, das Access Secret und für jedes Gerät eine Device ID. Damit kön­nen wir uns spä­ter die Local IDs erzeu­gen lassen.

Soft­ware installieren

Die Soft­ware kann auf einem belie­bi­gen Linux Ser­ver instal­liert wer­den - bei mir läuft sie auf dem glei­chen Raspber­ry, auf dem sich auch MQTT befindet.

Die Soft­ware selbst holt ihr aus ihrem git-Repo­si­to­ry und instal­liert sie in /opt:

cd /opt
sudo git clone https://github.com/TheAgentK/tuya-mqtt
cd tuya-mqtt
sudo npm install
cd ..
sudo chown -R pi:pi tuya-mqtt

Kopiert die Kon­fi­gu­ra­ti­ons­da­tei und tragt die Zugangs­da­ten für euren MQTT-Ser­ver ein:

cp config.json.sample config.json
vi config.json

Der Inhalt sieht dann in etwa so aus:

{
     "host": "localhost",
     "port": 1883,
     "topic": "tuya/",
     "mqtt_user": "user",
     "mqtt_pass": "secret"
}

Zuletzt muss noch die Gerä­te­kon­fi­gu­ra­ti­on ange­legt wer­den. Dafür ist der Out­put von tuya-cli nötig, den ihr ein­fach in devices.conf umlei­ten könnt - sie­he nächs­ter Abschnitt. 

Local IDs erzeugen

Für die Berech­nung der Local IDs wird das Kom­man­do­zei­len­pro­gramm tuya-cli benutzt, das schon mit tuya-mqtt instal­liert wurde:

$ tuya-cli wizard > devices.conf
 ? The API key from tuya.com: owieuqfgcbe78etrcbeoqwe
 ? The API secret from tuya.com: hfiwe8764ucrbewuiortqcb
 ? Provide a 'virtual ID' of a device currently registered in the app: 1234567890abcdefghijkl
$ 

In der devices.conf fin­det ihr dann folgendes:

[
   {
     name: 'device1',
     id: '1234567890abcdefghijkl',
     key: 'f48af11f51cf2813'
   }
]

Der Name kann belie­big ange­passt wer­den; er bil­det spä­ter einen Teil der MQTT-Topics.

Ers­ter Start

Der ers­te Start kann, um die Funk­ti­on zu prü­fen, auf der Kom­man­do­zei­le mit Debug-Aus­ga­ben erfolgen:

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

Die Aus­ga­be soll­te etwa so aussehen:

tuya-mqtt:info Connection established to MQTT server +0ms
   tuya-mqtt:tuyapi Search for device id 1234567890abcdefghijkl +0ms
   tuya-mqtt:tuyapi Found device id 1234567890abcdefghijkl +1s
   tuya-mqtt:tuyapi Received JSON data from device 1234567890abcdefghijkl -> {"1":false,"2":false,"3":false,"4":false,"5":false,"6":0,"7":0,"8":0,"9":0,"10":0} +57ms
   tuya-mqtt:tuyapi Connected to device device1 (1234567890abcdefghijkl, abcdefghi123456) +957ms
   tuya-mqtt:tuyapi Received JSON data from device 1234567890abcdefghijkl -> {"1":false,"2":false,"3":false,"4":false,"5":false,"6":0,"7":0,"8":0,"9":0,"10":0} +32ms
   tuya-mqtt:state MQTT DPS JSON: tuya/mp1/dps/state ->  {"1":false,"2":false,"3":false,"4":false,"5":false,"6":0,"7":0,"8":0,"9":0,"10":0} +0ms
   tuya-mqtt:state MQTT DPS1: tuya/mp1/dps/1/state ->  false +1ms
   tuya-mqtt:state MQTT DPS2: tuya/mp1/dps/2/state ->  false +1ms
   tuya-mqtt:state MQTT DPS3: tuya/mp1/dps/3/state ->  false +1ms
   tuya-mqtt:state MQTT DPS4: tuya/mp1/dps/4/state ->  false +1ms
   tuya-mqtt:state MQTT DPS5: tuya/mp1/dps/5/state ->  false +1ms
   tuya-mqtt:state MQTT DPS6: tuya/mp1/dps/6/state ->  0 +0ms
   tuya-mqtt:state MQTT DPS7: tuya/mp1/dps/7/state ->  0 +1ms
   tuya-mqtt:state MQTT DPS8: tuya/mp1/dps/8/state ->  0 +1ms
   tuya-mqtt:state MQTT DPS9: tuya/mp1/dps/9/state ->  0 +1ms
   tuya-mqtt:state MQTT DPS10: tuya/mp1/dps/10/state ->  0 +0ms

Die Soft­ware mel­det sich am MQTT-Ser­ver an, ver­bin­det sich dann mit jedem Device in devices.conf und lis­tet schließ­lich die ver­füg­ba­ren Topics auf.

Tes­tet die Funk­ti­on, indem ihr von einem MQTT-Cli­ent (auf Linux z.B. MQTT­fx oder MQTT-Explo­rer) Mes­sa­ges an Topics des neu­en Geräts schickt und prüft die Reaktion.

Am Ende stoppt ihr tuya-mqtt mit Ctrl-C.

Ser­vice einrichten

Ist alles erfolg­reich gelau­fen, wird tuya-mqtt noch als Ser­vice instal­liert, damit er bei jedem Sys­tem­start mit­ge­star­tet wird.

Erzeugt dafür die Datei /etc/systemd/system/tuya-mqtt.service
mit fol­gen­dem Inhalt:

[Unit]
Description=tuya-mqtt
[Service]
ExecStart=/opt/tuya-mqtt/tuya-mqtt.js
Restart=always
User=pi
Group=pi
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
WorkingDirectory=/opt/tuya-mqtt
[Install]
WantedBy=multi-user.target

Star­tet den Ser­vice mit

sudo service tuya-mqtt start

und prüft mit

sudo service tuya-mqtt status

ob der Zustand des Ser­vice nor­mal ist. Das soll­te etwa so aussehen:

$ sudo service tuya-mqtt status
 ● tuya-mqtt.service - tuya-mqtt
    Loaded: loaded (/etc/systemd/system/tuya-mqtt.service; disabled; vendor preset: enabled)
    Active: active (running) since Mon 2021-01-18 19:23:01 CET; 1s ago
  Main PID: 22318 (node)
     Tasks: 7 (limit: 3859)
    CGroup: /system.slice/tuya-mqtt.service
            └─22318 node /opt/tuya-mqtt/tuya-mqtt.js
 Jan 18 19:23:01 node systemd[1]: Started tuya-mqtt.
$

Schließ­lich akti­viert ihr den Ser­vice mit

sudo systemctl enable tuya-mqtt

Falls neue Gerä­te auf­ge­nom­men wer­den sol­len, fügt ihr sie eurem Tuya-Cloud-Pro­jekt hin­zu und ermit­telt die Local ID mit tuya-cli. Die Aus­ga­be hängt ihr an devices.conf an und star­tet tuya-mqtt neu. Danach soll­ten sie in MQTT ver­füg­bar sein.

Fazit

Den Umweg über die chi­ne­si­sche Cloud sind wir mit die­ser Metho­de los. Aller­dings bleibt die Firm­ware der Gerä­te wei­ter­hin ein poten­ti­el­les Ein­falls­tor in unser LAN. Sie mel­det jede Sta­tus­än­de­rung wei­ter an die Cloud und kann unbe­kann­te Funk­tio­nen besit­zen oder durch ein Firm­ware-Update bekommen.

Wenn man sich ganz von der frem­den Cloud lösen will, kann man Ver­bin­dun­gen und DNS-Abfra­gen mit einer Fire­wall wie pi-hole blo­ckie­ren oder eben doch die gründ­li­che Lösung des Fla­shens mit einer alter­na­ti­ven Firm­ware wählen.

Veröffentlicht am
Kategorisiert in SmartHome

35 Kommentare

  1. Hal­lo,
    dei­ne Beschrei­bung ist sehr gut, aller­dings fehlt etwas, zumin­dest nach dem Stand den ich her­aus­ge­fun­den habe. Um das device zu bekom­men muss man noch eine APP in der Tuya-Cloud kon­fi­gu­rie­ren bei der dann AUTHORIZATION akti­viert wer­den muss. Sonst geht der Auf­ruf um den eige­nen Key zu gene­rie­ren nicht. Wei­ter­hin kann man zwar den Sta­tus der Dosen sehen, aller­dings wird kein Schalt­vor­gang aus­ge­löst wenn man den Sta­tus aus einem Cli­ent her­aus ver­än­dert. Gibt es hier eine Lösung, falls bei dir das glei­che Pro­blem auf­ge­tre­ten ist.

    Vie­len Dank und Gruß
    Hol­ger Fiedler

    1. Kannst du bit­te noch­mal genau­er beschrei­ben, was du wo wie ein­ge­stellt hast? Aktu­ell bekom­me ich ein „cross-regi­on access is not allo­wed” und fin­de die Ein­stel­lung die du beschreibst, nicht.

  2. Hal­lo dan­ke erst­mal für den Bei­trag der hilft wirk­lich schon sehr wei­ter um Tuya Gerä­te per mqtt anzu­bin­den. ich habe aktu­ell aber ein Pro­blem und weiß nicht wie ich wei­ter kom­me, weil ich nicht weiß, was ich anstel­le von pi:pi ein­set­zen muss.
    An die­ser Stelle.:
    sudo chown -R pi:pi tuya-mqtt

    Kopiert die Kon­fi­gu­ra­ti­ons­da­tei und tragt die Zugangs­da­ten für euren MQTT-Ser­ver ein:

    cp config.json.sample config.json
    vi config.json

    1. Hal­lo Janßen,
      pi:pi ist der Nut­zer und die Grup­pe, unter dem der tuya-mqtt Ser­vice lau­fen soll. Das muss mit der Ein­tra­gung in dei­nem Ser­vice-File über­ein­stim­men (tuya-mqtt.service: User=pi Group=pi). Wel­cher Nut­zer das sein soll, hängt von dei­ner Sys­tem­kon­fi­gu­ra­ti­on ab. Beim Raspber­ry OS ist das übli­cher­wei­se der Nut­zer pi.
      Gruß
      Jörg

        1. Die Kopie bleibt im sel­ben Ver­zeich­nis, in dem auch das Ori­gi­nal liegt, im Bei­spiel oben also unter /op­t/­tu­ya-mqtt.

          1. Moin,
            jetzt hän­ge ich wie­der fest.…

            pi@raspberrypi:~ $ DEBUG=tuya-mqtt:* node tuya-mqtt.js
            internal/modules/cjs/loader.js:905
            throw err;
            ^

            Error: Can­not find modu­le ‘/home/pi/tuya-mqtt.js’
            at Function.Module._resolveFilename (internal/modules/cjs/loader.js:902:15)
            at Function.Module._load (internal/modules/cjs/loader.js:746:27)
            at Function.executeUserEntryPoint [as run­Main] (internal/modules/run_main.js:75:12)
            at internal/main/run_main_module.js:17:47 {
            code: ‘MODULE_NOT_FOUND’,
            requireStack: []

            Wie löse ich das Problem?

  3. Dan­ke für die Ant­wort habe es nun ans lau­fen bekommen.
    Nur weiß ich nicht wie das Topic heißt mit wel­chem ich aus Open­hab die Wer­te abfra­gen kann. habe schon alles aus pro­biert. bekom­me die chan­nels nicht zum laufen .

  4. Die topics hei­ßen bei mir für den Sta­tus tuya/mp1/dps/1/state und für die Kom­man­dos tuya/mp1/dps/1/command,wobei die Kanä­le (die Zahl zwi­schen dps und sta­te) von 1 bis 5 hochzählen.

    Am bes­ten Du ver­bin­dest dich mal mit z.B. dem MQTT-Explo­rer mit dei­nem Bro­ker und schaust, wel­che Nach­rich­ten beim Schal­ten der Steck­do­sen einlaufen.

  5. Hal­lo zusammen,
    ich habe lei­der auch ein Pro­blem. Zwar kann ich schein­bar per ´sudo ser­vice tuya-mqtt start´ den ser­vice star­ten, jedoch gibt ´ sudo ser­vice tuya-mqtt sta­tus´ fol­gen­des zurück:
    ● tuya-mqtt.service - tuya-mqtt
    Loa­ded: loa­ded (/etc/systemd/system/tuya-mqtt.service; enab­led; ven­dor pre­set: enabled)
    Acti­ve: fai­led (Result: exit-code) sin­ce Sat 2021-09-04 08:26:52 BST; 21s ago
    Pro­cess: 1580 ExecStart=/opt/tuya-mqtt/tuya-mqtt.js (code=exited, status=203/EXEC)
    Main PID: 1580 (code=exited, status=203/EXEC)
    Der Ser­vice star­tet also nicht, es erfolgt kei­ne Kom­mu­ni­ka­ti­on mit MQTT.
    Star­te ich ´DEBUG=tuya-mqtt:* node tuya-mqtt.js´ aus dem Ver­zeich­nis /op­t/­tu­ya-mqt­t/ so bekom­me ich fol­gen­de Ausgabe:
    tuya-mqtt:info Con­nec­tion estab­lished to MQTT ser­ver +0ms
    tuya-mqtt:tuyapi Search for device id bf8a39f7310df6122cmthq +0ms
    tuya-mqtt:tuyapi Found device id bf8a39f7310df6122cmthq +1s
    tuya-mqtt:tuyapi Recei­ved JSON data from device bf8a39f7310df6122cmthq -> {„1”:true,„2”:„colour”,„3”:25,„4”:255,„5”:„00141c00c4ff19”,„101”:true} +146ms
    tuya-mqtt:tuyapi Con­nec­ted to device LED Smar­tRGB (bf8a39f7310df6122cmthq, 3227646d21b6ba08) +972ms
    tuya-mqtt:tuyapi Recei­ved JSON data from device bf8a39f7310df6122cmthq -> {„1”:true,„2”:„colour”,„3”:25,„4”:255,„5”:„00141c00c4ff19”,„101”:true} +52ms

    Hier scheint also alles zu laufen.

    Mei­ne Fra­ge: Was muss ich tun damit die Ser­vices kor­rekt starten?

    1. Ist natür­lich aus der Fer­ne schwie­rig zu beur­tei­len, aber ich wür­de mal prü­fen, ob der User, unter dem der Ser­vice lau­fen soll, die nöti­gen Rech­te hat. Mög­li­cher­wei­se fin­dest Du auch im sys­log noch Hinweise.

    2. Hat­te das sel­be Pro­blem. Ich muss­te in mei­nem EXEC und PATH etwas anpas­sen. Anbei mei­ne Con­fig, Ach­tung ich füh­re es aktu­ell noch als ROOT aus.

      [Unit]
      Description=tuya-mqtt
      [Ser­vice]
      ExecStart=node /opt/tuya-mqtt/tuya-mqtt.js
      Restart=always
      User=root
      Group=root
      Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
      Environment=NODE_ENV=production
      WorkingDirectory=/opt/tuya-mqtt
      [Install]
      WantedBy=multi-user.target

      1. Dan­ke für den Hin­weis mit dem ExecStart=node /opt/tuya-mqtt/tuya-mqtt.js
        Das node mach­te den Unterschied.

        Nun sehe ich mei­ne Gerä­te im MQTT Bro­ker, aber wie steue­re ich sie denn?
        Wie bekom­me ich Sie mit MQTT­hing in Home­bridge so ein­ge­bracht, dass ich die Sta­ti set­zen kann und der Schal­ter dann reagiert?

  6. genau an die­ser Stel­le geht es bei mir auch nicht wei­ter - ich star­te tuya-cli … und bekom­me kei­ne Rück­mel­dung … d.h. ich muss den Pro­zess abbre­chen … und bekom­me kei­ne Ein­trä­ge in die devices.conf

    1. Wenn man nur tuya-cli wizard > devices.conf star­tet sieht man, dass noch eine Abfra­ge erfolgt. Ich habe daher mit sudo nano devices.conf eine Datei ange­legt und dort die Bild­schrim­aus­ga­be von tuya-cli reinkopiert

  7. Hey, das war echt die Lösung mei­nes Pro­blems. Nur habe ich nun ein beson­de­res Problem:
    Ich kann nun den Switch ein­schal­ten über OH(klappt)
    Kli­cke ich nun auf aus, kommt kein Com­mand im MQTT an (klappt nicht)
    Schal­te ich wie­der ein, kommt der Com­mand im MQTT an (com­mand set:true) (klappt)
    Schal­te ich es wie­der aus, klappt es auch wie­der. (Com­mand set:false)

    Hier ein­mal mein Log.
    tuya-mqtt:command Recei­ved MQTT mes­sa­ge -> {„topic”:„tuya/kühlschrank_patrick/dps/1/command”,„message”:„true”} +13s
    tuya-mqtt:command Recei­ved com­mand for DPS1: true +13s
    tuya-mqtt:tuyapi Set device 04200098b4e62d1075c0 -> {„dps”:„1”,„set”:true} +13s
    tuya-mqtt:tuyapi Recei­ved JSON data from device 04200098b4e62d1075c0 -> {„1”:true} +53ms
    tuya-mqtt:state MQTT DPS JSON: tuya/kühlschrank_patrick/dps/state -> {„1”:true} +13s
    tuya-mqtt:state MQTT DPS1: tuya/kühlschrank_patrick/dps/1/state -> true +0ms

    tuya-mqtt:command Recei­ved MQTT mes­sa­ge -> {„topic”:„tuya/kühlschrank_patrick/dps/1/command”,„message”:„true”} +22s
    tuya-mqtt:command Recei­ved com­mand for DPS1: true +22s
    tuya-mqtt:tuyapi Set device 04200098b4e62d1075c0 -> {„dps”:„1”,„set”:true} +22s
    tuya-mqtt:tuyapi Recei­ved JSON data from device 04200098b4e62d1075c0 -> {„1”:true} +29ms
    tuya-mqtt:state MQTT DPS JSON: tuya/kühlschrank_patrick/dps/state -> {„1”:true} +22s
    tuya-mqtt:state MQTT DPS1: tuya/kühlschrank_patrick/dps/1/state -> true +0ms

    tuya-mqtt:command Recei­ved MQTT mes­sa­ge -> {„topic”:„tuya/kühlschrank_patrick/dps/1/command”,„message”:„false”} +9s
    tuya-mqtt:command Recei­ved com­mand for DPS1: fal­se +9s
    tuya-mqtt:tuyapi Set device 04200098b4e62d1075c0 -> {„dps”:„1”,„set”:false} +9s
    tuya-mqtt:tuyapi Recei­ved JSON data from device 04200098b4e62d1075c0 -> {„1”:false} +108ms
    tuya-mqtt:state MQTT DPS JSON: tuya/kühlschrank_patrick/dps/state -> {„1”:false} +9s
    tuya-mqtt:state MQTT DPS1: tuya/kühlschrank_patrick/dps/1/state -> fal­se +0ms

    Was kann das Pro­blem sein, ich steh grad wie ein Ochs vorm Berg.

    1. Hal­lo zusammen,
      ich muss­te auch tuya-cli nach­in­stal­lie­ren, aller­dings funk­tio­niert der Auf­ruf: „$ tuya-cli wizard > devices.conf”. Es wird kei­ner­lei ID abge­fragt, die erzeug­te Datei schaut so aus „? The API key from tuya​.com: [29D[29C”.

      Wer kann bit­te helfen?

      Dan­ke im Vor­aus MR

  8. Vie­len Dank für die sehr gute Anlei­tung. Genau das habe ich schon seit Wochen gesucht. Damit wer­de ich mei­ne Home­bridge hof­fent­lich deut­lich ein­fa­cher steu­ern können.

    mit dem Debug-Befehl lan­den bei mir Ein­trä­ge im MQTT, die schon ziem­lich gut aussehen.
    Dann habe ich den Ser­vice gemäß Anlei­tung gestar­tet, jedoch erhal­te ich dann einen Fehler.

    sudo ser­vice tuya-mqtt status
    * tuya-mqtt.service - tuya-mqtt
    Loa­ded: loa­ded (/etc/systemd/system/tuya-mqtt.service; dis­ab­led; ven­dor pre­set: enabled)
    Acti­ve: fai­led (Result: exit-code) sin­ce Sat 2021-12-04 18:14:07 GMT; 6s ago
    Pro­cess: 8243 ExecStart=/opt/tuya-mqtt/tuya-mqtt.js (code=exited, status=203/EXEC)
    Main PID: 8243 (code=exited, status=203/EXEC)

    Dez 04 18:14:07 home­bridge systemd[1]: tuya-mqtt.service: Ser­vice RestartSec=100ms expi­red, sche­du­ling restart.
    Dez 04 18:14:07 home­bridge systemd[1]: tuya-mqtt.service: Sche­du­led restart job, restart coun­ter is at 5.
    Dez 04 18:14:07 home­bridge systemd[1]: Stop­ped tuya-mqtt.
    Dez 04 18:14:07 home­bridge systemd[1]: tuya-mqtt.service: Start request repea­ted too quickly.
    Dez 04 18:14:07 home­bridge systemd[1]: tuya-mqtt.service: Fai­led with result ‘exit-code’.
    Dez 04 18:14:07 home­bridge systemd[1]: Fai­led to start tuya-mqtt.

    Wie kann ich das beheben?

  9. So, ich habe nun mit der von Jan-Patrick beschrie­be­nen Ände­rung den Dienst zum lau­fen bekom­men. Die Gerä­te wer­den nun auch ein­wand­frei per MQTT eingesteuert. 

    Dann gestal­te­te sich noch die Steue­rung in der Home­bridge als schwie­rig. Das Aus­le­sen des Sta­tus war ja ein­fach. Hier nut­ze ich MQTThing.

    {
    „type”: „out­let”,
    „name”: „Stern------Kids”,
    „topics”: {
    „getOn”: „tuya/geraetename/dps/1/state”,
    „setOn”: „tuya/geraetename/dps/1/command”
    },
    „onVa­lue”: „true”,
    „offVa­lue”: „fal­se”,
    „acces­so­ry”: „mqttt­hing”
    },

    Mit tuya/­bad-lich­t/d­ps/1/sta­te klappt das Aus­le­sen des Sta­tus. Aller­dings hat­te ich kei­ne Idee, wie ich ein Kom­man­do abset­ze. Mit tuya/geraetename/dps/1/command kann man die­sen dann aber absetzen.

    Hat das Gerät zwei Schal­ter, dann muss tuya/geraetename/dps/1/state mit tuya/geraetename/dps/2/state als zwei­ter Ein­trag ergänzt werden.

    Für die Ein­rich­tung in Node-red habe ich das Plug­in node-red-con­trib-tuya-local genutzt. Eine wei­ter Schwie­rig­keit war die Ein­ga­be der IP Adres­sen von der Fritz!Box. Hier habe ich die neu­en wlan0 Gerä­te nach und nach mit der Mac-Adres­se aus­fin­dig gemacht.

    Hier lau­ten die Inject Befeh­le ent­we­der true und fal­se bzw. bei Gerä­ten mit 2 Schaltern
    {„set”: true, „dps” : 1} bow. {„set”: true, „dps” : 2} zum einschalten.
    {„set”: fal­se, „dps” : 1} bow. {„set”: fal­se, „dps” : 2} zum ausschalten.

    Ich hof­fe, das hilft dem einen oder ande­ren weiter.

  10. Hal­lo zusammen,
    ich kom­me lei­der nur bis zur dem Punkt:
    - tuya-cli wizard > devices.conf
    - tuya-cli musst ich vor­her eben­falls nach­in­stal­lie­ren: sudo npm i @tuyapi/cli -g”
    - lei­der pas­siert nichts, es wird nichts abgefragt
    - wenn ich mit CTLC been­de habe ich eine deices.conf mit fol­gen­dem Inhalt: ? The API key from tuya​.com: [29D[29C

    Was mache ich falsch?

    Dan­ke schon mal im Vor­aus für die Hilfe

    1. Rums­fel­der, ich hat­te den Feh­ler auch. Du darfst nur tuya-cli wizard in die Kon­so­le kopie­ren. das > devices.conf gehört da nicht hin. Ist ein Feh­ler in der Anleitung.

  11. Bekom­me den Ser­vice auch nicht mit der Lösung von Jan-Patrick zum Laufen.
    mit „node” kommt „exec for­mat error” und „exe­cu­teb­le path not abso­lut und ohne kommt beim Start kein Feh­ler aber geht trotz­tem nicht

  12. bei mir gehts nur mit Exec­Start= /absoluter Pfad/node /opt/tuya-mqtt/tuya-mqtt.js

    aber wie lau­tet das MQTT Topic für das Schal­ten eines Geräts ( bei mit ein tuya_smart_valve_conrtoller ) 

    MQTTFX lie­fert z.B beim Schal­ten am Gerät „tuya/smart_valve_controller/dps/1/state” und als Wert „true” oder „fal­se”.
    jedoch alle­Be­feh­le zum Schal­ten über MQTTFX wer­den ignotiert.

    1. Mir geht es auch so. Kann über Sta­te alle Befeh­le abfra­gen, aber nichts sen­den mit com­mand. Kann evtl. jemand helfen?

  13. Wenn ich das rich­tig sehe, sind hier ledig­lich TuYa-Gerä­te mit WLAN gemeint. Wenn man wel­che mit Zig­bee nutzt, hat man mit deren Cloud eigent­lich von Haus aus nix am Hut 🙂 Außer der (von mir) genutz­te MQTT-Ser­ver sucht doch irgend­wo nach Firmwareupdates.
    Viel­leicht soll­te man das ganz zu Anfang klar­stel­len, wel­che „Funk­tech­no­lo­gie” hier betrof­fen ist.

  14. Hal­lo Florian..
    nach­dem ich ent­nerft ca. 4 Stun­den pro­biert habe , fand ich raus das ews ein­fach ZU EINFACH geht. Alles was ich mühe­voll über MQTT gelernt hab,m gilt hier nicht:

    pi@homeauto:/root $ mosquitto_pub -h local­host -t tuya/st_3_frei/dps/1/command -m true
    pi@homeauto:/root $ mosquitto_pub -h local­host -t tuya/st_3_frei/dps/1/command -m false

    schal­tet ein/aus

    neben­bei tuya-cli wur­de hier nicht auto­ma­tisch mit tuya-mqtt instal­liert , das muss­te ich hier mit :

    sudo npm i @tuyapi/cli -g

    nach­in­stal­lie­ren

  15. Kom­me lei­der über den Step : /node_modules/.bin/tuya-cli wizard nicht drüber.
    habe mir auf der Tuya Deve­lo­per Sei­te „Access ID/Client ID” und „Access Secret/Client Secret” gene­riert. Auch mein Account ver­bun­den. Sehe dort auch das Device

    root@zigbee:/opt/tuya-mqtt# ./node_modules/.bin/tuya-cli wizard
    ? The API key from tuya​.com: jt7wf4vexxxxxxxj
    ? The API secret from tuya​.com aa94ad9ad606408xxxx
    ? Pro­vi­de a ‘vir­tu­al ID’ of a device curr­ent­ly regis­tered in the app: 123456xxxl
    The­re was an issue fet­ching that device. Make sure your account is lin­ked and the ID is correct.

    Wäre nett für einen Tip! Danke

    1. Auch ich kom­me hier nicht wei­ter. Wenn man „DEBUG=* tuya-cli wizard” ein­gibt erhält man fol­gen­de Rück­mel­dung: cross-regi­on access is not allowed.
      Ich habe schon alle Regio­nen in Tuya durch­pro­biert. Es kommt bei allen Ein­stel­lun­gen. Kann ich auf dem Raspi wo tuya-mqtt läuft noch etwas einstellen?

  16. Hal­lo, ich habe es bis zum Tes­ten erfolg­reich geschafft.
    Doch bei dem Befehl DEBUG=tuya-mqtt:* node tuya-mqtt.js
    bekom­me ich fol­gen­de Ausgabe:
    tuya-mqtt:info Con­nec­tion estab­lished to MQTT ser­ver +0ms
    tuya-mqtt:tuyapi Search for device id bf941e31d7b89d8899qpsk +0ms
    tuya-mqtt:error bind EADDRINUSE 0.0.0.0:6666 +0ms
    tuya-mqtt:error Will attempt to find device again in 60 seconds +0ms

    kannst du mir sagen, wo hier der Feh­ler liegt?
    Grü­ße Toolmaster

  17. Hal­lo hof­fe du kannst mir helfen!
    ich habe im Inter­net ein­ge Web­cam mit Tuya . Appli­ka­ti­on bestellt.
    Lei­der sind die­se Web­cams in der Tuya-Cloud schon mit einem Account ver­bun­den, habe auch die Anfra­ge gesandt, dies zu löschen aber nimand kann mitr unter­stüt­zung geben.
    Gibt es eine Mög­lich­keit die­se vom Account oder von der Cloud zu befreien?
    Es sind INQMEGAPRO Web­cams, die ich über Ama­zon bezio­gen habe.
    Anfre­ga bei TUYA bei Ama­zon und bei IOMEGAPRO diekt alles nega­ti­ve antworten.
    Danek für dei­ne Unter­ta­üt­zung oder Antwort.

  18. Hal­lo,
    erst mal vie­len Dank für dei­ne Arbeit, hat mir schon sehr geholfen!
    habe inzwi­schen 2 Teckin W-Lan Schal­ter, 1 W-Lan Smart­me­ter und 1 Beok Zig­bee Hei­zungs­ther­mo­stat ein­ge­bun­den und mit open­hab 3 verbunden.
    Daten abru­fen funk­tio­niert bei allen Gerä­ten ohne Probleme!
    Pro­blem habe ich nur bei dem Hei­zungs­ther­mo­stat die Tem­pe­ra­tur ein zu stellen!
    da fehlt mir das pas­sen­de Kommando?
    mit ‘commandTopic=„tuya/zx-5028/dps/command” ’ kann ich zwar Daten sen­den, aber das Ther­mo­stat reagiert nicht!
    zx-5028 ist das Zig­bee Gate­way und das Ther­mo­stat ist da als Sub-Device verbunden!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

16 + 4 =