Switchbot Produkte in FHEM

Begonnen von Borkk, 29 Oktober 2020, 09:43:11

Vorheriges Thema - Nächstes Thema

Borkk

Hallo Zusammen,

seit ein paar Tagen habe ich eine lustige Anwendung realisiert. Ich wohne im 4. OG mit Aufzug. Ich kann nun per Taste in meiner Wohnung oder per Sprache (Alexa oder Siri) den Aufzug rufen. Also z.B. schon beim Schuhe anziehen. Über den Sinn muss ich mit Euch ja nicht diskutieren  ;) , manchmal ist der Weg das Ziel aber tatsächlich nutze ich das jetzt regelmäßig.

Realisiert habe ich das Ganze über einen SwitchBot Bot (https://www.switch-bot.com/products/switchbot-bot ca. 22EUR) und den dazugehörigen Mini Hub ca.30EUR. Den Bot habe ich an den Aufzugtaster geklebt (nicht gerade schön, ok) und den HUB in meiner Wohnung. Dann alles mit der APP angelernt und verknüpft, es hat auf Anhieb funktioniert und hat keine 10 min gedauert.

Bei der Suche nach einer FHEM Integration, habe ich nur das hier (https://forum.fhem.de/index.php/topic,88588.msg1015563.html#msg1015563) gefunden. Dabei geht es um den "Smarten Gardinen Bediener" und ich hoffe das DeeSPe evtl. nach diesem Post weiter macht, würde mich sehr freuen.

Da der SwichtBot HUB mit Alexa, Google, Siri und IFTTT spricht, bin ich den Weg über IFTTT gegangen und löse den Schalter aktuell per WebHook bei IFTTT aus, den ich von FHEM in Richtung IFTTT sende. Das ganze funktioniert problemlos und mit einer minimalen Verzögerung von max 1 sec. Da ich aber kein Fan von IFTTT bin, würde ich das natürlich gerne mit FHEM lösen.

Da Switch-Bot (https://www.switch-bot.com/) aber noch viel mehr coole Produkte hat, die auch echt nicht teuer sind, möchte ich hier nochmal dafür werben, ein FHEM Modul zu bauen. Der SwitchBot mini kann z.B. auch wie der Harmony HUB Geräte über IR schalten. Ich habe mir den Swicht Bot remote direkt bei SwitchBot bestellt ($19) und der kleine Taster ist echt schick und macht einen hochwertigen Eindruck. Einen habe ich meinem Nachbarn geschenkt, der nun auch aus seiner Wohnung heraus den Aufzug holen kann. Die Aktion soll natürlich auch verhindern das er sich u.U. über das weiße Kästchen am Aufzug aufregt. Er fand das aber alles auch sehr geil. 

Lt. dem anderen Threat gibt es wohl eine dokumentierte API und ich sehe gerne für Tests zur verfügung. Vielleicht hat der eine oder andere Developer hier wegen des Lockdowns ja Lust was zu bauen.  :D

Leider scheinen die Produkte aber gerade bei Amazon ausverkauft zu sein. Im Anhang ein kleines Video vom SwitchBot in Aktion.


 
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

Borkk

Ich scheine kein Interesse geweckt zu haben... Schade.
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

moloko

Ich schließe mich an.
Tatsächlich ist bei mir heute auch ein Set mit zwei Switches und einem Hub eingetrudelt.
Integration in fhem wäre topp, habe etwas Mistrauen bei China Gadgets, die in die Cloud wollen...
Habe leider keine Erfahrung in der Modulentwicklung...

Borkk

Bis es ein Modul gibt, kannst du den (Um)Weg über einen Webhook an IFTTT gehen. Das klappt eigentlich ganz gut.
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

holsteiner-kiel

Ich schließe mich hier mal an. Mittlerweile ist eine brauchbare API fertig gestellt: https://github.com/OpenWonderLabs/SwitchBotAPI

Ich bin leider nicht in der Lage, mir ein solches Modul zu bauen, habe aber Switchbot Curtains, die ich aktuell nicht in FHEM integriert bekomme. Und nein. Der Umweg über IFTTT kommt für mich nicht in Frage, da IFTTT mit seinen aktuellen Geschäftsgebahren bei mir nicht länger verwendet wird. :-(

Vielleicht passiert hier ja doch noch was. Ich stehe auf jeden Fall zum Unterstützen und Testen bereit.

Viele Grüße!

Borkk

Zitat von: holsteiner-kiel am 09 Januar 2021, 19:29:56
Der Umweg über IFTTT kommt für mich nicht in Frage, da IFTTT mit seinen aktuellen Geschäftsgebahren bei mir nicht länger verwendet wird.

Kann ich verstehen und ich habe auch nur den SwitchBot Hub verbunden, den ich mittels WebHook von FHEM aus schalten kann. dafür reicht die kostenlose Variante von IFTTT.

Aber der beste Weg wäre natürlich ein FHEM Modul das die API nutzt. :-)
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

mfritze

Ich mag die Idee des Switchbot, aber man braucht einen Account um Vorhänge zu öffnen? Warum? Was passiert, wenn der Hersteller in 1-2 Jahren aufgibt (wie so oft mit IoT Geräten)

elbmarschsurfer

Zitat von: mfritze am 16 Januar 2021, 11:40:47
Was passiert, wenn der Hersteller in 1-2 Jahren aufgibt (wie so oft mit IoT Geräten)
...dann ist man gekniffen!  :(
Ich habe jetzt auch 2 SwitchBot-Curtain mit Hub-Mini und gehe den Umweg über Alexa und dem echodevice-Modul. Mir fehlt allerdings die Rückmeldung, ob die Vorhänge geöffnet oder geschlossen sind. Also möchte ich mich gerne den Vorrednern anschließen und bitte alle Progrmmierer, die Bock drauf haben, hier ein Modul zu entwickeln, welches uns hier helfen kann. Auch ich würde hier zu Testzwecken gerne Feedback liefern.
Gruß und Danke im Vorraus.  :)

Mikey

Ich benutze auch seit 2 Wochen Produkte von SwitchBot.
Habe 2 Bots, den Hub mini und 3 Thermometer. Ein Bot öffnet die Haustür, wenn ich weiß Besuch zu empfangen. Sollte ich wieder mal meinen Schlüssel in der Wohnung vergessen haben, kann ich mir auf diesem Wege die Haustür öffnen lassen. Einen Wohnungsschlüssel habe ich im Haus versteckt.
Der 2. Bot steuert die Heizung. Schaltet sie unter x Grad an und über y Grad wieder aus. Über den Hub steuere ich weiterhin Fernseher, Festplattenrekorder, Blu-ray Player und den Heimkino Verstärker. Vieles über Szenen gesteuert. Brauche nur zu sagen, dass ich meine Atdmagmdm sehen möchte und schon wandert das entsprechende Gerät ins Menü.
Ich finde das eine echt günstige Variante alles. Und es lässt sich ja auch über die nette Dose von Amazon per Sprache steuern.

Mikey


Christoph Morrison

Man kann Beiträge übrigens nachträglich bearbeiten.

satprofi

gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

smmmo

#12
Ja, mit mqtt lässt sich der switchbot ansteuern. Und das Ganze lokal per Bluetooth, also ohne cloud.

Habe dazu https://github.com/dietah/mqtt-switchbot verwendet. Musste das 'docker-compose up' minimal anpassen (um "network_mode: host"):

version: '3.6'
services:
  mqtt-switchbot:
    container_name: switchbot
    image: deetoreu/mqtt-switchbot
    restart: unless-stopped
    network_mode: host
    environment:
      MQTT_HOST: <mosquitto_ip>
    volumes:
      - ./volumes/switchbot/logs:/usr/src/app/logs


Test mit mosquitto (switchbot_mac wird vom docker-container geloggt):

mosquitto_pub -h <mosquitto_ip> -t switchbot/switch/<switchbot_mac>/set -m "up"


Und in fhem klappt es so mit der Ansteuerung ("xx" mit der mac der switchbots ersetzen):

define MQTT2_mqttjs_815b3a6b MQTT2_DEVICE mqttjs_815b3a6b
attr MQTT2_mqttjs_815b3a6b IODev myBroker
attr MQTT2_mqttjs_815b3a6b readingList mqttjs_815b3a6b:switchbot/switch/fc_5f_xx_xx_xx_xx/battery:.* battery\
mqttjs_815b3a6b:switchbot/switch/fc_5f_xx_xx_xx_xx/linkquality:.* linkquality
attr MQTT2_mqttjs_815b3a6b room mqtt
attr MQTT2_mqttjs_815b3a6b setList state:press,on,off,down,up switchbot/switch/fc:5f:xx:xx:xx:xx/set $EVTPART1
attr MQTT2_mqttjs_815b3a6b stateFormat battery / linkquality


Der verwendete myBroker ist bei mir mosquitto:

defmod myBroker MQTT2_CLIENT 192.168.xxx.xxx:1883

Borkk

Hallo Zusammen,

Ich bräuchte mal ein wenig Starthilfe beim Thema MQTT. Ich habe, nach dem von satprofi geposteten Video, einen ESP32 geflasht und auf FHEM ein MQTT Broker installiert. Und siehe da, tatsächlich meldet sich der ESP32 und legt ein MQTT2 Device an. Auch mit dem MQTT Explorer sehe ich die Protokolle. Ein List von dem automatisch angelegten Device poste ich hier im Anschluss.

Ich stehe jetzt aber irgendwie auf dem Schlauch wie ich über das Device einen Status bekomme, bzw. wie ich den Switchbot schalten kann? Hab ich einen Denkfehler oder bin ich schon ganz nah :-)

Internals:
   CID        esp32
   DEF        esp32
   DEVICETOPIC MQTT2_esp32
   FUUID      61f1c8ce-f33f-bc6c-2373-1d6013ac85f96122
   IODev      myBroker
   LASTInputDev myBroker
   MSGCNT     104
   NAME       MQTT2_esp32
   NR         6956
   STATE      OFF
   TYPE       MQTT2_DEVICE
   myBroker_CONN myBroker_192.168.23.79_65221
   myBroker_MSGCNT 104
   myBroker_TIME 2022-01-26 23:40:59
   Helper:
     DBLOG:
       _:
         DBLogging:
           TIME       1643235608.65663
           VALUE      switchbot/esp32/bot/switchbotone
       avty_t:
         DBLogging:
           TIME       1643235608.65663
           VALUE      switchbot/esp32/lastwill
       batt:
         DBLogging:
           TIME       1643236800.83397
           VALUE      93
       cmd_t:
         DBLogging:
           TIME       1643235608.65663
           VALUE      ~/set
       command:
         DBLogging:
           TIME       1643235612.67446
           VALUE      REQUESTSETTINGS
       dev_cla:
         DBLogging:
           TIME       1643235608.4943
           VALUE      battery
       device_identifiers_1:
         DBLogging:
           TIME       1643235608.65663
           VALUE      switchbot_DB:E4:DA:6F:xx:xx
       device_manufacturer:
         DBLogging:
           TIME       1643235608.65663
           VALUE      WonderLabs SwitchBot
       device_model:
         DBLogging:
           TIME       1643235608.65663
           VALUE      Bot
       device_name:
         DBLogging:
           TIME       1643235608.65663
           VALUE      switchbotone
       firmware:
         DBLogging:
           TIME       1643235612.70091
           VALUE      4.8
       hold:
         DBLogging:
           TIME       1643235612.70091
           VALUE      0
       icon:
         DBLogging:
           TIME       1643235608.63175
           VALUE      mdi:cog
       inverted:
         DBLogging:
           TIME       1643235612.70091
           VALUE      false
       lastwill:
         DBLogging:
           TIME       1643236859.16097
           VALUE      online
       mode:
         DBLogging:
           TIME       1643236800.83397
           VALUE      Press
       name:
         DBLogging:
           TIME       1643235608.65663
           VALUE      switchbotone Switch
       opt:
         DBLogging:
           TIME       1643235608.65663
           VALUE      false
       pl_off:
         DBLogging:
           TIME       1643235608.53734
           VALUE      false
       pl_on:
         DBLogging:
           TIME       1643235608.53734
           VALUE      true
       rssi:
         DBLogging:
           TIME       1643236859.16566
           VALUE      -49
       stat_t:
         DBLogging:
           TIME       1643235608.65663
           VALUE      ~/state
       state:
         DBLogging:
           TIME       1643236800.86984
           VALUE      OFF
       status:
         DBLogging:
           TIME       1643236800.87767
           VALUE      idle
       timers:
         DBLogging:
           TIME       1643235612.70091
           VALUE      0
       uniq_id:
         DBLogging:
           TIME       1643235608.65663
           VALUE      switchbot_DB:E4:DA:6F:xx:xx
       unit_of_meas:
         DBLogging:
           TIME       1643235608.51495
           VALUE      rssi
       value_template:
         DBLogging:
           TIME       1643235608.63175
           VALUE      {{ value_json.timers }}
   READINGS:
     2022-01-26 23:18:54   IODev           myBroker
     2022-01-26 23:20:08   _               switchbot/esp32/bot/switchbotone
     2022-01-26 23:20:08   avty_t          switchbot/esp32/lastwill
     2022-01-26 23:40:00   batt            93
     2022-01-26 23:20:08   cmd_t           ~/set
     2022-01-26 23:20:12   command         REQUESTSETTINGS
     2022-01-26 23:20:08   dev_cla         battery
     2022-01-26 23:20:08   device_identifiers_1 switchbot_DB:E4:DA:6F:xx:xx
     2022-01-26 23:20:08   device_manufacturer WonderLabs SwitchBot
     2022-01-26 23:20:08   device_model    Bot
     2022-01-26 23:20:08   device_name     switchbotone
     2022-01-26 23:20:12   firmware        4.8
     2022-01-26 23:20:12   hold            0
     2022-01-26 23:20:08   icon            mdi:cog
     2022-01-26 23:20:12   inverted        false
     2022-01-26 23:40:59   lastwill        online
     2022-01-26 23:40:00   mode            Press
     2022-01-26 23:20:08   name            switchbotone Switch
     2022-01-26 23:20:08   opt             false
     2022-01-26 23:20:08   pl_off          false
     2022-01-26 23:20:08   pl_on           true
     2022-01-26 23:40:59   rssi            -49
     2022-01-26 23:20:08   stat_t          ~/state
     2022-01-26 23:40:00   state           OFF
     2022-01-26 23:40:00   status          idle
     2022-01-26 23:20:12   timers          0
     2022-01-26 23:20:08   uniq_id         switchbot_DB:E4:DA:6F:xx:xx
     2022-01-26 23:20:08   unit_of_meas    rssi
     2022-01-26 23:20:08   value_template  {{ value_json.timers }}
Attributes:
   readingList esp32:switchbot/esp32:.* { json2nameValue($EVENT) }
esp32:switchbot/esp32/lastwill:.* lastwill
esp32:homeassistant/sensor/esp32/linkquality/config:.* { json2nameValue($EVENT) }
esp32:switchbot/esp32/esp32/rssi:.* rssi
esp32:homeassistant/sensor/switchbotone/battery/config:.* { json2nameValue($EVENT) }
esp32:homeassistant/sensor/switchbotone/linkquality/config:.* { json2nameValue($EVENT) }
esp32:homeassistant/binary_sensor/switchbotone/inverted/config:.* { json2nameValue($EVENT) }
esp32:homeassistant/sensor/switchbotone/mode/config:.* { json2nameValue($EVENT) }
esp32:homeassistant/sensor/switchbotone/firmware/config:.* { json2nameValue($EVENT) }
esp32:homeassistant/sensor/switchbotone/holdsecs/config:.* { json2nameValue($EVENT) }
esp32:homeassistant/sensor/switchbotone/timers/config:.* { json2nameValue($EVENT) }
esp32:homeassistant/switch/switchbotone/config:.* { json2nameValue($EVENT) }
esp32:switchbot/esp32/bot/switchbotone/attributes:.* { json2nameValue($EVENT) }
esp32:switchbot/esp32/bot/switchbotone/state:.* state
esp32:switchbot/esp32/bot/switchbotone/status:.* { json2nameValue($EVENT) }
esp32:switchbot/esp32/bot/switchbotone/settings:.* { json2nameValue($EVENT) }
   room       MQTT2_DEVICE
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

Otto123

#14
Hi,

na einen Status hast Du ja mehrfach: :D
Die Readings state und status und das Internal STATE was erstmal identisch zu state ist.

Um den Bot zu schalten müsstest Du einen "setter" im attribute setList bauen. Dazu müsste man wissen auf welches topic der bot reagiert und was es für Befehle gibt. Gibts dazu eine API Beschreibung?

Nur geraten: attr MQTT2_esp32 setList state:press,on,off,down,up switchbot/esp32/bot/switchbotone/set $EVTPART1

ZitatIch bräuchte mal ein wenig Starthilfe beim Thema MQTT.
Vielleicht ist eine neue Frage im MQTT Board die bessere Starthilfe

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz