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"} } }
Wie wäre ein Blick in die Commandref.
Ein Mischen von at und doif wäre mir neu!
Grüße
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 ;)
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
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
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!!
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)
???
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.
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.
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 :)
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.
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
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 ;)
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 ;) .