static void ICACHE_FLASH_ATTR networkConnectedCb(void *arg) { struct espconn* conn = arg; char buf[384]; char buf2[255]; char t1[32]; char t2[32]; char t3[32]; //double expand as sysCfg.broadcastd_url cntains placeholders as well os_sprintf(buf2,"GET %s HTTP/1.1\r\nHost: %s\r\nAccept: */*\r\nUser-Agent: Mozilla/4.0 (compatible; esp8266; Windows NT 5.1)\r\n\r\n",sysCfg.broadcastd_url,sysCfg.broadcastd_host); if(sysCfg.sensor_dht22_enable) { dht_temp_str(t2); dht_humi_str(t3); os_sprintf(buf,buf2,currGPIO12State,currGPIO13State,currGPIO15State,"N/A",t2,t3); } if(sysCfg.sensor_ds18b20_enable) { // If DS18b20 daemon is enabled, then send up to 3 sensor's data instead ds_str(t1,0); if(numds>1) ds_str(t2,1); //reuse to save space if(numds>2) ds_str(t3,2); //reuse to save space os_sprintf(buf,buf2,currGPIO12State,currGPIO13State,currGPIO15State,t1,t2,t3); } espconn_sent(conn, (uint8*)buf, os_strlen(buf)); os_printf("Sent HTTP GET: %s\n\r",buf); }
//Template code for the DHT 22 page. void ICACHE_FLASH_ATTR tplDHT(HttpdConnData *connData, char *token, void **arg) { char buff[128]; if (token==NULL) return; os_strcpy(buff, "Unknown"); if (os_strcmp(token, "temperature")==0) { dht_temp_str(buff); } if (os_strcmp(token, "humidity")==0) { dht_humi_str(buff); } httpdSend(connData, buff, -1); }
int ICACHE_FLASH_ATTR cgiDHT22(HttpdConnData *connData) { char buff[256]; char temp[32]; char humi[32]; httpdStartResponse(connData, 200); httpdHeader(connData, "Content-Type", "text/json"); httpdHeader(connData, "Access-Control-Allow-Origin", "*"); httpdEndHeaders(connData); dht_temp_str(temp); dht_humi_str(humi); os_sprintf(buff, "{ \n\"temperature\": \"%s\"\n , \n\"humidity\": \"%s\"\n}\n", temp, humi ); httpdSend(connData, buff, -1); return HTTPD_CGI_DONE; }
static ICACHE_FLASH_ATTR void MQTTbroadcastReading(void* arg){ if(sysCfg.mqtt_enable==1) { //os_printf("Sending MQTT\n"); if(sysCfg.sensor_dht22_enable) { struct sensor_reading* result = readDHT(); if(result->success) { char temp[32]; char topic[128]; int len; dht_temp_str(temp); len = os_strlen(temp); os_sprintf(topic,"%s",sysCfg.mqtt_dht22_temp_pub_topic); MQTT_Publish(&mqttClient,topic,temp,len,0,0); os_printf("Published \"%s\" to topic \"%s\"\n",temp,topic); dht_humi_str(temp); len = os_strlen(temp); os_sprintf(topic,"%s",sysCfg.mqtt_dht22_humi_pub_topic); MQTT_Publish(&mqttClient,topic,temp,len,0,0); os_printf("Published \"%s\" to topic \"%s\"\n",temp,topic); } } if(sysCfg.sensor_ds18b20_enable) { struct sensor_reading* result = read_ds18b20(); if(result->success) { char temp[32]; char topic[128]; int len; ds_str(temp,0); len = os_strlen(temp); os_sprintf(topic,"%s",sysCfg.mqtt_ds18b20_temp_pub_topic); MQTT_Publish(&mqttClient,topic,temp,len,0,0); os_printf("Published \"%s\" to topic \"%s\"\n",temp,topic); } } } }