Да я давно еще об этом глюке писал , снимешь аккумулятор для подзарядки и после его установки смс больше не отправляет, только принимает, но если просто передернуть штекер питания , то все приходит в норму , и еще если деньги на счете кончились, то тоже перегружать вручную нужно. Я так и не понял что это за глюк,но он есть.Я думаю нужно в скейтч добавить смс команду на перезагрузку модема или всего устройства.
Сегодня проверил , если деньги кончились на счете , то после пополнения не надо пререзагружать устройство , а если аккум отключаешь , то начинает отвечать , только после повторного кратковременного отключения и включения питания. Непонятно же , после обесточивания , отключается все и модем и ардуинка, что из них вызывает такой глюк, ответ же о том что смс получена приходит , значит модем принял смску и по идее должен был ее передать на ардуино , может это все таки дело в самой ардуино , она не не принимает от модема смс . В чем все таки дело?
Я вчера немного экспериментировал с прошивкой и упростил немного код инициализации модема, не знаю почему, но ответные смс стали нормально приходить даже без перезагрузки. Может просто тоже какой глюк ))). Код взял с программы которая давно хорошо работает. Замерял потребление тока флюком в спячке показал 0,005А.
Я тут еще почитал мануалы про СИМ800, у него обмен по уарту должен быть в диапазоне 2.1 - 3.1 вольта. Получается, что с СИМ800 идет по tx на ардуинку нормальное напряжение и прием смс происходит хорошо, а с ардуинки по tx идет 5В, это завышенное и получаются глюки СИМ800. По схеме у нас просто установлено на tx и rx сопротивление по 1 ком. Мне кажется нужно попробовать на tx c ардуинки на СИМ800 поставить делитель, а с tx СИМ800 на ардуинку вообще убрать.
Скорее всего прием смс работает , а отправка нет - по причине , что сим800 не выводится из сна. т.к. даже во сне смски будут приниматься. Но ни на какие команды прр этом сим800 реагировать не будет, поэтому и смс не отправятся. Короче внимательнее нужно смотреть в скетче про пин DTR. У меня пока времени нет, работа.
ответ же о том что смс получена приходит , значит модем принял смску и по идее должен был ее передать на ардуино , может это все таки дело в самой ардуино , она не не принимает от модема смс . В чем все таки дело?
А какую смс ты отправляешь? В момент глюка отправь команду на включение котла и смотри. Если включился, значит до ардуино все доходит норм.
Отправлял и запрос состояния и запуск вебасты , котел не запускался , но стоит на секунду передернуть питание всё начинает работать , это после снятия аккума.
ответ же о том что смс получена приходит , значит модем принял смску и по идее должен был ее передать на ардуино , может это все таки дело в самой ардуино , она не не принимает от модема смс . В чем все таки дело?
А какую смс ты отправляешь? В момент глюка отправь команду на включение котла и смотри. Если включился, значит до ардуино все доходит норм.
А я проверял через монитор порта (программу заливал в ардуино нано, ) и в скетче добавлял коды для отображения на мониторе, что удивительно все коды отображались, включая отправку смс, но смс не приходили.
Может когда планеты в ряд сойдутся и я , наконец, сделаю мкютт там будет по другому происходить инит модема и , надеюсь, проблема станет неактуальна. Инит будет в диалоге, а не просто дали команду, подождали 300мс, следующую команду. Такой подход без диалога это вата, т.к. модем иногда с бОльшими задержками реагирует. И следующую команду через 300мс может проигнорировать
Может когда планеты в ряд сойдутся и я , наконец, сделаю мкютт там будет по другому происходить инит модема и , надеюсь, проблема станет неактуальна. Инит будет в диалоге, а не просто дали команду, подождали 300мс, следующую команду. Такой подход без диалога это вата, т.к. модем иногда с бОльшими задержками реагирует. И следующую команду через 300мс может проигнорировать
На этом сайте хорошо расписан код как посылать команды в СИМ800 с получением ответов от него.
я давно как то смотрел то, что по ссылке. Мало того, что у автора там такой подход:
"Более корректным является подход, при котором МК остановит исполнение программы до тех пор, пока не будет получен ответ на отправленную команду. "
Дак ещё он и Стринги направо и налево использует и не дай бог придёт рекламная смс ка от оператора , МК повиснет в конвульсиях от заполнения ОЗУ. Да, у меня тоже будет Стринг, но не так чтобы между функциями им кидаться создавая копии и т.д.
тестовый скетч с чисто MQTT в принципе есть. Но очень трудно его интегрировать в основной скетч. И также этот тестовый скетч нужно дополнить ещё программными блоками на внештатные ситуации. Например, на предмет заезжания автомобиля в зону, где сеть gsm отсутствует, или MQTT сервер не отвечает, или деньги на симке кончились. Если таковые вещи случатся скетч вообще неадекватно будет работать, постоянно перезагружая модем и к тому же жря аккумулятор автомобиля. Пока вечерами балуюсь. Чё лукавить, тяжела такая задача для дилетанта.
Ладно хоть железо вроде отладил на предмет того, что происходила непредвиденная перезагрузка ардуины в момент намеренной перезагрузки модема при помощи реле. Короче развязка диодами питания модема и ардуины + установка конденсаторов помогла на 100%. Тестировал в разных режимах рестарт СИМ800 - всё гуд, ардуина в этот момент стабильна.
Отличные новости, да работа большая интегрировать скетч, когда все знаешь, а для нас дилетантов не подъемная. У меня с основной работой времени вообще нет. Да я и не дилетант, а начинающий чайник. Ищу у кого бы код посмотреть ))). Терпения Вам и удачи.
пока рекомендую освоить MQTT. Инструкция в картинках. Далее в собранную плату нужно залить такой скетч, задав вверху настройки MQTT сервера
//---------------------------Настройки MQTT
#define ACCESSPOINT "\"internet.mts.by\"" // точка доступа оператора связи симкарты
#define PROTOCOLIUS "MQIsdp" // это и оставляем
#define MQTTNAME "M V" // это смотрим на сервере MQTT
#define MQTTUSER "iu bw" // это смотрим на сервере MQTT
#define MQTTPASSWORD "1QH W" // это смотрим на сервере MQTT
#define SERVERNAME_PORT "\"m16.cloudmqtt.com\", \"15235\"" // это смотрим на сервере MQTT
#define TIMEBROKER 80 // продолжительность сессии с брокером , мин (пока такое и оставляем)
//----------------------------------------------
#define debugator
#include <SoftwareSerial.h>
SoftwareSerial SIM800(10, 11); // RX, TX
String currStr = "";
byte isStringMessage = 0;
byte TimeWebasto = 20;
int16_t Refresh_time = 1200; //сек
uint32_t currmillis = 0;
uint32_t prev_refreshMQTT = 0;
uint32_t timerStart_W_BUS = 0; bool timerenabledStart_W_BUS = false;
#define TIMEREXPIRED_Start_W_BUS (currmillis-timerStart_W_BUS)> (uint32_t)TimeWebasto * 60000UL
#define OutWebasto_12V 2 // это +12В выход потенциала вкл/выкл вебасто (напрямую к котлу без таймера).
#define Dallas_pin 3 // пин шины OneWire для датчиков даллас
#define DopOn 4 // сюда доп канал от сигналки на включение вебасто
#define DopOff 5 // сюда доп канал от сигналки на выключение вебасто
#define Ohrana 6 // Сюда состояние охраны сигналки
#define Trevoga 7 // Сюда состояние тревоги
#define IGN 8 // Сюда состояние зажигания
#define Sost 9 // Сюда состояние вебасто (+12В когда работает)
#define ResetGSM 12 // пин ресета GSM подключен к реле, разрывающее питание модуля.
#define Eng 14 // (А0) Сюда состояние работы ДВС
#define StatusWebastoLED 15 // (А1) пин LED индикация включенности котла
#define StartButtonpin 16 // (А2) пин тактовой кнопки вкл/выкл котла
#define DTR 17 // пин (А3), управляющий энергосберегающим режимом GSM модуля
#define StartEng 18 // (A4) это импульсный минусовой выход вкл/выкл ДВС. подключать на вход событий сиги.
#define OutWebasto_GndImp 19 // (A5) это импульсный минусовой выход вкл/выкл вебасто (к впайке к кнопке таймера).
#define Voltmeter_pin A7 // пин, которым измеряем напряжение питания
#define StartButton 0 // программный номер тактовой кнопки вкл/выкл котла
const bool RelayON = 1; // логика управления реле ресета GSM, в данном случае включается высоким уровнем на пине
#define GSM_RX 10 // пин софт RX Arduino для соединения с TX модуля SIM800
#define GSM_TX 11 // пин софт TX Arduino для соединения с RX модуля SIM800
uint32_t prevGSMnastr = 0;
uint32_t interval_doprosGSM = 123000UL;
uint16_t delayATcommand = 5000;
byte fails = 0;
byte failresets = 0;
bool settingGSM = 1;
enum gsmstatus_ {WaitGSM, echoOFF, EnergySave, Head, setText, setProgctrl, closeIncoming, newMessage, delSMS, setGPRS, setAccPoint,
setGPRSconnect, setBrokerconnect, setAuthPack, setSubPack, setPubPack
};
byte gsmstatus = WaitGSM;
enum TempC {VyhlopC, EngineC, UlicaC, SalonC, size_arrayTemp}; // перечисление нужных температур (в конце размер массива температур)
// ниже соответствие адресов датчиков различным температурам
byte DS18B20 [size_arrayTemp][10] = {
{0x28, 0xFF, 0xB2, 0xB5, 0xC1, 0x17, 0x05, 0xD1, VyhlopC, 93},
{0x28, 0xFF, 0xD3, 0xE2, 0xC1, 0x17, 0x04, 0x0D, EngineC, 89},
{0x28, 0xFF, 0xF8, 0xBC, 0xC1, 0x17, 0x04, 0x48, UlicaC, -3},
{0x28, 0xFF, 0x3F, 0xB7, 0xC1, 0x17, 0x05, 0xF1, SalonC, +2}
};
int8_t HeaterC = -100;
bool webasto = 0; // флаг команды на работу Webasto. 0 - котел выключен, 1 - котел включен
bool last_webasto = 0;
bool startWebasto_OK = 1; // флаг успешного запуска котла
bool report = false; // флаг нужности отправки отчета false - не нужно отправлять, true - нужно отправлять
bool reportEngine = false; // флаг нужности отправки отчета false - не нужно отправлять, true - нужно отправлять
bool engine = 0; // флаг работает ли ДВС или нет
bool ignition = 0; // флаг включено ли зажигание или нет
bool ohrana = 0; // флаг включена ли охрана или нет
bool trevoga = 0; // флаг включена ли тревога или нет
bool alarmSMS = 0; // флаг отправлена ли смс о тревоге или нет
bool waterpump = 0; // флаг работы циркуляционного насоса
bool plug = 0; // флаг работы штифта накаливания
bool airfan = 0; // флаг работы нагнетателя воздуха
bool fuelpump = 0; // флаг работы топливного насоса
bool blowerfan = 0; // флаг работы вентилятора печки автомобиля
byte DTC[7] = {0}; // коды неисправностей котла
void setup() {
delay (4000);
#ifdef debugator
Serial.begin(19200);
#endif
SIM800.begin(19200);
pinMode(13, OUTPUT);
pinMode(DTR, OUTPUT);
digitalWrite (DTR, LOW);
fails = 3;
}
void loop()
{
digitalWrite (13, webasto);
currmillis = millis();
if (settingGSM) NastroykaGSM ();
else if (fails >= 3) settingGSM = 1;
//если MQTT активен
if (failresets < 5)
{
if (last_webasto != webasto ){ MQTTsendDatastream();}
refreshDataMQTT ();
}
if (!webasto)
{
static uint32_t prevTestModem = 0;
if (!settingGSM && currmillis - prevTestModem > interval_doprosGSM)
{
digitalWrite (DTR, LOW);
delay (150);
SIM800.println (F("AT"));
prevTestModem = currmillis;
fails++;
interval_doprosGSM = 10000;
}
}
readSMS();
if (timerenabledStart_W_BUS && TIMEREXPIRED_Start_W_BUS) // если время работы котла истекло
{
timerenabledStart_W_BUS = 0;
webasto = 0; Refresh_time = 1200;
}
}// end loop
void Reset() {
static bool resettimer = 0; // для таймера удерживания реле в режиме сброс питания
static uint32_t resetTimer = 0; // для таймера удерживания реле в режиме сброс питания
if (!resettimer) {
digitalWrite (ResetGSM, RelayON);
resettimer = 1;
resetTimer = currmillis;
}
else if (currmillis - resetTimer > 5000 ) {
resettimer = 0;
digitalWrite (ResetGSM, !RelayON);
digitalWrite (DTR, LOW);
delay (150);
prevGSMnastr = currmillis;
delayATcommand = 150;
fails = 0;
failresets ++; if (failresets > 4) failresets = 5;
gsmstatus = WaitGSM;
settingGSM = 1;
interval_doprosGSM = 123000UL;
}
}
void NastroykaGSM () {
if (fails >= 3) Reset();
else if (currmillis - prevGSMnastr > delayATcommand)
{
fails ++;
if (gsmstatus == WaitGSM) SIM800.println (F("AT"));
else if (gsmstatus == EnergySave) SIM800.println (F("AT+CSCLK=1"));
else if (gsmstatus == Head) SIM800.println (F("AT+CIPHEAD=1"));
else if (gsmstatus == echoOFF) SIM800.println (F("AT")); //SIM800.println (F("ATE0"));
else if (gsmstatus == setText) SIM800.println (F("AT+CMGF=1"));
else if (gsmstatus == setProgctrl) SIM800.println (F("AT+IFC=0, 0"));
else if (gsmstatus == closeIncoming) SIM800.println (F("AT+GSMBUSY=1"));
else if (gsmstatus == newMessage) SIM800.println (F("AT+CNMI=1,2,2,1,0"));
else if (gsmstatus == delSMS) SIM800.println (F("AT+CMGDA=\"DEL ALL\""));
else if (gsmstatus == setGPRS) SIM800.println (F("AT+SAPBR=3,1, \"Contype\",\"GPRS\""));
else if (gsmstatus == setAccPoint) SIM800.print (F("AT+SAPBR=3,1, \"APN\",")), SIM800.println (F(ACCESSPOINT));
else if (gsmstatus == setGPRSconnect) SIM800.println (F("AT+SAPBR=1,1"));
else if (gsmstatus == setBrokerconnect) SIM800.print (F("AT+CIPSTART=\"TCP\",")), SIM800.println (F(SERVERNAME_PORT));
else if (gsmstatus == setAuthPack) AUTHsend ();
else if (gsmstatus == setSubPack) SUBsend("h/#");
else if (gsmstatus == setPubPack) MQTTsendDatastream();
delayATcommand = 5000;
prevGSMnastr = currmillis;
}
}
void readSMS() //--------------Цикл чтения входящих СМС-сообщений--------------
{
static uint32_t timerMQTTreconnect = 0;
static bool TimerMQTTreconnect = 0;
// если было неудачное подключение к MQTT, ждём час и снова пробуем
if (TimerMQTTreconnect && currmillis - timerMQTTreconnect > 3600000UL)
{
TimerMQTTreconnect = 0;
fails = 3;
settingGSM = 1;
}
if (!SIM800.available()) return;
char currSymb = SIM800.read();
#ifdef debugator
if (currSymb != '&' && currSymb != '$') Serial.write(currSymb);
else if (currSymb == '&') Serial.println();
#endif
if ('\r' == currSymb || '&' == currSymb)
{
if (isStringMessage != 0 && isStringMessage != 3) //если текущая строка - SMS-сообщение, отреагируем на него соответствующим образом
{
//----------------------------смс-ки, принятые от юзера
if (!currStr.compareTo(F("ON"))) {
timerenabledStart_W_BUS = 1;
timerStart_W_BUS = currmillis;
webasto = 1; Refresh_time = 60;
}
else if (!currStr.compareTo(F("OFF"))) {webasto = 0; Refresh_time = 1200; timerenabledStart_W_BUS = 0; }
else if (!currStr.compareTo(F("Balance"))) {};
isStringMessage = 0;
}
//--------------------принятие служебных сообщений от модема (настройка соединения)
else if (isStringMessage == 0) {
if (currStr.startsWith(F("+CMT: \""))) isStringMessage = 1;
if (currStr.indexOf(F("CLOSED")) > -1 || currStr.indexOf(F("ERROR")) > -1) {
fails = 3;
settingGSM = 1;
}
if (currStr.indexOf(F("OK")) > -1) {
if (!settingGSM){ if (failresets > 4 || (failresets <= 4 && gsmstatus >= setPubPack)) {fails = 0; digitalWrite (DTR, HIGH); interval_doprosGSM = 123000UL;}}
if (settingGSM && gsmstatus > WaitGSM && gsmstatus < setBrokerconnect) {
// если подключиться к MQTT серверу не удалось, оставляем настройки только для СМС
// и запускаем таймер на час, чтобы через час ещё раз пробовать:
if (gsmstatus == delSMS && failresets > 4)
{settingGSM = 0;
digitalWrite (DTR, HIGH);
timerMQTTreconnect = currmillis;
TimerMQTTreconnect = 1;
}
gsmstatus++; if (gsmstatus>16)gsmstatus=16;
fails = 0;
delayATcommand = 400;
}
}
if (currStr.indexOf(F("CONNECT")) > -1) if (gsmstatus == setBrokerconnect) {
gsmstatus++; if (gsmstatus>16)gsmstatus=16;
fails = 0;
delayATcommand = 300;
}
if (currStr.indexOf(F("SMS Ready")) > -1) if (gsmstatus == WaitGSM) {
gsmstatus++; if (gsmstatus>16)gsmstatus=16;
fails = 0;
delayATcommand = 300;
}
if (currStr.indexOf(F("SEND OK")) > -1) {
fails = 0;
if (settingGSM && gsmstatus >= setAuthPack && gsmstatus <= setPubPack) {
if (gsmstatus == setPubPack) {
settingGSM = 0;
failresets = 0;
} delayATcommand = 300;
gsmstatus++; if (gsmstatus>16)gsmstatus=16;
}
}
//-------------------------топики MQTT, принимаемые от брокера
if (currStr.indexOf(F("h/ctrl")) > -1) {
webasto = currStr.substring(currStr.indexOf(F("h/ctrl")) + 6).toInt();
if (webasto) {
timerenabledStart_W_BUS = 1;
timerStart_W_BUS = currmillis; Refresh_time = 60;
} else {timerenabledStart_W_BUS = 0; Refresh_time = 1200;}
}
if (currStr.indexOf(F("h/time/ctrl")) > -1) {
String TimeW = currStr.substring(currStr.indexOf(F("h/time/ctrl")) + 11);
TimeWebasto = TimeW.toInt();
PUBsend("h/time/stat", TimeW, 0);
remTime(0) ;
}
if (currStr.indexOf(F("h/refr0")) > -1) MQTTsendDatastream();
//-----------------------------------------
if (currStr.startsWith(F("+CUSD: 0,"))) {} //если текущая строка начинается с "+CUSD",то следующая строка является запросом баланса
else if (currStr.startsWith(F("+CSQ:"))) {} //если текущая строка начинается с "+CSQ",то значит был запрос на уровень сигнала GSM, отправим ответ запрашивающему
}
currStr = "";
}
else if ('\n' != currSymb && '$' != currSymb) {
currStr += String(currSymb);
}
if (currStr.length() > 100) currStr = "";
}
void AUTHsend () {
cipsend_begin ();
const char Prot[] = PROTOCOLIUS;
const char MQTTname[] = MQTTNAME;
const char MQTTuser[] = MQTTUSER;
const char MQTTpassword[] = MQTTPASSWORD;
uint16_t timeBroker = TIMEBROKER; // продолжительность сессии с брокером , мин
SIM800.write (0x10);
SIM800.write (strlen(Prot) + strlen(MQTTname) + strlen(MQTTuser) + strlen(MQTTpassword) + 12);
SIM800.write ((byte)0);
SIM800.write (strlen(Prot));
SIM800.write (Prot);
SIM800.write (0x03);
SIM800.write (0xC2);
timeBroker *=60;
byte * timeBr = (byte*)&timeBroker;
SIM800.write(*(timeBr+=1)); // время сеанса связи с брокером, сек (ст. байт)
SIM800.write(*(--timeBr)); // время сеанса связи с брокером, сек (мл. байт)
//SIM800.write (0x04); // время сеанса связи с брокером, сек (ст. байт)
//SIM800.write (0xB0); // время сеанса связи с брокером, сек (мл. байт)
SIM800.write ((byte)0);
SIM800.write (strlen(MQTTname));
SIM800.write (MQTTname);
SIM800.write ((byte)0);
SIM800.write (strlen(MQTTuser));
SIM800.write (MQTTuser);
SIM800.write ((byte)0);
SIM800.write (strlen(MQTTpassword));
SIM800.write (MQTTpassword);
SIM800.write (0x1A);
}
void PUBsend (char topPub[30], const String Command, const bool &multidata) {
if (!multidata) {cipsend_begin ();}
SIM800.write (0x30);
SIM800.write (strlen (topPub) + Command.length() + 2);
SIM800.write ((byte)0x00);
SIM800.write (strlen (topPub));
SIM800.write (topPub);
for (byte i = 0; i < Command.length(); i++) SIM800.write (Command[i]);
if (!multidata) {SIM800.write(0x1A); digitalWrite (DTR, HIGH);}
}
void SUBsend (char topSub[20]) {
cipsend_begin ();
SIM800.write (0x82);
SIM800.write (strlen(topSub) + 5);
SIM800.write ((byte)0);
SIM800.write (0x01);
SIM800.write ((byte)0);
SIM800.write (strlen(topSub));
SIM800.write (topSub);
SIM800.write ((byte)0x00);
SIM800.write (0x1A);
}
int8_t Temper (const byte &addressTemp) {
for (byte j = 0; j < size_arrayTemp; j++) {
if (DS18B20[j][8] == addressTemp)return (int8_t)DS18B20[j][9];
} return -99;
}
void MQTTsendDatastream() {
cipsend_begin ();
PUBsend ("h/time/stat", String(TimeWebasto), 1);
remTime(true);
PUBsend ("h/stat", String(webasto) + "&$", 1);
PUBsend ("h/flame", String(startWebasto_OK), 1);
PUBsend ("h/temp/dvs", String(Temper(EngineC)), 1);
PUBsend ("h/temp/heat", String(HeaterC), 1);
PUBsend ("h/temp/ul", String(Temper(UlicaC)), 1);
PUBsend ("h/temp/sal", String(Temper(SalonC)), 1);
SIM800.write (0x1A);
prev_refreshMQTT = currmillis;
digitalWrite (DTR, HIGH);
last_webasto = webasto;
}
void remTime ( bool s) {
int rem = TimeWebasto - ((currmillis - timerStart_W_BUS) / 60000ul);
PUBsend ("h/remtime", webasto ? String(rem) : "выкл", s);
}
void cipsend_begin ()
{
digitalWrite (DTR, LOW); delay (150);
SIM800.println (F("AT+CIPSEND"));
delay (250);
}
void refreshDataMQTT ()
{
if (currmillis - prev_refreshMQTT > (uint32_t)Refresh_time * 1000)
{
MQTTsendDatastream();
prev_refreshMQTT = currmillis;
fails++;
}
}
пробуйте, заливайте, управляйте хоть и виртуально (но led 13 кстати будет показывать включенность котла). Хорошо бы кто нибудь в машину поставил и затестил как ведёт себя скетч после заезда в зону , где нет сети и обратно.
вот как исправить плату v8.8, чтобы ардуино не перезагружалась. диоды 1N4007. (В плате v8.91 это уже решено). После чего на DC-DC подправить напряжение, чтобы на модеме было 4,1В. У меня на DC-DC при этом 4,75В.
не, там не 470 mF а 47 скорее - уж больно маленький.
Создать аккаунт вроде получилось , но вот когда я выбираю websocket то пишет что не удалось подключиться вероятно брандмауэр блокирует порт , у меня каспер стоит и я уже в нем выставил разрешения на тот порт , и все равно пишет что не удалось подключиться , а на смартфоне тоже какая то херня , настройки вбил пароль, имя , порт , адрес , но все равно подключения нет. Где можно нормальную инфу черпнуть по этому MQTT? Что бы понятно было? Или это без включенного контроллера котла прошитого под mqtt не будет работать ?
Mqtt dash на смартфоне конечно должна подключиться , без всякой ардуины, причем и метрики можно загрузить. Нужно внимательно пароли все вводить, там они зловещие
Ни чего не получается , захожу на сайт mqtt, авторизируюсь, выбираю ту херню которую по картинкам создавал, захожу в вебсокет этот , пишет типо что соединяется а потом ошибка соединения , что порт 32628 закрыт фаерволом или хрен знает чем . При чем пробовал и с компа и со смартфона и с домашнего роутера и с мобильного интернета. А mqtt dash постоянно крутит что соединяется , но соединить не может.
Да по ходу этот американский брокер на Россию не работает, не подключается и все , пишет что порт заблокирован, и нет коннекта. Я попробовал проделать на другом бесплатном брокере https://mqtt.4api.ru , там тоже свои заморочки , коннект есть и в приложении на телефоне , но вот не получается добавить эти метрики , на сайте ввожу metrics/exchange в окно названия топика, вставляю из текстового файла эти метрики , жму опубликовать и ни чего в приложении не происходит так и висит в ожидании данных , что я делаю не правильно не пойму.
Да по ходу этот американский брокер на Россию не работает, не подключается и все , пишет что порт заблокирован, и нет коннекта. Я попробовал проделать на другом бесплатном брокере https://mqtt.4api.ru , там тоже свои заморочки , коннект есть и в приложении на телефоне , но вот не получается добавить эти метрики , на сайте ввожу metrics/exchange в окно названия топика, вставляю из текстового файла эти метрики , жму опубликовать и ни чего в приложении не происходит так и висит в ожидании данных , что я делаю не правильно не пойму.
Да по ходу этот американский брокер на Россию не работает, не подключается и все , пишет что порт заблокирован, и нет коннекта. Я попробовал проделать на другом бесплатном брокере https://mqtt.4api.ru , там тоже свои заморочки , коннект есть и в приложении на телефоне , но вот не получается добавить эти метрики , на сайте ввожу metrics/exchange в окно названия топика, вставляю из текстового файла эти метрики , жму опубликовать и ни чего в приложении не происходит так и висит в ожидании данных , что я делаю не правильно не пойму.
Пользуюсь cloudmqtt, живу в россии . Сперва прожимаю подписаться и ждать метрики, а потом на компе жму отправить, можно вот так "34metrics/echange " попробовать вбить, так сказать чтобы отличались от чужих.
На cloudmqtt аккаунт создал, делал все по картинкам , когда нажиаю websocket UI в верхнем правом углу появляется сообщение типа попытка соединиться , но потом выдает сообщение что не получилось что порт недоступен , должно же быть зеленое сообщение что connected , а уменя красное что коннекта нет порт закрыт , не знаю что за херня , и в смарте тоже нет соединения , а на русском брокере , соединение есть но вот метрики обновить не получается, висит в ожидании данных.
На мой взгляд с регистрацией на mqtt с подтверждённым ящиком gmail проблем меньше всего, с mailовской почтой зарегался без проблем ввёл правильно все пароли и явки (через копирку) залил в устройство, но связи не было...
Ни хрена у меня не получается настроить этот клятый mqtt , на cloudmqtt порты закрыты , на русском mqtt.4api.ru подключение вроде есть и прога на смартфоне подключается но не знаю почему метрики эти не доходят до смарта , на myqtthub.com смарт подключаться не хочет пишет ошибка подключения , я уже не знаю что делать. В сети по Mqtt дельной информации нет , или поверхностно или для гиков с их линуксом , ни хрена не понял .
С другого Гугл аккаунта тоже пробовал, с другого компа пробовал, правда компы на одном роутере , но я и со смартфона через мобильный интернет тоже пробовал, а там ip по любому другой будет . Проживаю в Иркутской области.
Может я чего не догоняю, я создал аккаунт на русском брокере mqtt.4api.ru , вбил в mqtt dash пароли логины порты , с сайта брокера вошел в вебсокет вбил пароли логины нажал коннект все вроде работает , статус коннект , в смартфоне тоже все соединилось , по крайней мере нет ошибки соединения, в смарте жму на стрелки вверху и выбираю metrics/exchange , смарт пишет что ожидает данные , на сайте брокера в окне topic ввожу metrics/exchange ,а в окне message копипастом вставляю текст из файла , жму publish и ни чего не происходит, смарт висит в ожидании , на компе тоже ни каких изменений на экране, жму еще раз публиш , экранная кнопка вроде как нажимается но ни каких изменений нет, в смарте кнопки не появляются. Или все таки нужно сначала подключить ардуину с прошивкой под mqtt к вебасто. Второй день бьюсь ни чего не выходит.
Нет ардуино не надо. Топики со смарта на брокер и наобортот естественно должны передаваться без всякой ардуины. Попробуй на смарте , когда уже подключился, создай кнопку и в ее настройка в поле pub напиши ченибудь. При нажатии на сохданную кнопку в брокере топик должен появиться. И cloudmqtt еще нужно попробовать с другого компа (ну айпи в смысле).
Разобрался я почему не работал couldmqtt.com, эти пидары реально с Россией не работают, включил в телефоне vpn зашёл под голандским ip и всё соединение пошло. Козлы ,я два дня потерял чтобы допетрить .
Все получилось когда я в смартфоне запустил программу BROWSEC и отключил вайфай, коннект пошел и в вебсокете и mqtt dash , потом помучился заливать эти метрики , открывал разными текстовыми редакторами на смартфоне копировал и вставлял в окно в вебсокете, но ни хрена не получалось, потом додумался сравнить что в компе открывает и что в андроиде , так вот этот долбанный файл .rtf в андроиде совсем криво открывался , вообще другой текст, не знаю почему, я скопировал с компа в обычный тхт и закинул на телефон , и все с обычного текстового файла все правильно скопироваллось , в mqtt dash появились кнопки с какими то левыми значениями по температуре . Может это старые данные от автора. Но вот не знаю может на какой нибудь другой брокер переделать , а то эта пиндосская контора мало того что мало очень жадная так еще и с Россией не работает. Может это конечно Ростелеком порты блочит , и Мегафон с ним , но через BROWSEC на смарте работает , но не удобно , я его постоянно не держу включенным.
Попробовал сейчас залить скетч mqtt в ардуину , не работает, настройки правильные вбил ,но я думаю и не будет работать на этом брокере , это я смартфон обманул и зашел черея VPN а сим 800 же с обычными настройками пытается соединиться с брокером , а это не получатся. И еще модем почему то на этом скетче раз 5 перегрузился , реле щелкало , а потом вроде замигал как обычно но данные не дал в смартфон.
Да я обе пробовал и 3.66 возвращал на телефон 12 цифр.
Вроде бы разобрался, СМС отправляет если перезапустить СИМ800. Что удивительно, он их только принимает, а после перезагрузки и отправляет.
Да я давно еще об этом глюке писал , снимешь аккумулятор для подзарядки и после его установки смс больше не отправляет, только принимает, но если просто передернуть штекер питания , то все приходит в норму , и еще если деньги на счете кончились, то тоже перегружать вручную нужно. Я так и не понял что это за глюк,но он есть.Я думаю нужно в скейтч добавить смс команду на перезагрузку модема или всего устройства.
можно после старта МК (перезапуск питания) через некоторое время делать рестарт сим800.
Сегодня проверил , если деньги кончились на счете , то после пополнения не надо пререзагружать устройство , а если аккум отключаешь , то начинает отвечать , только после повторного кратковременного отключения и включения питания. Непонятно же , после обесточивания , отключается все и модем и ардуинка, что из них вызывает такой глюк, ответ же о том что смс получена приходит , значит модем принял смску и по идее должен был ее передать на ардуино , может это все таки дело в самой ардуино , она не не принимает от модема смс . В чем все таки дело?
Я вчера немного экспериментировал с прошивкой и упростил немного код инициализации модема, не знаю почему, но ответные смс стали нормально приходить даже без перезагрузки. Может просто тоже какой глюк ))). Код взял с программы которая давно хорошо работает. Замерял потребление тока флюком в спячке показал 0,005А.
на днях попробую добавлять по строчке удаленный код, может найду почему глючит.
Я тут еще почитал мануалы про СИМ800, у него обмен по уарту должен быть в диапазоне 2.1 - 3.1 вольта. Получается, что с СИМ800 идет по tx на ардуинку нормальное напряжение и прием смс происходит хорошо, а с ардуинки по tx идет 5В, это завышенное и получаются глюки СИМ800. По схеме у нас просто установлено на tx и rx сопротивление по 1 ком. Мне кажется нужно попробовать на tx c ардуинки на СИМ800 поставить делитель, а с tx СИМ800 на ардуинку вообще убрать.
По схеме есть делитель на линии tx от ардуины , присмотрись повнимательнее.
Согласен, не заметил.
Скорее всего прием смс работает , а отправка нет - по причине , что сим800 не выводится из сна. т.к. даже во сне смски будут приниматься. Но ни на какие команды прр этом сим800 реагировать не будет, поэтому и смс не отправятся. Короче внимательнее нужно смотреть в скетче про пин DTR. У меня пока времени нет, работа.
А какую смс ты отправляешь? В момент глюка отправь команду на включение котла и смотри. Если включился, значит до ардуино все доходит норм.
Отправлял и запрос состояния и запуск вебасты , котел не запускался , но стоит на секунду передернуть питание всё начинает работать , это после снятия аккума.
А какую смс ты отправляешь? В момент глюка отправь команду на включение котла и смотри. Если включился, значит до ардуино все доходит норм.
А я проверял через монитор порта (программу заливал в ардуино нано, ) и в скетче добавлял коды для отображения на мониторе, что удивительно все коды отображались, включая отправку смс, но смс не приходили.
Получается что можем криво начинает работать после подачи питания и его надо два сбрасывать.
Может когда планеты в ряд сойдутся и я , наконец, сделаю мкютт там будет по другому происходить инит модема и , надеюсь, проблема станет неактуальна. Инит будет в диалоге, а не просто дали команду, подождали 300мс, следующую команду. Такой подход без диалога это вата, т.к. модем иногда с бОльшими задержками реагирует. И следующую команду через 300мс может проигнорировать
На этом сайте хорошо расписан код как посылать команды в СИМ800 с получением ответов от него.
я давно как то смотрел то, что по ссылке. Мало того, что у автора там такой подход:
Да, у меня тоже будет Стринг, но не так чтобы между функциями им кидаться создавая копии и т.д.
Носи лучше обычные, ситцевые char * в горошек.
опыта не хватит боюсь, пока так
ну, значить, пока будешь красивый ходить. Со String-ами. :)
ага, пока сишные строки не изучу
На какой стадии реально mqtt? Думаю многие ждут, готовый задонить, поддержать, мотивировать так сказать...
тестовый скетч с чисто MQTT в принципе есть. Но очень трудно его интегрировать в основной скетч. И также этот тестовый скетч нужно дополнить ещё программными блоками на внештатные ситуации. Например, на предмет заезжания автомобиля в зону, где сеть gsm отсутствует, или MQTT сервер не отвечает, или деньги на симке кончились. Если таковые вещи случатся скетч вообще неадекватно будет работать, постоянно перезагружая модем и к тому же жря аккумулятор автомобиля. Пока вечерами балуюсь. Чё лукавить, тяжела такая задача для дилетанта.
Ладно хоть железо вроде отладил на предмет того, что происходила непредвиденная перезагрузка ардуины в момент намеренной перезагрузки модема при помощи реле. Короче развязка диодами питания модема и ардуины + установка конденсаторов помогла на 100%. Тестировал в разных режимах рестарт СИМ800 - всё гуд, ардуина в этот момент стабильна.
Отличные новости, да работа большая интегрировать скетч, когда все знаешь, а для нас дилетантов не подъемная. У меня с основной работой времени вообще нет. Да я и не дилетант, а начинающий чайник. Ищу у кого бы код посмотреть ))). Терпения Вам и удачи.
пока рекомендую освоить MQTT. Инструкция в картинках. Далее в собранную плату нужно залить такой скетч, задав вверху настройки MQTT сервера
пробуйте, заливайте, управляйте хоть и виртуально (но led 13 кстати будет показывать включенность котла). Хорошо бы кто нибудь в машину поставил и затестил как ведёт себя скетч после заезда в зону , где нет сети и обратно.
вот как исправить плату v8.8, чтобы ардуино не перезагружалась. диоды 1N4007. (В плате v8.91 это уже решено). После чего на DC-DC подправить напряжение, чтобы на модеме было 4,1В. У меня на DC-DC при этом 4,75В.
Что то ни хрена не получается с этим MQTT , даже создать аккаунт . Может поподробнее расскажешь.
Всё там норм, иногда подождать просто надо, у меня три аккаунта на mqtt.
Создать аккаунт вроде получилось , но вот когда я выбираю websocket то пишет что не удалось подключиться вероятно брандмауэр блокирует порт , у меня каспер стоит и я уже в нем выставил разрешения на тот порт , и все равно пишет что не удалось подключиться , а на смартфоне тоже какая то херня , настройки вбил пароль, имя , порт , адрес , но все равно подключения нет. Где можно нормальную инфу черпнуть по этому MQTT? Что бы понятно было? Или это без включенного контроллера котла прошитого под mqtt не будет работать ?
Mqtt dash на смартфоне конечно должна подключиться , без всякой ардуины, причем и метрики можно загрузить. Нужно внимательно пароли все вводить, там они зловещие
С телефона ещё проще, копипаст рулит.
Ни чего не получается , захожу на сайт mqtt, авторизируюсь, выбираю ту херню которую по картинкам создавал, захожу в вебсокет этот , пишет типо что соединяется а потом ошибка соединения , что порт 32628 закрыт фаерволом или хрен знает чем . При чем пробовал и с компа и со смартфона и с домашнего роутера и с мобильного интернета. А mqtt dash постоянно крутит что соединяется , но соединить не может.
Может на телефоне тоже антивирус стоит? С телефона всяко должно подключиться, попробуй новый аккаунт создать.
Да по ходу этот американский брокер на Россию не работает, не подключается и все , пишет что порт заблокирован, и нет коннекта. Я попробовал проделать на другом бесплатном брокере https://mqtt.4api.ru , там тоже свои заморочки , коннект есть и в приложении на телефоне , но вот не получается добавить эти метрики , на сайте ввожу metrics/exchange в окно названия топика, вставляю из текстового файла эти метрики , жму опубликовать и ни чего в приложении не происходит так и висит в ожидании данных , что я делаю не правильно не пойму.
Да по ходу этот американский брокер на Россию не работает, не подключается и все , пишет что порт заблокирован, и нет коннекта. Я попробовал проделать на другом бесплатном брокере https://mqtt.4api.ru , там тоже свои заморочки , коннект есть и в приложении на телефоне , но вот не получается добавить эти метрики , на сайте ввожу metrics/exchange в окно названия топика, вставляю из текстового файла эти метрики , жму опубликовать и ни чего в приложении не происходит так и висит в ожидании данных , что я делаю не правильно не пойму.
Да по ходу этот американский брокер на Россию не работает, не подключается и все , пишет что порт заблокирован, и нет коннекта. Я попробовал проделать на другом бесплатном брокере https://mqtt.4api.ru , там тоже свои заморочки , коннект есть и в приложении на телефоне , но вот не получается добавить эти метрики , на сайте ввожу metrics/exchange в окно названия топика, вставляю из текстового файла эти метрики , жму опубликовать и ни чего в приложении не происходит так и висит в ожидании данных , что я делаю не правильно не пойму.
Пользуюсь cloudmqtt, живу в россии . Сперва прожимаю подписаться и ждать метрики, а потом на компе жму отправить, можно вот так "34metrics/echange " попробовать вбить, так сказать чтобы отличались от чужих.
На cloudmqtt аккаунт создал, делал все по картинкам , когда нажиаю websocket UI в верхнем правом углу появляется сообщение типа попытка соединиться , но потом выдает сообщение что не получилось что порт недоступен , должно же быть зеленое сообщение что connected , а уменя красное что коннекта нет порт закрыт , не знаю что за херня , и в смарте тоже нет соединения , а на русском брокере , соединение есть но вот метрики обновить не получается, висит в ожидании данных.
Попробуй другую территорию сервера выбрать при создании аккаунта
На мой взгляд с регистрацией на mqtt с подтверждённым ящиком gmail проблем меньше всего, с mailовской почтой зарегался без проблем ввёл правильно все пароли и явки (через копирку) залил в устройство, но связи не было...
Ни хрена у меня не получается настроить этот клятый mqtt , на cloudmqtt порты закрыты , на русском mqtt.4api.ru подключение вроде есть и прога на смартфоне подключается но не знаю почему метрики эти не доходят до смарта , на myqtthub.com смарт подключаться не хочет пишет ошибка подключения , я уже не знаю что делать. В сети по Mqtt дельной информации нет , или поверхностно или для гиков с их линуксом , ни хрена не понял .
Через гугл акк пробовал? С другого места компьютера и/или ip ? в каком городе находишься?
Я долго не мог подключиться в mqtt dash потому что пробел в конце логина поставил. Его не видно, а он есть
Отпишитесь те, у кого получилось
С другого Гугл аккаунта тоже пробовал, с другого компа пробовал, правда компы на одном роутере , но я и со смартфона через мобильный интернет тоже пробовал, а там ip по любому другой будет . Проживаю в Иркутской области.
Может я чего не догоняю, я создал аккаунт на русском брокере mqtt.4api.ru , вбил в mqtt dash пароли логины порты , с сайта брокера вошел в вебсокет вбил пароли логины нажал коннект все вроде работает , статус коннект , в смартфоне тоже все соединилось , по крайней мере нет ошибки соединения, в смарте жму на стрелки вверху и выбираю metrics/exchange , смарт пишет что ожидает данные , на сайте брокера в окне topic ввожу metrics/exchange ,а в окне message копипастом вставляю текст из файла , жму publish и ни чего не происходит, смарт висит в ожидании , на компе тоже ни каких изменений на экране, жму еще раз публиш , экранная кнопка вроде как нажимается но ни каких изменений нет, в смарте кнопки не появляются. Или все таки нужно сначала подключить ардуину с прошивкой под mqtt к вебасто. Второй день бьюсь ни чего не выходит.
Нет ардуино не надо. Топики со смарта на брокер и наобортот естественно должны передаваться без всякой ардуины. Попробуй на смарте , когда уже подключился, создай кнопку и в ее настройка в поле pub напиши ченибудь. При нажатии на сохданную кнопку в брокере топик должен появиться. И cloudmqtt еще нужно попробовать с другого компа (ну айпи в смысле).
Разобрался я почему не работал couldmqtt.com, эти пидары реально с Россией не работают, включил в телефоне vpn зашёл под голандским ip и всё соединение пошло. Козлы ,я два дня потерял чтобы допетрить .
Все получилось когда я в смартфоне запустил программу BROWSEC и отключил вайфай, коннект пошел и в вебсокете и mqtt dash , потом помучился заливать эти метрики , открывал разными текстовыми редакторами на смартфоне копировал и вставлял в окно в вебсокете, но ни хрена не получалось, потом додумался сравнить что в компе открывает и что в андроиде , так вот этот долбанный файл .rtf в андроиде совсем криво открывался , вообще другой текст, не знаю почему, я скопировал с компа в обычный тхт и закинул на телефон , и все с обычного текстового файла все правильно скопироваллось , в mqtt dash появились кнопки с какими то левыми значениями по температуре . Может это старые данные от автора. Но вот не знаю может на какой нибудь другой брокер переделать , а то эта пиндосская контора мало того что мало очень жадная так еще и с Россией не работает. Может это конечно Ростелеком порты блочит , и Мегафон с ним , но через BROWSEC на смарте работает , но не удобно , я его постоянно не держу включенным.
Попробовал сейчас залить скетч mqtt в ардуину , не работает, настройки правильные вбил ,но я думаю и не будет работать на этом брокере , это я смартфон обманул и зашел черея VPN а сим 800 же с обычными настройками пытается соединиться с брокером , а это не получатся. И еще модем почему то на этом скетче раз 5 перегрузился , реле щелкало , а потом вроде замигал как обычно но данные не дал в смартфон.