17-10-2015, 14:34
Witam.
Na bazie kodów znalezionych w sieci popełniłem prosty program do ESP8266, który odczytuje temperaturę z dwóch ds18b20 i przesyła ją do brokera mqtt.
Odczyt temp przez serial działa prawidłowo ale nie ma przesyłu przez mqtt.
Domyślam się, że trzeba przekonwertować odczyt temperatury na taki, który można przesłać ale już drugi dzień nie potrafię tego zrobić. Proszę o podpowiedzi...
Kod uszczupliłem o część sieciową. Funkcja printTemperature(Woda) poprawnie wyświetla temperaturę ale do client.publish nie mogę jej wrzuć ze względu na nawiasy a bez nie działa...
Na bazie kodów znalezionych w sieci popełniłem prosty program do ESP8266, który odczytuje temperaturę z dwóch ds18b20 i przesyła ją do brokera mqtt.
Odczyt temp przez serial działa prawidłowo ale nie ma przesyłu przez mqtt.
Domyślam się, że trzeba przekonwertować odczyt temperatury na taki, który można przesłać ale już drugi dzień nie potrafię tego zrobić. Proszę o podpowiedzi...
Kod uszczupliłem o część sieciową. Funkcja printTemperature(Woda) poprawnie wyświetla temperaturę ale do client.publish nie mogę jej wrzuć ze względu na nawiasy a bez nie działa...
Kod:
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Streaming.h>
#define ONE_WIRE_BUS_PIN 2
char temperaturePiec[6];
char temperatureWoda[22];
DeviceAddress Piec = { 0x28, 0xEC, 0x1, 0xB, 0x1, 0x0, 0x0, 0xB8 };
DeviceAddress Woda = { 0x28, 0x6D, 0x9, 0xB, 0x1, 0x0, 0x0, 0x5B };
sensors.begin();
sensors.setResolution(Piec, 10);
sensors.setResolution(Woda, 10);
}
void printTemperature(DeviceAddress deviceAddress)
{
// Command all devices on bus to read temperature
sensors.requestTemperatures();
float tempC = sensors.getTempC(deviceAddress);
if (tempC == -127.00)
{
Serial.print("Error getting temperature ");
}
else
{
Serial.print("C: ");
Serial.print(tempC);
}
}
void loop()
{
delay(1000);
Serial.println();
Serial.print("Getting temperatures... ");
Serial.println();
Serial.print("Piec: ");
printTemperature(Piec);
Serial.println();
// send temperature to the MQTT topic
client.publish("/toopic/temp/piec/", temperaturePiec);
delay(1000);
Serial.print("Woda: ");
printTemperature(Woda);
Serial.println();
// send temperature to the MQTT topic
client.publish("/topic/temp/woda/", temperatureWoda);
delay(1000);
}