Http Schalter 2 Wege mit Grundbefehl.

  • Hallo Community,


    Ich habe Homebridge auf einem Synology Nas in Docker installiert. Hierüber möchte ich nun gerne mit einem Schalter HTTP befehle senden. Damit könnte ich dann meine netIO 230B steuern.

    Wenn der Schalter also auf ausgestellt wird, soll er beispielsweise (http://192.168.178.14/tgi/control.tgi?port=0uuu) ausführen. Stelle ich den Schalter nun auf an, soll ein weiterer, ähnlicher Befehl ausgeführt werden. Bevor aber irgendein Ausgang geschaltet wird, muss ein HTTP Befehl zum anmelden gesendet werden (ähnlich wie mein Beispiel).


    mit welchem Plugin geht das?

    leider wurde ich bei meinem stöbern in den anderen Foren noch nicht fündig.

    Ich hoffe, ihr könnt mir helfen


    Gruß

    Georg

  • Bevor aber irgendein Ausgang geschaltet wird, muss ein HTTP Befehl zum anmelden gesendet werden (ähnlich wie mein Beispiel).

    Jedesmal? Mir ist kein Plugin bekannt, mit dem man zwei HTTP-Requests senden könnte.

  • Wenn ich den Befehl jedes Mal senden könnte, wäre ich auf der sicheren Seite (dieser wird zum Login benötigt) - welches Plugin kann den Http unterschiedliche http Befehle bei An / Aus senden?

    Einmal editiert, zuletzt von Georg112 ()

  • Wenn du einfach je einen Schalter für „An“ und einen für „Aus“ nimmst?


    Auf die Schnelle habe ich dieses Plugin entdeckt:


    GitHub - luisiam/homebridge-cmdswitch2: CMD Plugin for HomeBridge (API 2.0): https://github.com/nfarina/homebridge
    CMD Plugin for HomeBridge (API 2.0): https://github.com/nfarina/homebridge - luisiam/homebridge-cmdswitch2
    github.com



    Hatte es aber nie in Verwendung….

  • 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

  • @ Kohle 81: Vielen Dank für deinen Vorschlag, ich schaue mir das mal an.


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


    Vielen Dank für eure Unterstützung!!!

  • @ 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.

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

  • sudo nano switch.sh erstellt eine Datei mit Dateinamen switch.sh (Dabei öffnet sich ein neues Fenster im Terminal). Wenn schon die Anlage der Datei mit bash: su Georg: command not found fehlschlägt, bitte dann nicht einfach weiter die Befehle ins Terminal hacken.


    Das hier:

    Bash
    #!/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

    kommt IN die Datei (die bis dato noch nicht erstellt wurde), nicht als einzelne Befehle ins Terminal.


    Wenn du zum User "Georg" wechseln willst muss das in zwei Schritten erfolgen, weil su nur den User erwartet, nicht noch ein nano.


    Code
    su Georg
    nano switch.sh

    alternativ:

    Code
    sudo -u Georg nano switch.sh

    Wobei ich behaupte, dass das Script unter root angelegt werden muss bzw. sollte.

  • Hallo sschuste, Hallo Patrick_,


    vielen Dank für eure Hilfe! Mit dem Code:

    su Georg

    nano switch.sh


    konnte ich die Datei erstellen und sschustes Befehle ausführen!

    Anbei wieder meine Ergebnisse:

  • Hat dein netIO-Device auch geschaltet oder nicht? Und wer ist Georg? Ich geh jetzt ersma Bier trinken.

  • 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ß.

  • Hey sschuste,


    Danke vielmals für die Unterstützung! Ich freue mich sehr, nun funktioniert alles :) !


    Gibt es die Möglichkeit, den Code so anzupassen, dass nachgeschaut wird, ob ein Ausgang bereits aktiviert ist? In meinem Fall war der Ausgang StarTech aktiviert, wurde in der Home App aber als deaktiviert angezeigt.

  • Das liegt daran, weil das Homebridge Plugin keinen Status von deiner netIO 230B Netzwerk-Steckdose überträgt. Es ist eine einseitige Verbindung, nur in eine Richtung (Homebridge > Steckdose). Homebridge und auch Homekit kennen den "wahren" Status nicht. wenn du also den Ausgang anderweitig ein/ausschaltest ist er schon nicht mehr synchron mit der Anzeige in der Home App.

    Du brauchst ein Homebrdige Plugin das z.B. alle 5 Sekunden die einzelnen Ausgänge der Mehrfachsteckose pingt/abfrägt und entsprechend den Status in Homekit aktualisiert.


    Das ist was ChatGPT sagt wie das Script aussehen muss (Auf eigenes Risiko!), wenn du z.B. nur einschalten willst, wenn es wirklich aus ist und nicht bereits an.


    Ändert aber trotzdem nichts an der Anzeige in der Home App. Die bleibt falsch (Der CURL Befehl zum Login, Status abrufen wird trotzdem gesendet und die Anzeige in der Home App geändert, es passiert nur an der Steckdose nichts)


    Einmal editiert, zuletzt von Patrick_ ()

  • Gibt es die Möglichkeit, den Code so anzupassen, dass nachgeschaut wird, ob ein Ausgang bereits aktiviert ist?

    Das ist eine gute Frage. Das Plugin könnte es tatsächlich, aber kann es deine netIO? Du hast oben eine URL angegeben, die ich nicht verstanden und daher einfach mal ignoriert habe


    Status abfragen: (1=on; 0=off)

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


    Was kommt denn da zurück?

  • https://cdn-reichelt.de/documents/datenblatt/C610/LAN_NETIO230B_DB_DEU.pdf