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

[UPDATE]: Racecondition im Code gefunden; in Post #36 Beschrieben!

[UPDATE]: Thread-Titel geändert, da es wohl doch nichts mit dem Zwischenstecker zu tun hat, sondern nach z.B. einem rereadcfg nicht mehr automatisch startet...


Hallo zusammen,
ich habe ein problem mit HCS. Nach (kurzer) Zeit schaltet HCS die Heizung nicht mehr und bleibt so.
Der Status wechselt dann von "demand" oder idle" auf "Initialized". Dann geht nichts mehr.
Bei "get HCS_System values" Sind alle Werte dann 0 und next check ist n/a.

Wenn ich ein "set HCS_System on" ausführe, funktioniert alles wie es soll. Für 30 Minuten oder so. Dann fällt es ohne Fehlermeldung im log wieder aus und besitzt den State "initialized".
Im Log erscheinen keine Regelmäßigen Fehlermeldungen
Dazu: es gibt folgende Besonderheiten in meinem Setup:
-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
{if( ReadingsVal("HA_Heizung_Schalter","valveposition","-") eq 0) { return "on" } else { return "off"}}; das erzeugt einen Fehler im Log von HCS, allerdings weiß ich nicht, ob die Ausfälle damit zu tun haben;


Ansonsten finde ich im Log keine so richtig passenden Fehler, auch mit verbose 5.
Meiner Meinung nach sollte HCS den Schalter doch ignorieren, also bitteschön auch nicht versuchen dort irgend was zu lesen.


Ich halte es für einen Bug. Hilfe? Was kann ich tun?:(

Momentan schalte ich per notify jede Minute das Modul mit set HCS_System on wieder aktiv.....

Folgende Infos noch:
(Es existiert ein Dummy HA_Heizung_Modus zum abschalten von HCS, dafür wird die Sensorfunktion von HCS missbraucht; das funktioniert auch, ich denke nicht dass hier der Fehler ist, sonst wäre der State von HCS_System trotzdem nicht "initialized")


define HA_Heizung_Schalter MAX HeatingThermostat 074ed0
attr HA_Heizung_Schalter IODev cm
attr HA_Heizung_Schalter alias Gastherme
attr HA_Heizung_Schalter event-on-change-reading desiredTemperature,mode,state,temperature,valveposition
attr HA_Heizung_Schalter room Haus
attr HA_Heizung_Schalter stateFormat {if( ReadingsVal("HA_Heizung_Schalter","valveposition","-") eq 0) { return "on" } else { return "off"}}
define FileLog_HA_Heizung_Schalter FileLog ./log/HA_Heizung_Schalter-%Y.log HA_Heizung_Schalter
attr FileLog_HA_Heizung_Schalter logtype text
attr FileLog_HA_Heizung_Schalter room Unsorted

#### Heizung: Winterbetrieb Sommerbetrieb
define HA_Heizung_Modus dummy
attr HA_Heizung_Modus alias Betriebsmodus
attr HA_Heizung_Modus fp_Heizung 36,220,7,
attr HA_Heizung_Modus group Betriebsmodus
attr HA_Heizung_Modus room Haus
attr HA_Heizung_Modus setList state:Winter,Sommer
attr HA_Heizung_Modus userReadings HCS_TEMP { if (ReadingsVal("HA_Heizung_Modus","state","Unbekannt") eq "Winter"){return 0} else {return 30};;}
attr HA_Heizung_Modus webCmd state

define HCS_System HCS HA_Heizung_Schalter
attr HCS_System alias Heizungssteuerung
attr HCS_System deviceCmdOff desiredTemperature on
attr HCS_System deviceCmdOn desiredTemperature off
attr HCS_System event-on-change-reading state,devicestate,eco,overdrive
attr HCS_System exclude HA_Heizung_Schalter
attr HCS_System idleperiod 5
attr HCS_System interval 2
attr HCS_System loglevel 3
attr HCS_System mode valve
attr HCS_System room System
attr HCS_System sensor HA_Heizung_Modus
attr HCS_System sensorReading HCS_TEMP
attr HCS_System sensorThresholdOff 20
attr HCS_System sensorThresholdOn -1
attr HCS_System thermostatThresholdOff 0.5
attr HCS_System thermostatThresholdOn 0.5
attr HCS_System valveThresholdOff 10
attr HCS_System valveThresholdOn 40


(Wenn es funktioniert): get HCS_System values
BA_Thermostat_Fenster: desired: 10.0°C measured: 14.4°C delta: +4.4 valve:   0% state: idle
HA_Heizung_Schalter  : desired:  0.0°C measured: 20.0°C delta: +20.0 valve: 100% state: (excluded)
KU_Thermostat_Fenster: desired: 18.5°C measured: 20.8°C delta: +2.3 valve:   0% state: idle
KU_Thermostat_Tuer   : desired: 18.5°C measured: 20.7°C delta: +2.2 valve:   0% state: idle
MA_Thermostat_Fenster: desired: 20.5°C measured: 23.6°C delta: +3.1 valve:   0% state: idle
WZ_Thermostat_Fenster: desired: 19.0°C measured: 19.2°C delta: +0.2 valve:   0% state: idle
WZ_Thermostat_Tuer   : desired: 19.0°C measured: 19.2°C delta: +0.2 valve:   0% state: idle
next check: 22:14:17


(Wenn es nicht mehr funktioniert): get HCS_System values
BA_Thermostat_Fenster: desired: 0.0°C measured: 0.0°C delta: 0.0 valve:   0% state: idle 
HA_Heizung_Schalter  : desired:  0.0°C measured: 0.0°C delta: 0.0 valve: 0% state: (excluded)
KU_Thermostat_Fenster: desired: 0.0°C measured: 0.0°C delta: 0.0 valve:   0% state: idle
KU_Thermostat_Tuer   : desired: 0.0°C measured: 0.0°C delta: 0.0 valve:   0% state: idle
MA_Thermostat_Fenster: desired: 0.0°C measured: 0.0°C delta: 0.0 valve:   0% state: idle
WZ_Thermostat_Fenster: desired: 0.0°C measured: 0.0°C delta: 0.0 valve:   0% state: idle
WZ_Thermostat_Tuer   : desired: 0.0°C measured: 0.0°C delta: 0.0 valve:   0% state: idle
next check:  n/a



Mr.Heat

Wenn schon niemand eine Antwort hat, wäre es gut, wenn der Thread vielleicht irgendwo hin geschoben wird, wo er vom HCS-Maintainer gelesen wird. Das MAX-Forum wird wohl nicht von allen gelesen...

Es ist eindeutig ein Bug, der mit dieser Konstellation zusammen hängt. Ich helfe gerne beim Fixen und stelle alle notwendigen Daten bereit.

LG

stromer-12

FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

stromer-12

Ist es wirklich jede halbe Stunde oder wenn du an FHEM arbeitest?
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

Mr.Heat

#4
Es scheint jedes mal wenn hcs schaltet. Es ist mir aufgefallen, Da es kalt geblieben ist und nicht mehr geschaltet wurde. Der Status war dann eben "initialized"... und die einzige Auffälligkeit, dass HCS den Status des Steckdosenschalters nicht korrekt parsen konnte ( weil ich diesen mit stateformat angepasst habe). Der ist aber in HCS als exclude angegeben und sollte HCS eigentlich ignorieren...
Schalten tut HCS aber korrekt, und macht nach einem set HCS_System on" auch wieder weiter... eine Zeit lang. Nachdem das mehrfach passiert ist habe ich halt das notify dazu gemacht, da es ansonsten funktioniert...

folgendes sollte der Maintainer mal checken/ändern, und vielleicht ist das Problem dann behoben:

1. ist StateFormat ein Problem für HCS? warum? eventuell sollte das berücksichtigt werden, dass manche Thermostaten eventuell per StateFormat einen anderen Status als erwartet besitzen

2. Was interessiert sich HCS für Thermostaten, die auf der Exclude-Liste stehen? Das hat manchmal einen speziellen Grund (z.B. dass das wie bei mir ein Schaltaktor ist) und HCS hat dann weder dort was zu lesen oder sonst was.

3. Wenn es das nicht ist, dann besteht die Möglichkeit, dass es HCS stört, dass das zu schaltende Gerät ebenfalls ein "Thermostat" ist. Ich gehe aber mal davon aus, dass das nicht der Fall ist.


EDIT: das Loglevel-Attribut steht auf 3 (laut Commandref das Gesprächigste). Verbose=5 hat nicht viel gebracht, außer der Meldung, dass der State des einen Thermostaten nicht korrekt verstanden wurde (s. auch Eingangspost).

stromer-12

Bei mir geht HCS in den Status "initialized" nur nach einen reload der fhem.cfg ansonsten arbeitet es bis auf ein paar Fehlermeldungen bei Tempwerten mit on/off fehlerfrei.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

Mr.Heat

Zeigt ein
get HCS_System values

denn dann auch nur noch 0 für alle Werte und n/a für die Zeit?

stromer-12

FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

The-Holgi

#8
Hm, bei mir läuft es seit 24 Stunden ohne Probleme. Habe 6 MAX HT´s wovon ich 2 mit exclude außschließe.
Geschaltet wird über einen Homematic Zwischenstecker.
Habe nur noch nicht verstanden was es mit dem temperatursensor den man definieren kann auf sich hat, ist damit ein Außentemperaturfühler gemeint ?
Wenn ja, was bewirkt er ?

Gruß Holgi
HP T610 Thin Client; Docker Fhem 5.9; 2X CUL V3 868mhz; Max Heizungssteuerung; FS20kse; FS20UWS; FS20S8-3; 2 FS20DI; HM-CFG-LAN,HM-LC-SW1-PL,HM-SEC-SD, HM-SE1PBU-FM;
Harmony Hub;Hue-Bridge mit Iris, E27 Bulb & FLS-PP

stromer-12

Damit kann HCS die Heizung auf "demand (overdrive)" bei unterschreiten der unteren Temperaturschwelle bzw. "idle" bei überschreiten der oberen Temperaturschwelle schalten.


sensor                 CUL_WS_6
sensorReading          temperature
sensorThresholdOff     18
sensorThresholdOn      2


Hier wird die Heizung bei unterschreiten von 2°C auf Dauerbetrieb gestellt, keine Auswertung der Thermostate mehr.(Frostschutz)
Bei Überschreitung der 18°C wird die Heizung abgeschaltet, ebenfalls keine Auswertung der Thermostate mehr.(Sommerbetrieb)
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

Mr.Heat

Kann mal jemand von euch das stateformat von mir für einen Thermostaten eintragen und gucken ob es dann noch funktioniert?
( für einen tag oder so)
Wäre wirklich nett!

LG

pappn

Hast du zwischendurch mal ein ReReadCfg gemacht? Das beschriebene Verhalten tritt bei mir nur auf, wenn ich den Befehl "rereadcfg" absetzte. Sonst keinerlei ungewöhnliches Verhalten. HCS läuft bei mir seit über einem Jahr zuverlässig.
"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

Okay, ich mache jetzt den Test nochmal.

Ich habe das notify herausgenommen.

Wenn es heute Abend nicht warm wird, ist irgend was anders bei mir.

LG

Mr.Heat

okay, so lange brauche ich nicht warten, denke ich....

er ist immernoch auf Initalized" im Status, folgendes im Log seit der Änderung:
2015.02.02 13:04:43 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/59_HCS.pm line 489.
2015.02.02 13:04:43 1: PERL WARNING: Use of uninitialized value in sprintf at ./FHEM/59_HCS.pm line 489.
2015.02.02 13:04:43 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/59_HCS.pm line 491.
2015.02.02 13:04:43 1: PERL WARNING: Use of uninitialized value in sprintf at ./FHEM/59_HCS.pm line 491.
2015.02.02 13:04:43 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/59_HCS.pm line 493.
2015.02.02 13:04:43 1: PERL WARNING: Use of uninitialized value in sprintf at ./FHEM/59_HCS.pm line 493.
2015.02.02 13:04:43 1: PERL WARNING: Use of uninitialized value in numeric eq (==) at ./FHEM/59_HCS.pm line 495.
2015.02.02 13:04:43 1: PERL WARNING: Use of uninitialized value in numeric eq (==) at ./FHEM/59_HCS.pm line 496.

Das ist alles. Sonst gab es keine Einträge. Auf eine Ventiländerung (80%, boost) wird nicht reagiert. Es wird nicht mehr geheizt.

Warum?

stromer-12

Die Meldungen kommen bei "get HCS values" wenn ein Device keine Werte hat. Sollte eigentlich nicht vorkommen.

Wie sieht den dein List von deinen HA_Heizung_Schalter aus?

Ich habe hier kein MAX im Einsatz.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL