ModBus TCP Interface

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Omen
Beiträge: 10
Registriert: 26.02.2019, 11:07
Hat sich bedankt: 2 Mal

Re: ModBus TCP Interface

Beitrag von Omen » 23.10.2023, 12:04

Alle funktioniert Perfekt 1000 Dank an drose28357
Zuletzt geändert von Omen am 04.01.2024, 14:39, insgesamt 3-mal geändert.

Commander1971
Beiträge: 54
Registriert: 25.07.2019, 11:36
Danksagung erhalten: 4 Mal

Re: ModBus TCP Interface

Beitrag von Commander1971 » 08.11.2023, 17:57

Hallo zusammen, hat den jetzt schon jemand den EM24 in die Homematic Welt eingebunden, für mich wäre die bezogene Leistung nur interessant und wäre so nett, mir das zu erklären?

Commander1971
Beiträge: 54
Registriert: 25.07.2019, 11:36
Danksagung erhalten: 4 Mal

Re: ModBus TCP Interface

Beitrag von Commander1971 » 09.12.2023, 09:25

Für alle die auch auf eine Lösung gehofft haben für den EM24, hab es mit Unterstützung gelöst, leider ist das Ergebnis nur bis zu einen bestimmten Leistungswert aktuell, nach ca. 3000Watt Bezug, ändert sich der Wert ins negative und wird kleiner, vielleicht hat jemand eine Idee voran das liegt.
Hier mein Skript dazu.

Code: Alles auswählen

var tst1;
tst1 = tst1/10.0;
! Lesen des Wertes 
dom.GetObject("CUxD.CUX2801001:16.CMD_SETS").State("tclsh /usr/local/addons/modbus/modbus_interface.tcl xxx.xxx.xxx.xxx 502 1 04 40 1");
dom.GetObject("CUxD.CUX2801001:16.CMD_QUERY_RET").State(1);
! Zuweisen in Variable
tst1 = dom.GetObject("CUxD.CUX2801001:16.CMD_RETS").State();
tst1 = (tst1.ToFloat())/10.0;
! Schreiben in Systemvariable formatiert (Zählerstand)
dom.GetObject('E3DC_Haus').State(tst1);
! Ausgabe
WriteLine(dom.GetObject("E3DC_Haus").Value());

Pit Sunny
Beiträge: 2
Registriert: 23.12.2023, 16:54
System: CCU

Re: ModBus TCP Interface

Beitrag von Pit Sunny » 23.12.2023, 17:19

Hallo zusammen,

ich habe heute die CUX Version des "tclsh /usr/local/addons/modbus/modbus_interface.tcl" installiert.
Die tlc files liegen im beschriebenen Ordner.
Wenn ich folgendes Script starte ...

Code: Alles auswählen

WriteLine("Hallo Welt");
var tst1;
! Lesen des Wertes 
dom.GetObject("CUxD.CUX2801006:16.CMD_SETS").State("tclsh /usr/local/addons/modbus/modbus_interface.tcl 192.168.179.54 502 302 01 1 1");
WriteLine("...1");
dom.GetObject("CUxD.CUX2801006:16.CMD_QUERY_RET").State(1);
WriteLine("...2");
! Zuweisen in Variable
tst1 = dom.GetObject("CUxD.CUX2801006:16.CMD_RETS").State();
WriteLine("...3" + tst1);
! Schreiben in Systemvariable formatiert (lGetOut ist ein Sting)
dom.GetObject('E3DC_Haus').State(tst1);
WriteLine("...4");
! Ausgabe
WriteLine("E3DC_Haus:  " + tst1);

bekomme ich folgendes Ergebnis:

Code: Alles auswählen

Hallo Welt!
...1
...2
...3
...4
E3DC_Haus: 
Das heisst es werden alle Befehle ausgeführt. Aber leider steht in der var tst1 nur ein Leerstring :(

Ich vrmute folgende 2 Ursachen:
a) Mein vorhandener CUxD.CUX2801006 ist ein einfacher Switch - muß ich hier ein anderes Gerät anlegen ? Wenn ja welches ?
b) Ich habe bei den tcl parametern noch einen Fehler (192.168.179.54 502 302 01 1 1
302 ist die Startadresse vn meinem Modbus Device
01 ist die Anzahl der Register
1 ist die Länge (aber welche ??)
1 ist der Wert (aber welcher ??)

Mit dem QModMaster bekomme ich bei den Einstellungen 302 1 Dec Dec einen valide Rückgabewert.

Hat jemand eine Idee ob meine Fehlerquelle a) und oder b) oder noch etwas anders ist ?

Würde mich über eine Tip sehr freuen !

Pit Sunny
Zuletzt geändert von alchy am 23.12.2023, 17:37, insgesamt 1-mal geändert.
Grund: Code in Codetags posten

Balisto
Beiträge: 50
Registriert: 14.03.2016, 08:11
Hat sich bedankt: 10 Mal
Danksagung erhalten: 1 Mal

Re: ModBus TCP Interface

Beitrag von Balisto » 24.12.2023, 08:02

Anstatt die 302 musst du erst mal sagen was du willst.
Auslesen oder etwas schreiben.
Nehme anstatt die 302 erstmal 04 read input registers.
Danach die Adresse des Parameters und dann die länge.
Schau dir mal den Aufbau der Abfrage auf Seite 1 an.
Du hast die Werte vertauscht.
Gruß

WolfHenk
Beiträge: 14
Registriert: 29.07.2019, 09:44
Hat sich bedankt: 1 Mal

Re: ModBus TCP Interface

Beitrag von WolfHenk » 02.01.2024, 23:00

ok, ich wieder...

ich lese nun sechs Register in folgender Art:

Code: Alles auswählen

  system.Exec("tclsh /usr/local/addons/modbus/modbus_interface.tcl 192.168.7.123 502 255 4 4 1",&lGetOut,&lGetErr);
 ! lGetOut ist ein STRING
   prozent = (lGetOut.ToFloat()/100); ! macht ein FLOAT draus und dividiert /100 damit die Zahl stimmt
   Write(" prozent = "); WriteLine(prozent);
   dom.GetObject('Aussentemperatur').State(prozent);  ! schiebts in die Variable...
   Write("Aussentemperatur.State() = ");WriteLine(dom.GetObject('Aussentemperatur').State());
Da ich die Werte von einem eigenen Gerät und nicht von einem Umrichter oder so lese, kann ich seriell mitlesen und feststellen, dass die Verbindung nicht offen bleibt.

Code: Alles auswählen

22:54:06.184 -> client disconnected
22:54:06.251 -> new client
22:54:06.416 -> client disconnected
22:54:06.483 -> new client
22:54:06.682 -> client disconnected
22:54:06.748 -> new client
22:54:06.947 -> client disconnected
22:54:06.980 -> new client
22:54:07.179 -> client disconnected
22:54:50.687 -> ledprg
22:54:50.720 -> LeseSensoren
22:54:50.720 -> Lueftung IST 0
22:54:50.720 -> Sensor Innen:  Luftfeuchtigkeit: 37.90%  Temperatur: 23.70°C    Taupunkt: 8.51°C  
22:54:50.720 -> Sensor Aussen: Luftfeuchtigkeit: 37.90%  Temperatur: 23.50°C    Taupunkt: 8.33°C  
Die Testsoftware macht die Verbindung auf und liest...alle 500 mSec oder sogar noch mehr... und die Verbindung bleibt offen.
Sie sendet also nicht nach jedem Lesen einen Disconnect, sondern erst, wenn ich diese Verbindung schließe oder der Timeout zuschlägt.

Das TCL-Script baut aber nach jedem Lesen eines Wertes die Client-Verbindung wieder ab.

Ich habe 6 Register und zwei Inputs zu lesen.

Ich möchte eigentlich, dass die Verbindung offen bleibt, solange der Input

Code: Alles auswählen

 system.Exec("tclsh /usr/local/addons/modbus/modbus_interface.tcl 192.168.7.123 502 255 2 1 1",&lGetOut,&lGetErr);
   Write("LED = ");WriteLine(lGetOut);
ordentlich alle dreissig Sekunden seinen Zustand wechselt. Dafür ist er als WatchdogFeed auch gemacht.
Hat wer dazu eine Idee oder am Ende sogar ein Beispiel?

Balisto
Beiträge: 50
Registriert: 14.03.2016, 08:11
Hat sich bedankt: 10 Mal
Danksagung erhalten: 1 Mal

Re: ModBus TCP Interface

Beitrag von Balisto » 02.02.2024, 18:01

Bei mir funtioniert es nun auch....juhu...nach langem hin und her.

Für die die evtl. das gleiche Problem haben.....

Anbindung einer Warwasserwärmepumpe Ochsner genius 333 über modbus an die HM.

Ich hatte einen modbus to tcp von waveshare. Hat mit dem PC und auch mit der Handy app funtioniert.
Lesen wie schreiben, aber aus der homematic raus und rein, absolut nichts.

Habe jetzt einen ELFIN11 verbaut und warum auch immer alles läuft auf anhieb.

Evtl. irgendeine Einstellung die ich nicht gefunden habe oder falsch eingestellt habe.
Das einzige was ich anders eingestellt habe ist die ip und der port...

HMNutzer
Beiträge: 708
Registriert: 24.10.2016, 17:18
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 150 Mal
Danksagung erhalten: 22 Mal

Re: ModBus TCP Interface

Beitrag von HMNutzer » 02.02.2024, 19:23

Welchen genau hast Du gekauft? Hab schon genug Geld für Versuche ausgegeben…
Viele Grüße

Martin

RaspberryMatic auf ESXi 7 mit RPI-RF-MOD/HB-RF-ETH. Div. HM und HMIP Funkkomponenten im Holzständerhaus

Matsch
Beiträge: 5452
Registriert: 30.05.2019, 11:37
System: Alternative CCU (auf Basis OCCU)
Wohnort: Chemnitz
Hat sich bedankt: 116 Mal
Danksagung erhalten: 743 Mal

Re: ModBus TCP Interface

Beitrag von Matsch » 02.02.2024, 19:32

Ich verwende auch ELFIN11, klappt wunderbar. Zudem gibt es eine extrem umfangreiche Doku dazu - auf der Herstellerseite.

Balisto
Beiträge: 50
Registriert: 14.03.2016, 08:11
Hat sich bedankt: 10 Mal
Danksagung erhalten: 1 Mal

Re: ModBus TCP Interface

Beitrag von Balisto » 02.02.2024, 20:57

hardware: HF Elfin-EE11A Serial Server IP Function RS485 Serial Port to Network Modbus TPC

https://www.ebay.de/itm/255316342613?var=555295722357

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“