[gelöst] "at" timespec anpassen auch wenn das "at" bereits existiert

Begonnen von FhemPiUser, 27 September 2015, 10:00:28

Vorheriges Thema - Nächstes Thema

FhemPiUser

Hallo,

ich möchte die Soll-Temperatur der Thermostate hochsetzen, wenn der Bewegungsmelder Bewegung erkennt und wieder heruntersetzen, wenn er für mind. 15min keine Bewegung erkennt.

Ich habe das mit folgendem "at" versucht, bekomme aber die bekannte Fehlermeldung "...already defined, delete it first" und es wird damit immer der erste "at" ausgeführt und nie bei erneuter "define" an die +15min angepasst.

(([BM_zimmer:motionCount] ne "") and ([?6:30-20:00])) (set WT_zimmer_Climate desired-temp 21, define at_BM_WT_zimmer_timer at +00:15 set WT_zimmer_Climate desired-temp 19) DOELSE ()


Jemand eine Idee, wie man das einfach umsetzen kann?

Eine Idee wäre abzufragen, ob es das "at" schon gibt und dann ein "modify" zu machen, aber ich hoffe es geht einfacher...

Icinger

Ja, geht wirklich einfacher, "defmod" heißt das Zauberwort :)

lg, Ici
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

igami

Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

FhemPiUser


Damian

Zitat von: FhemPiUser am 27 September 2015, 10:00:28
Hallo,

ich möchte die Soll-Temperatur der Thermostate hochsetzen, wenn der Bewegungsmelder Bewegung erkennt und wieder heruntersetzen, wenn er für mind. 15min keine Bewegung erkennt.

Ich habe das mit folgendem "at" versucht, bekomme aber die bekannte Fehlermeldung "...already defined, delete it first" und es wird damit immer der erste "at" ausgeführt und nie bei erneuter "define" an die +15min angepasst.

(([BM_zimmer:motionCount] ne "") and ([?6:30-20:00])) (set WT_zimmer_Climate desired-temp 21, define at_BM_WT_zimmer_timer at +00:15 set WT_zimmer_Climate desired-temp 19) DOELSE ()


Jemand eine Idee, wie man das einfach umsetzen kann?

Eine Idee wäre abzufragen, ob es das "at" schon gibt und dann ein "modify" zu machen, aber ich hoffe es geht einfacher...

Geht einfacher ohne at:

(([BM_zimmer:motionCount] ne "") and ([?6:30-20:00])) (set WT_zimmer_Climate desired-temp 21)(set WT_zimmer_Climate desired-temp 19)


Attribut: wait 0,900

DOELSE () bei einer Bedingung ohne do always wird automatisch gesetzt.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

FhemPiUser

das mit dem wait hatte ich auch überlegt, aber ich denke dass das zweite kommando nie getriggert werden würde (ausser nachts und da soll es ohnehin nicht), da motioncount immer ungleich "" ist. motioncount zählt bei jeder bewegung hoch.

Damian

Zitat von: FhemPiUser am 27 September 2015, 11:51:36
das mit dem wait hatte ich auch überlegt, aber ich denke dass das zweite kommando nie getriggert werden würde (ausser nachts und da soll es ohnehin nicht), da motioncount immer ungleich "" ist. motioncount zählt bei jeder bewegung hoch.

Bedenke, dass durch die Klammerung beide Kommandos zu der Bedingung zählen und nicht zum Sonst-Fall. Ohne wait würden sie sogar sofort hintereinander ausgeführt werden.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

FhemPiUser

ja, aber ich dachte nur ein motioncount event triggert die doif abfrage? die bedingung mit den zeiten haben ja ein ? davor...

Damian

Zitat von: FhemPiUser am 27 September 2015, 12:55:45
ja, aber ich dachte nur ein motioncount event triggert die doif abfrage? die bedingung mit den zeiten haben ja ein ? davor...

reicht doch, wenn dein motioncount event triggert, dann werden beide Kommandos ausgeführt. Es handelt sich hier um neue Funktionalität des Wait-Attributes mit Komma (nicht mit Doppelpunkt verwechseln).

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

FhemPiUser

irgendetwas stimmt noch nicht. er setzt die temperatur alle 15min hoch und dann in 15min wieder runter, auch ohne bewegung...

hab übrugens do always gesetzt.

@damian: das mit dem wait muss ich mal probieren...

FhemPiUser

@damian: jetzt habe ich das verstanden mit dem wait und umgesetzt. Es scheint zu funktionieren. Das DOIF ist schon genial....

FhemPiUser

#11
...komisch, die Abfrage ([BM_zimmer:motionCount] ne "") wird auch getriggert, wenn es gar kein motionCount-Event gab, sondern ein BM_zimmer:brightness-Event. Ist das normal?

habe jetzt ein and ([BM_Sinjezimmer:motionCount:sec] < 3) hinzugefügt.

Damian

Zitat von: FhemPiUser am 27 September 2015, 14:36:07
...komisch, die Abfrage ([BM_zimmer:motionCount] ne "") wird auch getriggert, wenn es gar kein motionCount-Event gab, sondern ein BM_zimmer:brightness-Event. Ist das normal?

habe jetzt ein and ([BM_Sinjezimmer:motionCount:sec] < 3) hinzugefügt.

Du fragst nicht einen Trigger ab, sondern das Reading BM_zimmer:motionCount. Das Modul wertet die Bedingung aus, sobald irgendein Trigger von BM_zimmer kommt.

Wenn du nur auf das Event motionCount abfragen willst, dann kannst du das so ähnlich, wie beim notify machen, mit der Syntax:
([BM_zimmer:?motionCount])(...)

Genaueres dazu findest du in der deutschen Commandref zu DOIF.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF