GSM устройство управления котлами Webasto и не только

MaksVV
Offline
Зарегистрирован: 06.08.2015

Я не пойму как у вас wtt вообще связывается с котлом через эти связки с ардуинами. При работе wtt с котлом ардуина как бы лишняя

MaksVV
Offline
Зарегистрирован: 06.08.2015

Можно убрать l9637d, оставив схему lm393 и играться дополнительными резисторами пробовать wbus 10к к питанию подтянуть, 2k, 1k

redbiz
Offline
Зарегистрирован: 10.05.2021

ардуина в этом случае (с пустым скетчем) выступает лишь в роли транспорта USB-serial (CH340) <-> K-Line. Изначально пытался сделать как тут, но потом наткнулся на здешнюю ветку.

MaksVV
Offline
Зарегистрирован: 06.08.2015

Предлагаю перецепить клайн части схем к софт сериал порту и погонять байты между ардуинами, используя скетчи из примера софт сериал. Проверить тем самым обе схемы. Если l9637d работает, скорее всего её нужно подключить и просто вместо 510 Ом пробовать другие резисторы 1к 2к 4.7к 10к. Должно заработать

redbiz
Offline
Зарегистрирован: 10.05.2021

Спасибо! Попробую еще разные варианты. С софт-сериалом у меня ничего не получилось, видимо неправильно его прописывал...

MaksVV
Offline
Зарегистрирован: 06.08.2015

А подслушка то в итоге получилась когда котёл запустился, есть лог?

redbiz
Offline
Зарегистрирован: 10.05.2021

С прослушкой видимо косяк вышел. Я дома подключил к минитаймеру. Нажал на нем запуск, в окне протокола WTT увидел команду. Подумал что работает. А когда приехал в гараж и начал проверять с котлом, то понял, что вижу сообщения только с одной стороны, а ответы котла не вижу. Короче ерунда какая-то. Попробую, как Вы говорите, с помощью нормального k-line адаптера еще послушать. Вот скрин лога запуска котла от минитаймера (последняя команда - это остановка):

 

xbot
Offline
Зарегистрирован: 03.02.2021

MaksVV, с протоколом гидроников так и не получилось разобраться?

MaksVV
Offline
Зарегистрирован: 06.08.2015

не,  че то некогда тогда стало, а потом вспоминать наработки уже как-то лениво было. Может и придёт ещё муза, кто знает. 

MaksVV
Offline
Зарегистрирован: 06.08.2015

redbiz,  посмотрел скетч 478 внимательней, есть там недочеты,  скорее всего дело в скетче. Он старый . вот убрал лишнее из последнего скетча. Запуск котла тактовой кнопкой. 

но не проверял !!. позже проверю 

UPDATE. чуть еще поправил, проверил без клайн адаптера,  вроде все правильно скетч выдает

 //------------------- распиновка ног ардуино --------------------------------------------------------

#define DopOn               4  // сюда доп канал от сигналки на включение вебасто
#define DopOff              5  // сюда доп канал от сигналки на выключение вебасто
#define PUMPE              13  // пин управления помпой
#define StatusWebastoLED   15  // (А1) пин LED  индикация включенности котла
#define StartButtonpin     16  // (А2) пин тактовой кнопки вкл/выкл котла 
enum BUTT {StartButton, DopOnButton , DopOffButton };

//---------------------------для организации взаимодействия с котлом по цифровой шине и различные таймеры----------------------------
#include <Button.h>
Button test;

#define K_LINE Serial      //UART для соединения с шиной котла
#define TX 1    

// команды для котлов с шиной W-BUS
byte StartByte = 0x21;
const byte HEATER_BEGIN[]         {0x51, 0x0A};
      byte HEATER_START[]         {StartByte, 0x3B};
      byte HEATER_PRESENCE[]      {0x44, StartByte, 0x00};
const byte HEATER_STOP[]          {0x10};
const byte HEATER_STATUS_VEVO[]   {0x50, 0x05};
const byte HEATER_STATUS_VEVO07[] {0x50, 0x07};
const byte HEATER_STATUS_EVO[]    {0x50, 0x30, 0x0A, 0x0C, 0x0E, 0x10, 0x12, 0x1E, 0x32, 0x6F};
const byte HEATER_DTC_REQUEST[]   {0x56, 0x01};
const byte HEATER_DTC_ERASE[]     {0x56, 0x03};

enum ProtocolSTATUS_ {STATUSBUS=1, ANALOG};                 // возможные протоколы чтения статуса котла
enum ProtocolSTART_  {STARTBUS=1, IMPULSE, POTENCIAL};      // возможные протоколы запуска котла
enum HeaterBUSTYPE_         {TTC_E=1, WBUS, HYDRONIC};      // тип шины котла


byte  ProtocolSTATUS = STATUSBUS; 
byte  ProtocolSTART  = STARTBUS;
byte  HeaterBUSTYPE = WBUS;
byte  WBUS_VER = 0x31;   

byte w_bus_init = 0;                            //состояние инициализация шины w-bus (25мс LOW, 25мс HIGH для ЭВО)
                                                
byte StartMessageRepeat = 0;                    //количество отправленных сообщений на старт котла
byte StopMessageRepeat =  4;                    //количество отправленных сообщений на остановку котла

byte  TimeWebasto = 30;                         //время работы котла, = 30мин

uint32_t currmillis = 0;                        //снимок системного времени
uint32_t Prev_PeriodW_BusMessage = 0;           //переменная для таймера периодической отправки сообщений состояния котла в шину W-Bus 
uint32_t Prev_PeriodW_BusStartStop = 0;         //переменная для таймера периодической отправки сообщений старта/стопа котла в шину W-Bus 
uint32_t prevInitreset = 0;                     //переменная для таймера сброса инита шины
bool Initreset = 0;                             //переменная для таймера сброса инита шины
uint32_t timerInit = 0;                         //для таймера инита шины W-BUS

uint32_t last_Flame = 0;                                     //для таймера сброса флага пламени, если нет ответов от котла
uint32_t prevGND_impulse = 0; bool GND_impulse_timer = 0;    //для таймера создания импульса GND - для протокола запуска котла импульсом GND 
uint32_t prevPumpe=0; bool Pumpe_timer=0;                    //для таймера  - работы помпы после выключения котла
byte PumpeTime = 200;                                        //сек, время работы помпы после выключения котла
bool CentrLock = 0;                                          //выбираем работу помпы , а не ЦЗ

enum needAction_ {NO_ACTION, NEED_DTCCLEAR};// возможные действия, стоящие в очереди
byte needAction = NO_ACTION;  
byte NOanswer=0; 

uint32_t prevNeedTimer = 0; bool NeedTimer = 0;
uint32_t prevWorkCycleHeater; bool WorkCycleHeater_timer=0;  //для таймера отсчёта цикла работы котла
//---------------------------------Основные переменные--------------------------------------------------------------------------------  

bool webasto = 0;             // флаг команды на работу Webasto. 0 - котел выключен, 1 - котел включен
bool startWebasto_OK = 0;     // флаг успешного запуска котла

float  Vpit = 0.0;            // Измеряемое напряжение бортсети 
int PowerHeater= 0;           // мощность работы котла
bool waterpump = 0;           // флаг работы циркуляционного насоса
bool plug      = 0;           // флаг работы штифта накаливания
bool airfan    = 0;           // флаг работы нагнетателя воздуха
bool fuelpump  = 0;           // флаг работы топливного насоса
bool blowerfan = 0;           // флаг работы вентилятора печки автомобиля
byte flameout  = 0;           // количество срывов пламени
byte DTC[13] ={0};            // коды неисправностей котла
byte countDTC = 0; 
int8_t HeaterC = 0;           // t котла 

//---------------------------СТАРТОВЫЙ ЦИКЛ--------------------------------------------------------------------------------------------

void setup() 
{
test.NO(); 
test.pullUp();
test.duration_bounce       (  50);
test.duration_click_Db     ( 250);
test.duration_inactivity_Up(5000);
test.duration_inactivity_Dn(1000);
test.duration_press        ( 500);
test.button(StartButtonpin, DopOn, DopOff);
 
pinMode (DopOn,   INPUT_PULLUP); 
pinMode (DopOff,  INPUT_PULLUP); 
pinMode (PUMPE,              OUTPUT);  digitalWrite (PUMPE,               LOW);
pinMode (StatusWebastoLED,   OUTPUT);  digitalWrite (StatusWebastoLED,    LOW);
HEATER_START[0] = StartByte;
HEATER_PRESENCE[1] = StartByte;
K_LINE.begin(2400, SERIAL_8E1);

}

//--------------------------------------------------------------ЛУП---------------------------------------------------------------
void loop() 
{
  currmillis = millis();
  test.read();
  Heater_BUS();
  timers_and_buttons ();
 }

//-----------------------------------------------------------конец луп-------------------------------------------------------------


void Heater_BUS ()
{
  static byte requiredmessage =  1;   // что отправляем в данный момент поддержание старта, запрос параметров или запрос ошибок
  static byte header = 0;             // состояние заголовка 
  static byte message_size = 0;       // размер тела принимаемого сообщения, кол-во байт
  static byte j = 2;                  // инкремент
  static byte n = 2;
  const byte bufsize = 140;           // размер буфера принятого сообщения
  static byte buf [bufsize] = {0};    // буфер принятого сообщения
  static byte checksum = 0;           // контрольная сумма входящего сообщения
  static uint32_t prevRESETheader=0;  // таймер сброса заголовка если в момент приёма сообщения данные оборвались
  static bool RESETheader_timer = 0;  // таймер сброса заголовка если в момент приёма сообщения данные оборвались


if      (HeaterBUSTYPE == WBUS){
if (webasto) 
{
    if (StartMessageRepeat<4 && (currmillis-Prev_PeriodW_BusStartStop>800) && w_bus_init >= 9){
  sendMessage (HEATER_START, sizeof(HEATER_START)); 
  StartMessageRepeat++; 
  Prev_PeriodW_BusStartStop = currmillis;
  
    }
  if (StartMessageRepeat>=4)
  { 
      if (currmillis-Prev_PeriodW_BusMessage>4000)  
       {
         if (requiredmessage==1) sendMessage (HEATER_PRESENCE, sizeof(HEATER_PRESENCE));  
    else if (requiredmessage==2) {if (WBUS_VER >= 0x40) sendMessage (HEATER_STATUS_EVO,  sizeof(HEATER_STATUS_EVO));
                                  if (WBUS_VER >= 0x30 && WBUS_VER < 0x40)sendMessage (HEATER_STATUS_VEVO, sizeof(HEATER_STATUS_VEVO));}
    else if (requiredmessage==3) sendMessage (HEATER_DTC_REQUEST, sizeof(HEATER_DTC_REQUEST));  
requiredmessage++; if (requiredmessage > 3) requiredmessage = 1;
StopMessageRepeat = 0;
    
    Prev_PeriodW_BusMessage = currmillis;
       }
  }
}

else if (StopMessageRepeat<4 && (currmillis-Prev_PeriodW_BusStartStop>800))
{
  sendMessage (HEATER_STOP, sizeof(HEATER_STOP));
  StopMessageRepeat++; 
  StartMessageRepeat = 0;
  Prev_PeriodW_BusStartStop = currmillis;
}


     if (w_bus_init==1) {K_LINE.end(); pinMode (TX, OUTPUT); digitalWrite(TX, 0); timerInit = millis(); w_bus_init++;}
else if (w_bus_init==2 && millis() - timerInit>24) {timerInit = currmillis; digitalWrite(TX, 1); w_bus_init++; }
else if (w_bus_init==3 && millis() - timerInit>24) {K_LINE.begin (2400,SERIAL_8E1 ); w_bus_init=9; 
                                                    if (needAction>0) sendMessage (HEATER_BEGIN, sizeof(HEATER_BEGIN));}


if (K_LINE.available()){
    

 // первый старт байт
 if (header == 0){buf[0]=K_LINE.read();  
         if (buf[0]==0x4F || buf[0]==0x44){header = 1; RESETheader_timer=1; prevRESETheader = currmillis; }
         else {header = 0; RESETheader_timer=0;}
         }                  

 // длина сообщения
 else if (header == 1 ){buf[1]=K_LINE.read(); message_size = buf[1]; if (message_size > bufsize) message_size = bufsize;  header = 4;j=2;n=2;checksum = 0;} 

 // пишем тело сообщения 
 else if (header == 4 && j< message_size+n) {
 buf[j] = K_LINE.read();
 
 if (j<message_size+n-1) checksum^= buf[j]; // подсчёт КС
 
 if (j==message_size+n-1) header = 5; 
  j++;} 

 } // end of K_LINE.available()

 // сообщение приняли, действуем
 if (header == 5) {  
   
for(byte i = 0; i<n; i++) checksum^=buf[i]; // прибавляем к контрольной сумме старт байты

 // если контрольная сумма верна: 
if ( checksum == buf[message_size+n-1]) {

prevInitreset = currmillis;  // нулим таймер сброса инита
NOanswer = 0;
   if (buf[0]==0x44 && buf[2]==0xC4 && buf[3]==0x00) {w_bus_init = 1; delay (500); K_LINE.flush();}  // если получили от котла сбой инита, делаем переинит 
   if (buf[2]==0xD1 && buf[3]==0x0A)  {w_bus_init = 10; if (WBUS_VER != buf[4]) WBUS_VER = buf[4];}  //если получили ответ на старт коммуникации 
   if ((buf[2]^0x80)==HEATER_START[0] && buf[3]==HEATER_START[1])  {StartMessageRepeat =4;} // ответ на команду запуск котла 
   if (buf[2]==0x90)  {StopMessageRepeat=4;} // если получили ответ на команду стоп котла    
   if (buf[2]==0xD6 && buf[3]==0x03)  {needAction=0; w_bus_init = 9; NeedTimer = 0;}  // если получили ответ на команду стирания ошибок                 
   if (buf[2]==0xD6 && buf[3]==0x01)         // если получили ответ на запрос DTC (сообщение с кодами ошибок)
         {
            if (needAction>0 && needAction<NEED_DTCCLEAR) w_bus_init = 14;
            for (byte h = 0; h< sizeof(DTC); h++) DTC[h]=0;
            DTC[0] = buf[4];
            if (buf[4]<=sizeof(DTC)) for (byte h = 0; h< buf[4]; h++) {DTC[h+1]=buf[h*3+5]; bitWrite (DTC[6], h+1,  (buf[h*3+6] & 0x02)>>1);}
         }   

//--------------------------------------------------- котлы EVO (W-BUS 4.x)-------------------------------------
if (WBUS_VER >= 0x40) 
 {
    
     if (buf[2]==0xD0 && buf[3]==0x30)                              // если получили сообщение с текущими данными
   {             
                 if  (buf[4] ==0x0A) { 
                          airfan    = (bool)buf[5];                  // получаем флаг работы нагнетателя воздуха
                          plug      = (buf[5] & 0x02)>>1;            // получаем флаг работы штифта накаливания
                          fuelpump  = (buf[5] & 0x04)>>2;            // получаем флаг работы топливного насоса
                          waterpump = (buf[5] & 0x08)>>3;            // получаем флаг работы циркуляционного насоса
                          blowerfan = (buf[6] & 0x10)>>4;            // получаем флаг работы вентилятора печки автомобиля
                                     }
                   
         if  (buf[6] ==0x0C)  HeaterC = buf[7]-50;                                       // получаем температуру антифриза в котле 
         if  (buf[8]==0x0E) {Vpit = (float)((buf[9]<<8)|buf[10])/1000.0;}                // получаем напряжение борт сети
         if  (buf[11]==0x10) {startWebasto_OK = (bool)buf[12]; last_Flame = currmillis;} // проверяем наличие пламени                                                
         if  (buf[13]==0x12) {PowerHeater = buf[14]/2; }                                 // читаем мощность работы котла                                                
         if  (buf[18]==0x32) {flameout = buf[19];}
         if  (needAction>0 && needAction<NEED_DTCCLEAR) {w_bus_init = 12; sendMessage (HEATER_DTC_REQUEST, sizeof(HEATER_DTC_REQUEST));}
    
    }



 }// end of  котлы EVO (W-BUS 4.x)

 //--------------------------------------------------- котлы VEVO, штатные TTC, TTE, TTV (W-BUS 3.x)-------------------------------------
  else if (WBUS_VER >= 0x30 && WBUS_VER <0x40)
  {
     if (buf[2]==0xD0 && buf[3]==0x05)         // если получили сообщение с текущими данными 50 05
     { 
         startWebasto_OK = buf[7]; last_Flame = currmillis;              // проверяем наличие пламени у VEVO (W-BUS 3.x)
         HeaterC = buf[4]-50;                                            // проверяем t котла у  VEVO (W-BUS 3.x)
         PowerHeater =  (((uint32_t)buf[8]<<8)|buf[9])/515;              // читаем мощность работы котла из двух байт
         Vpit        =  (float)((buf[5]<<8)|buf[6])/1000.00;             // читаем напряжение сети из двух байт
     if (needAction>0 && needAction<NEED_DTCCLEAR) {w_bus_init = 12; sendMessage (HEATER_STATUS_VEVO07, sizeof(HEATER_STATUS_VEVO07));}
     } 
     if (buf[2]==0xD0 && buf[3]==0x07)         // если получили сообщение с текущими данными 50 07
     { 
        flameout = buf[9];
     if (needAction>0 && needAction<NEED_DTCCLEAR) {w_bus_init = 13; sendMessage (HEATER_DTC_REQUEST, sizeof(HEATER_DTC_REQUEST));}
     } 

     
  }
                        
     
  
  
}   // конец контрольная сумма верна:  


// если контрольная сумма не совпала: 

//else K_LINE.println("CRC fail!!!" );
  
message_size = 0; header=0; RESETheader_timer=0; j=2; checksum = 0;
}




}// end WBUS 



// таймер сброса заголовка если данные оборвались по середине сообщения
if (RESETheader_timer && currmillis - prevRESETheader > 500) {RESETheader_timer = 0; header = 0; if (HeaterBUSTYPE == TTC_E)j=3; else if (HeaterBUSTYPE == WBUS)j=2; }   

if (currmillis - last_Flame>30000 && ProtocolSTATUS==STATUSBUS) {startWebasto_OK=0; last_Flame = currmillis;}  // делаем статус "нет пламени" через 30 сек, если не получаем сообщения от котла

if (Initreset && currmillis - prevInitreset>3000) {// сброс инита, если прошло более 3 сек без ответа после отправки последнего сообщения ,больше 5 раз
  NOanswer++; if (NOanswer <=5)prevInitreset=currmillis;
              else{NOanswer=0; Initreset = 0; w_bus_init = 1; if (webasto) StartMessageRepeat=0;}                                                     }

if (w_bus_init==10 && HeaterBUSTYPE == WBUS)
{
    if (needAction>0 && needAction < NEED_DTCCLEAR) 
   {
          if (WBUS_VER >= 0x40)                  sendMessage (HEATER_STATUS_EVO,  sizeof(HEATER_STATUS_EVO));
     else if (WBUS_VER >= 0x30 && WBUS_VER <0x40)sendMessage (HEATER_STATUS_VEVO, sizeof(HEATER_STATUS_VEVO));
     w_bus_init=11;
   }

    if (needAction==NEED_DTCCLEAR) { sendMessage (HEATER_DTC_ERASE, sizeof(HEATER_DTC_ERASE)); w_bus_init = 20;  }
}

if ((NeedTimer && currmillis - prevNeedTimer>11000) || w_bus_init == 14)  {NeedTimer = 0;w_bus_init = 9; }
            
                      
        
 

}



void sendMessage(const byte *command, const size_t size)
{

if (!Initreset){ Initreset = 1;  prevInitreset = currmillis;}  // включение таймера сброса инита
 
  const byte siZe = size+3;
  byte Mes[siZe];
  byte Checksum = 0;
  for(byte i=0; i<siZe; i++) {
    if (i==0) Mes[i] = 0xF4;
    if (i==1) Mes[i]=size+1; 
    if (i==2) {for (byte t=0; t<size; t++ ) {Mes[i]=command[t]; Checksum^=Mes[i] ;K_LINE.write (Mes[i]); K_LINE.read(); i++;}}
    if (i!=siZe-1) Checksum^=Mes[i];
    else Mes[i] = Checksum;    
    K_LINE.write (Mes[i]); K_LINE.read();
      }
  
  
  }

  void Queue (const byte &actioN) {needAction = actioN;
             if (ProtocolSTATUS==STATUSBUS){NeedTimer = 1; prevNeedTimer = currmillis; if (!webasto) w_bus_init = 1;}}

void timers_and_buttons (){

digitalWrite (StatusWebastoLED, webasto);   // индикация включенности котла
   
//ниже для таймера работы помпы после выключения котла 
if (Pumpe_timer && currmillis - prevPumpe    > (uint32_t) PumpeTime * 1000ul)     {digitalWrite (PUMPE, 0); Pumpe_timer=0;}

//ниже для таймера старта котла по шине и аналогу 
if (WorkCycleHeater_timer && currmillis - prevWorkCycleHeater > (uint32_t)TimeWebasto * 60000UL) {StopWebasto();}

///если нажали на допканал - делаем соответствующее состояние котла 
if (test.event_click_Dn (DopOnButton) && !webasto) {StartWebasto();}  
if (test.event_click_Dn (DopOffButton) && webasto) {StopWebasto();}

//если нажали тактовую кнопку меняем состояние котла на противоположное 
if (test.event_press_short (StartButton)) 
    {
       if   (!webasto) {StartWebasto(); }
       else {StopWebasto();}
    }
}



  void StartWebasto()
{
     if (ProtocolSTART==STARTBUS) {StartMessageRepeat = 0;  }  else StartMessageRepeat = 4;
     webasto = 1;
     prevWorkCycleHeater=currmillis;
     WorkCycleHeater_timer = true;
     if (!CentrLock) {digitalWrite (PUMPE, 1);} // включаем помпу
     w_bus_init = 1;
}

void StopWebasto()
{
      StopMessageRepeat = 0;
      webasto = 0; 
      WorkCycleHeater_timer = false;
      if (!CentrLock) {Pumpe_timer=1; prevPumpe = currmillis;} // включаем таймер, по окончании которого помпа выключится
      if (ProtocolSTATUS==STATUSBUS) startWebasto_OK = 0;
}

 

redbiz
Offline
Зарегистрирован: 10.05.2021

Всем привет!

Сегодня послушал протокол с помощью VAG COM KKL 409. На картинке первый столбец - это запуск и остановка котла от минитаймера 1533. Загрузил скетч #478 в обе Arduino. При первой попытке с LM393 котел запустился и работал (хоть и проскочило сообщение "Ошибка контрольной суммы". Кстати, что это?). На последующих тестах котел запускался и тух (переставал качать насос). Где-то раньше, где-то позже.

Со скетчем из сообщения #1960 по схеме #1942 ничего не запустилось, на кнопку не реагировало, диоды не моргали, команды в протоколировании не появлялись.

MaksVV
Offline
Зарегистрирован: 06.08.2015

а кнопку то какого пина замыкали ? Нужно было пин А2 коротко на массу замыкать и в Тх начинают идти сообщения для запуска котла , я проверил . Можете пин индикации включенности котла выбрать 13. чтоб знать отреагировала ли кнопка 

redbiz
Offline
Зарегистрирован: 10.05.2021

Как в схеме, пин А3 с подтяжкой через 10к на +5в через кнопку замыкается на массу

redbiz
Offline
Зарегистрирован: 10.05.2021

Эх... Сейчас вот дома попробовал замкнуть А2 - диодики действительно заморгали :( , хоть опять возвращайся в гараж и проверяй...

Посмотрел скетч, действительно запуск на пин А2 прописан. Исправил на 17 (А3) - теперь на мою кнопку реагирует. 

redbiz
Offline
Зарегистрирован: 10.05.2021

Приветствую!

Значит так, докладываю: Котел со скетчем из #1960 запускается и останавливается по кнопке великолепно! Спасибо огромное за помощь! Теперь можно двигаться дальше, к gsm :)

А сложно ли в скетч добавить цикл на перезапуск котла через каждые 45 мин? (что бы обойти ограничение в прошивке на 50мин) Ну т.е. через 45мин остановить, выждать минуты три на завершение продувки и запустить заново. И так по кругу, пока не остановлю кнопкой.

MaksVV
Offline
Зарегистрирован: 06.08.2015

для меня не сложно, а для вас , скорее всего да. Но дальше сами. 

Kir5211
Offline
Зарегистрирован: 19.11.2021

Здравствуйте, спасибо за ваш проэкт, очень все понятно и доступно. Собрал вашу схему залил скеч 4.1 на смс ардуинка отвечает весь функционал работает кроме показателя батареи пишет либо no data либо 00.
И еше ни как не могу прописать датчики, в порте вижу что смс приходит а ответа нету... Пробовал исправлять в скетче адреса всеравно остаться те которые были, еепром чистил..

MaksVV
Offline
Зарегистрирован: 06.08.2015

Ок проверю что там с адресами

Kir5211
Offline
Зарегистрирован: 19.11.2021

Так на всякий случай адресса моих датчиков... Может что делаю не правильно...
28 8C F4 60 62 20 01 D5

28 5C 05 7F 62 20 01 D8

28 B1 30 8D 62 20 01 9B

Считывал другой про мини, через flprog путем чтения порта onewite

Kir5211
Offline
Зарегистрирован: 19.11.2021

И кстати шунтирующий диод я думаю не так важен.. У меня пришёл либо бракованный либо че, но из за него чуть всю плату не спалил.

Kir5211
Offline
Зарегистрирован: 19.11.2021

Уже почти всю тему прочёл.. Кто нибудь нашёл другой сервер mqtt, а-то тот что предлогает автор платный стал

Dushman7776
Offline
Зарегистрирован: 13.01.2019

И снова здравствуйте, я уже два года пользуюсь скетчем 3.89 , и не заходил на эту ветку , с прошлой зимы . Скетч 3.89 у меня работает  в принципе без  проблем, и температуры отдает, и напряжение , и замками дверей управляет через mqtt . Но вот решил обновить смартфон , и встал вопрос по переустановке всего софта на новый телефон, зашел на эту ветку сайта, вдруг что нибудь новое вкусное появилось?   Стоит ли шить скетчи 4 версии , или там ни чего нового нет ?

MaksVV
Offline
Зарегистрирован: 06.08.2015

принципиально нового ничего, так... косметика только . мне надо было вести историю прошивок, что меняется в каждой , но я этого не делал , поэтому так сходу и не скажешь что там нового , смотреть по скетчу надо. 

Kir5211
Offline
Зарегистрирован: 19.11.2021

С адрессами разобрался, поправил их в скетче еепрома.
Осталось два вопроса...
1. Нету информации от вольт метра и температуры пламени. (я так понял потомучто в скетче настроено чтение этих параметров из шины w-bus) ткните носом где поправить.
2. Так и не получается с mqtt, на российском брокере https://clusterfly.ru/ не могу отправить метрики, кнопка просто не нажимается у них на сайте... В тех поддержке мен, там никто так и не понял. Говорят первый раз слышим про какие-то метрики.

Kir5211
Offline
Зарегистрирован: 19.11.2021

Максим, помогите доделать устройство...
Первый вопрос так и остался..
Со вторым частично разобрался, получилось отправить метрики через другой клиент но брокера использую все того же cluster fly. Метрики пришли, ардуинка подключилась к брокеру (часто моргает) но данные не обновляться и не работает ни одна кнопка, на смс ардуинка работает хорошо.

redbiz
Offline
Зарегистрирован: 10.05.2021

Приветствую! А какая последняя (актуальная) схема и плата устройства, под скетч #1960 

Сделал сперва без GSM - работает! Теперь хочу с GSM попробовать :) Спасибо!

MaksVV
Offline
Зарегистрирован: 06.08.2015

Kir, как же вам помочь если вы не предоставили никакой информации, какой котёл, как запускаете и считываете с него параметры. На кластерфлай у меня так и не получилось добиться чтобы работало. Поэтому пока только смс или свой мктт брокер поднимать

MaksVV
Offline
Зарегистрирован: 06.08.2015

Redbiz, для скетч 1960 нет актуальной платы и схемы. Вы же сами хотели чтоб только с кнопки запускалось . Актуальная инфа по полному функционалу в посте #5.

Kir5211
Offline
Зарегистрирован: 19.11.2021

Извините, с ардинкой работал давно и то так баловлся многое по забывал.. Котёл вебасто аналоговый цэшка.
С данными разобрался, просто инструкцию еше раз прочёл

Kir5211
Offline
Зарегистрирован: 19.11.2021

С мктт тоже разобрался нашёл несколько брокеров на которых работает устройство, правда несколько из них общедоступных(побоялся что, кто нито, что нито отправит лишнее), другой работает 6 или 8 часов в сутки потом ему надо несколько часов перезаряжаться бред... Ну и платный российский брокер на котором все понятно и все работает сразу и есть вебсокет нормальный. Цена кстати всего 200р за 6 месяцев.
Так что еше раз спасибо за ваш великолепный и простой как оказалось проект,очень крутое устройство получилось!))
Попробую еше проверит на своём котле работает ли w-bus, что наврятли..

MaksVV
Offline
Зарегистрирован: 06.08.2015

На стандартной С шке все должно нормально работать по шине, я старалсо. Только не wbus она называется, но это детали

Kir5211
Offline
Зарегистрирован: 19.11.2021

Отчитываюсь, по аналогу работает все показывает все прекрасно, по шине диагностики HeaterBusType TTC_E котёл запустился температуру, напряжение и количество ошибок показывает, а вот состояние пламени и мощность горения увы, не показывает.. А ошибки сбросить я так понимаю ни как нельзя через ваше устройство?

vgk_com
Offline
Зарегистрирован: 02.03.2017

СМС команда - «Erase DTC» - запрос стирания кодов неисправности подогревателя. На некоторых подогревателях этой же командой снимается и блокировка.

 

Kir5211
Offline
Зарегистрирован: 19.11.2021

Я это видел, я имел ввиду через mqtt