mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-26 20:26:32 +00:00
Merge branch 'development' into release
This commit is contained in:
commit
542655d19f
@ -56,7 +56,8 @@ keywords if then else endif, or, and are better readable for beginners (others m
|
|||||||
#define SCRIPT_MAXSSIZE 48
|
#define SCRIPT_MAXSSIZE 48
|
||||||
#define SCRIPT_EOL '\n'
|
#define SCRIPT_EOL '\n'
|
||||||
#define SCRIPT_FLOAT_PRECISION 2
|
#define SCRIPT_FLOAT_PRECISION 2
|
||||||
#define SCRIPT_MAXPERM (5*10)-4/sizeof(float)
|
#define PMEM_SIZE sizeof(Settings.script_pram)
|
||||||
|
#define SCRIPT_MAXPERM (PMEM_SIZE)-4/sizeof(float)
|
||||||
#define MAX_SCRIPT_SIZE MAX_RULE_SIZE*MAX_RULE_SETS
|
#define MAX_SCRIPT_SIZE MAX_RULE_SIZE*MAX_RULE_SETS
|
||||||
|
|
||||||
// offsets epoch readings by 1.1.2019 00:00:00 to fit into float with second resolution
|
// offsets epoch readings by 1.1.2019 00:00:00 to fit into float with second resolution
|
||||||
@ -1575,7 +1576,7 @@ chknext:
|
|||||||
|
|
||||||
case 'r':
|
case 'r':
|
||||||
if (!strncmp(vname,"ram",3)) {
|
if (!strncmp(vname,"ram",3)) {
|
||||||
fvar=glob_script_mem.script_mem_size+(glob_script_mem.script_size)+(5*10);
|
fvar=glob_script_mem.script_mem_size+(glob_script_mem.script_size)+(PMEM_SIZE);
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -3004,7 +3005,7 @@ void Scripter_save_pvars(void) {
|
|||||||
if (vtp[count].bits.is_permanent && !vtp[count].bits.is_string) {
|
if (vtp[count].bits.is_permanent && !vtp[count].bits.is_string) {
|
||||||
uint8_t index=vtp[count].index;
|
uint8_t index=vtp[count].index;
|
||||||
mlen+=sizeof(float);
|
mlen+=sizeof(float);
|
||||||
if (mlen>5*10) {
|
if (mlen>PMEM_SIZE) {
|
||||||
vtp[count].bits.is_permanent=0;
|
vtp[count].bits.is_permanent=0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -3018,7 +3019,7 @@ void Scripter_save_pvars(void) {
|
|||||||
char *sp=glob_script_mem.glob_snp+(index*glob_script_mem.max_ssize);
|
char *sp=glob_script_mem.glob_snp+(index*glob_script_mem.max_ssize);
|
||||||
uint8_t slen=strlen(sp);
|
uint8_t slen=strlen(sp);
|
||||||
mlen+=slen+1;
|
mlen+=slen+1;
|
||||||
if (mlen>5*10) {
|
if (mlen>PMEM_SIZE) {
|
||||||
vtp[count].bits.is_permanent=0;
|
vtp[count].bits.is_permanent=0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -4751,7 +4752,7 @@ bool Xdrv10(uint8_t function)
|
|||||||
glob_script_mem.script_size=MAX_SCRIPT_SIZE;
|
glob_script_mem.script_size=MAX_SCRIPT_SIZE;
|
||||||
glob_script_mem.flags=0;
|
glob_script_mem.flags=0;
|
||||||
glob_script_mem.script_pram=(uint8_t*)Settings.script_pram[0];
|
glob_script_mem.script_pram=(uint8_t*)Settings.script_pram[0];
|
||||||
glob_script_mem.script_pram_size=5*10;
|
glob_script_mem.script_pram_size=PMEM_SIZE;
|
||||||
|
|
||||||
#ifdef USE_BUTTON_EVENT
|
#ifdef USE_BUTTON_EVENT
|
||||||
for (uint32_t cnt=0;cnt<MAX_KEYS;cnt++) {
|
for (uint32_t cnt=0;cnt<MAX_KEYS;cnt++) {
|
||||||
|
@ -493,19 +493,19 @@ const uint8_t meter[]=
|
|||||||
//=====================================================
|
//=====================================================
|
||||||
|
|
||||||
// median filter eliminates outliers, but uses much RAM and CPU cycles
|
// median filter eliminates outliers, but uses much RAM and CPU cycles
|
||||||
// 672 bytes extra RAM with MAX_VARS = 16
|
// 672 bytes extra RAM with SML_MAX_VARS = 16
|
||||||
// default compile on, but must be enabled by descriptor flag 16
|
// default compile on, but must be enabled by descriptor flag 16
|
||||||
// may be undefined if RAM must be saved
|
// may be undefined if RAM must be saved
|
||||||
#define USE_SML_MEDIAN_FILTER
|
#define USE_SML_MEDIAN_FILTER
|
||||||
|
|
||||||
// max number of vars , may be adjusted
|
// max number of vars , may be adjusted
|
||||||
#ifndef MAX_VARS
|
#ifndef SML_MAX_VARS
|
||||||
#define MAX_VARS 20
|
#define SML_MAX_VARS 20
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// max number of meters , may be adjusted
|
// max number of meters , may be adjusted
|
||||||
#define MAX_METERS 5
|
#define MAX_METERS 5
|
||||||
double meter_vars[MAX_VARS];
|
double meter_vars[SML_MAX_VARS];
|
||||||
// calulate deltas
|
// calulate deltas
|
||||||
#define MAX_DVARS MAX_METERS*2
|
#define MAX_DVARS MAX_METERS*2
|
||||||
double dvalues[MAX_DVARS];
|
double dvalues[MAX_DVARS];
|
||||||
@ -540,7 +540,7 @@ uint8_t sml_desc_cnt;
|
|||||||
struct SML_MEDIAN_FILTER {
|
struct SML_MEDIAN_FILTER {
|
||||||
double buffer[MEDIAN_SIZE];
|
double buffer[MEDIAN_SIZE];
|
||||||
int8_t index;
|
int8_t index;
|
||||||
} sml_mf[MAX_VARS];
|
} sml_mf[SML_MAX_VARS];
|
||||||
|
|
||||||
#ifndef FLT_MAX
|
#ifndef FLT_MAX
|
||||||
#define FLT_MAX 99999999
|
#define FLT_MAX 99999999
|
||||||
@ -1326,7 +1326,7 @@ void SML_Decode(uint8_t index) {
|
|||||||
uint32_t ind;
|
uint32_t ind;
|
||||||
ind=atoi(mp);
|
ind=atoi(mp);
|
||||||
while (*mp>='0' && *mp<='9') mp++;
|
while (*mp>='0' && *mp<='9') mp++;
|
||||||
if (ind<1 || ind>MAX_VARS) ind=1;
|
if (ind<1 || ind>SML_MAX_VARS) ind=1;
|
||||||
dvar=meter_vars[ind-1];
|
dvar=meter_vars[ind-1];
|
||||||
for (uint8_t p=0;p<5;p++) {
|
for (uint8_t p=0;p<5;p++) {
|
||||||
if (*mp=='@') {
|
if (*mp=='@') {
|
||||||
@ -1345,7 +1345,7 @@ void SML_Decode(uint8_t index) {
|
|||||||
}
|
}
|
||||||
ind=atoi(mp);
|
ind=atoi(mp);
|
||||||
while (*mp>='0' && *mp<='9') mp++;
|
while (*mp>='0' && *mp<='9') mp++;
|
||||||
if (ind<1 || ind>MAX_VARS) ind=1;
|
if (ind<1 || ind>SML_MAX_VARS) ind=1;
|
||||||
switch (opr) {
|
switch (opr) {
|
||||||
case '+':
|
case '+':
|
||||||
if (iflg) dvar+=ind;
|
if (iflg) dvar+=ind;
|
||||||
@ -1381,7 +1381,7 @@ void SML_Decode(uint8_t index) {
|
|||||||
while (*mp==' ') mp++;
|
while (*mp==' ') mp++;
|
||||||
uint8_t ind=atoi(mp);
|
uint8_t ind=atoi(mp);
|
||||||
while (*mp>='0' && *mp<='9') mp++;
|
while (*mp>='0' && *mp<='9') mp++;
|
||||||
if (ind<1 || ind>MAX_VARS) ind=1;
|
if (ind<1 || ind>SML_MAX_VARS) ind=1;
|
||||||
uint32_t delay=atoi(mp)*1000;
|
uint32_t delay=atoi(mp)*1000;
|
||||||
uint32_t dtime=millis()-dtimes[dindex];
|
uint32_t dtime=millis()-dtimes[dindex];
|
||||||
if (dtime>delay) {
|
if (dtime>delay) {
|
||||||
@ -1604,7 +1604,7 @@ void SML_Decode(uint8_t index) {
|
|||||||
}
|
}
|
||||||
nextsect:
|
nextsect:
|
||||||
// next section
|
// next section
|
||||||
if (vindex<MAX_VARS-1) {
|
if (vindex<SML_MAX_VARS-1) {
|
||||||
vindex++;
|
vindex++;
|
||||||
}
|
}
|
||||||
mp = strchr(mp, '|');
|
mp = strchr(mp, '|');
|
||||||
@ -1770,7 +1770,7 @@ void SML_Show(boolean json) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (index<MAX_VARS-1) {
|
if (index<SML_MAX_VARS-1) {
|
||||||
index++;
|
index++;
|
||||||
}
|
}
|
||||||
// next section
|
// next section
|
||||||
@ -1864,7 +1864,9 @@ struct METER_DESC script_meter_desc[MAX_METERS];
|
|||||||
uint8_t *script_meter;
|
uint8_t *script_meter;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define METER_DEF_SIZE 2000
|
#ifndef METER_DEF_SIZE
|
||||||
|
#define METER_DEF_SIZE 3000
|
||||||
|
#endif
|
||||||
|
|
||||||
bool Gpio_used(uint8_t gpiopin) {
|
bool Gpio_used(uint8_t gpiopin) {
|
||||||
for (uint16_t i=0;i<GPIO_SENSOR_END;i++) {
|
for (uint16_t i=0;i<GPIO_SENSOR_END;i++) {
|
||||||
@ -1882,7 +1884,7 @@ void SML_Init(void) {
|
|||||||
|
|
||||||
sml_desc_cnt=0;
|
sml_desc_cnt=0;
|
||||||
|
|
||||||
for (uint32_t cnt=0;cnt<MAX_VARS;cnt++) {
|
for (uint32_t cnt=0;cnt<SML_MAX_VARS;cnt++) {
|
||||||
meter_vars[cnt]=0;
|
meter_vars[cnt]=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user