Xiaomi Smart Home ist korrekter als Home Assistant, kann aber noch korrekter sein



In frĂŒheren Folgen habe ich:



  1. Ich habe bei Xiaomi GerĂ€te fĂŒr ein Smart Home gekauft und sie mit einem Lötkolben auf unterhaltsame Weise zum Laufen gebracht - ohne native Server ĂŒber den Home Assistant ( Link zum Beitrag ).
  2. Wickelte die WeboberflĂ€che vom Heimassistenten in Elektron ( Link zum Beitrag ) mit UnterstĂŒtzung fĂŒr Benachrichtigungen, MenĂŒs, Tokenbar usw. (Code hier).
  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 ( -), , , , "" .





Labor, 4 Wochen alt



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).



Ich werde mehr andere GerÀte nach dem gleichen Protokoll modellieren, als nÀchstes folgen ESP32 und NRF51 ...

Und gleichzeitig werde ich die Firmware in einen Lebensmittelzustand versetzen. Wenn Sie plötzlich interessiert sind, schließen Sie sich mir an !



PS Alle Angriffe auf Home Assistant werden mit großer Liebe ausgefĂŒhrt. Ich bin dort sogar ein bisschen komisch.




All Articles