FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Meister_Petz am 23 August 2023, 14:38:26

Titel: Gerät für gewisse Zeit deaktivieren
Beitrag von: Meister_Petz am 23 August 2023, 14:38:26
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
Titel: Aw: Gerät für gewisse Zeit deaktivieren
Beitrag von: CaP am 23 August 2023, 14:51:58
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
Titel: Aw: Gerät für gewisse Zeit deaktivieren
Beitrag von: MadMax-FHEM am 23 August 2023, 14:59:32
Manche Devices/Module bieten auch ein set Device inactive an...

Ansonsten: attr Device disable 1/0

Gruß, Joachim
Titel: Aw: Gerät für gewisse Zeit deaktivieren
Beitrag von: Meister_Petz am 23 August 2023, 16:23:19
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.
Titel: Aw: Gerät für gewisse Zeit deaktivieren
Beitrag von: Meister_Petz am 23 August 2023, 16:24:56
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
Titel: Aw: Gerät für gewisse Zeit deaktivieren
Beitrag von: MadMax-FHEM am 23 August 2023, 17:07:33
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
Titel: Aw: Gerät für gewisse Zeit deaktivieren
Beitrag von: Beta-User am 23 August 2023, 17:51:36
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....
Titel: Aw: Gerät für gewisse Zeit deaktivieren
Beitrag von: betateilchen am 23 August 2023, 19:31:16
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
Titel: Aw: Gerät für gewisse Zeit deaktivieren
Beitrag von: jhohmann am 23 August 2023, 21:29:50
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.
Titel: Aw: Gerät für gewisse Zeit deaktivieren
Beitrag von: betateilchen am 23 August 2023, 21:39:40
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?
Titel: Aw: Gerät für gewisse Zeit deaktivieren
Beitrag von: Meister_Petz am 24 August 2023, 09:44:19
Danke für die guten Ansätze, ich werde mal testen was sich gut umsetzen lässt und werde berichten
Titel: Aw: Gerät für gewisse Zeit deaktivieren
Beitrag von: jhohmann am 24 August 2023, 10:07:34
Zitat von: betateilchen am 23 August 2023, 21:39:40
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?
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.
Titel: Aw: Gerät für gewisse Zeit deaktivieren
Beitrag von: MadMax-FHEM am 24 August 2023, 10:11:37
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
Titel: Aw: Gerät für gewisse Zeit deaktivieren
Beitrag von: MadMax-FHEM am 24 August 2023, 10:13:51
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
Titel: Aw: Gerät für gewisse Zeit deaktivieren
Beitrag von: Meister_Petz am 24 August 2023, 12:34:56
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.
Titel: Aw: Gerät für gewisse Zeit deaktivieren
Beitrag von: rabehd am 24 August 2023, 13:09:34
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?
Titel: Aw: Gerät für gewisse Zeit deaktivieren
Beitrag von: Wernieman am 24 August 2023, 13:20:36
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" ...
Titel: Aw: Gerät für gewisse Zeit deaktivieren
Beitrag von: Meister_Petz am 24 August 2023, 15:07:02
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!
Titel: Aw: Gerät für gewisse Zeit deaktivieren
Beitrag von: betateilchen am 24 August 2023, 16:27:29
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.
Titel: Aw: Gerät für gewisse Zeit deaktivieren
Beitrag von: rabehd am 24 August 2023, 17:56:20
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ß.