Anwesenheit > Homestatus > Manuelle Änderung

Begonnen von accessburn, 20 Oktober 2016, 11:06:37

Vorheriges Thema - Nächstes Thema

accessburn

huhu,
ich möchte meinen Homestatus mit PebbleBees steuern nach relativ simplen Prinzip:

# --- PebbleBee Anwesenheit
define MeinGtAG PRESENCE lan-bluetooth XX:XX:XX... 127.0.0.1:5333 20 120
attr MeinGtAG group PebbleBee
attr MeinGtAG room Wohnzimmer
define pebblebee_presence DOIF ([MeinGtAG:?presence] eq "present") (set Homestatus Zuhause) DOELSE (set Homestatus LangeWeg)


Die Theorie sagt das der Homestatus gesetzt wird nach dem Bee. Wenn ich den Homestatus aber selbst ändere über FTUI z.b., ändert sich der Status dann unmittelbar danach zurück weil das DOIF den Status permanent kontrolliert?

Hat vielleicht jemand eine etwas bessere Lösung dazu oder einfach nur ausgereifter?

MFG Toby
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

DeeSPe

Ich steuere über den GTag mein jeweiliges ROOMMATE/GUEST Device.
Der damit folgende Status des RESIDENTS Devices wird dann für ein notify (oder DOIF) benutzt um den Homestatus entsprechend anzupassen.

Gruß
Dan

EDIT: Der Homestatus wird bei mir überhaupt nicht manuell verändert sondern nur über den Status des RESIDENTS Devices.
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

accessburn

Zitat von: DeeSPe am 20 Oktober 2016, 11:13:30
EDIT: Der Homestatus wird bei mir überhaupt nicht manuell verändert sondern nur über den Status des RESIDENTS Devices.

Das möchte ich aber weiterhin kontrollieren können da der Bee ja nur "da" und "nicht da" angeben kann.
Ich selbst habe aber zwei Staten mehr zur Auswahl.
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

DeeSPe

Zitat von: accessburn am 20 Oktober 2016, 11:20:12
Das möchte ich aber weiterhin kontrollieren können da der Bee ja nur "da" und "nicht da" angeben kann.
Ich selbst habe aber zwei Staten mehr zur Auswahl.

Das habe ich auch!
Wonach richten sich denn die beiden anderen Status?

Ich habe bspw. als Homestatus morning,day,afternoon,evening,night,asleep,absent,gone und lasse diese alle automatisch über das RESIDENTS Device schalten.
Wenn der Status von RESIDENTS auf home geht, dann wird der Uhzeit entsprechend der Homestatus auf morning,day,afternoon,evening,night gesetzt.
Wenn der Status von RESIDENTS auf asleep geht, dann geht auch der Homestatus auf asleep, bei absent und gone auf jeweils absent oder gone.
Wenn der Status von RESIDENTS auf awake geht, dann wird immer der Homestatus auf morning gestellt. Nach 5 Minuten wechselt dann der Status von RESIDENTS auf home und somit wird wieder der Homestatus der Uhrzeit entsprechend eingestellt.
Per stündlichem at setzte ich den Homestatus zu jeder vollen Stunde der Uhrzeit entsprechend wenn RESIDENTS presence auf present steht.

Ich hoffe das hilft Dir weiter.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

accessburn

Ich habe das einfach über die entsprechenden notifys geregelt:

# --- HomeStatus
define HomeStatus dummy
attr HomeStatus eventMap Zuhause Schlafen KurzWeg LangeWeg
attr HomeStatus group Heizung
attr HomeStatus icon status_automatic
attr HomeStatus room Wohnzimmer
attr HomeStatus webCmd Zuhause:Schlafen:KurzWeg:LangeWeg

define Schlafen notify HomeStatus.Schlafen { ... usw


Ich glaube nicht das mein Wissensstand das ändern kann :-D
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

DeeSPe

Zitat von: accessburn am 20 Oktober 2016, 11:39:49
Ich glaube nicht das mein Wissensstand das ändern kann :-D

Ich gebe zu: Mein Homestatus ist schon recht komplex geworden.

Aber:
Dein Wissensstand kannst Du selbst beeinflussen... 8)

Bei Interesse kann ich gerne ein paar meiner Codeschnipsel zur Verfügung stellen.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

accessburn

Das wäre sehr nett.

Blättere aktuell in http://www.reimann2.de/index.php/hausautomation/98-14-anwesenheit und schaue mal wie das so funktioniert.
Ich bräuchte nur eine Person quasi. Aber ich bin unsicher ob ich das alles geregelt bekomme. Eigentlich eine Aktion für den Sommer, denn wenn ich die Heizungsautomatik damit lahm lege bekomm ich daheim wieder eins von Frauchen auf die Nase  ;D
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

DeeSPe

Na dann mal Stück für Stück!

Hier ist erst einmal die Definition meines Homestatus:
define HouseMode dummy
attr HouseMode alias Hausstatus
attr HouseMode devStateIcon mode.night:weather_moon_phases_2@purple mode.morning:weather_sunrise@gold mode.day:weather_sun@yellow mode.afternoon:weather_summer@orange mode.evening:weather_sunset@darkorange mode.absent:user_away@orange mode.gone:user_ext_away@grey mode.dnd:control_standby@lightgreen mode.asleep:scene_sleeping_alternat@purple
attr HouseMode event-on-change-reading mode,state
attr HouseMode icon floor
attr HouseMode setList mode:morning,day,afternoon,evening,night,asleep,absent,gone,dnd
attr HouseMode webCmd mode


Hier das notify um die entsprechenden Schaltaktionen beim Ändern des Homestatus auszuführen:
define n_HouseMode notify HouseMode.* {HouseMode($EVTPART1)}

Und der Code für die 99_myUtils.pm:
sub HouseMode($)
{
  my ($mode) = @_;
  if ($mode eq "asleep")
  {
    speak("|Bell-sound-magical| Die Wohnung befindet sich nun im Nachtmodus! Gute Nacht!");
    # Alarmanlage Nachtmodus
    fhem "set AA:FILTER=state!=armnight armnight";
    # Steckdosen die Nachts nicht benötigt werden aus
    fhem "set w_nn_Steckdosen [FILTER=state!=off] off";
    # Sonos Volume runterfahren in 1 Minute
    fhem "defmod -temporary atTmp_Sonos_Flur_vol at +00:01:00 set Sonos_Flur:FILTER=transportState!=STOPPED Volume 0 1";
    # Sonos stoppen in 2 Minuten
    fhem "defmod -temporary atTmp_Sonos_Flur_off at +00:02:00 set Sonos_Flur:FILTER=transportState!=STOPPED Stop";
    # Im Winter Heizungen auf Nacht
    fhem "set Heizungen controlMode night"
      if (Value("Sommer") eq "off");
  }
  elsif ($mode =~ /^(night|morning|day|afternoon|evening)$/)
  {
    # Alarmanlage aus
    fhem "set AA:FILTER=state!=disarm disarm";
    # Alle Steckdosen an (structure)
    fhem "set w_Steckdosen [FILTER=state!=on] on";
    # Im Winter Heizungen auf Auto (templist)
    fhem "set Heizungen controlMode auto"
      if (Value("Sommer") eq "off");
    # Wenn morning und RESIDENTS awoken
    if ($1 eq "morning" && Value("rgr_Residents") eq "awoken")
    {
      my $name = ReadingsVal("rgr_Residents","lastActivityByDev","rr_Daniel");
      my $alias = AttrVal($name,"alias","Du");
      my $vol = AutoVolume();
      # Morgengruß
      fhem "sleep 5; {speak(\"|Bell-sound-magical| Guten Morgen $alias\")}";
      # Radio ein
      fhem "sleep 15; set Sonos_Flur:FILTER=transportState!=PLAYING:FILTER=Volume!=1 Volume 1; sleep 1; set Sonos_Flur:FILTER=transportState!=PLAYING StartFavourite radioeins; sleep 2; set Sonos_Flur:FILTER=transportState=PLAYING Volume $vol 1";
      # Wetterdaten und Wettervorhersage ansagen
      fhem "defmod -temporary atTmp_".$name."_wetter at +00:01:00 { speakWetterDaten(1);; speakWetterVorhersage(1) }";
      # Setze in 5 min ROOMMATE auf home wenn auf awoken
      fhem "defmod -temporary atTmp_".$name."_awoken_home at +00:05:00 set $name:FILTER=state=awoken home";
    }
  }
  elsif ($mode eq "absent")
  {
    # Im Winter Heizungen auf Nacht (bis zum nächsten Schaltzeitpunkt der templist)
    fhem "set Heizungen controlMode night"
      if (Value("Sommer") eq "off");
    # Harmony alles aus
    fhem "set HarmonyHub activity PowerOff";
    # Sonos aus
    fhem "set Sonos stopAll";
    # Wohnung aus (structure)
    fhem "sleep 3; set Wohnung off";
    # Alarmanlage auf AWAY
    fhem "sleep 5; set AA:FILTER=state!=armaway armaway";
  }
  elsif ($mode eq "gone")
  {
    # Im Winter Heizungen auf aus
    fhem "set Heizungen desired-temp off"
      if (Value("Sommer") eq "off");
  }
  elsif ($mode eq "dnd")
  {
    # Alarmanlage komplett aus
    fhem "set AA:FILTER=state!=disarm disarm";
  }
}


Hier sind noch ein paar andere Custom Funktionen verbaut! Z.B. speak() und auch AutoVolume().

Damit kannst Du evtl. schon mal spielen!
Heute Nachmittag kann ich mehr Code zur Verfügung stellen für die PRESENCE Geschichte.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

CoolTux

Beim presence Device bitte ein event-on-change-reading als Attribut einfügen. Dann klappt auch das Vorhaben aus dem Anfangspost
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

accessburn

Ich hab das jetzt mal nur einfach im Notepad zusammengebastelt.
Traue mich nicht es einzufügen :-D

Solltes es relevant für dieses Beispiel sein, ich nutze kein Homeatic!

Mögen die Herren Spezialisten mal drüber schauen bitte:
define Bewohner RESIDENTS
  attr Bewohner alias Residents
  attr Bewohner devStateIcon .*home:HOME_Status.home:absent .*absent:HOME_Status.absent:home .*gone:HOME_Status.gone.png:home .*none:HOME_Status.3 .*gotosleep:HOME_Status.gotosleep:asleep .*asleep:HOME_Status.asleep:awoken .*awoken:HOME_Status.awoken:home .*:HOME_Status.1:home
  attr Bewohner event-on-change-reading state
  attr Bewohner fp_uj36eg 164,453,0,
  attr Bewohner group Home State
  attr Bewohner icon control_building_filled
  attr Bewohner room Residents
  attr Bewohner verbose 0
  attr Bewohner webCmd state 

define Tobias ROOMMATE Bewohner
  attr Tobias alias Status
  attr Tobias fp_uj36wecker 190,750,1,Tobias
  attr Tobias group Tobias
  attr Tobias icon people_sensor
  attr Tobias room Residents
  attr Tobias rr_autoGoneAfter 1
  attr Tobias rr_realname alias
  attr Tobias sortby 1
  attr Tobias verbose 0
  attr Tobias webCmd state

define MeinGtAG PRESENCE lan-bluetooth XX.XX.XX... 127.0.0.1:5333 20 120
  attr MeinGtAG group Tobias
  attr MeinGtAG icon it_wireless_dcf77
  attr MeinGtAG room Residents

define Tobias_MeinGtAG notify MeinGtAG {\
  if (Value("MeinGtAG") eq "present") {\
    fhem ("set Tobias state home")\
  } elsif ((Value("MeinGtAG") eq "absent") && (ReadingsVal("Tobias", "state", 0) ne "gone")) {\
    fhem ("set Tobias state absent")\
  }\
}
attr Tobias_MeinGtAG room Residents



Was mir fehlt ist, wie lege ich fest was die einzelnen Staten auslösen?
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

Loredo

Ich habe gerade keine Zeit, aber ich glaube ich muss da nochmal ein wenig klarstellen, dass RESIDENTS auch nur das ist und der Homestatus was ganz anderes. Dafür war mal ein eigenes Modul "HOMESTATE" vorgesehen. Seit es DOIF gebt macht ein Modul nicht mehr viel Sinn und ich arbeite an ein paar Templates zusammen mit einem Dummy für die Darstellung des Homestate.

Erkläre ich nochmal genauer, aber generell solltet ihr Residents nicht mit einem Homestate verwurschteln :-)


Gruß

Julian
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

DeeSPe

Zitat von: Loredo am 20 Oktober 2016, 12:53:27
Ich habe gerade keine Zeit, aber ich glaube ich muss da nochmal ein wenig klarstellen, dass RESIDENTS auch nur das ist und der Homestatus was ganz anderes.

Das ist schon klar!
Aber Anhand des RESIDENTS Status kann man doch den HomeState ableiten! Das ist das was ich mache.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Loredo

Nee kann/sollte man eben nicht. Das Haus hat auch einen eigenen Status unabhängig davon ob wer anwesend ist oder nicht.


Gruß

Julian
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

accessburn

Okay, das verstehe ich nicht. Wenn ich mit meiner Anwesenheit diesen Homestatus nicht verwurschteln soll, wozu ist es dann gut?  ;D

Mit einigen Gegenchecks soll z.b. die Heizung hochfahren wenn ich daheim bin und runter wenn nicht. Da ich das aber auch manuell beeinflussen möchte nahm ich an das dies die einzige Möglichkeit ist.

Jetzt steh ich vor einem Chaos  :D
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

Loredo

Ich hab grad keine Zeit das auszuführen, mache ich später.


Gruß

Julian
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER