Talaan ng mga Nilalaman:

XiaoMi Vacuum + Amazon Button = Paglilinis ng Dash: 5 Hakbang (na may Mga Larawan)
XiaoMi Vacuum + Amazon Button = Paglilinis ng Dash: 5 Hakbang (na may Mga Larawan)

Video: XiaoMi Vacuum + Amazon Button = Paglilinis ng Dash: 5 Hakbang (na may Mga Larawan)

Video: XiaoMi Vacuum + Amazon Button = Paglilinis ng Dash: 5 Hakbang (na may Mga Larawan)
Video: LG NANO 75, UP8000 & UP7000 4K TV Comparison 2024, Nobyembre
Anonim
XiaoMi Vacuum + Amazon Button = Paglilinis ng Dash
XiaoMi Vacuum + Amazon Button = Paglilinis ng Dash

Ipapaliwanag ng tagubiling ito kung paano gamitin ang iyong ekstrang Mga Butas ng Amazon Dash upang Makontrol ang XiaoMi Vacuum.

Nakuha ko ang isang bungkos ng mga Amazon Buttons na naglalagay mula sa mga oras na $ 1 sila at wala akong silbi sa kanila. Ngunit sa pagtanggap ng isang bagong Robot Vacuum napagpasyahan kong magiging napaka maginhawa upang magamit ang mga pindutan na ito bilang isang kontrol sa vacuum.

Pindutin ang pindutan ng Ziploc at i-vacuum nito ang Silid-tulugan.

Pindutin ang pindutan ng Malugod at i-vacuum nito ang Living Room.

Pindutin ang Fiji.. mabuti mayroon kang ideya.

Ang proyektong ito doon ay isinasama maraming mga pag-hack mula sa internet. Talagang pinahahalagahan ko ang trabahong nagawa ng maraming tao at sa palagay ko kailangan kong ibahagi ang aking maliit na contraption batay sa kanilang pagsasaliksik.

Pagwawaksi: Lahat ng hakbang sa ibaba ay gagawin mo sa iyong sariling peligro! Kung susundin mong mabuti ang mga hakbang mayroong napakakaunting pagkakataon na maaari kang makapinsala sa isang bagay. Ngunit sh # t ang mangyayari! At wala akong responsibilidad dito. BTW lahat ng mga hakbang ay maaaring baligtarin kaya potensyal na walang paglabag sa warranty. Ngunit syempre - YMMV

Ang pangunahing prinsipyo ay nahuli namin ang pindutan ng dash button sa router at nagpapadala ng webhook sa Vacuum sa halip na bumili ng mga bagay-bagay mula sa Amazon.

Ano ang kakailanganin mo:

  • Ang router na may pasadyang firmware na maaaring makontrol ang DHCP, magpatakbo ng mga script at matupad ang makakuha ng | mga query sa post. Mikrotik, DD-WRT, OpenWRT, Tomato atbp.
  • XiaoMi Vacuum. v1 o v2
  • Mga Pindutan ng Amazon Dash

Partikular na ang ginamit ko:

  • Mikrotik
  • XiaoMi v2 Vacuum Roborock S50
  • Bunch ng Amazon Dash Buttons

Narito ang pamamaraan

  1. Nag-root kami ng vacuum
  2. I-install at i-configure ang mga kinakailangang pakete sa ilalim ng ugat sa vacuum
  3. I-setup ang pindutan ng Amazon Dash
  4. I-setup ang Router upang mahuli ang kahilingan sa pindutan at kontrolin ang Vacuum

NB: Sa katunayan hindi mo kailangang i-root ang iyong vacuum upang makontrol ito. Kung mayroon kang anumang iba pang mga server sa iyong lan (o kung saan man) na maaaring magpatakbo ng sawa o php maaari mong idirekta ang mga webhook sa kanila. Ngunit hindi. At nais kong panatilihin itong malinis at siksik sa vacuum mismo. Kaya't kung hindi mo gusto ang aking diskarte ipinapalagay ko na maaari mong malaman kung paano i-setup ang iyong sariling server ng gitnang tao mula sa nabasa na ito. Dumiretso lang sa point 2.

Ok dito na tayo…

Hakbang 1: Kunin ang Token at Root Vacuum

Kunin ang Token at Root Vacuum
Kunin ang Token at Root Vacuum
Kunin ang Token at Root Vacuum
Kunin ang Token at Root Vacuum
Kunin ang Token at Root Vacuum
Kunin ang Token at Root Vacuum
Kunin ang Token at Root Vacuum
Kunin ang Token at Root Vacuum

Ang lahat ng software, fimware at tagubilin para sa pag-rooting ay nakuha mula sa: https://4pda.ru/forum/index.php? Showtopic = 881982

Kung mayroon kang OS maliban sa Windows at telepono bukod sa Android (maaari kang gumamit ng virtual na walang nox) mangyaring sundin ang link sa itaas (gamitin ang Google Translate) at basahin ang mga tagubilin kung hindi man sundin ang manwal dito.

Upang ma-root kailangan naming kumuha ng ip address at ang token mula sa iyong vacuum.

I-unpack ang ugat.7z.

Mangyaring i-install ang Mihome mula sa Vevs sa iyong Android. Maaari kang gumamit ng isa mula sa Archive o kung ang tagubilin na ito ay napetsahan pagkatapos ang pinakabagong bersyon ay maaaring makuha mula sa kanyang website (https://www.kapiba.ru/2017/11/mi-home.html) o ang kanyang Google Drive (https://drive.google.com/drive/folders/1IyjvIWiGaeD7iLWWtBlb6jSEHTLg9XGj)

Mag-login sa iyong MiHome. Kailangan mong itakda ang China Mainland sa iyong account at magdagdag ng Vacuum dito).

Mag-tap sa Mga setting ng icon ng vacuum (Tatlong mga tuldok sa kanang itaas) Pangkalahatang Mga Setting Impormasyon sa network

Punan ang ip address at token sa win-mirobo / win-mirobo.ini

Huwag paganahin ang firewall sa mga bintana. Ilunsad ang win-mirobo.bat at i-flash ang firmware.

!!!!!!!!! Ang V1 ay para sa v1 Vacuum at ang V2 ay para sa v2 Vacuum (Roborock S50) !!!!!!! Kung na-flash mo ang maling FW - pumunta sa 4pda link (una sa hakbang na ito) at basahin kung paano makarekober.

Ang mga reboot ng Arter Vacuum - matagumpay mong na-root ang iyong vacuum at mayroon kang access dito sa pamamagitan ng ssh!

SSH dito (kasama si Putty) kasama ang cleaner / cleaner. Palitan ang iyong password gamit ang passwd

Hakbang 2: I-install at I-configure ang Mga Kinakailanganang Pakete sa ilalim ng Root sa Vacuum

Premise

Sa halip na webhooks ang MiVacuum ay gumagamit ng miio protocol tulad ng bawat XiaoMi IoT device. Kaya kailangan nating matutunan ito upang maunawaan ang mga webhooks. Kailangan namin ng isang gitnang tao na maaaring mahuli ang webhook at isalin ito sa miio protocol sa aparato. Mayroong python library (https://github.com/rytilahti/python-miio) ngunit hindi namin ito magagamit sa vacuum dahil walang sapat na puwang para sa Python 3.5+ sa Vacuum.

Ngunit sa kabutihang palad mayroong isang php-miio library (https://github.com/skysilver-lab/php-miio) na medyo magaan at ito ang gagamitin namin (btw ginagamit din ito sa win-mirobo sa itaas). Ang nakakakuha ng webhook ay ang webhook daemon (https://github.com/adnanh/webhook) na nagpapatakbo ng script para sa php sa papasok na webhook.

SSH sa iyong vacuum (kasama ang Putty):

#Gawin sa ilalim ng ugat. Yeah alam ko na hindi ito ligtas..whatevs.sudo su # Dito namin mai-install ang lahat ng mga kinakailangan apt-get install -y wget php5-kliyente nano #Ang lahat ay pupunta / mag-opt cd / opt

#I-download ang php-miio

# Suriin ang pinakabagong sa github. Tamang mga linya sa ibaba ayon sa pinakabagong wget https://github.com/skysilver-lab/php-miio/archive/v.0.2.6.tar.gz tar -xzvf v.0.2.6.tar.gz mv php- miio-v.0.2.6 php-miio rm -f v.0.2.6.tar.gz

# I-download ang webhooks daemon

# Suriin ang pinakabagong sa github. Tamang linya sa ibaba ayon sa pinakabagong wget https://github.com/adnanh/webhook/releases/download/2.6.8/webhook-linux-arm.tar.gz tar -xzvf webhook-linux-arm.tar.gz mv webhook-linux-arm webhook rm -f webhook-linux-arm.tar.gz

# Lumikha ng mga setting para sa webhook

nano /opt/webhook/hooks.json #Input hooks.json nilalaman dito. Mag-right click sa masilya. # Ctr + X I-save ang Y.

# Lumikha ng script para sa pagtawag sa php-miio

nano /opt/webhook/mirobo.sh #Input mirobo.sh nilalaman dito. Mag-right click sa masilya. # Ctr + X I-save Y. # Gumawa ng maipapatupad na chmod + x /opt/webhook/mirobo.sh

# Lumikha ng script ng autostart at i-renew ang mga config

echo "/ opt / webhook / webhook -hooks /opt/webhook/hooks.json" >> /etc/init.d/webhook.sh chmod ugo + x /etc/init.d/webhook.sh update-rc.d webhook.sh mga default

#Reboot ang system

i-reboot

Pagkatapos ng reboot subukan ang iyong mga setting sa browser:

192.168.your.ip: 9000 / hooks / mirobo? method = find_me

pamamaraan - utos

params - mga parameter

Lahat ng mga pamamaraan (utos) at mga parameter na maaari mong makita dito:

github.com/marcelrv/XiaomiRobotVacuumProtocol

Nilalaman ng mga kawit.json

Baguhin ang iyong-token-dito sa iyong token mula sa vacuum.

Tamang ip-whitelist para sa iyong lokal na network o ganap na alisin kung pinatakbo mo ang iyong mga kawit mula sa ibang lugar (hindi ligtas).

[{"id": "mirobo", "execute-command": "/opt/webhook/mirobo.sh", "command-working-Directory": "/ opt / webhook", "response-message": "Pagpapatupad mirobo script "," include-command-output-in-response ": false," pass-environment-to-command ": [{" source ":" string "," envname ":" token "," name ": "your-token-here"}], "pass-arguments-to-command": [{"source": "url", "name": "method"}, {"source": "url", "name ":" params "}]," trigger-rules ": {" match ": {" type ":" ip-whitelist "," ip-range ":" 192.168.1.0/24 "}}}]

mirobo.sh nilalaman ng file. Copy-paste lang. Mayroong dalawang linya lamang (hindi 3).

#! / bin / bashphp /opt/php-miio/miio-cli.php --ip '127.0.0.1' --bindip '127.0.0.1' --token $ token --sendcmd '{"id":' $ RANDOM ', "method": "' $ 1 '", "params": [' $ 2 ']}'

Hakbang 3: I-setup ang Mga Button ng Dash ng Amazon

Buksan ang iyong Amazon App. Pumunta sa Mga Dash Device. Magdagdag ng bagong dash button tulad ng dati. Sa promt upang pumili ng isang produkto AYAW. Isara ang app. Tapos ka na.

Hakbang 4: I-setup ang Router upang Mahabol ang Kahilingan sa Button at Kontrolin ang MiVacuum

I-setup ang Router sa Catch Button Request at Kontrolin ang MiVacuum
I-setup ang Router sa Catch Button Request at Kontrolin ang MiVacuum
I-setup ang Router sa Catch Button Request at Kontrolin ang MiVacuum
I-setup ang Router sa Catch Button Request at Kontrolin ang MiVacuum
I-setup ang Router sa Catch Button Request at Kontrolin ang MiVacuum
I-setup ang Router sa Catch Button Request at Kontrolin ang MiVacuum

Gumagawa ito tulad ng sumusunod.

Kapag pinindot ang pindutan ay iniuugnay ito sa iyong network at hinihiling sa dhcp server na magtalaga ng isang ito address. Kailangan naming abutin ang kahilingang iyon at magsagawa ng isang webhook sa isang vacuum. Bilang isang karagdagang hakbang sa seguridad ay mai-block namin ang koneksyon sa Amazon upang hindi malaman ng Amazon na pinindot namin ang pindutan at walang kakayahang itulak ang pag-update ng firmware o iba pa.

Kadalasan gumagamit ako ng WinBox, ngunit ilang beses nang mas madali ang terminal.

# Lumikha ng panuntunan sa drop ng firewall na may listahan ng address upang mai-block

/ ip firewall filter magdagdag ng chain = forward src-address-list = blockdash action = drop comment = "Drop Amazon Dash"

Pagkatapos kailangan naming lumikha ng isang panuntunan sa pag-upa ng dhcp para sa bawat pindutan. Napakadaling gawin sa winbox.

DHCP Server - Mga Pagpapaupa

Ang mga ito ay pinindot namin ang pindutan na lilitaw ang bagong pag-upa. Ini-click namin ito bilang static at itinakda ang listahan ng address sa 'blockdash', itinakda ang oras ng pag-upa sa 5 seg (upang mag-expire ang pag-upa bago ang susunod na pindutin) at kopyahin ang mac address para sa paglaon.

# Ang utos na ito ay para lamang sa sanggunian kung nagdagdag ka ng lease sa winbox laktawan lamang ito.

/ ip dhcp-server lease magdagdag ng address-list = blockdash mac-address = XXXXXXXXXX address = 192.168.x.x lease-time = 5s

Ngayon kailangan naming ituro sa lease script.

Buksan ang tab na DHCP at idagdag ang 'myLeaseScript' bilang isang lease script sa iyong dhcp server.

Ngayon buksan ang System - Mga Script at idagdag ang 'myLeaseScript' na may nabasa, mga pahintulot sa pagsubok.

Nilalaman ng myLeaseScript:

Ang #Script ay tinawag nang dalawang beses sa lease (1) at sa paglabas (0): kung ($ leaseBound = 1) gawin = {/ log info ("Pagpapatakbo ng myLeaseScript. May nagpindot sa Dash Button?")

# Array ng lahat ng iyong mga pindutan at url upang tumawag

: mga lokal na pindutan {"XX: XX: XX: XX: XX: XX" = "https://192.168.your.ip: 9000 / hooks / mirobo? method = app_zoned_clean¶ms = [19300, 21000, 21200, 23800, 1] "; "YY: YY: YY: YY: YY: YY" = "https://192.168.your.ip: 9000 / hooks / mirobo? Method = app_zoned_clean¶ms = [24000, 21500, 26100, 22900, 1]"; "ZZ: ZZ: ZZ: ZZ: ZZ: ZZ" = "https://192.168.your.ip: 9000 / hooks / mirobo? Method = app_zoned_clean¶ms = [21400, 24200, 22700, 26200, 1], [24000, 21500, 26100, 22900, 1] "; "AA: AA: AA: AA: AA: AA" = "https://whateveryouwant.com:9000/other?argument=and_values"; };

# Suriin ang pinindot na pindutan at urll url

: maaga ang mac, url in = $ button do = {: if ($ mac = $ leaseActMAC) do = {/ log info ("Pressed". $ mac. "button") / tool fetch keep-result = no mode = https http-method = post url = $ url}}}

Ngayon ay na-automate mo ang iyong paglilinis sa isang pindutin ng Amazon Dash Button. Magsaya ka

Mangyaring magbayad ng pansin: Napaka-hindi ligtas na magpadala ng mga webhook na hindi naka-encrypt. Maaaring gumamit ang Webhook ng pag-encrypt, ngunit subalit sinubukan kong gawin itong gumana na hindi kailanman nangyari. Dahil ginagamit ko lang ito sa aking lokal na network hindi ako masyadong nag-aalala. Ngunit kung nais mong gamitin ito sa internet upang mag-hook up sa IFTTT kasama ang pagsasama ng Google Assistant mangyaring bigyang-pansin ang katotohanang ito! Hindi ako sigurado kung ano ang dahilan para sa isang pagkabigo ng crypto sa aking kaso. Mga sertipiko na nag-sign ng sarili na pininturahan ko na inisyu ng letsencrypt. Overcomplicated network na may bungkos ng mga NATs na-beate ko sa ipv6. Ngunit tila sa akin ang webhooks ay gumagana nang napakasama sa mga sertipiko at sa katunayan napakasamang naitala. At mukhang hindi gagana ang IFTTT sa ipv6. Sinubukan ko ang lahat ng makakaya ko, ngunit nabigo. Maaari kang magkaroon ng isang mas mahusay na swerte. Huwag kalimutan na gumawa ng isang post.

upd: Mayroon akong ideya kung paano ito gawing mas ligtas nang walang pag-encrypt. Lumilikha ka ng ilang mga script para sa bawat aksyon na nais mong gumanap. Binago mo ang mirobo.sh upang tawagan ang script para sa naibigay na parameter na ipinadala sa webhook hal. clean_bedroom. Ayan yun. Ang pinaka-taong nagsasamantala sa hook ay gagawin ay upang linisin ang iyong silid-tulugan nang paulit-ulit …)) Kapag ginawa ko iyon ay ia-update ko ang itinuturo

Hakbang 5: Paano Magplano ng Iyong Mapa

Paano Magplano ng Iyong Mapa
Paano Magplano ng Iyong Mapa

Kapag handa na ang iyong buong mapa sa iyong MiHome app ipadala ang iyong vacuum sa isang tukoy na lokasyon sa pamamagitan ng utos na 'app_goto'.

Gumawa ng isang screenshot ng buong mapa na may posisyon na ipinadala at base. Ang base point pagkatapos ng pag-reboot ng vacuum ay ang posisyon [25500, 25500] HINDI ITO ANG POSISYON NG CHARGING BASE, ngunit kung i-reboot mo ang vacuum sa base ng singilin pagkatapos ang posisyon ng base ng pagsingil ay 25500, 25500. Kaya mula sa kilalang posisyon na ipinadala at posisyon sa batayan maaari mong lagyan ng plano ang iyong mapa sa anumang programa ng CAD gamit ang screenshot na iyong kinuha. Gumamit ako ng libreng QCAD.

Matapos ilalagay ang imahe sa grid Gumagamit ako ng isang linya sa buong silid upang masukat ang pagsisimula at pagtatapos ng point.

Inirerekumendang: