Hauptmenü

Schaltet das doif so nun aus?

Begonnen von Wasserwerk33, 22 April 2019, 21:28:33

Vorheriges Thema - Nächstes Thema

Wasserwerk33

Hallo Leute

Habe mir eine Lüftersteuerung gebaut. Einschaltet klappt. Ausschalten ist schlecht zu testen wegen der Uhrzeit. Und habe leider nur Abend äs dazu Zeit und dort schläft er schon.

defmod Ole_Luefter_automatik DOIF ([18:00-4:00] and [LaCrosse_0C:temperature]-[LaCrosse_23:temperature] < 2) (set Luefter_Ole on) DOELSEIF ([4:00] or [LaCrosse_23:temperature] < 18) (set Luefter_Ole off)
attr Ole_Luefter_automatik room Ole

Es soll nachts um 4 Uhr abschalten oder bei unter 18 Grad.

Danke für den Tipp schon mal.

rabehd

Warum änderst Du zum Testen nicht die Uhrzeiten und ggf. die Temperaturen?
Auch funktionierende Lösungen kann man hinterfragen.

Ellert

Mit den Zeilenumbrüchen in der Definition wird es nicht funktionieren.

rabehd

Ich hoffe mal er hat den Code ohne Zeilenumbrüche und weiß nur nicht wie man hier Code einfügt.
Auch funktionierende Lösungen kann man hinterfragen.

Otto123

Zum posting: https://forum.fhem.de/index.php/topic,71806.0.html
Ich würde die Bedingung in Eine packen, die einzelne Zeit 4:00 und Abfrage < 18 macht keinen Sinn.

defmod Ole_Luefter_automatik DOIF ([18:00-4:00] and [LaCrosse_0C:temperature]-[LaCrosse_23:temperature] < 2 and [LaCrosse_23:temperature] > 18) (set Luefter_Ole on) DOELSE (set Luefter_Ole off)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

MadMax-FHEM

#5
Zitat von: Otto123 am 23 April 2019, 09:22:32
Zum posting: https://forum.fhem.de/index.php/topic,71806.0.html
Ich würde die Bedingung in Eine packen, die einzelne Zeit 4:00 und Abfrage < 18 macht keinen Sinn.

defmod Ole_Luefter_automatik DOIF ([18:00-4:00] and [LaCrosse_0C:temperature]-[LaCrosse_23:temperature] < 2 and [LaCrosse_23:temperature] > 18) (set Luefter_Ole on) DOELSE (set Luefter_Ole off)

Gruß Otto

Er frägt ja nicht UND sondern ODER ;)

Er will ja zwischen 18:00 und 04:00 wenn irgendwas mit Temp ist ODER aber um 04:00 (auf jeden Fall ausschalten) ODER wenn schon vorher? die Temp kleiner 18Grad ist...

Ob nun das DOIF so stimmt und schaltet wie gewünscht?
Nutze kein DOIF ;)

EDIT: äh nutze kein DOIF, daher lasse ich die Anmerkung mal stehen denke aber dass die Def von Otto vermutlich auch macht was gewünscht ist... Weil DOELSE ja "aus macht", wenn nichts bei DOIF passt ;) / halte zukünftig bei DOIF besser die Klappe ;)

Aber wie schon angemerkt: ausprobieren ;)
(andere Uhrzeit im DOIF zum Test oder einfach mal per setreading [kurzzeitig / weil wird ja wieder "überschrieben"] die Temp entsprechend setzen)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Otto123

Ich denke das passt schon mit der Umkehrung (or -> and) beim Wechsel in den anderen Zweig.

Die einzige (eventuell nur philosophische) Frage ist: passt es auch mit >18 oder müsste es >= 18 (wäre die exakte Umkehrung) oder nimmt man > 17 (weil = 18 gar nicht in der Überlegung war)  ;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

daedalus0815


Klammern sind deine Freunde....?!


(
[?18:00-04:00] and    ### ?-> nur Bedingung, kein Trigger
    (([LaCrosse_0C:temperature]-[LaCrosse_23:temperature]) < 2) and
([LaCrosse_23:temperature] > 18)
)
(set Luefter_Ole on)
DOELSEIF
( [04:01] )
(set Luefter_Ole off)
DOELSE
(set Luefter_Ole off)


Otto123

Klammern sind in dem Fall zwar sparsam aber nicht zu wenig  ;D
https://perldoc.perl.org/perlop.html#Operator-Precedence-and-Associativity

Probiers aus - für die FHEM Kommandozeile  ;D
{4-2 > 2}
{4-1 > 2}


Und er wollte 4:00 Uhr aus haben nicht 4:01 Uhr ;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Wasserwerk33

#9
Hallo

Und sry fürs jetzt erst melden. @otto es schaltet von dir sehr gut Danke.

Aber würde gerne noch dieses einfügen. Oder bin ich dafür auf den Holzweg oder gibt es eine einfachere/ andere Lösung.
Anwendungsbeispiel: Warmwasserzirkulation

define di_pump_circ DOIF ([05:00-22:00])(set pump on)(set pump off) DOELSE (set pump off)
attr di_pump_circ wait 0,300
attr di_pump_circ repeatcmd 3600

Zwischen 5:00 und 22:00 Uhr läuft die Zirkulationspumpe alle 60 Minuten jeweils 5 Minuten lang.


So sieht meine List aus Zeitangaben sind nur Testzwecke.

