mirror of
https://github.com/arendst/Tasmota.git
synced 2025-04-26 15:57:16 +00:00
commit
9a65d71ba9
@ -823,6 +823,8 @@
|
|||||||
#define D_AS3935_NOISE "открит шум"
|
#define D_AS3935_NOISE "открит шум"
|
||||||
#define D_AS3935_DISTDET "открито смущение"
|
#define D_AS3935_DISTDET "открито смущение"
|
||||||
#define D_AS3935_INTNOEV "Прекъсване без Събитие!"
|
#define D_AS3935_INTNOEV "Прекъсване без Събитие!"
|
||||||
|
#define D_AS3935_FLICKER "IRQ flicker!"
|
||||||
|
#define D_AS3935_POWEROFF "Power Off"
|
||||||
#define D_AS3935_NOMESS "слушане..."
|
#define D_AS3935_NOMESS "слушане..."
|
||||||
#define D_AS3935_ON "Вкл."
|
#define D_AS3935_ON "Вкл."
|
||||||
#define D_AS3935_OFF "Изкл."
|
#define D_AS3935_OFF "Изкл."
|
||||||
|
@ -823,6 +823,8 @@
|
|||||||
#define D_AS3935_NOISE "noise detected"
|
#define D_AS3935_NOISE "noise detected"
|
||||||
#define D_AS3935_DISTDET "disturber detected"
|
#define D_AS3935_DISTDET "disturber detected"
|
||||||
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
||||||
|
#define D_AS3935_FLICKER "IRQ flicker!"
|
||||||
|
#define D_AS3935_POWEROFF "Power Off"
|
||||||
#define D_AS3935_NOMESS "listening..."
|
#define D_AS3935_NOMESS "listening..."
|
||||||
#define D_AS3935_ON "On"
|
#define D_AS3935_ON "On"
|
||||||
#define D_AS3935_OFF "Off"
|
#define D_AS3935_OFF "Off"
|
||||||
|
@ -812,7 +812,7 @@
|
|||||||
#define D_AS3935_GAIN "Rauschpegel:"
|
#define D_AS3935_GAIN "Rauschpegel:"
|
||||||
#define D_AS3935_ENERGY "Energie:"
|
#define D_AS3935_ENERGY "Energie:"
|
||||||
#define D_AS3935_DISTANCE "Entfernung:"
|
#define D_AS3935_DISTANCE "Entfernung:"
|
||||||
#define D_AS3935_DISTURBER "Störsingal:"
|
#define D_AS3935_DISTURBER "Entstörer:"
|
||||||
#define D_AS3935_VRMS "µVrms:"
|
#define D_AS3935_VRMS "µVrms:"
|
||||||
#define D_AS3935_APRX "ca.:"
|
#define D_AS3935_APRX "ca.:"
|
||||||
#define D_AS3935_AWAY "entfernt"
|
#define D_AS3935_AWAY "entfernt"
|
||||||
@ -823,6 +823,8 @@
|
|||||||
#define D_AS3935_NOISE "Rauschen entdeckt"
|
#define D_AS3935_NOISE "Rauschen entdeckt"
|
||||||
#define D_AS3935_DISTDET "Störer entdeckt"
|
#define D_AS3935_DISTDET "Störer entdeckt"
|
||||||
#define D_AS3935_INTNOEV "Interrupt ohne Grund!"
|
#define D_AS3935_INTNOEV "Interrupt ohne Grund!"
|
||||||
|
#define D_AS3935_FLICKER "IRQ Pin flackerd!"
|
||||||
|
#define D_AS3935_POWEROFF "Ausgeschaltet"
|
||||||
#define D_AS3935_NOMESS "lausche..."
|
#define D_AS3935_NOMESS "lausche..."
|
||||||
#define D_AS3935_ON "On"
|
#define D_AS3935_ON "On"
|
||||||
#define D_AS3935_OFF "Off"
|
#define D_AS3935_OFF "Off"
|
||||||
|
@ -823,6 +823,8 @@
|
|||||||
#define D_AS3935_NOISE "noise detected"
|
#define D_AS3935_NOISE "noise detected"
|
||||||
#define D_AS3935_DISTDET "disturber detected"
|
#define D_AS3935_DISTDET "disturber detected"
|
||||||
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
||||||
|
#define D_AS3935_FLICKER "IRQ flicker!"
|
||||||
|
#define D_AS3935_POWEROFF "Power Off"
|
||||||
#define D_AS3935_NOMESS "listening..."
|
#define D_AS3935_NOMESS "listening..."
|
||||||
#define D_AS3935_ON "On"
|
#define D_AS3935_ON "On"
|
||||||
#define D_AS3935_OFF "Off"
|
#define D_AS3935_OFF "Off"
|
||||||
|
@ -823,6 +823,8 @@
|
|||||||
#define D_AS3935_NOISE "noise detected"
|
#define D_AS3935_NOISE "noise detected"
|
||||||
#define D_AS3935_DISTDET "disturber detected"
|
#define D_AS3935_DISTDET "disturber detected"
|
||||||
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
||||||
|
#define D_AS3935_FLICKER "IRQ Pin flicker!"
|
||||||
|
#define D_AS3935_POWEROFF "Powerd Off"
|
||||||
#define D_AS3935_NOMESS "listening..."
|
#define D_AS3935_NOMESS "listening..."
|
||||||
#define D_AS3935_ON "On"
|
#define D_AS3935_ON "On"
|
||||||
#define D_AS3935_OFF "Off"
|
#define D_AS3935_OFF "Off"
|
||||||
|
@ -823,6 +823,8 @@
|
|||||||
#define D_AS3935_NOISE "Ruido detectado"
|
#define D_AS3935_NOISE "Ruido detectado"
|
||||||
#define D_AS3935_DISTDET "Perturbancia detectada"
|
#define D_AS3935_DISTDET "Perturbancia detectada"
|
||||||
#define D_AS3935_INTNOEV "Interrupción sin evento!"
|
#define D_AS3935_INTNOEV "Interrupción sin evento!"
|
||||||
|
#define D_AS3935_FLICKER "IRQ flicker!"
|
||||||
|
#define D_AS3935_POWEROFF "Power Off"
|
||||||
#define D_AS3935_NOMESS "Escuchando..."
|
#define D_AS3935_NOMESS "Escuchando..."
|
||||||
#define D_AS3935_ON "Encendido"
|
#define D_AS3935_ON "Encendido"
|
||||||
#define D_AS3935_OFF "Apagado"
|
#define D_AS3935_OFF "Apagado"
|
||||||
|
@ -814,6 +814,8 @@
|
|||||||
#define D_AS3935_NOISE "bruit détecté"
|
#define D_AS3935_NOISE "bruit détecté"
|
||||||
#define D_AS3935_DISTDET "interférence détectée"
|
#define D_AS3935_DISTDET "interférence détectée"
|
||||||
#define D_AS3935_INTNOEV "Interruption sans évenement!"
|
#define D_AS3935_INTNOEV "Interruption sans évenement!"
|
||||||
|
#define D_AS3935_FLICKER "IRQ flicker!"
|
||||||
|
#define D_AS3935_POWEROFF "Power Off"
|
||||||
#define D_AS3935_NOMESS "en écoute..."
|
#define D_AS3935_NOMESS "en écoute..."
|
||||||
#define D_AS3935_ON "Actif"
|
#define D_AS3935_ON "Actif"
|
||||||
#define D_AS3935_OFF "Inactif"
|
#define D_AS3935_OFF "Inactif"
|
||||||
|
@ -823,6 +823,8 @@
|
|||||||
#define D_AS3935_NOISE "noise detected"
|
#define D_AS3935_NOISE "noise detected"
|
||||||
#define D_AS3935_DISTDET "disturber detected"
|
#define D_AS3935_DISTDET "disturber detected"
|
||||||
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
||||||
|
#define D_AS3935_FLICKER "IRQ flicker!"
|
||||||
|
#define D_AS3935_POWEROFF "Power Off"
|
||||||
#define D_AS3935_NOMESS "listening..."
|
#define D_AS3935_NOMESS "listening..."
|
||||||
#define D_AS3935_ON "On"
|
#define D_AS3935_ON "On"
|
||||||
#define D_AS3935_OFF "Off"
|
#define D_AS3935_OFF "Off"
|
||||||
|
@ -823,6 +823,8 @@
|
|||||||
#define D_AS3935_NOISE "noise detected"
|
#define D_AS3935_NOISE "noise detected"
|
||||||
#define D_AS3935_DISTDET "disturber detected"
|
#define D_AS3935_DISTDET "disturber detected"
|
||||||
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
||||||
|
#define D_AS3935_FLICKER "IRQ flicker!"
|
||||||
|
#define D_AS3935_POWEROFF "Power Off"
|
||||||
#define D_AS3935_NOMESS "listening..."
|
#define D_AS3935_NOMESS "listening..."
|
||||||
#define D_AS3935_ON "On"
|
#define D_AS3935_ON "On"
|
||||||
#define D_AS3935_OFF "Off"
|
#define D_AS3935_OFF "Off"
|
||||||
|
@ -823,6 +823,8 @@
|
|||||||
#define D_AS3935_NOISE "rilevato rumore"
|
#define D_AS3935_NOISE "rilevato rumore"
|
||||||
#define D_AS3935_DISTDET "rilevato disturbatore"
|
#define D_AS3935_DISTDET "rilevato disturbatore"
|
||||||
#define D_AS3935_INTNOEV "Interrupt senza evento!"
|
#define D_AS3935_INTNOEV "Interrupt senza evento!"
|
||||||
|
#define D_AS3935_FLICKER "IRQ flicker!"
|
||||||
|
#define D_AS3935_POWEROFF "Power Off"
|
||||||
#define D_AS3935_NOMESS "in ascolto..."
|
#define D_AS3935_NOMESS "in ascolto..."
|
||||||
#define D_AS3935_ON "ON"
|
#define D_AS3935_ON "ON"
|
||||||
#define D_AS3935_OFF "OFF"
|
#define D_AS3935_OFF "OFF"
|
||||||
|
@ -823,6 +823,8 @@
|
|||||||
#define D_AS3935_NOISE "noise detected"
|
#define D_AS3935_NOISE "noise detected"
|
||||||
#define D_AS3935_DISTDET "disturber detected"
|
#define D_AS3935_DISTDET "disturber detected"
|
||||||
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
||||||
|
#define D_AS3935_FLICKER "IRQ flicker!"
|
||||||
|
#define D_AS3935_POWEROFF "Power Off"
|
||||||
#define D_AS3935_NOMESS "listening..."
|
#define D_AS3935_NOMESS "listening..."
|
||||||
#define D_AS3935_ON "On"
|
#define D_AS3935_ON "On"
|
||||||
#define D_AS3935_OFF "Off"
|
#define D_AS3935_OFF "Off"
|
||||||
|
@ -823,6 +823,8 @@
|
|||||||
#define D_AS3935_NOISE "noise detected"
|
#define D_AS3935_NOISE "noise detected"
|
||||||
#define D_AS3935_DISTDET "disturber detected"
|
#define D_AS3935_DISTDET "disturber detected"
|
||||||
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
||||||
|
#define D_AS3935_FLICKER "IRQ flicker!"
|
||||||
|
#define D_AS3935_POWEROFF "Power Off"
|
||||||
#define D_AS3935_NOMESS "listening..."
|
#define D_AS3935_NOMESS "listening..."
|
||||||
#define D_AS3935_ON "On"
|
#define D_AS3935_ON "On"
|
||||||
#define D_AS3935_OFF "Off"
|
#define D_AS3935_OFF "Off"
|
||||||
|
@ -823,6 +823,8 @@
|
|||||||
#define D_AS3935_NOISE "noise detected"
|
#define D_AS3935_NOISE "noise detected"
|
||||||
#define D_AS3935_DISTDET "disturber detected"
|
#define D_AS3935_DISTDET "disturber detected"
|
||||||
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
||||||
|
#define D_AS3935_FLICKER "IRQ flicker!"
|
||||||
|
#define D_AS3935_POWEROFF "Power Off"
|
||||||
#define D_AS3935_NOMESS "listening..."
|
#define D_AS3935_NOMESS "listening..."
|
||||||
#define D_AS3935_ON "On"
|
#define D_AS3935_ON "On"
|
||||||
#define D_AS3935_OFF "Off"
|
#define D_AS3935_OFF "Off"
|
||||||
|
@ -823,6 +823,8 @@
|
|||||||
#define D_AS3935_NOISE "noise detected"
|
#define D_AS3935_NOISE "noise detected"
|
||||||
#define D_AS3935_DISTDET "disturber detected"
|
#define D_AS3935_DISTDET "disturber detected"
|
||||||
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
||||||
|
#define D_AS3935_FLICKER "IRQ flicker!"
|
||||||
|
#define D_AS3935_POWEROFF "Power Off"
|
||||||
#define D_AS3935_NOMESS "listening..."
|
#define D_AS3935_NOMESS "listening..."
|
||||||
#define D_AS3935_ON "On"
|
#define D_AS3935_ON "On"
|
||||||
#define D_AS3935_OFF "Off"
|
#define D_AS3935_OFF "Off"
|
||||||
|
@ -823,6 +823,8 @@
|
|||||||
#define D_AS3935_NOISE "noise detected"
|
#define D_AS3935_NOISE "noise detected"
|
||||||
#define D_AS3935_DISTDET "disturber detected"
|
#define D_AS3935_DISTDET "disturber detected"
|
||||||
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
||||||
|
#define D_AS3935_FLICKER "IRQ flicker!"
|
||||||
|
#define D_AS3935_POWEROFF "Power Off"
|
||||||
#define D_AS3935_NOMESS "listening..."
|
#define D_AS3935_NOMESS "listening..."
|
||||||
#define D_AS3935_ON "On"
|
#define D_AS3935_ON "On"
|
||||||
#define D_AS3935_OFF "Off"
|
#define D_AS3935_OFF "Off"
|
||||||
|
@ -823,6 +823,8 @@
|
|||||||
#define D_AS3935_NOISE "noise detected"
|
#define D_AS3935_NOISE "noise detected"
|
||||||
#define D_AS3935_DISTDET "disturber detected"
|
#define D_AS3935_DISTDET "disturber detected"
|
||||||
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
||||||
|
#define D_AS3935_FLICKER "IRQ flicker!"
|
||||||
|
#define D_AS3935_POWEROFF "Power Off"
|
||||||
#define D_AS3935_NOMESS "listening..."
|
#define D_AS3935_NOMESS "listening..."
|
||||||
#define D_AS3935_ON "On"
|
#define D_AS3935_ON "On"
|
||||||
#define D_AS3935_OFF "Off"
|
#define D_AS3935_OFF "Off"
|
||||||
|
@ -823,6 +823,8 @@
|
|||||||
#define D_AS3935_NOISE "noise detected"
|
#define D_AS3935_NOISE "noise detected"
|
||||||
#define D_AS3935_DISTDET "disturber detected"
|
#define D_AS3935_DISTDET "disturber detected"
|
||||||
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
||||||
|
#define D_AS3935_FLICKER "IRQ flicker!"
|
||||||
|
#define D_AS3935_POWEROFF "Power Off"
|
||||||
#define D_AS3935_NOMESS "listening..."
|
#define D_AS3935_NOMESS "listening..."
|
||||||
#define D_AS3935_ON "On"
|
#define D_AS3935_ON "On"
|
||||||
#define D_AS3935_OFF "Off"
|
#define D_AS3935_OFF "Off"
|
||||||
|
@ -823,6 +823,8 @@
|
|||||||
#define D_AS3935_NOISE "noise detected"
|
#define D_AS3935_NOISE "noise detected"
|
||||||
#define D_AS3935_DISTDET "disturber detected"
|
#define D_AS3935_DISTDET "disturber detected"
|
||||||
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
||||||
|
#define D_AS3935_FLICKER "IRQ flicker!"
|
||||||
|
#define D_AS3935_POWEROFF "Power Off"
|
||||||
#define D_AS3935_NOMESS "listening..."
|
#define D_AS3935_NOMESS "listening..."
|
||||||
#define D_AS3935_ON "On"
|
#define D_AS3935_ON "On"
|
||||||
#define D_AS3935_OFF "Off"
|
#define D_AS3935_OFF "Off"
|
||||||
|
@ -823,6 +823,8 @@
|
|||||||
#define D_AS3935_NOISE "noise detected"
|
#define D_AS3935_NOISE "noise detected"
|
||||||
#define D_AS3935_DISTDET "disturber detected"
|
#define D_AS3935_DISTDET "disturber detected"
|
||||||
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
||||||
|
#define D_AS3935_FLICKER "IRQ flicker!"
|
||||||
|
#define D_AS3935_POWEROFF "Power Off"
|
||||||
#define D_AS3935_NOMESS "listening..."
|
#define D_AS3935_NOMESS "listening..."
|
||||||
#define D_AS3935_ON "On"
|
#define D_AS3935_ON "On"
|
||||||
#define D_AS3935_OFF "Off"
|
#define D_AS3935_OFF "Off"
|
||||||
|
@ -823,6 +823,8 @@
|
|||||||
#define D_AS3935_NOISE "noise detected"
|
#define D_AS3935_NOISE "noise detected"
|
||||||
#define D_AS3935_DISTDET "disturber detected"
|
#define D_AS3935_DISTDET "disturber detected"
|
||||||
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
||||||
|
#define D_AS3935_FLICKER "IRQ flicker!"
|
||||||
|
#define D_AS3935_POWEROFF "Power Off"
|
||||||
#define D_AS3935_NOMESS "listening..."
|
#define D_AS3935_NOMESS "listening..."
|
||||||
#define D_AS3935_ON "On"
|
#define D_AS3935_ON "On"
|
||||||
#define D_AS3935_OFF "Off"
|
#define D_AS3935_OFF "Off"
|
||||||
|
@ -823,6 +823,8 @@
|
|||||||
#define D_AS3935_NOISE "noise detected"
|
#define D_AS3935_NOISE "noise detected"
|
||||||
#define D_AS3935_DISTDET "disturber detected"
|
#define D_AS3935_DISTDET "disturber detected"
|
||||||
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
||||||
|
#define D_AS3935_FLICKER "IRQ flicker!"
|
||||||
|
#define D_AS3935_POWEROFF "Power Off"
|
||||||
#define D_AS3935_NOMESS "listening..."
|
#define D_AS3935_NOMESS "listening..."
|
||||||
#define D_AS3935_ON "On"
|
#define D_AS3935_ON "On"
|
||||||
#define D_AS3935_OFF "Off"
|
#define D_AS3935_OFF "Off"
|
||||||
|
@ -823,6 +823,8 @@
|
|||||||
#define D_AS3935_NOISE "noise detected"
|
#define D_AS3935_NOISE "noise detected"
|
||||||
#define D_AS3935_DISTDET "disturber detected"
|
#define D_AS3935_DISTDET "disturber detected"
|
||||||
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
#define D_AS3935_INTNOEV "Interrupt with no Event!"
|
||||||
|
#define D_AS3935_FLICKER "IRQ flicker!"
|
||||||
|
#define D_AS3935_POWEROFF "Power Off"
|
||||||
#define D_AS3935_NOMESS "listening..."
|
#define D_AS3935_NOMESS "listening..."
|
||||||
#define D_AS3935_ON "On"
|
#define D_AS3935_ON "On"
|
||||||
#define D_AS3935_OFF "Off"
|
#define D_AS3935_OFF "Off"
|
||||||
|
@ -823,6 +823,8 @@
|
|||||||
#define D_AS3935_NOISE "偵測到雜訊"
|
#define D_AS3935_NOISE "偵測到雜訊"
|
||||||
#define D_AS3935_DISTDET "偵測到干擾物"
|
#define D_AS3935_DISTDET "偵測到干擾物"
|
||||||
#define D_AS3935_INTNOEV "沒有任何事件觸發中斷!"
|
#define D_AS3935_INTNOEV "沒有任何事件觸發中斷!"
|
||||||
|
#define D_AS3935_FLICKER "IRQ flicker!"
|
||||||
|
#define D_AS3935_POWEROFF "Power Off"
|
||||||
#define D_AS3935_NOMESS "聽取中..."
|
#define D_AS3935_NOMESS "聽取中..."
|
||||||
#define D_AS3935_ON "開啟"
|
#define D_AS3935_ON "開啟"
|
||||||
#define D_AS3935_OFF "關閉"
|
#define D_AS3935_OFF "關閉"
|
||||||
|
@ -552,7 +552,7 @@
|
|||||||
// #define WEMOS_MOTOR_V1_FREQ 1000 // Default frequency
|
// #define WEMOS_MOTOR_V1_FREQ 1000 // Default frequency
|
||||||
// #define USE_HDC1080 // [I2cDriver45] Enable HDC1080 temperature/humidity sensor (I2C address 0x40) (+1k5 code)
|
// #define USE_HDC1080 // [I2cDriver45] Enable HDC1080 temperature/humidity sensor (I2C address 0x40) (+1k5 code)
|
||||||
// #define USE_IAQ // [I2cDriver46] Enable iAQ-core air quality sensor (I2C address 0x5a) (+0k6 code)
|
// #define USE_IAQ // [I2cDriver46] Enable iAQ-core air quality sensor (I2C address 0x5a) (+0k6 code)
|
||||||
// #define USE_AS3935 // [I2cDriver48] Enable AS3935 Franklin Lightning Sensor (I2C address 0x03) (+5k4 code)
|
#define USE_AS3935 // [I2cDriver48] Enable AS3935 Franklin Lightning Sensor (I2C address 0x03) (+5k4 code)
|
||||||
// #define USE_VEML6075 // [I2cDriver49] Enable VEML6075 UVA/UVB/UVINDEX Sensor (I2C address 0x10) (+2k1 code)
|
// #define USE_VEML6075 // [I2cDriver49] Enable VEML6075 UVA/UVB/UVINDEX Sensor (I2C address 0x10) (+2k1 code)
|
||||||
// #define USE_VEML7700 // [I2cDriver50] Enable VEML7700 Ambient Light sensor (I2C addresses 0x10) (+4k5 code)
|
// #define USE_VEML7700 // [I2cDriver50] Enable VEML7700 Ambient Light sensor (I2C addresses 0x10) (+4k5 code)
|
||||||
// #define USE_MCP9808 // [I2cDriver51] Enable MCP9808 temperature sensor (I2C addresses 0x18 - 0x1F) (+0k9 code)
|
// #define USE_MCP9808 // [I2cDriver51] Enable MCP9808 temperature sensor (I2C addresses 0x18 - 0x1F) (+0k9 code)
|
||||||
|
@ -284,7 +284,7 @@ typedef union {
|
|||||||
uint8_t dist_autotune : 1; // Autotune Disturber on/off
|
uint8_t dist_autotune : 1; // Autotune Disturber on/off
|
||||||
uint8_t nf_autotune_both : 1; // Autotune over both Areas: INDOORS/OUDOORS
|
uint8_t nf_autotune_both : 1; // Autotune over both Areas: INDOORS/OUDOORS
|
||||||
uint8_t mqtt_only_Light_Event : 1; // mqtt only if lightning Irq
|
uint8_t mqtt_only_Light_Event : 1; // mqtt only if lightning Irq
|
||||||
uint8_t spare4 : 1;
|
uint8_t suppress_irq_no_Event : 1; // suppress mqtt "IRQ with no Event". (Chip Bug)
|
||||||
uint8_t spare5 : 1;
|
uint8_t spare5 : 1;
|
||||||
uint8_t spare6 : 1;
|
uint8_t spare6 : 1;
|
||||||
uint8_t spare7 : 1;
|
uint8_t spare7 : 1;
|
||||||
|
@ -228,7 +228,7 @@ enum UserSelectablePins {
|
|||||||
GPIO_CC1101_GDO2, // CC1101 pin for RX
|
GPIO_CC1101_GDO2, // CC1101 pin for RX
|
||||||
GPIO_HRXL_RX, // Data from MaxBotix HRXL sonar range sensor
|
GPIO_HRXL_RX, // Data from MaxBotix HRXL sonar range sensor
|
||||||
GPIO_ELECTRIQ_MOODL_TX, // ElectriQ iQ-wifiMOODL Serial TX
|
GPIO_ELECTRIQ_MOODL_TX, // ElectriQ iQ-wifiMOODL Serial TX
|
||||||
GPIO_AS3935,
|
GPIO_AS3935, // Franklin Lightning Sensor
|
||||||
GPIO_PMS5003_TX, // Plantower PMS5003 Serial interface
|
GPIO_PMS5003_TX, // Plantower PMS5003 Serial interface
|
||||||
GPIO_BOILER_OT_RX, // OpenTherm Boiler RX pin
|
GPIO_BOILER_OT_RX, // OpenTherm Boiler RX pin
|
||||||
GPIO_BOILER_OT_TX, // OpenTherm Boiler TX pin
|
GPIO_BOILER_OT_TX, // OpenTherm Boiler TX pin
|
||||||
@ -710,7 +710,7 @@ const uint8_t kGpioNiceList[] PROGMEM = {
|
|||||||
GPIO_DYP_RX,
|
GPIO_DYP_RX,
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_AS3935
|
#ifdef USE_AS3935
|
||||||
GPIO_AS3935,
|
GPIO_AS3935, // AS3935 IRQ Pin
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_TELEINFO
|
#ifdef USE_TELEINFO
|
||||||
GPIO_TELEINFO_RX,
|
GPIO_TELEINFO_RX,
|
||||||
|
@ -111,7 +111,7 @@ enum UserSelectablePins {
|
|||||||
GPIO_CC1101_GDO0, GPIO_CC1101_GDO2, // CC1101 Serial interface
|
GPIO_CC1101_GDO0, GPIO_CC1101_GDO2, // CC1101 Serial interface
|
||||||
GPIO_HRXL_RX, // Data from MaxBotix HRXL sonar range sensor
|
GPIO_HRXL_RX, // Data from MaxBotix HRXL sonar range sensor
|
||||||
GPIO_ELECTRIQ_MOODL_TX, // ElectriQ iQ-wifiMOODL Serial TX
|
GPIO_ELECTRIQ_MOODL_TX, // ElectriQ iQ-wifiMOODL Serial TX
|
||||||
GPIO_AS3935,
|
GPIO_AS3935, // Franklin Lightning Sensor
|
||||||
GPIO_ADC_INPUT, // Analog input
|
GPIO_ADC_INPUT, // Analog input
|
||||||
GPIO_ADC_TEMP, // Analog Thermistor
|
GPIO_ADC_TEMP, // Analog Thermistor
|
||||||
GPIO_ADC_LIGHT, // Analog Light sensor
|
GPIO_ADC_LIGHT, // Analog Light sensor
|
||||||
@ -557,7 +557,7 @@ const uint16_t kGpioNiceList[] PROGMEM = {
|
|||||||
AGPIO(GPIO_DYP_RX),
|
AGPIO(GPIO_DYP_RX),
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_AS3935
|
#ifdef USE_AS3935
|
||||||
AGPIO(GPIO_AS3935),
|
AGPIO(GPIO_AS3935), // AS3935 IRQ Pin
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_TELEINFO
|
#ifdef USE_TELEINFO
|
||||||
AGPIO(GPIO_TELEINFO_RX),
|
AGPIO(GPIO_TELEINFO_RX),
|
||||||
|
@ -31,15 +31,8 @@
|
|||||||
#define D_NAME_AS3935 "AS3935"
|
#define D_NAME_AS3935 "AS3935"
|
||||||
#define AS3935_ADDR 0x03
|
#define AS3935_ADDR 0x03
|
||||||
|
|
||||||
// Reg mask shift
|
// I2C Registers Reg mask shift
|
||||||
#define IRQ_TBL 0x03, 0x0F, 0
|
#define PWR_REG 0x00, 0x01, 0
|
||||||
#define ENERGY_RAW_1 0x04, 0xFF, 0
|
|
||||||
#define ENERGY_RAW_2 0x05, 0xFF, 0
|
|
||||||
#define ENERGY_RAW_3 0x06, 0x1F, 0
|
|
||||||
#define LGHT_DIST 0x07, 0x3F, 0
|
|
||||||
#define DISP_TRCO 0x08, 0x20, 5
|
|
||||||
#define DISP_LCO 0x08, 0x80, 7
|
|
||||||
#define TUNE_CAPS 0x08, 0x0F, 0
|
|
||||||
#define AFE_GB 0x00, 0x3E, 0
|
#define AFE_GB 0x00, 0x3E, 0
|
||||||
#define WDTH 0x01, 0x0F, 0
|
#define WDTH 0x01, 0x0F, 0
|
||||||
#define NF_LEVEL 0x01, 0x70, 4
|
#define NF_LEVEL 0x01, 0x70, 4
|
||||||
@ -47,12 +40,32 @@
|
|||||||
#define MIN_NUM_LIGH 0x02, 0x30, 4
|
#define MIN_NUM_LIGH 0x02, 0x30, 4
|
||||||
#define DISTURBER 0x03, 0x20, 5
|
#define DISTURBER 0x03, 0x20, 5
|
||||||
#define LCO_FDIV 0x03, 0xC0, 6
|
#define LCO_FDIV 0x03, 0xC0, 6
|
||||||
|
#define IRQ_TBL 0x03, 0x0F, 0
|
||||||
|
#define ENERGY_RAW_1 0x04, 0xFF, 0
|
||||||
|
#define ENERGY_RAW_2 0x05, 0xFF, 0
|
||||||
|
#define ENERGY_RAW_3 0x06, 0x1F, 0
|
||||||
|
#define LGHT_DIST 0x07, 0x3F, 0
|
||||||
|
#define DISP_TRCO 0x08, 0x20, 5 // should 31.250 kHz with devide 16
|
||||||
|
#define DISP_SRCO 0x08, 0x40, 6 // 1,1 MHz
|
||||||
|
#define DISP_LCO 0x08, 0x80, 7 // 32.768 kHz
|
||||||
|
#define TUNE_CAPS 0x08, 0x0F, 0
|
||||||
|
#define CAL_TRCO_NOK 0x3A, 0x40, 6 // 1 = NOK
|
||||||
|
#define CAL_TRCO_DONE 0x3A, 0x80, 7 // 0 = OK
|
||||||
|
#define CAL_SRCO_NOK 0x3B, 0x40, 6
|
||||||
|
#define CAL_SRCO_DONE 0x3B, 0x80, 7
|
||||||
|
|
||||||
|
// I2C Commands
|
||||||
|
#define RESET_DEFAULT 0x3C, 0x96
|
||||||
|
#define CALIBATE_RCO 0x3D, 0x96
|
||||||
|
|
||||||
|
// NF-Level
|
||||||
#define INDOORS 0x24
|
#define INDOORS 0x24
|
||||||
#define OUTDOORS 0x1C
|
#define OUTDOORS 0x1C
|
||||||
|
|
||||||
// Global
|
// Load Settings Mask
|
||||||
const char HTTP_SNS_UNIT_KILOMETER[] PROGMEM = D_UNIT_KILOMETER;
|
#define SETREG00MASK 0x3E // For Power On
|
||||||
|
#define SETREG03MASK 0xF0 // For LCO and Disturber
|
||||||
|
|
||||||
// Http
|
// Http
|
||||||
const char HTTP_SNS_AS3935_ENERGY[] PROGMEM = "{s}" D_NAME_AS3935 " " D_AS3935_ENERGY " {m}%d{e}";
|
const char HTTP_SNS_AS3935_ENERGY[] PROGMEM = "{s}" D_NAME_AS3935 " " D_AS3935_ENERGY " {m}%d{e}";
|
||||||
const char HTTP_SNS_AS3935_DISTANZ[] PROGMEM = "{s}" D_NAME_AS3935 " " D_AS3935_DISTANCE " {m}%u " D_UNIT_KILOMETER "{e}";
|
const char HTTP_SNS_AS3935_DISTANZ[] PROGMEM = "{s}" D_NAME_AS3935 " " D_AS3935_DISTANCE " {m}%u " D_UNIT_KILOMETER "{e}";
|
||||||
@ -66,15 +79,18 @@ const char HTTP_SNS_AS3935_DIST_ON[] PROGMEM = "{s}%s " D_AS3935_DISTURBER " {m}
|
|||||||
const char HTTP_SNS_AS3935_DIST_OFF[] PROGMEM = "{s}%s " D_AS3935_DISTURBER " {m}" D_AS3935_OFF " {e}";
|
const char HTTP_SNS_AS3935_DIST_OFF[] PROGMEM = "{s}%s " D_AS3935_DISTURBER " {m}" D_AS3935_OFF " {e}";
|
||||||
const char* const HTTP_SNS_AS3935_DISTURBER[] PROGMEM = {HTTP_SNS_AS3935_DIST_OFF, HTTP_SNS_AS3935_DIST_ON};
|
const char* const HTTP_SNS_AS3935_DISTURBER[] PROGMEM = {HTTP_SNS_AS3935_DIST_OFF, HTTP_SNS_AS3935_DIST_ON};
|
||||||
// http Messages
|
// http Messages
|
||||||
const char HTTP_SNS_AS3935_EMPTY[] PROGMEM = "{s}%s: " D_AS3935_NOMESS "{e}";
|
const char HTTP_SNS_AS3935_EMPTY[] PROGMEM = "{s}%s " D_AS3935_NOMESS "{e}";
|
||||||
const char HTTP_SNS_AS3935_OUT[] PROGMEM = "{s}%s: " D_AS3935_OUT "{e}";
|
const char HTTP_SNS_AS3935_OUT[] PROGMEM = "{s}%s " D_AS3935_OUT "{e}";
|
||||||
const char HTTP_SNS_AS3935_NOT[] PROGMEM = "{s}%s: " D_AS3935_NOT "{e}";
|
const char HTTP_SNS_AS3935_NOT[] PROGMEM = "{s}%s " D_AS3935_NOT "{e}";
|
||||||
const char HTTP_SNS_AS3935_ABOVE[] PROGMEM = "{s}%s: " D_AS3935_ABOVE "{e}";
|
const char HTTP_SNS_AS3935_ABOVE[] PROGMEM = "{s}%s " D_AS3935_ABOVE "{e}";
|
||||||
const char HTTP_SNS_AS3935_NOISE[] PROGMEM = "{s}%s: " D_AS3935_NOISE "{e}";
|
const char HTTP_SNS_AS3935_NOISE[] PROGMEM = "{s}%s " D_AS3935_NOISE "{e}";
|
||||||
const char HTTP_SNS_AS3935_DISTURB[] PROGMEM = "{s}%s: " D_AS3935_DISTDET "{e}";
|
const char HTTP_SNS_AS3935_DISTURB[] PROGMEM = "{s}%s " D_AS3935_DISTDET "{e}";
|
||||||
const char HTTP_SNS_AS3935_INTNOEV[] PROGMEM = "{s}%s: " D_AS3935_INTNOEV "{e}";
|
const char HTTP_SNS_AS3935_INTNOEV[] PROGMEM = "{s}%s " D_AS3935_INTNOEV "{e}";
|
||||||
const char HTTP_SNS_AS3935_MSG[] PROGMEM = "{s}%s: " D_AS3935_LIGHT " " D_AS3935_APRX " %d " D_UNIT_KILOMETER " " D_AS3935_AWAY "{e}";
|
const char HTTP_SNS_AS3935_FLICKER[] PROGMEM = "{s}%s " D_AS3935_FLICKER "{e}";
|
||||||
const char* const HTTP_SNS_AS3935_TABLE_1[] PROGMEM = { HTTP_SNS_AS3935_EMPTY, HTTP_SNS_AS3935_MSG, HTTP_SNS_AS3935_OUT, HTTP_SNS_AS3935_NOT, HTTP_SNS_AS3935_ABOVE, HTTP_SNS_AS3935_NOISE, HTTP_SNS_AS3935_DISTURB, HTTP_SNS_AS3935_INTNOEV };
|
const char HTTP_SNS_AS3935_POWEROFF[] PROGMEM = "{s}%s " D_AS3935_POWEROFF "{e}";
|
||||||
|
|
||||||
|
const char HTTP_SNS_AS3935_MSG[] PROGMEM = "{s}%s " D_AS3935_LIGHT " " D_AS3935_APRX " %d " D_UNIT_KILOMETER " " D_AS3935_AWAY "{e}";
|
||||||
|
const char* const HTTP_SNS_AS3935_TABLE_1[] PROGMEM = { HTTP_SNS_AS3935_EMPTY, HTTP_SNS_AS3935_MSG, HTTP_SNS_AS3935_OUT, HTTP_SNS_AS3935_NOT, HTTP_SNS_AS3935_ABOVE, HTTP_SNS_AS3935_NOISE, HTTP_SNS_AS3935_DISTURB, HTTP_SNS_AS3935_INTNOEV, HTTP_SNS_AS3935_FLICKER, HTTP_SNS_AS3935_POWEROFF };
|
||||||
// Json
|
// Json
|
||||||
const char JSON_SNS_AS3935_EVENTS[] PROGMEM = ",\"%s\":{\"" D_JSON_EVENT "\":%d,\"" D_JSON_DISTANCE "\":%d,\"" D_JSON_ENERGY "\":%u,\"" D_JSON_STAGE "\":%d}";
|
const char JSON_SNS_AS3935_EVENTS[] PROGMEM = ",\"%s\":{\"" D_JSON_EVENT "\":%d,\"" D_JSON_DISTANCE "\":%d,\"" D_JSON_ENERGY "\":%u,\"" D_JSON_STAGE "\":%d}";
|
||||||
// Json Command
|
// Json Command
|
||||||
@ -84,13 +100,17 @@ const char* const S_JSON_AS3935_COMMAND_CAL[] PROGMEM = {"" D_AS3935_CAL_FAIL ""
|
|||||||
|
|
||||||
const char S_JSON_AS3935_COMMAND_STRING[] PROGMEM = "{\"" D_NAME_AS3935 "\":{\"%s\":%s}}";
|
const char S_JSON_AS3935_COMMAND_STRING[] PROGMEM = "{\"" D_NAME_AS3935 "\":{\"%s\":%s}}";
|
||||||
const char S_JSON_AS3935_COMMAND_NVALUE[] PROGMEM = "{\"" D_NAME_AS3935 "\":{\"%s\":%d}}";
|
const char S_JSON_AS3935_COMMAND_NVALUE[] PROGMEM = "{\"" D_NAME_AS3935 "\":{\"%s\":%d}}";
|
||||||
const char S_JSON_AS3935_COMMAND_SETTINGS[] PROGMEM = "{\"" D_NAME_AS3935 "\":{\"Gain\":%s,\"NFfloor\":%d,\"uVrms\":%d,\"Tunecaps\":%d,\"MinNumLight\":%d,\"Rejektion\":%d,\"Wdthreshold\":%d,\"MinNFstage\":%d,\"NFAutoTime\":%d,\"DisturberAutoTime\":%d,\"Disturber\":%s,\"NFauto\":%s,\"Disturberauto\":%s,\"NFautomax\":%s,\"Mqttlightevent\":%s}}";
|
const char S_JSON_AS3935_COMMAND_SETTINGS[] PROGMEM = "{\"AS3935_Settings\":{\"Gain\":%s,\"NFfloor\":%d,\"uVrms\":%d,\"Tunecaps\":%d,\"MinNumLight\":%d,\"Rejektion\":%d,\"Wdthreshold\":%d,\"MinNFstage\":%d,\"NFAutoTime\":%d,\"DisturberAutoTime\":%d,\"Disturber\":%s,\"NFauto\":%s,\"Disturberauto\":%s,\"NFautomax\":%s,\"Mqttlightevent\":%s,\"Mqttnoirqevent\":%s}}";
|
||||||
|
|
||||||
const char kAS3935_Commands[] PROGMEM = "setnf|setminstage|setml|default|setgain|settunecaps|setrej|setwdth|disttime|nftime|disturber|autonf|autodisturber|autonfmax|mqttevent|settings|calibrate";
|
const char kAS3935_Commands[] PROGMEM = "power|setnf|setminstage|setml|default|setgain|settunecaps|setrej|setwdth|disttime|nftime|disturber|autonf|autodisturber|autonfmax|lightevent|noirqevent|settings|calibrate";
|
||||||
|
|
||||||
|
const uint8_t AS3935_VrmsIndoor[] PROGMEM = { 28, 45, 62, 78, 95, 112, 130, 146 };
|
||||||
|
const uint16_t AS3935_VrmsOutdoor[] PROGMEM = { 390, 630, 860, 1100, 1140, 1570, 1800, 2000 };
|
||||||
|
|
||||||
enum AS3935_Commands { // commands for Console
|
enum AS3935_Commands { // commands for Console
|
||||||
|
CMND_AS3935_POWER, // Power on/off the device (1 Bit)
|
||||||
CMND_AS3935_SET_NF, // Noise Floor Level, value from 0-7 (3 Bit)
|
CMND_AS3935_SET_NF, // Noise Floor Level, value from 0-7 (3 Bit)
|
||||||
CMND_AS3935_SET_MINNF, // Set Min Noise Floor Level when Autotune is active Value von 0-15
|
CMND_AS3935_SET_MINNF, // Set Min Noise Floor Level when Autotune is active Value from 0-15
|
||||||
CMND_AS3935_SET_MINLIGHT, // Minimum number of lightning 0=1/1=5/2=9/3=16 Lightnings
|
CMND_AS3935_SET_MINLIGHT, // Minimum number of lightning 0=1/1=5/2=9/3=16 Lightnings
|
||||||
CMND_AS3935_SET_DEF, // set default for Sensor and Settings
|
CMND_AS3935_SET_DEF, // set default for Sensor and Settings
|
||||||
CMND_AS3935_SET_GAIN, // Set Inddoor/Outdoor
|
CMND_AS3935_SET_GAIN, // Set Inddoor/Outdoor
|
||||||
@ -104,24 +124,25 @@ enum AS3935_Commands { // commands for Console
|
|||||||
CMND_AS3935_DIST_AUTOTUNE, // Autotune Disturber on/off
|
CMND_AS3935_DIST_AUTOTUNE, // Autotune Disturber on/off
|
||||||
CMND_AS3935_NF_ATUNE_BOTH, // Autotune over both Areas: INDOORS/OUDOORS
|
CMND_AS3935_NF_ATUNE_BOTH, // Autotune over both Areas: INDOORS/OUDOORS
|
||||||
CMND_AS3935_MQTT_LIGHT_EVT, // mqtt only if lightning Irq
|
CMND_AS3935_MQTT_LIGHT_EVT, // mqtt only if lightning Irq
|
||||||
|
CMND_AS3935_MQTT_NO_IRQ_EVT, // suppress mqtt "IRQ with no Event"
|
||||||
CMND_AS3935_SETTINGS, // Json output of all settings
|
CMND_AS3935_SETTINGS, // Json output of all settings
|
||||||
CMND_AS3935_CALIBRATE // caps autocalibrate
|
CMND_AS3935_CALIBRATE // caps autocalibrate
|
||||||
};
|
};
|
||||||
|
|
||||||
struct AS3935STRUCT
|
struct {
|
||||||
{
|
bool active = false;
|
||||||
bool autodist_activ = false;
|
bool http_count_start = false;
|
||||||
|
bool poweroff = false;
|
||||||
volatile bool detected = false;
|
volatile bool detected = false;
|
||||||
volatile bool dispLCO = 0;
|
volatile bool dispLCO = false;
|
||||||
uint8_t icount = 0;
|
volatile uint8_t icount = 0;
|
||||||
uint8_t irq = 0;
|
uint8_t irq = 0;
|
||||||
uint8_t mqtt_irq = 0;
|
uint8_t mqtt_event = 0;
|
||||||
uint8_t http_irq = 0;
|
uint8_t http_event = 0;
|
||||||
uint8_t http_count_start = 0;
|
uint8_t http_time = 0;
|
||||||
|
uint8_t http_count = 0;
|
||||||
int16_t http_distance = 0;
|
int16_t http_distance = 0;
|
||||||
int16_t distance = 0;
|
int16_t distance = 0;
|
||||||
uint16_t http_timer = 0;
|
|
||||||
uint16_t http_count = 0;
|
|
||||||
uint16_t nftimer = 0;
|
uint16_t nftimer = 0;
|
||||||
uint16_t disttimer = 0;
|
uint16_t disttimer = 0;
|
||||||
uint32_t intensity = 0;
|
uint32_t intensity = 0;
|
||||||
@ -129,16 +150,16 @@ struct AS3935STRUCT
|
|||||||
volatile uint32_t pulse = 0;
|
volatile uint32_t pulse = 0;
|
||||||
} as3935_sensor;
|
} as3935_sensor;
|
||||||
|
|
||||||
uint8_t as3935_active = 0;
|
void ICACHE_RAM_ATTR AS3935Isr(void) {
|
||||||
|
|
||||||
void ICACHE_RAM_ATTR AS3935Isr() {
|
|
||||||
as3935_sensor.detected = true;
|
as3935_sensor.detected = true;
|
||||||
|
as3935_sensor.icount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// we have to store 5 Bytes in the eeprom. Register 8 is mapped to Byte 4
|
||||||
uint8_t AS3935ReadRegister(uint8_t reg, uint8_t mask, uint8_t shift) {
|
uint8_t AS3935ReadRegister(uint8_t reg, uint8_t mask, uint8_t shift) {
|
||||||
uint8_t data = I2cRead8(AS3935_ADDR, reg);
|
uint8_t data = I2cRead8(AS3935_ADDR, reg);
|
||||||
if (reg == 0x08) Settings.as3935_sensor_cfg[4] = data;
|
if (reg == 0x08) Settings.as3935_sensor_cfg[4] = data;
|
||||||
if (reg < 0x04) Settings.as3935_sensor_cfg[reg] = data;
|
if (reg <= 0x03) Settings.as3935_sensor_cfg[reg] = data;
|
||||||
return ((data & mask) >> shift);
|
return ((data & mask) >> shift);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -150,12 +171,12 @@ void AS3935WriteRegister(uint8_t reg, uint8_t mask, uint8_t shift, uint8_t data)
|
|||||||
data |= currentReg;
|
data |= currentReg;
|
||||||
I2cWrite8(AS3935_ADDR, reg, data);
|
I2cWrite8(AS3935_ADDR, reg, data);
|
||||||
if (reg == 0x08) Settings.as3935_sensor_cfg[4] = I2cRead8(AS3935_ADDR, reg);
|
if (reg == 0x08) Settings.as3935_sensor_cfg[4] = I2cRead8(AS3935_ADDR, reg);
|
||||||
if (reg < 0x04) Settings.as3935_sensor_cfg[reg] = I2cRead8(AS3935_ADDR, reg);
|
if (reg <= 0x03) Settings.as3935_sensor_cfg[reg] = I2cRead8(AS3935_ADDR, reg);
|
||||||
}
|
}
|
||||||
|
|
||||||
/********************************************************************************************/
|
/********************************************************************************************/
|
||||||
// Autotune Caps
|
// Autotune Caps
|
||||||
void ICACHE_RAM_ATTR AS3935CountFreq() {
|
void ICACHE_RAM_ATTR AS3935CountFreq(void) {
|
||||||
if (as3935_sensor.dispLCO)
|
if (as3935_sensor.dispLCO)
|
||||||
as3935_sensor.pulse++;
|
as3935_sensor.pulse++;
|
||||||
}
|
}
|
||||||
@ -163,6 +184,7 @@ void ICACHE_RAM_ATTR AS3935CountFreq() {
|
|||||||
bool AS3935AutoTuneCaps(uint8_t irqpin) {
|
bool AS3935AutoTuneCaps(uint8_t irqpin) {
|
||||||
int32_t maxtune = 17500; // there max 3.5 % tol
|
int32_t maxtune = 17500; // there max 3.5 % tol
|
||||||
uint8_t besttune;
|
uint8_t besttune;
|
||||||
|
uint8_t oldvalue = AS3935GetTuneCaps();
|
||||||
AS3935WriteRegister(LCO_FDIV, 0); // Fdiv 16
|
AS3935WriteRegister(LCO_FDIV, 0); // Fdiv 16
|
||||||
delay(2);
|
delay(2);
|
||||||
for (uint8_t tune = 0; tune < 16; tune++) {
|
for (uint8_t tune = 0; tune < 16; tune++) {
|
||||||
@ -173,52 +195,79 @@ bool AS3935AutoTuneCaps(uint8_t irqpin) {
|
|||||||
as3935_sensor.dispLCO = true;
|
as3935_sensor.dispLCO = true;
|
||||||
as3935_sensor.pulse = 0;
|
as3935_sensor.pulse = 0;
|
||||||
attachInterrupt(digitalPinToInterrupt(irqpin), AS3935CountFreq, RISING);
|
attachInterrupt(digitalPinToInterrupt(irqpin), AS3935CountFreq, RISING);
|
||||||
delay(200); // 100ms callback not work accurat for fequ. measure
|
delay(50);
|
||||||
as3935_sensor.dispLCO = false;
|
as3935_sensor.dispLCO = false;
|
||||||
detachInterrupt(irqpin);
|
detachInterrupt(irqpin);
|
||||||
AS3935WriteRegister(DISP_LCO, 0);
|
AS3935WriteRegister(DISP_LCO, 0);
|
||||||
int32_t currentfreq = 500000 - ((as3935_sensor.pulse * 5) * 16);
|
int32_t currentfreq = 500000 - ((as3935_sensor.pulse * 20) * 16);
|
||||||
if(currentfreq < 0) currentfreq = -currentfreq;
|
if(currentfreq < 0) currentfreq = -currentfreq;
|
||||||
if(maxtune > currentfreq) {
|
if(maxtune > currentfreq) {
|
||||||
maxtune = currentfreq;
|
maxtune = currentfreq;
|
||||||
besttune = tune;
|
besttune = tune;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (maxtune >= 17500) // max. 3.5%
|
if (maxtune >= 17500) { // max. 3.5%
|
||||||
|
AS3935SetTuneCaps(oldvalue);
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
AS3935SetTuneCaps(besttune);
|
AS3935SetTuneCaps(besttune);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/********************************************************************************************/
|
/********************************************************************************************/
|
||||||
// functions
|
// functions
|
||||||
void AS3935CalibrateRCO() {
|
bool AS3935CalRCOResult(void) {
|
||||||
I2cWrite8(AS3935_ADDR, 0x3D, 0x96);
|
if(AS3935ReadRegister(CAL_SRCO_NOK) || AS3935ReadRegister(CAL_TRCO_NOK)) {
|
||||||
AS3935WriteRegister(DISP_TRCO, 1);
|
AddLog_P2(LOG_LEVEL_INFO, PSTR("I2C: AS3935 Fatal Failure of TRCO or SRCO calibration"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool AS3935CalibrateRCO(void) {
|
||||||
|
detachInterrupt(Pin(GPIO_AS3935)); // Prevent AS3935Isr from RCO Calibration
|
||||||
|
I2cWrite8(AS3935_ADDR, CALIBATE_RCO); // Cal TRCO & SRCO
|
||||||
|
AS3935WriteRegister(DISP_TRCO, 1); // need for Power up
|
||||||
delay(2);
|
delay(2);
|
||||||
AS3935WriteRegister(DISP_TRCO, 0);
|
AS3935WriteRegister(DISP_TRCO, 0);
|
||||||
|
if(!AS3935CalRCOResult())
|
||||||
|
return false;
|
||||||
|
attachInterrupt(digitalPinToInterrupt(Pin(GPIO_AS3935)), AS3935Isr, RISING);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t AS3935TransMinLights(uint8_t min_lights) {
|
void AS3935Reset(void) {
|
||||||
if (5 > min_lights) {
|
I2cWrite8(AS3935_ADDR, RESET_DEFAULT);
|
||||||
|
delay(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AS3935PwrDown(void) {
|
||||||
|
AS3935WriteRegister(PWR_REG ,1);
|
||||||
|
detachInterrupt(Pin(GPIO_AS3935));
|
||||||
|
as3935_sensor.poweroff = true;
|
||||||
|
as3935_sensor.mqtt_event = 9;
|
||||||
|
as3935_sensor.http_event = 9;
|
||||||
|
as3935_sensor.intensity = 0;
|
||||||
|
as3935_sensor.distance = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AS3935PwrUp(void) {
|
||||||
|
AS3935WriteRegister(PWR_REG ,0);
|
||||||
|
AS3935CalibrateRCO();
|
||||||
|
as3935_sensor.poweroff = false;
|
||||||
|
as3935_sensor.mqtt_event = 0;
|
||||||
|
as3935_sensor.http_event = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t AS3935GetPwrStat(void) {
|
||||||
|
if (AS3935ReadRegister(PWR_REG))
|
||||||
return 0;
|
return 0;
|
||||||
} else if (9 > min_lights) {
|
|
||||||
return 1;
|
return 1;
|
||||||
} else if (16 > min_lights) {
|
|
||||||
return 2;
|
|
||||||
} else {
|
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t AS3935TranslMinLightsInt(uint8_t min_lights) {
|
uint8_t AS3935GetIRQ(void) {
|
||||||
switch (min_lights) {
|
delay(2);
|
||||||
case 0: return 1;
|
return AS3935ReadRegister(IRQ_TBL);
|
||||||
case 1: return 5;
|
|
||||||
case 2: return 9;
|
|
||||||
case 3: return 16;
|
|
||||||
}
|
|
||||||
return 0; // Fix GCC 10.1 warning
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t AS3935TranslIrq(uint8_t irq, uint8_t distance) {
|
uint8_t AS3935TranslIrq(uint8_t irq, uint8_t distance) {
|
||||||
@ -235,106 +284,31 @@ uint8_t AS3935TranslIrq(uint8_t irq, uint8_t distance) {
|
|||||||
return 0; // Fix GCC 10.1 warning
|
return 0; // Fix GCC 10.1 warning
|
||||||
}
|
}
|
||||||
|
|
||||||
void AS3935CalcVrmsLevel(uint16_t &vrms, uint8_t &stage)
|
uint8_t AS3935GetDistance(void) {
|
||||||
{
|
|
||||||
uint8_t room = AS3935GetGain();
|
|
||||||
uint8_t nflev = AS3935GetNoiseFloor();
|
|
||||||
if (room == 0x24)
|
|
||||||
{
|
|
||||||
switch (nflev){
|
|
||||||
case 0x00:
|
|
||||||
vrms = 28;
|
|
||||||
break;
|
|
||||||
case 0x01:
|
|
||||||
vrms = 45;
|
|
||||||
break;
|
|
||||||
case 0x02:
|
|
||||||
vrms = 62;
|
|
||||||
break;
|
|
||||||
case 0x03:
|
|
||||||
vrms = 78;
|
|
||||||
break;
|
|
||||||
case 0x04:
|
|
||||||
vrms = 95;
|
|
||||||
break;
|
|
||||||
case 0x05:
|
|
||||||
vrms = 112;
|
|
||||||
break;
|
|
||||||
case 0x06:
|
|
||||||
vrms = 130;
|
|
||||||
break;
|
|
||||||
case 0x07:
|
|
||||||
vrms = 146;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
stage = nflev;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
switch (nflev)
|
|
||||||
{
|
|
||||||
case 0x00:
|
|
||||||
vrms = 390;
|
|
||||||
break;
|
|
||||||
case 0x01:
|
|
||||||
vrms = 630;
|
|
||||||
break;
|
|
||||||
case 0x02:
|
|
||||||
vrms = 860;
|
|
||||||
break;
|
|
||||||
case 0x03:
|
|
||||||
vrms = 1100;
|
|
||||||
break;
|
|
||||||
case 0x04:
|
|
||||||
vrms = 1140;
|
|
||||||
break;
|
|
||||||
case 0x05:
|
|
||||||
vrms = 1570;
|
|
||||||
break;
|
|
||||||
case 0x06:
|
|
||||||
vrms = 1800;
|
|
||||||
break;
|
|
||||||
case 0x07:
|
|
||||||
vrms = 2000;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
stage = nflev + 8;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/********************************************************************************************/
|
|
||||||
uint8_t AS3935GetIRQ() {
|
|
||||||
delay(2);
|
|
||||||
return AS3935ReadRegister(IRQ_TBL);
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t AS3935GetDistance() {
|
|
||||||
return AS3935ReadRegister(LGHT_DIST);
|
return AS3935ReadRegister(LGHT_DIST);
|
||||||
}
|
}
|
||||||
|
|
||||||
int16_t AS3935CalcDistance() {
|
int16_t AS3935CalcDistance(void) {
|
||||||
uint8_t dist = AS3935GetDistance();
|
uint8_t dist = AS3935GetDistance();
|
||||||
switch (dist) {
|
switch (dist) {
|
||||||
case 0x3F: return -1; // Out of Range
|
case 0x3F: return -1; // Out of Range
|
||||||
case 0x01: return 1; // Storm is Overhead
|
|
||||||
case 0x00: return 0; // Distance cannot be determined
|
case 0x00: return 0; // Distance cannot be determined
|
||||||
|
case 0x01: return 1; // Storm is Overhead
|
||||||
default:
|
default:
|
||||||
if (40 < dist){
|
if (40 < dist) return 40; // limited because higher is not accurate
|
||||||
return 40;// limited because higher is not accurate
|
|
||||||
}
|
|
||||||
return dist;
|
return dist;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t AS3935GetIntensity() {
|
uint32_t AS3935GetIntensity(void) {
|
||||||
uint32_t nrgy_raw = (AS3935ReadRegister(ENERGY_RAW_3) << 8);
|
uint32_t energy_raw = (AS3935ReadRegister(ENERGY_RAW_3) << 8);
|
||||||
nrgy_raw |= AS3935ReadRegister(ENERGY_RAW_2);
|
energy_raw |= AS3935ReadRegister(ENERGY_RAW_2);
|
||||||
nrgy_raw <<= 8;
|
energy_raw <<= 8;
|
||||||
nrgy_raw |= AS3935ReadRegister(ENERGY_RAW_1);
|
energy_raw |= AS3935ReadRegister(ENERGY_RAW_1);
|
||||||
return nrgy_raw;
|
return energy_raw;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t AS3935GetTuneCaps() {
|
uint8_t AS3935GetTuneCaps(void) {
|
||||||
return AS3935ReadRegister(TUNE_CAPS);
|
return AS3935ReadRegister(TUNE_CAPS);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -344,7 +318,7 @@ void AS3935SetTuneCaps(uint8_t tune) {
|
|||||||
AS3935CalibrateRCO();
|
AS3935CalibrateRCO();
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t AS3935GetDisturber() {
|
uint8_t AS3935GetDisturber(void) {
|
||||||
return AS3935ReadRegister(DISTURBER);
|
return AS3935ReadRegister(DISTURBER);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -352,7 +326,7 @@ void AS3935SetDisturber(uint8_t stat) {
|
|||||||
AS3935WriteRegister(DISTURBER, stat);
|
AS3935WriteRegister(DISTURBER, stat);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t AS3935GetMinLights() {
|
uint8_t AS3935GetMinLights(void) {
|
||||||
return AS3935ReadRegister(MIN_NUM_LIGH);
|
return AS3935ReadRegister(MIN_NUM_LIGH);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -360,7 +334,24 @@ void AS3935SetMinLights(uint8_t stat) {
|
|||||||
AS3935WriteRegister(MIN_NUM_LIGH, stat);
|
AS3935WriteRegister(MIN_NUM_LIGH, stat);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t AS3935GetNoiseFloor() {
|
uint8_t AS3935TransMinLights(uint8_t min_lights) {
|
||||||
|
if (5 > min_lights) return 0;
|
||||||
|
else if (9 > min_lights) return 1;
|
||||||
|
else if (16 > min_lights) return 2;
|
||||||
|
else return 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t AS3935TranslMinLightsInt(uint8_t min_lights) {
|
||||||
|
switch (min_lights) {
|
||||||
|
case 0: return 1;
|
||||||
|
case 1: return 5;
|
||||||
|
case 2: return 9;
|
||||||
|
case 3: return 16;
|
||||||
|
}
|
||||||
|
return 0; // Fix GCC 10.1 warning
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t AS3935GetNoiseFloor(void) {
|
||||||
return AS3935ReadRegister(NF_LEVEL);
|
return AS3935ReadRegister(NF_LEVEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -368,7 +359,7 @@ void AS3935SetNoiseFloor(uint8_t noise) {
|
|||||||
AS3935WriteRegister(NF_LEVEL , noise);
|
AS3935WriteRegister(NF_LEVEL , noise);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t AS3935GetGain() {
|
uint8_t AS3935GetGain(void) {
|
||||||
if (AS3935ReadRegister(AFE_GB) == OUTDOORS)
|
if (AS3935ReadRegister(AFE_GB) == OUTDOORS)
|
||||||
return OUTDOORS;
|
return OUTDOORS;
|
||||||
return INDOORS;
|
return INDOORS;
|
||||||
@ -378,13 +369,25 @@ void AS3935SetGain(uint8_t room) {
|
|||||||
AS3935WriteRegister(AFE_GB, room);
|
AS3935WriteRegister(AFE_GB, room);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t AS3935GetGainInt() {
|
uint8_t AS3935GetGainInt(void) {
|
||||||
if (AS3935ReadRegister(AFE_GB) == OUTDOORS)
|
if (AS3935ReadRegister(AFE_GB) == OUTDOORS)
|
||||||
return 1;
|
return 1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t AS3935GetSpikeRejection() {
|
void AS3935CalcVrmsLevel(uint16_t &vrms, uint8_t &stage) {
|
||||||
|
uint8_t room = AS3935GetGain();
|
||||||
|
uint8_t nflev = AS3935GetNoiseFloor();
|
||||||
|
if (room == INDOORS) {
|
||||||
|
vrms = pgm_read_byte(AS3935_VrmsIndoor + nflev);
|
||||||
|
stage = nflev;
|
||||||
|
} else {
|
||||||
|
vrms = pgm_read_word(AS3935_VrmsOutdoor + nflev);
|
||||||
|
stage = nflev + 8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t AS3935GetSpikeRejection(void) {
|
||||||
return AS3935ReadRegister(SPIKE_REJECT);
|
return AS3935ReadRegister(SPIKE_REJECT);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -392,7 +395,7 @@ void AS3935SetSpikeRejection(uint8_t rej) {
|
|||||||
AS3935WriteRegister(SPIKE_REJECT, rej);
|
AS3935WriteRegister(SPIKE_REJECT, rej);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t AS3935GetWdth() {
|
uint8_t AS3935GetWdth(void) {
|
||||||
return AS3935ReadRegister(WDTH);
|
return AS3935ReadRegister(WDTH);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -400,17 +403,15 @@ void AS3935SetWdth(uint8_t wdth) {
|
|||||||
AS3935WriteRegister(WDTH, wdth);
|
AS3935WriteRegister(WDTH, wdth);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AS3935AutoTune(){
|
bool AS3935AutoTune(void) {
|
||||||
detachInterrupt(Pin(GPIO_AS3935));
|
detachInterrupt(Pin(GPIO_AS3935));
|
||||||
bool result = AS3935AutoTuneCaps(Pin(GPIO_AS3935));
|
bool result = AS3935AutoTuneCaps(Pin(GPIO_AS3935));
|
||||||
attachInterrupt(digitalPinToInterrupt(Pin(GPIO_AS3935)), AS3935Isr, RISING);
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/********************************************************************************************/
|
/********************************************************************************************/
|
||||||
// Noise Floor autofunctions
|
// Noise Floor autofunctions
|
||||||
bool AS3935LowerNoiseFloor() {
|
bool AS3935LowerNoiseFloor(void) {
|
||||||
uint8_t noise = AS3935GetNoiseFloor();
|
|
||||||
uint16_t vrms;
|
uint16_t vrms;
|
||||||
uint8_t stage;
|
uint8_t stage;
|
||||||
AS3935CalcVrmsLevel(vrms, stage);
|
AS3935CalcVrmsLevel(vrms, stage);
|
||||||
@ -421,6 +422,7 @@ bool AS3935LowerNoiseFloor() {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
uint8_t noise = AS3935GetNoiseFloor();
|
||||||
if (0 < noise && stage > Settings.as3935_parameter.nf_autotune_min) {
|
if (0 < noise && stage > Settings.as3935_parameter.nf_autotune_min) {
|
||||||
noise--;
|
noise--;
|
||||||
AS3935SetNoiseFloor(noise);
|
AS3935SetNoiseFloor(noise);
|
||||||
@ -429,7 +431,7 @@ bool AS3935LowerNoiseFloor() {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AS3935RaiseNoiseFloor() {
|
bool AS3935RaiseNoiseFloor(void) {
|
||||||
uint8_t noise = AS3935GetNoiseFloor();
|
uint8_t noise = AS3935GetNoiseFloor();
|
||||||
uint8_t room = AS3935GetGain();
|
uint8_t room = AS3935GetGain();
|
||||||
if (Settings.as3935_functions.nf_autotune_both) {
|
if (Settings.as3935_functions.nf_autotune_both) {
|
||||||
@ -449,21 +451,24 @@ bool AS3935RaiseNoiseFloor() {
|
|||||||
|
|
||||||
/********************************************************************************************/
|
/********************************************************************************************/
|
||||||
// init functions
|
// init functions
|
||||||
bool AS3935SetDefault() {
|
bool AS3935SetDefault(void) {
|
||||||
I2cWrite8(AS3935_ADDR, 0x3C, 0x96); // Set default
|
AS3935Reset();
|
||||||
delay(2);
|
AS3935SetDisturber(1); // Disturber on by default
|
||||||
|
AS3935SetNoiseFloor(7); // NF High on by default
|
||||||
Settings.as3935_sensor_cfg[0] = I2cRead8(AS3935_ADDR, 0x00);
|
Settings.as3935_sensor_cfg[0] = I2cRead8(AS3935_ADDR, 0x00);
|
||||||
Settings.as3935_sensor_cfg[1] = I2cRead8(AS3935_ADDR, 0x01);
|
Settings.as3935_sensor_cfg[1] = I2cRead8(AS3935_ADDR, 0x01);
|
||||||
Settings.as3935_sensor_cfg[2] = I2cRead8(AS3935_ADDR, 0x02);
|
Settings.as3935_sensor_cfg[2] = I2cRead8(AS3935_ADDR, 0x02);
|
||||||
Settings.as3935_sensor_cfg[3] = I2cRead8(AS3935_ADDR, 0x03);
|
Settings.as3935_sensor_cfg[3] = I2cRead8(AS3935_ADDR, 0x03);
|
||||||
Settings.as3935_sensor_cfg[4] = I2cRead8(AS3935_ADDR, 0x08);
|
Settings.as3935_sensor_cfg[4] = I2cRead8(AS3935_ADDR, 0x08);
|
||||||
|
// set all eeprom functions and values to default
|
||||||
|
Settings.as3935_functions.data = 0x00;
|
||||||
Settings.as3935_parameter.nf_autotune_min = 0x00;
|
Settings.as3935_parameter.nf_autotune_min = 0x00;
|
||||||
Settings.as3935_parameter.nf_autotune_time = 4;
|
Settings.as3935_parameter.nf_autotune_time = 4;
|
||||||
Settings.as3935_parameter.dist_autotune_time = 1;
|
Settings.as3935_parameter.dist_autotune_time = 1;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AS3935InitSettings() {
|
void AS3935InitSettings(void) {
|
||||||
if(Settings.as3935_functions.nf_autotune) {
|
if(Settings.as3935_functions.nf_autotune) {
|
||||||
if(Settings.as3935_parameter.nf_autotune_min) {
|
if(Settings.as3935_parameter.nf_autotune_min) {
|
||||||
if (Settings.as3935_parameter.nf_autotune_min > 7) {
|
if (Settings.as3935_parameter.nf_autotune_min > 7) {
|
||||||
@ -475,55 +480,62 @@ void AS3935InitSettings() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
I2cWrite8(AS3935_ADDR, 0x00, Settings.as3935_sensor_cfg[0]);
|
I2cWrite8(AS3935_ADDR, 0x00, Settings.as3935_sensor_cfg[0] & SETREG00MASK);
|
||||||
I2cWrite8(AS3935_ADDR, 0x01, Settings.as3935_sensor_cfg[1]);
|
I2cWrite8(AS3935_ADDR, 0x01, Settings.as3935_sensor_cfg[1]);
|
||||||
I2cWrite8(AS3935_ADDR, 0x02, Settings.as3935_sensor_cfg[2]);
|
I2cWrite8(AS3935_ADDR, 0x02, Settings.as3935_sensor_cfg[2]);
|
||||||
I2cWrite8(AS3935_ADDR, 0x03, Settings.as3935_sensor_cfg[3]);
|
I2cWrite8(AS3935_ADDR, 0x03, Settings.as3935_sensor_cfg[3] & SETREG03MASK);
|
||||||
I2cWrite8(AS3935_ADDR, 0x08, Settings.as3935_sensor_cfg[4]);
|
I2cWrite8(AS3935_ADDR, 0x08, Settings.as3935_sensor_cfg[4]);
|
||||||
delay(2);
|
delay(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AS3935Setup(void) {
|
bool AS3935Setup(void) {
|
||||||
if (Settings.as3935_sensor_cfg[0] == 0x00) {
|
if (Settings.as3935_sensor_cfg[0] == 0x00) {
|
||||||
AS3935SetDefault();
|
AS3935SetDefault();
|
||||||
} else {
|
} else {
|
||||||
AS3935InitSettings();
|
AS3935InitSettings();
|
||||||
}
|
}
|
||||||
AS3935CalibrateRCO();
|
return AS3935CalibrateRCO();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AS3935init() {
|
bool AS3935init(void) {
|
||||||
uint8_t ret = I2cRead8(AS3935_ADDR, 0x00);
|
AS3935Reset();
|
||||||
if(INDOORS == ret || OUTDOORS == ret) // 0x24
|
uint8_t afe_gb = I2cRead8(AS3935_ADDR, 0x00) & SETREG00MASK;
|
||||||
|
if(INDOORS == afe_gb)
|
||||||
return true;
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AS3935Detect(void) {
|
void AS3935Detect(void) {
|
||||||
if (I2cActive(AS3935_ADDR)) return;
|
if (!I2cSetDevice(AS3935_ADDR)) return;
|
||||||
if (AS3935init())
|
if (AS3935init()) {
|
||||||
{
|
|
||||||
I2cSetActiveFound(AS3935_ADDR, D_NAME_AS3935);
|
I2cSetActiveFound(AS3935_ADDR, D_NAME_AS3935);
|
||||||
|
if (PinUsed(GPIO_AS3935)) {
|
||||||
pinMode(Pin(GPIO_AS3935), INPUT);
|
pinMode(Pin(GPIO_AS3935), INPUT);
|
||||||
attachInterrupt(digitalPinToInterrupt(Pin(GPIO_AS3935)), AS3935Isr, RISING);
|
if (!AS3935Setup()) return;
|
||||||
AS3935Setup();
|
as3935_sensor.active = true;
|
||||||
as3935_active = 1;
|
} else {
|
||||||
|
AddLog_P2(LOG_LEVEL_INFO, PSTR("I2C: AS3935 GPIO Pin not defined!"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AS3935EverySecond() {
|
void AS3935EverySecond(void) {
|
||||||
|
if (!as3935_sensor.poweroff) { // Power Off
|
||||||
if (as3935_sensor.detected) {
|
if (as3935_sensor.detected) {
|
||||||
|
as3935_sensor.detected = false;
|
||||||
as3935_sensor.irq = AS3935GetIRQ(); // 1 = Noise, 4 = Disturber, 8 = storm
|
as3935_sensor.irq = AS3935GetIRQ(); // 1 = Noise, 4 = Disturber, 8 = storm
|
||||||
|
|
||||||
|
if (10 > as3935_sensor.icount) {
|
||||||
switch (as3935_sensor.irq) {
|
switch (as3935_sensor.irq) {
|
||||||
case 1:
|
case 1:
|
||||||
if (Settings.as3935_functions.nf_autotune) {
|
if (Settings.as3935_functions.nf_autotune) {
|
||||||
if (AS3935RaiseNoiseFloor()) as3935_sensor.nftimer = 0;
|
if (AS3935RaiseNoiseFloor())
|
||||||
|
as3935_sensor.nftimer = 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
if (Settings.as3935_functions.dist_autotune) {
|
if (Settings.as3935_functions.dist_autotune) {
|
||||||
AS3935SetDisturber(1);
|
AS3935SetDisturber(1);
|
||||||
as3935_sensor.autodist_activ = true;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
@ -534,39 +546,53 @@ void AS3935EverySecond() {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// http show
|
// http show
|
||||||
as3935_sensor.http_irq = AS3935TranslIrq(as3935_sensor.irq, as3935_sensor.distance);
|
as3935_sensor.http_event = AS3935TranslIrq(as3935_sensor.irq, as3935_sensor.distance);
|
||||||
|
} else {
|
||||||
|
as3935_sensor.http_event = 8; // flicker detected
|
||||||
|
}
|
||||||
|
|
||||||
// mqtt publish
|
// mqtt publish
|
||||||
as3935_sensor.mqtt_irq = as3935_sensor.http_irq;
|
as3935_sensor.mqtt_event = as3935_sensor.http_event;
|
||||||
switch (as3935_sensor.mqtt_irq) {
|
|
||||||
|
switch (as3935_sensor.mqtt_event) {
|
||||||
case 5:
|
case 5:
|
||||||
case 6:
|
case 6:
|
||||||
if (!Settings.as3935_functions.mqtt_only_Light_Event) {
|
if (!Settings.as3935_functions.mqtt_only_Light_Event) {
|
||||||
MqttPublishSensor();
|
MqttPublishSensor();
|
||||||
as3935_sensor.http_timer = 10;
|
as3935_sensor.http_time = 10;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
if (!Settings.as3935_functions.suppress_irq_no_Event) {
|
||||||
|
MqttPublishSensor();
|
||||||
|
as3935_sensor.http_time = 10;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
as3935_sensor.http_timer = 60;
|
as3935_sensor.http_time = 30;
|
||||||
MqttPublishSensor();
|
MqttPublishSensor();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
as3935_sensor.irq = 0;
|
||||||
// clear mqtt events for Teleperiod
|
// clear mqtt events for Teleperiod
|
||||||
as3935_sensor.intensity = 0;
|
as3935_sensor.intensity = 0;
|
||||||
as3935_sensor.distance = 0;
|
as3935_sensor.distance = 0;
|
||||||
as3935_sensor.mqtt_irq = 0;
|
as3935_sensor.mqtt_event = 0;
|
||||||
// start http times
|
// start http times
|
||||||
as3935_sensor.http_count_start = 1;
|
as3935_sensor.http_count_start = true;
|
||||||
as3935_sensor.http_count = 0;
|
as3935_sensor.http_count = 0;
|
||||||
as3935_sensor.icount++; // Int counter
|
|
||||||
as3935_sensor.detected = false;
|
|
||||||
}
|
}
|
||||||
|
as3935_sensor.icount = 0;
|
||||||
|
|
||||||
if (as3935_sensor.http_count_start) as3935_sensor.http_count++;
|
// count http times
|
||||||
// clear Http
|
if (as3935_sensor.http_count_start)
|
||||||
if (as3935_sensor.http_count > as3935_sensor.http_timer) {
|
as3935_sensor.http_count++;
|
||||||
as3935_sensor.http_count_start = 0;
|
// clear Http Event
|
||||||
|
if (as3935_sensor.http_count > as3935_sensor.http_time) {
|
||||||
|
as3935_sensor.http_count_start = false;
|
||||||
as3935_sensor.http_intensity = 0;
|
as3935_sensor.http_intensity = 0;
|
||||||
as3935_sensor.http_distance = 0;
|
as3935_sensor.http_distance = 0;
|
||||||
as3935_sensor.http_irq = 0;
|
as3935_sensor.http_event = 0;
|
||||||
}
|
}
|
||||||
// Noise Floor Autotune function
|
// Noise Floor Autotune function
|
||||||
if (Settings.as3935_functions.nf_autotune) {
|
if (Settings.as3935_functions.nf_autotune) {
|
||||||
@ -578,11 +604,13 @@ void AS3935EverySecond() {
|
|||||||
}
|
}
|
||||||
// Disturber auto function
|
// Disturber auto function
|
||||||
if (Settings.as3935_functions.dist_autotune) {
|
if (Settings.as3935_functions.dist_autotune) {
|
||||||
if (as3935_sensor.autodist_activ) as3935_sensor.disttimer++;
|
if (AS3935GetDisturber()) {
|
||||||
|
as3935_sensor.disttimer++;
|
||||||
|
}
|
||||||
if (as3935_sensor.disttimer >= Settings.as3935_parameter.dist_autotune_time * 60) {
|
if (as3935_sensor.disttimer >= Settings.as3935_parameter.dist_autotune_time * 60) {
|
||||||
AS3935SetDisturber(0);
|
AS3935SetDisturber(0);
|
||||||
as3935_sensor.disttimer = 0;
|
as3935_sensor.disttimer = 0;
|
||||||
as3935_sensor.autodist_activ = false;
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -593,6 +621,16 @@ bool AS3935Cmd(void) {
|
|||||||
if (!strncasecmp_P(XdrvMailbox.topic, PSTR(D_NAME_AS3935), name_len)) {
|
if (!strncasecmp_P(XdrvMailbox.topic, PSTR(D_NAME_AS3935), name_len)) {
|
||||||
uint32_t command_code = GetCommandCode(command, sizeof(command), XdrvMailbox.topic + name_len, kAS3935_Commands);
|
uint32_t command_code = GetCommandCode(command, sizeof(command), XdrvMailbox.topic + name_len, kAS3935_Commands);
|
||||||
switch (command_code) {
|
switch (command_code) {
|
||||||
|
case CMND_AS3935_POWER:
|
||||||
|
if (XdrvMailbox.data_len) {
|
||||||
|
if (!XdrvMailbox.payload) {
|
||||||
|
AS3935PwrDown();
|
||||||
|
} else {
|
||||||
|
AS3935PwrUp();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Response_P(S_JSON_AS3935_COMMAND_STRING, command, S_JSON_AS3935_COMMAND_ONOFF[AS3935GetPwrStat()]);
|
||||||
|
break;
|
||||||
case CMND_AS3935_SET_NF:
|
case CMND_AS3935_SET_NF:
|
||||||
if (XdrvMailbox.data_len) {
|
if (XdrvMailbox.data_len) {
|
||||||
if (15 >= XdrvMailbox.payload) {
|
if (15 >= XdrvMailbox.payload) {
|
||||||
@ -712,6 +750,14 @@ bool AS3935Cmd(void) {
|
|||||||
}
|
}
|
||||||
Response_P(S_JSON_AS3935_COMMAND_STRING, command, S_JSON_AS3935_COMMAND_ONOFF[Settings.as3935_functions.mqtt_only_Light_Event]);
|
Response_P(S_JSON_AS3935_COMMAND_STRING, command, S_JSON_AS3935_COMMAND_ONOFF[Settings.as3935_functions.mqtt_only_Light_Event]);
|
||||||
break;
|
break;
|
||||||
|
case CMND_AS3935_MQTT_NO_IRQ_EVT:
|
||||||
|
if (XdrvMailbox.data_len) {
|
||||||
|
if (2 > XdrvMailbox.payload) {
|
||||||
|
Settings.as3935_functions.suppress_irq_no_Event = XdrvMailbox.payload;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Response_P(S_JSON_AS3935_COMMAND_STRING, command, S_JSON_AS3935_COMMAND_ONOFF[Settings.as3935_functions.suppress_irq_no_Event]);
|
||||||
|
break;
|
||||||
case CMND_AS3935_SETTINGS: {
|
case CMND_AS3935_SETTINGS: {
|
||||||
if (!XdrvMailbox.data_len) {
|
if (!XdrvMailbox.data_len) {
|
||||||
uint8_t gain = AS3935GetGainInt();
|
uint8_t gain = AS3935GetGainInt();
|
||||||
@ -719,19 +765,20 @@ bool AS3935Cmd(void) {
|
|||||||
uint8_t stage;
|
uint8_t stage;
|
||||||
AS3935CalcVrmsLevel(vrms, stage);
|
AS3935CalcVrmsLevel(vrms, stage);
|
||||||
uint8_t nf_floor = AS3935GetNoiseFloor();
|
uint8_t nf_floor = AS3935GetNoiseFloor();
|
||||||
uint8_t min_nf = Settings.as3935_parameter.nf_autotune_min;
|
|
||||||
uint8_t tunecaps = AS3935GetTuneCaps();
|
uint8_t tunecaps = AS3935GetTuneCaps();
|
||||||
uint8_t minnumlight = AS3935TranslMinLightsInt(AS3935GetMinLights());
|
uint8_t minnumlight = AS3935TranslMinLightsInt(AS3935GetMinLights());
|
||||||
uint8_t disturber = AS3935GetDisturber();
|
uint8_t disturber = AS3935GetDisturber();
|
||||||
uint8_t reinj = AS3935GetSpikeRejection();
|
uint8_t reinj = AS3935GetSpikeRejection();
|
||||||
uint8_t wdth = AS3935GetWdth();
|
uint8_t wdth = AS3935GetWdth();
|
||||||
uint8_t nfauto = Settings.as3935_functions.nf_autotune;
|
uint8_t min_nf = Settings.as3935_parameter.nf_autotune_min;
|
||||||
uint8_t distauto = Settings.as3935_functions.dist_autotune;
|
|
||||||
uint8_t nfautomax = Settings.as3935_functions.nf_autotune_both;
|
|
||||||
uint8_t jsonlight = Settings.as3935_functions.mqtt_only_Light_Event;
|
|
||||||
uint8_t nf_time = Settings.as3935_parameter.nf_autotune_time;
|
uint8_t nf_time = Settings.as3935_parameter.nf_autotune_time;
|
||||||
|
uint8_t nfauto = Settings.as3935_functions.nf_autotune;
|
||||||
|
uint8_t nfautomax = Settings.as3935_functions.nf_autotune_both;
|
||||||
|
uint8_t distauto = Settings.as3935_functions.dist_autotune;
|
||||||
|
uint8_t jsonlight = Settings.as3935_functions.mqtt_only_Light_Event;
|
||||||
|
uint8_t jsonirq = Settings.as3935_functions.suppress_irq_no_Event;
|
||||||
uint8_t dist_time = Settings.as3935_parameter.dist_autotune_time;
|
uint8_t dist_time = Settings.as3935_parameter.dist_autotune_time;
|
||||||
Response_P(S_JSON_AS3935_COMMAND_SETTINGS, S_JSON_AS3935_COMMAND_GAIN[gain], nf_floor, vrms, tunecaps, minnumlight, reinj, wdth, min_nf, nf_time, dist_time, S_JSON_AS3935_COMMAND_ONOFF[disturber], S_JSON_AS3935_COMMAND_ONOFF[nfauto], S_JSON_AS3935_COMMAND_ONOFF[distauto], S_JSON_AS3935_COMMAND_ONOFF[nfautomax], S_JSON_AS3935_COMMAND_ONOFF[jsonlight]);
|
Response_P(S_JSON_AS3935_COMMAND_SETTINGS, S_JSON_AS3935_COMMAND_GAIN[gain], nf_floor, vrms, tunecaps, minnumlight, reinj, wdth, min_nf, nf_time, dist_time, S_JSON_AS3935_COMMAND_ONOFF[disturber], S_JSON_AS3935_COMMAND_ONOFF[nfauto], S_JSON_AS3935_COMMAND_ONOFF[distauto], S_JSON_AS3935_COMMAND_ONOFF[nfautomax], S_JSON_AS3935_COMMAND_ONOFF[jsonlight], S_JSON_AS3935_COMMAND_ONOFF[jsonirq]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -750,13 +797,12 @@ bool AS3935Cmd(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AH3935Show(bool json)
|
void AH3935Show(bool json) {
|
||||||
{
|
|
||||||
if (json) {
|
if (json) {
|
||||||
uint16_t vrms;
|
uint16_t vrms;
|
||||||
uint8_t stage;
|
uint8_t stage;
|
||||||
AS3935CalcVrmsLevel(vrms, stage);
|
AS3935CalcVrmsLevel(vrms, stage);
|
||||||
ResponseAppend_P(JSON_SNS_AS3935_EVENTS, D_SENSOR_AS3935, as3935_sensor.mqtt_irq, as3935_sensor.distance, as3935_sensor.intensity, stage);
|
ResponseAppend_P(JSON_SNS_AS3935_EVENTS, D_SENSOR_AS3935, as3935_sensor.mqtt_event, as3935_sensor.distance, as3935_sensor.intensity, stage);
|
||||||
#ifdef USE_WEBSERVER
|
#ifdef USE_WEBSERVER
|
||||||
} else {
|
} else {
|
||||||
uint8_t gain = AS3935GetGainInt();
|
uint8_t gain = AS3935GetGainInt();
|
||||||
@ -765,12 +811,13 @@ void AH3935Show(bool json)
|
|||||||
uint8_t stage;
|
uint8_t stage;
|
||||||
AS3935CalcVrmsLevel(vrms, stage);
|
AS3935CalcVrmsLevel(vrms, stage);
|
||||||
|
|
||||||
WSContentSend_PD(HTTP_SNS_AS3935_TABLE_1[as3935_sensor.http_irq], D_NAME_AS3935, as3935_sensor.http_distance);
|
WSContentSend_PD(HTTP_SNS_AS3935_TABLE_1[as3935_sensor.http_event], D_NAME_AS3935, as3935_sensor.http_distance);
|
||||||
WSContentSend_PD(HTTP_SNS_AS3935_DISTANZ, as3935_sensor.http_distance);
|
WSContentSend_PD(HTTP_SNS_AS3935_DISTANZ, as3935_sensor.http_distance);
|
||||||
WSContentSend_PD(HTTP_SNS_AS3935_ENERGY, as3935_sensor.http_intensity);
|
WSContentSend_PD(HTTP_SNS_AS3935_ENERGY, as3935_sensor.http_intensity);
|
||||||
WSContentSend_PD(HTTP_SNS_AS3935_GAIN[gain], D_NAME_AS3935);
|
WSContentSend_PD(HTTP_SNS_AS3935_GAIN[gain], D_NAME_AS3935);
|
||||||
WSContentSend_PD(HTTP_SNS_AS3935_DISTURBER[disturber], D_NAME_AS3935);
|
WSContentSend_PD(HTTP_SNS_AS3935_DISTURBER[disturber], D_NAME_AS3935);
|
||||||
WSContentSend_PD(HTTP_SNS_AS3935_VRMS, vrms, stage);
|
WSContentSend_PD(HTTP_SNS_AS3935_VRMS, vrms, stage);
|
||||||
|
|
||||||
#endif // USE_WEBSERVER
|
#endif // USE_WEBSERVER
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -779,16 +826,13 @@ void AH3935Show(bool json)
|
|||||||
* Interface
|
* Interface
|
||||||
\*********************************************************************************************/
|
\*********************************************************************************************/
|
||||||
|
|
||||||
bool Xsns67(uint8_t function)
|
bool Xsns67(uint8_t function) {
|
||||||
{
|
|
||||||
if (!I2cEnabled(XI2C_48)) { return false; }
|
if (!I2cEnabled(XI2C_48)) { return false; }
|
||||||
|
|
||||||
bool result = false;
|
bool result = false;
|
||||||
|
|
||||||
if (FUNC_INIT == function) {
|
if (FUNC_INIT == function) {
|
||||||
AS3935Detect();
|
AS3935Detect();
|
||||||
}
|
}
|
||||||
else if (as3935_active) {
|
else if (as3935_sensor.active) {
|
||||||
switch (function) {
|
switch (function) {
|
||||||
case FUNC_EVERY_SECOND:
|
case FUNC_EVERY_SECOND:
|
||||||
AS3935EverySecond();
|
AS3935EverySecond();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user