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

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

На метрику ошибок надо нажать , если мне память не изменяет . По поводу пламени очень странно , что не работает , врядли протоколы отличаются у разных котлов одной модели . Пробуйте более старые скетчи 3.89 чтоли

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

Хорошо попробую. На метрику я нажимал ничего не происходило. Попробую на других скечах.

MAXKIT
Offline
Зарегистрирован: 07.02.2013

Приветствую всех, может быть нужно кому, есть полностью готовый к установке комплект, проработала год на моей машине, работала даже в -40.

Пинов могу отсыпать для разъёма, если нужно ещё что-то подключить. В данный момент прошита под котлы для шины W-Bus, подключается в разрыв "таймера" вэбасто.

Если кому интересно, пишите в контакт @maxkit

MAXKIT
Offline
Зарегистрирован: 07.02.2013

Интересный глюк сегодня подхватил, пришло сообщение "Call Ready" пытался его найти в прошивки, но не нашёл. Ещё самое странное что модуль перестал отвечать на СМС.

ДимЧик
ДимЧик аватар
Offline
Зарегистрирован: 30.03.2013

Здравствуйте! Честно скажу, всю тему не читал, 40 страниц многовато)

 

Кто-нибудь делал сие устройство на esp? У дома хотелось бы рулить по WiFi, он отлично ловит. Можно было бы слать показания в умный дом и из него же рулить девайсом. А вне дома- GSM.

Morroc
Offline
Зарегистрирован: 24.10.2016

MAXKIT пишет:

Если кому интересно, пишите в контакт @maxkit

Можно почту ?

MAXKIT
Offline
Зарегистрирован: 07.02.2013

maxkit(собака)oagc.ru

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

MAXKIT пишет:

Интересный глюк сегодня подхватил, пришло сообщение "Call Ready" пытался его найти в прошивки, но не нашёл. Ещё самое странное что модуль перестал отвечать на СМС.

Есть опыт работы с модулями, поэтому мне понятно что произошло:

1) Call Ready - это модуль перезапустился, он находит сеть и пишет Call Ready и SMS Ready ююю

2) перестал отвечать на смс - модуль не был инициализирован стартовыми АТ-командами, может даже и скорость другая... Поэтому ничего не работает, присылает чушь - вообще капец.

вывод - программа очень сырая и глючная.

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

Программа не сырая, а отличная. А вот китайские модули все портят, купите оригиналы и будем вам счастье.

MAXKIT
Offline
Зарегистрирован: 07.02.2013

vgk_com пишет:

А вот китайские модули все портят, купите оригиналы и будем вам счастье.

что значит оригинальные?

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

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

MAXKIT
Offline
Зарегистрирован: 07.02.2013

MaksVV, а есть просто код управления котлом, без GSM и MQTT? Хочу попробовать свою версию написать.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

vgk_com пишет:

Программа не сырая, а отличная. А вот китайские модули все портят, купите оригиналы и будем вам счастье.

я знаю, что пишу.. если с модулем правильно работать, правильное питание и прочее - то все ок.

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

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

Короткое замыкание, я вас прошу, прекратите уже срать в тапки. Программа предоставляется как есть, это не платный продукт, а лишь результат хобби. Судя по вашим постам в других темах, ваша квалификация, мягко говоря, не дотягивает, чтобы таким образом оценивать работу других. Я не сомневаюсь, что вы научились работать с модемом на каком то приемлемом уровне, только не надо сообщать об этом всем при каждом удобном случае. Людям это неинтересно. 

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

MAXKIT пишет:

MaksVV, а есть просто код управления котлом, без GSM и MQTT? Хочу попробовать свою версию написать.

#1960

MAXKIT
Offline
Зарегистрирован: 07.02.2013

Short Circuit пишет:

vgk_com пишет:

Программа не сырая, а отличная. А вот китайские модули все портят, купите оригиналы и будем вам счастье.

я знаю, что пишу.. если с модулем правильно работать, правильное питание и прочее - то все ок.

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


Если у вас есть большой опыт работы с gsm модулями. Может подскажите, есть ли достойные библиотеки для работы с модулями?