Presence und iPhone / Android

Begonnen von JoWiemann, 07 September 2017, 11:58:59

Vorheriges Thema - Nächstes Thema

MadMax-FHEM

Mit Notepad (ohne +) macht man sowas nicht, siehe meinen Kommentar!!

Dann wird es wohl an den "Windows-Zeilenenden" liegen...

Vernünftigen Linux-Editor nehmen, dann klappt das auch...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

en-trust

Im Linux sieht das script denke ich mal nun recht sauber aus. In fhem steht hinter den Handies zwar jetzt absend aber meines ist anwesend auch in der fritzbox.

Wernieman

d.h. Script wird jetzt aufgerufen, aber innerhalb des Scriptes gibt es noch einen Fehler?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

en-trust

#123
ich habe  das script mal auf der console laufen lassen...

sudo bash -x /opt/fhem/FHEM/presence.sh 192.168.0.34 ac:ab:b9:a7:5a:66



+ sudo hping3 -q -2 -c 10 -p 5353 -i u1 192.168.178.34
+ sleep .1
++ sudo arp-scan -q -g 192.168.178.34
++ grep -o ac:af:b9:a6:5a:66
sudo: arp-scan: command not found
+ STATUS=
+ '[' 0 -eq 17 ']'
+ (( COUNT++ ))
+ sleep .1
+ '[' 10 -lt 10 ']'
+ echo 0


ich glaub der Fehler liegt hier sudo: arp-scan: command not found

Ich habe das Package nachinstalliert

sudo apt-get install arp-scan

script läuft auf der commandozeile jetzt durch und in fhem steht jetzt auch present.

Danke für Eure Geduld.

en-trust

Während meine LAN-PING Methode stetig weiterhin meldet das ich das Haus verlassen hätte (wegen der Sleep Funktion), ist bei der neuen hping3 Methode der Status permanent nun present.

Danke.

MadMax-FHEM

D.h. du nutzt nun nur den hping3?

Wenn das deinen Akku leer saugen sollte, dann kannst du (wie ich) auch "2-Stufig" fahren:

Normaler LAN-Ping und bei Bedarf (Quercheck) dann ein statusRequest beim hping3 Presence...

Das hping3 Presence ist das "führende" Presence...

Genauer erläutert hier im Thread weiter vorne (fast am Anfang)...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

en-trust

Normaler LAN-Ping und bei Bedarf (Quercheck) dann ein statusRequest beim hping3 Presence...

Das hping3 Presence ist das "führende" Presence..


Was genau bzw wo wird das umgesetzt?

MadMax-FHEM

Dann halt noch mal in Kürze (obwohl es eigentlich in diesem ja noch nicht so langen Thread bereits stehen müsste):

Ich habe ein "normales" Presence mit LAN ping auf's Handy.
Welches halt nicht immer zuverlässig funktioniert hat (sleep des Handys).
Zusätzlich eben das hping3 Presence, welches für mich den tatsächlichen Zustand angibt.
Dieses mit sehr großem Interval (praktisch fast deaktiviert).
Dann ein Notify auf das LAN ping auf absent|present daraufhin dann einen statusRequest beim hping3.

Somit hab ich die zuverlässigkeit von hping3 und die Akkuschonung von LAN ping...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

en-trust

Das Vorgehen habe ich verstanden nur bräuchte ich hier .. eine Umsetzungshilfe.

Dann ein Notify auf das LAN ping auf absent|present daraufhin dann einen statusRequest beim hping3.

Thyraz

"statusRequest" ist ein set Befehl von Presence Devices.
Presence Devices haben außerdem ein "presence" Reading welches "absent" oder "present" als Wert hat.

Du legst also wie MadMax-Fhem sagt ein Presence für normalen Lan Ping an und einen für hping3 mit dem Script hier aus dem Thread.
Wenn das Lan-Ping auf absent geht, führst du nun eben statusRequest beim hping3 presence device aus.

Löst das deine Frage? Wenn nicht, beschreibe mal genauer woran du hängst.
Ein Notify erstellen wird bei deinem Posting-stand ja wahrscheinlich nicht das Problem sein...
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

Master_Nick

#130
Mahlzeit,
ich habe mal geschaut, dass mein FHEM aktuell ist und bemerke nun, dass anscheind ein Timeout eingebaut wurde, dieses kann man für ein presence mit function nicht anpassen.

Daher habe ich nun regelmäßig im Log
/Work/presence.sh: Zeile 63: echo: Schreibfehler: Datenübergabe unterbrochen (broken pipe).

Denn der pauschale Durchlauf des Scripts mit jeweils 10 und insgesamt 20 Versuchen braucht dann wohl etwas länger als im presence Modul ermöglicht.
Auch der mode shellscript würde wohl nicht helfen. Lediglich für mode event geht das wohl.


*EDIT* Es scheint sich eingependelt zu haben war wohl etwas Last die das verursachte...
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

en-trust

Ok, ich habe mal diesen Abgleich versucht anzustellen und hoffe auf ggf. eine Korrektur.

