Frage zu DOIF Vorlaufpumpe schalten nach Wochentagen

Begonnen von Steffmaster, 02 März 2016, 11:44:04

Vorheriges Thema - Nächstes Thema

Steffmaster

Hallo! Zum Thema Warmwasser Vorlaufpumpe (ob nun sinnig oder nicht) habe ich mir folgendes DOIF überlegt.

define vorlauftemp DOIF ([05:00-22:00|12345] or [07:00-23:00|60] and [Dummy_Anwesenheit] eq "present") (set Wasser_Vorlauf ein) DOELSE (set Wasser_Vorlauf aus)

Kurze Erklärung: Schalte Wasser_Vorlauf ein, wenn Mo.,Di.,Mi.,Do.,Fr., zwischen 5:00  u. 22:00 Uhr, ODER Sa.,So.,Feiertag zwischen 7:00  u. 23:00 Uhr und jemand zu Hause ist (Dummy_Anwesenheit] eq "present") Trift nichts zu, schalte Wasser_Vorlauf aus

Leider funktioniert es so nicht. Die "oder" Bedingung scheint so nicht zu funtionieren. Im Log kann ich keinen Fehler feststellen. Auch gibt es keine Fehlermeldung im DOIF selber. Wie kann ich das Problem so lösen bzw. erstmal eingrenzen?

FunkOdyssey

Die Prüfung auf deinen Anwesenheitsdummy ist ein wenig merkwürdig.
AND hat eine höhrere Prioriät als OR.
Ich denke, dass hier ein paar Klammern fehlen:

define vorlauftemp DOIF
(
   (
   [05:00-22:00|12345] or
   [07:00-23:00|60]
   ) and
   [Dummy_Anwesenheit] eq "present"
)
   (set Wasser_Vorlauf ein)
DOELSE
   (set Wasser_Vorlauf aus)

Vize

Hi,

versuchs mal so
DOIF (([05:00-22:00|8] or [07:00-23:00|7]) and [Dummy_Anwesenheit] eq "present")

Gruß
Andreas

edit: zu langsam...

Steffmaster

So macht es natürlich Sinn. Das wußte ich bisher gar nicht. Funktioniert so einwandfrei. Danke euch.

ak323

Zitat von: Vize am 02 März 2016, 12:41:11
DOIF (([05:00-22:00|8] or [07:00-23:00|7]) and [Dummy_Anwesenheit] eq "present")

...und wenn mir jetzt noch jemand verrät wie man es hinbekommt, das die Pumpe in der aktiven Zeit zu jeder vollen und halben Stunde für [3] Minuten läuft dann ist auch mein Problem gelöst !

Danke.
RaspberryPi 2 im 19" Rack mit 16x2 i2c LCD, FHEM, diverse HomeMatic, 1-Wire (8x DS18B20, 3x DS2408, 2x DS2413, 5x DS2401, DS2423 ATTiny) über DS9490R#, Waterkotte Ai1QE (WWPR) Wärmepumpe über Modbus, WH1080 über Signalduino, 433MHz Funksteckdosen, WiFi RGBWW via Tasmota, ...

Vize

Hallo ak323,

schon die commandref für DOIF durchgearbeitet?
Dort stehen einige Lösungsansätze für dein Vorhaben...

Gruß
Andreas

ak323

Zitat von: Vize am 05 März 2016, 14:25:10
Hallo ak323,

schon die commandref für DOIF durchgearbeitet?
Dort stehen einige Lösungsansätze für dein Vorhaben...

Gruß
Andreas
Nö ...
RaspberryPi 2 im 19" Rack mit 16x2 i2c LCD, FHEM, diverse HomeMatic, 1-Wire (8x DS18B20, 3x DS2408, 2x DS2413, 5x DS2401, DS2423 ATTiny) über DS9490R#, Waterkotte Ai1QE (WWPR) Wärmepumpe über Modbus, WH1080 über Signalduino, 433MHz Funksteckdosen, WiFi RGBWW via Tasmota, ...

eule66

#7
Hallo zusammen

Hatte so ein ähnliches doif schon am laufen nur ohne Zeit und Wochentag, nur auf Anwesenheit. Was so funktionierte

Hab es mir nun umgebaut und eben getestet nur leider funktioniert es nicht

Define zirku_pumpe doif (([Anwesenheit_im_Haus] eq "anwesend") and ([05:00-10:37|1|2|3|4|5] or [07:00-23:00|0|6])) (set Keller.Sd.Zirku on) DOELSEIF ([Anwesenheit_im_Haus] eq "abwesend") (set Keller.Sd.Zirku off)

Muss ich Anwesenheit und tag bzw Zeitabfrage tauschen?

Gruß

Gesendet von meinem SM-N9005 mit Tapatalk

Ellert

ZitatDefine zirku_pumpe doif
FHEM unterscheidet Gross- und Kleinschreibung, s. http://fhem.de/commandref_DE.html#DOIF ; hier: Syntax

eule66

Hallo

Hab alles richtig geschrieben war nur formatfehler handy.

Habe das doif nur um diese ergänzt

and ([05:00-10:37|1|2|3|4|5] or [07:00-23:00|0|6]))
Ansonsten lief das doif ja vorher ohne Probleme

Gruß

Gesendet von meinem SM-N9005 mit Tapatalk


Ellert

Schreibe die Wochentagsangaben wie in dem Beispiel der Commandref
Zitatdefine di_radio DOIF ([08:00-10:00|135]) (set radio on) DOELSE (set radio off)

eule66

#11
Hallo

so funktioniert es  ;D  hatte mich in der commandref von diesem Satz durcheinander bringen lassen:
Hinter der Zeitangabe kann ein oder mehrere Wochentage als Ziffer getrennt mit einem Pipezeichen | angegeben werden.

(([Anwesenheit_im_Haus] eq "anwesend") and ([06:00-22:30|12345] or [06:30-23:00|06])) (set Keller.Sd.Zirku on) DOELSE ([Anwesenheit_im_Haus] eq "abwesend") (set Keller.Sd.Zirku off)

Damian

Zitat von: eule66 am 07 März 2016, 16:28:44
Hallo

so funktioniert es  ;D  hatte mich in der commandref von diesem Satz durcheinander bringen lassen:
Hinter der Zeitangabe kann ein oder mehrere Wochentage als Ziffer getrennt mit einem Pipezeichen | angegeben werden.

(([Anwesenheit_im_Haus] eq "anwesend") and ([06:00-22:30|12345] or [06:30-23:00|06])) (set Keller.Sd.Zirku on) DOELSE ([Anwesenheit_im_Haus] eq "abwesend") (set Keller.Sd.Zirku off)

und wenn du noch weiter in der Commandref-Zeile liest, dann wirst du feststellen, dass 12345 das Gleiche ist wie 8 und 06 das Gleiche wie 7. Und nebenbei werden Feiertage auch noch berücksichtigt.

Gruß

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

eule66

Hallo Damian

danke für deine Hilfe, das doif Modul ist schon eine klasse für sich !   :D

Ich hab aber noch ein kleines Problem, ich erhalte jetzt folgende Meldung im Logfile

2016.03.07 22:30:00 2: ZirkuPumpe_an: anwesend eq "abwesend": Unknown command anwesend, try help.
2016.03.07 22:30:00 3: CUL_HM set Keller.Sd.Zirku off
2016.03.08 06:00:00 3: CUL_HM set Keller.Sd.Zirku on


schalten tut er aber laut Logfile, hatte auch versucht die alten Stati einzutragen, also absent und present, aber da
schaltet es gar nicht.

Grüße

Damian

Zitat von: eule66 am 08 März 2016, 16:51:36
Hallo Damian

danke für deine Hilfe, das doif Modul ist schon eine klasse für sich !   :D

Ich hab aber noch ein kleines Problem, ich erhalte jetzt folgende Meldung im Logfile

2016.03.07 22:30:00 2: ZirkuPumpe_an: anwesend eq "abwesend": Unknown command anwesend, try help.
2016.03.07 22:30:00 3: CUL_HM set Keller.Sd.Zirku off
2016.03.08 06:00:00 3: CUL_HM set Keller.Sd.Zirku on


schalten tut er aber laut Logfile, hatte auch versucht die alten Stati einzutragen, also absent und present, aber da
schaltet es gar nicht.

Grüße

Wenn du eine Bedingung angibst, dann musst du DOELSEIF statt DOELSE nehmen.

Gruß

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