Ein Haus kann erst smart sein, wenn es weiß wann seine Bewohner Zuhause sind und wann nicht, um so die Heizung herunter zufahren und Standby Geräte abzuschalten um Strom zu sparen.
Natürlich ist das mit der Fibaro App über die GPS Funktion möglich. Allerdings gehören die Smartphones heutzutage nicht wirklich zu den Akkuwundern und das aktivierte GPS trägt sicher nicht zu einer besseren Akkuleistung bei.
Im folgenden möchte ich dir ein kleine LUA Script zeigen, mit welchem es möglich ist die Anwesenheit von IP basierten Geräten zu überprüfen. Über einen sogenannten PING wird eine Aufforderung an das Netzwerkgerät gesendet. Ist das Gerät im Netzwerk per LAN oder WLAN verfügbar so wird es eine Antwort geben. Diese Antwort kann in einer Variable der Fibaro vermerkt werden um diese dann in Szenen zu verwenden. Wie du Variablen erstellen kannst, habe ich hier schon einmal beschrieben. (Fibaro HCL Tageszeit Variable anlegen)
Es lassen sich über diesen Weg zum einen Smartphones anpingen - sie sind schließlich heutzutage unser Begleiter, so das man herleiten kann wenn das Smartphone nicht im WLAN ist, so bin ich auch nicht Zuhause.
Man könnte aber auch ein Smart TV anpingen. Ist dieser eingeschalten, so wird er antworten. Ist er ausgeschalten und nur im Standby, so wird er nicht antworten. In diesem Fall könnte man eine über Szene das HiFi Board abschalten um Strom zu sparen.
Variable anlegen
Zunächst benötigst du eine Variable, welche später vom System mit dem Anwesenheits-Zustand gefüllt wird. Diese kannst du auf der Weboberfläche des Home Center 2 unter dem Menüpunkt: Steuerungen > Variable Steuerungen -> Variable anlegen.
Benenne diese frei nach deinen Wünschen. Im Beispiel verwende ich als Namen der Variable "SamsungTVWHZ" welche zwei Zustände annehmen kann, 0 und 1. Ist der Samsung TV eingeschalten und somit erreichbar, wird die Variable auf 1 gesetzt. Ist er ausgeschalten und antwortet nicht, so nimmt diese den Wert 0 an.
Samsung TV anpingen
Um das Script auszuführen, habe ich unter Module > hinzufügen ein neues virtuelles Modul erstellt welches den abstrakten Namen "Anwesenheit" von mir erhalten hat. Das Feld für IP Adresse und TCP Port kann leer bleiben. In der Registerkarte "Erweitert" kannst du nun einen Button hinzufügen und setze den Punkt vor "LUA Code".
Als Script verwende folgendes:
1 2 3 4 5 6 7 8 9 10 11 |
tcpSocket = Net.FTcpSocket("192.168.2.102", 55000) bytes, errorCode = tcpSocket:write("test") if errorCode == 0 then fibaro:setGlobal("SamsungTVWHZ", "1"); fibaro:log("Samsung TV ist eingeschalten"); else fibaro:setGlobal("SamsungTVWHZ", "0"); fibaro:log("Samsung TV ist aus"); end |
Folgendes musst du nun im Script gegen deine Werte und Variablen ersetzen. In der ersten Zeile findest du die IP Adresse welche angepingt werden soll. Ändere diese auf die IP Adresse deines TV Gerätes bzw. auf die IP Adresse des Gerätes dessen Zustand du ermitteln möchtest. Die IP Adresse wird gefolgt vom Port. Im Beispiel ist es der Port 55000 für Samsung Smart TV Geräte.
1 |
tcpSocket = Net.FTcpSocket(192.168.2.102,55000) |
Danach musst du die Variable definieren, welche du zuvor angelegt hast.
1 |
fibaro:setGlobal(SamsungTVWHZ, "1"); |
Sowie auch den Ausgabetext, welcher als Antwort unter deinem virtuellen Modul erscheinen wird, um dir zu signalisieren welcher Zustand ermittelt wurde:
1 |
fibaro:log("Samsung TV ist eingeschalten"); |
Nun ist das virtuelle Modul einsatzbereit. Sobald du den Knopf des virtuellen Gerätes drückst, wird das Script den Ping senden und die Antwort in die Variable schreiben. Unter dem virtuellen Modul wird der Log Text ausgegeben.
Fibaro - Anwesenheit per iPhone prüfen.
Seit der iOS 6 Firmware, schaltet das iPhone im Lockscreen das WLAN Modul ab. Dadurch reagiert das iPhone nicht auf einen Ping, auch wenn es in Reichweite des WLAN ist. Dennoch ist es möglich zu prüfen ob das iPhone Zuhause ist. Den Workaround hatte ich schon einmal am Beispiel mit der Homematic beschrieben (Homematic Anwesenheit per Smartphone oder iPhone prüfen). Das iPhone muss also durch eine Pushnachricht aufgeweckt werden, danach kann der Ping durchgeführt werden.
Hierzu kannst du im Menü des Fibaro Home Center unter dem Menüpunkt: Steuerungen > Meldugen eine neue Nachricht anlegen. Titel und Inhalt der Nachricht kann frei vergeben werden. Nach einem Klick auf speichern, steht diese Message nun auch als Option in Szenen zur Verfügung.
Weiterhin benötigst du auch für das iPhone eine neue Variable, sowie einen neuen Button im eben erstellen virtuellen Modul. Das Script bleibt gleich. Auch hier musst du wieder die IP Adresse auf die deines iPhone anpassen, als Port verwende 62078. Vergesse nicht die Variable im Script anzupassen.
In der Szene, kann nun vor dem Auslösen des virtuellen Moduls eine Pushnachricht abgesetzt werden. Die zuvor angelegte Nachricht kann ebenso wie der Empfänger ausgewählt werden.
Als Auslöser empfiehlt sich hier weniger ein Zeitintervall, denn das wird sicher etwas nervig wenn jede Minute eine Push Mitteilung kommt. Dies lässt sich über einen Tür / Fensterkontakt lösen. Sobald die Haustür geöffnet wird, startet diese Szene. Das ganze solltest du zeitverzögert machen, denn wenn du das Haus verlässt, musst du erstmal aus der Reichweite deines WLANs gehen. So kannst du das versenden der Pushnachricht sowie das ausführen des PING (drücken der Taste des virtuellen Moduls) in der Szene über die Eingabe der Zeit in Sekunden im roten Feld verzögern.
Das virtuelle Modul wird auch hier die Variable füllen, je nachdem ob du das Haus verlässt oder zurück kehrst. Somit ließe sich die Heizung je nach Anwesenheit regeln. Das Licht einschalten sobald man nach Hause kommt, ist mit dieser Prüfung noch nicht perfekt, da die Pushnachricht und der Ping auch zeitverzögert gesendet werden, wenn du nach Hause kommst. Dafür ist es leider zu träge.
Sicher kann der eine oder andere von euch das ganze komplett auf LUA bauen. Die Challenge ist hiemit freigegeben :-)
Hey, danke für diese tolle Anregung.
Allerdings bin ich wohl zu doof. Ich will mein Smartphone anpingen und habe die IP-Adresse ersetzt. Nun fehlt mir noch ein offener Port - wie finde ich den? Oder noch besser: wie kann ich auf meinem Telefon (Android) einen beliebigen Port dauerhaft öffnen?
- Ihr merkt: Netzwerk Newbie :-)
Das ist genau mein Problem. Ich finde auch keinen offenen Port auf meinem Smartphone.
Warum benötige ich überhaupt einen offenen Port? Von meinem Rechner kann ich doch auch im lokalen Netz einen Ping absetzen.
Hallo Zusammen,
mit einem Samsung Galaxy S5 und Android 5.0 funktioniert es bei mir mit dem Port 16720.
Ansonsten kann man mit dem Tool "nmap" einen Portscan laufen lassen.
Der ping basiert auf dem ICMP Protokoll und hat daher keinen Port.
Hallo Maxx4live
Funktioniert einbandfrei mit Port 16720 auf Android.
Sobald der Haustürkontakt ausgelöst hat, wird 180s später die Szene mit dem Ping ans Handy gestartet. Ist dieses nicht mehr im W-Lan wird der Status auf Away gesetzt. Umgedreht natürlich genauso. Top!
Könnte man nicht auch eventuell den Router zb die Fritz Box fragen oder sich zunutze machen, den die weiß ob das Handy im Netzwerk ist oder nicht und das ein - aus loggen ist sehr Zeit nah. Ist nur eine idee.
How dit you do it whit a android phone. is it the same script for VD. and how dit you get a open port open on android phone
thanks
regards
yes, it is the same script. I have no Android device. Maybe other users can help here?
Hi,
wäre ein Ping-Device als virtuelles Modul auch im HCL möglich? Da ich ja keinen LUA Code direkt in der GUI ändern kann müsste ich ja ein virtuelles Modul zum Import haben, oder? Gibt es dafür im Netz evtl. einen Generator?
Gruß
Sascha
Nein, mit dem HCL funktioniert dies leider nicht.
Hi,
also mit einem SAMSUNG J Serie ( TIZEN OS ) funktioniert der Ping auf Port 15500.
Hat jemand vielleicht noch weitere Info's zum Steuern der J Serie (TIZEN) TV - Geräten ?
Ich würde gerne die APi ansprechen und das Gerät steuern.
Kann mir außerdem jemand die tcpSocket:write funktion etwas weiter erklären ?
DANKE und viele Grüße aus Köln
Hallo Hotte,
probier für Tizen Geräte den Port 7676, hat bei mir funktioniert.
lg
GP
Wie finde ich den Port für mein LG G2 mini heraus? 16720 funktioniert nicht. Habe Android 5.0.2 laufen.
Hi,
am Besten scannst du mal dein Netzwerk nach offenen Ports. Such bei Google einfach nach Portscanner, da gibt es einige gute Freeware.
Gruß
Wie kann ich realisieren, dass zwei Personen (Handys) abgefragt werden? Zur Setzung der "Home" Variable aber eine anwesende Person davon reicht.
Hi,
schau dir mal folgendes VD an. Dort kannst du dann auch mehrere Geräte anpingen:
https://www.siio.de/connected-home/kleine-lua-scripte-teil-7-online-status-abpruefen/
Gruß
Hallo Zusammen,
falls jemand den selben Fehler gemacht wie ich und sich ein Windows Phone (Nokia Lumia) gekauft hat
hier ist der Port 32000 frei :-)
zusätzlich muss man noch am Router dem Telefon (findet man über die MAC Adresse) eine fixe IP vergeben weil diese Hightech Handy das nicht kann :-)
lg
Duschi
Hallo Leute,
weiß jemand welchen Port ich beim Samsung Galaxy S6 Edge Plus verwenden kann?
Ein Port-Scann hat keinen offenen Port ermittelt
Hi, hat hier keiner eine Idee?
Habe es auch schon mit dem Samsung Galaxy S5 probiert. Geht aber auch nicht.
Vielen Dank im Voraus.
dougdoug
Hi,
ich habe am Anfang ein bisschen mit Fhem gespielt. Das ist an sich ja ne Eierlegendewollmilchsau was die Hausautomatisierung angeht. Jedoch war die Optik nicht so meins, deswegen Fibaro.
Ich hatte die Anwesenheitserkennung über die Fritz!Box laufen. Da ich nicht mega begabt bin was Linux angeht und erst recht nicht LUA hab ich mir gedacht vielleicht kann euch ja der FhemWikieintrag unterstützen um eine Fritz!Box modul zu gestalten. Ich würde mich freuen :-)
Vielleicht geht mein teuflischer Plan ja auf und jemand hat lust drauf und veröffentlicht es :-D
viele grüße
Hallo zusammen,
ich hatte zunächst auch Schwierigkeiten den Port bei meinem Galaxy S4 und Xperia Ray zu finden.
Diverse Programme hatten keinen Erfolg. Mit NMap (bzw. der graphischen Oberfläche ZenMap) funktioniert es sehr gut.
Oben links die IP des Smartphones eingeben (diese sollte natürlich statisch sein), rechts "regular scan" auswählen und auf Scan klicken.
Der Port wird in grüner Schrift angezeigt.
Interessanter Weise wechselt der Port meines Galaxy S4 gelegentlich. Weiß jemand woran das liegen könnte?
Ports Galaxy S4: 1030 oder 1034
Xperia Ray: 5001
Grüße
Mr.Coffee
Hallo zusammen
so wie es aussieht wird der ping nicht mehr bei anklicken des Moduls durchgeführt.
Könnte das Update liegen? lässt sich irgendwie ein Intervall des Pings einfügen?
Hi, Ich habe dies Anleitung für Samsung Galaxy S5 versucht umzusetzen. Ging leiter nicht, daher habe ich überlegt wie ich den PING anders hinbekomme. Da ich auch ein RasPi mit der HA-Bridge nutze (Es gibt hier auch ein Beitrag dazu. ) habe ich ein script gebasteltet. Dieses lasse ich mit den Crontab alle 2 minuten ausführen. dabei ist es egal ob es einen offenen Port gibt oder nicht, daher geht es mit allen Geräten. Geht super :)
Hi,
ich habe ein anderes Script gefunden, das arbeitet mit der Mac Adresse und das funktioniert bei mir auch ohne offene Ports, siehe hier:
https://forum.fibaro.com/index.php?/topic/21297-stand-alone-presence-phone-checker/&
Gruß, Jens