59_HCS.pm: kein Start nach rereadcfg; angepasste 59_HCS.pm in Beitrag #37

Begonnen von Mr.Heat, 26 Januar 2015, 22:07:25

Vorheriges Thema - Nächstes Thema

Mr.Heat

list HA_Heizung_Schalter:
Internals:
   CHANGED
   DEF        HeatingThermostat 074ed0
   IODev      cm
   LASTInputDev cm
   MSGCNT     352
   NAME       HA_Heizung_Schalter
   NR         53
   RSSI       -61
   STATE      off
   TYPE       MAX
   addr       074ed0
   backend    cm
   cm_MSGCNT  352
   cm_TIME    2015-02-02 21:12:35
   dstsetting 1
   mode       1
   rferror    0
   type       HeatingThermostat
   Readings:
     2015-01-26 19:00:30   MAXLAN_error    0
     2015-01-26 19:00:30   MAXLAN_errorInCommand 0
     2015-01-26 19:00:30   MAXLAN_initialized 1
     2015-01-26 19:00:30   MAXLAN_isAnswer 0
     2015-01-26 19:00:30   MAXLAN_valid    1
     2015-01-26 19:02:08   TimeInformationHour 5
     2015-02-02 21:12:35   battery         ok
     2015-01-26 20:08:50   boostDuration   25
     2015-01-26 20:08:50   boostValveposition 80
     2015-01-26 20:08:50   comfortTemperature 21.0
     2015-01-26 20:08:50   decalcification Sat 12:00
     2015-02-02 21:12:35   desiredTemperature on
     2015-01-26 20:08:50   ecoTemperature  17.0
     2015-01-26 20:08:50   firmware        1.1
     2015-01-26 20:10:43   groupid         5
     2015-01-26 20:08:50   maxValveSetting 100
     2015-01-26 20:08:50   maximumTemperature on
     2015-01-26 20:08:50   measurementOffset 0.0
     2015-01-26 20:08:50   minimumTemperature off
     2015-02-02 21:12:35   mode            manual
     2015-02-02 21:12:34   msgcnt          148
     2015-02-02 21:12:35   state           on °C
     2015-02-02 20:24:44   temperature     20.0
     2015-01-26 20:08:50   testresult      170
     2015-01-26 20:08:50   valveOffset     0
     2015-02-02 21:12:35   valveposition   100
     2015-01-26 20:49:31   weekprofile-0-Sat-temp 30.5 °C  /  30.5 °C
     2015-01-26 20:49:31   weekprofile-0-Sat-time 00:00-23:00  /  23:00-00:00
     2015-01-26 20:49:31   weekprofile-1-Sun-temp 30.5 °C  /  30.5 °C
     2015-01-26 20:49:31   weekprofile-1-Sun-time 00:00-23:00  /  23:00-00:00
     2015-01-26 20:49:31   weekprofile-2-Mon-temp 30.5 °C  /  30.5 °C
     2015-01-26 20:49:31   weekprofile-2-Mon-time 00:00-23:00  /  23:00-00:00
     2015-01-26 20:49:31   weekprofile-3-Tue-temp 30.5 °C  /  30.5 °C
     2015-01-26 20:49:31   weekprofile-3-Tue-time 00:00-23:00  /  23:00-00:00
     2015-01-26 20:49:31   weekprofile-4-Wed-temp 30.5 °C  /  30.5 °C
     2015-01-26 20:49:31   weekprofile-4-Wed-time 00:00-23:00  /  23:00-00:00
     2015-01-26 20:49:31   weekprofile-5-Thu-temp 30.5 °C  /  30.5 °C
     2015-01-26 20:49:31   weekprofile-5-Thu-time 00:00-23:00  /  23:00-00:00
     2015-01-26 20:49:31   weekprofile-6-Fri-temp 30.5 °C  /  30.5 °C
     2015-01-26 20:49:31   weekprofile-6-Fri-time 00:00-23:00  /  23:00-00:00
     2015-01-26 20:08:50   windowOpenDuration 15
     2015-01-26 20:08:50   windowOpenTemperature 12.0
   Internals:
     interfaces thermostat;battery;temperature
Attributes:
   IODev      cm
   alias      Gastherme
   event-on-change-reading desiredTemperature,mode,state,temperature,valveposition
   room       Haus
   stateFormat {if( ReadingsVal("HA_Heizung_Schalter","valveposition","-") eq 0) { return "on" } else { return "off"}}

stromer-12

Kannst ja mal loglevel bei HCS auf 0 stellen, vielleicht sieht man ja dann bei welchen Werten er abbricht.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

Mr.Heat

#17
Eigentlich stellt sich vielmehr die Frage, was HCS da überhaupt zu parsen hat.
Es ist offensichtlich, dass mein Stateformat, was ja statt Temperatur im State nur on oder off anzeigt, die Ursache ist. Das werde ich aber aufgrund eines Bugs in HCS nicht ändern, denn das ist ein Workaround und keine Lösung.

Der Schalter-Thermostat ist excluded und sollte deshalb von HCS nicht mehr geparst werden! -> Das sollte also eine Änderung von HCS nach sich ziehen.

Ich stelle mal loglevel auf 0... laut Dokumentation sollte das ja keinen Unterschied machen, tut es aber offensichtlich :) werde Rückmelden wenn was Auffälliges dabei ist.

LG

stromer-12

stateFormat ändert den STATE und den fast HCS nicht an.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

pappn

Ich habe auf meinen FHT auch ein stateformat drauf und das hat keinen Einfluss auf HCS.
Ich habe mir auch mal den Code des Moduls angesehen. Darin wird der state nicht ausgewertet. Ich glaube daher nicht, dass es daran liegt. Leider habe ich aber auch keine Idee, woran es liegen könnte.

Sorry
"When all else fails, read the instructions."

CUL868, RFXTFX433 und CCU3
FS20, S300TH, UNIRoll, Homematic IP, OZW672, diverse HOMEEASY, IT kompatible und China Zeugs

Mr.Heat

mit loglevel funktioniert HCS bis jetzt... das ist komisch. Das letzte mal hat es nicht lange gedauert.

Ich lasse es so, mal sehen ob es wieder passiert...ich weiß nicht, wodurch ich diese Fehler produzieren kann (die ja das letzte mal auch PERL-Warnungen generiert haben)

LG

stromer-12

Auf was für einen Wert hattest du den Loglevel vorher?
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL


Mr.Heat

#23
Okay, habe Neuigkeiten....
------------------------------UDPATE
Ich kann den Fehler jetzt wohl reproduzieren:

Ursprungszustand: HCS steht auf Status Initialized, funktioniert nicht.
1. shutdown restart - HCS läuft an und funktioniert. Es werden minütlich die Thermostaten geparst (Einträge im log).
2. fhem.cfg wird mit dem Webeditor geöffnet und wieder gespeichert; fhem läd die fhem.cfg und weiteres neu
3. HCS IST AUSGEFALLEN/startet nicht. Fehler gibt es keine, Regelmäßige Logeinträge auch nicht. HCS macht nichts, und bleibt ewig im Status Initialized.
4. "get HCS_System values" wird ausgeführt; DAS GENERIERT DIE FEHLER IM LOG, allerdings nur beim ersten Aufruf....
2015.02.04 15:16:27 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/59_HCS.pm line 489.
2015.02.04 15:16:27 1: PERL WARNING: Use of uninitialized value in sprintf at ./FHEM/59_HCS.pm line 489.
2015.02.04 15:16:27 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/59_HCS.pm line 491.
2015.02.04 15:16:27 1: PERL WARNING: Use of uninitialized value in sprintf at ./FHEM/59_HCS.pm line 491.
2015.02.04 15:16:27 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/59_HCS.pm line 493.
2015.02.04 15:16:27 1: PERL WARNING: Use of uninitialized value in sprintf at ./FHEM/59_HCS.pm line 493.
2015.02.04 15:16:27 1: PERL WARNING: Use of uninitialized value in numeric eq (==) at ./FHEM/59_HCS.pm line 495.
2015.02.04 15:16:27 1: PERL WARNING: Use of uninitialized value in numeric eq (==) at ./FHEM/59_HCS.pm line 496.

HCS läuft nun nur wieder an, wenn fhem komplett neu gestartet wird oder mit set HCS_System on. Wird get HCS_System values (Schritt 4) nicht durchgeführt, so gibt es keinerlei Fehler im log, aber HCS läuft auch nicht an.

-> HCS scheint bei einem "Warmstart" durch z.B. Speichern der fhem.cfg im laufenden Betrieb nicht korrekt zu überstehen....

Hilft das weiter?



------------------------------------------
HCS lief also jetzt eine Zeit lang. Aus anderen Gründen habe ich die fhem.cfg mehrfach geändert und wieder gespeichert. Dabei ist folgendes passiert:
1. nach dem neuladen der fhem.cfg läuft fhem wieder an.
2. HCS verabschiedet sich mit diversen PERL-Fehlern, ohne selbst Logmeldungen zu generieren.
3. HCS bleibt mit Status initialized dauerhaft inaktiv, auch nach erneutem Laden der fhem.cfg (kein kompletter Shutdown von FHEM)
4. Haus bleibt kalt.
5. wird jetzt ein "set HCS_System on" gesetzt, so läuft HCS an, der Status ändert sich, die Thermostaten werden wieder geparst;
6. jedes Speichern der fhem.cfg sorgt für einen erneuten, dauerhaften! Ausfall von HCS: HCS läuft nicht an, bis nach dem Neuladen ein set HCS_System on abgesetzt wird. PERL-Fehlermeldungen gibt es nicht.
2015.02.04 12:25:08 1: HCS HCS_System BA_Thermostat_Fenster: desired: 10.0 measured: 15.5 delta: +5.5 valve:   0% state: idle
2015.02.04 12:25:08 1: HCS HCS_System HA_Heizung_Schalter: excluded
2015.02.04 12:25:08 1: HCS HCS_System KU_Thermostat_Fenster: desired: 16.0 measured: 15.7 delta: -0.3 valve:  32% state: idle
2015.02.04 12:25:08 1: HCS HCS_System KU_Thermostat_Tuer: desired: 16.0 measured: 17.8 delta: +1.8 valve:   0% state: idle
2015.02.04 12:25:08 1: HCS HCS_System MA_Thermostat_Fenster: desired: 16.0 measured: 17.6 delta: +1.6 valve:   0% state: idle
2015.02.04 12:25:08 1: HCS HCS_System WZ_Thermostat_Fenster: desired: 16.0 measured: 18.6 delta: +2.6 valve:   0% state: idle
2015.02.04 12:25:08 1: HCS HCS_System WZ_Thermostat_Tuer: desired: 16.0 measured: 18.6 delta: +2.6 valve:   0% state: idle
2015.02.04 12:25:08 0: HCS HCS_System Found 7 Device(s): 0 FHT, 0 HM-CC-TC, 7 MAX, demand: 0, idle: 6, ignored: 0, excluded: 1, unknown: 0, eco: no overdrive: no
2015.02.04 12:25:29 3: HourCounter HA_Gastherme_Stats Undef.272 Done
2015.02.04 12:25:29 1: Including fhem.cfg
2015.02.04 12:25:29 3: telnetPort: port 7072 opened
2015.02.04 12:25:29 3: WEB: port 8083 opened
2015.02.04 12:25:29 3: WEBextern: port 8086 opened
2015.02.04 12:25:30 3: Opening CUL0 device /dev/ttyACM0
2015.02.04 12:25:30 3: Setting CUL0 baudrate to 9600
2015.02.04 12:25:30 3: CUL0 device opened
2015.02.04 12:25:30 3: CUL0: Possible commands: BbCFiAZEGMKUYRTVWXefmltux
2015.02.04 12:25:30 2: Switched CUL0 rfmode to MAX
2015.02.04 12:25:30 3: CUL_MAX_Check: Detected firmware version 161 of the CUL-compatible IODev
2015.02.04 12:25:31 1: Including ./log/fhem.save
2015.02.04 12:25:35 3: HourCounter HA_Gastherme_Stats Undef.272 Done
2015.02.04 12:25:35 1: Including fhem.cfg
2015.02.04 12:25:36 3: telnetPort: port 7072 opened
2015.02.04 12:25:36 3: WEB: port 8083 opened
2015.02.04 12:25:36 3: WEBextern: port 8086 opened
2015.02.04 12:25:36 3: Opening CUL0 device /dev/ttyACM0
2015.02.04 12:25:36 3: Setting CUL0 baudrate to 9600
2015.02.04 12:25:36 3: CUL0 device opened
2015.02.04 12:25:36 3: CUL0: Possible commands: BbCFiAZEGMKUYRTVWXefmltux
2015.02.04 12:25:36 2: Switched CUL0 rfmode to MAX
2015.02.04 12:25:36 3: CUL_MAX_Check: Detected firmware version 161 of the CUL-compatible IODev
2015.02.04 12:25:37 1: Including ./log/fhem.save
2015.02.04 12:26:37 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/59_HCS.pm line 489.
2015.02.04 12:26:37 1: PERL WARNING: Use of uninitialized value in sprintf at ./FHEM/59_HCS.pm line 489.
2015.02.04 12:26:37 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/59_HCS.pm line 491.
2015.02.04 12:26:37 1: PERL WARNING: Use of uninitialized value in sprintf at ./FHEM/59_HCS.pm line 491.
2015.02.04 12:26:37 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/59_HCS.pm line 493.
2015.02.04 12:26:37 1: PERL WARNING: Use of uninitialized value in sprintf at ./FHEM/59_HCS.pm line 493.
2015.02.04 12:26:37 1: PERL WARNING: Use of uninitialized value in numeric eq (==) at ./FHEM/59_HCS.pm line 495.
2015.02.04 12:26:37 1: PERL WARNING: Use of uninitialized value in numeric eq (==) at ./FHEM/59_HCS.pm line 496.

Mitch

hört sich aber "normal" an.

Bei mir verhält sich das so:
wenn fhem Neustart > HCS initialisiert (bleibt auch so)
Ich muss dann immer HCS einschalten. DIes passiert aber über den gespeicherten State - dieser war ON und wird wieder gesetzt
Wenn ich die gespeicherten States lösche (file löschen), dann bleibt HCS auch auf initialisiert

Einzig warum bei Dir ein speichern HCS "ausfält" finde ich merkwürdig.

Zu Deinem Max Zwischenstecker, du schreibst
Zitat-Die Gastherme wird über einen MAX! zwischenstecker geschaltet (Dieser sieht aus wie ein Thermostat)
-Deshalb ist er mit exclude ausgenommen in HCS (was auch korrekt angezeigt wird in HCS)
-Er hat allerdings ein anderes State-Reading mit stateformat: stateFormat

Wie ist denn der Max in fhem definiert und wie wird er geschalten?
Wenn ich mich recht erinnere, kannst Du in HCS ja definieren, wie das Device benutzt werden soll bzw. welche Befehle benutzt werden sollen.
attr HCS-Device deviceCmdOn
attr HCS-Device deviceCmdOff
FHEM im Proxmox Container

Mitch

Nachtrag, habs in deiner cfg gefunden:

attr HCS_System deviceCmdOff desiredTemperature on
attr HCS_System deviceCmdOn desiredTemperature off


das geht doch so nicht?

Was ist denn der  MAX HeatingThermostat genau? Ist das eigentlich ein Raumregeler?
Kann man den ein und aus schalten?
Hängt der an deiner Therme, um diese zu schalten?
FHEM im Proxmox Container

Mr.Heat

Doch, das ist korrekt und funktioniert.
Es handelt sich um einen Steckdosen-Schaltaktor von MAX: http://www.elv.de/max-zwischenstecker.html

Dieser ist allerdings kein separates Gerät, sondern wird vom Cube und von FHEM als MAX-Thermostat erkannt. Dabei besitzt dieser eine definierte Schwelle bei der Solltemperatur, unter der/über der er einschaltet. Die Temperaturen "on" und "off" sind bei MAX-Thermostaten erlaubt; sie entsprechen 30.5 bzw. 4.5 Grad als Zahl. Thermostaten zeigen dann im Display aber den Zustand "on" oder "off" und reißen das Ventil voll auf bzw. komplett zu.

Der Schaltaktor verhält sich ähnlich: "on" -> Schaltaktor schaltet 230V durch
"off"-> er Schaltet die 230V aus.
Als Rückmeldung benutzt er valveposition: ist der Schalter an, so gibt er eine valveposition von 100 an, ist er aus, so ist die valveposition 0.

An dem Schaltaktor habe ich ein 230V-Relais, welches eigentlich für Absauganlagen gedacht ist ( finde gerade den richtigen Namen nicht, die sehen so aus http://www.kaminplus.de/images/201208/SAM_2203.JPG).

D.h. wenn der MAX-Schaltaktor an ist, wird ein Relais angezogen und die zwei Kontakte miteinander verbunden, und zwar potentialfrei.
Das geht an einen Eingang an meiner Therme (schon älter), an der genau das gefordert wird: Kontakte durchverbunden -> Heizung aus, nur Warmwasser; Kontakte offen -> Heizen erlaubt.

Deshalb auch die Verdrehung: desiredTemperature on -> Schaltaktor Schaltet durch -> Relais zieht an -> Heizung ist aus und umgekehrt.

LG

Mitch

Ich verstehe es leider immer noch nicht  ???

Also bei mir ist das so:
an den Heizungen sind FHT und HM Ventile, diese sind in HCS definiert.
An der Therme hängt ein HM Aktor, der die Therme ein bzw. aus schaltet. Dieser wiederum ist in FHEM definiert und wird über HCS geschalten.

Jetzt vergleicht HCS die Temperature, die von den Ventilen gemeldet werden und schaltet nach den eingestellten Schwellwerten den HM Aktor an der Therme.


Nun fehlt mir iregndwie der Zusammenhang mit diesem Max-Thermostat. Schaltet dies eine Therme oder einen Heizkörper?
Wenn es nicht mit on und off geschalten werden kann, dann würde ich persönlich vermutlich über einen Dummy gehen.
Aber wie gesagt, ich verstehe den Aufbau noch nicht ganz.
FHEM im Proxmox Container

Mr.Heat

Es gibt von dieser Seite nichts zu ändern, ich brauche weder einen Dummy noch habe ich Probleme damit, die Gastherme ein- oder auszuschalten! Das funktioniert seit 2 Jahren so, erst mit selbstgeschriebenem Perl-Script jetzt mit HCS (sofern HCS startet).

MAX ist ein reines Heizungssystem, nicht so universell wie Homematic. Dennoch wollte der Hersteller des MAX-Systems einen Schaltaktor für Steckdosen, ursprünglich wohl für Elektrische Heizkörper gedacht.
Das MAX-System sieht aber keine anderen Aktoren ausser Thermostaten, Wandthermostaten, Eco-Taster und Fensterkontakten vor. Deshalb verhält sich der MAX-Schaltaktor von der Software- und Protokollseite exakt wie ein Thermostat. Er kann über die Solltemperatur (desiredTemperature) an- und ausgeschaltet werden, und über die Valveposition der aktuelle Status gelesen werden. Da ich schon MAX-Komponenten hatte, habe ich diesen für die Gasthermensteuerung benutzt (s. oben.) Das ist nicht das Thema hier!

Der einzige Zufall ist halt, dass der Aktor in diesem Fall in FHEM halt auch ein MAX-Thermostat ist, und von HCS als solcher natürlich erkannt wird. Deshalb wird er per exclude ausgeklammert, das ist Alles. Ich dachte anfangs, es hätte etwas damit zu tun, aber ich glaube mittlerweile, das hat damit vielleicht garnichts zu tun...

Also nochmal:
-es wird ERFOLGREICH die Therme geschaltet
-es funktioniert on und off, und ja, das ist invertiert (on=Heizung aus off=Heizung an).
-HCS schaltet (meistens.....) den Schaltaktor (der als MAX-Thermostat anpsrechbar ist, aber in wirklichkeit keiner ist) nach den Ventilstellungen der anderen/echten MAX-Thermostate.

LG

Mr.Heat

Zitat von: Mitch am 04 Februar 2015, 15:25:17
hört sich aber "normal" an.

Bei mir verhält sich das so:
wenn fhem Neustart > HCS initialisiert (bleibt auch so)
Ich muss dann immer HCS einschalten. DIes passiert aber über den gespeicherten State - dieser war ON und wird wieder gesetzt
Wenn ich die gespeicherten States lösche (file löschen), dann bleibt HCS auch auf initialisiert

Einzig warum bei Dir ein speichern HCS "ausfält" finde ich merkwürdig.



Hmm. Das finde ich komisch... es ist gewollt, dass nach einem shutdown restart HCS einfach ausgeschaltet bleibt? Wieso? Das ist aber nicht gut, dann bleibt die Heizung nach einem Neustart kalt...

könnte es denn sein, dass die fhem.save aus irgend einem Grund fehlerhaft wird/ist bei mir? Wird die nach einem shutdown restart neu angelegt?