Hallo,
Für meine Gartenbewässerung bin ich auf der Suche nach einer Möglichkeit ein:
define XXX at
mit einer Zeit zu verwenden, die in einer Variablen gespeichert wird.
Für meine Gartenbewässerung sieht wie folgt aus:
2x 24V Ventile
1x Spannunserzeugung (24VAC & 5V DC)
1x Wasserpumpe
Das ganze wird über einen RaspberryPI gesteuert an dem ich einen 4 Kanal Relais-Karte verbaut habe.
HW-technisch läuft das alles top.
Da ich die Spannung, Pumpe und Ventile zu unterschiedlichen Zeiten schalten möchte bin ich auf der Suche nach einen define at, was mit einer "Totzeit" umgehen kann, welche in einer Variablen gespeichert ist.
Mein Momentaner Code sieht so aus (ich hoffe es ist alles dabei um die Idee zu verstehen).
Define 3_Automatik dummy
attr 3_Automatik room GPIO
attr 3_Automatik webCmd an:aus
attr 3_Automatik devStateIcon aus:Bwaesserung_black_off_48_B an:Bwaesserung_gruen_on_48_B
attr 3_Automatik eventMap on:an off:aus
define Bewaesserung_Minuten dummy
attr Bewaesserung_Minuten setList state
attr Bewaesserung_Minuten webCmd 9:8:7:6:5:4:3:2:1:0
attr Bewaesserung_Minuten room GPIO
define Spg_Vorlauf_Sekunden dummy
attr Spg_Vorlauf_Sekunden setList state
attr Spg_Vorlauf_Sekunden webCmd 5:4:3:2:1:0
attr Spg_Vorlauf_Sekunden room GPIO
define Pumpe_Vorlauf_Sekunden dummy
attr Pumpe_Vorlauf_Sekunden setList state
attr Pumpe_Vorlauf_Sekunden webCmd 5:4:3:2:1:0
attr Pumpe_Vorlauf_Sekunden room GPIO
define Totzeit_Sekunden dummy
attr Totzeit_Sekunden setList state
attr Totzeit_Sekunden webCmd 5:4:3:2:1:0
attr Totzeit_Sekunden room GPIO
Define 3_Automatik_on_notify notify 3_Automatik:on {\
my $Spg_time =(Value("Spg_Vorlauf_Sekunden")) +Value("Bewaesserung_Minuten")*60;;\
my $Bew_time =Value("Bewaesserung_Minuten")*60;;\
my $Totzeit =Value("Totzeit_Sekunden");;\
fhem( "set 3_Bew._Spg off-for-timer ".$Spg_time );;\
fhem( "set 4_Bew._Pumpe off-for-timer ".$Spg_time );;\
fhem( "define Bew_E_auto at +00:00:02 set 1_Bew._Eiche off-for-timer ".$Bew_time );;\
fhem( "define Bew_B_auto at +00:00:04 set 2_Bew._Baumhaus off-for-timer ".$Bew_time );;}
Wie kann ich jetzt ein define einfügen was von der Idee her so aussieht?
fhem( "define Bew_B_auto at".$Totzeit_Sekunden "set 2_Bew._Baumhaus off-for-timer ".$Bew_time );;}
kann das so gehen?
Bzw. kann mir jemand weiterhelfen.
Danke.
du kannst at mit jeder Zeitangabe im Format hh:mm:ss füttern.
define xyz at {hier muss eine Funktion rein (die z.B. in Deiner 99_myUtils steht), die eine Zeitangabe im Format hh:mm:ss liefert} {hier kommt der Ausführungsteil wie üblich}
Hallo,
Suche im Forum mal nach Zeitschaltuhr, das ist ein fertiger Block für die Fhem.cfg - vielleicht ist das ja etwas für Dich.
Gruß Christoph
Hi,
Ich bekomme es nicht hin.
Kann mir jemand sagen wo mein Fehler liegt bzw. wie mann es nichtig macht ;-)
fhem( "define Bew_B_auto at".$Totzeit_Sekunden "set 2_Bew._Baumhaus off-for-timer ".$Bew_time );;}
Hinter dem at soll in der Variablen "$Totzeit_Sekunden " eine Zeit übergeben werden.
Wie geht das?
Ich kenne den Rest deine Konfiguration nicht und weiß nicht, wie du die Variable ermittelst, aber wenn das alles korrekt ist, sollte es so gehen:
fhem("define Bew_B_auto at ".$Totzeit_Sekunden." set 2_Bew._Baumhaus off-for-timer ".$Bew_time)
...für den Fall, dass $Totzeit_Sekunden tatsächlich eine absolute Zeit im Format HH:MM:SS ist und $Bew_time einen Integer enthält.
Code ist für den DEF Bereich im Frontend und für richtige Funktion werden im Zusammenhang und je nachdem, wie du es einbaust, noch ";" Zeichen nötig sein.
Der Punkt ist in dem Fall ein Verbindungszeichen von Strings mit Variablen.
Hallo und Danke für eure Hilfe.
Ich habe es aber noch nicht hinbekommen.
der Rest meiner Konfig ist oben zu fnden.
fhem("define Bew_B_auto at ".$Totzeit_Sekunden." set 2_Bew._Baumhaus off-for-timer ".$Bew_time)
Hier meine Fragen:
- Kann mir jemand mein Code-Beispiel geben, bei dem im define hinter dem at eine Variable verwendet wird und eine 2. Variable hinter dem off-for-timer verwendet wird.
- muss das format hinter dem at eine Zeit und hinter dem off-for-timer ein Integer sein. Wenn nein, wie muss man es ändern, das man theoretisch mit einer Variable beides (at und off-for-timer) auskommt. Bzw. wie kann ich eine Zeit in Integer(Sekunden) und Integer(Sekunden) in Zeit wandeln?