SwitchBot Smart Home Geräte mit und ohne Homebridge

  • @vgnsxe Postest Du mal bitte den Teil aus Deiner Config für die SwitchBots jetzt mit dem Eintrag von homebridge-cmdtriggerswitch.


    Vielleicht liegt es bei mir auch irgendwie nur an dem falschen Befehl fürs Gatttool. Werd ich dann sehen was Du eingetragen hast. Dank Dir.

    Hilfreich?

  • Code
     {
                "accessory": "CmdTriggerSwitch",
                "name": "Powerbutton",
                "stateful": false,
                "onCmd": "gatttool -t random -b XX:XX:XX:XX:XX:XX --char-write-req -a 0x0016 -n 570101",
                "offCmd": "gatttool -t random -b XX:XX:XX:XX:XX:XX --char-write-req -a 0x0016 -n 570102",
                "delay": 1000
            },
  • Hello guys :)

    sorry for English.

    This is the only place i found with useful information about SwitchBot & HomeKit.

    First of all, thanks for article and for discussion.

    I have 2 SwitchBots and I have FlowerCare plugin. As you know, they are not working simultaneously on the one Raspberry Pi.

    I found temporary solution, how to do that.


    Idea is, if you want to use SwitchBot, you need to stop FlowerCare before it and start it again after using SwitchBot.


    How to do this:


    1. Move FlowerCare plugin to dedicated Homebridge instance (on the same RPi) If you don't know hot to do it, read this:

    Externer Inhalt gist.github.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    2. Create virtual switch (with plugin cmdSwitch2)

    this is my example code for switch

    {

    "name": "HB-6",

    "on_cmd": "sudo -n systemctl start homebridge@6",

    "off_cmd": "sudo -n systemctl stop homebridge@6",

    "state_cmd": "sudo -n systemctl status homebridge@6 | grep -i 'active (running)'"

    }

    Now you can control FlowerCare HB instance by this switch, you can stop it & start in again.


    I created simple automation:

    1. Stop FlowerCare Homebridge

    2. Wait 5 sec

    3. start SwitchBot

    4. Wait 2 sec

    5. Start FlowerCare

    That's all)


    I know this solution is not very good, but it's really work ?(

  • I don't use the FlowerCare plugin but a Python script to get the sensor data. This allows the plant sensors to be queried and the Switchbot to be operated - simultaneously.


    I use a program called miflora-mqtt-daemon.py for this purpose. This program queries the status of the sensors and sends them to a MQTT server. I simply installed mosquitto and started it without further configuration. To get the data into Homebridge I installed the plugin homebridge-mqttthing that queries the MQTT server.


    Ok, this is not a simple solution, even if it is easy to install and configure. On the other hand it's not more complex than stopping and starting instances.

  • I don't use the FlowerCare plugin but a Python script to get the sensor data. This allows the plant sensors to be queried and the Switchbot to be operated - simultaneously.


    I use a program called miflora-mqtt-daemon.py for this purpose. This program queries the status of the sensors and sends them to a MQTT server. I simply installed mosquitto and started it without further configuration. To get the data into Homebridge I installed the plugin homebridge-mqttthing that queries the MQTT server.


    Ok, this is not a simple solution, even if it is easy to install and configure. On the other hand it's not more complex than stopping and starting instances.

    your method looks much more better :thumbup:

    i have to try it

    Could you please show example config for homebridge-mqttthing plugin

  • The configuration shows both methods for the plant sensors as for the switch bot as well. The switch bot is used by me as a door opener (Türöffner) and I use a shell command to operate it. This is done with homebridge-cmdtrigger.


    The rest is the mqttthing configuration for three plants (Dracaena, Fittonia, and Schnittlauch):


  • The configuration shows both methods for the plant sensors as for the switch bot as well. The switch bot is used by me as a door opener (Türöffner) and I use a shell command to operate it. This is done with homebridge-cmdtrigger.


    The rest is the mqttthing configuration for three plants (Dracaena, Fittonia, and Schnittlauch):


    thanks,

    its works 8)

    it seems mqttthing doesn't support combined sensors yet

    but it is not a big problem, i think

  • Neu und im Moment wohl nur für macOS Nutzer.

    https://github.com/zizi4n5/homebridge-switchbot-for-mac


    Erfahrungsbericht, gerne hier. :)

    Ist wohl noch zu frisch... klappt nicht bei mir

  • Moin, der switchbot eignet sich perfekt um die Tür aufzumachen, habe so eine Gegensprechanlage die nicht mit Nello kompatibel ist. Welche Idee habt ihr wie man das realisiern könnte, sobald es klingelt eine Benachritigung über Homekit zu bekommen? Man könnte ja schon mal den Lautsprecher der Klingel anzapfen aber mit was? Gibts da schon was? Würde gern dem Postboten die Tür aus der Ferne öffnen können.

  • Hey zusammen,


    ich bin froh, diesen Thread gefunden zu haben, da ich eine Lösung für meinen SwitchBot suche, die mir bis dato keiner beantworten konnte.


    Ich bin bis dato nicht im Besitz eines Pi oder HomeKits, bin aber bereit irgendwas anzuschaffen wenn nötig.


    Es geht um eine Whirlpool Steuerung eines Softub Resort 300.

    Tasten die auf Druck reagieren, hoch für wärmere Temperatur, runter für kühlere. Längeres drücken geht nicht, es muss immer mehrfach gedrückt werden dann verändert es sich immer um 0,5 Grad.


    Standard nach Stromzufuhr sind 38 Grad, es wäre also nötig 1x drücken zum aktivieren der Temperaturveränderung und im Anschluss dann nochmal drücken und dann direkt nochmal drücken. Also 3x in Folge um von 38 auf bspw 37 Grad zu kommen. Das muss alles immer innerhalb 2-3 Sekunden nach letztem Druck passieren, da der Pool sonst aus dem Temperaturveränderungsmodus springt.


    Über die SwitchBot App mit manuellem drücken geht es, also die Bewegungszeit des SwitchBots selber genügt.


    Jetzt suche ich über Siri Kurzbefehle, Pi oder oder eine Lösung wo jeden morgen um 9 der SB angesteuert wird (4x in Folge drücken = 36°), mehrfach in Folge drückt und wieder aus geht.


    Habt ihr hier eine Lösung für mich ?

    Danke Euch, vg Alex

  • Auf meinem Pi habe ich das jetzt mal so "gelöst":

    Bash
    #!/bin/bash
    
    i=0
    while [ $i -lt 4 ]; do
            /usr/bin/gatttool -t random -b E4:FC:66:1E:5D:3E --char-write-req -a 0x0016 -n 570101
            if [ $? -eq 0 ]; then
                    i=$((i+1))
                    sleep 3
            fi
    done

    wobei E4:FC:66:1E:5D:3E die Adresse meines Switchbots ist.


    Ich sag's, wie es ist: mäßig. Etwa 20% der Aufrufe des Switchbots schlagen aus mir nicht bekannten Gründen fehl. Ich versuche zwar, das in meinem Skript abzufangen, was aber auch zu Verzögerungen führen kann, weil ich den Befehl an den Switchbot wiederholen muss.


    Sendet man den Befehl zu schnell hintereinander an den Switchbot, bekommt man eine Erfolgsmeldung zurück, obwohl der Switchbot nichts tut. Das liegt daran, dass der Switchbot keinen Befehl ausführt, solange er noch beschäftigt ist. Aber blöderweise er nimmt ihn an. Das führt dazu, dass das Skript den Befehl als "erfolgreich übermittelt" ansieht.


    Mein Skript wartet drei Sekunden (sleep 3) zwischen den einzelnen Befehlen an den Switchbot. Wähle ich nur zwei Sekunden, klappt's schon nicht mehr. Alle vier Übermittlungen an den Switchbot werden zwar als erfolgreich angesehen, aber geschaltet hat er nur zweimal.


    Das führt dazu, dass man sich schlichtweg weder darauf verlassen kann, dass der Switchbot innerhalb von drei Sekunden eine Bewegung ausführt noch darauf, dass er überhaupt viermal schaltet.


    Ich fürchte, so wird das nichts.

  • Hey,


    danke dir für deine ausführliche Antwort. Wie ich mitverfolgen durfte, bist du hier ja sehr tief in die Lösungsfindung eingestiegen und kennst dich gut aus.

    Echt schade, dass mit einer scheinbar so guten und einfachen Lösung etwas "smart" zu machen, es dann daran scheitert, dass ein coding nicht mal richtig agiert.


    Falls noch jemand eine Lösung findet, freue ich mich tierisch über Mitteilung. Vielleicht kann ich mein Problem ja dann doch noch lösen. Bis dahin bleibt wohl nur jeden Morgen manuell zu schalten...

  • Da es bei HomeAssistent geht bin ich mal auf suche gegangen, allerdings bin ich kein Entwickler, aber anscheinend gibt es einen Prefix der mit dem Password codiert funktionieren sollte..


    Vielleich kann sich ein entwickler der python kann das mal anschauen und ein kleines script basteln welches die passenden befehle samt passwort als parameter ausgibt , um es in gattool zu verwenden.


    Externer Inhalt gist.github.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    Danke das hat geholfen.


    Hab mal den essentiellen Code für die Passwort Encoden in einen Python Editor geschmissen und den Output in gatool getestet. Funktioniert super :)


    https://www.programiz.com/pyth…gramming/online-compiler/

    Code
    import binascii
    password = "deinpasswort"
    prefix = "5711" + format(binascii.crc32(password.encode("ascii")) & 0xffffffff, "x")
    print (prefix)

    Auf Run klicken und Wert kopieren.


    Anschließend an den generierten Prefix noch:

    00 - Press

    01 - On

    02 - Off

    03 - Hold


    anhängen.


    Schaut bei mir dann so aus:

    Geniertes Passwort: 571185065736

    Ich will Push also 00 hinten dran: 57118506573600


    Ganzen Kommando:

    gatttool -t random -b EE:42:D2:45:03:EB --char-write-req -a 0x0016 -n 57118506573600

  • Guten Abend, gibt es eigentlich eine Möglichkeit das der Switchbot-Schaltee in Apple Home als Garagentoröffner auftaucht? Wäre sehr nett, denn dann würde die Option in CarPlay auftauchen.

  • Das scheint das Plugin nicht herzugeben. Workaround konnte über einen FakegarageOpener und dazugehöriger Automation sein.

    Wenn Fakeopener öffnen —> Switchbot ein

    Wenn Fakeopener schließen —> Switchbot ein

  • Das scheint das Plugin nicht herzugeben. Workaround konnte über einen FakegarageOpener und dazugehöriger Automation sein.

    Wenn Fakeopener öffnen —> Switchbot ein

    Wenn Fakeopener schließen —> Switchbot ein

    Wie hast du das genau gelöst wenn man fragen darf? :)