HmIP-ESI per Script auslesen - Versuch scheitert
Moderator: Co-Administratoren
-
- Beiträge: 94
- Registriert: 08.10.2013, 14:44
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 1 Mal
Re: HmIP-ESI per Script auslesen - Versuch scheitert
Will das Thema mal wieder angehen und muss es noch einmal ansprechen:
Hat jemand hier im Forum eine Idee, wie man die Messdaten (Zählerstand und Verbrauchsdaten) vom HmIP-ESI-Gas in Variable schreiben und somit auslesen kann?
Würde mich über eine Lösung sehr freuen - vorab ein Danke ins Forum.
Hat jemand hier im Forum eine Idee, wie man die Messdaten (Zählerstand und Verbrauchsdaten) vom HmIP-ESI-Gas in Variable schreiben und somit auslesen kann?
Würde mich über eine Lösung sehr freuen - vorab ein Danke ins Forum.
LG jemue
--------------------------------------------------------------------
CCU3 mit RaspberryMatic
--------------------------------------------------------------------
CCU3 mit RaspberryMatic
- Baxxy
- Beiträge: 10933
- Registriert: 18.12.2018, 15:45
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 617 Mal
- Danksagung erhalten: 2253 Mal
Re: HmIP-ESI per Script auslesen - Versuch scheitert
Ja, besser mitarbeiten.
Grüße... Baxxy
- Raspberry Pi 4 als Homematic-Zentrale - Tipps und Informationen
- Analysescript für genutzte Funk-Adressen, Funkmodul-Hardware und Zentralen Hardware
- NANO CUL 868MHz - Stick zum AskSin Analyzer XS umflashen (Anleitung für ArduinoIDE unter Windows)
- Firmware Updates für IP-Aktoren / Sensoren... Info's, Tipps und Sonstiges
- CCU funkt nicht - CarrierSense (CS) Probleme erkennen und lösen
-
- Beiträge: 3
- Registriert: 19.04.2024, 11:00
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 2 Mal
Re: HmIP-ESI per Script auslesen - Versuch scheitert
Hallo zusammen,
nage gerade an demselben Problem. Versuche über ein Script den Gaszählerstand auszulesen. Liefert aber leider "0" zurück. Die Idee ist einfach den Zählerstand an eine Systemvariable zu übergeben und dann im Programm damit weiter zu arbeiten.
Hat jemand eine Idee was da klemmt? Danke vorab.
nage gerade an demselben Problem. Versuche über ein Script den Gaszählerstand auszulesen. Liefert aber leider "0" zurück. Die Idee ist einfach den Zählerstand an eine Systemvariable zu übergeben und dann im Programm damit weiter zu arbeiten.
Code: Alles auswählen
var srcobj = dom.GetObject("HmIP-RF.xxxxxxxxxxxx:2.GAS_VOLUME").Value();
var dstobj = dom.GetObject("Gaszaehler");
var srcval = srcobj.Value();
if (srcval != dstobj.Value()) {
dstobj.State(srcval);
}
Zuletzt geändert von alchy am 21.04.2024, 09:10, insgesamt 1-mal geändert.
Grund: Code in Codetags posten
Grund: Code in Codetags posten
- Baxxy
- Beiträge: 10933
- Registriert: 18.12.2018, 15:45
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 617 Mal
- Danksagung erhalten: 2253 Mal
Re: HmIP-ESI per Script auslesen - Versuch scheitert
Ja, deine Scriptfähigkeiten sind wohl etwas eingerostet.
Code: Alles auswählen
object srcobj = dom.GetObject("HmIP-RF.xxxxxxxxxxxx:2.GAS_VOLUME");
object dstobj = dom.GetObject (ID_SYSTEM_VARIABLES).Get ("Gaszaehler");
var srcval = srcobj.Value();
if (srcval != dstobj.Value()) {
dstobj.State(srcval);
}
- der entspricht nie dem realen Zählerstand der Messstelle
- er ist flüchtig, beginnt also nach Batteriewechsel bei 0
Die zum Zähler gehörende systeminterne SysVar ist da doch viel besser geeignet.
Grüße... Baxxy
- Raspberry Pi 4 als Homematic-Zentrale - Tipps und Informationen
- Analysescript für genutzte Funk-Adressen, Funkmodul-Hardware und Zentralen Hardware
- NANO CUL 868MHz - Stick zum AskSin Analyzer XS umflashen (Anleitung für ArduinoIDE unter Windows)
- Firmware Updates für IP-Aktoren / Sensoren... Info's, Tipps und Sonstiges
- CCU funkt nicht - CarrierSense (CS) Probleme erkennen und lösen
-
- Beiträge: 14220
- Registriert: 08.05.2013, 23:33
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Nordwürttemberg
- Hat sich bedankt: 593 Mal
- Danksagung erhalten: 1510 Mal
Re: HmIP-ESI per Script auslesen - Versuch scheitert
Weil sie eben nichts von der Datenhaltung im Hintergund wissen, weil das System nur benutzt, aber nicht verstanden wird. Und weil die Daten beim Gerät dargestellt werden. Bei vielen Dingen kommt man mit "ich lese keine Anleitungen, ich drücke solange Knöpfe, bis es funktioniert" weiter. Bei Homematic kommt man mit dieser Einstellung nun mal schnell an Grenzen.
Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
-
- Beiträge: 3
- Registriert: 19.04.2024, 11:00
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 2 Mal
Re: HmIP-ESI per Script auslesen - Versuch scheitert
Hallo Baxxy,
danke, das hilft weiter. Eingerostet nehme ich als Kompliment.
Blutiger Anfänger passt besser. Ich versuche mich gerade an das Thema heranzutasten.
danke, das hilft weiter. Eingerostet nehme ich als Kompliment.
Blutiger Anfänger passt besser. Ich versuche mich gerade an das Thema heranzutasten.
-
- Beiträge: 268
- Registriert: 13.05.2020, 17:56
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 48 Mal
- Danksagung erhalten: 23 Mal
Re: HmIP-ESI per Script auslesen - Versuch scheitert
möchte mich hier mal mit anhängen. Auch ich möchte gern die Werte "Verbrauch Heute, Verbrauch Gestern, Verbrauch 7 Tage und Verbrauch 30 Tage in SYstemvariablen schreiben lassen. Klappt aber bei mir auch nicht. Wie könnte ich die SV anlegen und was muss dann drin stehen? Vielen Dank schon mal.
Die SV sollten dann so heißen
GVerbrauchH
GVerbrauchG
GVerbrauch7
GVerbrauch30
Das interne Programm sieht so aus wie auf den Bild und das dazugehörige Script so
Die SV sollten dann so heißen
GVerbrauchH
GVerbrauchG
GVerbrauch7
GVerbrauch30
Das interne Programm sieht so aus wie auf den Bild und das dazugehörige Script so
Code: Alles auswählen
object chn = dom.GetObject('46331');
object oEnergyCounter = chn.DPByControl('POWERMETER_PSM.GAS_VOLUME');
object oSysVarEnergyCounter = dom.GetObject('svEnergyCounter_46331_003FA2698AB51A:2');
object oSysVarEnergyCounterOldVal = dom.GetObject('svEnergyCounterOldVal_46331');
real devVal = oEnergyCounter.Value();
real devValMax = oEnergyCounter.ValueMax();
real oldDevVal = oSysVarEnergyCounterOldVal.Value();
real diffVal = 0.0;
real sysVarVal = oSysVarEnergyCounter.Value();
integer tmp_devVal = (devVal.ToString().ToFloat() * 1000).ToInteger();
integer tmp_oldDevVal = (oldDevVal.ToString().ToFloat() * 1000).ToInteger();
real energy0 = chn.MetaData('energy0').ToFloat();
if (tmp_oldDevVal > tmp_devVal) {
! An device overflow has occured
! diffVal = (devVal + devValMax) - oldDevVal;
} else {
diffVal = devVal - oldDevVal;
}
if (tmp_devVal != 0) {oSysVarEnergyCounterOldVal.State(devVal);
oSysVarEnergyCounter.State(sysVarVal + diffVal);
! Save todays energy consumption
chn.MetaData('energy0',energy0 + diffVal);
}
- Baxxy
- Beiträge: 10933
- Registriert: 18.12.2018, 15:45
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 617 Mal
- Danksagung erhalten: 2253 Mal
Re: HmIP-ESI per Script auslesen - Versuch scheitert
Damit kann ich arbeiten, danke.magnum1795 hat geschrieben: ↑22.04.2024, 16:53Das interne Programm sieht so aus wie auf den Bild und das dazugehörige Script so
Eine Idee habe ich schon, wenn's fertig ist gebe ich bescheid.
Grüße... Baxxy
- Raspberry Pi 4 als Homematic-Zentrale - Tipps und Informationen
- Analysescript für genutzte Funk-Adressen, Funkmodul-Hardware und Zentralen Hardware
- NANO CUL 868MHz - Stick zum AskSin Analyzer XS umflashen (Anleitung für ArduinoIDE unter Windows)
- Firmware Updates für IP-Aktoren / Sensoren... Info's, Tipps und Sonstiges
- CCU funkt nicht - CarrierSense (CS) Probleme erkennen und lösen
- Baxxy
- Beiträge: 10933
- Registriert: 18.12.2018, 15:45
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 617 Mal
- Danksagung erhalten: 2253 Mal
Re: HmIP-ESI per Script auslesen - Versuch scheitert
Entwurf fertig, siehe:
viewtopic.php?f=31&t=82352
viewtopic.php?f=31&t=82352
Grüße... Baxxy
- Raspberry Pi 4 als Homematic-Zentrale - Tipps und Informationen
- Analysescript für genutzte Funk-Adressen, Funkmodul-Hardware und Zentralen Hardware
- NANO CUL 868MHz - Stick zum AskSin Analyzer XS umflashen (Anleitung für ArduinoIDE unter Windows)
- Firmware Updates für IP-Aktoren / Sensoren... Info's, Tipps und Sonstiges
- CCU funkt nicht - CarrierSense (CS) Probleme erkennen und lösen
-
- Beiträge: 268
- Registriert: 13.05.2020, 17:56
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 48 Mal
- Danksagung erhalten: 23 Mal
Re: HmIP-ESI per Script auslesen - Versuch scheitert
@ Baxxy
erstmal einen großen Dank für deine Mühen. Habe mal meine Scripts so angepasst wie du geschrieben hast in der HoTo. Leider werden aber die SV (noch) nicht beschrieben.
mein Script sieht jetzt so aus
müssen denn die Gänzefüße mit rein oder nicht? ('46331') und Sorry für meine Dummen Fragen, verstehe aber nichts vom Scripten
erstmal einen großen Dank für deine Mühen. Habe mal meine Scripts so angepasst wie du geschrieben hast in der HoTo. Leider werden aber die SV (noch) nicht beschrieben.
mein Script sieht jetzt so aus
Code: Alles auswählen
object chn = dom.GetObject('46331');
object oEnergyCounter = chn.DPByControl('POWERMETER_PSM.GAS_VOLUME');
object oSysVarEnergyCounter = dom.GetObject('svEnergyCounter_46331_003FA2698AB51A:2');
object oSysVarEnergyCounterOldVal = dom.GetObject('svEnergyCounterOldVal_46331');
real devVal = oEnergyCounter.Value();
real devValMax = oEnergyCounter.ValueMax();
real oldDevVal = oSysVarEnergyCounterOldVal.Value();
real diffVal = 0.0;
real sysVarVal = oSysVarEnergyCounter.Value();
integer tmp_devVal = (devVal.ToString().ToFloat() * 1000).ToInteger();
integer tmp_oldDevVal = (oldDevVal.ToString().ToFloat() * 1000).ToInteger();
real energy0 = chn.MetaData('energy0').ToFloat();
if (tmp_oldDevVal > tmp_devVal) {
! An device overflow has occured
! diffVal = (devVal + devValMax) - oldDevVal;
} else {
diffVal = devVal - oldDevVal;
}
if (tmp_devVal != 0) {oSysVarEnergyCounterOldVal.State(devVal);
oSysVarEnergyCounter.State(sysVarVal + diffVal);
! Save todays energy consumption
chn.MetaData('energy0',energy0 + diffVal);
object oOwnZaehlerstand_SysVar = dom.GetObject ('46331').Get ("Gaszähler - Zählerstand");
object oOwnVerbrauchHeuteSysVar = dom.GetObject ('46331').Get ("Gaszähler - Verbrauch heute");
if (oOwnZaehlerstand_SysVar) { oOwnZaehlerstand_SysVar.State(sysVarVal + diffVal); }
if (oOwnVerbrauchHeuteSysVar) { oOwnVerbrauchHeuteSysVar.State(energy0 + diffVal); }
}
Code: Alles auswählen
integer loop = 0;
string last30Days = '';
string val;
real energy7 = 0.0;
real energy30 = 0.0;
object chn = dom.GetObject('46331');
! Retrieve energyCounter30Days
string energyCounter30Days = chn.MetaData('energyCounter30Days');
! Retrieve todays value
real energy0 = chn.MetaData('energy0').ToFloat();
! Move the values of the array energyCounter30Days one position to the right
foreach (val, energyCounter30Days.Split(',')) {
if (loop <= 28 ) {
last30Days = last30Days + val + ',';
} else {
if (loop == 29) {
last30Days = last30Days + val;
}
}
loop = loop + 1;
}
! Set the first position of the array energyCounter30Days to todays value.
last30Days = energy0.ToString(1) + ',' + last30Days;
!Store energyCounter30Days as meta data
chn.MetaData('energyCounter30Days', last30Days);
! Set the meta data of energy1 (yesterday), energy7 (week) and energy30 (months)
loop = 0;
foreach (val, last30Days.Split(',')) {
val = val.ToFloat();
if (loop == 0) {chn.MetaData('energy1', val);}
if (loop <= 6) {
energy7 = energy7 + val;
}
energy30 = energy30 + val;
loop = loop +1;
}
object oOwnVerbrauchHeuteSysVar = dom.GetObject ('46331').Get ("Gaszähler - Verbrauch heute");
object oOwnVerbrauchGesternSysVar = dom.GetObject ('46331').Get ("Gaszähler - Verbrauch gestern");
object oOwnVerbrauchLetzte7SysVar = dom.GetObject ('46331').Get ("Gaszähler - Verbrauch letzte 7 Tage");
object oOwnVerbrauchLetzte30SysVar = dom.GetObject ('46331').Get ("Gaszähler - Verbrauch letzte 30 Tage");
if (oOwnVerbrauchLetzte7SysVar) { oOwnVerbrauchLetzte7SysVar.State(energy7); }
if (oOwnVerbrauchLetzte30SysVar) { oOwnVerbrauchLetzte30SysVar.State(energy30); }
if (oOwnVerbrauchGesternSysVar) { oOwnVerbrauchGesternSysVar.State(energy0); }
if (oOwnVerbrauchHeuteSysVar) { oOwnVerbrauchHeuteSysVar.State(0.0); }
chn.MetaData('energy7', energy7);
chn.MetaData('energy30', energy30);
! Reset energy0 (today) - a new day begins
chn.MetaData('energy0', 0.0);