Wie man mit dem Funk-Handsender eine Variable steuert (anwesend/abwesend) will ich hier nicht großartig beschreiben, dazu gibt es genügend Anleitungen. Als schwierig erwies es sich die richtigen Unifi API Befehle und Anleitungen für die LED Steuerung zu finden da sich mit Firmware Updates im Laufe der Zeit einiges geändert hat und deshalb die meisten im Internetgefundenen Lösungen nicht mehr funktionierten. Hier also ein Skript das stand heute wirklich funktioniert, mit allen Unifi Komponenten up to date.
In der Homematic Zentrale wird auf meiner Diskstation (als Beispiel 192.168.1.100, Web Station und php muss installiert sein) folgendes Skript aufgerufen:
system.Exec("wget -q -O - 'http://192.168.1.100/unifi_led_an.php' &");
sowie
system.Exec("wget -q -O - 'http://192.168.1.100/unifi_led_aus.php' &");
Je nach Tastendruck auf dem Funkhandsender wird die Anwesenheitsvariable gesetzt und das entsprechende Skript aufgerufen. Also so in der Art
Code: Alles auswählen
Wenn Tastendruck kurz
und Systenvariable Anwesenheit ist falsch
dann Systemvariable Anwesenheit als wahr setzen
und Skript Ausführen: system.Exec("wget -q -O - 'http://192.168.1.100/unifi_led_an.php' &");
sonst
Systemvariable Anwesenheit als falsch setzen
und Skript Ausführen: system.Exec("wget -q -O - 'http://192.168.1.100/unifi_led_aus.php' &");
unifi_led_an.php:
Code: Alles auswählen
<html>
<head>
<title>unifi led an</title>
</head>
<body>
<?php
$output = shell_exec('unifi_led_an.sh');
echo "<pre>$output</pre>";
?>
</body>
</html>
Das Shellskript unifi_led_an.sh:
Code: Alles auswählen
#!/bin/sh
unifi_username=testuser
unifi_password='testpassword'
# baseurl ist hier die Adresse des Unifi Cloud Key, kann natürlich auch ein Docker Container oder PC sein auf dem der Unifi Controller läuft
baseurl=https://192.168.1.200:8443
site=default
cookie=/tmp/unifi_cookie
curl_cmd="curl -vvv --silent --cookie ${cookie} --cookie-jar ${cookie} --insecure "
$curl_cmd -H "Content-Type: application/json" -X POST -d "{\"password\":\"$unifi_password\",\"username\":\"$unifi_username\"}" $baseurl/api/login
$curl_cmd $baseurl/api/s/$site/set/setting/mgmt -X PUT --data-binary '{ "led_enabled": true}'
$curl_cmd $baseurl/logout
rm $cookie
Im Unifi Controller muss die LED des Accesspoints (findet man im Config Tab des nanoHD) auf "Use site settings" gestellt sein, nicht auf "an" oder "aus". Sonst funktioniert es nicht.
Für die Steuerung der Heizung oder welcher Komponenten auch immer muss dann nur noch die Anwesenheitsvariable mit verwendet werden.