mirror of
https://github.com/jomjol/AI-on-the-edge-device.git
synced 2025-12-07 12:06:58 +03:00
* Fix for securing wlan.ini (#1509) * Fix for securing wlan.ini * Fixing error with ' instead of " * Changing to errorcode 403 * maybe strcmp instead of regular == Co-authored-by: Pär Hedberg <par.hedberg@nordicmedtest.se> * Update Web-Installer * solves #1530 (#1531) * Refactor JSON (#1518) * use correct log level * corrected logging * typo * refactored JSON generagion: removed unused parameters, consolidated into singel function, added "pre" * Wrapped 'rate' into double quotes, like all other JSON values Co-authored-by: CaCO3 <caco@ruinelli.ch> * Various corrections (#1519) * use correct log level * corrected logging * typo * add release to webinstaller * changed logs, added INFO log of raw, value, error * . Co-authored-by: CaCO3 <caco@ruinelli.ch> * Prevent auto restart on cam framebuffer init error (#1522) * use correct log level * revert autorestart on camera framebuffer init error * . Co-authored-by: CaCO3 <caco@ruinelli.ch> * #1524 - ensure the recognized digit is less than 10 (#1525) * fix kernel panic (vector out of range) in getReadoutRawString * fix key of caches * fix key of caches * fix key caches * fix cache keys * fix cache keys * move set variables to top * debug * fix key * testing * try fix changelog * test * Update Changelog.md for release * Revert "Update Changelog.md for release" This reverts commit4f51ec7962. * remove testing * fix release creation * testing * Update Changelog.md for release * test * Revert "Merge branch 'master' of https://github.com/haverland/AI-on-the-edge-device" This reverts commitf68695a4c0, reversing changes made toa096cf7182. * Revert "test" This reverts commita096cf7182. * revert testing * #1524 - ensure the result of ZeigerEvalHybridNeu is <10 * Fix late digit transition #1503 Co-authored-by: github-actions <github-actions@github.com> * fix frozen time in datafile on error (#1534) Co-authored-by: CaCO3 <caco@ruinelli.ch> * log NTP server name (#1497) * log NTP server name * . * . * replace calls to /wasserzaehler.html with calls to /value (#1469) Co-authored-by: CaCO3 <caco@ruinelli.ch> * Fix cookie usage, use correct http response codes, add 404 page (#1495) * replaced some HTTP response code with better matching codes * add custom 404 page, add log entry for debugging * fix cookie * replace non-necessary whitespace * . Co-authored-by: CaCO3 <caco@ruinelli.ch> * Don't autofail if NTP server can't be reached during initalization (#1498) This fixes an issue with a restricted network without internet access, where the hardcoded ntp server can't be reached and thus the esp resets, as it's not able to finish initalization. * Update Changelog.md * Update Changelog.md for release * Fix for securing wlan.ini (#1509) * Fix for securing wlan.ini * Fixing error with ' instead of " * Changing to errorcode 403 * maybe strcmp instead of regular == Co-authored-by: Pär Hedberg <par.hedberg@nordicmedtest.se> * Update Web-Installer * solves #1530 (#1531) * Refactor JSON (#1518) * use correct log level * corrected logging * typo * refactored JSON generagion: removed unused parameters, consolidated into singel function, added "pre" * Wrapped 'rate' into double quotes, like all other JSON values Co-authored-by: CaCO3 <caco@ruinelli.ch> * Various corrections (#1519) * use correct log level * corrected logging * typo * add release to webinstaller * changed logs, added INFO log of raw, value, error * . Co-authored-by: CaCO3 <caco@ruinelli.ch> * Prevent auto restart on cam framebuffer init error (#1522) * use correct log level * revert autorestart on camera framebuffer init error * . Co-authored-by: CaCO3 <caco@ruinelli.ch> * #1524 - ensure the recognized digit is less than 10 (#1525) * fix kernel panic (vector out of range) in getReadoutRawString * fix key of caches * fix key of caches * fix key caches * fix cache keys * fix cache keys * move set variables to top * debug * fix key * testing * try fix changelog * test * Update Changelog.md for release * Revert "Update Changelog.md for release" This reverts commit4f51ec7962. * remove testing * fix release creation * testing * Update Changelog.md for release * test * Revert "Merge branch 'master' of https://github.com/haverland/AI-on-the-edge-device" This reverts commitf68695a4c0, reversing changes made toa096cf7182. * Revert "test" This reverts commita096cf7182. * revert testing * #1524 - ensure the result of ZeigerEvalHybridNeu is <10 * Fix late digit transition #1503 Co-authored-by: github-actions <github-actions@github.com> * only use sntp_getservername() after init sntp * set default NTP server on dnew installations Co-authored-by: CaCO3 <caco@ruinelli.ch> Co-authored-by: Ralf Rachinger <git@ralfrachinger.de> Co-authored-by: jomjol <30766535+jomjol@users.noreply.github.com> Co-authored-by: github-actions <github-actions@github.com> Co-authored-by: parhedberg <par.hedberg@gmail.com> Co-authored-by: Pär Hedberg <par.hedberg@nordicmedtest.se> Co-authored-by: Christopher Fenner <9592452+CFenner@users.noreply.github.com> Co-authored-by: Frank Haverland <fspapaping@googlemail.com> * Renamed variables and added debug log (#1537) * add debug logs * renamed variables * renamed TAGs, added flow status logging * . * . Co-authored-by: CaCO3 <caco@ruinelli.ch> * replaced printf usage in LogFile.WriteToFile() * ENABLE_MQTT c++ macro definition (#1546) * macro * 2 * 2 * delete jomjol_mqtt from CMakeLists * mqtt macro * final * ENABLE_INFLUXDB c++ macro definition (#1547) * macro * 2 * 2 * delete jomjol_mqtt from CMakeLists * mqtt macro * final * ENABLE_INFLUXDB c++ macro definition * Update Changelog.md Co-authored-by: parhedberg <par.hedberg@gmail.com> Co-authored-by: Pär Hedberg <par.hedberg@nordicmedtest.se> Co-authored-by: jomjol <30766535+jomjol@users.noreply.github.com> Co-authored-by: Christopher Fenner <9592452+CFenner@users.noreply.github.com> Co-authored-by: CaCO3 <caco@ruinelli.ch> Co-authored-by: Frank Haverland <fspapaping@googlemail.com> Co-authored-by: github-actions <github-actions@github.com> Co-authored-by: Ralf Rachinger <git@ralfrachinger.de> Co-authored-by: Nicolas Liaudat <nliaudat@users.noreply.github.com>
118 lines
3.1 KiB
C++
118 lines
3.1 KiB
C++
#ifndef SERVER_GPIO_H
|
|
#define SERVER_GPIO_H
|
|
|
|
#include <esp_log.h>
|
|
|
|
#include <esp_http_server.h>
|
|
#include <map>
|
|
#include "driver/gpio.h"
|
|
|
|
#include "SmartLeds.h"
|
|
|
|
//#include "ClassControllCamera.h"
|
|
|
|
// wenn __LEDGLOBAL definiert ist, wird eine globale Variable für die LED-Ansteuerung verwendet, ansonsten lokal und jedesmal neu
|
|
#define __LEDGLOBAL
|
|
|
|
typedef enum {
|
|
GPIO_PIN_MODE_DISABLED = 0x0,
|
|
GPIO_PIN_MODE_INPUT = 0x1,
|
|
GPIO_PIN_MODE_INPUT_PULLUP = 0x2,
|
|
GPIO_PIN_MODE_INPUT_PULLDOWN = 0x3,
|
|
GPIO_PIN_MODE_OUTPUT = 0x4,
|
|
GPIO_PIN_MODE_BUILT_IN_FLASH_LED = 0x5,
|
|
GPIO_PIN_MODE_OUTPUT_PWM = 0x6,
|
|
GPIO_PIN_MODE_EXTERNAL_FLASH_PWM = 0x7,
|
|
GPIO_PIN_MODE_EXTERNAL_FLASH_WS281X = 0x8,
|
|
} gpio_pin_mode_t;
|
|
|
|
struct GpioResult {
|
|
gpio_num_t gpio;
|
|
int value;
|
|
};
|
|
|
|
typedef enum {
|
|
GPIO_SET_SOURCE_INTERNAL = 0,
|
|
GPIO_SET_SOURCE_MQTT = 1,
|
|
GPIO_SET_SOURCE_HTTP = 2,
|
|
} gpio_set_source;
|
|
|
|
class GpioPin {
|
|
public:
|
|
GpioPin(gpio_num_t gpio, const char* name, gpio_pin_mode_t mode, gpio_int_type_t interruptType, uint8_t dutyResolution, std::string mqttTopic, bool httpEnable);
|
|
~GpioPin();
|
|
|
|
void init();
|
|
bool getValue(std::string* errorText);
|
|
void setValue(bool value, gpio_set_source setSource, std::string* errorText);
|
|
#ifdef ENABLE_MQTT
|
|
bool handleMQTT(std::string, char* data, int data_len);
|
|
#endif //ENABLE_MQTT
|
|
void publishState();
|
|
void gpioInterrupt(int value);
|
|
gpio_int_type_t getInterruptType() { return _interruptType; }
|
|
gpio_pin_mode_t getMode() { return _mode; }
|
|
gpio_num_t getGPIO(){return _gpio;};
|
|
|
|
private:
|
|
gpio_num_t _gpio;
|
|
const char* _name;
|
|
gpio_pin_mode_t _mode;
|
|
gpio_int_type_t _interruptType;
|
|
std::string _mqttTopic;
|
|
int currentState = -1;
|
|
};
|
|
|
|
esp_err_t callHandleHttpRequest(httpd_req_t *req);
|
|
void taskGpioHandler(void *pvParameter);
|
|
|
|
class GpioHandler {
|
|
public:
|
|
GpioHandler(std::string configFile, httpd_handle_t httpServer);
|
|
~GpioHandler();
|
|
|
|
void init();
|
|
void deinit();
|
|
void registerGpioUri();
|
|
esp_err_t handleHttpRequest(httpd_req_t *req);
|
|
void taskHandler();
|
|
void gpioInterrupt(GpioResult* gpioResult);
|
|
void flashLightEnable(bool value);
|
|
bool isEnabled() { return _isEnabled; }
|
|
#ifdef ENABLE_MQTT
|
|
void handleMQTTconnect();
|
|
#endif //ENABLE_MQTT
|
|
|
|
private:
|
|
std::string _configFile;
|
|
httpd_handle_t _httpServer;
|
|
std::map<gpio_num_t, GpioPin*> *gpioMap = NULL;
|
|
TaskHandle_t xHandleTaskGpio = NULL;
|
|
bool _isEnabled = false;
|
|
|
|
int LEDNumbers = 2;
|
|
Rgb LEDColor = Rgb{ 255, 255, 255 };
|
|
LedType LEDType = LED_WS2812;
|
|
#ifdef __LEDGLOBAL
|
|
SmartLed *leds_global = NULL;
|
|
#endif
|
|
|
|
bool readConfig();
|
|
void clear();
|
|
|
|
gpio_num_t resolvePinNr(uint8_t pinNr);
|
|
gpio_pin_mode_t resolvePinMode(std::string input);
|
|
gpio_int_type_t resolveIntType(std::string input);
|
|
};
|
|
|
|
void gpio_handler_create(httpd_handle_t server);
|
|
void gpio_handler_init();
|
|
void gpio_handler_deinit();
|
|
void gpio_handler_destroy();
|
|
GpioHandler* gpio_handler_get();
|
|
|
|
|
|
|
|
#endif //SERVER_GPIO_H
|
|
|