/*
WiFi temperature sensor
Reports current Temp via Mosquitto MQTT, WiFi, Home Assistant on Raspberry Pi3(b)
*/
//#include <EEPROM.h>
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <Wire.h>
#include "Adafruit_MCP9808.h"
// Create the MCP9808 temperature sensor object
Adafruit_MCP9808 tempsensor = Adafruit_MCP9808();
// Connect to the WiFi
const char* ssid = "YOURSSIDHERE";
const char* password = "PASSWORDHERE";
const char* mqtt_server = "IPADDRESSHERE";
WiFiClient espClient;
PubSubClient client(espClient);
boolean reconnect() { // **********************************************************
// Loop until we're reconnected
while (!client.connected()) {
Serial.print (F("Contacting MQTT server..."));
// Attempt to connect
if (client.connect("MBRTemp")) { //assign a "client name". Each wemos must have a unique name
Serial.println (F("connected"));
// ... SUBSCRIBE TO TOPICS
client.subscribe("Upstairs/Mbr/Temp");
// client.subscribe("Upstairs/Mbr/BME280/TempC");
// client.subscribe("Upstairs/Mbr/BME280/Humidity");
// client.subscribe("Upstairs/Mbr/BME280/Pressure");
return client.connected();
Serial.print (F("Failed to connect. "));
Serial.println (F(" Attempting connection again in 3 seconds"));
// Wait 3 seconds before retrying
// delay(3000);
return 0;
}
}
}
void setup()
{
{
Serial.begin(9600);
client.setServer(mqtt_server, 1883);
}
// Connect to WiFinetwork
Serial.println();
Serial.println();
Serial.print (F("Connecting to "));
Serial.println(ssid);
WiFi.begin(ssid, password);
WiFi.mode(WIFI_STA);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
//Serial.begin(9600);
Serial.print (F("."));
}
Serial.println (F(""));
Serial.println (F("WiFi connected"));
// Print the IP address
Serial.print (F("Local IP: "));
Serial.println(WiFi.localIP());
// *********************************************************************************
{
Serial.begin(9600);
Serial.println(F("MCP9808 located in Master Bedroom"));
if (!tempsensor.begin()) {
Serial.println("Could not find MCP9808 sensor!");
while (1);
}
}
}
void loop()
{
if (!client.connected()) {
reconnect();
}
// **************** CREATE BUFFER TO STORE BINARY DATA ************************
#define INT_STR_SIZE 16
char buffer[INT_STR_SIZE];
// **************** TEMPERATURE (F) ************************
dtostrf(tempsensor.readTempC()* 9.0 / 5.0 + 32, 3, 0, buffer);
Serial.print("Temperature = ");
Serial.print(buffer);
Serial.println(" *F");
client.publish("Upstairs/Mbr/Temp", buffer);
delay(3000);
client.loop();
}