Загрузить файлы в «R60ABD1/ESP32_R60ABD1_http_logger»
This commit is contained in:
287
R60ABD1/ESP32_R60ABD1_http_logger/ESP32_R60ABD1_http_logger.ino
Normal file
287
R60ABD1/ESP32_R60ABD1_http_logger/ESP32_R60ABD1_http_logger.ino
Normal file
@@ -0,0 +1,287 @@
|
||||
//ESP8266
|
||||
//#include <ESP8266HTTPClient.h>
|
||||
//#include <ESP8266WiFi.h>
|
||||
//#define BrdMark "ESP8266"
|
||||
//const char *ap_id = "R60_8266_01";
|
||||
//const char *ap_id = "R60_GERMAN";
|
||||
|
||||
// target - DOIT ESP32 DEVKIT V1
|
||||
#include <HTTPClient.h>
|
||||
#include <WiFi.h>
|
||||
#define BrdMark "ESP32"
|
||||
|
||||
#include <WiFiClient.h>
|
||||
// office server
|
||||
//#define WFSSID "TP-Link_7C38"
|
||||
//#define WFPSWD "36929092"
|
||||
// my home server
|
||||
#define WFSSID "Keenetic-6595"
|
||||
#define WFPSWD "1Q2w3e4r"
|
||||
// clinica WiFI
|
||||
//#define WFSSID "clinica"
|
||||
//#define WFPSWD "givemeaccessnow"
|
||||
// office WiFi
|
||||
//#define WFSSID "MediaMetrics_2.4g"
|
||||
//#define WFPSWD "germanklimenko"
|
||||
// German home
|
||||
//#define WFSSID "MTS_GPON_9f1ac0"
|
||||
//#define WFPSWD "D9a287k9"
|
||||
|
||||
//const char* httpuri ="http://192.168.0.104:8080/pox";
|
||||
//const char* httpuri ="http://192.168.3.14/pox";
|
||||
const char* httpuri ="http://192.168.1.79/pox"; // home 25.03.2026
|
||||
//const char* httpuri ="http://aim.kwam.ru:8080/pox";
|
||||
//const char* httpuri ="http://195.201.126.70:8080/pox";
|
||||
//const char* httpuri ="http://activity206.li.ru/cgi-bin/radar.sh"; // Владимир
|
||||
const char *ap_id = "R60_02";
|
||||
|
||||
#define LOOP_TIME 1000
|
||||
bool wifi_started = false;
|
||||
|
||||
// Serial2
|
||||
#define RXD2 16
|
||||
#define TXD2 17
|
||||
#define BAUDRATE 115200
|
||||
|
||||
// MicRadar60 data block definitions
|
||||
#define BLK_HEAD_1 85
|
||||
#define BLK_HEAD_2 170
|
||||
#define DATA_READ_MAX_SIZE 64
|
||||
#define DATA_BLOCK_LEN 10
|
||||
|
||||
#define DATA_BLOCK_MASK 89 // 0x59
|
||||
#define DATA_BLOCK_MASK_POS 1
|
||||
#define DATA_TYPE_MASK_POS 2
|
||||
#define CMD_TYPE_MASK_POS 3
|
||||
#define DATA_VALUE_POS 6
|
||||
#define HEAR_RATE_MASK 133 // 0x85
|
||||
#define BREATH_RATE_MASK 129 // 0x81
|
||||
#define SLEEP_VALUE_MASK 132 // 0x84
|
||||
#define HUMAN_DETECT_MASK 128 // 0x80
|
||||
#define PARSE_DATA_COUNT 4
|
||||
|
||||
#define PARSE_DATA_COUNT 4
|
||||
enum{
|
||||
hr_pos=0,
|
||||
br_pos,
|
||||
mv_pos,
|
||||
dv_pos
|
||||
};
|
||||
uint8_t k=0,f=0, rf=0, rpos=0, i, s, dl=0, b1;
|
||||
uint8_t data_read[DATA_READ_MAX_SIZE], data_updt_flag[PARSE_DATA_COUNT];
|
||||
uint16_t data[PARSE_DATA_COUNT];
|
||||
|
||||
|
||||
uint32_t t_last;
|
||||
|
||||
void setup() {
|
||||
// Note the format for setting a serial port is as follows: Serial2.begin(baud-rate, protocol, RX pin, TX pin);
|
||||
Serial.begin(BAUDRATE);
|
||||
Serial2.begin(BAUDRATE, SERIAL_8N1, RXD2, TXD2);
|
||||
pinMode(LED_BUILTIN, OUTPUT);
|
||||
Serial.println("Serial Txd is on pin: "+String(TXD2));
|
||||
Serial.println("Serial Rxd is on pin: "+String(RXD2));
|
||||
|
||||
Serial.printf("ESP32 Chip model = %s Rev %d\n", ESP.getChipModel(), ESP.getChipRevision());
|
||||
Serial.print("Chip ID: ");
|
||||
Serial.println(ESP.getEfuseMac());
|
||||
|
||||
Serial.println("Start wifi "+String(millis()));
|
||||
wifi_started = startWiFiClient(); // time reading by firststart flag
|
||||
if(wifi_started){
|
||||
Serial.println("wifi started "+String(millis()));
|
||||
digitalWrite(LED_BUILTIN, HIGH);
|
||||
delay(1000);
|
||||
digitalWrite(LED_BUILTIN, LOW);
|
||||
|
||||
// Получение мирового времени
|
||||
Serial.print("Retrieving time: ");
|
||||
configTime(0, 0, "pool.ntp.org"); // get UTC time via NTP
|
||||
time_t now = time(nullptr);
|
||||
while (now < 24 * 3600)
|
||||
{
|
||||
//Serial.print(".");
|
||||
digitalWrite(LED_BUILTIN, HIGH);
|
||||
delay(20);
|
||||
digitalWrite(LED_BUILTIN, LOW);
|
||||
delay(80);
|
||||
now = time(nullptr);
|
||||
//pisk(1);
|
||||
}
|
||||
Serial.println(now);
|
||||
digitalWrite(LED_BUILTIN, HIGH);
|
||||
delay(200);
|
||||
digitalWrite(LED_BUILTIN, LOW);
|
||||
delay(200);
|
||||
digitalWrite(LED_BUILTIN, HIGH);
|
||||
delay(200);
|
||||
digitalWrite(LED_BUILTIN, LOW);
|
||||
delay(200);
|
||||
digitalWrite(LED_BUILTIN, HIGH);
|
||||
delay(200);
|
||||
digitalWrite(LED_BUILTIN, LOW);
|
||||
delay(200);
|
||||
|
||||
}else{
|
||||
Serial.println("can not started WiFi");
|
||||
}
|
||||
|
||||
for(i = 0; i<PARSE_DATA_COUNT; i++){
|
||||
data[i]=0;data_updt_flag[i]=0;
|
||||
}
|
||||
t_last = millis();
|
||||
}
|
||||
|
||||
void loop() { //Choose Serial1 or Serial2 as required
|
||||
while (Serial2.available()) {
|
||||
k = uint8_t(Serial2.read());
|
||||
//Serial.print(k);
|
||||
//Serial.print(" ");
|
||||
f=1;
|
||||
if(rpos<DATA_READ_MAX_SIZE){
|
||||
data_read[rpos]=k;
|
||||
rpos++;
|
||||
}
|
||||
}
|
||||
if(f==1){
|
||||
//Serial.println(" ==================== ");
|
||||
if(rpos>=DATA_BLOCK_LEN){
|
||||
//if(data_read[DATA_BLOCK_MASK_POS]==DATA_BLOCK_MASK){
|
||||
/*
|
||||
if(data_read[DATA_TYPE_MASK_POS]==HUMAN_DETECT_MASK ){ //HUMAN_DETECT_MASK HEAR_RATE_MASK
|
||||
for(i=0;i<rpos;i++){Serial.print(data_read[i]);Serial.print(" ");}
|
||||
Serial.println();
|
||||
}
|
||||
*/
|
||||
switch(data_read[DATA_TYPE_MASK_POS]){
|
||||
case HEAR_RATE_MASK:
|
||||
//Serial.println("Heart block. ");
|
||||
if(data_read[CMD_TYPE_MASK_POS] == 2){ // частота сердечных сокр-й
|
||||
data[hr_pos] = data_read[DATA_VALUE_POS];
|
||||
data_updt_flag[hr_pos] = 1;
|
||||
}
|
||||
break;
|
||||
case BREATH_RATE_MASK:
|
||||
//Serial.println("Breath block. ");
|
||||
data[br_pos] = data_read[DATA_VALUE_POS];
|
||||
data_updt_flag[br_pos] = 1;
|
||||
break;
|
||||
case HUMAN_DETECT_MASK:
|
||||
//Serial.println("Human detect block. ");
|
||||
if(data_read[CMD_TYPE_MASK_POS] == 3){ // движение тела
|
||||
data[mv_pos] = data_read[DATA_VALUE_POS];
|
||||
data_updt_flag[mv_pos] = 1;
|
||||
}
|
||||
if(data_read[CMD_TYPE_MASK_POS] == 4){ // расстояние до тела тела
|
||||
data[dv_pos] = data_read[DATA_VALUE_POS]*256+data_read[DATA_VALUE_POS+1];
|
||||
data_updt_flag[dv_pos] = 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
//}
|
||||
//Serial.println();
|
||||
}
|
||||
f=0;
|
||||
rf=0;
|
||||
rpos=0;
|
||||
}
|
||||
if((millis() - t_last) >= LOOP_TIME){
|
||||
bool rez = sendData();
|
||||
Serial.print("Heart rate: ");
|
||||
Serial.print(data[hr_pos]);Serial.print(" / ");Serial.print(data_updt_flag[hr_pos]);
|
||||
Serial.print(", Breath rate: ");
|
||||
Serial.print(data[br_pos]);Serial.print(" / ");Serial.print(data_updt_flag[br_pos]);
|
||||
Serial.print(", Distance: ");
|
||||
Serial.print(data[dv_pos]);Serial.print(" / ");Serial.print(data_updt_flag[dv_pos]);
|
||||
Serial.print(", Motion value: ");
|
||||
Serial.print(data[mv_pos]);Serial.print(" / ");Serial.print(data_updt_flag[mv_pos]);
|
||||
Serial.print(" | ");
|
||||
s = 0;
|
||||
for(i = 0; i<PARSE_DATA_COUNT; i++){
|
||||
Serial.print(data_updt_flag[i]);
|
||||
s+=data_updt_flag[i];
|
||||
}
|
||||
Serial.print(" [ "); Serial.print(s);
|
||||
for(i = 0; i<PARSE_DATA_COUNT; i++){
|
||||
data_updt_flag[i]=0;
|
||||
}
|
||||
s=0;
|
||||
for(i = 0; i<PARSE_DATA_COUNT; i++){
|
||||
s+=data_updt_flag[i];
|
||||
}
|
||||
Serial.print(" / "); Serial.print(s); Serial.print(" ]");
|
||||
|
||||
t_last = millis();
|
||||
Serial.println();
|
||||
}
|
||||
}
|
||||
|
||||
bool sendData(){
|
||||
// send data to host
|
||||
WiFiClient client;
|
||||
time_t now = time(nullptr);
|
||||
char fstr[16];
|
||||
String ds = ap_id;
|
||||
sprintf(fstr,"%lu", now);
|
||||
ds += ", ";
|
||||
ds += fstr;
|
||||
sprintf(fstr,"%i", data[hr_pos]);
|
||||
ds += ", ";
|
||||
ds += fstr;
|
||||
sprintf(fstr,"%i", data_updt_flag[hr_pos]);
|
||||
ds += ", ";
|
||||
ds += fstr;
|
||||
sprintf(fstr,"%i", data[br_pos]);
|
||||
ds += ", ";
|
||||
ds += fstr;
|
||||
sprintf(fstr,"%i", data_updt_flag[br_pos]);
|
||||
ds += ", ";
|
||||
ds += fstr;
|
||||
sprintf(fstr,"%i", data[dv_pos]);
|
||||
ds += ", ";
|
||||
ds += fstr;
|
||||
sprintf(fstr,"%i", data_updt_flag[dv_pos]);
|
||||
ds += ", ";
|
||||
ds += fstr;
|
||||
sprintf(fstr,"%i", data[mv_pos]);
|
||||
ds += ", ";
|
||||
ds += fstr;
|
||||
sprintf(fstr,"%i", data_updt_flag[mv_pos]);
|
||||
ds += ", ";
|
||||
ds += fstr;
|
||||
ds += ", ";
|
||||
ds += BrdMark;
|
||||
HTTPClient http; //Объявить объект класса HttpClient
|
||||
http.begin(client, httpuri); //Укажите адрес запроса
|
||||
http.addHeader("Content-Type", "text/plain"); //Укажите заголовок типа содержимого
|
||||
http.addHeader("Title", ds); // так передадим ID датчика
|
||||
Serial.println("Send data:");
|
||||
Serial.println(ds);
|
||||
int httpCode = http.POST(ds); //Отправьте запрос
|
||||
String payload = http.getString(); //Получите полезную нагрузку ответа
|
||||
Serial.println("HTTP answer:");
|
||||
Serial.println(httpCode); //Распечатать код возврата HTTP
|
||||
Serial.println(payload); //Полезная нагрузка для ответа на запрос печати
|
||||
http.end(); //Закрыть соединение
|
||||
if(httpCode==200){
|
||||
return(true);
|
||||
}else{
|
||||
return(false);
|
||||
}
|
||||
return(true);
|
||||
}
|
||||
|
||||
bool startWiFiClient()
|
||||
{
|
||||
WiFi.mode( WIFI_STA);
|
||||
WiFi.begin(WFSSID, WFPSWD);
|
||||
int try_cnt = 0;
|
||||
while ( WiFi.status() != WL_CONNECTED ) {
|
||||
try_cnt++;
|
||||
Serial.print(".");
|
||||
delay ( 100 );
|
||||
if(try_cnt>100){return(false);}
|
||||
}
|
||||
Serial.println("Connected");
|
||||
return(true);
|
||||
}
|
||||
Reference in New Issue
Block a user