Wenn es zwischen 6 und 9 Uhr kalt im Bad ist, soll eine Steckdose schalten

Begonnen von smurphy, 17 Oktober 2018, 21:20:30

Vorheriges Thema - Nächstes Thema

smurphy

Hallo und guten Abend,

ich bin leider ein ziemlicher Anfänger und breche mir jetzt schon seit Stunden einen ab.
Ich möchte, dass zwischen 6 und 9 Uhr alle 10 Minuten die Temperatur im Bab abgefragt wird. Ist es kälter als 22 Grad, soll eine Heizung geschaltet werden.

Da ich hinten und vorne nicht weiterkomme, habe ich erstmal drastisch reduziert.

In diesem Beispiel soll alle 10 Sekunden geprüft werden, ob es zwischen 6:30 und 9 Uhr ist. Wenn die Bedingung wahr ist, soll die Steckdose geschaltet werden.

Es funktioniert nicht.

Ist jemand so nett, um mir zu helfen?

Gruß
Smurphy


define BadheizungJob at +*00:00:10 {DOIF {if ([06:30-09:00]) {fhem_set"FBDECT_Fritzb_08761_0133130 on"} } }

Esjay

Wie wäre ein Blick in die Commandref.
Ein Mischen von at und doif wäre mir neu!

Grüße

Beta-User

1. Ist das erst mal ein at, das du da definiert hast.
2. ist mir nicht klar, wo hier die temp herkommen soll und warum alle 10 sek. dann geschaltet wird.

Würde vorschlagen, du beschäftigte dich erst nochmal mit Grundlagen, insbesondere. dem Einsteiger-pdf.

Danach kannst du die Frage nochmal im Anfängerbereich stellen, mit list des Temp-Devices, wenn das dann Oberhaupt noch erforderlich ist ;)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

smurphy

Danke Esjay,

ich habe kein dementsprechendes Beispiel gefunden und auch keine bessere Idee um mein Problem zu lösen.
Die Bedingung (Temperatur unter 23 Grad) soll alle 10 Minuten zwischen 2 Uhrzeiten überprüft werden.

Somit kann der an die Steckdose angeschlossene Heizlüfter temperaturgesteuert ein und ausgeschaltet werden.

Ich bin nicht faul, nur vielleicht nicht pfiffig genug um das zu lösen.

Gruß
Smurphy

Otto123

Die nächste Version von DOIF kann dein Konstrukt bestimmt.  ;D

Bis dahin habe ich einen Vorschlag den ich noch verstehe, lediglich das ,+:10 habe ich nicht probiert sondern nur abgeschrieben.
Ich nehme an die Heizung soll bei wärmer als 22 Grad auch wieder ausgehen?
define BadheizungJob DOIF ([06:30-09:00,+:10] and [<Thermometer>:<temperature>] < 22) (set FBDECT_Fritzb_08761_0133130 on) DOELSE (set FBDECT_Fritzb_08761_0133130 off)

Dies hier bitte durch echte Geräte / Readings ersetzen
<Thermometer>
<temperature>

Jede Menge Potential für Verbesserung.  ;)

Was denn nun 22 oder 23 ???

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

smurphy

Zitat von: Otto123 am 17 Oktober 2018, 21:42:32
Die nächste Version von DOIF kann dein Konstrukt bestimmt.  ;D

Bis dahin habe ich einen Vorschlag den ich noch verstehe, lediglich das ,+:10 habe ich nicht probiert sondern nur abgeschrieben.
Ich nehme an die Heizung soll bei wärmer als 22 Grad auch wieder ausgehen?
define BadheizungJob DOIF ([06:30-09:00,+:10] and [<Thermometer>:<temperature>] < 22) (set FBDECT_Fritzb_08761_0133130 on) DOELSE (set FBDECT_Fritzb_08761_0133130 off)

Dies hier bitte durch echte Geräte / Readings ersetzen
<Thermometer>
<temperature>

Jede Menge Potential für Verbesserung.  ;)

Was denn nun 22 oder 23 ???

Gruß Otto

Megaklasse !!

Das hat auf Anhieb geklappt Otto!!

Das die Heizung auch wieder ausgehen soll und ich natürlich die readings der Sensoren hinzuziehen muss, war mir klar. Ich wollte es erstmal reduzieren.

Du hast mir prima geholfen und den Abend gerettet!

Vielen Dank!!

Damian

Zitat von: smurphy am 17 Oktober 2018, 21:40:11
Danke Esjay,

ich habe kein dementsprechendes Beispiel gefunden und auch keine bessere Idee um mein Problem zu lösen.
Die Bedingung (Temperatur unter 23 Grad) soll alle 10 Minuten zwischen 2 Uhrzeiten überprüft werden.

Somit kann der an die Steckdose angeschlossene Heizlüfter temperaturgesteuert ein und ausgeschaltet werden.

Ich bin nicht faul, nur vielleicht nicht pfiffig genug um das zu lösen.

Gruß
Smurphy

DOIF ist ein Modul, welches selbstständig arbeitet. Du wirst kaum Bespiele finden, wo DOIF mit AT kombiniert wird - wozu auch, DOIF beinhaltet bereits Zeitsteuerung.

Vermutlich sendet dein Bad-Sensor zyklisch und erzeugt Events, daher würde sich eine Abfrage alle 10 Minuten erübrigen. In der Commandref findest du sehr viele Beispiele zu Zeit- und Ereignissteuerung. Nimm dir ruhig eine halbe Stunde Zeit diese zu lesen, dann wirst du vermutlich direkt eine sinnvolle Definition selbst vornehmen können.

Vermutlich ist die zyklische Abfrage alle 10 Minuten im Beispiel von Otto, wie bereits geschrieben, überflüssig, daher würde schon ausreichen:

define BadheizungJob DOIF ([06:30-09:00] and [<Thermometer>:<temperature>] < 22) (set FBDECT_Fritzb_08761_0133130 on) DOELSE (set FBDECT_Fritzb_08761_0133130 off)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Beta-User

 ???
Das mag ja vielleicht so funktionieren wie Otto das vorschlägt, aber dennoch: warum muss die Temp gepollt werden?

Erst mal Grundlagen klären, vorher macht das m.E. keinen Sinn, irgendwelche Logikdevices zusammenzuschustern....

Just my2ct.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

smurphy

Ich bin da wirklich froh, dass Ihr mir diese Tips gebt.

Ich habe wirklich bereits Stunden mit dem Thema verbracht und nicht nur eine halbe.

Ich bin nicht so geübt im Lesen und adaptieren von Refs und Beispielen.

Irgendwie kam mir die Kombination von at und doif sinnvoll vor und dann habe ich mich darin verbissen.

Damian

Zitat von: smurphy am 17 Oktober 2018, 22:01:15
Ich habe wirklich bereits Stunden mit dem Thema verbracht und nicht nur eine halbe.

Dann weißt du bestimmt inzwischen, dass vieles in FHEM ereignisgesteuert funktioniert (siehe Events im Eventmonitor), da muss man selten etwas ständig in regelmäßigen Abständen abfragen. Auch das Modul DOIF arbeitet, wie viele andere Module auch, ereignisgesteuert, indem es über deinen angegebenen Sensor Tag und Nacht wacht :)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Beta-User

Zitat von: smurphy am 17 Oktober 2018, 22:01:15
Ich bin nicht so geübt im Lesen und adaptieren von Refs und Beispielen.
Ernstgemeinter Rat: wenn dir das weiter schwer fällt, solltest du es lassen. Ein, zwei Beispiele ist OK, aber dann sollte das besser werden.

Wieder just my2ct.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Otto123

Ich bin erstmal dafür zu helfen die Idee des Anwenders umzusetzen und sie dann zu "optimieren" dann gibt es erstmal ne Ausgangsbasis als Grundlage.
Seitenweise zerreden bringt meist erstmal nicht weiter, kann man aber immer noch  :D
Ich habe hier schon Sensoren gesehen, die im Sekundentakt liefern. Temperaturegelung braucht eine gewisse Verzögerung, die kann man unterschiedlich erreichen.
Langsame Taktung ist auch ein probates Mittel - besser als Schwingen und Flattern. Es war die Idee von smurphy, ich nahm an es gibt einen Grund dafür.

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

Damian

Zitat von: Otto123 am 17 Oktober 2018, 22:16:34
Ich bin erstmal dafür zu helfen die Idee des Anwenders umzusetzen und sie dann zu "optimieren" dann gibt es erstmal ne Ausgangsbasis als Grundlage.
Seitenweise zerreden bringt meist erstmal nicht weiter, kann man aber immer noch  :D
Ich habe hier schon Sensoren gesehen, die im Sekundentakt liefern. Temperaturegelung braucht eine gewisse Verzögerung, die kann man unterschiedlich erreichen.
Langsame Taktung ist auch ein probates Mittel - besser als Schwingen und Flattern. Es war die Idee von smurphy, ich nahm an es gibt einen Grund dafür.

Gruß Otto

Klar, das ist alles richtig und man sollte es im Hinterkopf behalten, wenn man weiß, was Ereignissteuerung ist - in diesem Fall bin ich mir nicht sicher, ob es der  Fall war. Wir wollen ja nicht, dass smurphy beim nächsten Problem im Sekundentakt prüft, ob es schon 06:00 Uhr ist ;)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Beta-User

Nix für ungut, und ich würde mich aufrichtig freuen, wenn der TE hier bereits länger über dem Event-Monitor gebrütet hatte, das PDF neben sich.

Daran glaube ich aber leider nicht, daher auch die klaren Worte.

Mag der TE die Diskussion zum Anlass nehmen, für sich zu klären, wo er wirklich steht ;) .
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files