Hallo,
ich möchte gerne meine Bewässerung zu einer bestimmten Zeit automatisch starten.
Prinzipiell ja kein Problem mit "at".
Allerdings möchte ich gerne dem at 2 Befehle mitgeben.
1. soll ich per pushmsg benachrichtigt werden
2. soll die Bewässerung gestartet werden.
Also habe ich das so eingerichtet:
Internals:
CFGFN
COMMAND set pushmsg msg "fhem" "Bewässerung: automatischer Start auf Terrasse Ost"; set TO.Sprinkle_Alle An
DEF +*12:00 set pushmsg msg "fhem" "Bewässerung: automatischer Start auf Terrasse Ost"; set TO.Sprinkle_Alle An
FUUID 5d683409-f33f-0b7a-e3ec-90785a025be7d5cc
NAME Bewaesserung.TO
NR 110895
NTM 06:00:00
PERIODIC yes
RELATIVE yes
REP -1
STATE Next: 06:00:00
TIMESPEC 12:00
TRIGGERTIME 1567224000
TRIGGERTIME_FMT 2019-08-31 06:00:00
TYPE at
READINGS:
2019-08-30 19:21:37 state Next: 06:00:00
Attributes:
alignTime 06:00
room Bewässerung
verbose 5
So wird aber nur der 1. Befehl ausgeführt.
In der Anleitung zu at steht, dass man ";;" angeben muss.
Wenn ich das tue, kommt bei einem execNow folgender Log-Eintrag:
2019.08.30 19:28:58.940 3: Bewaesserung.TO: Usage: pushmsg msg <text> [ option1=<value> option2='<value with space>' ... ]
Klammern helfen auch nicht.
Was mache ich falsch?
Danke im Voraus
lg, Gerhard
Hi,
Das funktioniert in der FHEM Kommandozeile?
set pushmsg msg "fhem" "Bewässerung: automatischer Start auf Terrasse Ost"
Gruß Otto
Die neue Syntax wäre so
pushmsg msg title=Heizungssteuerung! device=handy-marko priority=0 Die durschnittliche Nachttemperatur für die nächsten 11 Tage liegt bei unter 10 Grad!
Ja, das funktioniert.
Habe ich an anderen Stellen auch so verwendet.
Nur nicht beim at.
lg, Gerhard
@CoolTux: Echt? Das alte funktioniert aber immer noch.
Dann werde ich mal die ganzen Aufrufe anpassen.
lg, Gerhard
@Otto:
Beim Eingeben des Befehls in die Befehlszeile ist mir was altes aufgefallen.
Nach einigem Probieren funktioniert die Definition nun anscheinend.
+*12:00 {fhem "set pushmsg msg 'fhem' 'Bewässerung: automatischer Start auf Terrasse West'; set TW.Sprinkle_Alle An"}
Aber warum?
lg, Gerhard
Hallo Gerhard,
so machts Du jetzt Perl -> fhem - mit nur fhem Befehlen. Sieht für mich nicht falsch aber umständlich aus.
Aber ich habe keine Ahnung von pushmsg msg ...
{fhem "set pushmsg msg 'fhem' 'Bewässerung: automatischer Start auf Terrasse West'; set TW.Sprinkle_Alle An"}
ist aus meiner Sicht gleich
set pushmsg msg 'fhem' 'Bewässerung: automatischer Start auf Terrasse West'; set TW.Sprinkle_Alle An
müsste also auch in der FHEM Kommandozeile gehen.
Gruß Otto
Ich habe das nun auch probiert und es funktioniert auf einmal auch.
Keine Ahnung warum.
Wahrscheinlich war ich irgendwo im nirgendwo verloren.
Aber müssten da nicht 2 ";" sein?
https://wiki.fhem.de/wiki/At#Mehrere_Aktionen_ausf.C3.BChren (https://wiki.fhem.de/wiki/At#Mehrere_Aktionen_ausf.C3.BChren)
Aber dann kommt beim execNow wieder der Fehler:
2019.08.30 22:45:12.384 3: Bewaesserung.TW: Usage: pushmsg msg <text> [ option1=<value> option2='<value with space>' ... ]
Ich werde mal den Timer mit einem ";" automatisch laufen lassen.
Vielleicht klappt es ja.
Vielen Dank für Deine Hilfe!
lg, Gerhard
Hallo Gerhard,
Du musst die Beispiele dort genau und in Ruhe lesen, die stimmen schon alle. Es geht aber um define in der Kommandozeile und nicht um die DEF (den DEF editor)
Spiel sie durch um zu sehen was passiert!
Ich ergänze die Beschreibung mal noch: Ist das so verständlicher?
define morgens at *7:00:00 set lampe1 on ; set lampe2 on → schaltet lampe 1 immer um 7 an, aber lampe2 sofort. Der erste Befehl landet in der config (im at) der zweite Befehl wird einfach sofort ausgeführt.
define morgens at *7:00:00 set lampe1 on ;; set lampe2 on → schaltet BEIDE Lampen immer um 7 an. Beide Befehle landen in der config (im at)
Gruß Otto
Hallo Otto,
ja, das ist nun verständlicher.
Darauf wäre ich nicht gekommen. Warum sollte ich denn auch gleichzeitig ein def anlegen und eine Lampe schalten wollen ;)
Aber hmm:
wenn ich das define mit 2 Befehlen anlegen will, muss ich in der Befehlszeile 2 ";" verwenden?
Und im Editor nur eines?
Auch im Def landet nur ein ";". Eigenartig.
Danke für die Aufklärung.
lg, Gerhard
Guten Morgen Gerhard,
naja das sind aber nun mal (sicher schwer zu verstehende) Basics -> https://commandref.fhem.de/#command
Aber irgendwann gehts ;D ;D ;D
ZitatWarum sollte ich denn auch gleichzeitig ein def anlegen und eine Lampe schalten wollen
Willst Du nicht, aber es passiert :)
In der Kommandozeile wird der Befehl interpretiert, das ; dient als Trenner: Bei der Ausführung verschwindet es quasi.
Soll es nicht verschwinden, also erhalten bleiben und in die DEF wandern, muss es geschützt (verdoppelt) werden.
Oder anders:
Der FHEM Befehl endet am Zeilenende oder am semikolon. Alles nach dem semikolon wird als neuer Befehl interpretiert. Damit kann man mehrere Befehle hintereinander in eine Zeile schreiben.
Soll das Semikolon kein Ende/Trenner sondern Bestandteil des Befehls sein, muss es geschützt/escaped/verdoppelt werden.
Gruß Otto