relay, switcher, dht backend
This commit is contained in:
parent
2762d4fe9e
commit
659bf875ea
|
@ -321,6 +321,13 @@ static esp_err_t stream_handler(httpd_req_t *req){
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern void relay(int8_t value);
|
||||||
|
extern void switcher(int waitmsec, bool revert = false);
|
||||||
|
extern void gettemperature(bool is_dht21 = false);
|
||||||
|
extern float humidity;
|
||||||
|
extern float temp;
|
||||||
|
extern int8_t relay_on;
|
||||||
|
|
||||||
static esp_err_t cmd_handler(httpd_req_t *req){
|
static esp_err_t cmd_handler(httpd_req_t *req){
|
||||||
char* buf;
|
char* buf;
|
||||||
size_t buf_len;
|
size_t buf_len;
|
||||||
|
@ -360,6 +367,7 @@ static esp_err_t cmd_handler(httpd_req_t *req){
|
||||||
int val = atoi(value);
|
int val = atoi(value);
|
||||||
sensor_t * s = esp_camera_sensor_get();
|
sensor_t * s = esp_camera_sensor_get();
|
||||||
int res = 0;
|
int res = 0;
|
||||||
|
char res_s[60] = "";
|
||||||
if(!strcmp(variable, "framesize")) {
|
if(!strcmp(variable, "framesize")) {
|
||||||
if(s->pixformat == PIXFORMAT_JPEG) res = s->set_framesize(s, (framesize_t)val);
|
if(s->pixformat == PIXFORMAT_JPEG) res = s->set_framesize(s, (framesize_t)val);
|
||||||
}
|
}
|
||||||
|
@ -428,6 +436,21 @@ static esp_err_t cmd_handler(httpd_req_t *req){
|
||||||
Serial.print('.');
|
Serial.print('.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if(!strcmp(variable, "relay")) {
|
||||||
|
relay(val);
|
||||||
|
sprintf(res_s, "Relay %d", relay_on);
|
||||||
|
Serial.println(res_s);
|
||||||
|
}
|
||||||
|
else if(!strcmp(variable, "switcher")) {
|
||||||
|
switcher(val);
|
||||||
|
sprintf(res_s, "Switcher %d", val);
|
||||||
|
Serial.println(res_s);
|
||||||
|
}
|
||||||
|
else if(!strcmp(variable, "dht")) {
|
||||||
|
gettemperature(val == 1);
|
||||||
|
sprintf(res_s, "Temperature: %.1f°C<br>Humidity: %.0f%s", temp, humidity, "%");
|
||||||
|
Serial.println(res_s);
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
res = -1;
|
res = -1;
|
||||||
}
|
}
|
||||||
|
@ -435,7 +458,7 @@ static esp_err_t cmd_handler(httpd_req_t *req){
|
||||||
return httpd_resp_send_500(req);
|
return httpd_resp_send_500(req);
|
||||||
}
|
}
|
||||||
httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*");
|
httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*");
|
||||||
return httpd_resp_send(req, NULL, 0);
|
return httpd_resp_send(req, res_s, strlen(res_s));
|
||||||
}
|
}
|
||||||
|
|
||||||
static esp_err_t status_handler(httpd_req_t *req){
|
static esp_err_t status_handler(httpd_req_t *req){
|
||||||
|
|
|
@ -582,8 +582,7 @@ void WifiSetup() {
|
||||||
if (mdnsName[k] == '_')
|
if (mdnsName[k] == '_')
|
||||||
break;
|
break;
|
||||||
if (k < sizeof(mdnsName)) {
|
if (k < sizeof(mdnsName)) {
|
||||||
int i;
|
for (int i = 0; i < sizeof(auto_rename_by_ip3); i++){
|
||||||
for (i = 0; i < sizeof(auto_rename_by_ip3); i++){
|
|
||||||
if (auto_rename_by_ip3[i] == ip[3]) {
|
if (auto_rename_by_ip3[i] == ip[3]) {
|
||||||
char s[5];
|
char s[5];
|
||||||
i += 1;
|
i += 1;
|
||||||
|
|
|
@ -0,0 +1,118 @@
|
||||||
|
#include <HTTPClient.h>
|
||||||
|
#include <ESP32httpUpdate.h>
|
||||||
|
|
||||||
|
#define SWITCH_PIN 2
|
||||||
|
#define SWITCH_WAIT 300
|
||||||
|
|
||||||
|
#define FIRMWARE_FOLDER "http://192.168.108.43:8080/win/winweb/espfw/cam205/"
|
||||||
|
#define FIRMWARE_FILE "esp32_cam205_last.bin"
|
||||||
|
|
||||||
|
#define RELAY_PIN 15
|
||||||
|
int8_t relay_on = 0;
|
||||||
|
|
||||||
|
#include <DHT.h>
|
||||||
|
#define DHT_PIN 13
|
||||||
|
DHT dht11(DHT_PIN, DHT11);
|
||||||
|
DHT dht21(DHT_PIN, DHT21);
|
||||||
|
float humidity, temp; // Values read from sensor
|
||||||
|
|
||||||
|
void update() {
|
||||||
|
|
||||||
|
Serial.println("Updating with " FIRMWARE_FILE "...");
|
||||||
|
//stop_httpds();
|
||||||
|
|
||||||
|
t_httpUpdate_return ret = ESPhttpUpdate.update(FIRMWARE_FOLDER FIRMWARE_FILE);
|
||||||
|
|
||||||
|
switch (ret) {
|
||||||
|
case HTTP_UPDATE_FAILED:
|
||||||
|
Serial.printf("HTTP_UPDATE_FAILED Error (%d): %s\n", ESPhttpUpdate.getLastError(), ESPhttpUpdate.getLastErrorString().c_str());
|
||||||
|
//need_update(false);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case HTTP_UPDATE_NO_UPDATES:
|
||||||
|
Serial.println("HTTP_UPDATE_NO_UPDATES");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case HTTP_UPDATE_OK:
|
||||||
|
Serial.println("HTTP_UPDATE_OK");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void relay(int8_t value) {
|
||||||
|
pinMode(RELAY_PIN, OUTPUT);
|
||||||
|
if(value == -1)
|
||||||
|
relay_on = abs(relay_on - 1);
|
||||||
|
else
|
||||||
|
relay_on = value;
|
||||||
|
if (relay_on > 0)
|
||||||
|
relay_on = 1;
|
||||||
|
else if (relay_on < 0)
|
||||||
|
relay_on = 0;
|
||||||
|
digitalWrite(RELAY_PIN, relay_on);
|
||||||
|
}
|
||||||
|
|
||||||
|
void switcher(int waitmsec, bool revert = false) {
|
||||||
|
int L0 = 0;
|
||||||
|
int L1 = 1;
|
||||||
|
if (revert) {
|
||||||
|
L0 = 1;
|
||||||
|
L1 = 0;
|
||||||
|
}
|
||||||
|
pinMode(SWITCH_PIN, OUTPUT);
|
||||||
|
digitalWrite(SWITCH_PIN, L1);
|
||||||
|
if (waitmsec > 0) {
|
||||||
|
delay(waitmsec);
|
||||||
|
digitalWrite(SWITCH_PIN, L0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned long previousMillis = 0; // will store last temp was read
|
||||||
|
const long interval = 2000; // interval at which to read sensor
|
||||||
|
bool is_dht_inited = false;
|
||||||
|
|
||||||
|
void gettemperature(bool is_dht21 = false) {
|
||||||
|
|
||||||
|
if (!is_dht_inited){
|
||||||
|
is_dht_inited = true;
|
||||||
|
if (is_dht21) {
|
||||||
|
dht21.begin();
|
||||||
|
} else {
|
||||||
|
dht11.begin();
|
||||||
|
}
|
||||||
|
delay(1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Wait at least 2 seconds seconds between measurements.
|
||||||
|
// if the difference between the current time and last time you read
|
||||||
|
// the sensor is bigger than the interval you set, read the sensor
|
||||||
|
// Works better than delay for things happening elsewhere also
|
||||||
|
unsigned long currentMillis = millis();
|
||||||
|
|
||||||
|
if (currentMillis - previousMillis >= interval) {
|
||||||
|
// save the last time you read the sensor
|
||||||
|
previousMillis = currentMillis;
|
||||||
|
|
||||||
|
// Reading temperature for humidity takes about 250 milliseconds!
|
||||||
|
// Sensor readings may also be up to 2 seconds 'old' (it's a very slow sensor)
|
||||||
|
// Check if any reads failed and exit early (to try again).
|
||||||
|
for (int i = 0; i < 10; i++) {
|
||||||
|
if (is_dht21) {
|
||||||
|
humidity = dht21.readHumidity(); // Read humidity (percent)
|
||||||
|
temp = dht21.readTemperature(false); // Read temperature as Fahrenheit
|
||||||
|
} else {
|
||||||
|
humidity = dht11.readHumidity(); // Read humidity (percent)
|
||||||
|
temp = dht11.readTemperature(false); // Read temperature as Fahrenheit
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isnan(humidity) || isnan(temp) || temp > 1000 || humidity > 1000) {
|
||||||
|
delay(500);
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
humidity = 0;
|
||||||
|
temp = 0;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue