NEWS
UniFi Switch POE Ports per VIS / Blockly ein-/ausschalten
-
Moin zusammen.
Nachdem ich nun mehrere Kameras in VIS eingefügt habe, wollte ich diese natürlich auch per VIS "steuern". Zumindest schnell und einfach ein-/ausschalten wenn mal Gartenparty ist und sie nicht aktiv sein sollen, oder Anwesenheitsgesteuert oder wie auch immer getriggert.
Ich möchte das hier, auch für mich, einfach dokumentieren. Evtl. hilft es ja auch dem ein oder anderen.Vorab vielen Dank an @braindead für den Adapter und die Inspiration.
Noch mehr Dank geht an @liv-in-sky für die Hilfe beim Troubleshooting.
Wer noch weiter nachlesen möchte, kann dies hier tun:
Major Update UniFi AdapterDie Kameras sind alle per POE an UniFi Switches angeshlossen. Die Switche können grundsätzlich auch per SSH gesteuert werden, allerdings hatte ich, out of the Box mit dem UniFi Adapter, keine Möglichkeit gefunden die Switche zu steuern.
Dazu habe ich von Nerdig poe-per-script-steuern dieses Script genommen und unter /opt/iobroker/cam.sh gespeichert.
Das Problem bei mir an der Sache war eigentlich die Sache mit den RSA Keys für den Benutzer "iobroker"
Im Terminal Adapter funktionierte die Erstellung der Keys einfach nicht.
Im Endeffekt war es nach langen Versuchen aber dann nur der Befehlsudo -u iobroker ssh-keygen
direkt per Putty auf iobroker.
Damit wurden dann die Keys unter /home/iobroker/.ssh angelegt.Nun den Inhalt der Datei
/home/iobroker/.ssh/id_rsa.pub
in den Unifi-Controller importieren und die SSH-Authentifizierung aktivieren.
Unter Einstellungen / Site / Neuen SSH Schlüssel hinzufügen
Änderungen übernehmen und evtl. die Switche "Zwangsprovisionieren"
Laut der Anleitung von Nerdig sollte nun mit
sudo -u iobroker admin@<switch-ip>
einmalig eine Verbindung zum Switch aufgebaut werden können, um die Keys zu bestätigen.
Dies funktionierte bei mir aber nicht, ich bekam nur die Meldung "Befehl nicht gefunden".Somit wurde die /home/iobroker/known_hosts Datei nicht angelegt und das Script funktionierte natürlich nicht.
Im Terminal Adapter folgte bei Aufruf von/opt/iobroker/cam.sh
nur der Fehler Host Key Verification failed.
Nach langem Suchen bin ich bei Nerdkrams auf einen Artikel gestoßen, der schließlich die Lösung brachte.
Hier geht es um das Setzen von StrictHostKeyChecking=no.
Dazu im Script cam.sh den Parameter -o StrictHostKeyChecking=no einfügen.ssh -o StrictHostKeyChecking=no admin@$1 '(echo "enable" ; echo "configure" ; echo "interface 0/'$3'" ; echo "poe opmode auto" ; echo "exit" ; echo "exit"; echo "exit" ) |
Das Script nun über den Terminal Adapter aufrufen. Damit wird die known_hosts im Home/.ssh angelegt.
Danach kann der Parameter aus dem Script wieder entfernt werden.
Ab jetzt kann im Terminal Adapter mit
/opt/iobroker/cam.sh <IP-Switch> on/off <Switchport>
POE an-/ausgeschaltet werden.
Das Ganze geht dann natürlich auch über Blockly/Vis. Das funktionierte bei mir allerdings auch nicht direkt.
Ich bekam eine Fehlermeldung nach dem triggern des erstellten Blockly.
28.9.2020, 10:25:00.126 [error]: javascript.0 (1090) script.js.Kameras.Bewegung: exec: sudo bash /opt/iobroker/cam.sh 192.168.222.2 off 20
Erste Voraussetzung ist im Javascript Adapter das erlauben von Exec Kommandos, das war bei mir schon.
@liv-in-sky sties mich dann darauf, dass bei mir in der der Datei /etc/sudoers.d/iobroker der Eintrag
iobroker ALL=(ALL) NOPASSWD: /bin/bash
fehlt. Diesen habe ich in einer neuen Datei unter /etc/sudoers.d/iobroker-own eingetragen.
Der Rest war relativ einfach.
Nach einigen Versuchen mit der Syntax im Blockly, funktionierte schließlich auch das Schalten per VIS.Dazu noch Datenpunkte für jede Kamera anlegen, Blockly erstellen:
VIS Objekte einfügen.
Freuen...
Damit ergeben sich nun auch noch weitere Möglichkeiten um die Switche zu steuern. Habe zwar noch nicht weiter probert, aber theoretisch könnte man ja alles damit schalten.
-
@maniac Vielen Dank für die Info. Ich warte dann aber lieber auf die Implementierung im Adapter (die hoffentlich irgendwann kommt). Deine Lösung sieht mir doch recht kompliziert aus. Aber für alle die nicht warten können definitiv eine super Sache!
-
@Markus84
Ich konnte einfach nicht wartenBrain hat ja leider gerade wenig Zeit.
-
Hier noch eine Variante um die POE Ports zu schalten, etwas unschön bzgl. Passwort im Klartext im Skript, aber bei der Variante über einen SSH Key gabs (bei mir) Probleme im Zusammenspiel mit den Unifi Switchen. Das muss ich mir in einer ruhigen Minute nochmal anschauen.
Ihr benötigt /usr/bin/plink (alternativ würde auch /usr/bin/sshpass gehen):
sudo apt install putty-tools
Folgende Dateien liegen bei mir unter /opt/iobroker/my-assets/unifi-switch
Das Skript dazu - den Trigger DP müsst ihr euch selbst anlegen