NEWS
Arduino+Mqtt FAQ для начинающих.
- 
					
					
					
					
 как понял это обратная связь, если на брокере значение поменять она передает его ардуине так ?? я эту функцию временно закоментил и залил скетч. объекты создались но данные не приходят везде стоит - 0 ! filename="77.JPG" index="0">~~ ` 
 Правильно понял, это callback.а данные у тебя и не будут передаватся брокеру (в коду у тебя так написано), только если ты кабель из ардуины выдернишь и заново вставишь, тогда передадутся данные в iobroker. добавь строки в общий луп char b[5]; String char_TempDS = String(TempDS); char_TempDS.toCharArray(b,5); client.publish("UNO/Detskaya/Temp", b); String char_Pressure2 = String(Pressure2); char_Pressure2.toCharArray(b,5); client.publish("UNO/Detskaya/Temp", b); 
- 
					
					
					
					
 как понял это обратная связь, если на брокере значение поменять она передает его ардуине так ?? я эту функцию временно закоментил и залил скетч. объекты создались но данные не приходят везде стоит - 0 ! filename="77.JPG" index="0">~~ ` 
 Правильно понял, это callback.а данные у тебя и не будут передаватся брокеру (в коду у тебя так написано), только если ты кабель из ардуины выдернишь и заново вставишь, тогда передадутся данные в iobroker. добавь строки в общий луп char b[5]; String char_TempDS = String(TempDS); char_TempDS.toCharArray(b,5); client.publish("UNO/Detskaya/Temp", b); String char_Pressure2 = String(Pressure2); char_Pressure2.toCharArray(b,5); client.publish("UNO/Detskaya/Temp", b); ` А разве сейчас не так ? 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); client.loop(); if (!client.connected()) { if (client.connect(id_connect)) { char b[5]; String char_TempDS = String(TempDS); char_TempDS.toCharArray(b,5); client.publish("UNO/Detskaya/Temp", b); String char_Pressure2 = String(Pressure2); char_Pressure2.toCharArray(b,5); client.publish("UNO/Detskaya/Temp", b); client.subscribe("UNO/Detskaya/#"); } }
- 
					
					
					
					
 как понял это обратная связь, если на брокере значение поменять она передает его ардуине так ?? я эту функцию временно закоментил и залил скетч. объекты создались но данные не приходят везде стоит - 0 ! filename="77.JPG" index="0">~~ ` 
 Правильно понял, это callback.а данные у тебя и не будут передаватся брокеру (в коду у тебя так написано), только если ты кабель из ардуины выдернишь и заново вставишь, тогда передадутся данные в iobroker. добавь строки в общий луп char b[5]; String char_TempDS = String(TempDS); char_TempDS.toCharArray(b,5); client.publish("UNO/Detskaya/Temp", b); String char_Pressure2 = String(Pressure2); char_Pressure2.toCharArray(b,5); client.publish("UNO/Detskaya/Temp", b); ` А разве сейчас не так ? 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); client.loop(); if (!client.connected()) { if (client.connect(id_connect)) { char b[5]; String char_TempDS = String(TempDS); char_TempDS.toCharArray(b,5); client.publish("UNO/Detskaya/Temp", b); String char_Pressure2 = String(Pressure2); char_Pressure2.toCharArray(b,5); client.publish("UNO/Detskaya/Temp", b); client.subscribe("UNO/Detskaya/#"); } } ```` `нет, не ужели нельзя чуток подумать и вникнуть в код? void loop(){ char b[5]; String char_TempDS = String(TempDS); char_TempDS.toCharArray(b,5); client.publish("UNO/Detskaya/Temp", b); String char_Pressure2 = String(Pressure2); char_Pressure2.toCharArray(b,5); client.publish("UNO/Detskaya/Temp", b); //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); client.loop(); if (!client.connected()) { if (client.connect(id_connect)) { String char_TempDS = String(TempDS); char_TempDS.toCharArray(b,5); client.publish("UNO/Detskaya/Temp", b); String char_Pressure2 = String(Pressure2); char_Pressure2.toCharArray(b,5); client.publish("UNO/Detskaya/Temp", b); client.subscribe("UNO/Detskaya/#"); } }
- 
					
					
					
					
 Правильно понял, это callback. а данные у тебя и не будут передаватся брокеру (в коду у тебя так написано), только если ты кабель из ардуины выдернишь и заново вставишь, тогда передадутся данные в iobroker. добавь строки в общий луп char b[5]; String char_TempDS = String(TempDS); char_TempDS.toCharArray(b,5); client.publish("UNO/Detskaya/Temp", b); String char_Pressure2 = String(Pressure2); char_Pressure2.toCharArray(b,5); client.publish("UNO/Detskaya/Temp", b); ` А разве сейчас не так ? 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); client.loop(); if (!client.connected()) { if (client.connect(id_connect)) { char b[5]; String char_TempDS = String(TempDS); char_TempDS.toCharArray(b,5); client.publish("UNO/Detskaya/Temp", b); String char_Pressure2 = String(Pressure2); char_Pressure2.toCharArray(b,5); client.publish("UNO/Detskaya/Temp", b); client.subscribe("UNO/Detskaya/#"); } } ```` `нет, не ужели нельзя чуток подумать и вникнуть в код? void loop(){ char b[5]; String char_TempDS = String(TempDS); char_TempDS.toCharArray(b,5); client.publish("UNO/Detskaya/Temp", b); String char_Pressure2 = String(Pressure2); char_Pressure2.toCharArray(b,5); client.publish("UNO/Detskaya/Temp", b); //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); client.loop(); if (!client.connected()) { if (client.connect(id_connect)) { String char_TempDS = String(TempDS); char_TempDS.toCharArray(b,5); client.publish("UNO/Detskaya/Temp", b); String char_Pressure2 = String(Pressure2); char_Pressure2.toCharArray(b,5); client.publish("UNO/Detskaya/Temp", b); client.subscribe("UNO/Detskaya/#"); } } ```` `Пришлось еще объявить в начале программы (глобально) float TempDS и float Pressure2, иначе выдавал ошибку но легче не стало на брокер ничего не передает. на LCD всё отображает. :roll: :? 
- 
					
					
					
					
 Пришлось еще объявить в начале программы (глобально) float TempDS и float Pressure2, иначе выдавал ошибку но легче не стало на брокер ничего не передает. на LCD всё отображает. :roll: :? ` 
 замени строки :#define id_connect "UNO_1" #define Prefix_subscribe "UNO/Detskaya/" на #define id_connect "UNO-Detskaya" #define Prefix_subscribe "UNO/Detskaya/" 
- 
					
					
					
					
 Похоже проблема в подключении к локалке, пока что не вижу шилда в сети … Спасибо, сейчас попробую голый скетч залить. На всякий случай [http://forum.iobroker.net/viewtopic.php?f=33&t=1609](http://forum.iobroker.net/viewtopic.php?f=33&t=1609), мало ли)Проверил резисторную сборку стоят резы на 250 Om И еще, подключил и комп и сеть, раскомментировал отладочные строки тут Serial.print(topic); и тутvoid callback_iobroker(String strTopic, String strPayload){ if (strTopic == "UNO/Detskaya/Temp") { Serial.println(strPayload); Так вот в СОМ порт кроме температуры больше ничего не сыпится, по соединению вообще ноль информации. P.S. Вообще странно, потому что при заливке стандартного скетча вэб сервера, все работает прекрасно :roll: :?: 
- 
					
					
					
					
 подскажите, что могу делать не так? данные на брокер приходят исправно. но я не могу ничего отправить обратно. беру к примеру выключатель, лампочку, прописываю их на топик их состояния, нажимаю выключатель, на экране лампочки зажигаются, гаснут. а данные от брокера на mqtt сервер не уходят. 
- 
					
					
					
					
 подскажите, что могу делать не так? данные на брокер приходят исправно. но я не могу ничего отправить обратно. беру к примеру выключатель, лампочку, прописываю их на топик их состояния, нажимаю выключатель, на экране лампочки зажигаются, гаснут. а данные от брокера на mqtt сервер не уходят. ` вы что то путаете наверное. Иоб выступает в качестве сервера mqtt. Он отправит значение всем подписавшимся на топик клиентам. 
- 
					
					
					
					
 вы что то путаете наверное. Иоб выступает в качестве сервера mqtt. Он отправит значение всем подписавшимся на топик клиентам. я ничего не путаю. в качестве сервера у меня стоит mosquitto. Иоб выступает в качестве клиента. С проблемой разобрался :). По умолчанию в клиенте mqtt не стоит галочка "publish" (на топике). сейчас возник вопрос. можно ли отключить получение своих же сообщений? т.е. я публикую сообщение, и оно тут же приходит мне обратно. 
- 
					
					
					
					
 instalator - Доброго времени! Есть вопрос по скетчу - скомпилировался, загрузился… работает. НО! температуру кажет -127, типа датчика не видит, а это не правда, запускаем типовой ТЕстер от Ардуино 1.0.6 - датчик есть температуру кажет. Dallas Temperature IC Control Library Demo Locating devices...Found 1 devices. Parasite power is: ON Found device 0 with address: 2880E93A04000010 Setting resolution to 9 Resolution actually set to: 9 Requesting temperatures...DONE Temperature for device: 0 Temp  25.00 Temp F: 77.00 25.00 Temp F: 77.00Requesting temperatures...DONE Temperature for device: 0 Temp  25.00 Temp F: 77.00 25.00 Temp F: 77.00Requesting temperatures...DONE Temperature for device: 0 Temp  25.00 Temp F: 77.00 25.00 Temp F: 77.00Как видно - адрес найден... Вбиваем его сюда: #define ONE_WIRE_BUS 8 #define TEMPERATURE_PRECISION 9 - сам добавил, без нее то же -127 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature DS_sensors(&oneWire); // 28 80 E9 3A 04 00 00 10 DeviceAddress addr_T1 = { 0x28, 0x80, 0xE9, 0x3A, 0x04, 0x00, 0x00, 0x10 }; float T1 = 0; Ну вот результат - 
 1308_arduino_mqtt.jpg
- 
					
					
					
					
 температуру кажет -127, типа датчика не видит, а это не правда, запускаем типовой ТЕстер от Ардуино 1.0.6 - датчик есть температуру кажет. ` 
 версия библиотек какая? попробуй откатить на предыдущую
 
		
	