modified: main/include/http_client.h
new file: main/include/lib.h modified: main/src/http_client.c modified: main/src/main.c
This commit is contained in:
1 parent
dc78008721
commit
db7e8c3237
4 files changed
+96
-10
No files matched your search
@@ -17,7 +17,7 @@ bool hc_check_updates();
|
|||||||
struct hc_reg_res hc_reg_dev();
|
struct hc_reg_res hc_reg_dev();
|
||||||
struct hc_dev_config hc_get_dev_conf();
|
struct hc_dev_config hc_get_dev_conf();
|
||||||
|
|
||||||
void hc_send_sensor_data(int humidity, int temperature);
|
void hc_send_sensor_data(float humidity, float temperature);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,70 @@
|
|||||||
|
#ifndef LIB_H
|
||||||
|
#define LIB_H
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Helper function to reverse a string
|
||||||
|
void reverse(char* str, int len) {
|
||||||
|
int i = 0, j = len - 1;
|
||||||
|
while (i < j) {
|
||||||
|
char temp = str[i];
|
||||||
|
str[i] = str[j];
|
||||||
|
str[j] = temp;
|
||||||
|
i++;
|
||||||
|
j--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Helper function to convert an integer to a string
|
||||||
|
int intToStr(int x, char str[], int d) {
|
||||||
|
int i = 0;
|
||||||
|
while (x) {
|
||||||
|
str[i++] = (x % 10) + '0';
|
||||||
|
x = x / 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If the number of digits required is more, then add 0s at the beginning
|
||||||
|
while (i < d)
|
||||||
|
str[i++] = '0';
|
||||||
|
|
||||||
|
reverse(str, i);
|
||||||
|
str[i] = '\0';
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
char* floatToString(float num) {
|
||||||
|
// Allocate memory for the string
|
||||||
|
char* str = (char*)malloc(50 * sizeof(char));
|
||||||
|
if (str == NULL) {
|
||||||
|
// If memory allocation fails, return NULL
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle integer part
|
||||||
|
int intPart = (int)num;
|
||||||
|
int i = intToStr(intPart, str, 0);
|
||||||
|
|
||||||
|
// Handle fractional part
|
||||||
|
float fractionalPart = num - (float)intPart;
|
||||||
|
if (fractionalPart < 0) {
|
||||||
|
fractionalPart = -fractionalPart;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fractionalPart != 0) {
|
||||||
|
str[i++] = '.'; // Add decimal point
|
||||||
|
|
||||||
|
// Consider precision up to 6 digits after the decimal point
|
||||||
|
for (int j = 0; j < 6; j++) {
|
||||||
|
fractionalPart = fractionalPart * 10;
|
||||||
|
int fracIntPart = (int)fractionalPart;
|
||||||
|
str[i++] = fracIntPart + '0';
|
||||||
|
fractionalPart = fractionalPart - fracIntPart;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
str[i] = '\0'; // Null-terminate the string
|
||||||
|
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -10,6 +10,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "http_client.h"
|
#include "http_client.h"
|
||||||
|
#include "lib.h"
|
||||||
|
|
||||||
const char * TAG = "http_client.c";
|
const char * TAG = "http_client.c";
|
||||||
|
|
||||||
@@ -100,7 +101,11 @@ void hc_test()
|
|||||||
xTaskCreate(&http_get_task, "http_get_task", 16384, NULL, 5, NULL);
|
xTaskCreate(&http_get_task, "http_get_task", 16384, NULL, 5, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void hc_send_sensor_data(int humidity, int temperature) {
|
void hc_send_sensor_data(float humidity, float temperature) {
|
||||||
const char* msg = "{\"humidity\": 55,\"temperature\":25.6}";
|
char tmp[50] = "{\"humidity\": ";
|
||||||
send_message(msg);
|
strcat(tmp, floatToString(humidity));
|
||||||
|
strcat(tmp, ",\"temperature\": ");
|
||||||
|
strcat(tmp, floatToString(temperature));
|
||||||
|
strcat(tmp, "}");
|
||||||
|
send_message(tmp);
|
||||||
}
|
}
|
||||||
@@ -8,8 +8,8 @@
|
|||||||
#include "esp_http_client.h"
|
#include "esp_http_client.h"
|
||||||
|
|
||||||
#include <esp_err.h>
|
#include <esp_err.h>
|
||||||
#include "dht.h"
|
|
||||||
|
|
||||||
|
#include "dht.h"
|
||||||
#include "sensor.h"
|
#include "sensor.h"
|
||||||
#include "http_client.h"
|
#include "http_client.h"
|
||||||
|
|
||||||
@@ -31,7 +31,7 @@ void wifi_init(void) {
|
|||||||
ESP_ERROR_CHECK(esp_wifi_start());
|
ESP_ERROR_CHECK(esp_wifi_start());
|
||||||
ESP_ERROR_CHECK(esp_wifi_connect());
|
ESP_ERROR_CHECK(esp_wifi_connect());
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
void temperature_task(void *arg)
|
void temperature_task(void *arg)
|
||||||
{
|
{
|
||||||
ESP_ERROR_CHECK(dht_init(DHT_GPIO, false));
|
ESP_ERROR_CHECK(dht_init(DHT_GPIO, false));
|
||||||
@@ -44,7 +44,6 @@ void temperature_task(void *arg)
|
|||||||
// e.g. in dht22, 604 = 60.4%, 252 = 25.2 C
|
// e.g. in dht22, 604 = 60.4%, 252 = 25.2 C
|
||||||
// If you want to print float data, you should run `make menuconfig`
|
// If you want to print float data, you should run `make menuconfig`
|
||||||
// to enable full newlib and call dht_read_float_data() here instead
|
// to enable full newlib and call dht_read_float_data() here instead
|
||||||
//printf("Humidity: %d Temperature: %d\n", humidity, temperature);
|
|
||||||
printf("Humidity: %d.%d%% Temperature: %d.%d\n", humidity/10, humidity%10, temperature/10,temperature%10);
|
printf("Humidity: %d.%d%% Temperature: %d.%d\n", humidity/10, humidity%10, temperature/10,temperature%10);
|
||||||
} else {
|
} else {
|
||||||
printf("Fail to get dht temperature data\n");
|
printf("Fail to get dht temperature data\n");
|
||||||
@@ -53,12 +52,24 @@ void temperature_task(void *arg)
|
|||||||
}
|
}
|
||||||
vTaskDelete(NULL);
|
vTaskDelete(NULL);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
void main_task(void* args) {
|
void main_task(void* args) {
|
||||||
|
//ESP_ERROR_CHECK(dht_init(DHT_GPIO, false));
|
||||||
|
//vTaskDelay(2000 / portTICK_PERIOD_MS);
|
||||||
|
float humidity = 0;
|
||||||
|
float temperature = 0;
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
hc_send_sensor_data(50,25);
|
ESP_ERROR_CHECK(dht_init(DHT_GPIO, false));
|
||||||
vTaskDelay(5000 / portTICK_PERIOD_MS);
|
vTaskDelay(4000 / portTICK_PERIOD_MS);
|
||||||
|
|
||||||
|
if (dht_read_float_data(DHT_TYPE_DHT22, DHT_GPIO, &humidity, &temperature) == ESP_OK) {
|
||||||
|
} else {
|
||||||
|
printf("Fail to get dht temperature data\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
hc_send_sensor_data(humidity,temperature);
|
||||||
|
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user