75 fd = open(dhtpath, O_RDONLY); |
75 fd = open(dhtpath, O_RDONLY); |
76 if (fd < 0) { |
76 if (fd < 0) { |
77 /* |
77 /* |
78 * The sensor is gone. |
78 * The sensor is gone. |
79 */ |
79 */ |
|
80 err = errno; |
|
81 syslog(LOG_NOTICE, "DHT11 open temperature: %d %s", err, strerror(err)); |
80 free(dhtpath); |
82 free(dhtpath); |
81 dht11_state = DEVPRESENT_NO; |
83 dht11_state = DEVPRESENT_NO; |
82 break; |
84 goto retry; |
|
85 // break; |
83 } |
86 } |
84 rc = read(fd, buffer, 25); |
87 rc = read(fd, buffer, 25); |
85 if (rc == -1) { |
88 if (rc == -1) { |
86 err = errno; |
89 err = errno; |
87 if (err == 110) { |
90 if (err == 110) { |
92 } |
95 } |
93 syslog(LOG_NOTICE, "DHT11 read temperature: %d %s", err, strerror(err)); |
96 syslog(LOG_NOTICE, "DHT11 read temperature: %d %s", err, strerror(err)); |
94 dht11_temperature = -1; |
97 dht11_temperature = -1; |
95 } else { |
98 } else { |
96 sscanf(buffer, "%d", &temp); |
99 sscanf(buffer, "%d", &temp); |
97 syslog(LOG_NOTICE, "read temp rc=%d %f", rc, temp / 1000.0); |
|
98 dht11_temperature = temp; |
100 dht11_temperature = temp; |
99 dht11_state = DEVPRESENT_YES; |
101 dht11_state = DEVPRESENT_YES; |
100 } |
102 } |
101 close(fd); |
103 close(fd); |
102 free(dhtpath); |
104 free(dhtpath); |
122 } |
124 } |
123 syslog(LOG_NOTICE, "DHT11 read temperature: %d %s", err, strerror(err)); |
125 syslog(LOG_NOTICE, "DHT11 read temperature: %d %s", err, strerror(err)); |
124 dht11_humidity = -1; |
126 dht11_humidity = -1; |
125 } else { |
127 } else { |
126 sscanf(buffer, "%d", &hum); |
128 sscanf(buffer, "%d", &hum); |
127 syslog(LOG_NOTICE, "read hum rc=%d %f", rc, hum / 1000.0); |
|
128 dht11_humidity = hum; |
129 dht11_humidity = hum; |
129 dht11_state = DEVPRESENT_YES; |
130 dht11_state = DEVPRESENT_YES; |
130 } |
131 } |
131 close(fd); |
132 close(fd); |
132 free(dhtpath); |
133 free(dhtpath); |