mirror of https://github.com/arendst/Tasmota.git
Add 1 second heartbeat GPIO
This commit is contained in:
parent
72f9c36b10
commit
5243b17a1a
|
@ -6,6 +6,7 @@ All notable changes to this project will be documented in this file.
|
|||
## [10.0.0.1]
|
||||
### Added
|
||||
- Berry add module ``python_compat`` to be closer to Python syntax (#13428)
|
||||
- 1 second heartbeat GPIO
|
||||
|
||||
### Changed
|
||||
- File editor no-wrap (#13427)
|
||||
|
|
|
@ -102,6 +102,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo
|
|||
|
||||
## Changelog v10.0.0.1
|
||||
### Added
|
||||
- 1 second heartbeat GPIO
|
||||
- ESP32 Berry add module ``python_compat`` to be closer to Python syntax [#13428](https://github.com/arendst/Tasmota/issues/13428)
|
||||
|
||||
### Breaking Changed
|
||||
|
|
|
@ -842,6 +842,7 @@
|
|||
#define D_SENSOR_HRG15_RX "HRG15 Rx"
|
||||
#define D_SENSOR_HRG15_TX "HRG15 Tx"
|
||||
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
|
||||
#define D_SENSOR_HEARTBEAT "Heartbeat"
|
||||
|
||||
// Units
|
||||
#define D_UNIT_AMPERE "A"
|
||||
|
|
|
@ -842,6 +842,7 @@
|
|||
#define D_SENSOR_HRG15_RX "HRG15 Rx"
|
||||
#define D_SENSOR_HRG15_TX "HRG15 Tx"
|
||||
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
|
||||
#define D_SENSOR_HEARTBEAT "Heartbeat"
|
||||
|
||||
// Units
|
||||
#define D_UNIT_AMPERE "A"
|
||||
|
|
|
@ -842,6 +842,7 @@
|
|||
#define D_SENSOR_HRG15_RX "HRG15 Rx"
|
||||
#define D_SENSOR_HRG15_TX "HRG15 Tx"
|
||||
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
|
||||
#define D_SENSOR_HEARTBEAT "Heartbeat"
|
||||
|
||||
// Units
|
||||
#define D_UNIT_AMPERE "A"
|
||||
|
|
|
@ -842,6 +842,7 @@
|
|||
#define D_SENSOR_HRG15_RX "HRG15 Rx"
|
||||
#define D_SENSOR_HRG15_TX "HRG15 Tx"
|
||||
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
|
||||
#define D_SENSOR_HEARTBEAT "Heartbeat"
|
||||
|
||||
// Units
|
||||
#define D_UNIT_AMPERE "A"
|
||||
|
|
|
@ -842,6 +842,7 @@
|
|||
#define D_SENSOR_HRG15_RX "HRG15 Rx"
|
||||
#define D_SENSOR_HRG15_TX "HRG15 Tx"
|
||||
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
|
||||
#define D_SENSOR_HEARTBEAT "Heartbeat"
|
||||
|
||||
// Units
|
||||
#define D_UNIT_AMPERE "A"
|
||||
|
|
|
@ -842,6 +842,7 @@
|
|||
#define D_SENSOR_HRG15_RX "HRG15 Rx"
|
||||
#define D_SENSOR_HRG15_TX "HRG15 Tx"
|
||||
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
|
||||
#define D_SENSOR_HEARTBEAT "Heartbeat"
|
||||
|
||||
// Units
|
||||
#define D_UNIT_AMPERE "A"
|
||||
|
|
|
@ -842,6 +842,7 @@
|
|||
#define D_SENSOR_HRG15_RX "HRG15 Rx"
|
||||
#define D_SENSOR_HRG15_TX "HRG15 Tx"
|
||||
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
|
||||
#define D_SENSOR_HEARTBEAT "Heartbeat"
|
||||
|
||||
// Units
|
||||
#define D_UNIT_AMPERE "A"
|
||||
|
|
|
@ -842,6 +842,7 @@
|
|||
#define D_SENSOR_HRG15_RX "HRG15 Rx"
|
||||
#define D_SENSOR_HRG15_TX "HRG15 Tx"
|
||||
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
|
||||
#define D_SENSOR_HEARTBEAT "Heartbeat"
|
||||
|
||||
// Units
|
||||
#define D_UNIT_AMPERE "A"
|
||||
|
|
|
@ -842,6 +842,7 @@
|
|||
#define D_SENSOR_HRG15_RX "HRG15 Rx"
|
||||
#define D_SENSOR_HRG15_TX "HRG15 Tx"
|
||||
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
|
||||
#define D_SENSOR_HEARTBEAT "Heartbeat"
|
||||
|
||||
// Units
|
||||
#define D_UNIT_AMPERE "A"
|
||||
|
|
|
@ -842,6 +842,7 @@
|
|||
#define D_SENSOR_HRG15_RX "HRG15 Rx"
|
||||
#define D_SENSOR_HRG15_TX "HRG15 Tx"
|
||||
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
|
||||
#define D_SENSOR_HEARTBEAT "Heartbeat"
|
||||
|
||||
// Units
|
||||
#define D_UNIT_AMPERE "A"
|
||||
|
|
|
@ -842,6 +842,7 @@
|
|||
#define D_SENSOR_HRG15_RX "HRG15 Rx"
|
||||
#define D_SENSOR_HRG15_TX "HRG15 Tx"
|
||||
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
|
||||
#define D_SENSOR_HEARTBEAT "Heartbeat"
|
||||
|
||||
// Units
|
||||
#define D_UNIT_AMPERE "A"
|
||||
|
|
|
@ -842,6 +842,7 @@
|
|||
#define D_SENSOR_HRG15_RX "HRG15 - RX"
|
||||
#define D_SENSOR_HRG15_TX "HRG15 - TX"
|
||||
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
|
||||
#define D_SENSOR_HEARTBEAT "Heartbeat"
|
||||
|
||||
// Units
|
||||
#define D_UNIT_AMPERE "A"
|
||||
|
|
|
@ -842,6 +842,7 @@
|
|||
#define D_SENSOR_HRG15_RX "HRG15 Rx"
|
||||
#define D_SENSOR_HRG15_TX "HRG15 Tx"
|
||||
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
|
||||
#define D_SENSOR_HEARTBEAT "Heartbeat"
|
||||
|
||||
// Units
|
||||
#define D_UNIT_AMPERE "A"
|
||||
|
|
|
@ -842,6 +842,7 @@
|
|||
#define D_SENSOR_HRG15_RX "HRG15 Rx"
|
||||
#define D_SENSOR_HRG15_TX "HRG15 Tx"
|
||||
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
|
||||
#define D_SENSOR_HEARTBEAT "Heartbeat"
|
||||
|
||||
// Units
|
||||
#define D_UNIT_AMPERE "A"
|
||||
|
|
|
@ -842,6 +842,7 @@
|
|||
#define D_SENSOR_HRG15_RX "HRG15 Rx"
|
||||
#define D_SENSOR_HRG15_TX "HRG15 Tx"
|
||||
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
|
||||
#define D_SENSOR_HEARTBEAT "Heartbeat"
|
||||
|
||||
// Units
|
||||
#define D_UNIT_AMPERE "A"
|
||||
|
|
|
@ -842,6 +842,7 @@
|
|||
#define D_SENSOR_HRG15_RX "HRG15 Rx"
|
||||
#define D_SENSOR_HRG15_TX "HRG15 Tx"
|
||||
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
|
||||
#define D_SENSOR_HEARTBEAT "Heartbeat"
|
||||
|
||||
// Units
|
||||
#define D_UNIT_AMPERE "A"
|
||||
|
|
|
@ -842,6 +842,7 @@
|
|||
#define D_SENSOR_HRG15_RX "HRG15 Rx"
|
||||
#define D_SENSOR_HRG15_TX "HRG15 Tx"
|
||||
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
|
||||
#define D_SENSOR_HEARTBEAT "Heartbeat"
|
||||
|
||||
// Units
|
||||
#define D_UNIT_AMPERE "A"
|
||||
|
|
|
@ -842,6 +842,7 @@
|
|||
#define D_SENSOR_HRG15_RX "HRG15 Rx"
|
||||
#define D_SENSOR_HRG15_TX "HRG15 Tx"
|
||||
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
|
||||
#define D_SENSOR_HEARTBEAT "Heartbeat"
|
||||
|
||||
// Units
|
||||
#define D_UNIT_AMPERE "A"
|
||||
|
|
|
@ -842,6 +842,7 @@
|
|||
#define D_SENSOR_HRG15_RX "HRG15 Rx"
|
||||
#define D_SENSOR_HRG15_TX "HRG15 Tx"
|
||||
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
|
||||
#define D_SENSOR_HEARTBEAT "Heartbeat"
|
||||
|
||||
// Units
|
||||
#define D_UNIT_AMPERE "А"
|
||||
|
|
|
@ -842,6 +842,7 @@
|
|||
#define D_SENSOR_HRG15_RX "HRG15 Rx"
|
||||
#define D_SENSOR_HRG15_TX "HRG15 Tx"
|
||||
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
|
||||
#define D_SENSOR_HEARTBEAT "Heartbeat"
|
||||
|
||||
// Units
|
||||
#define D_UNIT_AMPERE "A"
|
||||
|
|
|
@ -842,6 +842,7 @@
|
|||
#define D_SENSOR_HRG15_RX "HRG15 Rx"
|
||||
#define D_SENSOR_HRG15_TX "HRG15 Tx"
|
||||
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
|
||||
#define D_SENSOR_HEARTBEAT "Heartbeat"
|
||||
|
||||
// Units
|
||||
#define D_UNIT_AMPERE "A"
|
||||
|
|
|
@ -842,6 +842,7 @@
|
|||
#define D_SENSOR_HRG15_RX "HRG15 Rx"
|
||||
#define D_SENSOR_HRG15_TX "HRG15 Tx"
|
||||
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
|
||||
#define D_SENSOR_HEARTBEAT "Heartbeat"
|
||||
|
||||
// Units
|
||||
#define D_UNIT_AMPERE "A"
|
||||
|
|
|
@ -842,6 +842,7 @@
|
|||
#define D_SENSOR_HRG15_RX "HRG15 Rx"
|
||||
#define D_SENSOR_HRG15_TX "HRG15 Tx"
|
||||
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
|
||||
#define D_SENSOR_HEARTBEAT "Heartbeat"
|
||||
|
||||
// Units
|
||||
#define D_UNIT_AMPERE "А"
|
||||
|
|
|
@ -842,6 +842,7 @@
|
|||
#define D_SENSOR_HRG15_RX "HRG15 Rx"
|
||||
#define D_SENSOR_HRG15_TX "HRG15 Tx"
|
||||
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
|
||||
#define D_SENSOR_HEARTBEAT "Heartbeat"
|
||||
|
||||
// Units
|
||||
#define D_UNIT_AMPERE "A"
|
||||
|
|
|
@ -842,6 +842,7 @@
|
|||
#define D_SENSOR_HRG15_RX "HRG15 Rx"
|
||||
#define D_SENSOR_HRG15_TX "HRG15 Tx"
|
||||
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
|
||||
#define D_SENSOR_HEARTBEAT "Heartbeat"
|
||||
|
||||
// Units
|
||||
#define D_UNIT_AMPERE "A"
|
||||
|
|
|
@ -842,6 +842,7 @@
|
|||
#define D_SENSOR_HRG15_RX "HRG15 Rx"
|
||||
#define D_SENSOR_HRG15_TX "HRG15 Tx"
|
||||
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
|
||||
#define D_SENSOR_HEARTBEAT "Heartbeat"
|
||||
|
||||
// Units
|
||||
#define D_UNIT_AMPERE "安培"
|
||||
|
|
|
@ -377,6 +377,12 @@ void RtcSecond(void)
|
|||
static uint32_t last_sync = 0;
|
||||
static bool mutex = false;
|
||||
|
||||
if ((TasmotaGlobal.init_state >= INIT_GPIOS) && PinUsed(GPIO_HEARTBEAT)) {
|
||||
digitalWrite(Pin(GPIO_HEARTBEAT), ~TasmotaGlobal.heartbeat_inverted &1);
|
||||
delayMicroseconds(50);
|
||||
digitalWrite(Pin(GPIO_HEARTBEAT), TasmotaGlobal.heartbeat_inverted);
|
||||
}
|
||||
|
||||
if (mutex) { return; }
|
||||
|
||||
if (Rtc.time_synced) {
|
||||
|
|
|
@ -1766,6 +1766,10 @@ void GpioInit(void)
|
|||
TasmotaGlobal.ledlnk_inverted = 1;
|
||||
mpin -= (AGPIO(GPIO_LEDLNK_INV) - AGPIO(GPIO_LEDLNK));
|
||||
}
|
||||
else if (mpin == AGPIO(GPIO_HEARTBEAT_INV)) {
|
||||
TasmotaGlobal.heartbeat_inverted = 1;
|
||||
mpin -= (AGPIO(GPIO_HEARTBEAT_INV) - AGPIO(GPIO_HEARTBEAT));
|
||||
}
|
||||
else if ((mpin >= AGPIO(GPIO_PWM1_INV)) && (mpin < (AGPIO(GPIO_PWM1_INV) + MAX_PWMS))) {
|
||||
bitSet(TasmotaGlobal.pwm_inverted, mpin - AGPIO(GPIO_PWM1_INV));
|
||||
mpin -= (AGPIO(GPIO_PWM1_INV) - AGPIO(GPIO_PWM1));
|
||||
|
@ -1891,6 +1895,11 @@ void GpioInit(void)
|
|||
#endif // ESP8266
|
||||
}
|
||||
|
||||
if (PinUsed(GPIO_HEARTBEAT)) {
|
||||
pinMode(Pin(GPIO_HEARTBEAT), OUTPUT);
|
||||
digitalWrite(Pin(GPIO_HEARTBEAT), TasmotaGlobal.heartbeat_inverted);
|
||||
}
|
||||
|
||||
// Digital input
|
||||
for (uint32_t i = 0; i < MAX_SWITCHES; i++) {
|
||||
if (PinUsed(GPIO_INPUT, i)) {
|
||||
|
|
|
@ -278,6 +278,8 @@ enum GetDateAndTimeOptions { DT_LOCAL, DT_UTC, DT_LOCALNOTZ, DT_DST, DT_STD, DT_
|
|||
|
||||
enum LoggingLevels {LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE};
|
||||
|
||||
enum InitStates {INIT_NONE, INIT_GPIOS, INIT_DONE};
|
||||
|
||||
enum WifiConfigOptions {WIFI_RESTART, EX_WIFI_SMARTCONFIG, WIFI_MANAGER, EX_WIFI_WPSCONFIG, WIFI_RETRY, WIFI_WAIT, WIFI_SERIAL, WIFI_MANAGER_RESET_ONLY, MAX_WIFI_OPTION};
|
||||
|
||||
enum SwitchModeOptions {TOGGLE, FOLLOW, FOLLOW_INV, PUSHBUTTON, PUSHBUTTON_INV, PUSHBUTTONHOLD, PUSHBUTTONHOLD_INV, PUSHBUTTON_TOGGLE, TOGGLEMULTI,
|
||||
|
|
|
@ -148,6 +148,8 @@ struct TasmotaGlobal_t {
|
|||
bool enable_logging; // Enable logging
|
||||
|
||||
StateBitfield global_state; // Global states (currently Wifi and Mqtt) (8 bits)
|
||||
uint8_t init_state; // Tasmota init state
|
||||
uint8_t heartbeat_inverted; // Heartbeat pulse inverted flag
|
||||
uint8_t spi_enabled; // SPI configured
|
||||
uint8_t soft_spi_enabled; // Software SPI configured
|
||||
uint8_t blinks; // Number of LED blinks
|
||||
|
@ -430,6 +432,8 @@ void setup(void) {
|
|||
XdrvCall(FUNC_PRE_INIT);
|
||||
XsnsCall(FUNC_PRE_INIT);
|
||||
|
||||
TasmotaGlobal.init_state = INIT_GPIOS;
|
||||
|
||||
SetPowerOnState();
|
||||
WifiConnect();
|
||||
|
||||
|
|
|
@ -175,6 +175,7 @@ enum UserSelectablePins {
|
|||
GPIO_BL0939_RX, // BL0939 Serial interface (Dual R3 v2)
|
||||
GPIO_BL0942_RX, // BL0942 Serial interface
|
||||
GPIO_HM330X_SET, // HM330X SET pin (sleep when low)
|
||||
GPIO_HEARTBEAT, GPIO_HEARTBEAT_INV,
|
||||
GPIO_SENSOR_END };
|
||||
|
||||
enum ProgramSelectablePins {
|
||||
|
@ -369,7 +370,8 @@ const char kSensorNames[] PROGMEM =
|
|||
D_SENSOR_VINDRIKTNING_RX "|"
|
||||
D_SENSOR_BL0939_RX "|"
|
||||
D_SENSOR_BL0942_RX "|"
|
||||
D_SENSOR_HM330X_SET
|
||||
D_SENSOR_HM330X_SET "|"
|
||||
D_SENSOR_HEARTBEAT "|" D_SENSOR_HEARTBEAT "_i|"
|
||||
;
|
||||
|
||||
const char kSensorNamesFixed[] PROGMEM =
|
||||
|
@ -428,6 +430,8 @@ const uint16_t kGpioNiceList[] PROGMEM = {
|
|||
#endif
|
||||
AGPIO(GPIO_OUTPUT_HI), // Fixed output high
|
||||
AGPIO(GPIO_OUTPUT_LO), // Fixed output low
|
||||
AGPIO(GPIO_HEARTBEAT), // Every second pulsed high
|
||||
AGPIO(GPIO_HEARTBEAT_INV), // Every second pulsed low
|
||||
#ifdef USE_FTC532
|
||||
AGPIO(GPIO_FTC532), // FTC532 touch input
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue