Add initial support for Scripts

Add initial support for Scripts as replacement for Rules. Default disabled but can be enabled in my_user_config.h (#5689)
This commit is contained in:
Theo Arends 2019-05-18 13:34:52 +02:00
parent 55ec55c8c9
commit dc3d0aea94
5 changed files with 25 additions and 17 deletions

View File

@ -1,5 +1,6 @@
/* 6.5.0.11 20190517
* Add command SetOption64 0/1 to switch between "-" or "_" as sensor index separator impacting DS18X20, DHT, BMP and SHT3X sensor names (#5689)
* Add initial support for Scripts as replacement for Rules. Default disabled but can be enabled in my_user_config.h (#5689)
*
* 6.5.0.10 20190513
* Enable ADC0 by default in my_user_config.h (#5671)

View File

@ -288,10 +288,10 @@
#define USE_SUNRISE // Add support for Sunrise and sunset tools (+16k)
#define SUNRISE_DAWN_ANGLE DAWN_NORMAL // Select desired Dawn Angle from (DAWN_NORMAL, DAWN_CIVIL, DAWN_NAUTIC, DAWN_ASTRONOMIC)
// -- Rules or Scripts ----------------------------
// -- Rules or Script ----------------------------
// Select none or only one of the below defines
#define USE_RULES // Add support for rules (+4k4 code)
//#define USE_SCRIPT // Add support for script
#define USE_RULES // Add support for rules (+8k code)
//#define USE_SCRIPT // Add support for script (+15k code)
// #define USE_EXPRESSION // Add support for expression evaluation in rules (+3k2 code, +64 bytes mem)
// #define SUPPORT_MQTT_EVENT // Support trigger event with MQTT subscriptions (+3k5 code)

View File

@ -103,7 +103,7 @@ void GetFeatures(void)
#ifdef USE_TIMERS_WEB
feature_drv1 |= 0x04000000; // xdrv_09_timers.ino
#endif
#if defined(USE_RULES) || defined(USE_SCRIPT)
#ifdef USE_RULES
feature_drv1 |= 0x08000000; // xdrv_10_rules.ino
#endif
#ifdef USE_KNX
@ -180,8 +180,10 @@ void GetFeatures(void)
#ifdef USE_SM16716
feature_drv2 |= 0x00040000; // xdrv_04_light.ino
#endif
#ifdef USE_SCRIPT
feature_drv2 |= 0x00080000; // xdrv_10_scripter.ino
#endif
// feature_drv2 |= 0x00080000;
// feature_drv2 |= 0x00100000;
// feature_drv2 |= 0x00200000;
// feature_drv2 |= 0x00400000;

View File

@ -18,6 +18,7 @@
*/
#ifdef USE_RULES
#ifndef USE_SCRIPT
/*********************************************************************************************\
* Rules based heavily on ESP Easy implementation
*
@ -1287,4 +1288,5 @@ bool Xdrv10(uint8_t function)
return result;
}
#endif // Do not USE_SCRIPT
#endif // USE_RULES

View File

@ -17,25 +17,28 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
// for doku see up to date doku in file scripter.md
#ifdef USE_SCRIPT
#ifndef USE_RULES
/*********************************************************************************************\
// uses about 14,2 k of flash
// more stack could be needed for sendmail => -D CONT_STACKSIZE=4800 = +0.8k stack -0.8k heap
//
for documentation see up to date docs in file SCRIPTER.md
/* to doo
uses about 14,2 k of flash
more stack could be needed for sendmail => -D CONT_STACKSIZE=4800 = +0.8k stack -0.8k heap
to do
optimize code for space
// remarks
remarks
goal is fast execution time, minimal use of ram and intuitive syntax
therefore =>
case sensitive cmds and vars (lowercase uses time and code)
no math hierarchy (costs ram and execution time, better group with brackets, anyhow better readable for beginners)
(will probably make math hierarchy an ifdefed option)
keywords if then else endif, or, and are better readable for beginners (others may use {})
*/
#ifdef USE_SCRIPT
#ifndef USE_RULES
\*********************************************************************************************/
#define XDRV_10 10
@ -896,8 +899,8 @@ chknext:
float fvar2;
lp=GetNumericResult(lp,OPER_EQU,&fvar2,0);
lp++;
fvar=pow(fvar1,fvar2);
//fvar=FastPrecisePow(fvar1,fvar2);
//fvar=pow(fvar1,fvar2);
fvar=FastPrecisePow(fvar1,fvar2);
len=0;
goto exit;
}
@ -2231,5 +2234,5 @@ bool Xdrv10(byte function)
return result;
}
#endif // not use RULES
#endif // Do not USE_RULES
#endif // USE_SCRIPT