Anwesenheit im Netzwerk überprüfen

D

duras

Aktives Mitglied
Thread Starter
Dabei seit
02.09.2008
Beiträge
277
Reaktionspunkte
27
Guten Morgen!
Für mein Smarthome betreibe ich unter anderem das Homebridge-People Plugin, welches eine bestimmte IP pingt überprüft und somit eine Anwesenheit eines Gerätes im Netzwerk überprüft. Man kann jedoch auch über einen Webhook manuell triggern.
Damit will ich dann Szenen steuern (in meinem Arbeitszimmer muss nicht geheizt werden, wenn niemand da ist).

Eigentlich war der von mir erdachte Weg, dass ich den Geräten eine feste IP gebe und sobald sie am LAN angeschlossen sind und nicht nur über WLAN weiss ich, dass sie im Arbeitszimmer sind. Blöderweise geht dann von Zeit zu Zeit mal dort alles an, weil der Mac sich überlegt, ein Time Machine-Update zu machen oder sonst irgendwas - PowerNap und "Ruhezustand bei Netzwerkzugriff beenden" sind ausgeschaltet.

Die "neue" Idee war dann, mittels dem Login/out-Hook von OSX einmal den Webhook von der Homebridge zu bedienen - dabei fehlt mir aber noch die abfrage, ob WLAN oder LAN benutzt wird. Ausserdem ist dieser deprecated - also keine wirkliche Option.

Die Weiterentwicklung war - aber da hört jedes wissen bei mir auf - auf den 3 Rechnern mittels launchd in irgendeinen Intervall (z.B. alle 5 Sekunden - so hatte ich vorher auch den ping eingestellt) zu überprüfen, ob mein Netzwerkadapter die richtige IP hat und falls ja den Webhook der Homebridge auszulösen. Die würde dann einen threshold von 1 Minute bekommen und dann nach einer Minute abschalten. Quasi die Richtung des Ping einmal umdrehen.

Zunächst: Funktioniert das so, wie ich mir das vorstelle? Schaltet das Script sich aus, wenn ich in den Ruhezustand gehe/das Macbook zuklappe? Und schaltet sich auch nicht wieder ein, wenn der Mac nachts um 3 ein update zieht oder sonst irgendwas? Oder soll ich dort besser den Status abfragen, ob Ruhezustand / Bildschirmschoner oder wirklich aktiv?

Und wenn ja: Ich habe so grundlegendes Wissen zum Programmieren aus python - kann mir das irgendwer ein tutorial zu den plist-Files geben? Dort verstehe ich einfach genau Null :D

Vielen Dank und Viele Grüße
Jonas
 
Das hier ist zum Einlesen ein guter Anfang:
https://www.launchd.info/
Ah - schon direkt 2 Dinge gelernt: Ich kann ein einfaches shell-script schreiben? Und das wird nur über launchd gestartet? :dance:
das lasse ich aber nicht als deamon laufen sondern als user agent, damit bei logout des users es beendet wird?
oder alternativ starte ich das script alle 10 Sekunden als daemon
Code:
<key>StartInterval</key>
<integer>10</integer>
If the system is asleep, the job will be started the next time the computer wakes up. If multiple intervals transpire before the computer is woken, those events will be coalesced into one event upon wake from sleep.
Welches ist da die bessere (ressourcenschonendere/zuverlässigere) Methode?
 
  • Gefällt mir
Reaktionen: mausfang
LaunchAgents werden aufgerufen, wenn sich ein User anmeldet, LaunchDaemons starten mit Systemstart systemweit, unabhängig davon ob sich ein User anmeldet. Daher gibt's LaunchDaemons auch nur in /Library oder von macOS in /System/Library.

Ansonsten gibt es keinen Unterschied.
 
  • Gefällt mir
Reaktionen: walfreiheit, mausfang und dg2rbf
Gut erklärt.
 
Zurück
Oben Unten