Moin,
hat jemand eine Idee wie man ein device für eine gewisse Zeit deaktiviert.
Problemstellung: Es gibt ein paar devices, die die Kellerlüftung schalten. Außerdem gibt es ein device, dass die Lüftung alle 15 Minuten für eine Minute anschaltet. In dieser Minute sollen alle anderen devices die die Lüftung schalten deaktiviert werden. Der code sieht so aus.
defmod Lueftung_an60 at +*00:15:00 {\
fhem("set Lueftung on-for-timer 60");;\
}
Ich suche so etwas:
defmod Lueftung_an60 at +*00:15:00 {\
fhem("set Lueftung on-for-timer 60");;\
fhem("<deaktiviere andere-Lüftungssteuerung1 für 60 Sekunden>");;\
fhem("<deaktiviere andere-Lüftungssteuerung2 für 60 Sekunden>");;\
}
Danke
Petz
Hallo Meister_Petz,
ich versuche mich mal an einer ersten Antwort, ich bin auch nur FHEM-Hobbytüfftler...
Je nachdem mit welchem Modul du die anderen Lüftungssteuerungen schaltest, könntest du dort eine Bedingung einfügen.
"Führe Lueftung1, 2, 3, etc. nur aus, wenn die Bedingung Lueftung (die, die du im at schaltest) ist "off" erfüllt ist". Ggf. geht das dann über ein if/IF. Solange dein at dann die Lüftung auf "on" schaltet (60 s) werden die anderen Aktionen aufgrund der nicht erfüllten Bedingung auch nicht ausgeführt.
Gruß CaP
Manche Devices/Module bieten auch ein set Device inactive an...
Ansonsten: attr Device disable 1/0
Gruß, Joachim
Zitat von: CaP am 23 August 2023, 14:51:58"Führe Lueftung1, 2, 3, etc. nur aus, wenn die Bedingung Lueftung (die, die du im at schaltest) ist "off" erfüllt ist". Ggf. geht das dann über ein if/IF. Solange dein at dann die Lüftung auf "on" schaltet (60 s) werden die anderen Aktionen aufgrund der nicht erfüllten Bedingung auch nicht ausgeführt.
Danke erstmal. So leicht gehts leider nicht. Weil ein Lueftung1, 2, 3 die Lüftung gegebenfalls auch an schaltet.
Zitat von: MadMax-FHEM am 23 August 2023, 14:59:32attr Device disable 1/0
Genau das würde ich gerne setzen. Aber wie geht das für 60 Sekunden also im Prinzip:
setreading Lüftungssteuerung1 disable 1 für 60 Sekunden
Danke schon mal
Zitat von: Meister_Petz am 23 August 2023, 16:24:56setreading Lüftungssteuerung1 disable 1 für 60 Sekunden
Das ist schon mal ganz falsch, weil es ein Attribut und kein Reading ist.
attr Device disable 1; sleep 60; attr Device disable 0
ABER: um welche Art von Devices handelt es sich? Weil vielleicht geht es eleganter. Bzw. was sind deine "Gesamtkonstrukte", weil vielleicht geht es eleganter...
Weil z.B. 1. erscheint immer das rote Fragezeichen und 2. wenn fhem neu gestartet wird, dann gültet was eben fest in der Config beim Device gespeichert ist (disable 1 oder eben 0)
Gruß, Joachim
Je nachdem könnte man auch mit "disabledForIntervals" arbeiten und z.B. ReadingsAge eines (zusätzlich) gesetzten Readings (Schaltanlass?) mit auswerten. Aber ohne "Butter bei die Fische" ist es schwierig, da was konkretes dazu zu schreiben....
defmod Lueftung_an60 at +*00:15:00 {\
fhem("set Lueftung on-for-timer 60");;\
}
Zum einen brauchst Du da kein fhem() weil Du ja einen FHEM Befehl und keine perl Funktion ausführst.
defmod Lueftung_an60 at +*00:15:00 set Lueftung on-for-timer 60
Dann kannst Du einfach noch zusätzlich einen Parameter setzen, der dafür sorgt, dass "andere Lüftersteuerung" prüfen kann, ob sie überhaupt schalten darf.
defmod Lueftung_an60 at +*00:15:00 set Lueftung on-for-timer 60;; setreading Lueftung force 1
In "andere Lüftersteuerung" musst Du dann einfach nur prüfen, ob das Flag gesetzt ist:
defmod andere_Steuerung at|notify|wasAuchImmer ... {return if ReadingsNum('Lueftung','force',0);; ansonsten führe den gewünschten Code aus...}
Und als dritten Schritt musst Du nach 60 Sekunden das Flag wieder zurücksetzen.
defmod Lueftung_an60 at +*00:15:00 set Lueftung on-for-timer 60;; setreading Lueftung force 1;; sleep 60;; deletereading Lueftung force
Ein at bietet auch ein set xxx inactive und set xxx active.
Dann kann man sich das Flag sparen und es gibt auch kein rotes Dreieck.
Zitat von: jhohmann am 23 August 2023, 21:29:50Ein at bietet auch ein set xxx inactive und set xxx active.
Dann kann man sich das Flag sparen und es gibt auch kein rotes Dreieck.
Wo soll denn da ein rotes Dreieck herkommen?
Danke für die guten Ansätze, ich werde mal testen was sich gut umsetzen lässt und werde berichten
Zitat von: betateilchen am 23 August 2023, 21:39:40Zitat von: jhohmann am 23 August 2023, 21:29:50Ein at bietet auch ein set xxx inactive und set xxx active.
Dann kann man sich das Flag sparen und es gibt auch kein rotes Dreieck.
Wo soll denn da ein rotes Dreieck herkommen?
Oben wurde als Lösung ein attr xxx disable 1 empfohlen. Diese Änderung sorgt für eine "man sollte speichern" Warnung, oder nicht?
Das set xxx inactive bei einem at macht das nicht und das Ding ist trotzdem inaktiv.
Zitat von: jhohmann am 24 August 2023, 10:07:34Oben wurde als Lösung ein attr xxx disable 1 empfohlen. Diese Änderung sorgt für eine "man sollte speichern" Warnung, oder nicht?
Ja aber es gibt kein rotes Dreieck... ;)
Es ist ein rotes Fragezeichen 8)
EDIT: und bei der vorgeschlagenen Nutzung des Flags gibt es keine Warnung, weil ein Reading...
Gruß, Joachim
Zitat von: Meister_Petz am 24 August 2023, 09:44:19Danke für die guten Ansätze, ich werde mal testen was sich gut umsetzen lässt und werde berichten
Kann man so machen, schade, dass du keine weiteren Informationen lieferst...
Viel Erfolg!
Am Ende die Lösung mitteilen wäre u.U. hilfreiche für zukünftige Fragesteller...
Gruß, Joachim
Gerne auch mit mehr Infos:
Es geht um die Kellerentfeuchtung. Es gibt bei mir folgende Sensoren für die Luftfeuchtigkeit (absolut):
- Aussen
- Keller
Es gibt einen Lüfter, der die Kellerluft in einen Lichtschacht hinaus bläst:
- wenn die absolute Luftfeuchtigkeit draußen niedriger ist als drinnen
- einmal alle 15 Minuten für eine Minute, damit der Kamin keinen "Zug" nach oben aufbaut, was dazu führen würde, dass allein durch den Zug Luft von draußen in den Keller gesaugt wird.
- und da der Lüfter in der Werkstatt ist, möchte ich ihn auch anschalten können, wenn mal was staubt oder stinkt,...
Der automatische Schaltvorgang durch die Feuchtigkeitssensoren wird einmal pro Minute "getriggert" und schaltet dann eventuell den Lüfter aus, obwohl er durch mich manuell oder wegen der "Kaminzugumkehr" angeschaltet ist.
Deswegen meine Frage.
Zitat von: Meister_Petz am 24 August 2023, 12:34:56Der automatische Schaltvorgang durch die Feuchtigkeitssensoren wird einmal pro Minute "getriggert" und schaltet dann eventuell den Lüfter aus,
Warum triggerst Du nicht nur, wenn der Lüfter nicht läuft?
Zitatwird einmal pro Minute "getriggert"
Und warum "pollst" Du? Ich würde auf Änderungen der Luftfeuchte "Trickern". FHEM ist ein Event-Basiertes System (in der Theorie), da ist pollen, also Zyklischen Abfragen immer "nicht optimal" ...
Einmal pro Minute ergibt sich, weil der Sensor 1x pro Minute die Daten schickt. Das Event triggert die Lüftung.
Zitat von: rabehd am 24 August 2023, 13:09:34Warum triggerst Du nicht nur, wenn der Lüfter nicht läuft?
Das muss ich durchdenken!
Manchmal ist sogar VORHER denken hilfreich. Dann kann man nämlich die gesamte Aufgabe in einem Rutsch erledigen und muss sich nicht über mehrere Schaltmöglichkeiten verzetteln.
Zitat von: betateilchen am 24 August 2023, 16:27:29Manchmal ist sogar VORHER denken hilfreich. Dann kann man nämlich die gesamte Aufgabe in einem Rutsch erledigen und muss sich nicht über mehrere Schaltmöglichkeiten verzetteln.
Eigentlich ein Grundsatz. Vielleicht haben wir den Anstoß gegeben, dass Thema mal neu anzufangen und erstmal zu planen.
Aber: Oft wächst sowas und man fürchtet sich vor einem Abriß.