Licht Anwesenheitssimulation durch "erlerntes" Muster aus der Vergangenheit

Begonnen von enno, 25 Januar 2019, 20:29:37

Vorheriges Thema - Nächstes Thema

enno

Ich versuche mich gerade an einer "Anwesenheitssimulation". Einstieg ist das Wiki: https://wiki.fhem.de/wiki/Anwesenheitssimulation.

Empfohlen wird https://wiki.fhem.de/wiki/RandomTimer. Ich würde aber FHEM gerne die Auswahl selbst überlassen. Sprich "Statistik". Ich stelle mir vor, FHEM speichert das tägliche Licht an und ausschalten der Bewohner. Bei Abwesenheit greift FHEM auf diese gespeicherten Muster zurück und schaltet einen beliebigen gespeicherten Tag durch.

Hat so etwas einer von Euch schon mal umgesetzt oder eine Idee wie man das elegant umsetzten könnte?

Gruss
  Enno
Einfacher FHEM Anwender auf Intel®NUC

justme1968

irgendwo gibt es einen thread mit einem konzept wie man das mit einer lightscene umsetzen kann.

- lightscene mit allen lampen die beteiligt sein sollen
- per notify auf änderungen in den lampen neue szene mit der aktuellen zeit als namen speichern
- beim abspielen anhand der namen der gespeicherten szenen  das ganze an ungefähr den ursprünglichen zeiten wieder herstellen

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Prof. Dr. Peter Henning

Ich starte im Mai ein neues Projekt zur Mustererkennung im SmartHome mittels neuronaler Netze.

LG

pah


enno

@justme1968: Danke für das Stichwort. Habe einiges mit lightscene gefunden. Waren aber alles Lösungen bei denen ich Muster vorgeben muss. Das wollte ich aber auch automatisch haben.

@pah: Das klingt gut. Melde dich wenn es was zu testen oder unterstützen gibt.

Gruss
  Enno
Einfacher FHEM Anwender auf Intel®NUC

justme1968

warum vorgeben?

du speicherst zu zeitpunkt x den aktuellen zustand der gerade vorhanden ist ab.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

enno

Zitat von: justme1968 am 28 Januar 2019, 17:36:50
du speicherst zu zeitpunkt x den aktuellen zustand der gerade vorhanden ist ab.
Das ist aber noch nicht ganz das was ich vorhabe. Ich hatte eher daran gedacht, dass in der Simulation ein Bewegungsmuster mit berücksichtigt wird. Bsp.:

Ich komme im Keller ins Haus:        - Licht im Keller geht an
Ich gehen ins Wohnzimmer:            - Licht im Wohnzimmer geht an, im Keller aus
Ich habe im Keller was vergessen:  -Licht im Keller geht noch mal an und wieder aus
Ich gehe zur Toilette:                       - Licht im WC geht an und nach X-Minuten wieder aus
usw.

Wenn ich das mit lightscene simulieren will, wird das  recht aufwendig... die Schritte diese Muster zu speichern wollte ich dem Rechner überlassen. Der Ansatz von pah geht vermutlich eher in die Richtung. Smart oder KI oder selbst lernenden.

Gruss
  Enno
Einfacher FHEM Anwender auf Intel®NUC

Prof. Dr. Peter Henning

Einer meiner Doktoranden hat gerade seine Arbeit über spatio-temporale Datenbanken die Ähnlichkeitsanalyse von Trajektorien abgechlossen. Das wird die Basis eines solchen Systems bilden - und ich fürchte, dass diese Forschung gezeigt hat, dass es mit weniger Aufwand nicht geht. Denn die zeitliche Dimension ist dabei wesentlich.

LG

pah

swsmily

Zitat von: enno am 28 Januar 2019, 20:17:48
Das ist aber noch nicht ganz das was ich vorhabe. Ich hatte eher daran gedacht, dass in der Simulation ein Bewegungsmuster mit berücksichtigt wird. Bsp.:

Ich komme im Keller ins Haus:        - Licht im Keller geht an
Ich gehen ins Wohnzimmer:            - Licht im Wohnzimmer geht an, im Keller aus
Ich habe im Keller was vergessen:  -Licht im Keller geht noch mal an und wieder aus
Ich gehe zur Toilette:                       - Licht im WC geht an und nach X-Minuten wieder aus
usw.

Wenn ich das mit lightscene simulieren will, wird das  recht aufwendig... die Schritte diese Muster zu speichern wollte ich dem Rechner überlassen. Der Ansatz von pah geht vermutlich eher in die Richtung. Smart oder KI oder selbst lernenden.

Gruss
  Enno

Den gleichen Gedanken hatte ich auch schon mal. Meine Überlegung war, dass das Logfile der Bewegungsmelder von vor z.b. 7 Tagen ausgelesen wird und entsprechend wiederholt wird.
Nur leider fehlt es mir dabei bereits am Ansatz, wie ich ein Logfile auswerten und wieder verarbeiten könnte.

enno

@swsmily

Meine Idee war das mit einem DOIF oder Notify zu machen. Immer wenn ein Licht an oder aus, das als Reading mit Tag und Zeitangabe in DbLog speichern. Dann das ganze bei Bedarf abrufen und in der gleichen Reihenfolge "durchschalten".  Also gleiche Idee wie du hast nur nicht mit Logfile sondern SQL. Da ich aber Maschinenbauer und kein Informatiker bin, dauert das etwas. Die Daten in die Datenbank rein, kein Problem, das zurück lesen wird etwas komplizierter. Habe ich aber auch schon mal irgendwo gelesen, nur noch nicht verstanden ;)

Gruss
  Enno
Einfacher FHEM Anwender auf Intel®NUC

justme1968

jetzt verwirrst du mich

nur noch mal so als hinweis: speichern und abrufen ist genau das was der LightScene vorschlag von oben macht.

kein grund für irgendwelche db klimmzüge sondern ganz einfacher einstieg um zu schauen ob du deine speicher und abruf logik hin bekommst. später auf db zu gehen geht dann immer noch wenn es aus irgend einem grund nötig sein sollte.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

enno

Zitat von: justme1968 am 30 Januar 2019, 09:32:42
nur noch mal so als hinweis: speichern und abrufen ist genau das was der LightScene vorschlag von oben macht.
@justme1968
Das Wochenende wird lang (Schulferien), ich bin allein zu Haus da werde ich mal mit den Möglichkeiten "rumspielen" ohne strafende Blicke der Mitbewohner. Ich werde berichten. Zur Zeit lese ich die verschiedenen Ansätze, die ich gefunden habe. LighScene, Randomtimer, DOIF,

Alles noch begrenzt Smart aber vermutlich eine Übergangslösung bis zum "Projekt zur Mustererkennung im SmartHome mittels neuronaler Netze".

Gruss
  Enno
Einfacher FHEM Anwender auf Intel®NUC

enno

Zitat von: swsmily am 29 Januar 2019, 22:43:35
Den gleichen Gedanken hatte ich auch schon mal. Meine Überlegung war, dass das Logfile der Bewegungsmelder von vor z.b. 7 Tagen ausgelesen wird und entsprechend wiederholt wird.
Nur leider fehlt es mir dabei bereits am Ansatz, wie ich ein Logfile auswerten und wieder verarbeiten könnte.

Ich habe jetzt eine LightScene definiert, in der alle Lampen enthalten sind, die ich für die Simulation nutzen möchte.
Attributes:
   event-on-change-reading state
   followDevices 1
   lightSceneRestoreOnlyIfChanged 1
   showDeviceCurrentState 1


Mit einem DOIF erstelle ich bei jeder Änderung eine neue Scene gleichen Formats: 2019-01-30-Mittwoch-19-55-58

(["^LichtScene$:.state"]) (set LichtScene save {(strftime('%Y-%m-%d_%A_%H:%M:%S', localtime))} )

Soweit das Erstellen des Musters. Jetzt muss ich mir nur noch überlegen wie ich das ganze zum Steuern nutze....
Einfacher FHEM Anwender auf Intel®NUC

obelix221

Hallo Enno,

ist Dein Projekt noch am Laufen? Suche auch nach einem solchen Ansatz.

VG
obelix
RPi3 als FHEM-Server, 868 MHz CUL, 433 MHz Transmitter, Homematic Aktoren und Sensoren, Yamaha AVR, Logitech Harmony, Fritzbox, Logitech SB, 433 MHz Steckdosen, HUE, EnOcean

enno

Moin obelix,

leider etwas ins stocken geraten. Anlegen der "Muster" funktioniert soweit (siehe oben), es fehlt eigentlich nur das Aufrufen der gespeicherten Muster, da bin ich aber an die Grenzen meiner Programmierfähigkeiten gekommen.

Vielleicht gibt es bei pah zum Thema "KI" ja schon etwas neues.

Gruss
  Enno
Einfacher FHEM Anwender auf Intel®NUC

Prof. Dr. Peter Henning

Ja, gibt es. Ergebnis: Neuronale Netze liefern in vielen Fällen nur Unsinn, regelbasierte Systeme sind besser geeignet.

Beispiel für eine Anwesenheitssimulation: Das Netz hat nicht gelernt, sich wie ein Mensch zu benehmen. Sondern nur, dass mit einer Wahrscheinlichkeit von 98% im nächsten Zeitintervall kein Schaltvorgang des Lichtes erfolgt ...

LG

pah

Spezialtrick

Zitat von: enno am 27 Dezember 2019, 09:13:57
Moin obelix,

leider etwas ins stocken geraten. Anlegen der "Muster" funktioniert soweit (siehe oben), es fehlt eigentlich nur das Aufrufen der gespeicherten Muster, da bin ich aber an die Grenzen meiner Programmierfähigkeiten gekommen.

Vielleicht gibt es bei pah zum Thema "KI" ja schon etwas neues.

Gruss
  Enno

Hallo Enno,

ich wollte nur mal fragen, ob du mit dem Projekt weitergekommen bist oder ob du dir eine andere Lösung überlegt hast?
FHEM - Debmatic - Zigbee2MQTT - Homekit

enno

Moin Spezialtrick,

ich hatte nach einem der letzten Updates Probleme mit plötzlich Licht an aus in Kombination mit HM und DOIF. Um den Fehler zu finden habe ich alle Lightscene gelöscht. Nun läuft alles wieder Stabil aber die Zufallssteuerung läuft zur Zeit nur mit ein paar Randomtimer.

Dank Corona ist der Druck für eine Lösung nicht so groß, da fast immer irgendjemand anwesend ist.

Bin also nicht weitergekommen...

Gruss
  Enno
Einfacher FHEM Anwender auf Intel®NUC

Der_Tom

Guten Morgen Enno,


als ich begonnen habe MSwitch zu schreiben war genau das die Intention, genau in der von dir beschriebenen Art.

das Modul bringt von daher alle benötigten Voraussetzungen mit  dieses in einem Gerät zu realisieren. Dann hat sich das Modul aber in eine andere Richtung entwickelt.

bei Interesse könnten wir ja ggf zusammen versuchen es umzusetzen.

mit anderen Modulen kann ich mich mangels Kenntnissen aber leider nicht einbringen.

gruss Thomas

binford6000

Zitat von: enno am 30 Januar 2019, 21:57:30
Ich habe jetzt eine LightScene definiert, in der alle Lampen enthalten sind, die ich für die Simulation nutzen möchte.
Attributes:
   event-on-change-reading state
   followDevices 1
   lightSceneRestoreOnlyIfChanged 1
   showDeviceCurrentState 1


Mit einem DOIF erstelle ich bei jeder Änderung eine neue Scene gleichen Formats: 2019-01-30-Mittwoch-19-55-58

(["^LichtScene$:.state"]) (set LichtScene save {(strftime('%Y-%m-%d_%A_%H:%M:%S', localtime))} )

Soweit das Erstellen des Musters. Jetzt muss ich mir nur noch überlegen wie ich das ganze zum Steuern nutze....

Hallo Zusammen,
ich lese schon seit dem ersten Post mit und habe momentan auch was mit RandomTimer am Start.
Jetzt habe ich aber mal die Zeit gefunden, den LightScene-Ansatz von enno für mich gangbar zu machen:


  • LightScene wie oben erwähnt erstellt
  • Anstatt einem notify zwei at definiert (save und set)
  • Alle 5 Minuten wird eine neue LightScene geschrieben.
  • Das save at wird bei Anwesenheit und ss aktiviert
  • save at wird während ROOMMATEs "asleep" pausiert
  • save at wird während ROOMMATEs "absent" und bei sr deaktiviert
  • Das set at wird aktiviert wenn alle ROOMATEs "gone" sind und zwischen ss und sr
  • Das set at wird deaktiviert wenn ein ROOMATEs "present" ist
  • Die ganze Steuerung geschieht über das Modul HOMEMODE, da hier alle Infos zentral vorhanden sind

Hier das save at:
defmod simulation_save.at at +*00:05:00 set simulation.scene save {(strftime('%A_%H:%M', localtime))}
attr simulation_save.at alignTime 00:00:00


Und hier das set at:
defmod simulation_set.at at +*00:05:00 set simulation.scene scene {(strftime('%A_%H:%M', localtime))}
attr simulation_set.at alignTime 00:00:00


Vorteile:

  • Einfach umzusetzen
  • Die Szenen werden übers Jahr an sr und ss angepasst
Nachteile:

  • Nicht wirklich der oben gewählte Ansatz eines "Log-Files"
  • Falls keine passende Szene vorhanden Fehler im Log:
    2020.11.20 09:05:00 3:  simulation_set.at: no such scene: Freitag_09:05
    Mit verbose=2 fürs set-at allerdings zu verstecken...
  • Overhead durch 5 minütiges Szenen-Erstellen und -Setzen (m.M.n. zu vernachlässigen)

Feedback und Verbesserungsvorschläge sind sehr erwünscht!  :)

VG Sebastian

dieter114

Hallo Der-Tom,

ich verwende dein Modul um eine Anzeige Mehrspaltig mit aktuellen Daten zu "beladen"
wenn sie aktiviert wird. (Zustände, Steuerungen und Temperaturen einer Poolsteuerung)
Wenn die Kriterien eindeutig sind, kann mit deinem Modul eine Menge nacheinander abgearbeitet werden.
Es müsste doch jetzt nur noch ein zusätliches Kriterium (Attribut?) wie
Aktion 1 ausführen (ja/nein) Aktion 2... usw. dort eingefügt werden.
Und das abhängig von weiteren Faktoren - Denkansatz:

- Alle Aktionen starten erst wenn dunkel wird (Twilight) oder doch früher ??
- Lichter und Rolläden in kleine Gruppen einteilen und diese Gruppen
  (Random) starten und auch noch weiter mischen ??

Es geht doch letztendlich um Einbruchschutz.
Sobald dort igendetwas "Regelmäßig" abläuft, ist die Wirkung dahin.
Also möglichst viel Durcheinander aber nichts Unsinniges oder Regelmäßiges.

Grüße WDS
RPi II+III+IV,OWX,div.1W Module,HM Zisterne,div. CUL, sduino MAPLEMINI, div ESPEasy, div Tasmota, MQTT2Server,WU-Upload,TabletUI, Indego,Poolsteuerung mit fhem

Pax87

Hallo,
Aus reinem Interesse: Wie werden denn die Daten gespeichert, bzw wie sieht es mit Datenschutz bei solchen Vorhaben aus, an wen werden diese übermittelt ? LG