FHEM Forum

FHEM - Hausautomations-Systeme => MQTT => Thema gestartet von: cberl am 23 Januar 2020, 17:41:19

Titel: 8fach I/O Board mit MQTT2_Device
Beitrag von: cberl am 23 Januar 2020, 17:41:19
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:

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


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
Titel: Antw:8fach I/O Board mit MQTT2_Device
Beitrag von: rudolfkoenig am 23 Januar 2020, 18:36:45
ZitatNun hätte ich gerne noch jedes Zeichen von input und output in einem einzelnen Reading.
Mir faellt dazu ein langes userReadings ein:attr EIOBoard1 userReadings in1:input:.* { $event =~ m/(.).......$/;;$1 }, in2:input:.* { $event =~ m/.(.)......$/;;$1 }, in3:input {usw....


ZitatHat vielleicht noch jemand eine Idee zum Publish?
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.
Titel: Antw:8fach I/O Board mit MQTT2_Device
Beitrag von: Beta-User am 23 Januar 2020, 20:11:53
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 ;) .)
Titel: Antw:8fach I/O Board mit MQTT2_Device
Beitrag von: cberl am 23 Januar 2020, 21:51:09
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
Titel: Antw:8fach I/O Board mit MQTT2_Device
Beitrag von: cberl am 10 Februar 2020, 17:56:09
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
Titel: Antw:8fach I/O Board mit MQTT2_Device
Beitrag von: Beta-User am 10 Februar 2020, 18:05:51
Kannst du bitte nochmal ein RAW-list von dem ganzen Device einstellen?

Das Ding ist wirklich interessant, und irgendwie werde ich den Verdacht nicht los, dass das heute noch nicht so richtig ausentwickelt ist...

Du hast ja z.B. eine Aktualisierung des Zeitstempels aller In- und Outputs, wenn sich nur einer ändert, oder? Da ist bestimmt was zu machen...!
Titel: Antw:8fach I/O Board mit MQTT2_Device
Beitrag von: cberl am 10 Februar 2020, 19:21:04
Da ist unbestritten noch Brach liegendes Potential da.

Hier das List:

Internals:
   DEVICETOPIC EIOBoard1_M2
   FUUID      5e28b7a8-f33f-51cc-8ed1-1634b5eb89a81169
   IODev      MQTT2Client
   LASTInputDev MQTT2Client
   MQTT2Client_MSGCNT 60
   MQTT2Client_TIME 2020-02-10 18:25:22
   MSGCNT     60
   NAME       EIOBoard1_M2
   NR         1473
   STATE      Input: 00000000 Relais: 00000000
   TYPE       MQTT2_DEVICE
   READINGS:
     2020-02-10 18:25:22   cmd             post
     2020-02-10 18:25:22   in1             0
     2020-02-10 18:25:22   in2             0
     2020-02-10 18:25:22   in3             0
     2020-02-10 18:25:22   in4             0
     2020-02-10 18:25:22   in5             0
     2020-02-10 18:25:22   in6             0
     2020-02-10 18:25:22   in7             0
     2020-02-10 18:25:22   in8             0
     2020-02-10 18:25:22   input           00000000
     2020-02-10 18:25:22   out1            0
     2020-02-10 18:25:22   out2            0
     2020-02-10 18:25:22   out3            0
     2020-02-10 18:25:22   out4            0
     2020-02-10 18:25:22   out5            0
     2020-02-10 18:25:22   out6            0
     2020-02-10 18:25:22   out7            0
     2020-02-10 18:25:22   out8            0
     2020-02-10 18:25:22   output          00000000
     2020-02-10 18:25:22   sn              /Home/EIOBoard1
Attributes:
   IODev      MQTT2Client
   readingList /Home/EIOBoard1state:.* { json2nameValue($EVENT) }
   room       82.MQTT
   stateFormat Input: input Relais: output
   userReadings in1:input:.* { $event =~ m/(.).......$/;;$1 }, in2:input:.* { $event =~ m/.(.)......$/;;$1 }, in3:input:.* { $event =~ m/..(.).....$/;;$1 }, in4:input:.* { $event =~ m/...(.)....$/;;$1 }, in5:input:.* { $event =~ m/....(.)...$/;;$1 }, in6:input:.* { $event =~ m/.....(.)..$/;;$1 }, in7:input:.* { $event =~ m/......(.).$/;;$1 }, in8:input:.* { $event =~ m/.......(.)$/;;$1 } , out1:output:.* { $event =~ m/(.).......$/;;$1 }, out2:output:.* { $event =~ m/.(.)......$/;;$1 }, out3:output:.* { $event =~ m/..(.).....$/;;$1 }, out4:output:.* { $event =~ m/...(.)....$/;;$1 }, out5:output:.* { $event =~ m/....(.)...$/;;$1 }, out6:output:.* { $event =~ m/.....(.)..$/;;$1 }, out7:output:.* { $event =~ m/......(.).$/;;$1 }, out8:output:.* { $event =~ m/.......(.)$/;;$1 }


Bislang gibts nur den Status der Ein- & Ausgänge.

Das Publish über setlist ist bei 8x on & off recht unübersichtlich.
Eine einfache Möglichkeit wäre ja, für jedes Relais ein eigenes Device anzulegen. Viel schicker wäre aber ein Device für alle Relais.

Hier ein Publish: /Home/EIOBoard1ctr setr=xx1xxxxx
Und hier das Subscribe: /Home/EIOBoard1state/#   {"cmd":"post","output":"00100000","input":"00000000","sn":"/Home/EIOBoard1"}

Damit es nicht zu einfach wird: Die Eingänge schalten direkt die Ausgänge. Wenn ein Eingang auf high / on liegt, schaltet das Relais auf on.
Kommt nun per mqtt ein off, gewinnt der letzte Befehl also hier mqtt. Das sieht dann so aus:
{"cmd":"post","output":"00000000","input":"00100000","sn":"/Home/EIOBoard1"}

Und anders herum: Bei einem on per mqtt kann das auch wieder über ein on und off am Eingang abgeschalten werden. Hoffe, ich habe mich verständlich ausgedrückt :-)



Titel: Antw:8fach I/O Board mit MQTT2_Device
Beitrag von: rudolfkoenig am 10 Februar 2020, 19:48:45
ZitatViel schicker wäre aber ein Device für alle Relais.
Das bedeutet viel Bastelarbeit, weil alle Voreinstellungen in FHEM fuer Einzelschalter ausgelegt sind.
Ich sehe z.Bsp. bei Mehrfachschalter "Herausforderungen" bei der FHEMWEB Anzeige, SetExtensions oder bei den Sprachassistenten.

Fuer ein gute FHEM-Integration muesste das Geraet ueber ein bridge-device in Einzelschalter aufgesplittet werden: das ist zwar Arbeit, dafuer sind die anderen Sachen schon geloest. Die Frage ist, ob der Aufwand sich lohnt, d.h. viele Benutzer die o.g. Features haben wollen.
Titel: Antw:8fach I/O Board mit MQTT2_Device
Beitrag von: Beta-User am 10 Februar 2020, 19:52:28
Na ja, am Ende muß man bei dem Teil wohl immer alle einzelnen Relaisstände kennen, sonst kann man den Sendecommand nicht bauen, oder? Dann ist es (auch angesichts der nicht allzuhohen zu erwartenden Nutzerzahlen) m.E. einfacher, ein Einheitsdevice zu haben und die einzelnen Kanäle z.B. über je einen ReadingsProxy zu visualisieren...

Da die inputs immer die outputs schalten, sich aber nicht getrennt nutzen lassen (?), würde ich vorschlagen, die zu ignorieren, wichtig ist eigentlich nur, dass der out-Zustand korrekt ist, oder?

Dann könnte man z.B. jsonMap verwenden und input wegfiltern:

attr EIOBoard1_M2  readingList /Home/EIOBoard1state:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr EIOBoard1_M2 jsonMap input:0

Man könnte den Rest auch über eine myUtils-sub machen, oder weiter über die userReadings. Sowas hier (ungetestet) sollte nur Änderungen durchlassen:
out1:output:.* { $event =~ m/(.).......$/;;ReadingsVal($name,"out1",undef) ne $1 ? $1 : undef }

Für die setList wird es "spaßiger", da könnten wir z.B. substr verwenden, um den aus dem "output"-Reading zusammenzubasteln.

Also z.B. (ebenfalls ungetestet) in diese Richtung:
attr EIOBoard1_M2 setList out2:0,1  {my $output = ReadingsVal($name,"output","00000000");; my $start = substr $output, 1;; my $end = substr $output, -6;; ( "/Home/EIOBoard1ctr setr=$start" . $EVTPART1 . $end  }
Titel: Antw:8fach I/O Board mit MQTT2_Device
Beitrag von: cberl am 10 Februar 2020, 21:14:57
Stimmt - der Zustand der Eingänge ist nicht wirklich wichtig. Die Eingänge haben letzendlich immer Einfluss auf die Ausgänge.

Das userReadings funktioniert tadellos, es wird nun nur das jeweilige Reading aktualisiert.
Beim setList gehts noch durcheinander:

set EIOBoard1_M2 out2 1 - schaltet Relais8 Ein
set EIOBoard1_M2 out2 1 - Relais8 bleibt Ein und Relais7 Ein
set EIOBoard1_M2 out2 1 - Relais8+7 bleiben Ein und Relais6 Ein
set EIOBoard1_M2 out2 1 - Relais8+7+6 bleiben Ein und Relais5 Ein
set EIOBoard1_M2 out2 1 - Relais8+7+6+5 bleiben Ein und Relais4 Ein
set EIOBoard1_M2 out2 0 - Relais8+7+6+5+4 bleiben Ein und Relais3 Ein
set EIOBoard1_M2 out2 0 - Relais8+7+6+5+4+3 bleiben Ein und Relais2 Ein
..

Internals:
   CFGFN     
   DEVICETOPIC EIOBoard1_M2
   FUUID      5e41ad70-f33f-51cc-62f7-9eb635047492dbe4
   IODev      MQTT2Client
   LASTInputDev MQTT2Client
   MQTT2Client_MSGCNT 142
   MQTT2Client_TIME 2020-02-10 21:09:16
   MSGCNT     142
   NAME       EIOBoard1_M2
   NR         31321
   STATE      out2
   TYPE       MQTT2_DEVICE
   JSONMAP:
     input      0
   READINGS:
     2020-02-10 21:09:16   cmd             post
     2020-02-10 20:49:05   out1            0
     2020-02-10 21:09:02   out2            1
     2020-02-10 21:08:50   out3            0
     2020-02-10 21:09:01   out4            0
     2020-02-10 21:06:44   out5            0
     2020-02-10 21:06:44   out6            0
     2020-02-10 21:05:16   out7            0
     2020-02-10 21:03:13   out8            0
     2020-02-10 21:09:16   output          01000000
     2020-02-10 21:09:16   sn              /Home/EIOBoard1
     2020-02-10 21:05:16   state           out2
Attributes:
   IODev      MQTT2Client
   jsonMap    input:0
   readingList /Home/EIOBoard1state:.* { json2nameValue($EVENT,'',$JSONMAP) }
   room       82.MQTT
   setList    out2:0,1  {my $output = ReadingsVal($NAME,"output","00000000");; my $start = substr $output, 1;; my $end = substr $output, -6;; ( "/Home/EIOBoard1ctr setr=$start" . $EVTPART1 . $end)}
   userReadings out1:output:.* { $event =~ m/(.).......$/;;ReadingsVal($name,"out1",undef) ne $1 ? $1 : undef }, out2:output:.* { $event =~ m/.(.)......$/;;ReadingsVal($name,"out2",undef) ne $1 ? $1 : undef }, out3:output:.* { $event =~ m/..(.).....$/;;ReadingsVal($name,"out3",undef) ne $1 ? $1 : undef }, out4:output:.* { $event =~ m/...(.)....$/;;ReadingsVal($name,"out4",undef) ne $1 ? $1 : undef }, out5:output:.* { $event =~ m/....(.)...$/;;ReadingsVal($name,"out5",undef) ne $1 ? $1 : undef }, out6:output:.* { $event =~ m/.....(.)..$/;;ReadingsVal($name,"out6",undef) ne $1 ? $1 : undef }, out7:output:.* { $event =~ m/......(.).$/;;ReadingsVal($name,"out7",undef) ne $1 ? $1 : undef }, out8:output:.* { $event =~ m/.......(.)$/;;ReadingsVal($name,"out8",undef) ne $1 ? $1 : undef }

Titel: Antw:8fach I/O Board mit MQTT2_Device
Beitrag von: Beta-User am 11 Februar 2020, 08:23:33
Hm, da fehlte wohl noch eine 0, in substr...
my $start = substr $output, 0, 1

Sollte mit regex eigentlich auch einfacher gehen (mal wieder ungetestet):
setList    out2:0,1  {my $output = ReadingsVal($NAME,"output","00000000");; $output = $output =~ "s/([01]{1})[01]([01]{6})/\\1$EVTPART1\\2/g";; "/Home/EIOBoard1ctr setr=$output"}
Und nachdem ich das überschlafen habe, gebe ich Rudi recht: wir sollten direkt versuchen, da 8 einkanalige MQTT2-Devices draus zu basteln. Muß mal etwas hirnen, aber das sollte eigentlich kein größeres Problem sein.

Bitte zukünftig RAW-lists (list -r oder der entsprechende Button unter dem Device), das ist für mich einfacher zu transferieren...
Titel: Antw:8fach I/O Board mit MQTT2_Device
Beitrag von: Beta-User am 11 Februar 2020, 10:56:14
Zum Testen mal ein Versuch mit zwei Kanälen:

name:8channel_ethernet_board_split
filter:TYPE=MQTT2_DEVICE
desc:Configures a 8 channel relay board see <a href="https://forum.fhem.de/index.php/topic,107536.msg1016379.html#msg1016379">Forum Thread</a> for more info about the hardware and basic MQTT configuration.<br>NOTE: This will create some new devices for the other channels!
order:C_01
par:STATETOPIC;State topic prefix, without trailing /;{ AttrVal("DEVICE","readingList","") =~ m,([^:]+state):, ? "$1" : undef }
par:CMNDTOPIC;Command topic prefix, without trailing /;{ AttrVal("DEVICE","readingList","") =~ m,([^:]+)state:, ? "${1}ctr" : undef }
attr DEVICE model 8channel_ethernet_board_split
attr DEVICE readingList \
  STATETOPIC:.* { $EVENT =~ m,output...([01]{8}), ? {"output"=>$1} : undef }\
  STATETOPIC:.* { $EVENT =~ m,output...([01])([01]{7}), ? $1 ? {"state"=>"on"} : {"state"=>"off"} : undef }
attr DEVICE setList \
  off:noArg  { my $output = ReadingsVal($NAME,"output","00000000");; $output =~ s/[01]([01]{7})/0\\1/g;; "CMNDTOPIC setr=$output" }\
  on:noArg   { my $output = ReadingsVal($NAME,"output","00000000");; $output =~ s/[01]([01]{7})/1\\1/g;; "CMNDTOPIC setr=$output"}
attr DEVICE comment Channel 1 for DEVICE, see also DEVICE_CH2
deletereading -q DEVICE (?!associatedWith).*
attr DEVICE setStateList on off
setreading DEVICE associatedWith DEVICE_CH2
set DEVICE attrTemplate mqtt2_speech_recognition_type_switch
attr DEVICE model 8channel_ethernet_board_split
copy DEVICE DEVICE_CH2
attr DEVICE_CH2 readingList \
  STATETOPIC:.* { $EVENT =~ m,output...([01]{8}), ? {"output"=>$1} : undef }\
  STATETOPIC:.* { $EVENT =~ m,output...[01]([01])([01]{6}), ? $1 ? {"state"=>"on"} : {"state"=>"off"} : undef }
attr DEVICE_CH2 setList \
  off:noArg  { my $output = ReadingsVal($NAME,"output","00000000");; $output =~ s/([01])[01]([01]{6})/\\10\\2/g;; "CMNDTOPIC setr=$output" }\
  on:noArg   { my $output = ReadingsVal($NAME,"output","00000000");; $output =~ s/([01])[01]([01]{6})/\\11\\2/g;; "CMNDTOPIC setr=$output"}


Hoffe mal, das mit dem Regexen klappt, ich bin da immer noch etwas unsicher, was wo landet... ::)

Anleitung für den Umgang mit dem Code an sich ist hier: https://wiki.fhem.de/wiki/AttrTemplate (https://wiki.fhem.de/wiki/AttrTemplate)
Titel: Antw:8fach I/O Board mit MQTT2_Device
Beitrag von: cberl am 11 Februar 2020, 22:30:00
Cool, es nimmt Gestalt an. Er landet aber noch nicht ganz richtig:

set EIOBoard1_M2 attrTemplate 8channel_ethernet_board_split /Home/EIOBoard1state /Home/EIOBoard1ctr
#
set EIOBoard1_M2 on -> schaltet Relays1 und Relays3 Ein

/Home/EIOBoard1ctr setr=1\1
/Home/EIOBoard1state {"cmd":"setr","output":"10100000","input":"00000000","sn":"/Home/EIOBoard1"}
/Home/EIOBoard1state {"cmd":"post","output":"10100000","input":"00000000","sn":"/Home/EIOBoard1"}
#
>list -r EIOBoard1_M2
define EIOBoard1_M2 MQTT2_DEVICE
attr EIOBoard1_M2 IODev MQTT2Client
attr EIOBoard1_M2 comment Channel 1 for EIOBoard1_M2, see also EIOBoard1_M2_CH2
attr EIOBoard1_M2 genericDeviceType switch
attr EIOBoard1_M2 model 8channel_ethernet_board_split
attr EIOBoard1_M2 readingList /Home/EIOBoard1state:.* { $EVENT =~ m,output...([01]{8}), ? {"output"=>$1} : undef }\
  /Home/EIOBoard1state:.* { $EVENT =~ m,output...([01])([01]{7}), ? $1 ? {"state"=>"on"} : {"state"=>"off"} : undef }
attr EIOBoard1_M2 room 82.MQTT
attr EIOBoard1_M2 setList off:noArg  { my $output = ReadingsVal($NAME,"output","00000000");;;; $output =~ s/[01]([01]{7})/0\\1/g;;;; "/Home/EIOBoard1ctr setr=$output" }\
  on:noArg   { my $output = ReadingsVal($NAME,"output","00000000");;;; $output =~ s/[01]([01]{7})/1\\1/g;;;; "/Home/EIOBoard1ctr setr=$output"}
attr EIOBoard1_M2 setStateList on off

setstate EIOBoard1_M2 on
setstate EIOBoard1_M2 2020-02-11 21:48:23 associatedWith EIOBoard1_M2_CH2
setstate EIOBoard1_M2 2020-02-11 21:58:52 output 10100000
setstate EIOBoard1_M2 2020-02-11 21:58:52 state on


set EIOBoard1_M2 off -> Relays1 AUS, Relays3 bleibt EIN

/Home/EIOBoard1ctr setr=0\1
/Home/EIOBoard1state {"cmd":"setr","output":"00100000","input":"00000000","sn":"/Home/EIOBoard1"}
/Home/EIOBoard1state {"cmd":"post","output":"00100000","input":"00000000","sn":"/Home/EIOBoard1"}

>list -r EIOBoard1_M2
defmod EIOBoard1_M2 MQTT2_DEVICE
attr EIOBoard1_M2 IODev MQTT2Client
attr EIOBoard1_M2 comment Channel 1 for EIOBoard1_M2, see also EIOBoard1_M2_CH2
attr EIOBoard1_M2 genericDeviceType switch
attr EIOBoard1_M2 model 8channel_ethernet_board_split
attr EIOBoard1_M2 readingList /Home/EIOBoard1state:.* { $EVENT =~ m,output...([01]{8}), ? {"output"=>$1} : undef }\
  /Home/EIOBoard1state:.* { $EVENT =~ m,output...([01])([01]{7}), ? $1 ? {"state"=>"on"} : {"state"=>"off"} : undef }
attr EIOBoard1_M2 room 82.MQTT
attr EIOBoard1_M2 setList off:noArg  { my $output = ReadingsVal($NAME,"output","00000000");;;; $output =~ s/[01]([01]{7})/0\\1/g;;;; "/Home/EIOBoard1ctr setr=$output" }\
  on:noArg   { my $output = ReadingsVal($NAME,"output","00000000");;;; $output =~ s/[01]([01]{7})/1\\1/g;;;; "/Home/EIOBoard1ctr setr=$output"}
attr EIOBoard1_M2 setStateList on off

setstate EIOBoard1_M2 off
setstate EIOBoard1_M2 2020-02-11 21:48:23 associatedWith EIOBoard1_M2_CH2
setstate EIOBoard1_M2 2020-02-11 22:02:54 output 00100000
setstate EIOBoard1_M2 2020-02-11 22:02:54 state off


set EIOBoard1_M2_CH2 on -> schaltet Relays2 und Relays3 EIN

/Home/EIOBoard1ctr setr=\11\2
/Home/EIOBoard1state {"cmd":"setr","output":"01101000","input":"00000000","sn":"/Home/EIOBoard1"}
/Home/EIOBoard1state {"cmd":"post","output":"01100000","input":"00000000","sn":"/Home/EIOBoard1"}

>list -r EIOBoard1_M2_CH2
defmod EIOBoard1_M2_CH2 MQTT2_DEVICE
attr EIOBoard1_M2_CH2 IODev MQTT2Client
attr EIOBoard1_M2_CH2 comment Channel 1 for EIOBoard1_M2, see also EIOBoard1_M2_CH2
attr EIOBoard1_M2_CH2 genericDeviceType switch
attr EIOBoard1_M2_CH2 model 8channel_ethernet_board_split
attr EIOBoard1_M2_CH2 readingList /Home/EIOBoard1state:.* { $EVENT =~ m,output...([01]{8}), ? {"output"=>$1} : undef }\
  /Home/EIOBoard1state:.* { $EVENT =~ m,output...[01]([01])([01]{6}), ? $1 ? {"state"=>"on"} : {"state"=>"off"} : undef }
attr EIOBoard1_M2_CH2 room 82.MQTT
attr EIOBoard1_M2_CH2 setList off:noArg  { my $output = ReadingsVal($NAME,"output","00000000");;;; $output =~ s/([01])[01]([01]{6})/\\10\\2/g;;;; "/Home/EIOBoard1ctr setr=$output" }\
  on:noArg   { my $output = ReadingsVal($NAME,"output","00000000");;;; $output =~ s/([01])[01]([01]{6})/\\11\\2/g;;;; "/Home/EIOBoard1ctr setr=$output"}
attr EIOBoard1_M2_CH2 setStateList on off

setstate EIOBoard1_M2_CH2 on
setstate EIOBoard1_M2_CH2 2020-02-11 22:06:59 output 01100000
setstate EIOBoard1_M2_CH2 2020-02-11 22:06:59 state on


set EIOBoard1_M2_CH2  off -> Relays2 bleibt EIN, Relays3 AUS

/Home/EIOBoard1ctr setr=\10\2
/Home/EIOBoard1state {"cmd":"setr","output":"01001000","input":"00000000","sn":"/Home/EIOBoard1"}
/Home/EIOBoard1state {"cmd":"post","output":"01000000","input":"00000000","sn":"/Home/EIOBoard1"}
>list -r EIOBoard1_M2_CH2
defmod EIOBoard1_M2_CH2 MQTT2_DEVICE
attr EIOBoard1_M2_CH2 IODev MQTT2Client
attr EIOBoard1_M2_CH2 comment Channel 1 for EIOBoard1_M2, see also EIOBoard1_M2_CH2
attr EIOBoard1_M2_CH2 genericDeviceType switch
attr EIOBoard1_M2_CH2 model 8channel_ethernet_board_split
attr EIOBoard1_M2_CH2 readingList /Home/EIOBoard1state:.* { $EVENT =~ m,output...([01]{8}), ? {"output"=>$1} : undef }\
  /Home/EIOBoard1state:.* { $EVENT =~ m,output...[01]([01])([01]{6}), ? $1 ? {"state"=>"on"} : {"state"=>"off"} : undef }
attr EIOBoard1_M2_CH2 room 82.MQTT
attr EIOBoard1_M2_CH2 setList off:noArg  { my $output = ReadingsVal($NAME,"output","00000000");;;; $output =~ s/([01])[01]([01]{6})/\\10\\2/g;;;; "/Home/EIOBoard1ctr setr=$output" }\
  on:noArg   { my $output = ReadingsVal($NAME,"output","00000000");;;; $output =~ s/([01])[01]([01]{6})/\\11\\2/g;;;; "/Home/EIOBoard1ctr setr=$output"}
attr EIOBoard1_M2_CH2 setStateList on off

setstate EIOBoard1_M2_CH2 on
setstate EIOBoard1_M2_CH2 2020-02-11 22:10:10 output 01000000
setstate EIOBoard1_M2_CH2 2020-02-11 22:10:10 state on



Seltsam ist auch die fünfte Ziffer in 01001000 bei setr, im post passt es dann aber wieder
Titel: Antw:8fach I/O Board mit MQTT2_Device
Beitrag von: Beta-User am 12 Februar 2020, 07:40:51
 ::) Hmm, so ist das, wenn man Dinge aus dem INet kopiert und nicht alles selbst vorab testet...

Die Ersetzungsschreibweise \\ für die Parameter ist wohl Mist, das muß wohl "ganz normal" $1 bzw. $2 sein:
attr EIOBoard1_M2 setList off:noArg  { my $output = ReadingsVal($NAME,"output","00000000");;;; $output =~ s/[01]([01]{7})/0$1/g;;;; "/Home/EIOBoard1ctr setr=$output" }\
  on:noArg   { my $output = ReadingsVal($NAME,"output","00000000");;;; $output =~ s/[01]([01]{7})/1$1/g;;;; "/Home/EIOBoard1ctr setr=$output"}

attr EIOBoard1_M2_CH2 setList off:noArg  { my $output = ReadingsVal($NAME,"output","00000000");;;; $output =~ s/([01])[01]([01]{6})/$10$2/g;;;; "/Home/EIOBoard1ctr setr=$output" }\
  on:noArg   { my $output = ReadingsVal($NAME,"output","00000000");;;; $output =~ s/([01])[01]([01]{6})/$11$2/g;;;; "/Home/EIOBoard1ctr setr=$output"}


