NEWS
Драйвер Mqtt + Arduino
-
залил на ардуино но данные никакие не поступают дело в том что я пользуюсь Mosquitto а не IBroker может быть из за этого. Просто до этого я пользовался только одним DHT вот этим скетчем````
*
//Скетч для вывода в Монитор порта теспературы в Цельсиях и Влажности
// с датчика DHT22 и отправки их по MQTT в брокер и MajorDoMo.
*/#include <spi.h> // Библиотека SPI шины
#include <ethernet.h> // Ethernet библиотека
#include <pubsubclient.h> // Библиотека MQTT
#include <dht.h> // Библиотека для датчиков DHT11/22#define DHTPIN 2 // Номер пина, к которому подсоединен датчик
#define DHTTYPE DHT22 // Задаём тип DHT датчика
DHT dht(DHTPIN, DHTTYPE);// Задаём mac и ip адреса в Локальной сети
byte mac[] = { 0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED };
IPAddress ip{192, 168, 1, 74}; //ip Адрес Ethernet Shild'a Arduino
IPAddress server{192, 168, 1, 3}; //ip Адрес для MQTT Брокера// Шапка Функции Callback (обратный вызов)
void callback(char* topic, byte* payload, unsigned int length);EthernetClient ethClient; //Инициализируем Ethernet клиент
PubSubClient client(server, 1883, callback, ethClient); //Инициализируем MQTT клиент// Функция Callback
void callback(char* topic, byte* payload, unsigned int length)
{
// Выделяем необходимое кол-во памяти для копии payload
byte* p = (byte*)malloc(length);
// Копирование payload в новый буфер
memcpy(p, payload, length);
client.publish("home/data/status/sensor", p, length);
// Освобождаем память
free(p);
}void setup()
{
// 1 бод равно 0.8 бит/сек
// 1 бит/сек равно 1.25 бод
Serial.begin(9600); // Задаём скорость порта в БОД'ах.
Serial.println("DHT22 test!"); // Тестовое сообщ. при откр. Монитора портаdht.begin();
Ethernet.begin(mac, ip); // Инициализируем mac, ip
}
void loop() {
int h = dht.readHumidity(); // Переменная типа int для Влажности
int t = dht.readTemperature(); // Переменная типа int для Температуры// Преобразуем переменные для отправки в MQTT в Брокер
static char char_temp[7]; // Переменная для перевода из int в char
dtostrf(t, 3, 0, char_temp); // Перевод из int в charstatic char char_hum[7];
dtostrf(h, 3, 0, char_hum);if (client.connect("DHTClient")) //Если DHTClient подкл., то выполняется код...
{
if (isnan(t) || isnan(h)) // Проверка удачно ли прошло считывание с DHT22
{
Serial.println("Failed to read from DHT22"); // Не удалось прочитать DHT22
} else {
// Отправка данных в Монитор порта при удачной проверке
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" *C");//Отправка данных по MQTT в Брокер client.publish("home/data/status/sensor/temp", char_temp); //Температура client.publish("home/data/status/sensor/hum", char_hum); //Влажность delay(5000); // Отправка данных в Брокер раз в 5 секунд }} else {
client.disconnect(); // иначе отключиться
}
}</dht.h></pubsubclient.h></ethernet.h></spi.h>я взял с этого скетча всё что касается MQTT и перекинул в ваш скетч и всё заработало пока тестирую -
почему то в myhome/Kitchen/Temp_radiator пишет значение -127 тоесть значение с минусом я так понимаю это значение с датчика DS1820 ONE_WIRE_BUS 8 и он подключен к пину 8 похоже что он не видит мой датчик пока не могу понять от чего и ещё кое что у меня не так home/data/status/sensor а так же myhome/Kitchen/MQ7 имеют одно значение и меняются вместе похоже что то с подключением . если есть какие то идеи подскажите
-
почему то в myhome/Kitchen/Temp_radiator пишет значение -127 тоесть значение с минусом я так понимаю это значение с датчика DS1820 ONE_WIRE_BUS 8 и он подключен к пину 8 похоже что он не видит мой датчик пока не могу понять от чего и ещё кое что у меня не так home/data/status/sensor а так же myhome/Kitchen/MQ7 имеют одно значение и меняются вместе похоже что то с подключением . если есть какие то идеи подскажите `
DS1820 - нужна подтяжка примерно 4.7кОм к 5В.MQ7 - использывать аналоговый выход.
-
почему то в myhome/Kitchen/Temp_radiator пишет значение -127 тоесть значение с минусом я так понимаю это значение с датчика DS1820 ONE_WIRE_BUS 8 и он подключен к пину 8 похоже что он не видит мой датчик пока не могу понять от чего и ещё кое что у меня не так home/data/status/sensor а так же myhome/Kitchen/MQ7 имеют одно значение и меняются вместе похоже что то с подключением . если есть какие то идеи подскажите `
ID датчика в коде указал свой?DeviceAddress addr_T1 = { 0x28, 0xFF, 0xF2, 0x5C, 0x53, 0x15, 0x02, 0x97 }; -
я взял с этого скетча всё что касается MQTT и перекинул в ваш скетч и всё заработало пока тестирую `
зачем если мой код полностью рабочий? -
я взял с этого скетча всё что касается MQTT и перекинул в ваш скетч и всё заработало пока тестирую
зачем если мой код полностью рабочий?
почему то ваш скетч у меня не пошол как я уже писал пришлось чуть переправить// Функция Callback void callback(char* topic, byte* payload, unsigned int length) { // Выделяем необходимое кол-во памяти для копии payload byte* p = (byte*)malloc(length); // Копирование payload в новый буфер memcpy(p, payload, length); client.publish("home/data/status/sensor", p, length); // Освобождаем память free(p); }и теперь всё отлично с ds1820 разобрался сам а вот mq7 он подключен к аналогу A0 но данные идут одинаковые home/data/status/sensor и myhome/Kitchen/MQ7 но в принципе оно мне не мешает и ещё не понимаю почему
myhome/Kitchen/Window в топиках есть инфа а вот myhome/Kitchen/Motion нет в публикациях и не где не видно.
А так вообще конечно спасибо за помощь и за скетч
-
ЧТо касается -127, я тут подправил Кухню instalator и все заработало….
код в архиве... IDE Arduino 1.6.13
1308_iob_arduino_mqtt_v0.2.7z -
ЧТо касается -127, я тут подправил Кухню instalator и все заработало….
код в архиве... IDE Arduino 1.6.13 `
Не важно какая версия ide, я про версию библиотек -
ДКакие библиотеки интересуют…. Dallas 1.5 и 3.7.2
-
не знаю какие ты используешь, но с моими корректировками все работает. Так что - переходим к следующему шагу… Пытаемся чем то управлять... :D
-
не знаю какие ты используешь, но с моими корректировками все работает. Так что - переходим к следующему шагу… Пытаемся чем то управлять... :D `
Не смотрел я еще твои правки, но главное чтобы работало. Вот код для управления освещением например https://github.com/instalator/Lighting_MQTT -
Пардон, это я уже перелопатил :D . Информация принята к размышлению. скорее я не совсем верно сформулировал вопрос. Исправляюсь - имея опыт работы с Мажордомом, нажил некоторые проблемы с управлением модулями реле, а именно - самопроизвольное включение реле или вообще не включение, хотя контроль ног - показывает что управление прошло. Теперь сам вопрос - нужно ли напрямую управлять реле или надежнее ставить оптопары, если оптопары - то как разумнее их использовать. Вот :oops:
-
Пардон, это я уже перелопатил :D . Информация принята к размышлению. скорее я не совсем верно сформулировал вопрос. Исправляюсь - имея опыт работы с Мажордомом, нажил некоторые проблемы с управлением модулями реле, а именно - самопроизвольное включение реле или вообще не включение, хотя контроль ног - показывает что управление прошло. Теперь сам вопрос - нужно ли напрямую управлять реле или надежнее ставить оптопары, если оптопары - то как разумнее их использовать. Вот :oops: ` нужна схема, так я не понимаю как реле может самопроизвольно включается и не включаться
-
ЩА попробую изобразить
-
Ну как то так….... соответственно управление либо 0 либо 1
1308_________________.png -
Модули реле чистый Китай….. Ну это как у всех :)
-
Вот и сейчас, управление 0, порт в 1, а вытяжка запустилась :lol:
-
Тестером Клянусь!!!
-
Ну как то так….... соответственно управление либо 0 либо 1 `
А реле рядом с ардуиной? -
ну ….... кабель сат 5е метров 5
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden