blog.vyoralek.cz

HomeAssistant #26 – Integrace bluetooth produktů SwitchBot

V dnešním 26. dílu seriálu o HomeAssistantovi se podíváme na to, jakým způsobem si přidat bluetooth zařízení od firmy SwitchBot.

Před týdnem jsem v nadšení napsal článek o Bluetooth proxy pomoc ESPHome běžícího na ESP32, což mě vedlo k tomu si najít nějaké zajímavé produkty používající Bluetooth technologii.

Narazil jsem na firmu SwitchBot, která vznikla ne až tak dávno – v roce 2017 se jim podařillo úspěšně dokončit kampaň na Kickstarteru (portál pro začínající projekty hledající spolufinancování) s produktem SwitchBot Bot.

Od té doby se množství jejich produktů poměrně rozšířilo a musím říct, že mě asi nejvíce zaujal design jak samotných produktů, tak i webu a aplikace, které jsou na vysoké úrovni.

Dlouho jsem tedy neváhal a na Alza.cz si hned dva produkty objednal.

Testované produkty – SwitchBot Motion a Contact Sensor

SwitchBot Motion Sensor

Prvním je v podstatě poměrně standardní pohybový senzor s jednoduchým názvem SwitchBot Motion Sensor, používající bluetooth technologii.

Za nějakých 500kč dostanete sensor detekující pohyb v místnosti a zároveň měřidlo množství světla v místnosti.

SwtichBot motion sensor

Senzor má praktický kuželovitý stojánek, který lze připojit jednak zespod ale také zezadu. Množství typů instalace je tak skutečně široké.

Alternativou k tomuto sensoru může být sensor pohybu od Aqary, který používá technologii Zigbee, stojí o 100kč méně – 400Kč a je menší. Narozdíl od SwitchBot sensoru, ale nebudeme moci jednoduše měnit citlivost a dobu po kterou je pohyb zachycen.

Aqara motion sensor

SwitchBot Contact Sensor

Druhý produkt o poznání unikátnější. Jedná se o kontaktní sensor – často používaný na dveře nebo okna, s označením SwitchBot Contact Sensor. Ten však kromě tohoto kontaktního senzoru obsahuje zároveň rovněž sensor pohybu, sensor světla a navíc i tlačítko.

Za 460kč tak budete mít rovnou 4 sensory v jednom, což je skutečně skvělé.

SwitchBot contact sensor

Alternativou k tomuto sensoru může být kontaktní sensor Aqara, který používá technologii Zigbee, stojí o krapet méně – 370kč, je menší, ale má i méně funkcí.

Aqara contact sensor

Oba SwitchBot produkty používají 2 kusy baterie AAA, které jsou přibaleny a měly by vydržet až 3 roky.

Vytvoření účtu SwitchBot skrze mobilní aplikaci

Není to úplně povinný bod proto abychom produkty dostali do HomeAssistenta, ale určitě to doporučuji, jelikož přes oficiální SwitchBot aplikaci můžete zařízení nastavovat a zároveň i aktualizovat firmware.

Aplikace SwitchBot na iOS

Po instalaci aplikace na váš mobilní účet bude potřeba si zřídit ještě účet na SwitchBot cloudu.

V tomto kroku jsem měl trochu problém s potvrzovacím emailem, který by měl dle aplikace dojít do 1minuty, ale nepřišel. Naštěstí mají i možnost potvrzení tím, že jim ze svého emailu pošlete email s definovaným formátem a tohle u mě zafungovalo. Předchozí potvrzovací emaily nakonec dorazily také, ale asi s půlhodinovým zpožděním.

Přidání zařízení do aplikace SwitchBot

Přidání zařízení je poměrně jednoduché. Stačí v aplikaci vybrat Add Device a už by tam na vás měly čekat. Na to zařízení, které chceme přidat klikneme a obvykle je pak potřeba ještě na něm podržet nějaké tlačítko, čímž se párování dokončí.

Přidání zařízení v mobilní aplikaci

Nastavení, firmware a MAC adresa

Po úspěšném přidání se můžeme podívat do nastavení zařízení. Dle zařízení tam pak můžeme mít různé možnosti, tady například pro kontaktní sensor můžeme určit, zda se má používat ledka, o jaký typ instalace se jedná a nastavit sensor světla – zejména jeho citlivost.

Zároveň je k dispozici informace o firmware, popř. o jeho aktualizaci a aktuálním stavu baterie.

Co se nám bude hodit pro jeden ze způsobů integrace je MAC adresa, které najdeme v Device Info.

Nastavení SwitchBot Contact sensoru

Integrace do HomeAssistanta

Způsobů je více, a já vám ukážu dva zřejmě nejčastější a řekneme si jejich výhody a nevýhody.

První způsob – nativní HA bluetooth a nebo prostřednictvím ESPHome Proxy

Tenhle způsob integrace mě defakto přiměl k tomu si produkty vyzkoušet, konkrétně možnost použít ESPHome Proxy.

Přidávání zařízení je naprosto trivální a jediné co je potřeba je mít funkční ESPHome Proxy – detailní popis jak na to je v minulém článku.

Jakmile ESPHome Proxy funguje a zařízení SwitchBot je v dostahu objeví se nám automaticky přímo v seznamu HomeAssistant zařezení jako Objevené a můžeme ho přidat pomocí Nastavit.

Objevený sensor v HA

Vše vypadá růžově, ale bohužel má to své mouchy. Z nějakého pro mě ne úplně zatím známého důvodu – a je možné, že je to někde problém u mě – je integrace hodně pomalá. Tj. například v případě kontaktního sensoru jsou stavy někdy až minutu zpožděné, což pro případné automatizace začne být téměř nepoužitelné. Bohužel narozdíl od např. teploměru u sensorů pohybu a nebo kontaktu se nám hodí mít tento stav víceméně online.

Přidaný kontaktní sensor SwithBot v HA

Druhou nepříjemností je fakt, že u zařízení je dostupným poměrně málo entit a například takové tlačítko u kontaktního sensoru úplně chybí – to je velká škoda, jelikož zrovna toto se úplně vybízí na nějakou automatizaci.

Druhý způsob – ESP32 s custom firmwarem a MQTT

Naštěstí máme ještě jiný způsob, který už nyní prozradím řeší všechny výše uvedené neduhy, ale má jeden základní problém – je extrémně náročnější na téměř vše.

Pojdme si tedy nejprve sepsat všechny části, které budou potřeba udělat:

  1. Nainstalovat a nastavit doplněk HomeAssistanta MQTT pokud ho ještě nemáme
  2. Je potřeba si stáhnout zdrojové kódy projektu z Githubu na lokální disk
  3. Musíme si nainstalovat a zprovoznit Arduino IDE a nebo Visual Studio Code
  4. Je potřeba IDE nastavit tak, aby nám fungovalo kompilace C++ projektu včetně všech knihoven a výsledné desky – ESP32
  5. Úprava projektu pro naši konfiguraci
  6. Nahrání na cílovou ESP32 desku

Nyní se podíváme na jednotlivé části v detailech.

1. MQTT HomeAssistant addon

Pokud ho ještě nepoužíváme (já ho mám například pro Tasmotu), tak si ho do HomeAssistanta můžeme přidat v menu Nastavení -> Doplňky -> Obchod s doplňky a v sekci Official add-ons najdeme Mosquitto broker.

MQTT addon v HA

V konfiguraci doporučuji nastavit jméno a heslo a zbytek můžeme nechat tak jak je.

2. Zdrojové kódy projektu SwitchBot-MQTT-BLE-ESP32

Veškeré zdrojové kódy k projektu najdeme na Githubu. Repositář si buď můžeme na lokální disk zklonovat a nebo si stáhneme všechny soubory jako zip archív a na lokálním disku rozbalíme.

3. Arduino IDE nebo Visual Studio Code (VS Code)

V tomhle kroku se můžeme vybrat. Buď použijeme Arduiono IDE a nebo Visual Studio Code. Já používám Visual Studio Code také pro projekty v Pythonu, takže je pro mě mnohem bližší a modernější nástroj. Pokud však preferujete Arduino IDE sáhněte po něm. Dále si ukážeme postup pro Visual Studio Code.

Pokud VS Code ještě nemáme pak si ho stáhneme a nainstalujeme.

IDE Visual Studio Code

V seznamu rozřížení si najdeme Platformio IDE a to nainstalujeme:

Addon VS Code Platformio IDE

4. VS Code – nastavení kompilace

Ve VS Code si otevřeme projekt, který bychom měli mít v repozitáři:

GitHub projektu

a vrhneme se na úpravu souboru platformio.ini. Ten obsahuje nastavení pro hromadu ESP32 desek a my si mezi nimi najdeme tu svou.

Já pro tento článek použil TTGO-T1 takže jsem si vše ostatní zakomentoval a nechal aktivní pouze tuto konfiguraci:

[env:ttgo-t1]
board = ttgo-t1

5. Úprava projektu pro naši konfiguraci

Nyní je potřeba si otevřít přímo zdrojový kód projektu, což je soubor SwitchBot-BLE2MQTT-ESP32, který najdeme v adresáři src.

Veškerou konfiguraci najdeme v sekci začínající odstavcem

/****************** CONFIGURATIONS TO CHANGE *******************/

V mém případě bylo potřeba nejprve nastavit WiFi:

/* Wifi Settings */
static const char* host = "switchbot-proxy";//  Unique name for ESP32.
static const char* ssid = "wifi-nazev"; //  WIFI SSID
static const char* password = "wifi-heslo";  

.. poté MQTT:

/* MQTT Settings */
/* MQTT Client name is set to WIFI host from Wifi Settings*/
static const char* mqtt_host = "10.2.1.2"; //  MQTT Broker server ip
static const char* mqtt_user = "uzivatel"; //  MQTT Broker username. 
static const char* mqtt_pass = "heslo";  //  MQTT Broker password
static const int mqtt_port = 1883;  //  MQTT Port
static const std::string mqtt_main_topic = "switchbot"; //  MQTT main topic

… a nakonec musíme ručně přidat naše zařízení pomocí Bluetooth MAC adresy:

/* Switchbot Contact Sensor Settings */
static std::map<std::string, std::string> allContactSensors = {
  { "contactone", "DB:31:95:88:C0:7E" }
};

/* Switchbot Motion Sensor Settings */
static std::map<std::string, std::string> allMotionSensors = {
  { "motionone", "F0:26:74:DB:D0:C4" }  
};

MAC Adresy najdeme například v SwitchBot mobilní aplikaci.

6. Nahrání na cílovou desku

Díky rozšíření PlatfomioIO bychom měli mít v dolní liště VS Code nové příkazy. Doporučuji nejprve kliknout na fajfku, která udělá build a díky tomu zjistím, zda máme vše potřebné a vše je správně nastaveno.

V dalším kroku pak můžeme ESP32 zařízení připojit k počítačí přes USB kabel a zmáčknout nahrání – ikonka šipky vpravo.

Pokud vše šlo správně měli bychom vidět přibližně následující log:

Building in release mode
Retrieving maximum program size .pio/build/ttgo-t1/firmware.elf
Checking size .pio/build/ttgo-t1/firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [==        ]  16.8% (used 55060 bytes from 327680 bytes)
Flash: [==========]  97.6% (used 1279714 bytes from 1310720 bytes)
Configuring upload protocol...
AVAILABLE: esp-prog, espota, esptool, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa
CURRENT: upload_protocol = esptool
Looking for upload port...
Auto-detected: /dev/cu.usbserial-01B05D66
Uploading .pio/build/ttgo-t1/firmware.bin
esptool.py v3.1
Serial port /dev/cu.usbserial-01B05D66
Connecting....
Chip is ESP32-D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 24:6f:28:24:f9:90
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Flash will be erased from 0x00001000 to 0x00005fff...
...
Flash will be erased from 0x00010000 to 0x00148fff...
Compressed 18624 bytes to 12073...
Writing at 0x00001000... (100 %)
Wrote 18624 bytes (12073 compressed) at 0x00001000 in 1.3 seconds (effective 115.2 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 128...
Writing at 0x00008000... (100 %)
Wrote 3072 bytes (128 compressed) at 0x00008000 in 0.1 seconds (effective 406.1 kbit/s)...
Hash of data verified.
Compressed 8192 bytes to 47...
Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.1 seconds (effective 654.8 kbit/s)...
Hash of data verified.
Compressed 1279824 bytes to 737134...
Writing at 0x00010000... (2 %)
...
Writing at 0x001425f3... (100 %)
Wrote 1279824 bytes (737134 compressed) at 0x00010000 in 65.0 seconds (effective 157.6 kbit/s)...
Hash of data verified.

.. a po chvíli by se zařízení měly objevit i v HomeAssistantovi

SwitchBot zařízení přes MQTT

Pokud se nyní podíváme opět na kontaktní sensor tak uvidíme, že množství sensorů je dramaticky větší:

Kontaktní sensor v HA přes MQTT

Máme nyní k dispozici jak informaci o stisknutí tlačítka a dokonce i počet kolikrát bylo zmáčknuto a kdy naposledy.

Pokud vyzkoušíme reakce tak sensory reagují poměrně svižně s nějakou malou prodlevou cca. kolem 1 sekundy.

Zhodnocení

SwitchBot produkty vypadají jako velmi zajímavá bluetooth alternativa k Zigbee produktům. V integraci do HomeAssistenta existuje jednoduchá cesta, která je však zatím velice pomalá a alternativní řešení je poměrně komlikované na instalaci. Záleží tedy na vašich schopnostech a odhodlání.

Jako plus bluetooth produktů vidím menší spotřebu – na baterie by snad měly vydržet až 3 roky a jednodušší protokol.

Samotný kontaktní sensor je pak velmi zajímavý kombinací hned čtyř sensorů v jednom – něco podobného mě u Zigbee nenapadá.

Jako nevýhodu pak reakční doby, které mi přijdou i u rychlejší varianty stále pomalejší ve srovnání se Zigbee, což ale nemusí být vždy zásadní nevýhoda.

A co vy? Máte nějaké zkušnosti se SwitchBot produkty a nebo o nich uvažujete?

Kompletní série o HomeAsistantovi obsahuje následující články:

  • 1. část – Instalace HomeAsisstent
  • 2. částIntegrace Sonoff s firmware Sonoff-Tasmota
  • 3. částIntegrace Homekit
  • 4. částIntegrace Sonoff s firmware Sonoff-Tasmota – 2 část
  • 5. částIntegrace s Wemos D1 a senzory teploty
  • 6. částIntegrace Sonoff s firmware ESPHome
  • 7. částIntegrace Sonoff POW s firmware ESPHome
  • 8. částIntegrace LED Magic Home s firmware ESPHome
  • 9. částIntegrace Xiaomi Mijia a Aqara
  • 10. část – Integrace vlastní Zigbee gateway
  • 11. část – Vzdálený přístup do Hass.io z Internetu
  • 12. část – zobrazení senzorových data pomocí InfluxDB a Grafany
  • 13. část – Hass.io Add-ony, které používám
  • 14. část – Integrace Xiaomi Mi Flora
  • 15. část – Integrace Withings (Nokia)
  • 16. část – náhrada SQLite databází MySQL
  • 17. část – HACS Add-ony – instalace a konfigurace
  • 18. část – Integrace Sonoff s firmware eWeLink
  • 19. část – nová integrace Sonoff pro HA
  • 20. část – měření spotřeby
  • 21. část – automatické zálohy a obnovení ze zálohy
  • 22. část – napojení hlasového asistenta Amazon Alexa
  • 23. část – automatické zálohy na síťový sdílení disk (Samba)
  • 24. část – Bluetooth zařízení a ESPHome proxy
  • 25. část – nefunkční aktualizace HomeAssistanta
  • 26. část – integrace SwitchBot produktů
  • 27. část – integrace fotovoltaiky Growatt

Add comment

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..