Jednak myliłem się. Ten drugi zestaw parametrów nie służy do komunikacji z zaworem tylko z modułem Spider.
Moduły pracują w Modbus RTU, z prędkością 9600.
Komunikacja wygląda tak:
1. Cobra wysyła zapytanie o rejestr z adresu 0:
005 004 000 000 000 001 048 078
Spider odpowiada podając kod 054 147:
005 004 002 054 147 031 061
2. Cobra odpytuje o wersję i status modemu (adresy 1-9):
005 004 000 001 000 008 161 136
Spider odpowiada:
005 004 016 000 212 000 000 000 000 000 000 000 000 000 002 000 015 000 000 057 128
gdzie:
005-adres modułu
004 - typ komunikatu Modbus
016 - ilość zwracanych bajtów
000 212 - wersja 2.12
000 000 Zmiana nastawy CO
000 000 Zmiana nastawy CWU
000 000 1=start
000 000 1=stop
000 002 - status modemu (001 - inicjalizacja, 002-błąd SIM, 003-błąd PIN, 004-logowanie, 005-zalogowany, 006-błąd SMS)
000 015 - poziom sygnału GSM
000 000 - ?
057 128 - CRC
Zwrot tego komunikatu ze zmienioną temperaturą nastawy CO, CWU lub zmiana start/stop powoduje zmianę ustawień Cobry.
3. Cobra zapisuje parametry do modułu
005 016 000 000 000 040 080 000 000 002 172 002 158 000 255 001 003 000 002 000 039 000 080 000 000 000 001 043 052 056 XXX XXX XXX XXX XXX XXX XXX XXX XXX 000 000 000 000 043 052 000 000 043 052 056 049 049 049 049 049 049 049 049 049 048 000 000 000 043 052 000 000 043 052 056 057 057 057 057 057 057 057 057 057 057 000 000 000 068 000 000 000 112 134
gdzie:
005-adres modułu
016 - typ komunikatu Modbus
000 000 - adres pierwszego rejestru
040 080 - 40 rejestrów, 80 bajtów
000 000 - Kody błędów (opis na dole)
002 172 - temperatura CO
002 158 - temperatura CWU
000 255 - temperatura podajnika
001 003 - remperatura powrotu
000 002 - status termostatu pokojowego (0 - wyłączony, 1 - włączony, 2 - nie działa)
000 039 - ustawiona temperatura CO
000 080 - ustawiona temperatura CWU
000 000 - czy sterownik jest włączony (000 001 - włączony)
000 001 - czy sterownik jest wyłączony (działa na zmianę z poprzednim rejestrem - tylko jeden z nich jest ustawiony na "1")
043 052 056 XXX XXX XXX XXX XXX XXX XXX XXX XXX 000 - numer pierwszego telefonu zapisany w ASCII
000 000 000 043 052 000 000 - ??
043 052 056 049 049 049 049 049 049 049 049 049 048 000 - numer drugiego telefonu zapisany w ASCII (tutaj +481111111110)
000 000 043 052 000 000 - ??
043 052 056 057 057 057 057 057 057 057 057 057 057 000 - numer trzeciego telefonu zapisany w ASCII (tutaj +489999999999)
000 000 - ??
068 - temperatura pieca w stopniach (bez części ułamkowej)
000 000 000 - ??
112 134 - CRC
Kody błędów są w postaci flag. W pierwszym bajcie może być ustawionych 5 młodszych bitów, w drugim bajcie wszystkie 8. Ustawienie kilku bitów spowoduje wysłanie w tekście wszystkich ustawionych alarmów.
pierwszy bajt:
bit 1 (1) - Duży prąd podajnika
bit 2 (2) - Dużu prąd pompy CWU
bit 3 (4) - Duży prąd pompy CO
bit 4 (8) - Duży prąd zapalarki
bit 5 (16) - Duży prąd dmuchawy
drugi bajt:
bit 1 (1) - Wysoka temp. kotła
bit 2 (2) - Pożar kosza
bit 3 (4) - Alarm STB
bit 4 (8) - Blokada podajnika
bit 5 (16) - Brak opału
bit 6 (32) - Otwarty kosz
bit 7 (64) - Odpopielanie
bit 8 (128) - Awaria czujnika temperatury
Spider potwierdza zapisanie danych:
005 016 000 000 000 040 193 147
4. Cobra odpytuje o 40 rejestrów (pierwszy adres 0):
005 003 000 000 000 040 068 172
Spider odpowiada:
005 003 080 000 000 002 166 002 157 000 244 001 132 000 002 000 039 000 080 000 000 000 001 043 052 056 XXX XXX XXX XXX XXX XXX XXX XXX XXX 000 000 000 000 043 052 000 000 043 052 056 049 049 049 049 049 049 049 049 049 048 000 000 000 043 052 000 000 043 052 056 057 057 057 057 057 057 057 057 057 057 000 000 000 067 000 000 000 242 018
gdzie:
005 - adres modułu
003 - typ komunikatu modbus
080 - ilość zwracanych bajtów
000 000 - ??
002 166 - temperatura CO
002 157 - temperatura CWU
000 244 - temeratura podajnika
001 132 - temperatura powrotu
000 002 - status termostatu pokojowego
000 039 - ustawiona temperatura CO
000 080 - ustawiona temperatura CWU
000 000 - czy sterownik jest włączony (000 001 - włączony)
000 001 - czy sterownik jest wyłączony (działa na zmianę z poprzednim rejestrem - tylko jeden z nich jest ustawiony na "1")
043 052 056 XXX XXX XXX XXX XXX XXX XXX XXX XXX 000 - pierwszy telefon
000 000 000 043 052 000 000 - ??
043 052 056 049 049 049 049 049 049 049 049 049 048 000 - drugi telefon
000 000 043 052 000 000 - ???
043 052 056 057 057 057 057 057 057 057 057 057 057 000 - trzeci telefon
000 - ???
000 067 - temperatura CO w pełnych stopniach
000 000 000 - ??
242 018 - CRC
W przypadku braku komunikacji dłużej niż przez minutę, moduł wysyła komunikaty ostatnich błędów oraz alarm "brak komunikacji ze sterownikiem"
To chyba wszystko co da się wyciągnąć z tego urządzenia
Przy komunikacji z Cobrą bardzo istotne są czasy odpowiedzi. Opóźnienie rzędu 100ms może spowodować odrzucenie wysyłanego komunikatu. Po nadaniu trzeba też dodać trochę czasu zanim przełączymy się na odbiór. Przy komunikacji z Arduino ustawiam 10ms opóźnienia przed nadawaniem i 100ms na końcu, zanim przełączę moduł na odbiór.