Наш сервер MQTT
Наш сервер MQTT
возможно потому чтоброкер общается стрингами поэтому каскаду не соединить друг с другом.
на beebotte.com также: делаешь кнопку-булеан, но приходит с брокера on-off, или тру-фолс. А каскада ждет 0-1 именно в числовом значении. а там стринг)))
Отправлено спустя 3 минуты 9 секунд:
щас все новые mqtt брокеры везде продвигают каждый свой api.
а мы то привкли к cloud.mqtt....
на beebotte.com также: делаешь кнопку-булеан, но приходит с брокера on-off, или тру-фолс. А каскада ждет 0-1 именно в числовом значении. а там стринг)))
Отправлено спустя 3 минуты 9 секунд:
щас все новые mqtt брокеры везде продвигают каждый свой api.
а мы то привкли к cloud.mqtt....
- Rovki
- Полковник
- Сообщения: 5722
- Зарегистрирован: 22 апр 2016, 17:25
- Откуда: Чехов
- Имя: Анатолий
- Благодарил (а): 68 раз
- Поблагодарили: 217 раз
- Контактная информация:
Наш сервер MQTT
Я про регистрацию ,а не брокера
Отправлено спустя 5 минут 3 секунды:
А где в семантике топика прописывается пользователь https://ipc2u.ru/articles/prostye-reshe ... akoe-mqtt/
То же самое касается и выбора метода защиты " Защита передачи данных
Для обеспечения безопасности в MQTT протоколе реализованы следующие методы защиты:
Аутентификация клиентов. Пакет CONNECT может содержать в себе поля USERNAME и PASSWORD. При реализации брокера можно использовать эти поля для аутентификации клиента
Контроль доступа клиентов через Client ID
Подключение к брокеру через TLS/SSL"
Отправлено спустя 6 минут 51 секунду:
так вроде пробовали работу каскады с есп через beebotte.com , работает ... А через наш брокер , ни как ,странно...ФЛпрог поддерживает каскаду , а брокер нет ...,значит он не совсем наш,имхоkramar писал(а): 02 янв 2021, 16:36 возможно потому чтоброкер общается стрингами поэтому каскаду не соединить друг с другом.
на beebotte.com также: делаешь кнопку-булеан, но приходит с брокера on-off, или тру-фолс. А каскада ждет 0-1 именно в числовом значении. а там стринг)))
Отправлено спустя 3 минуты 9 секунд:
щас все новые mqtt брокеры везде продвигают каждый свой api.
а мы то привкли к cloud.mqtt....
Электронщик до мозга костей и не только
Наш сервер MQTT
я про то что яндекс никаким боком к нам не относится....регистрация и аутентификация только на нашем сервере --- а вот с проблемами нужно обращаться к его создателю))))
- Rovki
- Полковник
- Сообщения: 5722
- Зарегистрирован: 22 апр 2016, 17:25
- Откуда: Чехов
- Имя: Анатолий
- Благодарил (а): 68 раз
- Поблагодарили: 217 раз
- Контактная информация:
Наш сервер MQTT
Так я вроде описал проблему в соответствующей ветке ... или что еще нужно для обращения к создателю ?Anydy писал(а): 02 янв 2021, 17:47 я про то что яндекс никаким боком к нам не относится....регистрация и аутентификация только на нашем сервере --- а вот с проблемами нужно обращаться к его создателю))))
Электронщик до мозга костей и не только
-
- Лейтенант
- Сообщения: 537
- Зарегистрирован: 29 окт 2015, 09:57
- Откуда: Kazakhstan
- Имя: Evgesha
Наш сервер MQTT
С нашим сервером связка с каскада работала, приема правда не добился
viewtopic.php?f=112&t=4141&p=94269&hili ... 800#p94269
Тут описывал
viewtopic.php?f=112&t=4141&p=94269&hili ... 800#p94269
Тут описывал
- Rovki
- Полковник
- Сообщения: 5722
- Зарегистрирован: 22 апр 2016, 17:25
- Откуда: Чехов
- Имя: Анатолий
- Благодарил (а): 68 раз
- Поблагодарили: 217 раз
- Контактная информация:
Наш сервер MQTT
Спасибо ,глянуEvgesha писал(а): 02 янв 2021, 18:27 С нашим сервером связка с каскада работала, приема правда не добился
viewtopic.php?f=112&t=4141&p=94269&hili ... 800#p94269
Тут описывал
Отправлено спустя 20 минут 3 секунды:
Вы наверное про сим800?. В каскаде же у вас работает и издатель и подписчик (сам на себя)Evgesha писал(а): 02 янв 2021, 18:27 С нашим сервером связка с каскада работала, приема правда не добился
viewtopic.php?f=112&t=4141&p=94269&hili ... 800#p94269
Тут описывал
Странно только как то ,с защитой (логин ,пароль) - запустил ваш проект,с вашем именем и паролем и работает!!!
Отправлено спустя 39 минут 44 секунды:
Как делать со стороны каскады понятно , осталось понять какие блоки мктт использовать для есп лучше

Электронщик до мозга костей и не только
- Rovki
- Полковник
- Сообщения: 5722
- Зарегистрирован: 22 апр 2016, 17:25
- Откуда: Чехов
- Имя: Анатолий
- Благодарил (а): 68 раз
- Поблагодарили: 217 раз
- Контактная информация:
Наш сервер MQTT
C брокером всегда работают и издатель и подписчик . В том посте шел разговор про работу сим800 и каскада ,вроде
Отправлено спустя 2 минуты 28 секунд:
Нужно что бы блоки могли работать с разными типами данных в сообщениях Даже если брокер работает только со стрингом ,то блок должен внутри себя делать эти преобразования ,имхо , было бы замечательно
Электронщик до мозга костей и не только
- Rovki
- Полковник
- Сообщения: 5722
- Зарегистрирован: 22 апр 2016, 17:25
- Откуда: Чехов
- Имя: Анатолий
- Благодарил (а): 68 раз
- Поблагодарили: 217 раз
- Контактная информация:
Наш сервер MQTT
Похоже примеров работы с данным брокером нет на ФЛ
Меня интересует работа между любым приложением и есп

Электронщик до мозга костей и не только
Наш сервер MQTT
Вот набросок делал -- там есть функции преобразования ....пробуйте ... надеюсь блок создать с одним маленьким преобразованием не проблема?
Код: Выделить всё
/**************************************************************
*
* For this example, you need to install PubSubClient library:
* https://github.com/knolleary/pubsubclient/releases/latest
* or from http://librarymanager/all#PubSubClient
*
* TinyGSM Getting Started guide:
* http://tiny.cc/tiny-gsm-readme
*
**************************************************************
* Use Mosquitto client tools to work with MQTT
* Ubuntu/Linux: sudo apt-get install mosquitto-clients
* Windows: https://mosquitto.org/download/
*
* Subscribe for messages:
* mosquitto_sub -h test.mosquitto.org -t GsmClientTest/init -t GsmClientTest/ledStatus -q 1
* Toggle led:
* mosquitto_pub -h test.mosquitto.org -t GsmClientTest/led -q 1 -m "toggle"
*
* You can use Node-RED for wiring together MQTT-enabled devices
* https://nodered.org/
* Also, take a look at these additional Node-RED modules:
* node-red-contrib-blynk-websockets
* node-red-dashboard
*
**************************************************************/
// Select your modem:
#define TINY_GSM_MODEM_SIM800
//#define TINY_GSM_MODEM_SIM900
//#define TINY_GSM_MODEM_A6
//#define TINY_GSM_MODEM_M590
#define ONE_WIRE_BUS 9
#include <TinyGsmClient.h>
#include <PubSubClient.h>
#include <OneWire.h>
#include <DallasTemperature.h>
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
String MQTT_inputtext; //сообщение
// Your GPRS credentials
// Leave empty, if missing user or pass
int counter = 0;
const char apn[] = "internet.tele2.ru";
const char user[] = "";
const char pass[] = "";
const char cluser[] = "gmnSMc2uDHIjO8CCvf2IeY9UFtT4i0F8";
const char clpass[] = "";
const char clid[] = "fadaf737bb3e4b1f3a09878471b";
// Use Hardware Serial on Mega, Leonardo, Micro
//#define SerialAT Serial1
// or Software Serial on Uno, Nano
#include <SoftwareSerial.h>
SoftwareSerial SerialAT(7, 8); // RX, TX
TinyGsm modem(SerialAT);
TinyGsmClient client(modem);
PubSubClient mqtt(client);
const char* broker = "mqtt.beebotte.com";
const char* topicLed = "Led";
const char* topicInit = "Init";
const char* topicLedStatus = "LedStatus";
const char* temperature = "Temp/Data";
#define LED_PIN1 13
#define LED_PIN2 12
char* ledStatus1 ="Reset1";
char* ledStatus2 ="Reset2";
long lastReconnectAttempt = 0;
const long interval = 30000;
unsigned long previousMillis = 0;
char tempchar[6];
float temp;
void setup() {
sensors.begin();
pinMode(LED_PIN1, OUTPUT);
pinMode(LED_PIN2, OUTPUT);
// Set console baud rate
Serial.begin(115200);
delay(10);
// Set GSM module baud rate
SerialAT.begin(19200);
delay(3000);
// Restart takes quite some time
// To skip it, call init() instead of restart()
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(broker, 1883);
mqtt.setCallback(mqttCallback);
}
boolean mqttConnect() {
Serial.print("Connecting to ");
Serial.print(broker);
if (!mqtt.connect(clid, cluser, clpass)) {
Serial.println(" fail");
return false;
}
Serial.println(" OK");
mqtt.publish(topicInit, "GsmClient started");
mqtt.subscribe(topicLed);
return mqtt.connected();
}
void loop() {
if (mqtt.connected()) {
mqtt.loop();
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
// save the last time you blinked the LED
previousMillis = currentMillis;
sensors.requestTemperatures();
temp = sensors.getTempCByIndex(0);
dtostrf(temp, 3, 2, tempchar);//преобразуем float - char
String payload = "{\"data\":";
payload += tempchar;
payload += ",\"write\":true";
//payload += counter;
payload += "}";
Serial.println(payload);
mqtt.publish(temperature, (char*) payload.c_str());
}
} 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);
}
}
}
void mqttCallback(char* topic, byte* payload, unsigned int len) {
MQTT_inputtext = "";
for (int i=0;i<len;i++) {
MQTT_inputtext += (char)payload[i]; // составляем строку из байтов, которая пришла в параметрах топика
}
if (String(topic) == topicLed) {
if ((MQTT_inputtext) == "1on" ) {
digitalWrite(LED_PIN1, HIGH);
ledStatus1 = "Led 1 On";
mqtt.publish(topicLedStatus, ledStatus1 );
}
if ((MQTT_inputtext) == "1off" ) {
digitalWrite(LED_PIN1, LOW);
ledStatus1 = "Led 1 Off";
mqtt.publish(topicLedStatus, ledStatus1 );
}
//----------------------
if ((MQTT_inputtext) == "2on" ) {
digitalWrite(LED_PIN2, HIGH);
ledStatus2 = "Led 2 On";
mqtt.publish(topicLedStatus, ledStatus2 );
}
if ((MQTT_inputtext) == "2off" ) {
digitalWrite(LED_PIN2, LOW);
ledStatus2 = "Led 2 Off";
mqtt.publish(topicLedStatus, ledStatus2 );
}
//------------------
if ((MQTT_inputtext) == "stat" ) {
mqtt.publish(topicLedStatus, ledStatus1);
mqtt.publish(topicLedStatus, ledStatus2);
}
}
}
- Rovki
- Полковник
- Сообщения: 5722
- Зарегистрирован: 22 апр 2016, 17:25
- Откуда: Чехов
- Имя: Анатолий
- Благодарил (а): 68 раз
- Поблагодарили: 217 раз
- Контактная информация:
Наш сервер MQTT
Да преобразования типов я уже сделал ...с помощью блоков Анатолия из Сургута . И прием данных из каскады(издатель) в есп(подписчик) сделал. А вот передача (издатель) есп и подписчик каскада ни как не идет .Anydy писал(а): 03 янв 2021, 10:53 Вот набросок делал -- там есть функции преобразования ....пробуйте ... надеюсь блок создать с одним маленьким преобразованием не проблема?Код: Выделить всё
/************************************************************** * * For this example, you need to install PubSubClient library: * https://github.com/knolleary/pubsubclient/releases/latest * or from http://librarymanager/all#PubSubClient * * TinyGSM Getting Started guide: * http://tiny.cc/tiny-gsm-readme * ************************************************************** * Use Mosquitto client tools to work with MQTT * Ubuntu/Linux: sudo apt-get install mosquitto-clients * Windows: https://mosquitto.org/download/ * * Subscribe for messages: * mosquitto_sub -h test.mosquitto.org -t GsmClientTest/init -t GsmClientTest/ledStatus -q 1 * Toggle led: * mosquitto_pub -h test.mosquitto.org -t GsmClientTest/led -q 1 -m "toggle" * * You can use Node-RED for wiring together MQTT-enabled devices * https://nodered.org/ * Also, take a look at these additional Node-RED modules: * node-red-contrib-blynk-websockets * node-red-dashboard * **************************************************************/ // Select your modem: #define TINY_GSM_MODEM_SIM800 //#define TINY_GSM_MODEM_SIM900 //#define TINY_GSM_MODEM_A6 //#define TINY_GSM_MODEM_M590 #define ONE_WIRE_BUS 9 #include <TinyGsmClient.h> #include <PubSubClient.h> #include <OneWire.h> #include <DallasTemperature.h> OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); String MQTT_inputtext; //сообщение // Your GPRS credentials // Leave empty, if missing user or pass int counter = 0; const char apn[] = "internet.tele2.ru"; const char user[] = ""; const char pass[] = ""; const char cluser[] = "gmnSMc2uDHIjO8CCvf2IeY9UFtT4i0F8"; const char clpass[] = ""; const char clid[] = "fadaf737bb3e4b1f3a09878471b"; // Use Hardware Serial on Mega, Leonardo, Micro //#define SerialAT Serial1 // or Software Serial on Uno, Nano #include <SoftwareSerial.h> SoftwareSerial SerialAT(7, 8); // RX, TX TinyGsm modem(SerialAT); TinyGsmClient client(modem); PubSubClient mqtt(client); const char* broker = "mqtt.beebotte.com"; const char* topicLed = "Led"; const char* topicInit = "Init"; const char* topicLedStatus = "LedStatus"; const char* temperature = "Temp/Data"; #define LED_PIN1 13 #define LED_PIN2 12 char* ledStatus1 ="Reset1"; char* ledStatus2 ="Reset2"; long lastReconnectAttempt = 0; const long interval = 30000; unsigned long previousMillis = 0; char tempchar[6]; float temp; void setup() { sensors.begin(); pinMode(LED_PIN1, OUTPUT); pinMode(LED_PIN2, OUTPUT); // Set console baud rate Serial.begin(115200); delay(10); // Set GSM module baud rate SerialAT.begin(19200); delay(3000); // Restart takes quite some time // To skip it, call init() instead of restart() 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(broker, 1883); mqtt.setCallback(mqttCallback); } boolean mqttConnect() { Serial.print("Connecting to "); Serial.print(broker); if (!mqtt.connect(clid, cluser, clpass)) { Serial.println(" fail"); return false; } Serial.println(" OK"); mqtt.publish(topicInit, "GsmClient started"); mqtt.subscribe(topicLed); return mqtt.connected(); } void loop() { if (mqtt.connected()) { mqtt.loop(); unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= interval) { // save the last time you blinked the LED previousMillis = currentMillis; sensors.requestTemperatures(); temp = sensors.getTempCByIndex(0); dtostrf(temp, 3, 2, tempchar);//преобразуем float - char String payload = "{\"data\":"; payload += tempchar; payload += ",\"write\":true"; //payload += counter; payload += "}"; Serial.println(payload); mqtt.publish(temperature, (char*) payload.c_str()); } } 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); } } } void mqttCallback(char* topic, byte* payload, unsigned int len) { MQTT_inputtext = ""; for (int i=0;i<len;i++) { MQTT_inputtext += (char)payload[i]; // составляем строку из байтов, которая пришла в параметрах топика } if (String(topic) == topicLed) { if ((MQTT_inputtext) == "1on" ) { digitalWrite(LED_PIN1, HIGH); ledStatus1 = "Led 1 On"; mqtt.publish(topicLedStatus, ledStatus1 ); } if ((MQTT_inputtext) == "1off" ) { digitalWrite(LED_PIN1, LOW); ledStatus1 = "Led 1 Off"; mqtt.publish(topicLedStatus, ledStatus1 ); } //---------------------- if ((MQTT_inputtext) == "2on" ) { digitalWrite(LED_PIN2, HIGH); ledStatus2 = "Led 2 On"; mqtt.publish(topicLedStatus, ledStatus2 ); } if ((MQTT_inputtext) == "2off" ) { digitalWrite(LED_PIN2, LOW); ledStatus2 = "Led 2 Off"; mqtt.publish(topicLedStatus, ledStatus2 ); } //------------------ if ((MQTT_inputtext) == "stat" ) { mqtt.publish(topicLedStatus, ledStatus1); mqtt.publish(topicLedStatus, ledStatus2); } } }
Электронщик до мозга костей и не только
Наш сервер MQTT
и не пойдет: там же стринг с брокера выходит.
цифры, но в стринге!
а каскада не работает со стрингами.
- Rovki
- Полковник
- Сообщения: 5722
- Зарегистрирован: 22 апр 2016, 17:25
- Откуда: Чехов
- Имя: Анатолий
- Благодарил (а): 68 раз
- Поблагодарили: 217 раз
- Контактная информация:
Наш сервер MQTT
Вы ошибаетесь ,в блоках MQTT каскады все конвертации стрингов делаются внутри . Нужно только отправлять(принимать) значения boolean ,int, float в есп через штатный конвертер строк SConv
Уже разобрался с издателем в есп ,все работает ,снял видео , через два брокера
Электронщик до мозга костей и не только
- brig62
- Лейтенант
- Сообщения: 469
- Зарегистрирован: 13 май 2016, 16:37
- Откуда: Казань
- Имя: Игорь
- Благодарил (а): 1 раз
Наш сервер MQTT
Работает сервер? Пробую отправить и получить данные. Подключение к серверу вроде бы проходит. А топики нет. Или к нему исключительно через MQTT Explorer можно подключиться? Можно пример топика для отправки и получения?
Сейчас пытаюсь протестировать серез MQTT.fx Version 1.7.1
Сейчас пытаюсь протестировать серез MQTT.fx Version 1.7.1
-
- Сержант
- Сообщения: 194
- Зарегистрирован: 29 авг 2016, 22:44
- Откуда: Серпухов
- Имя: Александр
Наш сервер MQTT
Сервер работает. В топике первым идёт Ваш логин. Например логин при регистрации : trs. ,Значит топик будет trs/..... , А после косой черты уже Ваши значения. Любой программой подключаюсь без проблем
- brig62
- Лейтенант
- Сообщения: 469
- Зарегистрирован: 13 май 2016, 16:37
- Откуда: Казань
- Имя: Игорь
- Благодарил (а): 1 раз
Наш сервер MQTT
Подключаться я тоже подключаюсь. Посылаю Brig62/test/1 Его же и получить пытаюсь. Порт 1883. И с паролем пробовал. И без.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя