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;
|
||||
}
|
||||
|
||||
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){
|
||||
char* buf;
|
||||
size_t buf_len;
|
||||
|
@ -360,6 +367,7 @@ static esp_err_t cmd_handler(httpd_req_t *req){
|
|||
int val = atoi(value);
|
||||
sensor_t * s = esp_camera_sensor_get();
|
||||
int res = 0;
|
||||
char res_s[60] = "";
|
||||
if(!strcmp(variable, "framesize")) {
|
||||
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('.');
|
||||
}
|
||||
}
|
||||
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 {
|
||||
res = -1;
|
||||
}
|
||||
|
@ -435,7 +458,7 @@ static esp_err_t cmd_handler(httpd_req_t *req){
|
|||
return httpd_resp_send_500(req);
|
||||
}
|
||||
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){
|
||||
|
|
|
@ -582,8 +582,7 @@ void WifiSetup() {
|
|||
if (mdnsName[k] == '_')
|
||||
break;
|
||||
if (k < sizeof(mdnsName)) {
|
||||
int i;
|
||||
for (i = 0; i < sizeof(auto_rename_by_ip3); i++){
|
||||
for (int i = 0; i < sizeof(auto_rename_by_ip3); i++){
|
||||
if (auto_rename_by_ip3[i] == ip[3]) {
|
||||
char s[5];
|
||||
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