mirror of
https://github.com/HASwitchPlate/openHASP.git
synced 2025-07-28 21:56:35 +00:00
Extended device classes for ESP32 and ESP8266
This commit is contained in:
parent
8156e8ca33
commit
5692bb8b90
@ -5,5 +5,5 @@
|
|||||||
#elif defined(M5STACK)
|
#elif defined(M5STACK)
|
||||||
#warning M5 Stack
|
#warning M5 Stack
|
||||||
#else
|
#else
|
||||||
dev::BaseDevice haspDevice;
|
#warning Generic Device
|
||||||
#endif
|
#endif
|
@ -4,10 +4,19 @@
|
|||||||
#ifndef HASP_DEVICE_H
|
#ifndef HASP_DEVICE_H
|
||||||
#define HASP_DEVICE_H
|
#define HASP_DEVICE_H
|
||||||
|
|
||||||
|
#ifdef ARDUINO
|
||||||
|
#include "Arduino.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace dev {
|
namespace dev {
|
||||||
|
|
||||||
class BaseDevice {
|
class BaseDevice {
|
||||||
public:
|
public:
|
||||||
|
bool has_battery = false;
|
||||||
|
bool has_backligth_control = true;
|
||||||
|
|
||||||
|
virtual void reboot()
|
||||||
|
{}
|
||||||
virtual void pre_setup()
|
virtual void pre_setup()
|
||||||
{}
|
{}
|
||||||
virtual void post_setup()
|
virtual void post_setup()
|
||||||
@ -16,19 +25,37 @@ class BaseDevice {
|
|||||||
{}
|
{}
|
||||||
virtual void loop_5s()
|
virtual void loop_5s()
|
||||||
{}
|
{}
|
||||||
|
virtual void set_backlight_pin(uint8_t pin)
|
||||||
|
{}
|
||||||
|
virtual void set_backlight_level(uint8_t level)
|
||||||
|
{}
|
||||||
|
virtual uint8_t get_backlight_level()
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
virtual void set_backlight_power(bool power)
|
||||||
|
{}
|
||||||
|
virtual bool get_backlight_power()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace dev
|
} // namespace dev
|
||||||
|
|
||||||
|
#if defined(ESP32)
|
||||||
|
#warning Building for ESP32 Devices
|
||||||
|
#include "dev/esp32/esp32.h"
|
||||||
|
#elif defined(ESP8266)
|
||||||
|
#warning Building for ESP8266 Devices
|
||||||
|
#include "dev/esp8266/esp8266.h"
|
||||||
|
#elif defined(STM32F4)
|
||||||
|
#warning Building for STM32F4xx Devices
|
||||||
|
#include "dev/stm32f4.h"
|
||||||
|
#else
|
||||||
|
#warning Building for Generic Devices
|
||||||
using dev::BaseDevice;
|
using dev::BaseDevice;
|
||||||
|
|
||||||
#if defined(LANBONL8)
|
|
||||||
#warning Lanbon L8
|
|
||||||
#include "lanbonl8.h"
|
|
||||||
#elif defined(M5STACK)
|
|
||||||
#warning M5 Stack
|
|
||||||
#include "m5stackcore2.h"
|
|
||||||
#else
|
|
||||||
extern dev::BaseDevice haspDevice;
|
extern dev::BaseDevice haspDevice;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
84
src/dev/esp32/esp32.cpp
Normal file
84
src/dev/esp32/esp32.cpp
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
#if defined(ESP32)
|
||||||
|
|
||||||
|
#include "Arduino.h"
|
||||||
|
#include <Esp.h>
|
||||||
|
#include "esp_system.h"
|
||||||
|
|
||||||
|
#include "dev/device.h"
|
||||||
|
#include "dev/esp32/esp32.h"
|
||||||
|
|
||||||
|
#include "driver/adc.h"
|
||||||
|
#include "esp_adc_cal.h"
|
||||||
|
|
||||||
|
#include "hasp_conf.h"
|
||||||
|
#include "hasp_debug.h"
|
||||||
|
|
||||||
|
#define BACKLIGHT_CHANNEL 0
|
||||||
|
|
||||||
|
namespace dev {
|
||||||
|
|
||||||
|
void Esp32Device::reboot()
|
||||||
|
{
|
||||||
|
ESP.restart();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Esp32Device::set_backlight_pin(uint8_t pin)
|
||||||
|
{
|
||||||
|
Esp32Device::backlight_pin = pin;
|
||||||
|
/* Setup Backlight Control Pin */
|
||||||
|
if(pin >= 0) {
|
||||||
|
LOG_VERBOSE(TAG_GUI, F("Backlight : Pin %d"), pin);
|
||||||
|
|
||||||
|
ledcSetup(BACKLIGHT_CHANNEL, 20000, 12);
|
||||||
|
ledcAttachPin(pin, BACKLIGHT_CHANNEL);
|
||||||
|
|
||||||
|
update_backlight();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Esp32Device::set_backlight_level(uint8_t level)
|
||||||
|
{
|
||||||
|
backlight_level = level >= 0 ? level : 0;
|
||||||
|
backlight_level = backlight_level <= 100 ? backlight_level : 100;
|
||||||
|
|
||||||
|
update_backlight();
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t Esp32Device::get_backlight_level()
|
||||||
|
{
|
||||||
|
return backlight_level;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Esp32Device::set_backlight_power(bool power)
|
||||||
|
{
|
||||||
|
backlight_power = power;
|
||||||
|
update_backlight();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Esp32Device::get_backlight_power()
|
||||||
|
{
|
||||||
|
return backlight_power != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Esp32Device::update_backlight()
|
||||||
|
{
|
||||||
|
if(backlight_pin == -1) return;
|
||||||
|
|
||||||
|
if(backlight_power) { // The backlight is ON
|
||||||
|
ledcWrite(BACKLIGHT_CHANNEL, map(backlight_level, 0, 100, 0, 4095)); // ledChannel and value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace dev
|
||||||
|
|
||||||
|
#if defined(LANBONL8)
|
||||||
|
#warning Building for Lanbon L8
|
||||||
|
#include "dev/esp32/lanbonl8.h"
|
||||||
|
#elif defined(M5STACK)
|
||||||
|
#warning Building for M5Stack core2
|
||||||
|
#include "dev/esp32/m5stackcore2.h"
|
||||||
|
#else
|
||||||
|
dev::Esp32Device haspDevice;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // ESP32
|
51
src/dev/esp32/esp32.h
Normal file
51
src/dev/esp32/esp32.h
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
/* MIT License - Copyright (c) 2020 Francis Van Roie
|
||||||
|
For full license information read the LICENSE file in the project folder */
|
||||||
|
|
||||||
|
#ifndef HASP_DEVICE_ESP32_H
|
||||||
|
#define HASP_DEVICE_ESP32_H
|
||||||
|
|
||||||
|
#include "dev/device.h"
|
||||||
|
|
||||||
|
#if defined(ESP32)
|
||||||
|
|
||||||
|
namespace dev {
|
||||||
|
|
||||||
|
class Esp32Device : public BaseDevice {
|
||||||
|
|
||||||
|
public:
|
||||||
|
void reboot() override;
|
||||||
|
|
||||||
|
void set_backlight_pin(uint8_t pin) override;
|
||||||
|
|
||||||
|
void set_backlight_level(uint8_t val) override;
|
||||||
|
|
||||||
|
uint8_t get_backlight_level() override;
|
||||||
|
|
||||||
|
void set_backlight_power(bool power) override;
|
||||||
|
|
||||||
|
bool get_backlight_power() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
uint8_t backlight_pin;
|
||||||
|
uint8_t backlight_level;
|
||||||
|
uint8_t backlight_power;
|
||||||
|
|
||||||
|
void update_backlight();
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace dev
|
||||||
|
|
||||||
|
using dev::Esp32Device;
|
||||||
|
|
||||||
|
#if defined(LANBONL8)
|
||||||
|
#warning Building for Lanbon L8
|
||||||
|
#include "dev/esp32/lanbonl8.h"
|
||||||
|
#elif defined(M5STACK)
|
||||||
|
#warning Building for M5Stack core2
|
||||||
|
#include "dev/esp32/m5stackcore2.h"
|
||||||
|
#else
|
||||||
|
extern dev::Esp32Device haspDevice;
|
||||||
|
#endif
|
||||||
|
#endif // ESP32
|
||||||
|
|
||||||
|
#endif // HASP_DEVICE_ESP32_H
|
@ -1,12 +1,18 @@
|
|||||||
#include "lanbonl8.h"
|
#include "lanbonl8.h"
|
||||||
|
|
||||||
#if defined(LANBONL8)
|
#if defined(LANBONL8)
|
||||||
|
|
||||||
#include "Arduino.h"
|
#include "Arduino.h"
|
||||||
#include "../device.h"
|
#include "dev/esp32/esp32.h"
|
||||||
|
|
||||||
#include "driver/adc.h"
|
#include "driver/adc.h"
|
||||||
#include "esp_adc_cal.h"
|
#include "esp_adc_cal.h"
|
||||||
|
|
||||||
|
#include "hasp_conf.h"
|
||||||
|
#include "hasp_debug.h"
|
||||||
|
|
||||||
|
#define BACKLIGHT_CHANNEL 0
|
||||||
|
|
||||||
#define REF_VOLTAGE 1100
|
#define REF_VOLTAGE 1100
|
||||||
esp_adc_cal_characteristics_t * adc_chars =
|
esp_adc_cal_characteristics_t * adc_chars =
|
||||||
new esp_adc_cal_characteristics_t; // adc_chars = calloc(1, sizeof(esp_adc_cal_characteristics_t));
|
new esp_adc_cal_characteristics_t; // adc_chars = calloc(1, sizeof(esp_adc_cal_characteristics_t));
|
||||||
@ -55,19 +61,6 @@ void LanbonL8::pre_setup()
|
|||||||
print_char_val_type(val_type);
|
print_char_val_type(val_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LanbonL8::post_setup()
|
|
||||||
{}
|
|
||||||
|
|
||||||
void LanbonL8::loop()
|
|
||||||
{}
|
|
||||||
|
|
||||||
void LanbonL8::loop_5s()
|
|
||||||
{
|
|
||||||
double voltage = esp_adc_cal_raw_to_voltage(analogRead(39), adc_chars);
|
|
||||||
Serial.print(adc1_get_raw(ADC1_CHANNEL_3));
|
|
||||||
Serial.print(" - ");
|
|
||||||
Serial.println(voltage);
|
|
||||||
}
|
|
||||||
} // namespace dev
|
} // namespace dev
|
||||||
|
|
||||||
dev::LanbonL8 haspDevice;
|
dev::LanbonL8 haspDevice;
|
@ -4,22 +4,17 @@
|
|||||||
#ifndef HASP_DEVICE_LANBONL8_H
|
#ifndef HASP_DEVICE_LANBONL8_H
|
||||||
#define HASP_DEVICE_LANBONL8_H
|
#define HASP_DEVICE_LANBONL8_H
|
||||||
|
|
||||||
#include "../device.h"
|
#include "dev/esp32/esp32.h"
|
||||||
|
|
||||||
#if defined(LANBONL8)
|
#if defined(LANBONL8)
|
||||||
|
|
||||||
namespace dev {
|
namespace dev {
|
||||||
|
|
||||||
class LanbonL8 : public BaseDevice {
|
class LanbonL8 : public Esp32Device {
|
||||||
public:
|
public:
|
||||||
void pre_setup() override;
|
void pre_setup();
|
||||||
|
|
||||||
void post_setup() override;
|
|
||||||
|
|
||||||
void loop() override;
|
|
||||||
|
|
||||||
void loop_5s() override;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace dev
|
} // namespace dev
|
||||||
|
|
||||||
extern dev::LanbonL8 haspDevice;
|
extern dev::LanbonL8 haspDevice;
|
@ -1,8 +1,9 @@
|
|||||||
#include "m5stackcore2.h"
|
#include "m5stackcore2.h"
|
||||||
|
|
||||||
#if defined(M5STACK)
|
#if defined(M5STACK)
|
||||||
|
|
||||||
#include "AXP192.h" // Power Mgmt
|
#include "AXP192.h" // Power Mgmt
|
||||||
#include "../device.h"
|
#include "dev/esp32/esp32.h"
|
||||||
|
|
||||||
// AXP192 Axp;
|
// AXP192 Axp;
|
||||||
namespace dev {
|
namespace dev {
|
||||||
@ -39,14 +40,6 @@ void M5StackCore2::pre_setup(void)
|
|||||||
Axp.SetLed(1);
|
Axp.SetLed(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void M5StackCore2::post_setup(void)
|
|
||||||
{}
|
|
||||||
|
|
||||||
void M5StackCore2::loop(void)
|
|
||||||
{}
|
|
||||||
|
|
||||||
void M5StackCore2::loop_5s(void)
|
|
||||||
{}
|
|
||||||
} // namespace dev
|
} // namespace dev
|
||||||
|
|
||||||
dev::M5StackCore2 haspDevice;
|
dev::M5StackCore2 haspDevice;
|
@ -6,16 +6,13 @@
|
|||||||
|
|
||||||
#if defined(M5STACK)
|
#if defined(M5STACK)
|
||||||
|
|
||||||
#include "../device.h"
|
#include "dev/esp32/esp32.h"
|
||||||
|
|
||||||
namespace dev {
|
namespace dev {
|
||||||
|
|
||||||
class M5StackCore2 : public BaseDevice {
|
class M5StackCore2 : public Esp32Device {
|
||||||
public:
|
public:
|
||||||
void pre_setup() override;
|
void pre_setup() override;
|
||||||
void post_setup() override;
|
|
||||||
void loop() override;
|
|
||||||
void loop_5s() override;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace dev
|
} // namespace dev
|
66
src/dev/esp8266/esp8266.cpp
Normal file
66
src/dev/esp8266/esp8266.cpp
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
#if defined(ESP8266)
|
||||||
|
|
||||||
|
#include "Arduino.h"
|
||||||
|
#include <Esp.h>
|
||||||
|
|
||||||
|
#include "dev/esp8266/esp8266.h"
|
||||||
|
|
||||||
|
#include "hasp_conf.h"
|
||||||
|
#include "hasp_debug.h"
|
||||||
|
|
||||||
|
#define BACKLIGHT_CHANNEL 0
|
||||||
|
|
||||||
|
namespace dev {
|
||||||
|
|
||||||
|
void Esp8266Device::reboot()
|
||||||
|
{
|
||||||
|
ESP.restart();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Esp8266Device::set_backlight_pin(uint8_t pin)
|
||||||
|
{
|
||||||
|
Esp8266Device::backlight_pin = pin;
|
||||||
|
/* Setup Backlight Control Pin */
|
||||||
|
if(pin >= 0) {
|
||||||
|
LOG_VERBOSE(TAG_GUI, F("Backlight : Pin %d"), pin);
|
||||||
|
pinMode(backlight_pin, OUTPUT);
|
||||||
|
update_backlight();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Esp8266Device::set_backlight_level(uint8_t level)
|
||||||
|
{
|
||||||
|
backlight_level = level >= 0 ? level : 0;
|
||||||
|
backlight_level = backlight_level <= 100 ? backlight_level : 100;
|
||||||
|
|
||||||
|
update_backlight();
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t Esp8266Device::get_backlight_level()
|
||||||
|
{
|
||||||
|
return backlight_level;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Esp8266Device::set_backlight_power(bool power)
|
||||||
|
{
|
||||||
|
backlight_power = power;
|
||||||
|
update_backlight();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Esp8266Device::get_backlight_power()
|
||||||
|
{
|
||||||
|
return backlight_power != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Esp8266Device::update_backlight()
|
||||||
|
{
|
||||||
|
if(backlight_pin == -1) return;
|
||||||
|
|
||||||
|
analogWrite(backlight_pin, backlight_power ? map(backlight_level, 0, 100, 0, 1023) : 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace dev
|
||||||
|
|
||||||
|
dev::Esp8266Device haspDevice;
|
||||||
|
|
||||||
|
#endif // ESP8266
|
45
src/dev/esp8266/esp8266.h
Normal file
45
src/dev/esp8266/esp8266.h
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
/* MIT License - Copyright (c) 2020 Francis Van Roie
|
||||||
|
For full license information read the LICENSE file in the project folder */
|
||||||
|
|
||||||
|
#ifndef HASP_DEVICE_ESP8266_H
|
||||||
|
#define HASP_DEVICE_ESP8266_H
|
||||||
|
|
||||||
|
#include "hasp_conf.h"
|
||||||
|
#include "dev/device.h"
|
||||||
|
|
||||||
|
#if defined(ESP8266)
|
||||||
|
|
||||||
|
namespace dev {
|
||||||
|
|
||||||
|
class Esp8266Device : public BaseDevice {
|
||||||
|
|
||||||
|
public:
|
||||||
|
void reboot() override;
|
||||||
|
|
||||||
|
void set_backlight_pin(uint8_t pin) override;
|
||||||
|
|
||||||
|
void set_backlight_level(uint8_t val) override;
|
||||||
|
|
||||||
|
uint8_t get_backlight_level() override;
|
||||||
|
|
||||||
|
void set_backlight_power(bool power) override;
|
||||||
|
|
||||||
|
bool get_backlight_power() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
uint8_t backlight_pin;
|
||||||
|
uint8_t backlight_level;
|
||||||
|
uint8_t backlight_power;
|
||||||
|
|
||||||
|
void update_backlight();
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace dev
|
||||||
|
|
||||||
|
using dev::Esp8266Device;
|
||||||
|
|
||||||
|
extern dev::Esp8266Device haspDevice;
|
||||||
|
|
||||||
|
#endif // ESP8266
|
||||||
|
|
||||||
|
#endif // HASP_DEVICE_ESP8266_H
|
@ -293,8 +293,6 @@ uint16_t halGetCpuFreqMHz()
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
String halDisplayDriverName()
|
String halDisplayDriverName()
|
||||||
{
|
{
|
||||||
#if defined(ILI9341_DRIVER)
|
#if defined(ILI9341_DRIVER)
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
|
|
||||||
#include "hasp_attribute.h"
|
#include "hasp_attribute.h"
|
||||||
#include "hasp.h"
|
#include "hasp.h"
|
||||||
|
#include "dev/device.h"
|
||||||
#include "lv_theme_hasp.h"
|
#include "lv_theme_hasp.h"
|
||||||
|
|
||||||
#if HASP_USE_EEPROM > 0
|
#if HASP_USE_EEPROM > 0
|
||||||
@ -322,7 +323,7 @@ static void custom_font_apply_cb(lv_theme_t * th, lv_obj_t * obj, lv_theme_style
|
|||||||
*/
|
*/
|
||||||
void haspSetup(void)
|
void haspSetup(void)
|
||||||
{
|
{
|
||||||
guiSetDim(haspStartDim);
|
haspDevice.set_backlight_level(haspStartDim);
|
||||||
|
|
||||||
/******* File System Test ********************************************************************/
|
/******* File System Test ********************************************************************/
|
||||||
// lv_fs_file_t f;
|
// lv_fs_file_t f;
|
||||||
|
@ -13,6 +13,8 @@
|
|||||||
#include "hasp_parser.h"
|
#include "hasp_parser.h"
|
||||||
#include "hasp_attribute.h"
|
#include "hasp_attribute.h"
|
||||||
|
|
||||||
|
#include "dev/device.h"
|
||||||
|
|
||||||
//#include "hasp_gui.h"
|
//#include "hasp_gui.h"
|
||||||
|
|
||||||
#if HASP_USE_DEBUG > 0
|
#if HASP_USE_DEBUG > 0
|
||||||
@ -774,10 +776,10 @@ void dispatch_clear_page(const char *, const char * page)
|
|||||||
void dispatch_dim(const char *, const char * level)
|
void dispatch_dim(const char *, const char * level)
|
||||||
{
|
{
|
||||||
// Set the current state
|
// Set the current state
|
||||||
if(strlen(level) != 0) guiSetDim(atoi(level));
|
if(strlen(level) != 0) haspDevice.set_backlight_level(atoi(level));
|
||||||
|
|
||||||
char payload[5];
|
char payload[5];
|
||||||
itoa(guiGetDim(), payload, DEC);
|
itoa(haspDevice.get_backlight_level(), payload, DEC);
|
||||||
dispatch_state_msg(F("dim"), payload);
|
dispatch_state_msg(F("dim"), payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -833,11 +835,11 @@ void dispatch_moodlight(const char * topic, const char * payload)
|
|||||||
void dispatch_backlight(const char *, const char * payload)
|
void dispatch_backlight(const char *, const char * payload)
|
||||||
{
|
{
|
||||||
// Set the current state
|
// Set the current state
|
||||||
if(strlen(payload) != 0) guiSetBacklight(Utilities::is_true(payload));
|
if(strlen(payload) != 0) haspDevice.set_backlight_power(Utilities::is_true(payload));
|
||||||
|
|
||||||
// Return the current state
|
// Return the current state
|
||||||
char buffer[4];
|
char buffer[4];
|
||||||
memcpy_P(buffer, guiGetBacklight() ? PSTR("ON") : PSTR("OFF"), sizeof(buffer));
|
memcpy_P(buffer, haspDevice.get_backlight_power() ? PSTR("ON") : PSTR("OFF"), sizeof(buffer));
|
||||||
dispatch_state_msg(F("light"), buffer);
|
dispatch_state_msg(F("light"), buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user