A casa inteligente Xiaomi é mais correta do que a assistente doméstica, mas pode ser ainda mais correta



Nos episĂłdios anteriores, eu:



  1. Comprei dispositivos da Xiaomi para uma casa inteligente e, usando um ferro de soldar, fiz com que funcionassem de forma divertida - sem servidores nativos através do assistente doméstico ( link para o post )
  2. Envolvido a interface da web do assistente de casa em elétron ( link para a postagem ) com suporte para notificações, menus, tochbar, etc. (código aqui)
  3. miio ( ) xiaomi_miio.


, . "" IoT lisp-, . .





Xiaomi:



  • udp
  • ,
  • ,


Home Assistant:



  • ,
  • , Home Assistant
  • Single Point of Failure


home assistant — . ~1000, Home Assistant Raspberry PI ~4000, Home Assistant - . .



, CPU, , " — , — " . Home Assistant.



xiaomi , - , json-based dsl ( ).



"" , . zigbee/ble esp32/nrf51 , …



.

Xiaomi CO2, , home assistant , , ….



, , , , , arduino-ide ( -), , , , "" .





LaboratĂłrio, 4 semanas de idade



Proof of concept:



  1. CO2 — 1
  2. — 1
  3. — 2
  4. home assistant — 1
  5. cli — 1
  6. ,




home-assistant Xiaomi "chuangmi.plug.v3 1.3.0_92 ESP8266 detected". , ESP8266 — (~100/) , . Wi-Fi, I2C/SPI/UART/GPIO. ESP8266 Xtensa 80/160Mhz 32- 112 Tensilica ( - , tensilica 2013, esp8266 2014), 1 , .



. ESP8266 . esp201 — , 2.54mm. arduino …

…

ESP8266. Xtensa Wi-Fi — , - . nrf51 (~150/). , . .



CO2



aliexpress CO2 ( ). CCS811 ( ). (~500/) , CO2 TVOC , , 60, CCS811 .





LED 8x8 max7219 (~100/). ...





hlk-pm03 (~200/). 4- ; 220v AC, 3.3v DC esp8266.



, . . ( - — ).





:



  • SensorPack — CCS811 ESP201 I2C ( , )
  • Pixel — LED 8x8, max7219 ESP201 SPI


SensorPack





Pixel :





:



  • USB/UART
  • UART "Hello world!"
  • Wi-Fi
  • CCS811 UART
  • / led


20-50 . .



, :



  • /
  • /
  • DSL /




udp , Xiaomi wi-fi , . — udp , ip/ — udp . — . , — xiaomi , ( ), , / "Faster! Harder! Scooter!" " — !".



python.

python , .





Xiaomi-miio ( ).



, aes128-cbc :



  • 128 — Initialization Vector (IV) aes128
  • — , aes128


, IV python arduino api.

python



IV, , replay attack. , xiaomi replay attack, :) , IV IV , . ...



?



, , python-, , . , -. ? FLOPS , , , . , ?! , led , n — .



JS . ESP8266 JS, . Lua, NodeMCU ESP8266. , lua .



lua …



, :



  1. 1 esp201 lua
  2. NodeMCU lua , . , , …

    lua , .


uLisp



" ?” — , lisp. , , ---- lisp esp8266, uLisp. c — @technoblogy :



  1. udp
  2. ulisp
  3. s-expression
  4. ip/
  5. api ulisp CCS811 Max7219


Lua , ulisp arduino ulisp . ulisp , , C++. , lisp arduino.



:

192.168.2.99 — IP SensorBoard

192.168.2.174 — IP Pixel



:



python tools/client.py --ip 192.168.2.99 --message '(+ 1 2)' --key YOUR_AES128_HEX_KEY
>> (+ 1 2)
<< 3


discovery. , ulisp.



python tools/client.py --ip 192.168.2.99 --message '(discovery)' --key YOUR_AES128_HEX_KEY
>> (discovery)
<< ("light-read" "co2-read" "tvoc-read" "humidity-read" "temperature-read")


CCS811



python tools/client.py --ip 192.168.2.99 --message '(list (co2-read) (tvoc-read))' --key YOUR_AES128_HEX_KEY
>> (list (co2-read) (tvoc-read))
<< (840 67)


REPL,



python tools/client.py --ip 192.168.2.174 --message '(discovery)' --key YOUR_AES128_HEX_KEY
>> (discovery)
<< ("show" "request")


show — led

request — , , ,



#         led   30   
(defun show_sensor (x)
  (show
    (format nil "CO2=~a TVOC=~a"
      (first x)
      (second x))
    30000))

#   33 ,         show_sensor
(periodic 33000 
  (quote
    (request 
      "192.168.2.99"
      54321
      (quote (list
        (co2-read)
        (tvoc-read)))
      'show_sensor)))


Pixel



$ python tools/client.py --ip 192.168.2.174 --mfile ulisp_scripts/red.ulisp --key YOUR_AES128_HEX_KEY


Pixel SensorPack





lisp . Raspberry PI — . , - Home Assistant lisp . SPoF, Home Assistant.



Home Assistant ,

PoC , ,



SensorPack USB Wi-Fi





, , , dsl, lisp . , s-expression ( json, , lisp — s-expression).



Vou esculpir mais outros dispositivos no mesmo protocolo, os prĂłximos da fila sĂŁo ESP32 e NRF51 ...

E ao mesmo tempo vou terminar o firmware para um estado mais mercearia, se vocĂŞ de repente se interessar, participe!



PS Todos os ataques ao Home Assistant são feitos com muito amor, eu até sou um pouco committer nisso.




All Articles