-
Notifications
You must be signed in to change notification settings - Fork 0
Docs 08 Protokol
Ten dokument jest dla osób, które chcą zrozumieć protokół Homiq na poziomie technicznym — żeby napisać własną integrację, debugować problemy, albo po prostu wiedzieć "jak to działa pod spodem".
Jeśli chcesz tylko uruchomić sterowanie, zacznij od 06 — Node-RED. Wróć tutaj, gdy będziesz potrzebować szczegółów.
Jeśli chcesz konkretny opis RX/TX, komend, discovery i init, użyj tych stron:
- 08a — Ramki (RX/TX + ACK/CRC/ID)
- 08b — Komendy (jak używać)
- 08c — Discovery (pasywne/aktywne)
- 08d — Programowanie i init
<;CMD;VAL;SRC;DST;ID;TYPE;CRC;>\r\n
| Pole | Opis | Przykłady |
|---|---|---|
| CMD | Komenda |
O.3, I.7, UD, HB, GI
|
| VAL | Wartość |
0, 1, u, d, s
|
| SRC | Nadawca |
0H, 05, 0 (kontroler) |
| DST | Odbiorca |
0H, yy (broadcast) |
| ID | Nr sekwencyjny |
1–511 (modulo 512) |
| TYPE | Typ |
s (send), a (ACK) |
| CRC | Suma | dziesiętne ASCII (liczone jak crc81wire) |
Nazewnictwo: w starszych stronach
IDbywa opisywane jakoPKT, aTYPEjakoTOP.
W tej dokumentacji przyjmujemy: CRC = crc81wire(payload).
- payload =
CMD+VAL+SRC+DST+ID+TYPE(konkatenacja bez separatorów)
Python:
def crc81wire(data: str) -> int:
crc = 0
for byte in data.encode('ascii'):
crc ^= byte
for _ in range(8):
if crc & 1:
crc = (crc >> 1) ^ 0x8C
else:
crc >>= 1
return crcNode.js (moduł crc):
const crc = require('crc');
const checksum = crc.crc81wire(payload);Gdy otrzymasz ramkę z TYPE=s, odpowiedz ACK:
- Zamień
SRC↔DST - Ustaw
TYPE=a - Przelicz CRC
- Wyślij
Przykład:
RX: <;I.3;1;0H;0;42;s;143;>
TX: <;I.3;1;0;0H;42;a;87;>
| CMD | VAL | Opis |
|---|---|---|
O.0–O.9
|
0 |
Wyłącz |
O.0–O.9
|
1 |
Włącz |
| CMD | VAL | Opis |
|---|---|---|
I.0–I.15
|
0 |
Stan niski |
I.0–I.15
|
1 |
Stan wysoki |
| CMD | VAL | Opis |
|---|---|---|
UD |
u |
W górę |
UD |
d |
W dół |
UD |
s |
Stop |
| CMD | VAL | Opis |
|---|---|---|
HB |
1 |
Heartbeat (keepalive) |
GI |
1 |
Get info (po discovery) |
S.0 |
serial | Rejestracja modułu |
ID.0 |
serial | Identyfikacja |
- Jeśli brak ACK w krótkim oknie → powtórz (retry)
- typowo ~
126msdla zwykłych komend - typowo ~
500msdla komend konfiguracyjnych (serwisowych)
- typowo ~
- Max 15 prób (
HBbywa wyjątkiem bez retry) -
IDtrzymaj stabilnie dla retry tej samej komendy (inkrementuj dopiero przy kolejnej nowej komendzie do(DST, CMD))
Pasywne (zalecane): Obserwuj SRC w normalnych ramkach (I.*, O.*).
Aktywne (ryzykowne): GS, LI, ID.0 — firmware-zależne, może nie działać.
Zobacz: Reverse engineering oraz plik w repo https://github.com/Baael/homiq-reverse-engineering/blob/main/REVERSE_ENGINEERING.md
Skróty: Napraw teraz · Szybki start · Moxa 101 · Integracja HA
Uwaga: automatyka domowa dotyka obwodów krytycznych (HVAC, pompy, bramy). Jeśli coś “wariuje” albo nie masz pewności co robisz — przełącz na tryb ręczny i/lub wezwij elektryka.
Disclaimer: korzystasz z materiałów na własną odpowiedzialność; autor(zy) nie ponoszą odpowiedzialności. Treść w dużej mierze wygenerowana/uporządkowana przy użyciu agentów AI.
- Szybki start (5 minut)
- Dostęp do Moxy
- Node-RED
- Rozwiązywanie problemów
- Protokół
- Konfiguracja połączenia
- Backup → odzyskanie konfiguracji
- Docs (spis)
- 01 — Szybki start
- 03 — Dostęp do Moxy
- 04 — Połączenie / transport
- 06 — Node-RED
- 07 — Rozwiązywanie problemów
- 08 — Protokół
- 08a — Protokół: Ramki (RX/TX)
- 08b — Protokół: Komendy
- 08c — Protokół: Discovery
- 09 — FAQ protokołu
- 10 — Awarie i utrzymanie
- 11 — Dokumentacja techniczna
- 11 — Protokół TCP (spec)
- 11 — TCP: implementacja (integrator)
- 11 — TCP: instrukcja użytkownika
- 11b — Protokół TCP: tabela komend (pełniej)
- 11c — TCP: pseudokod klienta (integrator)
- 11d — TCP: pełny poradnik użytkownika
- 11 — Legacy Homiq: architektura
- 11 — Panel admina
- 11c — Legacy: architektura (pełniej)
- 11b — Panel admina: pełny opis