Სარჩევი:

სახლის ავტომატიზაციისთვის LG Ducted Split– ის გატეხვა: 8 ნაბიჯი (სურათებით)
სახლის ავტომატიზაციისთვის LG Ducted Split– ის გატეხვა: 8 ნაბიჯი (სურათებით)

ვიდეო: სახლის ავტომატიზაციისთვის LG Ducted Split– ის გატეხვა: 8 ნაბიჯი (სურათებით)

ვიდეო: სახლის ავტომატიზაციისთვის LG Ducted Split– ის გატეხვა: 8 ნაბიჯი (სურათებით)
ვიდეო: КРАСИВЫЙ РЕМОНТ ДВУХКОМНАТНОЙ КВАРТИРЫ СТУДИИ 58 м.кв. Bazilika Group. Ремонт квартиры под ключ. 2024, ნოემბერი
Anonim
სახლის ავტომატიზაციისთვის LG Ducted Split– ის გატეხვა
სახლის ავტომატიზაციისთვის LG Ducted Split– ის გატეხვა

უპირველეს ყოვლისა - ეს არ არის ინფრაწითელი დისტანციური მართვის ემულაციის გარჩევა. ჩემს კონკრეტულ AC– ს არ აქვს გამოსაყენებელი ინტერფეისი, რომელიც განკუთვნილია ნებისმიერი სახის კონტროლისთვის, გარდა კედელზე დამონტაჟებული ჭკვიანი მართვისა.

ჩემს სახლში მაქვს LG Ducted საპირისპირო გაყოფის სისტემა. სამწუხაროდ, ის გაკეთდა იმ დროს, როდესაც IoT არ იყო მაღალი მწარმოებლების სიაში. აღმოვაჩინე, რომ მას ჰქონდა "სამაგისტრო" კონტროლის რამდენიმე ვარიანტი, მაგრამ მიუხედავად იმისა, რომ დანადგარი მხოლოდ 2 წლის იყო იმ დროს, როდესაც მე პირველად ვცადე ეს, გაფართოების დაფები არაობიტანი იყო და ფასები მაინც ასტრონომიული იყო. როგორც იყო "უკაბელო RF დისტანციური" დამატება, რომელიც ყველაფერს ბევრად გაადვილებდა, მაგრამ შეუძლებელს გახდიდა ყიდვას.

ეს რომ ყოფილიყო ჩემი არჩევანი, ეს არ იქნებოდა LG, მაგრამ რადგან ის შევიძინე სახლში, როდესაც მე შევიძინე (და მისი ჩანაცვლების ღირებულება სავარაუდოდ $ 10 ათასს გადააჭარბებს) ეს არის ის, რისი მოგვარებაც მომიწია.

მიზანი - ACQ– ს კონტროლი MQTT– ით ავტომატიზაციის მიზნით OpenHAB და IFTTT/Google ასისტენტის საშუალებით

ნაბიჯი 1: მონაცემთა ფორმატის გაშიფვრა

მონაცემთა ფორმატის გაშიფვრა
მონაცემთა ფორმატის გაშიფვრა
მონაცემთა ფორმატის გაშიფვრა
მონაცემთა ფორმატის გაშიფვრა

მე დავიწყე ეს პროცესი 4 წლის წინ, მაგრამ არც ისე შორს მივედი და არ მინდოდა რისკის ქვეშ მყოფი დანადგარი - მით უმეტეს, რომ მისი ნაწილების პოვნა თითქმის შეუძლებელია.

კონტროლერის ამოღება კედლიდან აღმოვაჩინე 3 მავთული, რომლებიც დავადგინე რომ იყო მიწა, 12 ვ და "სიგნალი"

სასიგნალო ძაბვა მონაცემთა ხაზზე იყო 12 ვ, მაგრამ მე შევამჩნიე, რომ ის თითქოს იცვლებოდა მულტიმეტრზე (ერთგვარი პულსი ხაზზე).

მე ჩავჯექი ძირითად წრედში, რათა ოპტო იზოლატორი გადაეყვანა მონაცემთა პინის საშუალებით და შევაერთე ოპტო იზოლატორის მეორე მხარე, როგორც შეყვანა ჩემი კომპიუტერის ხმის ბარათზე და მივიღე მოცულობის გამომუშავების ცუდი ვერსია (სურათი 1).

ეს არის იმდენად რამდენადაც მე მივიღე იმ დროს - მე ვხედავდი, რომ იქ იყო რაღაც, მაგრამ მე ნამდვილად არ ვიცოდი როგორ "გაშიფრა" ეს.

მას შემდეგ რაც ჩემი ყავის აპარატი IoT გააქტიურდა, მე მქონდა განახლებული ინტერესი, რომ ამჯერად კიდევ ერთხელ გამეცადა.

მე გამოვაქვეყნე ჩემი აღმოჩენები EEVBlog– ის ფორუმებზე, რათა დაენახა, შეძლებს თუ არა ვინმე შუქს და დიდი ბიჭი, სახელად იანი მოვიდა ჩემს დასახმარებლად - მან ეს ისე აჩვენა, როგორც სრულიად აზრი (სურათი 2)

ძირითადად, მონაცემთა ნაკადი არის 13 სტანდარტული სერიული 13 ბაიტი - 8 მონაცემთა ბიტი, ერთი საწყისი ბიტი და ერთი გაჩერების ბიტი (არ არის პარიტეტული), მაგრამ ძალიან დაბალი სიჩქარით 104 ბ / წმ.

ნაბიჯი 2: გამოიყურება უფრო ღრმა

უფრო ღრმად გამოიყურება
უფრო ღრმად გამოიყურება

ასე რომ, ახლა, როდესაც მე მქონდა წარმოდგენა, თუ როგორ ხდება მონაცემთა ფორმატირება, მე მჭირდებოდა გზა, რომ შემეძლოს მონაცემების უფრო დინამიური გზით წაკითხვა.

მე ამოვიღე ერთი ჩემი კონტროლერი კედლიდან და ჩავრთე ის ლოგიკური დონის გადამრთველით Arduino– ზე მარტივი ესკიზით, რომ წავიკითხე მონაცემების 13 ბაიტი პროგრამული სერიული პორტის საშუალებით, კონფიგურირებული 104bps– ზე და დავბეჭდე იგი:

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, ** აქ რეალურად 12 ბაიტია

ჩვენ გვქონდა მოქმედება!

კონტროლერზე სხვადასხვა პარამეტრების შეცვლით, მე შევძელი შემუშავებული ბაიტების შეცვლა:

168, 3, 0, 0, 0, 192, 3, 31, 0, 0, 0, 0, 248, Fan LOW168, 35, 0, 0, 0, 192, 3, 31, 0, 0, 0, 0, 248, გულშემატკივართა MED 168, 67, 0, 0, 0, 192, 3, 31, 0, 0, 0, 0, 152, გულშემატკივართა მაღალი

168, 67, 0, 0, 0, 248, 3, 33, 0, 0, 0, 0, 82, Z1234 168, 67, 0, 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, 0, 244, რეჟიმი FAN 168, 79, 0, 0, 0, 136, 10, 35, 0, 0, 0, 0, 249, რეჟიმი AUTO 168, 67, 0, 0, 0, 136, 3, 35, 0, 0, 0, 0, 204, რეჟიმი COOL 168, 83, 0, 0, 0, 136, 15, 34, 0, 0, 0, 0, 225, რეჟიმი HEAT 168, 7, 0, 0, 0, 136, 15, 34, 0, 0, 0, 0, 61, რეჟიმი 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, ტემპ 19 168, 15, 0, 0, 0, 136, 5, 34, 0, 0, 0, 0, 51, ტემპ 20 168, 15, 0, 0, 0, 136, 15, 34, 0, 0, 0, 0, 37, ტემპ 30

რიცხვები ბევრად უფრო აზრიანია, როდესაც მათ ორობითი სახით უყურებთ, მაგრამ რა შუაშია მე -13 ბაიტი? ის ყველგან არის…

ნაბიჯი 3: მისი შედგენა

რუქის გამოტანა
რუქის გამოტანა

ცდისა და შეცდომის საშუალებით, მე შევძელი შესაბამისი ბიტების დადგენა მონაცემების 13 ბაიტში, რომელთა გადაცემა დამჭირდებოდა.

ნაბიჯი 4: აგურის კედელი წინ

აგურის კედელი წინ!
აგურის კედელი წინ!
აგურის კედელი წინ!
აგურის კედელი წინ!
აგურის კედელი წინ!
აგურის კედელი წინ!

სწორედ აქ გართულდა. ორი დაბრკოლება მქონდა დასაძლევი

ა) მე -13 ბაიტი აღმოჩნდა მონაცემების შემოწმება, რომელიც მე მჭირდებოდა როგორმე შემუშავებისთვის.ბ) როგორ გადავიტანო მონაცემები მაშინ? ეს მხოლოდ ერთი მავთულია.

საკითხი "ა" მართლაც ადვილი აღმოჩნდა, მაგრამ ეს იყო სრულიად დამთხვევა, როდესაც მოვახერხე მისი გადალახვა.

ჩემი ტესტები, მე ეძებდა მონაცემები, როგორიცაა: A802000000040F61000000004B A81200004004169A00000000FB A81200004004159A00000000F8 A81200004004149A00000000E5 A81200084000149C00000000E7 A83200084000149C0000000087 A85200084000149C00000000A7

ეს არის 13 ბაიტი მონაცემები ჩათვლის ჩათვლით (აქ HEX– ში DEC– ის ნაცვლად).

როდესაც მე ვეძებდი ორაკლს, რომელიც არის გუგლში "როგორ შევცვალო ჩეკი ჯამი" მე წავაწყდი ამ გვერდს სკამზე გაცვლით სხვასთან ნიკი, რომელიც მეკითხებოდა თითქმის იმავეს როგორც მე, მაგრამ არა მხოლოდ ამას, ისინი საუბრობდნენ კონდიციონერის შესახებ და მათი მონაცემები თითქმის იდენტური იყო ჩემს ფორმატში - შეიძლება იყოს ??? მთელი ჩემი ძიების დროს (დაახლოებით 4 წლის განმავლობაში), არცერთ ადამიანს არ გამოუქვეყნებია ინფორმაცია იმის შესახებ, თუ როგორ უნდა გატეხოს პროტოკოლი ამ კონდიციონერებზე და მე შემთხვევით წავაწყდები ვინმეს იმავეს, რასაც ეძებს თითქმის სრულიად დაუკავშირებელი? ეს იყო კურთხევა - მან გამოაქვეყნა ისიც, რომ მან დაამუშავა და გამოსავალი იყო: დაამატეთ ყველა მონაცემთა ბაიტი და შემდეგ XOR "U" - ით.

ამის ხელით დავამატე ის ჩემს კოდს, რომ გამოვთვალო ის, რაც მე ვფიქრობდი, რომ ჩეკუსი უნდა ყოფილიყო იმის წინააღმდეგ, რაც სინამდვილეში იყო, მაგრამ ეს ყველაფერი არასწორი იყო !!

როგორც ირკვევა, ეს იყო რაღაც არასწორი. როდესაც დავიწყე რიცხვების თვალიერება ორობითი სახით, ამას სრული აზრი ჰქონდა.

პასუხი XOR– ით U– ით ყოველთვის აბრუნებდა მონაცემების 9 ბიტს (მე –9 ბიტი ყოველთვის ერთი), მაგრამ სხვა ბიტები მართალი იყო. მე უბრალოდ ამოვიღე მე -9 ბიტი მიღებული რიცხვიდან 256 და შემდეგ დაემთხვა !!

რომ არა ეს ინდივიდი, შეიძლება მე კვლავ თავი დამენახა. მასაც აქვს ქუდები, მაგრამ მე არ შემიძლია მასთან დაკავშირება - ეს იყო მისი ერთადერთი პოსტი სტაკ -გაცვლის ფორუმზე. კარგი, მადლობა უცნობო:)

შემდეგი გამოწვევა იყო მიკროსქემის გაკეთება, რომელიც საშუალებას მომცემდა არსებული კონტროლერის სიმულაცია. მე შევადგინე სქემა წამყვანი წრედისთვის (სურათი 1 და სურათი 2), მაგრამ მეჩვენა, რომ ძალიან რთული იყო ჩემთვის მისი რეპროდუცირება იმისთვის, რაც მინდოდა. ბოლოსდაბოლოს უკვე ვკითხულობდი სიგნალს. მე ავირჩიე ბევრად უფრო მარტივი მეთოდი - არდუინოს გამოყენებით ოპტო იზოლატორის მართვის მიზნით 12 ვ სიგნალის ხაზი დაბალ მოთხოვნად.

