Hello everyone, my dashboard with two dht22 has stopped working for the second time.
Not bad I think it’s cayenne that I no longer accept that configuration on a free account. understandable.
I want to try with two ds18b20, I tried to modify this sketch but it does not work. Please tell me where I’m wrong?
#define CAYENNE_PRINT Serial // Comment this out to disable prints and save space
#include <OneWire.h>
#include <DallasTemperature.h>
#include <CayenneMQTTEthernet.h>
// Cayenne authentication info. This should be obtained from the Cayenne Dashboard.
char username[] = "";
char password[] = "";
char clientID[] = "";
#define SENSOR_PIN 2 // Do not use digital pins 0 or 1 since those conflict with the use of Serial.
#define VIRTUAL_CHANNEL 1
#define SENSOR_PIN7 7 // Do not use digital pins 0 or 1 since those conflict with the use of Serial.
#define VIRTUAL_CHANNEL 2
OneWire oneWire(SENSOR_PIN);
OneWire oneWire7(SENSOR_PIN7);
DallasTemperature sensors(&oneWire);
DallasTemperature sensors7(&oneWire7);
void setup()
{
Serial.begin(9600);
Cayenne.begin(username, password, clientID);
sensors.begin();
sensors7.begin();
}
void loop()
{
Cayenne.loop();
}
// This function is called at intervals to send sensor data to Cayenne.
CAYENNE_OUT(VIRTUAL_CHANNEL)
{
// Send the command to get temperatures.
sensors.requestTemperatures();
// This command writes the temperature in Celsius to the Virtual Channel.
Cayenne.celsiusWrite(VIRTUAL_CHANNEL, sensors.getTempCByIndex(0));
// To send the temperature in Fahrenheit use the corresponding code below.
//Cayenne.fahrenheitWrite(VIRTUAL_CHANNEL, sensors.getTempFByIndex(0));
// Send the command to get temperatures.
sensors7.requestTemperatures();
// This command writes the temperature in Celsius to the Virtual Channel.
Cayenne.celsiusWrite(VIRTUAL_CHANNEL, sensors7.getTempCByIndex(0));
// To send the temperature in Fahrenheit use the corresponding code below.
//Cayenne.fahrenheitWrite(VIRTUAL_CHANNEL, sensors.getTempFByIndex(0));
}
there is no limit for the free account and it should work without any issue. can you share me the serial monitor output of your DHT22 code so that we can see what the issue is here.
Thanks for your time. Now I have disassembled the dht22 to try with the ds18b20.
Suddenly, only one sensor data was updated in the dashboard. Outpout of the serial monitor instead displayed and updated both sensors, the code is what you had corrected me.
So definitely something has changed from you. As I said it’s not serious, nothing vital is monitored by those sensors.
there is nothing changed from cayenne side. it is only some issue at your end code. if you can re-connect them and share the serial monitor we can rule out the issue.
this shows that you are getting the temperature from both the DHT22. can you share the code used for this.
Also, share the code you used to send data to cayenne and is not working.
/*
This example shows how to connect to Cayenne using an Ethernet W5100 shield and send/receive sample data.
The CayenneMQTT Library is required to run this sketch. If you have not already done so you can install it from the Arduino IDE Library Manager.
Steps:
1. Set the Cayenne authentication info to match the authentication info from the Dashboard.
2. Compile and upload the sketch.
3. A temporary widget will be automatically generated in the Cayenne Dashboard. To make the widget permanent click the plus sign on the widget.
*/
//#define CAYENNE_DEBUG // Uncomment to show debug messages
//#define CAYENNE_PRINT Serial // Comment this out to disable prints and save space
#include <CayenneMQTTEthernet.h>
//DTH
#include "DHT.h"
DHT dht(2, DHT22);
DHT dht7(7, DHT22);
#define DTH_hum_Virtual_Channel 1
#define DTH_tempC_Virtual_Channel 2
//#define DTH_tempF_Virtual_Channel 3
//#define DTH_hic_Virtual_Channel 4
//#define DTH_hif_Virtual_Channel 5
#define DTH7_hum_Virtual_Channel 6
#define DTH7_tempC_Virtual_Channel 7
//#define DTH7_tempF_Virtual_Channel 8
//#define DTH7_hic_Virtual_Channel 9
//#define DTH7_hif_Virtual_Channel 10
unsigned long lastMillis_dht = 0;
// Cayenne authentication info. This should be obtained from the Cayenne Dashboard.
char username[] = "";
char password[] = "";
char clientID[] = "";
void setup() {
//DTH
dht.begin();
dht7.begin();
Serial.begin(9600);
Cayenne.begin(username, password, clientID);
}
void loop() {
Cayenne.loop();
//DTH
if (millis() - lastMillis_dht > 30000) {
lastMillis_dht = millis();
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity();
// Read temperature as Celsius (the default)
float t = dht.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
float f = dht.readTemperature(true);
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// Compute heat index in Fahrenheit (the default)
float hif = dht.computeHeatIndex(f, h);
// Compute heat index in Celsius (isFahreheit = false)
float hic = dht.computeHeatIndex(t, h, false);
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" *C ");
Serial.print(f);
Serial.print(" *F\t");
Serial.print("Heat index: ");
Serial.print(hic);
Serial.print(" *C ");
Serial.print(hif);
Serial.println(" *F");
Cayenne.virtualWrite(DTH_hum_Virtual_Channel, h, "rel_hum", "p");
Cayenne.virtualWrite(DTH_tempC_Virtual_Channel, t, "temp", "c");
//Cayenne.virtualWrite(DTH_tempF_Virtual_Channel, f, "temp", "f");
//Cayenne.virtualWrite(DTH_hif_Virtual_Channel, hif, "temp", "f");
//Cayenne.virtualWrite(DTH_hic_Virtual_Channel, hic, "temp", "c");
//}
//if (millis() - lastMillis_dht > 30000) {
//lastMillis_dht = millis();
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h7 = dht7.readHumidity();
// Read temperature as Celsius (the default)
float t7 = dht7.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
float f7 = dht7.readTemperature(true);
// Check if any reads failed and exit early (to try again).
if (isnan(h7) || isnan(t7) || isnan(f7)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// Compute heat index in Fahrenheit (the default)
float hif7 = dht7.computeHeatIndex(f7, h7);
// Compute heat index in Celsius (isFahreheit = false)
float hic7 = dht7.computeHeatIndex(t7, h7, false);
Serial.print("Humidity7: ");
Serial.print(h7);
Serial.print(" %\t");
Serial.print("Temperature7: ");
Serial.print(t7);
Serial.print(" *C ");
Serial.print(f7);
Serial.print(" *F\t");
Serial.print("Heat index: ");
Serial.print(hic7);
Serial.print(" *C ");
Serial.print(hif7);
Serial.println(" *F");
Cayenne.virtualWrite(DTH_hum_Virtual_Channel, h7, "rel_hum", "p");
Cayenne.virtualWrite(DTH_tempC_Virtual_Channel, t7, "temp", "c");
//Cayenne.virtualWrite(DTH_tempF_Virtual_Channel, f7, "temp", "f");
//Cayenne.virtualWrite(DTH_hif_Virtual_Channel, hif7, "temp", "f");
//Cayenne.virtualWrite(DTH_hic_Virtual_Channel, hic7, "temp", "c");
}
}