Heizungsteuerung

Begonnen von Toto1973, 01 März 2015, 14:37:15

Vorheriges Thema - Nächstes Thema

Toto1973

Hallo!
Ich habe den folgenden DOIF-Befehl auf meinem FHEM Server:
define wz_Heizung_an_aus DOIF ([geofancy:currLoc_Toto] eq "Home" and [14:00:00-17:30:00]) (set wz_Heizung desiredTemperature 20, set pushmsg message Heizung wurde auf 20 Grad gestellt) DOELSEIF ([geofancy:currLoc_Toto] eq "Home" and [17:30:00-05:00:00]) (set wz_Heizung desiredTemperature 22, set pushmsg message Heizung wurde auf 22 Grad gestellt) DOELSE ([?Aussentemperatur:temperature] < 17) (set wz_Heizung desiredTemperature 18, set pushmsg message Heizung wurde auf 18 Grad gestellt) DOELSE ([?Aussentemperatur:temperature] > 17) (set wz_Heizung desiredTemperature 17, set pushmsg message Heizung wurde auf 17 Grad gestellt)

Als Fehlermeldung bekomme ich das hier:
error 10.8 < 17: Unknown command 10.8, try help.

Wie bekomme ich es nun hin, das DOIF die Temperatur von Aussentemperatur auswerten kann?
Das Problem scheint wohl der . zu sein?
Ich suche nun schon seit 2 Stunden im Netz, finde aber keine Lösung :-(
Raspberry PI2, Rademacher DuoFern Stick, CUL, 2 x SCC,  JeeLink 868 Mhz, JeeLink 433 Mhz, 3x Magic UFO LED WiFi Controller, 4x MAX BC-RT-TRX-CyG, 2x MAX Fensterkontakt, 5x Rademacher Gurtwickler, 6x TX29DTH-it, 2x TX25-it als Helligkeitssensor, 1X HM-ES-PM, 6x Sonoff, 7x G-Homa, PIR-1000

flurin

#1
Versuch mal den Fehler einzukreisen, indem Du Deinen Code reduzierst:

define wz_Heizung_an_aus DOIF ([14:00:00]) (set wz_Heizung desiredTemperature 20, set pushmsg "Heizung wurde auf 20 Grad gestellt")

Edit: Du hast zwei DOELSE, so könnte es funktionieren:

define di_test_forum DOIF ([geofancy:currLoc_Toto] eq "Home" and [14:00:00-17:30:00]) \
(set wz_Heizung desiredTemperature 20, set pushmsg message Heizung wurde auf 20 Grad gestellt) \
DOELSEIF ([geofancy:currLoc_Toto] eq "Home" and [17:30:00-05:00:00]) \
(set wz_Heizung desiredTemperature 22, set pushmsg message Heizung wurde auf 22 Grad gestellt) \
DOELSEIF ([Aussentemperatur:temperature] < 17) \
(set wz_Heizung desiredTemperature 18, set pushmsg message Heizung wurde auf 18 Grad gestellt) \
DOELSE (set wz_Heizung desiredTemperature 17, set pushmsg message Heizung wurde auf 17 Grad gestellt)


Gruss
flurin

Damian

Zitat von: Toto1973 am 01 März 2015, 14:37:15
Hallo!
Ich habe den folgenden DOIF-Befehl auf meinem FHEM Server:
define wz_Heizung_an_aus DOIF ([geofancy:currLoc_Toto] eq "Home" and [14:00:00-17:30:00]) (set wz_Heizung desiredTemperature 20, set pushmsg message Heizung wurde auf 20 Grad gestellt) DOELSEIF ([geofancy:currLoc_Toto] eq "Home" and [17:30:00-05:00:00]) (set wz_Heizung desiredTemperature 22, set pushmsg message Heizung wurde auf 22 Grad gestellt) DOELSE ([?Aussentemperatur:temperature] < 17) (set wz_Heizung desiredTemperature 18, set pushmsg message Heizung wurde auf 18 Grad gestellt) DOELSE ([?Aussentemperatur:temperature] > 17) (set wz_Heizung desiredTemperature 17, set pushmsg message Heizung wurde auf 17 Grad gestellt)

Als Fehlermeldung bekomme ich das hier:
error 10.8 < 17: Unknown command 10.8, try help.

Wie bekomme ich es nun hin, das DOIF die Temperatur von Aussentemperatur auswerten kann?
Das Problem scheint wohl der . zu sein?
Ich suche nun schon seit 2 Stunden im Netz, finde aber keine Lösung :-(

An der Temperatur liegt es nicht ;)

es ist:

DOELSE ([?Aussentemperatur:temperature] < 17) ...

es muss heißen:

DOELSEIF ([?Aussentemperatur:temperature] < 17) ...

DOELSE hat keine Bedingung, sondern nur einen Ausführungsteil.

Genaueres siehe Commandref zu DOIF.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Toto1973

UPS!
Manchmal sieht man wirklich den Wald vor lauter Bäumen nicht!

Natürlich muss das so heißen. Dankeschön!
Raspberry PI2, Rademacher DuoFern Stick, CUL, 2 x SCC,  JeeLink 868 Mhz, JeeLink 433 Mhz, 3x Magic UFO LED WiFi Controller, 4x MAX BC-RT-TRX-CyG, 2x MAX Fensterkontakt, 5x Rademacher Gurtwickler, 6x TX29DTH-it, 2x TX25-it als Helligkeitssensor, 1X HM-ES-PM, 6x Sonoff, 7x G-Homa, PIR-1000

Toto1973

Ich hab das geändert aber der Fehler tritt leider weiterhin auf.

Es hat sich aber ein anderes Problem aufgetan. Da ich diese Woche Krank bin und dadurch zu hause, habe ich bei der folgenden DOIF Anweisung einen weiteren "Fehler" entdeckt. Vielleicht denke auch nur ich da falsch!

Vorweg, ich habe unter Global holiday2we auf BW_Feiertag gesetzt, und in der Datei auch unter state Krank 2015-03-03 00:00:02 stehen. Das heisst es wäre ja dann die 7 für WE und Feiertag aktiv in FHEM!
Hier die DOIF-Anweisung:
define kue_Heizung_an_aus DOIF ([geofancy:currLoc_Toto] eq "Home" and [?Schicht_dummy:state] eq "Frueh" and [04:00-05:00|8]) (set kue_Heizung desiredTemperature 22) DOELSEIF ([geofancy:currLoc_Toto] eq "Home" and [?Schicht_dummy:state] eq "Frueh" and [14:30-20:00|8]) (set kue_Heizung desiredTemperature 20) DOELSEIF ([geofancy:currLoc_Toto] eq "Home" and [?Schicht_dummy:state] eq "Mittel" and [08:00-13:30|8]) (set kue_Heizung desiredTemperature 22) DOELSEIF ([geofancy:currLoc_Toto] eq "Home" and [08:30-12:00|7]) (set kue_Heizung desiredTemperature 22) DOELSEIF ([geofancy:currLoc_Toto] eq "Home" and [12:00-18:00|7]) (set kue_Heizung desiredTemperature 20) DOELSE (set kue_Heizung desiredTemperature 18)

Die Readings sehen so aus:
cmd_event timer_8 2015-03-03 12:00:00
cmd_nr 6 2015-03-03 12:00:00
e_geofancy_currLoc_Toto Home 2015-03-03 11:40:36
state cmd_6 2015-03-03 12:00:00
timer_10_c5 03.03.2015 18:00:00|7 2015-03-02 18:00:00
timer_1_c1 04.03.2015 04:00:00|8 2015-03-03 04:00:00
timer_2_c1 04.03.2015 05:00:00|8 2015-03-03 05:00:00
timer_3_c2 03.03.2015 14:30:00|8 2015-03-02 17:58:24
timer_4_c2 03.03.2015 20:00:00|8 2015-03-02 20:00:00
timer_5_c3 04.03.2015 08:00:00|8 2015-03-03 08:00:00
timer_6_c3 03.03.2015 13:30:00|8 2015-03-02 17:58:24
timer_7_c4 04.03.2015 08:30:00|7 2015-03-03 08:30:00
timer_8_c4 04.03.2015 12:00:00|7 2015-03-03 12:00:00
timer_9_c5 04.03.2015 12:00:00|7 2015-03-03 12:00:00

Geschallten ist nun die kue_Heizung aber auf 18 Grad. Laut DOIF müsste sie doch aber auf 20 Grad gestellt sein (CMD 5) oder mache ich da einen Denkfehler?
Mir kommt es so vor, als ob das Modul DOIF mit den Wochentags-Angaben [0123456, 7,8] nicht ganz zurecht kommt...
Raspberry PI2, Rademacher DuoFern Stick, CUL, 2 x SCC,  JeeLink 868 Mhz, JeeLink 433 Mhz, 3x Magic UFO LED WiFi Controller, 4x MAX BC-RT-TRX-CyG, 2x MAX Fensterkontakt, 5x Rademacher Gurtwickler, 6x TX29DTH-it, 2x TX25-it als Helligkeitssensor, 1X HM-ES-PM, 6x Sonoff, 7x G-Homa, PIR-1000

Toto1973

Kleine Zwischenmeldung:
Was das Problem mit der Temperatur angeht, so kam mir gerade ein Geistesblitz!
Wenn ich das so mache als Bedingung [?Aussentemperatur:temperature] >18.0] dann geht es. *freu*

Wer hat nun eine Idee zu meinem 2. Problem?
Raspberry PI2, Rademacher DuoFern Stick, CUL, 2 x SCC,  JeeLink 868 Mhz, JeeLink 433 Mhz, 3x Magic UFO LED WiFi Controller, 4x MAX BC-RT-TRX-CyG, 2x MAX Fensterkontakt, 5x Rademacher Gurtwickler, 6x TX29DTH-it, 2x TX25-it als Helligkeitssensor, 1X HM-ES-PM, 6x Sonoff, 7x G-Homa, PIR-1000

Damian

Zitat von: Toto1973 am 03 März 2015, 14:46:29
Kleine Zwischenmeldung:
Was das Problem mit der Temperatur angeht, so kam mir gerade ein Geistesblitz!
Wenn ich das so mache als Bedingung [?Aussentemperatur:temperature] >18.0] dann geht es. *freu*

Wer hat nun eine Idee zu meinem 2. Problem?

Es gibt noch eine Baustelle mit den Timern. Es wird pro Zeit ein Timer gesetzt auch wenn die Zeit gleich ist, hier z. B. 12:00. Nun schlägt jeder Timer für sich gesehen zu, hier also zwei mal um 12:00. Dabei ist die Reihenfolge nicht gewährleistet, bei dir hat offenbar 12:00-18:00 zuerst zugeschlagen und dann erst 08:30-12:00. Dieser  ist um 12:00 nicht wahr und dann wird DOLSE ausgeführt. Du kannst dir behelfen, indem 12:00-18:00 änderst in 12:00:01-18:00 damit er auf jeden Fall als zweiter dran kommt.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Toto1973

Vielen Dank für die Antwort.
Ja, das ist ein guter Ansatz. So etwas hätte ich mir fast gedacht, da ja die Timer als Einzelzeit und nicht als Zeitraum angegeben sind.
Ich werde es anpassen und testen!
Raspberry PI2, Rademacher DuoFern Stick, CUL, 2 x SCC,  JeeLink 868 Mhz, JeeLink 433 Mhz, 3x Magic UFO LED WiFi Controller, 4x MAX BC-RT-TRX-CyG, 2x MAX Fensterkontakt, 5x Rademacher Gurtwickler, 6x TX29DTH-it, 2x TX25-it als Helligkeitssensor, 1X HM-ES-PM, 6x Sonoff, 7x G-Homa, PIR-1000