მე ასევე შევქმენი უფრო მარტივი წრე Rx– სთვის, მაგრამ ეს არ არის დატესტილი, მე სიმარტივისთვის დავამთავრე დონის კონვერტორი.

ნაბიჯი 5: გააქტიურეთ ის

მას შემდეგ, რაც გადამცემი მიკროსქემის პურის დაფაზე მოვედი და აჩქარებული გულით, მე მოვიშორე 12 ბაიტიანი (სტატიკური) სტრიქონი, გამოვთვალე ჩეკუსი და არდუინომ გამომიგზავნა ბრძანება - საოცრად, ეკრანი განახლდა !!! გაიმარჯვე!

საბოლოო ფაქტობრივი გამოცდა იყო ჩემი არდუინოს დამატება BUS– ში 2 სხვა კონტროლერთან ერთად რეალური ცოცხალი გამოცდისთვის და რა თქმა უნდა, იმუშავა.

ასე რომ, ახლა მე შემიძლია ავტობუსში წერა და კითხვა, მაგრამ უბრალოდ არ მქონდა უნარი ამის გაკეთება უბრალოდ.

ვინაიდან მე ვიყენებ MQTT თითქმის ექსკლუზიურად ჩემი სახლის ყველა ავტომატიზაციისთვის, ბუნებრივი იყო, რომ ეს იგივე იქნებოდა. მე დავწერე კოდი რამდენიმე დღის განმავლობაში, რომ გავაკონტროლო AC ძირითადი ოთხი ელემენტი, ასევე წავიკითხე არსებული სტატუსი (BUS– ის სხვა მოდულებიდან)

განზრახვა იყო, რომ კოდი გაშვებულიყო ESP8266 მოდულზე, თუმცა, როგორც ჩანს, ESP8266– ს არ შეუძლია აწარმოოს ბაუდის სიჩქარე 104bps– მდე. მე უნდა დავუბრუნდე ზოგად Arduino Uno– ს Wiznet Ethernet– ით, მაგრამ ეს არ იყო რთული, რადგან ჩემი კომუნიკაციის თარო ფაქტიურად იყო კედლის მეორე მხარეს ერთი AC კონტროლერისგან.

კოდი არის ყველგან, მაგრამ უნდა იყოს იკითხება. მე მქონდა ბევრი პრობლემა კონტროლის კონტროლის წაკითხვისას საკუთარი გამომავალი, მაგრამ ასევე ვიმეორებ კოდს მის მიერ გამოქვეყნებულ თემებს, რომლებიც მიიღეს MQTT– დან კონდიციონერში. ძირითადად, ის შექმნის უსასრულო მარყუჟს. საბოლოო ჯამში, გარკვეული ბუფერული გაწმენდა და კოდის დამუშავების შეფერხებები MQTT– ზე გამოქვეყნების შემდეგ დალაგდა.

Rx, Tx ქინძისთავები AC– ში არის კოდირებული როგორც 3, 4, მაგრამ შეცვალეთ თუ გსურთ

კოდი არის კონფიგურირებული, რომ გამოაქვეყნოს და მიიღოს ბრძანებები, როგორც ასეთი:

ha/mod/5557/P 0/1 - Powerha/mod/5557/M 0/1/2/3/4 - რეჟიმი მაგარი, დეჰუმიდიფიცირება, ვენტილატორი, ავტო, Heatha/mod/5557/F 0/1/2 - გულშემატკივართა დაბალი, med, highha/mod/5557/Z ანუ 1111 ყველა ზონისთვის 1000 -ზე მხოლოდ ზონა 1 -ზე.

** კონტროლერისგან ზონების დაყენება შეუძლებელია '0000', თუმცა, როგორც ჩანს, თუ მნიშვნელობას გასცემთ, ის დაუბრუნდება '1000'.

კოდის უახლესი ვერსია ხელმისაწვდომია ჩემი GitHub Repo– დან:

ნაბიჯი 6: რაღაც უფრო მუდმივი

რაღაც უფრო მუდმივი
რაღაც უფრო მუდმივი
რაღაც უფრო მუდმივი
რაღაც უფრო მუდმივი

მე შევიკრიბე არდუინოს პროტოტიპის დაფა და დავაყენე ყველა ნაწილი, როგორც პურის დაფაზე მქონდა.

ნაბიჯი 7: OpenHAB კონფიგურაცია

იხილეთ თანდართული ფაილი OpenHAB ნივთებისთვის, საიტის რუქისთვის და წესებისთვის

შეუთავსეთ ეს IFTTT OpenHab სავალდებულო და Google Assistant/Home და თქვენ გაქვთ ძალიან ძლიერი ხმით კონტროლირებადი და/ან 'ჭკვიანი' კონდიციონერი, რომელიც აღემატება თითქმის ყველა კომერციულად ხელმისაწვდომ პროდუქტს!

ნაბიჯი 8: შეჯამება

დასკვნის სახით - თუ თქვენ ხართ ერთ – ერთი ღარიბი სული, რომელსაც აქვს ოდნავ უფრო ძველი LG კონდიციონერი, თქვენ მარტო არ ხართ. ჯერ კიდევ გვაქვს იმედი!

ვიმედოვნებ, რომ ეს სასწავლებელი პოულობს ვინმეს, ვისაც ეს ისევე სჭირდება, როგორც მე. ძირითადად არ არსებობს ინფორმაცია, რაც მე ვიპოვე (გარდა "ნიკის" ჩეკის ჯამისა). ნულიდან უნდა დამეწყო მაგრამ შედეგით ექსტაზი ვარ.

ინფორმაცია მე ცოტა ბუნდოვანია, მაგრამ თუ თქვენც იგივე სიტუაციაში ხართ, როგორც მე, მე მზად ვიქნები დაგეხმაროთ.

- სიფრთხილე / განახლება --- მიუხედავად იმისა, რომ შესაძლებელია კონფიგურაციის პარამეტრების შეცვლა გამორთული ერთეულით, მე აღმოვაჩინე, რომ როდესაც საქმე ზონის კონტროლს ეხება, როგორც ჩანს, ეს არეულია. ბევრი ტესტირება ჩავატარე მოწყობილობის გამორთვით და აღმოვაჩინე, რომ ზონები გამოჩნდება არააქტიური, მაგრამ როდესაც დანაყოფი მუშაობს, როგორც ჩანს, დამშლელები სრულად არ არის დახურული (მაგრამ არც სრულად გახსნილია). მე გადავაყენე მოწყობილობა მთავარ ამომრთველთან და ამან მოაგვარა პრობლემა. მას შემდეგ, რაც მხოლოდ ზონები იცვლება, როდესაც მოწყობილობა ჩართულია, ეს არ არის პრობლემა

მე ასევე განვაახლე კოდი, რომ გამოვაქვეყნო მხოლოდ (MQTT– ში) ცვლილებები, რომლებიც მოდის ძირითადი კონტროლერისგან და არა ძირითადი ერთეულისგან. კიდევ ერთხელ, ამან შეიძლება გამოიწვიოს პრობლემები, რადგან მთავარი განყოფილება გამოაგზავნის '0000' ზონებს (რაც ასევე შეიძლება იყოს პრობლემა)

განახლებული კოდი ასევე აწესებს დროის შეზღუდვებს, რათა თავიდან აიცილოს არდუინოს გადაცემა სამაგისტრო და ძირითადი ერთეულის ერთდროულად. დარწმუნებული ვარ, რომ არსებობს ალბათ მეთოდი, რომელსაც კონტროლერი იყენებს მონაცემთა გაგზავნის დასაწყებად, როგორიცაა გაგზავნამდე Xms– ის დაბალი ხაზის გაყვანა, მაგრამ მე ჯერ არ აღმოვაჩინე, თუ არსებობს

აღმოვაჩინე, რომ მთავარი ერთეული აგზავნის მონაცემებს ყოველ 60 წამში და სამაგისტრო კონტროლერი აგზავნის ყოველ 20 წამში. კოდი ცდილობს შეაჩეროს მონაცემთა გაგზავნა მონაცემთა პაკეტის მიღებიდან 2 წამში. თუმცა, ზოგჯერ სამაგისტრო და ძირითადი ერთეული გადასცემენ ერთმანეთს ძალიან ახლოს. ეს ალბათ უფრო მალე დაიხვეწება.----------------------------

** შეიძლება მუშაობდეს ახალ ერთეულებზე

*** ჩემს კვლევით მოგზაურობებში ნაპოვნი ზოგიერთი ინფორმაცია მიუთითებს იმაზე, რომ Panasonic- ის არხმა შეიძლება გამოიყენოს იგივე პროტოკოლი. YMMV.

გირჩევთ: