Skip to content

Commit

Permalink
merge master into dev (tasmota#718)
Browse files Browse the repository at this point in the history
* Update PZEM-0XX.md

changed pzem templates. switched tx & rx to use Hardware serial.

* add new commands and aliases

* add all commands

* remove VirtualCT synonym

* add missing synonyms

* formatting

* Update P1-Smart-Meter.md

Fix typo + add note about Smart Meter Interface.

* Update Smart-Meter-Interface.md

Align documentation with arendst/Tasmota#11082 and do some arrangements, add new meter example.

* Update Smart-Meter-Interface.md

Re-organized information in tables so it can be overseen better.

* Add file Resol_VBus_adaptor_to_WemosD1Mini.png

Soon to be used in https://tasmota.github.io/docs/Smart-Meter-Interface/ documentation with VBus protocol integration description.

* Update Rules.md

* Update Zigbee.md

Added rule for sending zigbee sensor data into own topics

* update release tag

* Update Blinds-and-Shutters.md

added servo motors. updated log file output

* Update Resol_VBus_adaptor_to_WemosD1Mini.png

More precise drawing

* Add files via upload

* Update Blinds-and-Shutters.md

Update callibration doku. There was an error in what you get.

* Update Smart-Meter-Interface.md

Completion for arendst/Tasmota#11114 (VBus support)
Further looks ans structure improvements, typo fixes.

* Add files via upload

* Renumbered DevGroupSend commands

The commands started at 3 and 9 was listed twice. Changed it so it starts at 2, just like it is at https://tasmota.github.io/docs/Commands/

* Update PZEM-0XX.md

* ESP32 LAN not only Olimex

* Update Commands.md

* Update Commands.md

* Update Smart-Meter-Interface.md

Further arrangement and table of content fixes.

* add ESP_flasher

* core2 via module

* USE_ESP32MAIL

* Update Sonoff-4CH-Pro.md

* Update Smart-Meter-Interface.md

My last attempt to try to fix table of contents. I double-checked with external markup editors too. If this doesn't fix it, I don't see what causes things to be misunderstood by the webpage rendering engine.

* Update Smart-Meter-Interface.md

Looks like there was one last rebel not wanting to align in the table of contents. +other typos noticed.

* Update Smart-Meter-Interface.md

Another attempt to try to fix, and also a clarification to avoid confusion arendst/Tasmota#10988 (reply in thread)

* remark on ssd1351 3 wire mode

* corrected shutterstop command to stop shutter

because different versions of shutters need different relays to stop the shutter it is best to use the shutterstop command. This will take the right action anyway. Funny Thing: I want to add a rule for shelly2.5 and shutter overload and saw: already done! nice work

* remarks on display choice and connections

* Update Smart-Meter-Interface.md

* Update Smart-Meter-Interface.md

Fix script for Sanxing SX6x1

* Update Smart-Meter-Interface.md

Update documentation for arendst/Tasmota#11184
Also compact tables with <BR> instead of distinct rows.

* Update Smart-Meter-Interface.md

Fix recently added Logarex LK13BE meter and fix tables.

* remove #define ili9342, add cmd displayilimode

* Update Commands.md

Add note about Palette not saving to flash.

* Fix fan configuration examples

* Add template for M5Stack Atom lite

* M5Stack Atom Lite IR send not receive

* clarify supported E-paper displays

* Update ESP32.md

Added link to the orphan TouchPin page

* Update Device-Groups.md

Fixed omission in DevGroupSend "toggle all relays" example.

* Add M5Stack Atom

* Update Commands.md

Clarification about split between topic and payload for command arguments.

* Update MQTT.md

Clarification about separating command arguments into payload field.

* Mac ESP_Flasher

* Fixed SetOption101 alias

* Update TuyaMCU.md

Improve documentation for temperature dpid in TuyaMCU

* Remove Beta state

* homekit

* remark on software serial

* linker flags needed for HomeKit

* Removing reference to nested IF statements

tasmota#589
arendst/Tasmota#10504

* Publish the max value of a sensor every minute

tasmota#447

* Adding reference to US-100 as compatible

tasmota#369

* Update Commands.md

Updated PWMFrequency possibilities for ESP82xx and ESP32

* Update Home-Assistant.md

* Add configration example for ISKRA MT 681

Add script for ISKRA MT 681

* homekit changes

* Tasmota supports 300 cm

* Add ABB B23 MODBus meter

Here is working descriptor for ABB B23 energy meter.

* Started documenting new toy Inkbird IHC-200

* Guide the reader where they can check their tasmota version.

* Update Home-Assistant.md

* Update Mirabella-Genio-Bulb.md

* Reworked

* Minor fix

* Add Berry logo svg file

* Add berry logo

* Improve

* Fix link for logo

* Try different layout

* clarify e-paper type

* global variable example

* add cmd app

* Update KS-602S-Switch.md

* some formatting

* clarify USE_SML_SCRIPT_CMD

* Ai tinker template update

* fix gas meter example

* Update lights

* Add I2C

* Try fix

* fix `or`

* Add I2C example

* Add link to cookbook

* Update TuyaMCU.md

* Update Sonoff-RF-Bridge-433.md

bbconv.hrbl.pl does not work without https

* added WEMOS / LOLIN D32 as known working device

* Update exceptions

* env:tasmota32_base

* Update ESP32.md

* Add Driver definition

* Add step by step I2C driver

* Add Berry

* Update Device-Groups.md

Fix DevGroupSend item codes. There were right but were changed to the wrong values by tasmota#649

* Update Commands.md

Fix DevGroupSend item codes and examples.

* support for all serial protocols

* Note format

* add theme switching and some other new features

* Update Berry-Scripting.md

Fixing typo

* Update Commands.md

Note if you have more than 8 relays: Definded PulseTime for relays <1-8> will also be active for correspondent Relay <9-16>.

* Clarify Teleinfo SetOption parameters

* Update Berry-Scripting.md

Fix typo and removing \ escapes from _ when not in a table.

* Added custom PCB for multiconnect CC2538+CC2592

* Added light module

* Update Commands.md (tasmota#676)

fixed typo in pwmfrequency

* Update Commands.md

* add a new displays

* Fix syntax of resp_cmnd

* Fixed image links (was working only in preview) (tasmota#702)

* Update Zigbee.md

* Create ufs.md (tasmota#703)

* Create ufs.md

documentation for Tasmota UFS

* Update ufs.md

* Update and rename ufs.md to UFS.md

* Update UFS.md

* Update UFS.md

* Update UFS.md

* Update UFS.md

* Update UFS.md

* Update mkdocs.yml

* Update Commands.md (tasmota#705)

add UFS.md link

* No more SetOption78

Removed some time ago

* Update Zigbee.md

Corrected the second example for low-level commands.
Replaced "0008_04" with "0008!04"

* universal display driver

* some udpates about UFS

* universal display driver update

* adding images in the repo

* Simplyfied Platformio compile

* Platformio changes

* Delete outdated platformio stuff

* Remove wrong Atom doc

* Delete wrong info

* Link to Platformio

how to select build variant

* Select firmware via VSC menu

* Update PlatformIO.md

* Ci fails ?!

* Ci fails

* Try 2

* Once again

* universal display descriptor update

* Add config options (tasmota#713)

* Add config options

Added a few lines explaining config settings for AM312 and HC-SR501 so people don't have to search for how to set them up. Also added warning line about flash writes and PIR sensors.

* Update PIR-Motion-Sensors.md

Co-authored-by: blakadder <[email protected]>

* Update Getting-Started.md

Added info about using NodeMCU as an USB/serial adapter.

* add loadable ram fonts

* Update ESP32.md

* add multiple displays

* Upgrade path point to OTA server (tasmota#715)

* upgrade path point to ota server

* screenshot with ota url

* 2 displays example

* ordered list formatting

* Projector and touch control are two points

* Temp sensor esp32

* Solo1

* new ESP32 info

* germglish intervention

* ESP-Flasher

* mv ESP-Flasher

* Add ESP32 Bluetooth

* add ESP32 BLE

* formatting

* fix ota link

* formatting edit

* remove outdated line

* edit

* Update Smart-Meter-Interface.md (tasmota#717)

Add description:  "- IEEE754 decode " to two lines in Meter Metrics

* link update

Co-authored-by: MrBiscuit <[email protected]>
Co-authored-by: nagyrobi <[email protected]>
Co-authored-by: Jeroen <[email protected]>
Co-authored-by: stefanbode <[email protected]>
Co-authored-by: Jeroen Eeuwes <[email protected]>
Co-authored-by: Jason2866 <[email protected]>
Co-authored-by: Andrii Podanenko <[email protected]>
Co-authored-by: gemu <[email protected]>
Co-authored-by: alfakenzo <[email protected]>
Co-authored-by: Paul Diem <[email protected]>
Co-authored-by: Erik Montnemery <[email protected]>
Co-authored-by: s-hadinger <[email protected]>
Co-authored-by: sfromis <[email protected]>
Co-authored-by: Elahd Bar-Shai <[email protected]>
Co-authored-by: jaymemaurice <[email protected]>
Co-authored-by: Barbudor <[email protected]>
Co-authored-by: hk2k2 <[email protected]>
Co-authored-by: Nugman <[email protected]>
Co-authored-by: kadlecp <[email protected]>
Co-authored-by: Nemo <[email protected]>
Co-authored-by: lowgoz <[email protected]>
Co-authored-by: Stephan Hadinger <[email protected]>
Co-authored-by: dfaour <[email protected]>
Co-authored-by: cweinhofer <[email protected]>
Co-authored-by: rapi3 <[email protected]>
Co-authored-by: Charles <[email protected]>
Co-authored-by: BusinessClaes <[email protected]>
Co-authored-by: pkkrusty <[email protected]>
Co-authored-by: sawacs <[email protected]>
  • Loading branch information
1 parent d88ec14 commit dd5bad6
Show file tree
Hide file tree
Showing 56 changed files with 2,480 additions and 941 deletions.
2 changes: 1 addition & 1 deletion docs/AWS-IoT.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
!!! tip "New simplified and automated configuration"
We now provide easy to use AWS CloudFormation templates to generate the private key and sign the certificate. The manual method is now in Appendix

!!! failure "This feature is not included in precompiled binaries"
!!! failure "This feature is not included in precompiled binaries, except tasmota-zbbridge"
To use it you must [compile your build](Compile-your-build).

Add the following to `user_config_override.h`:
Expand Down
52 changes: 3 additions & 49 deletions docs/Berry-Scripting.md → docs/Berry.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,55 +91,10 @@ Hello Tasmota!

Meanwhile the Tasmota log shows:

> tasmota.cmd("Dimmer 60")
{"POWER":"ON","Dimmer":60,"Color":"996245","HSBColor":"21,55,60","Channel":[60,38,27]}
The light is bright
```
10:47:45.235 Hello Tasmota!
10:47:45.236 Hello again
```

### Interacting with Tasmota

The `tasmota` object provides numerous functions to interact with Tasmota. See reference for the list of functions.

For example `tasmota.publish()` is similar to `Publish` and allows to publish arbitrary MQTT messages.

#### Sending native Tasmota commands

Use `tasmota.cmd()` to send arbitrary commands, as strings, like if they were entered via the Tasmota console. For example:

```python
> tasmota.cmd("Dimmer 50")
{"POWER":"ON","Dimmer":50,"Color":"80523A","HSBColor":"21,55,50","Channel":[50,32,23]}
```

If the command sends a reponse, the returned string is parsed as JSON and converted to native Berry `map` object.

#### Invoking Berry commands from Tasmota

Use Tasmota `Br` command to send arbitrary Berry commands.

Example (from the Tasmota console, not the Berry console):

```
12:34:04.085 CMD: Br 1+1
12:34:04.092 RSL: stat/tasmota_923B34/RESULT = {"Br":"2"}
```

## Rules

Berry supports the equivalent of Tasmota rules, using a very similar MQTT Json pattern.

Pattern has the format `<level1>#<level2#...#<levelN>` when parsing a JSON message. Pattern matching is case-insensitive. Using `?` in a sub-level matches any value (first occurence only). Add conditions to the last level, as you would do with rules.


Operator|Effect
:---|:---
`==` `!==`|Compare as strings
`=` `!=` `<` `<=` `>` `>=`|Compare a numers

Important: you don't need `DATA` sub-level with Berry when parsing JSON root level messages.

Example: `Dimmer>=50` will trigger the rule if there is a `Dimmer` field with a numerical value greater than `50`.

The rule function have the general form below where parameters are optionals:
```python
Expand Down Expand Up @@ -272,7 +227,6 @@ channels|`array of int, ranges 0..255`<br>Set the value for each channel, as an

When setting attributes, they are evaluated in the following order, the latter overriding the previous: `power`, `ct`, `hue`, `sat`, `rgb`, `channles`, `bri`.

Example:

```python
# set to yellow, 25% brightness
Expand Down
100 changes: 44 additions & 56 deletions docs/Blinds-and-Shutters.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

# Shutters and Blinds

!!! info "Control blinds and roller shades connected to regular ON/OFF motors or stepper motors"
!!! info "Control blinds and roller shades connected to regular ON/OFF motors,stepper motors or position servos"

Before starting you have to enable shutter support with `SetOption80 1`

Expand Down Expand Up @@ -116,7 +116,7 @@ If you desire that the %-opening closely match what `ShutterPosition<x>` and web
- `ShutterPosition<x> 100` (e.g., measurement = `180`)
- Finally, enter the position measurements as the calibration values: `ShutterCalibration<x> 15 50 100 150 180`

`ShutterCalibration<x>` takes position measurements (**not** the time it takes to move). During calibration you position the shutter to an indicated percentage (e.g., `30%`) of opening and measure the shutter position (e.g., `15`). Use the same unit of measure for all your measurements (e.g., centimeters, inches, steps, etc.). After calibration `ShutterPosition<x> 30` will move to `30%` opening which will correspond to the position you provided (`15`).
`ShutterCalibration<x>` takes position measurements (**not** the time it takes to move). During calibration you position the shutter to an indicated percentage (e.g., `30%`) of opening and measure the shutter position (e.g., `15`). Use the same unit of measure for all your measurements (e.g., centimeters, inches, steps, etc.). After calibration `ShutterPosition<x> 30` will move to `30%` opening. This will be 30% from `180` (full open) == `54`. Now the percentage match the percent in cm/inch/steps.

Notice that there is no calibration for the 10% position. On many shutters, there is no movement during the initial phase (i.e., nearly 10% of total time). Therefore the opening could be `0`. This measurement would cause an execution DIV 0 exception. Therefore the first calibration point is 30%. In most cases this is not a large opening so the calibration will be near enough. Yes, until ~10%, the position will be a bit "off" but not enough for concern.

Expand Down Expand Up @@ -162,7 +162,7 @@ The assigned button can have one of the following functionalities:<BR>
Single press will move shutter to 100%, double press down to 0% and triple press to 50%. No hold action and no other shutter control by MQTT, `<mqtt>` is don't care here.

- Setup for an "toggle" button: `ShutterButton<x> <button> toggle <mqtt>`
Single press will toggle shutter, double press will move it to 50%. No hold action and no other shutter control by MQTT, `<mqtt>` is don't care here.
Single press will toggle shutter, double press will move it to 50%. Be aware that the toggle select direction based on the current position. If the position is between 0..50% the shutter move to 100%. If the position is 51%..100% it moves to 0%. No hold action and no other shutter control by MQTT, `<mqtt>` is don't care here.

More advanced control of the button press actions is given by the following `ShutterButton<x>` command syntax:

Expand Down Expand Up @@ -223,59 +223,47 @@ Servos and Steppers also have a velocity control. With `ShutterMotorDelay<x> 1.5
#### Sample Log Output
Typical log output (log level `3`) when starting from `ShutterOpen1`. The first command is `ShutterClose1`. After closing, open it to 50% with `ShutterPosition1 50`
```
SHT: Accuracy digits: 1
SHT: Shutter 0 (Relay:1): Init. Pos: 20000 [100 %], Open Vel.: 100 Close Vel.: 100 , Max Way: 20000, Opentime 10.0 [s], Closetime 10.0 [s], CoedffCalc: c0: 0, c1 200, c2: 200, c3: 0, c4: 0, binmask 3, is inverted 0, ShutterMode 0
....
CMD: ShutterClose
SRC: Serial
SHT: Position in: payload 0, index 1, source 7
SHT: lastsource 7:, realpos 20000, target 0, payload 0
SHT: Start shutter in direction -1
SRC: Shutter
MQT: stat/%topic%/RESULT = {"POWER2":"ON"}
MQT: stat/%topic%/POWER2 = ON
MQT: stat/%topic%/RESULT = {"ShutterClose1":0}
SHT: Shutter 0: Real Pos: 19000, Target 0, source: Shutter, start-pos: 100 %, direction: -1, rtcshutter: 0.5 [s]
CFG: Saved to flash at F5, Count 725, Bytes 4096
SHT: Shutter 0: Real Pos: 17000, Target 0, source: Shutter, start-pos: 100 %, direction: -1, rtcshutter: 1.5 [s]
SHT: Shutter 0: Real Pos: 15000, Target 0, source: Shutter, start-pos: 100 %, direction: -1, rtcshutter: 2.5 [s]
SHT: Shutter 0: Real Pos: 13000, Target 0, source: Shutter, start-pos: 100 %, direction: -1, rtcshutter: 3.5 [s]
SHT: Shutter 0: Real Pos: 11000, Target 0, source: Shutter, start-pos: 100 %, direction: -1, rtcshutter: 4.5 [s]
SHT: Shutter 0: Real Pos: 9000, Target 0, source: Shutter, start-pos: 100 %, direction: -1, rtcshutter: 5.5 [s]
SHT: Shutter 0: Real Pos: 7000, Target 0, source: Shutter, start-pos: 100 %, direction: -1, rtcshutter: 6.5 [s]
SHT: Shutter 0: Real Pos: 5000, Target 0, source: Shutter, start-pos: 100 %, direction: -1, rtcshutter: 7.5 [s]
SHT: Shutter 0: Real Pos: 3000, Target 0, source: Shutter, start-pos: 100 %, direction: -1, rtcshutter: 8.5 [s]
SHT: Shutter 0: Real Pos: 1000, Target 0, source: Shutter, start-pos: 100 %, direction: -1, rtcshutter: 9.5 [s]
SHT: Shutter 0: Real Pos. 0, Stoppos: 0, relay: 1, direction -1, pulsetimer: 0, rtcshutter: 10.1 [s], operationtime 0
MQT: stat/%topic%/SHUTTER1 = 0
SRC: Shutter
MQT: stat/%topic%/RESULT = {"POWER2":"OFF"}
MQT: stat/%topic%/POWER2 = OFF
MQT: tele/%topic%/RESULT = {"Shutter1":{"Position":0,"direction":0}}
CFG: Saved to flash at F4, Count 726, Bytes 4096
....
CMD: ShutterPosition 50
SRC: Serial
SHT: Position in: payload 50, index 1, source 23
SHT: lastsource 23:, realpos 0, target 10000, payload 50
SHT: Start shutter in direction 1
SRC: Shutter
MQT: stat/%topic%/RESULT = {"POWER1":"ON"}
MQT: stat/%topic%/POWER1 = ON
MQT: stat/%topic%/RESULT = {"ShutterPosition1":50}
SHT: Shutter 0: Real Pos: 1500, Target 10000, source: Shutter, start-pos: 0 %, direction: 1, rtcshutter: 0.8 [s]
CFG: Saved to flash at FB, Count 727, Bytes 4096
SHT: Shutter 0: Real Pos: 3500, Target 10000, source: Shutter, start-pos: 0 %, direction: 1, rtcshutter: 1.8 [s]
SHT: Shutter 0: Real Pos: 5500, Target 10000, source: Shutter, start-pos: 0 %, direction: 1, rtcshutter: 2.7 [s]
SHT: Shutter 0: Real Pos: 7500, Target 10000, source: Shutter, start-pos: 0 %, direction: 1, rtcshutter: 3.7 [s]
SHT: Shutter 0: Real Pos: 9500, Target 10000, source: Shutter, start-pos: 0 %, direction: 1, rtcshutter: 4.7 [s]
SHT: Shutter 0: Real Pos. 10000, Stoppos: 50, relay: 0, direction 1, pulsetimer: 0, rtcshutter: 5.0 [s], operationtime 2
MQT: stat/%topic%/SHUTTER1 = 50
SRC: Shutter
MQT: stat/%topic%/RESULT = {"POWER1":"OFF"}
MQT: stat/%topic%/POWER1 = OFF
MQT: tele/%topic%/RESULT = {"Shutter1":{"Position":50,"direction":0}}
CFG: Saved to flash at FA, Count 728, Bytes 4096
13:56:56.073 RSL: RESULT = {"ShutterClose1":0}
13:56:59.763 CMD: shutteropen
13:56:59.779 RSL: RESULT = {"POWER2":"OFF"}
13:56:59.781 RSL: POWER2 = OFF
13:56:59.787 RSL: RESULT = {"POWER1":"ON"}
13:56:59.788 RSL: POWER1 = ON
13:56:59.790 RSL: RESULT = {"ShutterOpen1":100}
13:56:59.817 RSL: RESULT = {"Shutter1":{"Position":0,"Direction":1,"Target":100}}
13:57:00.429 RSL: RESULT = {"Shutter1":{"Position":7,"Direction":1,"Target":100}}
13:57:01.451 RSL: RESULT = {"Shutter1":{"Position":17,"Direction":1,"Target":100}}
13:57:02.427 RSL: RESULT = {"Shutter1":{"Position":27,"Direction":1,"Target":100}}
13:57:03.409 RSL: RESULT = {"Shutter1":{"Position":36,"Direction":1,"Target":100}}
13:57:04.432 RSL: RESULT = {"Shutter1":{"Position":47,"Direction":1,"Target":100}}
13:57:05.455 RSL: RESULT = {"Shutter1":{"Position":57,"Direction":1,"Target":100}}
13:57:06.429 RSL: RESULT = {"Shutter1":{"Position":67,"Direction":1,"Target":100}}
13:57:07.449 RSL: RESULT = {"Shutter1":{"Position":77,"Direction":1,"Target":100}}
13:57:08.420 RSL: RESULT = {"Shutter1":{"Position":86,"Direction":1,"Target":100}}
13:57:09.445 RSL: RESULT = {"Shutter1":{"Position":97,"Direction":1,"Target":100}}
13:57:09.802 RSL: RESULT = {"POWER1":"OFF"}
13:57:09.804 RSL: POWER1 = OFF
13:57:10.308 RSL: SHUTTER1 = 100
13:57:10.309 RSL: RESULT = {"Shutter1":{"Position":100,"Direction":0,"Target":100}}
13:57:16.174 CMD: shutterposition 50
13:57:16.190 RSL: RESULT = {"POWER2":"ON"}
13:57:16.192 RSL: POWER2 = ON
13:57:16.198 RSL: RESULT = {"POWER1":"ON"}
13:57:16.199 RSL: POWER1 = ON
13:57:16.201 RSL: RESULT = {"ShutterPosition1":50}
13:57:16.229 RSL: RESULT = {"Shutter1":{"Position":100,"Direction":-1,"Target":50}}
13:57:16.433 RSL: RESULT = {"Shutter1":{"Position":98,"Direction":-1,"Target":50}}
13:57:17.422 RSL: RESULT = {"Shutter1":{"Position":89,"Direction":-1,"Target":50}}
13:57:18.445 RSL: RESULT = {"Shutter1":{"Position":78,"Direction":-1,"Target":50}}
13:57:19.413 RSL: RESULT = {"Shutter1":{"Position":69,"Direction":-1,"Target":50}}
13:57:20.436 RSL: RESULT = {"Shutter1":{"Position":58,"Direction":-1,"Target":50}}
13:57:21.265 RSL: RESULT = {"POWER1":"OFF"}
13:57:21.267 RSL: POWER1 = OFF
13:57:21.273 RSL: RESULT = {"POWER2":"OFF"}
13:57:21.274 RSL: POWER2 = OFF
13:57:21.778 RSL: SHUTTER1 = 50
13:57:21.780 RSL: RESULT = {"Shutter1":{"Position":50,"Direction":0,"Target":50}}
```
-->
### using Stepper Motors
Expand Down
Loading

0 comments on commit dd5bad6

Please sign in to comment.