Digitain Realay

Begonnen von dobiwan, 31 Mai 2021, 10:53:52

Vorheriges Thema - Nächstes Thema

dobiwan

Hallo zusammen,

ich habe mir dieses 2 Kanal Relay gekauft. Mein Mosquitto hat die Verbindung hergestellt.

https://de.aliexpress.com/item/1005001729638858.html?spm=a2g0s.9042311.0.0.27424c4dXi60G1

Mein Broker ist so eingerichtet:

defmod myBroker MQTT2_CLIENT 192.168.xxx.xxx:1883
attr myBroker autocreate simple
attr myBroker room System

setstate myBroker opened
setstate myBroker 2021-05-31 10:07:49 state opened


Das Relay hat sich jetzt per Autocreate neu erzeugt.
Wie kann ich jetzt die Relays schalten ?

defmod Digitain_2_Channel_Relay MQTT2_DEVICE myBroker
attr Digitain_2_Channel_Relay readingList 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) }
attr Digitain_2_Channel_Relay room Netzwerk_Aktoren

setstate Digitain_2_Channel_Relay 2021-05-31 10:11:08 IODev myBroker
setstate Digitain_2_Channel_Relay 2021-05-31 10:51:38 i1 OFF
setstate Digitain_2_Channel_Relay 2021-05-31 10:51:38 i2 OFF
setstate Digitain_2_Channel_Relay 2021-05-31 10:51:38 idx 2
setstate Digitain_2_Channel_Relay 2021-05-31 10:51:38 input_cnt 2
setstate Digitain_2_Channel_Relay 2021-05-31 10:51:38 ip 192.168.178.8
setstate Digitain_2_Channel_Relay 2021-05-31 10:51:38 mac bc:34:88:00:04:1a
setstate Digitain_2_Channel_Relay 2021-05-31 10:51:38 r1 OFF
setstate Digitain_2_Channel_Relay 2021-05-31 10:51:38 r2 OFF
setstate Digitain_2_Channel_Relay 2021-05-31 10:51:38 relay_cnt 2
setstate Digitain_2_Channel_Relay 2021-05-31 10:51:38 sn 1225
setstate Digitain_2_Channel_Relay 2021-05-31 10:51:38 status HIGH
setstate Digitain_2_Channel_Relay 2021-05-31 10:25:13 v true


Ich hoffe ihr könnt mir helfen.

rudolfkoenig

Von der verlinkten Seite kann man die SDK runterladen, da drin ist ein user_manual_en.pdf zu finden, was wiederum einen Abschnitt ueber MQTT enthaelt. Im MQTT Verzeichnis gibt es eine Datei MQTT_sub_and_pub.txt mit einigen konkreten Beispielen.

Beta-User

#2
(Rudi war mal wieder schneller)
Vorbemerkung:
Sowas ist tendenziell viel einfacher (wenn man keine Doku hat... oder findet, Danke Rudi), wenn man MQTT2_SERVER als Broker verwendet; damit sieht man nämlich auch die subscriptions (also "worauf" der Client (=die Gegenstelle) denn hört/Befehle erwartet).

Habe jetzt mal ein paar Dinge geraten:
defmod Digitain_2_Channel_Relay MQTT2_DEVICE myBroker
attr Digitain_2_Channel_Relay readingList myBroker:/dingtian/relay1225/out/r1:.* {{state => lc($EVENT)}}\
myBroker:/dingtian/relay1225/out/r2:.* r2\
myBroker:/dingtian/relay1225/out/i1:.* i1\
myBroker:/dingtian/relay1225/out/i2:.* i2\
myBroker:/dingtian/relay1225/out/relay1:.* {}\
myBroker:/dingtian/relay1225/out/relay2:.* {}\
myBroker:/dingtian/relay1225/out/input1:.* {}\
myBroker:/dingtian/relay1225/out/input2:.* {}\
myBroker:/dingtian/relay1225/out/ip:.* ip\
myBroker:/dingtian/relay1225/out/sn:.* sn\
myBroker:/dingtian/relay1225/out/mac:.* mac\
myBroker:/dingtian/relay1225/out/input_cnt:.* {}\
myBroker:/dingtian/relay1225/out/relay_cnt:.* {}
attr Digitain_2_Channel_Relay room Netzwerk_Aktoren

attr Digitain_2_Channel_Relay setList on /dingtian/relay1225/in/r1 ON\
off /dingtian/relay1225/in/r1 OFF\
relay2:ON,OFF /dingtian/relay1225/in/r2 $EVTPART1


Geraten sind:
- Der "Advantech"-Pfad war irgendein unbeabsichtigter Test/Rest?
- wer auf "out" sendet, hört auf "in"... (sehr unsicher!)
- die JSON-Pfade sind nur Doppelungen der Klartext-Topics (=> näheres würde die Analyse des MQTT-Verkehrs ergeben) => daher schlicht keine Auswertung.

Interessant wäre: sind die Inputs unabhängig von den Outputs?

Ansonsten würde ich noch dazu raten, Kanal 2 in ein eigenes M2D zu verfrachten, damit auch SetExtensions etc. stressfrei funktionieren.
Hoffe, damit kommst du erst mal weiter.

EDIT: Code nochmal geändert (erste Zeile rL).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

dobiwan

Vielen Dank euch beiden.
Werde mein Glück versuchen.
Möchte auch noch ESP8266 mit Sensoren und Aktoren einbinden.

Zitat von: Beta-User am 31 Mai 2021, 11:09:30
(Rudi war mal wieder schneller)
Vorbemerkung:
Sowas ist tendenziell viel einfacher (wenn man keine Doku hat... oder findet, Danke Rudi), wenn man MQTT2_SERVER als Broker verwendet; damit sieht man nämlich auch die subscriptions (also "worauf" der Client (=die Gegenstelle) denn hört/Befehle erwartet).

Habe jetzt mal ein paar Dinge geraten:
defmod Digitain_2_Channel_Relay MQTT2_DEVICE myBroker
attr Digitain_2_Channel_Relay readingList myBroker:/dingtian/relay1225/out/r1:.* {state => lc($EVENT)}\
myBroker:/dingtian/relay1225/out/r2:.* r2\
myBroker:/dingtian/relay1225/out/i1:.* i1\
myBroker:/dingtian/relay1225/out/i2:.* i2\
myBroker:/dingtian/relay1225/out/relay1:.* {}\
myBroker:/dingtian/relay1225/out/relay2:.* {}\
myBroker:/dingtian/relay1225/out/input1:.* {}\
myBroker:/dingtian/relay1225/out/input2:.* {}\
myBroker:/dingtian/relay1225/out/ip:.* ip\
myBroker:/dingtian/relay1225/out/sn:.* sn\
myBroker:/dingtian/relay1225/out/mac:.* mac\
myBroker:/dingtian/relay1225/out/input_cnt:.* {}\
myBroker:/dingtian/relay1225/out/relay_cnt:.* {}
attr Digitain_2_Channel_Relay room Netzwerk_Aktoren

attr Digitain_2_Channel_Relay setList on /dingtian/relay1225/in/r1 ON\
off /dingtian/relay1225/in/r1 OFF\
relay2:ON,OFF /dingtian/relay1225/in/r2 $EVTPART1


Geraten sind:
- Der "Advantech"-Pfad war irgendein unbeabsichtigter Test/Rest?
- wer auf "out" sendet, hört auf "in"... (sehr unsicher!)
- die JSON-Pfade sind nur Doppelungen der Klartext-Topics (=> näheres würde die Analyse des MQTT-Verkehrs ergeben) => daher schlicht keine Auswertung.

Interessant wäre: sind die Inputs unabhängig von den Outputs?

Ansonsten würde ich noch dazu raten, Kanal 2 in ein eigenes M2D zu verfrachten, damit auch SetExtensions etc. stressfrei funktionieren.
Hoffe, damit kommst du erst mal weiter.

Beta-User

Na dann mal viel Erfolg (auch wenn ich die ESP8266 "na ja" finde, aber das ist ein anderes Thema).

Leider hat sich das überschnitten: in der ersten Zeile der rL braucht es vermutlich doppelte Klammern, siehe meinen Edit im vorherigen Post.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files