Lan_ping wird also immer ausgeführt und wenn dieses absent meldet springt er auf die hping3 Routine, richtig ?

define Ping_Abgleich DOIF ([lan_ping] ne [hping_3]) (set Lan_ping statusRequest) (setreading hping3 state [lan_ping:state])

en-trust

Ich habe das jetzt mal so definiert und erhalte nun für diesen Abgleich folgende readings...

e_hping3_STATE present   
e_lan_ping_STATE absent
state cmd_1

Das bringt mir für die weitere Verarbeitung keinen Mehrwert, denn ich muss ja nun auf e_ irgendwas abfragen um weiter arbeiten zu können. Könnte man das nicht zusammenfassen das er guckt ob Handy absend ist oder nicht ?

MadMax-FHEM

Ich weiß ja nicht genau was wie du machst und meinst...

Ich habe ein LAN ping Presence auf das Handy und ein hping3 Presence auf das Handy.

Letztendlich auswerten tue ich nur das hping3 (führendes Presence).

Dann ein simples Notify:

lanping (absent|present) set hping3 statusRequest

Quasi als "Absicherung" ob tatsächlich weg oder "nur" WLAN sleep...

Sorry, dass ohne list/code aber bin unterwegs und hab nur Handy...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

en-trust

#134
Letztlich möchte ich auch nur eine Absicherung. Nur habe ich festgestellt dass sogar mal h3ping auf absend steht während lan ping vorhanden ist. Also dachte ich mir, bringe ich beide mit entweder oder zusammen und setz ein notify auf On wenn einer der beiden Stati auf present steht.

Hier mal das komplette Vorgehen... Allerdings bekomm ich keine Message (vermutlich ist der watchdog falsch)


#
# Samsung Galaxy A5 (lan-ping)
#
define HA.SvenWlan PRESENCE lan-ping Ip
attr HA.SvenWlan userattr presence presence_map structexclude
attr HA.SvenWlan event-on-change-reading state
attr HA.SvenWlan group Anwesenheit
attr HA.SvenWlan pingCount 4
attr HA.SvenWlan presence Anwesenheit
attr HA.SvenWlan room 3.2_Anwesenheit,Fritzbox,Status
#
# Samsung Galaxy A5 (hping3)
#
define Galaxy.A5.Wlan PRESENCE function {CheckiPhone("IP","Mac")} 60 120
attr Galaxy.A5.Wlan userattr Bewohner_structure Bewohner_structure_map Handys Handys_map structexclude
attr Galaxy.A5.Wlan Bewohner_structure Bewohner
attr Galaxy.A5.Wlan Handys alleHandys
attr Galaxy.A5.Wlan event-on-change-reading state
attr Galaxy.A5.Wlan group Anwesenheit
attr Galaxy.A5.Wlan room 3.2_Anwesenheit,Fritzbox,System

define Galaxy.A5.Compare DOIF ([HA.SvenWlan] ne [Galaxy.A5.Wlan]) (set HA.SvenWlan statusRequest) (setreading Galaxy.A5.Wlan state [HA.SvenWlan:state])
attr Galaxy.A5.Compare group Anwesenheit,Status
attr Galaxy.A5.Compare room 3.2_Anwesenheit,Status

define HA.Sven dummy
attr HA.Sven event-on-change-reading state
attr HA.Sven eventMap 1
attr HA.Sven group Anwesenheit
attr HA.Sven room 3.2_Anwesenheit,Status

define HA.Sven.On notify (HA.SvenWlan:present)|(Galaxy.S5.Wlan:present) { fhem ("set HA.Sven on;; setstate watchdogHASvenWlanAbwesend defined") if (Value("HA.Sven") ne "on") }
attr HA.Sven.On group Anwesenheit
attr HA.Sven.On room 3.2_Anwesenheit,Status

define watchdogHA.Sven.Wlan.Off watchdog (HA.SvenWlan:abent)|(Galaxy.S5.Wlan:abent) 00:03 (HA.SvenWlan:present)|(Galaxy.S5.Wlan:present) set HA.Sven off
attr watchdogHA.Sven.Wlan.Off regexp1WontReactivate 1
attr watchdogHA.Sven.Wlan.Off room 3.2_Anwesenheit,Status

define HA.Sven.On.PushNotify notify HA.Sven:on { fhem ("set PushMessenger msg 'Anwesenheit' 'Sven/Handy ist Zuhause.' '' 0 ''")}
attr HA.Sven.On.PushNotify group Auskunft,notify
attr HA.Sven.On.PushNotify room 3.2_Anwesenheit,Status

define HA.Sven.Off.PushNotify notify HA.Sven:off { fhem ("set PushMessenger msg 'Anwesenheit' 'Sven/Handy hat das Haus verlassen.' '' 0 ''")}


Statt mit (HA.SvenWlan:present)|(Galaxy.S5.Wlan:present) zu arbeiten wäre dann die Kombi aus beidem durch das Compare hilfreich.