thermferm/devices.c

changeset 649
64cfc01ec024
parent 648
62c5ed1b9cfd
child 650
0b215e4b814e
--- a/thermferm/devices.c	Sun Mar 24 17:12:23 2024 +0100
+++ b/thermferm/devices.c	Mon Mar 25 11:44:45 2024 +0100
@@ -77,9 +77,12 @@
 	    /*
 	     * The sensor is gone.
 	     */
+	    err = errno;
+	    syslog(LOG_NOTICE, "DHT11 open temperature: %d %s", err, strerror(err));
 	    free(dhtpath);
 	    dht11_state = DEVPRESENT_NO;
-	    break;
+	    goto retry;
+//	    break;
 	}
 	rc = read(fd, buffer, 25);
 	if (rc == -1) {
@@ -94,7 +97,6 @@
 	    dht11_temperature = -1;
 	} else {
 	    sscanf(buffer, "%d", &temp);
-	    syslog(LOG_NOTICE, "read temp rc=%d %f", rc, temp / 1000.0);
 	    dht11_temperature = temp;
 	    dht11_state = DEVPRESENT_YES;
 	}
@@ -124,7 +126,6 @@
 	    	dht11_humidity = -1;
 	    } else {
 	    	sscanf(buffer, "%d", &hum);
-	    	syslog(LOG_NOTICE, "read hum  rc=%d %f", rc, hum / 1000.0);
 	    	dht11_humidity = hum;
 		dht11_state = DEVPRESENT_YES;
 	    }
@@ -136,8 +137,11 @@
 	if (dht11_state == DEVPRESENT_YES) {
 	    break;
 	}
-	if (tries > 0)
+retry:
+	if (tries > 0) {
 	    tries--;
+	    usleep(400000);
+	}
     }
 
     syslog(LOG_NOTICE, "dht11 t:%d h:%d tries:%d state:%d", dht11_temperature, dht11_humidity, 6-tries, dht11_state);

mercurial