[GELÖST] Scriptprobleme mit 2.27.8.20170620

Einrichtung, Nutzung und Hilfe zu RaspberryMatic (OCCU auf Raspberry Pi)

Moderatoren: jmaus, Co-Administratoren

Günni
Beiträge: 231
Registriert: 03.10.2013, 00:20
Wohnort: Nordstemmen
Danksagung erhalten: 1 Mal

[GELÖST] Scriptprobleme mit 2.27.8.20170620

Beitrag von Günni » 02.07.2017, 14:35

Hallo, seit der version 2.27.8.20170620 setzt das Programm bei Ausführung alle zugehörigen Systemvariablen auf Null. Die Systemvariablen im Homematic Explorer sind Typ Fliesskommazahl und SubTyp Zahl.

Code: Alles auswählen

  var tmpB= dom.GetObject("Brenner letzte Ausschaltzeit");
    var tmpA= dom.GetObject("Brenner letzte Einschaltzeit");
    var tmpC= dom.GetObject("Brenner Tankinhalt bei letzter Fuellung").Value();
    var tmpD= dom.GetObject("Brenner Tankinhalt aktuell");
    var tmpE= dom.GetObject("Brenner Betriebsstunden seit letzter Fuellung");
    var tmpF= dom.GetObject("Brenner Verbrauch seit letzter Fuellung");
    var tmpG= dom.GetObject("Brenner Betriebsstunden laufendes Kalenderjahr");
    var tmpH= dom.GetObject("Brenner Verbrauch laufendes Kalenderjahr");
    var tmpI= dom.GetObject("Brenner Betriebsstunden laufender Monat");
    var tmpJ= dom.GetObject("Brenner Verbrauch laufender Monat");
    var tmpK= dom.GetObject("Brenner Betriebsstunden laufende Woche");
    var tmpL= dom.GetObject("Brenner Verbrauch laufende Woche");
    var tmpM= dom.GetObject("Brenner Betriebsstunden heute");
    var tmpN= dom.GetObject("Brenner Verbrauch heute");

    ! Speichern der Ausschaltzeit
    tmpB.State(system.Date("%F %T"));

    ! Den Einschaltzeit String aus der Systemvariablen in ein Zeitobjekt umwandeln
    time tmpO = tmpA.Variable().ToTime();

    ! Die aktuelle (Ausschalt)Zeit String erzeugen und in ein Zeitobjekt umwandeln
    time tmpP = system.Date("%F %T").ToTime();

    ! Das Zeitobjekt Einschaltzeit in Sekunden seit 1.1.1970 umwandeln
    var tmpQ = tmpO.ToInteger();

    ! Das Zeitobjekt aktuelle Zeit in Sekunden seit 1.1.1970 umwandeln
    var tmpR = tmpP.ToInteger();

    !Die Differenz ist die Einschaltdauer in Stunden umgerechnet
    var tmpS = 0.01*(tmpR-tmpQ)/36;

    ! Die Einschaltdauer seit der letzten Füllung kumulieren = Betriebsstunden seit der letzten Füllung
    var tmpT = tmpS + tmpE.Variable();

    ! Die Betriebsstunden seit der letzten Füllung in die Systemvariable einstellen
    tmpE.State (tmpT);

    ! Berechnung von Verbrauch in Liter mit 1,87 kg/h seit der letzten Füllung
    var tmpU = tmpT * 1.87 * 1.197;

    ! Verbrauch seit der letzten Füllung in die Systemvariable einstellen
    tmpF.State (tmpU);

    ! Berechnung Tankinhalts in Litern
    var tmpV = tmpC - tmpU;

    ! Tankinhalt in die Systemvariable einstellen
    tmpD.State (tmpV);

    ! Die Einschaltdauer im laufenden Kalenderjahr kumulieren = Betriebsstunden
    var tmpW = tmpS + tmpG.Variable();

    ! Die Betriebsstunden im laufenden Kalenderjahr in die Systemvariable einstellen
    tmpG.State (tmpW);

    ! Berechnung von Verbrauch in Liter mit 1,87 kg/h im laufenden Kalenderjahr
    var tmpX = tmpW * 1.87 * 1.197;

    ! Verbrauch im laufenden Kalenderjahr in die Systemvariable einstellen
    tmpH.State (tmpX);

    ! Die Einschaltdauer im laufenden Kalendermonat kumulieren = Betriebsstunden
    var tmpY = tmpS + tmpI.Variable();

    ! Die Betriebsstunden im laufenden Kalendermonat in die Systemvariable einstellen
    tmpI.State (tmpY);

    ! Berechnung von Verbrauch in Liter mit 1,87 kg/h im laufenden Kalendermonat
    var tmpZ = tmpY * 1.87 * 1.197;

    ! Verbrauch im laufenden Kalendermonat in die Systemvariable einstellen
    tmpJ.State (tmpZ);

    ! Die Einschaltdauer in der laufenden Kalenderwoche kumulieren = Betriebsstunden
    var tmpA1 = tmpS + tmpK.Variable();

    ! Die Betriebsstunden in der laufenden Kalenderwoche in die Systemvariable einstellen
    tmpK.State (tmpA1);

    ! Berechnung von Verbrauch in Liter mit 1,87 kg/h in der laufenden Kalenderwoche
    var tmpB1 = tmpA1 * 1.87 * 1.197;

    ! Verbrauch in der laufenden Kalenderwoche in die Systemvariable einstellen
    tmpL.State (tmpB1);

    ! Die Einschaltdauer heute kumulieren = Betriebsstunden
    var tmpC1 = tmpS + tmpM.Variable();

    ! Die Betriebsstunden heute in die Systemvariable einstellen
    tmpM.State (tmpC1);

    ! Berechnung von Verbrauch in Liter mit 1,87 kg/h heute
    var tmpD1 = tmpC1 * 1.87 * 1.197;

    ! Verbrauch in der laufenden Kalenderwoche in die Systemvariable einstellen
    tmpN.State (tmpD1);
