homebridge-cmdswitch2 - Beispiele, Ideen, Fragen

  • Hallo,


    anbei ein paar Beispiele, was man mit "homebridge-cmdswitch2" z.B. machen kann:


                        "name": "Pi LED",
                        "on_cmd": "sudo sh -c 'echo 255 > /sys/class/leds/led1/brightness'",
                        "off_cmd": "sudo sh -c 'echo 0 > /sys/class/leds/led1/brightness'",
                        "state_cmd": "cat /sys/class/leds/led1/brightness|grep 255 >/dev/null",
                        "polling": true,
                        "interval": 30

    Schaltet die rote LED am PI3B an oder aus.


                        "name": "Homebridge-LGTV",
                        "on_cmd": "sudo -n systemctl start homebridge-lgtv",
                        "off_cmd": "sudo -n systemctl stop homebridge-lgtv",
                        "state_cmd": "systemctl is-active --quiet homebridge-lgtv",
                        "polling": true,
                        "interval": 5
    Stoppt oder startet eine andere Homebridge Instanz.


                        "name": "Tunnel",
                        "state_cmd": "ping -c 2 -W 1 10.8.0.1 | grep -i '2 received' >/dev/null",
                        "polling": true

    Zeigt die erreichbarkeit einer IP an - wobei mir da ein Sensor lieber wäre.

  • Ich suche eine Möglichkeit einen Befehl auszuführen der dann eine Aktion auf dem anderen Raspberry schaltet. Ich will das Plugin nicht zweimal auf unterschiedlichen Raspberry's installieren. Geht das mit dem CMDswitch2 Plugin oder einem anderen CMD Plugin?

  • ich benutze das CmdTriggerSwitch Plugin

    Code
    {
    
                "accessory": "CmdTriggerSwitch",            "name": "MMirror2 neustart",            "stateful": false,            "onCmd": "sudo ssh [email protected] /usr/bin/pm2 restart mm",            "offCmd": " ",            "delay": 3,            "delayUnit": "s"        },

    Hier meldet pi sich per ssh auf dem anderen Raspberry an und führt einen Befehl aus.

    :)

  • Genau diesen Befehl habe ich gesucht. Danke det

  • Hallo,


    möchte über ein HTTP Request nach Conrad Connect ein Gerät schalten, aber er sagt mir ständig einen Syntaxfehler:


    "platforms": [{

    "platform": "cmdSwitch2",

    "name": "CMD Switch",

    "switches": [{

    "name" : „Leuchte42“,

    "on_cmd": "curl -d {} -H "Content-Type: application/json" -X POST "https://dashboard.conradconnect.de/api/webhook/maker?event=leuchte42&key=KEY““

    }]

    }]


    Bräuchte hier ein cURL und die Parameter KEY wird durch meinen eigenen Schlüssel ersetzt.


    Aber ich krieg´s nicht zum laufen!


    Hat jemand ne Idee?

    Danke Markus

  • Bin jetzt geswitched zum CmdTriggerSwitch Plugin, aber es läuft nicht - der gleichen Befehl in Postman funktionert aber:


    "accessories": [
    {
                "name": "Leuchte42",
                "stateful": false,
                "onCmd": "curl -d {} -H \"Content-Type: application/json\" -X POST \"https://dashboard.conradconnect.de/api/webhook/maker?event=leuchte42&key=KEY“",
                "accessory": "CmdTriggerSwitch"
    }
    ]

  • "on_cmd": "curl -d {} -H "Content-Type: application/json" -X POST "https://dashboard.conradconnect.de/api/webhook/maker?event=leuchte42&key=KEY““

    Das geht so nicht. Da sind viel zu viele Anführungszeichen in und um deinen curl-Befehl. Erlaubt sind aber nur zwei, nämlich eins am Anfang und eins am Ende.


    "on_cmd": "curl-Befehl"

    So muss das aussehen und nicht etwa

    "on_cmd": "curl-"Befehl""


    Dein Kommando wird nämlich interpretiert als

    "on_cmd": "curl -d {} -H ". Immerhin ist da ja ein Anführungszeichen hinter dem -H. Damit ist der String beendet und der Rest wird als überflüssiges Zeugs angesehen.


    Anführungszeichen innerhalb von Anführungszeichen geht nicht. Wenn Anführungszeichen innerhalb von Anführungszeichen benötigt werden, müssen die "innenliegenden" Anführungszeichen mit einem \ maskiert werden. Aus deinem Befehl wird dann also:


    "on_cmd": "curl -d {} -H \"Content-Type: application/json\" -X POST \"https://dashboard.conradconnect.de/api/webhook/maker?event=leuchte42&key=KEY\""


    Darüber hinaus ist das Ende deines Strings falsch. Bei dir heißt es:

    &key=KEY““, was ich mal durch Leerzeichen etwas deutlicher machen will:

    &key=KEY “ “


    Das dahinten sind keine Anführungszeichen, sondern irgendein moderner Schnickschnack, den dir ein nichttauglicher Editor da einfach mal hingemalt hat, nur damit's schöner aussieht. Ein Anführungszeichen ist ein Shift-2:

    " und nicht ein


    Vielleicht kannst du den Unterschied erkennen. Das ist kein Anführungszeichen, das ist Deko.

  • Kommandos auf einem entfernten RPI oder Linux ausführen.

    Dazu muss vorher der SSH Login via Zertifikat funktionieren.

    Für den Homebridge User (z.B. config-ui-x Service) kann man das sehr gut über das Terminal auf der Webseite machen.


    Code
    "name": "Pi3 LED",
    "on_cmd": "ssh [email protected] 'sudo sh -c \"echo 255 > /sys/class/leds/led1/brightness\"'",
    "off_cmd": "ssh [email protected] 'sudo sh -c \"echo 0 > /sys/class/leds/led1/brightness\"'",
    "state_cmd": "ssh [email protected] 'cat /sys/class/leds/led1/brightness|grep 255 >/dev/null'",
    "polling": true,
    "interval": 30,
    "serial": "999"
  • Beispiel Steuern und Überwachen: