AT mit mehreren SET Befehlen

Begonnen von juppy_jupp, 07 Februar 2022, 20:17:09

Vorheriges Thema - Nächstes Thema

juppy_jupp

Hallo,

ich versuche meine ersten Schritte bei der Hausautomatisierung mit FHEM.

Hier möchte ich zwei Lampen per AT Befehl dämmerungsgesteuert abendlich einschalten, das klappt soweit mit:

define Abendlicht *{sunset(-1800,"17:00","22:00")} set Lampe1,Lampe2 on

Jetzt ist meine zweite Lampe dimmbar und ich möchte einen bestimmten Dimmerwert (brightness) beim Einschalten übergeben.

Ein "set Lampe2 brightness 120" alleine funktioniert

Folgende SET Varianten blieben erfolglos:

set Lampe1,Lampe2 on, set Lampe2 brightness 120
set Lampe1,Lampe2 on; set Lampe2 brightness 120
(set Lampe1,Lampe2 on) (set Lampe2 brightness 200)
{ fhem("set Lampe1,Lampe2 on"); fhem("set Lampe2 brightness 200");}


Je nach Variante wird nur die Lampe eingeschaltet, aber nicht der Dimmwert übergeben oder es kommet eine Syntaxfehler.

Ist es überhaupt möglich mit dem AT Befehl  mehrere SET Kommados auszuführen.
Wenn ja, wie kann man die sinnvoll aneinander reihen?

Gruss Jupp

betateilchen

Zitat von: juppy_jupp am 07 Februar 2022, 20:17:09
Ist es überhaupt möglich mit dem AT Befehl  mehrere SET Kommados auszuführen.
Wenn ja, wie kann man die sinnvoll aneinander reihen?

Natürlich, hinter jeden Befehl einen Strichpunkt.
Genau so, wie es in der Doku steht.

https://commandref.fhem.de/#command
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Otto123

#2
Zitat von: betateilchen am 07 Februar 2022, 20:20:24
Natürlich, hinter jeden Befehl einen Strichpunkt.
beim define Befehl müssen es zwei ( ;; ) sein, sonst wird die Lampe sofort gedimmt ;)
Die letzte Variante hätte durch umsortieren :) oder in der DEF mit nur einem ; funktioniert:

Edit: Code berichtigt
define Abendlicht at *{sunset(-1800,"17:00","22:00")} { fhem("set Lampe1,Lampe2 on");; fhem("set Lampe2 brightness 200")}

So könnte man es direkt "drüber feuern":
defmod Abendlicht at *{sunset(-1800,"17:00","22:00")} set Lampe1,Lampe2 on;;set Lampe2 brightness 200

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

juppy_jupp

Hallo,

danke für die schnelle und kompetente Rückmeldung.
Lesen hilft ;-), in der Commandref zu "FHEM Befehlstypen" war ja sogar eine adequates Beispiel aufgeführt, ich hab nur die Ref für "AT" durchforstet

Ein:
defmod Abendlicht *{sunset(-1800,"17:00","22:00")} set Lampe1,Lampe2 on;;set Lampe2 brightness 200
bringt die Lösung.

Mir war nicht bewusst das ich ein Semikolon für die Maskierung voranstellen muss, das dann hinterher in der Definition verschwindet.

Gruss Jupp

betateilchen

Zitat von: juppy_jupp am 08 Februar 2022, 09:39:09
defmod Abendlicht *{sunset(-1800,"17:00","22:00")} set Lampe1,Lampe2 on;;set Lampe2 brightness 200
bringt die Lösung.

Ich glaube nicht, dass das so funktioniert. In der Definition fehlt zumindest das "at" als deviceType.
Das fehlte auch schon im Eröffnungsbeitrag und in Ottos beiden Vorschlägen.

Man sollte "erfolgreiche Lösungen" die man hier beschreibt, zumindest mal ausprobiert haben...  ;)

Zitat von: Otto123 am 07 Februar 2022, 20:57:49
beim define Befehl müssen es zwei ( ;; ) sein

Zitat von: juppy_jupp am 08 Februar 2022, 09:39:09
Mir war nicht bewusst das ich ein Semikolon für die Maskierung voranstellen muss, das dann hinterher in der Definition verschwindet.

Was das Thema einfache oder doppelte Semikolon angeht: es kommt darauf an, wo man das Ganze eingibt.
Im DEF Editor reicht ein einzelnes Semikolon.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Otto123

Zitat von: betateilchen am 08 Februar 2022, 10:04:22
Man sollte "erfolgreiche Lösungen" die man hier beschreibt, zumindest mal ausprobiert haben...  ;)
Asche auf mein Haupt  :-[
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

juppy_jupp

#6
Hi,

abschließend noch die funktionierende Definition aus der fhem.cfg

Für das Einschalten beider Lampen und das Setzen der Helligkeit von Lampe 2 abhängig vom Sonnenuntergang:
define Abendlicht_an at *{sunset(-1800,"17:00","22:00")} set Lampe1,Lampe2 on;; set Lampe2 brightness 100
Für das Ausschalten beider Lampen um 23:00 Uhr:
define Abendlicht_aus at *23:00 set Lampe1,Lampe2 off
Ich habe hier bewusst zwei Timer definiert. Man könnte auch im ersten Timer das 'on' um 'till 23:00' erweiteren. Mir ist jedoch aufgefallen das der Ausschaltzeitpunkt bei zwischenzeitlich manueller Statusänderung der Lampen wohl gelöscht wird.
Um sicher zu gehen das um 23:00 beide Lampen auch ausgehen, habe ich das getrennt.

Gruss Jupp