Gruß Günni

mc.olli
Beiträge: 19
Registriert: 08.09.2014, 20:55
Hat sich bedankt: 1 Mal

Re: version 2.27.8.20170620

Beitrag von mc.olli » 03.07.2017, 20:49

Ich habe das gleiche Problem:

Nach dem letzten Update auf 2.27.8.20170620 habe ich ein Problem bei diversen Scripten:

Script für einen Stromzähler, bei Impuls auf den aktuellen Zählerstand 0,01 addieren:

Code: Alles auswählen

var StromFinder100 = dom.GetObject("SV_Strom_Finder_Summe").Value().ToString(3);
var StromFinder102 = 0.01 + StromFinder101;
Ergebnis wird dann wieder in die Systemvariable geschrieben.
Das hat bis dato immer funktioniert, allerdings ist seit dem update das so nicht mehr möglich.

"ToString(3) führt aber nun zu einem unsinnigen Ergebnis
Soll 0.170 + 0.01 = 0.18
tatsächlich wird aber daraus
IST 0.170 + 0.01 = 0.0100000.170

Xel66
Beiträge: 14297
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 601 Mal
Danksagung erhalten: 1529 Mal

Re: version 2.27.8.20170620

Beitrag von Xel66 » 03.07.2017, 20:55

Das Script macht das, was Du hinterlegt hast. Es fügt zwei Strings zusammen. Im Normalfall musst Du die Werte in Fließkommazahlvariablen einlesen und diese addieren. Vermutlich ist dieses eine Auswirkung der Fehlerkorrektur. Die Ursache ist also Dein Script und die falsche Deklaration der benutzten Variablen.

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

mc.olli
Beiträge: 19
Registriert: 08.09.2014, 20:55
Hat sich bedankt: 1 Mal

Re: version 2.27.8.20170620

Beitrag von mc.olli » 03.07.2017, 22:23

Danke für die Antwort,

könntest Du mir eine Lösung evtl. etwas näher erläutern ? bin kein script-profi.

Ich möchte
- einen Wert aus einer Systemvariablen als Zahl mit Beispiel 2 Nachkomastellen auslesen
- mit einem fixen Wert addieren
- Ergebnis wieder in die Systemvariable schreiben

Wäre sehr nett :wink:
Danke

Xel66
Beiträge: 14297
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 601 Mal
Danksagung erhalten: 1529 Mal

Re: version 2.27.8.20170620

Beitrag von Xel66 » 03.07.2017, 23:54

mc.olli hat geschrieben:bin kein script-profi.
Ich auch nicht. Kann auch nur erste Gehversuche mit HM-Script vorweisen. Weiß aber, wo es steht. Mit VBA komme ich besser klar, aber das ist hier nicht gefragt.
mc.olli hat geschrieben:- einen Wert aus einer Systemvariablen als Zahl mit Beispiel 2 Nachkomastellen auslesen
Wozu schon dort die Genauigkeit begrenzen? Rechne doch mit dem Wert, wie ihn Dir die Systemvariable liefert. Genau diese versuchte Begrenzung auf Nachkommastellen bricht Dir in Deinem Script das Genick, weil Du den Wert in einen String wandelst. Und damit kann man nicht rechnen. Da ich nicht weiß, welcehr Datentyp Deine Systemvariable ist, wäre die Wandlung auf eine Gleitkommazahl zielführend. Also anstatt ...Value().ToString(3); dann ...Value().ToFloat() verwenden.
mc.olli hat geschrieben:- mit einem fixen Wert addieren
HM-Script_Teil_1_Sprachbeschreibung Seite 9 zeigt Dir die Möglichkeiten.
mc.olli hat geschrieben:- Ergebnis wieder in die Systemvariable schreiben
Das in einem Scriptlauf ermittelte Ergebnis schreibst Du mit "dom.GetObject("Systemvariablenname").State (scriptergebnis);" in eine Systemvariable.

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

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

Re: version 2.27.8.20170620

Beitrag von jmaus » 04.07.2017, 10:58

Günni hat geschrieben:Hallo, seit der version 2.27.8.20170620 setzt das Programm bei Ausführung alle zugehörigen Systemvariablen auf Null. Die Systemvariablen im Homematic Explorer sind Typ Fliesskommazahl und SubTyp Zahl.

Code: Alles auswählen

  var tmpB= dom.GetObject("Brenner letzte Ausschaltzeit");
 [...]
    ! Verbrauch in der laufenden Kalenderwoche in die Systemvariable einstellen
    tmpN.State (tmpD1);
Hast du mal geschaut ab wann denn bitte der Wert 0 wird den du da in die Variablen jeweils zurück schreibst. Gibt dir doch einfach mal die Zwischenschritte mit WriteLine() aus damit du sehen kannst an welcher Stelle das passiert und tmpD1 am Schluss 0 wird. Auch kannst du dich dann gleich hinsetzen und die Variablennamen wieder ordentlich setzen denn inzwischen gibt es ja das 200-variablen-problem nicht mehr und du kannst die sinnvoll benennen.
RaspberryMatic 3.75.7.20240601 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

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

Re: version 2.27.8.20170620

Beitrag von jmaus » 04.07.2017, 11:14

mc.olli hat geschrieben:Ich habe das gleiche Problem:
Ich würde sagen nicht das gleiche, aber ein ähnliches :)
mc.olli hat geschrieben: Nach dem letzten Update auf 2.27.8.20170620 habe ich ein Problem bei diversen Scripten:

Script für einen Stromzähler, bei Impuls auf den aktuellen Zählerstand 0,01 addieren:

Code: Alles auswählen

var StromFinder100 = dom.GetObject("SV_Strom_Finder_Summe").Value().ToString(3);
var StromFinder102 = 0.01 + StromFinder101;
Ergebnis wird dann wieder in die Systemvariable geschrieben.
Das hat bis dato immer funktioniert, allerdings ist seit dem update das so nicht mehr möglich.

"ToString(3) führt aber nun zu einem unsinnigen Ergebnis
Soll 0.170 + 0.01 = 0.18
tatsächlich wird aber daraus
IST 0.170 + 0.01 = 0.0100000.170
Nun, das liegt daran das du hier eben ToString() verwendest das, wie der Name schon sagt, am Schluss einen String erzeugt und keine Flieskommazahl. D.h. die variable "StromFinder100" ist danach vom Typ "String" und das führt dann dazu das die Addition die du später dann ausführst "0.01 + StromFinder100" dazu führt das "0.01" vorher in einen String umgewandelt wird und dann kommt eben sowas raus. Also entweder verwendest du nun folgendes:

Code: Alles auswählen

var StromFinder102 = 0.01 + StromFinder101.ToFloat();
d.h. "ToFloat()" um wieder eine Gleitkommazahl daraus zu machen, oder du benutzt gleich eine der neuen Rundungsfunktionen in der neuesten ReGaHss die mit RaspberryMatic mit kommt:

Code: Alles auswählen

var StromFinder100 = dom.GetObject("SV_Strom_Finder_Summe").Value().Round(3);
D.h. du nutzt "Round(3)" statt "ToString(3)" damit kannst du die Zahl die in deiner Systemvariablen drin ist auf 3 stellen nach dem Komma runden lassen und damit bleibt sie dann eine Gleitkommazahl und du kannst ganz normal damit weiter rechnen.
RaspberryMatic 3.75.7.20240601 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Cash
Beiträge: 1184
Registriert: 09.01.2016, 17:42
Wohnort: Sauerland
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Scriptprobleme mit 2.27.8.20170620

Beitrag von Cash » 05.07.2017, 09:57

Mal eine generelle Frage hierzu.

Hier wird ja munter mit "var" deklaiert. Was man ja machen kann aber wäre es nicht von voreinrein sauberer mit "real" zu dekalieren?

Spätestens wenn man mit real deklariert und danach ToString verwendet sollte es ja klick machen...

Günni
Beiträge: 231
Registriert: 03.10.2013, 00:20
Wohnort: Nordstemmen
Danksagung erhalten: 1 Mal

Re: version 2.27.8.20170620

Beitrag von Günni » 05.07.2017, 23:49

jmaus hat geschrieben:
Günni hat geschrieben:Hallo, seit der version 2.27.8.20170620 setzt das Programm bei Ausführung alle zugehörigen Systemvariablen auf Null. Die Systemvariablen im Homematic Explorer sind Typ Fliesskommazahl und SubTyp Zahl.

Code: Alles auswählen

  var tmpB= dom.GetObject("Brenner letzte Ausschaltzeit");
 [...]
    ! Verbrauch in der laufenden Kalenderwoche in die Systemvariable einstellen
    tmpN.State (tmpD1);
Hast du mal geschaut ab wann denn bitte der Wert 0 wird den du da in die Variablen jeweils zurück schreibst. Gibt dir doch einfach mal die Zwischenschritte mit WriteLine() aus damit du sehen kannst an welcher Stelle das passiert und tmpD1 am Schluss 0 wird. Auch kannst du dich dann gleich hinsetzen und die Variablennamen wieder ordentlich setzen denn inzwischen gibt es ja das 200-variablen-problem nicht mehr und du kannst die sinnvoll benennen.
Hallo,
Leider komme ich mit den Skripten nicht zurecht, weiß also nicht was genau Passiert.
Sonst konnte ich durch Änderung mit PocketControl die Systemvariable (var tmpF= "Brenner Verbrauch seit letzter Fuellung") Z.B auf 600 Stunden setzen. Dann wurde der Tankinhalt korrigiert.(var tmpD="Brenner Tankinhalt aktuell") Jetzt Werden Alle Stunden und alle Liter Anzeigen auf Null gesetzt.
Ich schicke mal die Ausgabe von HM Script Executor mit.

Code: Alles auswählen

! Skript zur Berechnung
  var AusZeit= dom.GetObject("Brenner letzte Ausschaltzeit");
    var EinZeit= dom.GetObject("Brenner letzte Einschaltzeit");
    var TankGes= dom.GetObject("Brenner Tankinhalt bei letzter Fuellung").Value();
    var KumTankAkt= dom.GetObject("Brenner Tankinhalt aktuell");
    var KumZeitF= dom.GetObject("Brenner Betriebsstunden seit letzter Fuellung");
    var KumVerbrauchF= dom.GetObject("Brenner Verbrauch seit letzter Fuellung");
    var KumZeitJ= dom.GetObject("Brenner Betriebsstunden laufendes Kalenderjahr");
    var KumVerbrauchJ= dom.GetObject("Brenner Verbrauch laufendes Kalenderjahr");
    var KumZeitM= dom.GetObject("Brenner Betriebsstunden laufender Monat");
    var KumVerbrauchM= dom.GetObject("Brenner Verbrauch laufender Monat");
    var KumZeitW= dom.GetObject("Brenner Betriebsstunden laufende Woche");
    var KumVerbrauchW= dom.GetObject("Brenner Verbrauch laufende Woche");
    var KumZeitT= dom.GetObject("Brenner Betriebsstunden heute");
    var KumVerbrauchT= dom.GetObject("Brenner Verbrauch heute");

    ! Speichern der Ausschaltzeit
    AusZeit.State(system.Date("%F %T"));

    ! Den Einschaltzeit String aus der Systemvariablen in ein Zeitobjekt umwandeln
    time t = EinZeit.Variable().ToTime();

    ! Die aktuelle (Ausschalt)Zeit String erzeugen und in ein Zeitobjekt umwandeln
    time t1 = system.Date("%F %T").ToTime();

    ! Das Zeitobjekt Einschaltzeit in Sekunden seit 1.1.1970 umwandeln
    var x = t.ToInteger();

    ! Das Zeitobjekt aktuelle Zeit in Sekunden seit 1.1.1970 umwandeln
    var x1 = t1.ToInteger();

    !Die Differenz ist die Einschaltdauer in Stunden umgerechnet
    var x0 = 0.01*(x1-x)/36;

    ! Die Einschaltdauer seit der letzten Füllung kumulieren = Betriebsstunden seit der letzten Füllung
    var gelaufenF = x0 + KumZeitF.Variable();

    ! Die Betriebsstunden seit der letzten Füllung in die Systemvariable einstellen
    KumZeitF.State (gelaufenF);

    ! Berechnung von Verbrauch in Liter mit 1,87 kg/h seit der letzten Füllung
    var verbrauchtF = gelaufenF * 1.87 * 1.197;

    ! Verbrauch seit der letzten Füllung in die Systemvariable einstellen
    KumVerbrauchF.State (verbrauchtF);

    ! Berechnung Tankinhalts in Litern
    var tankinhalt = TankGes - verbrauchtF;

    ! Tankinhalt in die Systemvariable einstellen
    KumTankAkt.State (tankinhalt);

    ! Die Einschaltdauer im laufenden Kalenderjahr kumulieren = Betriebsstunden
    var gelaufenJ = x0 + KumZeitJ.Variable();

    ! Die Betriebsstunden im laufenden Kalenderjahr in die Systemvariable einstellen
    KumZeitJ.State (gelaufenJ);

    ! Berechnung von Verbrauch in Liter mit 1,87 kg/h im laufenden Kalenderjahr
    var verbrauchtJ = gelaufenJ * 1.87 * 1.197;

    ! Verbrauch im laufenden Kalenderjahr in die Systemvariable einstellen
    KumVerbrauchJ.State (verbrauchtJ);

    ! Die Einschaltdauer im laufenden Kalendermonat kumulieren = Betriebsstunden
    var gelaufenM = x0 + KumZeitM.Variable();

    ! Die Betriebsstunden im laufenden Kalendermonat in die Systemvariable einstellen
    KumZeitM.State (gelaufenM);

    ! Berechnung von Verbrauch in Liter mit 1,87 kg/h im laufenden Kalendermonat
    var verbrauchtM = gelaufenM * 1.87 * 1.197;

    ! Verbrauch im laufenden Kalendermonat in die Systemvariable einstellen
    KumVerbrauchM.State (verbrauchtM);

    ! Die Einschaltdauer in der laufenden Kalenderwoche kumulieren = Betriebsstunden
    var gelaufenW = x0 + KumZeitW.Variable();

    ! Die Betriebsstunden in der laufenden Kalenderwoche in die Systemvariable einstellen
    KumZeitW.State (gelaufenW);

    ! Berechnung von Verbrauch in Liter mit 1,87 kg/h in der laufenden Kalenderwoche
    var verbrauchtW = gelaufenW * 1.87 * 1.197;

    ! Verbrauch in der laufenden Kalenderwoche in die Systemvariable einstellen
    KumVerbrauchW.State (verbrauchtW);

    ! Die Einschaltdauer heute kumulieren = Betriebsstunden
    var gelaufenT = x0 + KumZeitT.Variable();

    ! Die Betriebsstunden heute in die Systemvariable einstellen
    KumZeitT.State (gelaufenT);

    ! Berechnung von Verbrauch in Liter mit 1,87 kg/h heute
    var verbrauchtT = gelaufenT * 1.87 * 1.197;

    ! Verbrauch in der laufenden Kalenderwoche in die Systemvariable einstellen
    KumVerbrauchT.State (verbrauchtT);

Code: Alles auswählen

!Ausgabe HM Script Executor
{
  "gelaufenJ": "0.0000000.000000",
  "sessionId": "",
  "verbrauchtT": "0.0000000.000000",
  "KumVerbrauchT": "Brenner Verbrauch heute",
  "STDOUT": "",
  "KumTankAkt": "Brenner Tankinhalt aktuell",
  "gelaufenM": "0.0000000.000000",
  "verbrauchtF": "0.0000000.000000",
  "t": "2017-07-05 23:39:11",
  "verbrauchtW": "0.0000000.000000",
  "t1": "2017-07-05 23:39:30",
  "KumZeitT": "Brenner Betriebsstunden heute",
  "AusZeit": "Brenner letzte Ausschaltzeit",
  "TankGes": "2500.000000",
  "KumVerbrauchF": "Brenner Verbrauch seit letzter Fuellung",
  "tankinhalt": "2500.000000",
  "KumVerbrauchW": "Brenner Verbrauch laufende Woche",
  "KumZeitF": "Brenner Betriebsstunden seit letzter Fuellung",
  "verbrauchtJ": "0.0000000.000000",
  "x0": "0.000000",
  "x": "1499290751",
  "KumZeitW": "Brenner Betriebsstunden laufende Woche",
  "EinZeit": "Brenner letzte Einschaltzeit",
  "x1": "1499290770",
  "KumVerbrauchJ": "Brenner Verbrauch laufendes Kalenderjahr",
  "gelaufenT": "0.0000000.000000",
  "verbrauchtM": "0.0000000.000000",
  "KumZeitJ": "Brenner Betriebsstunden laufendes Kalenderjahr",
  "KumVerbrauchM": "Brenner Verbrauch laufender Monat",
  "gelaufenF": "0.0000000.000000",
  "gelaufenW": "0.0000000.000000",
  "httpUserAgent": "",
  "KumZeitM": "Brenner Betriebsstunden laufender Monat"
}
Vielleicht kann ist es ja ein einfaches Problem und mir kann jemand helfen.Danke
Gruß Günni

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

Re: version 2.27.8.20170620

Beitrag von jmaus » 06.07.2017, 09:30

Günni hat geschrieben:
jmaus hat geschrieben:
Günni hat geschrieben:Hallo, seit der version 2.27.8.20170620 setzt das Programm bei Ausführung alle zugehörigen Systemvariablen auf Null. Die Systemvariablen im Homematic Explorer sind Typ Fliesskommazahl und SubTyp Zahl.

Code: Alles auswählen

  var tmpB= dom.GetObject("Brenner letzte Ausschaltzeit");
 [...]
    ! Verbrauch in der laufenden Kalenderwoche in die Systemvariable einstellen
    tmpN.State (tmpD1);
Hast du mal geschaut ab wann denn bitte der Wert 0 wird den du da in die Variablen jeweils zurück schreibst. Gibt dir doch einfach mal die Zwischenschritte mit WriteLine() aus damit du sehen kannst an welcher Stelle das passiert und tmpD1 am Schluss 0 wird. Auch kannst du dich dann gleich hinsetzen und die Variablennamen wieder ordentlich setzen denn inzwischen gibt es ja das 200-variablen-problem nicht mehr und du kannst die sinnvoll benennen.
Leider komme ich mit den Skripten nicht zurecht, weiß also nicht was genau Passiert.
Sonst konnte ich durch Änderung mit PocketControl die Systemvariable (var tmpF= "Brenner Verbrauch seit letzter Fuellung") Z.B auf 600 Stunden setzen. Dann wurde der Tankinhalt korrigiert.(var tmpD="Brenner Tankinhalt aktuell") Jetzt Werden Alle Stunden und alle Liter Anzeigen auf Null gesetzt.
Ich schicke mal die Ausgabe von HM Script Executor mit.
Das hilft so leider alles nicht. Du musst schon selbst hand anlegen und jeden Zwischenschritt mit einem WriteLine() einmal ausgeben und dann den Skript mit "Skript testen" einmal durchlaufen lassen um zu verstehen wo genau der Fehler passiert bzw. wo eine 0 berechnet wird.
RaspberryMatic 3.75.7.20240601 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Antworten

Zurück zu „RaspberryMatic“