FHEM Forum

FHEM => Automatisierung => Thema gestartet von: cr4y.z1 am 12 Juli 2015, 11:09:56

Titel: Notify in Verbindung mit at - Rasenbewässerung
Beitrag von: cr4y.z1 am 12 Juli 2015, 11:09:56
Hallo zusammen,

für meine Rasenbewässerung scheitere ich derzeit an einer vermutlich ganz simplen Aufgabe.
Ich habe einen Dummy mit dem State Time erstellt, mit dem ich eine Startuhrzeit für die tägliche Bewässerung vergebe. Ein modify übergibt anschließend den Wert von Time an die jeweiligen on-for-timer defines.

Das funktioniert soweit auch Prima. Jetzt wollte ich dieses gestern gerne für morgens und abends festlegen.

Also hab ich den Dummy mit den modify Befehlen dupliziert und wollte diesen jetzt mit einem at Befehl verknüpfen, so dass zur Mittagszeit das at der on-for-timer defines mit einem neuen Wert überschrieben werden. Und jetzt komme ich in Schwierigkeiten:

Das notify reagiert nicht im Zusammenhang mit dem at. Das heisst der Befehl für das modify wird direkt ausgeführt, sobald ich den Wert des Dummys verändere.

Funktionierender Teil:
# Bewaesserung.Startzeit
define Bewaesserung.Startzeit dummy
attr Bewaesserung.Startzeit userattr WeckerUhrzeit
attr Bewaesserung.Startzeit alias Startzeit der Bewässerung - Morgens
attr Bewaesserung.Startzeit room Konfiguration
attr Bewaesserung.Startzeit setList state:time
attr Bewaesserung.Startzeit webCmd state

define n_Bewaesserung.Startzeit notify Bewaesserung.Startzeit {fhem("modify Zeitschaltuhr.Bewaesserung.Rasen.EineStunde *%;; modify Zeitschaltuhr.Bewaesserung.Rasen.DreiviertelStunde *%;; modify Zeitschaltuhr.Bewaesserung.Rasen.HalbeStunde *%;; modify Zeitschaltuhr.Bewaesserung.Rasen.ViertelStunde *%;; modify Zeitschaltuhr.Bewaesserung.Blumen.EineStunde *%;; modify Zeitschaltuhr.Bewaesserung.Blumen.DreiviertelStunde *%;; modify Zeitschaltuhr.Bewaesserung.Blumen.HalbeStunde *%;; modify Zeitschaltuhr.Bewaesserung.Blumen.ViertelStunde *%");;}



Nicht funktionierender Teil:
# Bewaesserung.Startzeit2
define Bewaesserung.Startzeit2 dummy
attr Bewaesserung.Startzeit2 userattr WeckerUhrzeit
attr Bewaesserung.Startzeit2 alias Startzeit der Bewässerung - Abends
attr Bewaesserung.Startzeit2 room Konfiguration
attr Bewaesserung.Startzeit2 setList state:time
attr Bewaesserung.Startzeit2 webCmd state

define n_Bewaesserung.Startzeit2 notify Bewaesserung.Startzeit2 at *10:45:00 {fhem("modify Zeitschaltuhr.Bewaesserung.Rasen.EineStunde *%;; modify Zeitschaltuhr.Bewaesserung.Rasen.DreiviertelStunde *%;; modify Zeitschaltuhr.Bewaesserung.Rasen.HalbeStunde *%;; modify Zeitschaltuhr.Bewaesserung.Rasen.ViertelStunde *%;; modify Zeitschaltuhr.Bewaesserung.Blumen.EineStunde *%;; modify Zeitschaltuhr.Bewaesserung.Blumen.DreiviertelStunde *%;; modify Zeitschaltuhr.Bewaesserung.Blumen.HalbeStunde *%;; modify Zeitschaltuhr.Bewaesserung.Blumen.ViertelStunde *%");;}


Außerdem würde ich gerne noch eine if-Funktion mit einbauen, die vorab überprüft ob der Wert des Dummys Bewaesserung.Startzeit2 eine Uhrzeit ist. Ansonsten soll der Wert der über den Dummy Bewaesserung.Startzeit definiert wurde stehen bleiben.

Da ich nun wirklich auf dem Schlauch stehe und auch kein großer Held bin was die Syntax betrifft, würde ich mich freuen, wenn mir jemand helfen könnte.


