Подключеие MQTT Windows
Модератор: immortal
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Подключеие MQTT Windows
Вы что хотите сделать...немного не понимаю....
Если вы хотите управлять релюхой - надо 1 раз в setup подписаться на нужный паблик....и ждать от него сообщений в loop
Publish только передаёт данные, принимать ничего не умеет.
Если вы хотите управлять релюхой - надо 1 раз в setup подписаться на нужный паблик....и ждать от него сообщений в loop
Publish только передаёт данные, принимать ничего не умеет.
- За это сообщение автора nick7zmail поблагодарил:
- alex32 (Пн апр 03, 2017 1:44 pm)
- Рейтинг: 1.16%
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 29
- Зарегистрирован: Чт мар 30, 2017 4:14 pm
- Благодарил (а): 7 раз
- Поблагодарили: 0
Re: Подключеие MQTT Windows
https://yadi.sk/d/i_BPEJlC3GXm96DimSun75 писал(а):Можно весь скетч, желательно в виде файла
-
- Сообщения: 29
- Зарегистрирован: Чт мар 30, 2017 4:14 pm
- Благодарил (а): 7 раз
- Поблагодарили: 0
Re: Подключеие MQTT Windows
релюхой хочу управлять. в идеале бы еще квитанцию о включении и выключении скинуть обратно умному дому.nick7zmail писал(а):Вы что хотите сделать...немного не понимаю....
Если вы хотите управлять релюхой - надо 1 раз в setup подписаться на нужный паблик....и ждать от него сообщений в loop
Publish только передаёт данные, принимать ничего не умеет.
-
- Сообщения: 318
- Зарегистрирован: Вс янв 01, 2017 8:32 pm
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 44 раза
Re: Подключеие MQTT Windows
Ну, тут как-то плохо все.
Во первых, вы постоянно дисконектитесь от сервера. Ясно дело, что прошивка либо в дисконекте, либо висит 3 секунды на паузе.
Во вторых, а где client.loop() как библиотека получит входной топик?
Во первых, вы постоянно дисконектитесь от сервера. Ясно дело, что прошивка либо в дисконекте, либо висит 3 секунды на паузе.
Во вторых, а где client.loop() как библиотека получит входной топик?
- Рейтинг: 1.16%
-
- Сообщения: 29
- Зарегистрирован: Чт мар 30, 2017 4:14 pm
- Благодарил (а): 7 раз
- Поблагодарили: 0
Re: Подключеие MQTT Windows
DimSun75 писал(а):Ну, тут как-то плохо все.
Во первых, вы постоянно дисконектитесь от сервера. Ясно дело, что прошивка либо в дисконекте, либо висит 3 секунды на паузе.
Во вторых, а где client.loop() как библиотека получит входной топик?
// client.disconnect(); // Отключиться
if (client.connected()){
client.loop();
}
}
}
в конце заменил так. но не могу проверить реле, т.к. балалайка на работе. по логам можно понять работает оно или нет?
1490980117: Sending PUBLISH to Mega2560 (d0, q0, r1, m0, 'home/data/status/rele', ... (1 bytes))
1490980119: New connection from 127.0.0.1 on port 1883.
1490980119: New client connected from 127.0.0.1 as MajorDoMo MQTT Client (c1, k10).
1490980119: Sending CONNACK to MajorDoMo MQTT Client (0, 0)
1490980119: Received PUBLISH from MajorDoMo MQTT Client (d0, q0, r1, m0, 'home/data/status/rele', ... (1 bytes))
1490980119: Sending PUBLISH to Mega2560 (d0, q0, r0, m0, 'home/data/status/rele', ... (1 bytes))
1490980119: Sending PUBLISH to MajorDoMo MQTT Cycle (d0, q0, r0, m0, 'home/data/status/rele', ... (1 bytes))
1490980119: Received DISCONNECT from MajorDoMo MQTT Client
1490980119: Client MajorDoMo MQTT Client disconnected.
1490980120: Received PUBLISH from Mega2560 (d0, q0, r0, m0, 'home/data/status/rele', ... (1 bytes))
1490980120: Sending PUBLISH to Mega2560 (d0, q0, r0, m0, 'home/data/status/rele', ... (1 bytes))
1490980120: Sending PUBLISH to MajorDoMo MQTT Cycle (d0, q0, r0, m0, 'home/data/status/rele', ... (1 bytes))
1490980121: Received PUBLISH from Mega2560 (d0, q0, r0, m0, 'home/data/status/sensor/temp', ... (3 bytes))
1490980121: Sending PUBLISH to MajorDoMo MQTT Cycle (d0, q0, r0, m0, 'home/data/status/sensor/temp', ... (3 bytes))
1490980121: Received PUBLISH from Mega2560 (d0, q0, r0, m0, 'home/data/status/sensor/hum', ... (3 bytes))
1490980121: Sending PUBLISH to MajorDoMo MQTT Cycle (d0, q0, r0, m0, 'home/data/status/sensor/hum', ... (3 bytes))
1490980121: Received SUBSCRIBE from Mega2560
1490980121: home/data/status/rele (QoS 0)
1490980121: Mega2560 0 home/data/status/rele
1490980121: Sending SUBACK to Mega2560
1490980121: Sending PUBLISH to Mega2560 (d0, q0, r1, m0, 'home/data/status/rele', ... (1 bytes))
1490980124: mosquitto version 1.4.11 terminating
C:\Program Files (x86)\mosquitto>
-
- Сообщения: 29
- Зарегистрирован: Чт мар 30, 2017 4:14 pm
- Благодарил (а): 7 раз
- Поблагодарили: 0
Re: Подключеие MQTT Windows
по логам постоянно долбит публикация для мега. она ее не забирает получается?
1490980751: home/data/status/rele (QoS 0)
1490980751: Mega2560 0 home/data/status/rele
1490980751: Sending SUBACK to Mega2560
1490980751: Sending PUBLISH to Mega2560 (d0, q0, r1, m0, 'home/data/status/rele', ... (1 bytes))
1490980754: Client MajorDoMo MQTT Cycle has exceeded timeout, disconnecting.
1490980754: Socket error on client MajorDoMo MQTT Cycle, disconnecting.
1490980754: New connection from 127.0.0.1 on port 1883.
1490980754: Client MajorDoMo MQTT Cycle disconnected.
1490980754: New client connected from 127.0.0.1 as MajorDoMo MQTT Cycle (c0, k10).
1490980754: Sending CONNACK to MajorDoMo MQTT Cycle (0, 0)
1490980754: Received SUBSCRIBE from MajorDoMo MQTT Cycle
1490980754: # (QoS 0)
1490980754: MajorDoMo MQTT Cycle 0 #
1490980754: Sending SUBACK to MajorDoMo MQTT Cycle
1490980754: Sending PUBLISH to MajorDoMo MQTT Cycle (d0, q0, r1, m0, 'home/data/status/rele', ... (1 bytes))
1490980754: Received PUBLISH from Mega2560 (d0, q0, r0, m0, 'home/data/status/rele', ... (1 bytes))
1490980754: Sending PUBLISH to Mega2560 (d0, q0, r0, m0, 'home/data/status/rele', ... (1 bytes))
1490980754: Sending PUBLISH to MajorDoMo MQTT Cycle (d0, q0, r0, m0, 'home/data/status/rele', ... (1 bytes))
1490980755: Received PUBLISH from Mega2560 (d0, q0, r0, m0, 'home/data/status/sensor/temp', ... (3 bytes))
1490980755: Sending PUBLISH to MajorDoMo MQTT Cycle (d0, q0, r0, m0, 'home/data/status/sensor/temp', ... (3 bytes))
1490980755: Received PUBLISH from Mega2560 (d0, q0, r0, m0, 'home/data/status/sensor/hum', ... (3 bytes))
1490980755: Sending PUBLISH to MajorDoMo MQTT Cycle (d0, q0, r0, m0, 'home/data/status/sensor/hum', ... (3 bytes))
1490980755: Received SUBSCRIBE from Mega2560
1490980755: home/data/status/rele (QoS 0)
1490980755: Mega2560 0 home/data/status/rele
1490980755: Sending SUBACK to Mega2560
1490980755: Sending PUBLISH to Mega2560 (d0, q0, r1, m0, 'home/data/status/rele', ... (1 bytes))
1490980759: Received PUBLISH from Mega2560 (d0, q0, r0, m0, 'home/data/status/sensor/temp', ... (3 bytes))
1490980759: Sending PUBLISH to MajorDoMo MQTT Cycle (d0, q0, r0, m0, 'home/data/status/sensor/temp', ... (3 bytes))
1490980759: Received PUBLISH from Mega2560 (d0, q0, r0, m0, 'home/data/status/sensor/hum', ... (3 bytes))
1490980759: Sending PUBLISH to MajorDoMo MQTT Cycle (d0, q0, r0, m0, 'home/data/status/sensor/hum', ... (3 bytes))
1490980759: Received SUBSCRIBE from Mega2560
1490980759: home/data/status/rele (QoS 0)
1490980759: Mega2560 0 home/data/status/rele
1490980759: Sending SUBACK to Mega2560
1490980759: Sending PUBLISH to Mega2560 (d0, q0, r1, m0, 'home/data/status/rele', ... (1 bytes))
1490980762: Received PUBLISH from Mega2560 (d0, q0, r0, m0, 'home/data/status/rele', ... (1 bytes))
1490980762: Sending PUBLISH to Mega2560 (d0, q0, r0, m0, 'home/data/status/rele', ... (1 bytes))
1490980762: Sending PUBLISH to MajorDoMo MQTT Cycle (d0, q0, r0, m0, 'home/data/status/rele', ... (1 bytes))
1490980763: Received PUBLISH from Mega2560 (d0, q0, r0, m0, 'home/data/status/sensor/temp', ... (3 bytes))
1490980763: Sending PUBLISH to MajorDoMo MQTT Cycle (d0, q0, r0, m0, 'home/data/status/sensor/temp', ... (3 bytes))
1490980763: Received PUBLISH from Mega2560 (d0, q0, r0, m0, 'home/data/status/sensor/hum', ... (3 bytes))
1490980763: Sending PUBLISH to MajorDoMo MQTT Cycle (d0, q0, r0, m0, 'home/data/status/sensor/hum', ... (3 bytes))
1490980763: Received SUBSCRIBE from Mega2560
1490980763: home/data/status/rele (QoS 0)
1490980763: Mega2560 0 home/data/status/rele
1490980763: Sending SUBACK to Mega2560
1490980763: Sending PUBLISH to Mega2560 (d0, q0, r1, m0, 'home/data/status/rele', ... (1 bytes))
1490980751: home/data/status/rele (QoS 0)
1490980751: Mega2560 0 home/data/status/rele
1490980751: Sending SUBACK to Mega2560
1490980751: Sending PUBLISH to Mega2560 (d0, q0, r1, m0, 'home/data/status/rele', ... (1 bytes))
1490980754: Client MajorDoMo MQTT Cycle has exceeded timeout, disconnecting.
1490980754: Socket error on client MajorDoMo MQTT Cycle, disconnecting.
1490980754: New connection from 127.0.0.1 on port 1883.
1490980754: Client MajorDoMo MQTT Cycle disconnected.
1490980754: New client connected from 127.0.0.1 as MajorDoMo MQTT Cycle (c0, k10).
1490980754: Sending CONNACK to MajorDoMo MQTT Cycle (0, 0)
1490980754: Received SUBSCRIBE from MajorDoMo MQTT Cycle
1490980754: # (QoS 0)
1490980754: MajorDoMo MQTT Cycle 0 #
1490980754: Sending SUBACK to MajorDoMo MQTT Cycle
1490980754: Sending PUBLISH to MajorDoMo MQTT Cycle (d0, q0, r1, m0, 'home/data/status/rele', ... (1 bytes))
1490980754: Received PUBLISH from Mega2560 (d0, q0, r0, m0, 'home/data/status/rele', ... (1 bytes))
1490980754: Sending PUBLISH to Mega2560 (d0, q0, r0, m0, 'home/data/status/rele', ... (1 bytes))
1490980754: Sending PUBLISH to MajorDoMo MQTT Cycle (d0, q0, r0, m0, 'home/data/status/rele', ... (1 bytes))
1490980755: Received PUBLISH from Mega2560 (d0, q0, r0, m0, 'home/data/status/sensor/temp', ... (3 bytes))
1490980755: Sending PUBLISH to MajorDoMo MQTT Cycle (d0, q0, r0, m0, 'home/data/status/sensor/temp', ... (3 bytes))
1490980755: Received PUBLISH from Mega2560 (d0, q0, r0, m0, 'home/data/status/sensor/hum', ... (3 bytes))
1490980755: Sending PUBLISH to MajorDoMo MQTT Cycle (d0, q0, r0, m0, 'home/data/status/sensor/hum', ... (3 bytes))
1490980755: Received SUBSCRIBE from Mega2560
1490980755: home/data/status/rele (QoS 0)
1490980755: Mega2560 0 home/data/status/rele
1490980755: Sending SUBACK to Mega2560
1490980755: Sending PUBLISH to Mega2560 (d0, q0, r1, m0, 'home/data/status/rele', ... (1 bytes))
1490980759: Received PUBLISH from Mega2560 (d0, q0, r0, m0, 'home/data/status/sensor/temp', ... (3 bytes))
1490980759: Sending PUBLISH to MajorDoMo MQTT Cycle (d0, q0, r0, m0, 'home/data/status/sensor/temp', ... (3 bytes))
1490980759: Received PUBLISH from Mega2560 (d0, q0, r0, m0, 'home/data/status/sensor/hum', ... (3 bytes))
1490980759: Sending PUBLISH to MajorDoMo MQTT Cycle (d0, q0, r0, m0, 'home/data/status/sensor/hum', ... (3 bytes))
1490980759: Received SUBSCRIBE from Mega2560
1490980759: home/data/status/rele (QoS 0)
1490980759: Mega2560 0 home/data/status/rele
1490980759: Sending SUBACK to Mega2560
1490980759: Sending PUBLISH to Mega2560 (d0, q0, r1, m0, 'home/data/status/rele', ... (1 bytes))
1490980762: Received PUBLISH from Mega2560 (d0, q0, r0, m0, 'home/data/status/rele', ... (1 bytes))
1490980762: Sending PUBLISH to Mega2560 (d0, q0, r0, m0, 'home/data/status/rele', ... (1 bytes))
1490980762: Sending PUBLISH to MajorDoMo MQTT Cycle (d0, q0, r0, m0, 'home/data/status/rele', ... (1 bytes))
1490980763: Received PUBLISH from Mega2560 (d0, q0, r0, m0, 'home/data/status/sensor/temp', ... (3 bytes))
1490980763: Sending PUBLISH to MajorDoMo MQTT Cycle (d0, q0, r0, m0, 'home/data/status/sensor/temp', ... (3 bytes))
1490980763: Received PUBLISH from Mega2560 (d0, q0, r0, m0, 'home/data/status/sensor/hum', ... (3 bytes))
1490980763: Sending PUBLISH to MajorDoMo MQTT Cycle (d0, q0, r0, m0, 'home/data/status/sensor/hum', ... (3 bytes))
1490980763: Received SUBSCRIBE from Mega2560
1490980763: home/data/status/rele (QoS 0)
1490980763: Mega2560 0 home/data/status/rele
1490980763: Sending SUBACK to Mega2560
1490980763: Sending PUBLISH to Mega2560 (d0, q0, r1, m0, 'home/data/status/rele', ... (1 bytes))
-
- Сообщения: 318
- Зарегистрирован: Вс янв 01, 2017 8:32 pm
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 44 раза
Re: Подключеие MQTT Windows
Нет, это ерунда. Вот кусок моего кода для esp. Для меги в принципе тоже самое должно бытьalex32 писал(а): // client.disconnect(); // Отключиться
if (client.connected()){
client.loop();
}
}
}
В loop:
Код: Выделить всё
if (!client.connected()) {
reconnect();
}
client.loop();
Код: Выделить всё
void reconnect() {
// Loop until we're reconnected
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
// Attempt to connect
if (client.connect("ESP8266Client" + ESP.getChipId())) {
Serial.println("connected");
sprintf(releTopic, "DSDevice/%d/RELE1/Status", ESP.getChipId());
client.subscribe(releTopic);
// Публикуем топик с ID
sprintf(msg, "%d", ESP.getChipId());
client.publish("DSDevice/RELE/PowerUp", msg);
// Публикуем топик с IP
sprintf(msg, "%d.%d.%d.%d", WiFi.localIP()[0], WiFi.localIP()[1], WiFi.localIP()[2], WiFi.localIP()[3]);
sprintf(IPTopic, "DSDevice/%d/IP", ESP.getChipId());
client.publish(IPTopic, msg);
// Запускаем таймер с периодичной пкбликацией статуса
alive_timer.setTimeout(ALIVE_TIMEOUT);
alive_timer.restart();
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
// Wait 5 seconds before retrying
delay(5000);
}
}
}
Код: Выделить всё
if (alive_timer.onExpired())
{
sprintf(msg, "%d", ReleStatus);
client.publish(releTopic, msg);
alive_timer.restart();
}
- Рейтинг: 1.16%
-
- Сообщения: 29
- Зарегистрирован: Чт мар 30, 2017 4:14 pm
- Благодарил (а): 7 раз
- Поблагодарили: 0
Re: Подключеие MQTT Windows
чето как то тяжко все это (((( релюха своей жизнью живет. хочет включается. хочет выключается (((( как ее обуздать?nick7zmail писал(а):Вы что хотите сделать...немного не понимаю....
Если вы хотите управлять релюхой - надо 1 раз в setup подписаться на нужный паблик....и ждать от него сообщений в loop
Publish только передаёт данные, принимать ничего не умеет.
сделал один в один как тут https://www.youtube.com/watch?v=CjG0JXCGye0 и тишина. к брокеру мега не подключается вообще.
выкинул из своего кода все лишнее - обращения к брокеру идут, но ниче не работает.
ответка от брокера к мажордомо прилетает разная
home/data/status/rele2_2 значение 1
home/data/status/rele2_2 значение hello world
home/data/status/rele2_2 значение 0
странно конечно. когда реле выключено, то в мажордомо прилетает 1.
что мне в коде нужно поправить?
или если есть дайте рабочий пример управления релюхой
#include <SPI.h> // Ethernet shield
#include <Ethernet.h> // Ethernet shield
#include <PubSubClient.h>
const int rele2Pin = 5;
byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x00 };
IPAddress ip(10, 3, 1, 194); //IP Клиента (Arduino)
IPAddress server(10, 3, 1, 155); //IP Брокера
EthernetClient ethClient;
PubSubClient client(ethClient);
void callback(char* topic, byte* payload, unsigned int length) { // Callback function header
if(payload[0] == '1'){
digitalWrite(rele2Pin, HIGH); //включение реле если прилетает подписка с 1
client.publish("home/data/status/rele2_2", "1"); } //публикация результата
if (payload[0] == '0'){
digitalWrite(rele2Pin, LOW); //выключение реле если прилетает подписка с 0
client.publish("home/data/status/rele2_2", "0"); //публикация результата
}
}
void setup() {
pinMode( rele2Pin, OUTPUT );
digitalWrite(rele2Pin, LOW);
client.setServer(server, 1883);
client.setCallback(callback);
Ethernet.begin(mac, ip);
// Allow the hardware to sort itself out
//delay(1500);
}
void loop() {
if (client.connect("Mega2560")){
client.publish("home/data/status/rele2_2", "hello world");
client.subscribe("home/data/status/rele2"); // подписка
delay(3000); // Отправка данных в Брокер раз в 5 секунд
if (client.connected()){
client.loop();
}
}
}