Commit Graph

558 Commits

Author SHA1 Message Date
Theo Arends d7d0316769 Fix open/close to limits
Fix open/close to limits (#6516)
2019-09-30 19:27:54 +02:00
Theo Arends 7689534cf5 Refactor shutter support
Refactor shutter support (#6516)
2019-09-30 11:21:43 +02:00
Theo Arends e90f67bbbb Add driver JSON if available
Add driver JSON if available
2019-09-29 18:11:36 +02:00
Theo Arends e40475b563 Add initial support for shutters
Add initial support for shutters by Stefan Bode (#288)
2019-09-29 18:00:01 +02:00
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