Devices regelmäßig bei Abwesenheit ausschalten

Begonnen von timtom, 12 März 2019, 15:47:20

Vorheriges Thema - Nächstes Thema

timtom

Hallo zusammen,

derzeit steuere ich diverse Devices über eine LightScene, die abhängig von der Anwesenheit gesteuert wird. Das klappt im Alltag soweit auch sehr gut.

Jetzt möchte ich jedoch sicherstellen, dass bei längerer Abwesenheit auch alle i.O ist. Das bedeutet folgendes:
1) HUE Devices gehen bspw. nach einem Stromausfall automatisch an. Oder bei einem Fehler bei Bewegungssensoren.
2) IT Devices geben keine Rückmeldung zum Status. Es kann also passieren, dass ein Nachbar diese aus versehen anschaltet.

Damit bspw. Lampen im Urlaub nicht ausversehen die ganze Zeit an sind, möchte ich eine "doppelte Absicherung" erstellen.

Habt ihr soetwas auch und wenn ja, wie realisiert.

Derzeit überlege ich alle kritischen Devices in eine Structure zu packen und über ein DOIF bei bei Abwesenheit stumpf alle 3 Std ein "off" an die Structure zu senden. Um Fehler beim Abwesenheitsstatus abzufangen, dann noch alle 24h ein "off" unabhängig vom Abwesenheitsstatus.

Zugegebenermaßen klingt das nicht schön, nur insb. bei den IT Devices fällt mir nichts anderes ein.

Die Alternative wäre, einfach alles abstöpseln, wo man dran kommt ;)

justme1968

zu 1.: mit aktueller firmware kannst du konfigurieren was die lampen nach stromausfall machen sollen.

ansonsten: wenn du sonst nur über fhem schaltest: du kannst regelmässig prüfen ob das internal desired ungleich onoff ist und wieder ausschalten. oder du machst das nur bei abwesenheit.o

wenn du eine usv hast kannst du auch auf stromausfall reagieren.

für it im prinzip das gleiche. d.h. regelmässig ausschalten wenn keiner da ist.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

timtom

Zitat von: justme1968 am 12 März 2019, 16:33:44
zu 1.: mit aktueller firmware kannst du konfigurieren was die lampen nach stromausfall machen sollen.

ansonsten: wenn du sonst nur über fhem schaltest: du kannst regelmässig prüfen ob das internal desired ungleich onoff ist und wieder ausschalten. oder du machst das nur bei abwesenheit.o

wenn du eine usv hast kannst du auch auf stromausfall reagieren.

für it im prinzip das gleiche. d.h. regelmässig ausschalten wenn keiner da ist.

Hey Danke für den Tipp unter 1). Leider habe ich jetzt auch eine Tradfri, wo ich keine Option in der Firmware finde. Jetzt habe ich versucht das über DOIF zu regeln. Nach 3 Std rumprobieren bekomme ich das immer noch nicht hin. Selbst wenn die Regex entferne, besteht das Problem, dass das DOIF auch bei "off" feuert.

Irgendwie so hatte ich mir das vorgestellt:
(["^HUEDevice:onoff"] eq "1" and [$DEVICE:&desired] ne "1")
  (set $DEVICE off)


oder so
(["^HUEDevice:onoff"] eq "1")
  (IF ([$DEVICE:&desired] ne "1")  (set $DEVICE off))


Hat jemand eine Idee?

Otto123

Hi,

sprich mal bitte in "ganzen Sätzen" - ich meine poste besser ein list von deinem Versuch als bloß DEF Stücke.  :D

Das unnötig "gefeuert" wird kann man auch so verhindern:
(set blabla:FILTER=state!=off off)

Ansonsten habe ich keine Ahnung wie die HUEDevices wirklich aussehen, aber deine Bedingung sieht mir komisch aus. Also poste doch auch man ein list von einem HUEDevice.

Du kannst auch ohne Structur, deine Devices anhand vom TYPE oder Namen oder .... identifizieren und bei Bedarf ein off senden. Nur bei den IT bist Du natürlich "blind"

Gruß Otto
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

amenomade

Sowas wird definiv nie funktionieren:
(["^HUEDevice:onoff"] eq "1")

und das noch weniger:
(["^HUEDevice:onoff"] eq "1" and [$DEVICE:&desired] ne "1")

Du musst dich zwischen Ereignissteueurung und Statussteuerung entscheiden. DOIF Doku lesen.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

timtom

Zitat von: Otto123 am 14 Juli 2019, 15:01:33
Hi,

sprich mal bitte in "ganzen Sätzen" - ich meine poste besser ein list von deinem Versuch als bloß DEF Stücke.  :D
[...]

Sorry, da war ich wohl etwas frustriert und habe vergessen die Basics zu erläutern.  Mit geht es jetzt erst mal darum, die Tradfri Devices auszuschalten, wenn diese mal außerhalb von FHEM angeschaltet werden.

Also ich habe mehrere Tradfri Devices, die alle "HUEDevice12345" heißen, wobei die Zahlenfolge natürlich individuell ist. Jedes Device hat unter anderem ein Reading "onoff" was "1" bzw. "0" und den Schaltzustand der Lampe angibt. Weiterhin gibt es ein Internal "desired", dass den Schaltzustand angibt, wenn aus fhem heraus geschaltet wird. Sprich, bei z.B. einem Stromausfall wäre "onoff" "1", "desired" jedoch "0". In dem Fall soll dann das Device ausgeschaltet werden.

Falls das hier funktioniert, würde ich das gerne per DOIF und ohne Pearl bauen: https://forum.fhem.de/index.php/topic,53064.msg448583.html#msg448583

Zitat von: amenomade am 14 Juli 2019, 20:00:45
Sowas wird definiv nie funktionieren:
(["^HUEDevice:onoff"] eq "1")

Warum wird das nie funktionieren? Wenn ich nur diese Bedingung habe, funktioniert das tatsächlich nicht. Uns zwar triggert das DOIF sowohl wenn ich das Device per FHEM an als auch aus schalte. Das meine ich mit "zwei mal feuern".

Zitat von: amenomade am 14 Juli 2019, 20:00:45
Du musst dich zwischen Ereignissteueurung und Statussteuerung entscheiden. DOIF Doku lesen.
Alsi ich habe den Part zu DOIF schon diverse Male gelesen. Leider habe ich wohl den Teil überlesen, wo steht, dass Ereignissteueurung und Statussteuerung nicht verschmischt werden dürfen. Sorry. Man lernt ja nie aus.

Otto123

#6
Ein list in der Art list HUEDevice12345 wäre wirklich schick gewesen. :o

Aber ich versuch mal was :
define willi DOIF ([18:00])(set HUEDevice.*:FILTER=onoff!=0 off)
Erklärung: 18:00 Uhr (willkürlich kannst Du ändern und mehrfach am Tag machen, bietet DOIF alles ;)) wird an alle Geräte die mit HUEDevice beginnen und deren Reading onoff nicht 0 ist ein off.

Gruß Otto

BTW: Das einzige Ereignis was Du hast wenn Du im Urlaub bist ist doch ein Zeitraster? Weil: wenn die Lampe wegen dem Strom der gerade wiederkehrt angeht ist doch FHEM noch nicht an?
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

binford6000

Ich habe nicht nur HUEs sondern auch andere Lampen (Sonof, Steckdosen,...) und mache das so:
Alle LAmpen einsammeln (haben alle Namen die auf .*_licht enden):
my @lichter=devspec2array('.*_licht:FILTER=state=on|ON|dim.*');
Und dann die ausschalten die noch an sind:
if (@lichter) {
  foreach (@lichter) {
    fhem("set $_ off");
  }
}

Und das ganze dann während Abwesenheit ausführen lassen. AT DOIF notify je nach Geschmack ;)
VG Sebastian

amenomade


my @lichter=devspec2array('.*_licht:FILTER=state=on|ON|dim.*');
if (@lichter) {
  foreach (@lichter) {
    fhem("set $_ off");
  }
}

Heisst einfach
set .*_licht:FILTER=state=on|ON|dim.* off
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

timtom

Danke für die reichlichen Rückmeldungen. Um noch einmal etwas Ordnung reinzubringen, habe ich das Thema mal in zwei Fragestellungen aufgeteilt.
A) Abschaltung bei Urlaub für alle (Licht)Devices
B) Spezielles Handling von Tradfri bei Ab-Anschaltung außerhalb FHEM

zu A)
Zitat von: binford6000 am 14 Juli 2019, 21:56:35
[...]
Und das ganze dann während Abwesenheit ausführen lassen. AT DOIF notify je nach Geschmack ;)
VG Sebastian
Zitat von: Otto123 am 14 Juli 2019, 21:25:43
[...]
Aber ich versuch mal was :
define willi DOIF ([18:00])(set HUEDevice.*:FILTER=onoff!=0 off)
Erklärung: 18:00 Uhr (willkürlich kannst Du ändern und mehrfach am Tag machen, bietet DOIF alles ;)) wird an alle Geräte die mit HUEDevice beginnen und deren Reading onoff nicht 0 ist ein off.

Gruß Otto

BTW: Das einzige Ereignis was Du hast wenn Du im Urlaub bist ist doch ein Zeitraster? Weil: wenn die Lampe wegen dem Strom der gerade wiederkehrt angeht ist doch FHEM noch nicht an?
Ich habe das jetzt auch so gelöst. Damit sollte schon mal im Abwesenheitsfall Alles regelmäßig ausgeschaltet werden.
define structure_AlleLichter structure structLicht HUEGroup135790 RGBWW_Controller_1 wg_Elro_0F0F00FFFF ...


define di_AlleLichterAus DOIF ([:00] and [ZuhauseStatus:state] ne "Zuhause")\
  (set structure_AlleLichter off)
attr di_AlleLichterAus do always


