Zonen-basierte Anwesenheitserkennung und -steuerung

Begonnen von KernSani, 15 März 2019, 19:06:04

Vorheriges Thema - Nächstes Thema

KernSani

Ich habe im ersten Post nochmal ein kleines Update gepostet. Das ist jetzt Release Candidate 2 :-)
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

binford6000

Also irgendwie werde ich mit der hc_cmd Syntax nicht warm...  :-\
Getestet mit der 0.0.22 von heute...

Erster Versuch:
set wc_lampecol_licht:FILTER=STATE=off on; set play1_wc:FILTER=transportState=STOPPED play
night:set wc_lampecol_licht:FILTER=STATE=off on

Lampe geht an, Sonos spielt nicht
Im Log:
2021.04.22 22:22:23 1: [homezone - wc_zone]: Command execution failed: Unknown argument play
night:set, choose one of fadeIn:noArg fadeOut:noArg input:Queue joinGroup:Bad,Buero,Wohnzimmer leaveGroup:noArg mute:true,false next:noArg notify:textField pause:noArg play:noArg playFav:1.FM.-.Chillout.Lounge.Radio,ABSOLUTE.CHILLOUT,ANTENNE.BAYERN.Chillout,BLUE.MARLIN.IBIZA.RADIO,Chillout.Zone,Costa.Del.Mar.-.Chillout,El.Metro.Salsero,FFH.Lounge,FFH.Soundtrack.(Filmmusik),Ibiza.Unique,Northcoast.Radio,RADIO.BOB!.BOBs.Best.of.Rock,RADIO.BOB!.BOBs.Grunge,RADIO.BOB!.BOBs.Hardrock,RADIO.BOB!.BOBs.Kuschelrock,RADIO.BOB!.BOBs.Metal,SWR3.Elchradio.99.6.(Adult.Contemporary),bigFM.Sunset.Lounge,hr-iNFO,hr3.89.3.(Hot.AC) playUri:textField previous:noArg sayText:textField setAVTUri:textField sleep:selectnumbers,0,15,120,0,lin speak:textField stop:noArg toggle:noArg volume:slider,0,1,100 volumeDown:noArg volumeUp:noArg x_raw_payload:textField attrTemplate:?,General_Info,MQTT2_CLIENT_general_bridge,MQTT2_IO_ignoreRegexp_basic,MQTT2_IO_ignoreRegexp_tasmota,MQTT2_IO_ignoreRegexp_shelly,MQTT2_IO_ignoreRegexp_homeassistant,tasmota_basic,tasmota_basic_state_power1,tasmota_3channel_input_shelly_i3,shelly1,ESPurna_single_relay,eBus_daemon_splitter,ems-esp_heater_device,ems-esp_heater_device_outdated,ems-esp_boiler,ems-esp_boiler_outdated,ems-esp_thermostat_read-only,ems-esp_thermostat_RC35_type,ems-esp_thermostat_simple,ems-esp_thermostat_read-only_outdated,ems-esp_thermostat_simple_outdated,ems-esp_thermostat_RC35_type_outdated,zigbee2mqtt_bridge,sonos2mqtt_bridge,sonos2mqtt_speaker,sonos2mqtt_bridge_comfort,InstarCam,wled_controller,go_eCharger,8channel_ethernet_board_split,8channel_ethernet_board_unified,6channel_ethernet_board_6input_split,6channel_ethernet_board_6input_unified,esp_milight_hub_bridge,OpenMQTTGateway_MCU,worx_landroid,wallpanel_app,weewx_weather_station,McLighting,roon
2021.04.22 22:22:23 1: [homezone - wc_zone]: Perl execution failed: Unknown argument play
night:set, choose one of fadeIn:noArg fadeOut:noArg input:Queue joinGroup:Bad,Buero,Wohnzimmer leaveGroup:noArg mute:true,false next:noArg notify:textField pause:noArg play:noArg playFav:1.FM.-.Chillout.Lounge.Radio,ABSOLUTE.CHILLOUT,ANTENNE.BAYERN.Chillout,BLUE.MARLIN.IBIZA.RADIO,Chillout.Zone,Costa.Del.Mar.-.Chillout,El.Metro.Salsero,FFH.Lounge,FFH.Soundtrack.(Filmmusik),Ibiza.Unique,Northcoast.Radio,RADIO.BOB!.BOBs.Best.of.Rock,RADIO.BOB!.BOBs.Grunge,RADIO.BOB!.BOBs.Hardrock,RADIO.BOB!.BOBs.Kuschelrock,RADIO.BOB!.BOBs.Metal,SWR3.Elchradio.99.6.(Adult.Contemporary),bigFM.Sunset.Lounge,hr-iNFO,hr3.89.3.(Hot.AC) playUri:textField previous:noArg sayText:textField setAVTUri:textField sleep:selectnumbers,0,15,120,0,lin speak:textField stop:noArg toggle:noArg volume:slider,0,1,100 volumeDown:noArg volumeUp:noArg x_raw_payload:textField attrTemplate:?,General_Info,MQTT2_CLIENT_general_bridge,MQTT2_IO_ignoreRegexp_basic,MQTT2_IO_ignoreRegexp_tasmota,MQTT2_IO_ignoreRegexp_shelly,MQTT2_IO_ignoreRegexp_homeassistant,tasmota_basic,tasmota_basic_state_power1,tasmota_3channel_input_shelly_i3,shelly1,ESPurna_single_relay,eBus_daemon_splitter,ems-esp_heater_device,ems-esp_heater_device_outdated,ems-esp_boiler,ems-esp_boiler_outdated,ems-esp_thermostat_read-only,ems-esp_thermostat_RC35_type,ems-esp_thermostat_simple,ems-esp_thermostat_read-only_outdated,ems-esp_thermostat_simple_outdated,ems-esp_thermostat_RC35_type_outdated,zigbee2mqtt_bridge,sonos2mqtt_bridge,sonos2mqtt_speaker,sonos2mqtt_bridge_comfort,InstarCam,wled_controller,go_eCharger,8channel_ethernet_board_split,8channel_ethernet_board_unified,6channel_ethernet_board_6input_split,6channel_ethernet_board_6input_unified,esp_milight_hub_bridge,OpenMQTTGateway_MCU,worx_landroid,wallpanel_app,weewx_weather_station,McLighting,roon


2. Versuch:
set wc_lampecol_licht:FILTER=STATE=on off; set play1_wc:FILTER=transportState=PLAYING pause;
night:set wc_lampecol_licht:FILTER=STATE=on off;

Lampe aus, Sonos pause
Im Log:
2021.04.22 22:24:53 1: [homezone - wc_zone]: Command execution failed: Unknown command night:set, try help.
2021.04.22 22:24:53 1: [homezone - wc_zone]: Perl execution failed: Unknown command night:set, try help.


3. Versuch:
set wc_lampecol_licht:FILTER=STATE=off on; set play1_wc:FILTER=transportState=STOPPED play;
night:set wc_lampecol_licht:FILTER=STATE=off on

Lampe an, Sonos spielt
Im Log:
2021.04.22 22:26:53 1: [homezone - wc_zone]: Command execution failed: Unknown command night:set, try help.
2021.04.22 22:26:53 1: [homezone - wc_zone]: Perl execution failed: Unknown command night:set, try help.


Steh ich denn so aufm Schlauch?
VG Sebastian

PS:Bei 1 von 3 aktiven Zonen sind immer noch associated with doppelt, bei einer Zone wird es korrekt angezeigt und bei
der dritten Zone werden gar keine angezeigt.

KernSani

Hi Sebastian,
ist mir irgendwie auch ein Rätsel... kannst du mal die Raw Definition der Zone posten? Dann baue ich mir einen Lampen- und einen Sonos-Dummy und stelle das nach...
Danke,
Oli

EDIT: Die associatedWith werden aktualisiert, wenn die relevanten Attribute (cmds und events) bearbeitet werden.
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

binford6000

Zitat von: KernSani am 22 April 2021, 23:05:54
Hi Sebastian,
ist mir irgendwie auch ein Rätsel... kannst du mal die Raw Definition der Zone posten? Dann baue ich mir einen Lampen- und einen Sonos-Dummy und stelle das nach...
Danke,
Oli

EDIT: Die associatedWith werden aktualisiert, wenn die relevanten Attribute (cmds und events) bearbeitet werden.

Moin Oli,
hier die Zone:
defmod wc_zone homezone
attr wc_zone userattr hz_decay_afternoon hz_decay_day hz_decay_evening hz_decay_morning hz_decay_night             hz_decay_sr hz_decay_ss hz_decay_sr hz_decay_ss  :textField-long    :textField-long    :textField-long    :textField-long   hz_cmd_present:textField-long hz_lumiThreshold_present hz_cmd_likely:textField-long hz_lumiThreshold_likely hz_cmd_unlikely:textField-long hz_lumiThreshold_unlikely hz_cmd_absent:textField-long hz_lumiThreshold_absent   hz_decay_morning hz_decay_day hz_decay_afternoon hz_decay_evening hz_decay_night
attr wc_zone hz_absenceEvent Wohnung:presence:.absent
attr wc_zone hz_closedEvent wc_huesens_door:state:.closed
attr wc_zone hz_cmd_absent set wc_lampecol_licht:FILTER=STATE=on off;; set play1_wc:FILTER=transportState=PLAYING pause;;\
night:set wc_lampecol_licht:FILTER=STATE=on off
attr wc_zone hz_cmd_likely set wc_lampecol_licht:FILTER=STATE=off on;; set play1_wc:FILTER=transportState=STOPPED play;;\
night:set wc_lampecol_licht:FILTER=STATE=off on
attr wc_zone hz_dayTimes 05:00|morning 10:00|day 14:00|afternoon 18:00|evening 23:00|night
attr wc_zone hz_decay 150
attr wc_zone hz_decay_night 90
attr wc_zone hz_luminanceReading wc_huesens_light:lux
attr wc_zone hz_occupancyEvent wc_bwm:state:.motion
attr wc_zone hz_openEvent wc_huesens_door:state:.open
attr wc_zone hz_state 100:present 50:likely 1:unlikely 0:absent


Ich habe ja hier die cmds exzessiv geändert - aber associated with bleibt leer!

VG Sebastian

binford6000

Bin jetzt in o.g. Zone wieder zurück ohne Tageszeit-cmd:
set wc_lampecol_licht:FILTER=onoff=0 on; {sonosbwm('likely','play1_wc')}

Das wird korrekt ausgeführt und associatedWith wird korrekt gefüllt.

Tippe mal es gibt Probleme das cmd mit Zeilenumbruch korrekt auszuwerten.
Alternativ wären halt einzelen user-attr für die Zeiten. Ja ich weiß, es sind schon viele und unter
umständen würden noch mehr dazu kommen...  ::)


Da ich tatsächlich eher eine Prüfung auf asleep benötigen würde, mache ich das dann auch weiter in der Funktion und ohne Tageszeit-cmd.

VG Sebastian


KernSani

Mir kommt da noch ein Gedanke... Zeilenumbrüche - Windows? Aber dein FHEM läuft sicher nicht unter Windows, oder?
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

binford6000

Zitat von: KernSani am 23 April 2021, 17:45:49
Mir kommt da noch ein Gedanke... Zeilenumbrüche - Windows? Aber dein FHEM läuft sicher nicht unter Windows, oder?
Nein, Ubuntu

slor

Also bei mir läuft die aktuelle Variante seit Tagen ohne Probleme.
Nutze die Tageszeit abhängigen cmds noch nicht.
Fhem auf Raspberry Pi 4
CCU3 mit RaspberryMatic mit HMCCU an FHEM
HMCCU, Telegram, Conbee2 und Hue/Tradfri/Osram Lampen AQARA Sensoren, HomeConnect

andre07

Ich habe ein kleines Verständnisproblem und zwar schalten bei mir die Zonen
nicht auf present sondern lediglich auf likely
Meine beiden angelegten zonen
defmod flur_zone homezone
attr flur_zone userattr hz_cmd_present:textField-long hz_lumiThreshold_present hz_cmd_likely:textField-long hz_lumiThreshold_likely hz_cmd_unlikely:textField-long hz_lumiThreshold_unlikely hz_cmd_absent:textField-long hz_lumiThreshold_absent hz_decay_morning hz_decay_day hz_decay_afternoon hz_decay_evening hz_decay_night
attr flur_zone DbLogExclude .*
attr flur_zone DbLogInclude present,absent
attr flur_zone devStateIcon present:user_available@green likely:user_available@lightgreen unlikely:user_unknown@yellow absent:user_away
attr flur_zone hz_absenceEvent HausBewohner:presence:absent
attr flur_zone hz_adjacent obenflur_zone
attr flur_zone hz_dayTimes 05:00|morning 10:00|day 14:00|afternoon 18:00|evening 23:00|night
attr flur_zone hz_decay 200
attr flur_zone hz_luminanceReading innen_bewegung:brightness
attr flur_zone hz_occupancyEvent flur_bewegung:state:.motion
attr flur_zone hz_state 100:present 50:likely 1:unlikely 0:absent
attr flur_zone icon floor
attr flur_zone room Status


defmod wohnz_zone homezone
attr wohnz_zone userattr hz_cmd_present:textField-long hz_lumiThreshold_present hz_cmd_likely:textField-long hz_lumiThreshold_likely hz_cmd_unlikely:textField-long hz_lumiThreshold_unlikely hz_cmd_absent:textField-long hz_lumiThreshold_absent hz_decay_morning hz_decay_day hz_decay_afternoon hz_decay_evening hz_decay_night
attr wohnz_zone DbLogExclude .*
attr wohnz_zone devStateIcon present:user_available@green likely:user_available@lightgreen unlikely:user_unknown@yellow absent:user_away
attr wohnz_zone hz_absenceEvent HausBewohner:presence:.absent
attr wohnz_zone hz_adjacent flur_zone,garten_zone
attr wohnz_zone hz_cmd_present set rr_andre location wohnzimmer
attr wohnz_zone hz_dayTimes 05:00|morning 10:00|day 14:00|afternoon 18:00|evening 23:00|night
attr wohnz_zone hz_decay 300
attr wohnz_zone hz_luminanceReading innen_bewegung:brightness
attr wohnz_zone hz_occupancyEvent innen_bewegung:state:.motion
attr wohnz_zone hz_openEvent lgtv:state:present
attr wohnz_zone hz_state 100:present 50:likely 1:unlikely 0:absent
attr wohnz_zone icon floor
attr wohnz_zone room Status


Andre

laberlaib

Das habe ich auch meist, dass nicht auf 100% geschalten wird sondern auf 99% und dann auf likely
Daher wird mein command auch auf likely ausgeführt.

Vielleicht kannst Du auch einfach die Grenzwerte verschieben und 99 noch auf present setzen.
Aus der ersten Beitrag:
Zitathz_state: Leerzeichen getrennte Liste von Wert:State Paaren -> Wenn Anwesenheitswahrscheinlichkeit >= Wert, dann wird State als state gesetzt (wird beim define wie folgt gesetzt: 100:present 50:likely 1:unlikely 0:absent)

--
Proxmox, Homematic, G-Tags, Zigbee2MQTT, Rhasspy Sprachsteuerung im Aufbau (beta)

andre07

Hast du ein Beispiel wie das bei dir konfiguriert ist.
Wann ist denn eine 100 % Anwesenheit gegeben was ist
im Device einzustellen....

Andre

KernSani

Zitat von: andre07 am 27 Mai 2021, 23:34:03
Hast du ein Beispiel wie das bei dir konfiguriert ist.
Wann ist denn eine 100 % Anwesenheit gegeben was ist
im Device einzustellen....

Andre
Kurz gesagt ist die Idee, dass eine sichere Anwesenheit (100%) nur gegeben ist, wenn in einem geschlossenen Raum Bewegung erkannt wird. Solange der Raum dann nicht geöffnet wird, bleibt die Anwesenheit auf 100%. Wenn ein Raum offen ist, gibt es eine gewisse (sehr kleine, oder - je nach abgelaufener Zeit seit der letzten Bewegung - größere) Unsicherheit ob noch jemand anwesend ist, die durch den "Countdown" dargestellt wird.
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

andre07

Bewegung wird ja erkannt und zone springt nun auf likely. Um eine 100% Anwesenheit zu erreichen bräuchte ich dann noch einen
Türkontakt der geschlossen sein muss.Kann man das auch irgendwie anders lösen manchmal steht ja auch die Tür offen und ich
sitze im Wohnzimmer und schaue TV.

laberlaib

#223
also du musst die Zone schließen und dann muss es Bewegung geben.

Das Geschlossen-Event kann aber alles ein.
D.h. z.B. Messstecker an deinen TV:

wenn
     Verbrauch > 5 Watt (also TV an)
dann
    Zone schließen, Anwesenheit auf 100% setzen


und dann halt Zone wieder auf, wenn Verbrauch < 5 Watt.

Mach ich genau so, da wir ein offenen TV/Leben Bereich haben.
Es gibt eine Zone "Leben", welche sich aus den Zonen "Küche", "Esstisch" und "TV" zusammensetzt.

Kannst dann halt keine Warnung aussprechen, dass die Glotze läuft und keiner zusieht.
--
Proxmox, Homematic, G-Tags, Zigbee2MQTT, Rhasspy Sprachsteuerung im Aufbau (beta)

kotaro

Ich habe einfach meine Harmony genutzt.
Hierfür nutze ich einen Dummy der in geht, wenn die Harmony nicht aus ist..
Und dann nutze ich ob des Dummys als closed und den Off als opened. Somit ist meine Fernsehecke (als eine Homezone die die Zone Wohnzimmer steuert) dann closed, wenn mein Fernseher an ist. Sehr praktisch