Управление и контроль
Та прошит( проэкт приложил но блин не могу до воевать(
А если можно дайте рабочий проэкт, попробую вашь, но вроде в своём (приложил его) все правельно. (( а то уже сил нет боротся
Ок спс попробую, но просто смущает то что нет даже попытки подключения к брокеру(((((starshoy81 писал(а): ↑06.12.2022{, 16:42}sampl, в проекте не указан топик куда отправлять данные и проект сделан для нано
Незнаю у меня пишет нет библиотеки, и не могу найти, а если закоментить в коде?starshoy81 писал(а): ↑06.12.2022{, 20:57}sampl, у меня библиотеку не требует. Эта библиотека, видимо, тянется из зависимостей другой библиотеки. Прямой её вставки в коде нет. Можно игнорировать предупреждение.
Ещё надо объявлять тип модема перед вставкой библиотеки модема.
Код: Выделить всё
#include <OneWire.h>
#include <SoftwareSerial.h>
#include <PubSubClient.h>
#define TINY_GSM_MODEM_SIM800
#include <TinyGsmClient.h>
byte _d18x2x1Addr[8]={0x28, 0x8A, 0x58, 0xEB, 0x5, 0x0, 0x0, 0x78};
OneWire _ow6(6);
//#define SerialMon Serial
String MQTT_inputTopic;
String MQTT_inputtext;
SoftwareSerial SerialAT(5, 4);
const char apn[] = "internet";
const char user[] = "";
const char pass[] = "";
const char* topicInit= "GsmClient/init";
TinyGsm modem(SerialAT);
TinyGsmClient client(modem);
PubSubClient mqtt(client);
long lastReconnectAttempt= 0;
bool En_75656550_1;
String msg_75656550_1;
String outTopic_75656550_1;
bool _trgrt1 = 0;
bool _trgrt1I = 0;
bool _gen1I = 0;
bool _gen1O = 0;
unsigned long _gen1P = 0UL;
unsigned long _d18x2x1Tti = 0UL;
float _d18x2x1O = 0.00;
float _tempVariable_float;
void setup()
{
Serial.begin(115200);
delay(10);
SerialAT.begin(19200);
delay(3000);
Serial.println("Initializing modem...");
modem.restart();
// Unlock your SIM card with a PIN
//modem.simUnlock("1234");
Serial.print("Waiting for network...");
if (!modem.waitForNetwork())
{
Serial.println(" fail");
while (true);
}
Serial.println(" OK");
Serial.print("Connecting to ");
Serial.print(apn);
if (!modem.gprsConnect(apn, user, pass))
{
Serial.println(" fail");
while (true);
}
Serial.println(" OK");
// MQTT Broker setup
mqtt.setServer("m16.cloudmqtt.com", 10816);
mqtt.setCallback(mqttCallback);
}
void loop()
{
//Плата:1
if (mqtt.connected())
{
mqtt.loop();
}
else
{
// Reconnect every 10 seconds
unsigned long t = millis();
if (t - lastReconnectAttempt > 10000L)
{
lastReconnectAttempt = t;
}
if (mqttConnect())
{
lastReconnectAttempt = 0;
}
else if (!modem.gprsConnect(apn, user, pass))
{
while (true);
}
}
if (1)
{
if (! _gen1I)
{
_gen1I = 1;
_gen1O = 1;
_gen1P = millis();
}
}
else
{
_gen1I = 0 ;
_gen1O= 0;
}
if (_gen1I)
{
if (_isTimer (_gen1P , 180000))
{
_gen1P = millis();
_gen1O = ! _gen1O;
}
}
if (_gen1O)
{
if (_trgrt1I)
{
_trgrt1 = 0;
}
else
{
_trgrt1 = 1;
_trgrt1I = 1;
}
}
else
{
_trgrt1 = 0;
_trgrt1I = 0;
}
;
if(_isTimer(_d18x2x1Tti, 360000))
{
_d18x2x1Tti = millis();
_tempVariable_float = _readDS18_ow6(_d18x2x1Addr, 0);
if (_tempVariable_float < 500)
{
_d18x2x1O = _tempVariable_float;
}
}
En_75656550_1 = _trgrt1;
msg_75656550_1 = (_floatToStringWitRaz((_d18x2x1O),2));
outTopic_75656550_1 = String("drev");
if (En_75656550_1 == 1)
{
mqtt.publish((char*) outTopic_75656550_1.c_str(), (char*) msg_75656550_1.c_str());
}
}
String _floatToStringWitRaz(float value, int raz)
{
return String(value,raz);
}
bool _isTimer(unsigned long startTime, unsigned long period)
{
unsigned long currentTime;
currentTime = millis();
if (currentTime>= startTime)
{
return (currentTime>=(startTime + period));
}
else
{
return (currentTime >=(4294967295-startTime+period));
}
}
float _convertDS18x2xData(byte type_s, byte data[12])
{
int16_t raw = (data[1] << 8) | data[0];
if (type_s)
{
raw = raw << 3;
if (data[7] == 0x10)
{
raw = (raw & 0xFFF0) + 12 - data[6];
}
}
else
{
byte cfg = (data[4] & 0x60);
if (cfg == 0x00)raw = raw & ~7;
else if(cfg == 0x20)raw = raw & ~3;
else if(cfg == 0x40) raw = raw & ~1;
}
return (float)raw / 16.0;
}
float _readDS18_ow6(byte addr[8], byte type_s)
{
byte data[12];
byte i;
_ow6.reset();
_ow6.select(addr);
_ow6.write(0xBE);
for (i = 0; i < 9; i++)
{
data[i] = _ow6.read();
}
_ow6.reset();
_ow6.select(addr);
_ow6.write(0x44);
if (_ow6.crc8(data, 8) != data[8])
{
return 501;
}
return _convertDS18x2xData(type_s, data);
}
boolean mqttConnect()
{
Serial.print("Connecting to ");
Serial.print("m16.cloudmqtt.com");
if (!mqtt.connect("", "bzcnhecm", "8jdgYxHld-tu"))
{
Serial.println(" fail");
return false;
}
Serial.println(" OK");
mqtt.publish(topicInit, "GsmClient started");
mqtt.subscribe("#");
return mqtt.connected();
}
void mqttCallback(char* topic, byte* payload, unsigned int len)
{
MQTT_inputtext = "";
MQTT_inputTopic = "";
MQTT_inputTopic = topic;
for (int i=0; i<len; i++)
{
MQTT_inputtext += (char)payload[i];
}
}
Спс утром попробую, а то модуль остался на работе(starshoy81 писал(а): ↑06.12.2022{, 22:26}sampl, код из приложенного проекта. Закомментировать ненужное можноКод: Выделить всё
#include <OneWire.h> #include <SoftwareSerial.h> #include <PubSubClient.h> #define TINY_GSM_MODEM_SIM800 #include <TinyGsmClient.h> byte _d18x2x1Addr[8]={0x28, 0x8A, 0x58, 0xEB, 0x5, 0x0, 0x0, 0x78}; OneWire _ow6(6); //#define SerialMon Serial String MQTT_inputTopic; String MQTT_inputtext; SoftwareSerial SerialAT(5, 4); const char apn[] = "internet"; const char user[] = ""; const char pass[] = ""; const char* topicInit= "GsmClient/init"; TinyGsm modem(SerialAT); TinyGsmClient client(modem); PubSubClient mqtt(client); long lastReconnectAttempt= 0; bool En_75656550_1; String msg_75656550_1; String outTopic_75656550_1; bool _trgrt1 = 0; bool _trgrt1I = 0; bool _gen1I = 0; bool _gen1O = 0; unsigned long _gen1P = 0UL; unsigned long _d18x2x1Tti = 0UL; float _d18x2x1O = 0.00; float _tempVariable_float; void setup() { Serial.begin(115200); delay(10); SerialAT.begin(19200); delay(3000); Serial.println("Initializing modem..."); modem.restart(); // Unlock your SIM card with a PIN //modem.simUnlock("1234"); Serial.print("Waiting for network..."); if (!modem.waitForNetwork()) { Serial.println(" fail"); while (true); } Serial.println(" OK"); Serial.print("Connecting to "); Serial.print(apn); if (!modem.gprsConnect(apn, user, pass)) { Serial.println(" fail"); while (true); } Serial.println(" OK"); // MQTT Broker setup mqtt.setServer("m16.cloudmqtt.com", 10816); mqtt.setCallback(mqttCallback); } void loop() { //Плата:1 if (mqtt.connected()) { mqtt.loop(); } else { // Reconnect every 10 seconds unsigned long t = millis(); if (t - lastReconnectAttempt > 10000L) { lastReconnectAttempt = t; } if (mqttConnect()) { lastReconnectAttempt = 0; } else if (!modem.gprsConnect(apn, user, pass)) { while (true); } } if (1) { if (! _gen1I) { _gen1I = 1; _gen1O = 1; _gen1P = millis(); } } else { _gen1I = 0 ; _gen1O= 0; } if (_gen1I) { if (_isTimer (_gen1P , 180000)) { _gen1P = millis(); _gen1O = ! _gen1O; } } if (_gen1O) { if (_trgrt1I) { _trgrt1 = 0; } else { _trgrt1 = 1; _trgrt1I = 1; } } else { _trgrt1 = 0; _trgrt1I = 0; } ; if(_isTimer(_d18x2x1Tti, 360000)) { _d18x2x1Tti = millis(); _tempVariable_float = _readDS18_ow6(_d18x2x1Addr, 0); if (_tempVariable_float < 500) { _d18x2x1O = _tempVariable_float; } } En_75656550_1 = _trgrt1; msg_75656550_1 = (_floatToStringWitRaz((_d18x2x1O),2)); outTopic_75656550_1 = String("drev"); if (En_75656550_1 == 1) { mqtt.publish((char*) outTopic_75656550_1.c_str(), (char*) msg_75656550_1.c_str()); } } String _floatToStringWitRaz(float value, int raz) { return String(value,raz); } bool _isTimer(unsigned long startTime, unsigned long period) { unsigned long currentTime; currentTime = millis(); if (currentTime>= startTime) { return (currentTime>=(startTime + period)); } else { return (currentTime >=(4294967295-startTime+period)); } } float _convertDS18x2xData(byte type_s, byte data[12]) { int16_t raw = (data[1] << 8) | data[0]; if (type_s) { raw = raw << 3; if (data[7] == 0x10) { raw = (raw & 0xFFF0) + 12 - data[6]; } } else { byte cfg = (data[4] & 0x60); if (cfg == 0x00)raw = raw & ~7; else if(cfg == 0x20)raw = raw & ~3; else if(cfg == 0x40) raw = raw & ~1; } return (float)raw / 16.0; } float _readDS18_ow6(byte addr[8], byte type_s) { byte data[12]; byte i; _ow6.reset(); _ow6.select(addr); _ow6.write(0xBE); for (i = 0; i < 9; i++) { data[i] = _ow6.read(); } _ow6.reset(); _ow6.select(addr); _ow6.write(0x44); if (_ow6.crc8(data, 8) != data[8]) { return 501; } return _convertDS18x2xData(type_s, data); } boolean mqttConnect() { Serial.print("Connecting to "); Serial.print("m16.cloudmqtt.com"); if (!mqtt.connect("", "bzcnhecm", "8jdgYxHld-tu")) { Serial.println(" fail"); return false; } Serial.println(" OK"); mqtt.publish(topicInit, "GsmClient started"); mqtt.subscribe("#"); return mqtt.connected(); } void mqttCallback(char* topic, byte* payload, unsigned int len) { MQTT_inputtext = ""; MQTT_inputTopic = ""; MQTT_inputTopic = topic; for (int i=0; i<len; i++) { MQTT_inputtext += (char)payload[i]; } }