Und bei der readingList zu "state" muß ich auch nochmal nachbessern, da muß erst nachgesehen werden, was der derzeitige ist. Ungetestetes Muster:
  /Home/EIOBoard1state:.* { my $newstate = $EVENT =~ m,output...([01])([01]{7}), ? $1 ? "on" : "off";;;; $newstate eq ReadingsVal($NAME,"state","unknown") ? undef : {"state"=>$newstate} }

Kannst du auch (wenn es funktioniert, dann) nochmal testen, ob man wirklich so viele escapte ; braucht (";;"). Kommt mir etwas viel vor...

Stimme aber zu: Jetzt ist es auf dem richtigen Weg, Danke für die Geduld!
Titel: Antw:8fach I/O Board mit MQTT2_Device
Beitrag von: cberl am 12 Februar 2020, 16:55:47
Vielen Dank, dass Du Dich diesem Thema annimmst. Was auch immer ich dazu beitragen kann, das mache ich gerne.

Bei dem readingList bekomme ich einen Fehler:

syntax error at (eval 12023334) line 1, at EOF
Global symbol "$newstate" requires explicit package name (did you forget to declare "my $newstate"?) at (eval 12023334) line 1.

Beim setList werden in der GUI nur zwei ;; angezeigt. Im RAW hingegen ;;;;

CH1 funktioniert:

>set EIOBoard1_M2 on
/Home/EIOBoard1ctr setr=10000000
/Home/EIOBoard1state {"cmd":"setr","output":"10000000","input":"00000000","sn":"/Home/EIOBoard1"}

defmod EIOBoard1_M2 MQTT2_DEVICE
attr EIOBoard1_M2 IODev MQTT2Client
attr EIOBoard1_M2 comment Channel 1 for EIOBoard1_M2, see also EIOBoard1_M2_CH2
attr EIOBoard1_M2 genericDeviceType switch
attr EIOBoard1_M2 model 8channel_ethernet_board_split
attr EIOBoard1_M2 readingList /Home/EIOBoard1state:.* { $EVENT =~ m,output...([01]{8}), ? {"output"=>$1} : undef }\
  /Home/EIOBoard1state:.* { $EVENT =~ m,output...([01])([01]{7}), ? $1 ? {"state"=>"on"} : {"state"=>"off"} : undef }
attr EIOBoard1_M2 room 82.MQTT
attr EIOBoard1_M2 setList off:noArg  { my $output = ReadingsVal($NAME,"output","00000000");;;; $output =~ s/[01]([01]{7})/0$1/g;;;; "/Home/EIOBoard1ctr setr=$output" }\
  on:noArg   { my $output = ReadingsVal($NAME,"output","00000000");;;; $output =~ s/[01]([01]{7})/1$1/g;;;; "/Home/EIOBoard1ctr setr=$output"}
attr EIOBoard1_M2 setStateList on off

setstate EIOBoard1_M2 on
setstate EIOBoard1_M2 2020-02-11 21:48:23 associatedWith EIOBoard1_M2_CH2
setstate EIOBoard1_M2 2020-02-12 16:32:05 output 10000000
setstate EIOBoard1_M2 2020-02-12 16:32:05 state on

>set EIOBoard1_M2 off
/Home/EIOBoard1ctr setr=00000000
/Home/EIOBoard1state {"cmd":"setr","output":"00000000","input":"00000000","sn":"/Home/EIOBoard1"}


Bei CH2 schaltet das Relays nicht und es werden nur sechs Ziffern gesendet.
Das setList von CH2 sieht auch ganz anders aus:
CH1: $output =~ s/[01]([01]{7})/0$1/g;;
CH2: $output =~ s/([01])[01]([01]{6})/$10$2/g;;


>set EIOBoard1_M2_CH2 on
/Home/EIOBoard1ctr setr=000000
/Home/EIOBoard1state {"cmd":"setr","output":"00000000","input":"00000000","sn":"/Home/EIOBoard1"}

defmod EIOBoard1_M2_CH2 MQTT2_DEVICE
attr EIOBoard1_M2_CH2 IODev MQTT2Client
attr EIOBoard1_M2_CH2 comment Channel 1 for EIOBoard1_M2, see also EIOBoard1_M2_CH2
attr EIOBoard1_M2_CH2 genericDeviceType switch
attr EIOBoard1_M2_CH2 model 8channel_ethernet_board_split
attr EIOBoard1_M2_CH2 readingList /Home/EIOBoard1state:.* { $EVENT =~ m,output...([01]{8}), ? {"output"=>$1} : undef }\
  /Home/EIOBoard1state:.* { $EVENT =~ m,output...[01]([01])([01]{6}), ? $1 ? {"state"=>"on"} : {"state"=>"off"} : undef }
attr EIOBoard1_M2_CH2 room 82.MQTT
attr EIOBoard1_M2_CH2 setList off:noArg  { my $output = ReadingsVal($NAME,"output","00000000");;;; $output =~ s/([01])[01]([01]{6})/$10$2/g;;;; "/Home/EIOBoard1ctr setr=$output" }\
  on:noArg   { my $output = ReadingsVal($NAME,"output","00000000");;;; $output =~ s/([01])[01]([01]{6})/$11$2/g;;;; "/Home/EIOBoard1ctr setr=$output"}
attr EIOBoard1_M2_CH2 setStateList on off

setstate EIOBoard1_M2_CH2 off
setstate EIOBoard1_M2_CH2 2020-02-12 16:32:57 output 00000000
setstate EIOBoard1_M2_CH2 2020-02-12 16:32:57 state off



>set EIOBoard1_M2_CH2 off
/Home/EIOBoard1ctr setr=000000
/Home/EIOBoard1state {"cmd":"setr","output":"00000000","input":"00000000","sn":"/Home/EIOBoard1"}




Titel: Antw:8fach I/O Board mit MQTT2_Device
Beitrag von: Beta-User am 12 Februar 2020, 17:07:27
Zu $newstate: Du hattest schon "alles" mit in die readingList eingebaut? Die Musterzeile hatte die Deklaration ganz am Anfang enthalten, ist evtl. untergegangen:
Zitat von: Beta-User am 12 Februar 2020, 07:40:51
  /Home/EIOBoard1state:.* { my $newstate = $EVENT =~ m,output...([01])([01]{7}), ? $1 ? "on" : "off";;;; $newstate eq ReadingsVal($NAME,"state","unknown") ? undef : {"state"=>$newstate} }

Das ist schon mal gut, dass CH1 funktioniert. CH2 muß anders sein, weil wir da ja die erste Ziffer "as is" übernehmen wollen. Kannst du mal das hier testen:
attr EIOBoard1_M2_CH2 setList off:noArg  { my $output = ReadingsVal($NAME,"output","00000000");;;; $output =~ s/([01])[01]([01]{6})/${1}0$2/g;;;; "/Home/EIOBoard1ctr setr=$output" }\
  on:noArg   { my $output = ReadingsVal($NAME,"output","00000000");;;; $output =~ s/([01])[01]([01]{6})/${1}1$2/g;;;; "/Home/EIOBoard1ctr setr=$output"}

Falls das klappt und du Lust hast, das attrTemplate zu vervollständigen: Für die anderen müßte man dann die Zahl der Wiederholungen ändern, also für den dritten: 
s/([01]{2})[01]([01]{5})/${1}1$2/g
Und bitte einmal mit nur einem ";" beim GUI-Editieren austesten...
Titel: Antw:8fach I/O Board mit MQTT2_Device
Beitrag von: cberl am 12 Februar 2020, 20:01:39
CH2 funktioniert jetzt auch - Super.
Und es reicht ein ; in der GUI aus.

Bei der readingList muss ich nochmal nachfragen. Aus:

attr EIOBoard1_M2 readingList /Home/EIOBoard1state:.* { $EVENT =~ m,output...([01]{8}), ? {"output"=>$1} : undef }\
  /Home/EIOBoard1state:.* { $EVENT =~ m,output...([01])([01]{7}), ? $1 ? {"state"=>"on"} : {"state"=>"off"} : undef }

Wird:

attr EIOBoard1_M2 readingList /Home/EIOBoard1state:.* { $EVENT =~ m,output...([01]{8}), ? {"output"=>$1} : undef }\
  /Home/EIOBoard1state:.* { my $newstate = $EVENT =~ m,output...([01])([01]{7}), ? $1 ? "on" : "off";; $newstate eq ReadingsVal($NAME,"state","unknown") ? undef : {"state"=>$newstate} } 

Da bekomme ich aber ein:
syntax error at (eval 12916007) line 1, at EOF
Global symbol "$newstate" requires explicit package name (did you forget to declare "my $newstate"?) at (eval 12916007) line 1.
Global symbol "$newstate" requires explicit package name (did you forget to declare "my $newstate"?) at (eval 12916007) line 1.

attr EIOBoard1_M2 readingList /Home/EIOBoard1state:.* { my $newstate = $EVENT} funktioniert. Mit dem Rest hinten aber nicht mehr. Ich finde den Fehler nicht.

Titel: Antw:8fach I/O Board mit MQTT2_Device
Beitrag von: Beta-User am 13 Februar 2020, 10:11:11
Mist... Mein Code war Käse, ich habe mich durch die Fehlermeldung irgendwie in die falsche Richtung leiten lassen, da waren wohl zu viele Schritte auf einmal...

So sollte es klappen:
  /Home/EIOBoard1state:.* { $EVENT =~ /output...([01])([01]{7})/;;  my $newstate = $1 ? "on" : "off";; $newstate eq ReadingsVal($NAME,"state","unknown") ? undef : {"state"=>$newstate} } 
Titel: Antw:8fach I/O Board mit MQTT2_Device
Beitrag von: cberl am 13 Februar 2020, 17:43:41
Hi, nix mehr mit Käse! Alles Bestens. Vielen Dank.
Ich schaue mir das dann mal mit dem Template an.

...habe mir mal gleich noch so ein Board bestellt.
Titel: Antw:8fach I/O Board mit MQTT2_Device
Beitrag von: Beta-User am 14 Februar 2020, 08:02:29
 :)
Puh, Danke für die Entwarnung!

Dann warte ich jetzt mal, was du aus den Bausteinchen jetzt so zauberst und wie die Erfahrungen mit dem Ding auf längere Frist so sind - wie gesagt, ich mag das Teil schon alleine deshalb, weil es verkabelt wird, auch wenn ich grade keinen Bedarf habe (und wenn, den dann mit MySensors@RS485 decken würde)...

Bin mal gespannt, wann der erste unserer MCU-Cracks sich des Teils annimmt und eine eigene firmware dafür baut - diese Klimmzüge zur Auswertung von output könnte man sich sparen, würde das Teil gleich "vernünftige" Rückmeldung zu einzelnen Kanälen geben ;D .
Titel: Antw:8fach I/O Board mit MQTT2_Device
Beitrag von: cberl am 15 Februar 2020, 10:24:03
Hi, ich wollte das nun für die anderen Relays erweitern und scheitere schon beim anpassen des realdingList von CH2. Das Relays schaltet richtig, der state bleibt aber immer on:

defmod EIOBoard1_M2_CH2 MQTT2_DEVICE
attr EIOBoard1_M2_CH2 IODev MQTT2Client
attr EIOBoard1_M2_CH2 comment Channel 1 for EIOBoard1_M2, see also EIOBoard1_M2_CH2
attr EIOBoard1_M2_CH2 genericDeviceType switch
attr EIOBoard1_M2_CH2 model 8channel_ethernet_board_split
attr EIOBoard1_M2_CH2 readingList /Home/EIOBoard1state:.* { $EVENT =~ /output...([01])[01]([01]{6})/;;  my $newstate = $2 ? "on" : "off";; $newstate eq ReadingsVal($NAME,"state","unknown") ? undef : {"state"=>$newstate} }
attr EIOBoard1_M2_CH2 room 82.MQTT
attr EIOBoard1_M2_CH2 setList off:noArg  { my $output = ReadingsVal($NAME,"output","00000000");; $output =~ s/([01])[01]([01]{6})/${1}0$2/g;; "/Home/EIOBoard1ctr setr=$output" }\
  on:noArg   { my $output = ReadingsVal($NAME,"output","00000000");; $output =~ s/([01])[01]([01]{6})/${1}1$2/g;; "/Home/EIOBoard1ctr setr=$output"}
attr EIOBoard1_M2_CH2 setStateList on off

setstate EIOBoard1_M2_CH2 on
setstate EIOBoard1_M2_CH2 2020-02-15 09:06:19 output 00000000
setstate EIOBoard1_M2_CH2 2020-02-15 09:58:47 state on


Hier nochmal der funktionierende CH1:

defmod EIOBoard1_M2 MQTT2_DEVICE
attr EIOBoard1_M2 IODev MQTT2Client
attr EIOBoard1_M2 comment Channel 1 for EIOBoard1_M2, see also EIOBoard1_M2_CH2
attr EIOBoard1_M2 genericDeviceType switch
attr EIOBoard1_M2 model 8channel_ethernet_board_split
attr EIOBoard1_M2 readingList /Home/EIOBoard1state:.* { $EVENT =~ /output...([01])([01]{7})/;;  my $newstate = $1 ? "on" : "off";; $newstate eq ReadingsVal($NAME,"state","unknown") ? undef : {"state"=>$newstate} }
attr EIOBoard1_M2 room 82.MQTT
attr EIOBoard1_M2 setList off:noArg  { my $output = ReadingsVal($NAME,"output","00000000");; $output =~ s/[01]([01]{7})/0$1/g;; "/Home/EIOBoard1ctr setr=$output" }\
  on:noArg   { my $output = ReadingsVal($NAME,"output","00000000");; $output =~ s/[01]([01]{7})/1$1/g;; "/Home/EIOBoard1ctr setr=$output"}
attr EIOBoard1_M2 setStateList on off

setstate EIOBoard1_M2 on
setstate EIOBoard1_M2 2020-02-12 18:05:23 associatedWith EIOBoard1_M2_CH2
setstate EIOBoard1_M2 2020-02-13 17:38:04 output 00000000
setstate EIOBoard1_M2 2020-02-15 10:22:00 state on



Die Vervollständigung für die weiteren Kanäle verstehe ich nicht. Habe das jetzt mal nach Gefühl gemacht :-[
Kannst Du das bitte richtig rücken?

CH1 s/[01]([01]{7})/1$1/g
CH2 s/([01])[01]([01]{6})/${1}1$2/g
CH3 s/([01]{2})[01]([01]{5})/${1}1$2/g -> muss das 1$3/g sein?
CH4 s/([01]{3})[01][01]([01]{4})/${1}1$4/g
CH5 s/([01]{4})[01][01][01]([01]{3})/${1}1$5/g
CH6 s/([01]{5})[01][01][01][01]([01]{2})/${1}1$6/g
CH7 s/([01]{6})[01][01][01][01][01]([01]{1})/${1}1$7/g
CH8 s/([01]{7})[01][01][01][01][01][01]([01])/${1}1$8/g

Titel: Antw:8fach I/O Board mit MQTT2_Device
Beitrag von: Beta-User am 15 Februar 2020, 10:32:15
Ist etwas regex...

$1 ist der erste "hit", $2 der zweite usw. -> das, was du haben willst, muß also "in die regex-Klammer":
attr EIOBoard1_M2_CH2 readingList /Home/EIOBoard1state:.* { $EVENT =~ /output...[01]([01])([01]{6})/;;  my $newstate = $1 ? "on" : "off";; $newstate eq ReadingsVal($NAME,"state","unknown") ? undef : {"state"=>$newstate} }
(Habe die Klammer um die erste Stelle entfernt, damit wir die umklammerte zweite Stelle wieder $1 ;) )

(Zum Weiterlesen und vorab-Testen (z.B.): https://regexr.com (https://regexr.com/),da ist auch das mit den eckigen Klammern "etwas" nebenbei erläutert)
Titel: Antw:8fach I/O Board mit MQTT2_Device
Beitrag von: cberl am 16 Februar 2020, 10:00:39
Hi, da die Relays sich wegen den gesendeten Nullen gegenseitig ausgeschaltet hatten, habe ich das auf x umgestellt und die RegEx angepasst.
Das funktioniert bislang ohne Einschränkungen.
Hier der aktuelle Stand:


defmod EIOBoard1CH1_M2 MQTT2_DEVICE
attr EIOBoard1CH1_M2 IODev MQTT2Client
attr EIOBoard1CH1_M2 comment Channel 1 for EIOBoard1_M2, see also EIOBoard1_M2_CH2
attr EIOBoard1CH1_M2 genericDeviceType switch
attr EIOBoard1CH1_M2 model 8channel_ethernet_board_split
attr EIOBoard1CH1_M2 readingList /Home/EIOBoard1state:.* { $EVENT =~ /output...([01])[01]{7}/;;  my $newstate = $1 ? "on" : "off";; $newstate eq ReadingsVal($NAME,"state","unknown") ? undef : {"state"=>$newstate} }
attr EIOBoard1CH1_M2 room 82.MQTT
attr EIOBoard1CH1_M2 setList on:noArg /Home/EIOBoard1ctr setr=1xxxxxxx\
off:noArg /Home/EIOBoard1ctr setr=0xxxxxxx
attr EIOBoard1CH1_M2 setStateList on off
#
defmod EIOBoard1CH2_M2 MQTT2_DEVICE
attr EIOBoard1CH2_M2 IODev MQTT2Client
attr EIOBoard1CH2_M2 comment Channel 1 for EIOBoard1_M2, see also EIOBoard1_M2_CH2
attr EIOBoard1CH2_M2 genericDeviceType switch
attr EIOBoard1CH2_M2 model 8channel_ethernet_board_split
attr EIOBoard1CH2_M2 readingList /Home/EIOBoard1state:.* { $EVENT =~ /output...[01]([01])[01]{6}/;;  my $newstate = $1 ? "on" : "off";; $newstate eq ReadingsVal($NAME,"state","unknown") ? undef : {"state"=>$newstate} }
attr EIOBoard1CH2_M2 room 82.MQTT
attr EIOBoard1CH2_M2 setList on:noArg /Home/EIOBoard1ctr setr=x1xxxxxx\
off:noArg /Home/EIOBoard1ctr setr=x0xxxxxx
attr EIOBoard1CH2_M2 setStateList on off
#
defmod EIOBoard1CH3_M2 MQTT2_DEVICE
attr EIOBoard1CH3_M2 IODev MQTT2Client
attr EIOBoard1CH3_M2 comment Channel 1 for EIOBoard1_M2, see also EIOBoard1_M2_CH2
attr EIOBoard1CH3_M2 genericDeviceType switch
attr EIOBoard1CH3_M2 model 8channel_ethernet_board_split
attr EIOBoard1CH3_M2 readingList /Home/EIOBoard1state:.* { $EVENT =~ /output...[01]{2}([01])[01]{5}/;;  my $newstate = $1 ? "on" : "off";; $newstate eq ReadingsVal($NAME,"state","unknown") ? undef : {"state"=>$newstate} }
attr EIOBoard1CH3_M2 room 82.MQTT
attr EIOBoard1CH3_M2 setList on:noArg /Home/EIOBoard1ctr setr=xx1xxxxx\
off:noArg /Home/EIOBoard1ctr setr=xx0xxxxx
attr EIOBoard1CH3_M2 setStateList on off
#
defmod EIOBoard1CH4_M2 MQTT2_DEVICE
attr EIOBoard1CH4_M2 IODev MQTT2Client
attr EIOBoard1CH4_M2 comment Channel 1 for EIOBoard1_M2, see also EIOBoard1_M2_CH2
attr EIOBoard1CH4_M2 genericDeviceType switch
attr EIOBoard1CH4_M2 model 8channel_ethernet_board_split
attr EIOBoard1CH4_M2 readingList /Home/EIOBoard1state:.* { $EVENT =~ /output...[01]{3}([01])[01]{4}/;;  my $newstate = $1 ? "on" : "off";; $newstate eq ReadingsVal($NAME,"state","unknown") ? undef : {"state"=>$newstate} }
attr EIOBoard1CH4_M2 room 82.MQTT
attr EIOBoard1CH4_M2 setList on:noArg /Home/EIOBoard1ctr setr=xxx1xxxx\
off:noArg /Home/EIOBoard1ctr setr=xxx0xxxx
attr EIOBoard1CH4_M2 setStateList on off
#
defmod EIOBoard1CH5_M2 MQTT2_DEVICE
attr EIOBoard1CH5_M2 IODev MQTT2Client
attr EIOBoard1CH5_M2 comment Channel 1 for EIOBoard1_M2, see also EIOBoard1_M2_CH2
attr EIOBoard1CH5_M2 genericDeviceType switch
attr EIOBoard1CH5_M2 model 8channel_ethernet_board_split
attr EIOBoard1CH5_M2 readingList /Home/EIOBoard1state:.* { $EVENT =~ /output...[01]{4}([01])[01]{3}/;;  my $newstate = $1 ? "on" : "off";; $newstate eq ReadingsVal($NAME,"state","unknown") ? undef : {"state"=>$newstate} }
attr EIOBoard1CH5_M2 room 82.MQTT
attr EIOBoard1CH5_M2 setList on:noArg /Home/EIOBoard1ctr setr=xxxx1xxx\
off:noArg /Home/EIOBoard1ctr setr=xxxx0xxx
attr EIOBoard1CH5_M2 setStateList on off
#
defmod EIOBoard1CH6_M2 MQTT2_DEVICE
attr EIOBoard1CH6_M2 IODev MQTT2Client
attr EIOBoard1CH6_M2 comment Channel 1 for EIOBoard1_M2, see also EIOBoard1_M2_CH2
attr EIOBoard1CH6_M2 genericDeviceType switch
attr EIOBoard1CH6_M2 model 8channel_ethernet_board_split
attr EIOBoard1CH6_M2 readingList /Home/EIOBoard1state:.* { $EVENT =~ /output...[01]{5}([01])[01]{2}/;;  my $newstate = $1 ? "on" : "off";; $newstate eq ReadingsVal($NAME,"state","unknown") ? undef : {"state"=>$newstate} }
attr EIOBoard1CH6_M2 room 82.MQTT
attr EIOBoard1CH6_M2 setList on:noArg /Home/EIOBoard1ctr setr=xxxxx1xx\
off:noArg /Home/EIOBoard1ctr setr=xxxxx0xx
attr EIOBoard1CH6_M2 setStateList on off
#
defmod EIOBoard1CH7_M2 MQTT2_DEVICE
attr EIOBoard1CH7_M2 IODev MQTT2Client
attr EIOBoard1CH7_M2 comment Channel 1 for EIOBoard1_M2, see also EIOBoard1_M2_CH2
attr EIOBoard1CH7_M2 genericDeviceType switch
attr EIOBoard1CH7_M2 model 8channel_ethernet_board_split
attr EIOBoard1CH7_M2 readingList /Home/EIOBoard1state:.* { $EVENT =~ /output...[01]{6}([01])[01]/;;  my $newstate = $1 ? "on" : "off";; $newstate eq ReadingsVal($NAME,"state","unknown") ? undef : {"state"=>$newstate} }
attr EIOBoard1CH7_M2 room 82.MQTT
attr EIOBoard1CH7_M2 setList on:noArg /Home/EIOBoard1ctr setr=xxxxxx1x\
off:noArg /Home/EIOBoard1ctr setr=xxxxxx0x
attr EIOBoard1CH7_M2 setStateList on off
#
defmod EIOBoard1CH8_M2 MQTT2_DEVICE
attr EIOBoard1CH8_M2 IODev MQTT2Client
attr EIOBoard1CH8_M2 comment Channel 1 for EIOBoard1_M2, see also EIOBoard1_M2_CH2
attr EIOBoard1CH8_M2 genericDeviceType switch
attr EIOBoard1CH8_M2 model 8channel_ethernet_board_split
attr EIOBoard1CH8_M2 readingList /Home/EIOBoard1state:.* { $EVENT =~ /output...[01]{7}([01])/;;  my $newstate = $1 ? "on" : "off";; $newstate eq ReadingsVal($NAME,"state","unknown") ? undef : {"state"=>$newstate} }
attr EIOBoard1CH8_M2 room 82.MQTT
attr EIOBoard1CH8_M2 setList on:noArg /Home/EIOBoard1ctr setr=xxxxxxx1\
off:noArg /Home/EIOBoard1ctr setr=xxxxxxx0
attr EIOBoard1CH8_M2 setStateList on off


Hier noch die nun nicht genutzte Variante zur Steuerung. Vielleicht kann`s jemand gebrauchen.

Die Steuerung über http mit z.B.:
set EIOBoard1_http RelaisOn 5
set EIOBoard1_http RelaisOn 3
set EIOBoard1_http RelaisOff 5

defmod EIOBoard1_http HTTPMOD http://admin:12345678@192.168.48.122 45
attr EIOBoard1_http userattr set0Name set0URL set1Name set1URL
attr EIOBoard1_http enableControlSet 1
attr EIOBoard1_http room 59.Test
attr EIOBoard1_http set0Name RelaisOn
attr EIOBoard1_http set0URL http://admin:12345678@192.168.48.122/relay.cgi?relayon$val=on
attr EIOBoard1_http set1Name RelaisOff
attr EIOBoard1_http set1URL http://admin:12345678@192.168.48.122/relay.cgi?relayoff$val=off


Und ein MQTT2 Device, dass den Status aller Relais in einzelnen Readings anzeigt:

defmod EIOBoard1v1_M2 MQTT2_DEVICE
attr EIOBoard1v1_M2 IODev MQTT2Client
attr EIOBoard1v1_M2 disable 0
attr EIOBoard1v1_M2 jsonMap input:0
attr EIOBoard1v1_M2 readingList /Home/EIOBoard1state:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr EIOBoard1v1_M2 room 59.Test,82.MQTT
attr EIOBoard1v1_M2 setList out2:0,1  {my $output = ReadingsVal($NAME,"output","00000000");; my $start = substr $output, 1;; my $end = substr $output, -6;; ( "/Home/EIOBoard1ctr setr=$start" . $EVTPART1 . $end)}
attr EIOBoard1v1_M2 userReadings out1:output:.* { $event =~ m/(.).......$/;;ReadingsVal($name,"out1",undef) ne $1 ? $1 : undef }, out2:output:.* { $event =~ m/.(.)......$/;;;;ReadingsVal($name,"out2",undef) ne $1 ? $1 : undef }, out3:output:.* { $event =~ m/..(.).....$/;;ReadingsVal($name,"out3",undef) ne $1 ? $1 : undef }, out4:output:.* { $event =~ m/...(.)....$/;;ReadingsVal($name,"out4",undef) ne $1 ? $1 : undef }, out5:output:.* { $event =~ m/....(.)...$/;;ReadingsVal($name,"out5",undef) ne $1 ? $1 : undef }, out6:output:.* { $event =~ m/.....(.)..$/;;ReadingsVal($name,"out6",undef) ne $1 ? $1 : undef }, out7:output:.* { $event =~ m/......(.).$/;;ReadingsVal($name,"out7",undef) ne $1 ? $1 : undef }, out8:output:.* { $event =~ m/.......(.)$/;;ReadingsVal($name,"out8",undef) ne $1 ? $1 : undef }


Vielen Dank für die Unterstützung!
Titel: Antw:8fach I/O Board mit MQTT2_Device
Beitrag von: Beta-User am 17 Februar 2020, 12:16:53
Danke schon mal für die Rückmeldung...

Das mit den "xx" ist ja auch elegant, hatte ich irgendwie überlesen; dann übernehmen wir das :) .

Ich nehme mal an, es ist ok, wenn ich deine Fotos ins Wiki packe? Dazu wäre es noch gut, wir hätten eine Foto mit geschlossenem Gehäuse?

Dann hier mal die Vorschläge für die attrTemplates:
name:8channel_ethernet_board_split
filter:TYPE=MQTT2_DEVICE
desc:For use with some 8-channel ethernet boards. Might be usefull for other stuff based on TI's <a href="https://www.waveshare.com/wiki/DP83848_Ethernet_Board">DP83848 ethernet chipset</a>.<br>NOTE: First experimental version, for configuration and to contribute see <a href="https://forum.fhem.de/index.php/topic,107536.msg1016379.html#msg1016379">Forum Thread</a>. You have to configure MQTT first, might be found under http://<device-ip-adress>/zm.cgi!
order:W_03
par:STATETOPIC;Command topic prefix;{ AttrVal("DEVICE","readingList","") =~ m,([^:/]+state)/, ? $1 : undef }
par:CMNDTOPIC;Command topic prefix;{ AttrVal("DEVICE","readingList","") =~ m,([^:/]+)state/, ? ${1}ctr : undef }
par:ICON;ICON as set, defaults to on;{ AttrVal("DEVICE","icon","on") }
attr DEVICE icon ICON
attr DEVICE model 8channel_ethernet_board_split
attr DEVICE setStateList on off
set DEVICE attrTemplate mqtt2_speech_recognition_type_switch
deletereading -q DEVICE (?!associatedWith).*
copy DEVICE DEVICE_CH2
copy DEVICE DEVICE_CH3
copy DEVICE DEVICE_CH4
copy DEVICE DEVICE_CH5
copy DEVICE DEVICE_CH6
copy DEVICE DEVICE_CH7
copy DEVICE DEVICE_CH8
setreading DEVICE associatedWith DEVICE_CH1,DEVICE_CH2,DEVICE_CH3,DEVICE_CH4,DEVICE_CH5,DEVICE_CH6,DEVICE_CH7,DEVICE_CH8
setreading DEVICE_CH2 associatedWith DEVICE,DEVICE_CH1,DEVICE_CH3,DEVICE_CH4,DEVICE_CH5,DEVICE_CH6,DEVICE_CH7,DEVICE_CH8
setreading DEVICE_CH3 associatedWith DEVICE,DEVICE_CH1,DEVICE_CH2,DEVICE_CH4,DEVICE_CH5,DEVICE_CH6,DEVICE_CH7,DEVICE_CH8
setreading DEVICE_CH4 associatedWith DEVICE,DEVICE_CH1,DEVICE_CH2,DEVICE_CH3,DEVICE_CH5,DEVICE_CH6,DEVICE_CH7,DEVICE_CH8
setreading DEVICE_CH5 associatedWith DEVICE,DEVICE_CH1,DEVICE_CH2,DEVICE_CH3,DEVICE_CH4,DEVICE_CH6,DEVICE_CH7,DEVICE_CH8
setreading DEVICE_CH6 associatedWith DEVICE,DEVICE_CH1,DEVICE_CH2,DEVICE_CH3,DEVICE_CH4,DEVICE_CH5,DEVICE_CH7,DEVICE_CH8
setreading DEVICE_CH7 associatedWith DEVICE,DEVICE_CH1,DEVICE_CH2,DEVICE_CH3,DEVICE_CH4,DEVICE_CH5,DEVICE_CH6,DEVICE_CH8
setreading DEVICE_CH8 associatedWith DEVICE,DEVICE_CH1,DEVICE_CH2,DEVICE_CH3,DEVICE_CH4,DEVICE_CH5,DEVICE_CH6,DEVICE_CH7
attr DEVICE_CH2 readingList STATETOPIC { $EVENT =~ /output...[01]([01])[01]{6}/;;  my $newstate = $1 ? "on" : "off";; $newstate eq ReadingsVal($NAME,"state","unknown") ? undef : {"state"=>$newstate} }
attr DEVICE_CH3 readingList STATETOPIC { $EVENT =~ /output...[01]{2}([01])[01]{5}/;;  my $newstate = $1 ? "on" : "off";; $newstate eq ReadingsVal($NAME,"state","unknown") ? undef : {"state"=>$newstate} }
attr DEVICE_CH4 readingList STATETOPIC { $EVENT =~ /output...[01]{3}([01])[01]{4}/;;  my $newstate = $1 ? "on" : "off";; $newstate eq ReadingsVal($NAME,"state","unknown") ? undef : {"state"=>$newstate} }
attr DEVICE_CH5 readingList STATETOPIC { $EVENT =~ /output...[01]{4}([01])[01]{3}/;;  my $newstate = $1 ? "on" : "off";; $newstate eq ReadingsVal($NAME,"state","unknown") ? undef : {"state"=>$newstate} }
attr DEVICE_CH6 readingList STATETOPIC { $EVENT =~ /output...[01]{5}([01])[01]{2}/;;  my $newstate = $1 ? "on" : "off";; $newstate eq ReadingsVal($NAME,"state","unknown") ? undef : {"state"=>$newstate} }
attr DEVICE_CH7 readingList STATETOPIC { $EVENT =~ /output...[01]{6}([01])[01]/;;  my $newstate = $1 ? "on" : "off";; $newstate eq ReadingsVal($NAME,"state","unknown") ? undef : {"state"=>$newstate} }
attr DEVICE_CH8 readingList { $EVENT =~ /output...[01]{7}([01])/;;  my $newstate = $1 ? "on" : "off";; $newstate eq ReadingsVal($NAME,"state","unknown") ? undef : {"state"=>$newstate} }
attr DEVICE setList on:noArg CMNDTOPIC setr=1xxxxxxx\
  off:noArg CMNDTOPIC setr=0xxxxxxx
attr DEVICE_CH2 setList on:noArg CMNDTOPIC setr=x1xxxxxx\
  off:noArg CMNDTOPIC setr=x0xxxxxx
attr DEVICE_CH3 setList on:noArg CMNDTOPIC setr=xx1xxxxx\
  off:noArg CMNDTOPIC setr=xx0xxxxx
attr DEVICE_CH4 setList on:noArg CMNDTOPIC setr=xxx1xxxx\
  off:noArg CMNDTOPIC setr=xxx0xxxx
attr DEVICE_CH5 setList on:noArg CMNDTOPIC setr=xxxx1xxx\
  off:noArg CMNDTOPIC setr=xxxx0xxx
attr DEVICE_CH6 setList on:noArg CMNDTOPIC setr=xxxxx1xx\
  off:noArg CMNDTOPIC setr=xxxxx0xx
attr DEVICE_CH7 setList on:noArg CMNDTOPIC setr=xxxxxx1x\
  off:noArg CMNDTOPIC setr=xxxxxx0x
attr DEVICE_CH8 setList on:noArg CMNDTOPIC setr=xxxxxxx1\
  off:noArg CMNDTOPIC setr=xxxxxxx0
attr DEVICE readingList STATETOPIC
setreading DEVICE associatedWith DEVICE_CH1,DEVICE_CH2,DEVICE_CH3,DEVICE_CH4,DEVICE_CH5,DEVICE_CH6,DEVICE_CH7,DEVICE_CH8


name:8channel_ethernet_board_unified
filter:TYPE=MQTT2_DEVICE
desc:For use with some 8-channel ethernet boards. Might be usefull for other stuff based on TI's <a href="https://www.waveshare.com/wiki/DP83848_Ethernet_Board">DP83848 ethernet chipset</a>.<br>NOTE: First experimental version, for configuration and to contribute see <a href="https://forum.fhem.de/index.php/topic,107536.msg1016379.html#msg1016379">Forum Thread</a>. You have to configure MQTT first, might be found under http://<device-ip-adress>/zm.cgi!
order:W_03a
par:STATETOPIC;Command topic prefix;{ AttrVal("DEVICE","readingList","") =~ m,([^:/]+state)/, ? $1 : undef }
par:CMNDTOPIC;Command topic prefix;{ AttrVal("DEVICE","readingList","") =~ m,([^:/]+)state/, ? ${1}ctr : undef }
par:ICON;ICON as set, defaults to on;{ AttrVal("DEVICE","icon","on") }
attr DEVICE icon ICON
attr DEVICE setStateList on off
attr DEVICE jsonMap input:0
attr DEVICE readingList STATETOPIC:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr DEVICE userReadings out1:output:.* { $event =~ m/(.).......$/;;ReadingsVal($name,"out1",undef) ne $1 ? $1 : undef }, out2:output:.* { $event =~ m/.(.)......$/;;;;ReadingsVal($name,"out2",undef) ne $1 ? $1 : undef }, out3:output:.* { $event =~ m/..(.).....$/;;ReadingsVal($name,"out3",undef) ne $1 ? $1 : undef }, out4:output:.* { $event =~ m/...(.)....$/;;ReadingsVal($name,"out4",undef) ne $1 ? $1 : undef }, out5:output:.* { $event =~ m/....(.)...$/;;ReadingsVal($name,"out5",undef) ne $1 ? $1 : undef }, out6:output:.* { $event =~ m/.....(.)..$/;;ReadingsVal($name,"out6",undef) ne $1 ? $1 : undef }, out7:output:.* { $event =~ m/......(.).$/;;ReadingsVal($name,"out7",undef) ne $1 ? $1 : undef }, out8:output:.* { $event =~ m/.......(.)$/;;ReadingsVal($name,"out8",undef) ne $1 ? $1 : undef }
attr DEVICE setList out1:0,1 {my $command = $EVTPART1."xxxxxxx";; "CMNDTOPIC setr=$command"}\
  out2:0,1 {my $command = "x".$EVTPART1."xxxxxx";; "CMNDTOPIC setr=$command"}\
  out3:0,1 {my $command = "xx".$EVTPART1."xxxxx";; "CMNDTOPIC setr=$command"}\
  out4:0,1 {my $command = "xxx".$EVTPART1."xxxx";; "CMNDTOPIC setr=$command"}\
  out5:0,1 {my $command = "xxxx".$EVTPART1."xxx";; "CMNDTOPIC setr=$command"}\
  out6:0,1 {my $command = "xxxxx".$EVTPART1."xx";; "CMNDTOPIC setr=$command"}\
  out7:0,1 {my $command = "xxxxxx".$EVTPART1."x";; "CMNDTOPIC setr=$command"}\
  out8:0,1 {"CMNDTOPIC setr=xxxxxxx".$EVTPART1}
attr DEVICE model 8channel_ethernet_board_unified


(Testen wäre klasse...)

Titel: Antw:8fach I/O Board mit MQTT2_Device
Beitrag von: Beta-User am 18 Februar 2020, 17:14:20
Die attrTemplate sind u.a. seit eben im svn. Bitte daher ggf. die Test-File entfernen, könnte sonst zu Problemen mit namensgleichen templates kommen.

Habe auch einen ganz kurzen Abschnitt ins Wiki reingebastelt; das mit dem Kabel hat halt was...

Jetzt würde mich nur interessieren, ob andere Geräte (mit dem Chipsatz?) auch "MQTT sprechen"; es gibt da ja noch diverse andere Angebote auf gängigen Marktplätzen (meistens aber dann ohne Gehäuse).
Titel: Antw:8fach I/O Board mit MQTT2_Device
Beitrag von: cberl am 18 Februar 2020, 19:31:30
Beim set Board attrTemplate ... bekomme ich:

Error checking template regexp: syntax error at (eval 28349358) line 1, near "${1}ctr "

Ich mache Morgen mal ein Update und teste das dann nochmal.

1000 Dank für Deine Arbeit, so ist das eine coole Lösung!
Parallel zu dem Teil habe ich mit einem Arduino Mega/Wiznet und MQTT Sketch gearbeitet - Funktioniert auch zuverlässig. Dieses Board ist aber halt kompakter. Die MCU ist ja ein frei programmierbarer Cortex M3, da kann wohl nur getestet werden, was der Chinese implementiert hat :-)


Hier mal noch zwei Bilder fürs Wiki.
Titel: Antw:8fach I/O Board mit MQTT2_Device
Beitrag von: Beta-User am 19 Februar 2020, 07:33:12
Danke für die Bilder - bemaßt ist super! - und die Hinweise, was noch nicht paßt mit den regex; sollte jetzt (hoffentlich vollst....) gefixt sein.

Klar ist das mit der firmware auf der MCU eine Wundertüte, aber vielleicht findet ja jemand raus, was man mit "ISP1" anfangen kann - sieht mir nach einer SPI-Programmierschnittstelle aus, aber ich bin da kein Experte, und wenn die firmware nicht nach Hause telefoniert (?), sollte das auch so gehen...

Danke auch für die nette Rückmeldung und die Geduld beim Rausarbeiten unserer Lösung  :) .

Titel: Antw:8fach I/O Board mit MQTT2_Device
Beitrag von: cberl am 19 Februar 2020, 18:34:55
Hi, das sieht schon sehr gut aus.

Bei: set EIOBoard2 attrTemplate 8channel_ethernet_board_split ...
bekomme ich aber ein: EIOBoard2 attr readingList: more parameters needed

Das bezieht sich wohl auf CH1, da fehlt noch das readingList:

defmod EIOBoard2 MQTT2_DEVICE
attr EIOBoard2 IODev MQTT2Client
attr EIOBoard2 genericDeviceType switch
attr EIOBoard2 icon on
attr EIOBoard2 model 8channel_ethernet_board_split
attr EIOBoard2 room 82.MQTT
attr EIOBoard2 setList on:noArg /Home/EIOBoard1ctr setr=1xxxxxxx\
  off:noArg /Home/EIOBoard1ctr setr=0xxxxxxx
attr EIOBoard2 setStateList on off


Die anderen Devices sind ok.
Titel: Antw:8fach I/O Board mit MQTT2_Device
Beitrag von: Beta-User am 20 Februar 2020, 07:41:16
Thx, ist jetzt hoffentlich auch vollends gefixt... ::)
Titel: Antw:8fach I/O Board mit MQTT2_Device
Beitrag von: cberl am 21 Februar 2020, 22:35:56
Passt. THX!
Titel: Antw:8fach I/O Board mit MQTT2_Device
Beitrag von: dobiwan am 23 Juli 2021, 11:41:14
Hallo zusammen,
ich habe ein dingtain Zwei Kanal Netzwerk Relay. Ich konnte das Relay über MQTT erfolgreich einbinden. Leider bekomme ich das mit dem Schalten nicht hin.
Mit meiner Set_List bekomme ich zwar die Möglichkeit zwischen On und Off umzuschalten, aber irgendwie bekomme ich nicht das Ergebnis , dass ich möchte.

Readingslist
myBroker:/dingtian/relay1225/out/r1:.* r1
myBroker:/dingtian/relay1225/out/r2:.* r2
myBroker:/dingtian/relay1225/out/i1:.* i1
myBroker:/dingtian/relay1225/out/i2:.* i2
myBroker:/dingtian/relay1225/out/relay1:.* { json2nameValue($EVENT) }
myBroker:/dingtian/relay1225/out/relay2:.* { json2nameValue($EVENT) }
myBroker:/dingtian/relay1225/out/input1:.* { json2nameValue($EVENT) }
myBroker:/dingtian/relay1225/out/input2:.* { json2nameValue($EVENT) }
myBroker:/dingtian/relay1225/out/ip:.* ip
myBroker:/dingtian/relay1225/out/sn:.* sn
myBroker:/dingtian/relay1225/out/mac:.* mac
myBroker:/dingtian/relay1225/out/input_cnt:.* input_cnt
myBroker:/dingtian/relay1225/out/relay_cnt:.* relay_cnt
myBroker:Advantech/DEVNAME/ctl/do1:.* { json2nameValue($EVENT) }
myBroker:/dingtian/relay1225/in/r1:.* r1
myBroker:cmnd/dingtian/relay1225/in/r1:.* r1
myBroker:cmnd/dingtian/relay1225/in/r2:.* r2

attr Digitain_2_Channel_Relay setList out1:on,off cmnd/dingtian/relay1225/in/r1 ON, off cmnd/dingtian/relay1225/in/r1 OFF\
out2:on,off cmnd/dingtian/relay1225/in/r2 ON, off cmnd/dingtian/relay1225/in/r2 OFF
Titel: Antw:8fach I/O Board mit MQTT2_Device
Beitrag von: Beta-User am 23 Juli 2021, 12:19:11
Bitte dazu einen neuen Thread aufmachen und die "was soll ich liefern?"-Threads beachten (einschl. der Formatierungshinweise (v.a. Code-Tags)). Die Hard- und Firmware scheint komplett unterschiedlich zu sein, das paßt mit ziemlicher Sicherheit nicht zusammen.

Dann: Das sieht mir nach MQTT2_CLIENT als IO aus, und die readingList ist vermutlich durch irgendwelche Versuche ergänzt worden?

Tipp: Ggf. das Teil erst mal über einen MQTT2_SERVER verbinden, dann bekommt man auch "subscriptions" angezeigt (falls (!?!) es keine Doku dazu gibt.