WebUI/ReGaHss Beta für CCU2 & RaspberryMatic (2.29.x)

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Benutzeravatar
Herbert_Testmann
Beiträge: 11062
Registriert: 17.01.2009, 11:30
Danksagung erhalten: 7 Mal

Re: WebUI/ReGaHss Betaversion für CCU2 (2.27.x) verfügbar

Beitrag von Herbert_Testmann » 27.05.2017, 10:57

jmaus hat geschrieben: Hoffe du hast mich nicht missverstanden. In dem Ausgabefenster von "Script testen" taucht natürlich kein Fehler auf. Du musst natürlich parallel dazu immer das syslog anschauen und Script testen nur immer dazu nutzen das Script aufzurufen und dann zu schauen ob im syslog immer noch eine Fehlermeldung erzeugt wird.
Ja, in der Tat, das hatte ich missverstanden. Die Hoffnung war, dass auch die "Script testen" Funktion einen Fehler ausgibt, wenn die RaGa das Script bemängelt.
Dann kann ich auch den komfortableren Script Executor nehmen und parallel das SysLog besichtigen.

Kostet nur alles immer so unendlich viel Zeit, weil die geeigneten Tools fehlen :(

Wenn ich nicht die ganzen SysVar umbenennen müsste bzw. die historischen Daten verliere, könnte ich auch gleich Dein Stromzähler Script nehmen. Es geht ja nur darum, einen fortlaufenden Zählerstand (incl. Überlauf) und den Tagesverbrauch darzustellen.
---
Dieses Schreiben wurde maschinell erstellt und ist ohne Unterschrift gültig

Benutzeravatar
Herbert_Testmann
Beiträge: 11062
Registriert: 17.01.2009, 11:30
Danksagung erhalten: 7 Mal

Re: WebUI/ReGaHss Betaversion für CCU2 (2.27.x) verfügbar

Beitrag von Herbert_Testmann » 27.05.2017, 10:58

PS gibt es einen Script Befehl, der die Abarbeitung beendet? So was wie
EXIT
??
---
Dieses Schreiben wurde maschinell erstellt und ist ohne Unterschrift gültig

Benutzeravatar
klana
Beiträge: 1087
Registriert: 08.02.2015, 08:37
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 54 Mal
Danksagung erhalten: 26 Mal

Re: WebUI/ReGaHss Betaversion für CCU2 (2.27.x) verfügbar

Beitrag von klana » 27.05.2017, 11:10

Hallo Jens,

einen hab ich noch...:-)

LED16 Anzeige funktioniert nicht mehr so wirklich.
Es treten immer wieder Fehler durch das einfache Script auf sit ich die aktuellste Beta drauf habe.
Außerdem brauchen die Fensterkontakte zum Senden seeehhrr lange und bei jedem 2. endet das in einer roten Anzeige (also erst Orange für 5-6 Sek. und dann rot oder grün)
Vorher habe diese nur einmal kurz Orange und dann sofort grün aufgeblinkt.

Gruß
Klaus

Hier das WebUi Programm
Bildschirmfoto 2017-05-27 um 11.06.56.jpg

Hier das Script

Code: Alles auswählen

string stdout;
string stderr;
object objSA;
string wer = "LED_Auto";
string vSaName = "";
integer vSaStatus = 0;
string  vKanal = "";
string  SNAnz1 = "JEQ0220780";   ! Hier kommt die Seriennummer eurer Statusanzeige rein 
string  SNAnz2 = "MEQ1516227";  ! Hier kommt die Seriennummer eurer Statusanzeige rein

objSA = dom.GetObject("$src$"); ! Welche Variable hat das Script ausgeloest? 
if (objSA) {
    vSaName = objSA.Name().ToString();        ! Name
    vSaStatus = objSA.State().ToString(0);      ! Inhalt als String ohne Nachkommastellen

    ! Die letzten beiden Stellen sind die Kanalnummer 
    vKanal = vSaName.Substr(vSaName.Length()-2,2 );     ! Ziel Aktor:Kanal Status setzen


    ! ToInteger().ToString() eliminiert nur die evtl. führende 0
    ! LED Panel 1
    dom.GetObject("BidCos-RF."+ SNAnz1 +":"+vKanal.ToInteger().ToString()+".LED_STATUS").State(vSaStatus);    
    ! LED Panel 2
    dom.GetObject("BidCos-RF."+ SNAnz2 +":"+vKanal.ToInteger().ToString()+".LED_STATUS").State(vSaStatus);
}
und hier der Syslog

Code: Alles auswählen

May 27 08:29:29 homematic-ccu2 user.err rfd: HSSParameter::SetValue() 1 Put failed
May 27 08:29:29 homematic-ccu2 local0.err ReGaHss: Error: IseXmlRpc::CallXmlrpcMethod: execute result isFault; method =setValue Params = {"MEQ1516227:4","LED_STATUS",1} result= [faultCode:-1,faultString:"Failure"] [../Platform/DOM/iseXmlRpc.cpp (2641)]
May 27 08:29:29 homematic-ccu2 local0.err ReGaHss: Error: IseXmlRpc::CallSetValue: CallXmlrpcMethod failed [../Platform/DOM/iseXmlRpc.cpp (1525)]
May 27 08:29:29 homematic-ccu2 local0.err ReGaHss: Error: IseHssDP::WriteValue: CallSetValue failed; address = MEQ1516227:4 [../Platform/DOM/iseDOMdpHSS.cpp (77)]
May 27 08:29:31 homematic-ccu2 user.debug script: [ALCHY ALLINScript START]
May 27 08:29:31 homematic-ccu2 user.debug script: [ALCHY ALLINScript ENDE]
May 27 08:29:32 homematic-ccu2 user.debug script: [ALCHY ALLINScript START]
May 27 08:29:32 homematic-ccu2 user.debug script: [ALCHY ALLINScript ENDE]
May 27 08:29:36 homematic-ccu2 user.debug script: [ALCHY ALLINScript START]
May 27 08:29:37 homematic-ccu2 user.debug script: [ALCHY ALLINScript ENDE]
May 27 08:41:18 homematic-ccu2 user.err rfd: HSSParameter::SetValue() "1,1,108000,17,17,17,17,17,17,17,17,17,18" Put failed
May 27 08:41:18 homematic-ccu2 local0.err ReGaHss: Error: IseXmlRpc::CallXmlrpcMethod: execute result isFault; method =setValue Params = {"NEQ0772219:1","SUBMIT","1,1,108000,17,17,17,17,17,17,17,17,17,18"} result= [faultCode:-1,faultString:"Failure"] [../Platform/DOM/iseXmlRp
May 27 08:41:18 homematic-ccu2 local0.err ReGaHss: Error: IseXmlRpc::CallSetValue: CallXmlrpcMethod failed [../Platform/DOM/iseXmlRpc.cpp (1525)]
May 27 08:41:18 homematic-ccu2 local0.err ReGaHss: Error: IseHssDP::WriteValue: CallSetValue failed; address = NEQ0772219:1 [../Platform/DOM/iseDOMdpHSS.cpp (77)]
May 27 08:41:20 homematic-ccu2 user.debug script: [ALCHY ALLINScript START]
May 27 08:41:20 homematic-ccu2 user.debug script: [ALCHY ALLINScript ENDE]
May 27 08:41:21 homematic-ccu2 user.debug script: [ALCHY ALLINScript START]
May 27 08:41:22 homematic-ccu2 user.debug script: [ALCHY ALLINScript ENDE]
May 27 09:54:22 homematic-ccu2 user.err rfd: HSSParameter::SetValue() 1 Put failed
May 27 09:54:23 homematic-ccu2 local0.err ReGaHss: Error: IseXmlRpc::CallXmlrpcMethod: execute result isFault; method =setValue Params = {"JEQ0220780:9","LED_STATUS",1} result= [faultCode:-1,faultString:"Failure"] [../Platform/DOM/iseXmlRpc.cpp (2641)]
May 27 09:54:23 homematic-ccu2 local0.err ReGaHss: Error: IseXmlRpc::CallSetValue: CallXmlrpcMethod failed [../Platform/DOM/iseXmlRpc.cpp (1525)]
May 27 09:54:23 homematic-ccu2 local0.err ReGaHss: Error: IseHssDP::WriteValue: CallSetValue failed; address = JEQ0220780:9 [../Platform/DOM/iseDOMdpHSS.cpp (77)]
May 27 09:54:24 homematic-ccu2 user.debug script: [ALCHY ALLINScript START]
May 27 09:54:25 homematic-ccu2 user.debug script: [ALCHY ALLINScript ENDE]
May 27 09:54:26 homematic-ccu2 user.debug script: [ALCHY ALLINScript START]
May 27 09:54:27 homematic-ccu2 user.debug script: [ALCHY ALLINScript ENDE]
May 27 09:54:52 homematic-ccu2 user.err rfd: HSSParameter::SetValue() 2 Put failed
May 27 09:54:52 homematic-ccu2 local0.err ReGaHss: Error: IseXmlRpc::CallXmlrpcMethod: execute result isFault; method =setValue Params = {"MEQ1516227:4","LED_STATUS",2} result= [faultCode:-1,faultString:"Failure"] [../Platform/DOM/iseXmlRpc.cpp (2641)]
May 27 09:54:52 homematic-ccu2 local0.err ReGaHss: Error: IseXmlRpc::CallSetValue: CallXmlrpcMethod failed [../Platform/DOM/iseXmlRpc.cpp (1525)]
May 27 09:54:52 homematic-ccu2 local0.err ReGaHss: Error: IseHssDP::WriteValue: CallSetValue failed; address = MEQ1516227:4 [../Platform/DOM/iseDOMdpHSS.cpp (77)]
May 27 09:54:54 homematic-ccu2 user.debug script: [ALCHY ALLINScript START]
May 27 09:54:55 homematic-ccu2 user.debug script: [ALCHY ALLINScript ENDE]
Gruß Klana
Es ist nett, wichtig zu sein. Aber es ist wichtiger, nett zu sein.

Benutzeravatar
Herbert_Testmann
Beiträge: 11062
Registriert: 17.01.2009, 11:30
Danksagung erhalten: 7 Mal

Re: WebUI/ReGaHss Betaversion für CCU2 (2.27.x) verfügbar

Beitrag von Herbert_Testmann » 27.05.2017, 11:39

Hallo Jens

ich habe die erste Zeile Script gefunden, die einen Fehler erzeugt.
Leider muss ich zugeben, dass ich diesen Teil selbst eingefügt habe, um den Überlauf des Zählers zu kompensieren.

SysVar StromExMemory03 ist vom Typ Zahl (0...999999)

Dort versuche ich mir den Zählerstand des Energysensors zu merken, um einen Überlauf fest zu stellen.

Mit der folgenden Zeile soll der Inhalt der SysVar in die Variable oldc geschrieben werden
Das gibt einen ReGa Fehler im Log

Code: Alles auswählen

    real oldc = dom.GetObject("StromExMemory03").ToFloat();
chc ist der aktuelle Stand des Zählers. Dann wird verglichen

Code: Alles auswählen

    object devEnergyDP = dom.GetObject("BidCos-RF."#serialCounter#":1."#dpname);

    real oec = memory.StrValueByIndex("|",0).ToFloat();
    real shc = memory.StrValueByIndex("|",1).ToFloat();
    real chc = devEnergyDP.State();
    real oldc = dom.GetObject("StromExMemory03").ToFloat();
    real stoffset = dom.GetObject("StromOffset").State();
    
    if (chc < oldc){
    	chc = chc + 838860.7;
    	stoffset = stoffset + 838860.7;
    	}
   dom.GetObject("StromExMemory03").State(chc);
   dom.GetObject("StromOffset").State(stoffset); 
   
Wie kann ich das besser (fehlerfrei) lösen ??

komplettes Script

Code: Alles auswählen

    !! Energy Costs Part 3                                                       
    !!
    !! Berechnet die verbrauchten kWh/m3 seit der letzten Abrechnung des Energielieferanten
    !!
    !! kann beliebig oft laufen
    !!
    !! 02/15                                                 
    !! (c) by thkl
    !!
    !! Benötigte SystemVariablen:
    !! Name : gasLastInvoice Typ:Zahl -> hier den Zählerstand der letzten Energieabrechnung in kWh oder m3 eintragen.
    !! Name : gasStart Typ: Zeichenkette -> hier den aktuellen Zählerstand und den Zählerstand des Energiemessgerätes in ganzen kWh eintragen und zwar wie folgt:
    !! Zählerstand EZähler|Zählerstand HM Zähler (Beispiel 17456|5 ; wenn der Schwarze Kasten im E-Verteiler 17456 zeigt und gleichzeitig das HM Gerät 5) Achtung das HM Gerät zählt in WattStunden (alternativ natürlich die Gaszählerwerte)
    !! also / 1000
    !! Name : gasUsedEnergyCost Typ: Zahl Einheit :EUR 
    !! Name : gasUsedEnergyCount Typ: Zahl Einheit :kWh oder m3
    !! Name : gasTotalEnergyCount Typ: Zahl Einheit :kWh oder m3
    !! Energiekosten werden nach Scriptlauf in gasUsedEnergyCost gespeichert
    !! Verbrauchte KwH werden nach Scriptlauf in gasUsedEnergyCount gespeichert
    !! aktueller Stand des Stromzählers wird in gasTotalEnergyCount gespeichert
    !!
    !! serialCounter = "" - Hier die Seriennummer des HM Zählregrätes eintragen
    !! useAsGasCounter = 0 - E Zähler ; = 1 Gas Zähler
    !! cuxddevice = Seriennummer des CuxD Exec Devices. Wenn nicht vorhanden leer lassen dann wird system.exec genommen
!!
!!gasCostToday / gasCostYesterday / gasCountToday / gasCountYesterday / gasEXMemory / gasLastInvoice
!!gasStart / gasTotalEnergyCount / gasUsedEnergyCost / gasUsedEnergyCount
!! CUX2801001
!!
    var serialCounter = "MEQ0705547";
    var useAsGasCounter = 0;
    var cuxddevice = "CUX2801001";

    !! ================ ab hier nichts mehr aendern

    var dpname = "ENERGY_COUNTER";
    if (useAsGasCounter==1) {
      dpname = "GAS_ENERGY_COUNTER";
    }

    var svLastInvoice = dom.GetObject("StromLastInvoice");
    var svMemory = dom.GetObject("StromStart");
    var svUsedEnergyCost = dom.GetObject("StromUsedEnergyCost");
    var svUsedEnergyCount = dom.GetObject("StromUsedEnergyCount");
    var svTotalEnergyCount = dom.GetObject("StromTotalEnergyCount");	
	
    var memory = svMemory.State();
    var countLastIncoice = svLastInvoice.State();

    object devEnergyDP = dom.GetObject("BidCos-RF."#serialCounter#":1."#dpname);

    real oec = memory.StrValueByIndex("|",0).ToFloat();
    real shc = memory.StrValueByIndex("|",1).ToFloat();
    real chc = devEnergyDP.State();
    real oldc = dom.GetObject("StromExMemory03").ToFloat();
    real stoffset = dom.GetObject("StromOffset").State();
    
    if (chc < oldc){
    	chc = chc + 838860.7;
    	stoffset = stoffset + 838860.7;
    	}
   dom.GetObject("StromExMemory03").State(chc);
   dom.GetObject("StromOffset").State(stoffset); 
    
    string stdout;string stderr;

    string cmd = "/bin/sh -c 'cat /etc/config/energyPrice|sed -r \"s/\\"//g\"'";
    if (cuxddevice!="") {
      dom.GetObject("CUxD."#cuxddevice#":1.CMD_SETS").State(cmd);
      dom.GetObject("CUxD."#cuxddevice#":1.CMD_QUERY_RET").State(1);
      stdout = dom.GetObject("CUxD."#cuxddevice#":1.CMD_RETS").State();
    } else {
      system.Exec(cmd, &stdout, &stderr);
    }

    string sep = "\n";
    string part;
    string strCur;

    real pricekwh=0;
    real condvalue=0;
    real heatvalue=0;

    foreach(part,stdout.Split(sep)) {
      string key = part.StrValueByIndex(":",0);
      string val = part.StrValueByIndex(":",1);
      
      if (useAsGasCounter==1) {
      if (key=="gasHeatingValue"){
        heatvalue = val.ToFloat();
      }
      if (key=="gasConditionNumber"){
        condvalue = val.ToFloat();
      }
      if (key=="gasPrice"){
        pricekwh = val.ToFloat();
      }
      } else {
        if (key=="curPrice"){
        pricekwh = val.ToFloat();
      }
      }

      if (key=="currency") {
        strCur=val;
      }
    }

    if (useAsGasCounter==1) {
           real cec = (chc - shc)+oec;
           real uec = cec-countLastIncoice;
           real consumtion = heatvalue * condvalue * uec;
           real costyear = pricekwh * consumtion;
           svUsedEnergyCost.State(costyear);
           svUsedEnergyCount.State(uec);
           svTotalEnergyCount.State(cec);
    } else {
 !!          real cec = ((chc/1000) - shc)+oec;
 		real cec = (chc/1000) + stoffset;
           real uec = cec-countLastIncoice;
           real costyear = pricekwh * (uec);
           svUsedEnergyCost.State(costyear);
           svUsedEnergyCount.State(uec);
           svTotalEnergyCount.State(cec);
    }
  
---
Dieses Schreiben wurde maschinell erstellt und ist ohne Unterschrift gültig

Mathias
Beiträge: 1783
Registriert: 03.11.2010, 10:25
System: CCU
Wohnort: Aachen
Hat sich bedankt: 58 Mal
Danksagung erhalten: 259 Mal
Kontaktdaten:

Re: WebUI/ReGaHss Betaversion für CCU2 (2.27.x) verfügbar

Beitrag von Mathias » 27.05.2017, 11:46

Herbert_Testmann hat geschrieben:PS gibt es einen Script Befehl, der die Abarbeitung beendet?

Code: Alles auswählen

quit;

Benutzeravatar
jmaus
Beiträge: 9846
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 462 Mal
Danksagung erhalten: 1863 Mal
Kontaktdaten:

Re: WebUI/ReGaHss Betaversion für CCU2 (2.27.x) verfügbar

Beitrag von jmaus » 27.05.2017, 11:58

klana hat geschrieben: LED16 Anzeige funktioniert nicht mehr so wirklich.
Es treten immer wieder Fehler durch das einfache Script auf sit ich die aktuellste Beta drauf habe.
Außerdem brauchen die Fensterkontakte zum Senden seeehhrr lange und bei jedem 2. endet das in einer roten Anzeige (also erst Orange für 5-6 Sek. und dann rot oder grün)
Vorher habe diese nur einmal kurz Orange und dann sofort grün aufgeblinkt.
In deinen mitgelieferten Ausgaben findet sich kein einzelner "ScriptRuntimeError". Insofern läuft die Scriptabarbeitung korrekt ab und ich kann keine Fehler der sich auf die ReGa-Beta beziehen würde entdecken. Ich vermute hier ein anderes Problem.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

LibertyX
Beiträge: 767
Registriert: 10.11.2012, 19:47
System: Alternative CCU (auf Basis OCCU)
Wohnort: RP
Hat sich bedankt: 1 Mal
Danksagung erhalten: 19 Mal

Re: WebUI/ReGaHss Betaversion für CCU2 (2.27.x) verfügbar

Beitrag von LibertyX » 27.05.2017, 12:04

@Herbert_Testmann

An dem Skript arbeite ich auch gerade :mrgreen: auch wegen der Erkennung des Überlaufs eines Zählers.

Meine "Lösung" sieht aktuell so aus

Code: Alles auswählen

if (useAsGasCounter==1) {
	object counter = dom.GetObject("BidCos-RF."#serialCounter#":1."#dpname);
	object countercur = dom.GetObject("Zaehlerstand GAS").Value();
	object ref = dom.GetObject("eStartGAS");

	real curValue = counter.Value();
	real lastValue = counter.LastValue();
	real diffValue = curValue - lastValue;

	if (diffValue < 0.0) {
	string newval = (countercur+curValue).ToString(3) # " | " # curValue.ToString(3);
	ref.State(newval);
	}
} else {
	object counter = dom.GetObject("BidCos-RF."#serialCounter#":1."#dpname);
	object countercur = dom.GetObject("Zaehlerstand Strom").Value();
	object ref = dom.GetObject("eStartStrom");

	real curValue = counter.Value();
	real lastValue = counter.LastValue();
	real diffValue = curValue - lastValue;

	if (diffValue < 0.0) {
	string newval = (countercur+curValue).ToString(2) # " | " # curValue.ToString(2);
	ref.State(newval);
	}
}
Im Fall eines Überlaufs wird die Variable "gasStart" in meinem Fall eStartStrom / eStartGAS neu geschrieben (synchronisiert) mit dem letzten Zählerstand + Stand des Sensors und dem neuen Stand des Sensors.
Damit das richtig funktioniert, muss das Skript aber bei jeder Aktualisierung des Sensors laufen, sonst gibt es einen Versatz

Das neu schreiben der Variable funktioniert soweit, ob das beim Überlauf klappt weiß ich allerdings noch nicht. Den Ansatz habe ich allerdings aus dem Zählerskript von jmaus übernommen.
RaspberryMatic (3.71.12.20231020) @RPI3 | 218 Kanäle in 53 Geräten und 72 CUxD-Kanäle in 8 CUxD-Geräten (2.11) | iobroker.pro - CCU-Historian (3.4.0)

Benutzeravatar
klana
Beiträge: 1087
Registriert: 08.02.2015, 08:37
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 54 Mal
Danksagung erhalten: 26 Mal

Re: WebUI/ReGaHss Betaversion für CCU2 (2.27.x) verfügbar

Beitrag von klana » 27.05.2017, 12:09

jmaus hat geschrieben:
klana hat geschrieben: LED16 Anzeige funktioniert nicht mehr so wirklich.
Es treten immer wieder Fehler durch das einfache Script auf sit ich die aktuellste Beta drauf habe.
Außerdem brauchen die Fensterkontakte zum Senden seeehhrr lange und bei jedem 2. endet das in einer roten Anzeige (also erst Orange für 5-6 Sek. und dann rot oder grün)
Vorher habe diese nur einmal kurz Orange und dann sofort grün aufgeblinkt.
In deinen mitgelieferten Ausgaben findet sich kein einzelner "ScriptRuntimeError". Insofern läuft die Scriptabarbeitung korrekt ab und ich kann keine Fehler der sich auf die ReGa-Beta beziehen würde entdecken. Ich vermute hier ein anderes Problem.

Hallo Jens,

mit den vorherigen Betas ohne die zusätzlichen Dateien hatte ich dieses Problem nicht.
Wo kann ich denn da noch suchen?

Gruß
Klaus
Gruß Klana
Es ist nett, wichtig zu sein. Aber es ist wichtiger, nett zu sein.

Benutzeravatar
jmaus
Beiträge: 9846
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 462 Mal
Danksagung erhalten: 1863 Mal
Kontaktdaten:

Re: WebUI/ReGaHss Betaversion für CCU2 (2.27.x) verfügbar

Beitrag von jmaus » 27.05.2017, 12:17

Herbert_Testmann hat geschrieben: ich habe die erste Zeile Script gefunden, die einen Fehler erzeugt.
Leider muss ich zugeben, dass ich diesen Teil selbst eingefügt habe, um den Überlauf des Zählers zu kompensieren.

SysVar StromExMemory03 ist vom Typ Zahl (0...999999)

Dort versuche ich mir den Zählerstand des Energysensors zu merken, um einen Überlauf fest zu stellen.

Mit der folgenden Zeile soll der Inhalt der SysVar in die Variable oldc geschrieben werden
Das gibt einen ReGa Fehler im Log

Code: Alles auswählen

    real oldc = dom.GetObject("StromExMemory03").ToFloat();
chc ist der aktuelle Stand des Zählers. Dann wird verglichen
[...]
Wie kann ich das besser (fehlerfrei) lösen ??
Also als erstes muss ich sagen ist das mal ein Paradebeispiel dafür warum eine striktere Sprachhandhabung wie ich sie in ReGa nun implementiert habe wirklich ne gute Sache ist. :) Es ist nämlich nicht richtig das du .ToFloat() direkt auf eine Systemvariable anwendest auch wenn das alte ReGa dir da keinen Fehler bringt und somit vorgaukelt das dein vorgehen in Ordnung wäre. Schau dir mal folgenden Testskript an:

Code: Alles auswählen

object oldc = dom.GetObject("Testvar");
oldc.State(8.34526);
WriteLine(oldc.TypeName());
WriteLine(oldc.Value());
WriteLine(oldc.ToFloat());
WriteLine("DONE");
Wenn du das jetzt mit der alten/offiziellen ReGa ausführst dann bekommst du folgende Ausgabe:

Code: Alles auswählen

VARDP
8.345260
0
DONE
Was man da erst einmal erkennt ist das der Skript bis zum ende durchläuft was mit einem DONE belohnt wird. Es sollte dir aber auffallen das die Ausgabe des ToFloat() aber ein simples "0" ist was eigentlich auch nicht korrekt ist denn die Systemvariable steht ja auf dem Wert "8.345260" wie ich das vorher ja explizit gesetzt habe.

Und wenn du dir nun anschaust was die neue/beta ReGa macht dann wirst du folgendes sehen:

Code: Alles auswählen

VARDP
8.345260
Testvar
Hier hört die Abarbeitung direkt nach dem ToFloat() auf und ReGa schmeisst dir den besagten "ScriptRuntimeError" im syslog um dich darauf hinzuweisen das die ToFloat() Nutzung hier schief gelaufen ist.

Vergleichst du nun die beiden ausgaben so sollte dir auffallen das lediglich das Verwenden von .Value() das eigentlich gewünschte Ergebnis liefert. Eine direkte Nutzung von ToFloat() ist und war eben immer falsch nur eben war die alte ReGa nicht schlau genug diesen Fehler zu identifizieren und einen Fehler im Syslog zu positionieren.

Ergo, du solltest deine Zeile wie folgt aussehen lassen:

Code: Alles auswählen

    real oldc = dom.GetObject("StromExMemory03").Value();
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: WebUI/ReGaHss Betaversion für CCU2 (2.27.x) verfügbar

Beitrag von alchy » 27.05.2017, 13:12

Code: Alles auswählen

May 27 09:54:22 homematic-ccu2 user.err rfd: HSSParameter::SetValue() 1 Put failed
May 27 09:54:23 homematic-ccu2 local0.err ReGaHss: Error: IseXmlRpc::CallXmlrpcMethod: execute result isFault; method =setValue Params = {"JEQ0220780:9","LED_STATUS",1} result= [faultCode:-1,faultString:"Failure"] [../Platform/DOM/iseXmlRpc.cpp (2641)]
May 27 09:54:23 homematic-ccu2 local0.err ReGaHss: Error: IseXmlRpc::CallSetValue: CallXmlrpcMethod failed [../Platform/DOM/iseXmlRpc.cpp (1525)]
May 27 09:54:23 homematic-ccu2 local0.err ReGaHss: Error: IseHssDP::WriteValue: CallSetValue failed; address = JEQ0220780:9 [../Platform/DOM/iseDOMdpHSS.cpp (77)]
May 27 09:54:24 homematic-ccu2 user.debug script: [ALCHY ALLINScript START]
May 27 09:54:25 homematic-ccu2 user.debug script: [ALCHY ALLINScript ENDE]
klana hat geschrieben: einen hab ich noch...
....
mit den vorherigen Betas ohne die zusätzlichen Dateien hatte ich dieses Problem nicht.
Wo kann ich denn da noch suchen?
Das ist *IMHO* so wohl nicht ganz richtig beobachtet.
Dein Log bezeichnet einen "normalen" Ablauf bei Auftreten von Kommunikationsproblemen.
Du erhältst daraufhin eine Servicemeldung. Die Beta macht vieles anders, aber das nicht.
Auf das Script gehe ich nicht ein, das kann dir jmaus erklären.

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Antworten

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