Commit Graph

4337 Commits

Author SHA1 Message Date
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 d3997b2851
Merge pull request #6383 from s-hadinger/serial_115200_3
TasmotaSerial: Force wait for Stop Bit
2019-09-09 16:16:53 +02:00
Laurent 9a7006074f Merge remote-tracking branch 'upstream/development' into development 2019-09-08 18:37:41 -04:00
Stephan Hadinger 98378c1962 Force wait for Stop Bit 2019-09-08 22:20:34 +02:00
Theo Arends c0b69a6dde
Merge pull request #6379 from gemu2015/display-fix
epaper display 29 fix
2019-09-08 21:00:10 +02:00
gemu2015 710b576d6b epaper display 29 fix 2019-09-08 20:48:47 +02:00
Theo Arends 5c7812e964
Merge pull request #6378 from Leuselator/patch-1
Update _changelog.ino
2019-09-08 18:59:08 +02:00
Tim Leuschner eb858ed485
Update _changelog.ino
Name was misspelled ... ;-)
2019-09-08 18:56:15 +02:00
Theo Arends 18b5c2154e
Merge pull request #6377 from s-hadinger/serial_115200_2
TasmotaSerial: Reduce IRAM usage by 280 bytes and improve reliability at 115200 bauds (v2)
2019-09-08 18:52:44 +02:00
Stephan Hadinger 8e1a90932e Merge branch 'development' of https://github.com/arendst/Sonoff-Tasmota into serial_115200_2 2019-09-08 18:34:50 +02:00
Theo Arends 4910ea308a Add support for A4988 stepper-motor-driver-circuit
Add support for A4988 stepper-motor-driver-circuit by Tim Leuscher (#6370)
2019-09-08 18:32:35 +02:00
Stephan Hadinger ff688204f0 TasmotaSerial 2.3.5 2019-09-08 18:32:25 +02:00
Stephan Hadinger 41d6dd2683 Merge branch 'development' of https://github.com/arendst/Sonoff-Tasmota into serial_115200_2 2019-09-08 18:29:11 +02:00
Theo Arends 17eb9727a5
Merge pull request #6370 from Leuselator/A4988_Stepper
A4988 stepper
2019-09-08 18:14:07 +02:00
Theo Arends c44765d37f Reduce TasmotaSerial iRam usage
Reduce TasmotaSerial iRam usage for core stage and Pre-2.6 (#6373)
2019-09-08 17:38:13 +02:00
Tim Leuschner 2345828b39 Merge branch 'A4988_Stepper' of https://github.com/Leuselator/Sonoff-Tasmota into A4988_Stepper 2019-09-08 17:31:35 +02:00
Tim Leuschner fafb837120 removed my changes to platformio&my_user_config, removed the unnessesary digitalwrites in adjustMicrosteps() 2019-09-08 17:30:17 +02:00
Theo Arends 612654ffca Refactor energy driver selection
Refactor energy driver selection
2019-09-08 17:21:26 +02:00
Theo Arends 75abfc5fd9 Refactor energy driver detection
Refactor energy driver detection and function call
2019-09-08 16:57:56 +02:00
Stephan Hadinger 1d58501c49 Change Improve reliability of TasmotaSerial at 115200 bauds and reduce IRAM usage for Stage/pre-2.6 2019-09-08 16:41:31 +02:00
Theo Arends cea6592945 Remove Total Reactive from SDM120
Remove Total Reactive from SDM120 (#6282)
2019-09-08 15:14:48 +02:00
Theo Arends 17a0049fa2 Use SDM120 Import Active as Total
Use SDM120 Import Active as Total Energy when available (#6282)
2019-09-08 15:07:28 +02:00
Theo Arends da35643f63 Revert "Merge pull request #6373 from s-hadinger/serial_115200"
This reverts commit a59dea5a74, reversing
changes made to e0b07391c9.
2019-09-08 12:59:32 +02:00
Theo Arends a59dea5a74
Merge pull request #6373 from s-hadinger/serial_115200
TasmotaSerial: Reduce IRAM usage by 280 bytes and improve reliability at 115200 bauds
2019-09-08 12:50:48 +02:00
Theo Arends 1d39db76b3
Merge branch 'development' into serial_115200 2019-09-08 12:49:21 +02:00
Theo Arends e0b07391c9
Merge pull request #6372 from gemu2015/scripter-update
scripter update
2019-09-08 12:38:27 +02:00
gemu2015 c2f560312d sml individual decimal precision on insertion, comments in >W and >J 2019-09-08 12:14:28 +02:00
Stephan Hadinger 7dda2fba0e Change Improve reliability of TasmotaSerial at 115200 bauds and reduce IRAM usage for Stage/pre-2.6 2019-09-08 12:07:51 +02:00
Tim Leuschner ff3701e1ce
Merge branch 'development' into A4988_Stepper 2019-09-08 11:49:15 +02:00
Theo Arends 3d9a73f826 Add support for up to 4 INA226 Voltage and Current sensors
Add support for up to 4 INA226 Voltage and Current sensors by Steve Rogers (#6342)
2019-09-08 11:26:54 +02:00
Theo Arends 9aceadc217
Merge pull request #6342 from hwstar/development
Add ina226 driver to Tasmota
2019-09-08 10:48:13 +02:00
Tim Leuschner 4533039c9f removed my user-settings 2019-09-08 04:02:47 +02:00
Tim Leuschner e0a17cda55 this compiles... 2019-09-08 04:01:02 +02:00
Tim Leuschner 4e1480d0f0 works fine... 2019-09-08 03:28:19 +02:00
srodgers 27ecd09e9d Update from testing branch 2019-09-07 15:30:51 -07:00
srodgers 4a41c13738 Merged from upstream 2019-09-07 14:38:57 -07:00
srodgers 0a9166dde7 Update files 2019-09-07 14:28:08 -07:00
Tim Leuschner e516262904 ..to be tested 2019-09-07 21:37:01 +02:00
Tim Leuschner 179d74ab08 it compiles... 2019-09-07 20:38:06 +02:00
Theo Arends 2e9f06f8bf Bump version to 6.6.0.11
Change Settings crc calculation allowing short term backward compatibility
2019-09-07 18:32:11 +02:00
Theo Arends fc2be92478 Move SDM120 modbus updates out of ticker interrupt
Move SDM120 modbus updates out of ticker interrupt (#6282)
2019-09-07 16:31:39 +02:00
Theo Arends 4837e8e6d8
Merge pull request #6367 from effelle/development
Update for IT and PT-BR translations
2019-09-07 16:26:56 +02:00
Federico Leoni 299a14fed4
Update pt-BR.h 2019-09-07 11:25:53 -03:00
Federico Leoni 5eb09495c2
Update it-IT.h 2019-09-07 11:24:57 -03:00
Tim Leuschner 549fd7d84c . 2019-09-07 14:11:17 +02:00
Tim Leuschner 8350be64a0 . 2019-09-07 14:09:44 +02:00
Tim Leuschner 5eac2dd939 Support Stepper-motors connected to A4988-stepper-driver-circuit 2019-09-07 14:03:07 +02:00
Federico Leoni 0c8ac27b54
Update pt-BR.h 2019-09-06 20:30:49 -03:00
Federico Leoni 8b15fe8c0b
Update it-IT.h 2019-09-06 20:03:42 -03:00
Theo Arends 53235a3382 Redesign Energy Total calculation
* Redesign Energy Total calculation
* Increase SDM120 modbus interval time to 200mS (#6282)
2019-09-06 18:02:31 +02:00