Vielen Dank und einen schönen Sonntag!

Viele Grüße

cr4y.z1
Titel: Antw:Notify in Verbindung mit at - Rasenbewässerung
Beitrag von: Otto123 am 12 Juli 2015, 16:40:16
Hi,

at ist so meines Wissens nicht zu verwenden, siehe Wiki  (http://www.fhemwiki.de/wiki/At) und Commandref (http://fhem.de/commandref_DE.html#at).

Du kannst ein at *10:45:00 definieren um genau an diesem Moment etwas auszuführen.

Gruß Otto
Titel: Antw:Notify in Verbindung mit at - Rasenbewässerung
Beitrag von: cr4y.z1 am 13 Juli 2015, 00:34:13
Hallo Otto, danke für deine Antwort.
Habe es nun wie folgt lösen können:

define n_Bewaesserung.Startzeit2 at *12:00:00 { \
my $Bewaesserung_Startzeit_Wert_import = ReadingsVal("Bewaesserung.Startzeit", "state", "");;\
my $Bewaesserung_Startzeit2_Wert = ReadingsVal("Bewaesserung.Startzeit2", "state", "");;\
if ($Bewaesserung_Startzeit2_Wert ne "undefined") { \
fhem ("modify Zeitschaltuhr.Bewaesserung.Rasen.EineStunde *$Bewaesserung_Startzeit2_Wert;; modify Zeitschaltuhr.Bewaesserung.Rasen.DreiviertelStunde *$Bewaesserung_Startzeit2_Wert;; modify Zeitschaltuhr.Bewaesserung.Rasen.HalbeStunde *$Bewaesserung_Startzeit2_Wert;; modify Zeitschaltuhr.Bewaesserung.Rasen.ViertelStunde *$Bewaesserung_Startzeit2_Wert;; modify Zeitschaltuhr.Bewaesserung.Blumen.EineStunde *$Bewaesserung_Startzeit2_Wert;; modify Zeitschaltuhr.Bewaesserung.Blumen.DreiviertelStunde *$Bewaesserung_Startzeit2_Wert;; modify Zeitschaltuhr.Bewaesserung.Blumen.HalbeStunde *$Bewaesserung_Startzeit2_Wert;; modify Zeitschaltuhr.Bewaesserung.Blumen.ViertelStunde *$Bewaesserung_Startzeit2_Wert")} \
else { \
fhem ("modify Zeitschaltuhr.Bewaesserung.Rasen.EineStunde *$Bewaesserung_Startzeit_Wert_import;; modify Zeitschaltuhr.Bewaesserung.Rasen.DreiviertelStunde *$Bewaesserung_Startzeit_Wert_import;; modify Zeitschaltuhr.Bewaesserung.Rasen.HalbeStunde *$Bewaesserung_Startzeit_Wert_import;; modify Zeitschaltuhr.Bewaesserung.Rasen.ViertelStunde *$Bewaesserung_Startzeit_Wert_import;; modify Zeitschaltuhr.Bewaesserung.Blumen.EineStunde *$Bewaesserung_Startzeit_Wert_import;; modify Zeitschaltuhr.Bewaesserung.Blumen.DreiviertelStunde *$Bewaesserung_Startzeit_Wert_import;; modify Zeitschaltuhr.Bewaesserung.Blumen.HalbeStunde *$Bewaesserung_Startzeit_Wert_import;; modify Zeitschaltuhr.Bewaesserung.Blumen.ViertelStunde *$Bewaesserung_Startzeit_Wert_import")} \
}


Was jetzt dabei allerdings noch nicht sehr elegant ist, ist die definierte Variable $Bewaesserung_Start_Wert_import die ich mir aus einem anderen Dummy importiere.
Gibt es eine Möglichkeit diese Global zur Verfügung zu stellen?


Danke und viele Grüße!

cr4y.z1
Titel: Antw:Notify in Verbindung mit at - Rasenbewässerung
Beitrag von: Otto123 am 16 Juli 2015, 09:56:37
Hi,

irgendwie sieht das sehr kompliziert aus mit deinen modify Befehlen. Mir erschließt sich der eigentliche Zweck nicht so richtig.
Kann es sein, Du willst einfach ne Intervallschaltung in einem bestimmten Tages Zeitraum?

Beschreibe doch mal verbal was Du wirklich bewirken willst.

Gruß Otto