Talaan ng mga Nilalaman:
- Hakbang 1: Pag-decode ng Format ng Data
- Hakbang 2: Naghahanap ng Mas Malalim
- Hakbang 3: Pagma-map Ito
- Hakbang 4: Bata na Wall sa Unahan
- Hakbang 5: Ginagawa Ito.
- Hakbang 6: Isang bagay na Mas Permanenteng
- Hakbang 7: OpenHAB Config
- Hakbang 8: Buod
Video: Pag-hack ng isang LG Ducted Split para sa Home Automation: 8 Hakbang (na may Mga Larawan)
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:13
Una sa lahat - Hindi ito ibang Infrared remote control na pagtulad sa hack. Ang aking partikular na AC ay walang magagamit na interface na dinisenyo para sa anumang uri ng kontrol maliban sa kasama na naka-mount na mga kontrol sa smart.
Mayroon akong isang LG Ducted reverse split system sa aking bahay. Sa kasamaang palad ito ay ginawa sa isang oras kung saan ang IoT ay hindi mataas sa anumang listahan ng mga tagagawa. Natuklasan kong mayroon itong ilang mga pagpipilian para sa kontrol ng 'master' ngunit kahit na ang yunit ay 2 taong gulang lamang sa aking unang pagtangka nito, ang mga board ng pagpapalawak ay unobtanium at ang mga presyo ay astronomiko pa rin. Tulad ng addon na 'Wireless RF Remote' na maaaring gawing mas madali ang mga bagay ngunit imposibleng bumili.
Kung naging mapagpipilian ko ito, hindi ito magiging isang LG ngunit dahil na-install ito sa bahay nang binili ko ito (at ang gastos sa kapalit ay malamang na higit sa $ 10k) ito ang dapat kong harapin.
Layunin - Upang makontrol ang AC sa pamamagitan ng MQTT para sa mga layunin ng awtomatiko sa pamamagitan ng OpenHAB at IFTTT / Google Assistant
Hakbang 1: Pag-decode ng Format ng Data
Sinimulan ko ang prosesong ito 4 taon na ang nakakaraan ngunit hindi napakalayo at ayaw ipagsapalaran na mapinsala ang yunit - Lalo na't ang mga bahagi para sa halos imposibleng makahanap.
Nakuha ang Controller sa pader Nakakita ako ng 3 mga wire na tinukoy kong maging Ground, 12v at 'signal'
Ang boltahe ng pagbibigay ng senyas sa linya ng data ay nasa 12v, ngunit napansin ko na tila nagbabagu-bago sa multimeter (ilang uri ng pulso sa linya).
Sumakay ako sa tinapay ng isang pangunahing circuit upang magmaneho ng isang opto isolator sa pamamagitan ng pin ng data at ikinonekta ang kabilang panig ng opto isolator bilang isang input sa sound card ng aking PC at nakakuha ng isang hindi magandang bersyon ng isang output output (Pic 1).
Ito ay tungkol sa hanggang sa nakuha ko sa oras na iyon - nakikita kong mayroong isang bagay doon ngunit hindi ko talaga alam kung paano ito 'decode'.
Mula nang mapagana ang aking Coffee Machine IoT, nagkaroon ako ng isang nai-refresh na interes na subukan itong muli na may kaunting pagpapasiya sa oras na ito.
Nai-post ko ang aking mga natuklasan sa mga forum ng EEVBlog upang makita kung ang isang tao ay maaaring makapagbigay ng ilang ilaw at isang mahusay na tao na nagngangalang Ian ang sumagip sa akin - Inilatag niya ito sa isang paraang ganap na magkaroon ng kahulugan (Larawan 2)
Talaga, ang stream ng data ay 13 bytes ng 'standard serial' - 8 data bits, isang start bit at one stop bit (walang pagkakapareho) ngunit sa isang napaka-mababang rate ng baud na 104bps.
Hakbang 2: Naghahanap ng Mas Malalim
Kaya't ngayon na mayroon akong ideya kung paano nai-format ang data, kailangan ko ng isang paraan upang mabasa ang data sa isang mas masiglang paraan.
Hinila ko ang isa sa aking mga tagakontrol sa dingding at isinabit ito sa pamamagitan ng shifter sa antas ng lohika sa isang Arduino na may isang simpleng sketch upang mabasa ang 13 bytes ng data sa pamamagitan ng software serial port na naka-configure sa 104bps at i-print ito:
168, 18, 0, 8, 0, 192, 6, 22, 0, 0, 0, 0, 168, 18, 0, 8, 0, 192, 6, 22, 0, 0, 0, 0, 40, 19, 0, 8, 0, 200, 6, 31, 0, 0, 0, 0, 40, 19, 0, 8, 0, 200, 6, 31, 0, 0, 0, 0, 200, 18, 0, 8, 64, 0, 6, 25, 0, 0, 0, 0, 200, 18, 0, 8, 64, 0, 6, 25, 0, 0, 0, 0, 168, 18, 0, 8, 0, 200, 6, 22, 0, 0, 0, 0, 168, 18, 0, 8, 0, 200, 6, 22, 0, 0, 0, 0, 168, 18, 0, 8, 0, 200, 6, 22, 0, 0, 0, 0, ** Sa totoo lang 12 bytes dito
Nagkaroon kami ng aksyon!
Sa pamamagitan ng pagbabago ng iba't ibang mga setting sa controller, nagawa kong ehersisyo ang mga byte na nagbabago:
168, 3, 0, 0, 0, 192, 3, 31, 0, 0, 0, 08, 248, Fan LOW168, 35, 0, 0, 0, 192, 3, 31, 0, 0, 0, 0, 248, Fan MED 168, 67, 0, 0, 0, 192, 3, 31, 0, 0, 0, 0, 152, Fan TAAS
168, 67, 0, 0, 0, 248, 3, 33, 0, 0, 0, 0, 82, Z1234 168, 67, 0, 0, 0, 192, 3, 34, 0, 0, 0, 0, 133, Z1 168, 67, 0, 0, 0, 160, 3, 34, 0, 0, 0, 0, 229, Z2 168, 67, 0, 0, 0, 144, 3, 34, 0, 0, 0, 0, 245, Z3 168, 67, 0, 0, 0, 136, 3, 35, 0, 0, 0, 0, 204, Z4
168, 75, 0, 0, 0, 136, 3, 35, 0, 0, 0, 04, 244, Mode FAN 168, 79, 0, 0, 0, 136, 10, 35, 0, 0, 0, 0, 249, Mode AUTO 168, 67, 0, 0, 0, 136, 3, 35, 0, 0, 0, 0, 204, Mode COOL 168, 83, 0, 0, 0, 136, 15, 34, 0, 0, 0, 0, 225, Mode HEAT 168, 7, 0, 0, 0, 136, 15, 34, 0, 0, 0, 0, 61, Mode DH
168, 15, 0, 0, 0, 136, 3, 34, 0, 0, 0, 0, 49, Temp 18 168, 15, 0, 0, 0, 136, 4, 34, 0, 0, 0, 0, 48, Temp 19 168, 15, 0, 0, 0, 136, 5, 34, 0, 0, 0, 0, 51, Temp 20 168, 15, 0, 0, 0, 136, 15, 34, 0, 0, 0, 0, 37, Temp 30
Ang mga numero ay mas may katuturan kung titingnan mo ang mga ito sa binary ngunit ano ang nasa ika-13 byte ?? Nasa buong lugar ito …
Hakbang 3: Pagma-map Ito
Sa pamamagitan ng pagsubok at error, natukoy ko ang mga nauugnay na piraso sa 13 byte ng data na kakailanganin kong maipadala.
Hakbang 4: Bata na Wall sa Unahan
Dito naging komplikado. Mayroon akong dalawang hadlang upang mapagtagumpayan
a) Ang ika-13 byte ay lilitaw na maging isang checkum ng data na kailangan ko upang kahit papaano magtrabaho. b) Paano ko maipapadala ang data pagkatapos? Isa lang itong wire.
Ang isyu na 'a' ay naging TUNAY na madali, ngunit sa dalisay na pagkakataon ay nagawa kong malampasan ito.
Sa aking mga pagsubok, tumitingin ako sa data tulad ng: A802000000040F61000000004B A81200004004169A00000000FB A81200004004159A00000000F8 A81200004004149A000000000000 A81200084000149C00000000E7 A83200084000149C0000000087 A85200084000149C00000000
Ito ang 13bytes ng data kabilang ang Checkum (dito sa HEX sa halip na DEC).
Kapag naghahanap ako ng orakulo na google sa 'kung paano i-reverse ang engineer ng isang tseke' Natagpuan ko ang pahinang ito sa stack exchange sa ibang tao sa pamamagitan ng pangalan ni Nick na humihiling ng halos katulad na bagay sa akin ngunit hindi lamang iyon, pinag-usapan nila tungkol sa isang air conditioner at ang kanilang data ay halos magkapareho ng format sa minahan - Maaaring ito ??? Sa lahat ng aking paghahanap (sa 4 o higit pang mga taon), hindi isang tao ang nag-post ng anumang impormasyon tungkol sa kung paano i-hack ang protocol sa mga aircon na ito at nagkataong madapa ako sa isang tao na gumagawa ng parehong bagay sa pamamagitan ng paghahanap para sa isang bagay na halos ganap na walang kaugnayan? Ito ay isang pagpapala - Nag-post pa nga siya na nagtrabaho niya at ang solusyon ay: Idagdag ang lahat ng mga Byte ng data at pagkatapos ay XOR sa "U".
Sa pamamagitan ng kamay na iyon ay idinagdag ko ito sa aking code upang makalkula kung ano ang naisip kong ang checkum ay dapat na kumpara sa kung ano talaga ito ngunit ang lahat ay MALI !!
Bilang ito ay naging, ito ay uri ng mali. Nang magsimula akong tumingin sa mga numero sa binary, ito ay may kumpletong kahulugan.
Ang tugon mula sa 'XOR kasama ang U' ay laging nagbalik ng 9 na piraso ng data (ang ika-9 na bit palaging isa) ngunit ang iba pang mga piraso ay tama. Inalis ko lamang ang ika-9 na bit sa pamamagitan ng pagkuha ng 256 mula sa nagresultang numero at pagkatapos ay tumugma ito !!
Kung hindi pa para sa indibidwal na ito, baka napakamot pa ako ng ulo. Hat din sa kanya ngunit hindi ko siya makontak - Iyon talaga ang kanyang nag-iisang post sa stackexchange forum. Well, salamat sa hindi kilalang tao:)
Ang susunod na hamon ay ang paggawa ng isang circuit na magpapahintulot sa akin na gayahin ang umiiral na controller. Na-map ko ang eskematiko para sa circuit ng drive (Pic1 at Pic 2) ngunit tila masyadong kumplikado para sa akin na kailangan itong kopyahin upang makuha ang nais ko. Binabasa ko na ang signal kung tutuusin. Nag-opt ako para sa isang mas simpleng pamamaraan - Paggamit ng arduino upang maghimok ng isang opto isolator upang hilahin ang linya ng signal ng 12v na mababa tulad ng kinakailangan.
Dinisenyo ko rin ang isang mas simpleng circuit para sa Rx ngunit hindi ito nasubukan, natapos ko ang pagdikit sa antas ng converter para sa pagiging simple.
Hakbang 5: Ginagawa Ito.
Sa sandaling nagkaroon ako ng transmisyon ng circuitboard ng board, at may isang puso ng karera, nag-ayos ako ng isang (static) na string na 12 bytes, kinalkula ang tsekum at ipadala sa arduino ang utos - Kahanga-hanga, na-update ang display !!! Manalo ka!
Ang pangwakas na aktwal na pagsubok ay upang idagdag ang aking arduino sa BUS kasama ang 2 iba pang mga tagakontrol para sa isang tunay na live na pagsubok at sigurado na, gumana ito.
Kaya't ngayon ay makakabasa ako at Sumulat sa bus ngunit wala lang akong kakayahang magawa ito nang simple.
Dahil ginagamit ko ang MQTT halos eksklusibo para sa lahat ng aking pag-aautomat sa bahay, natural na magiging pareho ito. Isinulat ko ang code sa loob ng maraming araw upang makontrol ang 4 pangunahing mga elemento ng AC, na binabasa din ang dati nang katayuan (mula sa iba pang mga module sa BUS)
Ang balak ay magkaroon ng code na tumatakbo sa isang module na ESP8266 subalit tila na ang ESP8266 ay hindi makagawa ng isang baud rate na mas mababa sa 104bps. Kailangan kong bumalik sa isang pangkaraniwang Arduino Uno kasama ang Wiznet ethernet ngunit hindi iyon mahirap dahil ang aking comms rack ay literal na nasa kabilang panig ng dingding mula sa isa sa mga AC controlers.
Ang code ay medyo sa buong lugar ngunit dapat mabasa. Nagkaroon ako ng maraming mga problema sa pagpigil sa controller mula sa pagbabasa ng sarili nitong output ngunit paulit-ulit din ang code na ito ay sariling nai-publish na mga paksa na natanggap mula sa MQTT pabalik sa aircon. Talaga, lilikha ito ng isang walang katapusang loop. Sa huli, ang ilang pag-clear ng buffer at pagkaantala sa pagproseso ng code pagkatapos na mai-publish sa MQTT ay naayos ito.
Ang Rx, Tx pin sa AC ay naka-code bilang 3, 4 ngunit baguhin kung nais mo
Ang code ay naka-configure upang mai-publish at tanggapin ang mga utos tulad ng:
ha / mod / 5557 / P 0/1 - Powerha / mod / 5557 / M 0/1/2/3/4 - Mode Cool, Dehumidify, Fan, Auto, Heatha / mod / 5557 / F 0/1/2 - Fan mababa, med, highha / mod / 5557 / Z ibig sabihin 1111 para sa lahat ng mga zone sa 1000 para sa zone 1 lamang.
** Mula sa controller, ang mga zone ay hindi maitatakda sa '0000' subalit tila na kung maglabas ka ng halaga, babalik ito sa '1000'.
Ang pinakabagong bersyon ng code ay magagamit mula sa aking GitHub Repo:
Hakbang 6: Isang bagay na Mas Permanenteng
Natipon ko ang isang arduino prototype board at na-install ang lahat ng mga bahagi habang pinapasakay ako sa kanila ng tinapay.
Hakbang 7: OpenHAB Config
Tingnan ang nakalakip na file para sa OpenHAB Item, sitemap at mga patakaran
Pagsamahin ito sa IFTTT OpenHab binding at Google Assistant / Home at mayroon kang isang napakalakas na kontroladong boses at / o 'Smart' aircon na lumalagpas sa halos lahat ng magagamit na komersyal na produkto!
Hakbang 8: Buod
Sa Konklusyon - Kung ikaw ay isa sa mga mahihirap na kaluluwa na may isang medyo mas matandang LG ducted split air conditioner, hindi ka nag-iisa. May pag-asa pa para sa amin!
Inaasahan kong ang napagtuturoang ito ay makahanap ng isang tao na nangangailangan nito tulad ng ginawa ko. Karaniwan WALANG impormasyon na maaari kong makita (maliban sa checkum mula sa 'Nick'). Kailangan kong magsimula mula sa simula ngunit natutuwa ako sa resulta.
Ang impormasyon ay isang malabo na alam ko ngunit kung ikaw ay nasa parehong sitwasyon tulad ng sa akin, mas handa akong tumulong.
-- Pag-iingat / Pag-update --- Bagaman posible na baguhin ang mga setting sa AC gamit ang unit na Off, nalaman ko na pagdating sa control ng Zone ay tila gumugulo dito. Nagawa ko ang maraming pagsubok sa unit off at nalaman ko na ang mga zone ay ipapakita bilang hindi aktibo ngunit kapag ang unit ay tumatakbo, tila na ang mga dampers ay hindi ganap na sarado (ngunit hindi rin ganap na buksan). I-reset ang yunit sa pangunahing breaker at nalutas nito ang isyu. Dahil ang pagpapalit lamang ng mga zone kapag ang yunit ay nakabukas, hindi ito naging problema
Na-update ko rin ang code upang mai-publish lamang (sa MQTT) ang mga pagbabago na nagmula sa master controller at hindi sa pangunahing yunit. Sa sandaling muli, maaari itong maging sanhi ng mga problema dahil ang pangunahing yunit ay magpapadala ng '0000' para sa mga zone (na maaaring maging problema)
Ipinakikilala din ng na-update na code ang ilang mga hadlang sa oras upang subukang pigilan ang arduino mula sa paglipat sa parehong oras ng master at pangunahing yunit. Sigurado ako na marahil ay may isang pamamaraan na ginagamit ng controller upang simulan ang isang ipadala ang data tulad ng paghila ng linya na mababa para sa Xms bago ipadala ngunit hindi ko pa ito natuklasan kung mayroon
Natuklasan ko na ang pangunahing yunit ay magpapadala ng data tuwing 60 segundo at ang master controller ay nagpapadala bawat 20 segundo. Sinusubukan ng code na itigil ang pagpapadala ng data sa loob ng 2 segundo ng pagtanggap ng packet ng data. Gayunpaman, kung minsan ang master at pangunahing yunit ay nagpapadala ng napakalapit sa bawat isa. Ito ay marahil ay mapapino nang mas lalong madaling panahon
** Maaaring gumana sa mas bagong mga yunit
*** Ang ilang impormasyon na natagpuan sa aking paglalakbay sa pagsasaliksik ay ipinahiwatig na ang Panasonic ducted split ay maaaring gumamit ng parehong protocol. YMMV.
Inirerekumendang:
HeadBot - isang Robot na Nagbabago ng Sarili para sa Pag-aaral at Pag-abot sa STEM: 7 Mga Hakbang (na may Mga Larawan)
HeadBot - isang Self-Balancing Robot para sa STEM Learning and Outreach: Headbot - isang dalawang talampakan ang taas, self-balancing robot - ay ang ideya ng South Eugene Robotics Team (SERT, FRC 2521), isang mapagkumpitensyang pangkat ng robotics ng high school sa UNA Kompetisyon ng Robotics, mula sa Eugene, Oregon. Ang sikat na robot sa pag-abot na ito ay ginagawang
Pag-iniksyon sa Keyboard / Awtomatikong I-type ang Iyong Password Sa Isang Pag-click !: 4 Mga Hakbang (na may Mga Larawan)
Pag-iniksyon sa Keyboard / Awtomatikong I-type ang Iyong Password Sa Isang Pag-click !: Mahirap ang mga password … at ang pag-alala sa isang ligtas ay mas mahirap pa! Bukod dito kung mayroon kang kasama, nagbabagong password ay magtatagal ito upang mai-type. Ngunit huwag matakot sa aking mga kaibigan, mayroon akong solusyon dito! Lumikha ako ng isang maliit na awtomatikong pag-type ng makina na
Pagbuo ng isang DIY Arduino sa isang PCB at Ilang Mga Tip para sa Mga Nagsisimula: 17 Mga Hakbang (na may Mga Larawan)
Pagbuo ng isang DIY Arduino sa isang PCB at Ilang Mga Tip para sa Mga Nagsisimula: Ito ay sinadya bilang isang gabay sa sinumang paghihinang ng kanilang sariling Arduino mula sa isang kit, na maaaring mabili mula sa A2D Electronics. Naglalaman ito ng maraming mga tip at trick upang matagumpay itong mabuo. Malalaman mo rin ang tungkol sa kung ano ang lahat ng iba't ibang mga sangkap
Roomblock: isang Platform para sa Pag-aaral ng Pag-navigate sa ROS Sa Roomba, Raspberry Pi at RPLIDAR: 9 Mga Hakbang (na may Mga Larawan)
Roomblock: isang Platform para sa Pag-aaral ng Pag-navigate sa ROS Sa Roomba, Raspberry Pi at RPLIDAR: Ano ito? &Quot; Roomblock " ay isang robot platform na binubuo ng isang Roomba, isang Raspberry Pi 2, isang laser sensor (RPLIDAR) at isang mobile baterya. Ang mounting frame ay maaaring gawin ng mga 3D printer. Pinapayagan ang sistema ng nabigasyon ng ROS na gumawa ng isang mapa ng mga silid at gamitin ang
Paano Gumawa ng isang Split Screen Video na May Apat na Hakbang: 4 na Hakbang (na may Mga Larawan)
Paano Gumawa ng isang Split Screen Video na May Apat na Hakbang: Madalas naming nakikita ang isang parehong palabas sa isang eksena nang dalawang beses sa isang dula sa TV. At sa pagkakaalam namin, walang kambal na kapatid ang aktor. Napanood din namin na ang dalawang mga video sa pag-awit ay inilalagay sa isang screen upang ihambing ang kanilang mga kasanayan sa pagkanta. Ito ang lakas ng spl