DOIF : Abfrage eines Readings zu einer bestimmten Zeit

Begonnen von Cybers, 16 April 2015, 10:22:11

Vorheriges Thema - Nächstes Thema

Cybers

Hallo,

ich habe ein kleines Problem mit meiner DOIF-Abfrage:

ich möchte das jeden Tag um 8:30 geschaut wird ob die Tageshöchsttemperatur laut Wetterbericht (Device "Wetter", Reading "fc1_high_c")  höher ist als 15°C und wenn das so ist, die Heizung (Device "Heizungsschalter") abgeschaltet wird. Ansonsten soll nichts weiter passieren.

Mit folgendem Code wird die Heizung nicht abgeschaltet obwohl der Readingswert 19 beträgt.

define Heizung_Wettervorhersage DOIF ([08:30|8] or [08:30|7] and [Wetter:fc1_high_c] > 15) (set Heizungsschalter off) DOELSE (set Heizungsschalter on)

Wie kann man es lösen das das ganze tagsüber ab 8:30 Uhr abgefragt wird. Weil wenn ich Fhem nach 8:30 Uhr neustarte, würde die Abfrage ja nicht mehr auslösen.

Gruß, Sascha
FHEM 6.3 auf Raspberry PI 4 / Smartvisu
Eltako Serie 14: FAM14, FGW14-USB, FSB14, FSR14-4x, FSR14-2x, FDG14, FTS14-EM in Kombination mit Jung F50 24V Tastern
1-Wire Temperatursensoren
aus alter Zeit:
Gott sei Dank nur noch 3 Homematic Jalousie- & Schaltaktoren! Wer sich mit Funk auskennt, legt Kabel

anfichtn

#1
Moin!

Die commandref ist dein Freund.
http://fhem.de/commandref_DE.html#DOIF

Unter anderem steht da:
Zitat

Hinter der Zeitangabe kann ein oder mehrere Wochentage als Ziffer getrennt mit einem Pipezeichen | angegeben werden. Die Syntax lautet:

[<time>|012345678] 0-8 entspricht: 0-Sonntag, 1-Montag, ... bis 6-Samstag sowie 7 für Wochende und Feiertage (entspricht $we) und 8 für Arbeitstage (entspricht !$we)
Wenn ich deinen Anwendungsfall richtig sehe, möchtest du die Prüfung täglich ausführen, insofern benötigst du die Wochentage garnicht.

Du brauchst nur...  Eine Zeitangabe in der Form [08:30] und dein reading zur Überwachung.

Damit wird jedoch die Heizung nicht wieder eingeschaltet, weshalb ich das doif mit einem Zeitfenster in der Form [08:30-18:00] und deinem reading ausstatten würde. Wobei dann eben auch dein doelse doppelt zum tragen kommt, und nach 18 Uhr die Heizung eben auch  wieder einschaltet wenn die Tageshoechsttemperatur über deinem Wert liegt.

Grüße

anfichtn
FHEM 5.6 + Pilight + Pimatic auf BananaPro mit Bananian 15.04 r01
FB7270 v2 & FB7412
LDA382A mit WifiLight
MAX-Cube (aculfw), 6 Fensterkonstakte, 5 HK-Thermostate, 3 WandThermostate
[...]

Ralli

#2
Das sollte wie folgt funktionieren:

define Heizung_Wettervorhersage DOIF ([08:30] and [?Wetter:fc1_high_c] > 15) (set Heizungsschalter off) DOELSE (set Heizungsschalter on)

Man beachte das Fragezeichen vor dem abgefragten Reading.

Edit:
Und denke daran, attr Heizung_Wettervorhersage do always zu setzen, damit auch an mehreren schönen Tagen hintereinander das entsprechend funktioniert.
Gruß,
Ralli

Proxmox 8.4 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.83.6.20250705) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

Cybers

@Ralli: was genauch bewirkt denn das Fragezeichen? In diesem Punkt verstehe ich die Commandref nicht.

Gruß, Sascha
FHEM 6.3 auf Raspberry PI 4 / Smartvisu
Eltako Serie 14: FAM14, FGW14-USB, FSB14, FSR14-4x, FSR14-2x, FDG14, FTS14-EM in Kombination mit Jung F50 24V Tastern
1-Wire Temperatursensoren
aus alter Zeit:
Gott sei Dank nur noch 3 Homematic Jalousie- & Schaltaktoren! Wer sich mit Funk auskennt, legt Kabel

Ralli

Dass dies als eine reine Bedingungsabfrage gewertet wird und nicht als Trigger/Auslöser.
Gruß,
Ralli

Proxmox 8.4 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.83.6.20250705) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

Cybers

das heißt wenn ich folgenden Code habe:

define Heizung_Wettervorhersage DOIF ([08:30-18:00] and [?Wetter:fc1_high_c] > 15) (set Heizungsschalter off) DOELSE (set Heizungsschalter on)
attr Heizung_Wettervorhersage do always


passiert folgendes:

wenn die Wettervorhersage in der Zeit von 8:30 bis 18:00 einen Tageshöchstwert von über 15°C vorhersagt wird der Heizungsschalter ausgeschaltet . Das passiert auch wenn sich der Tageshöchstwert im laufen den Tages von erst unter 15°C auf über 15° verändert.

Gruß, Sascha
FHEM 6.3 auf Raspberry PI 4 / Smartvisu
Eltako Serie 14: FAM14, FGW14-USB, FSB14, FSR14-4x, FSR14-2x, FDG14, FTS14-EM in Kombination mit Jung F50 24V Tastern
1-Wire Temperatursensoren
aus alter Zeit:
Gott sei Dank nur noch 3 Homematic Jalousie- & Schaltaktoren! Wer sich mit Funk auskennt, legt Kabel

Ralli

Nein, das sind andere Voraussetzungen als in der Fragestellung im Threadstart.

Deine Ausgangsaufgabe war, um 08.30 Uhr zu prüfen, ob ...

Wenn Du das über den gesamten Tag über bei sich ändernden Werten prüfen lassen willst, musst Du das Fragezeichen wegnehmen, denn dann muss der DOIF ja auch über die Temperatur getriggert werden.
Gruß,
Ralli

Proxmox 8.4 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.83.6.20250705) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

Cybers

OK, jetzt habe ich es verstanden. Danke.

Gruß, Sascha
FHEM 6.3 auf Raspberry PI 4 / Smartvisu
Eltako Serie 14: FAM14, FGW14-USB, FSB14, FSR14-4x, FSR14-2x, FDG14, FTS14-EM in Kombination mit Jung F50 24V Tastern
1-Wire Temperatursensoren
aus alter Zeit:
Gott sei Dank nur noch 3 Homematic Jalousie- & Schaltaktoren! Wer sich mit Funk auskennt, legt Kabel

Damian

Zitat von: Ralli am 16 April 2015, 13:25:41
Wenn Du das über den gesamten Tag über bei sich ändernden Werten prüfen lassen willst, musst Du das Fragezeichen wegnehmen, denn dann muss der DOIF ja auch über die Temperatur getriggert werden.

und das do always Attribut gleichzeitig löschen, sonst wird jedes Mal, wenn Temperatur gesendet wird, der Heizungsschalter geschaltet.

Gruß

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