[Gelöst]Licht zeitgesteuert abschalten

Begonnen von morfey, 24 März 2022, 17:24:46

Vorheriges Thema - Nächstes Thema

morfey

Hi zusammen!
Ich möchte meine Lampe am Schreibtisch nach x minuten / Sekunden automatisch abschalten. Ich habe hier dazu etwas gefunden:
https://forum.fhem.de/index.php?topic=25375.0
als Code habe ich mir folgendes zusammengebaut:
schreibtischlampe:on define schreibtischlampeaus at +00:00:08 {fhem("set schreibtischlampe:FILTER=STATE!=off off");;Log 1, "Licht wird automatisch ausgemacht"}

Ich bin allerdings zu blöde um zu verstehen, ob das ein Notify oder was auch immer ist. Ich kann den Code nicht ins Eingabefeld der Webgui einfügen ... da fehlt mir noch ein set oder define oder was auch immer ....
Die log-Meldung brauche ich da nicht ... nur erst einmal zum testen ... auch die 8 Sekunden sind zum Testen :-)

Es handelt sich um Zigbee-Geräte über Deconz.
Hat jemand eine Idee?

Danke!

MadMax-FHEM

#1
Einfach statt set schreibtischlampe on ein set schreibtischlampe on-for-timer X mit X=gewünschte Minuten mal 60...

Eine per HUEBridge eingebundene Lampe sollte das können...

EDIT: bzgl. des notify: entweder mal ein "leeres" notify definieren, z.B.
define azLichtAus notify az_licht:on {} und dann auf DEF klicken und anpassen (wenn codemirror aktiviert ist, dann sogar mit Syntax-Unterstützung) oder gleich per Eventmonitor erzeugen lassen und ebenfalls per Klick auf DEF anpassen.
https://wiki.fhem.de/wiki/Event_monitor
Oder per RawDef-Import...
https://wiki.fhem.de/wiki/Import_von_Code_Snippets
Außerdem ist im Ausführungsteil der "Umweg" über Perl überflüssig und auch defmod bzgl. der Definition des at "besser" als define...
https://wiki.fhem.de/wiki/Klammerebenen
https://forum.fhem.de/index.php?topic=36326.0

EDIT: statt dem at-Konstrukt würde auch ein sleep gehen:
set Lampe on; sleep X; set Lampe off
X: Minuten mal 60
Strichpunkte halt je nachdem wo/wie eingegeben 1 Strichpunkt oder 2 Strichpunkte... ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

morfey

Hi,
bei dem set-Befehl muss ich diesen aber über Fhem ausführen ... eigentlich soll ein Ikdea-Schalter das Licht einschalten und es soll automatisch nach x minuten ausgeschaltet werden ...

zife

#3
Na, dann ein NOTIFY auf das Event "Licht ist an" definieren, das anhand der o.g. Vorschläge (at, sleep) wieder ausschaltet.

Siehe die notify-Hinweise oben, bzw. Dein Ansatz im Eingangspost (in dem fehlt quasi vorne nur noch das "define xyz notify", mal abgesehen von den Hinweisen von MadMax-FHEM)...
fhem mit EnOcean, Gardena, Vorwerk, Miele und Teufel/Raumfeld-Integration... nur meine Kinder wollen sich damit nicht anständig steuern lassen. Wer weiß Rat?

MadMax-FHEM

Zitat von: morfey am 24 März 2022, 17:48:03
Hi,
bei dem set-Befehl muss ich diesen aber über Fhem ausführen ... eigentlich soll ein Ikdea-Schalter das Licht einschalten und es soll automatisch nach x minuten ausgeschaltet werden ...

Wäre hilfreich gewesen das gleich zu schreiben... ;-)

Ansonsten ist doch erst mal alles geschrieben?

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

morfey

Hi,
... so richtig funktioniert es leider noch nicht. Habe folgendes Notify angelegt:
define n_schreibtischlampe_off_timer notify Schreibtischlampe:on define Schreibtischlampeaus at +00:00:08 {fhem("set Schreibtischlampe:FILTER=STATE!=off off");;Log 1, "Licht wird automatisch ausgemacht"}
Dabei passiert nichts. Im Event-Monitor sehe ich, dass Schreibtischlampeaus erstellt wird und eine Nexttime zugeordnet bekommt. Bei der dann erreichten Uhrzeit passiert nichts. Kein lampe aus, kein Log-Eintrag, kein Event ...

DetlefR

#6
Ist das STATE aus den Internals oder das state aus den readings gemeint?
Das sind zwei verschiedene Sachen.
Was zeigt den list Schreibtischlampe:FILTER=STATE!=off an?

morfey

Hi,
Wenn die Lampe aus ist zeigt der list-befehl nichts, wenn sie an ist:
Internals:
   DEF        1  IODev= deconz
   FUUID      5fc4b163-f33f-9309-c4c2-e373b16738ccb2ba
   FVERSION   31_HUEDevice.pm:0.210390/2020-01-23
   ID         1
   INTERVAL   
   IODev      deconz
   NAME       Schreibtischlampe
   NR         21
   STATE      on
   TYPE       HUEDevice
   desired    1
   manufacturername IKEA of Sweden
   modelid    TRADFRI control outlet
   name       Schreibtischlampe
   swversion  2.0.024
   type       On/Off plug-in unit
   uniqueid   84:2e:14:ff:fe:65:f9:49-01
   READINGS:
     2022-01-30 18:37:12   alert           none
     2022-03-29 08:03:51   onoff           1
     2022-03-29 08:03:51   pct             100
     2022-03-29 08:03:51   reachable       1
     2022-03-29 08:03:51   state           on
   helper:
     alert      none
     battery    -1
     bri        -1
     colormode 
     ct         -1
     devtype   
     effect     
     hue        -1
     mode       
     pct        100
     reachable  1
     rgb       
     sat        -1
     update_timeout -1
     xy         
     json:
       etag       8d56d2ec8fda76f514a2d802f699530a
       lastannounced 2020-11-30T10:46:34Z
       lastseen   2022-03-29T06:03Z
       manufacturername IKEA of Sweden
       modelid    TRADFRI control outlet
       name       Schreibtischlampe
       swversion  2.0.024
       type       On/Off plug-in unit
       uniqueid   84:2e:14:ff:fe:65:f9:49-01
       state:
         alert      none
Attributes:
   IODev      deconz
   alias      Schreibtischlampe
   color-icons 2
   devStateIcon {(HUEDevice_devStateIcon($name),"toggle")}
   group      HUEDevice
   model      TRADFRI control outlet
   room       Homekit
   subType    switch
   webCmd     toggle:on:off


DetlefR

Zwei Dinge.

1.) Wenn es unbedingt auf die Art sein soll.
Mal die Zeit größer als 8 Sekunden einstellen. Das AT aufrufen und "set execNow" ausführen und mal sehen was dann passiert.
Und aus dem define ein defmod machen. Das vermeidet Probleme wenn es den AT schon gibt.

2.) Warum überhaupt so kompliziert.
attr Schreibtischlampe useSetExtensions 1
Das aktiviert SetExtension für die Lampe. Damit habe ich dann u.a on-for-timer zur Verfügung. Das setzt einen Timer für x Sekunden in dem die Lampe an sein soll. Wenn die Lampe zwischenzeitlich anders geschalten wird, wird der Timer gelöscht.

define n_schreibtischlampe_off_timer notify Schreibtischlampe:on set Schreibtischlampe on-for-timer 8


MadMax-FHEM

Zitat von: DetlefR am 29 März 2022, 11:02:08
2.) Warum überhaupt so kompliziert.
attr Schreibtischlampe useSetExtensions 1
Das aktiviert SetExtension für die Lampe. Damit habe ich dann u.a on-for-timer zur Verfügung. Das setzt einen Timer für x Sekunden in dem die Lampe an sein soll. Wenn die Lampe zwischenzeitlich anders geschalten wird, wird der Timer gelöscht.

define n_schreibtischlampe_off_timer notify Schreibtischlampe:on set Schreibtischlampe on-for-timer 8


Das wird so verm. nicht gehen, weil (soweit ich das im Kopf habe bzw. bei Lampen die nur on/off und nicht bei on pct machen ist das wohl so) auch bei set HUEX on-for-timer ein on-Event kommt, daher würde das notify zuschlagen usw. -> Schleife...
Ob da ein disable after trigger hilft, hmmm.

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Beta-User

Habe hier auch einen Anwendungsfall, da kann von allen möglichen Seiten her der "an"-Befehl gekommen sein (z.B. auch von einem Taster an dem MySensors-Device selbst)...

Das notify:
define n_Pumpe_Zisterne_1 notify Pumpe_Zisterne:on {mySwitchOffAfter('Pumpe_Zisterne','00:30')}

Der zugehörige Perl-Code:
sub mySwitchOffAfter {
  my $ondevice = shift // return;
  my $duration  = shift // "01:00:01";
  my $idname = "my_switchoff_".$ondevice;
  #fhem "sleep $duration $idname quiet;set $ondevice off";
  AnalyzeCommandChain(undef,"sleep $duration $idname quiet;set $ondevice off");
}
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

juergen012

Hallo,
mit DOIF??
define di_LampeAus DOIF ([schreibtischlampe] eq "on") (set schreibtischlampe off)
attr wait 8

nicht getestet..
Fhem unter Proxmox

morfey

erzeugt ein:
di_LampeAus DOIF: expected DOELSEIF or DOELSE: attr wait 8

morfey

@DetlefR: Vielen Dank, ein klein wenig bin ich weiter:
Das log konnte ich nun besser lesen und erhalte folgende Meldung:
Schreibtischlampeaus: Unknown command {fhem("set, try help.
Definiert habe ich das nun mit:
define n_schreibtischlampe_off_timer notify Schreibtischlampe:on defmod Schreibtischlampeaus at +00:00:58 {fhem("set Schreibtischlampe:FILTER=STATE!=off off");;Log 1, "Licht wird automatisch ausgemacht"}

juergen012

defmod di_LampeAus DOIF ([Schreibtischlampe] eq "on") (set Schreibtischlampe off)
attr di_LampeAus wait 8


funktioniert bei mir
Fhem unter Proxmox