zu B)
Hier ist mein Use-Case etwas anders. Ich benötige öfters mal eine Steckdose, an der Tradfri Devices angeschlossen sind. Stecke ich die Lampe wieder ein, geht das Licht an. Diese würde ich dann gerne über FHEM wieder ausschalten. Daher die Nutzung von "desired"
Zitat von: Otto123 am 14 Juli 2019, 21:25:43
Ein list in der Art list HUEDevice12345 wäre wirklich schick gewesen. :o
[...]
Internals:
   CHANGED   
   DEF        12345  IODev=tradfriGW
   FVERSION   31_HUEDevice.pm:0.197270/2019-06-28
   ID         65543
   INTERVAL   
   IODev      tradfriGW
   NAME       HUEDevice12345
   NR         285
   STATE      off
   TYPE       HUEDevice
   desired    0
   manufacturername IKEA of Sweden
   modelid    TRADFRI bulb E27 W opal 1000lm
   name       Stehlampe
   swversion  1.2.214
   type       Dimmable light
   uniqueid   
   READINGS:
     2019-07-07 20:36:17   bri             24
     2019-07-15 04:23:01   onoff           0
     2019-07-15 04:23:01   pct             0
     2019-07-11 22:40:37   reachable       1
     2019-07-15 04:23:01   state           off
   helper:
     alert     
     bri        24
     colormode 
     ct         -1
     devtype   
     effect     
     hue        -1
     on         0
     pct        0
     reachable  1
     rgb       
     sat        -1
     update_timeout 1
     xy         
     helper:
Attributes:
   IODev      tradfriGW
   color-icons 2
   devStateIcon {(HUEDevice_devStateIcon($name),"toggle")}
   model      TRADFRI bulb E27 W opal 1000lm
   subType    dimmer
   webCmd     pct:toggle:on:off


Ich möchte also ein DOIF haben, dass triggert sobald das Reading "onoff" irgendeines HUEDeviceXXXXX auf "1" schaltet. Dann soll bei dem Device, das geschaltet hat überprüft werden, ob das Internal "desired" ungleich "1" ist (also außerhalb FHEM angeschaltet wurde), um dann das Licht wieder auszuschalten.

Um nicht jedes Device im DOIF abfragen hatte ich gedacht Regex zu nutzen. Oder das automatisch angelegte Device "HUEGroup135790". Die Struktur ist analog zu den einzelnen HUE-Devices. Auch wird das Reading "onoff" auf "1" gesetzt, sobald mind. 1 Lampe an ist. Allerdings zieht das "desired" Internal natürlich nicht mit. Ergibt ja auch irgendwie Sinn.

binford6000

#10
Zitat von: amenomade am 14 Juli 2019, 22:04:20

my @lichter=devspec2array('.*_licht:FILTER=state=on|ON|dim.*');
if (@lichter) {
  foreach (@lichter) {
    fhem("set $_ off");
  }
}

Heisst einfach
set .*_licht:FILTER=state=on|ON|dim.* off

Korrekt, möchte aber auch wissen wer der Übeltäter war aber habe diesen Teil einfach weg gelassen ;)

Otto123

#11
Ich nehme mal ein Beispiel aus der Doku, nur als Versuch - ungetestet!
define di_garage DOIF (["^HUEDevice:onoff 1"] and [?$DEVICE:&desired] ne "1") (set $DEVICE off)

Den Event im ersten Teil musst Du Dir mal noch exakt aus dem Eventmonitor fischen, der wird so nicht stimmen! Dort kannst Du natürlich die Basis vom DOIF mit dem Event gleich anlegen lassen!

Gruß Otto
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

timtom

#12
Zitat von: Otto123 am 15 Juli 2019, 11:46:38
Ich nehme mal ein Beispiel aus der Doku, nur als Versuch - ungetestet!
define di_garage DOIF (["^HUEDevice:onoff 1"] and [?$DEVICE:&desired] ne "1") (set $DEVICE off)

Den Event im ersten Teil musst Du Dir mal noch exakt aus dem Eventmonitor fischen, der wird so nicht stimmen! Dort kannst Du natürlich die Basis vom DOIF mit dem Event gleich anlegen lassen!

Gruß Otto

Danke, du bist großartig! Eigentlich war ich ja gar nicht so weit weg. Mir war irgendwie komplett neu, dass man aus dem Eventmonitor direkt DOIF erzeugen kann. Top. So gehts:
(["^HUEDevice:^onoff:.1$"] and [?$DEVICE:&desired] ne "1")
  (set $DEVICE off)


-----
EDIT: Mist. Ich steuere die Device direkt per Alexa an, da ich bei dem "Umweg" über FHEM Verzögerungen hatte. Das geht natürlich nicht mehr, da dann "desired" nicht mehr gesetzt wird.

roedert

Zitat von: timtom am 12 März 2019, 15:47:20
....nur insb. bei den IT Devices fällt mir nichts anderes ein.

Langfristig würde ich IT ablösen .... für eine vernünftige Hausautomatisierung machen nur bidirektionale Teile Sinn.
Günstigste Alternative dürften momentan die Gosund SP-111 für ca 10 Euro/Stck sein ... umgeflasht auf Tasmota.