Hallo zusammen,
Bei einer Notify für den "TVAbend" habe ich das Problem das ich die Lampe nicht dimmbar angeht.
Funktioniert das dim50% bei einer Aufzählung?? Den mit dem Befehl on statt dim50% geht es.
Hier mein Code was unter DEF in der Notify steht.
TVAbend:on set wzTVAnlage on;set wzStehlampe on;set flKugelLampe off - Funktioniert
TVAbend:on set wzTVAnlage on;set wzStehlampe dim50%;set flKugelLampe off - Geht NICHT.
Was mache ich hier falsch??
Hey,
Versuch mal ein zweites %-zeichen. Wird glaub nur in perl codes so benötigt aber einen versuch ist es wert.
Mit dem zweiten % zeichen hat es funktioniert.
TVAbend:on set wzTVAnlage on;set wzStehlampe dim50%%;set flKugelLampe off - Geht NICHT.
Vielen Dank jody90
ZitatVersuch mal ein zweites %-zeichen. Wird glaub nur in perl codes so benötigt aber einen versuch ist es wert.
Ich habe schon öfters beobachtet, das unter Umständen escaped werden muss, wo man es nicht erwartet, bzw nicht offensichtlich PERL verwendet wird.
Folgendes:
definde blubber notify schalter set lampe1 on ; set lampe2 on
keine Escapen nötig. Aber:
definde blubber notify schalter:on set lampe1 on ; set lampe2 off
funktioniert nicht.
Jedoch
definde blubber notify schalter:on set lampe1 on ;; set lampe2 off
geht. Das hatte ich letzte Woche erst einem Thread hier beobachten können.
Es will mir scheinen, das Defines bei denen das notify bedingt ist (eigentlich eine verkürzte IF Abfrage) escaped werden müssen.
Im Grunde ist
definde blubber notify schalter:on ...
eine abgekürzte Darstelllung von
define blubber notify schalter { if ("%" eq "on") { fhem(" ... ") }}
eventuell hängt das damit zusammen.
Die Erfahrung von DJCrazy, dass
... TVAbend:on set wzTVAnlage on;set wzStehlampe on;set flKugelLampe off
geht widerspricht dem allerdings.
Vielleicht kann Rudi Licht ins Dunkel bringen.
Escape Regeln in FHEM:
- Im notify wird % mit dem Ereignis/Event und @ mit dem betroffenen Geraetenamen ersetzt, vermeiden kann man das mit %% oder @@. Diese Ersetzung passiert nur falls man im Ausdruck KEIN $NAME/$EVENT/$EVTPART0 usw. verwendet, die dem gleichen Zweck dienen. % und @ sind also ueberholt, und diese Ersetzung wird irgendwannmal abgeschaltet.
- ACHTUNG: das gilt nicht in at oder Watchdog, da fuer diese solch eine Ersetzung nicht anwendbar ist.
Erklaert in http://fhem.de/commandref.html#notify
- Um mehrere FHEM kommandos in at/notify einbauen zu koennen, trennt man diese mit ;; D.h.
define at 07:00 set Lampe1 on; set Lampe2 on
schaltet Lampe1 an um 07:00, und die Lampe2 jetzt. Um beide um 7 einzuschalten, muss man ;; verwenden:
define at 07:00 set Lampe1 on;; set Lampe2 on
Das ist erklaert in http://fhem.de/commandref.html#command
ZitatNach 90 Sekunden sollte dann der Ausschalter von alleine gedrückt werden.
Das wollte ich so realisieren, funktioniert aber nicht.
SchlafenGehen:on set SchlafenGehen:off off-for-timer 90
Was mache ich falsch?
Wie muss der Code richtig aussehen?
Es wäre sicher vorteilhaft, wenn du das komplette define von dir hinschreiben würdest. Dies scheinen ja nur Teilstücke davon zu sein, die so garantiert nix machen.