Heizungsthermostatscript

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Petrus
Beiträge: 135
Registriert: 13.01.2010, 20:53
Hat sich bedankt: 1 Mal
Danksagung erhalten: 25 Mal

Re: Heizungsthermostatscript

Beitrag von Petrus » 10.02.2010, 12:33

Hi Erik,

da ich auch das Problem mit der nicht korrekten Darstellung im Log hatte, habe ich mal in eines meiner Scripte geschaut, wie ich das gelöst hatte.

Zum nachvollziehen nachfolgend die beiden unterschiedlichen Programmzeilen, die ich analysiert habe.

Originalzeile aus dem Heizungsthermostatscript

Code: Alles auswählen

if (debug) {system.Exec("logger -t script -p user.debug Thermostat " # raum # " neu gesetzt: alt : " # aktemp # " Solltemp: " # solltemperatur # " Letzte Aenderung: " # settime # " Time diff: " # diff # " Sekunden");}
bringt folgende Ausgabe im Log:

Code: Alles auswählen

Feb 10 12:16:47 homematic user.debug script: Thermostat EG-Wohnen neu gesetzt:
Geänderte Programmzeile

Code: Alles auswählen

if (debug) {system.Exec("logger -t script -p user.debug Thermostat_" # raum # "_neu_gesetzt:_alt_:_" # aktemp # "_Solltemp:_" # solltemperatur # "_Letzte_Aenderung:_" # settime # "_Time diff:_" # diff # "_Sekunden");}
bringt folgende Ausgabe im Log:

Code: Alles auswählen

Feb 10 12:19:52 homematic user.debug script: Thermostat_EG-Wohnen_neu_gesetzt:_alt_:_20.500000_Solltemp:_18_Letzte_Aenderung:_1265800767_Time diff:_25_Sekunden
Ich habe in der Programmzeile lediglich die Leerzeichen durch Unterstriche ersetzt. Das Ergebnis lässt vermuten, dass ab einer bestimmten Textlänge keine zusätzlichen Leerzeichen mehr zulässig sind. Dieses Phänomen hatte ich schon mehrfach festgestellt. Ob das nun ein Bug in der Firmware ist oder doch vielleicht auf anderen Tatsachen beruht, kann ich nicht beantworten. Sollte dazu jemand hier im Forum eine begründete Erklärung haben, dann würde die mich brennend interessieren.

Gruß
Peter

Petrus
Beiträge: 135
Registriert: 13.01.2010, 20:53
Hat sich bedankt: 1 Mal
Danksagung erhalten: 25 Mal

Re: Heizungsthermostatscript

Beitrag von Petrus » 10.02.2010, 15:01

Hi Erik,

mit folgender Scriptpassage kannst du die Werte loggen und korrekt darstellen: (habe ich geprüft!)

Code: Alles auswählen

if (debug) {
           string stdout;
           string stderr;
           system.Exec("logger -t script -p user.debug Thermostat " # raum # " neu gesetzt!\n", &stdout, &stderr);
           system.Exec("logger -t script -p user.debug Alttemp: " # aktemp # " Solltemp: " # solltemperatur # "\n", &stdout, &stderr);
           system.Exec("logger -t script -p user.debug Letzte Aenderung: " # settime # "\n", &stdout, &stderr);
           system.Exec("logger -t script -p user.debug Zeitdifferenz: " # diff # " Sekunden", &stdout, &stderr);
           }
Da die Darstellung im Logfile nach dem 4. Leerzeichen abbricht, muss man daraus einen 4 Zeiler erstellen lassen. Dazu muss der logger auch 4x hintereinander aufgerufen werden. Damit das möglich ist, muss man Exec() Variablen übergeben, in die es STDOUT und STDERR hinschreiben kann. (Siehe hier: http://homematic-forum.de/forum/viewtop ... ing#p17471)

In deinem Script müssen zusätzlich noch folgende 2 Zeilen angepasst werden, damit "settime" korrekt ausgegeben wird. (Hatte ich im Script noch nicht wieder zurück geändert)

Code: Alles auswählen

var settime = regler.Timestamp();
integer diff = now.ToInteger() - settime.ToInteger();
Viele Grüße
Peter

CoolmanHB
Beiträge: 112
Registriert: 14.02.2010, 20:33
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 9 Mal
Danksagung erhalten: 6 Mal

Re: Heizungsthermostatscript

Beitrag von CoolmanHB » 14.02.2010, 20:43

Hallo,
erstmal vielen Dank für die Super Arbeit ! :D

so nun zu meinem Prob.

1.6.3 läuft sehr gut !

1.6.5 geht naja... bei Abwesenheit werden dieTermostaten auf OFF gesetzt. Heizung an/aus reagiert nicht usw.

... ausgetausch wurden nur die Scriptzeilen, sonst wurden keine Veränderungen vorgenommen.

für Hilfe ist das Geenhorn dankbar :roll:
@TinkerS - CCU3 boxed Metall… und Dualbeam-Antenne -
:wink:
Die Anzahl der Funkkanäle hängt vom Gerätetyp (z. B. Schaltaktor oder Wandtaster) ab. Typerweise können 100 bis 120 Funk-Geräte und 127 Wired Geräte angelernt werden

Petrus
Beiträge: 135
Registriert: 13.01.2010, 20:53
Hat sich bedankt: 1 Mal
Danksagung erhalten: 25 Mal

Re: Heizungsthermostatscript

Beitrag von Petrus » 14.02.2010, 21:12

Hallo Greenhorn, :wink:
... ausgetausch wurden nur die Scriptzeilen, sonst wurden keine Veränderungen vorgenommen.
Wenn du nur die Scriptzeilen getauscht hast, dann hast du auch praktisch das ganzen Script getauscht. Denn von der Version 1.6.3 nach 1.6.5 wurde das gesamte Script durchoptimiert (auch einige Variablennamen haben sich geändert). Mittlerweile habe ich auch die Version 1.6.5 noch einmal überarbeitet. Das betrifft hierbei allerdings hauptsächlich die Variablendefinitionen.

Zurück zur V1.6.5. Dies läuft bei mir, und ich denke bei erik ebenfalls - hat er vorab getestet -, einwandfrei. Daher meine Empfehlung: Nimm das neue Script komplett und ändere dabei dann nur die Zeilen, die für deinen Zweck nowendig sind.

Nachfolgend als Überblick die Änderungen bei 1.6.5.

1. Zusammenfassen von IF-Anweisungen
Sämtliche IF-Anweisungen, die zu einer "Funktionseinheit" gehören, wurden mit else ergänzt. Das bedeutet, trifft die Bedingung bei einer IF-Anweisung zu, werden die anderen ignoriert. Voher wurden grundsätzlich alle abgearbeitet.

2. Abfrage der Geräte im Raum nur 1. Mal
Die Geräteabfrage im Raum wurde in einer Schleife zusammengefasst. Bisher sind alle Geräte 2 mal "abgescannt" worden. 1 mal bei der Abfrage der Verschlüsse - hier wurde das Wandthermostat übersprungen - und ein 2. mal bei der Abfrage des Wandthermostates - hier wurden die Verschlüsse übersprungen -. Die Abfrage geschieht ja stets auf den Raum definiert. Da die gelesenen Werte in den Variablen gespeichert werden, ist nur 1 Abfrage notwendig. Diese findet nun bei den Verschlüssen statt.

3. Gewerkabfrage [Kanal 2] entfernt
Die zusätzliche Abfrage nach dem Gewerk [Kanal2] wurde entfernt. Das setzen des Sollwertes geschieht nicht wie bisher allgemeingültig durch item.State(), sondern speziell durch regler.State(). regler wurde zuvor im Script als object definiert und zeigt daher direkt auf den 2. Kanal des Wandthermostaten. Die anderen Werte bleiben hierbei außen vor und unangetastet.

4. Debug-Zeile
Die Debug-Zeile bzgl. einer formatierten Darstellung im Log wurde geändert. Dies ist allerdings nur eine kosmetische Korrektur. Ist zwar übersichtlicher, sind allerdings auch 3 Zeilen mehr im Log.

Gruß
Peter

CoolmanHB
Beiträge: 112
Registriert: 14.02.2010, 20:33
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 9 Mal
Danksagung erhalten: 6 Mal

Re: Heizungsthermostatscript

Beitrag von CoolmanHB » 14.02.2010, 21:38

Danke Peter für di "Nachtarbeit" !

Ich werde mal wie vorgeschlagen vorgehen, und dann berichten.
Rüdiger
@TinkerS - CCU3 boxed Metall… und Dualbeam-Antenne -
:wink:
Die Anzahl der Funkkanäle hängt vom Gerätetyp (z. B. Schaltaktor oder Wandtaster) ab. Typerweise können 100 bis 120 Funk-Geräte und 127 Wired Geräte angelernt werden

CoolmanHB
Beiträge: 112
Registriert: 14.02.2010, 20:33
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 9 Mal
Danksagung erhalten: 6 Mal

Re: Heizungsthermostatscript

Beitrag von CoolmanHB » 14.02.2010, 21:56

..ich nochmal..

soo ich habe das komplette Script genommen und angepasst.
Das Ergebnis ist das gleiche z.B. bei Abweswesenheit Termostat = OFF

Das neue Script habe ich als Wohnzimmer definiert
Alle anderen sind noch 1.6.3

Sorry


Feb 14 21:43:50 (none) user.debug script: Thermostat Wohnzimmer neu gesetzt!
Feb 14 21:43:51 (none) user.debug script: alte_Solltemperatur: 23.500000 neue_Solltemperatur: 0.000000
Feb 14 21:43:51 (none) user.debug script: Letzte_Aenderung: 2010-02-14 21:09:09 Zeitdifferenz:
Feb 14 21:43:52 (none) user.debug script: Thermostat_Schlafzimmer_neu_gesetzt:_alt_:_17.500000_Solltemp:_10_Letzte_Aenderung:_2010-02-14 20:23:15_Time diff:_4837_Sekunden
Feb 14 21:43:53 (none) user.debug script: Thermostat_Kueche_neu_gesetzt:_alt_:_22.500000_Solltemp:_19_Letzte_Aenderung:_2010-02-14 20:26:16_Time diff:_4657_Sekunden
Feb 14 21:43:57 (none) user.debug script: Thermostat_Bad_neu_gesetzt:_alt_:_24.000000_Solltemp:_19_Letzte_Aenderung:_2010-02-14 20:22:30_Time diff:_4887_Sekunden
Feb 14 21:45:01 (none) cron.notice crond[1028]: USER root pid 9007 cmd /bin/arm7setclock
@TinkerS - CCU3 boxed Metall… und Dualbeam-Antenne -
:wink:
Die Anzahl der Funkkanäle hängt vom Gerätetyp (z. B. Schaltaktor oder Wandtaster) ab. Typerweise können 100 bis 120 Funk-Geräte und 127 Wired Geräte angelernt werden

Petrus
Beiträge: 135
Registriert: 13.01.2010, 20:53
Hat sich bedankt: 1 Mal
Danksagung erhalten: 25 Mal

Re: Heizungsthermostatscript

Beitrag von Petrus » 14.02.2010, 22:04

Hallo Rüdiger,

mmmh, aus der Ferne schlecht zu beurteilen wo der Fehler liegt. Ich kann dir anbieten mir mal dein Script anzuschauen. Sende es mir doch mal per PN. Kann dir allerding nicht versprechen, dass das heute Abend noch was wird. Werde es mir aber morgen zur Brust nehmen und dir dann zurücksenden.

Grüße
Peter

erik
Beiträge: 776
Registriert: 31.10.2007, 13:32
Hat sich bedankt: 6 Mal
Danksagung erhalten: 6 Mal

Re: Heizungsthermostatscript

Beitrag von erik » 14.02.2010, 23:39

Hi,

kannst Du bitte das Script mal in de Parser werfen und den Output von http://<IP Deiner CCU>:8181/config/post.htm parsen.
Das mit dem "OFF" macht mich stutzig. Das kommt nur, wenn man "0" an dem Regler sendet. ALso mal schauen, wo <VAriablen-Name> = 0 gesetzt wird.

Ich habe bei mir die 1.6.5, wie diese online ist laufen, und Frau hat sich nicht beschwert - funktioniert super :-)

@ Peter, was hast Du nach 1.6.5 noch verändert / optimiert. Lohnt es sich für 1.6.6?


Grüße

Erik

Petrus
Beiträge: 135
Registriert: 13.01.2010, 20:53
Hat sich bedankt: 1 Mal
Danksagung erhalten: 25 Mal

Re: Heizungsthermostatscript

Beitrag von Petrus » 15.02.2010, 10:45

Hi Erik,

ich werde mir die beiden Versionen mal ansehen. Vielleicht ist die zusätzliche Option, die ich für meinen Anwendungsfall eingefügt habe, ja auch für andere von Interesse. Ich habe auch noch Rüdigers Script zur Durchsicht vorliegen. Bin gerade auf Arbeit und werde mir das Ganze heute Abend mal vornehmen, wenn nichts dazwischen kommt. Sobald ich Ergebnisse habe bekommst du eine PN. Kannst dann selber entscheiden ob es für ein neues Release ausreicht.

Grüße
Peter

erik
Beiträge: 776
Registriert: 31.10.2007, 13:32
Hat sich bedankt: 6 Mal
Danksagung erhalten: 6 Mal

Re: Heizungsthermostatscript

Beitrag von erik » 15.02.2010, 11:06

Hi Peter,

heute ist bei uns Rosenmontag - Narrenfreiheit. Hier in Köln geht es drunter und drüber... :-)
Wäre gut zu wissen, wo genau das Problem bei Rüdiger liegt. Wir sollten versuchen eine letzte aktuelle Version zu schaffen, mit der alle glücklich sind.
Das macht den Support einfacher.....

In dem Sinne bis heute Abend...

Kölle Alaaf

Erik

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“