Notify / Watchdog - Triggern mit Prüfung von 2 Statussen

Begonnen von siggi85, 01 Februar 2014, 21:57:32

Vorheriges Thema - Nächstes Thema

siggi85

Hallo,

ich habe folgendes vor. Wenn meine Freundin und ich nicht mehr zu Hause sind, soll der MediaPC 15 Minuten später herunter fahren. Man kann bei watchdogs ja nur auf eine Statusänderung prüfen. Der Status der Anwesenheit wird bereits über das PRESENCE Modul erkannt. Der Shut Befehl kann natürlich auch mit einem at Befehl erledigt werden.
Zusätzlich soll der Herunterfahren Befehl natürlich nur ein mal durchgeführt werden (und danach nicht alle 30 Sekunden, wenn das PRESENCE Modul alle 30 Sekunden feststellt, dass keiner da ist und das Notify oder der Watchdog ausgelöst wird). Sobald einer aber wieder nach Hause kommt, soll es natürlich wieder triggern wenn beide das Haus verlassen.
Ich hoffe ich habe mein Ziel klar ausgedrückt. Folgendes habe ich bisher versucht, aber nichts hat bisher so funktioniert wie es soll:
define w_nachhausekommen watchdog meinhandy:absent 00:00:10 meinhandy:present set media shutdown;; #trigger w_nachhausekommen .
attr w_nachhausekommen room Status
define nt_nachhausekommen notify (meinhandy|freundinhandy) {\
if (Value("meinhandy") eq "absent" && Value("freundinhandy") eq "absent"){\
fhem("set media shutdown");;\
}else{\
}\
}
attr nt_nachhausekommen room Status

define w_nachhausekommen watchdog meinhandy:absent 00:00:10 meinhandy:present {\
if (Value("meinhandy") eq "absent" && Value("freundinhandy") eq "absent"){\
fhem("set media shutdown");;\
}else{\
}\
};; trigger w_nachhausekommen .
attr w_nachhausekommen room Status

define nt_nachhausekommenich notify meinhandy {\
if (Value("meinhandy") eq "absent" && Value("freundinhandy") eq "absent"){\
fhem("set media shutdown");;\
}else{\
}\
}
define nt_nachhausekommenich notify freundinhandy {\
if (Value("meinhandy") eq "absent" && Value("freundinhandy") eq "absent"){\
fhem("set media shutdown");;\
}else{\
}\
}
attr nt_nachhausekommen room Status

Puschel74

Hallo,

ZitatIch hoffe ich habe mein Ziel klar ausgedrückt.
Äh  :o fast
Ich bin noch am nochmal durchlesen und überlegen.
Ich les besser nochmal was du geschrieben hast.

ZitatFolgendes habe ich bisher versucht,
Na immerhin schon 3 Codes die aber ??? 2-mal auf 2 Handys triggern und einmal - ich gebs auf.

Du willst wenn --
niemand zuhause ist nach 15 Minuten den MediaPC ausschalten?
Das wars?
Und dafür 3 notify - ach ne 2 notify und 1 watchdog.

Sorry aber kannst du
a) deine Anforderung etwas vereinfachen oder
b) einen Ingenieur beauftragen  :o

Tut mir leid aber ich zerpflück deine Codes nicht und pass sie an deine Anforderung an.

Macht das bitte jemand hier?
Wenn nicht dann bitte
a) klar formulieren was du WILLST
b) klar formulieren woran du scheiterst und
c) Fehlermeldungen aus dem Logfile - so welche vorhanden sind.

Gn8
Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

siggi85

#2
Ok, kein Problem. Hier in Stichpunkten:
- Person 1 und Person 2 sind zu Hause
- Person 1 verlässt das Haus --> nichts passiert
- Person 2 verlässt auch das Haus (niemand mehr da) --> 15 Minuten später fährt Media PC runter


Die verschiedenen Codesegmente sind einzeln zu betrachten und stellen mehrere Lösungsversuche meinerseits dar. Auf die PRESENCE Codezeilen habe ich verzichtet, da die Prüfung ob jemand ("meinhandy" und "freundinhandy") da (present) oder abwesend (absent) ist funktioniert.

In den Codesegmenten sind auch manchmal nur ein 10sec Timer und manchmal gar kein Timer integriert. War halt zum testen, denn es geht mir hauptsächlich um das auslösen einer Aktion, wenn 2 Parameter auf 2 Devices (in diesem Fall PRESENCE Devices) zutreffen.

Alex

Hey,

für ein Codevorschlag fehlt mir leider die Zeit. Aber eine ähliche Idee habe ich schon mal umgesetzt:

Mach doch ein notify auf das Presence Modul. Darin kannst du dann mit if den satutus von dir, deiner Freundin und dem Media Pc abfragen und anschließend ein "define blablabla at +00:15:00 (warum eigentlich mit so einer Verzögerung?) set media off" erzeugen.

Die funktion wird zwar mit jeder Presence- Meldung aufgerufen, aber nur geschaltet wenn ihr weg seid und der Pc an.

justme1968

pack  beide presence in eine structure um zustände zu verknüpfen und häng einen watchdog dahinter um das auslösen 15 minuten zu verzögern.

wenn du nach structure und watchdog (in zusammenhang mit presence) suchst wirst du genau finden was du möchtest.

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

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

siggi85

Danke für die Antworten, unten steht meine Lösung und sie funktioniert genau so wie ich es mir vorgestellt habe. :)
Die Idee mit der Structure von justme1968 war super! Erst wenn beide PRESENCE Devices den State "absent" annehmen, wird auch der Status der Structure auf "absent" gesetzt. Zusätzlich wird durch das Structureattribut "event-on-change-reading state" der Befehl nur bei der ersten Statusänderung auf "absent" durchgeführt.

Die 15 Minuten sind übrigens da, falls ich alleine zu Hause bin und nur schnell den Müll rausbringe oder ähnliches. ;)



define meinhandy PRESENCE lan-ping 192.168.1.5
attr meinhandy anwesend st_anwesenheit
attr meinhandy event-on-change-reading state
attr meinhandy ping_count 2
attr meinhandy room Status
define freundinhandy PRESENCE lan-ping 192.168.1.6
attr freundinhandy anwesend st_anwesenheit
attr freundinhandy event-on-change-reading state
attr freundinhandy ping_count 2
attr freundinhandy room Status
define st_anwesenheit structure anwesend meinhandy freundinhandy
attr st_anwesenheit event-on-change-reading state
attr st_anwesenheit room Status
define w_nachhausekommen watchdog st_anwesenheit:absent 00:15:00 st_anwesenheit:undefined set media shutdown;; trigger w_nachhausekommen .
attr w_nachhausekommen room Status

inesa394

Hallo

Möchte bei mir ein Windows 7 Pc runterfahren
habe die fhem um diese Zeilen ergänzt
define wol_mediapc WOL BC:xx:F4:xx:10:xx 192.168.2.110
attr wol_mediapc shutdownCmd sh "/home/pi/shutdown.sh"
attr wol_mediapc webCmd on:off

shudown.sh mit diesen Befehl
#!/bin/sh

sudo net rpc SHUTDOWN -I 192.168.2.110 -U user%pass

Den Rest den Codes habe ich beibehalten
nur diese Zeile angepaßt
st_anwesenheit:undefined set wol_mediapc shutdown;; trigger w_nachhausekommen .
Es passiert nichts der PC fährt nicht runter was ist hier falsch an meinen code?
set wol_mediapc on funktioniert dagegen
Das shutdown per script klappt dagegen
./shutdown.sh
Gruß Inesa

siggi85

#7
EDIT: Moment mal, versuche mal das, bevor du meinen Text hier drunter probierst:
set wol_mediapc off

Ich habe in meinem Code "shutdown", weil es sich hier um ein XBMC Device handelt. Ein WOL Device wird mit "off" herunter gefahren. Denke hier liegt der Hase im Pfeffer begraben. ;)



Versuch mal:
attr wol_mediapc shutdownCmd "/home/pi/shutdown.sh"

Hier der Auszug aus der Commandref dazu:
attr wol shutdownCmd    "/bin/echo "Teatime" > /dev/console"   # shell command

Ansonsten würde ich erst mal testen ob folgendes Kommando funktioniert
set wol_mediapc shutdown

Falls das alles nicht funktioniert kann ich mir nur noch Berechtigungsprobleme vorstellen. Dann mal am besten folgendes auf der Kommandozeile zum Test eingeben.
chmod 777 /home/pi/shutdown.sh

linuxq

Hallo Siggi85,

wenn ich versuche, nach Deinem Vorbild meine Schaltungen zu machen, bekomme ich beim speichern der config folgende Fehlermeldung:

Zitatmeinhandy: unknown attribute anwesend. Type 'attr meinhandy ?' for a detailed list. freundinhandy: unknown attribute anwesend. Type 'attr freundinhandy ?' for a detailed list.

Woran kann das liegen?

Gruß

LinuxQ

siggi85

Zitat von: linuxq am 15 Mai 2014, 10:22:21
Hallo Siggi85,

wenn ich versuche, nach Deinem Vorbild meine Schaltungen zu machen, bekomme ich beim speichern der config folgende Fehlermeldung:

Woran kann das liegen?

Gruß

LinuxQ

Versuche mal diese Zeilen weg zu lassen. Ich glaube die wird beim Anlegen der Structure auf den zugehörigen Devices generiert.
Falls das nicht funktioniert, melde dich noch mal. Dann gucke ich heute abend zu Hause und kopiere hier noch mal die aktuellen Zeilen aus meiner Config rein. :)

Simon74

#10
Sehr schönes Beispiel, das ich nachgebaut habe und gut funktioniert.
define Zuhause structure anwesend Bluetooth_Simon Bluetooth_Freundin
define Bluetooth_Simon PRESENCE local-bluetooth xx:9B:xx:97:xx:D9 10 60
attr Bluetooth_Simon anwesend Zuhause
attr Bluetooth_Simon event-on-change-reading state
attr Bluetooth_Simon room Anwesenheit

define Bluetooth_Freundin PRESENCE local-bluetooth xx:26:xx:5B:xx:64 10 60
attr Bluetooth_Freundin anwesend Zuhause
attr Bluetooth_Freundin event-on-change-reading state
attr Bluetooth_Freundin room Anwesenheit

attr Zuhause event-on-change-reading state
attr Zuhause room Anwesenheit
attr Zuhause alias Person(en) anwesend
attr Zuhause group Anwesenheitsstatus
define Nicht_Zuhause watchdog Zuhause:absent 00:15:00 Zuhause:undefined set group=Licht off;; trigger Nicht_Zuhause .
attr Nicht_Zuhause room Anwesenheit


Vielleicht kann mir jemand jetzt einen kleinen Anstoss geben, ich möchte folgendes dazubauen:
Auf Basis dieses An- und Abwesenheits Status (Structure) würde ich gerne noch "Mail versenden WHEN Absent AND Bewegungsmelder:Motion".

siggi85

Zitat von: Simon74 am 22 Juli 2014, 11:59:27
Vielleicht kann mir jemand jetzt einen kleinen Anstoss geben, ich möchte folgendes dazubauen:
Auf Basis dieses An- und Abwesenheits Status (Structure) würde ich gerne noch "Mail versenden WHEN Absent AND Bewegungsmelder:Motion".

Ich würde ein notify bauen, welches bei "Bewegungsmelder:Motion" triggert. Inhalt des Notify:
IF Absent THEN Mail versenden.

Der einzige "Nachteil", es triggert halt bei jedem Mal wenn der Bewegungsmelder was erkennt. Es wird bei PRESENT zwar keine Mail verschickt, aber wenn jemand eine performanceschonenderen Lösungsansatz hat, immer her damit. :)

chris1284

ein notify kann man deaktivieren. es ist möglich das von dir genannte notify bei present einfach zu disablen und bei absend wieder zu aktivieren.

siggi85

Zitat von: chris1284 am 22 Juli 2014, 17:51:42
ein notify kann man deaktivieren. es ist möglich das von dir genannte notify bei present einfach zu disablen und bei absend wieder zu aktivieren.

Einfache und perfekte Lösung. Danke dafür, diesen Kniff werde ich sicher noch mal benötigen. :)

AK-868

Ein Beispielschnipsel für ein Disable vom Notify

fhem ("attr notify_motion_jl disable [b]1[/b]");;\


Enable

fhem ("attr notify_motion_jl disable [b]0[/b]");;\
Hardware FHEM:
Neue Fritzbox 7390 keine Labor von AVM
Konfigurationsadapter Lan
Funk-Schließerkontaktschnittstellen
Funk-Fenster/Türkontakt
Funk-Schaltaktoren UP ein und zweifach
Funk-Jalousieaktoren
Funk-Rauchmelder