Beiträge von sschuste

    Wenn deine Homebridge mit der gleichen Pin und überhaupt mit der gleichen Konfiguration wie vorher läuft, dann musst du nichts weiter unternehmen. Für HomeKit wäre es dann genauso, als hättest du deine Homebridge für eine Weile aus- und dann wieder eingeschaltet. Alle an die Homebridge angeschlossenen Geräte sind in einem solchen Fall sofort wieder ansprechbar. Ich weiß nicht, was jetzt bei dir anders ist als vorher.


    Den Trick, den du wahrscheinlich meinst, bezog sich auf das Einrichten einer ganz neuen Homebridge, aber das ist ja nicht das, was du eigentlich willst.

    Und zur Sicherheit noch mal mit curl bitte:

    curl http://192.168.178.14/tgi/control.tgi?p=l


    Ich schätze mal, da kommt dann das dabei heraus:

    <html>0 0 1 0</html>


    Falls wirklich das dabei herauskommt, dann füttern wir diesen Output an ein neues Skript, das wir einfach status.sh nennen. Das erstellst du genauso wie bereits das andere Skript:

    • Konsole der Weboberfläche der Homebridge öffnen.
    • Dort eingeben sudo nano status.sh. Dort den folgenden Code eingeben:
    Bash
    #!/bin/bash
    STRING=$(curl -s http://192.168.178.14/tgi/control.tgi?p=l)
    PORTS=$(echo $STRING | sed -e 's/<[^>]*>//g')
    STATE=$(echo $PORTS | cut -d " " -f $1)
    
    echo $STATE
    • Absichern mit control-x (oder strg-x), dann y, dann die Entertaste.
    • Eingeben: chmod +x status.sh
    • Jetzt muss die Plugin-Konfiguration geändert werden. Also in der Weboberfläche der Homebridge auf Plugins klicken, dann auf die drei überlanderliegenden Punkte des Plugins Homebridge Cmdswitch2, dort dann auf Einstellungen. Dann den dort vorhandenen JSON-Code durch das folgende ersetzen:
    • Speichern und Homebridge neu starten.

    Das sorgt dafür, dass die Anzeige in HomeKit dem Status deines Gerätes entspricht, auch wenn du es außerhalb von HomeKit schaltest. Das Plugin checkt jetzt alle 3 Sekunden ("interval": 3), wie der Status ist und setzt die Anzeige in der Home-App auf den richtigen Wert.


    Alles Theorie: ich habe ja keine Möglichkeit, das zu testen. Ich habe daher eine kleine Umgebung aufgebaut, die deine NetIO soweit simuliert, dass ich eine Antwort wie 0 1 0 0 bekomme. In der Simulation funktioniert es bestens.

    So, kommen wir zu Teil 3: das Homebridge-Plugin.

    • Logge dich auf der Weboberfläche der Homebridge ein.
    • Klicke links im Menu auf Plugins.
    • Gib im Suchfeld oben den Suchbegriff homebridge-cmdswitch2 ein. Das zu installierende Plugin wird angezeigt.
    • Klicke den nach unten zeigenden orangenfarbigen Pfeil. Das Plugin wird installiert und danach in der Liste deiner installierten Plugins angezeigt.
    • Klicke dort rechts unten auf die drei übereinanderliegen Punkte. Im darauf auftauchenden Menu klickst du auf Einstellungen. Ein leeres Eingabefenster öffnet sich. Dort fügst du die folgenden Zeilen ein:

    Achtung: ich habe mir alle Mühe gegeben, diesen JSON-Code richtig zu schreiben. Dieses Geflecht aus Klammern, Kommas und Anführungszeichen verzeiht keine Fehler. Du wirst es solange nicht speichern können, solange es nicht korrekt ist. Die Weboberfläche checkt den Code und speichert ihn nur, wenn er gut aussieht. Damit schützt die Weboberfläche die gesamte Homebridge. Wir hatten damals viel Spaß damit, als es noch keine Weboberfläche gab (ich weiß, Opa erzählt vom Gipskrieg).

    • Dann wollen wir mal: klicke auf Speichern. Wenn irgendwas nicht stimmt, taucht rechts unten im Browser ein rotes Warnfenster auf. Wenn's klappt, dann wirst du aufgefordert, die Homebridge neu zu starten.
    • Klicke auf Neustart.
    • Nimm dein iPhone, starte die Home-App und sieh mal, was du Hübsches im Standardraum vorfindest.

    Viel Spaß.

    Super. Damit ist Teil 1 abgeschlossen. Jetzt bauen wir das Bash-Script - Teil 2. Und da machen wir es uns einfach.

    Bash: switch.sh
    #!/bin/bash
    
    curl http://192.168.178.14/tgi/control.tgi?l=p:admin:admin
    curl http://192.168.178.14/tgi/control.tgi?port=$1
    curl http://192.168.178.14/tgi/control.tgi?q=q


    Das ist das Skript. Das muss jetzt auf deinen Raspi. In der Konsole gib ein:


    sudo nano switch.sh


    Dann kopierst du die fünf Zeilen des Skripts und fügst sie in der Konsole ein. Das Ganze speicherst du ab, indem du control-x drückst, danach y und dann die Entertaste drückst. Wenn du einen Windows-PC hast, drückst anstatt control-x die Kombination strg-x. Du landest wieder auf der Kommandozeile.


    Gibt nun ein chmod +x ./switch.sh


    Du kannst das Script nun testen, indem du es mit ./switch.sh 1uuu aufrufst. Oder mit ./switch.sh 0uuu.

    Schaltet es richtig? Ich kann's ja hier nicht ausprobieren.


    Für Teil 3 muss ich wissen, was der Befehl pwd auf der Kommandozeile ergibt.

    @ sschuste: Bin leider ein anfänger! Wie würde ich Ihren Code installieren?

    Wenn es um Computer geht, sind offenbar 99,99% der Anwender Anfänger und viele haben sogar Angst davor. Wenn's ums Autofahren mit 220 auf der Autobahn geht, dann ist niemand Anfänger und keiner hat Angst. Nur mal so.


    Auf fremden Computern Software zu schreiben und zu installieren ist ungefähr so einfach wie jemanden telefonisch zu erklären, wie man eine Krawatte bindet. Weil so eine Krawatte nämlich ein kurzes und ein langes Ende hat und darüber hinaus auch noch breites und ein schmales. Den Spaß gönnen wir uns doch mal.


    Das ist eigentlich eine Sache von 10 Minuten - für mich. So schnell werden wir das hier nicht hinbekommen. Ich habe die Aufgabe in drei Teile zerlegt und wir beide machen jeden Teil einzeln solange, bis er funktioniert. Dann gehen wir zum nächsten über. Wahrscheinlich dauert das ein paar Tage, so wie wir beide halt Zeit haben.


    Am einfachsten ist es, du benutzt die Konsole im Webinterface der Homebridge. Dort kannst du Linux-Befehle eingeben. Also anklicken und ein schwarzes Fenster öffnet sich.


    Teil 1. Gib ein:

    curl http://192.168.178.14/hash?blafasel=blub (du kennst die Anmelde-URL besser als ich)

    curl http://192.168.178.14/tgi/control.tgi?port=0uuu (auch hier bitte den richtigen Code verwenden)


    Der Befehl curl ist sozusagen dein Webbrowser für die Kommandozeile und alles, was du sonst im Browser siehst, wird jetzt in dem schwarzen Fenster angezeigt. Das kann ziemlich hässlich aussehen. Aber uns interessiert hier nur, ob dein Gerät schaltet oder was ansonsten passiert.


    Fehlermeldungen bitte hier komplett posten, auch den Befehl, den du angegeben hast. Erfolgsmeldungen bitte auch hier reinschmeißen. Immer daran denken, dass niemand hinter dir steht und dir über die Schulter schaut, also ist jede Info, die wir hier von dir bekommen können, wichtig.

    Wenn ich den Befehl jedes Mal senden könnte, wäre ich auf der sicheren Seite (dieser wird zum Login benötigt)

    Das wäre mit dem von Kohle_81 vorgeschlagenen Plugin möglich.


    Im Beispiel unten arbeite ich mit Phantasie-URLs. Du kennst die richtigen. Das Skript wird mit dem Befehl switch.sh on oder switch.sh off aufgerufen. Wird der Parameter on verwendet, dann sendet das Skript via curl zwei unterschiedliche Requests - einer zum Login, der andere zum Einschalten. Wird der Parameter off verwendet, dann sendet das Skript via curl den Ausschalt-Request.

    Das Plugin hätte dann diese Konfiguration:

    Das alles habe ich nicht ausprobiert. Es soll nur die Methode veranschaulichen

    ERROR: Could not find a version that satisfies the requirement pyairctri (from versions: none)

    Oh geil. Das ist exakt der Augenblick, an dem ich mich großen Mengen an wohlartikulierter Fäkalsprache hingebe. Die Forenregeln verbieten es mir, da weiter ins Detail gehen.


    Ich streiche die Segel. Tatsächlich könnte dir aber chatGPT helfen. Vielleicht. Das Ding ist gar nicht so schlecht bei Problemen wie diesem. Gib chatGPT deine Anfangsfrage ein und sieh, was es daraus macht. Schmeiß ihm dann die Fehlermeldungen rein.


    Ich verwende seit 2020 einen Xiaomi Mi Smart Standing Fan 2 (Modell zhimi.fan.za4) mit dem Plugin homebridge-xiaomi-fan. Der war damals mit irgendwas um die 100€ ziemlich teuer, aber er ist dafür auch suuuuperleise. Hat sogar einen Akku und lässt sich daher auch in jeder beliebigen Wüste verwenden. Es ist noch völlig unklar, ob das Plugin mit der kommenden Homebridge 2 funktionieren wird.

    Ich hoffe du hast das jetzt nur kopiert und nicht neu geschrieben

    Tja, das hoffst du offenbar so vor dich hin ;) . Um nur eine Homebridge laufen zu lassen, lohnt sich Docker eigentlich nicht. Wie oben erwähnt: in komplexen Setups ist es sinnvoll. Damit meine ich Systeme, auf denen dann neben Homebridge auch noch viel anderer Krempel läuft. Das ist bei mir der Fall, und wenn mir mal das System wegfliegt, dann brauche ich jetzt nur noch zwei Stunden Restore-Zeit statt 20. Das war die treibende Kraft hinter meiner Docker-Umgebung.

    Aber ich frage mich ja als Laie immer noch, ob es denn überhaupt funktioniert zwischen dem Ventilator und Homebridge?

    Was weiß ich? Da ich diesen Ventilator nicht verwende, bin ich da genauso Laie.

    ModuleNotFoundError: No module named 'pyairctrl'

    Aha. Modul fehlt. Versuchs mal mit

    /home/piadmin/venv/bin/pip3 install pyairctrl

    Besteht denn vielleicht die Möglichkeit den Ventilator in eine andere App wie Tuya zu verbinden und darüber Richtung Homebridge zu gehen?

    Das glaube ich nicht. Tuya wurde meiner Meinung nach gegründet, um Rechnungen für Tuya-Geräte zu schreiben und nicht, um kostenlos Philips zu supporten. Aber ich mag mich täuschen.

    Ich war zu faul, das noch mal in einer umfassenden Anleitung darstellen, und außerdem wäre das schon wieder so eine sschuste-Lösung, die dann nur von mir supported werden kann. Darauf habe ich nun aber überhaupt keine Lust, und da sich heutzutage jedermann eine fertige Homebridge in 30 Minuten erstellen kann, ist es in meinen Augen auch nicht notwenig.


    Die Docker-Lösung hat so ihre Vorteile und auch - wer hätte es gedacht? - ihre Nachteile. Der Vorteil ist, dass man weniger Zeugs backupen muss, was bei mir aufgrund des komplexen Setups eine große Rolle spielt. Der Nachteil ist, dass ich bei Updates von Node immer ein paar Wochen hinterher hänge, aber das stört mich nicht sonderlich.


    Ich versuch's mal in ganz kurzer Form, was eigentlich nicht geht, weil das Arbeiten mit Docker ein paar Kenntnisse braucht.


    Um einen Docker-Container zu betreiben, braucht man das Programm Docker, dass man auf dem Raspi installieren muss. Theoretisch könnte man das auch auf einem Mac oder Windows-PC installieren, aber aus bestimmten Gründen, auf die ich hier nicht eingehen werde, funktioniert das nicht für eine Homebridge. Also braucht man ein Linux-Betriebssystem für Docker und der Raspi hat eins. Manche NAS haben schon ein Docker drauf und dann kann man auf den Raspi verzichten.


    Hat man Docker installiert, dann braucht man ein Homebridge-Docker-Image (ist was anderes als das Homebridge-Image, dass man sonst verwendet). Mit der Docker-Software wird das Homebridge-Docker-Image aus dem Netz heruntergeladen und gestartet. Sobald es gestartet ist, spricht man von einem Docker-Container.


    Das Homebridge-Docker-Image enthält ein Linux-Betriebssystem und die Homebridge-Software. Das mitgelieferte Linux ist so minimiert, dass es gerade ausreicht, dass die Homebridge läuft. Das macht das Docker-Image sehr klein, viel viel kleiner als das Image, das man sich auf eine SD-Card flasht, geradezu winzig dagegen. Dafür kann es aber auch nur die Homebridge betreiben und nichts anderes. Wenn man noch was anderes braucht wie beispielsweise einen MQTT-Broker, dann kann das nicht auf dem laufenden Homebridge-Docker-Container installiert werden. Achtung Spoiler: dann installiert man neben dem Homebridge-Container noch einen MQTT-Container.


    Das ist der wesentliche Unterschied zu dem Homebridge-Image, das man sich auf die SD-Card flasht: hier kann man nur ein einziges vorgefertigtes System auf dem Raspi verwenden. Mit Docker kann man viele vorgefertigte Systeme auf dem Raspi verwenden.


    Docker hat keine Benutzeroberfläche, die muss man extra installieren. Die großen Kinder verzichten darauf und machen alles per Befehlszeile. Alte Säcke wie wir, die sich nix merken können, verwenden was zum Klicken. Nach der Installation von Docker empfiehlt sich die Installation von Portainer - ebenfalls per Docker in einen laufenden Docker-Container.


    Ich empfehle für die Installation eine frische SD-Card, so dass deine jetzige Homebridge-Installation unbehelligt bleibt. Ich empfehle den Einsatz des Programms Raspberry Pi Imager zum Vorbereiten der frischen SD-Card. Ich empfehle die Wahl des Betriebssystems Raspberry Pi OS Lite (findet sich unter Raspberry Pi OS (other)).


    Also:

    Login auf den Raspi und Docker installieren:

    sudo apt-get install docker


    Ein paar Verzeichnisse anlegen (genau diese Stelle ist die sschuste-Lösung):

    sudo mkdir -p /docker/volumes /docker/portainer


    Eine Docker-Installationsdatei schreiben:

    sudo nano /docker/portainer/compose.yaml


    Hier einfügen:

    Abspeichern und nano verlassen.


    Portainer installieren und starten:

    docker-compose -f /docker/portainer/compose.yaml up -d


    Das dauert ein wenig und macht komische Zahlenreihen auf den Bildschirm. Lässt einen vor unbedarften Computernutzern wie einen Superhelden aussehen. Man kann sich den laufenden Container anzeigen lassen mit docker ps.


    Jetzt ist die Klinik-Bunti-Oberfläche eingerichtet und kann genutzt werden. Wir nutzen die jetzt zum installieren des Homebridge-Images.


    Bevor du weiter machst, solltest du deine alte Homebridge stoppen.


    Einen Browser aufrufen, dort in die Adresszeile eingeben:

    https://IP-DES-RASPI:9443


    Jetzt sollte sich was rühren. Ich hab vergessen, was genau. Ein Login, du musst irgendwie ein Passwort setzen, ich weiß es nicht mehr. Auf jeden Fall landest du irgendwann hier (siehe Bild unten):

    • Klicke Live Connect.
    • Klicke links im blauen Bereich auf
    • Klicke rechts oben auf den blauen Button Add Stack.
    • Gib unter Name Homebridge ein.
    • Klicke auf Web editor.
    • Füge unten im Web-Editor ein:
    • Klicke ganz unten den blauen Button Deploy the stack.
    • Warten. dauert ein paar Minuten. Irgendwann wird dir signalisiert, dass der Container läuft.
    • Fahre mit der normalen Homebridge-Arbeit fort, also einloggen über den Browser etc. Spiele das Backup deiner alten Homebridge ein.


    So. Das alles hab ich jetzt ohne es auszuprobieren geschrieben. Vielleicht fehlt was. Vielleicht geht irgendwas anders. Versuchs mal.

    Sagt mir ja nicht so viel, sieht aber doch erst mal für mich ganz gut aus und nicht wieder nach klarer Fehlermeldung.

    Ja, das sieht gut aus. Aber leider heißt das alles noch wenig. Du hast jetzt irgendwohin Software installiert, das weißt du und das weiß ich und das weiß auch das erstaunte Publikum hier, aber ich fürchte, dass es deine Homebridge es noch nicht weiß.


    Die Welt steckt inzwischen voller KI, nur unsere eigenen Computer sind megablöd. Wenn du weiterhin Probleme bei der Installation des Plugins hast, dann gib mal

    source /home/piadmin/venv/bin/activate

    ein und versuche die Installation erneut. Allerdings sagt mir irgendwas im vorderen Teil meines Verdauungstraktes, dass das noch nicht helfen wird.


    Was wir erreichen müssen ist, dass die Homebridge beim Starten von deiner Python-venv-Installation erfährt und ich weiß nicht, wie deine Homebridge gestartet wird. Früher wusste man sowas mal, heutzutage knallt man sich ein fertiges Homebridge-Image drauf, klickert in der Weboberfläche herum und kümmert sich nicht weiter drum. Und ich selbst verwende Homebridge nicht mal mit diesem Image, sondern in einem Docker-Container. Da sieht die Installation ein wenig anders aus. Daher schwimme ich hier ganz schön.

    E: Unable to locate package python3-aioairctrl

    Wie erwartet: dieses Paket gibt es nicht. Also muss diese venv-Lösung her.

    Zitat von MCP

    piadmin@raspberrypi:/var/lib/homebridge $ python3 -m venv /home/pi/venv

    Error: [Errno 13] Permission denied:'/home/pi'

    Tja. Nicht mein Computer. Ich kann nur raten. Versuch mal


    python3 -m venv /home/piadmin/venv.

    /home/piadmin/venv/bin/pip3 install -U git+https://github.com/Peter-J/aioairctrl

    Ich kann nicht ausprobieren. Die Fehlermeldung ist eindeutig:


    To install Python packages system-wide, try apt install

    python3-xyz, where xyz is the package you are trying to

    install.

    Ich übersetze mal: Um Python-Pakete systemweit zu installieren, versuche sudo apt install

    python3-aioairctrl. Ich fürchte nur, das wird nicht funktionieren, da das Paket wahrscheinlich nicht existiert.


    Dann heißt es:

    If you wish to install a non-Debian-packaged Python package,

    create a virtual environment using python3 -m venv path/to/venv.

    Wenn Du ein Python-Paket installieren möchtest, das nicht von Debian bereitgestellt wird,

    erstelle eine virtuelle Umgebung mit python3 -m venv /home/pi/venv.


    Danach wird's dann wahrscheinlich hässlich und ich muss jetzt raten. Vielleicht führt dann ein

    home/pi/venv/bin/pip3 install -U git+https://github.com/Peter-J/aioairctrl zu irgendwas. Ok, auf jeden Fall führt das zu irgendwas, bloß ob es nice & shiny aussieht, wage ich noch zu bezweifeln.


    Ich kann's jedenfalls nicht einfach so aus der Hüfte. Python-Hardcore-User müssen ran und ich bin keiner.

    Die Meldung bedeutet nichts anderes, dass auf einem Gerät mit der IP-Adresse 192.168.178.XX der Port 80 nicht geöffnet ist. Ein Port ist immer dann offen, wenn ihn eine Serversoftware, die auf dem Gerät installiert und gestartet ist, öffnet. Port 80 wird im Allgemeinen durch Webserver-Software geöffnet.


    Entweder ist die IP-Adresse falsch oder der Port. Mehr ist der Fehlermeldung nicht zu entnehmen.