Problemy odkryte podczas analizy kodu legacy Homiq i ich rozwiązania.
Co się dzieje: Stary serwer Homiq ignorował wszystkie wejścia przez 10 sekund po starcie. To było zabezpieczenie przed "burzą" zdarzeń przy restarcie.
Rozwiązanie: W naszym toolboxie i Node-RED tego ograniczenia nie ma. Jeśli używasz własnego kodu — po prostu go nie implementuj.
Co się dzieje: Stary serwer miał filtr duplikatów — jeśli ta sama komenda przyszła w ciągu 30 sekund, była ignorowana (ACK był wysyłany, ale akcja nie była wykonywana).
Rozwiązanie: W toolboxie i Node-RED tego filtru nie ma. Każde naciśnięcie jest przetwarzane.
Co się dzieje: Moduł wysyła S.0 (rejestracja) i czeka na odpowiedź ID.0. Stary serwer odpowiadał tylko na "znane" moduły (z bazy danych). Nieznane moduły próbowały w nieskończoność.
Rozwiązanie:
- Zawsze wysyłaj ACK na
S.0— to "uspokoi" moduł - Albo ignoruj
S.0i używaj pasywnego discovery (obserwujSRCw normalnych ramkach)
Co się dzieje: Licznik ID (dawniej: PKT) resetuje się po restarcie. Moduł pamięta stary licznik, więc ACK mogą nie pasować.
Rozwiązanie: To normalne zachowanie. Kilka pierwszych ramek po restarcie może nie być prawidłowo potwierdzonych. System się "zsynchronizuje" po chwili.
Co się dzieje: System rolet używa wewnętrznej maszyny stanów:
u= jedź w góręd= jedź w dółs= stopU= wewnętrzny stan "zatrzymano po jeździe w górę"D= wewnętrzny stan "zatrzymano po jeździe w dół"
Rozwiązanie: Używaj tylko u, d, s. Stany U i D to wewnętrzna logika — nie musisz ich rozumieć ani używać.
Co się dzieje: Moduły temperatury (T.0) wysyłają wartości w niespójnym formacie. Stary kod "naprawiał" to dodając zera.
Rozwiązanie: Parsuj temperaturę jako liczbę zmiennoprzecinkową (float) i nie przejmuj się formatem.
Sprawdź:
- Naklejkę na urządzeniu
- Dokumentację instalacji
- Skanuj sieć:
nmap -sn 192.168.1.0/24i szukaj MAC00:90:E8:*
Domyślne IP: 192.168.127.254
Objawy: Ping nie działa, nc -zv IP 4001 timeout.
Rozwiązanie:
- Podłącz laptopa bezpośrednio do Moxy kablem
- Ustaw statyczne IP w podsieci
192.168.127.x - Połącz się z
192.168.127.254
Co się dzieje: Sterownik npreal może "pakować" dane i wysyłać je w kawałkach, co powoduje że ramki są dzielone.
Rozwiązanie: W panelu Moxy ustaw Force Transmit = 0 ms (wyłącza pakowanie).
Możliwe przyczyny:
- Stare firmware może używać innego algorytmu CRC
- Transport "tnie" ramki (problem z npreal)
- Złe parametry seriala
Rozwiązanie:
- Uruchom
homiq_doctor.pyi sprawdźcrc_ok_rate - Jeśli <90%: firmware może używać inny CRC (sprawdź dokumentację w
REVERSE_ENGINEERING.md) - Sprawdź: baud 115200, 8N1, brak flow control
Opcje:
- Pasywne discovery: Uruchom sniffer i obserwuj jakie adresy (
SRC) pojawiają się w ruchu - Próbuj adresy: Typowe adresy to
01-0F,0H,0A-0Z - Sprawdź rozdzielnicę: Czasem adresy są naklejone na modułach
Kroki:
- Rozpakuj:
tar xf homiq-all.tar - Szukaj plików:
homiqtabdata.sql— nazwy przycisków i mapowaniaio/conf/SER.TO.ID-*— serial → adresio/conf/*INIT-*— sekwencje init
- Użyj extractorów:
python3 tools/homiq_extract_mysql_dump.py --in homiqtabdata.sql --out extracted/ python3 tools/homiq_extract_io_conf.py --conf-dir io/conf/ --out extracted/
Sprawdź:
- Czy TCP node ma poprawny host i port?
- Czy "Deploy" został kliknięty?
- Czy Moxa jest osiągalna? (
nc -zv IP 4001)
Sprawdź:
- Czy masz moduł
crczainstalowany? (npm install crcw katalogu Node-RED) - Czy
functionExternalModules: truejest wsettings.js? - Czy flow ma node "create answer" z poprawnym kodem?
Błąd: crc is not defined lub podobny.
Rozwiązanie:
- W Node-RED
settings.jsdodaj:functionExternalModules: true - Zrestartuj Node-RED
- W Function node dodaj moduł: Setup → External Modules →
crc=crc
Tak, ale wymaga to więcej pracy:
- Node-RED może publikować do MQTT
- Home Assistant może subskrybować MQTT
- Lub napisz własną integrację HA (custom component)
Tak, pod warunkiem że:
- Zawsze wysyłasz ACK — bez tego moduły będą próbować w kółko
- Nie wysyłasz losowych komend — możesz przypadkowo włączyć/wyłączyć urządzenia
- Testujesz na pojedynczym module zanim zrobisz coś globalnie
- Dokumentacja
- Rozwiązywanie problemów
- AI Knowledge Base — dla agentów AI