Hello I have an Argon that from time to time loses the connection with the network, then it recovers by itself, I have attached what results in the console. I can’t understand if this error comes from the wifi network or from Argon. I have a repeater in the room where I work so it shouldn’t be a problem with the wifi signal strength. I have a doubt that it could come from the bluetooth of the keyboard or mouse but …?Can anyone see the attached file determine the origin of the problem? Thanks Valentino
Msg from console
{“device”:{“network”:{“signal”:{“at”:“Wi-Fi”,“strength”:60,“strength_units”:"%",“strengthv”:-70,“strengthv_units”:“dBm”,“strengthv_type”:“RSSI”,“quality”:35.48,“quality_units”:"%",“qualityv”:20,“qualityv_units”:“dB”,“qualityv_type”:“SNR”}},“cloud”:{“connection”:{“status”:“connected”,“error”:0,“attempts”:1,“disconnects”:1,“disconnect_reason”:“error”},“coap”:{“transmit”:327,“retransmit”:112,“unack”:1,“round_trip”:5279},“publish”:{“rate_limited”:0}},“system”:{“uptime”:422,“memory”:{“used”:95200,“total”:160424}}},“service”:{“device”:{“status”:“ok”},“cloud”:{“uptime”:6,“publish”:{“sent”:1}},“coap”:{“round_trip”:4783}}}
From the messages above it's not easy to guess the cause.
But in combination with seeing your code it might be possible.
However, there might be other factors that don't show easily - e.g. radio noise like other WiFi or Bluetooth devices, badly filtered appliances, quality of your power supply, external circuitry, ...
Thanks I proceed with eliminating any sources of disturbance, bluetooth (keyboard and mouse), power supply is of a professional type and therefore I would exclude it, I also grounded the shield of the cable to which the sensors are connected and then I would observe through the console.
Good day Valentino
I agree with this, it could be any of a number of things. You are correct in your assessment in that, given there are no external interferences, you should not be experiencing recurring WiFi disconnects being in such close proximity.
I recall a client that caused us extreme headaches as we simply could not find the problem why his iMac was constantly disconnecting for brief periods despite the fact that he had a CISCO access point couple of meters away from his computer. By chance, during a site visit, I noticed the disconnect coinciding with a "ping" sound. Walking into his PA's office right next door, I noticed she placed a microwave oven right next to the AP
Thanks for your answer, in fact I have eliminated an old keyboard that worked wireless (radio or Bluetooth) and since yesterday afternoon there are no more interruptions.
Have a nice day Valentino
Yup, especially older BT devices (particularly “no-name” ones) tend to be noisy neighbors in a WiFi home.
Hence, when experiencing radio issues it’s good to know which technology and what radio bands you are using (consciously or not).
Hello
I come back to the problem again on this post. After several hours of good operation, the problem returned. So I eliminated everything that was wireless on my table, turned off lights that could have affected the power supplies but the error remains. I started to check and clean the code, and I realized that everything happens when it fails to get a result from the DHT22 temperature reading, (I use the Adafruit library (0.004)) in the code I use the Particle.publish function. Eliminating the lines concerning the DHT22 sensor Argon no longer performs a restart. (// Particle.publish (“TempDHT”, String (t)); //Particle.publish(“UmiDHT”,String(h));
For the sake of scruple I also used the Pittech library with the example attached to the library and inserting the Particle.publish line and from time to time gives me a reading error.
At this point I don’t know what to do. Thanks for any suggestions.
Valentino
Hi,
I was thinking you might try running the example sketch from the library (dht-test.ino) and use Serial.print() instead of Particle.publish() to see reading results. If that works, then, next, we can solve the Particle.publish() issues. If you could post your code that would help.
Also, you might try a short Particle.keepAlive() statement. Like this:
void setup() {
Particle.keepAlive(5s); // for 5 seconds.
...
Hello
thanks, now I’m checking if I increase the time in my skecht as an attachment I can remedy the error, my reasoning is that by checking the validity of the data Argon ends up resetting itself therefore if I increase the time between one reading and another if Argon is able to receive valid data. I used the KeepAlive function with long and short times but without positive results. In the Serial.print I occasionally get a Failed to Read fron DHT sensor.
For friedl_1977 initial I put 2000 msec as in the library examples. I had also tried to put a delay in the data validity check but without positive results.
// 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!");
//delay(5000); //non funziona!
return;
}
Now I put a 5000 msec delay in the loop and it seems to work.
Regards Valentino
My code:
// This #include statement was automatically added by the Particle IDE.
#include <Adafruit_DHT.h>
// This #include statement was automatically added by the Particle IDE.
#define DHTPIN 6 // what pin we're connected to
#define DHTTYPE DHT22 // DHT 22 (AM2302)
DHT dht(DHTPIN, DHTTYPE);
//***Variabili misura temperatura
float sensorT=0.0;
float voltT=0.0;
double TempV=0.0;
//***Variabili misura Umidita
float sensorU=0.0;
float voltU=0.0;
double UmiGio=0.0;
//***Variabili temp e umi DHT22
double h = 0;
double t = 0;
double f = 0;
// Orario
String ora;
void setup()
{
Serial.begin(9600);
Time.zone(+2);
Particle.variable("Temp",t);
Particle.variable("Umi",h);
Particle.variable("TempGio",TempV);
Particle.variable("UMGio",UmiGio);
dht.begin();
}
void loop()
{
ora=Time.format("%H:%M:%S %d.%m.%Y");
int tnow = Time.now();
int thour = Time.hour(tnow);
delay(5000); //Default 2000 msec
//***DHT22
/* h = floor(100*dht.getHumidity())/100;
t = floor(100*dht.getTempCelcius())/100;
f = floor(100*dht.getTempFarenheit())/100;*/
h = dht.getHumidity();
t = dht.getTempCelcius();
f = dht.getTempFarenheit();
// 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!");
//delay(5000); //non funziona
return;
}
//***Calcolo Dati Umidita
sensorU = analogRead(A1);
voltU = (3.3 * sensorU) / 4095.0;
UmiGio=(100/0.016)*(voltU/160-0.005); // Impostazione origine 0.004
//***Calcolo Dati Temperatura PT100
sensorT = analogRead(A2);
voltT = (3.3 * sensorT) / 4095.0;
TempV=-40 + (120/0.016)*(voltT/160 - 0.0042);// Impostazione origine 0.004
//ISNAN significa IS NOT A NUMBER Check if any reads failed and exit early (to try again).
if (isnan(UmiGio) || isnan(TempV)) {
Serial.println("Failed to read from Sens Gio!");
delay(1000);
return;
}
Particle.publish("TempDHT",String(t));
Particle.publish("UmiDHT",String(h));
Particle.publish("TempGio",String(TempV));
Particle.publish("UmiGio",String(UmiGio));
//***
Serial.println("***");
Serial.print("Data-Ora:");Serial.print(ora);Serial.println(" ");
Serial.print("TempGio: ");Serial.print(TempV);Serial.print(" VoltGio: " );Serial.println(voltT);
Serial.print("UmiGio: ");Serial.print(UmiGio);Serial.print("%");Serial.print(" VoltUmiGio: ");Serial.println(voltU);
Serial.print("TempDHT: ");Serial.print(t);Serial.print(" ");Serial.print("Humid: ");Serial.print(h);Serial.println("%");
Serial.println("***");
}
Apologies for only reading this now, please next time use @ with my handle so I get the notification
I am glad you managed to solve the problem!
I don't like reading datasheets as they can be quite hefty documents, but as @ScruffR pointed out, it does help, hehe. When choosing sensors / IC's, I try to google as many references with regards to the specific sensor / IC as I can, as it often covers all these matters and I don't have to read that much There are many guys out there doing benchmark tests and all sorts of thing.
Hello @friedl_1977 thanks you and @ScruffR
I chose DHT sensors for their ease of use, ready-made libraries etc … Anyway thanks to all for the support, the site indicated by @ScruffR is very interesting.
Best Regards Valentino
don’t get me wrong, I use DHT often as you correctly stated, they are quite easy to use. But as you probably have noticed now, the lower cost sensors have some limitations If your data is not mission critical in terms of nearly 100% accuracy or need readings more rapidly (in your case less than 5s) then DHT is just fine
No point in paying 100’s of dollars for expensive sensors when not needed.