FHEM - Hausautomations-Systeme > MQTT

8fach I/O Board mit MQTT2_Device

(1/7) > >>

cberl:
Hallo in die Runde,

ich habe mir in der Bucht ein 8x I/O Relais Board für 60€ geholt:
https://www.ebay.de/itm/8in8-out-Network-Relay-Controller-WEB-TCP-UDP-Support-Offline-Timer-MQTT-xs90/153347308210?hash=item23b4363ab2:g:RL0AAOSwOShcRWlR
Das WebIf kann auf Englisch gestellt werden.

Die Relais kann ich per http steuern und abfragen. Nun bin ich noch auf eine versteckte Konfigseite für MQTT gestoßen, wo ich den Broker vom Chinamann auf meinen eigenen drehen kann.
Das Topic (per Default die Seriennummer 0218091547293896) kann ich auch (bis max. 16 Zeichen) anpassen. Mehr geht da leider nicht. 

Ein Subscribe funktioniert:
Bei einem Schaltvorgang sendet das Teil einen JSON
Wenn ein Relay bzw. Input on ist, steht die jeweilige Ziffer auf 1:

Alles aus:                                                {"cmd":"post","output":"00000000","input":"00000000","sn":"0218091547293896"}
Relais3 per WebIf auf On gesetzt:             {"cmd":"post","output":"00100000","input":"00000000","sn":"0218091547293896"}
Relais2 mit Eingang am Board geschalten: {"cmd":"post","output":"01000000","input":"01000000","sn":"0218091547293896"}

Ein Publish ist mir aber noch nicht gelungen (kann ja die Relais notfalls per http steuern).
Gibt wohl auch eine App mit der das Teil über die Chinacloud gesteuert werden kann. Verschlüsselung gibt`s da nicht. Also könnte ich das vielleicht sniffen.
Mangels Chin. Sprachkentnissen habe ich das aber erstmal gelassen.

Für das Board habe ich mir ein MQTT2 Device angelegt, welches mir auch schön den JSON zerlegt:

--- Code: ---Internals:
   CFGFN     
   DEVICETOPIC EIOBoard1
   FUUID      5e28b7a8-f33f-51cc-8ed1-1634b5eb89a81169
   IODev      MQTT2Client
   LASTInputDev MQTT2Client
   MQTT2Client_MSGCNT 1146
   MQTT2Client_TIME 2020-01-23 17:02:41
   MSGCNT     1146
   NAME       EIOBoard1
   NR         123583
   STATE      ???
   TYPE       MQTT2_DEVICE
   READINGS:
     2020-01-23 17:02:41   cmd             post
     2020-01-23 17:02:41   input           00000000
     2020-01-23 17:02:41   output          00000000
     2020-01-23 17:02:41   sn              0218091547293896
Attributes:
   IODev      MQTT2Client
   readingList 0218091547293896state:.* { json2nameValue($EVENT) }
   room       82.MQTT

--- Ende Code ---

Nun hätte ich gerne noch jedes Zeichen von input und output in einem einzelnen Reading.
Wie bekomme ich das am Besten hin? Hat vielleicht noch jemand eine Idee zum Publish?

Bye Chris

rudolfkoenig:

--- Zitat ---Nun hätte ich gerne noch jedes Zeichen von input und output in einem einzelnen Reading.
--- Ende Zitat ---
Mir faellt dazu ein langes userReadings ein:
--- Code: ---attr EIOBoard1 userReadings in1:input:.* { $event =~ m/(.).......$/;;$1 }, in2:input:.* { $event =~ m/.(.)......$/;;$1 }, in3:input {usw....
--- Ende Code ---



--- Zitat ---Hat vielleicht noch jemand eine Idee zum Publish?
--- Ende Zitat ---
Mit MQTT2_SERVER koennte man das subscription der Gegenseite ausgeben (list .* subscriptions), und dann raten.
Was Vergleichbares duerfte auch bei jedem externen MQTT-Server gehen.

Beta-User:
MMn. wäre die "Vollversion", das ganze mit einem myUtils-Code auszuwerten. Soweit ich das verstanden habe, kommen ja bei jeder Änderung immer alle Ifos, so dass man nicht unterscheiden kann, was neu und was alt ist...

Der myUtils-Code müßte dann aussortieren, was nicht geändert ist, und dann eben für jeden Kanal ein eigenes Reading setzen, indem nur die entsprechenden Werte in den Rückgabehash übernommen werden.

Etwas in diese Richtung geht tasmota_use_DS18x20_id, aber das hier wäre deutlich komplexer...

(Wäre m.E. aber lohnenswert, das "richtig" zu machen, denn es ist was mit einem Kabel...! Schade, dass die firmware nicht dokumentiert ist, aber evtl. findet sich auch jemand, der rausfindet, was es für eine mcu ist und wie man die flasht ;) .)

cberl:
Die Lösung mit dem userreading funktioniert prima. Danke.

Und Ja - Ich bin auch ein großer Fan von verkabelter Technik.

Eine andere Firmware dürfte schwierig werden: Da ist ein Cortex-m3 drauf und auf dem kleinen Kamerad steht 7ca6xtg3/83848ks0, Optokoppler für die Eingänge - Die Platine ist ordentlich aufgebaut.
Mit http und mqtt kann ich das Teil ausreichend gut steuern & auslesen. Eigentlich ein cooles Teil für 57€.
Ins Internet lasse ich es aber nicht :-)

Anbei noch ein paar Bilder.
Es gibt auch ein PDF zu der TCP Schnittstelle auf Chinesisch. Mit dem Google Translator ist das aber recht verständlich.
Vielleicht kanns noch jemand gebrauchen:

Die Relay werden so geschalten:
http://192.168.48.122/relay_en.cgi?relayon1=on
http://192.168.48.122/relay_en.cgi?relayoff1=off
Die mqtt Seite gibts unter http://192.168.48.122/zm.cgi

Chris

cberl:
Das Teil kann jetzt komplett über mqtt gesteuert werden:

Das Subscribe auf: 0218091547293896state
Und ein Publish auf z.B. 0218091547293896ctr setr=1001000
schaltet das erste und das vierte Relais.

Ein x lässt das jeweilige Relais im ursprünglichen Zustand z.B. xxxx1xxx schaltet dann nur das Relais 5 ein

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln