[gelöst] Heating Control mit Devolo/Danfoss Thermostaten?

Begonnen von Ronaldo, 01 Dezember 2016, 21:50:10

Vorheriges Thema - Nächstes Thema

Ronaldo

Moin,
ich bin gerade dabei meine Heizungssteuerung mit den Devolo MT2650-Thermostaten einzurichten.
Dazu bin ich soweit nach dem Wiki-Artikel zu HeatingControl vorgegangen, das gröbste funktioniert auch, jedoch ein entscheidendes Detail nicht, nämlich das (Rück-)Setzen der Temperaturen nach dem Zeitplan.
Wenn ich jetzt den Automatik-Dummy, mit folgendem Inhalt des dazugehörigen DOIF ([HeizungsAutomatik] eq "on") (Heating_Control_SetAllTemps(),set teleBot message Heizungsautomatik aktiv!) DOELSE (set Heizungsventile thermostatSetpointSet 17.0,set teleBot message Heizungsautomatik deaktiviert!) ausschalte, werden meine Thermostate auch brav alle auf 17° gesetzt.
Wenn ich den aber wieder aktiviere und er die Sollwerte der Heizpläne wiederherstellen soll macht er das nicht und ich bekomme laut Log immer folgende Fehlermeldung: "HeatingControl.Aktivator: Heating_Control_SetAllTemps(): Unknown command Heating_Control_SetAllTemps(), try help."
Ebenso wenn ich den Sollwert des im Wohnzimmer befindlichen Thermostats durch das DOIF (folgender Inhalt: ([Terrassentuer] eq "open") (set Thermostat_WZ thermostatSetpointSet 15) DOELSE (Heating_Control_SetTemp("Thermostat_WZ"))eines Fensterkontaktes ändere ("Fensterstatus_WZ: Heating_Control_SetTemp("Thermostat_WZ"): Unknown command Heating_Control_SetTemp("Thermostat_WZ"), try help.").

Ich vermute mal Ursache ist der Umstand, dass Heating Control die Werte ja mittels des commands "desired-temp|desiredTemerature" setzt, die Devolo/Danfoss-Thermostate haben dafür aber das command "thermostatSetpointSet".
Wenn dem so ist, kann man das einfach in der Datei 98_heating_control.pm ändern, oder ist der Aufwand dafür größer (meine Perl-Kentnisse sind eher rudimentär)? Bzw. gibt es ein ähnlich komfortables Modul um eben auch Zwave-Devices entsprechend zu schalten?

Dietmar63

es kann sein, das hier die Syntax fasch ist:
(Heating_Control_SetTemp("Thermostat_WZ"))
Der Aufruf von Heating_Control_SetTemp muss als Perlcode an DOIF übergeben werden. Wie auch immer das geht.


Ich vermute mal Ursache ist der Umstand, dass Heating Control die Werte ja mittels des commands "desired-temp|desiredTemerature" setzt, die Devolo/Danfoss-Thermostate haben dafür aber das command "thermostatSetpointSet".
Wenn dem so ist, kann man das einfach in der Datei 98_heating_control.pm ändern, oder ist der Aufwand dafür größer (meine Perl-Kentnisse sind eher rudimentär)? Bzw. gibt es ein ähnlich komfortables Modul um eben auch Zwave-Devices entsprechend zu schalten?


ja, das wird so sein.
Wenn du mir mit einem list die Werte der Thermostate lieferst, kann ich Devolo/Danfoss-Thermostate in die Automatik aufnehmen.

Bis zum Einchecken kannst du dir folgendermaßen helfen:

define hc Heating_Control dev 19:00|25 {fhem("set $NAME thermostatSetpointSet $EVENT")}


mit verbose 5 auf dem HC testen ob es funktioniert.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Ronaldo

Zitat von: Dietmar63 am 02 Dezember 2016, 09:26:34
es kann sein, das hier die Syntax fasch ist:
(Heating_Control_SetTemp("Thermostat_WZ"))
Der Aufruf von Heating_Control_SetTemp muss als Perlcode an DOIF übergeben werden. Wie auch immer das geht.
Laut Commandref Heating_Control_SetTemp(<"HC-device">) or Heating_Control_SetAllTemps() sollte es eigentlich gehen, ich vermute da wird intern der selbe Befehl (desire-Temp) hinterstehen. Ist aber erstmal nicht so tragisch, kann vorerst hinten anstehen. ;-)

Zitat von: Dietmar63 am 02 Dezember 2016, 09:26:34
Wenn du mir mit einem list die Werte der Thermostate lieferst, kann ich Devolo/Danfoss-Thermostate in die Automatik aufnehmen.
Danke, die list sieht wie folgt aus:Internals:
DEF        d734e6a5 8
IODev      ZWAVE1
LASTInputDev ZWAVE1
MSGCNT     368
NAME       Thermostat_WZ
NR         60
STATE      wakeupInterval 86400 1
STILLDONETIME 0
TYPE       ZWave
ZWAVE1_MSGCNT 368
ZWAVE1_RAWMSG 00040008028407
ZWAVE1_TIME 2016-12-02 10:55:56
ZWaveSubDevice no
homeId     d734e6a5
isWakeUp   1
lastMsgSent 1480672558.98863
nodeIdHex  08
Readings:
2016-12-02 10:55:10   CMD             ZW_APPLICATION_UPDATE
2016-12-02 10:55:56   battery         71 %
2016-12-02 10:55:56   ccsOverride     no, unused
2016-10-23 16:12:27   ccs_fri         23:00 -4.5 07:00 0.0
2016-10-23 16:12:27   ccs_mon         22:00 -4.5 16:00 0.0
2016-10-23 16:12:27   ccs_sat         23:00 -4.5 07:00 0.0
2016-10-23 16:12:27   ccs_sun         22:00 -4.5 07:00 0.0
2016-10-23 16:12:27   ccs_thu         22:00 -4.5 16:00 0.0
2016-10-23 16:12:27   ccs_tue         22:00 -4.5 16:00 0.0
2016-10-23 16:12:27   ccs_wed         22:00 -4.5 16:00 0.0
2016-10-27 21:25:04   clock           thu 22:25
2016-10-23 13:19:26   model           Danfoss devolo Thermostat MT2650
2016-10-23 13:19:26   modelConfig     danfoss/z.xml
2016-10-23 13:19:26   modelId         0002-0005-0175
2016-10-23 14:21:44   neighborList    ZWAVE1 Fensterleuchte Flurleuchte Beetbeleuchtung
2016-10-23 16:12:27   protection      Local: unprotected RF: unprotected
2016-12-02 10:55:56   setpointTemp    11.00 C heating
2016-10-23 13:19:18   state           wakeupInterval 86400 1
2016-12-02 10:55:56   temperature     20.23 C
2016-10-23 14:22:54   thermostatSetpointSupported heating
2016-12-02 10:55:59   timeToAck       0.029
2016-12-02 10:55:59   transmit        OK
2016-12-02 10:55:56   wakeup          notification
2016-10-23 15:42:56   wakeupIntervalCapabilitiesReport min 60 max 1800 default 300 step 60
2016-12-01 20:56:00   wakeupReport    interval 300 target 1
Attributes:
   Heizungen  Heizungsventile
   IODev      ZWAVE1
   classes    BATTERY CLIMATE_CONTROL_SCHEDULE CLOCK MANUFACTURER_SPECIFIC MULTI_CMD PROTECTION SENSOR_MULTILEVEL THERMOSTAT_SETPOINT VERSION WAKE_UP MARK CLIMATE_CONTROL_SCHEDULE CLOCK MULTI_CMD
   icon       sani_heating
   room       Wohnzimmer
   userattr   Heizungen Heizungen_map structexclude
   vclasses   BATTERY:1 CLIMATE_CONTROL_SCHEDULE:1 CLOCK:1 MANUFACTURER_SPECIFIC:1 MULTI_CMD:1 PROTECTION:2 SENSOR_MULTILEVEL:6 THERMOSTAT_SETPOINT:2 VERSION:1 WAKE_UP:2

Im Zuge dessen habe ich dann später noch eine Frage zum Ecomode (da bekomme ich immer einen Fehler weil setpointTemp keinen reinen Zahlwert liefert (sondern noch das "heating" dahinter), was zu einer Fehlermeldung bei der Subtraktion führt, aber trotzdem korrekt gesetzt wird. Wie gesagt später...

Den Rest werde ich wohl erst morgen testen können, aber danke bis hierher. :-)

Deckoffizier

Hallo Ronaldo,

irgendwie habe ich das Gefühl das Dein Problem in Verbindung mit meinem Post am 29.11.2016 Thema HASH im Log steht.
Habe auch stundenlang probiert mit DOIF die Temperatur nach Fensteröffnung wieder hinzubekommen.

Bin dann auf notify umgestiegen und es funktioniert in der Art wie

define fk_buero_closed notify TK_OG_Buero_DaFenster:Geschlossen {Heating_Control_SetTemp("HC_OG_Buero")}   

obwohl ich es gerne wegen der Einheitlichkeit mit dem Fensteröffnen für Temperatursenkung zusammen in einem DOIF hätte.

Vielleicht erklärt mal einer von den Programmierern woran es haken könnte.

Danke und Grüße Hans-Jürgen   
FHEM 5.8 auf "yakkaroo Emu A1FL.1" mit CUL 868MHz, SIGNALduino,2 1Wire USB Busmaster, diverse 1 Wire Sensoren,Landroid,Aeotec USB Dongle Z-Wave Plus

Dietmar63

habe die doku geändert - wird demnächst eigecheckt.
Heating_Control_SetTemp("HC-device") or Heating_Control_SetAllTemps()
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Dietmar63

98_Heating_Control, 98_WeekdayTimer:
-  a bug fixed when starting a WDT or a HC an trying to switch in the past. 
-  now being able to use on-till:13:30:30 as a parameter
-  the parameter can now be a Perlcode
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Deckoffizier

Hallo Dietmar63,

könntest Du mir bitte beantworten ob nach Deinem Fix Heating_Control_SetTemp(<"HC-device">) in Verbindung in Benutzung eines DOIF funktioniert ohne HASH Meldungen im Log
oder ob vermutlich ich Murks gebaut habe.

Damit man dieses  in Zukunft auch mit DOIF nach Fenster,Tür schließen nutzen kann.

Danke vielmals

Hans-Jürgen
FHEM 5.8 auf "yakkaroo Emu A1FL.1" mit CUL 868MHz, SIGNALduino,2 1Wire USB Busmaster, diverse 1 Wire Sensoren,Landroid,Aeotec USB Dongle Z-Wave Plus

Dietmar63

Nein, kann ich nicht beantworten
DOIF nutze ich nicht
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

juergen012

#8
Hallo, auch bei meiner Installation habe ich das Problem mit dem "HASH-Fehler"., wenn ich z.B. {Heating_Control_SetTemp("hc_Schlafzimmer")} eingebe. Meine Thermostate sind von Homematic. Nur wenn ich{Heating_Control_SetAllTemps()} aufrufe, kommt keine Fehlermeldung. Dabei hatte es schon mal mit DOIF funktioniert. Notify scheint auch keine Lösung zu sein..

Gruß
Jürgen K.

EDIT: mit dieser älteren Version von Heating_Cotrol klappt es bei mir wieder ohne Fehlermeldung.
Fhem unter Proxmox

Deckoffizier

Hallo  juergen012,

Danke für den Anhang !

Werde ich demnächst ausprobieren.
Notify in der Art nach Fenster schließen funktioniert für ein Raum TK_OG_Buero_DaFenster:Geschlossen {Heating_Control_SetTemp("HC_OG_Buero")}.

{Heating_Control_SetAllTemps()} hatte bei mir auch mit DOIF funktioniert nur es wirkt ja auf alle Stellglieder auch bei denen wo die Fenster noch offen sind also somit keine Lösung.

Heating_Control_SetTemp("HC-device") hat zwar auch Wirkung gezeigt aber eben in konstanter Boshaftigkeit alle 10 Minuten dieses HASH ins Log geschrieben.

Etwas tröstlich für mich, daß es mich nicht nur alleine betroffen hatte, Danke für die Rückmeldung.

Gruß
Hans-Jürgen
FHEM 5.8 auf "yakkaroo Emu A1FL.1" mit CUL 868MHz, SIGNALduino,2 1Wire USB Busmaster, diverse 1 Wire Sensoren,Landroid,Aeotec USB Dongle Z-Wave Plus

Ronaldo

#10
Zitat von: Dietmar63 am 02 Dezember 2016, 09:26:34define hc Heating_Control dev 19:00|25 {fhem("set $NAME thermostatSetpointSet $EVENT")}

mit verbose 5 auf dem HC testen ob es funktioniert.
Sorry, bin jetzt erst zum Testen gekommen...
Habe den hc mal so erstellt und das ganze funktioniert, die Thermostate schalten nach Zeit :)
Ein dickes "Danke" dafür.
2016.12.09 19:00:00 4: [hc] time=19:00/1481306400 delay=0, nextDelay=60, nextRetry=1481306460
2016.12.09 19:00:00 4: [hc] delayedExecutionCond:0
2016.12.09 19:00:00 4: [hc] result of delayedExecutionCond:0
2016.12.09 19:00:00 4: [hc] list of window sensors found: 'hc'
2016.12.09 19:00:00 4: [hc] condition: - Tage:0,1,2,3,4,5,6
2016.12.09 19:00:00 5: [hc] condition: {my $days={};;map{$days->{$_}=1}(0,1,2,3,4,5,6);;;;( 1 && (defined $days->{$wday}))}
2016.12.09 19:00:00 5: [hc] result of condition:1
2016.12.09 19:00:00 4: [hc] Update   - timer seems to be active today: 0123456|19:00|25.0
2016.12.09 19:00:00 4: [hc] device type ZWave: recognized, setModifier:
2016.12.09 19:00:00 4: [hc] aktParam: newParam:25.0 - is  not disabled
2016.12.09 19:00:00 4: [hc] command: '{fhem("set $NAME thermostatSetpointSet $EVENT")}' executed with %EVENT=>25.0,%NAME=>Thermostat_WZ
2016.12.09 19:00:00 3: ZWave set Thermostat_WZ thermostatSetpointSet 25.0
2016.12.09 19:00:00 3: set Thermostat_WZ thermostatSetpointSet 25.0 : Scheduled for sending after WAKEUP
2016.12.09 19:00:00 3: Scheduled for sending after WAKEUP


Bleibt nur noch das Problem mit dem Zurückschalten via Heating_Control_SetTemp("HC-device") und Heating_Control_SetAllTemps(), da bekomme ich nämlich noch den gleichen Fehler. :/

Dietmar63

Heating_Control_SetTemp("HC-device")  funktioniert nur dann wenn du am HC das Attribut switchInThePast gesetzt hast.

Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Ronaldo

Zitat von: Dietmar63 am 14 Dezember 2016, 21:24:06
Heating_Control_SetTemp("HC-device")  funktioniert nur dann wenn du am HC das Attribut switchInThePast gesetzt hast.
Achso. Ich nehme mal an das muss dann auf 1 stehen. ;-)
Leider bekomme ich immernoch die Fehlermeldung :-(
Fensterstatus_WZ: Heating_Control_SetTemp("Heizung_WZ"): Unknown command Heating_Control_SetTemp("Heizung_WZ"), try help.

Hier mal die list des HC:

Internals:
   COMMAND
   CONDITION  (ReadingsVal("HeizungsAutomatik", "state", "") eq "on")
   DEF        Thermostat_WZ 8|16:00|21.5 8|22:00|17 7|06:00|21.5 7|22:00|17 (ReadingsVal("HeizungsAutomatik", "state", "") eq "on")
   DEVICE     Thermostat_WZ
   GlobalDaylistSpec
   LANGUAGE   de
   NAME       Heizung_WZ
   NR         71
   Profil 0: Sonntag 06:00:00 21.5, 22:00:00 17
   Profil 1: Montag 16:00:00 21.5, 22:00:00 17
   Profil 2: Dienstag 16:00:00 21.5, 22:00:00 17
   Profil 3: Mittwoch 16:00:00 21.5, 22:00:00 17
   Profil 4: Donnerstag 16:00:00 21.5, 22:00:00 17
   Profil 5: Freitag 16:00:00 21.5, 22:00:00 17
   Profil 6: Samstag 06:00:00 21.5, 22:00:00 17
   Profil 7: Wochenende 06:00:00 21.5, 22:00:00 17
   Profil 8: Werktags 16:00:00 21.5, 22:00:00 17
   STATE      21.5
   STILLDONETIME 0
   TYPE       Heating_Control
   Readings:
     2016-12-16 19:24:24   currValue       21.5
     2016-12-08 20:03:01   disabled        0
     2016-12-16 19:24:24   nextUpdate      2016-12-16 22:00:00
     2016-12-16 19:24:24   nextValue       17
     2016-12-16 19:24:24   state           21.5
   SWITCHINGTIMES:
     8|16:00|21.5
     8|22:00|17
     7|06:00|21.5
     7|22:00|17
   Timer:
     Heizung_wz_1:
       HASH       Heizung_WZ
       MODIFIER   1
       NAME       Heizung_WZ_1
       immerSchalten 1
     Heizung_wz_2:
       HASH       Heizung_WZ
       MODIFIER   2
       NAME       Heizung_WZ_2
     Heizung_wz_4:
       HASH       Heizung_WZ
       MODIFIER   4
       NAME       Heizung_WZ_4
     Heizung_wz_settimerofday:
       HASH       Heizung_WZ
       MODIFIER   SetTimerOfDay
       NAME       Heizung_WZ_SetTimerOfDay
       SETTIMERATMIDNIGHT 1
     Heizung_wz_delayed:
       HASH       Heizung_WZ
       MODIFIER   delayed
       NAME       Heizung_WZ_delayed
   Daynumber:
     !$we       8
     $we        7
     di         2
     do         4
     fr         5
     mi         3
     mo         1
     sa         6
     so         0
   Helper:
     daysRegExp (so|mo|di|mi|do|fr|sa|\$we|\!\$we)
     daysRegExpMessage (so|mo|di|mi|do|fr|sa|$we|!$we)
     Switchingtime:
       0:
         06:00:00   21.5
         22:00:00   17
  ...
Attributes:
   disable    0
   group      Heizplan
   room       Heizung
   switchInThePast 1
   verbose    5
   windowSensor Terrassentuer


Dietmar63

Heating_Control_SetTemp("... ")  ist aber richtig
Hast du eine alte Version des Programms?
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Ronaldo

#14
Zitat von: Dietmar63 am 16 Dezember 2016, 20:36:40
Heating_Control_SetTemp("... ")  ist aber richtig
Hast du eine alte Version des Programms?
Eigentlich nicht,
Latest Revision: 12787.
98_Heating_Control.pm 12715 2016-12-04 21:42:11Z dietmar63

Hatte auch die Module immer fleißig aktuell gehalten...
Muss bei Heating_Controll_SetTemp("...") eigentlich das HC (bei mir Heizung_WZ) oder das zum HC gehörige Thermostat (das wäre Thermostat_WZ) eingetragen werden?
Hatte es allerdings auch mit beidem getestet, kam bei mir aufs gleiche raus. :(
Mit Heating_Control_SetallTemps() geht es ja auch nichtHeatingControl.Aktivator: Heating_Control_SetAllTemps(): Unknown command Heating_Control_SetAllTemps(), try help.