SwitchBot Smart Home Geräte mit und ohne Homebridge

  • Das Plugin ist echt nicht das Wahre, da hast du Recht

    Das kann man so sagen, wenn man höflich ist. Ich selbst bezeichne es als einen echten... ok, lassen wir das lieber. Das Plugin https://github.com/yujinakayama/homebridge-switchbot beruht letztendlich auf https://github.com/ukiuni/Switchbot, und hier passiert nichts anderes, als dass auf der Shell das Programm gatttool aufgerufen wird. Ohne es ausprobiert zu haben, behaupte ich einfach mal, dass man auch selbst gatttool mit den entsprechenden Parametern auf der Shell aufrufen kann, und wenn das geht, kann man auf homebridge-switchbot verzichten und irgend ein homebridge-cmd verwenden.


    Stefan

  • Zitat

    Das ist mir auch schon aufgefallen gewesen das dass der Schlüssel für das Plugin ist.


    Zitat

    und hier passiert nichts anderes, als dass auf der Shell das Programm gatttool aufgerufen wird.

    Da hast du Recht und das ist ein guter Ansatz hatte ich so noch nicht wahrgenommen obwohl ich es über die offizielle API probiert hatte.



    Zitat

    Ohne es ausprobiert zu haben, behaupte ich einfach mal, dass man auch selbst gatttool mit den entsprechenden Parametern auf der Shell aufrufen kann,

    Bin es gerade am ausprobieren habe bisher eine Verbindung zum SwitchBot herstellen können aber noch nicht geschafft diesen zu Übereden eine Tätigkeit durchzuführen. Mir fehlt noch der action Teil der ihm sagt press, turn.on oder turn.off :/


    sudo gatttool -b F7:D3:3F:4D:D3:93 -t public -I



    Sieht aktuell so aus als ob man erst eine Verbindung herstellen muss zum Gerät und dann das Commando ausführen kann. Hoffe das geht auch alles in einem Schritt sonst würde es über das Kommandozeile und cmd Plugin nicht funktionieren.

    The only way to do great work is to love what you do !

  • sschuste ich glaube das funktioniert nicht da wie ich oben schon geschrieben habe erst eine Verbindung zum SwitchBot aufgebaut wird wenn ich die API richtig lese:


    Code
    gatttool.stdout.on('data', (data) => {
    if (!connectSended && !data.toString().startsWith("connect")) {
    gatttool.stdin.write("connect\n")
    connectSended = true;
    } else if (data.indexOf("Connection successful") >= 0) {

    danach wird erst der Befehl gesendet:


    Code
    gatttool.stdin.write("char-write-cmd 0x0016 " + command[triggerCommand] + "\n")
    setTimeout(() => {
    gatttool.kill();
    resolve();
    }, 1000);
    } else if (data.indexOf("Error") >= 0) {
    gatttool.kill();
    reject();


    Aber ich bekomme den SwitchBot auch manuell nicht über das Gatttool zum Arbeiten nach dem ich eine Verbindung aufgebaut habe.


    Verbinden mit:

    sudo gatttool -b F7:D3:3F:4D:D3:93 -t public -I


    danach Aktion starten mit:

    [F7:D3:3F:4D:D3:93][LE]> char-write-cmd 0x0016 " + press: "570100" + "\n"


    jetzt sollte der SwitchBot eigentlich was machen aber tut er nicht :cursing:


    Wäre schön wenn du es mal ausprobieren könntest ;):?:

    The only way to do great work is to love what you do !

  • Da ich gerade davor sitze, schnell ausprobiert. Auch bei mir keine Reaktion am Bot.


    Code
    [email protected]:~ $ sudo gatttool -b C4:6F:2E:20:7E:5A -t public -I
    [C4:6F:2E:20:7E:5A][LE]> [C4:6F:2E:20:7E:5A][LE]> char-write-cmd 0x0016 " + press: "570100" + "\n"
    [C4:6F:2E:20:7E:5A][LE]>
    [C4:6F:2E:20:7E:5A][LE]> exit
    [email protected]:~ $ sudo gatttool -b C4:6F:2E:20:7E:5A -t public -I
    [C4:6F:2E:20:7E:5A][LE]> [C4:6F:2E:20:7E:5A][LE]> char-write-cmd 0x0016 " + press: "570100" + "\n"
    [C4:6F:2E:20:7E:5A][LE]> [C4:6F:2E:20:7E:5A][LE]> char-write-cmd 0x0016 " + press: "570100" + "\n"
    [C4:6F:2E:20:7E:5A][LE]>
    [C4:6F:2E:20:7E:5A][LE]> exit


    Egal ob push mode oder light switch on/off mode.

    Hilfreich?

  • Jo bei mir auch noch keine Besserung in sicht ^^


    Ich vermute mal es liegt am Befehl wobei er diesen nicht mit eine Fehler quittiert. Muss doch möglich sein das Teil einigermaßen vernünftig in HK einzubinden :/

    The only way to do great work is to love what you do !

  • sschuste Danke.

    Schade, ich hatte gehofft ohne zusätzliche Registrierung und Tool auszukommen.

  • sschuste Danke.

    Schade, ich hatte gehofft ohne zusätzliche Registrierung und Tool auszukommen.

    Was meinst du mit Tool?

    The only way to do great work is to love what you do !

  • die von sschuste erwähnte APP.

    Habe in der Community bei switchbot das hier gefunden.


    Zitat

    Hi. I wrote a script which control SwitchBot.

    https://github.com/akr4/smarthome/blob/master/switchbot

    Note that this uses gatttool.

    You can use it in config.json, like:

    "accessories": [ { "accessory": "Script2", "name": "Switchbot1", "on": "/path/to/switchbot XX:XX:XX:XX:XX:XX ON", "off": "/path/to/switchbot XX:XX:XX:XX:XX:XX OFF", "state": "/path/to/switchbot XX:XX:XX:XX:XX:XX", "on_value": "ON" } ]“

  • Das Skript hatte ich die Tage auch schon gesehen aber war mir zu umständlich mit einem Plugin ein Skript auszuführen etc. daher nicht getestet.


    ABER!!! Dein Hinweis auf das Skript hat die Lösung gebracht:thumbup::thumbup::thumbup:


    Hier ist der Befehl, der auch funktioniert um den Switchbot über die Kommandozeile direkt anzusteuern und damit können wir jetzt ein cmd Plugin unserer Wahl verwenden. PARTY!!!!^^


    gatttool -t random -b XX:XX:XX:XX:XX:XX --char-write-req -a 0x0016 -n XXXXX



    hier die BT Adresse einfügen XX:XX:XX:XX:XX:XX und am ende für die XXXXX müssen die Zahlen des das gewünschte Kommando eingetragen werden.


    570100 = Press

    570101 = ON
    570102 = OFF
    570103 = Hold


    Kleiner Hinweis: Wenn der SwitchBot nicht als Schalter in der Hersteller App konfiguriert ist sonder als Taster dann ist egal welcher Befehl verwendet wird. Er macht immer Press.

    The only way to do great work is to love what you do !

  • Kohle_81 Nö du kannst ja die Funktion ausschalten das er automatisch ausgeht. Danach setzt du als On Befehl:


    570101 = ON


    und das als Off Befehl in deiner Config dann hast du einen Schalter und keinen Taster


    570102 = OFF

    The only way to do great work is to love what you do !

  • Hmmm... ich bekomme gerade das. Keine Ahnung wat nu.


    [email protected]:~ $ sudo gatttool -t random -b C4:6F:2E:20:7E:5A --char-write-req -a 0x0016 -n 570101

    Characteristic Write Request failed: Request attribute has encountered an unlikely error

    Hilfreich?

  • Das ist mir bewusst, aber dann habe ich ja 2 Schalter in HomeKit, was ja erst einmal in ordnung ist.


    Allerdings sehe ich dann aus der App heraus nicht, welchen Zustand der switchbot gerade hat.


    Da wäre es schön, wenn ein Befehl beim abschalten und dann der andere befehl beim ausschalten abgesetzt würden.

  • DJay den gleichen Fehler hat sschuste auch. Wir haben aber noch nicht herausgefunden wieso. Wie hast du deinen Switchbot eingerichtet in der App als Light Switch? Ich habe meinen nicht als Light Switch eingerichtet da ich ihn als Taster benötige.


    Wenn Light Switch dann mal bitte umstellen und nochmal probieren.


    Passwort am Gerät in der App muss deaktiviert sein, könnte auch ein Grund sein falls ihr das aktiviert habt.



    Zitat

    Das ist mir bewusst, aber dann habe ich ja 2 Schalter in HomeKit, was ja erst einmal in ordnung ist.

    Du hast Recht beim cmdtrigger Plugin gibt es nur einen Befehl dann bräuchtest du tatsächlich zwei Schalter für beide Zustände das ist wirklich blöd. Aber das Plugin kann beides: https://github.com/luisiam/homebridge-cmdswitch2


    Hier hättest du genau das was du möchtest abgedeckt ;)

    The only way to do great work is to love what you do !

  • Wenn Light Switch dann mal bitte umstellen und nochmal probieren.


    Passwort am Gerät in der App muss deaktiviert sein, könnte auch ein Grund sein falls ihr das aktiviert habt.

    Leider brachte das auch keinen Erfolg bei mir. Passwort hatte/habe ich keines eingerichtet.

    Umstellung von Light Switch auf Taster auch nicht.

    Hilfreich?

  • DJay Bei mir sieht es so aus:

    Code
    $ gatttool -t random -b F6:D6:3Z:4C:D3:03 --char-write-req -a 0x0016 -n 570100
    Characteristic value was written successfully


    Bin gerade auch etwas ratlos warum es bei dir und sschuste nicht klappt. Bitte entferne mal die Batterie vom SwitchBot und starte den Pi mal neu. Könnte mir vorstellen das ggf. da irgendwo der Fehler ist.


    Bevor du das machst bitte mal noch ohne sudo ausführen, nicht das es da klemmt :S



    Zitat

    Kuck mal, mit diesem plugin müsstest du das Ganze noch als Schloss darstellen können ?


    Ich seh nichts 8o



    Aber wenn du das hier meinst:

    https://github.com/JonesChi/homebridge-cmdlock


    habe ich jetzt erfolgreich im Betrieb. Musste nur einen Bug in der Index.js noch entfernen da das Plugin nicht gestartet ist ;)


    Also wenn jemand ein Schloss benötigt das automatisch abschließt für einen Türsummer in einem Mehrfamilienhaus kann er gerne meinen Fork von dem Plugin nutzen da das aktuelle scheinbar nicht mehr gepflegt wird oder die Index.js aus meinem Fork kopieren.

    The only way to do great work is to love what you do !

  • Leider hat Batterie raus/rein, ohne sudo mit Pi Neustart auch keinen Erfolg gebracht.

    Sehr seltsam.. ;(

    Hilfreich?

  • Kommt bei Euch "Connection successful" ?

    Bei mir nicht. Ich hätte das nach "Attempting to connect..." erwartet.


    Code
    [email protected]:~ $ gatttool -I
    [ ][LE]> connect C4:6F:2E:20:7E:5A
    Attempting to connect to C4:6F:2E:20:7E:5A
    [C4:6F:2E:20:7E:5A][LE]>

    Liegt es vielleicht generell am gatttool? Hab da aber null Ahnung wie check und update etc. sein muss.

    Hilfreich?

  • Mhhh, was für ein OS nutzt du Stretch oder Buster? Ich nutze schon Buster eventuell wurde da was am BT Paket inkl. gatttool geändert weswegen es bei mir jetzt funktioniert und bei euch nicht :/


    Ist hier irgendjemand der Erfolg vermelden kann mit dem oben beschriebenen Befehlen für den SwitchBot außer mir?

    The only way to do great work is to love what you do !