Benutzt hier jemand Windows? Dann mag das PuTTY-Update vielleicht interessant sein.
https://www.heise.de/security/…TTY-sicherer-4339723.html
Stefan
Benutzt hier jemand Windows? Dann mag das PuTTY-Update vielleicht interessant sein.
https://www.heise.de/security/…TTY-sicherer-4339723.html
Stefan
Du musst nichts neu aufsetzen. Du hast dich irgendwo in /etc/sudoers.d/homebridge vertippt. Das muss korrigiert werden, und das ist alles. Noch kannst du dich ja einloggen, gelle?
Kopier mal den Inhalt deiner /etc/sudoers.d/homebridge raus und poste ihn hier. Wär doch gelacht.
Stefan
Das Löschen der Datei fällt also raus. Wenn ich das richtig verstanden habe, handelt es sich doch um die Konfigurationsdatei des Homebridge-Benutzers, richtig? Wie kann ich diese denn wieder instandsetzen?
So ist es. Der Inhalt dieser Datei legt fest, welche Befehle der User homebridge mit root-Rechten ausführen darf. Die Anleitung sieht vier Befehle vor:
/usr/local/bin/npm (damit homebridge-config-ui-x Plugins installieren kann)
/bin/systemctl restart homebridge (damit homebridge-config-ui-x die Homebridge restarten kann)
/bin/journalctl (damit homebridge-config-ui-x das Log anzeigen kann)
/usr/local/bin/node (damit homebridge-config-ui-x einen Security-Check der Plugins durchführen kann)
Das sind alles Kommandos, die aufgerufen werden können, und nicht etwa Dateien oder Verzeichnis, die geschrieben werden sollen. In sudoers-Dateien stehen immer nur Kommandos, alles andere funktioniert da nicht.
Deine /etc/sudoers.d/homebridge enthält demnach also:
homebridge ALL=(root) SETENV:NOPASSWD: /usr/local/bin/npm, /bin/systemctl restart homebridge, /bin/journalctl, /usr/local/bin/node
Wer auch noch den Raspi per homebridge-config-ui-x rebooten will, muss diese Datei erweitern auf:
homebridge ALL=(root) SETENV:NOPASSWD: /usr/local/bin/npm, /bin/systemctl restart homebridge, /bin/journalctl, /usr/local/bin/node, /sbin/shutdown
Egal, wie das Forum das hier abbildet: das ist immer eine einzige Zeile.
Eine kaputte sudoers-Datei kann den Login auf den Rechner unmöglich machen und man hat sich dann quasi ausgeschlossen. Also Vorsicht beim Bearbeiten! Damit es nicht schief geht, sollte man den sudoers-Editor visudo nutzen, der checkt nämlich vor dem Speichern, ob das so in Ordnung geht:
sudo visudo -f /etc/sudoers.d/homebridge
Dann alles anpassen und abspeichern. Alles klar? ![]()
Stefan
Das kannst du machen, auch wenn ich nichts davon halte. Aber es ändert nichts an der Tatsache, das der Pfad zum cache_directory anders gesetzt sein muss. Denke immer an die Zehn Gebote:
Zumindest die ersten drei davon sollte man auswendig lernen.
Stefan
Setze das cache_directory in deiner config.json auf /var/homebridge/node-persist/storage. Da darf der User homebridge schreiben. Mache alle anderen Änderungen rückgängig.
Stefan
Ja, das Herumfummeln an den sudoers-Dateien kann bös enden. Wenn du es tust dann benutze statt nano den sudoers-Editor visudo und log dich über ein weiteres Fenster auf den Raspi ein, um zu sehen, dass das wirklich noch geht und alles gut aussieht. Man kann sich da leicht ausschließen.
Stefan
Mar 17 18:52:13 raspberrypi homebridge[3608]: [3/17/2019, 6:52:13 PM] [MiLight] Initializing platform accessory 'Null'...
Mar 17 18:52:13 raspberrypi homebridge[3608]: [3/17/2019, 6:52:13 PM] [MiLight] Initializing platform accessory 'Null'...
Mar 17 18:52:13 raspberrypi homebridge[3608]: /usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/Accessory.js:266
Mar 17 18:52:13 raspberrypi homebridge[3608]: throw new Error("Cannot add a bridged Accessory with the same UUID as another bridged Accessory: " + existing.UUID);
"lights": {"fullColor": ["Kitchen ","Bedroom","Null","Null"]},
"Null","Null"? Sind wir hier beim Fußball? Es kann nur eine Null geben, da liegt dein Problem. Wenn du also deine Räume unbedingt durchnummerieren will, dann versuch's mal mit "Null","Eins" oder "Dreihundertsiebenundzwanzig", "Zwölf".
Disclaimer: ich setze kein Milight ein und habe auch keine derartige Konfiguration getestet noch sonst irgendeinen Plan davon.
Stefan
ich hoffe jemand kann mir Anfänger/Halbprofi dabei helfen
Die config.json sieht völlig ok aus. Offenbar scheppert's bei dem homebridge-raspberry-temperature. Und zwar schon beim Laden und Registrieren des Plugins.
[3/16/2019, 1:00:14 PM] Loaded plugin: homebridge-raspberrypi-temperature
[3/16/2019, 1:00:14 PM] Registering accessory 'homebridge-raspberrypi-temperature.RaspberryPiTemperature'
[3/16/2019, 1:00:14 PM] ---
Stopping Node.js HomeKit Server...
Stopped Node.js HomeKit Server.
Das solltest du testhalber mal aus config.json herausnehmen und es auch deinstallieren.
sudo npm uninstall -g homebridge-raspberry-temperature
Dann die Homebridge neu starten und sehen, was im Log passiert. Wenn es jetzt besser läuft, installierst du das Plugin neu und passt die config.json wieder an.
Stefan
Da es wenig Sinn macht, dass ich innerhalb des cmd-trigger Befehl jedes Mal die C++ Datei kompiliere muss jetzt wahrscheinlich noch dafür sorgen, dass die "steuerung"-Datei einmalig bei jedem Hochfahren/Neustart des Raspberrys kompiliert wird, damit sie einsatzfähig ist.
Wieso? Ein einziges Mal kompilieren sollte doch für den Rest des Raspi-Lebens reichen.
"on_cmd": "cd /usr/local/bin433Utils/RPi_utils && sudo ./steuerung 1",
"off_cmd": "cd /usr/local/bin433Utils/RPi_utils && sudo ./steuerung 0"
Ja, das sollte so gehen.
Stefan
Kann ich dir aus dem Kopp nicht so sagen. Das müsste ich selbst zusammenbasteln, um es genau zu verstehen, und das habe ich leider nicht vor. Ist aber eine gute Idee.
Ich denke, ich würde das versuchen, indem ich aus dem Raspi eine Art Accesspoint mache. Anleitungen dafür findet man ja leicht, aber die betrachten die Sache immer andersherum: da hängt dann der Router am LAN-Port und die Clients am WLAN. Meiner Meinung nach sollte man das leicht umdrehen können.
Stefan
Ok, dann verschiebe dein Script nach /usr/local/bin.
sudo cp -a 433Utils/RPi_utils/steuerung1 /usr/local/bin
und ergänze die Datei /etc/sudoers.d/homebridge, in dem du an die darin befindliche Zeile ein Komma anhängst und danach /usr/local/bin433Utils/RPi_utils/steuerung1. Damit darf dann der User homebridge dein Script mit sudo aufrufen.
Und dann:
"accessories": [ {
"accessory": "CMD",
"name": "Steuerung 1",
"on_cmd": "/usr/local/bin433Utils/RPi_utils/steuerung1",
"off_cmd": "false"
}
]
So würde ich's mal probieren. Möglicherweise musst du die Homebridge einmal neu starten.
Stefan
lo ist localhost. Diese Schnittstelle gibt es aber nur dann, wenn es auch TCP/IP gibt. Also quasi immer. Auf jedem modernen Betriebssystem. Selbst ein C64 mit TCP/IP kennt den localhost. Dieser localhost ist der Rechner selbst. Wenn man 127.0.0.1 anpingt, pingt man den Rechner selber an.
Die Fragen bei solchen Konstrukten sind immer:
Dein Router bekommt die Anfrage der Hue-Bridge möglicherweise nicht mit der IP der Hue-Bridge, sondern wahrscheinlich mit der IP des Raspi, und an den Raspi sendet er auch die Antwort aus dem Internet zurück, der sich verwundert fragt, warum er Antworten auf Fragen bekommt, die er nicht gestellt hat. Also verwirft er diese Pakete.
Das könnte sein. Ich weiß es nicht. Wozu macht man das überhaupt?
Stefan
Gebe ich den Befehl so ein, wie ich ihn im Terminal eingeben würde? Also cd 433Utils/RPi_utils && sudo./steuerung 1 oder muss ich da noch was beachten?
Ja, grundsätzlich ja. Das hängt davon ab, wo dein Zeugs liegt und als welcher User der Prozess homebridge läuft. Ich nehme mal an, du gibst den Befehl als User pi an der Konsole ein.
Ich würde immer (in Worten: immer, soll heißen: absolut immer und jedesmal) den ganzen Pfad angeben. Also so was wie
cd /home/pi/433Utils/RPi_utils && sudo ./steuerung1
Allerdings würde ich es auch erst mal so versuchen:
sudo /home/pi/433Utils/RPi_utils/steuerung1
Allerdings wird das fehlschlagen, wenn homebridge nicht als User pi gestartet wird, denn im Homeverzeichnis von pi haben andere User nix zu suchen. Und nach der Forenanleitung wird es fehlschlagen, weil der User homebridge kein sudo steuerung1 machen darf. Also bleibt die Frage: wo dein Zeugs liegt und als unter welchem User homebridge läuft.
Stefan
Würde es da nicht theoretisch reichen, dass das Plugin einfach beim anklicken in Apple Home auf das Plug den selben Befehl exakt so aufruft, wie ich es im Terminal am Raspi drekt tue? Oder denke ich da zu einfach?
Das geht natürlich, und es gibt auch solche Plugins. Ich habe eine Weile homebridge-cmd verwendet. Kann fast nix und funktioniert einwandfrei.
Welche Plugins nutzt ihr für solche arbeiten? Welches läuft am stabilsten? Welches ist am einfachsten zu integrieren in die Homebridge?
Ich habe nicht alle ausprobiert, also kann ich dir nicht sagen, welches am stabilsten läuft. Die, die ich genutzt habe, laufen alle ohne weitere Probleme. Ich nutze homebridge-cmdtrigger, aber nur daher, weil ich einen Schalter benötige, der sich selber wieder ausschaltet, nachdem ich ihn betätigt habe.
Die sind alle leicht zu integrieren. Was sollen die auch schon groß können?
Um homebridge-cmdtrigger zu installieren, verwendet man besser nicht die Anleitung des Plugins, weil sie gnadenloser Schwachsinn ist und eigentlich nur davon zeugt, dass da einer mit Bastelarbeiten irgendwie irgendwas zum Laufen bekommen hat. Dummerweise lässt sich das Plugin nicht wie üblich installieren, sondern man muss anders vorgehen:
sudo -i (in den root-Modus gehen)
export NPM_CONFIG_PREFIX=/usr/local/ (bei mir liegen die Plugins in /usr/local/lib/node_modules)
npm install -g --unsafe-perm https://github.com/hallos/homebridge-cmdtrigger
exit (root-Modus verlassen)
Das auf der Plugin-Seite angegebene sudo chown -R $USER /usr/local
sollte man besser lassen.
Stefan
Es gibt in der Config keine Einstellung, die Dinge extra langsam macht. Normalerweise sollten alle Geräte gleich schnell aktualisiert werden.
Was nun deine Config angeht: verwendest du da die gleiche wie meine Tante?
Stefan
Aber wenn ich sagen wir mal montags 5 mal das Haus verlasse was durchaus vorkommt würde er ja dann auch 5 mal saugen
Nee. Der fährt jeden Montag um 13:00 Uhr und nur dann, außer du bist zu Hause. Der Trigger ist die Uhrzeit, nicht dein Weggehen.
Ich habe einen Roomba 880, der nicht HomeKit-fähig ist und auch keine WLAN hat. Den kann ich nur mit der mitgelieferten Fernsteuerung bedienen.
Ich hab mir so beholfen, dass ich ein https://www.amazon.de/Lichtschalter-Funkschalter-Fernbedienung-Timing-Funktion-Überlastungsschutz/dp/B07G6J3YCF/ref=asc_df_B07G6J3YCF/?linkCode=df0&hvadid=308548802573&hvpos=1o2&hvnetw=g&hvrand=14319132156510178891&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=9068129&hvtargid=pla-561338965806&psc=1&th=1&ref=&adgrpid=60798590145&tag=hktips-forum-21 verwende, um die Fernsteuerung zu ersetzen und das Ding kann man damit in Homebridge einbinden. Du musst das nicht machen, weil du hast deinen Roomba ja schon integriert.
Dann habe ich homebridge-people installiert. Das Plugin checkt, ob ich zu Hause bin. Naja, vielmehr checkt es, ob mein iPhone zu Hause ist.
Und dann habe ich eine Automation in Home erstellt, nach der mein Roomba jeden Montag und jeden Freitag loslegen soll, aber nur, wenn ich nicht zu Hause bin.
Stefan
Der Pfad sieht richtig aus. Du kannst dir mit der TAB-Taste behelfen, also die da links mit dem ->| . Auf die Shell gehen und dort eingeben (nicht kopieren):
ls /Us[TAB]Da[TAB]Lib[TAB]Mob[TAB]com[TAB]Clo[TAB].... und so weiter und sofort. Das [TAB] soll den Druck auf die TAB-Taste symbolisieren, immer dort wo es steht, drückst du auf diese Taste. Das löst eine Komplettierung des Pfades aus, das heißt, du musst das nicht tippen, sondern es geht wie von Zauberhand von allein. Da, wo es nicht weitergehen will, weil vielleicht zwei ähnliche Dateinamen stehen, drückst die TAB-Taste zweimal. Das zeigt die dann an, welche Alternativen es gibt und ob du vielleicht noch einen weiteren Buchstaben tippen musst, bevor du mit TAB weiterkommst. Wenn da ein Leerzeichen kommen sollte, musst du es als "\ " schreiben, also "Backslash Leerzeichen".
Am Ende steht da ein kompletter Pfadname, den du dann kopieren kannst.
Du könntest ihn in config.json auch in Hochkommas setzen, wobei du dann alle \ entfernen musst. Also so was wie:
"off": "'/usr/local/bin/python3 /Users/Daniel/Library/Mobile Documents/com~apple~CloudDocs/VectorScripts/cherge.py'",
Dieses Hochkomma ist da links neben dem Ä über der Raute.
Stefan
Kann mir jemand sagen wie ich /usr/local/bin/python3 /Users/Daniel/Anki-Vector/anki_vector_sdk_examples_0.5.1/tutorials/16_Off_Charger.py direkt oben in die config mit "osascript" bekomme?
Ruf's doch direkt auf:
"on": "/usr/local/bin/python3 /Users/Daniel/Anki-Vector/anki_vector_sdk_examples_0.5.1/tutorials/16_Off_Charger.py"
Stefan
läuft...
![]()
jetzt muss nur noch der Rasen wieder wachsen...
An dieser Stelle kann ich leider nichts für dich tun.
Stefan