433MHz Funksende-Modul in Homebridge einbinden

  • Hallo zusammen!


    Ich schon wieder 8o


    Ich habe eigentlich nur eine (hoffentlich) einfache Frage: Welches Plugin ist am besten/einfachsten dafür geeignet Funksignale direkt vom Raspberry an diverse Senken zu versenden.


    Ich habe aktuell ein paar Funksteckdosen (Brennstuhl mit Dipschaltern für den Hauscode) von denen ich sowohl Hauscode und -nummern, als auch den Ein- und Ausschaltbefehl (über RFSniffer) kenne. Direkt aus dem Terminal kann ich die Funksteckdosen auch nach belieben An- und Ausschlaten.


    Jetzt bin ich auf der Suche nach einem Homebridge Plugin, dass mir die Steckdosen als Steckdosen in Apple Home anzeigt und dafür sorgt, dass der Ein- bzw. Ausschaltbefehl an die Steckdosen gesendet wird.


    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?


    Welche Plugins nutzt ihr für solche arbeiten? Welches läuft am stabilsten? Welches ist am einfachsten zu integrieren in die Homebridge?

  • 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 <X :thumbdown:sollte man besser lassen.


    Stefan

  • Dann werde ich das so mal probieren mit dem einfachen homebridge-cmd!

    Zwei kurze Frage noch dazu:

    Der wird dann in Apple Home als Schalter und nicht als Steckdose angezeigt oder?

    Und in welcher Form trage ich die Befehle ein?

    Code
    "accessories": [
           {
               "accessory": "CMD",
               "name": "PlayStation",
               "on_cmd": "ps4-waker",
               "off_cmd": "ps4-waker standby"
           }
       ]

    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?

  • 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

  • Danke für die detaillierte Antwort Stefan!

    Ich bin wirklich blutiger Anfänger. Bin zwar halbwegs fit in Python-Programmierung, allerdings auch nur von den Grundlagen her (aus dem Studium).


    Ich hab die Homebridge exakt nach der Anleitung von dir hier auf der Seite durchgeführt und bislang noch nichts weiter an diesem Raspberry gemacht. Die funk-Befehle hab ich auch an einem anderen Pi ermittelt.


    Ich werde beides mal testen und anschließend berichten :thumbup:

  • 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:

    Code
    "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

  • Sooo, hab das alles mal gemacht, leider noch ohne erfolg.

    Ich denke aber, dass ich nah dran bin 8o

    Die "steuerung"-Datei ist ein C++ File, was einmalig kompiliert werden muss, damit ich mit dem Befehl ./steuerung 1 die Steckdose einschalte und mit einem Befehl mit anderer Zahl als 1 die Steckdose ausschalte.


    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.

    So sieht die "steuerung"-Datei übrigens aus:

    Ich habe Sie von dieser Seite.


    Wenn diese Datei dann bei jedem Systemstart einmalig kompiliert wird, müsste dann doch mit der folgenden Config alles laufen oder?

    Code
    "accessories": [
            {
                "accessory": "CMD",
                "name": "Plug",
                "on_cmd": "cd /usr/local/bin433Utils/RPi_utils && sudo ./steuerung 1",
                "off_cmd": "cd /usr/local/bin433Utils/RPi_utils && sudo ./steuerung 0"
            }
        ]

    Ich hoffe mein Sohnemann geht heut pünktlich zu Bett damit ich das heute abend noch einrichten kann ^^

  • 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

  • Bin gerade doch noch dazu gekommen und leider geht gar nichts.


    Ich kann zwar immernoch über

    Code
    cd 433Utils/RPi_utils
    sudo ./steuerung 1 #bzw. 0 oder irgendwas anderes zum Ausschalten

    über SSH im Terminal die Steckdose einschalten. In Apple Home wird mir nach dem ersten Versuch allerdings nur ein graues Ausrufungszeichen beim Plug angezeigt und es passiert nichts.

    Code
    "accessories": [
                {
                     "accessory": "CMD",
                     "name": "Plug",
                     "on_cmd": "cd /usr/local/bin/433Utils/RPi_utils && sudo ./steuerung 1",
                     "off_cmd": "cd /usr/local/bin/433Utils/RPi_utils && sudo ./steuerung 0"
                 }
         ]    

    Hab mir dann mal unter cd /usr/local/bin/433Utils/RPi_utils mit sudo nano steuerung.cpp die dort abgelegte Datei angesehen und konnte nur feststellen, dass da kein Fehler ist. Auch kann ich aus dem /usr/local/bin/433Utils/RPi_utils Ordner im Terminal über SSH problemlos die Steckdose ein und Ausschalten. Nur über die Homebridge will das nicht funktionieren...



    Nach einem versuchten Neustart der Homebridge ist das System jetzt wohl gestorben. Ich kann weder per ssh, noch per webUI auf die den Raspberry zugreifen... Es ist echt verhext hier...

  • Hallo Stefan!


    Ich hab es jetzt endlich hinbekommen und es war (natürlich) ein klitzekleiner Fehler in der sudo nano /etc/sudoers.d/homebridge X/

    Da hab ich ein /-Zeichen vergessen und das hat wohl alles blockiert.

    Aus Fehlern wird man klug! Das wird mir mit Sicherheit nicht noch mal passieren.


    Vielen Dank für deine Geduld und deine Hilfe. Bin gerade richtig happy, dass das funktioniert.

  • 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