I just noticed that my missing data that is supposed to display with the Temp and Humidity
(i.e.
Temp = 75 F ;
Humidity = 25 %
)
is actually displaying in bytes (75 bytes)) or am I wrong?
I would like to be able to get a continuous stream of data that I could view from my Raspberry pi (later editing to retrieve every 15-30 minutes), eventually collecting the data into a spreadsheet of some sort.
This is my most recent code:
#include <WiFiEsp.h>
#include <WiFiEspClient.h>
#include <WiFiEspUdp.h>
#include <PubSubClient.h>
#include <Adafruit_Sensor.h> //DHT22 sensor
#include <DHT.h> //DHT22
#define DHTTYPE2 DHT22 // DHT 22 (AM2302)
#define DHTPIN2 2 // what pin we're connected to
DHT dht2(DHTPIN2, DHTTYPE2); // 11 works fine for ESP8266
int reading2;
int chk2;
float hum2; //Stores humidity value
float temp2; //Stores temperature value
char ssid[] = "XXXXXX"; // your network SSID (name)
char pass[] = "XXXXXX"; // your network password
char* topic = "arduino_incoming";
char* server = "XXX.XXX.XX.XX";
#define mqtt_user "XXXXXX"
#define mqtt_password "XXXXXX"
int status = WL_IDLE_STATUS; // the Wifi radio's status
WiFiEspClient espClient;
PubSubClient client(espClient);
void setup() {
dht2.begin(); // initialize temperature sensor
Serial.begin(115200); // initialize serial for debugging
Serial1.begin(115200); // initialize serial for ESP module
WiFi.init(&Serial1); // initialize ESP module
if (WiFi.status() == WL_NO_SHIELD) // check for the presence of the shield
{
Serial.println("WiFi shield not present");
while (true);// don't continue
}
while ( status != WL_CONNECTED) // attempt to connect to WiFi network
{
Serial.print("Attempting to connect to WPA SSID: ");
Serial.println(ssid);
status = WiFi.begin(ssid, pass); // Connect to WPA/WPA2 network
}
Serial.println("You're connected to the network"); // you're connected now
client.setServer(server, 1883); //connect to MQTT server
client.setCallback(callback);
}
void callback(char* topic, byte* payload, unsigned int length) //print any message received for subscribed topic
{
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
for (int i = 0; i < length; i++)
{
Serial.print((char)payload[i]);
}
Serial.println();
}
void loop()
{
{
Serial.println("Outside Temperature and Humidity ");
delay(1000); //Delay 1 sec.
hum2 = dht2.readHumidity();
temp2 = dht2.readTemperature() * 1.8 + 32.1;
Serial.print(" Temp = " );
Serial.print(temp2);
Serial.println(" F");
Serial.print(" Humidity = ");
Serial.print(hum2);
Serial.println(" %");
Serial.print("");
Serial.println("");
delay(10000); // waits 10000 milliseconds (10 sec).
// delay(30000); // waits 30000 milliseconds (30 sec).
}
if (!client.connected())
{
reconnect();
}
client.loop();
}
void reconnect()
{
while (!client.connected()) // Loop until we're reconnected
{
Serial.print("Attempting MQTT connection...");
// client.publish("garden", "Attempting MQTT connection using ESP_MQTT-PUB-SUB...");
String clientId = "ESP8266Client-"; // Create a random client ID
clientId += String(random(0xffff), HEX);
char c_string[16];
dtostrf(temp2, 4, 2, c_string);
client.publish("temperature", c_string);
dtostrf(hum2, 4, 2, c_string);
client.publish("humidity", c_string);
if (client.connect("ESP8266Client", mqtt_user, mqtt_password)) // Attempt to connect, just a name to identify the client
{
Serial.println("connected");
// client.publish("garden", "connected");
// client.publish("garden", "hello world"); // Once connected, publish an announcement...
client.publish("Temp", " Temp = ", temp2, " F");
delay(1000); //Delay 1 sec.
client.publish("Humidity", " Humidity = ", hum2, " %");
delay(1000); //Delay 1 sec.
client.subscribe("Subscription"); // ... and resubscribe
}
else
{
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
delay(5000); // Wait 5 seconds before retrying
}
}
}
This is the IDE output: (I shortened the output for viewing here)
[WiFiEsp] Initializing ESP module
[WiFiEsp] Initilization successful - 2.0.0
Attempting to connect to WPA SSID: MyRouter
[WiFiEsp] Connected to MyRouter
You're connected to the network
Outside Temperature and Humidity
Temp = 73.32 F
Humidity = 25.30 %
Attempting MQTT connection...[WiFiEsp] Connecting to 192.168.xx.xx
connected
Outside Temperature and Humidity
Temp = 73.32 F
Humidity = 25.20 %
Outside Temperature and Humidity
Temp = 73.32 F
Humidity = 25.20 %
Attempting MQTT connection...[WiFiEsp] Connecting to 192.168.xx.xx
connected
Outside Temperature and Humidity
Temp = 74.58 F
Humidity = 25.60 %
Outside Temperature and Humidity
Temp = 75.12 F
Humidity = 27.00 %
Attempting MQTT connection...[WiFiEsp] Connecting to 192.168.xx.xx
connected
Outside Temperature and Humidity
Temp = 77.28 F
Humidity = 29.50 %
Outside Temperature and Humidity
Temp = 87.90 F
Humidity = 38.30 %
This is from my Raspberry pi 3 terminal:(I shortened the output for viewing here)
pi@BeeHiveServer:~ $ mosquitto_sub -d -u oibdrew -P B33B3tt3rHav3MyHon3y -t Temp -t Humidity
Client mosqsub|23106-BeeHiveSe sending CONNECT
Client mosqsub|23106-BeeHiveSe received CONNACK
Client mosqsub|23106-BeeHiveSe sending SUBSCRIBE (Mid: 1, Topic: Temp, QoS: 0)
Client mosqsub|23106-BeeHiveSe sending SUBSCRIBE (Mid: 2, Topic: Humidity, QoS: 0)
Client mosqsub|23106-BeeHiveSe received SUBACK
Subscribed (mid: 1): 0
Client mosqsub|23106-BeeHiveSe received PUBLISH (d0, q0, r1, m0, 'Temp', ... (73 bytes))
Temp = F Humidity = %Attempting MQTT connection...ESP8266Client
Client mosqsub|23106-BeeHiveSe received SUBACK
Subscribed (mid: 2): 0
Client mosqsub|23106-BeeHiveSe received PUBLISH (d0, q0, r1, m0, 'Humidity', ... (25 bytes))
Humidity = %Attempti
Client mosqsub|23106-BeeHiveSe received PUBLISH (d0, q0, r0, m0, 'Temp', ... (73 bytes))
Temp = F Humidity = %Attempting MQTT connection...ESP8266Client
Client mosqsub|23106-BeeHiveSe received PUBLISH (d0, q0, r0, m0, 'Humidity', ... (25 bytes))
Humidity = %Attempti
Client mosqsub|23106-BeeHiveSe received PUBLISH (d0, q0, r0, m0, 'Temp', ... (74 bytes))
Temp = F Humidity = %Attempting MQTT connection...ESP8266Client-
Client mosqsub|23106-BeeHiveSe received PUBLISH (d0, q0, r0, m0, 'Humidity', ... (25 bytes))
Humidity = %Attempti
Client mosqsub|23106-BeeHiveSe sending PINGREQ
Client mosqsub|23106-BeeHiveSe received PINGRESP
Client mosqsub|23106-BeeHiveSe received PUBLISH (d0, q0, r0, m0, 'Temp', ... (74 bytes))
Temp = F Humidity = %Attempting MQTT connection...ESP8266Client-
Client mosqsub|23106-BeeHiveSe received PUBLISH (d0, q0, r0, m0, 'Humidity', ... (24 bytes))
Humidity = %Attempt
Client mosqsub|23106-BeeHiveSe received PUBLISH (d0, q0, r0, m0, 'Temp', ... (75 bytes))
Temp = F Humidity = %Attempting MQTT connection...ESP8266Client-
Client mosqsub|23106-BeeHiveSe received PUBLISH (d0, q0, r0, m0, 'Humidity', ... (24 bytes))
Humidity = %Attempt
Client mosqsub|23106-BeeHiveSe received PUBLISH (d0, q0, r0, m0, 'Temp', ... (75 bytes))
Temp = F Humidity = %Attempting MQTT connection...ESP8266Client-
Client mosqsub|23106-BeeHiveSe received PUBLISH (d0, q0, r0, m0, 'Humidity', ... (24 bytes))
Humidity = %Attempt
Client mosqsub|23106-BeeHiveSe sending PINGREQ
Client mosqsub|23106-BeeHiveSe received PINGRESP