void show() { if(++swcnt > (sw?10:30)) { swcnt = 0; sw++; sw &= 3; } switch(sw) { case 0: get_time(); putchr(0,(hour+dst)/10); putchr(1,(hour+dst)%10); putchr(2,minute/10); putchr(3,minute%10); break; case 1: if(swcnt == 0) { temp = readTemperature() / 10; } putchr(2,temp%10); t = temp / 10; putchr(0,t/10); putchr(1,t%10); putchr(3,0x0c); break; case 2: if(swcnt == 0) { hum = readHumidity() * 5 / 512; } putchr(2,hum%10); t = hum / 10; putchr(0,t/10); putchr(1,t%10); dsp_buf[3] = chrH; break; case 3: if(swcnt == 0) { pres = readPressure() / 100; } t = pres; if(t > 999) { putchr(3,t%10); t /= 10; putchr(2,t%10); t /= 10; putchr(1,t%10); t /= 10; putchr(0,t); } else { dsp_buf[0] = chrP; putchr(3,t%10); t /= 10; putchr(2,t%10); t /= 10; putchr(1,t%10); } break; default:; } }
boolean DHT11::readVal( HardwareTypeIdentifier type, HardwareCommandResult* result ) { if(result == NULL) return false; if(type == HWType_temprature) { readTemperature(result); return true; } else if(type == HWType_humidity) { readHumidity(result); return true; } return false; }
double readDewPoint(int file) { double A = 8.1332; double B = 1762.39; double C = 235.66; double dewpoint; double temp = readTemperature(file); double humi = readHumidity(file); //CALCULATE PARTIAL PRESSURE double exponent = (A - (B / (temp + C))); double PPtamb = pow(10, exponent); dewpoint = - ((B / (log10(humi * (PPtamb / 100)) - A)) + C); //printf("DewPoint %f C\n", dewpoint); return dewpoint; }
void wuclass_temperature_humidity_sensor_update(wuobject_t *wuobject) { sbi(TCCR0B, CS01); sbi(TCCR0B, CS00); sbi(TIMSK0, TOIE0); SHT1x(5,6); int temperature, temperatureRaw, humidityRaw, humidity; temperatureRaw=readTemperatureRaw(); temperatureRaw=temperatureRaw-4000; temperature=temperatureRaw/100; humidityRaw=readHumidity(); humidity=(temperature*(100000+800*humidityRaw) + (405000+28*humidityRaw)*humidityRaw - 4*10000000)/10000000 - 11; DEBUG_LOG(DBG_WKPFUPDATE, "WKPFUPDATE(TemperatureHumiditySensor): Sensed temperature value: %d.%dC\n", temperature, temperatureRaw%100); DEBUG_LOG(DBG_WKPFUPDATE, "WKPFUPDATE(TemperatureHumiditySensor): Sensed humidity value: %d %% \n", humidity); wkpf_internal_write_property_int16(wuobject, WKPF_PROPERTY_TEMPERATURE_HUMIDITY_SENSOR_CURRENT_VALUE_TEMPERATURE, temperature); wkpf_internal_write_property_int16(wuobject, WKPF_PROPERTY_TEMPERATURE_HUMIDITY_SENSOR_CURRENT_VALUE_HUMIDITY, humidity); }
float DHT::getDewPoint() { return computeDewPoint(readTemperature(), readHumidity()); }
float DHT::getHeatIndex() { return convertFtoC(computeHeatIndex(convertCtoF(readTemperature()), readHumidity())); }
float DHT::getHumidity() { return readHumidity(); }
int main(int argc, char *argv[ ]) { /* listen on sock_fd, new connection on new_fd */ int sockfd, new_fd; /* my address information */ struct sockaddr_in my_addr; /* connector’s address information */ struct sockaddr_in their_addr; int sin_size; struct sigaction sa; int yes = 1; if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror("Server-socket() error lol!"); exit(1); } else printf("Server-socket() sockfd is OK...\n"); if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int)) == -1) { perror("Server-setsockopt() error lol!"); exit(1); } else printf("Server-setsockopt is OK...\n"); /* host byte order */ my_addr.sin_family = AF_INET; /* short, network byte order */ my_addr.sin_port = htons(MYPORT); /* automatically fill with my IP */ my_addr.sin_addr.s_addr = INADDR_ANY; printf("Server-Using %s and port %d...\n", inet_ntoa(my_addr.sin_addr), MYPORT); /* zero the rest of the struct */ memset(&(my_addr.sin_zero), '\0', 8); if(bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1) { perror("Server-bind() error"); exit(1); } else printf("Server-bind() is OK...\n"); if(listen(sockfd, BACKLOG) == -1) { perror("Server-listen() error"); exit(1); } printf("Server-listen() is OK...Listening...\n"); /* clean all the dead processes */ sa.sa_handler = sigchld_handler; sigemptyset(&sa.sa_mask); sa.sa_flags = SA_RESTART; if(sigaction(SIGCHLD, &sa, NULL) == -1) { perror("Server-sigaction() error"); exit(1); } else printf("Server-sigaction() is OK...\n"); /* accept() loop */ while(1) { sin_size = sizeof(struct sockaddr_in); if((new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size)) == -1) { perror("Server-accept() error"); continue; } else printf("Server-accept() is OK...\n"); printf("Server-new socket, new_fd is OK...\n"); printf("Server: Got connection from %s\n", inet_ntoa(their_addr.sin_addr)); /* this is the child process */ if(!fork()) { /* child doesn’t need the listener */ close(sockfd); bool contins = true; char *hup; while(contins){ hup = readHumidity(); if(send(new_fd, hup, strlen(hup), 0) == -1){ perror("Server-send() error lol!"); contins = false; } sleep(10); } close(new_fd); exit(0); } else printf("Server-send is OK...!\n"); /* parent doesn’t need this*/ close(new_fd); printf("Server-new socket, new_fd closed successfully...\n"); } return 0; }
uint8_t DHT::getHumidity() { return readHumidity(); }
int main(int argc, char **argv) { int next_option; option_struct own_options; own_options.temperature = 0; own_options.humidity = 0; own_options.dewpoint = 0; own_options.output = 0; do { next_option = getopt_long(argc, argv, short_options, long_options, NULL); switch (next_option) { case 'h': own_options.humidity = 1; break; case 't': own_options.temperature = 1; break; case 'd': own_options.dewpoint = 1; break; case 'o': own_options.output = 1; own_options.path = optarg; break; case '?': printf("To be updated...\n"); break; case -1: break; default: printf("To be updated...\n"); break; } } while (next_option != -1); if(!own_options.output) printf("**** TEMPERATURE & HUMIDITY SENSOR TEST PROGRAM ****\n"); int file; char *filename = "/dev/i2c-1"; char buf[5]; file = open(filename, O_RDWR); if(file<0) { perror("HTU21D:Fail opening i2c device file"); close(file); exit(EXIT_FAILURE); } if((ioctl(file, I2C_SLAVE, I2C_ADDR)) < 0) { perror("HTU21D:Fail selecting i2c device"); close(file); exit(EXIT_FAILURE); } if(own_options.temperature) { if(own_options.output) { WriteToFile(own_options.path, "temperature.txt", readTemperature(file)); } else { printf("Temperature: %.2f C\n", readTemperature(file)); } } if(own_options.humidity) { if(own_options.output) { WriteToFile(own_options.path, "humidity.txt", readHumidity(file)); } else { printf("Relative Humidity: %.2f %%\n", readHumidity(file)); } } if(own_options.dewpoint) { if(own_options.output) { WriteToFile(own_options.path, "dewpoint.txt", readDewPoint(file)); } else { printf("Dew Point: %.2f C\n", readDewPoint(file)); } } close(file); return(EXIT_SUCCESS); }