• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Cloudmqtt.com примеры с инета не пашут

Serrous

Member
Осваиваю wemos. Хочу порулить через cloudmqtt.com.
Что сделано
1. Заведен mqtt брокер с именем home.
2. в телефоне поставлено mqtt dashboard. Оформлена подписка на тему home/temp. Добавлен виджет паблишера svetik.
3. Скетч в порт выдает
Код:
Connecting to xxxxx...
WiFi connected
IP192.168.4.105
Connecting to MQTT server
Connected to MQTT server
1
1
1
НО в дашбоард эта единичка не прилетает. И светодиодом поморгать не могу... уже и видео посмотрел ... что то похоже не сделал .. а вот что хз...
Если при подключеном дашборде сменить состояние светодиода, отключится и снова сменить то при подключении оно восстанавливается.. так что связь телефон cloudmqtt есть... проблемка со стороны wemos`a

а как он вообще должен читать я не пойму... процедура проверки паблика запукается только при подключении к брокеру... я правильно понял ?

Или подкиньте рабочий код. Можно к другому брокеру.

Счетч
Код:
#include <MQTT.h>
#include <PubSubClient.h>
#include <ESP8266WiFi.h>

const char *ssid =  "xxxxx";  // Имя вайфай точки доступа
const char *pass =  "xxxxxx"; // Пароль от точки доступа

const char *mqtt_server = "m11.cloudmqtt.com"; // Имя сервера MQTT
const int mqtt_port = 17427; // Порт для подключения к серверу MQTT
const char *mqtt_user = "xxxxxxx"; // Логи от сервер
const char *mqtt_pass = "xxxxxxx"; // Пароль от сервера

WiFiClient wclient;
PubSubClient client(wclient, mqtt_server, mqtt_port);

int tm, temp;

void setup() {
  // put your setup code here, to run once:
  pinMode (D1, OUTPUT);
  Serial.begin(115200);

}

void loop() {
  // put your main code here, to run repeatedly:


  if (WiFi.status() != WL_CONNECTED) { // подключаемся к WIFI
    Serial.print("Connecting to ");
    Serial.print(ssid);
    Serial.println("...");
    WiFi.begin(ssid, pass);

    if (WiFi.waitForConnectResult() != WL_CONNECTED)
      return;
    Serial.println("WiFi connected");
    Serial.print ("IP");
    Serial.println(WiFi.localIP());
  }

  // подключаемся к MQTT серверу
  if (WiFi.status() == WL_CONNECTED) {
    if (!client.connected()) {
      Serial.println("Connecting to MQTT server");
      if (client.connect(MQTT::Connect("arduinoClient2")
                         .set_auth(mqtt_user, mqtt_pass))) {
        Serial.println("Connected to MQTT server");
        client.set_callback(callback);
        client.subscribe("Home/svetik"); // подписывааемся по топик с данными для светодиода
      } else {
        Serial.println("Could not connect to MQTT server");
      }
    }

  }

  if (client.connected()) {
    client.loop();
    TempSend();
  }

}

// Функция отправки показаний с термодатчика
void TempSend() {
  if (tm == 0)
  {
    temp = 1;
    client.publish("Home/temp", String(temp)); // отправляем в топик для термодатчика значение температуры
    Serial.println(temp);
    tm = 300;  // пауза меду отправками значений температуры  коло 3 секунд
  }
  tm--;
  delay(10);
}

void callback(const MQTT::Publish & pub)
{
  Serial.print(pub.topic());   // выводим в сериал порт название топика
  Serial.print(" => ");
  Serial.print(pub.payload_string()); // выводим в сериал порт значение полученных данных

  String payload = pub.payload_string();

  if (String(pub.topic()) == "Home/svetik") // проверяем из нужного ли нам топика пришли данные
  {
    int stled = payload.toInt(); // преобразуем полученные данные в тип integer
    digitalWrite(D1, stled); //  включаем или выключаем светодиод в зависимоти от полученных значений данных
  }
}
 
Последнее редактирование:
Сверху Снизу