Geräteverfügbarkeit überprüfen mit openHAB

Das Network Health Binding von openHAB überprüft, ob Geräte (Computer, Smartphones, SmartTVs, …) aktuell im Netzwerk verfügbar bzw. ansprechbar sind.

Um festzustellen, ob ein Netzwerkgerät online ist, verwendet das Binding die Java-Funktion InetAddress.isReachable(). Leider scheint es mit dieser Funktion öfters Probleme zu geben (siehe z.B. hier), wenn man diese plattformübergreifend verwendet.

So erkennt das Network Health-Binding auf meinem Raspberry PI  meinen Windows 7 PC immer als offline, obwohl z.B. ein einfach ping vom Terminal des Raspberry PI ohne Probleme funktioniert.

in meinem Fall scheint das Problem an der Windows-Firefall zu liegen, denn sobald ich diese komplett abschalte (was natürlich keine dauerhafte Lösung ist), funktioniert das Binding korrekt.  Leider konnte ich bis jetzt jedoch keine Firewall-Regel finden, welche den Network Health Ping durchlasst.

Als Alternative verwende ich nun das Exec Binding, wie in diesem Beitrag beschreiben:

Switch PingableThing { exec="<[/bin/sh@@-c@@ping -c 1 192.168.1.10 | grep \"packets transmitted\" | sed -e \"s/.*1 received.*/ON/\" -e \"s/.*0 received.*/OFF/\":30000:REGEX((.*))]" }

Dieser Ping wird alle 30 Sekunden ausgeführt und aktualisiert den Switch entsprechend. Damit funktioniert es einwandfrei. Trotzdem würde ich gerne herausfinden, wie ich die Windows-Firewall für den Ping des Network Health-Bindings konfigurieren muss.