static void mqttConnectedCb(uint32_t *args) { MQTT_Client* client = (MQTT_Client*)args; MQTT_DBG("MQTT: Connected"); int i; char * buff = (char *)os_zalloc(64); uint32_t vdd33 = readvdd33(); sensor_data data; sensors_get_data(&data); c_sprintf(buff,"%f",data.sht21.temp); MQTT_Publish(&mqtt_client, "temperature/"SERIAL_NUMBER, buff, strlen(buff), 0, 1); os_memset(buff,0,64); c_sprintf(buff,"%f",data.sht21.hum); MQTT_Publish(&mqtt_client, "humidity/"SERIAL_NUMBER, buff, strlen(buff), 0, 1); os_memset(buff,0,64); c_sprintf(buff,"%f",(float)(vdd33/1000.0)); MQTT_Publish(&mqtt_client, "voltage/"SERIAL_NUMBER, buff, strlen(buff), 0, 1); os_free(buff); }
//TODO move to own file int ICACHE_FLASH_ATTR http_dht_api_read(http_connection *c) { NODE_DBG("http_dht_api_read"); //wait for whole body if(c->state <HTTPD_STATE_BODY_END) return HTTPD_CGI_MORE; //write headers http_SET_HEADER(c,HTTP_CONTENT_TYPE,JSON_CONTENT_TYPE); http_response_OK(c); sensor_data data; sensors_get_data(&data); //create json cJSON *root = cJSON_CreateObject(); cJSON_AddNumberToObject(root,"temp",data.dht22.temp); cJSON_AddNumberToObject(root,"hum",data.dht22.hum); //write json http_write_json(c,root); //delete json struct cJSON_Delete(root); return HTTPD_CGI_DONE; }
static void ICACHE_FLASH_ATTR sensor_read_timer_cb(void *arg){ char * buff = (char *)os_zalloc(64); sensor_data data; sensors_get_data(&data); c_sprintf(buff,"%f",data.dht22.temp); MQTT_Publish(&mqtt_client, "temperature/"SERIAL_NUMBER, data.dht22.temp_string, strlen(data.dht22.temp_string), 0, 1); os_memset(buff,0,64); c_sprintf(buff,"%f",data.dht22.hum); MQTT_Publish(&mqtt_client, "humidity/"SERIAL_NUMBER, data.dht22.hum_string, strlen(data.dht22.hum_string), 0, 1); os_memset(buff,0,64); c_sprintf(buff,"%d",data.bmp180.press); MQTT_Publish(&mqtt_client, "pressure/"SERIAL_NUMBER, buff, strlen(buff), 0, 1); os_free(buff); }