Jak kontrolovat robotický vysavač z domácí automatizace
Jak kontrolovat robotický vysavač pomocí tcp requestu z openhabu.
Robzone, Proscenic nebo jakýkoliv jiný vysavač řízený tcp requesty.
– sniff pakety z android zařízení
– vytvořit skript
– přidat do Openhab
– Ovládejte svůj vysavač z domácí automatizace
Použil jsem tento návod pro můj Robzone duoro Xcontrol / Je to kopie Proscenic 790T.
Připojte se přes originální aplikaci pro Android k vašemu vysavači (RobZone v mém případě)
Spusťte sniffing aplikaci tPacketCapture this will capture all requests coming out of your android phone.
Spusťte zachycování paketů kliknutím na tlačítko capture.
Then switch to your original android app and click buttons you want to learn. I pushed power on/start, pause and go home/off.
Go back to the sniffing app and click „Running“. Follow the steps to disconnect VPN made by tPacketCapture app.
Go back to tPacketCapture app click File List tab -> click on the last capture file created and click share button. Choose how to send it to your computer. (i used Google Drive but you can use mail or anything else)
Pak přepněte na původní aplikaci pro Android a klikněte na tlačítka, která chcete naučit domácí automatizaci. například power on/start, pause a go home/off.
Vraťte se zpět do aplikace tPacketCapture a klikněte na tlačítko „Running“. Postupujte podle kroků k odpojení VPN provedené aplikací tPacketCapture.
Vraťte se zpět do aplikace tPacketCapture na kartě File List -> klikněte na poslední vytvořený soubor a klepněte na tlačítko sdílení. Vyberte způsob odeslání do počítače. (Já použil Google drive, ale vy můžete použít e-mail nebo cokoli jiného)
Nyní ho stáhněte do svého počítače a analyzujte ji pomocí wireshark nebo jiné podobné aplikace pro čtení souboru pcap.
Otevřete soubor ve wiresharku. Najděte zprávu, která byla odeslána do IP adresy vašeho vysavače. (10.20.1.229 v mém případě). Pokud najdete správný řádek, můžete také vidět zprávu, která byla odeslána. Obvykle se před odesíláním zprávy vyskytuje více linek připojení, v tomto kroku není důležité najít zprávu se zprávou.
Nyní klikněte buď pravým tlačítkem na linku->Follow->TCP Stream nebo ctrl+alt+shift+T
Uvidíte následující. zvolte pouze komunikaci přicházející do vysavače a „show and save data as Raw“
Zde vidím, že zprávy jsou ty, které začínají „bd“ (to je HEX kód a pro vás se možná bude lišit, zpráva obsahuje autorizační kód, IP a další specifické atributy)
linky, které začínají na „14“, jen udržují živou komunikaci.
Nyní můžete tyto 3 řádky uložit do textového souboru pro pozdější použití.
Řádky jsou v pořadí ve kterém jste mačkali tlačítka. Takže pro mě to je ON, PAUSE, HOME.
Nyní část na serveru Openhhab. Můj Openhab běží na Raspberry Pi s Openhabianem. Pokud váš Openhab běží na systému s Windows, budete muset tyto kroky trochu upravit.
Vytvořil jsem skript /etc/openhab2/robzone/robzone.sh (cesta a jméno jsou na vás). Nezapomeňte dát spustitelné oprávnění
chmod +x /etc/openhab2/robzone/robzone.sh
A zde je obsah skriptu, změňte bd000 … na vlastní HEX kódy a IP a port vašeho vysavače (můžete vidět port ve wiresharku, v mém případě 8888):
#/bin/bash case "$1" in -r|--start) echo -n bd000000fa00c8000000a927a8270000000000007b22636d64223a302c22636f6e74726f6c223a7b2261757468436f6465223a223633333631222c226465766963654970223a2231302e32302e312e323239222c22646576696365506f7274223a2238383838222c227461726765744964223a2238383863373639316337636437303933222c2274617267657454797065223a2233227d2c22736571223a302c2276616c7565223a7b227472616e736974436d64223a22313030227d7d| perl -pe 's/([0-9a-f]{2})/chr hex $1/gie' | nc -4 -q1 10.20.1.229 8888 ;; -s|--stop) echo -n bd000000fa00c8000000a927a8270000000000007b22636d64223a302c22636f6e74726f6c223a7b2261757468436f6465223a223633333631222c226465766963654970223a2231302e32302e312e323239222c22646576696365506f7274223a2238383838222c227461726765744964223a2238383863373639316337636437303933222c2274617267657454797065223a2233227d2c22736571223a302c2276616c7565223a7b227472616e736974436d64223a22313032227d7d| perl -pe 's/([0-9a-f]{2})/chr hex $1/gie' | nc -4 -q1 10.20.1.229 8888 ;; -h|--home) echo -n bd000000fa00c8000000a927a8270000000000007b22636d64223a302c22636f6e74726f6c223a7b2261757468436f6465223a223633333631222c226465766963654970223a2231302e32302e312e323239222c22646576696365506f7274223a2238383838222c227461726765744964223a2238383863373639316337636437303933222c2274617267657454797065223a2233227d2c22736571223a302c2276616c7565223a7b227472616e736974436d64223a22313034227d7d| perl -pe 's/([0-9a-f]{2})/chr hex $1/gie' | nc -4 -q1 10.20.1.229 8888 ;; *) echo "parameters are -start -stop -home" exit 1 ;; esac
Používám exec1 binding.
Items (../items/default.items)
String Robzone "Robot vacuum" [ "Switchable" ] { exec=">[ON:/bin/sh@@-c@@cd /etc/openhab2/robzone/;sh robzone.sh -r] >[PAUSE:/bin/sh@@-c@@cd /etc/openhab2/robzone/;sh robzone.sh -s] >[OFF:/bin/sh@@-c@@cd /etc/openhab2/robzone/;sh robzone.sh -h]" }
Sitemap (../items/default.items)
Switch item=Robzone label="Vacuum[]" icon="woman_3" mappings=[ON="Start", PAUSE="Pause", OFF="Go Home"]
Volitelné Items pro kontrolu vysavače použitím Google Home.
Items (../items/default.items)
Switch Robzone_voice "Robot vacuum" [ "Switchable" ]
rules pro hlasové ovládání (../rules/vacuum.rules)
rule "rVacuum_voice" when Item Robzone_voice received command then switch (receivedCommand) { case ON : Robzone.sendCommand("ON") case OFF : Robzone.sendCommand("OFF") } end