Avlägsen temperaturövervakning med MQTT och ESP8266 moduler (3 / 4 steg)
Steg 3: Ändra skiss på ESP8266 att publicera temperatur till MQTT mäklaren
Nu när MQTT mäklaren körs på din ubuntu server kan du nu uppdatera skissa på din ESP8266 att börja skicka temperaturer till den.
Följa skissen kommer att behöva en liten ändra din egen wifi SSID och IP-adressen för din ubuntu server som har mosquitto kör på den.
Du behöver följande bibliotek som du kan få från github:
- https://github.com/PaulStoffregen/OneWire
- https://github.com/milesburton/Arduino-temperature-Control-Library
- https://github.com/knolleary/pubsubclient
#include < ESP8266WiFi.h >
#include < PubSubClient.h >
#include < OneWire.h >
#include < DallasTemperature.h >
Data kabeln är ansluten till stift 2 på Arduino
#define ONE_WIRE_BUS 5
Setup en oneWire instans att kommunicera med någon OneWire enheter
(inte bara Maxim/Dallas temperatur ICs)
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensorer (& oneWire);
Uppdatera dessa med värden lämpligt för ditt nätverk.
CONST char * ssid = "";
CONST char * lösenord = "";
CONST char * mqtt_server = "";
WiFiClient espClient;
PubSubClient client(espClient);
lång lastMsg = 0;
float temp = 0;
int inPin = 5;
void setup_wifi() {
Delay(10);
Vi börjar med att ansluta till WiFi-nätverk
Serial.println();
Serial.Print ("ansluter till");
Serial.println(SSID);
WiFi.begin (ssid, lösenord);
medan (WiFi.status()! = WL_CONNECTED)
{
Delay(500);
Serial.Print(".");
}
Serial.println("");
Serial.println ("WiFi-anslutna");
Serial.println ("IP-adress:");
Serial.println(WiFi.localIP());
}
void reconnect() {
Loop tills vi är återansluts
medan (! client.connected()) {
Serial.Print ("försöker MQTT anslutning...");
Försök att ansluta
om (client.connect("arduinoClient_temperature_sensor")) {
Serial.println("Connected");
} annat {
Serial.Print ("misslyckades, rc =");
Serial.Print(client.State());
Serial.println ("försök igen i 5 sekunder");
Vänta 5 sekunder innan du försöker igen
Delay(5000);
}
}
}
void setup()
{
Serial.BEGIN(115200);
setup_wifi();
client.setServer (mqtt_server, 1883);
pinMode (inPin, ingång);
sensors.BEGIN();
}
void loop()
{
om (! client.connected()) {
reconnect();
}
client.loop();
länge nu = millis();
om (nu - lastMsg > 60000) {
lastMsg = nu;
sensors.setResolution(12);
sensors.requestTemperatures(); Skicka kommandot för att få temperaturer
Temp = sensors.getTempCByIndex(0);
Serial.println(temp);
om ((temp > -20) & & (temp < 60))
{
client.publish ("ha/_temperature1", String(temp).c_str(),TRUE);
}
}
}
.