Commit Graph

554 Commits

Author SHA1 Message Date
Theo Arends
56b0f6efdc Fix interlocked relays turning off
Fix interlocked relays turning off (#6385)
2019-09-11 12:14:37 +02:00
Laurent Dong
96098e4e09 Support If in Rules
The major features of IF statement are:
 - Support IF, ELSEIF, ELSE
 - Support not only comparison but also using logical expression as condition
 - Support run multiple commands
 - Support nested IF statement
 - All the commands run by IF statement will go to the BACKLOG!
 - No limit for logical operators, parenthesis and nested IF statement. Depends on your RAM!

Extended Backus-Naur Form of IF statement:
<if-statement> ::=
IF "(" <logical-expression> ")" <statement-list> {ELSEIF "(" <logical-expression> ")" <statement-list>} [ELSE <statement-list>] ENDIF
<logical-expression> :=
<comparison-expression> |
(<comparison-expression> | <logical-expression>) {(AND | OR) <logical-expression>} |
"(" <logical-expression ")" {(AND | OR) <logical expression>}
<comparison-expression> ::=
<math-expression> ("=" | "<" | ">" | "|" | "==" | "<=" | ">=" | "!=") <math-expression>
<statement-list> ::=
<statement> {";" <statement>}
<statement> ::=
<Sonoff-Tasmota-command> | <if-statement>

In English:
If statement support 3 format:
1. IF (<condition>) <statement-list> ENDIF
2. IF (<condition>) <statement-list> ELSE <statement-list> ENDIF
3. IF (<condition>) <statement-list> [ELSEIF (<condition>) <statement-list> ]* ELSE <statement-list> ENDIF

<condition> is a logical expression which can be:
1. A comparison expression for example:
   VAR1 >= 10
2. Multiple comparison expression with logical operator "AND" or "OR" between them. "AND" has higher priority than "OR". Fox example:
   UPTIME > 100 AND MEM1 == 1 OR MEM2 == 1
3. Parenthesis can be used to change the priority of logical expression. For example:
   UPTIME > 100 AND (MEM1 == 1 OR MEM2 == 1)

<statement-list> can be:
1. A Sonoff-Tasmota command. For example:
   ledpower on
2. A IF statement ("IF .... ENDIF")
3. Multiple Sonoff-Tasmota command or IF statement split with ";". For example:
   Power1 off; Ledpower on; if (mem1 == 0) Var1 Var1+1; mem1==1 endif; Delay 10; POWER1 on
4. Do not need to lead with "BACKLOG" for multiple commands.
2019-09-09 11:24:27 -04:00
Theo Arends
af1edb0cdb Add command Time 1/2/3 to select JSON time format ISO + Epoch, ISO or Epoch
* Add time to more events (#6337)
 * Add command Time 1/2/3 to select JSON time format ISO + Epoch, ISO or Epoch
2019-09-04 18:06:34 +02:00
Theo Arends
138ed6def9 Refactoring
Refactoring
2019-09-04 12:58:37 +02:00
Theo Arends
1304252d08 Refactor sonoff.ino
Refactor sonoff.ino
2019-09-04 12:47:58 +02:00
Theo Arends
f88e87cfde Refactor and document power control
Refactor and document power control
2019-09-04 12:20:04 +02:00
Theo Arends
41f76c5128 Add restore power state when limit is restored
Add restore power state when limit is restored (#6340)
2019-09-03 22:27:54 +02:00
Theo Arends
1478f1624a Add restore power state when limiit restored
Add restore power state when limiit restored (#6340)
2019-09-03 22:22:36 +02:00
Stephan Hadinger
fce3de82c5 Move '#include user_config_override.h' in 'my_user_config.h'.
Allow user_config_override.h to change parameters like USE_MQTT_TLS.
2019-08-31 14:44:49 +02:00
gemu2015
78989faf81 scripter update
epoch, json export, web show
2019-08-31 10:10:16 +02:00
Theo Arends
9af67a5278 Bump version to 6.6.0.9
Change theoretical baudrate range to 300..19660500 bps in 300 increments (#6294)
2019-08-28 12:02:27 +02:00
Shantur Rathore
e9475592b3 Fix: Legacy Led1 doesn't power up with Relay1.
https://github.com/arendst/Sonoff-Tasmota/pull/6246 broke Legacy Led1 power up logic. Make sure the if statement matches the if statement before #6246
2019-08-19 21:04:27 +01:00
Theo Arends
38c6254833 Refactor light driver saving code space
Refactor light driver saving code  space
2019-08-17 13:17:30 +02:00
Theo Arends
b9302d9ab9
Merge pull request #6246 from shantur/development
LedX should show power status even if there is no wifi or mqtt.
2019-08-17 11:56:45 +02:00
Shantur Rathore
f4b7e422fc LedX should show power status even if there is no wifi or mqtt.
Fixes: https://github.com/arendst/Sonoff-Tasmota/issues/6244
2019-08-17 10:10:06 +01:00
Stephan Hadinger
859156c395 Fix #6247 2019-08-17 11:06:49 +02:00
Stephan Hadinger
4aeaff66aa Fix wrong telemetry message when SetOption68 1 (#6191) 2019-08-16 18:33:41 +02:00
Stephan Hadinger
8661a2ead6 Change ToHex to ToHex_P PROGMEM compatible 2019-08-13 19:53:12 +02:00
Theo Arends
e2040b70de Refactor Sonoff Bridge
Refactor Sonoff Bridge
2019-08-13 16:10:47 +02:00
Theo Arends
72baffdf81 Refactor Counter and Dht code
Refactor Counter and Dht code
2019-08-13 14:52:46 +02:00
Theo Arends
23ec00a452 Add command Buzzer
Add command Buzzer with optional parameters <number of beeps>,<duration of beep in 100mS steps>,<duration of silence in 100mS steps> enabled when a buzzer is configured (#5988)
2019-08-12 17:18:08 +02:00
Theo Arends
5f236561b1 Change ToHex default inbetween to no character
Change ToHex default inbetween to no character
2019-08-10 17:34:59 +02:00
Theo Arends
a1a6590715 Make some log messages compile dependant
Make some log messages compile dependant
2019-08-08 17:51:49 +02:00
Theo Arends
27efc08d2c Add define DEBUG_TASMOTA_CORE
Add define DEBUG_TASMOTA_CORE
2019-08-08 16:24:11 +02:00
Theo Arends
8eb87a00d6 Extent feature list for future use
Extent feature list for future use
2019-08-07 12:56:32 +02:00
Theo Arends
afb39aa680 Add support for CHIRP soil moisture sensor by Christian Baars
Add support for CHIRP soil moisture sensor by Christian Baars
2019-08-07 12:08:13 +02:00
Stephan Hadinger
81ca44dba2 Add SetOption68 to enable multi-channel PWM instead of a single light (#6134) 2019-08-06 10:57:50 +02:00
Stephan Hadinger
c93a03f1d0 Add MqttCount metric to STATE (#6155) 2019-07-31 19:34:23 +02:00
Theo Arends
fde53117d6 Space saving code optimization
Space saving code optimization
2019-07-27 18:37:56 +02:00
Theo Arends
398a72d128 Remove command code from sonoff.ino and introduce support_command.ino
Remove command code from sonoff.ino and introduce support_command.ino
2019-07-24 11:55:58 +02:00
Theo Arends
1068d59a63 Extent commands Var and Mem with option to show all parameters at once
Extent commands Var and Mem with option to show all parameters at once (#6107)
2019-07-24 11:10:15 +02:00
Theo Arends
d77017fd74 Add option to disable support for module Sonoff iFan at compile time
Add option to disable support for module Sonoff iFan at compile time (#6093)
2019-07-14 22:08:19 +02:00
Theo Arends
49022d0320 6.6.0.2 Add support for Sonoff iFan03 as module 71
Add support for Sonoff iFan03 as module 71 (#5988)
2019-07-14 15:23:02 +02:00
Theo Arends
c3d2937f22 Add command Time to disable NTP and set UTC time as Epoch value if above 1451602800 (=20160101). Time 0 re-enables NTP
Add command Time to disable NTP and set UTC time as Epoch value if above 1451602800 (=20160101). Time 0 re-enables NTP (#5279)
2019-07-11 14:59:28 +02:00
Theo Arends
64521b42b6 Add Epoch and UptimeSec to JSON messages
Add Epoch and UptimeSec to JSON messages (#6068)
2019-07-11 14:09:42 +02:00
Theo Arends
86314e24e5 Fix ambiguous Tuya set relay option by adding command SetOption41 allowing to control number of virtual relays
Fix ambiguous Tuya set relay option by adding command SetOption41 allowing to control number of virtual relays (#6039)
2019-07-08 12:42:46 +02:00
Theo Arends
b76b5f35c3 Extent some char buffers to accomodate UTF-16 character sets
Extent some char buffers to accomodate UTF-16 character sets (#6026)
2019-07-06 12:53:07 +02:00
Theo Arends
b73b40ee11 Remove hourly uptime message
Remove hourly uptime message
2019-07-05 12:05:34 +02:00
Theo Arends
99f680da57 Add NTP drift information
Add NTP drift information
2019-07-05 11:47:13 +02:00
Theo Arends
9268976ff1 Add Heap info to state message
Add Heap info to state message
2019-07-01 15:30:40 +02:00
Theo Arends
1b69502d9b Code optimization - Change for(uint8_t in for (uint32_t
Code optimization - Change for(uint8_t in for (uint32_t
2019-06-30 16:44:36 +02:00
Theo Arends
30adce5648 Revert "Code optimization - Change for(uint8_t in for (uint32_t"
This reverts commit 5e1eac3f74.
2019-06-30 15:56:55 +02:00
Theo Arends
5e1eac3f74 Code optimization - Change for(uint8_t in for (uint32_t
Code optimization - Change for(uint8_t in for (uint32_t
2019-06-30 15:47:32 +02:00
Stephan Hadinger
4413a757d8 TLS+AWS IoT optimization for speed, code and memory footprint 2019-06-19 09:49:48 +02:00
Theo Arends
12da2fd6f9 Add define USE_COUNTER to my_user_config.h to save space in sonoff-basic.bin and sonoff-minimal.bin
Add define USE_COUNTER to my_user_config.h to save space in sonoff-basic.bin and sonoff-minimal.bin
2019-06-16 16:43:23 +02:00
Theo Arends
2b5c691041 6.5.0.16 Refactor TLS and Add visibility toggle to GUI password
6.5.0.16 20190611
 * Refactored TLS based on BearSSL, warning breaking change for fingerprints validation (see doc)
 * Add checkbox to GUI password field enabling visibility during password entry only (#5934)
2019-06-11 14:30:07 +02:00
Stephan Hadinger
006462f17e Refactored TLS based on BearSSL - cleaned 2019-06-10 12:06:03 +02:00
Theo Arends
d3eaf7491d Fix exception 9 when syslog is enabled and NTP is just synced
Fix exception 9 when syslog is enabled and NTP is just synced (#5917)
2019-06-09 13:34:14 +02:00
Theo Arends
53ecde7637 Add command SetOption65 0/1 and more Tuya Serial based device support
Add command SetOption65 0/1 and more Tuya Serial based device support (#5815)
2019-06-08 11:38:45 +02:00
Theo Arends
aaacb20d55
Merge pull request #5815 from thirug010/development
New Tuya Serial Based Devices support
2019-06-08 11:17:27 +02:00