AN-AUS-AN statt nur AN senden.
Hallo,
ich habe an der Aussentreppe zur Beleuchtung seit Jahren einen LED-Lichtschlauch. Dieser wird über ein Brennenstuhl Funkschalter RCS 2044 N (Wie der Schwarze in diesem Bild: https://www.mindfactory.de/product_info.php/Brennenstuhl-Funkschalt-Set-RCS-2044-N-Comfort_1055855.html) geschaltet.
Der Funkschalter kann händisch in der FHEM-Oberfläche zum Beispiel am Smartphone geschaltet werden. Weiterhin habe ich eine Automatik in FHEM, welche den Schalter abhängig von der Dämmerung AN und zur festen Zeit wieder AUS schaltet.
Definition in FHEM:
# FunkSchalter Brennenstuhl
define Lampe_BS6 GenShellSwitch /usr/local/sbin/send433 11001 4 1 0
attr Lampe_BS6 group Licht
attr Lampe_BS6 room hidden
#
define Aussentreppe_LED_Schlauch structure room Lampe_BS6
attr Aussentreppe_LED_Schlauch group Licht
attr Aussentreppe_LED_Schlauch room Licht
attr Aussentreppe_LED_Schlauch icon light_stairs
#
define Aussentreppe_LED WeekdayTimer Aussentreppe_LED_Schlauch de !$we|{sunrise_abs('HORIZON=-12',0,"07:16:30","07:41:30")}|on !$we|{sunrise_abs('HORIZON=-1',3,"07:16:35","07:42:17")}|off Mo-So|{sunset_abs('HORIZON=-4',0,"16:01:21","21:09:58")}|on Mo-So|21:10:04|off (isAt_LED_Automatik())
#
Dies hat über Jahre hinweg problemlos funktioniert.
Nun ist der alte LED-Schlauch defekt und ich habe einen baugleichen neuen gekauft. Den neuen habe ich wieder an den gleichen unveränderten Funkschalter angeschlossen.
Wird der neue LED-Schlauch angeschaltet, fängt er jedoch mit blinken und allerlei wilden optischen Effekten an. Erst beim 2. Einschalten geht er in den ,,Normal"-Modus mit dauerhaft AN über. Er braucht also AN-AUS-AN um mit gleichmäßigem Dauerlicht zu funktionieren.
Jetzt zu meiner Frage:
Wie kann ich FHEM dazu überreden AN-AUS-AN statt einfach nur AN zu senden?
Hallo,
mit einem cmdalias wäre eine Möglichkeit:
defmod cmd_example cmdalias ledstripeon AS set du_reed on;;sleep 2;;set du_reed off;;sleep 2;;set du_reed on
Ob du eine Pause brauchst musst halt ausprobieren.
Hmmm, wie müsste ich das umsetzen?
define Doppelt_AN cmdalias Lampe_BS6_AN AS set Lampe_BS6 on;;sleep 1;;Lampe_BS6 off;;sleep 1;;Lampe_BS6 on
Wo setze ich dann Doppelt_AN ein?
Und wie gehts beim ausschalten? Bisher gab es ja kein dediziertes AN oder AUS?
Lampe_BS6_AN ist dein neuer on-Befehl. Für ausschalten brauchst eine weitere cmdalias-Definition.
Hier fehlt das set noch:
Lampe_BS6 off;;sleep 1;;Lampe_BS6 on
Zitat von: TomLee am 25 November 2023, 19:37:05Lampe_BS6_AN ist dein neuer on-Befehl. Für ausschalten brauchst eine weitere cmdalias-Definition.
Aber, ich habe doch bisher keinen speziellen AN bzw. AUS Befehl, oder doch?
Der
define Lampe_BS6 GenShellSwitch /usr/local/sbin/send433 11001 4 1 0
schaltet meines Wissens nach doch nur hin und her, triggert von AN nach AUS bzw. von AUS nach AN
Zitat von: TomLee am 25 November 2023, 19:37:05Hier fehlt das set noch:
define Doppelt_AN cmdalias Lampe_BS6_AN AS set Lampe_BS6 on;;sleep 1;;set Lampe_BS6 off;;sleep 1;;set Lampe_BS6 on
ZitatAber, ich habe doch bisher keinen speziellen AN bzw. AUS Befehl, oder doch?
Achso, ich kenne GenShellSwitch nicht, wie schaltest du denn normal / wie macht man das ?
Kannst du nur toggeln oder kannst du Definition anpassen und ein on oder off senden ?
Ich nutze den GenShellSwitch schon seit Mai 2014 unverändert und wenn mich mein Gedächtnis nicht im Stich lässt basiert er auf /opt/fhem/FHEM/00_GenShellSwitch.pm meines RasPi.
GenShellSwitch schaltet per /usr/local/sbin/send433 Befehl. Diesen kann man auch in der bash nutzen als
/usr/local/sbin/send433 11001 1 1 für AN und
/usr/local/sbin/send433 11001 1 0 für AUS,
aber in FHEM wird m.E. per GenShellSwitch nur getoggelt, da es eh keinen Rückkanal gibt.
Deswegen ist die Definition in FHEM wohl
define Lampe_BS6 GenShellSwitch /usr/local/sbin/send433 11001 4 1 0
wobei hier mit den letzten beiden Ziffern die Toggelwerte angegeben werden.
OK, du könntest dir also eine GenShellSwitch-Definition für on und eine für off erstellen. Aber wie schaltet man ? Wie ist der Schaltbefehl in FHEM ?
Nein, meines Wissen nach kann ich keine für on und keine für off erstellen.
Die GenShellSwitch-Definition ist:
define Lampe_BS6 GenShellSwitch /usr/local/sbin/send433 11001 4 1 0
die letzten beiden Ziffern geben nur die Alternativen an, also 1 und 0. Diese bleiben in der Definition 1 und 0. Beim ersten Schalten wird daraus die 1 für AN gezogen und beim nächsten Mal die 0 für AUS und beim nächsten Mal die 1 für AN und beim nächsten......u.s.w.
Doch, ich kann den Aussentreppe_LED_Schlauch in der FHEM Oberfläche auf ON oder OFF oder Toggle drücken. Ich weis aber nicht wie ich da eine GenShellSwitch-Definition für on und eine für off erstelle.
OK, ich verstehe aber immer noch nicht wie man schaltet.
Basierend auf dieser Aussage:
ZitatGenShellSwitch schaltet per /usr/local/sbin/send433 Befehl. Diesen kann man auch in der bash nutzen als
/usr/local/sbin/send433 11001 1 1 für AN und
/usr/local/sbin/send433 11001 1 0 für AUS
Ein anderer Ansatz:
defmod cmd_example cmdalias ledstripe .* AS {\
my $oncmd=system("/usr/local/sbin/send433 11001 1 1 &");;\
my $offcmd=system("/usr/local/sbin/send433 11001 1 0 &");;\
return $oncmd $offcmd $oncmd if $EVENT eq 'on';;
return $offcmd $oncmd $offcmd;;}
Dein FHEM-Befehl wäre dann
ledstripe on oder
ledstripe offIch bin mir unsicher ob die Syntax so richtig ist und die drei Variablen mit dem Systembefehl ausgeführt werden, ich hab aber jetzt keine Zeit mehr das zu testen, so in die Richtung könnte man es auf jedenfall auch umsetzen.
Hi
Lt. CommandRef geht on/off so (mit Modul GenShellSwitch) :
ZitatSet
set <name> <value>
where value is one of:
off
on
Was hinter on/off steckt ist im "define Lampe_BS6 GenShellSwitch /usr/local/sbin/send433 11001 4 1 0" hinterlegt.
Gruß Ralf
Also ginge es mit zwei GenShellSwitch i.V.m dem cmdalias.
Bei mir würd ich versuchen, das mit meinem zweiten vorgeschlagenen Ansatz, in einem Device, umzusetzen.
Nach etwas Gedanken darüber zu machen, den Erinnerungen die hochkamen und damit kurz zu beschäftigen, mein ich, das es so klappen sollte:
defmod cmd_example cmdalias ledstripe .* AS {\
my $oncmd = sub {system("/usr/local/sbin/send433 11001 1 1 &");;};;\
my $offcmd = sub {system("/usr/local/sbin/send433 11001 1 0 &");;};;\
return (&$oncmd, &$offcmd, &$oncmd) if $EVENT eq 'on';;\
return (&$offcmd, &$oncmd, &$offcmd);;}
Der Versuch der Umsetzung klappt leider nicht:
define Aussentreppe_LED_Schlauch cmdalias Lampe_BS6 .* AS {\
my $oncmd = sub {system("/usr/local/sbin/send433 11001 4 1 &");;};;\
my $offcmd = sub {system("/usr/local/sbin/send433 11001 4 0 &");;};;\
return (&$oncmd, &$offcmd, &$oncmd) if $EVENT eq 'on';;\
return (&$offcmd, &$oncmd, &$offcmd);;}
attr Aussentreppe_LED_Schlauch group Licht
attr Aussentreppe_LED_Schlauch room Licht
attr Aussentreppe_LED_Schlauch icon light_stairs
Ich bekomme die Schaltsymbole in der Oberfläche (Siehe Screenshots):
Screenshot 2023-11-26 at 12-42-55 Home Sweet Home.png
nicht angezeigt, sondern:
Screenshot 2023-11-26 at 12-41-49 Home Sweet Home.png
Nimm mal die ganzen \ aus dem define und mach aus den doppelten Semikolon einfache.
Was steht dann im Logfile, wenn du oben in der Befehlszeile ein Lampe_BS6 on ausführst ?
define Aussentreppe_LED_Schlauch cmdalias Lampe_BS6 .* AS {my $oncmd = sub {system("/usr/local/sbin/send433 11001 4 1 &");};my $offcmd = sub {system("/usr/local/sbin/send433 11001 4 0 &");};return (&$oncmd, &$offcmd, &$oncmd) if $EVENT eq 'on';return (&$offcmd, &$oncmd, &$offcmd);}
attr Aussentreppe_LED_Schlauch group Licht
attr Aussentreppe_LED_Schlauch room Licht
attr Aussentreppe_LED_Schlauch sortby 2
attr Aussentreppe_LED_Schlauch icon light_stairs
In der Oberfläche:
Unknown command }, try help. Unknown command my, try help. Unknown command }, try help. Unknown command return, try help. Unknown command return, try help. Unknown command }, try help.
In der Befehlszeile "Lampe_BS6 on":
Unknown command {my, try help.
Mein Fehler. Im define braucht es die doppelten Semikolon, die / (Zeilenumbruch) dürfen vorkommen, müssen aber nicht.
Hast du denn mit deiner gezeigten Definition in #14 den Befehl Lampe_BS6 on in der Befehlzeile ausgeführt ? Oder nur auf on oder off in der DeviceOverview geklickt ?
Das on/off hab ich bei mir gar nicht und verstehe auch nicht wie das bei Dir da hinkommt.
Das ist der gleiche Code wie du gezeigt hast:
defmod Aussentreppe_LED_Schlauch cmdalias Lampe_BS6 .* AS {my $oncmd = sub {system("/usr/local/sbin/send433 11001 4 1 &");;};;\
my $offcmd = sub {system("/usr/local/sbin/send433 11001 4 0 &");;};;\
return (&$oncmd, &$offcmd, &$oncmd) if $EVENT eq 'on';;\
return (&$offcmd, &$oncmd, &$offcmd);;}
attr Aussentreppe_LED_Schlauch group Licht
attr Aussentreppe_LED_Schlauch icon light_stairs
attr Aussentreppe_LED_Schlauch room Licht
setstate Aussentreppe_LED_Schlauch defined
Wenn ich damit ein Lampe_BS6 on ausführe, steht bei mir im Logfile:
sh: 1: /usr/local/sbin/send433: not found
sh: 1: /usr/local/sbin/send433: not found
sh: 1: /usr/local/sbin/send433: not found
Bei Dir sollten die "Befehle" gefunden und ausgeführt werden.
Zitat von: TomLee am 26 November 2023, 15:03:23Hast du denn mit deiner gezeigten Definition in #14 den Befehl Lampe_BS6 on in der Befehlzeile ausgeführt ?
Ja
Dein neuen Code habe ich nun bei mir eingesetzt.
defmod Aussentreppe_LED_Schlauch cmdalias Lampe_BS6 .* AS {my $oncmd = sub {system("/usr/local/sbin/send433 11001 4 1 &");;};;\
my $offcmd = sub {system("/usr/local/sbin/send433 11001 4 0 &");;};;\
return (&$oncmd, &$offcmd, &$oncmd) if $EVENT eq 'on';;\
return (&$offcmd, &$oncmd, &$offcmd);;}
attr Aussentreppe_LED_Schlauch group Licht
attr Aussentreppe_LED_Schlauch room Licht
attr Aussentreppe_LED_Schlauch icon light_stairs
setstate Aussentreppe_LED_Schlauch defined
Das DeviceOverview sieht wir folgt aus:
Screenshot 2023-11-26 at 16-04-11 Home Sweet Home.png
Wenn ich damit ein Lampe_BS6 on in der Befehlzeile ausführe, steht bei mir im Logfile:
sending systemCode[11001] unitCode[4] command[1]
sending systemCode[11001] unitCode[4] command[0]
sending systemCode[11001] unitCode[4] command[1]
und auf der Oberfläche:
Screenshot 2023-11-26 at 16-05-55 Home Sweet Home.png
Aber der LED-Schlauch hat nicht geschaltet.
Wenn ich in der bash:
bracew@pi:~$ /usr/local/sbin/send433 11001 4 1
sending systemCode[11001] unitCode[4] command[1]
eingebe, geht der LED-Schlauch an.
Dann ist jetzt der Punkt erreicht wo ich nicht wirklich weiterhelfen kann. Ich weiß nicht ob man diese Befehle so schnell hintereinander ausführen kann/darf und wie man eine Pause dazwischen machen könnte hab ich ehrlich gesagt auch keine Vorstellung.
Was mir im Systemprotokoll:
2023.11.26 12:15:22 3: GenShellSwitch command result: sending systemCode[11001] unitCode[4] command[1]
2023.11.26 12:15:22 2: GenShellSwitch set Lampe_BS6 on
2023.11.26 12:15:32 3: GenShellSwitch command result: sending systemCode[11001] unitCode[4] command[0]
2023.11.26 12:15:32 2: GenShellSwitch set Lampe_BS6 off
.
.
.
sending systemCode[11001] unitCode[4] command[1]
sending systemCode[11001] unitCode[4] command[0]
sending systemCode[11001] unitCode[4] command[1]
sending systemCode[11001] unitCode[4] command[1]
sending systemCode[11001] unitCode[4] command[0]
sending systemCode[11001] unitCode[4] command[1]
sending systemCode[11001] unitCode[4] command[1]
sending systemCode[11001] unitCode[4] command[0]
sending systemCode[11001] unitCode[4] command[1]
aufgefallen ist, dass die Einträge keinen Zeitstempel bekommen haben.
Hilft beim Problem nicht weiter, aber was mir eben noch auffällt:
Die Zeile für das AUS-Kommando:
return (&$offcmd, &$oncmd, &$offcmd);;}
ist Käse, da würde doch einfach ein aus reichen oder nicht ?:
return (&$offcmd);;}
Wenn der LED Streifen eingeschaltet ist, wird denn dann wenigstens die Lampe ausgeschaltet mit Lampe_BS6 off?
Neuer Code nach Deiner Verbesserung:
defmod Aussentreppe_LED_Schlauch cmdalias Lampe_BS6 .* AS {my $oncmd = sub {system("/usr/local/sbin/send433 11001 4 1 &");;};;\
my $offcmd = sub {system("/usr/local/sbin/send433 11001 4 0 &");;};;\
return (&$oncmd, &$offcmd, &$oncmd) if $EVENT eq 'on';;\
return (&$offcmd);;}
attr Aussentreppe_LED_Schlauch group Licht
attr Aussentreppe_LED_Schlauch room Licht
attr Aussentreppe_LED_Schlauch icon light_stairs
setstate Aussentreppe_LED_Schlauch defined
Dann habe ich mit der bash den LED-Schlauch angeschaltet und mit "Lampe_BS6 off" in der FHEM-Befehlzeile ist er tatsächlich ausgegangen. Bei "Lampe_BS6 on" passiert leider jedoch nichts.
Dann liegts wahrscheinlich daran das die Befehle für AN zu schnell ausgeführt werden, ich weiß es aber nicht wie man das jetzt umsetzt.
Da muss sich irgendeiner der Herren die genau wissen wie man das macht, aber nur das Popcorn genüsslich genießen, erbarmen zu helfen.
ZitatDann habe ich mit der bash den LED-Schlauch angeschaltet...
Wie genau hast du diese drei Kommandos in der Bash ausgeführt ?
Siehe in meinem Beitrag zuvor:
Zitat von: Bracew am 26 November 2023, 16:09:14Wenn ich in der bash:
bracew@pi:~$ /usr/local/sbin/send433 11001 4 1
sending systemCode[11001] unitCode[4] command[1]
eingebe, geht der LED-Schlauch an.
aber wieso "
...drei Kommandos..."?
Es ist
"/usr/local/sbin/send433 11001 4 1" für AN und
"/usr/local/sbin/send433 11001 4 0" für AUS
"sending systemCode[11001] unitCode[4] command[1]" bzw.
"sending systemCode[11001] unitCode[4] command[0]" ist die Antwort der bash (Systemresponse) zur Bestätigung.
Weil ich es aufgrund der Aussage:
Zitat von: Bracew am 25 November 2023, 18:22:31Wird der neue LED-Schlauch angeschaltet, fängt er jedoch mit blinken und allerlei wilden optischen Effekten an. Erst beim 2. Einschalten geht er in den ,,Normal"-Modus mit dauerhaft AN über. Er braucht also AN-AUS-AN um mit gleichmäßigem Dauerlicht zu funktionieren.
so verstanden habe, das bei dem neuen Led-Streifen jetzt drei Kommandos gebraucht werden um das gewünschte Ergebnis zu erreichen ? ? ?
Das gewünschte Ergebnis ist, dass der LED-Schlauch einfach und kontinuierlich leuchtet ohne Blinken oder sonstiges trallala.
Mit dem neuen Schlauch ist beim einfachen AN schalten es aber manchmal so, dass er in den Effektmodus (Blinken, Rollen, Laufen, Ab- und Aufblenden, etc.) geht.
Schalte ich aber AN-AUS-AN leuchtet er kontinuierlich ohne Effektmodus, also mit dem gewünschten Ergebnis.
Ich glaube verstanden zu haben das man in FHEM keine Pause zwischen Shell-Kommandos hinbekommt ohne zu blockieren.
Dann halt so:
defmod Aussentreppe_LED_Schlauch cmdalias customon AS {fhem("set Lampe_BS6 on;;sleep 0.2;;set Lampe_BS6 off;;sleep 0.2;;set Lampe_BS6 on");;}
attr Aussentreppe_LED_Schlauch group Licht
attr Aussentreppe_LED_Schlauch icon light_stairs
attr Aussentreppe_LED_Schlauch room Licht
Einfach customon ausführen und das gewünschte Ergebnis sollte stattfinden, wenn nicht muss man mit den Pausen "spielen".
edit:
die kürzere Variante hab ich gleich zum Anfang in #1 vorgeschlagen
Ok, in fhem.cfg eingecheckt.
Dann in der Befehlszeile "customon" und das Licht get AN-AUS-AN. Toll!
Teilerfolg, denn wie kann ich "customon" in der Oberfläche anklicken und im WeekdayTimer einbinden?
ZitatOk, in fhem.cfg eingecheckt.
Warum machst du das nicht über das + oder über den Raw-Editor ganz unten bei jedem Device ?
Zitat... wie kann ich "customon" in der Oberfläche anklicken ...
Zitatdefmod Aussentreppe_LED_Schlauch cmdalias set Lampe_BS6 customon AS {fhem("set Lampe_BS6 on;;sleep 0.2;;set Lampe_BS6 off;;sleep 0.2;;set Lampe_BS6 on");;}
attr Lampe_BS6 webCmd customon
oder
attr Lampe_BS6 devStateIcon on::off off::customon
Zitat... im WeekdayTimer einbinden?
Hab ich mich noch nie mit beschäftigt, mit der jetzt vorgeschlagenen Änderung aber ganz normal mit
set Lampe_BS6 customon, schätz ich.
Hallo TomLee,
erstmal vielen, vielen Dank für Deine unermüdliche Hilfe. Ganz toll!!!
Zitat von: TomLee am 27 November 2023, 12:49:55Warum machst du das nicht über das + oder über den Raw-Editor ganz unten bei jedem Device ?
Aus vielen Gründen, u.a.:
1.) Weil ich es von Anfang an hier so gelernt habe.
2.) Weil ich es seit fast 10 Jahren deshalb so gewohnt bin.
3.) Weil ich zu faul bin mich neu umzugewöhnen.
4.) Weil ich mit listenorientierter Programmierung (z.B. Cobol, Fortran, Pascal) alt geworden bin.
5.) Weil ich es so einfacher und verständlicher finde.
6.) Weil ich so mehr verstehe. Leider auch manchmal vergesse und mich über die Struktur und meine Kommentare in der fhem.cfg dann manchmal doch wieder daran erinnere.
7.) Weil ich über auskommentieren mit # manchen alten funktionierenden Code zu meiner Erinnerung behalten kann.
8.) Weil ich über auskommentieren mit # manchen neuen Code testen und wieder ausschalten kann.
9.) Weil ich Mustercode so einfacher übernehmen kann (Eigenen und Fremden).
10.) 11.) 12.) ...
Zitat von: TomLee am 27 November 2023, 12:49:55attr Lampe_BS6 webCmd customon
führt zu:
Screenshot 2023-11-27 at 13-57-38 Home Sweet Home.png
bzw.
Screenshot 2023-11-27 at 14-29-34 Home Sweet Home.png
Führt beim Klick auf das FS20-Symbol (Bulb) zum einfachen AN bzw. AUS und beim Klick auf "customon" zu AN-AUS-AN.
Zitat von: TomLee am 27 November 2023, 12:49:55attr Lampe_BS6 devStateIcon on::off off::customon
habe ich geändert zu:
attr Lampe_BS6 devStateIcon on:FS20.on:off off:FS20.off:customon
und führt zu:
Screenshot 2023-11-27 at 13-58-56 Home Sweet Home.png
bzw.
Screenshot 2023-11-27 at 13-59-34 Home Sweet Home.png
Wenn ich auf das FS20-Symbol klicke ist alles wunderbar:
- beim einschalten AN-AUS-AN
- beim ausschalten AUS
Wenn ich auf "off" klicke geht der LED-Schlauch aus.
Jedoch, wenn ich auf "on" klicke geht es nur AN (nicht! AN-AUS-AN)
Beide Varianten sind nicht Optimal. Die zweite gefällt mir besser. Jedoch wäre es noch schön den "on"-Klick noch zu AN-AUS-AN hin zu bekommen.
attr Lampe_BS6 webCmd customon:on:off
?
Screenshot 2023-11-27 at 15-23-04 Home Sweet Home.png
Klick auf:
- on --> AN
- off -->AUS
- FS20 -->AN / AUS
- customon -->AN-AUS-AN
Hallo TomLee,
hast Du mir noch einen Tipp, wie ich das "customon" auf "on" bekomme?
Gruß Bracew
Das versteh ich nicht. Kannst du mal genau beschreiben was du haben möchtest ?
Zitat von: TomLee am 28 November 2023, 17:51:25Kannst du mal genau beschreiben was du haben möchtest ?
Ja, gerne:Ich habe einen Zoo von per FHEM schaltbaren Steckdosen, manche 433 MHz mit DIP-Schaltern, manche 433 MHz mit Drehschaltern, manche über WLAN mit Tasmota. Ich schalte die Steckdosen zum Teil händisch in der FHEM Oberfläche wie im Bild unten rechts und manche auch per FHEM automatisiert mit WeekdayTimer .
Die meisten funktionieren über Jahre gleich und auch gut. Doch in diesem Monat ist ein LED-Lichtschlauch von LIDL kaputt gegangen. LIDL hatte diesen zufälligerweise gerade im Angebot (Bild unten links):
Screenshot 2023-11-28 at 18-20-10 Home Sweet Home.png
sodass ich einen neuen gekauft und wieder an dieselbe per FHEM schaltbare 433 MHz Brennenstuhl RCS 2044 N Funkschalter-Steckdose, angeschlossen haben. Der alte Schlauch aus 2019 war ,,...
mit 8 einstellbaren Leuchtmodi und Memoryfunktion..." und der neue hat auch ,,...
8 einstellbaren Leuchtmodi und Memoryfunktion...".
Den neuen LED-Lichtschlauch habe ich wieder so am LED-Lichtschlauch eingestellt, dass er beim Einschalten gleichmäßiges leuchtet, kein Blinken, kein Lauflicht, kein Auf- u. Abblenden, keine anderen Effekt. Nach dem Strom ausschalten in der Nacht und wieder einschalten am nächsten Tag sollte der LED-Lichtschlauch sich die letzte Einstellung gemerkt haben (Memoryfunktion).
Doch manchmal nach dem Einschalten schaltet der LED-Lichtschlauch alle seine Effekte an. Was ich aber nicht will, denn ich nutze den LED-Lichtschlauch nicht nur zu Weihnachten sondern das ganze Jahr an der Aussentreppe.
Ich habe herausgefunden, dass, wenn ich die Funksteckdose und damit den LED-Schlauch AN-AUS-AN schalte statt einfach nur AN, der LED-Lichtschlauch genau das macht was er soll: gleichmäßig leuchten.
Deshalb soll FHEM AN-AUS-AN senden statt einfach nur AN, wenn ich auf ,,on" klicke. Beim Klick auf ,,off" soll einfach nur AUS gesendet werden. Auch das FS20 Symbol (Bulb) auf der Oberfläche soll sinngemäß mit AN-AUS-AN statt nur AN funktionieren beim drauf klicken, wenn der LED-Lichtschlauch aus ist. Wenn der LED-Lichtschlauch an ist reicht natürlich wiederum ein einfaches AUS.
Im Moment habe ich das FHEM Element Aussentreppe_LED_Schlauch so:
Screenshot 2023-11-26 at 12-41-49 Home Sweet Home.png
statt so wie es sein soll:
Screenshot 2023-11-26 at 12-42-55 Home Sweet Home.png
also ähnlich wie die anderen Schaltelemente.
meine ursprüngliche Definition für nur AN oder AUS bzw. automatische Schaltung per WeekdayTimer war so:
# FunkSchalter Brennenstuhl
define Lampe_BS6 GenShellSwitch /usr/local/sbin/send433 11001 4 1 0
attr Lampe_BS6 group Licht
attr Lampe_BS6 room hidden
#
define Aussentreppe_LED_Schlauch structure room Lampe_BS6
attr Aussentreppe_LED_Schlauch group Licht
attr Aussentreppe_LED_Schlauch room Licht
attr Aussentreppe_LED_Schlauch icon light_stairs
#
define Aussentreppe_LED WeekdayTimer Aussentreppe_LED_Schlauch de !$we|{sunrise_abs('HORIZON=-12',0,"07:16:30","07:41:30")}|on !$we|{sunrise_abs('HORIZON=-1',3,"07:16:35","07:42:17")}|off Mo-So|{sunset_abs('HORIZON=-4',0,"16:01:21","21:09:58")}|on Mo-So|21:10:04|off (isAt_LED_Automatik())
#
Mit Deiner Hilfe habe wir über diesen Code:
# FunkSchalter Brennenstuhl
define Lampe_BS6 GenShellSwitch /usr/local/sbin/send433 11001 4 1 0
attr Lampe_BS6 group Licht
attr Lampe_BS6 room hidden
#
define Aussentreppe_LED_Schlauch cmdalias set Lampe_BS6 customon AS {fhem("set Lampe_BS6 on;;sleep 0.1;;set Lampe_BS6 off;;sleep 0.1;;set Lampe_BS6 on");;}
attr Aussentreppe_LED_Schlauch group Licht
attr Aussentreppe_LED_Schlauch room Licht
attr Aussentreppe_LED_Schlauch icon light_stairs
#
attr Lampe_BS6 webCmd customon:on:off
#
define Aussentreppe_LED WeekdayTimer Aussentreppe_LED_Schlauch de !$we|{sunrise_abs('HORIZON=-12',0,"07:16:30","07:41:30")}|on !$we|{sunrise_abs('HORIZON=-1',3,"07:16:35","07:42:17")}|off Mo-So|{sunset_abs('HORIZON=-4',0,"16:01:21","21:09:58")}|on Mo-So|21:10:04|off (isAt_LED_Automatik())
#
uns so weit dem Ziel angenähert, dass es so:
Screenshot 2023-11-27 at 15-23-04 Home Sweet Home.png
aussieht und beim klicken auf:
on --> AN des LED-Lichtschlauch
off --> AUS des LED-Lichtschlauch
FS20 --> AN oder AUS des LED-Lichtschlauch je nach vorherigem Zustand
customon --> AN-AUS-AN des LED-Lichtschlauch
Aber leider schaltet ein Klick auf "on" eben nicht AN-AUS-AN sondern nur ein Klick auf "customon" und
leider ist auf der FHEM Oberfläche noch "customon" zu sehen.
Kurzgefasst möchte ich folgenden Zustand:Screenshot 2023-11-28 at 19-31-08 Home Sweet Home.png
aber, dass beim Klick auf "on" von FHEM AN-AUS-AN gesendet wird, bzw. beim Klick auf das FS20-Symbol (Bulb) je nach Zustand AN-AUS-AN oder AUS gesendet wird.
Ich hoffe, ich habe mich verständlich ausgedrückt.
Zitat... bzw. beim Klick auf das FS20-Symbol (Bulb) je nach Zustand AN-AUS-AN oder AUS gesendet wird.
Das macht ja dieses devStateIcon:
Zitat von: TomLee am 27 November 2023, 12:49:55attr Lampe_BS6 devStateIcon on::off off::customon
Zitat... dass beim Klick auf "on" von FHEM AN-AUS-AN gesendet wird...
Ich weiß nicht ob das irgendwie geht, glaub nicht, aber wer weiß.
Was genau ist dein Problem?
Liegt es daran das du die structure-Definition nur mit on/off schalten kannst? Wozu gibts die überhaupt wenn da nur ein Device drin steckt ?
Und die WeekdayTimer-Definition (wie gesagt hab mich nie wirklich mit beschäftigt) sieht doch auch so aus, das du da einfach on durch customon ersetzen kannst, oder geht das nicht ?
Zitat von: TomLee am 28 November 2023, 20:12:13Das macht ja dieses devStateIcon:
Zitatattr Lampe_BS6 devStateIcon on::off off::customon
Ja, man muss aber "customon" klicken. Beim Klick auf "on" funktioniert es nicht und auch nicht beim Klick auf das FS20-Symbol. Meine Frau schaltet (nur) mit dem Smartphone und auf dem ist nur das FS20-Symbol zu sehen, kein "on", kein "off" und kein "customon". Auf dem Smartphone ist nur die reduzierte WEBphone-Oberfläche von FHEM zu sehen. Meine Frau würde also beim anschalten erst gar nicht "customon" sehen (geschweige denn den Unterschied verstehen. Der WAF (https://de.wikipedia.org/wiki/Woman_acceptance_factor) ist so nicht gegeben).
Ich würde gerne hinter der selben Oberflächenfunktion, wenn man "on" bzw. die FS20-Bulb klickt das AN-AUS-AN von "customon" haben.
WeekdayTimer habe ich hinten an gestellt. Würde ich mich gerne später drauf konzentrieren.
Zitatund auch nicht beim Klick auf das FS20-Symbol
Doch, mit:
attr Lampe_BS6 devStateIcon on::off off::customon
funktioniert genau das.
Aber eben denk ich seh ich das Problem mit der Frau, die schaltet immer die structure Aussentreppe_LED_Schlauch ?
Du brauchst die structure doch nicht wirklich, wie wärs wenn du die einfach löschst, Lampe_BS6 umbenennst in Aussentreppe_LED_Schlauch oder einen alias mit Aussentreppe_LED_Schlauch vergibst und dann noch das devStateIcon angibst.
Dann ist für die Frau erstmal alles beim alten und sie kann über die FS20 einschalten.
Zitat von: TomLee am 28 November 2023, 20:54:01Doch, mit:
Code Auswählen Erweitern
attr Lampe_BS6 devStateIcon on::off off::customon
funktioniert genau das.
Ja.
Zitat von: TomLee am 28 November 2023, 20:54:01Du brauchst die structure doch nicht wirklich, wie wärs wenn du die einfach löschst
Ja.
Zitat von: TomLee am 28 November 2023, 20:54:01Lampe_BS6 umbenennst in Aussentreppe_LED_Schlauch
Aber, wo muss ich den den "GenShellSwitch /usr/local/sbin/send433 11001 4 1 0" unterbringen?
Und wie sieht der "cmdalias" aus?
Wie führe ich die den zusammen?
Wie wärs wenn du alles was hier steht noch 2-3 mal durchliest und versuchst nachzuvollziehen, eine Nacht darüber schläfst, dich morgen nochmal mit beschäftigst und dich dann nochmal meldest falls immer noch Fragen offen sind.
Ich hab jetzt keine Zeit mehr ...
Danke für Deine Hilfen und Deine Geduld.
Hallo,
meine Frau hat mitbekommen, was ich tue und mich einen Zeitverschwender gescholten ::) .
Sie hat den Lichtschlauch zurückgegeben und einen neuen funktionierenden mitgebracht :) .
Nun können wir wieder die FHEM-Programmierung wie vorher nutzen.
Sie hat das Problem gelöst 8) . Es braucht nun kein AN-AUS-AN mehr.
Danke dennoch für die Hilfen!