Hallo,
ich möchte gerne mit meiner Homematic CCU2 über Scripte und das Modbus_interface.tcl Werte wie Speicherbeladung, Einspeisung bzw. Netzbezug und Erzeugung auslesen.
302 _sum/EssSoc
303 _sum/EssActivePower
315 _sum/GridActivePower
327 _sum/ProductionActivePower
415 _sum/EssDischargePower
Die Inspiration dazu habe ich aus folgendem Homematic-Forum Beitrag: ModBus TCP Interface - HomeMatic-Forum / FHZ-Forum
Mit dem QModMaster funktioniert das über den PC einwandfrei.
Wenn ich folgendes Script in der Homematic teste erhalte ich jedoch keinen Wert zurück:
string lGetOut;
string lGetErr;
WriteLine("Hallo Welt!");
WriteLine("Fenecon: " + (0 + lGetOut));
WriteLine("Error: " + (0 + lGetErr));
! Lesen des Wertes
system.Exec("tclsh /usr/local/addons/modbus/modbus_interface.tcl 192.168.179.54 502 302 01 4 1",&lGetOut,&lGetErr);
! Schreiben in Systemvariable formatiert (lGetOut ist ein Sting, die Ausgabe dann ein Zahlenwert)
dom.GetObject('Fenecon').State(0 + lGetOut);
! Ausgabe
WriteLine("Error: " + (0 + lGetErr));
WriteLine("Fenecon: " + (0 + lGetOut));
Folgendes Ergebnis bekomme ich im Ausgabe Screen in Homematic:
Hallo Welt!
Fenecon: 0
Error: 0
Error: 0
Fenecon: 0
Das bedeutet das der Aufruf erfolgreich durchgeführt wird, aber in die Variable lGetOut bzw. der String Fenecon auf 0 bleiben.
Mit dem QModMaster kommt beim Funktionscode 302 60 herraus was 60% Speicherbeladung entspicht.
Ich fürchte mein Problem liegt bei den Parametern des Aufrufes der Funktion:
Nach IP Adresse 192.168.179.54 und port 502 folgende die parameter
302 Functionscode
01 Number Registers
4 Länge ?
1 Wert ?
Bei Länge und Wert weiss ich leider nicht welcher Doku ich entnehmen kann wie die berechnet werden. Das muß vom Type unit16, float32, float64 sow wie von der Einstellung DEX, HEX, BIN, float abhängen.
Aber wie kommt man hier auf die richtigen Übergabe Parameter ?
Gibt es jemand der damit bereits Erfahrung hat un mir weiterhelfen kann ?