logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Sterownik Tech AG Lux (Defro) - Protokół komunikacyjny

squizzy 15 Lis 2013 09:28 143268 373
Najlepsze odpowiedzi

Jak rozpracować protokół komunikacyjny sterownika Tech AG Lux (Defro), żeby zintegrować kocioł z własnym systemem przez RS?

Protokół udało się rozpoznać jako zmodyfikowany, odwrócony UART/RS232, a nie RS485; na linii pracuje 9600 bps, 8 bitów danych i odwrócona polaryzacja sygnału [#14413099][#15237677][#16121277] Ramki mają postać zaczynającą się od `0226`, kończą się `0218`, a suma kontrolna to `CRC16_MCRF4XX` liczona z surowych bajtów bez znacznika końca i bez CRC [#16314373] Zidentyfikowano też znaczenie pola adresowego: `FFF4` oznacza moduł Ethernet, `FFFA` regulator pokojowy, `FFF8` GSM, a `0000` broadcast [#16152735][#17622330] Fizycznie jest to 4-żyłowe RJ12; sygnały i zasilanie są rozdzielone, a w wielu sterownikach TX/RX trzeba rozpoznawać po pomiarach, bo pinout bywa różny [#15245321][#16028476] Do nadawania najpewniej trzeba emulować moduł i wysyłać ramkę tuż po ramce ze sterownika, przy czym linia RX ma charakter otwartego kolektora i trzeba ją na ok. 2 ms ustawić w stan wysoki przed transmisją [#16330195] Nie ma oficjalnej dokumentacji protokołu, więc wszystko jest efektem reverse engineeringu i podsłuchu magistrali [#14413099][#15607824]
Wygenerowane przez model językowy.
  • #331 20462985
    mtcz
    Poziom 9  
    Posty: 6
    Ocena: 1
    Czy jest tu autor strony https://dzien.net/tech/? Próbowałem wysłać maila ale dostaje zwrotkę z informacją 550 Relaying denied.

    Ja w swoim sterowniku solarnym ST-402 rozszyfrowałem następujące parametry których nie ma w bazie na https://dzien.net/tech/index.php?baza=slownik
    #1744 -> praca pompy kolektorów [0001=>pracuje,0000=>Nie pracuje]
    #1757 -> moc z jaką pracuje pompa [001B=>27(Prawdopodobnie %, do tego jeszcze muszę dojść)]
    #1701 -> Temperatura na kolektorze [01CF=>46.3 C]
    #1702 -> Temperatura na zasobniku [01CF=>46.3 C]
    #1B98 -> Uzysk chwilowy [0051=>8.1kWh]
    #1B99 -> Uzysk dzienny [0051=>8.1kWh]
    #1B9A -> Uzysk tygodniowy [00E2=>226kWh]
    #1B9B -> Uzysk miesięczny [07F5=>2037kWh]
  • #332 20477058
    pavelh
    Poziom 1  
    Posty: 1
    Mam problem z większą ilością modułów jak Boniu747. Przepraszam, ale nie znam języka polskiego, więc korzystam z translatora.

    Używam Arduino, zgodnie z podstawowym schematem:
    Sterownik Tech AG Lux (Defro) - Protokół komunikacyjny
    Sterownik Tech AG Lux (Defro) - Protokół komunikacyjny

    Kiedy używam załączonego kodu i podłączam arduino do sterownika kotła (ST-704), odczytuje dane w porządku, ale drugi moduł (sterownik ogrzewania podłogowego) nie może się komunikować. Jeśli dobrze rozumiem to muszę dodać kolejny tranzystor do gałęzi RX (od złącza kotła). Ale nie mogę sobie poradzić z jego realizacją. Czy mógłbyś mi dać radę?

    Dziękuję.
    Życzę miłego dnia z Czech.
    
    #include <SoftwareSerial.h>
    
    int rx_pin = 2;
    int tx_pin = 5;
    SoftwareSerial COSerial(rx_pin, tx_pin); // RX, TX
    
    void setup() {
    
    pinMode(rx_pin, INPUT_PULLUP);
    //pinMode(tx_pin, INPUT_PULLUP);
    //pinMode(tx_pin, OUTPUT);
    
    
    Serial.begin(9600);
    while (!Serial);
    Serial.println("HW Serial - Ready");
    
    COSerial.begin(9600);
    while (!COSerial);
    Serial.println("SW Serial - Ready");
    
    }
    
    String readSerial() {
    int inChar;
    String inStr = "";
    char buff[2];
    long startTime = millis();
    
    if (COSerial.available()) {
    
    while (millis() - startTime < 1500) {
    inChar = -1;
    inChar = COSerial.read();
    if (inChar > -1) {
    
    sprintf(buff,"%02X",inChar);
    inStr = inStr + buff;
    }
    }
    }
    return inStr;
    }
    
    void loop() {
    
    String fromSerial = readSerial();
    
    if (fromSerial.length() > 0) {
    
    Serial.println("dane z CO:");
    Serial.println(fromSerial);
    Serial.println("=============");
    
    }
    
    }
    
  • #333 20477148
    rapit79
    Poziom 11  
    Posty: 14
    Ocena: 2
    Sterownik Tech AG Lux (Defro) - Protokół komunikacyjny

    
    
    // Setup
    pinMode(GPIO0, OUTPUT);
    digitalWrite(GPIO0, LOW);
    
    // Nadawanie
    digitalWrite(GPIO0, HIGH);
    delay(1);
    COSerial.Write( <data> );
    
    // Po zakończeniu: zwolnij magistralę.
    digitalWrite(GPIO0, LOW);
    
    
    [/code]
  • #334 20478625
    Arkazar
    Poziom 10  
    Posty: 12
    >>19803804
    Mam sterownik TECH ST-555 i moduł Ethernet, który ma ten sam sposób kodowania.
    Jeśli chcesz mogę wysłać logi z saleale z 2 kanałów Czyli RX i TX. Właśnie próbuję to rozkodowywać.

    0x0302 to już nie jest ASCII, w logic 2 do saleale to odrazu widać.
  • #335 20591350
    Tomidlo
    Poziom 12  
    Posty: 50
    Ocena: 1
    Ktoś poradził sobie z odpowiedzią ze sterownika st-402n w trybie ethernet? Po włączeniu otrzymuję ramkę 02 26 FF F4 17 88 00 00 02 18 5D 9F - ster czeka na odpowiedź. Co odpowiedzieć?

    Natomiast w trybie GSM otrzymuję więcej danych np. temp. tryb pracy, uzysk. W ethernet ramka jest "bogatsza".
  • #336 20704479
    janusz97s
    Poziom 9  
    Posty: 5
    Ocena: 4
    Mam dokładnie ten sam problem co kolega wyżej, sterownik st480 raportuje tylko i wyłącznie jeden typ danych 1788.
  • #337 20766772
    pawlo89m1
    Poziom 7  
    Posty: 6
    Ocena: 1
    Czy ktoś próbował robić komunikację ze sterownikiem za pomocą Node RED?
  • #338 20772857
    dodiraf
    Poziom 11  
    Posty: 9
    Pomógł: 1
    Ocena: 2
    Ja mam działającą komunikację ale jednostronną.
    Na dokończenie projektu trochę brakło mi czasu - po za tym na tą chwilę wystarcza mi tylko odczyt danych.
    Komunikacja jest miedzy tech i3 a rpi 4 - odczytuje dane zaworów, cwu, pieca i wysyła do serwera mqtt.
    Niestety nie miałem czasu kombinować z rejestracją więc komunikacja działa tylko po podpięciu i zarejestrowaniu poprzez moduł st-505.
    W przeciwnym wypadku sterownik tech i3 nie wysyła danych - miałem pożyczony moduł od kolegi więc na tą chwilę nie mam jak kontynuować . Działa również start komunikacji po zaniku np. napięcia.
    W załączniku mój program - może się przyda
    Załączniki:
    • tech.zip (20.8 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #339 20774478
    tofaleks
    Poziom 5  
    Posty: 6
    Cześć,

    Wszedłem w posiadanie domu z instalacją CO na eko-groszek, piec Defro Uni Duo 35kw, sterownik Defro Tech AG. Z tego co się zorientowałem do wyjścia RJ12 podłączony jest kabel w środku do puszki przyłączeniowej. Zakładam, że wisi w powietrzu bo nie ma żadnego sterowania z domu nim. Chciałbym go zintegrować z Home Assistant, by móc przynajmniej odczytywać parametry. Przeglądałem wątek ale nie jestem do końca w temacie, czy komuś udało się zadziałać bezpośrednio czy muszę dokupić jakieś pudełko od Tech. Chętnie odwdzięczę się za pomoc :) Widziałem, że komuś udało się odczytywać parametry, czy powstał jakiś wkład do ESP, który z powodzeniem działa?

    Pozdrawiam
  • #340 20829218
    arturekkwiatkowski
    Poziom 1  
    Posty: 1
    Sterownik Tech St-401N również poprawnie komunikuję się na porcie RS ale musi być włączona opcja komunikacji GSM. Po włączeniu opcji LAN niestety komunikacja stoi, sterownik Tech wysyła ramkę prawdopodobnie z zapytaniem ale nie wiem co mam mu wysłać żeby rozpoczął transmisję.
    W opcji GSM faktycznie jest mało danych ale są w zupełności wystarczające do podglądu danych, użyłem schematu połączenia ESP-8266 i jednego tylko tranzystora BC547 na linii RX. Cały układ zlutowany mieści się idealnie pod klapką sterownika.

    Mam tylko problem z odczytem danych wartości które są wartościami ujemnymi. Np. teraz w okresie zimowym kiedy temperatura kolektorów może mieć wartość ujemną , po odczytaniu danych wyświetlane są wartości rzędu 65500. Nie wiem jak to poprawić. Dopisałem regułę do zmiennej alby filtrowała wartości powyżej tej granicy i zamiast otrzymywać błędne dane , wysyła wartość 0.
    Dla temperatur dodatnich odczyt jest poprawny. Tak to wygląda po zamontowaniu.

    ESP-8266 z tranzystorem BC547 zamontowany w sterowniku

    Sterownik Tech ST-401N z wyświetlaczem i podłączonym modułem ESP8266.
    Zrzut ekranu logów ESPHome wyświetlających dane z solarnych czujników.


    Kod programu dla ESPHome w Home Assistancie:

    
    uart:
        id: uart_bus
        rx_pin: 3
        baud_rate: 9600
        debug:
          direction: RX
          dummy_receiver: true
          sequence: 
            - lambda: |-
                UARTDebug::log_hex(direction, bytes, ' ');
                if(bytes.size()>80){
                if(bytes[0]==0x02) {
                float CWUtemp = ((bytes[19] | (bytes[18] <<8))/10.0);
                id(t1).publish_state(CWUtemp);
                float temp1 = ((bytes[15] | (bytes[14] <<8))/10.0);
                id(t2).publish_state(temp1);    
                float temp2 = ((bytes[23] | bytes[22] <<8)/10.0);
                id(t3).publish_state(temp2);     
                float temp3 = ((bytes[27] | (bytes[26] <<8))/10.0);
                id(t4).publish_state(temp3);      
                float uzysk1 = (bytes[47] | (bytes[46] <<8));
                id(uz1).publish_state(uzysk1); 
                float uzysk2 = (bytes[51] | (bytes[50] <<8));
                id(uz2).publish_state(uzysk2); 
                if(bytes[71]==0xC8){
                id(Stan).publish_state("Pompa Stop");}
                if(bytes[71]==0xCA){
                id(Stan).publish_state("Pompa Pracuje");}
                if(bytes[11]==0x62){
                id(tryb).publish_state("Auto");}
                if(bytes[11]==0x1E){
                id(tryb).publish_state("Ręka");}
                }
                } 
    sensor:
      - platform: template
        name: "Temperatura CWU"
        id: t1
        icon: "mdi:coolant-temperature"
        unit_of_measurement: "°C"
        device_class: "temperature"
      - platform: template
        name: "Temperatura Solarów"
        id: t2
        icon: "mdi:coolant-temperature"
        unit_of_measurement: "°C"
        device_class: "temperature"
        filters:
            - lambda: !lambda if ( x > 1000 ) { return 0; } else { return x; }
      - platform: template
        name: "Temperatura czujnika 3"
        id: t3
        icon: "mdi:coolant-temperature"
        unit_of_measurement: "°C"
        device_class: "temperature"
        filters:
            - lambda: !lambda if ( x > 1000 ) { return 0; } else { return x; }
      - platform: template
        name: "Temperatura czujnika 4"
        id: t4
        icon: "mdi:coolant-temperature"
        unit_of_measurement: "°C"
        device_class: "temperature"
        filters:
            - lambda: !lambda if ( x > 1000 ) { return 0; } else { return x; }
      - platform: template
        name: "Uzysk chwilowy"
        id: uz1
        icon: "mdi:solar-power"
        unit_of_measurement: "kWh"
        device_class: "energy"
      - platform: template
        name: "Uzysk dzienny"
        id: uz2
        icon: "mdi:solar-power"
        unit_of_measurement: "kWh"
        device_class: "energy"
    
    
    text_sensor:
      - platform: template
        name: "Stan sterownika"
        id: "Stan"
        icon: "mdi:pump"
      - platform: template
        name: "Tryb pracy"
        id: "tryb"
    


    Może mógłby ktoś sprawdzić poprawność kodu i ewentualnie poprawić go by pokazywał poprawnie wartości ujemne temperatur.
    Dodatkowo zamieściłem zdjęcie ramki którą wysyła ST-401N. Jest ona bardzo uboga...
  • #341 20845850
    Tomidlo
    Poziom 12  
    Posty: 50
    Ocena: 1
    A gdzie tam masz stan pompy w odbieranym kodzie? Bit 71 przybiera różne wartości (sprawdzam od kilku miesięcy) i na 99% to nie jest pompa.
    Poniżej stan pracy, który udało mi się rozszyfrować:
    157C - 00 62 - praca normalna
    157C - 00 68 - przegrzanie kolektora
  • #342 20846390
    szczukot
    Poziom 14  
    Posty: 820
    Pomógł: 6
    Ocena: 82
    Nie wiem czy pomogę, ale ja w swoim starym kodzie znalazłęm takie wartości które czytałem
    #define TechTempSolar "1701"
    #define TechTempTank "1702"
    #define TechMode "1705" // 0 auto 1-odmrazanie 2-urlopowy
    #define TechPumpOnOff "1744" // ?? zasilanie pompy
    #define TechPumpPower "1757" // ?? moc pompy
  • #343 20862610
    arturzz
    Poziom 11  
    Posty: 17
    Ocena: 5
    Jestem od niedawna posiadaczem sterownika Tech i2 PLUS OT. Szczerze mowiąc gdy zaczynałem szukać informacji o protokole nie miałem nadziei, że znajdę za wiele aż trafiłem na ten temat :-) Super robota i ogrom przydatnych informacji. Niestety nie znalazłem tej naistotniejszej jeżeli chodzi o sterownik - procesu rejestracji. Bez niego otrzymuję tylko ramkę
    02 26 FF F4 17 88 00 00 02 18 5D 9F
    wysyłaną przez sterownik co 3 sekundy. Czy udało się komuś zarejestrować proces rejestracji z ST-505?

    Dodano po 1 [godziny] 39 [minuty]:

    W sumie jest prostsza metoda - wystarczy włączyć w ustawieniach "Regulator Tech RS" i dane zaczynają płynąć :-) Chyba komunikacja z modułem ethernet nic więcej nie daje? Temperatury też można ustawiać - bez problemu ustawiam CWU parametrem 028E (ramka
    0226FFF4028E004602180182
    ).
  • #344 20892333
    nordscan
    Poziom 5  
    Posty: 5
    Witam, wypróbuję ten kontroler EU-i-2 PLUS OT,
    Włączyłem moduł Ethernet, ale zaczęły pojawiać się tylko takie kody.
    Gdzie robię źle?

    02 26 FF F4 17 88 00 00 02 18 5D 9F


    Zrzut ekranu z kodami błędów i ich interpretacją dla kontrolera EU-i-2 PLUS OT.

    Heh,Sprawdzam tylko, czy kolega przede mną zadał to samo pytanie

    Added after 5 [minutes]:

    >>20862610

    czy znalazłeś już na to rozwiązanie??
  • #345 20896929
    arturzz
    Poziom 11  
    Posty: 17
    Ocena: 5
    @nordscan do tego by dostawać ramki dla modułu Ethernet musiałbyś przeprowadzić rejestrację mając ten sterownikm, bez tego będziesz tylko tą ramkę otrzymywał. Ja to olałem i włączyłem w opcjach sterownik "Tech RS" i do niego też jest sporo danych przesyłanych, można też zmieniać temperatury.
  • #347 20897379
    arturzz
    Poziom 11  
    Posty: 17
    Ocena: 5
    @nordscan jeszcze jedna rzecz - sterownik i2 będzie wyrzucał ostrzeżenie o braku sterownika RS. Można mu wysyłać cyklicznie ramkę statusową z temperaturą i wtedy tego ostrzeżenia nie będzie. W lewym górnym rogu będzie wtedy wyświetlał temperaturę z tego "sterownika".
  • #349 21061934
    szczukot
    Poziom 14  
    Posty: 820
    Pomógł: 6
    Ocena: 82
    Loguję sobie ogólnie ramki które są błędne (inny CRC).
    I mam tego sporo.
    Np
    0226fff415a700201756000003ce0000175700001758000017590000175a000003d20000157c0062170100a0170200a71703f8301704f83017050000037d0000174200a0174300a71744000017b9319804310000162002180298

    Ale też często bywa coś takiego
    00001c06007016ff00221c07000a087f00000218f5e6
    00001c06007016ff00221c07000a087f000002186ff9

    1) Czy ta pierwsza ramka jest faktycznie walnięta, czy mam jakiś błąd w algorytmie wyliczania CRC ?
    2) Te zaczynające się na 0000 to jakiś błąd TECHa czy jednak coś znaczą i trzeba by je inaczej analizować ? Co ciekawe, całe są takie same tylko CRC jest inne. Więc chyba mogę założyć, że to błąd TECHa lub odczytu (i je śmiało pomijać)? Albo ta jakiś błąd odczytu, i to jest po prostu koniec jakiejś ramki, której z jakiegoś powodu nie mam początku.

    ps. Tak jeszcze się zastanawiam nad jednym zabezpieczeniem: w jaki sposób traktujecie, że ramka jest całą wczytana ? Bo ja sprawdzam czy jest 2108 i są cztery znaki jeszcze. Ale to chyba błędne założenie, bo przecież w środku ciągu też mogą się znaleźć 4 znaki 2108, które coś tam znaczą. Np Satel, jak w środku ramki trafi sieę taki "znak specjalny" to dokleja do niego coś tam jeszcze. I wtedy wiadomo, że to nie jest znak specjalny a wartość ze środka ramki, i trzeba procesować dalej
  • #350 21062955
    szczukot
    Poziom 14  
    Posty: 820
    Pomógł: 6
    Ocena: 82
    No i po przemyśleniach, wiem gdzie jest błąd. Tak jak myślałem, TECH nie zabezpiecza się w żaden sposób przed wartością 0218 w środku ramki.
    Czyli np codziennie o 02:24 lecą mi dwie błędne ramki :) Bo to jest godzina sterownika, która w HEX wynosi 0218.
    Więc propozycja do wszystkich (bo stawiam że każdy lub 95% z nas ma błędnie sprawdzanie końca ramki) :
    trzeba przerobić kod tak, aby
    1) po odczycie 0218 odczytać jeszcze 4 bajty a nie dwa. Bo dwa to suma kontrolna. Ale kolejne dwa to sprawdzić czy to jest 0226. Jak nie jest, to znaczy, że to nie był koniec ramki
    lub
    2) sprawdzić czy to 0218 jest "parametrem" a nie "wartością". Czyli ramka musi zawierać wielokrotność 4 bajtów. Inaczej, to nie jest jeszcze cała ramka.
    Druga metoda, chyba zabezpiecza dużo lepiej (a nawet chyba w 100%), bo raczej TECH nie ma parametru o id 0218 ;)

    Dodano po 1 [godziny] 56 [minuty]:

    Jakby ktoś kiedyś znalazł do czego służą kody zaczynające się na 07xx lub 1Bxx to proszę o info.
    Widzę zmiany u siebie wartości dla tych kluczy, ale nie za bardzo mogę dopasować.
  • #351 21072023
    szczukot
    Poziom 14  
    Posty: 820
    Pomógł: 6
    Ocena: 82
    mtcz napisał:
    Czy jest tu autor strony https://dzien.net/tech/? Próbowałem wysłać maila ale dostaje zwrotkę z informacją 550 Relaying denied.

    Ja w swoim sterowniku solarnym ST-402 rozszyfrowałem następujące parametry których nie ma w bazie na https://dzien.net/tech/index.php?baza=slownik
    #1744 -> praca pompy kolektorów [0001=>pracuje,0000=>Nie pracuje]
    #1757 -> moc z jaką pracuje pompa [001B=>27(Prawdopodobnie %, do tego jeszcze muszę dojść)]
    #1701 -> Temperatura na kolektorze [01CF=>46.3 C]
    #1702 -> Temperatura na zasobniku [01CF=>46.3 C]
    #1B98 -> Uzysk chwilowy [0051=>8.1kWh]
    #1B99 -> Uzysk dzienny [0051=>8.1kWh]
    #1B9A -> Uzysk tygodniowy [00E2=>226kWh]
    #1B9B -> Uzysk miesięczny [07F5=>2037kWh]


    Jakby co mam do tego jeszcze dwa
    "1705" // tryb pracy: 0-auto 1-odmrazanie 2-urlopowy
    "1620" // czas na sterowniku
  • #352 21166732
    kajetanpl
    Poziom 1  
    Posty: 1
    Cześć ;)
    Mam dwa pytanka odnośnie własnego modułu do komunikacji ze sterownikiem techa.
    1. Czy komuś udało się wysłać skutecznie komendę do zmiany nastawy temperatury zadanej zaworu 4D?
    2. Czy ktoś realizował czas działania podajnika i zliczania zużytego paliwa za pomocą gotowego modułu z transoptorem?
  • #353 21433066
    agirilovich
    Poziom 8  
    Posty: 3
    Ocena: 2
    Na podstawie przykłada od @rapit79 zrobiłem własny projekt dla Tech ST-408. Istotna różnica jest w tym, ze używam protokół MQTT, co odkrywa możliwości Autodiscovery.
    Po stronie HomeAsisstant nic nie trzeba konfigurować, wszystkie sensory pojawią się automatyczne, wystarczy tylko uzupełnić 'include/credentials.h' przed kompilacja.

    Projekt jest mocno dopasowany do ST-408 (co_temp_ret zamiast co_cwu_ret, brak podajnika etc), nie taki ładny. Ale otwarty bądź prosty.
    Bardzo spodziewam się, ze pan @rapit79 nie ma zastrzeżeń, ze by to było dostępne na GitHub. Serdeczne zapraszam do tworzenia fork-ow.

    agirilovich/Tech_RS-mqtt-gateway
  • #355 21444976
    agirilovich
    Poziom 8  
    Posty: 3
    Ocena: 2
    >>21444942
    No właśnie... Na sch pomyliłem się na 2x piny do góry. Dzięki za uwagę.
  • #357 21446382
    agirilovich
    Poziom 8  
    Posty: 3
    Ocena: 2
    >>21446313 Wiedziałem ten schemat gdzieś w dokumentacji STM32 bądź RTL8720. Wszędzie robię to w podobny sposób.
    Nie znam się na ESP32, ale mam pewność ze nie zaszkodzi.
  • #358 21543289
    rezonator
    Poziom 10  
    Posty: 53
    Pomógł: 1
    Ocena: 1
    TECH ST-978M (kocioł STALMARK EKO SILVER)

    Nie posiadam modułu gsm/ethernet.
    Używam wyłącznie RX, nic nie nadaję.
    Brak jakichkolwiek dodatkowych komponentów poza piecem (nie licząc "modułu czyszczenia" ST-9722).
    Sterownik coś tam wysyła do modułu gsm:

    0226FFF81699000015810000178C2805178D0000178E00000405000016EF000116C20001167F003216C3630A161400C11624000115AC00001680000116B90000170A000016E100000367000002F7000016EF00000218B3EB


    Jak wymusić żeby sterownik był bardziej wylewny? Jak zarejestrować fejkowy moduł ethernet?
    Używam ESP8266 + esphome

    P.S.
    Jest świetny moduł do esphome o nazwie "uartex" - jestem w trakcie rozpoznawania.
    Źródło: https://github.com/eigger/espcomponents/tree/master/components/uartex

    Mój kod - dopiero pierwsze próby komunikacji:

    
    external_components:
      - source: github://eigger/espcomponents@latest
        components: [ uartex ]
        refresh: always
    
    uart:
      id: uart_bus
      rx_pin: D5
      tx_pin: D6
      baud_rate: 9600
    
    uartex:
      rx_timeout: 10ms
      rx_header: [0x02, 0x26, 0xFF, 0xF8]
      
    sensor:
      - platform: uartex
        name: "test"
        state: [0x02]
        lambda: |-
          return data[4];
    text_sensor:
      - platform: uartex
        name: "Text Sensor"
        state: [0x16, 0x14]
        lambda: |-
          if (data[34] == 0x01) return "ON";
          return "OFF";
    
  • #359 21647805
    ciechomir
    Poziom 11  
    Posty: 7
    Ocena: 1
    Chcę po raz pierwszy zaktualizować sterownik do mojego kotła. Piec to Smart Ekopell 16

    1. W e-module mam informacje:
    Firma: DEFRO
    Wersja modułu: ST-9724 1.6.1 P01
    Numer wersji: 3.4.3
    ID sterownika głównego: 82

    2. Na wyświetlaczu APC 3 ADAPTIVE CONTROL:
    Wersja modułu: 3.4.3
    Wersja wyświetlacza: 3.4.3

    3. Na routerze sterownik zgłasza się jako: ST-505

    4. Regulator pokojowy to SPK LUX bezprzewodowy, na ekranie: TECH 5.2.17

    Powiedzcie, co wnoszą aktualizacje i czy jest sens ich robienia?
    Skąd pobrać odpowiednie pliki, żeby czegoś nie uwalić? Z góry dziękuję za pomoc.
  • #360 21649918
    szczukot
    Poziom 14  
    Posty: 820
    Pomógł: 6
    Ocena: 82
    arturekkwiatkowski napisał:


    Mam tylko problem z odczytem danych wartości które są wartościami ujemnymi. Np. teraz w okresie zimowym kiedy temperatura kolektorów może mieć wartość ujemną , po odczytaniu danych wyświetlane są wartości rzędu 65500. Nie wiem jak to poprawić. Dopisałem regułę do zmiennej alby filtrowała wartości powyżej tej granicy i zamiast otrzymywać błędne dane , wysyła wartość 0.
    Dla temperatur dodatnich odczyt jest poprawny. Tak to wygląda po zamontowaniu.


    A jak odejmiesz 65500 - 65536 = -36 to taka liczba ma sens ? np minus 3,6 stopnia

Podsumowanie tematu

✨ Dyskusja dotyczy protokołu komunikacyjnego sterownika kotła Tech AG Lux (Defro) oraz możliwości integracji z własnym systemem sterowania domem. Producent oferuje moduł ST-500 (oraz ST-505) do komunikacji po interfejsie RS, jednak dokumentacja protokołu nie jest udostępniana. Użytkownicy analizowali sygnały za pomocą oscyloskopów i analizatorów logicznych, ustalając, że komunikacja odbywa się z prędkością 9600 bps, 8 bitów, 1 lub 1.5 bit stopu, bez parzystości, z inwersją sygnału. Fizycznie sygnał to UART TTL na 4 przewodach (Tx, Rx, masa, zasilanie), często złączka RJ12. Ramki danych mają strukturę z początkowym bajtem 0x02 0x26 i końcową sumą kontrolną CRC16, której algorytm udało się zidentyfikować jako CRC16_MCRF4XX. Ramki zawierają parametry takie jak temperatury CO i CWU, stany pomp, tryby pracy, alarmy i inne dane diagnostyczne. Użytkownicy podjęli próby zastąpienia modułu ST-505 własnymi rozwiązaniami opartymi na Raspberry Pi, ESP8266 i Arduino, stosując konwertery RS232-TTL oraz inwertery sygnału (np. SN74LS04). Wymiana danych z wykorzystaniem protokołu HTTP i JSON przez moduł ST-500 została częściowo zanalizowana, umożliwiając odczyt i ustawianie podstawowych parametrów kotła. Problematyczne pozostaje wysyłanie własnych komend do sterownika ze względu na konieczność poprawnego obliczania CRC i synchronizacji ramek. Wątek zawiera także schematy podłączeń, opisy pinów złącz RJ12, oraz przykłady implementacji komunikacji w systemach automatyki domowej (Node-RED, MQTT, Home Assistant). Wskazano, że starsze sterowniki mają ograniczone możliwości komunikacyjne, a producent nie udostępnia otwartego protokołu, co wymusza inżynierię wsteczną i samodzielne badania.
Wygenerowane przez model językowy.
REKLAMA