Systemvariablen werden nicht gefüllt.

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Antworten
kristema
Beiträge: 12
Registriert: 18.12.2010, 06:39
Danksagung erhalten: 1 Mal

Systemvariablen werden nicht gefüllt.

Beitrag von kristema » 25.08.2017, 15:51

TLC Skript

Code: Alles auswählen

#!/bin/tclsh
    load tclrega.so

    set f [open "/media/sd-mmcblk0/SB_Ueberschuss.txt"]

    set input [read $f]

    close $f


    # Werte aus Datei auslesen
    # =============================
    regexp "Einspeisenleistung=(.*) W" $input dummy ueberschuss  ; #Ueberschuss
    regexp "Entladeleistung=(.*) W" $input dummy entladen  ; #Entladen
    regexp "Ladezustand=(.*) %" $input dummy soc  ; #SOC

    #puts $hauptschalter
    #puts $halletemp

    # Werte in Variabel schreiben
    # =============================
    set rega_cmd ""
  
    append rega_cmd "var w0 = dom.GetObject('SB_Ueberschuss');"
    append rega_cmd "w0.State('$ueberschuss');"
    append rega_cmd "var w1 = dom.GetObject('SB_Entladung');"
    append rega_cmd "w1.State('$entladen');"
    append rega_cmd "var w2 = dom.GetObject('SB_Ladezustand');"
    append rega_cmd "w2.State('$soc');"

    rega_script $rega_cmd

Textdatei die ausgelsen werden soll und die Werte in die Systemvariablen schreiben soll

Code: Alles auswählen

Einspeisenleistung=479 W
Entladeleistung=0 W
Ladezustand=94 %
in meinem Fall wird alle 3 min ein Script ausgeführt.

Code: Alles auswählen

string stderr;
string stdout;
system.Exec("tclsh /usr/local/etc/ueberschuss.tcl", &stdout, &stderr);
Problem es wird nur die Systemvariable 'SB_Ueberschuss' beschrieben.

Gruß
Markus

kristema
Beiträge: 12
Registriert: 18.12.2010, 06:39
Danksagung erhalten: 1 Mal

Re: Systemvariablen werden nicht gefüllt.

Beitrag von kristema » 25.08.2017, 16:27

hat sich erledigt, Code war ok. i am failed.

Gruß
Markus

kristema
Beiträge: 12
Registriert: 18.12.2010, 06:39
Danksagung erhalten: 1 Mal

Re: Systemvariablen werden nicht gefüllt.

Beitrag von kristema » 01.06.2018, 14:34

Code: Alles auswählen

var aktMonat;
var neu = dom.GetObject("Wallboxlademengeneu").Value();
var alt = dom.GetObject("Wallboxlademengealt").Value();

aktMonat = neu - alt;

dom.GetObject("Wallboxlademengeletztermonat").State(aktMonat.ToInteger(0));

dom.GetObject("Wallboxlademengealt").State(neu.ToInteger(0));

Das Problem:" Die CCU2 scheint den Befehl "dom.GetObject("Wallboxlademengealt").State(neu.ToInteger(0));" nicht auszuführen.

Der Rest geht.
Die Berechnung und das Reinschreiben in " dom.GetObject("Wallboxlademengeletztermonat").State(aktMonat.ToInteger(0));" funktioniert. Was kann das sein?? Ich stehe auf dem Schlau.

Gruß
Markus

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

Re: Systemvariablen werden nicht gefüllt.

Beitrag von alchy » 01.06.2018, 23:45

Wieviel Nachkommastellen erwartest du denn bei integer? oder anders: Was soll die 0 da drin?
Das ist aber nicht die Ursache für das "Nichtfunktionieren" des Codes.
Was sagt denn das Fehlerprotokoll?

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.

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

Re: Systemvariablen werden nicht gefüllt.

Beitrag von alchy » 04.06.2018, 12:48

Ich wurde von einem Freund informiert, das .ToInteger(0) unter Umständen doch sinnvoll sein kann.
Nämlich je nachdem welches Ergebnis man erwartet. (abgeschnitten oder gerundet) und das ist natürlich korrekt.
Ich kann mich auch dunkel an die Diskussionen erinnern, hatte es aber gar nicht mehr konkret auf dem Schirm. :oops:

Allerdings funktioniert ToInteger() MIT Parameter erst seit der Beta-Version 0121 - was zwar für dich nicht relevant ist, da ja der andere Aufruf funktioniert.
Hier aber trotzdem als Zusatzinfo gut aufgehoben.

Augenscheinlich ist die Lösung eh nicht mehr von Interesse, aber falls mal wer per Suche drüber stolpert.

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)“