Neues Modul - Heating_Control, WeekdayTimer

Begonnen von Dietmar63, 04 Januar 2013, 19:42:26

Vorheriges Thema - Nächstes Thema

Dietmar63

Zitat von: mgernoth am 30 Oktober 2013, 22:52:22
Hallo Dietmar,

anscheinend ist mit dem Update auf Revision 4127 das Parsen der Profile kaputtgegangen:


fhem> define Test dummy
fhem> define Test_Steuerung Heating_Control Test Mo-Fr|06:00|21.0 Mo-Fr|08:30|16.0 Mo-Su|21:30|21.0 Mo-Su|00:45|16.0 Sa-Su|09:00|21.00 Sa-Su|12:00|16.00

fhem> list Test_Steuerung
Internals:
   CFGFN
   DEF        Test Mo-Fr|06:00|21.0 Mo-Fr|08:30|16.0 Mo-Su|21:30|21.0 Mo-Su|00:45|16.0 Sa-Su|09:00|21.00 Sa-Su|12:00|16.00
   DEVICE     Test
   LANGUAGE   de
   NAME       Test_Steuerung
   NR         1914
   PROFILE 1: Montag 06:00 21.0, 08:30 16.0,
   PROFILE 2: Dienstag 06:00 21.0, 08:30 16.0,
   PROFILE 3: Mittwoch 06:00 21.0, 08:30 16.0,
   PROFILE 4: Donnerstag 06:00 21.0, 08:30 16.0,
   PROFILE 5: Freitag 06:00 21.0, 08:30 16.0,
   STATE      waiting...
   TYPE       Heating_Control
   Readings:
     2013-10-30 22:48:40   nextUpdate      Heute, 22:49:10
     2013-10-30 22:48:40   nextValue       ???
     2013-10-30 22:48:40   state           waiting...
   Helper:
     SWITCHINGTIMES Mo-Fr|06:00|21.0 Mo-Fr|08:30|16.0 Mo-Su|21:30|21.0 Mo-Su|00:45|16.0 Sa-Su|09:00|21.00 Sa-Su|12:00|16.00
     Switchingtime:
       0:
       1:
         06:00:00   21.0
         08:30:00   16.0
       2:
         06:00:00   21.0
         08:30:00   16.0
       3:
         06:00:00   21.0
         08:30:00   16.0
       4:
         06:00:00   21.0
         08:30:00   16.0
       5:
         06:00:00   21.0
         08:30:00   16.0
       6:
Attributes:


Ich würde fast sagen, dass die Sprache falsch erkannt wird oder so...
Habe leider gerade überhaupt keine Zeit mir den Code anzuschauen und zu debuggen, Sorry :-(

Gruß
  Michael

Es waren doch noch einige Verbesserungen notwendig, damit die Fehler besser erkannt und ins Log geschrieben werden.


2013.10.31 21:02:55 2: FHT set HeizungWohnen desired-temp 22.0
2013.10.31 21:02:55 3: [HeizungWohnen_wt] delay of switch HeizungWohnen stopped.
2013.10.31 20:52:55 3: [HeizungWohnen_wt] switch of HeizungWohnen delayed - windowsensor 'Terrassentuer' Reading 'Window' is 'Open'
2013.10.31 20:18:43 3: [HeizungWohnen_wt] delay of switch HeizungWohnen stopped.
2013.10.31 20:15:43 3: [HeizungWohnen_wt] switch of HeizungWohnen delayed - windowsensor 'Terrassentuer' Reading 'Window' is 'Open'
2013.10.31 20:15:26 3: FS20 set Zirkulation off
2013.10.31 20:14:43 3: [HeizungWohnen_wt] switch of HeizungWohnen delayed - windowsensor 'Terrassentuer' Reading 'Window' is 'Open'
2013.10.31 20:11:20 2: FHT set HeizungWohnen desired-temp 22.0
2013.10.31 20:10:54 3: Mail sent to Dietmar.Ortmann@web.de
2013.10.31 20:10:50 2: FHT set HeizungKueche desired-temp 16.0

Das Protokoll konnte ich ebenfalls verkürzen.

Intertechnogeräte werden jetzt auch korrekt geschaltet.

Ich beobachte das Modul bei mir noch etwas, dann checke ich es ein.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

cotecmania

Ich habe 9 Heating_Controls, und diese erzeugen beim Start von FHEM einmalig diese 9 Fehler in der Console :

C:\fhem-5.5>perl_5.18.1.1\perl\bin\perl fhem.pl fhem.cfg
Use of uninitialized value $n in hash element at fhem.pl line 3004.
Use of uninitialized value $n in hash element at fhem.pl line 3004.
Use of uninitialized value $n in hash element at fhem.pl line 3004.
Use of uninitialized value $n in hash element at fhem.pl line 3004.
Use of uninitialized value $n in hash element at fhem.pl line 3004.
Use of uninitialized value $n in hash element at fhem.pl line 3004.
Use of uninitialized value $n in hash element at fhem.pl line 3004.
Use of uninitialized value $n in hash element at fhem.pl line 3004.
Use of uninitialized value $n in hash element at fhem.pl line 3004.
FHEM auf RaspberryPI B (buster)
2xCUL868 für MAX/Slow_RF, HM-LAN, JeeLink
MAX!/HM-Thermostate, FS20/HM-Rolladenschalter, FS20-EM, LevelJet-Ölstandsmessung, PCA301, IT, KM271, IPCAM, FireTAB10 FTUI

Dietmar63

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

mgernoth

Hallo Dietmar,

Zitat von: Dietmar63 am 31 Oktober 2013, 18:25:19
Jein, es wurde auf Wunsch hier im Forum Französisch ergänzt. Den Code, den ich bekommen habe musste ich überarbeiteten, und dabei musste ich von autodetection auf einen optionalen Sprachparameter umstellen. Sieh mal in die Dokumentation.

Super, danke. Jetzt funktioniert es wieder :-)

Ich hatte nur geschaut, ob es ein passendes Attribut gibt, dass die Sprache auch im define stehen könnte, daran habe ich gar nicht gedacht..

Danke für das tolle Modul & Gruß
  Michael

Petrosilius Zwackelmann

Hallo

Ich versuche gerade das Heating_Control Modul bei mir einzubinden und meine etwas komplexere Heizungsregelung damit zu ersetzten....
(Ich verwende 7 FHT's mit Fensterkontakten an einem CUNO)

Dazu zwei Fragen:

1) Zum Beisiel aus dem Command-Ref im Bezug auf condition:

define HCW Heating_Control WZ_Heizung Sa-So,Mi|08:00|21 (ReadingsVal("WeAreThere", "state", "no") eq "yes")
Die zu setzende Temperatur wird nur gesetzt, falls die Dummy Variable WeAreThere = "yes" ist.

Die Temeraturanhebungen im Profil wollte ich nur durchführen wenn jemand zu Hause ist, deswegen hatte ich untenstehendes probiert.
Scheinbar können die Bedingungen aber je define eingefügt werden. Dies führt wohl nun dazu dass ich alle Temperaturanhebungen in ein define sammeln muß.
Leider geht damit der Vorteil verloren alle Schaltpunkte in einer Detailansicht zusammen zu sehen.

define HC_DAVID Heating_Control DAVID_hzg de Mo-Fr|06:05|21.0 (Value("HOME_Status") == 0) Mo-Fr|08:05|16.0 Mo-Fr|12:05|21.0 (Value("HOME_Status") == 0)Mo-Fr|18:05|16.0 Sa-So,Mo|07:05|20.0 (Value("HOME_Status") == 0)Sa-So,Mo|18:05|16.0
attr HC_DAVID room HEIZUNG
attr HC_DAVID windowSensor DAVID_fenster


2. Frage zur Verwendung von $we
Im Forum habe ich gelesen dass die Verwendung von $we für Wochenende und Feiertage möglich ist. Leider scheint es wie folgt aber nicht zu gehen...
Was mache ich hier falsch?

define HC_DAVID Heating_Control DAVID_hzg de Mo-Fr|06:05|21.0 Mo-Fr|08:05|16.0 Mo-Fr|12:05|21.0 Mo-Fr|18:05|16.0 we$|07:05|20.0 we$|18:05|16.0
attr HC_DAVID room HEIZUNG
attr HC_DAVID windowSensor DAVID_fenster


Danke für eure Rückmeldung
Manuel
FHEM 6 auf RaspPi V3:
HM_LAN / CUNX / HUEBridge /OneWire / Homebridge / SONOS / Harmony

Dietmar63

wenn dann nur so:
define HC_DAVID Heating_Control DAVID_hzg de Mo-Fr|06:05|21.0  Mo-Fr|08:05|16.0 Mo-Fr|12:05|21.0 Mo-Fr|18:05|16.0 Sa-So,Mo|07:05|20.0 Sa-So,Mo|18:05|16.0 (Value("HOME_Status") == 0)

oder so:
define HC_DAVID Heating_Control DAVID_hzg de define HC_DAVID Heating_Control DAVID_hzg de 06:05|21.0  08:05|16.0 12:05|21.0 18:05|16.0 07:05|20.0 18:05|16.0   ($we)

oder so:
define HC_DAVID Heating_Control DAVID_hzg de 06:05|21.0  08:05|16.0 12:05|21.0 18:05|16.0 07:05|20.0 18:05|16.0   (!$we)

oder so:
define HC_DAVID Heating_Control DAVID_hzg de 06:05|21.0  08:05|16.0 12:05|21.0 18:05|16.0 07:05|20.0 18:05|16.0   (meineEigeneFunktion(@,%) )

meineEigeneFunktion($$) muss dann in die 99_utils.
oder so:
define HC_DAVID Heating_Control DAVID_hzg de 06:05|21.0  08:05|16.0 12:05|21.0 18:05|16.0 07:05|20.0 18:05|16.0   {fhem("set @ desired %")}



Es gibt viele Möglichkeiten Bedingungen zu formulieren. Das liegt daran, dass die Möglichkeit eine Condition oder Perlfunktion zu nutzen am Anfang stand. Auf vielfachen Wunsch hin wurde die Möglichkeit geschaffen die Tage vor die Schaltzeit zu schreiben. Inzwischen kann mandie Schaltzeiten auch per sunrise_abs() ermitteln:

define hc1   Heating_Control Brunnen de  so-sa|{sunrise_abs()}|off    so-sa|{sunset_abs()}|on ; attr hc1 verbose 5;

Mit verbose kannst du detailiert sehen welcher Befehl erzeugt und gesendet wird!
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

crissiloop

Hallo,
ich wollte den WeekdayTimer für das Steuern meiner Zirkulationspumpe nutzen.
Definiert habe ich es wie folgt:
HWR_Zirkulation Mo-Fr|05:00|on-for-timer:3600 Mo-Fr|14:30|on-for-timer:3600 Mo-Fr|20:00|on-for-timer:1800 Sa-So|08:00|on-for-timer:3600 Sa-So|14:30|on-for-timer:3600 Sa-So|19:00|on-for-timer:3600 (Value("abwesend") eq "nein")

Aber im Log kommt folgende Fehlermeldung:
set HWR_Zirkulation desired-temp on-for-timer 3600 : Unknown argument desired-temp

Wie bekomme ich es hin, dass nur der Befehl "set HWR_Zirkulation on-for-timer 3600" ausführt?

Gruß
Christian
FHEM 5.5 auf Cubietruck

1x HMLAN, 1x HMUSB, 12x HM-LC-Bl1 PBU-FM, 5x HM-LC-Sw1-Pl, 1x HM-LC-Sw1-FM, 2x HM-LC-Sw2-FM, 2x HM-SEC-RHS, 3x HM-SEC-SD, 8x HM-SEC-SC, 3x HM-RC-4-2, 1x HM-RC-8, 1x HM-Sec-SFA-SM, Jeelink, 7x Technoline TX 29 DTH-IT

Dietmar63

#337

define xx WeekdayTimer HWR_Zirkulation Mo-Fr|05:00|on-for-timer:3600 Mo-Fr|14:30|on-for-timer:3600 Mo-Fr|20:00|on-for-timer:1800 Sa-So|08:00|on-for-timer:3600 Sa-So|14:30|on-for-timer:3600 Sa-So|19:00|on-for-timer:3600 { fhem("set @ %")  if (Value("abwesend") eq "nein") }


Anstelle von Value musst du bestimmt ReadingsVal(...) nutzen!

Mit verbose 5 kannst du immer sehen was gesendet wird.
Ich verbessere das Modul gerade, so dass es besser den Standardmodifier (desiredTemp ...) erkennt.
In deinem Fall sollte dann "" zwischen @ und % eingefügt werden.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Petrosilius Zwackelmann

Hallo Dietmar

danke für deine schnelle Antwort.
Entsprechend deiner Rückmeldung habe ich mein Wochenprogramm für Wochenende und Wochentag aufgesplittet und gleichzeitig noch eine weitere Bedingung "verundet".
Aus irgendeinem Grund werden aber beide Profile als inaktiv angezeigt. Erwartet hatte ich dass die Wochenend/Feiertag (Bayern!) aktiv angezeigt wird.


Die Bedingung habe ich in einer If Anweisung in der Kommandozeile getestet {if($we && (Value("HOME_Status") == 1)){"wahr"} else {"falsch"}}
Da erhalte ich das erwartete Ergebnis.
Mache ich hier was falsch?

Gruß Manuel

define HC_DAVID_WE Heating_Control DAVID_hzg de 07:05|20.0 18:05|16.0 ($we && (Value("HOME_Status") == 1))
attr HC_DAVID_WE room HEIZUNG
attr HC_DAVID_WE windowSensor DAVID_fenster
attr HC_DAVID_WE group Wochenende

define HC_DAVID_WT Heating_Control DAVID_hzg de 06:05|21.0 08:05|16.0 12:05|21.0 18:05|16.0 (!$we && (Value("HOME_Status") == 1))
attr HC_DAVID_WT room HEIZUNG
attr HC_DAVID_WT windowSensor DAVID_fenster
attr HC_DAVID_WT group Wochentag
FHEM 6 auf RaspPi V3:
HM_LAN / CUNX / HUEBridge /OneWire / Homebridge / SONOS / Harmony

Dietmar63

#339
ReadingsVal statt Value!

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

crissiloop

Hallo Dietmar,
ich denke, das war mein Fehler. Ich habe versucht ein Kommando und eine Bedingung zu setzen. Dies war wohl so nicht gewollt. Man kann natürlich einfach die Bedingung in das Perlkommando packen und schon funktioniert es:
HWR_Zirkulation Mo-Fr|05:00|on-for-timer:3600 Mo-Fr|14:30|on-for-timer:3600 Mo-Fr|20:00|on-for-timer:1800 Sa-So|08:00|on-for-timer:3600 Sa-So|14:30|on-for-timer:3600 Sa-So|19:00|on-for-timer:3600 {if(Value("abwesend") eq "nein") {fhem("set @ %")}}

Kann ich für Sa-So auch $we benutzen, damit ich auch Feiertage mit abdecke?

Gruß
Christian
FHEM 5.5 auf Cubietruck

1x HMLAN, 1x HMUSB, 12x HM-LC-Bl1 PBU-FM, 5x HM-LC-Sw1-Pl, 1x HM-LC-Sw1-FM, 2x HM-LC-Sw2-FM, 2x HM-SEC-RHS, 3x HM-SEC-SD, 8x HM-SEC-SC, 3x HM-RC-4-2, 1x HM-RC-8, 1x HM-Sec-SFA-SM, Jeelink, 7x Technoline TX 29 DTH-IT

Dietmar63

Das funktioniert noch nicht. Der Wunsch besteht hier im Forum. Ich würde $we nehmen, aber wir haben uns hier noch nicht geeinigt.



Gesendet von meinem HTC Desire S mit Tapatalk

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

Petrosilius Zwackelmann

Hallo Dietmar,

ja ein dummy...
define HOME_Status dummy
In der Kommantozeile ergibt {Value("HOME_Status")} eine 1 als Ausgabe..
Sollte also soweit passen.
Hast du noch eine Idee?

Gruß Manuel
FHEM 6 auf RaspPi V3:
HM_LAN / CUNX / HUEBridge /OneWire / Homebridge / SONOS / Harmony

Dietmar63

Ich glaube man muss auch dummys mit ReadingsVal auslesen. Warum du bei deinem Test scheinbar ein richtiges Ergebniss bekommen hast, verstehe ich nicht

Gesendet von meinem HTC Desire S mit Tapatalk

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

Petrosilius Zwackelmann

Hallo Dietmar,

ich habe es auch mit ((ReadingsVal("HOME_Status", "state", "na")==1) && $we) probiert.
Die obige Anweisung für sich funktioniert ebenso wie das Value(...) dennoch bleibt das Heating Control inaktiv.

Ob man Value oder ReadingVal verwenden kann sieht man wenn hier z.B. list HOME_Status in der Kommandozeile eingibt.
Mit Value() list man den Wert der nach STATE steht...
Mit ReadingsVal() kann man alle Werte lesen die nach Readings aufgeführt sind. Hier also "state"
Internals:
   CFGFN      /share/Public/fhem-5.4/FHEM/00_Home_Status.cfg
   NAME       HOME_Status
   NR         269
   STATE      1
   TYPE       dummy
   Readings:
     2013-11-01 15:29:32   state           1


folgendes funktionert...

... (Value("HOME_Status") == 1)
... ($we)
... (Value("HOME_Status") == 1 && 1)

folgendes geht nicht (führt zu inaktiv)

... ($we && 1)
... (($we) && 1)

Damit bleibe ich etwas ratlos zurück

Gruß Manuel
FHEM 6 auf RaspPi V3:
HM_LAN / CUNX / HUEBridge /OneWire / Homebridge / SONOS / Harmony