Mục lục:
- Bước 1: Giải mã định dạng dữ liệu
- Bước 2: Nhìn sâu hơn
- Bước 3: Lập bản đồ
- Bước 4: Bức tường gạch phía trước
- Bước 5: Làm cho nó hoạt động.
- Bước 6: Một cái gì đó lâu dài hơn
- Bước 7: Cấu hình OpenHAB
- Bước 8: Tóm tắt
Video: Lấy cắp dữ liệu phân tách do LG cung cấp để tự động hóa gia đình: 8 bước (có hình ảnh)
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:33
Trước hết - Đây không phải là một bản hack mô phỏng điều khiển từ xa hồng ngoại khác. AC cụ thể của tôi không có giao diện hữu dụng được thiết kế cho bất kỳ loại điều khiển nào ngoài các điều khiển thông minh gắn trên tường đi kèm.
Tôi có một hệ thống phân chia ngược LG ống dẫn trong nhà của tôi. Thật không may, nó được tạo ra vào thời điểm mà IoT không có vị trí cao trong bất kỳ danh sách nhà sản xuất nào. Tôi phát hiện ra nó có một số tùy chọn để điều khiển 'chính' nhưng mặc dù thiết bị chỉ mới 2 năm tuổi vào thời điểm tôi thử điều này lần đầu tiên, các bảng mạch mở rộng là không bằng kim loại và dù sao thì giá cũng rất cao. Cũng như addon 'Điều khiển từ xa RF không dây' có thể giúp mọi thứ dễ dàng hơn rất nhiều nhưng không thể mua được.
Nếu đó là sự lựa chọn của tôi, nó sẽ không phải là một chiếc LG nhưng vì nó đã được lắp đặt trong nhà khi tôi mua nó (và chi phí thay thế nó có thể sẽ vượt quá 10k đô la) đó là những gì tôi phải đối phó.
Mục tiêu - Có thể điều khiển AC qua MQTT cho mục đích tự động hóa thông qua OpenHAB và IFTTT / Trợ lý Google
Bước 1: Giải mã định dạng dữ liệu
Tôi đã bắt đầu quá trình này cách đây 4 năm nhưng không đi xa lắm và không muốn có nguy cơ làm hỏng thiết bị - Đặc biệt là vì các bộ phận hầu như không thể tìm thấy.
Xé bộ điều khiển ra khỏi tường, tôi tìm thấy 3 dây mà tôi xác định là Nối đất, 12v và 'tín hiệu'
Điện áp tín hiệu trên đường dữ liệu là 12v, nhưng tôi đã nhận thấy rằng nó dường như dao động trên đồng hồ vạn năng (một số loại xung trên đường dây).
Tôi đã mắc một mạch cơ bản để điều khiển bộ cách ly quang học qua chân dữ liệu và kết nối mặt kia của bộ cách ly quang học làm đầu vào trên card âm thanh của PC và nhận được phiên bản đầu ra phạm vi kém (Ảnh 1).
Điều này theo như tôi hiểu vào thời điểm đó - tôi có thể thấy có thứ gì đó ở đó nhưng thực sự không biết làm thế nào để 'giải mã' nó.
Kể từ khi kích hoạt Coffee Machine IoT của tôi, tôi đã rất hứng thú với việc thử lại với một chút quyết tâm lần này.
Tôi đã đăng những phát hiện của mình trên diễn đàn EEVBlog để xem liệu ai đó có thể làm sáng tỏ điều gì đó hay không và một người đàn ông tuyệt vời tên Ian đã đến giải cứu tôi - Anh ấy đã trình bày theo cách hoàn toàn có lý (Ảnh 2)
Về cơ bản, luồng dữ liệu là 13 byte 'nối tiếp tiêu chuẩn' - 8 bit dữ liệu, một bit bắt đầu và một bit dừng (không có chẵn lẻ) nhưng ở tốc độ truyền RẤT thấp là 104bps.
Bước 2: Nhìn sâu hơn
Vì vậy, bây giờ tôi đã có ý tưởng về cách dữ liệu được định dạng, tôi cần một cách để có thể đọc dữ liệu theo cách năng động hơn.
Tôi đã kéo một trong những bộ điều khiển của mình ra khỏi tường và nối nó qua bộ chuyển mức logic với Arduino bằng một bản phác thảo đơn giản để đọc 13 byte dữ liệu thông qua cổng nối tiếp phần mềm được định cấu hình ở tốc độ 104bps và in nó ra:
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, ** Trên thực tế 12 byte ở đây
Chúng tôi đã hành động!
Sau đó, thay đổi các cài đặt khác nhau trên bộ điều khiển, tôi có thể tìm ra các byte thay đổi:
168, 3, 0, 0, 0, 192, 3, 31, 0, 0, 0, 0, 248, Quạt 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 HIGH
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, 0, 244, Chế độ FAN 168, 79, 0, 0, 0, 136, 10, 35, 0, 0, 0, 0, 249, Chế độ TỰ ĐỘNG 168, 67, 0, 0, 0, 136, 3, 35, 0, 0, 0, 0, 204, Chế độ LÀM MÁT 168, 83, 0, 0, 0, 136, 15, 34, 0, 0, 0, 0, 225, Chế độ HEAT 168, 7, 0, 0, 0, 136, 15, 34, 0, 0, 0, 0, 61, Chế độ 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, Nhiệt độ 19 168, 15, 0, 0, 0, 136, 5, 34, 0, 0, 0, 0, 51, Nhiệt độ 20 168, 15, 0, 0, 0, 136, 15, 34, 0, 0, 0, 0, 37, Nhiệt độ 30
Các con số có ý nghĩa hơn nhiều khi bạn nhìn chúng ở dạng nhị phân nhưng với byte thứ 13 thì sao ?? Nó ở khắp nơi…
Bước 3: Lập bản đồ
Thông qua quá trình thử và sai, tôi đã có thể xác định các bit có liên quan trong 13 byte dữ liệu mà tôi sẽ cần để có thể truyền.
Bước 4: Bức tường gạch phía trước
Đây là nơi nó trở nên phức tạp. Tôi đã có hai trở ngại để vượt qua
a) Byte thứ 13 dường như là tổng kiểm tra của dữ liệu mà tôi cần để giải quyết bằng cách nào đó. b) Sau đó tôi làm cách nào để truyền dữ liệu? Nó chỉ có một dây.
Vấn đề 'a' thực sự dễ dàng, nhưng đó là một sự tình cờ thuần túy mà tôi đã vượt qua được nó.
Trong các bài kiểm tra của mình, tôi đang xem dữ liệu như: A802000000040F61000000004B A81200004004169A00000000FB A81200004004159A00000000F8 A81200004004149A00000000E5 A81200084000149C000000004004169A00000000FB A81200004004159A00000000F8 A81200004004149A00000000E5 A81200084000149C0000000000E7 A83200084000149C00000000000087
Đây là 13byte dữ liệu bao gồm tổng kiểm tra (ở đây là HEX thay vì DEC).
Khi tôi đang tìm kiếm lời tiên tri trên google về 'cách đảo ngược thiết kế tổng kiểm tra', tôi đã bắt gặp trang này trên trang trao đổi ngăn xếp với một người khác tên Nick hỏi khá nhiều điều giống như tôi nhưng không chỉ vậy, họ đã nói chuyện về một máy điều hòa không khí và dữ liệu của họ gần như giống hệt với định dạng của tôi - Có thể nào ??? Trong tất cả các tìm kiếm của tôi (trong 4 năm hoặc lâu hơn), không có một người nào đăng bất kỳ thông tin nào về cách hack giao thức trên các máy điều hòa không khí này và tôi chỉ tình cờ bắt gặp ai đó đang làm điều tương tự bằng cách tìm kiếm một thứ gần như hoàn toàn không liên quan? Đó là một điều may mắn - Anh ấy thậm chí còn đăng rằng anh ấy đã tìm ra nó và giải pháp là: Cộng tất cả các byte dữ liệu và sau đó XOR với "U".
Với điều đó trong tay, tôi đã thêm nó vào mã của mình để tính toán những gì tôi nghĩ tổng kiểm tra phải là gì so với thực tế nhưng tất cả đều SAI !!
Hóa ra, nó đã sai. Khi tôi bắt đầu nhìn vào các con số trong hệ nhị phân, nó hoàn toàn có ý nghĩa.
Phản hồi từ 'XOR với U' luôn trả về 9 bit dữ liệu (bit thứ 9 luôn là một) nhưng các bit khác đúng. Tôi chỉ đơn giản là loại bỏ bit thứ 9 bằng cách lấy 256 từ số kết quả và sau đó nó khớp !!
Nếu nó không dành cho cá nhân này, tôi có thể vẫn đang vò đầu bứt tai. Tôi cũng ghét anh ấy nhưng tôi không thể liên lạc với anh ấy - Về cơ bản đó là bài đăng duy nhất của anh ấy trên diễn đàn stackexchange. Chà, cảm ơn người lạ:)
Thử thách tiếp theo là tạo ra một mạch cho phép tôi mô phỏng bộ điều khiển hiện có. Tôi đã vạch ra sơ đồ cho mạch ổ đĩa (Pic1 và Pic 2) nhưng nó có vẻ quá phức tạp khiến tôi phải tái tạo nó để đạt được những gì tôi muốn. Rốt cuộc thì tôi đã đọc được tín hiệu rồi. Tôi đã chọn một phương pháp đơn giản hơn nhiều - Sử dụng arduino để điều khiển bộ cách ly quang để kéo đường tín hiệu 12v xuống thấp theo yêu cầu.
Tôi cũng đã thiết kế một mạch đơn giản hơn cho Rx nhưng điều này chưa được kiểm tra, tôi đã kết thúc với bộ chuyển đổi mức cho đơn giản.
Bước 5: Làm cho nó hoạt động.
Khi tôi đã có breadboard mạch truyền và với một trái tim đang chạy đua, tôi đã xử lý một chuỗi (tĩnh) 12 byte, tính toán tổng kiểm tra và yêu cầu arduino gửi lệnh - Thật ngạc nhiên, màn hình đã được cập nhật !!! Thắng lợi!
Thử nghiệm thực tế cuối cùng là thêm arduino của tôi vào BUS cùng với 2 bộ điều khiển khác để thử nghiệm trực tiếp thực sự và chắc chắn, nó đã hoạt động.
Vì vậy, bây giờ tôi có thể Đọc và Viết lên xe buýt nhưng chỉ thiếu khả năng để có thể làm điều đó một cách đơn giản.
Vì tôi sử dụng MQTT hầu như chỉ dành cho tất cả các công việc tự động hóa trong nhà của tôi, nên điều này là tự nhiên. Tôi đã viết ra mã trong vài ngày để kiểm soát 4 yếu tố chính của AC, đồng thời đọc lại trạng thái hiện có (từ các mô-đun khác trên BUS)
Mục đích là để mã chạy trên mô-đun ESP8266 tuy nhiên có vẻ như ESP8266 không thể tạo ra tốc độ truyền thấp đến 104bps. Tôi đã phải hoàn nguyên về Arduino Uno chung với Wiznet ethernet nhưng điều đó không khó vì giá comms của tôi thực sự nằm ở phía bên kia của bức tường từ một trong những bộ điều khiển AC.
Mã có một chút ở khắp nơi nhưng phải dễ đọc. Tôi đã gặp rất nhiều vấn đề với việc ngăn bộ điều khiển đọc đầu ra của chính nó nhưng cũng lặp lại mã cho nó các chủ đề đã xuất bản của chính nó nhận được từ MQTT trở lại aircon. Về cơ bản, nó sẽ tạo ra một vòng lặp vô hạn. Cuối cùng, một số xóa bộ đệm và sự chậm trễ trong quá trình xử lý mã sau khi xuất bản lên MQTT đã khiến nó được sắp xếp.
Các chân Rx, Tx của AC được mã hóa là 3, 4 nhưng có thể thay đổi nếu bạn muốn
Mã được định cấu hình để xuất bản và chấp nhận các lệnh như sau:
ha / mod / 5557 / P 0/1 - Powerha / mod / 5557 / M 0/1/2/3/4 - Chế độ Làm mát, Hút ẩm, Quạt, Tự động, Heatha / mod / 5557 / F 0/1/2 - Fan low, med, highha / mod / 5557 / Z tức là 1111 cho tất cả các vùng trên 1000 chỉ cho vùng 1 trên.
** Từ bộ điều khiển, không thể đặt các vùng thành '0000', tuy nhiên, có vẻ như nếu bạn đưa ra giá trị, nó sẽ hoàn nguyên về '1000'.
Phiên bản mới nhất của mã hiện có từ Đại diện GitHub của tôi:
Bước 6: Một cái gì đó lâu dài hơn
Tôi đã thu thập một bảng nguyên mẫu arduino và lắp đặt tất cả các bộ phận khi tôi đặt chúng vào bảng mạch.
Bước 7: Cấu hình OpenHAB
Xem tệp đính kèm cho Các mục, sơ đồ trang web và quy tắc OpenHAB
Kết hợp điều này với ràng buộc IFTTT OpenHab và Trợ lý Google / Home và bạn có một điều khiển bằng giọng nói rất mạnh mẽ và / hoặc máy điều hòa 'Thông minh' vượt qua hầu hết mọi sản phẩm thương mại hiện có!
Bước 8: Tóm tắt
Kết luận - Nếu bạn là một trong những người nghèo với chiếc máy điều hòa không khí có ống dẫn LG cũ hơn một chút, thì bạn không hề đơn độc. Vẫn còn hy vọng cho chúng tôi!
Tôi hy vọng tài liệu hướng dẫn này tìm được ai đó cần nó nhiều như tôi đã làm. Về cơ bản KHÔNG có thông tin nào mà tôi có thể tìm thấy (ngoài tổng kiểm tra từ 'Nick'). Tôi đã phải bắt đầu lại từ đầu nhưng tôi rất vui với kết quả.
Thông tin này hơi mơ hồ mà tôi biết nhưng nếu bạn ở trong hoàn cảnh giống như tôi, tôi sẽ sẵn lòng giúp đỡ.
-- Thận trọng / Cập nhật --- Mặc dù có thể thay đổi cài đặt trên AC với thiết bị Tắt, nhưng tôi nhận thấy rằng khi nói đến Điều khiển vùng, nó có vẻ rắc rối với nó. Tôi đã thực hiện nhiều thử nghiệm với thiết bị tắt và tôi thấy rằng các khu vực sẽ hiển thị là không hoạt động nhưng khi thiết bị đang hoạt động, có vẻ như các bộ giảm chấn chưa đóng hoàn toàn (nhưng cũng không mở hoàn toàn). Tôi đặt lại thiết bị ở cầu dao chính và điều này đã giải quyết được sự cố. Vì chỉ thay đổi vùng khi thiết bị đang bật nên điều này không thành vấn đề
Tôi cũng đã cập nhật mã để chỉ xuất bản (lên MQTT) những thay đổi đến từ bộ điều khiển chính chứ không phải thiết bị chính. Một lần nữa, điều này có thể gây ra sự cố vì thiết bị chính sẽ gửi '0000' cho các khu vực (cũng có thể là vấn đề)
Mã cập nhật cũng giới thiệu một số ràng buộc về thời gian để cố gắng ngăn arduino truyền cùng lúc thiết bị chính và thiết bị chính. Tôi chắc chắn rằng có thể có một phương pháp mà bộ điều khiển sử dụng để bắt đầu gửi dữ liệu như kéo dòng thấp cho Xms trước khi gửi nhưng tôi chưa phát hiện ra nếu có
Tôi phát hiện ra rằng thiết bị chính sẽ gửi dữ liệu sau mỗi 60 giây và bộ điều khiển chính sẽ gửi dữ liệu sau mỗi 20 giây. Mã cố gắng ngừng gửi dữ liệu trong vòng 2 giây kể từ khi nhận được gói dữ liệu. Tuy nhiên, đôi khi thiết bị chính và thiết bị chính truyền rất gần nhau. Điều này có thể sẽ sớm được hoàn thiện hơn.----------------------------
** Có thể hoạt động trên các đơn vị mới hơn
*** Một số thông tin được tìm thấy trong chuyến đi nghiên cứu của tôi cho thấy bộ tách ống dẫn của Panasonic có thể sử dụng cùng một giao thức. YMMV.
Đề xuất:
Tổng hợp Bài phát biểu Retro. Phần: 12 IoT, Tự động hóa gia đình: 12 bước (có hình ảnh)
Tổng hợp Bài phát biểu Retro. Phần: 12 IoT, Tự động hóa gia đình: Bài viết này là bài thứ 12 trong loạt bài về tự động hóa gia đình Các tài liệu hướng dẫn ghi lại cách tạo và tích hợp Thiết bị tổng hợp giọng nói Retro IoT vào một hệ thống tự động hóa gia đình hiện có bao gồm tất cả các chức năng phần mềm cần thiết để cho phép t
Tự động hóa gia đình giá rẻ và hiệu quả với Raspberry Pi: 11 bước (có hình ảnh)
Tự động hóa gia đình giá rẻ và hiệu quả với Raspberry Pi: Tôi luôn muốn có thể điều khiển đèn không dây, nhưng các tùy chọn thương mại thường đắt tiền. Đèn Philips Hue có giá khoảng 70 đô la và đèn kết nối WiFi cũng đắt tiền. Hướng dẫn này sẽ cho bạn biết cách điều khiển tối đa năm đèn / l
Bộ điều khiển chính IoT. Phần 9: IoT, Tự động hóa gia đình: 10 bước (có hình ảnh)
Bộ điều khiển chính IoT. Phần 9: IoT, Tự động hóa gia đình: Tuyên bố từ chối trách nhiệm HÃY ĐỌC PHẦN NÀY ĐẦU TIÊN Bài này hướng dẫn chi tiết về một dự án sử dụng nguồn điện lưới (trong trường hợp này là UK 240VAC RMS), trong khi mọi sự cẩn thận đã được thực hiện để sử dụng thực hành an toàn và các nguyên tắc thiết kế tốt luôn có nguy cơ gây chết người trúng tuyển
Màn hình cảm ứng Đồng bộ hóa gia đình & Bảng điều khiển gia đình gắn trên màn hình: 7 bước (có Hình ảnh)
Bảng điều khiển Home & Family Sync & Home trên màn hình cảm ứng: Chúng tôi có lịch được cập nhật hàng tháng với các sự kiện nhưng lịch được thực hiện theo cách thủ công. Chúng ta cũng có xu hướng quên những việc đã làm hết hoặc những việc vặt khác. Ở thời đại này, tôi nghĩ sẽ dễ dàng hơn nhiều nếu có một hệ thống đồng bộ lịch và sổ ghi chú mà c
Hệ thống tự động hóa gia đình điều khiển bằng Internet giá rẻ, dễ dàng: 5 bước (có hình ảnh)
Hệ thống tự động hóa gia đình có điều khiển bằng Internet với giá rẻ, dễ dàng: Nếu bạn có vật nuôi / trẻ em và cần cho chúng ăn hoặc đánh đòn chúng qua internet, hệ thống này có thể hữu ích cho bạn. Đó là một cách rất dễ dàng và rẻ tiền để điều khiển động cơ, đèn LED, v.v. tại nhà từ bất kỳ máy tính nào được kết nối với web. Tất cả những gì cần thiết là một Webc