Internals:
   CFGFN     
   DEF        ([18:00-4:00] and [LaCrosse_0C:temperature]-[LaCrosse_23:temperature] < 2 and [LaCrosse_23:temperature] > 18) (set Luefter_Ole on) DOELSE (set Luefter_Ole off)
   FUUID      5cc0cb6b-f33f-faf7-7809-0fd5326691c8d4ec
   MODEL      FHEM
   NAME       Ole_Luefter_automatik
   NR         21454
   NTFY_ORDER 50-Ole_Luefter_automatik
   STATE      cmd_1
   TYPE       DOIF
   VERSION    18890 2019-03-13 18:56:41
   READINGS:
     2019-04-24 23:00:10   Device          LaCrosse_23
     2019-04-24 22:59:14   cmd             1
     2019-04-24 22:59:14   cmd_event       LaCrosse_0C
     2019-04-24 22:59:14   cmd_nr          1
     2019-04-24 23:00:06   e_LaCrosse_0C_temperature 16.2
     2019-04-24 23:00:10   e_LaCrosse_23_temperature 21.2
     2019-04-24 22:55:30   mode            enabled
     2019-04-24 22:59:14   state           cmd_1
     2019-04-24 22:47:39   timer_01_c01    25.04.2019 18:00:00
     2019-04-24 22:47:39   timer_02_c01    25.04.2019 04:00:00
     2019-04-24 22:59:14   wait_timer      24.04.2019 23:02:34 cmd_1 LaCrosse_0C
   Regex:
     accu:
   attr:
     cmdState:
     repeatcmd:
       200
     wait:
       0:
         O
         100
     waitdel:
   condition:
     0          ::DOIF_time($hash,0,1,$wday,$hms) and ::ReadingValDoIf($hash,'LaCrosse_0C','temperature')-::ReadingValDoIf($hash,'LaCrosse_23','temperature') < 2 and ::ReadingValDoIf($hash,'LaCrosse_23','temperature') > 18
   days:
   devices:
     0           LaCrosse_0C LaCrosse_23
     all         LaCrosse_0C LaCrosse_23
   do:
     0:
       0          set Luefter_Ole on
     1:
       0          set Luefter_Ole off
   helper:
     event      battery: ok,temperature: 21.2,humidity: 54
     globalinit 1
     last_timer 2
     sleepdevice LaCrosse_0C
     sleepsubtimer 0
     sleeptimer 0
     timerdev   LaCrosse_23
     timerevent battery: ok,temperature: 21.2,humidity: 54
     triggerDev LaCrosse_23
     DOIF_eventas:
       cmd_nr: 1
       cmd: 1
       cmd_event: LaCrosse_0C
       state: cmd_1
     timerevents:
       battery: ok
       temperature: 21.2
       humidity: 54
     timereventsState:
       battery: ok
       temperature: 21.2
       humidity: 54
     triggerEvents:
       battery: ok
       temperature: 21.2
       humidity: 54
     triggerEventsState:
       battery: ok
       temperature: 21.2
       humidity: 54
   internals:
   interval:
     0          -1
     1          0
   intervalfunc:
   itimer:
   localtime:
     0          1556208000
     1          1556157600
   readings:
     0           LaCrosse_0C:temperature LaCrosse_23:temperature
     all         LaCrosse_0C:temperature LaCrosse_23:temperature
   realtime:
     0          18:00:00
     1          04:00:00
   time:
     0          18:00:00
     1          4:00
   timeCond:
     0          0
     1          0
   timer:
     0          0
     1          0
   timers:
     0           0  1
   trigger:
   triggertime:
     1556157600:
       localtime  1556157600
       hash:
     1556208000:
       localtime  1556208000
       hash:
   uiState:
   uiTable:
Attributes:
   repeatcmd  200
   room       Ole
   wait       O,100


Schaltet nur leider nicht. Er fragt ejar die Temperatursensoren ab

Per

Zitat von: Wasserwerk33 am 24 April 2019, 22:33:06Aber würde gerne noch dieses einfügen.
Mein Vorschlag: anderer Aktor = anderes DOIF. Nicht dass es ungewollte Quereffekte gibt.

Otto123

Hallo Wasserwerk33,

sorry aber ich verstehe Deine Gedankengänge nicht. Das list von dem DOIF ist doch das was funktioniert?
Der Code von dem DOIF Wasserzirkulation ist aus der Doku?

Du willst die Intervallschaltung von dort in dein DOIF bauen?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Wasserwerk33

Hallo

Fangen wir vorne. Das ist ein Lüfter der in der Nacht (Temperaturabfall) kühle Luft in die Zimmer der Kinder leitet. Funktioniert soweit super.

Das soll passieren in der Zeit von18-4 uhr. Und das bei 2 Grad temperatur unterschied aussen zu innen. Das Zimmer aber nicht kälter als 18 Grad machen.

Und nicht die ganze Nacht laufen sozusagen Intervall mässig. Letztes Jahr hatte ich dieses einfach nur mit einem button der 7200 lief und dann ausging und dann nicht mehr an. Aber Intervall wäre schön besser.

Otto123

Also, falls das jetzt bedeutet, auf alle 3 Fragen von mir ist die Antwort Ja?  ;)

defmod Ole_Luefter_automatik DOIF ([18:00-4:00] and [LaCrosse_0C:temperature]-[LaCrosse_23:temperature] < 2 and [LaCrosse_23:temperature] > 18) (set Luefter_Ole on) (set Luefter_Ole off) DOELSE (set Luefter_Ole off)
attr Ole_Luefter_automatik wait 0,300
attr Ole_Luefter_automatik repeatcmd 3600
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Wasserwerk33

Danke Läuft super. Auch mit dem Timer. Meinte letztens immer das er die Temperatursensoren abfragt. Dieses war aber wohl nicht der fall.