docs: корректировки планов — монорепо, слои ayla/aircon, конверсии, приёмка
- PLAN_CORE: монорепозиторий (CMakeLists в корне; components/fglair,
custom_components/fglair, include/fgl-aircon, src/{ayla,aircon},
src/ayla/platform); логическое разделение ayla (протокол+цикл) /
aircon (конверсии+шаблоны+API); тесты зеркалят слои (tests/{ayla,aircon});
конверсии: шаблон / линейные коэффициенты / функция-указатель
(лямбды ESPHome); оценка httpd/json (jsmn вендор, свой мини-httpd на
BSD-сокетах, conan не нужен); README библиотеки в M4.
- PLAN_ESPHOME: host вместо ip_address (DNS + Ayla-mDNS :10276),
секреты в примерах, кастомные конверсии через !lambda, advanced-пример
(триггеры режимов + LVGL с пропусками), README-план, скрипт приёмки
(aioesphomeapi + HA REST).
- PLAN_HOME_ASSISTANT: шаг config flow с превью рассчитанных значений
шаблона (через cffi в C-ядро, без дублей), README с HACS-инструкцией
и заглушками под скриншоты с описаниями, приёмка (long-lived token).
- Убраны реальные dsn/ip/lanip_key/key_id из примеров; probe_mdns.py
принимает DSN аргументом.
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Пассивная mDNS-проба модуля кондиционера: A-запрос <DSN>.local
|
||||
на 224.0.0.251:5353 и :10276 (нестандартный порт Ayla из APK)."""
|
||||
import socket, struct, sys, time
|
||||
на 224.0.0.251:5353 и :10276 (нестандартный порт Ayla из APK).
|
||||
Модуль отвечает ТОЛЬКО на :10276 (проверено на приборе).
|
||||
|
||||
DSN = "AC000W00REDACTED"
|
||||
HOST = DSN + ".local"
|
||||
Использование: python probe_mdns.py <DSN> (например AC000W00ABCD1234)"""
|
||||
import socket, struct, sys, time
|
||||
|
||||
def qname(name):
|
||||
out = b""
|
||||
@@ -13,7 +13,6 @@ def qname(name):
|
||||
return out + b"\x00"
|
||||
|
||||
def query_packet(txid):
|
||||
# standard query, RD=1, one question: A, class IN
|
||||
header = struct.pack(">HHHHHH", txid, 0x0100, 1, 0, 0, 0)
|
||||
return header + qname(HOST) + struct.pack(">HH", 1, 1)
|
||||
|
||||
@@ -48,8 +47,7 @@ def parse_answers(buf):
|
||||
off += 10
|
||||
rdata = buf[off:off+rdlen]
|
||||
if rtype == 1 and rdlen == 4:
|
||||
ip = ".".join(str(b) for b in rdata)
|
||||
found.append((name, ip, rclass, ttl))
|
||||
found.append((name, ".".join(str(b) for b in rdata), rclass, ttl))
|
||||
off += rdlen
|
||||
return found
|
||||
except Exception as e:
|
||||
@@ -76,6 +74,9 @@ def probe(port, txid, wait=4.0):
|
||||
s.close()
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv) != 2:
|
||||
print(__doc__); sys.exit(1)
|
||||
HOST = sys.argv[1] + ".local"
|
||||
print("mDNS A?", HOST)
|
||||
print("-- querying :5353")
|
||||
probe(5353, 0x1234)
|
||||
|
||||
Reference in New Issue
Block a user