FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Schneidi1985 am 22 Februar 2017, 19:48:15

Titel: Anwesendheitserkennung
Beitrag von: Schneidi1985 am 22 Februar 2017, 19:48:15
Moin liebe Gemeinde,

ich bin neu im Thema PI -Fhem und natürlich auch im Forum. Deshalb wollte ich mich erst einmal vorstellen : Denis 32 Jahr jung und Technik interessiert :)
Die Pi mit Fhem läuft seit gestern mit dem Osram Gateway.

Nun habe ich mich bereits schon durch einige Anleitungen durchgekämpft ... es macht von mal zu mal mehr Spaß .... nur leider bin ich gerade an einen Punkt wo gerade nichts mehr geht.

Hier einmal was ich vorhabe: Ich möchte gerne eine Present abfrage über W-Lan , present ... Flurlicht an .... absent .... Flurlicht aus

Dies habe ich wie Folgt gemacht:



define handy_Denis PRESENCE lan-ping 192.168.x.x
attr handy_Denis room Anwesenheit Denis

define Anwesenheit_Denis STRUCTURE presence handy_Denis
attr Anwesenheit_Denis clientstate_behavior relative
attr Anwesenheit_Denis clientstate_priority present absent
attr Anwesenheit_Denis room Anwesenheit Denis



define PowerAll STRUCTURE room LIGHTIFYAFC2060000261884
attr PowerAll room Anwesenheit Denis

define di_PowerAll DOIF ([Anwesenheit] eq "absent") (set PowerAll off) DOELSE (set PowerAll on)

Das Funktioniert auch einwandfrei. Nun sind wir aber kein Single Haushalt.
Jetzt dachte ich mir ich mache bis PowerAll alles mit einen zweiten Gerät .... das Funktioniert auch
Nun dachte ich mir in meinen jungendlichen Leichtsinn

define di_PowerAll DOIF ([Anwesenheit_Denis] eq "absent") (set PowerAll off) ([Anwesenheit_Antje] eq "absent") (set PowerAll off)DOELSE (set PowerAll on)
da Funktioniert leider nur wenn mein Gerät aus ist geht das Licht aus .... an geht aber leider gar nichts.

Hauptsächlich geht es mir um das einschalten des Flurlichts wenn die Geräte sich ins W-Lan anmelden. Ausmachen wäre auch toll wird aber schwierig sein wenn einer geht und der andere aber noch im Haus ist.

Könnte mir da vielleicht jemand auf die Sprünge helfen wie man das eventuell realisieren könnte ?

Einen Schönen abend euch noch
Titel: Antw:Anwesendheitserkennung
Beitrag von: KernSani am 22 Februar 2017, 20:27:50
Willkommen Denis,

Zuersteinmal ein Tipp: coding wird lesbarer, wenn es in code tags gepostet wird (# Button im Editor).

Zu deinem Problem: Ich vermisse das DOELSEIF in deinem DOIF. Hilft dir das auf die Sprünge?
Titel: Antw:Anwesendheitserkennung
Beitrag von: chrisko am 22 Februar 2017, 20:34:30
Also, ich bin selbst auch ein Anfänger, deshalb kann ich dir so auf Anhieb, ohne zu suchen keine richtige Syntax bieten.
Am einfachsten ist es aber meiner Meinung nach, wenn du einen dummy mit dem Ergebnis einer logischen Verknüpfung fütterst und dann diesen dummy zum schalten benutzt.
Verknüpfung in etwa so: WENN Dennis = absent UND Antje = absent DANN dummy = absent ANSONSTEN dummy = present


Viele Grüße,
Chris
Titel: Antw:Anwesendheitserkennung
Beitrag von: Schneidi1985 am 22 Februar 2017, 20:35:48
Hi KernSani,

danke für deinen Tipp mit dem coding ... werde ich absofort befolgen.
Das DOELSEIF sagt mir nix aber ich belese mich gerade .... dafür das ich vor 3 Tagen noch nicht einmal wusste was ein Pi ist ... kann ich mit vielen begriffen leider noch nichts Anfangen
Titel: Antw:Anwesendheitserkennung
Beitrag von: Brice am 22 Februar 2017, 21:05:53
Du bist schon auf dem richtigen Weg. Allerdings noch nicht ganz.

Definiere ein zweites Mobiltelefon, z.B. -> hast du ja schon

define handy_Antje PRESENCE lan-ping 192.168.x.x 10 60

Der Zusatz 10 60 bedeutet, dass im Abwesenheitsstatus alle 10 sek geprüft wird, ob das Telefon anwesend ist, im Anwesenheitsfall alle 60 sek

Das nimmst du dann in deine Structure, die würde ich aber umbenennen z.B.

define Alle_Anwesend STRUCTURE presence handy_Denis handy_Antje
attr Alle_Anwesend clientstate_behavior relative
attr Alle_Anwesend clientstate_priority present absent
attr Alle_Anwesend room Anwesenheit Denis


wenn du es noch hübsch machen möchtest

attr Alle_Anwesend devStateIcon absent:user_away@red present:user_available@green
oder
attr Alle_Anwesend devStateIcon present:status_available@00CC33 absent:status_away_1@CC0033

Jetzt hast du zwei Zustände: wenn mindestens ein Mobiltelefon anwesend ist -> Status present, wenn kein Mobiltelefon anwesend ist -> Status absent

Damit kannst du dir dann notify, DOIFs oder was immer bauen. Also z.B. wenn Status Alle_Anwesend = absent, schalte Devices aus etc.

Jetzt kommt es darauf an, wie schnell dein Router erkennt, wann sich ein Mobiltelefon zurückmeldet. Ist nicht immer ganz performant.

Edit: überarbeitet
Titel: Antw:Anwesendheitserkennung
Beitrag von: Schneidi1985 am 22 Februar 2017, 21:57:35
Hi Brice,

danke dir für den Tip mit dem "wenn es hübsch aussehen soll" sowas suche ich auch schon den ganzen Tag :)

Das in einer Gruppe stecken hatte ich am Anfang auch aber mir ist dann folgendes Aufgefallen. Wenn der erste @ home kommt läuft alles super meist schon von am Eingang verbindet sich meistens unsere Handys mit dem WLAN. Somit macht man die Tür auf und steht nicht im dunklen Flur. Im verlauf wird meisten der Flur via Alexa ausgeschaltet. ( Ohne Fhem müsste Mann/Frau durch die komplette Bude brüllen damit Licht an ist oder halt klassisch den Schalter benutzen) .... nun ist Antje bereits da ... und meine Wenigkeit kommt @ home .... da würde ja beim Verbinden Handy_Denis nichts mehr passieren da bereits ein Handy schon im Netz present ist ? Deshalb dachte ich, ich trenne beide voneinander.

könntest du mir eventuell eine kleine Hilfe Stellung geben bzgl. der Regel wenn dann... also für mich als kompletter Anfänger ist es immer schwer erstmal den Anfang hinzubekommen, mit einer Regelung Wenn dann via DOIF bzw. notify
Titel: Antw:Anwesendheitserkennung
Beitrag von: Brice am 23 Februar 2017, 06:46:29
Deinen Anwendungsfall solltest du besser mit einem Bewegungsmelder realisieren.

Eventuell könntest du mit Presence etwas zusammenknorzen.

attr handy_Denis event-on-change-reading .*
attr handy_Antje event-on-change-reading .*


Und dann ein Notify
if ((Value ("handy_Denis") eq "present") || (Value ("handy_Antje") eq "present")) set <Device> on

Aber das ist ungetestet. Und hätte den bedauerlichen Nachteil, dass bei jeder Neuanmeldung im WLan, also auch nach kurzzeitigem Abruch der WLan-Verbindung, das Device eingeschaltet wird. Ich halte das für nicht zielführend.

Mit DOIF kenne ich mich nicht aus, das gibt es noch nicht so lange 8)
Titel: Antw:Anwesendheitserkennung
Beitrag von: Faber38 am 23 Februar 2017, 08:06:52
so könnte man es mit DOIF definieren.
erkennt in diesem Beispiel wenn keins der Handys da sind schalte Anlage an
define Handy_out DOIF ([Handy1:state] eq "absent" and [Handy2:state] eq "absent" and [Anlage:state] eq "off"  ) (set Anlage on) DOELSE  (set Anlage off)

man könnte nun die "nicht" Erkennung endlos weiter führen mit Handy3 ect.

ps:
ich benutze das über Bluetooth.. die Erkennung ist meines Wissens besser.
define Handy1 PRESENCE lan-bluetooth yy:yy:yy:yy  xx.xx.xx.xx:5111 30 120/[code]
Titel: Antw:Anwesendheitserkennung
Beitrag von: Schneidi1985 am 23 Februar 2017, 15:16:40
Danke eure unterstützen.

habe mich etwas belesen und bin auch ein Stück weiter gekommen Leider mit einem neuen Problem :-\

(["^Anwesenheit_:present"]) (set PowerAll on) DOELSEIF ([LIGHTIFYAFC2060000261...] eq "off") (set PowerAll off)

Das Ausschalten ist mir nicht so wichtig eher das Automatische an wenn jemand kommt .... Ausgeschaltet wird anschließend über Alexa ... wenn man angekommen ist bzw. über die Osram App wenn man im Auto sitzt.

Nun habe ich aber das Problem, dass der present Status alle 60 sec neu erfragt wird und somit durch den Tigger jedes mal die Lampe alle 60 sec wieder angeht.
Wüsste einer einen Lösungsansatz wie das Licht bei aktuellem present des Handys aber LED off nicht alle 60 sec wieder anschaltet?

Ich weiß mit einen Bewegungsmelder der richtig positioniert ist würde man das Glaube ich am schnellsten hin bekommen. Würde aber trotzdem gern probieren es auch über die WLan Anwesenheit dies zu ermöglichen.

Grüße und recht herzlichen Dank für die Hilfe
Titel: Antw:Anwesendheitserkennung
Beitrag von: Faber38 am 23 Februar 2017, 16:19:50
du kannst ja mal folgendes probieren
###############################
##  dummy autoLicht
###############################
define autoLicht dummy
attr autoLicht alias Automatik aktiv:
attr autoLicht devStateIcon .*:rc_BLANK
attr autoLicht icon fts_shutter_automatic@yellow
attr autoLicht room Test
attr autoLicht setList state:an,aus
attr autoLicht sortby 01
attr autoLicht webCmd state
define no_autoLicht DOIF ([autoLicht:state] ne "an" ) (set autoLicht an)
attr no_autoLicht room Test


jetzt hast du einen Buttton den du in deine DOIF Abfrage einbauen kannst .... in etwa
(["^Anwesenheit_:present"] and ["autoLicht:an"] ) (set PowerAll on) DOELSEIF ([LIGHTIFYAFC2060000261...] eq "off") (set PowerAll off)
Titel: Antw:Anwesendheitserkennung
Beitrag von: Schneidi1985 am 23 Februar 2017, 20:19:33
Hi Faber,

ich habe den Dummy mal angelegt und die DOIF di_PowerAll DEF abgeändert wie du Sie gepostet hast.
Leider passiert nix außer das ich eine Fehlermeldung im EventMonitor erhalte:


2017.02.23 20:13:42 1 : PERL WARNING: Bareword found where operator expected at (eval 27615) line 1, near ") EventDoIf"
2017.02.23 20:13:42 3 : eval: {PRESENCE_ProcessLocalScan('handy_Denis|0|present')}

Eine verständnis Frage, was hat es eigentlich mit dem Dummy auf sich ?

Danke dir für deine Hilfe 
Titel: Antw:Anwesendheitserkennung
Beitrag von: Faber38 am 23 Februar 2017, 21:48:25
soll eigentlich nur eine schalter sein den du an/aus schaltest..

ich hatte gedacht das du wenn der schalter /an ist du per Wlan erkannt wirst...das Licht angeht
danach kannst du den schalter ausschalten (per at) somit wäre das ewige anschalten des Lichts vorbei
Titel: Antw:Anwesendheitserkennung
Beitrag von: Schneidi1985 am 23 Februar 2017, 22:01:21
Ok.

nach Einbindung schaltet er aber gar nichts mehr, egal ob auf an oder aus. Wüsstest du vielleicht ne Lösung ?

Titel: Antw:Anwesendheitserkennung
Beitrag von: Faber38 am 23 Februar 2017, 22:10:40
(["^Anwesenheit_:present"] and ["autoLicht:an"] ) (set PowerAll on) DOELSEIF ([LIGHTIFYAFC2060000261...] eq "off") (set PowerAll off)

hätte ich anders definiert
define di_Licht DOIF ([Anwesenheit:status] eq "present" ) and [autoLicht:state] eq "an"  )(set PowerAll on )
Titel: Antw:Anwesendheitserkennung
Beitrag von: Faber38 am 23 Februar 2017, 22:31:26
Kommen die Emails an bei dir ? GMX blockt meinen Server schon mal...
Titel: Antw:Anwesendheitserkennung
Beitrag von: Schneidi1985 am 23 Februar 2017, 22:43:17
ja kam an habe dir auch geantwortet