NEWS
Arduino+Mqtt FAQ для начинающих.
- 
					
					
					
					
 Всем доброго времени суток. Мог бы кто нибудь расписать по пунктам порядок подключения Ардуины к серверу ioBroker. Имеется Arduino Uno, Mega. Ethernet шилд W5100. Хотелось бы иметь представление в какой последовательности производить действия. 1. Пример скетча на ардуину. 2. Какие параметры в скетче отвечают за подключение к серверу (авторизация, ID и т.п). 3. Настройки mqqt. Как правильно настроить драйвер? 4. Нужно ли прописывать какие то объекты, с какими они должны быть параметрами (желательно расписать процесс их создания). 5. Как правильно мониторить получение данных на сервер. P.S: Был бы очень не плохой мануал для начинающих, много всяких ссылок с разными вариантами. Хотелось бы все это как то обобщить в одном месте. Заранее благодарен тем кто откликнется. ` 
 Есть отдельная тема http://forum.iobroker.net/viewtopic.php?f=16&t=7141- http://forum.iobroker.net/download/file.php?id=2648 2- я не использую авторизацию, у меня все устройства локальные. 3-  
 4- непонял что именно прописывать? у меня ардуина сама отдает значение, и если его нет еще драйвер его создает.5- что значит мониторить? как распоряжатся полученными данными от ардуины? тут каждый сам решает взависимости от поставленных задач. 
- 
					
					
					
					
 Да спасибо, я читал ту тему, что то не пошло, сейчас попробую еще раз. имеет значение на какой дуинке стоит шилд ? DUO или Mega? 
- 
					
					
					
					
 Да спасибо, я читал ту тему, что то не пошло, сейчас попробую еще раз. имеет значение на какой дуинке стоит шилд ? DUO или Mega? ` 
 Нет, разницы никакой нету, единственно нужно помнить что на Меге 50,51,52 и вроде 53 пины используются шилдом.
- 
					
					
					
					
 Сейчас имею такую конструкцию !  
 Принимает данные от BMP 180 и ds18b20 по радиоканалу.Буду пытаться связать Ваш скетч со своим и получить данные в mqtt.  
- 
					
					
					
					
 Да спасибо, я читал ту тему, что то не пошло, сейчас попробую еще раз. имеет значение на какой дуинке стоит шилд ? DUO или Mega? Нет, разницы никакой нету, единственно нужно помнить что на Меге 50,51,52 и вроде 53 пины используются шилдом.А есть скетч поменьше ? с одним датчиком например… Что то у меня библиотеки между собой конфликтуют Вот скетч ! #include <virtualwire.h>#include <easytransfervirtualwire.h>#include <wire.h>#include <liquidcrystal_i2c.h>#include <spi.h>// Ethernet shield 
 ! #include <ethernet.h>// Ethernet shield
 ! #include <pubsubclient.h>// MQTT
 ! #include <servo.h>#include <onewire.h>#include <dallastemperature.h>Servo servo;
 ! byte mac[] = { 0xC1, 0x7C, 0x38, 0x41, 0x89, 0x12 };
 ! byte server[] = { 192, 168, 0, 102 }; //IP Брокера
 ! byte ip[] = { 192, 168, 0, 112 }; //IP Клиента (Arduino)
 ! EthernetClient ethClient;
 ! PubSubClient client(server, 1883, callback, ethClient);
 ! #define id_connect "myhome-kitchen"
 ! #define Prefix_subscribe "myhome/Kitchen/"
 ! LiquidCrystal_I2C lcd(0x27,16,2);
 ! //create object
 ! EasyTransferVirtualWire ET;
 ! ///////////////Объявляем порты ввода-вывода
 ! #define ServoPin 3 //Порт к которому подключен сервопривод
 ! const int start_DI_pin []= {2, 4, 5}; // Порты Ввода
 ! int n_DI_pin = sizeof(start_DI_pin) / sizeof(start_DI_pin[0])-1; //Вычисляем длинну массива
 ! const int start_DO_pin []= {6, 7}; //Порты Вывода
 ! int n_DO_pin = sizeof(start_DO_pin) / sizeof(start_DO_pin[0])-1; //Вычисляем длинну массива
 ! int DI[] = {0, 0, 0};
 ! int old_DI[] = {0, 0};
 ! ///////////////////////////Переменные для работы с освещением//////////////////////////////////////
 ! int ServoAngle = 100; //Угол сервопривода при включении
 ! int flag = 0;
 ! int flag2 = 0;
 ! int pause = 0;
 ! //–----------------------------------------- Sensors -------------------------------------------//
 ! const int MQ7_Pin = A0; // Куда подключили MQ7
 ! //int MQ7Value = 0;
 ! int MQ7Value = analogRead(MQ7_Pin);
 ! const int foto_Pin = A1; // устанавливаем входную ногу для Фоторезистора
 ! //unsigned int fotoValue = 0; // цифровое значение фоторезистора
 ! unsigned int fotoValue = analogRead(foto_Pin);
 ! #define ONE_WIRE_BUS 10
 ! OneWire oneWire(ONE_WIRE_BUS);
 ! DallasTemperature DS_sensors(&oneWire);
 ! // 28 FF F2 5C 53 15 2 97
 ! DeviceAddress addr_T1 = { 0x28, 0xFF, 0xF2, 0x5C, 0x53, 0x15, 0x02, 0x97 };
 ! float T1 = 0;
 ! //dht DHT;
 ! //#define DHT22_PIN 9
 ! //float Hout = 0;
 ! //float Tout = 0;
 ! ////////////////////////////////////////////////////////////////////////////
 ! void callback(char* topic, byte* payload, unsigned int length) {
 ! payload[length] = '\0';
 ! // Serial.print(topic);
 ! // Serial.print("=");
 ! String strTopic = String(topic);
 ! String strPayload = String((char*)payload);
 ! // Serial.println(strPayload);
 ! callback_iobroker(strTopic, strPayload);
 ! }
 ! ////////////////////////////////////////////////////////////////////////////
 ! /////////////////////////////////////////////////////////////
 ! struct SEND_DATA_STRUCTURE
 ! {
 ! //put your variable definitions here for the data you want to send
 ! //THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO
 ! //Struct can'e be bigger then 26 bytes for VirtualWire version
 ! byte ID;
 ! long TemperatureBMP = 0;
 ! long TemperatureDS = 0;
 ! long Pressure = 0;
 ! };
 ! //give a name to the group of data
 ! SEND_DATA_STRUCTURE mydata;
 ! byte ID;
 ! long TemperatureBMP = 0;
 ! long TemperatureDS = 0;
 ! long Pressure = 0;
 ! //сервер
 ! //char buf[80];
 ! //Функция отправки HTTP-запроса на сервер
 ! //void sendHTTPRequest() {
 ! //Serial.println(buf);
 ! //}
 ! void setup(){
 ! //Serial.begin(57600);
 ! // Serial.println("start");
 ! //Объявляем порты Digital inputs/outputs
 ! for(int i=0 ;i<=n_DI_pin; i++) { pinMode (start_DI_pin __, INPUT); }
 ! digitalWrite(5, HIGH); //Окно
 ! digitalWrite(4, HIGH); //Объемник
 ! for(int i=0 ;i<=n_DO_pin; i++) { pinMode (start_DO_pin __, OUTPUT); }
 ! Ethernet.begin(mac, ip);
 ! if (client.connect(id_connect)) {
 ! getSensors();
 ! control();
 ! // client.publish("myhome/Kitchen/Change_Counter", "0");
 ! // client.publish("myhome/Kitchen/Temp_room", "0");
 ! // client.publish("myhome/Kitchen/Humidity_room", "0");
 ! // client.publish("myhome/Kitchen/Temp_radiator", "0");
 ! // client.publish("myhome/Kitchen/Temp_in", "0");
 ! // client.publish("myhome/Kitchen/Lux", "0");
 ! // client.publish("myhome/Kitchen/Servo", "0");
 ! // client.publish("myhome/Kitchen/MQ7", "0");
 ! client.subscribe("myhome/Kitchen/#");
 ! }
 ! /////////////////////////////////////////////////////////////////////////
 ! //start the library, pass in the data details
 ! ET.begin(details(mydata));
 ! Serial.begin(9600);
 ! // Initialise the IO and ISR
 ! vw_set_ptt_inverted(true); // Required for DR3100
 ! vw_setup(2000); // Bits per sec Скорость порта
 ! vw_set_rx_pin(8); //порт к которому подключен приемник 433 мГц
 ! vw_rx_start(); // Start the receiver PLL running
 ! lcd.init(); // Инициализируем экран
 ! lcd.backlight(); //Включаем подсветку
 ! }
 ! void loop(){
 ! //check and see if a data packet has come in.
 ! if(ET.receiveData()){
 ! //this is how you access the variables. [name of the group].[variable name]
 ! //since we have data, we will blink it out.
 ! if (mydata.ID == 1)
 ! {
 ! int TempBMP= (mydata.TemperatureBMP);
 ! TempBMP = ((TempBMP)/100);
 ! float TempDS= (mydata.TemperatureDS);
 ! TempDS = ((TempDS)/100);
 ! float Pressure2= (mydata.Pressure);
 ! Pressure2 = ((Pressure2)/100);
 ! // Serial.print(TempBMP); //Вывод информации в COM порт
 ! // Serial.println(", TempBMP:");
 ! // Температуру в градусах Цельсия
 ! Serial.print(TempDS);
 ! Serial.print(" C°,");
 ! // Температуру в градусах Цельсия
 ! Serial.print(Pressure2);
 ! Serial.print(" mm/");
 ! //Выводим давление в мм.рт ст
 ! Serial.println();
 ! Serial.println();
 ! delay(1000);
 ! //Вывод информации на LCD Экран
 ! lcd.clear();//очищаем экран от старых данных
 ! lcd.setCursor(0,0);//Устанавливаем курсор в начало первой строки
 ! lcd.print("T1:");//Выводим первую температуру
 ! lcd.print(TempDS);
 ! lcd.setCursor(8,0);// устанавливаем курсор на 8 позицию в первой строке
 ! lcd.print(" T2:");//Выводим вторую температуру
 ! lcd.print(TempBMP);
 ! //аналогично выводим вторую строку
 ! lcd.setCursor(0,1);//Устанавливаем курсор в начало второй строки
 ! lcd.print("Davlenie:");//Выводим давление
 ! lcd.print(Pressure2);
 ! }
 ! // sprintf(buf, "GET /objects/?object=tempDet&op=m&m=tempChanged&t=%0d.%d", (int)TempBMP, abs(temp1));
 ! // sendHTTPRequest();
 ! // delay(500);
 ! // sprintf(buf, "GET /objects/?object=tempDS18B20_1&op=m&m=tempChanged&t=%0d.%d", (int)TempDS, abs(temp2));
 ! // sendHTTPRequest();
 ! }
 ! client.loop();
 ! control();
 ! getSensors();
 ! if (!client.connected()) {
 ! if (client.connect(id_connect)) {
 ! control();
 ! getSensors();
 ! client.subscribe("myhome/Kitchen/#");
 ! }
 ! }
 ! }____</dallastemperature.h></onewire.h></servo.h></pubsubclient.h></ethernet.h></spi.h></liquidcrystal_i2c.h></wire.h></easytransfervirtualwire.h></virtualwire.h> но тут черт ногу сломает потому что Ваш вставлял в свой и получилась ерунда.
- 
					
					
					
					
 Да спасибо, я читал ту тему, что то не пошло, сейчас попробую еще раз. имеет значение на какой дуинке стоит шилд ? DUO или Mega? Нет, разницы никакой нету, единственно нужно помнить что на Меге 50,51,52 и вроде 53 пины используются шилдом.А есть скетч поменьше ? с одним датчиком например… Что то у меня библиотеки между собой конфликтуют Вот скетч ! ``` 
 `#include <virtualwire.h>#include <easytransfervirtualwire.h>#include <wire.h>#include <liquidcrystal_i2c.h>#include <spi.h>// Ethernet shield
 #include <ethernet.h>// Ethernet shield
 #include <pubsubclient.h>// MQTT
 #include <servo.h>#include <onewire.h>#include <dallastemperature.h>Servo servo;
 ! byte mac[] = { 0xC1, 0x7C, 0x38, 0x41, 0x89, 0x12 };
 byte server[] = { 192, 168, 0, 102 }; //IP Брокера
 byte ip[] = { 192, 168, 0, 112 }; //IP Клиента (Arduino)
 ! EthernetClient ethClient;
 PubSubClient client(server, 1883, callback, ethClient);
 #define id_connect "myhome-kitchen"
 #define Prefix_subscribe "myhome/Kitchen/"
 ! LiquidCrystal_I2C lcd(0x27,16,2);
 //create object
 EasyTransferVirtualWire ET;
 ! ///////////////Объявляем порты ввода-вывода
 #define ServoPin 3 //Порт к которому подключен сервопривод
 ! const int start_DI_pin []= {2, 4, 5}; // Порты Ввода
 int n_DI_pin = sizeof(start_DI_pin) / sizeof(start_DI_pin[0])-1; //Вычисляем длинну массива
 ! const int start_DO_pin []= {6, 7}; //Порты Вывода
 int n_DO_pin = sizeof(start_DO_pin) / sizeof(start_DO_pin[0])-1; //Вычисляем длинну массива
 ! int DI[] = {0, 0, 0};
 int old_DI[] = {0, 0};
 ! ///////////////////////////Переменные для работы с освещением//////////////////////////////////////
 int ServoAngle = 100; //Угол сервопривода при включении
 int flag = 0;
 int flag2 = 0;
 int pause = 0;
 ! //------------------------------------------- Sensors -------------------------------------------//
 const int MQ7_Pin = A0; // Куда подключили MQ7
 //int MQ7Value = 0;
 int MQ7Value = analogRead(MQ7_Pin);const int foto_Pin = A1; // устанавливаем входную ногу для Фоторезистора 
 //unsigned int fotoValue = 0; // цифровое значение фоторезистора
 unsigned int fotoValue = analogRead(foto_Pin);
 #define ONE_WIRE_BUS 10
 OneWire oneWire(ONE_WIRE_BUS);
 DallasTemperature DS_sensors(&oneWire);
 // 28 FF F2 5C 53 15 2 97
 DeviceAddress addr_T1 = { 0x28, 0xFF, 0xF2, 0x5C, 0x53, 0x15, 0x02, 0x97 };! float T1 = 0; 
 ! //dht DHT;
 //#define DHT22_PIN 9
 //float Hout = 0;
 //float Tout = 0;
 ! ////////////////////////////////////////////////////////////////////////////
 void callback(char* topic, byte* payload, unsigned int length) {
 payload[length] = '\0';
 // Serial.print(topic);
 // Serial.print("=");
 String strTopic = String(topic);
 String strPayload = String((char*)payload);
 // Serial.println(strPayload);
 callback_iobroker(strTopic, strPayload);
 }
 ////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////
 struct SEND_DATA_STRUCTURE
 {
 //put your variable definitions here for the data you want to send
 //THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO
 //Struct can'e be bigger then 26 bytes for VirtualWire version
 byte ID;
 long TemperatureBMP = 0;
 long TemperatureDS = 0;
 long Pressure = 0;
 ! };
 ! //give a name to the group of data
 SEND_DATA_STRUCTURE mydata;
 byte ID;
 long TemperatureBMP = 0;
 long TemperatureDS = 0;
 long Pressure = 0;
 ! //сервер
 //char buf[80];
 ! //Функция отправки HTTP-запроса на сервер
 //void sendHTTPRequest() {
 //Serial.println(buf);
 //}
 ! void setup(){
 ! //Serial.begin(57600);
 // Serial.println("start");
 //Объявляем порты Digital inputs/outputs
 for(int i=0 ;i<=n_DI_pin; i++) { pinMode (start_DI_pin [i], INPUT); }
 digitalWrite(5, HIGH); //Окно
 digitalWrite(4, HIGH); //Объемник
 for(int i=0 ;i<=n_DO_pin; i++) { pinMode (start_DO_pin [i], OUTPUT); }
 ! Ethernet.begin(mac, ip);
 if (client.connect(id_connect)) {
 getSensors();
 control();
 // client.publish("myhome/Kitchen/Change_Counter", "0");
 // client.publish("myhome/Kitchen/Temp_room", "0");
 // client.publish("myhome/Kitchen/Humidity_room", "0");
 // client.publish("myhome/Kitchen/Temp_radiator", "0");
 // client.publish("myhome/Kitchen/Temp_in", "0");
 // client.publish("myhome/Kitchen/Lux", "0");
 // client.publish("myhome/Kitchen/Servo", "0");
 // client.publish("myhome/Kitchen/MQ7", "0");client.subscribe("myhome/Kitchen/#");} ! ///////////////////////////////////////////////////////////////////////// 
 ! //start the library, pass in the data details
 ET.begin(details(mydata));
 Serial.begin(9600);
 // Initialise the IO and ISR
 vw_set_ptt_inverted(true); // Required for DR3100
 vw_setup(2000); // Bits per sec Скорость порта
 vw_set_rx_pin(8); //порт к которому подключен приемник 433 мГц
 vw_rx_start(); // Start the receiver PLL runninglcd.init(); // Инициализируем экран 
 lcd.backlight(); //Включаем подсветку} ! void loop(){ //check and see if a data packet has come in. 
 if(ET.receiveData()){
 //this is how you access the variables. [name of the group].[variable name]
 //since we have data, we will blink it out.
 if (mydata.ID == 1)
 {
 int TempBMP= (mydata.TemperatureBMP);
 TempBMP = ((TempBMP)/100);
 float TempDS= (mydata.TemperatureDS);
 TempDS = ((TempDS)/100);
 float Pressure2= (mydata.Pressure);
 Pressure2 = ((Pressure2)/100);// Serial.print(TempBMP); //Вывод информации в COM порт 
 // Serial.println(", TempBMP:");
 // Температуру в градусах Цельсия
 Serial.print(TempDS);
 Serial.print(" C°,");
 // Температуру в градусах Цельсия
 Serial.print(Pressure2);
 Serial.print(" mm/");
 //Выводим давление в мм.рт ст
 Serial.println();
 Serial.println();
 delay(1000);//Вывод информации на LCD Экранlcd.clear();//очищаем экран от старых данных 
 lcd.setCursor(0,0);//Устанавливаем курсор в начало первой строки
 lcd.print("T1:");//Выводим первую температуру
 lcd.print(TempDS);
 lcd.setCursor(8,0);// устанавливаем курсор на 8 позицию в первой строке
 lcd.print(" T2:");//Выводим вторую температуру
 lcd.print(TempBMP);
 //аналогично выводим вторую строку
 lcd.setCursor(0,1);//Устанавливаем курсор в начало второй строки
 lcd.print("Davlenie:");//Выводим давление
 lcd.print(Pressure2);
 }! // sprintf(buf, "GET /objects/?object=tempDet&op=m&m=tempChanged&t=%0d.%d", (int)TempBMP, abs(temp1)); 
 // sendHTTPRequest();
 // delay(500);
 // sprintf(buf, "GET /objects/?object=tempDS18B20_1&op=m&m=tempChanged&t=%0d.%d", (int)TempDS, abs(temp2));
 // sendHTTPRequest();} 
 client.loop();
 control();
 getSensors();
 if (!client.connected()) {
 if (client.connect(id_connect)) {
 control();
 getSensors();
 client.subscribe("myhome/Kitchen/#");
 }
 }! }</dallastemperature.h></onewire.h></servo.h></pubsubclient.h></ethernet.h></spi.h></liquidcrystal_i2c.h></wire.h></easytransfervirtualwire.h></virtualwire.h> но тут черт ногу сломает потому что Ваш вставлял в свой и получилась ерунда. ! А что мешает из скетча убрать все лишнее? и добавить свой код?[/i][/i] ```
- 
					
					
					
					
 Когда начинаю выкидывать еще больше ошибок, то одно не находит то другое… Ну да ладно пойду рыть по форуму. Что бы выкидывать что то нужно понять что нужно а что не очень.. Спасиб.. 
- 
					
					
					
					
 Когда начинаю выкидывать еще больше ошибок, то одно не находит то другое… Ну да ладно пойду рыть по форуму. Что бы выкидывать что то нужно понять что нужно а что не очень.. Спасиб.. ` 
 Какие там могут быть ошибки? вот код оставил только mqtt! ```` 
 #include <spi.h> // Ethernet shield
 #include <ethernet.h> // Ethernet shield
 #include <pubsubclient.h> // MQTT
 ! byte mac[] = { 0xC1, 0x7C, 0x38, 0x41, 0x89, 0x12 };
 byte server[] = { 192, 168, 1, 190 }; //IP Брокера
 byte ip[] = { 192, 168, 1, 167 }; //IP Клиента (Arduino)
 ! EthernetClient ethClient;
 PubSubClient client(server, 1883, callback, ethClient);
 #define id_connect "myhome-kitchen"
 #define Prefix_subscribe "myhome/Kitchen/"
 ! ///////////////Объявляем порты ввода-вывода
 ! ////////////////////////////////////////////////////////////////////////////
 void callback(char* topic, byte* payload, unsigned int length) {
 payload[length] = '\0';
 // Serial.print(topic);
 // Serial.print("=");
 String strTopic = String(topic);
 String strPayload = String((char*)payload);
 // Serial.println(strPayload);
 callback_iobroker(strTopic, strPayload);
 }
 ////////////////////////////////////////////////////////////////////////////
 void setup() {
 ! Ethernet.begin(mac, ip);
 if (client.connect(id_connect)) {
 client.publish("myhome/Kitchen/Change_Counter", "0");
 client.subscribe("myhome/Kitchen/#");
 }
 }
 /////////////////////////////////////////////////////////////////////////
 void loop() {
 client.loop();
 if (!client.connected()) {
 if (client.connect(id_connect)) {
 client.subscribe("myhome/Kitchen/#");
 }
 }
 }
 ! /////////////////////////////////От Брокера//////////////////////////////////////////////
 void callback_iobroker(String strTopic, String strPayload){
 if (strTopic == "0"){} 
 }</pubsubclient.h></ethernet.h></spi.h>
- 
					
					
					
					
 Похоже проблема в подключении к локалке, пока что не вижу шилда в сети … Спасибо, сейчас попробую голый скетч залить. Странная реакция роутера на подключение шилда. Пока он не подключен лампочки LAN мигают каждая как хочет, при подключении шилда, начинают мигать синхронно. 
- 
					
					
					
					
 Похоже проблема в подключении к локалке, пока что не вижу шилда в сети … Спасибо, сейчас попробую голый скетч залить. ` 
 На всякий случай http://forum.iobroker.net/viewtopic.php?f=33&t=1609, мало ли)
- 
					
					
					
					
 Похоже проблема в подключении к локалке, пока что не вижу шилда в сети … Спасибо, сейчас попробую голый скетч залить. На всякий случай [http://forum.iobroker.net/viewtopic.php?f=33&t=1609](http://forum.iobroker.net/viewtopic.php?f=33&t=1609), мало ли)Это я читал, и даже проверил свой шилд, у меня там маркировка резисторной сборки вообще отсутствует :shock: PS: Да… проблема в шилде. Не коннектится. 
- 
					
					
					
					
 Нашел проблему byte server[] = { 192, 168, 0, 102 }; //IP Брокера byte ip[] = { 192, 168, 0, 112 }; //IP Клиента (Arduino)Так не работает А вот так byte server[] = {192, 168, 0, 102}; //IP Брокера IPAddress ip(192, 168, 0, 112);Заработало ! 
- 
					
					
					
					
 Когда начинаю выкидывать еще больше ошибок, то одно не находит то другое… Ну да ладно пойду рыть по форуму. Что бы выкидывать что то нужно понять что нужно а что не очень.. Спасиб.. ` 
 Какие там могут быть ошибки? вот код оставил только mqtt! ```` 
 #include <spi.h> // Ethernet shield
 #include <ethernet.h> // Ethernet shield
 #include <pubsubclient.h> // MQTT
 ! byte mac[] = { 0xC1, 0x7C, 0x38, 0x41, 0x89, 0x12 };
 byte server[] = { 192, 168, 1, 190 }; //IP Брокера
 byte ip[] = { 192, 168, 1, 167 }; //IP Клиента (Arduino)
 ! EthernetClient ethClient;
 PubSubClient client(server, 1883, callback, ethClient);
 #define id_connect "myhome-kitchen"
 #define Prefix_subscribe "myhome/Kitchen/"
 ! ///////////////Объявляем порты ввода-вывода
 ! ////////////////////////////////////////////////////////////////////////////
 void callback(char* topic, byte* payload, unsigned int length) {
 payload[length] = '\0';
 // Serial.print(topic);
 // Serial.print("=");
 String strTopic = String(topic);
 String strPayload = String((char*)payload);
 // Serial.println(strPayload);
 callback_iobroker(strTopic, strPayload);
 }
 ////////////////////////////////////////////////////////////////////////////
 void setup() {
 ! Ethernet.begin(mac, ip);
 if (client.connect(id_connect)) {
 client.publish("myhome/Kitchen/Change_Counter", "0");
 client.subscribe("myhome/Kitchen/#");
 }
 }
 /////////////////////////////////////////////////////////////////////////
 void loop() {
 client.loop();
 if (!client.connected()) {
 if (client.connect(id_connect)) {
 client.subscribe("myhome/Kitchen/#");
 }
 }
 }
 ! /////////////////////////////////От Брокера//////////////////////////////////////////////
 void callback_iobroker(String strTopic, String strPayload){
 if (strTopic == "0"){} 
 }</pubsubclient.h></ethernet.h></spi.h>
 ```` `Я так понимаю если все работает то Ваш скрипт должен был создать какие то топики в MQTT, но в логах инфу видно !  
 а вот в MQTT ничего нового!  
- 
					
					
					
					
 Когда начинаю выкидывать еще больше ошибок, то одно не находит то другое… Ну да ладно пойду рыть по форуму. Что бы выкидывать что то нужно понять что нужно а что не очень.. Спасиб.. ` 
 Какие там могут быть ошибки? вот код оставил только mqtt! ```` 
 #include <spi.h> // Ethernet shield
 #include <ethernet.h> // Ethernet shield
 #include <pubsubclient.h> // MQTT
 ! byte mac[] = { 0xC1, 0x7C, 0x38, 0x41, 0x89, 0x12 };
 byte server[] = { 192, 168, 1, 190 }; //IP Брокера
 byte ip[] = { 192, 168, 1, 167 }; //IP Клиента (Arduino)
 ! EthernetClient ethClient;
 PubSubClient client(server, 1883, callback, ethClient);
 #define id_connect "myhome-kitchen"
 #define Prefix_subscribe "myhome/Kitchen/"
 ! ///////////////Объявляем порты ввода-вывода
 ! ////////////////////////////////////////////////////////////////////////////
 void callback(char* topic, byte* payload, unsigned int length) {
 payload[length] = '\0';
 // Serial.print(topic);
 // Serial.print("=");
 String strTopic = String(topic);
 String strPayload = String((char*)payload);
 // Serial.println(strPayload);
 callback_iobroker(strTopic, strPayload);
 }
 ////////////////////////////////////////////////////////////////////////////
 void setup() {
 ! Ethernet.begin(mac, ip);
 if (client.connect(id_connect)) {
 client.publish("myhome/Kitchen/Change_Counter", "0");
 client.subscribe("myhome/Kitchen/#");
 }
 }
 /////////////////////////////////////////////////////////////////////////
 void loop() {
 client.loop();
 if (!client.connected()) {
 if (client.connect(id_connect)) {
 client.subscribe("myhome/Kitchen/#");
 }
 }
 }
 ! /////////////////////////////////От Брокера//////////////////////////////////////////////
 void callback_iobroker(String strTopic, String strPayload){
 if (strTopic == "0"){} 
 }</pubsubclient.h></ethernet.h></spi.h>
 ```` `Я так понимаю если все работает то Ваш скрипт должен был создать какие то топики в MQTT, но в логах инфу видно ! filename="88.JPG" index="1">~~ 
 а вот в MQTT ничего нового! filename="99.JPG" index="0">~~ ` 
 не там смотришь, смотри не в system а просто в mqtt.0
- 
					
					
					
					
 Какие там могут быть ошибки? вот код оставил только mqtt ! ```` 
 #include <spi.h> // Ethernet shield
 #include <ethernet.h> // Ethernet shield
 #include <pubsubclient.h> // MQTT
 ! byte mac[] = { 0xC1, 0x7C, 0x38, 0x41, 0x89, 0x12 };
 byte server[] = { 192, 168, 1, 190 }; //IP Брокера
 byte ip[] = { 192, 168, 1, 167 }; //IP Клиента (Arduino)
 ! EthernetClient ethClient;
 PubSubClient client(server, 1883, callback, ethClient);
 #define id_connect "myhome-kitchen"
 #define Prefix_subscribe "myhome/Kitchen/"
 ! ///////////////Объявляем порты ввода-вывода
 ! ////////////////////////////////////////////////////////////////////////////
 void callback(char* topic, byte* payload, unsigned int length) {
 payload[length] = '\0';
 // Serial.print(topic);
 // Serial.print("=");
 String strTopic = String(topic);
 String strPayload = String((char*)payload);
 // Serial.println(strPayload);
 callback_iobroker(strTopic, strPayload);
 }
 ////////////////////////////////////////////////////////////////////////////
 void setup() {
 ! Ethernet.begin(mac, ip);
 if (client.connect(id_connect)) {
 client.publish("myhome/Kitchen/Change_Counter", "0");
 client.subscribe("myhome/Kitchen/#");
 }
 }
 /////////////////////////////////////////////////////////////////////////
 void loop() {
 client.loop();
 if (!client.connected()) {
 if (client.connect(id_connect)) {
 client.subscribe("myhome/Kitchen/#");
 }
 }
 }
 ! /////////////////////////////////От Брокера//////////////////////////////////////////////
 void callback_iobroker(String strTopic, String strPayload){
 if (strTopic == "0"){} 
 }</pubsubclient.h></ethernet.h></spi.h>
 ```` `Я так понимаю если все работает то Ваш скрипт должен был создать какие то топики в MQTT, но в логах инфу видно ! filename="88.JPG" index="2">~~ 
 а вот в MQTT ничего нового! filename="99.JPG" index="1">~~ не там смотришь, смотри не в system а просто в mqtt.0а нету у меня просто mqtt.0 !  
- 
					
					
					
					
 Я так понимаю если все работает то Ваш скрипт должен был создать какие то топики в MQTT, но в логах инфу видно ! filename="88.JPG" index="2">~~ 
 а вот в MQTT ничего нового! filename="99.JPG" index="1">~~ не там смотришь, смотри не в system а просто в mqtt.0а нету у меня просто mqtt.0 ! filename="100.JPG" index="0">~~ ` 
 Надеюсь обновлял? лучше рестартани вообще iobroker
- 
					
					
					
					
 не там смотришь, смотри не в system а просто в mqtt.0 ` а нету у меня просто mqtt.0 ! filename="100.JPG" index="0">~~ Надеюсь обновлял? лучше рестартани вообще iobrokerРестартанул, не появилось, удалил MQQT драйвер, поставил заново все равно только system(( :oops:  
- 
					
					
					
					
 а нету у меня просто mqtt.0 ! filename="100.JPG" index="0">~~ Надеюсь обновлял? лучше рестартани вообще iobrokerРестартанул, не появилось, удалил MQQT драйвер, поставил заново все равно только system(( :oops:  ` `
 По фильтру Detskay тоже ничего? у тебя ардуина публикует данные при старте?client.publish("myhome/Kitchen/Change_Counter", "0"); //публикует на iobroker если его нет создает объект. 
- 
					
					
					
					
 Надеюсь обновлял? лучше рестартани вообще iobroker ` Рестартанул, не появилось, удалил MQQT драйвер, поставил заново все равно только system(( :oops:  ` `
 По фильтру Detskay тоже ничего? у тебя ардуина публикует данные при старте?client.publish("myhome/Kitchen/Change_Counter", "0"); //публикует на iobroker если его нет создает объект. ` Вот где собака порылась…. Выключил, включил ардуину и все появилось. Спасибо за терпение.. 
- 
					
					
					
					
 Теперь осталось разобраться в твоём коде и понять как публикуются данные. 
 
		
	