Ich habe einfach Taster verwendet, das kann der Shelly auch. Die Dinger sind wirklich gut und günstig.
NEWS
Modbus Relais mit Modbus Adapter - aber wie?
-
Re: Frage zu Modbus
Hallo zusammen,
ich habe hier schon die Suche bemüht, allerdings bin ich blöd oder stehe auf dem Schlauch:Habe ein 16-Kanal Relais mit Modbus-unterstützung gekauft. In freudiger Erwartung, es über ioBroker und den Modbus-Adapter steuern zu können.
Der Hersteller hat mir auch eine ausführliche Doku mitgeliefert, hier ein kleiner Auszug:9600 Baud ,8N1 Slave ID: 1 Beispiele: Channel 1 Open : 01 06 00 01 01 00 D9 9A Channel 1 Close : 01 06 00 01 02 00 D9 6A Channel 1 Toggle: 01 06 00 01 03 00 D8 FA Channel 1 Latch: 01 06 00 01 04 00 DA CA Channel 2 Open : 01 06 00 02 01 00 29 9A Channel 2 Close : 01 06 00 02 02 00 29 6A Channel 2 Toggle :01 06 00 02 03 00 28 FA Channel 2 Latch : 01 06 00 02 04 00 2A CA ...
Die Logik von Modbus bzw. wie die Befehle für das Relais aufgebaut sind erschließen sich mir schon.
Byte 1: Addresse (Slave ID)
Byte 2: "Typ" (06 für Command?)
Byte 3&4: Register-Adresse
Byte 5: Kommando (01=öffnen, 02=schließen, ...)
Byte 6: Delay
Byte 7&8: CRC ChecksumNur:
Wo soll ich das im Modbus-Adapter eintragen?
Diskrete Ausgänge? Holding Register?
Als Adresse einfach die 1?
Und wie schalte ich dann die Relais?bitte einmal für Dumme
Danke vielmals vorab!
-
also, ich habe vieles probiert, vieles gelesen.
ich bekomme das Relais auch über das Tool "ModbusPoll" angesprochen (über Windows PC und meinen RS485-to-USB Adapter).Aber ich kann der Doku des Adapters im github leider wirklich nicht die notwendige Info entnehmen, wo/wie die Steuerbefehle im Adapter eingetragen werden müssten.
@Bluefox, kannst Du mir vielleicht hier einfach einen Schubs in die richtige Richtung geben?
Oder gibt es jemanden, der ebenfalls ein Relais über den Adapter steuert und einen Screenshot machen könnte.
Ich glaube, viel mehr brauch ich nicht..Danke!
-
Hier habe ich mal die Doku hochgeladen, die vom Verkäufer mitgeleifert wurde.
Mitsamt Video, wie er das über "Modbus Poll" steuert. genau so habe ich es auch zum Laufen gebracht.
Aber - wie gesagt - ich habe immer noch keinen blassen Schimmer, wie ich die Steuerbefehle in den Adapter eintragen sollhttps://www.dropbox.com/sh/mx7wn5hpnwfv940/AABeftE_QS4KWlnBJV-2_nAza?dl=0
-
@kanonidom Hallo Kanonidom,
dann sind wir jetzt zu zweit. Stehe vor dem gleichen Problem wie du. Habe ein ähnliches Relais und bekomme es einfach nicht über Modbus und IOBroker angesprochen.
Das einzige Erfolgserlebnis war ein "false" unter Objects-> Status für das erste Relais. Ansonsten bricht die Verbindung immer ab:modbus.0 2021-04-09 19:28:50.709 warn (19917) Poll error count: 1 code: {"err":"timeout","timeout":50000}
modbus.0 2021-04-09 19:28:50.698 error (19917) Client in error state.
modbus.0 2021-04-09 19:28:50.695 error (19917) Request timed out.
modbus.0 2021-04-09 19:28:50.690 warn (19917) Error: undefined
modbus.0 2021-04-09 19:28:00.660 info (19917) Connected to slaveMeine bisherigen Erkenntnisse sind:
Diskrete Eingänge sind die, die du nicht hast. Da kann man einen Taster anschließen (Lichtschalter als Taster o.ä.)
Diskrete Ausgänge: Dort werden die Adressen der Relais eingetragen. Der digitale Teil sozusagen, es gibt nur 1 oder 0
Eingangsregister und Holding sind für analoge Geräte gedacht. Temperaturmessung, Spannung etc.In den Anleitungen stehen die Adressen etc. im HEX- Code, IOBroker arbeitet aber mit Dezimalzahlen, d.h. du musst die Werte erst umrechen.
Schalten kann man das Relay dann später in den Objekten, in denen dann alle stehen sollten (wenn wir mal soweit wären)
Auf den "False" Zustand bin ich damit gekommen

Schalten läßt es sich trotzdem nicht, war aber schonmal ein Erfolgserlebnis. Falls es mit "Switch" nicht klappt, versuch mal "State"OK, ich habe einen kleinen Vorteil. Ich habe folgendes Relais genommen: link text
Das hat zusätzlich noch einen Ethernet- Anschluss mit MQTT und das funktioniert einwandfrei.
Im Internet habe ich auch einige Posts gefunden, in denen geschrieben wurde, dass diese Relais nicht dem Modbus- Standard entsprechen und nur ein paar RS485- Befehle verstehen. Auf der anderen Seite funktionieren sie ja mit den anderen Testprogrammen wie sie sollen.Viele Grüße
HenningPS: Ich hoffe nur, das jetzt jemand mit viel Ahnung alles zerreist was ich geschrieben habe und die Lösung für unser Problem schreibt
-
Also diese Platine habe ich jetzt nicht aber habe schon viel mit Modbus rum gebastelt.
Bei dem Adapter ist es wichtig die richtige adresse zu haben wenn es die falsche ist wird der rot und geht danach nur noch mit neustart wieder. Leider muss man die genaue adresse haben das ist aber etwas modbus Spezifiches. Was sich da zusammen setzt gerade bei serial sehr tricki.
Ich würde es über die Holding register versuchen. Es kann sein das die platine mit einer Deziaml zahl arbeitet sprich. 1= eingang 1, 2=eingang 2, 3=eingang 1 und 2 geschaltet, usw. dafür habe ich mal ein script gebaut um das umzurechnen. Byte-rechner.json nach dem was ich in der anleitung überflogen habe könnte das so passen. Also über ein Holdin register und den den rest mit der ganzzahl. -
@thabam Hallo ThaBam, es hat funktioniert. Nachdem ich die Adressen 40001- 400018 als State angelegt habe, wurden einige Werte angezeigt. Viele sind auf 0 aber der wichtigste war dabei. Bei meinem Teil wird im Register 40002 addiert:
Relais 1 on= 1
Relais 2 on=2
Relais 3 on= 4
Relais 1+3 on, 2 off = 5Dummerweise kann aber nur der Status abgefragt werden. Versucht man zu schreiben, kommt die Fehlermeldung "(16900) Cannot write [1]: {"err":"timeout","timeout":5000}". In den Einstellungen auf "Do not use Write multiple Registers" kann zwar angeklickt werden, ist aber nach dem Abspeichern und erneuten Aufrufen wieder weg. Der Tip aus link text hat auch nicht funktioniert.
Vielen Dank für die Hilfe, so hatte ich wenigstens ein Erfolgserlebnis mit Modbus. Du schreibst, du hast schon viel damit rumgebastelt. Läuft bei dir etwas mit Modbus oder war es zu instabil o.ä.?
[0_1618077144263_Bildschirmfoto von 2021-04-10 19-37-58.png](Uploading 100%)