Compare commits

...

1539 Commits

Author SHA1 Message Date
Theo Arends
a11e269ca0 Fix Xmodem send over serial 2025-04-19 12:54:53 +02:00
Theo Arends
2831bbfd18 Update changelogs 2025-04-18 10:36:42 +02:00
bovirus
92b3f7d37c
Italian language update (#23309) 2025-04-18 10:26:10 +02:00
s-hadinger
a2d1915692
Base64 split implementation in separate file (#23313) 2025-04-17 22:38:04 +02:00
s-hadinger
082170374c
Berry string literals containing NULL are truncated (#23312) 2025-04-17 22:12:35 +02:00
s-hadinger
c2628c95f3
Berry 'bytes().asstring()' now truncates a string if buffer contains NULL (#23311) 2025-04-17 21:51:03 +02:00
Theo Arends
2bc5f682b0 Add command JsonPP 0..7 to enable (>0) JSON Pretty Print on user interfaces and set number of indents 2025-04-17 15:55:05 +02:00
Theo Arends
cea46bb660 Bump version v14.6.0.1 2025-04-16 14:02:56 +02:00
Theo Arends
b67231483a Update TEMPLATES.md 2025-04-16 11:46:06 +02:00
Theo Arends
e6918d8b9c Fix ESP8266 IPv6 compilation 2025-04-16 11:35:06 +02:00
s-hadinger
7ea95ec6b2
Show network interface priority in 'Status 5' debug logging (#23302) 2025-04-15 13:21:14 +02:00
Theo Arends
8921a42f79 Add filesystem command `UfsList[2]` 2025-04-15 12:35:55 +02:00
Theo Arends
c8181e3290 Fix PZEM GUI address display 2025-04-14 16:13:59 +02:00
Theo Arends
117e503aaa Add PZEM_AC device address in JSON and GUI (#23268) 2025-04-14 15:24:02 +02:00
Theo Arends
3baa110f9d Add support for XMODEM over serial and telnet if enabled with #define USE_XYZMODEM 2025-04-14 13:54:05 +02:00
Theo Arends
a4096ab049 Update changelogs 2025-04-14 10:54:53 +02:00
Theo Arends
83118b9e05 Update changelogs 2025-04-14 10:52:54 +02:00
protectivedad
3a28938b91
HLK-LD2402 Update for firmware 3.3.5+ (#23281)
* Many changes for the newest firmware 3.3.5

added comments and debug lines
added new autogain function (fw 3.3.5+)
changed variables for consistency
ended configuration mode on error
fixed improper JSON response messages
changed timings for new firmware
consolidated post configuration processsing

* code size reduction
updated size extimates

* reworked to reduce code and memory usage

---------

Co-authored-by: Anthony Sepa <protectivedad@gmail.com>
2025-04-14 10:44:00 +02:00
s-hadinger
68f019cf43
HASPmota default theme is now Tasmota-style (#23288) 2025-04-13 23:23:51 +02:00
s-hadinger
4707cc068f
HASPmota added 'y2_min' and 'y2_max' to control the second series of 'chart' (#23287) 2025-04-13 21:54:43 +02:00
valentin richard
0604fac3bc
fix(zigbee): fix convertTuyaSpecificCluster datapoint parser -> support multiple data points in the same payload. (#23247)
Co-authored-by: valentin <email@example.com>
2025-04-12 19:12:32 +02:00
gemu
c12974366b
Sml update (#23267)
* rename nthll 64

* fix nthll 64
2025-04-11 15:16:05 +02:00
sfromis
cced48d824
Update uDisplay.h (#23273)
RGB565 value for pink was same as magenta. This is obviously wrong, hence correcting to the "pink" value from the docs.

While I'm far from certain about the "right" shading of color nuances, the correction does "reasonably pink" in my eyes (on a ST7789), and assuming that the value from the docs was sourced from something relevant to the small displays used with Tasmota, I consider the change to be at least a move in the right direction.

Still, the corrected value (FF80C0 in RGB888) does have the name "tea rose" when using HTML color codes as a reference, but "some people" may have more interest in long discussions like what pink "really" is.
2025-04-11 15:15:35 +02:00
Theo Arends
1a8903578f Update changelogs 2025-04-11 15:11:38 +02:00
Jason2866
230ce2c539
Platform 2025.04.30 Tasmota Arduino Core 3.1.3.250411 based on IDF 5.3.2.250403 (#23280) 2025-04-11 13:06:26 +02:00
Norbert
6b7606c958
Fix spelling (#23278) 2025-04-11 08:54:44 +02:00
jetpax
cfe1cee4d3
Replace brotli compressed file serving with gzip (#23274)
* Replace brotli compressed file serving with gzip as it is better supported

* Add HTTP_POST support
2025-04-10 23:12:37 +02:00
s-hadinger
2999eed8b9
Berry 'readline' when a line is exactly 98 characters (#23276) 2025-04-10 22:57:03 +02:00
Theo Arends
3f82228905 Fix MIEL_HVAC temperature saving 9k code size in addition (#23271) 2025-04-10 11:32:43 +02:00
s-hadinger
7ddf8abf90
Ensure AlpineJS is in PROGMEM (#23264) 2025-04-07 19:49:19 +02:00
Theo Arends
215b37bf69 Add Alpine.js 2.8.2 support (#23259) 2025-04-07 14:42:35 +02:00
Theo Arends
342bb2cb7b Update changelogs 2025-04-07 10:28:55 +02:00
s-hadinger
2096411be6
Fix esp_idf_http to make strings 'weak' (#23256) 2025-04-06 22:51:38 +02:00
jetpax
929582b1af
Expose esp_http_server to Berry (#23206)
* Expose esp_http_server to Berry

* Fix conditional build defines

* Fix Berry returns, dangling pointer

* Use correct Berry returns

* Remove debug code

* cleanup

* add BERRY to conditionals to avoid confusion
2025-04-06 22:27:48 +02:00
Thomas Büngener
4ed48feaa2
SML: CRC for binary SML (#23205)
* SML: CRC for binary SML parsing

* switch algos

* improve errormessage on buffer overflow

* move crc variable to their own struct

* Use Flag bit to disable CRC, auto-detect algorithm,
data in own struct
debug log

* configure and enable/disable via special option "=soC,bufsz,mode", mode 16 autodetect.

* fix 15 vs 0xF

* remove benchmark code

* fix typo in comment

* Byteflip for CRC
2025-04-05 11:22:22 +02:00
Theo Arends
c121dbcd4a Update changelogs 2025-04-05 11:21:03 +02:00
s-hadinger
e8baea464f
TLS increase timeout and fix crash (#23249) 2025-04-05 00:04:36 +02:00
Theo Arends
2bf67b96a6 Prep XYZModem support on Serial/USB and telnet 2025-04-01 23:15:28 +02:00
s-hadinger
0cb6a8ba24
Fix typo (#23232) 2025-04-01 23:10:30 +02:00
Theo Arends
39494f1287 Update changelogs 2025-04-01 23:10:08 +02:00
Qowy
90c690e67a
fix DIMMER ! to use correct dim value (#23196) 2025-04-01 22:57:58 +02:00
s-hadinger
08f20b9404
Smoothen light gamma curve when using Fade (#23230) 2025-04-01 22:51:56 +02:00
Theo Arends
dfabe8cc0f Update change logs 2025-03-31 11:49:57 +02:00
protectivedad
b43d360d37
fixes for ina226 driver (#23197)
adjust current/voltage timing to be consistent
fix missing comma in json

Co-authored-by: Anthony Sepa <protectivedad@gmail.com>
2025-03-31 11:45:59 +02:00
Theo Arends
2f7793ddcf Fix Zigbee XModem wait loop 2025-03-29 16:37:48 +01:00
Theo Arends
3c70b728ac Fix ESP32 compile without webserver 2025-03-28 13:58:22 +01:00
Theo Arends
289120ee92 Fix telnet buffer overrun detection 2025-03-28 12:16:32 +01:00
s-hadinger
b77b622fbe
Berry bytes add 3 (#23200)
* Berry bytes add with 3 bytes

* add changelog
2025-03-27 22:55:42 +01:00
s-hadinger
a47e6f1496
Berry avoid bootloop when Berry is disabled (#23199) 2025-03-27 21:08:32 +01:00
Theo Arends
74757ee7da Fix telnet response if seriallog is 0 2025-03-27 17:27:48 +01:00
Qowy
ea2baee3b8
fix fadeGammaReverse is applied to the time variable (#23194) 2025-03-27 10:17:43 +01:00
s-hadinger
f4bb9d98b6
HASPmota improve parsing (#23192) 2025-03-26 22:34:12 +01:00
Theo Arends
87b95f798a Extend command GPIO with different display options and allowing updating of module GPIO's in one go 2025-03-26 16:43:13 +01:00
Theo Arends
da4dc56b16 Bump version v14.5.0.3 2025-03-25 17:04:44 +01:00
Theo Arends
714ad233e0 Changed output of commands GPIO and GPIOs swapped 2025-03-25 16:53:26 +01:00
protectivedad
2da631e442
missing edits for last commit (#23185)
Co-authored-by: Anthony Sepa <protectivedad@gmail.com>
2025-03-25 15:22:27 +01:00
Theo Arends
6f47f23f7a Add terminate telnet session with command exit or quit 2025-03-25 13:47:41 +01:00
Theo Arends
69fca99ac1 Add telnet compile options 2025-03-25 11:19:53 +01:00
Theo Arends
a3b564f4f3 Keep telnet output while serial logging was disabled 2025-03-24 12:16:35 +01:00
Theo Arends
52f3306f15 Disable telnet output colors on command TelnetColor 0 2025-03-24 12:04:01 +01:00
Theo Arends
9d6640a42e Change command TelnetColor 0 to disable color codes from output 2025-03-24 10:57:48 +01:00
Theo Arends
307e1d9c29 Fix telnet line length regression 2025-03-23 22:36:42 +01:00
Theo Arends
f71ca3e0a2 Fix ESP32 telnet response 2025-03-23 17:34:44 +01:00
Theo Arends
a3d86eebf0 Telnet more functional bling bling 2025-03-23 13:23:03 +01:00
s-hadinger
f331a64ac3
HASPmota autostart when pages.jsonl exists (#23181) 2025-03-22 23:23:57 +01:00
Theo Arends
caac9f1257 Reduce telnet stack usage fixing ESP8266 exceptions 2025-03-22 17:33:27 +01:00
Theo Arends
b47a1bc1e2 Fix telnet async input 2025-03-22 12:04:02 +01:00
Qowy
9e3ad52356
fix wrong comment in xdrv_79_esp32_ble.ino (#23171) 2025-03-22 10:30:20 +01:00
protectivedad
38ceafe789
upgrades and fixes for HLK-LD2402 driver (#23164)
Co-authored-by: Anthony Sepa <protectivedad@gmail.com>
2025-03-22 10:28:15 +01:00
Theo Arends
ddc1439edf Fix webcam updatestats 2025-03-22 10:23:15 +01:00
DavidPletcher
3827bca3cc
remove malformed clutter from webcam status0 JSON response (#23177)
A regression was added in commit 01154e949, which prepends
clutter to the status0 JSON status message.

Example:
```
$ curl 'http://webcam/cm?cmnd=Status0' -u admin:password ; echo
{s}Webcam Frame rate{m}0 FPS{e}{"Status":{"Module":0,"DeviceName":"...
```

The response is not properly formatted JSON and breaks client software.

The problem occurs because a new case statement was added for the
purpose of injecting webcam stats into the JSON status message, but
a break statement is missing and execution falls through to the
following case, which prepends garbage to the output buffer.

With this one-line fix in place, the output is properly formatted:
```
$ curl 'http://tahoe-front-door-cam/cm?cmnd=Status0' -u admin:password ; echo
{"Status":{"Module":0,"DeviceName":"
```

Note that the prior case for FUNC_EVERY_SECOND is also missing a break
statement. That looks wrong to me but it's unrelated to fixing this
issue and I'm inclined to punt that concern to others who are more
familiar with this code.
2025-03-22 08:18:01 +01:00
Theo Arends
8183a9ed3b Add telnet bling bling 2025-03-21 23:41:01 +01:00
Theo Arends
00e2d1d430 Fix filelog and save some bytes 2025-03-21 17:29:04 +01:00
Theo Arends
863c6d1214 Fix telnet regression 2025-03-21 16:49:25 +01:00
Theo Arends
73cace5274 Add telnet graceful close 2025-03-21 16:38:26 +01:00
aronk
1ada6da6b8
[MI BLE] added support for alternative version of LYWSD02MMC (#23169)
* [MI BLE] added support for alternative version of LYWSD02MMC

* Bumped MI32_VERSION to 0.9.2.5
2025-03-21 14:30:17 +01:00
Theo Arends
fbb752d8c2 Add Telnet server using command Telnet <0|1|port>[,<IP filter>] 2025-03-20 23:11:30 +01:00
Theo Arends
fb6640b91f Fix ESP32 receive incomplete serial data over 128 bytes (#23156) 2025-03-18 15:12:30 +01:00
s-hadinger
c0d15de965
Berry 're.dump()' (#23162) 2025-03-17 21:34:59 +01:00
Theo Arends
3764e88ed2 Merge branch 'development' of https://github.com/arendst/Tasmota into development 2025-03-17 14:06:02 +01:00
Theo Arends
0ea1f8e632 Change RCSwitch RCSWITCH_SEPARATION_LIMIT from 4100 to 3600 2025-03-17 14:05:38 +01:00
Jason2866
234c5ea170
check fw size against partition (#23160) 2025-03-17 13:59:25 +01:00
s-hadinger
ce92723c41
Berry update from upstream (#23159) 2025-03-17 08:27:03 +01:00
s-hadinger
e1f7ee26fa
Matter prepare for ICD cluster (#23158) 2025-03-16 22:38:36 +01:00
s-hadinger
a97d306a16
Berry include changes in 're' to HASPmota (#23153) 2025-03-15 18:58:21 +01:00
Theo Arends
508992258f Update changelogs 2025-03-14 11:39:59 +01:00
s-hadinger
1b51aef911
Berry now accepts 'bytes()' as precompiled patterns, added 're.compilebytes()' (#23149) 2025-03-13 23:38:55 +01:00
s-hadinger
6486ba3b26
Fix typo of be_set_ctype_func_hanlder (#23147) 2025-03-13 17:49:28 +01:00
Bartosz Nitka
9b4eb64caa
Fix unused ret_code2 in xdrv_52_9_berry (#23146) 2025-03-13 17:22:21 +01:00
bovirus
6d376a079e
Italian language update (#23144) 2025-03-12 19:00:50 +01:00
protectivedad
69c3863b14
HLK-LD2402 fix for missing '|' (#23142)
Signed-off-by: Anthony Sepa <protectivedad@gmail.com>
Co-authored-by: Anthony Sepa <protectivedad@gmail.com>
2025-03-12 15:26:02 +01:00
Theo Arends
ac8236abe1 Update changelogs 2025-03-12 11:31:00 +01:00
s-hadinger
16e9d105ba
Update flasher for Sonoff ZBBridge Pro (#23136) 2025-03-11 23:04:51 +01:00
protectivedad
f3ae3bec4b
Added support for hlk-ld2402 tasmota_xsns_sensor (#23133)
This is based on the xsns_102_ld2410s.ino.

* Available commands:
* LD2402_Status 0|1|2 - showing parameters|sensor readings|firmware info
* LD2402_ReRead - reread common, motion and micro threshold parameters from device
* LD2402_SetCommon 7-100,0-65535 - set common: maximum distance, disappearance delay
* LD2402_SetMotion n,n1..n16 - set motion threshold values (16)
* LD2402_SetMicro n,n1..n16 - set micro threshold values (16)
* LD2402_Mode 0/1 - set device output mode 0-normal, 1-engineering
* LD2402_AutoUpdate 3.0,2.0,3.0 - start autoupdate trigger,keep,micro magnification factor
* LD2402_Follow 0/n - reports every n seconds

Signed-off-by: Anthony Sepa <protectivedad@gmail.com>
Co-authored-by: Anthony Sepa <protectivedad@gmail.com>
2025-03-11 17:03:54 +01:00
Theo Arends
cae4551762 Fix ESP32 compilation V9240 2025-03-11 15:12:02 +01:00
Theo Arends
007608914c Support Vango Technologies V924x ultralow power, single-phase, power measurement (#23127) 2025-03-11 14:57:11 +01:00
Ivan Chopa
758ba17dde
Added V9240 energy metering chip driver (#23127)
* Add V9240 driver

* Addendum to previous commit

* Add driver code similar to the prototype

* they are talking to each other

* Added implementation of calibration commands

* continued work of calibration

* Maybe it works.

* Post-merger control

* Change driver number 34 to 25

* Correction of other comments

* Removed  duplicate code

* Adjusting the calibration procedure according to the behavior stated here. To the extent possible.
https://tasmota.github.io/docs/Power-Monitoring-Calibration/#calibration-procedure

* Removed added trailing whitespaces

* Fixing several small issues.
2025-03-11 14:28:07 +01:00
Giuliano
08fae4bcd6
typo fix (#23122) 2025-03-11 11:32:00 +01:00
s-hadinger
f305113d6d
Removed USE_WEBCLIENT and default USE_WEBCLIENT_HTTPS (#23132) 2025-03-10 22:37:27 +01:00
Marius Bezuidenhout
7b8d2fe93d
BMS additional features (#23125)
* Added more data from BMS

* Updated mcp2515 code
2025-03-09 16:27:10 +01:00
Giuliano
714435be1c
Remove misleading comment (#23124) 2025-03-09 13:42:44 +01:00
Theo Arends
e3eb47078f Fix ESP32 intermittent exception on WiFi AP cannot be reached (#23115) 2025-03-08 15:19:45 +01:00
Jason2866
a0c8ac4f80
enable FTP for all esp8266 >= 4MB (not only for 4MB variant) (#23120) 2025-03-08 13:07:58 +01:00
Jason2866
c926b4b3a6
enable wifi sleep for c3 (#23117) 2025-03-07 14:43:31 +01:00
s-hadinger
3f93d2deee
Berry remove 'Leds.create_matrix' from the standard library waiting for reimplementation (#23114) 2025-03-06 23:11:16 +01:00
s-hadinger
06aa356bc3
Berry load files in '/.extensions/' then in '/' (#23113) 2025-03-06 21:15:59 +01:00
Theo Arends
58632d67db Update changelogs 2025-03-06 16:17:54 +01:00
s-hadinger
e26a2cdac9
Berry prevent 'import' from hiding a solidified class (#23112) 2025-03-06 14:45:34 +01:00
Jason2866
72535db185
prep Hybrid: add Hybrid compile examples (#22474) 2025-03-05 14:27:47 +01:00
Theo Arends
f2bf8b96e7 Increase rcswitch H/L changes to 64 bits 2025-03-05 12:32:07 +01:00
Theo Arends
549ca6e32f ESP32 enable webcam version 2 (#18732) 2025-03-04 10:16:13 +01:00
Theo Arends
72520e0743 Bump version v14.5.0.2 2025-03-02 16:17:07 +01:00
Jason2866
aed82dc8b2
Platform 20250330 (#23088)
* Platform 2025.03.30 Tasmota Arduino Core 3.1.3.250302 based on IDF 5.3.2.250228

* Arduino core 3.1.3.250302
2025-03-02 16:04:56 +01:00
gemu
2e35a2ab93
some fixes and formatting (#23084) 2025-03-01 15:11:35 +01:00
Jason2866
3c171c1ed8
Compile lib NeopixelBus only for esp8266 (#23077)
* force mode strict for pixels lib
* Use lib NeoPixelBus only for esp8266
2025-02-27 12:15:20 +01:00
Theo Arends
481f2cd8e1 Update changelogs 2025-02-26 17:22:13 +01:00
s-hadinger
9a98db9773
Berry 'global.undef()' to undefine a global variable (#23073) 2025-02-26 15:30:04 +01:00
s-hadinger
e92e411040
Berry minor fixes to remove warnings (#23071) 2025-02-25 22:28:13 +01:00
s-hadinger
aecba92da4
Update be_mapping_utils.c, add final newline to avoid compilation warning 2025-02-25 21:14:09 +01:00
zzdovydas
4ee4b5908f
Fix LT Language (#22971) (#23064) 2025-02-25 11:19:43 +01:00
Theo Arends
3f74bc83e5 Update changelogs / gpioviewer / wizmote 2025-02-24 15:23:59 +01:00
Theo Arends
fd0501035d Update changelogs 2025-02-24 14:51:29 +01:00
s-hadinger
670fab7ead
Berry 'introspect.solidified()' to know if a Berry object is solidified in Flash or in RAM (#23063)
* Berry 'introspect.isconst()' to know if a Berry object is solidified or in RAM

* change to solidified

* fix typo
2025-02-24 14:05:58 +01:00
s-hadinger
375864b23b
Berry 'tasmota.when_network_up()' and simplified Matter using it (#23057) 2025-02-23 19:19:42 +01:00
Jason2866
788ac574ac
remove tagging gemu2015 for every opened bug report 2025-02-23 14:27:42 +01:00
Theo Arends
5aa7d08c91 Fix too many zeros in RCSwitch received data regression from v14.4.1.4 (#23050) 2025-02-23 13:54:39 +01:00
Theo Arends
b4c61325cb Add optional WizMote commission 2025-02-22 18:12:36 +01:00
Theo Arends
d10eafc500 Update changelogs 2025-02-22 15:22:20 +01:00
Theo Arends
90ebff552d Update changelogs 2025-02-22 15:01:37 +01:00
s-hadinger
0c26698ba6
Leds Panel add checkbox to enable/disable the feature (#23048) 2025-02-22 12:33:34 +01:00
s-hadinger
1db796c40f
LVGL Mirroring add checkbox to enable/disable the feature (#23047) 2025-02-22 12:00:36 +01:00
s-hadinger
b8459eb685
LVGL Berry fix lvgl_berry_fix_lv_style_prop_arr (#23042) 2025-02-21 09:15:03 +01:00
Giuliano Zaro
b1f3d6268d
Allow acl in mqtt when client certificate is in use (#22998)
* Allow acl in mqtt

Acl in mqtt needs user name if 'use_identity_as_username' is not true. It also seems that login in mqtt don't accept an user with an empty password, then reenabled both

* Add new define for mosquitto

Keep compatibility with AWS_IOT

* Better approach to custom client certificate

Don't duplicate defined check. Let USE_MQTT_AWS_IOT automatically set USE_MQTT_CLIENT_CERT and use latter in all code

* with mosquitto user and password may be empty

When mosquitto 'use_identity_as_username' option is enabled password and user are not used
2025-02-20 22:51:52 +01:00
s-hadinger
7a4d8a5fb1
LVGL experimental mirroring of display on Web UI (#23041) 2025-02-20 21:45:45 +01:00
s-hadinger
0ab5548615
LVGL, prepare for HASPmota theme, change: no-grow when clicked, DPI set to 160 (#23040) 2025-02-20 21:13:35 +01:00
s-hadinger
1af1057e66
Berry experimental driver for AXP2101 for M5Core2v1.1 (#23039) 2025-02-20 20:40:53 +01:00
Jason2866
039960153a
typo C3 not C2 2025-02-20 15:01:37 +01:00
Theo Arends
b4c1cd654f Bump version v14.5.0.1 2025-02-18 16:14:27 +01:00
Theo Arends
c6b975561f Update changelogs 2025-02-18 12:16:49 +01:00
s-hadinger
4306823ba6
HASPmota exception when clicking on a checkbox (#23022) 2025-02-17 23:04:04 +01:00
s-hadinger
9b258cadcf
Wrong RMT channels for ESP32S3, now depends on 'soc_caps.h' (#23021) 2025-02-17 22:24:50 +01:00
Theo Arends
871723b6f7 Update changelogs regarding ESP32 Webcam resolution changes since v14.4.0 (#22901) 2025-02-17 14:16:52 +01:00
Theo Arends
3c66ace01b Update templates 2025-02-17 10:04:07 +01:00
Theo Arends
41af475cdb Update changelogs 2025-02-16 15:04:57 +01:00
Theo Arends
3c5f22b31f Update changelogs 2025-02-16 14:57:38 +01:00
Jason2866
cb333a5a38
wifi begin is needed to get MAC address (#23011) 2025-02-16 12:42:14 +01:00
Giuliano Zaro
c39a7d924a
Fix typo (#22996)
Found while trying to upload custom files on esp FS
2025-02-16 12:41:58 +01:00
s-hadinger
f07af885a9
Berry Leds Panel remove unused JS code (#23010) 2025-02-15 22:58:31 +01:00
s-hadinger
f1be1b8ba9
HASPmota optimize sort (#23009) 2025-02-15 22:58:24 +01:00
s-hadinger
cfc11b5e83
Fix memory corruption in bytes().appendb64() 2025-02-15 22:08:00 +01:00
s-hadinger
a939b4973e
Remove unwanted tab 2025-02-15 21:41:44 +01:00
s-hadinger
d805cef66e
Berry bytes add appendb64 (#23008)
* Berry Leds_panel minor fix

* Fix

* Berry add 'bytes().appendb64()'

* fix lib
2025-02-15 21:09:40 +01:00
s-hadinger
64ec55db4e
Leds panel fixed port (#23007)
* Berry Leds_panel minor fix

* Fix
2025-02-14 18:41:05 +01:00
Theo Arends
a2af12c969 Add support for WiZMote with WiFi disabled 2025-02-14 12:55:58 +01:00
Theo Arends
f383c877c6 Fix unwanted WiZMote restart 2025-02-13 21:32:34 +01:00
Theo Arends
cc14f721f9 Remove near future bitly advertising 2025-02-13 17:52:11 +01:00
Theo Arends
ccf8902515 Update changelogs 2025-02-13 10:01:29 +01:00
s-hadinger
f3dc35e9ca Solidified Code updated 2025-02-12 21:38:27 +00:00
s-hadinger
0b3be314e7
Berry fixed parser error in rare case (#22997) 2025-02-12 22:37:48 +01:00
Jason2866
a9150dc703
revert accidentally change of rgb order 2025-02-12 18:36:26 +01:00
Theo Arends
c076331fad Add support for Wiz Smart Remote using #define USE_WIZMOTE and command SetOption164 1 2025-02-12 17:45:06 +01:00
s-hadinger
8621b9adf4
Add missing comma 2025-02-12 16:58:26 +01:00
s-hadinger
bc7a1f5dbc
'MqttTLS' field in 'Status 6' to indicate if the MQTT connection is encrypted (#22995) 2025-02-12 14:56:47 +01:00
Giuliano Zaro
3ef9fe9f6e
Fix typo (#22991) 2025-02-12 10:04:46 +01:00
Jason2866
1910aba79f
Update sdkconfig.defaults to actual
used from Tasmota Arduino Lib Builder
2025-02-11 21:55:30 +01:00
Jason2866
dbcfe486af
no issues for scripter problems 2025-02-11 13:56:33 +01:00
Jason2866
214b392839
add esp32-c6 to objdump pio script 2025-02-11 11:58:32 +01:00
Theo Arends
b9bc3580f4 Add support for Lithuanian language translations by zzdovydas (#22971) 2025-02-10 11:32:55 +01:00
Thomas Reitmayr
b07bd68046
Utilize ESP-IDF's LCD driver for pushing pixels to RGB displays with ESP32-S3 (#22970)
This commit is an optimization of code and possibly performance for pushing
pixel data to an RGB display with an ESP32-S3. It uses ESP-IDF's LCD driver
for doing so and replaces multiple code paths in the previous implementation.
No code for other ESP32 variants has been changed.

Also see the discussion arendst/Tasmota#22553
2025-02-09 21:58:50 +01:00
s-hadinger
7a97a8fa98
Berry compile typo in Partition_Wizard (#22978) 2025-02-09 18:40:15 +01:00
s-hadinger
1b2fc5eccc
Berry make HASPmota and Matter use 'tasmota.defer()' (#22977) 2025-02-09 18:39:32 +01:00
Giuliano Zaro
e7f5ecc2d0
Typo fix (#22973)
Address #22957
2025-02-09 18:32:53 +01:00
s-hadinger
ff5b4956c8
Berry 'tasmota.defer()' (#22976) 2025-02-09 17:56:38 +01:00
zzdovydas
5a6b219971
Add Lithuanian language to Tasmota (#22971)
* create_lt_LT_file

* half_done

* add_150_lt_translations

* remove_duplicates

* finish_lt_translations

* change_translation_description

* add_lang_lt_to_config_files
2025-02-09 17:03:08 +01:00
Theo Arends
99cbdf687d Add berry control over TWAI rx queue size 2025-02-09 16:12:38 +01:00
Jason2866
57e4d18d26
Refactor Berry solidified artifact upload 2025-02-05 12:51:02 +01:00
Jason2866
d4a8952c34
refactor Berry artifact download and push 2025-02-05 11:53:06 +01:00
Jason2866
28b22de7e4
Last try for today 2025-02-04 20:11:34 +01:00
Jason2866
f65646ba80
Delete lib/libesp32_lvgl/lv_haspmota/src/solidify/berry_haspmota directory 2025-02-04 20:04:11 +01:00
Jason2866
f014299adc
Delete lib/libesp32_lvgl/lv_binding_berry/src/solidify/berry_lvgl directory 2025-02-04 20:03:52 +01:00
Jason2866
af4ec3e0d0
Delete lib/libesp32/berry_tasmota/src/solidify/berry_tasmota directory 2025-02-04 20:03:15 +01:00
Jason2866
f1e5b576ba
Delete lib/libesp32/berry_matter/src/solidify/berry_matter directory 2025-02-04 20:02:53 +01:00
Jason2866
c4dd9839c9
Delete lib/libesp32/berry_animate/src/solidify/berry_animate directory 2025-02-04 20:02:29 +01:00
Jason2866
db96993e50
Update Tasmota_build_devel.yml 2025-02-04 20:01:47 +01:00
Jason2866
35a27d4541
oh my, what a endless story mess 2025-02-04 19:12:20 +01:00
Jason2866
f727013373 Solidified Code updated 2025-02-04 18:10:24 +00:00
Jason2866
d54dfa6bc4
Let's try if solidified code is back at correct place! 2025-02-04 19:07:30 +01:00
Jason2866
a07973e866
so ugly with new GH Actions up / download artifact 2025-02-04 19:02:39 +01:00
Jason2866
23ae0db9a8
Delete lib/libesp32/berry_tasmota/src/berry_tasmota directory 2025-02-04 18:29:49 +01:00
Jason2866
89b1df6a81
Delete lib/libesp32/berry_matter/src/berry_matter directory 2025-02-04 18:29:12 +01:00
Jason2866
117c1f68b7
Delete lib/libesp32/berry_animate/src/berry_animate directory 2025-02-04 18:28:23 +01:00
Jason2866
1988cd620d
Delete lib/libesp32/berry/berry_header directory 2025-02-04 18:27:55 +01:00
Jason2866
470065e36b
Delete lib/libesp32_lvgl/lv_haspmota/src/berry_haspmota directory 2025-02-04 18:26:57 +01:00
Jason2866
d94e680b51
Delete lib/libesp32_lvgl/lv_binding_berry/src/berry_lvgl directory 2025-02-04 18:26:20 +01:00
Jason2866
c7d4a2a104
switch off Berry solidified code pushing
until found the solution to push in correct folder
2025-02-04 18:25:56 +01:00
Jason2866
8bf10f0b9a Solidified Code updated 2025-02-04 17:22:01 +00:00
Jason2866
ed52e711a9
Delete lib/libesp32_lvgl/lv_haspmota/src/berry_haspmota directory 2025-02-04 18:21:03 +01:00
Jason2866
6ffb783321 Solidified Code updated 2025-02-04 17:20:53 +00:00
Jason2866
c4d2f010ef
Delete lib/libesp32_lvgl/lv_binding_berry/src/berry_lvgl directory 2025-02-04 18:20:16 +01:00
Jason2866
1c0327e2c1 Solidified Code updated 2025-02-04 17:16:32 +00:00
Jason2866
63845ad3e8
Delete lib/libesp32_lvgl/lv_haspmota/src/solidify/berry_haspmota directory 2025-02-04 18:15:48 +01:00
Jason2866
268a7267ac
Delete lib/libesp32_lvgl/lv_haspmota/src/berry_haspmota directory 2025-02-04 18:15:37 +01:00
Jason2866
a9c39fe098
Delete lib/libesp32_lvgl/lv_binding_berry/src/solidify/berry_lvgl directory 2025-02-04 18:15:09 +01:00
Jason2866
ea584f60c8
Delete lib/libesp32_lvgl/lv_binding_berry/src/berry_lvgl directory 2025-02-04 18:14:38 +01:00
Jason2866
2c0172d7d5 Solidified Code updated 2025-02-04 17:14:14 +00:00
Jason2866
94e2a91bbd
Delete lib/libesp32/berry_animate/src/berry_animate directory 2025-02-04 18:13:35 +01:00
Jason2866
dcc407889a
Delete lib/libesp32/berry_matter/src/berry_matter directory 2025-02-04 18:12:59 +01:00
Jason2866
97cf0a4baa
Delete lib/libesp32/berry_tasmota/src/berry_tasmota directory 2025-02-04 18:12:18 +01:00
Jason2866
6421d6b1ab
Delete lib/libesp32/berry_tasmota/src/solidify/berry_tasmota directory 2025-02-04 18:08:45 +01:00
Jason2866
b02ac268ad Solidified Code updated 2025-02-04 17:08:36 +00:00
Jason2866
2ac886a7f8
Delete lib/libesp32/berry_matter/src/solidify/berry_matter directory 2025-02-04 18:07:50 +01:00
Jason2866
8f641238b6
Delete lib/libesp32/berry_animate/src/solidify/berry_animate directory 2025-02-04 18:07:03 +01:00
Jason2866
2c8c5ae6b9
Update Tasmota_build_devel.yml 2025-02-04 18:06:20 +01:00
Jason2866
892e29f599
adopt the release workflow to the changed GH actions 2025-02-04 15:27:38 +01:00
arendst
a9996ecc40 Solidified Code updated 2025-02-04 14:14:42 +00:00
Christian Baars
9be9bb8af3
faster 8266 builds, ignore audio libs (#22942) 2025-02-04 15:12:51 +01:00
arendst
518df07ba1 Solidified Code updated 2025-02-04 14:07:48 +00:00
Theo Arends
c9cd6aae1d Bump version v14.4.1.4
- Formatter `%_U` for `ext_snprintf_P()` to print uint64_t variable as decimal equivalent to `%llu`
- Support for RC-switch decoding of 64-bit received data
2025-02-04 15:07:03 +01:00
Jason2866
ab9ad562cb Solidified Code updated 2025-02-04 13:39:19 +00:00
Jason2866
0b95779947
Move safeboot files in folder "firmware/firmware" 2025-02-04 14:37:41 +01:00
Jason2866
0ba224bf9a Solidified Code updated 2025-02-04 11:22:34 +00:00
Jason2866
427db230fc
Platform 2025.02.30 Tasmota Arduino Core 3.1.1.250203 based on IDF 5.3.2.250120 (#22943) 2025-02-04 12:21:45 +01:00
Jason2866
670d7bd8eb Solidified Code updated 2025-02-03 15:43:23 +00:00
Jason2866
cba8723c59
Gh: * fix download berry artifacts 2025-02-03 16:41:54 +01:00
Jason2866
c773a95ff7
* fix language image artifact upload 2025-02-03 16:29:21 +01:00
Jason2866
35e2d43191
Next try to fix GH actions syntax 2025-02-03 16:19:16 +01:00
Jason2866
8a0e2d0604
* fix yml action syntax 2025-02-03 16:08:21 +01:00
Jason2866
66a1f04414
fix compile 2025-02-03 14:29:20 +01:00
Jason2866
0c898b8d75
Gh fix part 2 (#22928)
* fix language artifact upload
2025-02-03 13:51:04 +01:00
Jason2866
299f983610
GH actions changes part 1 (#22927) 2025-02-03 13:40:58 +01:00
Christian Baars
aaa49f84ab
fix 8266 builds, add missing guards (#22924) 2025-02-03 11:23:11 +01:00
Christian Baars
def7ede895
add opus/webm encoding (#22923) 2025-02-02 21:49:11 +01:00
Theo Arends
e8ca96008f Add #define FIX_JSON_HEXADECIMAL to change JSON hexadecimal value "FF5F78" into "0xFF5F78" (#22919) 2025-02-02 16:08:50 +01:00
Theo Arends
943a0b1e6c Update changelogs 2025-02-01 17:45:10 +01:00
s-hadinger
0bc319acb5
Berry 'tasmota.settings' entries for PixelType (#22912) 2025-01-31 22:07:44 +01:00
s-hadinger
d72ec454c0
LVGL add 'lv.set_paint_cb()' to register a callback when screen is refreshed (#22909) 2025-01-31 12:55:58 +01:00
s-hadinger
0288157fdb
Berry callback now passes 5 arguments instead of 4 (in line with documentation) (#22908) 2025-01-31 12:20:52 +01:00
bovirus
7dd6b999ca
Italian language update (#22907) 2025-01-31 10:54:55 +01:00
Jeroen Vermeulen
34b173e953
Added C8-CO2-5K CO2 Sensor (#22905)
* Added the C8-CO2-5K CO2 sensor.

* Small improvements

* Renamed one var with incorrect name.
2025-01-31 09:34:55 +01:00
Theo Arends
9d963ce599 Update heatfan.be 2025-01-30 15:09:33 +01:00
Theo Arends
f4bc628940 Add Berry example for HeatFan WiFi Controller 2025-01-30 13:56:05 +01:00
s-hadinger
0dcd38186f
Berry 'tasmota.add_rule_once' and auto-remove rules with same pattern and id (#22900) 2025-01-29 22:48:44 +01:00
s-hadinger
9bb7b7913a
Berry driver for PN532 NFC/Mifare reader (#22899) 2025-01-29 21:48:30 +01:00
s-hadinger
60570dec76
HASPmota support for 'buttonmatrix' events (#22898) 2025-01-29 21:34:56 +01:00
Theo Arends
95e93b8f33 Add berry heatfan 2025-01-29 16:25:38 +01:00
Norbert
9613004bb4
Fix typo (#22890) 2025-01-27 15:54:03 +01:00
Theo Arends
b167955e87 Change GPIOViewer from v1.6.0 to v1.6.1 (No functional change) 2025-01-26 15:48:44 +01:00
Theo Arends
18d99daa72 Update xdrv_73_8_lorawan_bridge.ino 2025-01-26 15:31:26 +01:00
Theo Arends
4d9dd0aa3f Fix LoraWan manufacturer decoding (#22880) 2025-01-26 15:26:20 +01:00
Theo Arends
53dee5b002 Add GPS driver select baudrate using GPIO GPS_RX1 (9600bps), GPS_RX2 (19200bps) or GPS_RX3 (38400bps) (#22869) 2025-01-25 14:15:11 +01:00
s-hadinger
1065db5831
LVLG/HASPmota add color names from OpenHASP (#22879) 2025-01-25 13:59:26 +01:00
s-hadinger
0471f0f3c5
Berry driver for AXP2102 and M5CoreS3 (#22878) 2025-01-25 11:17:43 +01:00
s-hadinger
beb967ccd4
Command 'PixelType' to change the WS2812 color order and channel number (#22876) 2025-01-24 21:21:35 +01:00
Theo Arends
a91771e0cf Change Berry gpio.pin_mode frees PWM on pin 2025-01-24 16:33:12 +01:00
Theo Arends
5cbe5fe9e4 update changelogs 2025-01-23 10:35:54 +01:00
s-hadinger
b253b344c2
Berry tasmota.global.tele_period and tasmota.settings.tele_period (#22865) 2025-01-22 18:13:48 +01:00
Theo Arends
fa4f2123cf Refresh analog.ino 2025-01-22 17:24:43 +01:00
Theo Arends
9f3f234ac9 Update changelogs 2025-01-22 15:26:37 +01:00
s-hadinger
4b69d30a5f
Display template for Waveshare ESP32C6 LCD 1.47 (#22863) 2025-01-22 11:23:20 +01:00
Giuliano Zaro
cd0743c6ed
Remove user ca headers (#22850)
Since local CA files are user made files add them to gitignore (as already done for user_config_override.h)
2025-01-19 20:48:49 +01:00
Theo Arends
ed1c6e2d9e Update changelogs 2025-01-18 16:30:40 +01:00
s-hadinger
a7ee6054b5
Berry 'serial.read()' read only 'n' bytes (#22835) 2025-01-17 22:26:46 +01:00
Jason2866
a49e924b53
Platform 2025.01.31 Tasmota Arduino Core 3.1.1.250109 based on IDF 5.3.2.250106 (#22832) 2025-01-17 17:19:32 +01:00
TheHexaMaster
ebbef97cde
DS3231 bus2 support (#22824)
* DS3231 bus2 support

Added BUS2 suport for DS3231. Tested on ESP32 S3

* Update xdrv_56_rtc_chips.ino

Typo mistake
2025-01-17 11:07:37 +01:00
Theo Arends
3068a48d90 GPIOViewer from v1.5.9 to v1.6.0 (No functional change) 2025-01-16 16:47:16 +01:00
anishsane
5ac1fdb8fe
Added "cam":1 in the discovery message, so that we can create a home assistant camera (#22818)
* Added "cam":1 in the discovery message, so that we can create a home assistant camera.

* Update tasmota/tasmota_xdrv_driver/xdrv_12_discovery.ino

Co-authored-by: Erik Kunze <eku@users.noreply.github.com>

* Rearrange the newly added field by size, for better packing.

---------

Co-authored-by: Erik Kunze <eku@users.noreply.github.com>
2025-01-16 16:40:37 +01:00
Theo Arends
866ffc8967 Fixed Sonoff SPM PowerOnState overrules SSPMPowerOnState in mixed 4Relay setup with 4Relay version 1.0.0 2025-01-16 16:36:20 +01:00
Theo Arends
3efdfae845 TWAI reduce log message size 2025-01-16 15:22:51 +01:00
Theo Arends
6d7aab4662 Add command FileLog 10..14 to enable logging to filesystem using up to 16 log files of 100kB 2025-01-16 15:07:49 +01:00
s-hadinger
ec8cf6e2f0
Revert "Berry now removes any existing rule with same pattern and same id (o…" (#22823)
This reverts commit d176a1d65ba5dcd7d484915d8f9e09a2d26d218c.
2025-01-15 20:27:46 +01:00
s-hadinger
d176a1d65b
Berry now removes any existing rule with same pattern and same id (only if id is not nil) (#22822) 2025-01-15 19:19:43 +01:00
Theo Arends
ddcdc85520 Allow negative values for AdcParam/AdcGpio INPUT, TEMP and RANGE parameters (#22809) 2025-01-14 10:44:33 +01:00
Theo Arends
fc8485d91b Update changelogs 2025-01-13 16:38:55 +01:00
Theo Arends
e5e4c336b5 Add failsafe to FileLog 2025-01-13 16:19:59 +01:00
lryb
6b3719bd9e
Fix missing val and text on change event (#22808) 2025-01-12 19:31:24 +01:00
s-hadinger
d0ef026bb9
Reamove readline when compiling Berry 2025-01-12 18:37:43 +01:00
Christian Baars
03e8497211
I2S: add command i2sloop (#22807)
* revert upstream change of the library, fix memory leak by using stack again

* add i2sloop command
2025-01-12 17:16:20 +01:00
lengross
cf739e9522
Update xsns_60_GPS.ino (#22804)
Using FLOATSZ instead of 12 or 13 in lat/lon calls to dtostrfd
2025-01-12 08:31:38 +01:00
bovirus
e299035266
Italian language update (#22796) 2025-01-10 12:31:38 +01:00
Theo Arends
83b09f4de1 Bump version v14.4.1.3
- Update changelogs
2025-01-10 12:29:51 +01:00
Theo Arends
3365fd0d0b Add file logging 2025-01-10 12:15:24 +01:00
Christian Baars
ed21cfd487
add opus stream and file support for opus/aac (#22795) 2025-01-10 09:02:41 +01:00
s-hadinger
f42cb555c3
'Pixels' has backwards compatible arguments fixing #22755 (#22791)
* 'Pixels' has backwards compatible arguments fixing #22755

* Fix fallback height
2025-01-09 19:16:49 +01:00
Jason2866
e57b3e8b05
prepare for IDF 5.4 based Arduino (#22793) 2025-01-09 18:55:57 +01:00
Jason2866
76fb95b166
Platform 2025.01.30 Tasmota Arduino Core 3.1.1.250109 based on IDF 5.3.2.250106 (#22792) 2025-01-09 18:18:41 +01:00
Theo Arends
d6ce776c98 Update GPIO viewer 2025-01-09 12:01:01 +01:00
Theo Arends
dce79fd0c3 Update changelogs 2025-01-09 11:56:31 +01:00
s-hadinger
d3da193e39
WS2812 real-time Leds panel as Berry app (#22788) 2025-01-08 22:53:31 +01:00
Christian Baars
b73f50be6b
I2S: AAC support for web radio (#22787)
* I2S: AAC decoding support for web radio

* optimize AAC-lib for size
2025-01-08 21:35:42 +01:00
nikito7
1fc6f5c707
Allow to change INFLUXDB_INITIAL (#22783) 2025-01-07 22:00:39 +01:00
Theo Arends
fe2f4d031f Add timeout handling for RG15 (#22768) 2025-01-06 16:14:47 +01:00
mrkev-gh
b472e821cf
Use 75% of the buffer for speeds higher than 115200 (#22774)
Higher speeds need larger buffer. Processing takes longer, so let's put the threshold at
75% of the buffer size to have some headroom. E.g. for 1Mbit with 2.5KB buffer 2048 characters
would be roughly still around 20ms, and reserve additional 512 chars / 5ms to handle the
buffer after the threshold is reached

Co-authored-by: mrkev-gh <mrkev-gh@users.noreply.github.com>
2025-01-06 11:34:06 +01:00
Christian Baars
17ab5a5e83
fix missing button when turning on BLE (#22770) 2025-01-05 19:14:59 +01:00
Theo Arends
2263305bee Add berry TWAI example 2025-01-05 15:17:43 +01:00
Theo Arends
0d0b9de474 Update changelogs 2025-01-05 13:47:29 +01:00
s-hadinger
77d98868bf
Berry add 'bytes().appendhex()' (#22767) 2025-01-05 13:12:39 +01:00
s-hadinger
a5610eea09
Berry async_webserver improvement (#22766) 2025-01-04 19:17:13 +01:00
s-hadinger
bd7e47139c
Berry add light_pixels values to 'tasmota.settings' (#22762)
* Berry add light_pixels values to 'tasmota.settings'

* fix compilation
2025-01-04 12:24:38 +01:00
s-hadinger
c084719b0e
Berry allow 'bytes().append(nil)' (#22758) 2025-01-03 15:14:29 +01:00
Theo Arends
124f55ca70 Update changelogs 2025-01-03 10:37:18 +01:00
s-hadinger
50f0f8a651
Expand 'Pixels' with reverse, height and alternate (#22755) 2025-01-03 08:24:49 +01:00
s-hadinger
64a2fe8aee
TasmotaLED change dynamically the number of pixels (#22754)
* TasmotaLED change dynamically the number of pixels

* fix compilation
2025-01-02 22:30:19 +01:00
Norbert
ed7b58291a
Fix rule example as part of the comment. (#22753)
Update xsns_90_hrg15.ino
2025-01-02 20:51:52 +01:00
Theo Arends
aafe528682 Enable ESP32 TWAI in default binary 2025-01-02 12:44:49 +01:00
Theo Arends
d5d757fd3d Fix shutter discovery message regression from v14.4.1 (#22730) 2025-01-02 12:13:06 +01:00
s-hadinger
b5c326d772
Berry Leds update comments (#22748) 2025-01-02 10:44:39 +01:00
Theo Arends
884e795dff Fix TWAI extended identifier support 2025-01-01 15:48:02 +01:00
Theo Arends
8fa33ff4da Update changelogs 2025-01-01 14:33:05 +01:00
Mark Ruys
a2752bf500
Support S88 sensor (#22733)
* Support S88 sensor

Also:
- More stable model detection
- More robust against errors
- Better logging

* Support S88
2025-01-01 14:26:29 +01:00
anishsane
01154e9497
Add Webcam stats as sensors. (Can be used in home assistant.) (#22744) 2025-01-01 14:21:48 +01:00
Theo Arends
1a482364bc Add support for ESP32 Two-Wire Automotive Interface (TWAI) or Controller Area Network (CAN) busses
- Bump version V14.4.1.2
2025-01-01 14:14:23 +01:00
Ryan Castellucci
5f95b33220
reduce false positive chirp sensor detection (#22736) 2024-12-30 10:21:11 +01:00
Ryan Castellucci
dc531de02b
auto compress updated html (#22738) 2024-12-29 22:27:10 +01:00
Ryan Castellucci
a1aef6b39f
improved zopfli compression (#22737) 2024-12-29 20:47:12 +01:00
Theo Arends
02225ea7c4 Refactor TWAI driver 2024-12-29 17:07:05 +01:00
Theo Arends
2d2c732e2e Create xdrv_91_esp32_twai.ino 2024-12-28 17:46:15 +01:00
Theo Arends
9fb8065fac Update changelogs 2024-12-28 14:37:20 +01:00
TheHexaMaster
1ad89ccb3e
PCF85063 RTC Chip Support (#22727)
* Create ST7701_480x480_WS_4inch.ini

Display driver for 4inch display with ST7701 driver and GT911 touch driver including correct pinout and correct init process trought SPI. Used in WaveShare ESP32-S3-4inch display board.

* Update xdrv_56_rtc_chips.ino

Added support for PCF85063 RTC Chip.

* Update my_user_config.h

Added PCF85063 RTC support

* Update I2CDEVICES.md

Added PCF85063 RTC support
2024-12-28 14:30:16 +01:00
s-hadinger
de3a7f3909 Solidified Code updated 2024-12-27 17:10:34 +00:00
s-hadinger
17924392fa
Berry leds improve reuse of buffer (#22726) 2024-12-27 18:00:25 +01:00
s-hadinger
f4d0606d06
Berry fix typo (#22725) 2024-12-27 17:56:39 +01:00
Theo Arends
6d5a33772c Update changelogs 2024-12-27 16:09:03 +01:00
s-hadinger
d1a7d70ca0
Berry driver for M5Stack 8encoder (#22724) 2024-12-27 15:36:18 +01:00
s-hadinger
7f8f61423a
Berry 'tasmota.int(v, min, max)' function fix behavior (#22723)
* Berry 'tasmota.int(v, min, max)' function fix behavior

* fix compilation
2024-12-27 14:34:51 +01:00
s-hadinger
b729886a16
Berry 'tasmota.int(v, min, max)' function (#22721) 2024-12-27 11:33:52 +01:00
bovirus
4d3a780eb1
Update Italian language (#22717) 2024-12-26 16:20:49 +01:00
s-hadinger
64f0acb0c5 Solidified Code updated 2024-12-26 13:34:21 +00:00
s-hadinger
2143082aa4
Berry rename axp drivers (#22718)
* Berry rename axp drivers

* fix compilation
2024-12-26 14:33:47 +01:00
Theo Arends
1d244fcd28 Update changelogs 2024-12-25 14:05:18 +01:00
s-hadinger
02ae53cec5
Berry add unicode encoding to string parsing (#22713) 2024-12-24 18:03:21 +01:00
Theo Arends
94f3744235 Prep TWAI support 2024-12-24 12:06:50 +01:00
Theo Arends
8a37df10c6 Update changelogs 2024-12-24 11:43:46 +01:00
s-hadinger
2024bf88ac
Berry bit-shift operators to 'int64' (#22709) 2024-12-24 09:08:10 +01:00
s-hadinger
fc3ad45836
Matter fix air quality (#22708)
* HASPmota support for

* Matter fix Air Quality
2024-12-23 18:48:54 +01:00
s-hadinger
4fd3d9465c
HASPmota support for (#22707) 2024-12-23 12:35:06 +01:00
Theo Arends
3412761881 Postpone save_data during light animation when fade is Off 2024-12-22 15:29:30 +01:00
s-hadinger
3457d66d1e
LVGL updated (#22699) 2024-12-22 10:58:53 +01:00
s-hadinger
3b48a1c16a
HASPmota add 'tag' attribute for free-form JSON (#22698) 2024-12-21 23:16:26 +01:00
s-hadinger
27e85809b5
HASPmota use 'roboto.ttf' for automatic sizing of default font (#22697) 2024-12-21 22:19:17 +01:00
Christian Baars
f3fcbea6d1
no assertion when adc_config fails (#22696) 2024-12-21 18:38:06 +01:00
s-hadinger
f59c1675eb Solidified Code updated 2024-12-21 17:37:36 +00:00
Christian Baars
6745bc1b48
add scroll to Leds_matrix (#22693) 2024-12-21 18:36:43 +01:00
s-hadinger
9f3c7859d7
LVGL use smaller robotocondensed TTF font (#22694)
* LVGL use smaller robotocondensed TTF font

* update license
2024-12-21 14:26:54 +01:00
Theo Arends
52d4e84b39 Change GPIOViewer from v1.5.6 to v1.5.8
- No code change
2024-12-21 13:04:57 +01:00
Theo Arends
8311bff7ee Fix Webcam compilation with define USE_WEBCAM but without define ENABLE_RTSPSERVER (#22686) 2024-12-20 11:07:52 +01:00
s-hadinger
fde529fac4
Berry fix walrus operator (#22685) 2024-12-19 21:46:16 +01:00
Theo Arends
af724a6149 Merge branch 'development' of https://github.com/arendst/Tasmota into development 2024-12-19 17:57:51 +01:00
Theo Arends
0d9ce6de12 Update changelogs 2024-12-19 17:57:39 +01:00
s-hadinger
df79533611 Solidified Code updated 2024-12-19 16:55:11 +00:00
s-hadinger
e4ff66192f
Berry Zigbee fix attributes (#22684) 2024-12-19 17:48:35 +01:00
md5sum-as
9b6dc1f0f1
my_user_config add info for HLK-LD2410 HLK-LD2410S and remove trailing spaces (#22670)
* my_user_config add info for HLK-LD2410 HLK-LD2410S

* Update tasmota/my_user_config.h

Co-authored-by: Erik Kunze <eku@users.noreply.github.com>

---------

Co-authored-by: a.spirenkov@vk.team <a.spirenkov@vk.team>
Co-authored-by: Erik Kunze <eku@users.noreply.github.com>
2024-12-19 16:41:42 +01:00
TheChatty
2d3a049e59
display.ini for ideaspark ESP32 module with 170x320 diplay (#22678) 2024-12-19 12:18:19 +01:00
s-hadinger
b7da75da30 Solidified Code updated 2024-12-18 21:50:00 +00:00
s-hadinger
db29cb7152
Berry animate.crenel primitive (#22673) 2024-12-18 22:43:08 +01:00
s-hadinger
97b375fd57
TLS fix ecdsa fingerprint 2024-12-16 22:31:01 +01:00
Theo Arends
2c3785c1c6 Add comments and some default defines 2024-12-16 14:57:16 +01:00
s-hadinger
69d3fc1003
TLS disable ECDSA for MQTT to ensure we don't break fingerprints after #22649 (#22656) 2024-12-15 19:43:51 +01:00
Theo Arends
90e0595b7f Change ESP32 disable PSRAM check (and on restart some relay toggles) with #define DISABLE_PSRAMCHECK (#21266) 2024-12-15 17:36:37 +01:00
Theo Arends
fba6a806ac Add command `SetOption163 1` to disable display of Device name in GUI header 2024-12-15 16:23:44 +01:00
Theo Arends
ef7b2404d4 Add command `SetOption163 1` to disable display of Device name in GUI header 2024-12-15 16:21:17 +01:00
Theo Arends
6468b6edcd Add command `SetOption163 1` to disable display of Device name in GUI header 2024-12-15 16:18:45 +01:00
Theo Arends
c40b707b76 Remove obsolete display stubs 2024-12-15 15:52:46 +01:00
Theo Arends
af3bb96a2a Bump version v14.4.1.1 2024-12-15 15:14:37 +01:00
Theo Arends
da7473e07c save a few bytes 2024-12-15 14:10:06 +01:00
Theo Arends
b0c505d171 Fix display model 2024-12-15 12:38:26 +01:00
Theo Arends
6fbf8c58f7 Fix GUI timing related divide by zero exception 2024-12-15 12:33:43 +01:00
Theo Arends
b3b9699782 Display related fixes
- CHange Display removed PWM control of backlight GPIO for universal display regression from v14.1.0
- Fix Display DisplayMode adds a display device while not configured
- Fix GUI intermittent exception on screen updates due to flash access
2024-12-15 00:32:51 +01:00
s-hadinger
615c6763f6
Tls ecdsa (#22649)
* TLS add support for ECDSA on ESP32

* Reduce size for ESP8266
2024-12-14 22:39:45 +01:00
Theo Arends
7cd0908c89 Update changelogs 2024-12-14 16:39:15 +01:00
Theo Arends
bd6e7d220d Add MCP23xxx ODR control over interrupt type 2024-12-14 15:41:59 +01:00
Ryan Castellucci
8d1b4094db
clean up remnents of old fingerprint algo (#22645) 2024-12-14 15:35:14 +01:00
s-hadinger
67ae7c2fe1
Berry make Leds animate calls reentrant (#22643) 2024-12-14 15:21:30 +01:00
Theo Arends
5294b99ba7 Fix MCP23xxx, PCF8574 and Shift595 power control when a display is configured regression from v14.3.0.7 2024-12-14 14:31:16 +01:00
Theo Arends
53e2fab34c Fix MCP23XXX driver open-drain interrupt 2024-12-13 17:20:36 +01:00
Theo Arends
ab5208d216 Refactor GUI 2024-12-13 15:06:14 +01:00
Theo Arends
f135f46990 Fix more GUI issues 2024-12-13 11:55:45 +01:00
Theo Arends
9650d0f1ef Fix GUI display power button regression from v14.3.0.5 (#15788) 2024-12-13 00:17:25 +01:00
s-hadinger
7834dbf6b6
Berry Leds fix and cleaning (#22640) 2024-12-12 20:55:29 +01:00
TheHexaMaster
1099babb16
Create ST7701_480x480_WS_4inch.ini (#22638)
Display driver for 4inch display with ST7701 driver and GT911 touch driver including correct pinout and correct init process trought SPI. Used in WaveShare ESP32-S3-4inch display board.
2024-12-12 18:37:23 +01:00
sfromis
3e3b568aeb
Update my_user_config.h WebColor (#22639)
Aligned comments for WebColor with the standard themes on the WebUI docs page, and replaced tabs by spaces for consistent formatting.
2024-12-12 18:28:12 +01:00
Theo Arends
620fade73c Fix ESP32 rules operation priority regression from v13.3.0.4 (#22636) 2024-12-12 15:34:43 +01:00
Christian Baars
6268066bac
make regex more flexible for different quotation marks (#22629) 2024-12-12 11:21:47 +01:00
Theo Arends
dc7cb05cab Add MCP23XXX_DRV control register IOCON in template (#22622) 2024-12-11 17:43:56 +01:00
Theo Arends
d08aafd3fb Update version 2024-12-11 11:11:20 +01:00
Theo Arends
ee3fbdf4e0 Bump version v14.4.0.1 2024-12-11 11:10:37 +01:00
Theo Arends
4008a4e5e6 Move debug message to debug_more 2024-12-10 16:36:22 +01:00
Theo Arends
3c51793d5c Reduce stack usage 2024-12-10 11:39:37 +01:00
s-hadinger
bdf880cf84
Improved auto-selection of LED hardware support (RMT, SPI) (#22618) 2024-12-09 23:22:52 +01:00
s-hadinger
c1834bd898
WS2812 remove waits for RMT and SPI (#22617) 2024-12-09 22:45:23 +01:00
s-hadinger
a12c934a4b
Rename Matter configuration menu (#22615) 2024-12-09 21:12:02 +01:00
Theo Arends
71dfae2d9d Fix ESP8266 Device Group exception due to lack of stack space (#22271) 2024-12-09 15:16:30 +01:00
Theo Arends
23e5a4dec2 Change RG-15 sensor name from RG-15 to RG15 (#22612) 2024-12-09 11:17:04 +01:00
SteWers
09f0b89ab0
Language improvements (#22607)
Some language improvements
2024-12-08 21:19:01 +01:00
Theo Arends
d6c1617fc5 Skip code not needed on single phase 2024-12-08 14:43:48 +01:00
s-hadinger
2969ee91a4 Solidified Code updated 2024-12-08 09:30:29 +00:00
s-hadinger
364fa21fc4
Haspmota fix chart color series 2024-12-08 10:29:45 +01:00
Theo Arends
ed520140a1 Add support for Sonoff POWCT Energy Export Active (#22596) 2024-12-07 22:44:45 +01:00
SteWers
523f803b06
Fix DE language (#22603)
* Fix DE language

* Update de_DE.h
2024-12-07 19:50:56 +01:00
Theo Arends
aeb965435e Fix ESP32 energy export calculation 2024-12-07 18:01:33 +01:00
Theo Arends
7df2c703a1 Merge branch 'development' of https://github.com/arendst/Tasmota into development 2024-12-07 15:09:11 +01:00
Theo Arends
54d28c9d35 Update changelogs 2024-12-07 15:08:57 +01:00
arendst
dd555a0641 Solidified Code updated 2024-12-07 13:58:23 +00:00
bovirus
0a2fa4ec41
Update Italian language (#22601) 2024-12-07 14:57:31 +01:00
Theo Arends
6e6305f5e9 Rename button Auto-configuration to Auto-Conf 2024-12-07 14:57:13 +01:00
Jason2866
57fc179709
Platform 2024.12.30 Tasmota Arduino Core 3.1.0.241206 based on IDF 5.3.2 (#22600)
* core 3.1.0.241206
* Enterprise support is now conditional in core
2024-12-07 14:30:04 +01:00
Theo Arends
3a62cc6050 Add udp.flush() to KNX receiver (#22242) 2024-12-07 12:38:14 +01:00
Theo Arends
789bbb8b97 Extent command Knx_Enabled with KNX restart functionality (#22242) 2024-12-06 17:40:05 +01:00
Theo Arends
4ffc53b465 Shorten menus and add submenu headers (#22592) 2024-12-06 17:02:44 +01:00
Jason2866
f341f8d35a
language (DE): shorten (Menü) Texts (#22594)
* language (DE): shorten (Menü) Texts

* KNX: einmalig -> eindeutig
2024-12-06 15:48:05 +01:00
gemu
9317e02f25
recode powerwall (#22589) 2024-12-05 15:42:20 +01:00
Theo Arends
b80cc6a3e6 Fix select list and possible input buffer overflow (#22405) 2024-12-05 13:31:14 +01:00
stefanbode
ccd76b26ed
Re-enable shutter report on teleperiod (#22586)
* Reactivate shutter report on teleperiod

* Reactivate shutter report on teleperiod
2024-12-04 11:43:51 +01:00
Theo Arends
f72769252e Fix KNX Scenes index change regression from v14.2.0.4 (#22405) 2024-12-04 10:52:00 +01:00
Theo Arends
6b753cff44 Fix ESP32 Shift595 relay click on restart 2024-12-03 17:15:14 +01:00
Theo Arends
570e2052d3 Fix compilation 2024-12-03 11:37:39 +01:00
Theo Arends
62e4bf1acd Add command SetOption162 1 to disable adding export energy to energy today (#22578) 2024-12-03 11:34:48 +01:00
Theo Arends
4046cd8ec0 Add show Active Power Total with any multi-phase energy monitoring (#22579) 2024-12-03 10:28:38 +01:00
Theo Arends
62d6a03335 Fix non-sequential shutter GUI display 2024-12-02 16:12:53 +01:00
Theo Arends
341cc87527 Update changelog 2024-12-02 12:15:46 +01:00
Felix Laevsky
ebff2d2d38
Explanation for BLEMinRssiLevel command added in the comments (#22550) 2024-12-02 12:11:05 +01:00
Christian Baars
baeaad7558
fix LED, C2 has no i2s (#22575) 2024-12-02 12:10:28 +01:00
Theo Arends
e2bae09ded Update changelogs 2024-12-01 15:41:11 +01:00
SteWers
0ea8889997
[SolaxX1] Energy calculation (#22568) 2024-12-01 13:54:11 +01:00
Theo Arends
e1fc36361e Update changelogs 2024-12-01 13:07:37 +01:00
Christian Baars
bed14174bc
add lp_core to Berry ULP module (#22567) 2024-11-30 19:01:12 +01:00
Theo Arends
fbb2c84f29 Template for Shelly 1PM Gen3 2024-11-30 16:52:57 +01:00
Theo Arends
a838ec09f8 Minor changes 2024-11-30 13:51:47 +01:00
Theo Arends
038e62b72c Small shutter refactors 2024-11-29 17:00:31 +01:00
Theo Arends
f176ede65d Update changelogs 2024-11-29 16:16:32 +01:00
SteWers
3316bc5e70
[Shutter] Fix PowerON (#22548)
* [Shutter] Fix PowerON

* [Shutter] Fix 2 PowerON

* [Shutter] Fix 3 PowerON

Integrate only when USE_SHUTTER is defined

* @SteWers [Shutter] Fix 4 PowerON

Fix compile error
2024-11-29 09:59:18 +01:00
s-hadinger
db0287e566
Replace NeoPixelBus with TasmotaLED on ESP32x (#22556)
* Replace NeoPixelBus with TasmotaLED on ESP32x

* update changelog
2024-11-27 22:11:57 +01:00
Theo Arends
8cb9345a97 Fix compilation 2024-11-27 15:05:43 +01:00
Theo Arends
e8d5e442bf Update xdrv_60_shift595.ino 2024-11-27 14:01:23 +01:00
Theo Arends
5a32df5e81 Fix Shift595 output offsets and restart relay toggles 2024-11-27 13:48:30 +01:00
Theo Arends
5dd132bb5f Update changelogs 2024-11-26 14:05:01 +01:00
Andy Knight
2322646773
Prevent active BLE operations with unencrypted MI-format beacons (#22453) 2024-11-26 11:28:55 +01:00
Barbudor
155dea98cd
Issue#22535 applying masking window to any power change (#22539)
* apply masking to any power change

* stupid typo

* rephrase
2024-11-25 10:56:35 +01:00
Jacek Ziółkowski
3ab87273e6
Shitf595 dynamic device count (#22543)
* Make max Shift595 device count dynamic

* Update xdrv_60_shift595.ino
2024-11-25 10:38:43 +01:00
Theo Arends
e397c11e70 Revert wifi delay 2024-11-25 10:33:34 +01:00
s-hadinger
2402f7cbd1
Berry simplify DAC support (#22546) 2024-11-24 23:30:24 +01:00
Felix Laevsky
3448e17317
Added 2 new filters: BLE filter by name and minimum RSSI (#22530) 2024-11-24 18:44:18 +01:00
Theo Arends
25f13e434f TasmotaClient discard GET_JSON timeout 2024-11-24 16:07:36 +01:00
Jason2866
b9414008df
Hybrid compile: take custom boards settings in account (#22542) 2024-11-23 17:23:10 +01:00
SteWers
3c703ac4d4
[Shutter] Fix UI inverted mode (#22538)
Fix UI for shutter in inverted mode
2024-11-23 16:05:55 +01:00
SteWers
f255233f90
[Energy] Fix for New Year's Day (#22536)
Fix rollover on New Year's Day
2024-11-23 16:05:15 +01:00
Emmanuel Ferdman
fb0666e6c8
Update CHANGELOG.md reference (#22534)
Signed-off-by: Emmanuel Ferdman <emmanuelferdman@gmail.com>
2024-11-23 08:46:25 +01:00
Theo Arends
4925e9c9a8 Fix IoTTimer power off in DisplayModes 1 and up 2024-11-22 22:17:26 +01:00
SteWers
16b6d353f4
[Energy] Fix hardware sensor and restore (#22528)
- Fix handling, when using hardware sensor for EnergytTotal (SO72)
- Fix restore values, when device is off over midnight and power supply is unstable while powering on at the next day
2024-11-22 21:01:31 +01:00
Theo Arends
bf872defab Fix use HTML escape on File System Edit File load (#22492) 2024-11-21 16:58:45 +01:00
Theo Arends
1e9c5ad40e Fix intermittent ESP32 serial lost on restart 2024-11-21 16:30:27 +01:00
Theo Arends
3c5cbade63 Restore iFan state text 2024-11-21 14:07:53 +01:00
Theo Arends
6d0467489a Add command SetOption161 1 to disable display of state text (#22515) 2024-11-21 12:13:14 +01:00
Theo Arends
fe658424b8 Fix date/time rotation without seconds 2024-11-20 14:49:15 +01:00
Theo Arends
ae7cba2f13 Add support for TM1640 based IoTTimer by Stefan Oskamp (#21376) 2024-11-20 14:31:21 +01:00
Theo Arends
3778f22d7b Fix wrong GUI Module and Template drop down list indexes regression 2024-11-18 22:53:07 +01:00
Theo Arends
320ad0e1d3 Fix ESP32 upgrade by file upload response based on file size (#22500) 2024-11-18 17:09:23 +01:00
Theo Arends
3114c75a1d Update changelogs 2024-11-18 16:05:42 +01:00
Christian Baars
873bd3f211
fix compilation with BLE 5 (#22506) 2024-11-17 20:50:45 +01:00
Jason2866
7615b3c8f7
Platform 2024.11.31 Tasmota Arduino Core 3.1.0.241117 based on IDF 5.3.1.241024 (#22504)
* Platform 2024.11.31
* add `ttls_phase2_type`
2024-11-17 18:36:54 +01:00
Theo Arends
f3bf8998ae Fax MCP23xxx and PCF8574 last device 2024-11-17 18:02:23 +01:00
Theo Arends
4e40bbf3b6 Bump version v14.3.0.7 - again
- ESP32 max number of supported switches/buttons/relays from 28 to 32
- ESP32 max number of interlocks from 14 to 16
2024-11-17 14:03:04 +01:00
Jason2866
099c68678a
prepare WPA Enterprise compile (#22497)
* prep for WPA eap
2024-11-17 13:15:36 +01:00
Theo Arends
6821293819 Revert "Bump version v14.3.0.7"
This reverts commit 14c0a42203d9664bd4aa4054ace500755d240e99.
2024-11-17 11:30:55 +01:00
Theo Arends
14c0a42203 Bump version v14.3.0.7
- ESP32 max number of supported switches/buttons/relays from 28 to 32
- ESP32 max number of interlocks from 14 to 16
2024-11-16 17:47:18 +01:00
Theo Arends
5de16c1cca Add settingsminimum 2024-11-16 15:02:01 +01:00
Theo Arends
de45fda781 Add minimum defaults in case of error 2024-11-16 14:44:18 +01:00
Jason2866
09c43fa729
fix compile when no core_version exists (#22494) 2024-11-15 20:44:16 +01:00
bovirus
d3df759514
Italian language update (#22493) 2024-11-15 20:32:33 +01:00
Grzegorz
0947860c83
Update pl_PL.h (#22491)
* Update pl_PL.h

Fix typo and gramma

* Update pl_PL.h
2024-11-15 17:57:22 +01:00
Theo Arends
996ea17fb6 prep support TM1640 2024-11-15 16:12:17 +01:00
Grzegorz
ef7cd80ed8
Update pl_PL.h (#22490)
* Update pl_PL.h

More PL translations

* Update pl_PL.h
2024-11-15 15:27:46 +01:00
Ville Skyttä
aeceace546
Add emulation radio and hidden file checkbox labels (#22432) 2024-11-15 15:23:57 +01:00
Theo Arends
1dff29f367 Update changelogs 2024-11-14 09:56:49 +01:00
Grzegorz
0dcfa74ef3
Update pl_PL.h (#22483) 2024-11-14 09:51:30 +01:00
s-hadinger
dd99642cf7
Prevent crashing when display.ini is missing end # (#22471) 2024-11-14 08:24:20 +01:00
Jason2866
b195bcd88d
use sdkconfig define CONFIG_ETH_ENABLED to check Ethernet availability (#22481) 2024-11-13 22:38:22 +01:00
vtHydroponics
551c919ae2
MS5837 pressure offset persistent between resets (#22476)
* Finalized gain/integration adjustment trees

* Fixed the bugs

* works but polishing code

* need to debug pressure in bmp

* updated temp to change via setoption8 command from tasmota

* sensor table working, value reporting working, need to update dependency on sensor duality

* working

* updated file name for ms5837 xsns file

* final working with renamed for current updates (128->116)

* resolved PR comments for extra spaces, xi2c_96

* removed extra spaces, added unit for inches across languages

* removed inches as a unit from language files

* pressure offset retained between resets
2024-11-13 16:23:45 +01:00
Jason2866
50b6f74295
Better check for existing Ethernet support in Arduino libs (#22473)
* use IDF var for eth check
2024-11-12 21:49:36 +01:00
Theo Arends
88810fc92c Increase OTA delays to allow GUI console updates 2024-11-12 16:57:41 +01:00
Theo Arends
0fb39b9bac Update changelogs 2024-11-12 16:40:59 +01:00
s-hadinger
77f9fb0783
Matter provisioning with matter.js controller (#22470) 2024-11-12 16:35:53 +01:00
Theo Arends
7dd1e2a028 Minor changes webserver and dali 2024-11-12 15:32:10 +01:00
Theo Arends
cf94ccf59c Bump version v14.3.0.6
- Add command ``WebColor20`` to control color of Button when Off
2024-11-11 22:44:18 +01:00
Jason2866
b903c6a843
enable Ethernet in all safeboot firmware (except c2) (#21983)
* enable Ethernet in all safeboot firmware (except c2)

* undef SPI for C2 in variant minimal
2024-11-11 18:18:19 +01:00
Theo Arends
5c3d450195 Merge branch 'development' of https://github.com/arendst/Tasmota into development 2024-11-11 17:33:02 +01:00
Theo Arends
331fd14268 Add Settings->ms5837_pressure_offset (#22466) 2024-11-11 17:32:50 +01:00
SteWers
bdc7e0a65b
[Solax X1] Increase receive buffer (#22467)
Increase receive buffer, because it was too small, when using Software Serial.
2024-11-11 17:27:37 +01:00
vtHydroponics
caa63f437c
MS5837 console calibration options and code cleanup (#22466)
* Finalized gain/integration adjustment trees

* Fixed the bugs

* works but polishing code

* need to debug pressure in bmp

* updated temp to change via setoption8 command from tasmota

* sensor table working, value reporting working, need to update dependency on sensor duality

* working

* updated file name for ms5837 xsns file

* final working with renamed for current updates (128->116)

* resolved PR comments for extra spaces, xi2c_96

* removed extra spaces, added unit for inches across languages

* removed inches as a unit from language files

* removed extra code, commented debug lines

* rebased with dev branch, fixed sensor116 command
2024-11-11 17:24:18 +01:00
Theo Arends
a766947724 Fix compilation 2024-11-11 17:22:38 +01:00
Theo Arends
043d80809b Fix shutter slider user control 2024-11-11 17:09:07 +01:00
Theo Arends
6c4e314adc Gui tuning 2024-11-11 16:26:07 +01:00
Theo Arends
a013c7e36d Fix compile warning 2024-11-11 16:05:03 +01:00
Theo Arends
08f99de2a5 Save 8k from ESP32 safeboot 2024-11-11 15:44:26 +01:00
Theo Arends
1b9d206dd8 save 28k for ESP32 safeboot 2024-11-11 15:23:21 +01:00
Theo Arends
0744bf7f2b Save 6k code from ESP32 safeboot 2024-11-11 15:17:22 +01:00
Theo Arends
0536cc87a0 Update changelogs 2024-11-11 13:39:50 +01:00
Theo Arends
c86f74d456 Bump version v14.3.0.5
- Redesign GUI adding feedback to buttons, shutters and lights
2024-11-11 13:34:09 +01:00
Theo Arends
b40e2ec8e9 Merge branch 'dev_gui_feedback' into development 2024-11-11 13:20:47 +01:00
s-hadinger
343d9b9758
Remove logging from safeboot (#22464)
* Remove logging from safeboot

* Remove logs from Status 5
2024-11-11 10:39:18 +01:00
Christian Baars
448ca1c109
MI32 legacy: add config operations (#22458) 2024-11-10 23:23:37 +01:00
Theo Arends
5f9912665a Clean Tuya code 2024-11-10 17:40:03 +01:00
Theo Arends
fd7554d96e Reduce minimal by 1k 2024-11-10 16:28:25 +01:00
Theo Arends
a97aeeedb7 Add Tuya support 2024-11-10 12:46:56 +01:00
Theo Arends
7e3f093dc9 Change GUI ajax updating buttons/sliders/shutters 2024-11-10 11:46:52 +01:00
Theo Arends
669c6e49ea Update changelogs 2024-11-10 11:18:18 +01:00
s-hadinger
a5c33eba5e
Berry drivers for PCA9535 (generic and in SenseCAP D1) (#22451) 2024-11-09 19:29:29 +01:00
Theo Arends
3bc90175db Fix ESP32, ESP32-S2 and ESP32-S3 re-enable touch buttons (#22446) 2024-11-09 15:24:40 +01:00
Theo Arends
a836e841ad Re-enable shuttershow regression from last PR 2024-11-08 23:53:29 +01:00
Theo Arends
c2091d7082 Fix FUNC_COMMAND linked list command buffer corruption by shutter driver 2024-11-08 23:26:46 +01:00
s-hadinger
7c82d3a7ae
Berry add I2C read16/write16 supporting Little Endian (#22448) 2024-11-08 20:22:53 +01:00
Theo Arends
df293dad82 Add support MS5837 2024-11-08 18:16:26 +01:00
vtHydroponics
a35bb5a5c9
MS5837 functionality with BMP280 optional dependency (#22376)
* Finalized gain/integration adjustment trees

* Fixed the bugs

* works but polishing code

* need to debug pressure in bmp

* updated temp to change via setoption8 command from tasmota

* sensor table working, value reporting working, need to update dependency on sensor duality

* working

* updated file name for ms5837 xsns file

* final working with renamed for current updates (128->116)

* resolved PR comments for extra spaces, xi2c_96

* removed extra spaces, added unit for inches across languages

* added "Water depth" for languages

* removed inches as a unit from language files

* switched to centimeter units for SI consistency in Tasmota

* all variables showing in console and table; need to adjust offsets

* cm conversion properly reporting

* Sensor116 in console calibrates the sensor's pressure_offset variable

* removed pressure offset debugging lines

* removed unecessary commented items from old code
2024-11-08 17:45:37 +01:00
Theo Arends
19e15e21aa Update changelogs 2024-11-08 17:38:31 +01:00
AIexBV
feff388f03
Enable deep sleep (standby) for VL53L0X (#22441)
* Enable deep sleep (standby) for VL53L0X

* Some renamings
2024-11-08 17:21:05 +01:00
Ville Skyttä
2f3808adc9
Use standard var spelling for reactive power unit (#22435)
- https://en.wikipedia.org/wiki/Volt-ampere#Volt-ampere_reactive
- https://engineering.electrical-equipment.org/energy-efficiency-kvar/kvar-or-kvar.html
2024-11-08 17:15:03 +01:00
SteWers
5fac24a5f6
[Solax X1] Optimize serial receive (#22440)
Serial receive: More stable, more simple and less code
2024-11-08 17:04:27 +01:00
Ville Skyttä
245da3918a
Fix display dump option in script version response (#22434) 2024-11-08 16:57:47 +01:00
Grzegorz
ff0d003a24
Fix Standby Stage for MiElHVAC (#22430)
* Add prohibit function for MiElHVAC

Add Prohibit functions:
* Power
* Temperature
* Mode
 and all combinations of this functions
Updated VaneV names for better identify

* Fixed Compressor and Operation for MiElHVAC

Changed Widevane position name from ISEE to AUTO sam as in MELCLoud

* Revert "Fixed Compressor and Operation for MiElHVAC"

This reverts commit f0973c84d4915e776f715c0749a593efc6f55953.

* New feature for MiElHVAC

* Added Compressor map
* Added Operation Power in Watts
* Added Operation Energy in kWh
* Changed Widevane position name from ISEE to AUTO, displays sam as in
* Changed all map value to lover case MELCloud

* New feature for MiElHVAC

* Add device operation time in minutes

* New feature Outdoor Temperature for MiElHVAC

* Add Outdoor Temperature

* New feature Compressor Frequency for MiElHVAC

* Added Outdoor Temperature
* Renamed internal properties due typo operating and oprating to operation

* New feature Auto Clear Remote Temp for MiElHVAC

* This PR add auto clear remote temperature function
* This funcion is call on first run and after 10 sec the remote temperature stop refresh its value
* Send manually Clear command is also available

* change function name, small corrections

* added auto clear time configurable using cmnd

* Improvements to remote temp, auto clear time for MiElHVAC

* Added min = 1000ms and max 600000ms limit to remotetemp auto clear time function
* Changed function name to use sam format as other
* Added RemoteTemperatureSensor to the sensor

* more improvements to auto clear time

* Changed RemoteTemperatureSensor to RemoteTemperatureSensorState
* Added RemoteTemperatureSensorAutoClearTime to the sensor output

* New feature Timers for MiElHVAC

* Added Timers to the sensor output:
  * TimerMode - none, on, off, on_and_off
  * TimerOn - display time to ON
  * TimerOnRemaining - display remaining time to ON
  * TimerOff - display time to OFF
    * TimerOffRemaining - display remaining time to OFF

* New feature for Stage and more for MiElHVAC

* Added to sensor output:
  * Added PrerunStage - on/off, report compressor prepare stage before start working
  * FanStage - off, quiet, 1, 2, 3 ,4 ,5, report current fan stage
  * ModeStage - manual(heat, dry, cool, fan_only, heat_isee, dry_isee, cool_isee), auto_fan, auto_heat, auto_cool, report current mode
  * Renamed Bytes to Settings for raw data

* Renamed const UPDATE to SETTINGS
* Moved SETTINGS const from miel_hvac_msg_settings to miel_hvac_data_settings
* Renamed some functions name to get better code readable

* Removed some empty lines
* Refactor some structure of code to make more clean and better readable

* remove duplicate settings request

* New features for MiElHVAC

* Changed PrerunStage to OperationStage
* Updated map for OperationStage
* Updated map for ModeStage
* Changed map fan_only to fan
* Cleanup

* Fix Standby Stage for MiElHVAC
2024-11-08 16:52:04 +01:00
gemu
4f90c3764a
allow knx for scripts (#22429) 2024-11-08 16:51:39 +01:00
Theo Arends
98cf7f33f7 Update changelogs 2024-11-08 16:50:04 +01:00
s-hadinger
2fd1c0b7fb
Support for I2C over Serial (#22444) 2024-11-07 21:54:16 +01:00
s-hadinger
a571ca1db5
SCD40 ready for virtual I2C (#22443) 2024-11-07 21:21:01 +01:00
s-hadinger
94c45689a6
Prepare for virtual I2C (#22427) 2024-11-04 22:31:50 +01:00
s-hadinger
57d8bea761
ESP32S3 UART output mode for Tx (#22426) 2024-11-04 22:23:46 +01:00
Norbert
490c48eefe
Add #ifndef for MCP23XXX_ADDR_START and MCP23XXX_ADDR_END (#22424)
As discussed in #22410.
2024-11-04 08:50:20 +01:00
Grzegorz
56243ef720
New features for MiElHVAC (#22423)
* Add prohibit function for MiElHVAC

Add Prohibit functions:
* Power
* Temperature
* Mode
 and all combinations of this functions
Updated VaneV names for better identify

* Fixed Compressor and Operation for MiElHVAC

Changed Widevane position name from ISEE to AUTO sam as in MELCLoud

* Revert "Fixed Compressor and Operation for MiElHVAC"

This reverts commit f0973c84d4915e776f715c0749a593efc6f55953.

* New feature for MiElHVAC

* Added Compressor map
* Added Operation Power in Watts
* Added Operation Energy in kWh
* Changed Widevane position name from ISEE to AUTO, displays sam as in
* Changed all map value to lover case MELCloud

* New feature for MiElHVAC

* Add device operation time in minutes

* New feature Outdoor Temperature for MiElHVAC

* Add Outdoor Temperature

* New feature Compressor Frequency for MiElHVAC

* Added Outdoor Temperature
* Renamed internal properties due typo operating and oprating to operation

* New feature Auto Clear Remote Temp for MiElHVAC

* This PR add auto clear remote temperature function
* This funcion is call on first run and after 10 sec the remote temperature stop refresh its value
* Send manually Clear command is also available

* change function name, small corrections

* added auto clear time configurable using cmnd

* Improvements to remote temp, auto clear time for MiElHVAC

* Added min = 1000ms and max 600000ms limit to remotetemp auto clear time function
* Changed function name to use sam format as other
* Added RemoteTemperatureSensor to the sensor

* more improvements to auto clear time

* Changed RemoteTemperatureSensor to RemoteTemperatureSensorState
* Added RemoteTemperatureSensorAutoClearTime to the sensor output

* New feature Timers for MiElHVAC

* Added Timers to the sensor output:
  * TimerMode - none, on, off, on_and_off
  * TimerOn - display time to ON
  * TimerOnRemaining - display remaining time to ON
  * TimerOff - display time to OFF
    * TimerOffRemaining - display remaining time to OFF

* New feature for Stage and more for MiElHVAC

* Added to sensor output:
  * Added PrerunStage - on/off, report compressor prepare stage before start working
  * FanStage - off, quiet, 1, 2, 3 ,4 ,5, report current fan stage
  * ModeStage - manual(heat, dry, cool, fan_only, heat_isee, dry_isee, cool_isee), auto_fan, auto_heat, auto_cool, report current mode
  * Renamed Bytes to Settings for raw data

* Renamed const UPDATE to SETTINGS
* Moved SETTINGS const from miel_hvac_msg_settings to miel_hvac_data_settings
* Renamed some functions name to get better code readable

* Removed some empty lines
* Refactor some structure of code to make more clean and better readable

* remove duplicate settings request

* New features for MiElHVAC

* Changed PrerunStage to OperationStage
* Updated map for OperationStage
* Updated map for ModeStage
* Changed map fan_only to fan
* Cleanup
2024-11-03 21:31:35 +01:00
SteWers
133cca3fd5
[Solax X1] Finetuning (#22421) 2024-11-03 17:33:51 +01:00
Grzegorz
5aaeecdbe8
New features for MiElHVAC (#22395)
* Add prohibit function for MiElHVAC

Add Prohibit functions:
* Power
* Temperature
* Mode
 and all combinations of this functions
Updated VaneV names for better identify

* Fixed Compressor and Operation for MiElHVAC

Changed Widevane position name from ISEE to AUTO sam as in MELCLoud

* Revert "Fixed Compressor and Operation for MiElHVAC"

This reverts commit f0973c84d4915e776f715c0749a593efc6f55953.

* New feature for MiElHVAC

* Added Compressor map
* Added Operation Power in Watts
* Added Operation Energy in kWh
* Changed Widevane position name from ISEE to AUTO, displays sam as in
* Changed all map value to lover case MELCloud

* New feature for MiElHVAC

* Add device operation time in minutes

* New feature Outdoor Temperature for MiElHVAC

* Add Outdoor Temperature

* New feature Compressor Frequency for MiElHVAC

* Added Outdoor Temperature
* Renamed internal properties due typo operating and oprating to operation

* New feature Auto Clear Remote Temp for MiElHVAC

* This PR add auto clear remote temperature function
* This funcion is call on first run and after 10 sec the remote temperature stop refresh its value
* Send manually Clear command is also available

* change function name, small corrections

* added auto clear time configurable using cmnd

* Improvements to remote temp, auto clear time for MiElHVAC

* Added min = 1000ms and max 600000ms limit to remotetemp auto clear time function
* Changed function name to use sam format as other
* Added RemoteTemperatureSensor to the sensor

* more improvements to auto clear time

* Changed RemoteTemperatureSensor to RemoteTemperatureSensorState
* Added RemoteTemperatureSensorAutoClearTime to the sensor output

* New feature Timers for MiElHVAC

* Added Timers to the sensor output:
  * TimerMode - none, on, off, on_and_off
  * TimerOn - display time to ON
  * TimerOnRemaining - display remaining time to ON
  * TimerOff - display time to OFF
    * TimerOffRemaining - display remaining time to OFF

* New feature for Stage and more for MiElHVAC

* Added to sensor output:
  * Added PrerunStage - on/off, report compressor prepare stage before start working
  * FanStage - off, quiet, 1, 2, 3 ,4 ,5, report current fan stage
  * ModeStage - manual(heat, dry, cool, fan_only, heat_isee, dry_isee, cool_isee), auto_fan, auto_heat, auto_cool, report current mode
  * Renamed Bytes to Settings for raw data

* Renamed const UPDATE to SETTINGS
* Moved SETTINGS const from miel_hvac_msg_settings to miel_hvac_data_settings
* Renamed some functions name to get better code readable

* Removed some empty lines
* Refactor some structure of code to make more clean and better readable

* remove duplicate settings request
2024-11-03 10:40:46 +01:00
Theo Arends
8e34864ead Minor update HTML javascript and style 2024-11-02 15:42:54 +01:00
Theo Arends
2dc5c6e234 Enable DALI light control if other Tasmota light is enabled 2024-11-01 11:23:55 +01:00
Jason2866
66d69e09c9
add ESPmDNS to safeboot lib_ignore 2024-10-31 22:33:40 +01:00
bovirus
a463761090
Update Italian language (#22397) 2024-10-31 21:26:18 +01:00
Theo Arends
49d706f54c Add DALI command DaliGroupSliders 0..16 to show GUI group sliders with feedback disabling DaliLight 2024-10-31 17:01:36 +01:00
Theo Arends
deca4d9e06 Update changelogs 2024-10-31 10:49:21 +01:00
Theo Arends
789c990c19 Fix ESP8266 I2C 2024-10-31 10:41:18 +01:00
s-hadinger
5892fef63d
I2C over Serial, preliminary stub (#22388)
* I2C over Serial, preliminary stub

* Imporve initializer
2024-10-31 09:18:37 +01:00
s-hadinger
b89909991c
i2c_enabled refactored as array (#22387) 2024-10-30 22:23:13 +01:00
smcgann99
e30d88e013
Update antiburn.be (#22386)
Currently anitburn doesn't cover other objects if they are on lv.layer_top, moving it to lv.layer_sys fixes this issue.
2024-10-30 22:05:57 +01:00
s-hadinger
0ba0b8dada
ESP32 LVGL library from v9.2.0 to v9.2.2 (#22385) 2024-10-30 19:50:43 +01:00
Theo Arends
3f4b2331ee Bump version v14.3.0.3
- Change ESP32 Platform from 2024.10.30 to 2024.11.30, Framework (Arduino Core) from v3.1.0.241023 to v3.1.0.241030 and IDF to 5.3.1.241024 (#22384)
- Fix ESP32 Arduino Core IPv6 zones used by Matter (#22378)
2024-10-30 15:30:31 +01:00
Jason2866
79a7c71145
Tasmota Platform 2024.11.30 / Arduino 3.1.0.241030 / IDF 5.3.1.241024 (#22384)
* Platform 2024.11.30

* Update PULL_REQUEST_TEMPLATE.md
2024-10-30 13:31:56 +01:00
Theo Arends
ccfbdd50e0 Update changelogs 2024-10-29 17:27:14 +01:00
s-hadinger
2669cd35cf
Alexa Hue with multiple devices (#22383) 2024-10-29 17:21:35 +01:00
Theo Arends
2925836a9c Add command `SetOption161 1` to disable web page slider updates by commands
A long standing wish is fullfilled; GUI sliders can now be updated by commands and background runs.
2024-10-29 17:09:39 +01:00
Grzegorz
18bfda50ab
Improvements to remote temp, auto clear time for MiElHVAC (#22379)
* Add prohibit function for MiElHVAC

Add Prohibit functions:
* Power
* Temperature
* Mode
 and all combinations of this functions
Updated VaneV names for better identify

* Fixed Compressor and Operation for MiElHVAC

Changed Widevane position name from ISEE to AUTO sam as in MELCLoud

* Revert "Fixed Compressor and Operation for MiElHVAC"

This reverts commit f0973c84d4915e776f715c0749a593efc6f55953.

* New feature for MiElHVAC

* Added Compressor map
* Added Operation Power in Watts
* Added Operation Energy in kWh
* Changed Widevane position name from ISEE to AUTO, displays sam as in
* Changed all map value to lover case MELCloud

* New feature for MiElHVAC

* Add device operation time in minutes

* New feature Outdoor Temperature for MiElHVAC

* Add Outdoor Temperature

* New feature Compressor Frequency for MiElHVAC

* Added Outdoor Temperature
* Renamed internal properties due typo operating and oprating to operation

* New feature Auto Clear Remote Temp for MiElHVAC

* This PR add auto clear remote temperature function
* This funcion is call on first run and after 10 sec the remote temperature stop refresh its value
* Send manually Clear command is also available

* change function name, small corrections

* added auto clear time configurable using cmnd

* Improvements to remote temp, auto clear time for MiElHVAC

* Added min = 1000ms and max 600000ms limit to remotetemp auto clear time function
* Changed function name to use sam format as other
* Added RemoteTemperatureSensor to the sensor

* more improvements to auto clear time

* Changed RemoteTemperatureSensor to RemoteTemperatureSensorState
* Added RemoteTemperatureSensorAutoClearTime to the sensor output
2024-10-29 08:25:44 +01:00
Theo Arends
fc0dc5dfec Update changelogs 2024-10-28 14:12:44 +01:00
Grzegorz
27db263493
New feature Auto Clear Remote Temp for MiElHVAC (#22370)
* Add prohibit function for MiElHVAC

Add Prohibit functions:
* Power
* Temperature
* Mode
 and all combinations of this functions
Updated VaneV names for better identify

* Fixed Compressor and Operation for MiElHVAC

Changed Widevane position name from ISEE to AUTO sam as in MELCLoud

* Revert "Fixed Compressor and Operation for MiElHVAC"

This reverts commit f0973c84d4915e776f715c0749a593efc6f55953.

* New feature for MiElHVAC

* Added Compressor map
* Added Operation Power in Watts
* Added Operation Energy in kWh
* Changed Widevane position name from ISEE to AUTO, displays sam as in
* Changed all map value to lover case MELCloud

* New feature for MiElHVAC

* Add device operation time in minutes

* New feature Outdoor Temperature for MiElHVAC

* Add Outdoor Temperature

* New feature Compressor Frequency for MiElHVAC

* Added Outdoor Temperature
* Renamed internal properties due typo operating and oprating to operation

* New feature Auto Clear Remote Temp for MiElHVAC

* This PR add auto clear remote temperature function
* This funcion is call on first run and after 10 sec the remote temperature stop refresh its value
* Send manually Clear command is also available

* change function name, small corrections

* added auto clear time configurable using cmnd
2024-10-28 14:04:17 +01:00
Jason2866
ef3c061ecf
fix github actions copy error
in some cases the folder already exists. Do not abort copy.
2024-10-28 14:00:00 +01:00
Jason2866
104fec83fb
add hybrid compile variant (#22374) 2024-10-28 13:23:48 +01:00
Theo Arends
e14f014c96 Final fix. 2024-10-28 12:18:42 +01:00
Theo Arends
e731738385 Fix safeboot compilation (#22367) 2024-10-28 12:03:27 +01:00
Theo Arends
4f2c1f3499 Fix Ethernet on -DFRAMEWORK_ARDUINO_ITEAD framework regression from v14.3.0 (#22367) 2024-10-28 11:51:27 +01:00
Theo Arends
37f42b474f Fix DALI init sequence (#22371) 2024-10-28 10:13:43 +01:00
Theo Arends
faf6e66e32 Fix map_double compile error 2024-10-27 17:31:31 +01:00
Theo Arends
19fcaf8866 Add command IfxFeed 2024-10-27 15:54:39 +01:00
Theo Arends
bca4211500 Fix ESP32 energy margins reporting when powered off 2024-10-27 15:32:40 +01:00
Theo Arends
227e5f24b6 Enable DALI in ESP32 Tasmota 2024-10-27 11:00:17 +01:00
bovirus
98b04f5029
Update Italian language (#22362) 2024-10-26 11:06:37 +02:00
Christian Baars
b5a487a595
widget support for Berry/MI32 dashboard (#22359) 2024-10-25 19:25:49 +02:00
Theo Arends
0f2b3b1898 Update changelogs 2024-10-25 17:27:39 +02:00
md5sum-as
41442a54ce
add xsns_102_ld2410s.ino (#22253)
Co-authored-by: Theo Arends <11044339+arendst@users.noreply.github.com>
2024-10-25 17:09:05 +02:00
md5sum-as
33e1da84e7
Xsns 102 ld2410 (#21880)
* xsns_102_ld2410.ino add commands

* fix

* Add attension about supported devices

* Fix lang files
2024-10-25 16:45:26 +02:00
Theo Arends
73cd5cee25 Add support for US AQI and EPA AQI in PMS5003x sensors (#22294) 2024-10-25 14:44:42 +02:00
Theo Arends
16a145f809 Fix ESP32(C3) DALI transmit stability by disabling interrupts 2024-10-25 12:39:36 +02:00
s-hadinger
0fd16f8725
HASPmota haspmota.get_pages() to get the sorted list of pages (#22358) 2024-10-25 11:39:14 +02:00
Theo Arends
886221a1d6 Add experimental support for Shelly DALI Dimmer Gen3 (See template in file xdrv_75_dali.ino) 2024-10-24 23:03:14 +02:00
Theo Arends
80686a8c52 Update changelogs 2024-10-24 11:05:07 +02:00
SteWers
bbba5b9196
[SolaxX1] Add meter mode (#22330) 2024-10-24 10:08:00 +02:00
Grzegorz
e4f431dc7b
New feature Compressor Frequency for MiElHVAC (#22347)
* Add prohibit function for MiElHVAC

Add Prohibit functions:
* Power
* Temperature
* Mode
 and all combinations of this functions
Updated VaneV names for better identify

* Fixed Compressor and Operation for MiElHVAC

Changed Widevane position name from ISEE to AUTO sam as in MELCLoud

* Revert "Fixed Compressor and Operation for MiElHVAC"

This reverts commit f0973c84d4915e776f715c0749a593efc6f55953.

* New feature for MiElHVAC

* Added Compressor map
* Added Operation Power in Watts
* Added Operation Energy in kWh
* Changed Widevane position name from ISEE to AUTO, displays sam as in
* Changed all map value to lover case MELCloud

* New feature for MiElHVAC

* Add device operation time in minutes

* New feature Outdoor Temperature for MiElHVAC

* Add Outdoor Temperature

* New feature Compressor Frequency for MiElHVAC

* Added Outdoor Temperature
* Renamed internal properties due typo operating and oprating to operation
2024-10-24 10:06:48 +02:00
stefanbode
fd37801d53
Optimized behavior to publish shutter data with sensor request (#22353)
* avoid shutter sensor data published ever

* avoid shutter data report on sensor trigger
2024-10-24 10:06:04 +02:00
Jason2866
73897ef755
Back to three esp32x frameworks... (#22351)
* add special frameworks
* Update PULL_REQUEST_TEMPLATE.md
2024-10-23 20:44:25 +02:00
Theo Arends
7f6dbfbeac Update changelogs 2024-10-23 16:12:20 +02:00
Grzegorz
5200aca185
New feature Outdoor Temperature for MiElHVAC (#22345)
* Add prohibit function for MiElHVAC

Add Prohibit functions:
* Power
* Temperature
* Mode
 and all combinations of this functions
Updated VaneV names for better identify

* Fixed Compressor and Operation for MiElHVAC

Changed Widevane position name from ISEE to AUTO sam as in MELCLoud

* Revert "Fixed Compressor and Operation for MiElHVAC"

This reverts commit f0973c84d4915e776f715c0749a593efc6f55953.

* New feature for MiElHVAC

* Added Compressor map
* Added Operation Power in Watts
* Added Operation Energy in kWh
* Changed Widevane position name from ISEE to AUTO, displays sam as in
* Changed all map value to lover case MELCloud

* New feature for MiElHVAC

* Add device operation time in minutes

* New feature Outdoor Temperature for MiElHVAC

* Add Outdoor Temperature
2024-10-23 16:07:30 +02:00
Jacek Ziółkowski
02972ad3ea
Create Panlee_ZX4D30NE01S-UR_SC-02_no_touch.display.ini (#22344) 2024-10-22 16:35:16 +02:00
Grzegorz
6b094ede16
New feature operation time for MiElHVAC (#22334)
* Add prohibit function for MiElHVAC

Add Prohibit functions:
* Power
* Temperature
* Mode
 and all combinations of this functions
Updated VaneV names for better identify

* Fixed Compressor and Operation for MiElHVAC

Changed Widevane position name from ISEE to AUTO sam as in MELCLoud

* Revert "Fixed Compressor and Operation for MiElHVAC"

This reverts commit f0973c84d4915e776f715c0749a593efc6f55953.

* New feature for MiElHVAC

* Added Compressor map
* Added Operation Power in Watts
* Added Operation Energy in kWh
* Changed Widevane position name from ISEE to AUTO, displays sam as in
* Changed all map value to lover case MELCloud

* New feature for MiElHVAC

* Add device operation time in minutes
2024-10-22 13:59:04 +02:00
Theo Arends
2b6acff4f4 Bump version to v14.3.0.2
- DALI command `DaliGear` to set max found gear to speed up scan response
- DALI command `DaliGroup` to add gear to groups
- DALI command `DaliTarget` to set light control broadcast, group number or gear number
- DALI renamed commands `DaliCommission` to `DaliScan` and `DaliWeb` to `DaliLight`
- DALI set Tasmota light control as default
2024-10-22 12:38:56 +02:00
bovirus
4dfa016855
Update Italian language (#22340) 2024-10-22 11:16:58 +02:00
SteWers
f6699b529c
Translate BLE (#22331) 2024-10-20 17:37:29 +02:00
Theo Arends
bd88ddc56d Update changelogs 2024-10-20 14:09:58 +02:00
btsimonh
7ea96eb005
EQ3 TRV firmware version 1.46 fails if the default true is used in ->subscribe on the notify characteristic. (#22328)
So pass false always - then it works with both new and old EQ3 firmware.
2024-10-20 12:13:07 +02:00
Jason2866
923ed91c9c
optimize env tasmota32-zbbrdgpro (#22323)
* remove IR Remote from zigbee bridgg
* remove shutters support
* add lib ignores to zigbee bridge env
* remove ENERGY_SENSOR from zigbee bridge 32 env
2024-10-19 14:06:42 +02:00
Jason2866
9c24258530
disable ir (#22321) 2024-10-19 13:09:35 +02:00
s-hadinger
148f8350b6
HASPmota fix current page parsing (#22320) 2024-10-19 11:30:58 +02:00
s-hadinger
04c0aa13ea
HASPmota support for page delete and object updates (improved) (#22319) 2024-10-18 23:42:52 +02:00
Theo Arends
91604b9f2a Update changelogs 2024-10-18 23:06:26 +02:00
Jason2866
f320ca2982
Phase out of Tasmota espressif32 frameworks solo1 and ITEAD (#22315)
* Step 1 of phase out of special frameworks solo1 and ITEAD
2024-10-18 19:18:10 +02:00
Jason2866
813dc27360
Revert "dedicated special framework "ITEAD" not needed anymore (#22303)" (#22314)
This reverts commit 66213c88c11430ff12127018623e3f840a17922b.
2024-10-18 15:34:36 +02:00
Jason2866
66213c88c1
dedicated special framework "ITEAD" not needed anymore (#22303) 2024-10-18 15:23:10 +02:00
Jason2866
92a56a80b4
try to fix if condition 2024-10-17 22:14:21 +02:00
s-hadinger
73f755dda2
HASPmota support for page delet and object updates (#22311) 2024-10-17 22:14:16 +02:00
Jason2866
ad65448e09
try to fix if condition 2024-10-17 22:12:58 +02:00
Jason2866
58e3297b07
No midi since esp32 compiler bug 2024-10-17 22:04:00 +02:00
Jason2866
7c3f83215a
switch off midi for esp32 -> esp32 Compiler bug 2024-10-17 21:58:48 +02:00
Jason2866
fa7e0f938e
only disable midi for esp32 no code update
Disable since esp32 compiler bug
2024-10-17 21:48:55 +02:00
Jason2866
5a204aea48
Disabling midi for esp32 -> Compiler BUG 2024-10-17 21:29:37 +02:00
Jason2866
a35b7a9f82
change MI32 env to latest needs of NimBLE lib 2024-10-17 20:18:32 +02:00
Theo Arends
4948b70acd Update changelogs
Add DALI short address and group support
2024-10-17 17:44:05 +02:00
Christian Baars
e39f1cc83f
track BLE devices with RPA (#22300) 2024-10-16 18:14:00 +02:00
Jason2866
0f84211898
remove LTO settings in build flags (#22302)
since LTO is now standard in Tasmota Arduino framework
2024-10-16 13:55:15 +02:00
Jason2866
aed98a6b64
Platform 2024.10.30 (Arduino core 3.1.0.241015 / IDF 5.3.1+) (#22299)
* Platform 2024.10.30 (Arduino core 3.1.0.241015 / IDF 5.3.1+)

Platform new option custom Arduino IDF libs

* Tasmota core ESP32 V.3.1.0.241015
2024-10-16 11:24:29 +02:00
Theo Arends
69f7f155dd Bump version v14.3.0.1 2024-10-15 11:03:45 +02:00
Theo Arends
3569a22dab Fix DALI inverted signal collision detection 2024-10-14 23:33:46 +02:00
Theo Arends
763cc8319d Update changelogs 2024-10-14 23:15:00 +02:00
Grzegorz
6a7f8b11ed
New feature for MiElHVAC (#22290)
* Add prohibit function for MiElHVAC

Add Prohibit functions:
* Power
* Temperature
* Mode
 and all combinations of this functions
Updated VaneV names for better identify

* Fixed Compressor and Operation for MiElHVAC

Changed Widevane position name from ISEE to AUTO sam as in MELCLoud

* Revert "Fixed Compressor and Operation for MiElHVAC"

This reverts commit f0973c84d4915e776f715c0749a593efc6f55953.

* New feature for MiElHVAC

* Added Compressor map
* Added Operation Power in Watts
* Added Operation Energy in kWh
* Changed Widevane position name from ISEE to AUTO, displays sam as in
* Changed all map value to lover case MELCloud
2024-10-14 23:09:47 +02:00
Theo Arends
8a9bf94e58 Fix received light command loop
- Fix received light command loop
- Add send collision detection
2024-10-14 22:58:45 +02:00
s-hadinger
76d8836e6e
Berry animate demo remove left overs (#22295) 2024-10-14 22:39:50 +02:00
Theo Arends
150d0e6220 Update docs 2024-10-14 16:02:48 +02:00
Theo Arends
fa82a48789 Fix Sonoff WTS01 temperature sensor shows incorrect negative temperature (#19373) 2024-10-14 15:28:33 +02:00
Theo Arends
3969c80242 Add DALI commands (#22214)
- Add command ``DaliSend <address>|<address+256>,<command>`` to send command (address+256 is repeat) on DALI bus
- Add command ``DaliQuery <address>|<address+256>,<command>`` to send command (address+256 is repeat) on DALI bus and wait up to DALI_TIMEOUT ms for response
2024-10-14 12:27:01 +02:00
s-hadinger
314fcd0dbc
Berry Serial config to change parity on-the-fly for RS-485 (#22285) 2024-10-13 22:15:47 +02:00
Theo Arends
0c7e8c67f3 Update changelogs 2024-10-13 12:03:31 +02:00
sfromis
c07b8a59c0
Fixing build error xdrv_13_display.ino with JPEG_PICTS (#22265)
On ESP32, with `#define JPEG_PICTS` without the scripter, build fails due to the function `Draw_jpeg` being defined after use. Order swapped to satisfy the compiler.

Change tested to compile without errors, but not being 100% sure of when/how it is supposed to work, no verification of this.
2024-10-13 11:10:27 +02:00
Grzegorz
63d44c8b30
Add prohibit function for MiElHVAC (#22269)
Add Prohibit functions:
* Power
* Temperature
* Mode
 and all combinations of this functions
Updated VaneV names for better identify
2024-10-13 11:09:51 +02:00
Theo Arends
4b06cb27b0 Adhere to DALI naming 2024-10-11 17:27:12 +02:00
Theo Arends
b53ac4a14e Fix next core I2C2 compilation 2024-10-11 14:11:00 +02:00
Theo Arends
154f478b5c Fix Berry I2C2 compilation 2024-10-11 12:44:05 +02:00
Theo Arends
f9ee4198e1 Fix compile error when wire1 is unavailable 2024-10-11 12:38:04 +02:00
Theo Arends
8ea4c7887f Move I2C2 test up front 2024-10-11 12:25:34 +02:00
Theo Arends
a839144491 Update changelogs 2024-10-11 11:54:08 +02:00
Jason2866
f2c61c4496
Fix uDisplay compile error (#22266)
* only esp32
2024-10-11 00:19:29 +02:00
s-hadinger
d6a15aa5dc
Temporarily disable SPI DMA for uDisplay (broken since esp-idf 5.3) (#22264) 2024-10-10 23:20:07 +02:00
s-hadinger
cc6ec3648f
Berry Zigbee removed test code (#22263) 2024-10-10 19:50:57 +02:00
Theo Arends
db47b92bc1 Dali add power control 2024-10-10 18:16:32 +02:00
Theo Arends
c7845f1864 Dali add dimmer control 2024-10-10 18:04:27 +02:00
Theo Arends
04f3df8bf6 Add command `DaliWeb 1` to enable light control for broadcast address
- Change DaliDimmer range from 0..254 to 0..100
2024-10-10 17:49:11 +02:00
Theo Arends
50ccaede60 Fix correct second I2C bus 2024-10-10 17:10:01 +02:00
Theo Arends
1ab53aabc8 Update TEMPLATES.md 2024-10-10 12:49:27 +02:00
Theo Arends
8e7c7c3af6 Final fix ethernet malfunction on idf5.3 2024-10-10 12:30:51 +02:00
Theo Arends
f8fbe15300 Fix ESP32 Ethernet using EthClockMode 3 (#22248) 2024-10-09 17:31:33 +02:00
Theo Arends
1a5e6db02d Dali add better receive error detection 2024-10-08 17:54:17 +02:00
Theo Arends
6bc2e50d9c Update changelog 2024-10-08 10:22:28 +02:00
s-hadinger
0468b0e3f1
HASPmota make delete() backwards compatible (#22254) 2024-10-08 08:29:43 +02:00
Jason2866
c1f535207f
Prepare IDF Libs compile (#22250)
* Prepare IDF Libs compile
2024-10-07 18:36:46 +02:00
Theo Arends
d986f7f7c7 Extend Dali driver 2024-10-07 18:08:58 +02:00
Theo Arends
3e0d36af9d Extend Dali driver 2024-10-07 18:03:20 +02:00
Grzegorz
abc6e46354
Add Air Direction control for MiElHVAC (#22241)
* Update xdrv_44_miel_hvac.ino

Code structure cleanup,
Add Power, SetTemperature, Mode, SwingV, SwingH, FanSpeed to JSON StatusSNS MiElHVAC

* Update xdrv_44_miel_hvac.ino

* clesnup

* Revert "Update xdrv_44_miel_hvac.ino"

This reverts commit 45f813d32c6d69b925770ac073827c77373505bd.

* revert styling and format

* make operation and compressor indyvidual and remove unnecessary sep

* Update xdrv_44_miel_hvac.ino

* Update xdrv_44_miel_hvac.ino

* Use uppercase

* Update xdrv_44_miel_hvac.ino

* Added AirDirection control modes (even, indirect, direct)
* Added to WIDEWANE MAP - ISEE position (if AirDirection is used)
* Update WIDEWANE position values

* fix data size
2024-10-07 08:54:23 +02:00
Theo Arends
4196f753c8 Update changelogs 2024-10-06 22:40:28 +02:00
s-hadinger
efce07086c
Berry improve persist dirty data handling (#22246) 2024-10-06 22:09:18 +02:00
Theo Arends
0240da2bf7 Fix Dali received data decoding
- Add support for DALI 1 on ESP8266
2024-10-06 21:57:59 +02:00
s-hadinger
b5b11d6227
HASPmota delete instead of delete() (#22245) 2024-10-06 21:09:19 +02:00
s-hadinger
d9f246f0f0
LVGL port colorwheel from LVGL 8, HASPmota cpicker and msgbox (#22244) 2024-10-06 18:53:06 +02:00
Grzegorz
ba687deaf5
Bridge Mitsubishi AC devices to Homebridge/Homekit locally (#22236)
* Update xdrv_44_miel_hvac.ino

Code structure cleanup,
Add Power, SetTemperature, Mode, SwingV, SwingH, FanSpeed to JSON StatusSNS MiElHVAC

* Update xdrv_44_miel_hvac.ino

* clesnup

* Revert "Update xdrv_44_miel_hvac.ino"

This reverts commit 45f813d32c6d69b925770ac073827c77373505bd.

* revert styling and format

* make operation and compressor indyvidual and remove unnecessary sep

* Update xdrv_44_miel_hvac.ino

* Update xdrv_44_miel_hvac.ino

* Use uppercase
2024-10-05 23:13:56 +02:00
Barbudor
b09b3560b9
recreate 16044 (#22232) 2024-10-03 09:21:55 +02:00
Damian Wrobel
bf0f7316b9
Avoid sending more then one Modbus TCP response (#22223)
Prevent from sending more then one Modbus TCP response
for a single request.

This might happen in the following scenario where,
shortly after the first response has been sent (4),
the second one will be send (8) (note the same
'TransactionId') triggered by the response to the
'ModbusSend' request issued by Berry (5).

The log excerpt from such a situation:

(1) 21:13:20.510 MBS: MBRTCP to Modbus TransactionId:520, deviceAddress:4, functionCode:3, startAddress:8193, count:1, recvCount:1, recvBytes:2
(2) 21:13:20.523 MBS: Serial Send: 04 03 20 01 00 01 DE 5F
(3) 21:13:20.647 MBS: Serial Received: 04 03 02 0A 28 72 FA
(4) 21:13:20.652 MBS: MBRTCP from Modbus TransactionId:520, deviceAddress:4, writing:11 bytes to client (error:0)
(5) 21:13:20.724 CMD: Grp 0, Cmd 'MODBUSSEND', Idx 1, Len 89, Pld -99, Data '{"deviceAddress":4, "functionCode":6, "startAddress":8192, "type":"uint16", "Values":[6]}'
(6) 21:13:20.743 MBS: Serial Send: 04 06 20 00 00 06 02 5D
(7) 21:13:21.009 MBS: Serial Received: 04 06 20 00 00 06 02 5D
(8) 21:13:21.014 MBS: MBRTCP from Modbus TransactionId:520, deviceAddress:4, writing:12 bytes to client (error:0)

Use 'tcp_transaction_id' field to denote that we already
sent a response.

Signed-off-by: Damian Wrobel <dwrobel@ertelnet.rybnik.pl>
2024-10-02 21:34:48 +02:00
Theo Arends
4cbb1b1c58 Update changelogs 2024-10-02 14:18:08 +02:00
Grzegorz
6fa38e4b83
Add heat/dry/cool isee operation mode to xdrv_44_miel_hvac.ino (#22216)
* Add heat/dry/cool isee operation mode to xdrv_44_miel_hvac.ino

This add heat, dry, and cool isle operation mode to support new AC devices. Closes also #10937

* remove duplicated wide vane mode
2024-09-30 11:21:12 +02:00
Theo Arends
69c19d95ae Update changelogs 2024-09-30 11:12:14 +02:00
Theo Arends
2d80f87fc9 Attempt 2 to fix Dali core 3 compilation (#22214) 2024-09-30 09:50:15 +02:00
s-hadinger
59c8d39724
uDisplay force cache writes to RGB display on ESP32S3 (#22222) 2024-09-29 23:04:24 +02:00
s-hadinger
75001a024d
HASPmota error when page '1' is not defined (#22220) 2024-09-29 21:58:24 +02:00
Theo Arends
5d4230d39b Attempt to fix Dali core 3 compilation (#22214) 2024-09-29 17:11:13 +02:00
Theo Arends
19d3984d6e Fix BL906 name (#22167) 2024-09-29 14:30:54 +02:00
Theo Arends
b2b839fa83 Add support for Sonoff SPM v1.3.0 (#13447) 2024-09-28 17:57:31 +02:00
pharaocurt
5909eec188
fix compile error with core 3.0.0 for Range Extender driver xdrv_58_range_extender.ino (#22205)
* final ported range_extender

* removed #define USE_WIFI_RANGE_EXTENDER_PORTADD, because new framework-arduinoespressif32 @ 3.1.0+sha.22a3b096 is available with CONFIG_LWIP_IPV4_NAPT_PORTMAP=y
2024-09-27 20:16:28 +02:00
Theo Arends
452031fbbd Add Energy Export Active support to BL0906 (Athom EM2/EM6) 2024-09-27 18:08:22 +02:00
Theo Arends
692a0ca4b1 Bump version 14.2.0.6 2024-09-26 17:38:49 +02:00
Jason2866
1248bd138c
Tasmota Platform espressif32 2024.09.30 - Arduino Core 3.1.0.240926 (#22203)
* Update PULL_REQUEST_TEMPLATE.md

* Tasmota Platform espressif32 2024.09.30 - Arduino Core 3.1.0.240926
2024-09-26 17:25:48 +02:00
Theo Arends
d716a275bf Tune BL0906 driver 2024-09-26 17:20:34 +02:00
Theo Arends
08d75a5fe3 Add Support for BL0906 up to 6 channel energy monitor as used in Athom EM2/EM6 (#22167) 2024-09-25 18:11:07 +02:00
Theo Arends
27a4ea0f70 Add Support for BL0906 up to 6 channel energy monitor as used in Athom EM2/EM6 (#22167) 2024-09-25 18:05:16 +02:00
Theo Arends
61aeea9132 Add ESP8266 support for one-wire M1601 temperature sensor on DS18x20 GPIO (#21376) 2024-09-25 15:01:19 +02:00
Theo Arends
622b8b10c0 SSPM show only if powered ON 2024-09-25 11:06:51 +02:00
s-hadinger
a306d77a5e
Berry fix compilation error with some compiler options (#22200) 2024-09-24 22:58:49 +02:00
Theo Arends
e3c47851b7 First fix SPM v1.3.0 report values (#13447) 2024-09-24 22:36:02 +02:00
s-hadinger
ef1cbeae21
fix be_byteslib.c 2024-09-24 22:00:57 +02:00
Theo Arends
64de5497f4 Bump version v14.2.0.5
- Add ESP8266 support for I2C CLK on GPIO16 (#22199)
2024-09-24 17:44:15 +02:00
Jason2866
a6075b2855
Platform 2024.09.00 for esp8266 (#22199)
* Platform 2024.09.00 for esp8266

Core 2.7.8

* esp8266 core 2.7.8
2024-09-24 17:25:28 +02:00
s-hadinger
17cc9e18b4
HASPmota broken changed event (#22194)
* HASPmota broken `changed` event

* Avoid breaking compatibility
2024-09-23 23:09:31 +02:00
s-hadinger
2d5545997e
Berry fix index accessor for rean only bytes (#22193) 2024-09-23 22:43:33 +02:00
Theo Arends
f3aed72f97 Update changelogs 2024-09-23 15:53:35 +02:00
s-hadinger
330cfe8b4d
LVGL compilation of lv_menu (#22188) 2024-09-23 10:26:23 +02:00
gemu
3707d4b239
Sml update (#22185)
* some refactoring

* refactoring, save some ram
2024-09-22 12:20:02 +02:00
s-hadinger
7ef93b20fd
Add commented #define BE_LV_WIDGET_MENU 2024-09-22 11:52:00 +02:00
Jason2866
6bb046726e
arduino idf compile prepare 2024-09-21 23:36:37 +02:00
Theo Arends
03b57179ac Final fix unknown/error 2024-09-21 13:23:14 +02:00
Theo Arends
8d7a27df76 Fix ESP8266 Exception 3 on tasmota-minimal caused by unaligned PROGMEM (#22169) 2024-09-20 18:20:09 +02:00
Theo Arends
bf4d0d0890 Revert "Fix ESP8266 Exception 3 on tasmota-minimal caused by unaligned PROGMEM (#22169)"
This reverts commit b00d7fd0ac71d03ea93c9c5278c4e5dc5751d72a.
2024-09-20 18:14:53 +02:00
Theo Arends
b00d7fd0ac Fix ESP8266 Exception 3 on tasmota-minimal caused by unaligned PROGMEM (#22169) 2024-09-20 18:13:38 +02:00
Theo Arends
d5289e8ba9 Update changelogs 2024-09-20 12:09:34 +02:00
Tim Connors
694691e34a
Refactor and fix PID sensor (PID_USE_LOCAL_SENSOR) read race condition (#22162)
* Refactor and fix PID sensor (PID_USE_LOCAL_SENSOR) read race condition

Refactor PID since it was calling pid.tick willy-nilly upon demand
from MQTT and the web instead of on a periodic basis (and was being
called with time interval of 0 when those times lined up!).  Refactor
web/mqtt display because there was shared code (that code turned out
to be misguided and belonged in Every_Second loop, but now we are also
similar to 39 thermostat)

Logging revealed that the vast majority of the time the sensor JSON
was parsed to obtain current sensor data when using PID local sensor,
it was failing to parse (and it would typically only work for a second
around TELE_PERIOD, but even then, not reliably).  This bug almost
certainly affects xdrv_39_thermostat too, but using
xsns_75_prometheus.ino as a template, we are able to update PV once
per second, which allows us to be a lot more responsive.  There is no
danger of being "too responsive" because that's the point of PID, and
the PID loop already scales feedback by interval between ticks.

* Reduce logging of PID now that query side-effects removed

* Comment out all new logging, but leave present for next debugger
2024-09-20 12:06:41 +02:00
Theo Arends
83eb8aeaa7 Update changelogs 2024-09-20 12:01:15 +02:00
s-hadinger
be46b95d62
MQTT add warning if trying to connect without TLS on a port that normally uses TLS (#22175) 2024-09-19 23:12:46 +02:00
s-hadinger
f43d23e59a
Berry update Win binary (#22174) 2024-09-19 22:35:27 +02:00
s-hadinger
a5b4490ba0
Matter small UI fixes (#22173) 2024-09-19 22:26:21 +02:00
s-hadinger
3f56ab68ad
Berry improve int64 constructor (#22172) 2024-09-19 21:35:52 +02:00
Jason2866
5d0cc8144a
no exception when metrics not found (#22170) 2024-09-19 18:31:47 +02:00
Theo Arends
3b28542d9c Fix BMP second bus 2024-09-19 17:21:08 +02:00
Theo Arends
9238ee73d6 Add ESP8266 experimental support for second I2C bus 2024-09-19 14:47:18 +02:00
Theo Arends
a9f0623769 SCD30 Lowered I2C clock from 100k to 50k (#15438) 2024-09-19 11:15:04 +02:00
Theo Arends
d0d075a1b4 Refactored I2C drivers SHT3x and iAQ 2024-09-19 11:11:08 +02:00
Theo Arends
a30f47a901 Fix bad define ESP82666 2024-09-19 11:07:16 +02:00
Theo Arends
0dfab3684c Update changelogs 2024-09-19 09:58:36 +02:00
Jason2866
27611a1698
Tasmota Platform 2024.09.10 - Arduino core 3.0.5 (#22163)
* Tasmota Platform espressif32 2024.09.10 - Arduino Core 3.0.5
2024-09-18 19:04:34 +02:00
s-hadinger
717bc01df8
Autoconf prevent 'init.bat' from stopping on empty lines (#22158) 2024-09-17 21:46:40 +02:00
Theo Arends
a5730a76f9 Add command entered to command error and command unknown message 2024-09-17 16:24:45 +02:00
Theo Arends
4f2b24f53d Add entered command to MQTT command unknown message (bis) 2024-09-17 10:19:00 +02:00
Theo Arends
fd7d2fc0a4 Add entered command to MQTT command unknown message 2024-09-17 10:00:47 +02:00
Theo Arends
97970974fc Refactored I2C drivers HTU21, BH1750 and HYT 2024-09-16 16:27:30 +02:00
Theo Arends
c61dd0fd2c Minor refactor I2C 2024-09-15 15:16:18 +02:00
Theo Arends
a3892ecbc4 Update change logs 2024-09-14 16:13:14 +02:00
s-hadinger
1bfbe02a29
Berry I2C to prepare M5Stack I2C STM32 based devices (#22143) 2024-09-14 12:25:23 +02:00
Theo Arends
1dff0b4b27 Add support for RX8010 RTC as used in IOTTIMER (#21376) 2024-09-13 13:53:01 +02:00
s-hadinger
6e4517de02
Berry virtual Energy driver (#22134) 2024-09-12 19:38:04 +02:00
Theo Arends
7b8308c36a Add support for I2C M5Unit (Mini)Scales using HX711 driver 2024-09-12 12:14:32 +02:00
s-hadinger
9d012f64c8
Add internal I2C argument to send stop while reading (#22127) 2024-09-11 16:41:35 +02:00
Pavel Sheremetev
1edc4b57b7
allow define calibration parametrs for bl09xx (#22030)
Co-authored-by: PavelSheremetev <spd@aira.life>
2024-09-11 08:55:43 +02:00
Theo Arends
d8f01ed4c0 Refactor HX711 memory use 2024-09-10 15:59:25 +02:00
Theo Arends
07eb51764a Update changelogs 2024-09-10 14:54:32 +02:00
Theo Arends
f0da077e78 Merge branch 'development' of https://github.com/arendst/Tasmota into development 2024-09-10 14:50:07 +02:00
stefanbode
05e59b048e
Fix remaining issues on shutterinvert (#22120)
found another place where the invert was not reported correctly
2024-09-10 14:48:51 +02:00
gemu
1c730aab86
fix trx pin error (#22119) 2024-09-10 14:48:38 +02:00
Theo Arends
5675f00d70 Update changelogs 2024-09-10 14:12:31 +02:00
s-hadinger
2d522485c4
Zigbee fix flashing CC2562P with latest firmware (#22117) 2024-09-09 21:56:18 +02:00
s-hadinger
7247cd6c44
Fixed Berry energy missing attributes (#22116) 2024-09-09 21:50:06 +02:00
Theo Arends
a75a58d591 Update changelogs 2024-09-09 16:39:27 +02:00
Damian Wrobel
6650dee578
Fix ModbusBridge request/response logic (#22075)
- Fix cases where the subsequent Modbus packet
  can be send to the serial port (triggered either by
  'ModbusSend' command or request from TCP bridge)
  before an answer was received to the previous packet.

  This can happen in a setup where simultaneously:
  - two (or more) modbus TCP clients are sending requests
    through the modbus-proxy [1] to Tasmota,
  - ModbusSend commands are executed (e.g. using Berry).

  Log excerpt (from build with TASMOTAMODBUSDEBUG enabled):
  14:51:18.940 MBS: Serial Send: 04 03 01 00 00 09 84 65
  14:51:19.054 MBS: Serial Send: 04 03 10 0A 00 05 A1 5E
  14:51:19.136 MBS: Serial Received: 04 03 0A 00 00 00 D0 00 00 01 AB 00 00 89 62

  Fix adds 'waitingForAnswerFromSerial' flag which is set after
  we send data to the serial port and prevents sending another
  requests before we receive an answer or timeout happened.

  Fix stores temporarily a 'ModbusSend' command data and tries
  to execute it after Modbus response has been received or
  timeout has happened.

- Add 'ModbusSerialTimeout' command which sets timeout in [ms]
  for how long we will be waiting for an answer from the client device.
  Default value is 1000 [ms] and it is not restored after reboot.

- Sends error 11 (0xB) (as TCP response) when no answer was received
  from the serial port within the timeout set by 'ModbusSerialTimeout'
  command.

- Add Modbus 'TransactionId' to the logging.

[1] https://github.com/tiagocoutinho/modbus-proxy

Signed-off-by: Damian Wrobel <dwrobel@ertelnet.rybnik.pl>
2024-09-09 10:26:20 +02:00
pbrinette
28bbf11dbb
Enhance the KNX capabilities of Tasmota to offer more flexibility and features (#22071) 2024-09-09 09:25:11 +02:00
s-hadinger
9ac2a69603
Matter support for Zigbee Occupancy and Light 0/1/2 (OnOff / Dimmer / White Color Temperature) (#22110) 2024-09-08 23:16:19 +02:00
Theo Arends
1bf6a13d7c Bump version v14.2.0.4
- Add HX711 optional calibration precision option on command ``Sensor34 2 <weight in gram> <precision>`` where `<precision>` is 1 to 10 (#13983)
2024-09-08 17:32:35 +02:00
stefanbode
744e50acf7
Fix missing HOLD on shutterbutton (#22108)
#21986
2024-09-08 16:50:37 +02:00
Theo Arends
4717d1986c Update changelogs 2024-09-07 16:32:39 +02:00
Edward Betts
fade4f867d
Correct spelling mistakes (#22080) 2024-09-07 15:35:04 +02:00
gemu
2c5e8749e3
multi trx lines (#22056) 2024-09-07 15:29:27 +02:00
Jason2866
8956b25de4
add forgotten import compress 2024-09-07 14:45:26 +02:00
Jason2866
b5f26e9210
check for working zopfli (#22105) 2024-09-07 14:22:16 +02:00
Jason2866
069f59d13f
remove irritating space (#22095) 2024-09-05 16:51:45 +02:00
s-hadinger
c41e9fe010
Matter Zigbee support for sensors: Temperature, Humidity, Pressure (#22084) 2024-09-03 23:50:53 +02:00
s-hadinger
5f80251414
Berry Zigbee improvements to prepare Matter (#22083) 2024-09-03 23:22:50 +02:00
s-hadinger
4164887412
Zigbee avoid disabling console serial on ESP32 and improved log messages (#22082) 2024-09-03 23:06:07 +02:00
s-hadinger
b6e81c1edd
Zigbee Koenkk firmware 20240710 for Sonoff Zigbee ZBPro (#22076) 2024-09-02 22:20:41 +02:00
Steffen
caa501b1af
add support for nexus protocol to rc-switch library (#21886)
* add support for nexus protocol to RCSwitch library

Nexus protocol is used by temperature and humidity sensor that operate at 433 MHz.
It is used by various brands.

* calc separation limit for RCSwitch library automatically
2024-09-01 16:04:40 +02:00
s-hadinger
d1bd31b341
Berry update Windows exe (#22058) 2024-08-30 14:20:44 +02:00
s-hadinger
428fa95dfd
Berry avoid readbytes() from crashing when file is too large (#22057) 2024-08-30 13:59:52 +02:00
s-hadinger
1ab9bee312
Berry remove reuse of methods for interface-like code reuse #21500 (#22055) 2024-08-29 22:00:20 +02:00
s-hadinger
71f0a06356
Upstream Berry fix removing assert (#22054) 2024-08-29 21:32:28 +02:00
s-hadinger
2292006fe3
Matter fix Waterleak broken after Berry solidification optimisation #21885 (#22052) 2024-08-29 19:33:41 +02:00
s-hadinger
220778a3c0
Matter fail to report Shutter status if no shutter is configured in Tasmota (#22049) 2024-08-29 17:40:12 +02:00
s-hadinger
11ed65560b
LVGL Added OpenHASP icons to font montserrat-28 (#22048) 2024-08-29 16:57:01 +02:00
s-hadinger
e7f120d443
Berry make energy modules changes from #21887 backwards compatible (#22046) 2024-08-29 16:02:14 +02:00
Jacek Ziółkowski
f85a96dd2d
Add python venv to .gitignore (#22045)
* Add python venv to .gitignore

* Update .gitignore
2024-08-29 15:01:52 +02:00
s-hadinger
f62496d164
Crash when calling TasmotaSerial destructor when initialized with incorrect arguments (#22036) 2024-08-28 13:04:56 +02:00
s-hadinger
e8cdeaba6b
ESP32 LVGL library from v9.1.0 to v9.2.0 (#22031) 2024-08-27 23:36:38 +02:00
Theo Arends
a44443f184 update changelogs 2024-08-26 17:29:20 +02:00
Jason2866
888e1d5bb1
Platform 2024.08.11 (espressif32 Arduino core 3.0.4) (#22021) 2024-08-26 17:25:27 +02:00
Theo Arends
a10e3b9bc5 GPIOViewer function shuffle. No functional changes 2024-08-26 16:48:39 +02:00
Theo Arends
969611835c Fix GPIOViewer on ESP32 (needs upcoming core change) 2024-08-26 15:26:36 +02:00
Theo Arends
f0c12b6e9c Remove dash from GUI title 2024-08-26 14:20:51 +02:00
Theo Arends
fefd49c663 Remove dash from GUI title 2024-08-26 14:14:59 +02:00
Theo Arends
1ad4a1377b Update changelogs 2024-08-26 13:56:20 +02:00
pkkrusty
88c9ae3273
Clarify MAX7219 display driver (#21977)
MAX7219 and MAX7219_MATRIX are different displays and require different defines. DisplayModel19 incorrectly listed for MAX7219 instead of MAX7219_MATRIX.
2024-08-26 08:49:48 +02:00
gemu
c35c493809
i2s wav player (#22003)
* i2s wav player

* move framepointer
2024-08-26 08:48:35 +02:00
s-hadinger
5c30d92627
BearSSL panic on ESP8266 in rare conditions (#22017) 2024-08-25 23:10:48 +02:00
s-hadinger
8d6a4bd7be
Matter fix when Rules are disabled (#22016) 2024-08-25 19:33:40 +02:00
s-hadinger
645ce4a1ee
Zigbee reduce serial logging (#22012) 2024-08-24 23:53:42 +02:00
s-hadinger
d084be23db
Zigbee extend timeout for MCU reboot from 5s to 10s (#22009) 2024-08-24 18:32:35 +02:00
s-hadinger
e143438552
Matter fixed UI bug when no endpoints configured (#22008) 2024-08-24 18:04:28 +02:00
Theo Arends
831597e7d9 Version v14.2.0.3
- Add command ``SetOption69 1`` to enable Serial Bridge inverted Receive (#22000)
2024-08-23 11:22:26 +02:00
Theo Arends
4144f5c5ca Change GPIOViewer from v1.5.5 to v1.5.6 2024-08-22 18:03:39 +02:00
Theo Arends
798edc20c2 Version v14.2.0.2
- Changed Energy BL09xx command ``CurrentSet`` input changed from Ampere to milliAmpere
2024-08-21 16:27:43 +02:00
Theo Arends
ba7161fb00 Fix ESP8266 energy cal range chk 2024-08-20 17:30:18 +02:00
Theo Arends
ab2d6c1169 Add Energy command `PowerSet 60,230` to calibrate both Current and Power with known resistive load of 60W at 230V using calibrated Voltage 2024-08-20 13:08:56 +02:00
Theo Arends
c5b92d3ab1 Add Energy Log level 4 message when (Calculated) Apparent Power is less than Active Power indicating wrong calibration (#20653) 2024-08-19 22:31:56 +02:00
Theo Arends
4f62a0deab Refactor to TimeReacged() 2024-08-18 12:46:23 +02:00
Theo Arends
e74142724c Disable 64-bit timing support 2024-08-18 12:13:44 +02:00
Theo Arends
903686f7b5 Add 64-bit timing support 2024-08-16 11:56:07 +02:00
Theo Arends
c0eb28dae9 Harden shutter timeouts 2024-08-16 11:53:58 +02:00
Theo Arends
652b9cef87 Fix PZEM continue energy monitoring when one phase fails (#21968) 2024-08-15 17:32:11 +02:00
Theo Arends
bb0db6d8f8 Update changelogs 2024-08-15 15:12:59 +02:00
stefanbode
6d2647fd5f
fix potential overflow on uptime 2nd try (#21966)
* fix potential overflow

* fix potential overflow

* fix overflow on millis()

* fix overflow on millis()

* Update xdrv_27_shutter.ino

---------

Co-authored-by: Theo Arends <11044339+arendst@users.noreply.github.com>
2024-08-15 14:28:10 +02:00
Theo Arends
1b24378da5 Free 500 code bytes on ADC/ESP8266 2024-08-15 12:52:12 +02:00
stefanbode
851f11dcdd
fix potential overflow on uptime (#21965)
* fix potential overflow

* fix potential overflow

* fix potential overflow

* fix potential overflow
2024-08-15 10:08:54 +02:00
Theo Arends
30cffa1acc Bump version v14.2.0.1 2024-08-14 15:13:00 +02:00
Theo Arends
43a8e2464f Prep v14.2.0 2024-08-14 14:22:13 +02:00
gemu
d525200a11
BW invert (#21955)
* bw invert option

* invert bw
2024-08-14 13:08:17 +02:00
Theo Arends
102428f768 Needed too 2024-08-13 15:13:04 +02:00
Theo Arends
b93e6cee7b Change GUI name of Analog<x> to ADC<x> 2024-08-13 15:11:51 +02:00
Theo Arends
ff46745252 Fix ADC conversion to v14.1.0.4 2024-08-13 13:57:58 +02:00
Theo Arends
8f75684cd7 Add Rule and Scripter xdrv sensor polling 2024-08-13 12:28:09 +02:00
Theo Arends
5bac2a2331 Revert "Add Rule and Scripter xdrv sensor polling"
This reverts commit cc2ea328d5aec047244b3c2ff5d54fdfbbe53f4c.
2024-08-11 19:29:10 +02:00
Theo Arends
cc2ea328d5 Add Rule and Scripter xdrv sensor polling 2024-08-11 17:47:01 +02:00
Theo Arends
d3f6d7d844 Sync ESP8266 energydriver with ESP32 2024-08-10 17:15:05 +02:00
Theo Arends
85da678132 Fix ADC bad energy jumps 2024-08-10 17:01:14 +02:00
Theo Arends
bcd1a9c986 Fix ADC multiple GPIO parameter storage 2024-08-09 16:11:30 +02:00
f-reiling
de59b036d0
improved read access for SDM630 (#21897)
* improved read access for SDM630

read access improved by reading several registers in one cycle -> higher update rate

* fixed compiler warning

* fix review finding

* added SDM630_HIGH_UPDATE_RATE to select new implementation
2024-08-09 09:23:52 +02:00
Norbert Richter
663fc88373
Update NeoPool comments (#21920) 2024-08-07 16:09:53 +02:00
sfromis
77669f7e20
Update my_user_config.h (#21921)
Adding SetOption references for a few `#define`, to make the relation clear, and in the common searchable format like `[SetOption147]`. Also added that since some time now, this option covers both `SSerialReceived` and `IrReceived`.
2024-08-07 16:08:52 +02:00
Theo Arends
040ffb33e0 Fix restore ADC energytoday on power cycle 2024-08-06 18:07:26 +02:00
Theo Arends
6ffcc69e2d Update changelogs 2024-08-06 17:29:28 +02:00
s-hadinger
f88a635d5d
Zigbee loads device data early before MCU startup (#21917) 2024-08-06 12:43:15 +02:00
Theo Arends
4f035d18f6 Fix invalid ADC energy reset 2024-08-04 18:06:24 +02:00
Theo Arends
3473c3c1b0 Fix scientific notation for 1234.5 (#21131) 2024-08-04 17:42:15 +02:00
Theo Arends
bdec6aed67 Update xsns_02_analog.ino 2024-08-04 16:37:36 +02:00
Theo Arends
469f12abbc Add ADC support for Shelly Plus RGBW PM 2024-08-04 16:35:02 +02:00
Theo Arends
82add09bf9 Fix Core 3.0.4 baudrate detection 2024-08-04 16:11:13 +02:00
Theo Arends
f6c3064890 Fix ADC migration 2024-08-03 18:03:41 +02:00
Theo Arends
c7faff7ac6 Refactored Analog driver to better support multiple channels
- Add command ``AdcGpio<gpio> <parameters>`` to better support ADC configuration
2024-08-03 17:52:47 +02:00
Theo Arends
e5485288eb Update changelogs 2024-08-03 14:18:48 +02:00
Fabrizio Amodio
73357b6cfd
prevent spike on power ON on BioPDU (#21892) 2024-08-03 10:10:11 +02:00
s-hadinger
3c884118ed
Berry zigbee.started() (#21895) 2024-08-02 19:42:11 +02:00
Jason2866
d8cac9c811
Platform 2024.08.10 (#21893)
* Platform 2024.08.10 (espressif32 Arduino core 3.0.4)
2024-08-02 18:14:36 +02:00
s-hadinger
db26f180ec
Fix start_root_basic_commissioning (#21894) 2024-08-02 16:31:02 +02:00
s-hadinger
6b98a320b1
Berry zigbee.find() (#21889) 2024-08-02 15:43:31 +02:00
Theo Arends
8f74a226e7 Update changelogs 2024-08-02 10:02:31 +02:00
s-hadinger
010ca34622
Berry energy module support for 8 phases and move to pseudo-arrays (#21887)
* Berry `energy` module support for 8 phases and move to pseudo-arrays

* add size()
2024-08-01 22:37:37 +02:00
s-hadinger
40ee4cc316
Berry add solidify.nocompact() and reduce size of Matter UI (#21885) 2024-08-01 22:02:27 +02:00
s-hadinger
74551c873f
Berry add file.savecode() (#21884) 2024-08-01 15:38:07 +02:00
s-hadinger
836ce9ef9b
Berry add new type "addr" to ctypes mapping (#21883) 2024-08-01 10:29:49 +02:00
s-hadinger
a3ed99e549
Change Energy power_history arrays to prepare for Berry mapping (#21876) 2024-07-31 14:27:34 +02:00
Theo Arends
67fcb71c6d Update changelogs 2024-07-31 11:03:06 +02:00
gemu
ba596993a0
fix sd mmc free space display (#21869)
* fix sd mmc free space display

* Update xdrv_50_filesystem.ino
2024-07-30 22:24:31 +02:00
Jan-David Förster
4101ad7303
xsns_14_sht3x.ino - data types adjusted, code size reduced (#21868)
* code size, data type improvements

* Change temp calculation to int
2024-07-30 22:23:53 +02:00
s-hadinger
b4a0e27852
Matter refactor autoconf (#21872) 2024-07-30 21:17:21 +02:00
s-hadinger
eb71fcfd2e
Matter refactor commissioning (#21870) 2024-07-30 13:35:06 +02:00
s-hadinger
0c52b40f49
Adjust Matter code size 2024-07-29 09:43:05 +02:00
s-hadinger
b8c5e22e1b
Update CHANGELOG.md 2024-07-28 21:41:20 +02:00
s-hadinger
a9a55b3ccd
Matter improve encoding of attributes to reduce flash size (#21864) 2024-07-28 21:24:39 +02:00
Theo Arends
a98399367b Fix analog reset adcparam 1 2024-07-28 18:58:06 +02:00
Theo Arends
88293d7414 Analog GPIO changes
- Analog GPIO ``ADC Input`` with ``AdcParam<x> 1,<start_range>,<end_range>,<margin>,1`` provide direct light control
- Analog GPIO ``ADC Voltage`` with ``AdcParam<x> 11,<start_range>,<end_range>,<lowest_voltage>,<highest_voltage>`` provide energy monitoring with dc voltage
- Analog GPIO ``ADC Current`` with ``AdcParam<x> 12,<start_range>,<end_range>,<lowest_current>,<highest_current>`` provide energy monitoring with dc voltage
2024-07-28 18:52:38 +02:00
Theo Arends
87ec0cce21 Revert "Analog GPIO extensions"
This reverts commit 7c1cf6a81fe9538324044864c7a79a7fe4380d0e.
2024-07-28 18:47:13 +02:00
Theo Arends
7c1cf6a81f Analog GPIO extensions
- Analog GPIO ``ADC Input`` with ``AdcParam<x> 1,<start_range>,<end_range>,1`` provide direct light control
- Analog GPIO ``ADC Voltage`` with ``AdcParam<x> 11,<start_range>,<end_range>,<lowest_voltage>,<highest_voltage>`` provide energy monitoring with dc voltage
- Analog GPIO ``ADC Current`` with ``AdcParam<x> 12,<start_range>,<end_range>,<lowest_current>,<highest_current>`` provide energy monitoring with dc voltage
2024-07-28 18:33:43 +02:00
s-hadinger
0dda8fc224
Matter fix circular references in WaterLeak and Rain sensors (#21862) 2024-07-28 18:10:25 +02:00
s-hadinger
5b8638b6b8
Berry updated precompiled Windows binary (#21858) 2024-07-28 15:47:52 +02:00
SteWers
068e8e6cbe
Update de_DE.h (#21857) 2024-07-28 14:24:47 +02:00
Theo Arends
a4e592c776 Refactor analog
- Change from double to float where possible
- Fix Voltage/Current energy calculation
2024-07-28 14:15:35 +02:00
bovirus
a9651e1bf1
Update Italian language (#21856) 2024-07-28 09:19:21 +02:00
Theo Arends
d7c6474104 Add Analog Voltage and Current 2024-07-27 17:11:25 +02:00
Theo Arends
9f99633f43 update changelogs 2024-07-27 13:32:01 +02:00
Norbert Richter
5abff54bc6
Add NeoPool NPSetOption<x> command (#21850) 2024-07-27 11:41:06 +02:00
Tarvi Pillessaar
a95e52b375
Neopool relay state detection and reporting fixes (#21841)
* Neopool: remove space in MQTT relay state response

* Neopool: fix detecting some relay states
2024-07-27 11:39:43 +02:00
Theo Arends
d4a63f791e Fix SPI busses 2024-07-26 14:29:51 +02:00
Theo Arends
f1a898c5ca Update changelogs 2024-07-26 14:12:08 +02:00
Theo Arends
e02615827b Fix compilation without SPI 2024-07-26 13:50:15 +02:00
s-hadinger
035daa663b
Berry file.write() raises an exception on failure (ex: disk full) (#21849) 2024-07-26 12:44:25 +02:00
Theo Arends
4cf741e6eb Update xsns_02_analog.ino 2024-07-26 11:02:27 +02:00
Theo Arends
9af25c73d6 Refactor ADC MQ_SAMPLES saving code and RAM 2024-07-26 11:01:09 +02:00
s-hadinger
55cb473e13
Berry webserver_async (#21836)
* Berry `webserver_async`

* Shrink size and include only when USE_BERRY_DEBUG
2024-07-26 09:32:12 +02:00
s-hadinger
1b12656955 Solidified Code updated 2024-07-25 21:15:06 +00:00
s-hadinger
f97c47c511
Avoid random content in bvalue (#21846) 2024-07-25 23:11:14 +02:00
s-hadinger
b8d7b5e2fa Solidified Code updated 2024-07-25 20:53:52 +00:00
s-hadinger
1b887d7202
Berry consolidated constants for solidified classes reduces Flash size (#21845) 2024-07-25 22:53:02 +02:00
Theo Arends
2f33f8e5a8 Fix Non-ESP32 Analog read resolution 2024-07-25 18:04:01 +02:00
Theo Arends
b9fcfa86c9 Update changelogs 2024-07-25 13:33:00 +02:00
s-hadinger
5096a13620 Solidified Code updated 2024-07-24 21:00:42 +00:00
s-hadinger
bf7fbf2cbe
Berry internal: remove class from closure to simplify code (#21839) 2024-07-24 22:59:53 +02:00
s-hadinger
db3e29dd47
Berry fix bytes setters and getters with negative offsets (#21835) 2024-07-24 14:24:11 +02:00
Theo Arends
0784637f4f Update changelogs 2024-07-24 13:41:58 +02:00
gemu
ddcc7d9990
jpeg on bw displays (#21832) 2024-07-24 13:32:03 +02:00
s-hadinger
b62b2d0d93
Matter support for split lights (SetOption68 1 and SetOption37 128) (#21834) 2024-07-24 10:20:25 +02:00
s-hadinger
8a7642f122
Matter fix inspect (#21833) 2024-07-24 08:51:23 +02:00
Theo Arends
895fbb2e8a Add optional USE_SONOFF_IFAN_CONFIG 2024-07-23 15:35:45 +02:00
Theo Arends
401d7b9b41 Fix StrCaseStr_P() 2024-07-23 14:28:36 +02:00
s-hadinger
c84faa79fb
Matter improve internal inspectfor superclasses (#21824) 2024-07-23 12:27:47 +02:00
s-hadinger
e085cfd3ab
Berry fix light.get for separate RGB/CT (#21818) 2024-07-22 20:38:14 +02:00
Theo Arends
f42e44a69d Support for Sonoff iFan04-H using template (#16402)
- Bump version v14.1.0.4
2024-07-22 15:35:20 +02:00
gemu
58485dec2a
fix resistive Touch xpt for 2 spi busses (#21814)
* fix xpt touch for 2 spi busses

* support for 2 utouch spi busses

* Update support.ino
2024-07-22 13:58:50 +02:00
Jan-David Förster
9878a96c0b
Update SHT3X driver to bring it into line with other sensors, e.g., HYT..., and avoid unnecessary I²C reads (#21816)
* Avoid unnecessary I²C reads, bring code in line with other sensors.

* Update xsns_14_sht3x.ino

fix copyright again
2024-07-22 13:58:17 +02:00
s-hadinger
8c9040919d
FIx typo in Parition_Wizard and re-generate tapp file (#21813) 2024-07-21 22:58:28 +02:00
s-hadinger
da169336ee
Berry simplified module persist (#21812) 2024-07-21 22:30:19 +02:00
Theo Arends
990a0e4257 Add Propagating upload to ESP8266 minimal 2024-07-21 15:22:15 +02:00
Theo Arends
e2fdf18625 Fix CalVer to SemVer updates 2024-07-21 12:23:10 +02:00
gemu
00a00a3505
fix pushcolors for displaytext (#21805) 2024-07-20 08:20:19 +02:00
bovirus
ebed3ded37
Update Italian language (#21792) 2024-07-18 08:28:43 +02:00
Theo Arends
a0893c9aae Add EPD update frame (#21788) 2024-07-17 17:52:30 +02:00
Theo Arends
105d18b9b6 Fix universal display slow response 2024-07-17 17:13:24 +02:00
Theo Arends
a448f538aa Revert "Fix universal display slow response"
This reverts commit 98a5bc95a971b24acf9931ab230c036336e02b48.
2024-07-17 16:22:34 +02:00
Theo Arends
98a5bc95a9 Fix universal display slow response 2024-07-17 16:20:28 +02:00
Theo Arends
b23a2f2304 Bump GPIOViewer version to v1.5.5 2024-07-17 14:28:50 +02:00
Theo Arends
85bff67d9b Add support for Wooliis Hall Effect Coulometer or Battery capacity monitor (#21732) 2024-07-17 14:14:44 +02:00
lmelette
9c8f3826b2
Added support for Wooliis LCD Coulometer/Battery Monitor (#21732)
* Added support for Wooliis LCD Coulometer/Battery Monitor

* Adjusted code structures and data types for Wooliis sensor

---------

Co-authored-by: Luca Melette <luca@positive.security>
2024-07-17 12:25:44 +02:00
Theo Arends
69f1ea5627 Move StateText fro MQTT to commands (#21782) 2024-07-16 15:16:18 +02:00
Christian Baars
6673fb906b
prevent crash with unconfigured audio (#21775) 2024-07-14 21:00:24 +02:00
Theo Arends
e9fdbea091 Unify display/touch init messages 2024-07-14 15:18:01 +02:00
Theo Arends
8f6a0b15c3 Update changelogs 2024-07-14 13:54:09 +02:00
Theo Arends
a18be12b77 Fix universal display software spi regression from yesterday 2024-07-14 10:01:34 +02:00
Jason2866
3d34097275
final i2s fix (#21770) 2024-07-13 18:11:33 +02:00
Theo Arends
7e22861090 Merge branch 'development' of https://github.com/arendst/Tasmota into development 2024-07-13 14:58:30 +02:00
Theo Arends
36329827fc Refactor universal display driver 2024-07-13 14:58:24 +02:00
Jason2866
db3d292cae
Update Tasmota Arduino Core 3.0.2 based on IDF 5.2.2
- i2s fix
2024-07-13 13:45:01 +02:00
Jason2866
d27ca0bc89
Platform 2024.07.11 (#21765)
Fix i2s issues
2024-07-12 23:01:35 +02:00
Theo Arends
279d9e5824 Add I2C display name during startup in universal display driver 2024-07-12 16:36:04 +02:00
Theo Arends
f68ac4377a Fix udisplay positional replacements (#21121) 2024-07-12 14:57:27 +02:00
Theo Arends
59de2fd979 Fix udisplay ESP8266 I2C no asterix in config (#21121) 2024-07-12 12:49:00 +02:00
Christian Baars
13330eb085
Berry: add int8 quantisation to Tensorflow lite driver (#21763)
* add input quantization, minor fixes

* prevent divideByZero
2024-07-11 23:05:47 +02:00
Theo Arends
23de275dbe Fix POWCT default calibration 2024-07-11 20:51:53 +02:00
Jan-David Förster
27083e3664
Bugfix: multiple SHT4x sensors at the same bus, support for SHT40-CD1B (#21755)
* fixes multiple SHT3X sensor type bug

Important when multiple sensors are present at the same bus. Prior to this fix, multiple SHT3X sensor were detected, but not SHTC3 and SHT4X!

* Update xsns_14_sht3x.ino

Extends I²C address range to include SHT40-CD1B sensors with address 0x46.

* Update I2CDEVICES.md

* Show bus when multiple sensors at different busses

* Make bus number less intrusive

Only show bus number if two sensors or more are active at more than one bus.

* variable renamed

* cleanup

* fix typo

* fix another typo

* Harmonization and saving code size for ESP8266

Harmonization with xsns_09_bmp driver, saving code size for ESP8266

* fix string for webserver

* Display address only if more than one sensor present.
2024-07-10 18:55:51 +02:00
s-hadinger
5df51a9365
Matter comment code used only by controler (#21752) 2024-07-09 14:01:45 +02:00
s-hadinger
b56e3c43a8
Berry improve solidification of bytes (#21751) 2024-07-09 13:19:24 +02:00
timehlers
a3048a0b25
add support for 4.2 inch epaper display from WeAct Studio (partial up… (#21717)
* add support for 4.2 inch epaper display from WeAct Studio (partial update)

* make ep_mode=3 decision more clear, reinserted an mistakenly removed comment

---------

Co-authored-by: timehlers <>
2024-07-08 17:25:06 +02:00
Theo Arends
105a08dd20 Skip MQTT response if command is prefixed with underscore (#21740) 2024-07-08 16:57:21 +02:00
Theo Arends
09b2670c45 Add command `Backlog3` to execute commands without response but rule processing (#21740) 2024-07-08 15:53:15 +02:00
Theo Arends
60d0c2208b update changelogs 2024-07-08 13:54:48 +02:00
Christian Baars
7cb8a3f968
Berry: add cam module, img class (#21743)
* cam module, img class
2024-07-07 19:50:33 +02:00
Jason2866
99374ae45b
Tasmota Platform 2024.07.10 (#21745)
* Tasmota Platform 2024.07.10
* Update IDF 5.2.2 based Platform
2024-07-07 18:54:29 +02:00
s-hadinger
2f62c156f9
Matter remove longpress announce (#21742) 2024-07-07 09:54:53 +02:00
Theo Arends
fee5251bd4 Fix universal display power regression (#21726) 2024-07-05 15:30:31 +02:00
Theo Arends
363cd8d79e Update changelogs 2024-07-05 11:59:16 +02:00
s-hadinger
be40830bc0
Matter support for 'Generic Switch' based on Tasmota Buttons (#21731) 2024-07-04 20:47:32 +02:00
s-hadinger
152239c3ac
Matter simplify code (#21729) 2024-07-04 19:41:53 +02:00
s-hadinger
522d7f6ee4
Berry int64 added low32() and high32() methods, used in Matter (#21728) 2024-07-04 19:19:21 +02:00
Theo Arends
dfa5b46494 Update changelogs 2024-07-04 16:18:53 +02:00
Theo Arends
04a6d5513b Prep serial IDF 5.2 support 2024-07-04 16:04:59 +02:00
Norbert Richter
843dd17aec
NeoPool add data validation and statistics (#21721)
Co-authored-by: Theo Arends <11044339+arendst@users.noreply.github.com>
2024-07-04 09:28:01 +02:00
s-hadinger
243df3f2cf
FUNC_BUTTON_PRESSED now contains press_counter encoded in XdrvMailbox.command_code (#21724) 2024-07-03 22:13:50 +02:00
s-hadinger
a260d334d0
Matter add ack in attribute response (#21722) 2024-07-03 21:07:28 +02:00
Jason2866
b1422ff6b5
make Tasmota compatible for Arduino espressif32 based on IDF 5.2.2 (#21723)
Co-authored-by: Christian Baars <Baars@gmx.de>
2024-07-03 20:27:18 +02:00
Theo Arends
59fc68026b Add Support for Sonoff POWCT Ring (#21131) 2024-07-03 16:31:43 +02:00
Theo Arends
9b537d81e0 Fix energy maxpower retry count (#21695) 2024-07-03 13:52:01 +02:00
Theo Arends
ac011132ee Fix ESP8266 MaxPower edge case 2024-07-03 11:07:59 +02:00
Theo Arends
1fd8de6762 Update energy structure 2024-07-02 18:47:55 +02:00
Theo Arends
640aabe1b3 Fix ESP32 MaxPowerHold edge case (#21695) 2024-07-02 18:07:53 +02:00
Theo Arends
0b54d49181 Refactor TM1621 driver 2024-07-02 17:21:48 +02:00
Theo Arends
0e6e4e8949 Prep support Sonoff Pow CT 2024-07-02 11:38:55 +02:00
Theo Arends
344fdf94f7 Update changelogs 2024-07-02 10:19:59 +02:00
s-hadinger
b6c488a883
Berry bytes.resize() for large sizes (#21716) 2024-07-01 22:53:49 +02:00
Theo Arends
c8e29dafc6 Changed ESP32 TM1621 number overflow from "9999" to "12E3" (#21131) 2024-07-01 12:31:02 +02:00
s-hadinger
2cc785bf20
Berry FUNC_BUTTON_MULTI_PRESSED event and make FUNC_BUTTON_PRESSED called only on state changes and once per second (#21711) 2024-06-30 21:00:14 +02:00
s-hadinger
6842b53425
Berry FUNC_BUTTON_MULTI_PRESSED event and make FUNC_BUTTON_PRESSED called only on state changes (#21709) 2024-06-30 19:14:32 +02:00
Theo Arends
65588b8126 Increase upper limits user entry for energy drivers (#16059) 2024-06-30 17:26:39 +02:00
Theo Arends
33062dc839 Refactor energy drivers 2024-06-30 16:58:37 +02:00
Theo Arends
171d641092 Update changelogs 2024-06-30 15:38:40 +02:00
s-hadinger
8d2d121b6d
Berry FUNC_ANY_KEY event calling any_key() (#21708) 2024-06-29 22:12:34 +02:00
s-hadinger
117eb79953
Berry refactor IM to detect failed subscription heartbeats (#21706) 2024-06-29 12:27:27 +02:00
s-hadinger
c58607a5b5
Berry math.min() and math.max() (#21705) 2024-06-29 10:42:21 +02:00
Theo Arends
8a0493b659 Cleanup esp32 energy 2024-06-28 18:04:50 +02:00
Theo Arends
8364eca708 Refactor esp32 energy margins entry 2024-06-28 17:51:05 +02:00
Theo Arends
271446fd66 Remove obsolete SafePower commands 2024-06-28 14:38:08 +02:00
Theo Arends
96a45a6dde Refactor ESP32 energy 2024-06-28 11:12:28 +02:00
Theo Arends
3371fde11e Update changelogs 2024-06-28 09:56:55 +02:00
s-hadinger
2c03980365
Berry tasmota.rtc("config_time") (#21703) 2024-06-27 23:13:39 +02:00
Theo Arends
621f6f59e1 Fix default power windows 2024-06-27 17:07:08 +02:00
Theo Arends
178d42c286 Change ESP32 support for energy margin checks, like `MaxPower2` per phase (#21695)
- Add ESP32 support for power and energy limit checks, like ``MaxEnergy2`` per phase (#21695)
- Bump version v14.1.0.3
2024-06-27 16:50:45 +02:00
Theo Arends
20d0207890 Update changelogs 2024-06-27 13:30:15 +02:00
s-hadinger
97017017a4
Matter full support of events (#21698) 2024-06-27 00:03:34 +02:00
Theo Arends
33225bfabb Update changelogs 2024-06-25 22:58:46 +02:00
Theo Arends
bf1dace55d Add ESP32 USE_FLOG support (experimental) 2024-06-25 22:52:15 +02:00
Jason2866
a38b885275
esp32 core 3.0.2 2024-06-25 17:33:15 +02:00
Jason2866
0df56eaffa
Tasmota esp32 platform 2024.06.11 (#21694) 2024-06-25 17:00:07 +02:00
Theo Arends
af1fa724af Fix non-webserver compilation 2024-06-25 16:36:28 +02:00
Jason2866
0bddfad14e
No Ethernet support for the C2 (#21691)
* No Ethernet for the C2

* Post process: Disable always Ethernet for C2

* better check for Ethernet available

* typo

* excluse c2 with `ifndef`
2024-06-25 15:13:16 +02:00
Jason2866
aa39e000f7
add C2 as target for BLE (#21685) 2024-06-23 21:44:56 +02:00
Theo Arends
ddf762b7cc Refactor GPS driver 2024-06-23 17:38:54 +02:00
Jason2866
17ea732753
Do not abort compile when safeboot firmware can not be downloaded (#21684)
* Message when dl of safeboot failed
* check for safeboot
2024-06-23 15:01:07 +02:00
Theo Arends
25f17d7141 Update changelogs 2024-06-22 14:22:09 +02:00
Roland Praml
f3dcbdcea9
FIX: Allow use of UART0 with enabled USB_CDC_CONSOLE (#21496)
Co-authored-by: Roland Praml <roland@DESKTOP-MKLGCJR>
2024-06-22 14:17:05 +02:00
Theo Arends
904fb01e75 Update changelogs 2024-06-22 14:12:48 +02:00
Jason2866
b853886cb7
Refactor strip_flags.py and add_c_flags.py (#21677)
* refactor strip-flags.py

* refac more readable

* make failsafe

* move var to top

* align
2024-06-22 13:37:20 +02:00
s-hadinger
c96a48b9e1
Matter refactor reading of multiple attributes to reduce memory pressure (#21675) 2024-06-22 13:07:49 +02:00
Jason2866
0ea245805b
Remove entrys in some boards.json (#21676)
which maybe are wrong, since we don't know if the MCU is connected via CDC or USB-serial chip.
2024-06-22 13:02:58 +02:00
Theo Arends
3701a8cedc Update changelogs 2024-06-22 12:54:08 +02:00
s-hadinger
5decd01299
Matter add copy to Path (#21674) 2024-06-22 10:17:50 +02:00
s-hadinger
40fb8fa7df
Fix Matter resumption final ack (#21673) 2024-06-22 10:15:39 +02:00
s-hadinger
9ac4712527
Matter fix TLV.U8 unsigned encoding (#21672) 2024-06-22 10:10:57 +02:00
gemu
aa380ea190
fix tcp server (#21660) 2024-06-21 16:35:20 +02:00
stefanbode
d18925897a
MQTT fix on inverted shutter (#21663)
* MQTT fix on inverted shutter

* MQTT fix on inverted shutter
2024-06-21 16:35:05 +02:00
Jason2866
3537d18483
Update esp8266 platform to 2024.06.10 (#21668)
* Update esp8266 platform (2024.06.00)

* Update strip-floats.py

* Rename strip-floats.py to strip-flags.py

* rename to `strip_flags.py`

* esp8266 v2.7.7
2024-06-20 23:23:53 +02:00
Jason2866
fe280fe6aa
remove compile flag for risc-v MCUs which is only valid for xtensa MCUs (#21665) 2024-06-20 16:22:49 +02:00
s-hadinger
2115e09839
Matter show event name in logs (#21649)
* Matter show event name in logs

* Optimize logging

* Human readable version
2024-06-16 22:18:50 +02:00
Christian Baars
d15b88f746
improve parser (#21648) 2024-06-16 20:54:59 +02:00
s-hadinger
0d267a546a
Matter prepare events (#21647) 2024-06-16 18:42:23 +02:00
Norbert Richter
2ce513f50c
NeoPool make compiler setting available by user_config_override.h (#21645) 2024-06-16 17:07:51 +02:00
s-hadinger
bdfe3524a9
Matter CASE Sigma1 resumption mode for faster reconnection (#21644) 2024-06-15 23:11:48 +02:00
Theo Arends
d3f8afed29 Fix GPS_VELOCITY (#18035) 2024-06-15 16:52:42 +02:00
bovirus
9499211d7d
Upload Italian language (#21641) 2024-06-15 15:49:06 +02:00
Jason2866
711e283925
allow define wifi credentials in pio (#21640) 2024-06-15 15:48:24 +02:00
Theo Arends
94aded8d5c Update changelogs 2024-06-15 13:59:17 +02:00
s-hadinger
b16b3859e3
Matter add FanSpeed255 (#21638) 2024-06-15 13:34:18 +02:00
s-hadinger
2cf0eda870
Matter add Fan support (virtual only) (#21637)
* Matter add Fan support (virtual only)

* Add MtrReceived event
2024-06-15 12:51:08 +02:00
s-hadinger
767ac60266
Fix Matter interverted attributes 0xFFF9 and 0xFFFB (#21636) 2024-06-15 12:20:52 +02:00
bovirus
342ba2bd44
Update Italian language (#21635) 2024-06-15 11:11:42 +02:00
s-hadinger
2c1f6b24d3
Matter add internal debug option (#21634) 2024-06-15 10:56:48 +02:00
Theo Arends
0c49262d54 Update changelogs 2024-06-14 22:40:27 +02:00
s-hadinger
7cb8c0259d
Matter support for Rain sensor (#21633) 2024-06-14 18:54:27 +02:00
Theo Arends
75c47b6948 Extend command `SetOption147 1` to disable publish of IRReceived MQTT messages (#21574) 2024-06-14 11:23:03 +02:00
Theo Arends
9451f20b43 Update changelogs 2024-06-14 10:46:14 +02:00
gemu
cbff86695f
replace vars in descriptor + line (#21622) 2024-06-14 10:14:44 +02:00
Norbert Richter
95f6032d86
Change NeoPool using temperature as only frequently changing value for NPTeleperiod (#21628) 2024-06-14 10:14:13 +02:00
Jason2866
fe31d84ac6
add lib_ignore for rtsp lib
to env which does not support webcam
2024-06-13 21:29:24 +02:00
Jason2866
4fbe3590be
add TM1638 switches to display build (#21617) 2024-06-12 20:23:43 +02:00
Theo Arends
6e8e3cc740 Update changelogs 2024-06-12 10:54:17 +02:00
Theo Arends
7bde0b89d1 Fix QMP6988 2024-06-12 10:50:29 +02:00
s-hadinger
bd47d99ceb
Berry classof extended to class methods (#21615) 2024-06-12 10:48:38 +02:00
Theo Arends
87148ae0c1 Change SerialBridge command `SSerialSend9 replaced by SSerialMode`
- Bump version v14.1.0.2
2024-06-11 17:27:39 +02:00
Jason2866
7e8bcd896a
include SD_MMC.h only when supported (#21611) 2024-06-11 13:25:47 +02:00
Theo Arends
4858ec0aef Allow receive or send using SerialBridge 2024-06-11 12:41:19 +02:00
Jason2866
a02e3aa651
Update PULL_REQUEST_TEMPLATE.md 2024-06-11 11:25:45 +02:00
Theo Arends
ae9d2a2c85 Refactor display modes1 to 4 2024-06-11 11:07:30 +02:00
Theo Arends
0471ba24c1 Add support for QMP6988 temperature and pressure sensor 2024-06-10 16:05:25 +02:00
Theo Arends
7471d754f7 Update changelogs 2024-06-10 11:54:22 +02:00
Christian Baars
aa217e13b9
refactoring, bugfixes, generic device scanning (#21603) 2024-06-10 10:50:50 +02:00
Theo Arends
d046f9c25f Update changelogs 2024-06-10 10:50:19 +02:00
stefanbode
ae499eb73a
MQTT is not reporting the correct LastChange (#21605)
I assume this is just missing. I got some side effects on shutters where on MQTT commands the source is still the LAST one before the MQTT
2024-06-10 10:42:02 +02:00
s-hadinger
a53e057d54
HASPmota fix float rounding (#21604) 2024-06-09 19:39:15 +02:00
s-hadinger
9546390a1f
Berry add math.round (#21602)
* Berry add `math.round`

* add unit tests

* math.roung() returns real
2024-06-09 19:01:15 +02:00
Theo Arends
e4bf2a5c27 Update changelogs 2024-06-09 18:33:47 +02:00
s-hadinger
c86e4db3a9
Berry automatic rounding of float to int when calling C mapped functions (#21601) 2024-06-09 17:49:29 +02:00
Theo Arends
bdc15960ad Refactor display show sensors 2024-06-09 16:25:04 +02:00
Theo Arends
ea5c9bc9b6 Fix DisplayMode MQTT (Un)Subscribe without restart 2024-06-09 13:46:54 +02:00
Theo Arends
8cfa6f28ea Fix restart on wifimanager timeout 2024-06-09 10:40:01 +02:00
Theo Arends
3cae94d710 Update changelogs 2024-06-09 10:35:03 +02:00
Jason2866
c556c06413
remove dead code (#21595) 2024-06-09 10:25:32 +02:00
s-hadinger
01140d3013
HASPmota rounds to nearest int values passed as 'real' (#21599) 2024-06-08 22:10:43 +02:00
s-hadinger
c909aecd93
Matter support for bridged Air Quality (#21597) 2024-06-08 18:53:10 +02:00
s-hadinger
4c5c6f726f
Matter align names of endpoint classes with hierarchy (#21596) 2024-06-08 18:33:06 +02:00
Theo Arends
1e33b45ea8 Add partial DisplayText features to modes1 to 5 2024-06-08 17:22:19 +02:00
Theo Arends
ff961df336 Change display timing splash screen with display modes 1 to 5 2024-06-08 15:33:44 +02:00
s-hadinger
7c48ab710a
Matter fix Air Quality sensors (#21592) 2024-06-08 09:49:39 +02:00
s-hadinger
02cd72403d
Matter size optimization (#21590) 2024-06-07 20:44:17 +02:00
s-hadinger
5a1ae70549
Matter filter suffix automatically added for sensors (#21589) 2024-06-07 19:48:03 +02:00
s-hadinger
8479da0afb
Remove obsolete comment in my_user_config.h 2024-06-07 13:04:44 +02:00
Theo Arends
9350f68ac5 Replace optional MQTT_TELE_RETAIN to Energy Margins message by `SensorRetain` 2024-06-07 11:48:52 +02:00
s-hadinger
d16a502f36
Berry fix potential crash when solidifying loaded bytecode (#21583) 2024-06-06 22:11:52 +02:00
Theo Arends
a99c6d67bb Add XIAO ESP32S3 Sense camera pins 2024-06-06 18:14:30 +02:00
Theo Arends
c7083629e1 update changelogs 2024-06-06 16:29:20 +02:00
Marius Bezuidenhout
f68e2285e8
Fixed incorrect output size clamping (#21568) 2024-06-06 09:39:23 +02:00
s-hadinger
0bcb981556
Matter refactoring of bridged devices (#21575) 2024-06-05 23:13:48 +02:00
Jason2866
e198ffb22d
Tasmota esp32 platform 2024.06.10 (#21569) 2024-06-05 15:07:38 +02:00
Jason2866
f3fa9dfd9b
Update M5stack_core2_display.ini 2024-06-05 12:53:13 +02:00
s-hadinger
9e168d84d7
Berry input() returns empty string and does not crash (#21565) 2024-06-04 23:30:01 +02:00
Jason2866
89b4376e31
uTouch for m5core2 2024-06-04 17:03:05 +02:00
Jason2866
7ae86d336b
add uTouch settings 2024-06-04 16:45:08 +02:00
Theo Arends
dcc7021384 Remove GPIO_I2S_BCLK_IN, GPIO_I2S_WS_IN 2024-06-04 14:19:11 +02:00
Theo Arends
7d87bf0dcc Update changelogs 2024-06-04 09:37:02 +02:00
s-hadinger
01f9097acb
Add default value for SetOption151 (#21560) 2024-06-03 22:53:13 +02:00
s-hadinger
4f732477dd
Matter support for Air Quality sensors (#21559) 2024-06-03 21:46:58 +02:00
s-hadinger
a51c511d52
Berry bytes solidification (#21558)
* Berry prepare for bytes() solidification

* Berry solidification of bytes objects

* Berry solidification of `bytes` instances
2024-06-03 21:14:44 +02:00
Theo Arends
243411916b Bump v14.1.0.1 2024-06-03 14:50:59 +02:00
Christian Baars
7b678ba2c8
forgotten safety check (#21549) 2024-06-03 12:09:38 +02:00
blenk92
2d33a77ba5
Support Levoit Core200s (WIP, Feedback requested) (#21502)
* Support Levoit Core 200S

Add berry script to support Levoit Core 200S (and possibly other too
since levoit offers multiple similar devices)

* Core200S: fix comments
2024-06-03 09:50:28 +02:00
Theo Arends
fd02f5aefc Fix GPIO16 as Transmit enable pin (#21269) 2024-06-02 17:15:11 +02:00
Theo Arends
132b98f0c2 Change GPIOViewer from v1.5.3 to v1.5.4 (No functional change) 2024-06-02 12:03:28 +02:00
Andreas Doppelhofer
0249f66066
SML: Allow larger offset when using x to ignore bytes (#21535)
* Allow larger offset when using x to ignore bytes

STW Klagenfurt sends 355 bytes, and the interesting values starts somewhere at position 304. Therefor we need to set a larger uint range to allow more than 255 bytes to ignore.

* Update xsns_53_sml.ino

---------

Co-authored-by: Theo Arends <11044339+arendst@users.noreply.github.com>
2024-06-02 11:18:35 +02:00
Theo Arends
b58615183f Update changelogs 2024-06-02 11:00:30 +02:00
Christian Baars
979dd86730
Bugfix: crash when using tjpegd and LVGL (#21544)
* prevent crashes when using tjpegd in other places in Tasmota

* do not use external tjpegd in Tasmota
2024-06-02 09:48:07 +02:00
s-hadinger
e13c0a7114
Berry coc parser keeps order of variables (#21542) 2024-06-01 20:46:55 +02:00
Theo Arends
8c4388bf47 Fix M5AtomS3 display descriptions 2024-05-31 15:37:23 +02:00
Theo Arends
fc7638e684 Update changelogs 2024-05-31 10:07:28 +02:00
s-hadinger
0bd5f6b27a
Remove deprecated code from drivers, USE_TTGO_WATCH and USE_M5STACK_CORE2 (#21533) 2024-05-31 08:58:11 +02:00
Theo Arends
90e21a5902 Update changelogs 2024-05-30 14:22:14 +02:00
Roland Praml
4d9e9198b5
SML: FastExit for binary SML parsing (#21497)
* SML: FastExit for binary SML parsing

* moved the fast-exit in the SML-shift-in

* Using constants for flags

---------

Co-authored-by: Roland Praml <roland@DESKTOP-MKLGCJR>
2024-05-30 14:18:26 +02:00
Theo Arends
533b86d890 Update changelogs 2024-05-30 14:12:20 +02:00
s-hadinger
ec696509b9
uDisplay Parallel display on Core3 (#21529) 2024-05-30 12:44:09 +02:00
Theo Arends
f5ed2e0845 Fix oops 2024-05-30 10:54:32 +02:00
Theo Arends
2771827c15 Changed TCP bridge increased baudrate selection (#21528)
- Bump v14.0.0.4
2024-05-30 10:50:12 +02:00
Theo Arends
b61ea17ce1 Bump version v14.0.0.3 2024-05-29 17:17:53 +02:00
Jason2866
d134b88c68
ESP32 Platform 2024.05.13 (#21524)
* ESP32 Platform 2024.05.13

reverts Arduino PR 9453 `WiFiClient - rename flush() to clear()`

* trigger PR CI
2024-05-29 16:59:33 +02:00
Theo Arends
2347f37269 Revert "Fix ESP32 slow response when using UDP as in emulation (#21470)"
This reverts commit f132663dfe18b0ac7937302d7c9f985d49fc209e.
2024-05-29 16:45:16 +02:00
Theo Arends
7c98e0d303 Revert "Another few victims of core3 UDP"
This reverts commit 27c35befdf1302c7bab37063b67c22db49d54d9c.
2024-05-29 16:45:04 +02:00
Theo Arends
adcc50ac6e Revert "Fix network flushes"
This reverts commit b88ec44d15394fc18bf2f1e23d4d0263c65ea81d.
2024-05-29 16:44:50 +02:00
Theo Arends
b88ec44d15 Fix network flushes 2024-05-29 14:09:54 +02:00
Theo Arends
27c35befdf Another few victims of core3 UDP 2024-05-29 11:57:29 +02:00
Theo Arends
f132663dfe Fix ESP32 slow response when using UDP as in emulation (#21470) 2024-05-29 11:46:55 +02:00
Theo Arends
bc6faa733c Refactor Telegram 2024-05-28 17:47:35 +02:00
Christian Baars
a4dbc57448
multiple fixes (#21511) 2024-05-28 10:59:57 +02:00
Theo Arends
7b478f718c Update changelogs 2024-05-27 22:47:08 +02:00
s-hadinger
bb40642225
Fix Telegram TLS fingerprint, remove CA validation (#21514) 2024-05-27 22:31:27 +02:00
s-hadinger
0a2990de59
Update Telegram CA (Go Daddy Root Certificate Authority - G2) (#21510) 2024-05-27 18:21:05 +02:00
Theo Arends
1e42b5d131 Merge branch 'development' of https://github.com/arendst/Tasmota into development 2024-05-27 15:46:27 +02:00
Theo Arends
5085a8bbbb Bump version v14.0.0.2 2024-05-27 15:46:15 +02:00
Jason2866
2aa8787884
disable ESP32 WDT (#21509) 2024-05-27 15:40:16 +02:00
Theo Arends
0fe893b01d Fix unsupported %.2f (#21508) 2024-05-27 15:37:15 +02:00
Christian Baars
33f491a8e6
scan wifi asynchronously (#21498) 2024-05-27 15:17:09 +02:00
Theo Arends
00694abbde Update changelogs 2024-05-27 14:07:18 +02:00
Roland Praml
e07b0e42b3
SML: Fix compile error when median-filter is disabled (#21495)
Co-authored-by: Roland Praml <roland@DESKTOP-MKLGCJR>
2024-05-27 13:11:54 +02:00
s-hadinger
e56f6a150d
Berry add reuse of methods for interface-like code reuse (#21500) 2024-05-26 23:05:43 +02:00
btsimonh
a78169b43a
Webcamshutdown - use FUNC_ABOUT_TO_RESTART (#21462)
* use FUNC_ABOUT_TO_RESTART for webcam shutdown in webcamv2

* fix an annoying compile warning - lengths are pre-checked to fit anyway.
2024-05-25 19:51:46 +02:00
s-hadinger
25a2a46917
Matter auto-fix IPv6 link-local zone id when network reconnects (#21494) 2024-05-25 19:51:00 +02:00
Jason2866
662b84947b
ESP32 Platform 24.05.12 (#21493) 2024-05-25 13:36:55 +02:00
Christian Baars
688f3ffb19
Small changes to berry_custom to better keep the local repository clean (#21491)
* keep berry_custom clean with regards to GIT

* keep .keep
2024-05-25 09:23:08 +02:00
s-hadinger
c161f63c9a
Berry fix message for borrowed method (solidification) 2024-05-24 22:59:19 +02:00
s-hadinger
0d3e888147
Berry change internal storage of parent class for methods (#21490)
* Berry change internal storage of parent class for methods

* Fix compilation of zigbee

* Patch solidify for berry_custom
2024-05-24 22:32:37 +02:00
btsimonh
3e0b70af10
Ufs serve fix - makes it work better on esp32cam (ai thinker style) (#21486)
* Add yield() in file listing, so watchdog does not trigger with very large folders

* update UFSServe function to be like download function.
This removes the use of server.streamFile, and provides a much more reliable download.
Make UFSServe always use this function, regardless of auth requirement.  (i.e. no use of the original in the original class, as it still uses streaming.)
Note that UFSServe is enab;ed with #define UFILESYS_STATIC_SERVING
2024-05-24 22:02:09 +02:00
Christian Baars
e5521bb763
Build system: allow easy solidification of external Berry (#21430)
* custom solidification

* solidify-from-url

* forgot folders

---------

Co-authored-by: Radio Loge <radiologe@MacBook-Pro-von-Radio.local>
2024-05-24 20:57:43 +02:00
Christian Baars
1ca91a8170
Berry webserver: allow to content_send bytes (#21479) 2024-05-24 20:55:56 +02:00
Christian Baars
01bd6ec52a
apll not supported on all SOCs (#21483) 2024-05-24 15:55:24 +02:00
Theo Arends
a9e7426cff Changed support W5500 SPI ethernet using four SPI GPIOs only without IRQ and RESET 2024-05-23 15:16:05 +02:00
btsimonh
522f6c5e00
fail UFSServe if Webserver is null. (#21467) 2024-05-22 16:26:26 +02:00
Theo Arends
a14aad93cb Revert "Fix SendMail watchdog restart during reconnect to SMTP server (#21454)"
This reverts commit 784bc3ea5f939c0bc6c0bc2b0c5cd6a8c392a351.
2024-05-22 15:19:14 +02:00
Theo Arends
784bc3ea5f Fix SendMail watchdog restart during reconnect to SMTP server (#21454) 2024-05-22 15:18:38 +02:00
Christian Baars
da4fab66c1
more consistent usage of variables, really use apll rx setting (#21459) 2024-05-21 17:43:43 +02:00
Theo Arends
3b4035b3e2 Add FUNC_ABOUT_TO_RESTART (#21460) 2024-05-21 17:28:02 +02:00
Theo Arends
73350da88c Even better fix 2024-05-21 17:14:47 +02:00
Theo Arends
140e4791aa nicer solution skipping loracommand header 2024-05-21 17:10:19 +02:00
Theo Arends
08afd40823 Remove command header 2024-05-21 16:48:14 +02:00
Theo Arends
00a389bbb2 Add default LoRaCommand disable reception (#17790) 2024-05-21 16:18:46 +02:00
Theo Arends
a4c7add8df Prep ESP32 SPI bus 2 support 2024-05-21 15:58:16 +02:00
Theo Arends
2e51860464 Fix GUI auto-decimal (#21445) 2024-05-21 14:27:02 +02:00
Theo Arends
7824378755 Update changelogs 2024-05-21 10:22:29 +02:00
s-hadinger
4e6ba4fccc Solidified Code updated 2024-05-21 07:40:50 +00:00
Ludovic BOUÉ
dc107a1a6e
Support for Matter 1.3 Water leak detectors (#21456)
* Create Matter_Plugin_2_Sensor_Waterleak.be

* Update Matter_Plugin_2_Sensor_Waterleak.be

* Create Matter_Plugin_3_Bridge_Sensor_Waterleak.be

* Create Matter_Plugin_9_Virt_Sensor_Waterleak.be

* Update Matter_UI.be

* Update be_matter_module.c

* Update Matter_UI.be

* Solidify Matter

* Solidified new Matter files

* Solidified new Matter files
2024-05-21 09:40:05 +02:00
btsimonh
2eccc96c62
Ble 32 fixscanning (#21451)
* restore scanend callback

* fix ble scanning time from 20ms to 20s

* fix connection timeout.
Use ->getLastError() to find out why we did not connect.

* add #define to remove hack if not required in the future.
2024-05-20 20:56:55 +02:00
s-hadinger
7253e83a04
Fixed Zigbee crash when removing ZbName (#21449) 2024-05-20 16:51:35 +02:00
Christian Baars
e7f69ebc5f
bugfix: webradio crash with invalid url (#21446) 2024-05-20 09:12:14 +02:00
bovirus
62af6f3a7c
Update Italian language (#21437)
* Update Italian language

* Update Italian language (2)

---------

Co-authored-by: Theo Arends <11044339+arendst@users.noreply.github.com>
2024-05-20 09:11:48 +02:00
s-hadinger
239ddfc15c
Wrong timeout in WebQuery and webclient since Core3 (#21442) 2024-05-19 19:47:32 +02:00
Christian Baars
7f7bcd0ab6
small refactoring, more robust handling of commands (#21439) 2024-05-19 17:12:54 +02:00
Theo Arends
009aa8d481 Prep ASR650X LoRaWan node 2024-05-19 12:09:33 +02:00
Theo Arends
ec97552c8b Update changelogs 2024-05-19 11:20:42 +02:00
Christian Baars
0e5b2a86b8
i2s audio ,some improvements (#21433) 2024-05-18 22:15:59 +02:00
Barbudor
285a6f3532
knx dimmer and colour (#21434) 2024-05-18 22:15:46 +02:00
Barbudor
60a42f015e
Add command WebRun (as WebQuery extension) (#21364)
* tasmota-1m32

* ready

* add code usage

* clean

* remove also that

* remove WebQueryWithFunction in favor of default value
2024-05-18 22:15:16 +02:00
Theo Arends
33b0c1d5c2 Update changelogs 2024-05-18 12:29:51 +02:00
s-hadinger
b69f9b77a7
Berry Leds matrix alternate more and error about 'bri' attribute (#21431) 2024-05-18 08:34:59 +02:00
s-hadinger
27c731c7b6
Avoid connection errors when switching to safeboot to upload OTA firmware (#21428) 2024-05-17 20:40:17 +02:00
Jason2866
ea5cc628a8
no need for clang anymore 2024-05-17 14:56:21 +02:00
s-hadinger
5b207209a5
Berry binary compiled with gcc (#21426) 2024-05-17 14:22:10 +02:00
Theo Arends
0d225839da On universal display remove default backlight power if a PWM channel is used for backlight 2024-05-17 14:08:34 +02:00
Theo Arends
2ddbc7c7fa Fix watchdog restart or freeze if `displaytext` is more than 128 characters (#21401) 2024-05-17 12:47:14 +02:00
s-hadinger
b9bd558abe
Enabled watchdog for ESP32 and variants (#21422)
* Enabled watchdog for ESP32 and variants

* Ensure compilation for sageboot

* Fix compilation

* Fix compilation for RISCV
2024-05-16 21:19:34 +02:00
Theo Arends
6ba59385d4 Fix Domoticz re-subscribe on MQTT reconnect. Regression from v13.4.0.3 (#21281) 2024-05-16 14:43:30 +02:00
Theo Arends
f602470aeb Update changelogs 2024-05-16 13:50:50 +02:00
s-hadinger
85a9eda143
Revert "Enabled watchdog for ESP32 and variants (#21414)" (#21417)
This reverts commit e4ea62cc0dd2991da603f7b779656dc8a143edef.
2024-05-15 22:52:49 +02:00
s-hadinger
ec6448b353
Drop support of old insecure fingerprint algorithm (deprecated since v8.4.0) (#21416) 2024-05-15 22:30:10 +02:00
s-hadinger
e4ea62cc0d
Enabled watchdog for ESP32 and variants (#21414) 2024-05-15 19:13:45 +02:00
Theo Arends
ac06195907 Remove non IDF5 code 2024-05-15 16:45:42 +02:00
Theo Arends
1d7f3e8f07 Fix compile warning (#21411) 2024-05-15 15:54:18 +02:00
Theo Arends
17a299dd00 Update changelogs 2024-05-15 15:37:25 +02:00
Jason2866
2705e6177d
use compiler option no-target-align (#21407) 2024-05-15 09:40:33 +02:00
Theo Arends
0322eb370c Update v14.0.0.1 2024-05-14 16:48:15 +02:00
Theo Arends
9105b56ffd Bump v14.0.0.1 2024-05-14 16:45:58 +02:00
Theo Arends
f9ca7d4821 Update changelogs 2024-05-14 10:59:23 +02:00
s-hadinger
4cda2d7dc2
Berry Leds uses native WS2812 driver by default (#21406) 2024-05-13 22:21:58 +02:00
s-hadinger
2865630309
Prepare for ESP32 WDT (#21383)
* Prepare for ESP32 WDT

* make `sleep()` reset WDT
2024-05-12 21:12:08 +02:00
s-hadinger
15a5ef30c4
Fixed Berry gpio.dac_voltage() (#21403) 2024-05-12 21:11:14 +02:00
Theo Arends
50e9bb70aa Update RELEASENOTES.md 2024-05-10 11:09:17 +02:00
Barbudor
466dcae840
Quick Fix: KNX loose config on restart (#21378)
* quick fix

* revert to ascillato test
2024-05-10 10:46:40 +02:00
Theo Arends
3e8ca44681 Attempt to fix TasMesh (#21395) 2024-05-10 10:34:58 +02:00
Theo Arends
c7a5cd58f4 Fix a compile error 2024-05-10 10:18:46 +02:00
Theo Arends
178b11196a Fix default compile 2024-05-09 14:34:25 +02:00
Theo Arends
141a4086b3 Revert "ESP8266 removed SPI check for valid SPI Chip Select (#21393)"
This reverts commit 584329a6c0ba231d0cdd4fc151a1ae39b7bcf86d.
2024-05-09 14:11:57 +02:00
Theo Arends
584329a6c0 ESP8266 removed SPI check for valid SPI Chip Select (#21393) 2024-05-09 13:52:07 +02:00
Theo Arends
2f3663b8aa Update changelogs 2024-05-08 13:26:36 +02:00
gemu
61814e79fe
fix jpeg compile core3 (#21387) 2024-05-08 13:21:14 +02:00
chefpro
1d626225de
Add display.ini file for esp32-1732S019 development board which is based on esp32s3 (#21384)
Co-authored-by: Peter Rustler <peter@rustlerit.de>
2024-05-08 09:18:51 +02:00
Theo Arends
522929384c Update changelogs 2024-05-07 16:16:39 +02:00
Jason2866
da0e4c433f
Update platform to 2024.05.11 (#21381) 2024-05-07 15:19:32 +02:00
Theo Arends
9314032f69 Fix safeboot logging flood 2024-05-07 11:05:54 +02:00
fb-pilot
2f59523416
beautified code xsns 33 qmc5883l (#21312)
* Add files via upload

* Add files via upload

beautified code

* Update xsns_33_qmc5883l.ino

date removed

* Add files via upload

adapt defaults for bf-xsns_33_qmc5883l

* Update tasmota/my_user_config.h

Co-authored-by: Erik Kunze <eku@users.noreply.github.com>

---------

Co-authored-by: Erik Kunze <eku@users.noreply.github.com>
2024-05-07 10:06:57 +02:00
Christian Baars
08f9b37b99
Berry add gpio.set_freq() (#21375) 2024-05-07 09:36:39 +02:00
Theo Arends
21c7f4c81b Minor changes 2024-05-06 17:36:39 +02:00
Theo Arends
c5e122f922 Add GPIOViewer pin mode support 2024-05-06 17:20:52 +02:00
fb-pilot
0d6baa00e4
add options for INA3221 driver (#21310)
* Add files via upload

* Add files via upload

* Add files via upload

* Delete tasmota/xsns_100_ina3221.ino

---------

Co-authored-by: Jason2866 <24528715+Jason2866@users.noreply.github.com>
2024-05-06 11:42:31 +02:00
Theo Arends
d469f2a565 Update changelogs 2024-05-06 10:34:48 +02:00
Jason2866
918020202d
Safeboot show correct flash partition size (#21366) 2024-05-05 22:17:10 +02:00
s-hadinger
f83c58fa0e
Matter broken NOCStruct types preventing pairing with HA (#21365) 2024-05-05 21:52:10 +02:00
s-hadinger
c07a90bea0
Letsencrypt ISRG_Root_X1 changelog 2024-05-05 21:21:53 +02:00
Anton Gladky
dd161dc732
Replace Let’s Encrypt R3 by ISRG Root X1 one. (#21352)
According to the blog post [1] new intermediate certificates
will be deployed. Thus R3 certificate, used now will not allow
to setup a secure connection.

This root certificate is valid till 2035/06
2024-05-05 21:19:16 +02:00
s-hadinger
e6e15a214f
Seriallog set to SERIAL_LOG_LEVEL at boot (#21363)
* Seriallog set to `SERIAL_LOG_LEVEL` at boot

* Ensure seriallog has at least LOG_LEVEL_INFO at boot
2024-05-05 21:08:24 +02:00
s-hadinger
7a9f60facc
Berry added after_teleperiod event matching FUNC_AFTER_TELEPERIOD 2024-05-05 19:43:40 +02:00
s-hadinger
57cae7c259 Solidified Code updated 2024-05-05 17:43:19 +00:00
David Gwynne
cced3d1d93
let berry drivers provide "after_teleperiod" handlers (#21351)
this is useful if you want to periodically report the state of something
handled separately to the sensors output.
2024-05-05 19:42:27 +02:00
Theo Arends
c41f18a9b6 Fix calloc allignment 2024-05-05 18:26:21 +02:00
Theo Arends
53073b374d Fix initial default settings 2024-05-05 18:21:03 +02:00
s-hadinger
3d0532ce8c
Fixed void unwanted OTA upgrade when safeboot starts for the first time (#21360) 2024-05-05 18:03:32 +02:00
Marius Bezuidenhout
73b0ec2c1d
Fix xsns_87_mcp2515 (#21331)
* Fixed mcp2515 not getting initialised and correctly setting configured CS pin

* Changed MCP2515_BMS_FREEDWON to MCP2515_BMS_SMA as SMA is better known.
2024-05-05 16:02:44 +02:00
Theo Arends
a3e57d6479 Add Support for compile time hostname with #define WIFI_DEFAULT_HOSTNAME (#21236) 2024-05-05 15:37:03 +02:00
Theo Arends
c0965f5624 Fix compile warning 2024-05-05 15:02:01 +02:00
Theo Arends
abc460575a Update changelogs 2024-05-05 14:38:55 +02:00
s-hadinger
c4e847d288
Fix crash in WebUI 2024-05-05 11:28:28 +02:00
Jason2866
369e5aaef1
Platform update 2024-05-04 20:57:53 +02:00
Christian Baars
ca5a2d322d
fix Tensorflow driver for IDF5.x (#21348) 2024-05-04 19:59:47 +02:00
Jason2866
abd013eda8
Platform 2024.05.10 (#21347) 2024-05-04 19:02:45 +02:00
Jason2866
1e63c8924e
use "minimal" instead of "safeboot" (#21346) 2024-05-04 15:34:11 +02:00
s-hadinger
599526a90c
`Publish3` to send binary data encoded as Hex, disabled in safeboot (#21345) 2024-05-04 15:26:07 +02:00
Jason2866
3be5f630e1
fix s2cdc serial console (#21344) 2024-05-04 15:14:51 +02:00
Marius Bezuidenhout
545cc27ca8
Fixed HexToBytes function. Added Publish3 command. (#21329) 2024-05-04 14:42:35 +02:00
Christian Baars
fffb43fa79
fix conflicting log_level definitions (#21337) 2024-05-03 23:25:41 +02:00
Jason2866
1d7498d0b8
remove serial bridge from safeboot (#21334)
* remove serial bridge from safeboot
* Enable SPI in ESP32 safeboot
2024-05-03 15:31:48 +02:00
Jason2866
9168f7b198
More shrink of safeboot (#21333)
* remove crash recorder from safeboot

* small refactor

* safeboot more shrink
2024-05-03 15:01:31 +02:00
Jason2866
9b8cd42e5f
remove crash recorder from safeboot (#21332)
* remove crash recorder from safeboot

* small refactor
2024-05-03 14:47:14 +02:00
Christian Baars
6f20dcd0ed
Prepare restoration of Tensorflow driver for Core 3 (#21327)
* Fix compilation of conv.cc

* fix compilation of depthwise_conv.cc
2024-05-03 12:28:49 +02:00
s-hadinger
041540c80c
Changed internal macro APP_SLEEP to TASMOTA_SLEEP to specify default sleep in ms (#21324) 2024-05-03 09:03:45 +02:00
s-hadinger
18bdf07903
Reduced safeboot size by 2.9KB (#21322)
* Reduced safeboot size by 2.9KB

* remove leftover
2024-05-02 23:09:56 +02:00
s-hadinger
24c8f65cb5
Compilation of Ethernet when SPI drivers are disabled (#21321) 2024-05-02 22:07:37 +02:00
s-hadinger
d08bf78e24
Zigbee startup event triggered after plugins are loaded (#21320) 2024-05-02 21:54:44 +02:00
s-hadinger
f7e285ab11
Fixed EthType for Core3 (#21317) 2024-05-02 14:46:28 +02:00
Jason2866
dbafe1e167
PIO inspect for ESP32 2024-05-02 14:09:23 +02:00
Jason2866
a67f4f0c06
Make use of PIO Project Inspect possible
without the set option, Inspect tries to analyze every lib which does fail
2024-05-02 13:57:18 +02:00
Christian Baars
08c3416255
Berry example: wave file recorder (#21315) 2024-05-02 13:36:28 +02:00
Jason2866
fb78c3a796
Fix PIO Inspect
Solo1 framework does not support PSRAM
2024-05-02 13:31:34 +02:00
Jason2866
50979c328c
Fix upper lower case difference 2024-05-01 15:18:25 +02:00
Jason2866
117cee9e6e
Update esp32 platform to 2024.04.14 (#21299)
* use new HWCDC Arduino code
2024-04-30 17:58:30 +02:00
s-hadinger
fd148a8d12
Berry math.inf, math.isinf() and fixed json ouput for inf and nan (#21304) 2024-04-29 22:55:57 +02:00
Christian Baars
5b5fdb0afe
WIP: make I2S bridge compile with Core 3, untested on hardware (#21301)
* make I2S bridge compile with Core 3, untested on hardware

* typo USE_I2S_BRIDGE

* rm Core 2 version
2024-04-28 22:09:09 +02:00
legchenkov
ecf7d444c6
Add Support for AHT30 Temperature and Humidity Sensor (#19922)
* Update xsns_63_aht1x.ino

Support for AHT30 added. Fixed command for loading factory calibrated data and reset command, added needed delay after read command and increased measurement period to reduce heating of sensor.

* Update xsns_63_aht1x.ino

* Update xsns_63_aht1x.ino

The reset command is aligned with the AHT10/20/30 datasheet.

* Update ru_RU.h

Translated Dew Point to russian Точка росы for sensors

* Delete tasmota/language/ru_RU.h

Will go to separate PR

* Add files via upload

* Update ru_RU.h

Partial translation update

* Add files via upload
2024-04-28 21:34:36 +02:00
Jason2866
852ce100db
add USE_I2S_ALL (#21298)
Co-authored-by: Staars <baars@klinikum-brandenburg.de>
2024-04-28 18:09:43 +02:00
Jason2866
27d2a0a2d5
add target reset (#21292) 2024-04-27 21:52:39 +02:00
Christian Baars
b3c075c666
I2S changes for Core 3 (#21291)
* i2s fixes and refactoring

* DMA setting added, more refactoring
2024-04-27 20:50:03 +02:00
s-hadinger
5cc5e5ef45
HASPmota demo of Renaissance Watch for 480x480 displays (#21290)
* HASPmota demo of Renaissance Watch for 480x480 displays

* Put arrow in front of date
2024-04-27 19:05:24 +02:00
Jason2866
71c8748def
Revert "Platform 2024.04.13 (#21264)" (#21288)
This reverts commit 492c6bbda26be0b23d3c5d7b4dba48f7380a48c7.
2024-04-27 18:56:11 +02:00
s-hadinger
bf01e5bb70
Fix async HMDI CEC (#21287) 2024-04-27 18:22:50 +02:00
sfromis
311a9f18e6
Wrong feature bit for USE_SPL06_007 (#21286)
Obvious "typo" in setting the feature bit for this recently added sensor. Already mentioned in https://github.com/arendst/Tasmota/pull/21185#issuecomment-2071122611
2024-04-27 16:30:57 +02:00
bovirus
4aa2da3eb2
Update Italian language (#21283) 2024-04-26 16:52:35 +02:00
fb-pilot
e2a08d5d01
Add files via upload (#21262)
fix display multiple devices and add more options
2024-04-26 16:52:06 +02:00
Jason2866
41970f7d62
Disable psram check to avoid "blinking" of GPIO 16/17 at startup (#21282)
* add `DISABLE_PSRAMCHECK`

* remove code before IDF 5

* add no psram env
2024-04-25 20:19:20 +02:00
Jason2866
eef4ff389f
Delete IDF 4.4 based i2s code (#21188)
* Delete tasmota/tasmota_xdrv_driver/xdrv_42_2_i2s_mp3stream.ino

* Delete tasmota/tasmota_xdrv_driver/xdrv_42_0_i2s_audio.ino

* Delete tasmota/tasmota_xdrv_driver/xdrv_42_1_i2s_mp3mic.ino
2024-04-25 13:41:47 +02:00
s-hadinger
1e64eaddf3
Berry webserver.content_close() (#21276) 2024-04-25 12:50:43 +02:00
s-hadinger
466652549a
Fix faulty printing of IPv4 2024-04-25 11:23:27 +02:00
s-hadinger
2a35f325b8
Put back wifi IPv6 workaround (#21274) 2024-04-25 10:28:42 +02:00
s-hadinger
469492a41a
Berry web_add_handler called before Webserver is initialized (#21272) 2024-04-25 09:08:24 +02:00
s-hadinger
582ca598f0
HDMI CEC synchronously sends messages (#21270) 2024-04-24 20:06:13 +02:00
s-hadinger
91dd120aa9
TCP Tx En GPIO type (#21269) 2024-04-24 19:53:01 +02:00
Norbert Richter
5a8d713d77
NeoPool prevent possible multiple bus requests (#21267)
* Update NeoPool register desc

* NeoPool prevent possible multiple bus requests
2024-04-24 17:44:26 +02:00
Jason2866
492c6bbda2
Platform 2024.04.13 (#21264) 2024-04-24 13:04:01 +02:00
s-hadinger
b9cd7bf04a
Add ESP32S3-4848S040 display.ini (#21259) 2024-04-23 22:12:27 +02:00
s-hadinger
546ed9d409
Add uTouch to WT32_SC01 display.ini (#21258) 2024-04-23 22:05:00 +02:00
s-hadinger
9970b9d947
uDisplay fast drawing on RGB displays (#21257) 2024-04-23 21:17:22 +02:00
s-hadinger
595b7f750d
LVGL fix memory allocation of flush buffers (#21256) 2024-04-23 20:11:01 +02:00
s-hadinger
157e1afb29
LVGL disabled vector graphics (#21242) 2024-04-22 09:18:26 +02:00
Jason2866
805ad32a30
typo 2024-04-21 23:07:51 +02:00
Jason2866
ef99b40578
add S3 env with 120Mhz / 8MB Flash 2024-04-21 23:07:01 +02:00
s-hadinger
f6cba1986b
esp32_partition_app3904k_fs3392k partition scheme for 8MB ESP32S3 (#21241) 2024-04-21 22:49:33 +02:00
s-hadinger
cb70ff7a77
uDisplay avoid crashing when no valid configuration (#21239) 2024-04-21 15:21:50 +02:00
s-hadinger
5ecd45e2da
Berry avoid crash when Berry is disabled after bootloop (#21235) 2024-04-21 10:03:55 +02:00
s-hadinger
c4431eb6fe
Fixed IPv6 support in safeboot (#21233) 2024-04-20 22:15:54 +02:00
s-hadinger
bf47a1e51c
LVGL restore lv_palette functions (#21232) 2024-04-20 18:57:49 +02:00
s-hadinger
fe34b5df3d
HASPmota align attribute and expand PNG cache (#21228) 2024-04-20 14:23:31 +02:00
Jason2866
0e273c18f6
add S3 QIO_QSPI 120M board manifest (#21216) 2024-04-18 19:36:55 +02:00
Jason2866
76970ddca9
restore config as it was before switch to core 3.0.0 2024-04-18 16:53:11 +02:00
Theo Arends
0f19dcdff8 Bump version v13.4.1.2
- ESP32-C3 OTA binary name from `tasmota32c3cdc.bin` to `tasmota32c3.bin` with USB HWCDC and fallback to serial (#21212)
- ESP32-C6 OTA binary name from `tasmota32c6cdc.bin` to `tasmota32c6.bin` with USB HWCDC and fallback to serial (#21212)
- ESP32-S3 OTA binary name from `tasmota32s3cdc.bin` to `tasmota32s3.bin` with USB HWCDC and fallback to serial (#21212)
2024-04-18 14:01:27 +02:00
Jason2866
c7ff6342d8
remove extensiom cdc from C3,C6,S3 variants (#21212) 2024-04-18 13:08:31 +02:00
Theo Arends
7e14db4091 Add support for SPL06_007 pressure and temperature sensor (#21185) 2024-04-18 11:47:16 +02:00
Theo Arends
9b5df76860 Add Domoticz safeguards 2024-04-18 11:21:35 +02:00
Rai
13cbf26b87
Adds support for SPL06_007 Temperature & Pressure I2C (+10k2 code) (#21185)
* Adds support for SPL06_007 (+10k2 code)

* removes not so used methods.

Removes -2kb

* change doubles to floats

* fixes a name

* change sns idx to 25
2024-04-18 11:20:02 +02:00
Theo Arends
f01e74f605 Update changelogs 2024-04-17 21:53:33 +02:00
s-hadinger
042eecc378
HASPmota dropdown_list and fixes (#21208) 2024-04-17 21:43:12 +02:00
Theo Arends
e6d9d826ac Clean up code 2024-04-17 21:40:45 +02:00
Theo Arends
b6b74ecb96 Fix regression on SendKey() (#21187) 2024-04-17 17:30:25 +02:00
Theo Arends
0bb1fcbc00 Change comments 2024-04-17 15:58:20 +02:00
Theo Arends
e4936f6c5f Fix ethernet 2024-04-17 15:34:14 +02:00
Theo Arends
e95c940345 Change ESP32 Ethernet Phy Type number for ETH_PHY_DM9051 from 4 to 10 (#21204) 2024-04-17 15:10:45 +02:00
Jason2866
370f59dd40
remove env for C3 before rev 3 2024-04-17 12:11:08 +02:00
Jason2866
fd27a82f6b fix copy&paste error 2024-04-17 11:32:14 +02:00
Jason2866
f131db6d40 mv deprecated drivers / Pio clean up 2024-04-17 11:28:17 +02:00
Theo Arends
0eff23f519 Update changelogs 2024-04-17 10:35:09 +02:00
s-hadinger
add5b2dbaf Solidified Code updated 2024-04-16 20:44:28 +00:00
s-hadinger
99b140512e
Haspmota dropdown options (#21203)
* Fix HASPmota dropdown class "options" attribute

* More fix
2024-04-16 22:43:35 +02:00
s-hadinger
7dc9e6e0ce
Fix HASPmota dropdown class "options" attribute (#21202) 2024-04-16 21:41:02 +02:00
Jason2866
04d7d188b3
house keeping 2024-04-16 16:10:59 +02:00
Jason2866
1d04c000e2
Re enable Ethernet in safeboot for ESP32 (#21199)
by using the Arduino Solo1 framework. The framework has a smaller flash usage
2024-04-16 12:08:53 +02:00
Jason2866
7440970bc4
rm PSRAM support from solo1 2024-04-16 09:24:05 +02:00
Jason2866
0ed7b6e8e9
add lib_ignore to solo1 env 2024-04-15 23:21:36 +02:00
Jason2866
414c231c86
revert non working step 2024-04-15 22:35:00 +02:00
s-hadinger
c16a8411a8
Berry update windows binary (#21195) 2024-04-15 22:23:05 +02:00
s-hadinger
87f5fbd5fd
safeboot: don't publish sensor valies (#21193) 2024-04-15 22:20:28 +02:00
s-hadinger
c1845b952b
Berry apply upstream fixes (#21194) 2024-04-15 22:12:16 +02:00
s-hadinger
d9895a0fcb
SSD1351, ST7789 drivers replaced with uDisplay (#21184) 2024-04-15 19:52:57 +02:00
Jason2866
2a0c53a382
Use esp32-solo1 safeboot for esp32 too
since it is smaller
2024-04-15 17:59:07 +02:00
Theo Arends
ecf2504edf Fix invalid rule handling 2024-04-15 17:25:11 +02:00
Jason2866
cad288bd0d
add missing safeboot env 2024-04-15 17:21:15 +02:00
Jason2866
218b282396
add cp ./platformio_override_sample.ini ./platformio_override.ini 2024-04-15 16:53:25 +02:00
Jason2866
54bd6ca6e7
align with devel build script 2024-04-15 16:47:49 +02:00
Jason2866
8f9cf94e3a
Build all safeboot variants 2024-04-15 16:10:28 +02:00
Theo Arends
cb0e2938e5 Start clean-up code 2024-04-15 15:12:17 +02:00
Jason2866
440a7a689e
rm env tasmota32-core2 2024-04-15 13:22:56 +02:00
Theo Arends
1fe18cf7b6 Fix Core3 ESP32S2 compile 2024-04-15 13:00:09 +02:00
Jason2866
8045ca20ac
Fix CI (rm cp of not existing file) 2024-04-15 12:33:32 +02:00
Theo Arends
d957c97c1e Merge branch 'development' of https://github.com/arendst/Tasmota into development 2024-04-15 12:26:52 +02:00
Theo Arends
6c5dee9556 Bump version to v13.4.1.1
- Changed ESP32 Framework (Arduino Core) from v2.0.15 to v3.0.0 (#21180)
2024-04-15 12:26:48 +02:00
Jason2866
87ed42318a
Temp fix for too big ESP32 Safeboot firmwares 2024-04-15 12:24:31 +02:00
Jason2866
5ac69b81e1
rm duplicate 2024-04-15 11:56:23 +02:00
Jason2866
013a14cbcb
no s3 build 2024-04-15 11:52:53 +02:00
Jason2866
f5b4818f34
remove overseen safeboot env entrys 2024-04-15 11:47:17 +02:00
Jason2866
1582385926
remove overseen entrys 2024-04-15 11:46:05 +02:00
Jason2866
951fba99b1
Breaking: ESP32 Core 3.0.0 only support (#21180)
* Core 3.0.0 only

* rm Arduino30 settings

* rm lib ignore `NimBLE-Arduino`

* rm obsolete or duplicate env entrys
2024-04-15 11:39:48 +02:00
s-hadinger
a006e5fc53
SSH1106 driver replaced with uDisplay (#21183) 2024-04-15 10:57:14 +02:00
Jason2866
6492596a10
Fix BLE compile with core 3.0.0 (#21182)
* Delete lib/libesp32_div/NimBLE-Arduino directory
* rm obsolete ignores
2024-04-15 10:24:06 +02:00
Christian Baars
20c918ce38
Pio-tools: Exception decoder for remote devices (#21181) 2024-04-14 21:20:48 +02:00
s-hadinger
0b4cddff72
SSD1331 driver replaced with uDisplay (#21177) 2024-04-14 18:06:17 +02:00
s-hadinger
05f4011491
SSD1306 driver replaced with uDisplay (#21176) 2024-04-14 16:46:58 +02:00
s-hadinger
35c2d55382
Berry upstream walrus fix (#21175) 2024-04-14 15:58:30 +02:00
s-hadinger
105aa03198
Berry upstream fix mod 0 (#21174)
* Berry upstream fix mod 0

* Add test case
2024-04-14 14:55:20 +02:00
Theo Arends
a2ad349487 Update changelogs 2024-04-14 11:43:56 +02:00
s-hadinger
ff43dc29b2
ILI9341 driver replaced with uDisplay (#21169) 2024-04-14 10:26:37 +02:00
s-hadinger
2321d66ba6
Berry Matter int64 in CI (#21167) 2024-04-13 15:26:27 +02:00
s-hadinger
8acf4cd119
Berry fix for Ubuntu (#21166) 2024-04-13 15:19:04 +02:00
Jason2866
a111c0ae8f
Use UDisplay and UTouch drivers ony (#21163) 2024-04-13 12:02:23 +02:00
s-hadinger
177de35fbc
Revert "Matter include int64 in unit tests (#21161)" (#21162)
This reverts commit 31d98f36661b28f1393bbbb00f2465debe05a456.
2024-04-13 10:35:06 +02:00
s-hadinger
31d98f3666
Matter include int64 in unit tests (#21161) 2024-04-13 09:59:57 +02:00
s-hadinger
5f7584efe4
Fade out on CCT bulb with SO92 1 (#21159) 2024-04-12 19:53:37 +02:00
Theo Arends
5cb3ea2114 Update changelogs 2024-04-12 16:01:00 +02:00
s-hadinger
8736544a81
Berry fix upstream connect with undefined variable (#21156) 2024-04-12 15:34:24 +02:00
Jason2866
5e5a7756c4
Core 2015 (#21155)
* Core 2.0.15

* Core 2.0.15
2024-04-12 14:08:32 +02:00
Theo Arends
0f9adae912 Update changelogs 2024-04-12 11:03:48 +02:00
s-hadinger
7e455bad6b Solidified Code updated 2024-04-11 20:30:23 +00:00
s-hadinger
5e60d5217d
Berry compile local Berry with int64 (#21151)
* Berry compile local Berry with int64

* Revert solidify
2024-04-11 22:18:59 +02:00
s-hadinger
918faf3af6 Solidified Code updated 2024-04-11 20:04:04 +00:00
s-hadinger
7e2fff9728
Berry prepare compilation on 64bits platforms (#21149) 2024-04-11 22:03:12 +02:00
Jason2866
d3ab3ced1e
remove touch driver (#21146)
only UTouch is active
2024-04-11 21:16:22 +02:00
Samir El Benna
ce443771d9
Patch gc9a01 (#21145)
* Fixed wrong colors view

* Added display.ini for M5Stack Dial

* Added touch FT3267 support (seen as FT5206 from tasmota) and fixed touch rotation

* Updated to use Universal Touch Driver instead of deprecated dedicated ones.
2024-04-11 21:06:26 +02:00
Samir El Benna
7072c3a0ef
Completed display.ini for M5Stack Dial (#21144)
* Fixed wrong colors view

* Added display.ini for M5Stack Dial

* Added touch FT3267 support (seen as FT5206 from tasmota) and fixed touch rotation
2024-04-11 15:37:06 +02:00
gemu
7984b7513c
support for centered pictures (#21140) 2024-04-11 15:36:37 +02:00
gemu
d5ee89677b
scriptsize cmd (#21139) 2024-04-11 15:36:27 +02:00
Theo Arends
e98ce29fea Fix SGP4 domoticz air quality (#18880) 2024-04-11 15:35:00 +02:00
Theo Arends
1b5fdb5c57 update changelogs 2024-04-11 14:07:25 +02:00
s-hadinger
0484299ee4
Align with Berry PR #412 (#21143) 2024-04-11 10:51:15 +02:00
Jason2866
e7368631cf
Platform 2024.04.11 (#21142) 2024-04-11 09:03:49 +02:00
s-hadinger
39ad5a41bb
Core3 ethernet simplify ipv6 (#21141) 2024-04-10 23:12:20 +02:00
Samir El Benna
5f6ac60d6b
Patch gc9a01 (#21137)
* Fixed wrong colors view

* Added display.ini for M5Stack Dial
2024-04-10 16:48:55 +02:00
Christian Baars
1721de0b76
use new API for check of USB cable connection (#21135) 2024-04-10 11:31:18 +02:00
Theo Arends
54e4aba750 Add LoRaWan MAC response 2024-04-09 14:06:38 +02:00
Theo Arends
56fcd0e634 Relax system load when not using SR04 2024-04-09 10:20:03 +02:00
Julio Vilmar Gesser
670164f4d0
fixed backward compatibility for multiple SR04 (#21128) 2024-04-09 09:56:31 +02:00
Theo Arends
d678666ef0 Fix MQTT heatindex calculation 2024-04-08 14:58:31 +02:00
Theo Arends
9cacf2f609 Fix Power off due to overtemp and/ot overload 2024-04-08 12:03:11 +02:00
Christian Baars
669bb582e0
Coming upstream changes: NimBLEService.cpp (#21120) 2024-04-07 18:38:42 +02:00
s-hadinger
541f3630a1
Wifi provide Mac Address on Core3 (#21117) 2024-04-07 10:55:53 +02:00
Jason2866
8a06984947
Shrink safeboot size for non ESP32 MCU (#21115)
* Ethernet in safeboot only for ESP32
2024-04-06 18:27:57 +02:00
stefanbode
b9a0ae98df
Bugfix: power0 if power_lock is used (#21102)
* Bug Fix: power_lock with Power0 command

Power0 changed power regardless of the new lock state of power. New implementation respect the LOCK also on global change

* simplify

* readded the all_on filter to power_lock change

readded the all_on to ensure new defined relays always start with power off ass intended.
2024-04-06 17:21:54 +02:00
Theo Arends
cbd533c1e9 Update changelogs 2024-04-06 17:12:54 +02:00
Jason2866
787f153219
Update to Tasmota core 3.0.0-beta (#21114) 2024-04-06 16:36:37 +02:00
Theo Arends
02f6e05289 Fixed M5Core2 LoRa868 module receive exception 2024-04-06 15:04:05 +02:00
Jason2866
e149a0399e
fix esp32 core 3.0.0 compile (#21112) 2024-04-06 14:17:51 +02:00
s-hadinger
2128dfbade
Refactored Wifi for ESP32 to allow for Core3 (#21106)
* Refactored Wifi for ESP32 to allow for Core3

* Fix case in include

* Grrr

* Fix compilation

* Fix Ethernet IPv6

* Fix wrong hostname due to mac address unknown at start
2024-04-05 23:44:21 +02:00
gemu
8a8888a273
fix for core3 (#21104) 2024-04-05 22:42:32 +02:00
Theo Arends
06f905e0b5 Update changelogs 2024-04-05 11:12:33 +02:00
Norbert Richter
9207aa2e10
Fix NeoPool hydrolysis unit for Hidrolife, Bionet and Generic device (#21098) 2024-04-05 11:07:30 +02:00
s-hadinger
07a2df1b74
Berry add flash.current_ota (#21097) 2024-04-04 19:14:33 +02:00
Theo Arends
ed7909f23f Removed unused #define MQTT_DATA_STRING support 2024-04-04 17:03:08 +02:00
Theo Arends
db92a843fc Change Wifi 5 to Wifi 6 2024-04-04 14:59:32 +02:00
gemu
ad3782bed1
google charts memory leak (#21093) 2024-04-04 10:18:57 +02:00
Theo Arends
6558414e2b Add PowerLock to status
- Change Power format in status to bitmap
2024-04-03 15:02:11 +02:00
Theo Arends
7c36029ec2 Add command `Wifi 5` to enable 11ax on ESP32 Core3 2024-04-03 14:36:52 +02:00
Theo Arends
fe89774fe0 Bump version v13.4.0.4
- Add command ``PowerLock`` to disable power control of selected outputs (#21081)
2024-04-03 11:47:38 +02:00
s-hadinger
fbe83585bd
Simplify %*_b format (#21087) 2024-04-02 21:56:18 +02:00
Theo Arends
52344d2cc7 Fix JSON output (#21084) 2024-04-02 16:49:24 +02:00
Theo Arends
34d6bffe7a Fix ESP32 non-core3 mis-aligned %_b 2024-04-02 16:37:42 +02:00
Theo Arends
d90f0e1cbe Add formatting binary `%*_b` 2024-04-02 12:55:42 +02:00
Theo Arends
31fc66f5be Update changelogs 2024-04-01 14:37:42 +02:00
Theo Arends
1ebdbfd6a4 Allow Domoticz unsubsctibe using command `DzIdx0 0` (#21019) 2024-04-01 13:56:40 +02:00
fb-pilot
781491efca
Add files via upload (#21078)
add a configuration for Wemos D1 with 16M
2024-04-01 12:09:51 +02:00
s-hadinger
76b1f48f0c
LVGL binding update for python 3.12 (#21076) 2024-03-31 22:08:27 +02:00
Milko Daskalov
9f4c994034
LVGL add lv.layer definition (#21062) 2024-03-31 21:44:46 +02:00
s-hadinger
c19391da8d
Berry loading .be file does not generated .bec anymore (#21075) 2024-03-31 21:37:26 +02:00
Barbudor
0422b25e31
Change format of KNX Energy to match specifications (#21074)
* take 1

* refactor knx enhancement

* round on energy + auto show temp/hum sensors
2024-03-31 21:15:53 +02:00
Julio Vilmar Gesser
60666fa1c5
Added support to multiple SR04 (#20975)
* added support to multiple SR04

* Reduced MAX # of SR04 to 3 as ESP32 has only 3 serial uarts
2024-03-31 15:12:29 +02:00
Theo Arends
b15a0e2f1f Add support for Domoticz non-persistent `DzIdx5 to DzIdx32` (#21019) 2024-03-31 14:33:27 +02:00
gemu
e336913b32
fix multidisplay mode (#21067) 2024-03-31 08:16:15 +02:00
Theo Arends
71e666462c Prep RN2XX3 support 2024-03-30 16:42:57 +01:00
Theo Arends
caed27645e Consolidate Lora memory usage 2024-03-30 15:02:20 +01:00
Theo Arends
6ccb3ae290 Move Lora variables from fixed to heap 2024-03-29 17:56:06 +01:00
Theo Arends
7774ce5ad8 Update TXPowerBasedOnRssi() 2024-03-29 14:30:31 +01:00
Theo Arends
4b44d2fa32 Change ESP32 WiFi phy modes 11n and 11ax represented as HT20, HT40 and HE20 (#19350) 2024-03-29 13:04:44 +01:00
Theo Arends
0814acb8dc Fix Lora ESP32S3 compile warning 2024-03-28 18:20:13 +01:00
Theo Arends
bd3c7d8ddf Fix LoRaWan joining 2024-03-28 17:51:09 +01:00
Theo Arends
894e46cb5a Refactor lorawan 2024-03-28 17:15:45 +01:00
Theo Arends
ae7bed5acf Refactor lib RadioLib fixing ESP8266 panic 2024-03-28 14:04:17 +01:00
Theo Arends
7c52906a2e Fix ESP8266 Lora SX1262 exceptions 2024-03-27 23:03:10 +01:00
Theo Arends
b587287ce0 Update changelogs 2024-03-27 21:38:36 +01:00
bovirus
1abc4a6c30
Update Italian language (#21052) 2024-03-27 17:44:41 +01:00
gemu
72968b9ee8
fix color swap option for rgb displaytext (#21049) 2024-03-27 16:52:35 +01:00
s-hadinger
aa4bdebe55
Berry print "a" syntax no longer supported (#21048) 2024-03-27 16:22:27 +01:00
gemu
b50d613360
display ini to utouch (#21029) 2024-03-27 12:12:59 +01:00
Theo Arends
c13d3cbf1c Update changelogs 2024-03-27 09:38:36 +01:00
s-hadinger
6ad2c4c945
LVGL simplify configuration (#21043) 2024-03-26 23:16:16 +01:00
s-hadinger
06e352dc19
Berry added close() to class serial (#21042) 2024-03-26 22:23:37 +01:00
gemu
417f8b0e9b
reinit sd card (#21040) 2024-03-26 20:30:29 +01:00
Theo Arends
03cf7dc460 Fix ESP32 LoRaWanBridge OTAA 2024-03-26 17:02:44 +01:00
Jason2866
48aa621975
enable additionally USE_UNIVERSAL_TOUCH (#21038)
dedicated driver are still enabled. To be disabled when transition to UTouch is finished
2024-03-26 16:34:43 +01:00
Charles
7707473b4e
Lib_teleinfo : Fixed too restrictive checksum checks (#21033)
* Fixed too restrictive checks

Fixed too restrictive checks that may introduce checksum errors on some contracts

* Bump to v1.1.7

Bump to v1.1.7
2024-03-26 08:46:55 +01:00
Pabasara Perera
2fff690af3
Azure iothub direct method support (#21013)
* feature: azure iot hub direct method support

* null terminator

* Remove vulnerability

---------

Co-authored-by: s-hadinger <49731213+s-hadinger@users.noreply.github.com>
2024-03-25 22:11:36 +01:00
s-hadinger
10465ce941
Added GPIO for SPI for Universal Touch Screen (#21025)
* Added GPIO for SPI for Universal Touch Screen

* Rename GPIOs

* Fix indentation

* Add parsing of I2C Reset and IRQ GPIOs
2024-03-25 22:04:50 +01:00
gemu
28cce3f020
add cmd cpm (#21030) 2024-03-25 22:02:08 +01:00
s-hadinger
bad2f4fb13
Fix crash in Universal Touch (#21026) 2024-03-25 11:41:21 +01:00
s-hadinger
15ae3e0fa5
berry.exe (pre-compiled for Windows) updated to latest Berry patches (#21024) 2024-03-24 16:33:21 +01:00
Jason2866
7088ee2be6
remove outdated not used ldscript entry (#21018) 2024-03-23 21:29:38 +01:00
Theo Arends
14c48a18a0 Update changelogs 2024-03-23 15:32:12 +01:00
Theo Arends
36cbca9004 Add updated user config 2024-03-23 15:21:16 +01:00
Theo Arends
f10218a257 Add support for LoRaWanBridge 2024-03-23 15:20:22 +01:00
Theo Arends
6337c59fab Update RadioLib 2024-03-23 15:18:06 +01:00
gemu
31adf74634
fix linker error (#21017) 2024-03-23 10:05:56 +01:00
s-hadinger
c95483844a
Berry fix walrus bug when assigning to self (#21015) 2024-03-22 18:51:48 +01:00
s-hadinger
a34f5496a1
Fix HASPmota demo and robotocondensed fonts (#21014) 2024-03-22 16:55:22 +01:00
gemu
aad917d060
Email32 more debug (#21010)
* more debug on esp32 mail

* Update xdrv_01_2_webserver_esp32_mail.ino
2024-03-22 08:09:16 +01:00
s-hadinger
3c70e63af8
LVGL library from v9.0.0 to v9.1.0 (#21008) 2024-03-21 18:47:41 +01:00
gemu
a38e88422f
fix google char memory leak (#20995) 2024-03-21 15:11:40 +01:00
DeflateAwning
d08461482f
Bold the table column names (including the mid-table heading rows) (#20981) 2024-03-21 15:11:29 +01:00
Theo Arends
c18ed34685 Fix Lora watchdog
- Update file JSON settings demo
2024-03-20 18:18:31 +01:00
Christian Baars
46fae91e10
fix BTHome, prep BLE5 (#20989) 2024-03-20 11:22:35 +01:00
s-hadinger
9c34707401
Zigbee added for attributes of type uint48 used by energy monitoring (#20992) 2024-03-19 22:21:10 +01:00
s-hadinger
e644ed0724
HASPmota improve flex layout (#20982) 2024-03-18 22:54:53 +01:00
s-hadinger
5338e84243
LVGL simplify mapping (#20980) 2024-03-18 22:16:20 +01:00
Theo Arends
f18bbae23a Bump version v13.4.0.3 2024-03-18 11:11:12 +01:00
Jason2866
9dd1c28cfc
undef already defined (#20906) 2024-03-18 10:26:13 +01:00
Frank Werner
70bce974b2
Add MCP23S08 support (#20971) 2024-03-18 10:18:14 +01:00
s-hadinger
1b741f4809
HASPmota support for scale, percentages (#20974) 2024-03-17 18:19:07 +01:00
Jason2866
ad1b8c6833
S3 120Mhz (#20973) 2024-03-17 16:49:14 +01:00
s-hadinger
130c3f83f1
LVGL add helper functions (#20968) 2024-03-16 23:50:03 +01:00
Jason2866
e218550447
Refactor Platformio script post_esp32.py (#20966) 2024-03-16 20:23:25 +01:00
bovirus
899e637bda
Update Italian language (#20956) 2024-03-16 12:12:32 +01:00
fb-pilot
73a52945c2
Add files via upload (#20959) 2024-03-16 12:12:18 +01:00
gemu
ca17be0e0b
fix regression (#20962) 2024-03-16 12:11:48 +01:00
Jason2866
bb2f31bd88
Fix release firmware url 2024-03-15 12:56:22 +01:00
s-hadinger
95f7d33c20
LVGL cleaning unused definitions (#20957) 2024-03-14 22:37:55 +01:00
Marcus Better
1a462c986c
[tuyamcu_v2] Fix suppressed dimmer updates from MQTT (#20950)
The driver tried to avoid loops when state updates from the MCU (eg
from physical button press) could be reflected back by Tasmota and
trigger another MCU command, followed by a state update. It did this
by tracking the source of the command in the last_source and
last_command_source variables, suppressing the command if either of
those was SRC_SWITCH.

However this logic is faulty: Since there are two last_source
variables to check, a command might reset one of them, but the other
would still suppress the update. As it turns out, MQTT commands would
only set last_source but not last_command_source. As a result, any
dimmer changes via MQTT would be dropped by the driver and not applied
to the MCU.

Switch functionality (on/off) was still working because those do not
rely on last_command_source, only last_source.

This change removes the loop detection logic altogether for dimmer
updates. This should be safe, because the driver already has the
latest dimmer value in its shadow state, and will not try to re-apply
a current value, thus breaking the loop.

This patch has been tested with several CE-WF500D dimmers which had
this problem.
2024-03-14 17:42:52 +01:00
Theo Arends
cc8614da9c Add command `RfTimeout` to Sonoff RFBridge (#20937) 2024-03-14 17:21:09 +01:00
Theo Arends
0ac0dda5ba Update changelogs 2024-03-14 16:47:10 +01:00
Theo Arends
5ab7ebee9d Fix compilations 2024-03-14 16:40:22 +01:00
s-hadinger
5e8b116128
LVGL fix descriptors Berry mapping (#20946) 2024-03-13 22:19:42 +01:00
s-hadinger
26a3eacbd6
Berry update windows binary (#20940) 2024-03-12 23:10:07 +01:00
s-hadinger
0518bd6c64
Berry fix walrus with member or index (#20939) 2024-03-12 23:00:52 +01:00
s-hadinger
4d7036db3b
HASPmota solidify server-side (#20938) 2024-03-12 21:18:31 +01:00
s-hadinger
f488ef922a
LVGL add lv.draw_label_dsc and lv_bar.get_indic_area (#20936) 2024-03-12 19:40:40 +01:00
fb-pilot
f7ae60a9e4
expand xsns_100_ina3221 to optionaly calculate the charge and / or Energy per chanel (#20915)
* Add files via upload

* Add files via upload

* Add files via upload

* Add files via upload

* Update en_GB.h

* Update xsns_100_ina3221.ino

* Add files via upload

* Add files via upload

I hope I have all details now changed ;-))

* Add files via upload

I still found a little detail to beutify ;-)
2024-03-12 08:12:22 +01:00
s-hadinger
8b7cd2de44
HASPmota moved to a distinct library lv_haspmota (#20929) 2024-03-11 22:31:44 +01:00
Jason2866
309ac81e22
comment warning (#20907) 2024-03-11 08:22:28 +01:00
gemu
190493c747
fix regression from last commit (#20923) 2024-03-11 08:22:10 +01:00
s-hadinger
79d02e772c
HASPmota cleanup (#20920) 2024-03-10 23:03:40 +01:00
s-hadinger
9e8bd2156b
HASPmota add generic setter and getters for style attributes (#20919) 2024-03-10 22:54:55 +01:00
s-hadinger
268fad6d0d
LVGL remove textarea and spinbox from binaries (#20916) 2024-03-10 20:52:16 +01:00
s-hadinger
8ff9fffa0a
HASPmota use endswith (#20914) 2024-03-10 19:14:23 +01:00
s-hadinger
bc9fd3cd92
Fix typo in CHANGELOG 2024-03-10 18:03:02 +01:00
Jason2866
2cc87b086b
latest Arduinon 3.0.0. needs HWCDC (#20905) 2024-03-10 15:20:43 +01:00
s-hadinger
bb07ded475
Berry add string.starstwith, string.endswith and %q format (#20909)
* Berry add `string.starstwith`, `string.endswith` and `%q` format

* Fix typo

---------

Co-authored-by: Jason2866 <24528715+Jason2866@users.noreply.github.com>
2024-03-10 14:31:15 +01:00
Jason2866
224a9fb717
Fix compile for upcoming Arduino Core 2.0.15 (#20908)
* Fix compile for Arduino Core > 2.0.14
* missing include `esp_arduino_version.h`
2024-03-10 14:08:29 +01:00
Theo Arends
14f976b8a4 Update xdrv_122_file_json_settings_demo.ino 2024-03-10 12:13:13 +01:00
Theo Arends
e77a5f57ff Update changelogs 2024-03-10 12:08:30 +01:00
Theo Arends
8231a0429c Fix JSON Settings save 2024-03-10 12:04:57 +01:00
s-hadinger
3429ebd359
LVGL fix montserrat-10 and icons-10 (#20901) 2024-03-09 22:09:41 +01:00
s-hadinger
16afaf3c59
LVGL improved readability of montserrat-10 (#20900) 2024-03-09 21:15:30 +01:00
Theo Arends
6d82997fde Update changelogs 2024-03-09 13:32:53 +01:00
s-hadinger
93e27654e6
HASPmota improve arc and img (#20894) 2024-03-09 09:21:37 +01:00
gemu
99f4774e14
core3 fixes (#20895) 2024-03-09 09:19:04 +01:00
Jason2866
2544cf0305
Update esptool.py (#20890)
* Tasmota esptool.py  v4.7.1
* install only one esptool version
2024-03-07 14:46:22 +01:00
s-hadinger
9b2720c64d
HASPmota fix widgets line, btnmatrix, qrcode, bar, checkbox (#20881) 2024-03-06 09:20:04 +01:00
s-hadinger
804ee37098
Haspmota optim fonts (#20880)
* LVGL optimize fonts and add icons

* changelog
2024-03-05 23:09:53 +01:00
Marcus Better
47ae5bc9c8
[tuyamcu_v2] Send updates unconditionally (#20868)
Remove the logic that inhibits the sending of updates to the MCU until
the DP's state has been observed at least once in a status report from
the MCU. This logic was intended to ensure that a DP is not updated
with its current value, which reportedly crashes some very broken
devices.

However, other devices like the Feit DIM/WIFI dimmers do not reliably
report DPs that haven't been changed. So the required status report
would never arrive, resulting in the inability to control these
devices remotely, at least until their state had been changed by a
manual button press, something that is not always practical as it
requires physical device access and needs to be done after every
restart.

Removing this logic allows Tasmota to control the device state.
2024-03-04 13:23:12 +01:00
Marcus Better
bb790efefd
[Tuya v2] Remove unused variable (#20869) 2024-03-04 13:22:35 +01:00
Marcus Better
ee6863ffd9
Heartbeat every 15s as documented (#20867) 2024-03-04 13:21:41 +01:00
s-hadinger
d4720d9378
LVGL remove embedded typicons font (#20872) 2024-03-04 13:04:11 +01:00
Theo Arends
24372207de Update changelogs
- Elevate some messages
2024-03-04 11:58:46 +01:00
Ryan Castellucci
10fff01c80
add failsafe for compiled in tls fingerprints (#20865) 2024-03-04 08:52:47 +01:00
s-hadinger
29a8f82421
HASPmota set Tasmota logo (#20860) 2024-03-03 22:06:59 +01:00
s-hadinger
9759cca4f4
HASPmota support for led (#20857) 2024-03-03 18:39:40 +01:00
s-hadinger
174caf2251
HASPmota fix chart range (#20856) 2024-03-03 17:48:12 +01:00
Theo Arends
9c4dfd28ef Add command LoRaCommand 2024-03-03 16:55:02 +01:00
s-hadinger
27ccf0490b
HASPmota support for spangroup (styled text) (#20852) 2024-03-03 10:53:21 +01:00
s-hadinger
6a35795178
Matter save fabrics more robust (#20847) 2024-03-02 08:32:10 +01:00
s-hadinger
b06c310305
Berry update Windows binary (#20845) 2024-03-01 19:37:45 +01:00
Theo Arends
d394eef7c8 Fix LoRa binary send 2024-03-01 18:07:10 +01:00
Theo Arends
715ca102c7 update changelogs 2024-03-01 16:52:28 +01:00
s-hadinger
54b1a94379
Drop support for old (insecure) fingerprint format (#20842) 2024-03-01 12:24:48 +01:00
Theo Arends
3162282f91 Update changelogs 2024-03-01 10:23:51 +01:00
Theo Arends
9bb8d6e1ff Add hard fought spaces around image name 2024-03-01 10:15:37 +01:00
s-hadinger
92b9190817
Berry add path.rename() (#20840) 2024-02-29 23:38:20 +01:00
s-hadinger
e55471e084
Berry bug when parsing ternary operator (#20839) 2024-02-29 19:23:32 +01:00
Jason2866
3c43486cf5
Colorama (#20838) 2024-02-29 18:23:33 +01:00
Theo Arends
adfbf6508a Remove CAD from SX127X to fix intermittent reception 2024-02-29 17:23:37 +01:00
Theo Arends
ce419cce81 Add LoRa to ESP8266 2024-02-29 17:12:08 +01:00
Jason2866
021294bcd9
Add release too Tasmota footer 2024-02-29 16:33:37 +01:00
Jason2866
6032104cfd
no '"' 2024-02-29 15:45:59 +01:00
Jason2866
db572b1125
Don't use GH env variable 2024-02-29 15:17:51 +01:00
Jason2866
d52fd2050a
Update Tasmota_build_devel.yml 2024-02-29 15:11:30 +01:00
Jason2866
ed782c6606
Update Tasmota_build_devel.yml 2024-02-29 14:59:27 +01:00
Jason2866
c002bf2d21
Update Tasmota_build_devel.yml 2024-02-29 14:57:24 +01:00
Jason2866
f2f78c4cee
more debug info 2024-02-29 14:54:35 +01:00
Jason2866
4fb1d3a65d
try to fix to get env variable value 2024-02-29 14:21:06 +01:00
Jason2866
34561db70c
Add sha to footer (#20835)
* get and store SHA in env

* sed replace
2024-02-29 13:37:03 +01:00
Theo Arends
89aa392a46 Merge branch 'development' of https://github.com/arendst/Tasmota into development 2024-02-29 13:36:10 +01:00
Theo Arends
daa24af6f6 Bump version to v13.4.0.2 2024-02-29 13:36:08 +01:00
Jason2866
401f240a7c
Fix solo1 description text (#20816)
* Fix solo1 description text

* URL for datasheet
2024-02-29 13:17:14 +01:00
Norbert Richter
9026b95f45
Prevent shutter MQTT broadcast with activated ShutterLock (#20827) 2024-02-29 13:16:33 +01:00
Theo Arends
3bbc33f554 Add support for Github SED inserted SHA_SHORT 2024-02-29 13:03:41 +01:00
s-hadinger
a2bb0afea2
IR support data larger than 64 bits (#20831) 2024-02-28 22:42:29 +01:00
s-hadinger
7ad95faad2
Fix Berry Memory leak in import re (#20823) 2024-02-27 21:56:51 +01:00
Theo Arends
24b59376bb Fix LoRa Config 2024-02-27 17:09:50 +01:00
Theo Arends
77cba87994 Update changelogs 2024-02-27 14:16:13 +01:00
s-hadinger
a4397b26b8
HASPmota PSRAM memory leak (#20818) 2024-02-26 23:46:07 +01:00
Bastian Urschel
bf91af0c07
add support for ams5915 and ams6915 temerature and pressure sensors (#20814)
* add support for ams5915 and ams6915 temerature and pressure sensors

* improved function namings

* optimized detection of sensor

* set verbosity level to debug

* minor code cleanings

* added seconds-counter to minimize i2c bus load, minor code cleanups

* add meas_valid in sensor struct to differentiate between sensor present (at tasmota boot) and measurement valid (if sensor was reattached) at runtime

* removed global struct and sensor_present, introduced dynamic memory allocation if sensor is present at startup, minor code changes

* fixes missing initialisation of variable

* corrected the amount of used memory if compiled with AMSX915 support

* Update my_user_config.h

disable AMSx915 by default

---------

Co-authored-by: baschdello <urschelb@rhrk.uni-kl.de>
Co-authored-by: Bastian <bastianurschel@gmail.com>
2024-02-26 23:04:25 +01:00
Theo Arends
8f1cb3431f Fix LoRa SX1262 user GPIO selection 2024-02-26 22:25:59 +01:00
Jason2866
2e9e2da291
Rename pr_comment.yml to pr_comment.yml.off 2024-02-26 19:29:59 +01:00
Jason2866
51e712f68a
revert used action 2024-02-26 19:07:12 +01:00
Jason2866
35492afd89
different names 2024-02-26 18:59:48 +01:00
Jason2866
aba06bb465
actions/upload-artifact@v4 2024-02-26 18:49:04 +01:00
Jason2866
6f28b5ab2c
actions/github-script@v7 2024-02-26 18:38:35 +01:00
Theo Arends
d61c96a485 Add command LoRaConfig 2024-02-26 17:31:24 +01:00
Jason2866
34f7ecf31a
add dl links for artifacts in PR
as comment
2024-02-26 16:29:32 +01:00
Jason2866
62d37e9fcf
enhanced 'Env' check (#20813) 2024-02-26 14:30:44 +01:00
Theo Arends
100869a40f Upload changelogs 2024-02-26 12:22:47 +01:00
s-hadinger
3d3280eb8e
Matter reduce memory usage when saving Fabrics (#20809) 2024-02-25 23:02:13 +01:00
s-hadinger
55be1866ad
Berry add explicit error log when memory allocation fails (#20807) 2024-02-25 21:17:08 +01:00
Jason2866
3dcd8d7f13
Add some checks for valid env (#20805) 2024-02-25 20:28:30 +01:00
s-hadinger
7402fe06fd
Matter reduce memory usage when reading with wildcards (#20804) 2024-02-25 19:45:56 +01:00
Theo Arends
389bf124bf Update comments 2024-02-25 17:58:38 +01:00
Theo Arends
c9c1eee302 Add SX127x lora support 2024-02-25 17:03:46 +01:00
Theo Arends
b218f6bff1 Allow lora on ESP8266 2024-02-25 14:29:56 +01:00
Theo Arends
87567b25b2 Move RF libs to correct location enabling ESP8266 support 2024-02-25 14:21:49 +01:00
Jason2866
e152a3cbf7
"MKFSTOOL" (#20800) 2024-02-24 20:27:12 +01:00
s-hadinger
d130a637da Solidified Code updated 2024-02-24 18:26:43 +00:00
s-hadinger
cadea7540a
Matter reduce logging of subscriptions 2024-02-24 19:25:44 +01:00
s-hadinger
4bc8a41502
Minor Berry fixes (#20799) 2024-02-24 18:40:16 +01:00
s-hadinger
4dc827f431
Add TLV unit test (#20798) 2024-02-24 18:40:10 +01:00
Theo Arends
9aff378ef8 Update LoRaSend 2024-02-24 18:25:40 +01:00
Artur Nowak
30dd5e6a55
Fix invalid constant description (#20796) 2024-02-24 15:27:58 +01:00
gemu
9608bc5799
Fix software serial on RISCV cpus. (#20793)
* fix software serial for riscv

* fix softwareserial on riscv
2024-02-24 09:45:13 +01:00
stefanbode
ae01d4ccd5
Support for 3 pulse relay shutters OPEN/CLOSE/STOP (#20758)
* new option on dedicated STOP relay.

* added new stoprelay shutter

* fix

* new option stoprelay

* fix
2024-02-23 22:54:39 +01:00
Theo Arends
87f17404c0 fix RadioLib compile on safeboot 2024-02-23 18:48:14 +01:00
Theo Arends
90b3f0f62b Add LoRa demo using LilyGo T3S3 on 868MHz (#17790) 2024-02-23 18:25:13 +01:00
Theo Arends
0632f4e7d6 Remove vulnerabilities 2024-02-23 16:24:10 +01:00
Theo Arends
d258b9a758 Prep LoRa 2 2024-02-23 16:20:09 +01:00
Theo Arends
d4980b9957 Prep SPI LoRa 2024-02-23 14:58:39 +01:00
bovirus
06d7d3ba74
Update Italian language (#20769) 2024-02-21 09:48:50 +01:00
s-hadinger
772a1533a6 Solidified Code updated 2024-02-21 07:44:12 +00:00
s-hadinger
0ecefe4c20
Temporarily expand Matter logs 2024-02-21 08:43:21 +01:00
s-hadinger
59653c7bff Solidified Code updated 2024-02-20 16:00:50 +00:00
s-hadinger
7ae074b4f2
Try matter fix 2024-02-20 16:59:56 +01:00
Jason2866
af7f2a02d1
"Hitzeindex" 2024-02-19 14:38:39 +01:00
Theo Arends
9a5217bf90 Add heatindex to BMP driver (#4771) 2024-02-19 14:17:40 +01:00
Jason2866
d30c634515
one pio scriot to set "C" flags (#20762) 2024-02-19 13:23:38 +01:00
SteWers
5f07afab1b
[EQ3-TRV] Fix label Valve Position (#20757) 2024-02-19 11:29:14 +01:00
Theo Arends
fb003e006e Add Show calculated heat index if temperature and humidity is available with `#define USE_HEAT_INDEX` (#4771) 2024-02-18 18:00:41 +01:00
Theo Arends
920967506b Update changelogs 2024-02-18 15:31:20 +01:00
Felipe Martínez
d77cf7d2f0
Support LWT messages when using TASMESH (#20392)
* Send LWTs when nodes come online and offline

* Use string macro

* Add a TASMESH_HEARTBEAT config

* Add flags to config file

* Fix missing break in case

* Rename heartbeat feature define

* Comment out tasmesh settings

* Detect online peers on all packets, not just heartbeats
2024-02-18 15:28:00 +01:00
Theo Arends
d8d1b1d131 Add QMC5883l check for overflow and scale reading (#20643) 2024-02-18 15:24:21 +01:00
Theo Arends
9a12192fa9 Update changelogs 2024-02-18 12:41:31 +01:00
stefanbode
c7894181b7
fix issue on inverted shutters with commands comming with shutterposition (#20752)
* fix INVERTED bug

fix shutterposition xxx commands do not work on inverted shutter

* fix INVERTED bug

* fix INVERTED bug

shutterposition UP/DOWN/... commands did not work as expected on inverted shutter
2024-02-18 12:36:03 +01:00
Jason2866
30f650ebb2
Remove espidf from boards.json (#20749) 2024-02-17 21:45:43 +01:00
Jason2866
1661ebb02e
Add flag "-DARDUINO_TASMOTA" in boards.json (#20746) 2024-02-17 17:58:28 +01:00
arendst
456ce5cd31 Solidified Code updated 2024-02-17 15:08:55 +00:00
Theo Arends
d774643b9c Prep AXP2101 2024-02-17 16:08:04 +01:00
Theo Arends
236eb77af1 Update changelogs 2024-02-17 15:31:06 +01:00
Norbert Richter
2068879c23
Update NeoPool webUI pH alarms (#20743) 2024-02-17 15:23:29 +01:00
Theo Arends
1abaf146b5 Fix ESP32 PWM activity on unconfigured PWM GPIOs (#20732) 2024-02-17 15:19:12 +01:00
Theo Arends
7216db339e Final fix 2024-02-16 20:10:55 +01:00
Theo Arends
733b9254a5 Workaround core3 2024-02-16 20:04:46 +01:00
Theo Arends
0faef8e4dd Fix PWM channels after restart (#20732) 2024-02-16 18:57:03 +01:00
s-hadinger
d3093a13c2
HASPmota more attributes (#20744) 2024-02-16 17:23:24 +01:00
Fulvio Spelta
c93d6676b9
Fix SetOption158 publish/suppress ModbusReceived MQTT messages (#20733)
Fixed a bug that let some mqtt messages be published anyway
2024-02-16 15:06:11 +01:00
Theo Arends
6732db8803 Update changelogs 2024-02-16 15:04:03 +01:00
s-hadinger
a51b08b36c
typicons font to LVGL and HASPmota (#20742) 2024-02-16 12:42:11 +01:00
s-hadinger
b91f93062a
HASPmota p<x>b<y>.delete to delete an object (#20735) 2024-02-15 23:16:12 +01:00
s-hadinger
f05cb6d50b
HASPmota fix and improve demo with pixel-perfect fonts (#20734) 2024-02-15 19:46:50 +01:00
Pabasara Perera
c0ae3dcaca
Fix tls handshaking issue (#20721)
* Fix tls handshaking issue

* fixed time comparison issue

* removed multiplication from loop
2024-02-15 10:40:04 +01:00
Jason2866
97821ab925
Platform 2024.02.10 (Arduino core 3.0.0) (#20730) 2024-02-14 21:03:33 +01:00
Theo Arends
cbc9796c92 Update changelogs 2024-02-14 19:19:24 +01:00
s-hadinger
1d1d785f51
LVGL make lv_touch_3_buttons more responsive (#20728)
* LVGL make lv_touch_3_buttons more responsive

* Changed instead of Fixed
2024-02-14 18:26:41 +01:00
s-hadinger
036723ddb5
Berry class int64 made immutable (#20727) 2024-02-14 18:24:59 +01:00
Theo Arends
bee3b5b66a Bump version v13.4.0.1 2024-02-14 17:57:17 +01:00
Theo Arends
4cb53fef06 Fix ethernet config chk 2024-02-14 17:01:31 +01:00
Theo Arends
080cdb4f0d Add core3 ethernet support on SPI for all ESP32 models 2024-02-14 16:19:51 +01:00
2659 changed files with 424089 additions and 347074 deletions

View File

@ -32,6 +32,7 @@ _Make sure your have performed every step and checked the applicable boxes befor
- [ ] Searched the problem in [discussions](https://github.com/arendst/Tasmota/discussions)
- [ ] Searched the problem in the [docs](https://tasmota.github.io/docs/FAQ)
- [ ] Searched the problem in the [chat](https://discord.gg/Ks2Kzd4)
- [ ] Problem is not scripter related, in this case open a discussion and tag gemu2015
- [ ] Device used (e.g., Sonoff Basic): _____
- [ ] Tasmota binary firmware version number used: _____
- [ ] Pre-compiled

View File

@ -6,8 +6,8 @@
- [ ] The pull request is done against the latest development branch
- [ ] Only relevant files were touched
- [ ] Only one feature/fix was added per PR and the code change compiles without warnings
- [ ] The code change is tested and works with Tasmota core ESP8266 V.2.7.6
- [ ] The code change is tested and works with Tasmota core ESP32 V.2.0.14
- [ ] The code change is tested and works with Tasmota core ESP8266 V.2.7.8
- [ ] The code change is tested and works with Tasmota core ESP32 V.3.1.3.250411
- [ ] I accept the [CLA](https://github.com/arendst/Tasmota/blob/development/CONTRIBUTING.md#contributor-license-agreement-cla).
_NOTE: The code change must pass CI tests. **Your PR cannot be merged unless tests pass**_

View File

@ -25,31 +25,31 @@ jobs:
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install clang compiler
run: |
sudo apt-get install -f clang
- name: Make Berry and Tasmota Berry code
- name: Make Berry and Solidify code
run: |
cd lib/libesp32/berry
make
cd ../berry_tasmota
../berry/berry -s -g solidify_all.be
- name: Matter Berry Code
run: |
cd lib/libesp32/berry_matter
cd ../berry_matter
../berry/berry -s -g solidify_all.be
- name: Berry Animate Code
run: |
cd lib/libesp32/berry_animate
cd ../berry_animate
../berry/berry -s -g solidify_all.be
- name: LVGL Berry Code
run: |
cd lib/libesp32_lvgl/lv_binding_berry
cd ../../libesp32_lvgl/lv_binding_berry
../../libesp32/berry/berry -s -g solidify_all.be
- uses: jason2866/upload-artifact@v2.0.3
cd ../lv_haspmota
../../libesp32/berry/berry -s -g solidify_all.be
- uses: actions/upload-artifact@v4
with:
name: '["berry_tasmota", "berry_matter", "berry_animate", "berry_lvgl", "berry_header"]'
path: '["./lib/libesp32/berry_tasmota/src/solidify", "./lib/libesp32/berry_matter/src/solidify", "./lib/libesp32/berry_animate/src/solidify", "./lib/libesp32_lvgl/lv_binding_berry/src/solidify", "./lib/libesp32/berry/generate"]'
name: berry
path: |
./lib/libesp32/berry_tasmota/src/solidify
./lib/libesp32/berry_matter/src/solidify
./lib/libesp32/berry_animate/src/solidify
./lib/libesp32_lvgl/lv_binding_berry/src/solidify
./lib/libesp32_lvgl/lv_haspmota/src/solidify
./lib/libesp32/berry/generate
push_solidified:
needs: be_solidify
@ -62,20 +62,19 @@ jobs:
uses: actions/setup-python@v5
with:
python-version: '3.x'
- uses: jason2866/download-artifact@v3.0.4
- uses: actions/download-artifact@v4
with:
name: |
berry_tasmota
berry_matter
berry_animate
berry_lvgl
berry_header
path: |
./lib/libesp32/berry_tasmota/src/solidify
./lib/libesp32/berry_matter/src/solidify
./lib/libesp32/berry_animate/src/solidify
./lib/libesp32_lvgl/lv_binding_berry/src/solidify
./lib/libesp32/berry/generate
pattern: berry
path: berry
- name: Move solidified Berry files back
run: |
ls -R ./berry
mv berry/berry/libesp32/berry_tasmota/src/solidify/* ./lib/libesp32/berry_tasmota/src/solidify
mv berry/berry/libesp32/berry_matter/src/solidify/* ./lib/libesp32/berry_matter/src/solidify
mv berry/berry/libesp32/berry_animate/src/solidify/* ./lib/libesp32/berry_animate/src/solidify
mv berry/berry/libesp32_lvgl/lv_binding_berry/src/solidify/* ./lib/libesp32_lvgl/lv_binding_berry/src/solidify
mv berry/berry/libesp32_lvgl/lv_haspmota/src/solidify/* ./lib/libesp32_lvgl/lv_haspmota/src/solidify
mv berry/berry/libesp32/berry/generate/* ./lib/libesp32/berry/generate
- uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: Solidified Code updated
@ -88,17 +87,17 @@ jobs:
strategy:
matrix:
variant:
- tasmota32solo1-safeboot
- tasmota32-safeboot
- tasmota32solo1-safeboot
- tasmota32c2-safeboot
- tasmota32c3-safeboot
- tasmota32c3cdc-safeboot
- tasmota32c3ser-safeboot
- tasmota32s2-safeboot
- tasmota32s2cdc-safeboot
- tasmota32s3-safeboot
- tasmota32s3cdc-safeboot
- tasmota32c2-safeboot
- tasmota32s3ser-safeboot
- tasmota32c6-safeboot
- tasmota32c6cdc-safeboot
- tasmota32c6ser-safeboot
steps:
- uses: actions/checkout@v4
with:
@ -111,14 +110,21 @@ jobs:
run: |
pip install wheel
pip install -U platformio
cp ./platformio_tasmota_core3_env_sample.ini ./platformio_tasmota_core3_env.ini
cp ./platformio_override_sample.ini ./platformio_override.ini
- name: Add SHA to footer
run: |
COMMIT_SHA_LONG=$(git rev-parse --short HEAD || echo "")
SHA=${COMMIT_SHA_LONG::7}
sed -i -e "s/TASMOTA_SHA_SHORT/TASMOTA_SHA_SHORT $SHA-/g" ./tasmota/include/tasmota_version.h
- name: Run PlatformIO
run: platformio run -e ${{ matrix.variant }}
#- name: Use esp32-solo1 safeboot for esp32 too
#run: |
#cp ./build_output/firmware/tasmota32solo1-safeboot.bin ./build_output/firmware/tasmota32-safeboot.bin
- name: Upload safeboot firmware artifacts
uses: jason2866/upload-artifact@v2.0.3
uses: actions/upload-artifact@v4
with:
name: firmware_safeboot
name: ${{ matrix.variant }}
path: ./build_output
base-images:
@ -151,12 +157,17 @@ jobs:
run: |
pip install wheel
pip install -U platformio
- name: Add SHA to footer
run: |
COMMIT_SHA_LONG=$(git rev-parse --short HEAD || echo "")
SHA=${COMMIT_SHA_LONG::7}
sed -i -e "s/TASMOTA_SHA_SHORT/TASMOTA_SHA_SHORT $SHA-/g" ./tasmota/include/tasmota_version.h
- name: Run PlatformIO
run: platformio run -e ${{ matrix.variant }}
- name: Upload firmware artifacts
uses: jason2866/upload-artifact@v2.0.3
uses: actions/upload-artifact@v4
with:
name: firmware
name: ${{ matrix.variant }}
path: ./build_output
base32-images:
@ -175,15 +186,13 @@ jobs:
- tasmota32-display
- tasmota32-ir
- tasmota32-lvgl
- tasmota32c2
- tasmota32c3
- tasmota32c3cdc
- tasmota32c6
- tasmota32s2
- tasmota32s2cdc
- tasmota32s3
- tasmota32s3cdc
- tasmota32solo1
- tasmota32c2-arduino30
- tasmota32c6cdc-arduino30
steps:
- uses: actions/checkout@v4
with:
@ -196,22 +205,27 @@ jobs:
run: |
pip install wheel
pip install -U platformio
cp ./platformio_tasmota_core3_env_sample.ini ./platformio_tasmota_core3_env.ini
cp ./platformio_override_sample.ini ./platformio_override.ini
- name: Download safeboot firmwares
uses: jason2866/download-artifact@v3.0.4
uses: actions/download-artifact@v4
with:
name: firmware_safeboot
path: ./firmware
- name: Display downloaded files
pattern: tasmota32*
path: ./temp
- name: Move safeboot files
run: |
ls -R ./firmware/
mkdir -p ./firmware/firmware
find ./temp -type f -exec cp -t ./firmware/firmware {} +
- name: Add SHA to footer
run: |
COMMIT_SHA_LONG=$(git rev-parse --short HEAD || echo "")
SHA=${COMMIT_SHA_LONG::7}
sed -i -e "s/TASMOTA_SHA_SHORT/TASMOTA_SHA_SHORT $SHA-/g" ./tasmota/include/tasmota_version.h
- name: Run PlatformIO
run: platformio run -e ${{ matrix.variant }}
- name: Upload firmware artifacts
uses: jason2866/upload-artifact@v2.0.3
uses: actions/upload-artifact@v4
with:
name: firmware
name: ${{ matrix.variant }}
path: ./build_output
language-images:
@ -222,7 +236,7 @@ jobs:
strategy:
matrix:
variant: [ tasmota, tasmota32 ]
language: [ AD, AF, BG, BR, CN, CZ, DE, ES, FR, FY, GR, HE, HU, IT, KO, NL, PL, PT, RO, RU, SE, SK, TR, TW, UK, VN ]
language: [ AD, AF, BG, BR, CN, CZ, DE, ES, FR, FY, GR, HE, HU, IT, KO, LT, NL, PL, PT, RO, RU, SE, SK, TR, TW, UK, VN ]
steps:
- uses: actions/checkout@v4
with:
@ -235,22 +249,27 @@ jobs:
run: |
pip install wheel
pip install -U platformio
cp ./platformio_tasmota_core3_env_sample.ini ./platformio_tasmota_core3_env.ini
cp ./platformio_override_sample.ini ./platformio_override.ini
- name: Download safeboot firmwares
uses: jason2866/download-artifact@v3.0.4
uses: actions/download-artifact@v4
with:
name: firmware_safeboot
path: ./firmware
- name: Display downloaded files
pattern: tasmota32*
path: ./temp
- name: Move safeboot files
run: |
ls -R ./firmware/
mkdir -p ./firmware/firmware
find ./temp -type f -exec cp -t ./firmware/firmware {} +
- name: Add SHA to footer
run: |
COMMIT_SHA_LONG=$(git rev-parse --short HEAD || echo "")
SHA=${COMMIT_SHA_LONG::7}
sed -i -e "s/TASMOTA_SHA_SHORT/TASMOTA_SHA_SHORT $SHA-/g" ./tasmota/include/tasmota_version.h
- name: Run PlatformIO
run: platformio run -e ${{ matrix.variant }}-${{ matrix.language }}
- name: Upload language firmware artifacts
uses: jason2866/upload-artifact@v2.0.3
uses: actions/upload-artifact@v4
with:
name: firmware
name: ${{ matrix.variant }}-${{ matrix.language }}
path: ./build_output
Start_final_copy:

View File

@ -21,17 +21,17 @@ jobs:
strategy:
matrix:
variant:
- tasmota32solo1-safeboot
- tasmota32-safeboot
- tasmota32solo1-safeboot
- tasmota32c2-safeboot
- tasmota32c3-safeboot
- tasmota32c3cdc-safeboot
- tasmota32c3ser-safeboot
- tasmota32s2-safeboot
- tasmota32s2cdc-safeboot
- tasmota32s3-safeboot
- tasmota32s3cdc-safeboot
- tasmota32c2-safeboot
- tasmota32s3ser-safeboot
- tasmota32c6-safeboot
- tasmota32c6cdc-safeboot
- tasmota32c6ser-safeboot
steps:
- uses: actions/checkout@v4
with:
@ -44,14 +44,16 @@ jobs:
run: |
pip install wheel
pip install -U platformio
cp ./platformio_tasmota_core3_env_sample.ini ./platformio_tasmota_core3_env.ini
cp ./platformio_override_sample.ini ./platformio_override.ini
- name: Add "release" to footer
run: |
sed -i -e "s/TASMOTA_SHA_SHORT/TASMOTA_SHA_SHORT release-/g" ./tasmota/include/tasmota_version.h
- name: Run PlatformIO
run: platformio run -e ${{ matrix.variant }}
- name: Upload safeboot firmware artifacts
uses: jason2866/upload-artifact@v2.0.3
uses: actions/upload-artifact@v4
with:
name: firmware_safeboot
name: ${{ matrix.variant }}
path: ./build_output
base-images:
@ -83,12 +85,16 @@ jobs:
run: |
pip install wheel
pip install -U platformio
cp ./platformio_override_sample.ini ./platformio_override.ini
- name: Add "release" to footer
run: |
sed -i -e "s/TASMOTA_SHA_SHORT/TASMOTA_SHA_SHORT release-/g" ./tasmota/include/tasmota_version.h
- name: Run PlatformIO
run: platformio run -e ${{ matrix.variant }}
- name: Upload firmware artifacts
uses: jason2866/upload-artifact@v2.0.3
uses: actions/upload-artifact@v4
with:
name: firmware
name: ${{ matrix.variant }}
path: ./build_output
base32-images:
@ -107,12 +113,12 @@ jobs:
- tasmota32-display
- tasmota32-ir
- tasmota32-lvgl
- tasmota32c2
- tasmota32c3
- tasmota32c3cdc
- tasmota32c6
- tasmota32s2
- tasmota32s2cdc
- tasmota32s3
- tasmota32s3cdc
- tasmota32solo1
steps:
- uses: actions/checkout@v4
@ -126,20 +132,25 @@ jobs:
run: |
pip install wheel
pip install -U platformio
cp ./platformio_override_sample.ini ./platformio_override.ini
- name: Download safeboot firmwares
uses: jason2866/download-artifact@v3.0.4
uses: actions/download-artifact@v4
with:
name: firmware_safeboot
path: ./firmware
- name: Display downloaded files
pattern: tasmota32*
path: ./temp
- name: Move safeboot files
run: |
ls -R ./firmware/
mkdir -p ./firmware/firmware
find ./temp -type f -exec cp -t ./firmware/firmware {} +
- name: Add "release" to footer
run: |
sed -i -e "s/TASMOTA_SHA_SHORT/TASMOTA_SHA_SHORT release-/g" ./tasmota/include/tasmota_version.h
- name: Run PlatformIO
run: platformio run -e ${{ matrix.variant }}
- name: Upload firmware artifacts
uses: jason2866/upload-artifact@v2.0.3
uses: actions/upload-artifact@v4
with:
name: firmware
name: ${{ matrix.variant }}
path: ./build_output
language-images:
@ -150,7 +161,7 @@ jobs:
strategy:
matrix:
variant: [ tasmota, tasmota32 ]
language: [ AD, AF, BG, BR, CN, CZ, DE, ES, FR, FY, GR, HE, HU, IT, KO, NL, PL, PT, RO, RU, SE, SK, TR, TW, UK, VN ]
language: [ AD, AF, BG, BR, CN, CZ, DE, ES, FR, FY, GR, HE, HU, IT, KO, LT, NL, PL, PT, RO, RU, SE, SK, TR, TW, UK, VN ]
steps:
- uses: actions/checkout@v4
with:
@ -163,20 +174,25 @@ jobs:
run: |
pip install wheel
pip install -U platformio
cp ./platformio_override_sample.ini ./platformio_override.ini
- name: Download safeboot firmwares
uses: jason2866/download-artifact@v3.0.4
uses: actions/download-artifact@v4
with:
name: firmware_safeboot
path: ./firmware
- name: Display downloaded files
pattern: tasmota32*
path: ./temp
- name: Move safeboot files
run: |
ls -R ./firmware/
mkdir -p ./firmware/firmware
find ./temp -type f -exec cp -t ./firmware/firmware {} +
- name: Add "release" to footer
run: |
sed -i -e "s/TASMOTA_SHA_SHORT/TASMOTA_SHA_SHORT release-/g" ./tasmota/include/tasmota_version.h
- name: Run PlatformIO
run: platformio run -e ${{ matrix.variant }}-${{ matrix.language }}
- name: Upload language firmware artifacts
uses: jason2866/upload-artifact@v2.0.3
uses: actions/upload-artifact@v4
with:
name: firmware
name: ${{ matrix.variant }}-${{ matrix.language }}
path: ./build_output
Release:
@ -185,28 +201,24 @@ jobs:
continue-on-error: true
steps:
- uses: actions/checkout@v4
- name: Download Tasmota firmwares
uses: jason2866/download-artifact@v3.0.4
- name: Download all Tasmota artifacts
uses: actions/download-artifact@v4
with:
name: firmware
path: ./mv_firmware
- name: Download safeboot firmwares
uses: jason2866/download-artifact@v3.0.4
with:
name: firmware_safeboot
path: ./mv_firmware
pattern: tasmota*
path: ./temp
- name: Move files
run: |
mkdir -p ./release
find ./temp -type f -exec cp -t ./release {} +
- name: Display structure of downloaded files
run: ls -R ./mv_firmware/
- name: Zip all map.gz files in one file -> map_all.zip
run: 7z a -mx=9 -tzip -xr'!.*' map_all.zip mv_firmware/map
run: ls -R ./release/
- name: Release
uses: jason2866/action-gh-release@v1.2
#if: startsWith(github.ref, 'refs/tags/')
with:
tag_name: ${{ github.run_number }}
files: |
./mv_firmware/firmware/*
map_all.zip
./release/tasmota*
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@ -25,7 +25,7 @@ jobs:
fail-fast: true
matrix:
variant:
- tasmota32-safeboot
- tasmota32-webcam
steps:
- uses: actions/checkout@v4
- name: Set up Python
@ -41,9 +41,9 @@ jobs:
#platformio update
- name: Run PlatformIO
run: platformio run -e ${{ matrix.variant }}
- uses: jason2866/upload-artifact@v2.0.3
- uses: actions/upload-artifact@v4
with:
name: firmware
name: ${{ matrix.variant }}
path: ./build_output
os-check-mac:
@ -53,7 +53,7 @@ jobs:
fail-fast: true
matrix:
variant:
- tasmota32-webcam
- tasmota32solo1-safeboot
steps:
- uses: actions/checkout@v4
- name: Set up Python
@ -69,9 +69,9 @@ jobs:
#platformio update
- name: Run PlatformIO
run: platformio run -e ${{ matrix.variant }}
- uses: jason2866/upload-artifact@v2.0.3
- uses: actions/upload-artifact@v4
with:
name: firmware
name: ${{ matrix.variant }}
path: ./build_output
base-images:
@ -91,32 +91,27 @@ jobs:
- tasmota-sensors
- tasmota-zbbridge
- tasmota32
- tasmota32solo1
- tasmota32c2
- tasmota32c3
- tasmota32c6cdc-arduino30
- tasmota32c6
- tasmota32s2
- tasmota32s2cdc
- tasmota32s3
- tasmota32-zbbrdgpro
- tasmota-zigbee
- tasmota32-bluetooth
- tasmota32-core2
- tasmota32-nspanel
- tasmota32-display
- tasmota32-ir
- tasmota32-lvgl
- tasmota32c3cdc
- tasmota32s2cdc
- tasmota32s3cdc
- tasmota32solo1
- tasmota32solo1-safeboot
- tasmota32c3-safeboot
- tasmota32c3cdc-safeboot
- tasmota32-safeboot
- tasmota32s2-safeboot
- tasmota32s2cdc-safeboot
- tasmota32s3-safeboot
- tasmota32s3cdc-safeboot
- tasmota32c2-safeboot
- tasmota32c3-safeboot
- tasmota32c6-safeboot
- tasmota32c6cdc-safeboot
steps:
- uses: actions/checkout@v4
- name: Set up Python
@ -130,13 +125,12 @@ jobs:
pip install -U platformio
#platformio upgrade --dev
#platformio update
cp ./platformio_tasmota_core3_env_sample.ini ./platformio_tasmota_core3_env.ini
cp ./platformio_override_sample.ini ./platformio_override.ini
- name: Run PlatformIO
run: platformio run -e ${{ matrix.variant }}
- uses: jason2866/upload-artifact@v2.0.3
- uses: actions/upload-artifact@v4
with:
name: firmware
name: ${{ matrix.variant }}
path: ./build_output
language-images:
@ -146,7 +140,7 @@ jobs:
fail-fast: true
matrix:
variant: [ tasmota ]
language: [ AD, AF, BG, BR, CN, CZ, DE, ES, FR, FY, GR, HE, HU, IT, KO, NL, PL, PT, RO, RU, SE, SK, TR, TW, UK, VN ]
language: [ AD, AF, BG, BR, CN, CZ, DE, ES, FR, FY, GR, HE, HU, IT, KO, LT, NL, PL, PT, RO, RU, SE, SK, TR, TW, UK, VN ]
steps:
- uses: actions/checkout@v4
- name: Set up Python
@ -162,7 +156,7 @@ jobs:
#platformio update
- name: Run PlatformIO
run: platformio run -e ${{ matrix.variant }}-${{ matrix.language }}
- uses: jason2866/upload-artifact@v2.0.3
- uses: actions/upload-artifact@v4
with:
name: firmware
name: ${{ matrix.variant }}-${{ matrix.language }}
path: ./build_output

61
.github/workflows/pr_comment.yml.off vendored Normal file
View File

@ -0,0 +1,61 @@
name: Comment on pull request
on:
workflow_run:
workflows: [Tasmota CI]
types: [completed]
jobs:
pr_comment:
if: github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'success'
runs-on: ubuntu-latest
steps:
- uses: actions/github-script@v7
with:
# This snippet is public-domain, taken from
# https://github.com/oprypin/nightly.link/blob/master/.github/workflows/pr-comment.yml
script: |
async function upsertComment(owner, repo, issue_number, purpose, body) {
const {data: comments} = await github.rest.issues.listComments(
{owner, repo, issue_number});
const marker = `<!-- bot: ${purpose} -->`;
body = marker + "\n" + body;
const existing = comments.filter((c) => c.body.includes(marker));
if (existing.length > 0) {
const last = existing[existing.length - 1];
core.info(`Updating comment ${last.id}`);
await github.rest.issues.updateComment({
owner, repo,
body,
comment_id: last.id,
});
} else {
core.info(`Creating a comment in issue / PR #${issue_number}`);
await github.rest.issues.createComment({issue_number, body, owner, repo});
}
}
const {owner, repo} = context.repo;
const run_id = ${{github.event.workflow_run.id}};
const pull_requests = ${{ toJSON(github.event.workflow_run.pull_requests) }};
if (!pull_requests.length) {
return core.error("This workflow doesn't match any pull requests!");
}
const artifacts = await github.paginate(
github.rest.actions.listWorkflowRunArtifacts, {owner, repo, run_id});
if (!artifacts.length) {
return core.error(`No artifacts found`);
}
let body = `Download the artifacts for this pull request:\n`;
for (const art of artifacts) {
body += `\n* [${art.name}.zip](https://nightly.link/${owner}/${repo}/actions/artifacts/${art.id}.zip)`;
}
core.info("Review thread message body:", body);
for (const pr of pull_requests) {
await upsertComment(owner, repo, pr.number,
"nightly-link", body);
}

13
.gitignore vendored
View File

@ -8,17 +8,23 @@
*.o
*.gcno
*.gcda
dependencies.lock
## Project files ######
managed_components
.platformio
.pio
.clang_complete
.gcc-flags.json
.cache
.dummy
sdkconfig.*
data
unpacked_fs
unpacked_boards
tasmota/user_config_override.h
tasmota/include/local_ca_data.h
tasmota/include/local_ca_descriptor.h
variants
variants3
build
@ -42,3 +48,10 @@ lib/libesp32/berry/berry
.vscode/extensions.json
*.bak
*.code-workspace
## IntelliJ ######
.idea
## Python virtual environments for Platformio ##
venv
.venv

574
BUILDS.md
View File

@ -2,282 +2,302 @@
l = lite, t = tasmota (ESP8266 / ESP32), k = knx, s = sensors, i = ir, d = display
Note: `minimal` variant is not listed as it shouldn't be used outside of the [upgrading](https://tasmota.github.io/docs/Upgrading/) process.
Note: the `minimal` variant is not listed as it shouldn't be used outside of the [upgrading](https://tasmota.github.io/docs/Upgrading/) process.
| Feature or Sensor | l | t | k | s | i | d | Remarks
|---------------------------|---|-------|---|---|---|---|--------
| MY_LANGUAGE en_GB | x | x / x | x | x | x | x |
| USE_IMPROV | x | x / x | x | x | x | x |
| USE_UFILESYS | - | - / x | - | - | - | - |
| USE_ARDUINO_OTA | - | - / - | - | - | - | - |
| USE_DOMOTICZ | - | x / x | x | x | x | - |
| USE_HOME_ASSISTANT | - | - / - | - | - | - | - |
| USE_TASMOTA_DISCOVERY | x | x / x | x | x | x | x |
| USE_MQTT_TLS* | - | - / x | - | - | - | - |
| USE_MQTT_AWS_IOT | - | - / - | - | - | - | - |
| USE_4K_RSA | - | - / - | - | - | - | - |
| USE_TELEGRAM | - | - / - | - | - | - | - |
| USE_KNX | - | - / x | x | - | - | - |
| USE_WEBSERVER | x | x / x | x | x | x | x |
| USE_WEBSEND_RESPONSE | - | - / - | - | - | - | - |
| USE_EMULATION_HUE | x | x / x | - | x | - | - |
| USE_EMULATION_WEMO | x | x / x | - | x | - | - |
| USE_DISCOVERY | - | - / - | - | - | - | - |
| WEBSERVER_ADVERTISE | - | x / - | x | - | - | x |
| MQTT_HOST_DISCOVERY | - | - / - | - | - | - | - |
| USE_TIMERS | x | x / x | x | x | x | x |
| USE_TIMERS_WEB | x | x / x | x | x | x | x |
| USE_SUNRISE | x | x / x | x | x | x | x |
| USE_RULES | x | x / x | x | x | x | x |
| USE_SCRIPT | - | - / - | - | - | - | - |
| USE_EXPRESSION | - | - / x | - | - | - | - | Every ESP32 + ESP8266 > 1MB
| SUPPORT_IF_STATEMENT | - | - / x | - | - | - | - | Every ESP32 + ESP8266 > 1MB
| USE_HOTPLUG | - | - / - | - | - | - | - |
| USE_PROMETHEUS | - | - / - | - | - | - | - |
| USE_PING | - | - / - | - | - | - | - |
| | | | | | | |
| Feature or Sensor | l | t | k | s | i | d | Remarks
| ROTARY_V1 | - | x / x | - | x | - | - |
| USE_SONOFF_RF | - | x / - | x | x | - | - |
| USE_RF_FLASH | - | x / - | x | x | - | - |
| USE_SONOFF_SC | - | x / - | x | x | - | - |
| USE_TUYA_MCU | x | x / - | x | x | - | x |
| USE_ARMTRONIX_DIMMERS | - | x / - | x | - | - | - |
| USE_PS_16_DZ | - | x / - | x | - | - | - |
| USE_SONOFF_IFAN | - | x / - | x | - | - | - |
| USE_BUZZER | - | x / x | x | x | - | - |
| USE_ARILUX_RF | - | x / - | x | - | - | - |
| USE_SHUTTER | - | x / x | x | - | - | - |
| USE_DEEPSLEEP | - | x / x | - | x | - | - |
| USE_EXS_DIMMER | - | x / - | x | - | - | - |
| USE_DEVICE_GROUPS | - | x / x | - | - | - | - |
| USE_PWM_DIMMER | - | x / - | x | - | - | - |
| USE_KEELOQ | - | - / - | - | - | - | - |
| USE_SONOFF_D1 | - | x / - | x | - | - | - |
| USE_SHELLY_DIMMER | - | x / - | - | - | - | - |
| USE_AC_ZERO_CROSS_DIMMER | - | x / x | x | x | x | x |
| | | | | | | |
| Feature or Sensor | l | t | k | s | i | d | Remarks
| USE_LIGHT | x | x / x | x | x | x | x |
| USE_WS2812 | - | x / x | x | x | - | x |
| USE_WS2812_DMA | - | - / - | - | - | - | - |
| USE_MY92X1 | - | x / - | x | x | - | x |
| USE_SM16716 | - | x / - | x | x | - | x |
| USE_SM2135 | - | x / - | x | x | - | x |
| USE_SM2335 | - | x / - | x | x | - | x |
| USE_BP5758D | - | x / - | x | x | - | x |
| USE_BP1658CJ | - | x / - | x | x | - | x |
| USE_SONOFF_L1 | - | x / - | x | x | - | x |
| USE_ELECTRIQ_MOODL | - | x / - | x | x | - | x |
| | | | | | | |
| USE_ENERGY_SENSOR | - | x / x | x | x | - | - |
| USE_ENERGY_DUMMY | - | x / x | x | x | - | - |
| USE_PZEM004T | - | x / x | x | x | - | - |
| USE_PZEM_AC | - | x / x | x | x | - | - |
| USE_PZEM_DC | - | x / x | x | x | - | - |
| USE_MCP39F501 | - | x / - | x | x | - | - |
| USE_SDM72 | - | - / x | - | x | - | - |
| USE_SDM120 | - | - / x | - | x | - | - |
| USE_SDM230 | - | - / x | - | - | - | - |
| USE_SDM630 | - | - / x | - | x | - | - |
| USE_DDS2382 | - | - / x | - | x | - | - |
| USE_DDSU666 | - | - / x | - | x | - | - |
| USE_SOLAX_X1 | - | - / - | - | - | - | - |
| USE_LE01MR | - | - / - | - | - | - | - |
| USE_BL09XX | - | x / x | x | x | - | - |
| USE_TELEINFO | - | - / - | - | - | - | - |
| USE_IEM3000 | - | - / - | - | - | - | - |
| USE_WE517 | - | - / x | - | - | - | - |
| USE_MODBUS_ENERGY | - | - / x | - | - | - | - |
| | | | | | | |
| USE_ADC_VCC | x | - / - | - | - | x | - |
| USE_COUNTER | - | x / x | x | x | - | x |
| USE_DS18x20 | - | x / x | x | x | - | x |
| USE_DHT | - | x / x | x | x | - | x |
| USE_MAX31855 | - | - / x | - | x | - | - |
| USE_MAX31865 | - | - / - | - | - | - | - |
| USE_THERMOSTAT | - | - / - | - | - | - | - |
| USE_LMT01 | - | - / x | - | x | - | - |
| | | | | | | |
| Feature or Sensor | l | t | k | s | i | d | Remarks
| USE_I2C | - | x / x | x | x | - | x |
| USE_SHT | - | - / x | - | x | - | - |
| USE_HTU | - | - / x | - | x | - | - |
| USE_BMP | - | - / x | - | x | - | - |
| USE_BME68X | - | - / x | - | x | - | - |
| USE_BH1750 | - | - / x | - | x | - | - |
| USE_VEML6070 | - | - / x | - | x | - | - |
| USE_ADS1115 | - | - / x | - | x | - | - |
| USE_INA219 | - | - / x | - | x | - | - |
| USE_INA226 | - | - / - | - | - | - | - |
| USE_INA3221 | - | - / - | - | - | - | - |
| USE_SHT3X | - | - / x | - | x | - | - |
| USE_TSL2561 | - | - / - | - | - | - | - |
| USE_TSL2591 | - | - / - | - | - | - | - |
| USE_MGS | - | - / x | - | x | - | - |
| USE_SGP30 | - | - / x | - | x | - | - |
| USE_SGP40 | - | - / x | - | x | - | - |
| USE_SGP4X | - | - / x | - | - | - | - |
| USE_SEN5X | - | - / x | - | x | - | - |
| USE_SI1145 | - | - / - | - | - | - | - |
| USE_LM75AD | - | - / x | - | x | - | - |
| USE_APDS9960 | - | - / - | - | - | - | - |
| USE_MCP230xx | - | - / - | - | - | - | - |
| USE_MCP23XXX_DRV | - | - / - | - | - | - | - |
| USE_PCA9632 | - | - / - | - | - | - | - |
| USE_PCA9685 | - | - / - | - | - | - | - |
| USE_PCA9685_V2 | - | - / - | - | - | - | - |
| USE_MPR121 | - | - / - | - | - | - | - |
| USE_CCS811 | - | - / - | - | x | - | - |
| USE_CCS811_V2 | - | - / x | - | - | - | - |
| USE_ENS16x | - | - / - | - | - | - | - |
| USE_ENS210 | - | - / - | - | - | - | - |
| USE_MPU6050 | - | - / - | - | - | - | - |
| USE_DS3231 | - | - / - | - | - | - | - |
| USE_MGC3130 | - | - / - | - | - | - | - |
| USE_MAX44009 | - | - / - | - | - | - | - |
| USE_SCD30 | - | - / x | - | x | - | - |
| USE_SCD40 | - | - / x | - | - | - | - |
| USE_SPS30 | - | - / - | - | - | - | - |
| USE_ADE7880 | - | - / - | - | - | - | - |
| USE_ADE7953 | - | x / x | x | x | - | x |
| USE_VL53L0X | - | - / x | - | x | - | - |
| USE_VL53L1X | - | - / - | - | - | - | - |
| USE_MLX90614 | - | - / - | - | - | - | - |
| USE_CHIRP | - | - / - | - | - | - | - |
| USE_PAJ7620 | - | - / - | - | - | - | - |
| USE_PCF8574 | - | - / - | - | - | - | - |
| USE_PMSA003I | - | - / - | - | - | - | - |
| USE_LOX_O2 | - | - / x | - | x | - | - |
| USE_GDK101 | - | - / - | - | - | - | - |
| USE_TC74 | - | - / - | - | - | - | - |
| USE_PCA9557 | - | - / - | - | - | - | - |
| | | | | | | |
| Feature or Sensor | l | t | k | s | i | d | Remarks
| USE_HIH6 | - | - / x | - | x | - | - |
| USE_DHT12 | - | - / x | - | x | - | - |
| USE_DS1624 | - | - / x | - | x | - | - |
| USE_AHT1x | - | - / - | - | - | - | - |
| USE_HDC1080 | - | - / - | - | - | - | - |
| USE_WEMOS_MOTOR_V1 | - | - / x | - | x | - | - |
| USE_IAQ | - | - / x | - | x | - | - |
| USE_AS3935 | - | - / x | - | x | - | - |
| USE_VEML6075 | - | - / - | - | - | - | - |
| USE_VEML7700 | - | - / - | - | - | - | - |
| USE_MCP9808 | - | - / - | - | - | - | - |
| USE_MLX90640 | - | - / - | - | - | - | - |
| USE_HP303B | - | - / - | - | - | - | - |
| USE_EZOCO2 | - | - / - | - | - | - | - |
| USE_EZODO | - | - / - | - | - | - | - |
| USE_EZOEC | - | - / - | - | - | - | - |
| USE_EZOFLO | - | - / - | - | - | - | - |
| USE_EZOHUM | - | - / - | - | - | - | - |
| USE_EZOO2 | - | - / - | - | - | - | - |
| USE_EZOORP | - | - / - | - | - | - | - |
| USE_EZOPH | - | - / - | - | - | - | - |
| USE_EZOPMP | - | - / - | - | - | - | - |
| USE_EZOPRS | - | - / - | - | - | - | - |
| USE_EZORGB | - | - / - | - | - | - | - |
| USE_EZORTD | - | - / - | - | - | - | - |
| USE_SEESAW_SOIL | - | - / - | - | - | - | - |
| USE_TOF10120 | - | - / - | - | - | - | - |
| USE_BM8563 | - | - / - | - | - | - | - |
| USE_AM2320 | - | - / - | - | - | - | - |
| USE_T67XX | - | - / - | - | - | - | - |
| USE_HM330X | - | - / - | - | - | - | - |
| USE_HDC2010 | - | - / - | - | - | - | - |
| USE_PCF85363 | - | - / - | - | - | - | - |
| USE_DS3502 | - | - / - | - | - | - | - |
| USE_HYT | - | - / - | - | - | - | - |
| USE_LUXV30B | - | - / - | - | - | - | - |
| USE_HMC5883L | - | - / - | - | - | - | - |
| USE_QMC5883L | - | - / - | - | - | - | - |
| | | | | | | |
| Feature or Sensor | l | t | k | s | i | d | Remarks
| USE_SPI | - | - / - | - | - | - | x |
| USE_RC522 | - | - / - | - | - | - | - |
| USE_CANSNIFFER | - | - / - | - | - | - | - |
| USE_MHZ19 | - | - / x | - | x | - | - |
| USE_SENSEAIR | - | - / x | - | x | - | - |
| USE_PMS5003 | - | - / x | - | x | - | - |
| USE_NOVA_SDS | - | - / x | - | x | - | - |
| USE_HPMA | - | - / x | - | x | - | - |
| USE_SERIAL_BRIDGE | - | x / x | x | x | - | x |
| USE_MODBUS_BRIDGE | - | - / x | - | - | - | - |
| USE_MP3_PLAYER | - | - / x | - | x | - | - |
| USE_AZ7798 | - | - / - | - | - | - | - |
| USE_PN532_HSU | - | - / x | - | x | - | - |
| USE_RDM6300 | - | - / x | - | x | - | - |
| USE_IBEACON | - | - / x | - | x | - | - |
| USE_GPS | - | - / - | - | - | - | - |
| USE_HM10 | - | - / - | - | x | - | - |
| USE_HRXL | - | - / x | - | x | - | - |
| USE_TASMOTA_CLIENT | - | - / - | - | - | - | - |
| USE_OPENTHERM | - | - / - | - | - | - | - |
| USE_MIEL_HVAC | - | - / - | - | - | - | - |
| USE_PROJECTOR_CTRL | - | - / - | - | - | - | - |
| USE_AS608 | - | - / - | - | - | - | - |
| USE_LD2410 | - | - / - | - | - | - | - |
| USE_GM861 | - | - / - | - | - | - | - |
| USE_TCP_BRIDGE | - | - / - | - | - | - | - | zbbridge / zbbrdgpro
| | | | | | | |
| USE_NRF24 | - | - / - | - | - | - | - |
| USE_MIBLE | - | - / - | - | - | - | - |
| USE_ZIGBEE | - | - / - | - | - | - | - |
| USE_ZIGBEE_ZNP | - | - / - | - | - | - | - |
| USE_ZIGBEE_EZSP | - | - / - | - | - | - | - | Sonoff ZbBridge
| | | | | | | |
| USE_IR_REMOTE | - | x / - | x | x | x | x |
| USE_IR_RECEIVE | - | x / - | x | x | x | x |
| USE_IR_REMOTE_FULL | - | - / - | - | - | x | - | Enable ALL protocols
| | | | | | | |
| USE_SR04 | - | - / - | - | x | - | - |
| USE_ME007 | - | - / - | - | - | - | - |
| USE_DYP | - | - / - | - | - | - | - |
| USE_TM1638 | - | - / x | - | x | - | - |
| USE_HX711 | - | - / x | - | x | - | - |
| USE_TX2x_WIND_SENSOR | - | - / - | - | - | - | - |
| USE_WINDMETER | - | - / - | - | - | - | - |
| USE_RC_SWITCH | - | - / x | - | x | - | - |
| USE_RF_SENSOR | - | - / x | - | x | - | - | AlectoV2 only
| USE_HRE | - | - / x | - | x | - | - |
| USE_A4988_STEPPER | - | - / - | - | - | - | - |
| USE_NEOPOOL | - | - / - | - | - | - | - |
| USE_FLOWRATEMETER | - | - / - | - | - | - | - |
| | | | | | | |
| Feature or Sensor | l | t | k | s | i | d | Remarks
| USE_DISPLAY | - | - / - | - | - | - | x |
| USE_DISPLAY_LCD | - | - / - | - | - | - | x |
| USE_DISPLAY_SSD1306 | - | - / - | - | - | - | x |
| USE_DISPLAY_MATRIX | - | - / - | - | - | - | x |
| USE_DISPLAY_SH1106 | - | - / - | - | - | - | x |
| USE_DISPLAY_ILI9341 | - | - / - | - | - | - | x |
| USE_DISPLAY_EPAPER_29 | - | - / - | - | - | - | x |
| USE_DISPLAY_EPAPER_42 | - | - / - | - | - | - | x |
| USE_DISPLAY_SSD1351 | - | - / - | - | - | - | x |
| USE_DISPLAY_RA8876 | - | - / - | - | - | - | x |
| USE_DISPLAY_ST7789 | - | - / - | - | - | - | x |
| USE_DISPLAY_TM1637 | - | - / - | - | - | - | x |
| USE_DISPLAY_TM1621_SONOFF | - | - / x | - | - | - | - |
| USE_DISPLAY_TM1650 | - | - / - | - | - | - | - |
| | | | | | | |
| USE_FT5206 | - | - / - | - | - | - | - |
| USE_FTC532 | - | - / - | - | - | - | - |
| USE_BS814A2 | - | - / - | - | - | - | - |
| | | | | | | |
| ESP32 Feature | l | t | k | s | i | d | Remarks
| USE_HALLEFFECT | | / x | | | | |
| USE_MI_ESP32 | | / x | | | | | See SetOption115
| USE_IBEACON_ESP32 | | / - | | | | |
| USE_WEBCAM | | / - | | | | |
| USE_ETHERNET | | / x | | | | |
| USE_I2S_AUDIO | | / - | | | | |
| USE_TTGO_WATCH | | / - | | | | |
| USE_SONOFF_SPM | | / x | | | | |
| USE_DISPLAY_TM1621_SONOFF | | / x | | | | |
| USE_SHELLY_PRO | | / x | | | | |
| USE_DALI | | / - | | | | |
| USE_DINGTIAN_RELAY | | / - | | | | |
| USE_MATTER_DEVICE | | / x | | | | | See SetOption151
| **Feature or Sensor** | **l** | **t** | **k** | **s** | **i** | **d** | **Remarks** |
| ------------------------- | ----- | ----- | ----- | ----- | ----- | ----- | --------------------------- |
| MY_LANGUAGE en_GB | x | x / x | x | x | x | x |
| USE_IMPROV | x | x / x | x | x | x | x |
| USE_UFILESYS | - | - / x | - | - | - | - | Every ESP8266 > 1MB |
| USE_ARDUINO_OTA | - | - / - | - | - | - | - |
| USE_DOMOTICZ | - | x / x | x | x | x | - |
| USE_HOME_ASSISTANT | - | - / - | - | - | - | - |
| USE_TASMOTA_DISCOVERY | x | x / x | x | x | x | x |
| USE_MQTT_TLS\* | - | - / x | - | - | - | - |
| USE_MQTT_CLIENT_CERT | - | - / - | - | - | - | - |
| USE_MQTT_AWS_IOT | - | - / - | - | - | - | - |
| USE_4K_RSA | - | - / - | - | - | - | - |
| USE_TELEGRAM | - | - / - | - | - | - | - |
| USE_KNX | - | - / x | x | - | - | - |
| USE_TELNET | - | - / - | - | - | - | - |
| USE_XYZMODEM | - | - / - | - | - | - | - |
| USE_WEBSERVER | x | x / x | x | x | x | x |
| USE_WEBSEND_RESPONSE | - | - / - | - | - | - | - |
| USE_EMULATION_HUE | x | x / x | - | x | - | - |
| USE_EMULATION_WEMO | x | x / x | - | x | - | - |
| USE_DISCOVERY | - | - / - | - | - | - | - |
| WEBSERVER_ADVERTISE | - | x / - | x | - | - | x |
| MQTT_HOST_DISCOVERY | - | - / - | - | - | - | - |
| USE_TIMERS | x | x / x | x | x | x | x |
| USE_TIMERS_WEB | x | x / x | x | x | x | x |
| USE_SUNRISE | x | x / x | x | x | x | x |
| USE_RULES | x | x / x | x | x | x | x |
| USE_SCRIPT | - | - / - | - | - | - | - |
| USE_EXPRESSION | - | x / x | - | - | - | - |
| SUPPORT_IF_STATEMENT | - | x / x | - | - | - | - |
| USE_HOTPLUG | - | - / - | - | - | - | - |
| USE_PROMETHEUS | - | - / - | - | - | - | - |
| USE_PING | - | - / - | - | - | - | - |
| USE_HDMI_CEC | - | - / - | - | - | - | - |
| USE_MAGIC_SWITCH | - | - / x | - | - | - | - |
| USE_GPIO_VIEWER | - | - / x | - | - | - | - |
| | | | | | | |
| **Feature or Sensor** | **l** | **t** | **k** | **s** | **i** | **d** | **Remarks** |
| ROTARY_V1 | - | x / x | - | x | - | - |
| USE_SONOFF_RF | - | x / - | x | x | - | - |
| USE_RF_FLASH | - | x / - | x | x | - | - |
| USE_SONOFF_SC | - | x / - | x | x | - | - |
| USE_TUYA_MCU | x | x / - | x | x | - | x |
| USE_ARMTRONIX_DIMMERS | - | x / - | x | - | - | - |
| USE_PS_16_DZ | - | x / - | x | - | - | - |
| USE_SONOFF_IFAN | - | x / - | x | - | - | - |
| USE_BUZZER | - | x / x | x | x | - | - |
| USE_ARILUX_RF | - | x / - | x | - | - | - |
| USE_SHUTTER | - | x / x | x | - | - | - |
| USE_DEEPSLEEP | - | x / x | - | x | - | - |
| USE_EXS_DIMMER | - | x / - | x | - | - | - |
| USE_DEVICE_GROUPS | - | x / x | - | - | - | - |
| USE_PWM_DIMMER | - | x / - | x | - | - | - |
| USE_KEELOQ | - | - / - | - | - | - | - |
| USE_SONOFF_D1 | - | x / - | x | - | - | - |
| USE_SHELLY_DIMMER | - | x / - | - | - | - | - |
| USE_AC_ZERO_CROSS_DIMMER | - | x / x | x | x | x | x |
| | | | | | | |
| **Feature or Sensor** | **l** | **t** | **k** | **s** | **i** | **d** | **Remarks** |
| USE_LIGHT | x | x / x | x | x | x | x |
| USE_WS2812 | - | x / x | x | x | - | x |
| USE_WS2812_DMA | - | - / - | - | - | - | - |
| USE_MY92X1 | - | x / - | x | x | - | x |
| USE_SM16716 | - | x / - | x | x | - | x |
| USE_SM2135 | - | x / - | x | x | - | x |
| USE_SM2335 | - | x / - | x | x | - | x |
| USE_BP5758D | - | x / - | x | x | - | x |
| USE_BP1658CJ | - | x / - | x | x | - | x |
| USE_SONOFF_L1 | - | x / - | x | x | - | x |
| USE_ELECTRIQ_MOODL | - | x / - | x | x | - | x |
| | | | | | | |
| USE_ENERGY_SENSOR | - | x / x | x | x | - | - |
| USE_ENERGY_DUMMY | - | x / x | x | x | - | - |
| USE_PZEM004T | - | x / x | x | x | - | - |
| USE_PZEM_AC | - | x / x | x | x | - | - |
| USE_PZEM_DC | - | x / x | x | x | - | - |
| USE_MCP39F501 | - | x / - | x | x | - | - |
| USE_SDM72 | - | - / x | - | x | - | - |
| USE_SDM120 | - | - / x | - | x | - | - |
| USE_SDM230 | - | - / x | - | - | - | - |
| USE_SDM630 | - | - / x | - | x | - | - |
| USE_DDS2382 | - | - / x | - | x | - | - |
| USE_DDSU666 | - | - / x | - | x | - | - |
| USE_SOLAX_X1 | - | - / - | - | - | - | - |
| USE_LE01MR | - | - / - | - | - | - | - |
| USE_BL09XX | - | x / x | x | x | - | - |
| USE_TELEINFO | - | - / - | - | - | - | - |
| USE_IEM3000 | - | - / - | - | - | - | - |
| USE_WE517 | - | - / x | - | - | - | - |
| USE_MODBUS_ENERGY | - | - / x | - | - | - | - |
| | | | | | | |
| USE_ADC_VCC | x | - / - | - | - | x | - |
| USE_COUNTER | - | x / x | x | x | - | x |
| USE_DS18x20 | - | x / x | x | x | - | x |
| USE_DHT | - | x / x | x | x | - | x |
| USE_MAX31855 | - | - / x | - | x | - | - |
| USE_MAX31865 | - | - / - | - | - | - | - |
| USE_THERMOSTAT | - | - / - | - | - | - | - |
| USE_LMT01 | - | - / x | - | x | - | - |
| | | | | | | |
| **Feature or Sensor** | **l** | **t** | **k** | **s** | **i** | **d** | **Remarks** |
| USE_I2C | - | x / x | x | x | - | x |
| USE_RTC_CHIPS | - | - / x | - | - | - | - |
| -USE_BM8563 | - | - / x | - | - | - | - |
| -USE_DS3231 | - | - / - | - | - | - | - |
| -USE_PCF85063 | - | - / - | - | - | - | - |
| -USE_PCF85363 | - | - / - | - | - | - | - |
| -USE_RX8010 | - | - / - | - | - | - | - |
| USE_SHT | - | - / x | - | x | - | - |
| USE_HTU | - | - / x | - | x | - | - |
| USE_BMP | - | - / x | - | x | - | - |
| -USE_BME68X | - | - / x | - | x | - | - |
| USE_AMSX915 | - | - / - | - | - | - | - |
| USE_SPL06_007 | - | - / - | - | - | - | - |
| USE_QMP6988 | - | - / - | - | - | - | - |
| USE_BH1750 | - | - / x | - | x | - | - |
| USE_VEML6070 | - | - / x | - | x | - | - |
| USE_ADS1115 | - | - / x | - | x | - | - |
| USE_INA219 | - | - / x | - | x | - | - |
| USE_INA226 | - | - / - | - | - | - | - |
| USE_INA3221 | - | - / - | - | - | - | - |
| USE_SHT3X | - | - / x | - | x | - | - |
| USE_TSL2561 | - | - / - | - | - | - | - |
| USE_TSL2591 | - | - / - | - | - | - | - |
| USE_MGS | - | - / x | - | x | - | - |
| USE_SGP30 | - | - / x | - | x | - | - |
| USE_SGP40 | - | - / x | - | x | - | - |
| USE_SGP4X | - | - / x | - | - | - | - |
| USE_SEN5X | - | - / x | - | x | - | - |
| USE_SI1145 | - | - / - | - | - | - | - |
| USE_LM75AD | - | - / x | - | x | - | - |
| USE_APDS9960 | - | - / - | - | - | - | - |
| USE_MCP230xx | - | - / - | - | - | - | - |
| USE_MCP23XXX_DRV | - | - / - | - | - | - | - |
| USE_PCA9632 | - | - / - | - | - | - | - |
| USE_PCA9685 | - | - / - | - | - | - | - |
| USE_PCA9685_V2 | - | - / - | - | - | - | - |
| USE_MPR121 | - | - / - | - | - | - | - |
| USE_CCS811 | - | - / - | - | x | - | - |
| USE_CCS811_V2 | - | - / x | - | - | - | - |
| USE_ENS16x | - | - / - | - | - | - | - |
| USE_ENS210 | - | - / - | - | - | - | - |
| USE_MPU6050 | - | - / - | - | - | - | - |
| USE_MGC3130 | - | - / - | - | - | - | - |
| USE_MAX44009 | - | - / - | - | - | - | - |
| USE_SCD30 | - | - / x | - | x | - | - |
| USE_SCD40 | - | - / x | - | - | - | - |
| USE_SPS30 | - | - / - | - | - | - | - |
| USE_ADE7880 | - | - / - | - | - | - | - |
| USE_ADE7953 | - | x / x | x | x | - | x |
| USE_VL53L0X | - | - / x | - | x | - | - |
| USE_VL53L1X | - | - / - | - | - | - | - |
| USE_MLX90614 | - | - / - | - | - | - | - |
| USE_CHIRP | - | - / - | - | - | - | - |
| USE_PAJ7620 | - | - / - | - | - | - | - |
| USE_PCF8574 | - | - / - | - | - | - | - |
| USE_PMSA003I | - | - / - | - | - | - | - |
| USE_LOX_O2 | - | - / x | - | x | - | - |
| USE_GDK101 | - | - / - | - | - | - | - |
| USE_TC74 | - | - / - | - | - | - | - |
| USE_PCA9557 | - | - / - | - | - | - | - |
| | | | | | | |
| **Feature or Sensor** | **l** | **t** | **k** | **s** | **i** | **d** | **Remarks** |
| USE_HIH6 | - | - / x | - | x | - | - |
| USE_DHT12 | - | - / x | - | x | - | - |
| USE_DS1624 | - | - / x | - | x | - | - |
| USE_AHT1x | - | - / - | - | - | - | - |
| USE_HDC1080 | - | - / - | - | - | - | - |
| USE_WEMOS_MOTOR_V1 | - | - / x | - | x | - | - |
| USE_IAQ | - | - / x | - | x | - | - |
| USE_AS3935 | - | - / x | - | x | - | - |
| USE_VEML6075 | - | - / - | - | - | - | - |
| USE_VEML7700 | - | - / - | - | - | - | - |
| USE_MCP9808 | - | - / - | - | - | - | - |
| USE_MLX90640 | - | - / - | - | - | - | - |
| USE_HP303B | - | - / - | - | - | - | - |
| USE_EZOCO2 | - | - / - | - | - | - | - |
| USE_EZODO | - | - / - | - | - | - | - |
| USE_EZOEC | - | - / - | - | - | - | - |
| USE_EZOFLO | - | - / - | - | - | - | - |
| USE_EZOHUM | - | - / - | - | - | - | - |
| USE_EZOO2 | - | - / - | - | - | - | - |
| USE_EZOORP | - | - / - | - | - | - | - |
| USE_EZOPH | - | - / - | - | - | - | - |
| USE_EZOPMP | - | - / - | - | - | - | - |
| USE_EZOPRS | - | - / - | - | - | - | - |
| USE_EZORGB | - | - / - | - | - | - | - |
| USE_EZORTD | - | - / - | - | - | - | - |
| USE_SEESAW_SOIL | - | - / - | - | - | - | - |
| USE_TOF10120 | - | - / - | - | - | - | - |
| USE_AM2320 | - | - / - | - | - | - | - |
| USE_T67XX | - | - / - | - | - | - | - |
| USE_HM330X | - | - / - | - | - | - | - |
| USE_HDC2010 | - | - / - | - | - | - | - |
| USE_DS3502 | - | - / - | - | - | - | - |
| USE_HYT | - | - / - | - | - | - | - |
| USE_LUXV30B | - | - / - | - | - | - | - |
| USE_HMC5883L | - | - / - | - | - | - | - |
| USE_QMC5883L | - | - / - | - | - | - | - |
| USE_MAX17043 | - | - / - | - | - | - | - |
| | | | | | | |
| **Feature or Sensor** | **l** | **t** | **k** | **s** | **i** | **d** | **Remarks** |
| USE_SPI | - | - / x | - | - | - | x |
| USE_RC522 | - | - / - | - | - | - | - |
| USE_CANSNIFFER | - | - / - | - | - | - | - |
| USE_SPI_LORA | - | - / x | - | - | - | - |
| USE_MHZ19 | - | - / x | - | x | - | - |
| USE_SENSEAIR | - | - / x | - | x | - | - |
| USE_PMS5003 | - | - / x | - | x | - | - |
| USE_NOVA_SDS | - | - / x | - | x | - | - |
| USE_HPMA | - | - / x | - | x | - | - |
| USE_SERIAL_BRIDGE | - | x / x | x | x | - | x |
| USE_MODBUS_BRIDGE | - | - / x | - | - | - | - |
| USE_MP3_PLAYER | - | - / x | - | x | - | - |
| USE_AZ7798 | - | - / - | - | - | - | - |
| USE_PN532_HSU | - | - / x | - | x | - | - |
| USE_RDM6300 | - | - / x | - | x | - | - |
| USE_IBEACON | - | - / x | - | x | - | - |
| USE_GPS | - | - / - | - | - | - | - |
| USE_HM10 | - | - / - | - | x | - | - |
| USE_HRXL | - | - / x | - | x | - | - |
| USE_TASMOTA_CLIENT | - | - / - | - | - | - | - |
| USE_OPENTHERM | - | - / - | - | - | - | - |
| USE_MIEL_HVAC | - | - / - | - | - | - | - |
| USE_PROJECTOR_CTRL | - | - / - | - | - | - | - |
| USE_AS608 | - | - / - | - | - | - | - |
| USE_LD2402 | - | - / - | - | - | - | - |
| USE_LD2410 | - | - / - | - | - | - | - |
| USE_LD2410S | - | - / - | - | - | - | - |
| USE_GM861 | - | - / - | - | - | - | - |
| USE_TCP_BRIDGE | - | - / - | - | - | - | - | zbbridge / zbbrdgpro |
| USE_HC8 | - | - / - | - | - | - | - |
| USE_PIPSOLAR | - | - / - | - | - | - | - |
| USE_WOOLIIS | - | - / - | - | - | - | - |
| USE_C8_CO2_5K | - | - / - | - | - | - | - |
| | | | | | | |
| USE_NRF24 | - | - / - | - | - | - | - |
| USE_MIBLE | - | - / - | - | - | - | - |
| USE_ZIGBEE | - | - / - | - | - | - | - |
| USE_ZIGBEE_ZNP | - | - / - | - | - | - | - |
| USE_ZIGBEE_EZSP | - | - / - | - | - | - | - | Sonoff ZbBridge |
| | | | | | | |
| USE_IR_REMOTE | - | x / - | x | x | x | x |
| USE_IR_RECEIVE | - | x / - | x | x | x | x |
| USE_IR_REMOTE_FULL | - | - / - | - | - | x | - | Enable ALL protocols |
| | | | | | | |
| USE_WIZMOTE | - | - / - | - | - | - | - |
| | | | | | | |
| USE_SR04 | - | - / - | - | x | - | - |
| USE_ME007 | - | - / - | - | - | - | - |
| USE_DYP | - | - / - | - | - | - | - |
| USE_TM1638 | - | - / x | - | x | - | - |
| USE_HX711 | - | - / x | - | x | - | - |
| -USE_HX711_M5SCALES | - | - / - | - | - | - | - |
| USE_TX2x_WIND_SENSOR | - | - / - | - | - | - | - |
| USE_WINDMETER | - | - / - | - | - | - | - |
| USE_RC_SWITCH | - | - / x | - | x | - | - |
| USE_RF_SENSOR | - | - / x | - | x | - | - | AlectoV2 only |
| USE_HRE | - | - / x | - | x | - | - |
| USE_A4988_STEPPER | - | - / - | - | - | - | - |
| USE_NEOPOOL | - | - / - | - | - | - | - |
| USE_FLOWRATEMETER | - | - / - | - | - | - | - |
| | | | | | | |
| **Feature or Sensor** | **l** | **t** | **k** | **s** | **i** | **d** | **Remarks** |
| USE_DISPLAY | - | - / - | - | - | - | x |
| USE_DISPLAY_LCD | - | - / - | - | - | - | x |
| USE_DISPLAY_MATRIX | - | - / - | - | - | - | x |
| USE_DISPLAY_EPAPER_29 | - | - / - | - | - | - | x |
| USE_DISPLAY_EPAPER_42 | - | - / - | - | - | - | x |
| USE_DISPLAY_RA8876 | - | - / - | - | - | - | x |
| USE_DISPLAY_TM1637 | - | - / - | - | - | - | x |
| USE_DISPLAY_TM1621_SONOFF | - | - / x | - | - | - | - |
| USE_DISPLAY_TM1650 | - | - / - | - | - | - | - |
| | | | | | | |
| USE_FT5206 | - | - / - | - | - | - | - |
| USE_FTC532 | - | - / - | - | - | - | - |
| USE_BS814A2 | - | - / - | - | - | - | - |
| | | | | | | |
| **ESP32 Feature** | **l** | **t** | **k** | **s** | **i** | **d** | **Remarks** |
| USE_HALLEFFECT | | / x | | | | |
| USE_MI_ESP32 | | / x | | | | | See SetOption115 |
| USE_IBEACON_ESP32 | | / - | | | | |
| USE_WEBCAM | | / - | | | | |
| USE_ETHERNET | | / x | | | | |
| USE_I2S_AUDIO | | / - | | | | |
| USE_SONOFF_SPM | | / x | | | | |
| USE_DISPLAY_TM1621_SONOFF | | / x | | | | |
| USE_SHELLY_PRO | | / x | | | | |
| USE_ESP32_TWAI | | / x | | | | |
| USE_DALI | | / x | | | | |
| USE_DINGTIAN_RELAY | | / - | | | | |
| USE_MATTER_DEVICE | | / x | | | | | See SetOption151 |
* USE_MQTT_TLS is enabled by default in every ESP32 variants
The following specific display drivers are replaced with uDisplay, see [uDisplay/uTouch documentation](https://tasmota.github.io/docs/Universal-Display-Driver/#migrating-to-udisplay): `USE_DISPLAY_ILI9341`, `USE_DISPLAY_SSD1306`, `USE_DISPLAY_SH1106`, `USE_DISPLAY_SSD1351`, `USE_DISPLAY_ST7789`
- USE_MQTT_TLS is enabled by default in every ESP32 variants

File diff suppressed because it is too large Load Diff

8
CMakeLists.txt Normal file
View File

@ -0,0 +1,8 @@
cmake_minimum_required(VERSION 3.16.0)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(tasmota)
if(CONFIG_IDF_TARGET_ESP32C2)
include(relinker)
endif()

View File

@ -84,13 +84,14 @@ In addition to @arendst the following code is mainly owned by:
| xdrv_70_1_hdmi_cec | @s-hadinger
| xdrv_71_magic_switch | @barbudor
| xdrv_72_pipsolar | @chefpro
| xdrv_73 |
| xdrv_74 |
| xdrv_75 |
| xdrv_76 |
| xdrv_77 |
| xdrv_78 |
| xdrv_73_lora | @arendst
| xdrv_74_lorawan | @arendst
| xdrv_75_dali | @eeak, @arendst
| xdrv_76_serial_i2c | @s-hadinger
| xdrv_77_wizmote | @arendst
| xdrv_78_telnet | @arendst
| xdrv_79_esp32_ble | @staars, @btsimonh
| xdrv_80 |
| xdrv_81_esp32_webcam | @gemu, @philrich
| xdrv_82_esp32_ethernet | @arendst
| xdrv_83_esp32_watch | @gemu
@ -98,15 +99,17 @@ In addition to @arendst the following code is mainly owned by:
| xdrv_86_esp32_sonoff_spm | @arendst
| xdrv_87_esp32_sonoff_tm1621 | @arendst
| xdrv_88_esp32_shelly_pro | @arendst
| xdrv_89_esp32_dali | @eeak
| xdrv_89_ |
| xdrv_90_esp32_dingtian_relay | @barbudor
| xdrv_91_ |
| xdrv_92_ |
| xdrv_93_ |
| xdrv_94_ |
| |
| xdrv_120_xyzmodem | @arendst
| xdrv_121_gpioviewer | @arendst
| xdrv_122_file_settings_demo | @arendst
| xdrv_122_file_json_settings_demo | @arendst
| xdrv_127_debug | @arendst
| |
| Tasmota Sensors |
@ -135,10 +138,10 @@ In addition to @arendst the following code is mainly owned by:
| xsns_22_sr04 | Nuno Ferreira, @arendst
| xsns_23_me007 | Mathias Buder
| xsns_24_si1145 |
| xsns_25 |
| xsns_25_spl06-007_sensor | @rai68
| xsns_26_lm75ad | Andre Thomas
| xsns_27_apds9960 | Shawn Hymel
| xsns_28 |
| xsns_28_qmp6988 | @arendst
| xsns_29_mcp230xx | Andre Thomas
| xsns_30_mpr121 | Rene 'Renne' Bartsch
| xsns_31_ccs811 | Gerhard Mutz
@ -224,6 +227,14 @@ In addition to @arendst the following code is mainly owned by:
| xsns_108_tc74 | Michael Loftis
| xsns_109_sgp4x | Andrew Klaus
| xsns_110_max17043 | Vincent de Groot
| xsns_111_ens16x | Christoph Friese
| xsns_112_ens210 | Christoph Friese
| xsns_113_hc8 | Daniel Maier
| xsns_114_amsx915 | Bastian Urschel
| xsns_115_wooliis | Luca Melette
| xsns_117_c8_co2_5k | @jeroenvermeulen
| |
| xsns_127_esp32_sensors | @arendst
| |
| Libraries |
| |

View File

@ -14,11 +14,11 @@ If you like **Tasmota**, give it a star, or fork it and contribute!
[![GitHub forks](https://img.shields.io/github/forks/arendst/Tasmota.svg?style=social&label=Fork)](https://github.com/arendst/Tasmota/network)
[![donate](https://img.shields.io/badge/donate-PayPal-blue.svg)](https://paypal.me/tasmota)
See [CHANGELOG.md](https://github.com/arendst/Tasmota/blob/development/tasmota/CHANGELOG.md) for changes since last release.
See [CHANGELOG.md](https://github.com/arendst/Tasmota/blob/development/CHANGELOG.md) for changes since last release.
## Development
[![Dev Version](https://img.shields.io/badge/development%20version-v13.3.x.x-blue.svg)](https://github.com/arendst/Tasmota)
[![Dev Version](https://img.shields.io/badge/development%20version-v14.6.x.x-blue.svg)](https://github.com/arendst/Tasmota)
[![Download Dev](https://img.shields.io/badge/download-development-yellow.svg)](http://ota.tasmota.com/tasmota/)
[![Tasmota CI](https://github.com/arendst/Tasmota/workflows/Tasmota%20CI/badge.svg)](https://github.com/arendst/Tasmota/actions?query=workflow%3A%22Tasmota+CI%22)
[![Tasmota ESP32 CI](https://github.com/arendst/Tasmota/workflows/Tasmota%20ESP32%20CI/badge.svg)](https://github.com/arendst/Tasmota/actions?query=workflow%3A%22Tasmota+ESP32+CI%22)

View File

@ -13,9 +13,9 @@ Index | Define | Driver | Device | Address(es) | Bus2 | Descrip
2 | USE_PCF8574 | xdrv_28 | PCF8574 | 0x20 - 0x26 | | 8-bit I/O expander (address range overridable)
2 | USE_PCF8574 | xdrv_28 | PCF8574A | 0x39 - 0x3F | | 8-bit I/O expander (address range overridable)
3 | USE_DISPLAY_LCD | xdsp_01 | | 0x27, 0x3F | | LCD display
4 | USE_DISPLAY_SSD1306 | xdsp_02 | SSD1306 | 0x3C - 0x3D | | Oled display
4 | REMOVED | | | | | USE_DISPLAY_SSD1306 - REMOVED
5 | USE_DISPLAY_MATRIX | xdsp_03 | HT16K33 | 0x70 - 0x77 | | 8x8 led matrix
6 | USE_DISPLAY_SH1106 | xdsp_07 | SH1106 | 0x3C - 0x3D | | Oled display
6 | REMOVED | | SH1106 | 0x3C - 0x3D | | USE_DISPLAY_SH1106 - REMOVED
7 | USE_ADE7953 | xnrg_07 | ADE7953 | 0x38 | | Energy monitor
8 | USE_SHT | xsns_07 | SHT1X | Any | | Temperature and Humidity sensor
9 | USE_HTU | xsns_08 | HTU21 | 0x40 | Yes | Temperature and Humidity sensor
@ -32,7 +32,7 @@ Index | Define | Driver | Device | Address(es) | Bus2 | Descrip
13 | USE_ADS1115 | xsns_12 | ADS1115 | 0x48 - 0x4B | Yes | 4-channel 16-bit A/D converter
14 | USE_INA219 | xsns_13 | INA219 | 0x40 - 0x41, 0x44 - 0x45 | | Low voltage current sensor
15 | USE_SHT3X | xsns_14 | SHT3X | 0x44 - 0x45 | Yes | Temperature and Humidity sensor
15 | USE_SHT3X | xsns_14 | SHT4X | 0x44 - 0x45 | Yes | Temperature and Humidity sensor
15 | USE_SHT3X | xsns_14 | SHT4X | 0x44 - 0x46 | Yes | Temperature and Humidity sensor
15 | USE_SHT3X | xsns_14 | SHTCX | 0x70 | Yes | Temperature and Humidity sensor
16 | USE_TSL2561 | xsns_16 | TSL2561 | 0x29, 0x39, 0x49 | | Light intensity sensor
17 | USE_MGS | xsns_19 | Grove | 0x04 | | Multichannel gas sensor
@ -123,5 +123,12 @@ Index | Define | Driver | Device | Address(es) | Bus2 | Descrip
83 | USE_MAX17043 | xsns_110 | MAX17043 | 0x36 | | Fuel-gauge for 3.7 Volt Lipo battery
84 | USE_ENS16x | xsns_111 | ENS16x | 0x52 - 0x53 | | Gas (TVOC, eCO2) and air quality sensor
85 | USE_ENS210 | xsns_112 | ENS210 | 0x43 - 0x44 | | Temperature and humidity sensor
86 | USE_AMSX915 | xsns_114 | AMS6915 | 0x28 | | Pressure (absolute/differential) and temperature sensor
87 | USE_SPL06_007 | xsns_25 | SPL06-007 | 0x76 | | Pressure and temperature sensor
88 | USE_QMP6988 | xsns_28 | QMP6988 | 0x56, 0x70 | Yes | Pressure and temperature sensor
89 | USE_HX711_M5SCALES | xsns_34 | M5SCALES | 0x26 | Yes | M5Unit (Mini)Scales(HX711 STM32) U177
90 | USE_RX8010 | xdrv_56 | RX8010 | 0x32 | Yes | RX8010 RTC from IOTTIMER
91 | USE_MS5837 | xsns_116 | MS5837 | 0x76 | | Pressure and temperature sensor
92 | USE_PCF85063 | xdrv_56 | PCF85063 | 0x51 | | PCF85063 Real time clock
NOTE: Bus2 supported on ESP32 only.

View File

@ -94,4 +94,4 @@ Module | LCode | Description
06 TTGO Watch | x | TTGO Watch
07 M5Stack Core2 | x | M5Stack Core2
Over 2500 additional devices are supported using [templates](TEMPLATES.md).
Over 2800 additional devices are supported using [templates](TEMPLATES.md).

View File

@ -31,7 +31,7 @@ Firmware binaries can be downloaded from http://ota.tasmota.com/tasmota/release/
## Development
[![Dev Version](https://img.shields.io/badge/development%20version-v13.3.x.x-blue.svg)](https://github.com/arendst/Tasmota)
[![Dev Version](https://img.shields.io/badge/development%20version-v14.6.x.x-blue.svg)](https://github.com/arendst/Tasmota)
[![Download Dev](https://img.shields.io/badge/download-development-yellow.svg)](http://ota.tasmota.com/tasmota/)
[![Tasmota CI](https://github.com/arendst/Tasmota/actions/workflows/build_all_the_things.yml/badge.svg)](https://github.com/arendst/Tasmota/actions/workflows/build_all_the_things.yml)
[![Build_development](https://github.com/arendst/Tasmota/actions/workflows/Tasmota_build_devel.yml/badge.svg)](https://github.com/arendst/Tasmota/actions/workflows/Tasmota_build_devel.yml)

View File

@ -34,11 +34,11 @@ While fallback or downgrading is common practice it was never supported due to S
## Supported Core versions
This release will be supported from ESP8266/Arduino library Core version **2.7.6** due to reported security and stability issues on previous Core version. This will also support gzipped binaries.
This release will be supported from ESP8266/Arduino library Core version **2.7.8** due to reported security and stability issues on previous Core version. This will also support gzipped binaries.
This release will be supported from ESP32/Arduino library Core version **2.0.14**.
This release will be supported from ESP32/Arduino library Core version **v3.1.3.250411**.
Support of ESP8266 Core versions before 2.7.6 and ESP32 Core versions before 2.0.14 have been removed.
Support of ESP8266 Core versions before 2.7.8 and ESP32 Core versions before v3.1.3.250411 have been removed.
## Support of TLS
@ -55,7 +55,7 @@ Easy initial installation of Tasmota can be performed using the [Tasmota WebInst
## Provided Binary Downloads
### ESP8266 or ESP8285 based
The following binary downloads have been compiled with ESP8266/Arduino library core version **2.7.6**.
The following binary downloads have been compiled with ESP8266/Arduino library core version **2.7.8**.
- **tasmota.bin** = The Tasmota version with most drivers for 1M+ flash. **RECOMMENDED RELEASE BINARY**
- **tasmota-4M.bin** = The Tasmota version with most drivers and filesystem for 4M+ flash.
@ -71,21 +71,25 @@ The following binary downloads have been compiled with ESP8266/Arduino library c
Above binaries are also available as gzipped version allowing faster uploads.
Latest released binaries can be downloaded from
- https://github.com/arendst/Tasmota-firmware/tree/main/release-firmware
- https://github.com/arendst/Tasmota-firmware/tree/firmware/release-firmware
- http://ota.tasmota.com/tasmota/release
Historical binaries can be downloaded from
- http://ota.tasmota.com/tasmota/release-13.3.0
- http://ota.tasmota.com/tasmota/release-14.6.0
The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmota.com/tasmota/release/tasmota.bin.gz``
### ESP32, ESP32-C3, ESP32-S2 and ESP32-S3 based
The following binary downloads have been compiled with ESP32/Arduino library core version **2.0.14**.
### ESP32, ESP32-C2, ESP32-C3, ESP32-C6, ESP32-S2 and ESP32-S3 based
The following binary downloads have been compiled with ESP32/Arduino library core version **v3.1.3.250411**.
- **tasmota32.bin** = The Tasmota version with most drivers including additional sensors and KNX for 4M+ flash. **RECOMMENDED RELEASE BINARY**
- **tasmota32xy.bin** = The Tasmota version with most drivers including additional sensors and KNX for ESP32-C3/S2/S3 and 4M+ flash.
- **tasmota32xycdc.bin** = The Tasmota version with most drivers including additional sensors and KNX for ESP32-C3/S2/S3 with serial over embedded USB CDC only and 4M+ flash.
- **tasmota32solo1.bin** = The Tasmota version with most drivers including additional sensors and KNX for single core ESP32 and 4M+ flash.
- **tasmota32s2.bin** = The Tasmota version with most drivers including additional sensors and KNX for ESP32-S2 with serial and 4M+ flash.
- **tasmota32s2cdc.bin** = The Tasmota version with most drivers including additional sensors and KNX for ESP32-S2 with serial over embedded USB CDC only and 4M+ flash.
- **tasmota32s3.bin** = The Tasmota version with most drivers including additional sensors and KNX for ESP32-S3 with USB HWCDC and fallback to serial and 4M+ flash.
- **tasmota32c2.bin** = The Tasmota version with most drivers including additional sensors and KNX for ESP32-C2 with serial and 4M+ flash.
- **tasmota32c3.bin** = The Tasmota version with most drivers including additional sensors and KNX for ESP32-C3 with USB HWCDC and fallback to serial and 4M+ flash.
- **tasmota32c6.bin** = The Tasmota version with most drivers including additional sensors and KNX for ESP32-C6 with USB HWCDC and fallback to serial and 4M+ flash.
- **tasmota32-AD.bin** to **tasmota32-VN.bin** = The Tasmota version in different languages for 4M+ flash.
- **tasmota32-bluetooth.bin** = The Bluetooth version adds BLE support for 4M+ flash.
- **tasmota32-display.bin** = The Display version without Energy Monitoring but adds display support for 4M+ flash.
@ -95,18 +99,12 @@ The following binary downloads have been compiled with ESP32/Arduino library cor
- **tasmota32-webcam.bin** = The Webcam version adds webcam support for 4M+ flash.
- **tasmota32-zbbridgepro.bin** - The Sonoff Zigbee Bridge Pro version with CC2652P firmware load support.
### ESP32-C2 and ESP32-C6 based
The following binary downloads have been compiled with ESP32/Arduino library core version **3.0.0-alpha3**.
- **tasmota32c2-arduino30.bin** = The Tasmota version with most drivers including additional sensors and KNX for ESP32-C2 and 4M+ flash.
- **tasmota32c6cdc-arduino30.bin** = The Tasmota version with most drivers including additional sensors and KNX for ESP32-C6 with serial over embedded USB CDC or hardware USB and 4M+ flash.
Latest released binaries can be downloaded from
- https://github.com/arendst/Tasmota-firmware/tree/main/release-firmware
- https://github.com/arendst/Tasmota-firmware/tree/firmware/release-firmware
- https://ota.tasmota.com/tasmota32/release
Historical binaries can be downloaded from
- https://ota.tasmota.com/tasmota32/release-13.3.0
- https://ota.tasmota.com/tasmota32/release-14.6.0
The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasmota.com/tasmota32/release/tasmota32.bin``
@ -116,100 +114,16 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm
[Complete list](BUILDS.md) of available feature and sensors.
## Changelog v13.3.0.5
## Changelog v14.6.0.1
### Added
- Command ``TimedPower<index> <milliseconds>[,ON|OFF|TOGGLE|BLINK]`` executes ``Power<index> [ON|OFF|TOGGLE|BLINK] `` and after <millisecond> executes ``Power<index> [OFF|ON|TOGGLE|OFF]``
- Command ``SetOption158 1`` to disable publish of ModbusReceived MQTT messages [#20678](https://github.com/arendst/Tasmota/issues/20678)
- Command ``SetOption159 1`` to enable counting on both rising and falling edge [#20712](https://github.com/arendst/Tasmota/issues/20712)
- Display of active drivers using command ``status 4``
- GPIO Viewer to see realtime GPIO states using assets from `https://ota.tasmota.com/tasmota/gpioviewer/gpio_viewer_13_4_0/` v2.0.8
- Support for CST816S touch interface [#20213](https://github.com/arendst/Tasmota/issues/20213)
- Support for Sonoff Basic R4 Magic Switch [#20247](https://github.com/arendst/Tasmota/issues/20247)
- Support negative power on BL0942 using index 5..8 [#20322](https://github.com/arendst/Tasmota/issues/20322)
- Support for pipsolar inverter [#20408](https://github.com/arendst/Tasmota/issues/20408)
- Support for HardwareSerial invert [#15461](https://github.com/arendst/Tasmota/issues/15461)
- NeoPool hydrolysis FL1 and Redox flag [#20258](https://github.com/arendst/Tasmota/issues/20258)
- SML support for IM350 [#20474](https://github.com/arendst/Tasmota/issues/20474)
- GUI sensor separators [#20495](https://github.com/arendst/Tasmota/issues/20495)
- ESP32 used UART information
- ESP32 support GPIOViewer when ``define USE_ESP32_GPIO_VIEWER`` is enabled
- ESP32 MI BLE support for Xiaomi LYWSD02MMC [#20381](https://github.com/arendst/Tasmota/issues/20381)
- ESP32 support for Shelly Plus Add-On using DS18x20 or DHT11/AM2301/DHT21/DHT22/AM2302/AM2321/SI7021 on GPIO0/1 [#20580](https://github.com/arendst/Tasmota/issues/20580)
- ESP32 MI32 Legacy initial support for sensors using BTHOME packet format [#20625](https://github.com/arendst/Tasmota/issues/20625)
- ESP32 Core3 support for SPI ethernet on DM9051, W5500 and KSZ8851
- ESP32-C3 support for GPIO11 [#18350](https://github.com/arendst/Tasmota/issues/18350)
- Berry GPIO viewer initial version using async webserver [#20416](https://github.com/arendst/Tasmota/issues/20416)
- Berry `introspect.set()` for class attributes [#20339](https://github.com/arendst/Tasmota/issues/20339)
- Berry support for `tcpclientasync` in `tcpserver` [#20401](https://github.com/arendst/Tasmota/issues/20401)
- Berry `tasmota.urlbecload(url:string) -> bool` [#20412](https://github.com/arendst/Tasmota/issues/20412)
- Berry `gpio.read_pwm` and `gpio.read_pwm_resolution` [#20414](https://github.com/arendst/Tasmota/issues/20414)
- Berry `gpio.get_pin_type` and `gpio.ger_pin_type_index` [#20415](https://github.com/arendst/Tasmota/issues/20415)
- Berry `string` to `bytes()` [#20420](https://github.com/arendst/Tasmota/issues/20420)
- Berry button to dynamically load GPIO Viewer with Berry backend [#20424](https://github.com/arendst/Tasmota/issues/20424)
- Berry `debug_panel.tapp` to display real-time heap and wifi rssi [#20436](https://github.com/arendst/Tasmota/issues/20436)
- Berry `webserver.header` to read browser sent headers [#20447](https://github.com/arendst/Tasmota/issues/20447)
- Berry provide lightweight options for `tasmota.wifi/eth/memory/rtc` [#20448](https://github.com/arendst/Tasmota/issues/20448)
- Berry `tasmota.webcolor` [#20454](https://github.com/arendst/Tasmota/issues/20454)
- Berry `debug.caller` [#20470](https://github.com/arendst/Tasmota/issues/20470)
- Berry solidification of strings longer than 255 bytes [#20529](https://github.com/arendst/Tasmota/issues/20529)
- Berry syntax coloring for Notepad++ by FransO [#20541](https://github.com/arendst/Tasmota/issues/20541)
- Berry/Zigbee web hook per device for customized status display [#20542](https://github.com/arendst/Tasmota/issues/20542)
- Berry `introspect.contains` and `bytes.addfloat` [#20635](https://github.com/arendst/Tasmota/issues/20635)
- Zigbee ``ZbEmulation`` to selectively exclude some devices from Hue/Alexa emulation [#20552](https://github.com/arendst/Tasmota/issues/20552)
- LVGL `lv.str_arr` [#20480](https://github.com/arendst/Tasmota/issues/20480)
- LVGL option to add `lv.keyboard` extra widget [#20496](https://github.com/arendst/Tasmota/issues/20496)
- HASPmota `haspmota.page_show()` to change page [#20333](https://github.com/arendst/Tasmota/issues/20333)
- HASPmota type `chart` [#20372](https://github.com/arendst/Tasmota/issues/20372)
- HASPmota support for `min` and `max` attribute in `slider` [#20582](https://github.com/arendst/Tasmota/issues/20582)
- Matter support for password for remote Tasmota devices [#20296](https://github.com/arendst/Tasmota/issues/20296)
- Matter add human readable names for TimeSync cluster [#20666](https://github.com/arendst/Tasmota/issues/20666)
- Command `JsonPP 0..7` to enable (>0) JSON Pretty Print on user interfaces and set number of indents
### Breaking Changed
- ESP32 LVGL library from v8.3.11 to v9.0.0, some small breaking changes in C, none in HASPmota [#20659](https://github.com/arendst/Tasmota/issues/20659)
- Refactoring of Berry `animate` module for WS2812 Leds [#20236](https://github.com/arendst/Tasmota/issues/20236)
- Matter aggregator relocated to endpoint 1 for Google compatibility, may break existing associations [#20654](https://github.com/arendst/Tasmota/issues/20654)
### Changed
- ESP8266 platform update from 2023.04.00 to 2024.01.01 [#20539](https://github.com/arendst/Tasmota/issues/20539)
- ESP8266 Framework (Arduino Core) from v2.7.4.9 to v2.7.6 [#20539](https://github.com/arendst/Tasmota/issues/20539)
- ESP32 Core2 platform update from 2023.11.01 to 2024.01.01 [#20473](https://github.com/arendst/Tasmota/issues/20473)
- ESP32 Core3 platform update from 2024.01.11 to 2024.01.12 [#20576](https://github.com/arendst/Tasmota/issues/20576)
- Library OneWire-Stickbreaker by TasmotaOneWire supporting Shelly Plus Add-On [#20580](https://github.com/arendst/Tasmota/issues/20580)
- Renamed button "Consoles" to "Tools"
- Refactored rule ``Subscribe`` using LList allowing full message size and enabled by default
- Refactored rules USE_EXPRESSION and SUPPORT_IF_STATEMENT replacing LinkedList with arrays and enabled by default
- Support syslog updates every sleep or every second if `#define SYSLOG_UPDATE_SECOND` [#20260](https://github.com/arendst/Tasmota/issues/20260)
- Web file upload response on upload error [#20340](https://github.com/arendst/Tasmota/issues/20340)
- Header `Host` is now collected by Webserver [#20446](https://github.com/arendst/Tasmota/issues/20446)
- Utouch optimizations, rgb i2c init [#20596](https://github.com/arendst/Tasmota/issues/20596)
- Miel HVAC lower the minimum temperature to 10C [#20628](https://github.com/arendst/Tasmota/issues/20628)
- Webcam tweaks [#20451](https://github.com/arendst/Tasmota/issues/20451)
- IP stack compatible with new Core3 IPv6 implementation [#20509](https://github.com/arendst/Tasmota/issues/20509)
- Refactored Pio filesystem download script [#20544](https://github.com/arendst/Tasmota/issues/20544)
- Matter improve `MtrInfo` [#20686](https://github.com/arendst/Tasmota/issues/20686)
- Matter redirects for Advanced Matter configuration UI [#20690](https://github.com/arendst/Tasmota/issues/20690)
- Matter implement auto-attributes [#20694](https://github.com/arendst/Tasmota/issues/20694)
### Fixed
- CVE-2021-36603 Cross Site Scripting (XSS) vulnerability [#12221](https://github.com/arendst/Tasmota/issues/12221)
- Syslog server warning caused by lack of <PRI> field and hostname starting with 'z' [#14689](https://github.com/arendst/Tasmota/issues/14689)
- Support for Domoticz floor/room topics. Regression from v12.0.1 [#20299](https://github.com/arendst/Tasmota/issues/20299)
- Scripter memory leak in `>w x` [#20473](https://github.com/arendst/Tasmota/issues/20473)
- Zigbee ramdom crash in main page [#20481](https://github.com/arendst/Tasmota/issues/20481)
- ESP8266 IPv6 support [#20539](https://github.com/arendst/Tasmota/issues/20539)
- ESP32 piezo ceramic buzzer doesn't buzz [#20118](https://github.com/arendst/Tasmota/issues/20118)
- ESP32 shutter exception 6 (divide by zero) on ``ShutterMode 4`` [#20524](https://github.com/arendst/Tasmota/issues/20524)
- ESP32 Zigbee Aqara attributes [#20452](https://github.com/arendst/Tasmota/issues/20452)
- ESP32 Audio for Core3, MP3Stream and Shine [#20540](https://github.com/arendst/Tasmota/issues/20540)
- ESP32 Core3 reset GPIOs 16/17 when PSRAM is not used [#20547](https://github.com/arendst/Tasmota/issues/20547)
- LVGL fix type for lv_imgbtn [#20354](https://github.com/arendst/Tasmota/issues/20354)
- Berry claiming UART0 if needed [#20324](https://github.com/arendst/Tasmota/issues/20324)
- Berry assigment to list with negative index [#20537](https://github.com/arendst/Tasmota/issues/20537)
- Berry C mapping, raise an error if too many arguments are sent [#20604](https://github.com/arendst/Tasmota/issues/20604)
- Matter Contact sensor was not triggering any update [#20232](https://github.com/arendst/Tasmota/issues/20232)
- Matter support for Alexa [#20545](https://github.com/arendst/Tasmota/issues/20545)
- Matter error when removing device from Google Home [#20665](https://github.com/arendst/Tasmota/issues/20665)
- Matter exception when fabrics is not initialized [#20667](https://github.com/arendst/Tasmota/issues/20667)
- Berry `bytes().asstring()` now truncates a string if buffer contains NULL [#23311](https://github.com/arendst/Tasmota/issues/23311)
- Berry string literals containing NULL are truncated [#23312](https://github.com/arendst/Tasmota/issues/23312)
### Removed
- Max number of 30 backlog entries

View File

@ -5,7 +5,7 @@
# Templates
Find below the available templates as of February 2024. More template information can be found in the [Tasmota Device Templates Repository](http://blakadder.github.io/templates)
Find below the available templates as of April 2025. More template information can be found in the [Tasmota Device Templates Repository](http://blakadder.github.io/templates)
## Adapter Board
```
@ -97,7 +97,7 @@ Iotton 9W 700lm {"NAME":"Iotton Light","GPIO":[0,0,0,0,416,417,0,0,
iQtech 10W 900lm {"NAME":"iQ-Tech CCT 10W 900LM","GPIO":[0,0,0,0,0,416,0,0,0,417,0,0,0,0],"FLAG":0,"BASE":18}
iView 10W 1050lm {"NAME":"iView ISB1000-D","GPIO":[0,0,0,0,0,416,0,0,0,417,0,0,0,0],"FLAG":0,"BASE":18}
Kogan 10W Cool & Warm White 1050lm {"NAME":"Kogan 10W CCT","GPIO":[0,0,0,0,0,416,0,0,0,417,0,0,0,0],"FLAG":0,"BASE":48}
Kogan 4.5W 330lm 110 {"NAME":"Kogan White/Wa","GPIO":[0,0,0,0,0,416,0,0,417,0,0,0,0,0],"FLAG":0,"BASE":18}
Kogan 4.5W 330lm 110° {"NAME":"Kogan White/Wa","GPIO":[0,0,0,0,0,416,0,0,417,0,0,0,0,0],"FLAG":0,"BASE":18}
Kogan 5W {"NAME":"Kogan Co/Wa","GPIO":[0,0,0,0,0,416,0,0,0,417,0,0,0,0],"FLAG":0,"BASE":18}
Kruidvat A60 9W 806lm {"NAME":"Kruidvat E27 806 Lumens","GPIO":[0,0,0,0,416,449,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":48}
Laser 10W 1000lm {"NAME":"Laser 10W CCT","GPIO":[0,0,0,0,0,416,0,0,0,417,0,0,0,0],"FLAG":0,"BASE":48}
@ -131,7 +131,7 @@ Nedis C10 350lm {"NAME":"WIFILW10WTE14","GPIO":[0,0,0,0,0,416,0,0,0
Nedis G125 5.5W 350lm Twisted Filament {"NAME":"WIFILF10GDG125","GPIO":[0,0,0,0,0,0,0,0,417,0,416,0,0,0],"FLAG":0,"BASE":18}
Nedis PAR16 330lm {"NAME":"Nedis WIFILW30","GPIO":[0,0,0,0,0,416,0,0,417,0,0,0,0,0],"FLAG":0,"BASE":18}
Nedis PAR16 4,5W 380lm {"NAME":"Nedis WIFILW10WTGU10","GPIO":[0,0,0,0,0,416,0,0,417,0,0,0,0,0],"FLAG":0,"BASE":18}
Nedis PAR16 4.5W 330lm 110 {"NAME":"WIFILW30","GPIO":[0,0,0,0,0,416,0,0,417,0,0,0,0,0],"FLAG":0,"BASE":18}
Nedis PAR16 4.5W 330lm 110° {"NAME":"WIFILW30","GPIO":[0,0,0,0,0,416,0,0,417,0,0,0,0,0],"FLAG":0,"BASE":18}
Nous P2 {"NAME":"NOUS-P2","GPIO":[0,0,0,0,0,416,0,0,417,0,0,0,0,0],"FLAG":0,"BASE":37}
Philips Zhirui Candle 250lm {"NAME":"Xiaomi Philips","GPIO":[0,0,0,0,0,0,0,0,417,0,0,416,0,0],"FLAG":0,"BASE":48}
Phillips Zhirui 450lm {"NAME":"Xiaomi Philips","GPIO":[0,0,0,0,0,0,0,0,417,0,0,416,0,0],"FLAG":0,"BASE":48}
@ -150,7 +150,7 @@ Sulion Morgan C37 5W 470lm {"NAME":"Sulion Bombilla C37","GPIO":[0,0,0,0,0,0,0
Swisstone 806lm {"NAME":"SwisstoneSH330","GPIO":[0,0,0,0,2912,416,0,0,417,2976,2944,0,0,0],"FLAG":0,"BASE":18}
Swisstone SH 310 {"NAME":"Swisstone SH 310","GPIO":[0,0,0,0,0,416,0,0,0,417,0,0,0,0],"FLAG":0,"BASE":18}
Treatlife A19 9W 800lm {"NAME":"Treatlife SL20","GPIO":[0,0,0,0,0,416,0,0,0,417,0,0,0,0],"FLAG":0,"BASE":18}
V-Tac PAR16 4.5W 300lm 110 {"NAME":"V-TAC VT-5174","GPIO":[0,0,0,0,0,0,0,0,417,0,416,0,0,0],"FLAG":0,"BASE":18}
V-Tac PAR16 4.5W 300lm 110° {"NAME":"V-TAC VT-5174","GPIO":[0,0,0,0,0,0,0,0,417,0,416,0,0,0],"FLAG":0,"BASE":18}
Vestaiot BR30 800lm {"NAME":"Vesta BR30 CCT","GPIO":[0,0,0,0,0,416,0,0,0,417,0,0,0,0],"FLAG":0,"BASE":18}
Wipro Garnet NS9100 810lm {"NAME":"Wipro 9W CCT","GPIO":[0,0,0,0,0,416,0,0,0,417,0,0,0,0],"FLAG":0,"BASE":48}
Wyze A19 800lm {"NAME":"Wyze Bulb","GPIO":[5728,0,0,0,0,0,0,0,0,416,417,0,0,0],"FLAG":0,"BASE":48}
@ -186,7 +186,6 @@ LE lampUX 15W RGBCCT {"NAME":"LE lampUX 15W","GPIO":[0,0,0,0,416,419,0,0
LightZone MeLiTec {"NAME":"LightZone MeLiTec D114 Light ","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
Lohas ZN026CL10 RGBCCT {"NAME":"Lohas LED Lamp","GPIO":[0,0,0,0,417,416,0,0,419,418,420,0,0,0],"FLAG":0,"BASE":18}
LOLAsmart Uranus White 70 cm {"NAME":"lola smart","GPIO":[0,0,0,1088,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
LSC 20W 1400lm White Ambiance {"NAME":"LSC RGBCW LED","GPIO":[0,0,0,0,0,0,0,0,4064,0,4032,0,0,0],"FLAG":0,"BASE":18}
Luminea 24W CCT {"NAME":"Luminea NX6205-944","GPIO":[0,0,0,0,0,0,0,0,449,0,416,0,0,0],"FLAG":0,"BASE":48}
LVL 300mm Round {"NAME":"LVL 300m Round 24W Ceiling LED","GPIO":[0,0,0,0,0,416,0,0,0,449,0,0,0,0],"FLAG":0,"BASE":48}
Nedis CCT 800lm {"NAME":"NEDIS WIFILAW10WT","GPIO":[0,0,0,0,0,0,0,0,417,0,416,0,0,0],"FLAG":0,"BASE":18}
@ -266,6 +265,9 @@ EARU DIN Circuit Breaker 2P 63/80A eWeLink White {"NAME":"RDCBC-2P","GPIO":[32,
Hoch Circuit Breaker 1P {"NAME":"HOCH ZJSB9","GPIO":[32,0,0,0,0,0,0,0,224,320,0,0,0,0],"FLAG":0,"BASE":18}
Ketotek Single Phase Energy Monitor {"NAME":"Ketotek KTEM06","GPIO":[0,2272,0,2304,0,0,0,0,0,0,320,0,32,0],"FLAG":0,"BASE":54}
Martin Jerry 30A Circuit Breaker {"NAME":"30A Breaker","GPIO":[0,0,0,0,7584,224,0,0,2720,32,2656,2624,320,0],"FLAG":0,"BASE":18}
Nous DIN Smart Switch 16A {"NAME":"Nous D1T","GPIO":[32,1,9312,1,1,320,1,1,9313,8160,3200,544,1,1,1,1,0,1,1,1,0,0,1,1,0,0,0,0,1,1,4736,1,1,0,0,1],"FLAG":0,"BASE":1}
Nous DIN Smart Switch 20A {"NAME":"Nous D1T","GPIO":[32,1,9312,1,1,320,1,1,9313,8160,3200,544,1,1,1,1,0,1,1,1,0,0,1,1,0,0,0,0,1,1,4736,1,1,0,0,1],"FLAG":0,"BASE":1}
Nous DIN Smart Switch 25A {"NAME":"Nous D1T","GPIO":[32,1,9312,1,1,320,1,1,9313,8160,3200,544,1,1,1,1,0,1,1,1,0,0,1,1,0,0,0,0,1,1,4736,1,1,0,0,1],"FLAG":0,"BASE":1}
OpenEnergyMonitor WiFi MQTT Thermostat {"NAME":"MQTT-RELAY","GPIO":[32,0,1,0,0,224,0,0,0,0,0,0,320,0],"FLAG":0,"BASE":18}
RocketController ASTRA Controller {"NAME":"ASTRA R4A4","GPIO":[1,1,1,1,576,1,1,1,480,1,1,1,3232,3200,1,1,0,640,608,1,0,224,225,1152,0,0,0,0,227,226,160,161,162,0,0,163],"FLAG":0,"BASE":1}
Shelly Pro 1 {"NAME":"Shelly Pro 1","GPIO":[0,1,0,1,768,0,0,0,672,704,736,0,0,0,5600,6214,0,0,0,5568,0,0,0,0,0,0,0,0,0,0,0,32,4736,0,160,0],"FLAG":0,"BASE":1,"CMND":"AdcParam1 2,10000,10000,3350"}
@ -281,7 +283,7 @@ TOMZN 1P 63A Circuit Breaker {"NAME":"TOB8-63WiFi","GPIO":[32,0,0,3104,0,0,0,0,
TOMZN 2P 63A/80A Circuit Breaker {"NAME":"TOWBC-2P-T","GPIO":[0,0,0,0,0,0,0,0,64,224,0,0,288,0],"FLAG":0,"BASE":18}
TOMZN 4P 80A Circuit Breaker {"NAME":"TOWBC-4P-T","GPIO":[288,0,0,0,0,0,0,0,32,224,0,0,0,0],"FLAG":0,"BASE":18}
TOMZN 4P 80A Circuit Breaker {"NAME":"TOMZN4","GPIO":[32,0,0,0,0,0,0,0,224,288,0,0,0,0],"FLAG":0,"BASE":18}
Tongou 2P 63A Circuit Breaker {"NAME":"RCD_CONTACTOR","GPIO":[32,224,0,0,0,0,0,0,288,544,0,0,0,0],"FLAG":0,"BASE":18}
Tongou 2P 63A Circuit Breaker {"NAME":"RCD_CONTACTOR","GPIO":[32,224,0,3104,0,0,0,0,288,544,0,0,0,0],"FLAG":0,"BASE":18}
```
## Dehumidifier
@ -311,7 +313,7 @@ LilyGo 4G GPS {"NAME":"LiLyGo A7608EH","GPIO":[1,1,672,1,226,225,
LilyGO RGB LED Ring Encoder {"NAME":"T-Encoder","GPIO":[0,0,1,0,1,0,0,0,1,1,1,1,0,0,0,480,6212,0,0,0,0,449,450,448,0,0,0,0,0,0,0,0,3296,3264,32,0],"FLAG":0,"BASE":1,"CMND":"BuzzerPwm 1"}
LilyGO T7 Mini32 V1.5 {"NAME":"LilyGO T7 V1.5","GPIO":[1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,544,0,0,0,1,0,1,1,1,0,0,0,0,0,1,1,4704,1,0,0,1],"FLAG":0,"BASE":1}
LilyGO TTGO ESP32 Ethernet {"NAME":"T-Internet-POE v1.2","GPIO":[0,1,1,1,1,1,1,1,1,1,1,1,1,1,5600,1,0,1,1,5568,0,1,1,1,0,0,0,0,1,1,1,1,1,0,0,1],"FLAG":0,"BASE":1,"CMND":"EthType 0|EthClockMode 1|EthAddress 0"}
M5Stack Atom Lite ESP32 {"NAME":"M5Stack Atom Lite","GPIO":[1,1,1,1,1,1,1,1,1056,1,1,1,1,1,1,1,0,1,1,1,0,1,640,1376,0,0,0,0,608,1,1,1,1,0,0,32],"FLAG":0,"BASE":1}
M5Stack Atom Lite ESP32 {"NAME":"M5Stack Atom Lite","GPIO":[0,0,0,0,0,0,0,0,1056,0,0,0,0,0,0,1,0,1,1,1,0,1,1,1376,0,0,0,0,1,1,1,0,0,0,0,32],"FLAG":0,"BASE":1}
M5Stack AtomU USB-A ESP32 "Not available"
Mostly Robots Wemos D1 4 Channel MOSFET Shield {"NAME":"MOSFET","GPIO":[1,1,288,1,1,1,1,1,226,225,227,224,1,1],"FLAG":0,"BASE":18}
Olimex ESP32-POE Ethernet {"NAME":"Olimex ESP32-PoE","GPIO":[1,1,1,1,1,1,0,0,5536,1,1,1,1,0,5600,0,0,0,0,5568,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,1],"FLAG":0,"BASE":1}
@ -395,7 +397,7 @@ Nedis A60 Warm White 9W 800lm {"NAME":"WIFILW11WTE27","GPIO":[0,0,0,0,0,416,0,0
Nedis G125 Filament {"NAME":"WIFILF10GDG125","GPIO":[0,0,0,0,0,0,0,0,0,0,416,0,0,0],"FLAG":0,"BASE":18}
Nedis PAR16 330lm {"NAME":"Nedis WIFILW31","GPIO":[0,0,0,0,0,416,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18}
Nedis ST64 5W 500lm Filament {"NAME":"WIFILF10GDST64","GPIO":[0,0,0,0,0,0,0,0,0,0,416,0,0,0],"FLAG":0,"BASE":18}
Positivo Smart Lampada Retro {"NAME":"POSITIVO SMART LAMPADA RETRO","GPIO":[0,0,0,0,0,0,0,0,0,0,416,0,0,0],"FLAG":0,"BASE":18}
Positivo Smart Lâmpada Retrô {"NAME":"POSITIVO SMART LAMPADA RETRO","GPIO":[0,0,0,0,0,0,0,0,0,0,416,0,0,0],"FLAG":0,"BASE":18}
Sealight Vintage Edison A19 {"NAME":"SealightEdison","GPIO":[0,0,0,0,0,416,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18}
Shelly Vintage 4W 260lm 2700k {"NAME":"Shelly Vintage","GPIO":[0,0,0,0,416,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18}
Shelly Vintage 7W 750lm 2700k {"NAME":"Shelly Vintage","GPIO":[0,0,0,0,416,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18}
@ -558,7 +560,7 @@ Goldair SleepSmart GCPF315 {"NAME":"Goldair Fan","GPIO":[0,0,0,0,0,0,0,0,0,230
Holmes 36" Oscillating Tower {"NAME":"Generic","GPIO":[1,1,1,1,1,1,1,1,1,1,1,1,1,1],"FLAG":0,"BASE":54,"CMND":"TuyaMcu 11,1 | TuyaMcu 12,5 | WebButton1 Power | WebButton2 Oscillation "}
Lucci Connect Remote Control {"NAME":"Lucci Fan","GPIO":[0,0,0,0,0,0,0,0,0,2304,0,2272,0,0],"FLAG":0,"BASE":54}
QuietCool Gable Mount Attic {"NAME":"QuietCool-AFG-SMT-PRO-2.0","GPIO":[0,0,0,0,0,224,0,0,0,0,0,0,0,0,640,608,0,0,0,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1,"CMND":"Interlock 1|WebButton1 Low|WebButton2 High|SO8 1"}
Sichler Haushaltsgeraete Column {"NAME":"Sichler Fan","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
Sichler Haushaltsgeräte Column {"NAME":"Sichler Fan","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
Technical Pro {"NAME":"FXA16 Fan","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54,"CMND":"TuyaMCU 12,8"}
Zemismart Bladeless {"NAME":"Bladeless Fan","GPIO":[1,2272,1,2304,1,1,0,0,1,1,1,1,1,0],"FLAG":0,"BASE":54}
```
@ -601,6 +603,7 @@ EBERG ROT 720 Infrared {"NAME":"Tuya MCU","GPIO":[0,2272,0,2304,0,0,0,0,0,
Klarstein Bornholm Smart 2000W {"NAME":"Klarstein Bornholm","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
Kogan 1500W Panel {"NAME":"Kogan Panel Heater","GPIO":[0,0,0,0,0,0,0,0,0,2304,0,2272,0,0],"FLAG":0,"BASE":54}
LSC Smart Connect 500W IR Panel {"NAME":"LSC Connect Smart IR Panel Heater","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
Mursche 450W Infrared Heater {"NAME":"Mursche Infrared Heater","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
SmartMi Electric Air {"NAME":"ZNNFJ07ZM","GPIO":[0,0,0,0,0,0,0,0,0,0,0,0,0,3200,3232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1}
```
@ -622,7 +625,7 @@ Antsig Universal Remote Controller {"NAME":"Antsig Smart Wi-Fi IR","GPIO":[1,1,
Athom {"NAME":"Athom_IR_Remote","GPIO":[32,0,0,0,1056,1088,0,0,0,576,0,0,0,0],"FLAG":0,"BASE":18}
Automate Things IR Bridge {"NAME":"AT-IRBR-1.0","GPIO":[0,0,0,0,1056,1088,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18,"CMND":"Module 0"}
Automate Things IR Bridge {"NAME":"AT-IRBR-1.4","GPIO":[1088,0,0,0,1056,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18,"CMND":"Module 0"}
auvisio S06 {"NAME":"NX-4519-675","GPIO":[0,0,0,0,288,1088,0,0,0,0,1056,0,0,0],"FLAG":0,"BASE":18}
auvisio S06 {"NAME":"NX-4519-675","GPIO":[0,0,0,0,288,1088,0,0,0,32,1056,0,0,0],"FLAG":0,"BASE":18}
Avatto Temperature and Humidity Sensor and {"NAME":"S08Pro","GPIO":[0,640,0,608,288,1088,0,0,0,32,1056,0,0,0],"FLAG":0,"BASE":18}
BlitzWolf BW-RC1 {"NAME":"BW-RC1","GPIO":[0,0,0,0,320,1088,0,0,0,32,1056,0,0,0],"FLAG":0,"BASE":62}
Connect SmartHome Universal Remote {"NAME":"CSH IR Controller","GPIO":[1,1,1,1,320,1088,0,0,0,32,1056,0,0,0],"FLAG":0,"BASE":62}
@ -656,6 +659,10 @@ Uniplay Universal Remote {"NAME":"Uniplay IR","GPIO":[1,3200,1,3232,576,1088
YTF Universal Remote {"NAME":"YTF IR Controller","GPIO":[1,1,1,1,320,1088,0,0,0,32,1056,0,0,0],"FLAG":0,"BASE":62}
```
## IR Remote
```
```
## Illuminance Sensor
```
Tuya {"NAME":"Lightsensor","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
@ -873,7 +880,7 @@ PCI-e Desktop PC Remote Control {"NAME":"PC-Switch-01","GPIO":[32,0,0,0,0,0,0,0
Petoneer Smart Dot Cat Toy {"NAME":"Petoneer Smart Dot","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
Proscenic T21 Air Fryer {"NAME":"Proscenic T21","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
RainPoint Indoor Water Pump {"NAME":"RainPoint","GPIO":[0,0,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54,"CMND":"TuyaMCU 81,107|TuyaMCU 12,109|TuyaMCU 11,1|TuyaMCU 82,104"}
Sinilink PCIe Computer Remote {"NAME":"XY-WPCE","GPIO":[1,1,320,1,32,224,0,0,160,0,0,0,0,0],"FLAG":0,"BASE":18,"CMND":"SO114 1 | SwitchMode1 2"}
Sinilink PCIe Computer Remote {"NAME":"XY-WPCE","GPIO":[1,1,320,1,160,224,0,161,162,0,0,0,0,0],"FLAG":0,"BASE":18,"CMND":"SO114 1 | Pulsetime 10 | SwitchMode1 2 | SwitchMode2 2 | SwitchMode3 2"}
Sinilink USB Computer Remote {"NAME":"XY-WPCL","GPIO":[0,0,320,0,0,224,0,32,160,0,0,0,0,0],"FLAG":0,"BASE":18,"CMND":"SO114 1 | Pulsetime 10 | SwitchMode1 2"}
Sinilink XY-Clock Clock Alarm Module {"NAME":"XY-Clock","GPIO":[288,0,289,0,0,416,32,33,608,640,0,0,34,0],"FLAG":0,"BASE":18}
Sunbeam LoftTec Electric Blanket {"NAME":"Sunbeam Heated Blanket","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
@ -923,7 +930,7 @@ Zemismart Updated RF Remote Roller Shade {"NAME":"Zemismart M515EGB","GPIO":[1,
## Other
```
Kogan SmarterHome 1.9L Pet Water Fountain {"NAME":"WaterFountain","GPIO":[257,0,259,0,576,32,0,0,224,161,0,480,226,4704],"FLAG":0,"BASE":18}
Tetra Connect Automatic Feeder {"NAME":"Tetra Connect","GPIO":[0,0,0,0,224,288,0,0,98,96,97,0,289,0],"FLAG":0,"BASE":18}
Tetra® Connect Automatic Feeder {"NAME":"Tetra Connect","GPIO":[0,0,0,0,224,288,0,0,98,96,97,0,289,0],"FLAG":0,"BASE":18}
```
## Outdoor Plug
@ -985,6 +992,8 @@ Merkury {"NAME":"Merkury Switch","GPIO":[0,0,0,0,32,0,0,0,0
Meross MSS620 16A IP44 {"NAME":"MSS620","GPIO":[0,320,0,320,225,0,0,0,224,576,32,0,0,0],"FLAG":0,"BASE":18}
Minoston MP22W {"NAME":"Minoston MP22W","GPIO":[0,0,0,0,320,0,0,0,224,64,0,0,0,0],"FLAG":0,"BASE":18}
Nedis PO120 IP44 {"NAME":"WIFIPO120FWT","GPIO":[32,0,0,0,2688,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":49}
Nous A6T Smart Socket {"NAME":"NOUS A5T","GPIO":[0,3072,544,3104,0,259,0,0,225,226,224,0,35,4704],"FLAG":1,"BASE":18}
Nous Dual Smart Socket {"NAME":"NOUS A4T","GPIO":[0,2624,0,576,2656,2720,0,0,224,225,32,0,0,0],"FLAG":0,"BASE":18}
Obi Stecker IP44 {"NAME":"OBI-Outdoor-Socket2","GPIO":[0,0,0,0,224,32,0,0,576,288,1,1,1,1],"FLAG":0,"BASE":18}
Oittm IP44 15A {"NAME":"Oittm Outdoor","GPIO":[576,0,320,0,2688,2656,0,0,224,2592,0,0,0,0],"FLAG":0,"BASE":57}
Oittm Outdoor {"NAME":"Oittm Outdoor","GPIO":[32,0,0,0,0,0,0,0,0,0,320,224,1,0],"FLAG":0,"BASE":18}
@ -1069,6 +1078,7 @@ Arlec Twin Socket with Energy Meter {"NAME":"Arlec PC287HA","GPIO":[0,32,0,320,
Athom 16A {"NAME":"Athom Power Monitoring Plug","GPIO":[0,0,0,32,2720,2656,0,0,2624,544,224,0,0,1],"FLAG":0,"BASE":18}
Athom 16A AU {"NAME":"Athom PG05-AU16A","GPIO":[0,0,0,32,2720,2656,0,0,2624,544,224,0,0,0],"FLAG":0,"BASE":1}
Athom 16A AU {"NAME":"Athom Plug V2","GPIO":[0,0,0,3104,0,32,0,0,224,576,0,0,0,0],"FLAG":0,"BASE":18}
Athom 16A AU V3 {"NAME":"Athom Plug V3","GPIO":[0,0,0,32,0,224,576,0,0,0,0,0,0,0,0,0,0,0,0,0,3104,0],"FLAG":0,"BASE":1}
Athom 16A BR V2 {"NAME":"Athom Plug V2","GPIO":[0,0,0,3104,0,32,0,0,224,576,0,0,0,0],"FLAG":0,"BASE":18}
Athom 16A Brazil {"NAME":"Athom PG05-BR16A","GPIO":[0,0,0,32,2720,2656,0,0,2624,544,224,0,0,0],"FLAG":0,"BASE":1}
Athom 16A EU V2 {"NAME":"Athom Plug V2","GPIO":[0,0,0,3104,0,32,0,0,224,576,0,0,0,0],"FLAG":0,"BASE":18}
@ -1078,8 +1088,10 @@ Athom 16A Italy {"NAME":"Athom PG05-IT16A","GPIO":[0,0,0,32,2720,26
Athom 16A Switzerland v2 {"NAME":"Athom Plug V2","GPIO":[0,0,0,3104,0,32,0,0,224,576,0,0,0,0],"FLAG":0,"BASE":18}
Athom 16A UK {"NAME":"Athom PG04-UK16A","GPIO":[0,0,0,32,2720,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":18}
Athom 16A UK V2 {"NAME":"Athom Plug V2","GPIO":[0,0,0,3104,0,32,0,0,224,576,0,0,0,0],"FLAG":0,"BASE":18}
Athom 16A UK V3 {"NAME":"Athom Plug V3","GPIO":[0,0,0,32,0,224,576,0,0,0,0,0,0,0,0,0,0,0,0,0,3104,0],"FLAG":0,"BASE":1}
Athom 16A US {"NAME":"Athom PG03-US16A","GPIO":[0,0,0,32,2720,2656,0,0,2624,288,224,0,0,0],"FLAG":0,"BASE":18}
Athom 16A US V2 {"NAME":"Athom Plug V2","GPIO":[0,0,0,3104,0,32,0,0,224,576,0,0,0,0],"FLAG":0,"BASE":18}
Athom 16A US V3 {"NAME":"Athom Plug V3","GPIO":[0,0,0,32,0,224,576,0,0,0,0,0,0,0,0,0,0,0,0,0,3104,0],"FLAG":0,"BASE":1}
Atlantis {"NAME":"Atlantis Smart Plug","GPIO":[32,0,0,0,2720,2656,0,0,2624,544,224,0,0,0],"FLAG":0,"BASE":18}
Atomi AT1217 {"NAME":"AT1217","GPIO":[0,0,0,0,320,321,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
Aubess 16A {"NAME":"Aubess 16A Power Monitoring Plug","GPIO":[0,32,0,0,2720,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":18}
@ -1221,8 +1233,8 @@ Epicka {"NAME":"Epicka","GPIO":[1,1,1,1,321,320,0,0,224,32
Eques Elf Smart Plug {"NAME":"EQP01WTGY","GPIO":[0,0,0,320,0,0,0,0,96,0,0,224,0,0],"FLAG":0,"BASE":18}
Esicoo JSM-WF02 {"NAME":"Esicoo Plug","GPIO":[0,32,0,0,0,0,0,0,0,320,224,0,0,0],"FLAG":0,"BASE":18}
Estink C178 {"NAME":"Estink C178","GPIO":[0,0,0,0,288,321,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
Etekcity 15A {"NAME":"ESW15-US","GPIO":[0,0,0,0,0,224,0,0,2656,2688,32,2592,288,0],"FLAG":0,"BASE":18}
Etekcity 8A {"NAME":"ESW01-USA","GPIO":[0,0,0,0,224,544,0,0,2656,2688,32,2592,288,0],"FLAG":0,"BASE":55}
ETEKCITY Voltson Smart Wi-Fi Outlet {"NAME":"ESW15-USA","GPIO":[0,0,0,0,416,224,0,0,2656,2688,32,2592,544,4704],"FLAG":0,"BASE":18}
EU3S {"NAME":"AWOW BSD33","GPIO":[0,0,320,0,0,2720,0,0,2624,32,2656,224,0,0],"FLAG":0,"BASE":18}
Eva Logik {"NAME":"EVA LOGIK Plug","GPIO":[1,32,1,1,1,1,0,0,1,288,224,1,1,0],"FLAG":0,"BASE":18}
Ewelink EU 20A {"NAME":"Ewelink Smart Socket 20A","GPIO":[0,0,0,32,2720,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":18}
@ -1250,7 +1262,7 @@ Geeni Spot {"NAME":"Geeni Spot","GPIO":[576,0,0,0,320,0,0,0,0,
Geeni Spot Glo {"NAME":"Geeni Glo","GPIO":[0,0,0,0,320,0,0,0,224,32,225,0,0,0],"FLAG":0,"BASE":18}
Geeni SWITCH {"NAME":"Geeni Switch","GPIO":[0,0,0,0,288,321,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
Geeni Switch Duo {"NAME":"Geeni Duo","GPIO":[0,0,0,0,33,225,0,0,32,288,224,0,289,0],"FLAG":0,"BASE":18}
GHome EP2-A {"NAME":"GHome EP2-A","GPIO":[320,0,576,0,2656,2720,0,0,2624,32,0,224,0,0],"FLAG":0,"BASE":45}
GHome EP2-A {"NAME":"GHome EP2-A","GPIO":[576,0,320,0,2656,2720,0,0,2624,32,0,224,0,0],"FLAG":0,"BASE":45}
Girier 16A {"NAME":"Girier - JR-PM01","GPIO":[0,544,0,2624,2720,2656,0,0,224,32,320,0,0,0],"FLAG":0,"BASE":68}
Globe 15A {"NAME":"Globe 50329","GPIO":[0,0,0,0,320,0,0,0,224,0,32,0,0,0],"FLAG":0,"BASE":18}
Globe 2 Outlet {"NAME":"Globe 50020","GPIO":[0,576,0,321,33,32,0,0,224,320,225,0,0,0],"FLAG":0,"BASE":18}
@ -1454,6 +1466,7 @@ Nishica SM-PW701I {"NAME":"SM-PW701I","GPIO":[1,1,1,1,1,1,1,1,224,288
Nivian {"NAME":"Nivian Smart Socket","GPIO":[0,0,320,0,0,2688,0,0,2624,32,2656,224,0,0],"FLAG":0,"BASE":18}
Nous A1 {"NAME":"NOUS A1","GPIO":[320,0,576,0,2656,2720,0,0,2624,32,0,224,0,0],"FLAG":0,"BASE":45}
Nous A1T 16A {"NAME":"NOUS A1T","GPIO":[32,0,0,0,2720,2656,0,0,2624,320,224,0,0,0],"FLAG":0,"BASE":49}
Nous A8T 10A {"NAME":"NOUS A8T","GPIO":[1,1,320,1,32,1,1,1,1,224,2624,1,1,1,1,1,0,1,1,1,0,1,2656,2720,0,0,0,0,1,1,1,1,1,0,0,1],"FLAG":0,"BASE":1}
NX-SM112 {"NAME":"NX-SM112v3","GPIO":[0,0,0,0,2720,2656,0,0,576,32,2592,224,0,0],"FLAG":0,"BASE":45}
NX-SM200 {"NAME":"NX-SM200","GPIO":[320,0,0,0,0,2720,0,0,224,32,2656,321,2624,0],"FLAG":0,"BASE":18}
NX-SM210 {"NAME":"NX-SM210","GPIO":[0,32,0,0,0,0,0,0,0,320,224,0,0,0],"FLAG":0,"BASE":18}
@ -1624,7 +1637,7 @@ Vettora Smart Plug {"NAME":"Vettora","GPIO":[0,0,0,32,0,0,0,0,0,320,22
Vingo {"NAME":"Karpal-01","GPIO":[0,0,0,0,0,320,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
Vivanco 39625 Smart Home Power Adapter {"NAME":"Vivianco","GPIO":[0,0,0,32,2688,2656,0,0,2624,288,224,0,0,0],"FLAG":0,"BASE":18}
Vivitar {"NAME":"Vivitar HA1003","GPIO":[576,0,320,0,0,0,0,0,0,32,0,224,0,0],"FLAG":0,"BASE":18}
Vivitar {"NAME":"Vivitar HA1004","GPIO":[576,0,0,0,0,320,0,0,224,0,0,0,0,0],"FLAG":0,"BASE":18}
Vivitar {"NAME":"Vivitar HA-1004","GPIO":[320,0,321,0,0,0,0,0,0,32,0,224,0,0],"FLAG":0,"BASE":18}
Vivitar HA-1006 {"NAME":"HA-1006","GPIO":[0,0,0,0,320,0,0,0,224,64,0,0,0,0],"FLAG":0,"BASE":18}
Vivitar HA-1006-AU {"NAME":"HA-1006-AU","GPIO":[0,0,0,0,320,0,0,0,224,64,0,0,0,0],"FLAG":0,"BASE":18}
Vivitar Plug {"NAME":"HA-1005N-AU","GPIO":[0,0,0,0,544,0,0,0,224,64,0,0,0,0],"FLAG":0,"BASE":18}
@ -1829,6 +1842,7 @@ ZLD64-EU-W {"NAME":"ZLD64-EU-W","GPIO":[0,320,0,32,225,224,0,0
## Presence Sensor
```
Athom Human Presence Sensor {"NAME":"Athom PS01 Sensor","GPIO":[32,0,0,0,640,608,0,0,161,3232,160,3200,576,0],"FLAG":0,"BASE":18}
Everything Presence Lite {"NAME":"Everything Presence Lite","GPIO":[0,0,0,0,0,0,0,0,0,0,544,0,3232,3200,160,161,0,640,608,0,0,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0],"FLAG":0,"BASE":1}
Everything Presence One {"NAME":"Everything Presence One","GPIO":[0,0,0,0,0,0,0,0,0,3200,3232,160,0,1,1,1,0,0,1,1,0,608,640,0,0,0,0,0,544,161,0,0,0,0,0,0],"FLAG":0,"BASE":1,"CMND":"SO114 1 | SwitchMode1 1 | SwitchMode2 1"}
Tuya mmWave {"NAME":"ZY-M100","GPIO":[1,1,1,1,1,1,0,0,1,1,1,1,1,0],"FLAG":0,"BASE":54,"CMND":"SO97 1 | TuyaMCU 99,1 | TuyaMCU 75,104"}
@ -2033,7 +2047,7 @@ Teckin SB53 1300lm {"NAME":"Teckin SB53","GPIO":[0,0,0,0,416,419,0,0,4
Treatlife A19 8W 650lm {"NAME":"Treatlife RGBW","GPIO":[0,0,0,0,417,416,0,0,420,418,419,0,0,0],"FLAG":0,"BASE":18}
V-TAC 10W 806lm {"NAME":"V-TAC VT-5119","GPIO":[0,0,0,0,4032,0,0,0,0,0,4064,0,0,0],"FLAG":0,"BASE":18}
V-Tac A60 10W 806lm {"NAME":"V-Tac A60","GPIO":[0,0,0,0,416,417,0,0,418,419,420,0,0,0],"FLAG":0,"BASE":18,"CMND":"SetOption37 13"}
V-Tac PAR16 4.5W 400lm 100 {"NAME":"V-TAC VT5164","GPIO":[0,0,0,0,0,0,0,0,4064,0,4032,0,0,0],"FLAG":0,"BASE":18}
V-Tac PAR16 4.5W 400lm 100° {"NAME":"V-TAC VT5164","GPIO":[0,0,0,0,0,0,0,0,4064,0,4032,0,0,0],"FLAG":0,"BASE":18}
Vizia 5W GU10 {"NAME":"Vizia RGBWW","GPIO":[0,0,0,0,419,420,0,0,417,418,416,0,0,1],"FLAG":0,"BASE":18}
WdtPro 8W 800lm {"NAME":"WdtPro","GPIO":[0,0,0,0,419,420,0,0,417,418,416,0,0,0],"FLAG":0,"BASE":18}
Wipro Garnet 9W 810lm {"NAME":"Wipro","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
@ -2136,7 +2150,7 @@ Kainsy 600lm {"NAME":"KAINSY","GPIO":[32,0,0,0,3008,3040,0,0,0,0
Kkmoon 9W 800lm {"NAME":"KKMOON V21","GPIO":[0,0,0,0,419,0,0,0,417,418,416,0,0,0],"FLAG":0,"BASE":18}
Koaanw 650lm {"NAME":"KOAANW Bulb","GPIO":[0,0,0,0,3008,3040,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":27}
Kogan 10W Ambient 1050lm {"NAME":"Kogan RGB","GPIO":[0,0,0,0,2912,416,0,0,0,0,2944,0,0,0],"FLAG":0,"BASE":18}
Kogan 4.5W 330lm 110 {"NAME":"Kogan_GU10","GPIO":[0,0,0,0,418,419,0,0,416,0,417,0,0,0],"FLAG":0,"BASE":18}
Kogan 4.5W 330lm 110° {"NAME":"Kogan_GU10","GPIO":[0,0,0,0,418,419,0,0,416,0,417,0,0,0],"FLAG":0,"BASE":18}
Kogan Ambient Candle {"NAME":"Kogan_E14","GPIO":[0,0,0,0,416,419,0,0,417,0,418,0,0,0],"FLAG":0,"BASE":18}
Kuled 800lm {"NAME":"KULED 60W RGB","GPIO":[0,0,0,0,418,419,0,0,416,0,417,0,0,4704],"FLAG":0,"BASE":18}
Laideyi 7W {"NAME":"7W-E14-RGBW-La","GPIO":[0,0,0,0,417,416,0,0,418,0,419,0,0,0],"FLAG":0,"BASE":18}
@ -2205,7 +2219,7 @@ Rogoei EBE-QPZ04 6.5W 450lm {"NAME":"EBE-QPZ04","GPIO":[0,0,0,0,4032,0,0,0,0,0,
Saudio 7W 700lm {"NAME":"X002BU0DOL","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
Sengled {"NAME":"Sengled RGBW","GPIO":[0,0,0,0,0,0,0,0,417,416,419,418,0,0],"FLAG":0,"BASE":18}
Shelly Duo RGBW 5W 400lm {"NAME":"Shelly Duo RGBW","GPIO":[0,0,0,0,0,419,0,0,417,416,418,0,0,0],"FLAG":0,"BASE":18}
Shelly Duo RGBW 9W 800lm {"NAME":"Shelly Duo RGBW","GPIO":[0,0,0,0,0,419,0,0,417,416,418,0,0,0],"FLAG":0,"BASE":18}
Shelly Duo RGBW 9W 800lm {"NAME":"Shelly Duo RGBW","GPIO":[0,0,0,0,0,419,0,0,417,416,418,0,0,4736],"FLAG":0,"BASE":18,"CMND":"AdcParam 2, 32000, 1000, 3950|SetOption37 128|SetOption106 1|SetOption107 0|WebButton1 COLOR|WebButton2 WHITE|SetOption42 85|Fade ON|Speed 2|SetOption91 1|Rule1 ON POWER2#state=1 DO POWER1 OFF ENDON ON POWER1#state=1 DO POWER2 OFF ENDON ON Dimmer1#State DO POWER2 OFF ENDON ON Dimmer2#State DO POWER1 OFF ENDON|Rule1 ON"}
Smart 810lm {"NAME":"OOOLED 60W RGB","GPIO":[0,0,0,0,418,419,0,0,416,0,417,0,0,4704],"FLAG":0,"BASE":18}
SmartLED 9W 400lm {"NAME":"SmartLED RGBWW","GPIO":[0,0,0,0,416,419,0,0,417,420,418,0,0,0],"FLAG":0,"BASE":18}
Smartyfi 600lm {"NAME":"SMARTYFI 9W","GPIO":[0,0,0,0,416,419,0,0,417,0,418,0,0,0],"FLAG":0,"BASE":18}
@ -2262,11 +2276,13 @@ Anmbest 2 Channel Inching Self-locking Switch Module {"NAME":"Generic","GPIO":[
Aptinex IOT RelayNode 4 Channel {"NAME":"APTINEX","GPIO":[0,0,1,0,0,0,0,0,224,225,226,227,0,0],"FLAG":0,"BASE":18}
Armtronix Quad {"NAME":"Armtronix Wifi Four Relay Board","GPIO":[1,0,0,0,224,1,0,0,225,226,227,0,1,0],"FLAG":0,"BASE":7}
Athom 1Ch Inching/Self-locking {"NAME":"Athom R01","GPIO":[1,1,1,1,1,224,1,1,1,1,1,1,576,0],"FLAG":0,"BASE":18}
Athom 8Ch Inching/Self-locking 10A {"NAME":"Athom R08","GPIO":[229,1,1,1,230,231,1,1,226,227,225,228,224,0],"FLAG":0,"BASE":18}
Athom 8Ch Inching/Self-locking 10A {"NAME":"Athom 8CH Relay Board","GPIO":[0,0,228,0,229,230,1,1,226,227,225,544,1,1152,231,0,0,0,0,0,0,33,32,224,0,0,0,0,35,34,37,36,39,0,0,38],"FLAG":0,"BASE":1}
Claudy 5V {"NAME":"CLAUDY","GPIO":[0,0,225,0,0,0,0,0,0,0,0,224,0,0],"FLAG":0,"BASE":18}
Devantech 8x16A {"NAME":"ESP32LR88","GPIO":[0,0,231,0,32,35,0,0,229,230,228,0,33,34,36,37,0,38,39,544,0,225,226,227,0,0,0,0,0,224,3232,3200,0,0,0,0],"FLAG":0,"BASE":1}
Dingtian 16 Channel {"NAME":"Dingtian DT-R008","GPIO":[1,9408,1,9440,1,1,1,1,1,9760,9729,9856,9792,1,1,1,0,1,1,1,0,1,1,1,0,0,0,0,9824,9952,1,1,1,0,0,1],"FLAG":0,"BASE":1}
Dingtian 2 Channel {"NAME":"Dingtian DT-R002","GPIO":[5536,9408,225,9440,0,0,0,0,0,9952,0,0,224,0,5600,0,0,0,0,5568,0,0,0,0,0,0,0,0,576,0,0,0,160,0,0,161],"FLAG":0,"BASE":1}
Dingtian 32 Channel {"NAME":"Dingtian DT-R008","GPIO":[1,9408,1,9440,1,1,1,1,1,9760,9731,9856,9792,1,1,1,0,1,1,1,0,1,1,1,0,0,0,0,9824,9952,1,1,1,0,0,1],"FLAG":0,"BASE":1}
Dingtian 4 Channel {"NAME":"Dingtian DT-R004","GPIO":[0,9408,225,9440,0,0,0,0,227,9952,0,0,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,162,0,163,160,0,0,161],"FLAG":0,"BASE":1}
Dingtian 8 Channel {"NAME":"Dingtian DT-R008","GPIO":[1,9408,1,9440,1,1,1,1,1,9760,9728,9856,9792,1,1,1,0,1,1,1,0,1,1,1,0,0,0,0,9824,9952,1,1,1,0,0,1],"FLAG":0,"BASE":1}
DoHome HomeKit DIY Switch {"NAME":"DoHome DIY","GPIO":[1,1,0,1,96,544,0,0,224,0,0,0,0,0],"FLAG":0,"BASE":1}
Eachen ST-DC2 {"NAME":"Garage Control","GPIO":[162,0,0,0,226,225,33,0,224,288,163,227,0,4704],"FLAG":0,"BASE":18}
@ -2315,7 +2331,7 @@ LC Technology 5V/8-80V 1 Channel {"NAME":"LC-Relay-ESP12-1R-MV","GPIO":[1,1,544
LC Technology 5V/8-80V 1 Channel {"NAME":"LC-Relay-ESP12-1R-D8","GPIO":[1,1,544,1,1,224,1,1,1,1,1,1,321,1],"FLAG":0,"BASE":18}
LC Technology AC90V-250V 1 Channel {"NAME":"ESP32_Relay_AC_X1","GPIO":[1,1,1,1,1,1,1,1,1,1,1,1,224,1,1,1,0,1,1,544,0,1,1,1,0,0,0,0,1,1,1,1,1,0,0,1],"FLAG":0,"BASE":1}
LC Technology DC5-60V 1 Channel {"NAME":"ESP32_Relay_X1","GPIO":[1,1,1,1,1,1,1,1,1,1,1,1,224,1,1,1,0,1,1,544,0,1,1,1,0,0,0,0,1,1,1,1,1,0,0,1],"FLAG":0,"BASE":1}
LC Technology DC5-60V 2 Channel {"NAME":"ESP32_Relay_X2","GPIO":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,544,0,225,224,0,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1}
LC Technology DC5-60V 2 Channel {"NAME":"ESP32_Relay_X2","GPIO":[0,0,0,0,0,0,0,0,0,0,0,0,224,225,0,0,0,0,0,544,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1}
LC Technology DC5-60V 4 Channel {"NAME":"ESP32_Relay_X4","GPIO":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,544,0,226,227,1,0,0,0,0,224,225,1,1,1,0,0,1],"FLAG":0,"BASE":1}
LC Technology ESP8266 5V {"NAME":"ESP8266-01S","GPIO":[224,3200,0,3232,0,0,0,0,0,0,0,0,0,4704],"FLAG":0,"BASE":18}
LilyGo T-Relay 5V 8 Channel {"NAME":"LilyGo ESP32 Relay 8","GPIO":[1,1,1,1,1,231,1,1,227,226,1,1,1,1,230,229,0,228,1,1,0,544,1,1,0,0,0,0,225,224,1,1,1,0,0,1],"FLAG":0,"BASE":1}
@ -2360,6 +2376,10 @@ Connex Smart Indoor {"NAME":"Connex Siren","GPIO":[0,2272,0,2304,0,0,0,
NEO Coolcam Temperature and Humidity 3in1 Alarm {"NAME":"Neo Siren 3in1","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
```
## Smart Meter
```
```
## Smoke Sensor
```
Nedis Smoke Detector {"NAME":"Nedis WIFIDS10WT","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
@ -2436,7 +2456,6 @@ Connect SmartHome 3 Gang Wall Switch () {"NAME":"CSH-SWTCH3","GPIO":[0,0,288,0,
Csmart US-B2 {"NAME":"Csmart US-B2","GPIO":[0,544,0,33,32,0,0,0,0,225,224,0,0,0],"FLAG":0,"BASE":18}
Delock WLAN EASY-USB {"NAME":"Delock 11828","GPIO":[0,0,0,32,0,0,0,0,0,576,224,0,0,0],"FLAG":0,"BASE":53}
Deta 1 Gang {"NAME":"Deta 1G Switch","GPIO":[0,0,0,0,544,0,0,0,0,224,0,0,64,0],"FLAG":0,"BASE":18}
Deta 2 Gang {"NAME":"DETA 2G Switch","GPIO":[0,0,0,0,544,0,0,0,65,224,225,0,64,0],"FLAG":0,"BASE":18}
Deta 3 Gang {"NAME":"DETA 3G Switch","GPIO":[544,0,0,66,65,224,0,0,226,0,225,0,64,0],"FLAG":0,"BASE":18}
Deta 4 Gang {"NAME":"Deta 4G Switch","GPIO":[576,0,0,34,33,224,0,0,226,35,225,227,32,0],"FLAG":0,"BASE":18}
DETA Mechanism {"NAME":"Deta 6014HA","GPIO":[0,0,0,0,0,0,0,0,320,0,32,0,224,0],"FLAG":0,"BASE":18}
@ -2585,7 +2604,7 @@ Nedis Dual {"NAME":"SM-SW102U-2","GPIO":[576,0,0,33,225,0,0,0,
NEO Coolcam 2Ch Touch Light {"NAME":"Neo NAS-SC01W-2","GPIO":[0,0,0,0,225,0,0,0,32,224,33,0,544,0],"FLAG":0,"BASE":18}
Nexete DS-123 {"NAME":"DS-123","GPIO":[544,321,1,32,224,33,0,0,1,225,320,1,1,0],"FLAG":0,"BASE":18}
Nexete DS-123 Single {"NAME":"DS-123","GPIO":[544,0,1,33,0,32,0,0,1,224,320,1,1,0],"FLAG":0,"BASE":18}
Novadigital Interruptor Touch Led 1 Boto {"NAME":"Nova Digital Switch 1 Gang","GPIO":[544,0,0,32,224,0,0,0,0,0,288,0,0,0],"FLAG":0,"BASE":18}
Novadigital Interruptor Touch Led 1 Botão {"NAME":"Nova Digital Switch 1 Gang","GPIO":[544,0,0,32,224,0,0,0,0,0,288,0,0,0],"FLAG":0,"BASE":18}
PNI SmartHome 1 Key {"NAME":"Tuya Switch 1 key","GPIO":[544,1,1,32,224,1,1,1,1,1,288,1,1,1],"FLAG":0,"BASE":18}
PNI SmartHome 2 Keys {"NAME":"Tuya switch 2 key","GPIO":[544,0,289,0,0,32,0,0,33,225,0,224,288,0],"FLAG":0,"BASE":18}
Prosto {"NAME":"Prosto WFS-T10","GPIO":[0,0,0,0,0,224,0,0,320,0,64,0,0,0],"FLAG":0,"BASE":18}
@ -2598,7 +2617,7 @@ QNCX Smart Breaker {"NAME":"QNCX Smart breaker","GPIO":[0,0,0,0,160,22
Qualitel 1 Gang {"NAME":"Qualitel 1 Gang","GPIO":[544,0,0,160,224,0,0,0,0,0,288,0,0,0],"FLAG":0,"BASE":18}
Qualitel 2-Gang {"NAME":"Qualitel 2 Gang","GPIO":[544,0,289,0,0,161,0,0,160,224,0,225,288,0],"FLAG":0,"BASE":18}
Qualitel 3 Gang {"NAME":"Qualitel 3 Gang","GPIO":[544,0,290,161,225,162,0,0,160,224,289,226,288,0],"FLAG":0,"BASE":18}
Refoss AC/DC {"NAME":"Refoss-R10","GPIO":[0,1,3104,0,224,192,0,0,2720,0,0,0,0,4736],"FLAG":0,"BASE":18}
Refoss AC/DC {"NAME":"Refoss-R10","GPIO":[1,1,0,1,224,192,0,0,2656,2720,32,1,2624,4736],"FLAG":0,"BASE":18}
RY-RSM104 Light Touch {"NAME":"RY-RSM104","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54}
Sainko 1-Way {"NAME":"SAINKO 1CH","GPIO":[32,1,1,1,0,0,0,0,224,320,0,0,0,0],"FLAG":0,"BASE":28}
Sainko 2 Way {"NAME":"Sainko 2-Way","GPIO":[0,1,320,0,0,32,0,0,224,225,0,0,33,0],"FLAG":0,"BASE":18}
@ -2631,7 +2650,7 @@ Smatrul 5A RF433MHz 4 Gang Touch {"NAME":"Smatrul RF433MHz 3 Gang Touch Switch
Smatrul Infrared Sensor {"NAME":"WHS-2","GPIO":[0,0,0,160,288,0,0,0,0,224,0,0,0,0],"FLAG":0,"BASE":18,"CMND":"SwitchMode1 4 | SO13 1"}
Sonoff IW101 {"NAME":"Sonoff IW101","GPIO":[32,3072,0,3104,0,0,0,0,224,544,0,0,0,0],"FLAG":0,"BASE":41}
Sonoff SwitchMan M5-1C 1 Gang {"NAME":"Sonoff SwitchMan M5-1C-86","GPIO":[32,0,0,0,288,576,0,0,0,0,0,0,0,0,416,0,0,0,0,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1}
Sonoff SwitchMan M5-2C 2 Gang {"NAME":"Sonoff SwitchMan 2C","GPIO":[0,0,0,0,32,576,0,0,0,0,0,33,0,0,416,225,0,0,0,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1}
Sonoff SwitchMan M5-2C 2 Gang {"NAME":"Sonoff SwitchMan 2C","GPIO":[0,0,0,0,32,576,0,0,0,0,0,33,0,0,416,225,0,0,289,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,288],"FLAG":0,"BASE":1}
Sonoff SwitchMan M5-3C 3 Gang {"NAME":"Sonoff M5-3C","GPIO":[33,0,0,0,32,576,0,0,0,0,0,34,0,0,416,225,0,0,226,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1}
Sonoff T1 EU 1 Gang {"NAME":"Sonoff T1 1CH","GPIO":[32,1,1,1,0,0,0,0,224,320,0,0,0,0],"FLAG":0,"BASE":28}
Sonoff T1 EU 2 Gang {"NAME":"Sonoff T1 2CH","GPIO":[32,1,1,1,0,225,33,0,224,320,0,0,0,0],"FLAG":0,"BASE":29}
@ -2693,7 +2712,6 @@ TreatLife 3-Way {"NAME":"Treatlife 3-Way","GPIO":[0,0,0,0,224,576,0
TreatLife Single Pole ON/OFF {"NAME":"Treatlife SS02","GPIO":[0,0,0,0,288,576,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
Tuya 20A {"NAME":"DS-161","GPIO":[544,0,0,32,0,0,0,0,0,224,288,0,0,0],"FLAG":0,"BASE":1}
Tuya 3 Gang {"NAME":"KING-Tuya-key","GPIO":[0,0,0,0,226,225,0,0,224,32,34,0,33,0],"FLAG":0,"BASE":18}
Tuya 4 Gang {"NAME":"Tuya 4 Gang Switch","GPIO":[1,34,224,32,33,0,0,0,225,576,0,0,0,0,0,0,0,0,226,227,35,1],"FLAG":0,"BASE":1}
Tuya T1 2 Gang No Neutral {"NAME":"Tuya T1 Wifi 2 Gang No Neutral Switch","GPIO":[32,0,0,0,0,225,33,0,224,544,0,0,0,0],"FLAG":0,"BASE":18}
Tuya T1 3 Gang No Neutral {"NAME":"Tuya T1 Wifi 3 Gang No Neutral Switch","GPIO":[32,0,0,0,226,225,33,34,224,544,0,0,0,0],"FLAG":0,"BASE":18}
TY-US-L1-W {"NAME":"TY-US-L1-W","GPIO":[0,0,0,0,0,32,0,0,0,224,0,0,576,0],"FLAG":0,"BASE":18}
@ -2735,12 +2753,12 @@ ZUCZUG 3 Gang {"NAME":"2ph105626a x3","GPIO":[0,288,0,32,34,33,0,
## Switch Module
```
2 CH Smart Switch {"NAME":"Generic","GPIO":[32,1,1,1,1,225,33,1,224,288,1,1,1,1],"FLAG":0,"BASE":18}
AGL Modulo Relay 01 Canal {"NAME":"AGL-Basic","GPIO":[0,1,0,0,224,32,0,0,0,0,320,0,0,0],"FLAG":0,"BASE":18}
AGL Módulo Relé 01 Canal {"NAME":"AGL-Basic","GPIO":[0,1,0,0,224,32,0,0,0,0,320,0,0,0],"FLAG":0,"BASE":18}
Albohes 2 Channel {"NAME":"Albohes SH-08","GPIO":[0,3200,33,3232,321,320,0,0,224,544,32,0,225,1],"FLAG":0,"BASE":18}
Athom 10A {"NAME":"CB01-TAS-1","GPIO":[0,0,0,32,320,0,0,0,0,224,0,0,0,1],"FLAG":0,"BASE":18}
Athom 2Ch Inching/Self-locking {"NAME":"Athom R02","GPIO":[1,1,1,1,225,224,1,1,1,1,1,1,576,0],"FLAG":0,"BASE":18}
Athom 2Ch Inching/Self-locking {"NAME":"Athom 2CH Relay Board","GPIO":[0,0,0,0,0,0,1,1,0,0,225,544,1,1152,0,0,0,0,0,0,0,0,0,224,0,0,0,0,0,0,0,0,32,0,0,33],"FLAG":0,"BASE":1}
Athom 3-Way Mini Relay {"NAME":"RS01-TAS-1","GPIO":[0,0,0,32,576,0,0,0,0,224,160,0,0,0],"FLAG":0,"BASE":18}
Athom 4Ch Inching/Self-locking 10A {"NAME":"Athom R04","GPIO":[1,1,1,1,32,576,1,1,226,227,225,1,224,0],"FLAG":0,"BASE":18}
Athom 4Ch Inching/Self-locking 10A {"NAME":"Athom 4CH Relay Board","GPIO":[0,0,0,0,0,0,1,1,226,227,225,544,1,1152,0,0,0,0,0,0,0,0,0,224,0,0,0,0,0,0,34,35,32,0,0,33],"FLAG":0,"BASE":1}
Athom 4Ch Inching/Self-locking 30A {"NAME":"Athom R04-30A","GPIO":[1,1,1,1,32,576,1,1,226,227,225,1,224,0],"FLAG":0,"BASE":18}
ATMS1601 230VAC DIN Timer/Switch {"NAME":"ATMS1601","GPIO":[1,1,1,1,544,320,1,1,224,32,1,1,1,1],"FLAG":0,"BASE":18}
Aubess Power Monitor Switch 16A {"NAME":"Aubess with (BL0942)","GPIO":[0,3200,0,7520,0,0,0,0,160,0,224,0,0,0],"FLAG":0,"BASE":18}
@ -2754,7 +2772,7 @@ Century Aoke Smart Switch {"NAME":"CenturyAoke","GPIO":[0,1,0,1,224,0,0,0,32,
Deta 6000HA Smart Inline Switch {"NAME":"DETA-6000HA","GPIO":[0,32,0,0,0,0,0,0,0,320,224,0,0,0],"FLAG":0,"BASE":18}
dewenwils Outdoor Timer Box {"NAME":"Dewenwils50054","GPIO":[0,0,290,0,0,0,0,0,0,32,0,224,0,0],"FLAG":0,"BASE":18}
EDM Low Voltage {"NAME":"HVAC Switch","GPIO":[0,0,0,0,288,321,0,0,224,0,0,0,0,0],"FLAG":0,"BASE":18}
eMylo 2 Channel {"NAME":"eMylo XL9252WI","GPIO":[0,1,0,0,320,225,0,0,224,0,163,0,0,0],"FLAG":0,"BASE":18}
eMylo 2 Channel {"NAME":"eMylo XL9252WI","GPIO":[0,1,0,0,320,225,0,0,224,0,32,0,0,0],"FLAG":0,"BASE":18}
eMylo Single Channel Switch {"NAME":"eMylo XL9251WI","GPIO":[0,1,0,0,320,0,0,0,224,0,35,0,0,0],"FLAG":0,"BASE":18}
eMylo SS-8839-02 {"NAME":"SS-8839-02","GPIO":[0,1,0,1,320,0,0,0,224,0,32,0,0,0],"FLAG":0,"BASE":18}
eMylo SS-8839-03 {"NAME":"SS-8839-03","GPIO":[0,1,0,1,288,0,0,0,224,0,32,0,0,0],"FLAG":0,"BASE":18}
@ -2778,8 +2796,11 @@ Moes {"NAME":"Moes MS-104B","GPIO":[0,0,32,0,480,0,0,0,1
Moes 10A {"NAME":"Moes MS-101","GPIO":[0,0,0,0,0,320,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
Moes Mini 3 Gang 1/2 Way {"NAME":"Moes MS-104C","GPIO":[0,0,0,34,32,33,0,0,224,225,226,0,0,0],"FLAG":0,"BASE":18}
Nedis 10A {"NAME":"Nedis WIFIPS10WT","GPIO":[0,0,0,0,224,0,0,0,32,321,0,288,0,0],"FLAG":0,"BASE":18}
Nous 1 Channel {"NAME":"NOUS B1T","GPIO":[544,0,1,0,32,160,1,1,224,0,0,1,1,1,0,1,0,1,1,1,0,1,1,1,0,0,0,0,1,1,1,0,1,0,0,1],"FLAG":0,"BASE":1}
Nous 1 Channel Touch {"NAME":"NOUS L1T","GPIO":[544,0,1,32,0,0,0,0,0,224,288,0,0,0],"FLAG":0,"BASE":1}
Nous 1/2 Channel {"NAME":"NOUS L13T Smart Switch Module","GPIO":[1,161,1,160,225,224,1,1,544,1,32,1,1,1],"FLAG":0,"BASE":18}
Nous 2 Channel {"NAME":"NOUS B2T","GPIO":[544,3200,1,8160,32,160,1,1,224,0,0,1,1,1,0,1,0,1,1,1,0,1,1,1,0,0,0,0,1,1,1,0,1,0,0,1],"FLAG":0,"BASE":1}
Nous 2 Channel / Curtain {"NAME":"NOUS B3T","GPIO":[544,3200,1,8128,32,160,1,1,224,225,0,1,1,1,161,1,0,1,1,1,0,1,1,1,0,0,0,0,1,1,1,0,1,0,0,1],"FLAG":0,"BASE":1}
Nous 2 Channel Touch {"NAME":"NOUS L2T","GPIO":[544,289,1,32,225,33,0,0,0,224,288,0,0,0],"FLAG":0,"BASE":1}
Nova Digital Basic 1 MS101 {"NAME":"NovaDigBasic1","GPIO":[0,1,0,1,320,0,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
ONiOFF Smart Switch {"NAME":"ONOFF SmartSwitch","GPIO":[1,320,1,1,1,32,0,0,224,1,1,0,0,0],"FLAG":0,"BASE":1}
@ -2933,6 +2954,10 @@ Xenon {"NAME":"Xenon SM-PM801-K1","GPIO":[0,320,0,32,2720
Xenon 2AC 1USB {"NAME":"Xenon SM-PW801-U1","GPIO":[0,0,0,0,288,32,0,0,224,0,225,0,226,0],"FLAG":0,"BASE":18}
```
## Wall Switch
```
```
## Water Sensor
```
Nedis SmartLife Water Detector {"NAME":"Nedis WIFIDW10WT","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":54,"CMND":"TuyaMCU 51,21"}

View File

@ -1,10 +1,7 @@
{
"build": {
"arduino":{
"ldscript": "esp32_out.ld"
},
"core": "esp32",
"extra_flags": "-DARDUINO_ESP32_DEV -DBOARD_HAS_PSRAM -DHAS_PSRAM_FIX -mfix-esp32-psram-cache-issue -mfix-esp32-psram-cache-strategy=memw -DESP32_4M",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DHAS_PSRAM_FIX -mfix-esp32-psram-cache-issue -mfix-esp32-psram-cache-strategy=memw -DESP32_4M",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "dio",

View File

@ -1,10 +1,7 @@
{
"build": {
"arduino":{
"ldscript": "esp32_out.ld"
},
"core": "esp32",
"extra_flags": "-DARDUINO_ESP32_DEV -DBOARD_HAS_PSRAM -DESP32_4M -DCORE32SOLO1",
"extra_flags": "-DARDUINO_TASMOTA -DESP32_4M -DCORE32SOLO1",
"f_cpu": "240000000L",
"f_flash": "40000000L",
"flash_mode": "dio",
@ -25,7 +22,7 @@
"arduino",
"espidf"
],
"name": "Espressif Generic ESP32 >= 4M Flash, Tasmota 2880k Code/OTA, 320k FS",
"name": "Espressif Generic ESP32-solo1 >= 4M Flash, Tasmota 2880k Code/OTA, 320k FS",
"upload": {
"arduino": {
"flash_extra_images": [
@ -44,6 +41,6 @@
"download": {
"speed": 230400
},
"url": "https://en.wikipedia.org/wiki/ESP32",
"url": "https://www.espressif.com/sites/default/files/documentation/esp32-solo-1_datasheet_en.pdf",
"vendor": "Espressif"
}

View File

@ -1,10 +1,7 @@
{
"build": {
"arduino":{
"ldscript": "esp32_out.ld"
},
"core": "esp32",
"extra_flags": "-DARDUINO_ESP32_DEV -DBOARD_HAS_PSRAM -DESP32_4M",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DESP32_4M",
"f_cpu": "160000000L",
"f_flash": "40000000L",
"flash_mode": "dio",

View File

@ -1,10 +1,7 @@
{
"build": {
"arduino":{
"ldscript": "esp32c2_out.ld"
},
"core": "esp32",
"extra_flags": "-DESP32_4M -DESP32C2",
"extra_flags": "-DARDUINO_TASMOTA -DESP32_4M -DESP32C2",
"f_cpu": "120000000L",
"f_flash": "60000000L",
"flash_mode": "qio",

View File

@ -1,10 +1,7 @@
{
"build": {
"arduino":{
"ldscript": "esp32c2_out.ld"
},
"core": "esp32",
"extra_flags": "-DESP32_2M -DESP32C2",
"extra_flags": "-DARDUINO_TASMOTA -DESP32_2M -DESP32C2",
"f_cpu": "120000000L",
"f_flash": "60000000L",
"flash_mode": "qio",

View File

@ -1,10 +1,7 @@
{
"build": {
"arduino":{
"ldscript": "esp32c3_out.ld"
},
"core": "esp32",
"extra_flags": "-DESP32_4M -DESP32C3",
"extra_flags": "-DARDUINO_TASMOTA -DARDUINO_USB_MODE=1 -DESP32_4M -DESP32C3 -DUSE_USB_CDC_CONSOLE",
"f_cpu": "160000000L",
"f_flash": "80000000L",
"flash_mode": "dio",
@ -37,10 +34,10 @@
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
"speed": 460800
"speed": 2000000
},
"download": {
"speed": 230400
"speed": 2000000
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/hw-reference/esp32c3/user-guide-devkitm-1.html",
"vendor": "Espressif"

View File

@ -1,10 +1,7 @@
{
"build": {
"arduino":{
"ldscript": "esp32c3_out.ld"
},
"core": "esp32",
"extra_flags": "-DARDUINO_USB_MODE=1 -DESP32_4M -DESP32C3 -DUSE_USB_CDC_CONSOLE",
"extra_flags": "-DARDUINO_TASMOTA -DESP32_4M -DESP32C3",
"f_cpu": "160000000L",
"f_flash": "80000000L",
"flash_mode": "dio",
@ -17,10 +14,6 @@
"bluetooth"
],
"debug": {
"default_tool": "esp-builtin",
"onboard_tools": [
"esp-builtin"
],
"openocd_target": "esp32c3.cfg"
},
"frameworks": [
@ -33,7 +26,7 @@
"flash_extra_images": [
[
"0x10000",
"tasmota32c3cdc-safeboot.bin"
"tasmota32c3ser-safeboot.bin"
]
]
},
@ -41,10 +34,10 @@
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
"speed": 2000000
"speed": 460800
},
"download": {
"speed": 2000000
"speed": 230400
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/hw-reference/esp32c3/user-guide-devkitm-1.html",
"vendor": "Espressif"

View File

@ -1,10 +1,7 @@
{
"build": {
"arduino":{
"ldscript": "esp32c6_out.ld"
},
"core": "esp32",
"extra_flags": "-DESP32_4M -DESP32C6",
"extra_flags": "-DARDUINO_TASMOTA -DARDUINO_USB_MODE=1 -DESP32_4M -DESP32C6 -DUSE_USB_CDC_CONSOLE",
"f_cpu": "160000000L",
"f_flash": "80000000L",
"flash_mode": "qio",
@ -37,10 +34,10 @@
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
"speed": 460800
"speed": 2000000
},
"download": {
"speed": 230400
"speed": 2000000
},
"url": "https://docs.espressif.com/projects/espressif-esp-dev-kits/en/latest/esp32c6/esp32-c6-devkitc-1/index.html",
"vendor": "Espressif"

View File

@ -1,10 +1,7 @@
{
"build": {
"arduino":{
"ldscript": "esp32c6_out.ld"
},
"core": "esp32",
"extra_flags": "-DARDUINO_USB_MODE=1 -DESP32_4M -DESP32C6 -DUSE_USB_CDC_CONSOLE",
"extra_flags": "-DARDUINO_TASMOTA -DESP32_4M -DESP32C6",
"f_cpu": "160000000L",
"f_flash": "80000000L",
"flash_mode": "qio",
@ -17,10 +14,6 @@
"bluetooth"
],
"debug": {
"default_tool": "esp-builtin",
"onboard_tools": [
"esp-builtin"
],
"openocd_target": "esp32c6.cfg"
},
"frameworks": [
@ -33,7 +26,7 @@
"flash_extra_images": [
[
"0x10000",
"tasmota32c6cdc-safeboot.bin"
"tasmota32c6ser-safeboot.bin"
]
]
},
@ -41,10 +34,10 @@
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
"speed": 2000000
"speed": 460800
},
"download": {
"speed": 2000000
"speed": 230400
},
"url": "https://docs.espressif.com/projects/espressif-esp-dev-kits/en/latest/esp32c6/esp32-c6-devkitc-1/index.html",
"vendor": "Espressif"

View File

@ -1,10 +1,7 @@
{
"build": {
"arduino":{
"ldscript": "esp32s2_out.ld"
},
"core": "esp32",
"extra_flags": "-DBOARD_HAS_PSRAM -DESP32_4M -DESP32S2",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DESP32_4M -DESP32S2",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "dio",
@ -19,8 +16,8 @@
"openocd_target": "esp32s2.cfg"
},
"frameworks": [
"espidf",
"arduino"
"arduino",
"espidf"
],
"name": "Espressif Generic ESP32-S2 >= 4M Flash PSRAM, Tasmota 2880k Code/OTA, 320k FS",
"upload": {

View File

@ -1,10 +1,7 @@
{
"build": {
"arduino":{
"ldscript": "esp32s2_out.ld"
},
"core": "esp32",
"extra_flags": "-DBOARD_HAS_PSRAM -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32S2",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32S2",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "dio",
@ -19,8 +16,8 @@
"openocd_target": "esp32s2.cfg"
},
"frameworks": [
"espidf",
"arduino"
"arduino",
"espidf"
],
"name": "Espressif Generic ESP32-S2 >= 4M Flash PSRAM, Tasmota 2880k Code/OTA, 320k FS",
"upload": {

View File

@ -1,11 +1,10 @@
{
"build": {
"arduino":{
"ldscript": "esp32s3_out.ld",
"memory_type": "opi_opi"
},
"core": "esp32",
"extra_flags": "-DBOARD_HAS_PSRAM -DESP32_4M -DESP32S3",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32S3",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "dout",
@ -22,8 +21,8 @@
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
"espidf",
"arduino"
"arduino",
"espidf"
],
"name": "Espressif Generic ESP32-S3 >= 4M OPI Flash + PSRAM, Tasmota 2880k Code/OTA, 320k FS",
"upload": {
@ -39,11 +38,11 @@
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
"speed": 460800
"speed": 2000000
},
"download": {
"speed": 230400
"speed": 2000000
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
"vendor": "Espressif"
}
}

View File

@ -0,0 +1,50 @@
{
"build": {
"arduino":{
"memory_type": "opi_opi"
},
"core": "esp32",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"f_boot": "120000000L",
"boot": "opi",
"flash_mode": "dout",
"mcu": "esp32s3",
"variant": "esp32s3",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32S3",
"partitions": "partitions/esp32_partition_app2880k_fs320k.csv"
},
"connectivity": [
"wifi",
"bluetooth",
"ethernet"
],
"debug": {
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
"arduino",
"espidf"
],
"name": "Espressif Generic ESP32-S3 >= 4M OPI Flash + PSRAM, Tasmota 2880k Code/OTA, 320k FS",
"upload": {
"arduino": {
"flash_extra_images": [
[
"0x10000",
"tasmota32s3-safeboot.bin"
]
]
},
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
"speed": 2000000
},
"download": {
"speed": 2000000
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
"vendor": "Espressif"
}

View File

@ -1,11 +1,10 @@
{
"build": {
"arduino":{
"ldscript": "esp32s3_out.ld",
"memory_type": "qio_opi"
},
"core": "esp32",
"extra_flags": "-DBOARD_HAS_PSRAM -DESP32_4M -DESP32S3",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32S3",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "qio",
@ -22,8 +21,8 @@
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
"espidf",
"arduino"
"arduino",
"espidf"
],
"name": "Espressif Generic ESP32-S3 >= 4M Flash OPI PSRAM, Tasmota 2880k Code/OTA, 320k FS",
"upload": {
@ -39,10 +38,10 @@
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
"speed": 460800
"speed": 2000000
},
"download": {
"speed": 230400
"speed": 2000000
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
"vendor": "Espressif"

View File

@ -0,0 +1,50 @@
{
"build": {
"arduino":{
"memory_type": "qio_opi"
},
"core": "esp32",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"f_boot": "120000000L",
"boot": "qio",
"flash_mode": "qio",
"mcu": "esp32s3",
"variant": "esp32s3",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32S3",
"partitions": "partitions/esp32_partition_app2880k_fs320k.csv"
},
"connectivity": [
"wifi",
"bluetooth",
"ethernet"
],
"debug": {
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
"arduino",
"espidf"
],
"name": "Espressif Generic ESP32-S3 >= 4M QIO Flash + OPI PSRAM, Tasmota 2880k Code/OTA, 320k FS",
"upload": {
"arduino": {
"flash_extra_images": [
[
"0x10000",
"tasmota32s3-safeboot.bin"
]
]
},
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
"speed": 2000000
},
"download": {
"speed": 2000000
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
"vendor": "Espressif"
}

View File

@ -1,11 +1,10 @@
{
"build": {
"arduino":{
"ldscript": "esp32s3_out.ld",
"memory_type": "qio_qspi"
},
"core": "esp32",
"extra_flags": "-DBOARD_HAS_PSRAM -DESP32_4M -DESP32S3",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32S3",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "qio",
@ -22,8 +21,8 @@
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
"espidf",
"arduino"
"arduino",
"espidf"
],
"name": "Espressif Generic ESP32-S3 >= 4M Flash QSPI PSRAM, Tasmota 2880k Code/OTA, 320k FS",
"upload": {
@ -39,10 +38,10 @@
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
"speed": 460800
"speed": 2000000
},
"download": {
"speed": 230400
"speed": 2000000
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
"vendor": "Espressif"

View File

@ -0,0 +1,50 @@
{
"build": {
"arduino":{
"memory_type": "qio_qspi"
},
"core": "esp32",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"f_boot": "120000000L",
"boot": "qio",
"flash_mode": "qio",
"mcu": "esp32s3",
"variant": "esp32s3",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32S3",
"partitions": "partitions/esp32_partition_app2880k_fs320k.csv"
},
"connectivity": [
"wifi",
"bluetooth",
"ethernet"
],
"debug": {
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
"arduino",
"espidf"
],
"name": "Espressif Generic ESP32-S3 >= 4M QIO Flash + QSPI PSRAM, Tasmota 2880k Code/OTA, 320k FS",
"upload": {
"arduino": {
"flash_extra_images": [
[
"0x10000",
"tasmota32s3-safeboot.bin"
]
]
},
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
"speed": 2000000
},
"download": {
"speed": 2000000
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
"vendor": "Espressif"
}

View File

@ -1,20 +1,13 @@
{
"build": {
"arduino":{
"ldscript": "esp32s3_out.ld",
"memory_type": "opi_opi"
},
"core": "esp32",
"extra_flags": "-DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32S3",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DESP32_4M -DESP32S3",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "dout",
"hwids": [
[
"0x303A",
"0x1001"
]
],
"mcu": "esp32s3",
"variant": "esp32s3",
"partitions": "partitions/esp32_partition_app2880k_fs320k.csv"
@ -25,15 +18,11 @@
"ethernet"
],
"debug": {
"default_tool": "esp-builtin",
"onboard_tools": [
"esp-builtin"
],
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
"espidf",
"arduino"
"arduino",
"espidf"
],
"name": "Espressif Generic ESP32-S3 >= 4M OPI Flash + PSRAM, Tasmota 2880k Code/OTA, 320k FS",
"upload": {
@ -41,7 +30,7 @@
"flash_extra_images": [
[
"0x10000",
"tasmota32s3cdc-safeboot.bin"
"tasmota32s3ser-safeboot.bin"
]
]
},
@ -49,11 +38,11 @@
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
"speed": 2000000
"speed": 460800
},
"download": {
"speed": 2000000
"speed": 230400
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
"vendor": "Espressif"
}
}

View File

@ -0,0 +1,50 @@
{
"build": {
"arduino":{
"memory_type": "opi_opi"
},
"core": "esp32",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"f_boot": "120000000L",
"boot": "opi",
"flash_mode": "dout",
"mcu": "esp32s3",
"variant": "esp32s3",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DESP32_4M -DESP32S3",
"partitions": "partitions/esp32_partition_app2880k_fs320k.csv"
},
"connectivity": [
"wifi",
"bluetooth",
"ethernet"
],
"debug": {
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
"arduino",
"espidf"
],
"name": "Espressif Generic ESP32-S3 >= 4M OPI Flash + PSRAM, Tasmota 2880k Code/OTA, 320k FS",
"upload": {
"arduino": {
"flash_extra_images": [
[
"0x10000",
"tasmota32s3ser-safeboot.bin"
]
]
},
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
"speed": 460800
},
"download": {
"speed": 230400
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
"vendor": "Espressif"
}

View File

@ -1,20 +1,13 @@
{
"build": {
"arduino":{
"ldscript": "esp32s3_out.ld",
"memory_type": "qio_opi"
},
"core": "esp32",
"extra_flags": "-DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32S3",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DESP32_4M -DESP32S3",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "qio",
"hwids": [
[
"0x303A",
"0x1001"
]
],
"mcu": "esp32s3",
"variant": "esp32s3",
"partitions": "partitions/esp32_partition_app2880k_fs320k.csv"
@ -25,15 +18,11 @@
"ethernet"
],
"debug": {
"default_tool": "esp-builtin",
"onboard_tools": [
"esp-builtin"
],
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
"espidf",
"arduino"
"arduino",
"espidf"
],
"name": "Espressif Generic ESP32-S3 >= 4M Flash OPI PSRAM, Tasmota 2880k Code/OTA, 320k FS",
"upload": {
@ -41,7 +30,7 @@
"flash_extra_images": [
[
"0x10000",
"tasmota32s3cdc-safeboot.bin"
"tasmota32s3ser-safeboot.bin"
]
]
},
@ -49,10 +38,10 @@
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
"speed": 2000000
"speed": 460800
},
"download": {
"speed": 2000000
"speed": 230400
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
"vendor": "Espressif"

View File

@ -0,0 +1,50 @@
{
"build": {
"arduino":{
"memory_type": "qio_opi"
},
"core": "esp32",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"f_boot": "120000000L",
"boot": "qio",
"flash_mode": "qio",
"mcu": "esp32s3",
"variant": "esp32s3",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DESP32_4M -DESP32S3",
"partitions": "partitions/esp32_partition_app2880k_fs320k.csv"
},
"connectivity": [
"wifi",
"bluetooth",
"ethernet"
],
"debug": {
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
"arduino",
"espidf"
],
"name": "Espressif Generic ESP32-S3 >= 4M QIO Flash + OPI PSRAM, Tasmota 2880k Code/OTA, 320k FS",
"upload": {
"arduino": {
"flash_extra_images": [
[
"0x10000",
"tasmota32s3ser-safeboot.bin"
]
]
},
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
"speed": 460800
},
"download": {
"speed": 230400
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
"vendor": "Espressif"
}

View File

@ -1,20 +1,13 @@
{
"build": {
"arduino":{
"ldscript": "esp32s3_out.ld",
"memory_type": "qio_qspi"
},
"core": "esp32",
"extra_flags": "-DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32S3",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DESP32_4M -DESP32S3",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "qio",
"hwids": [
[
"0x303A",
"0x1001"
]
],
"mcu": "esp32s3",
"variant": "esp32s3",
"partitions": "partitions/esp32_partition_app2880k_fs320k.csv"
@ -25,15 +18,11 @@
"ethernet"
],
"debug": {
"default_tool": "esp-builtin",
"onboard_tools": [
"esp-builtin"
],
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
"espidf",
"arduino"
"arduino",
"espidf"
],
"name": "Espressif Generic ESP32-S3 >= 4M Flash QSPI PSRAM, Tasmota 2880k Code/OTA, 320k FS",
"upload": {
@ -41,7 +30,7 @@
"flash_extra_images": [
[
"0x10000",
"tasmota32s3cdc-safeboot.bin"
"tasmota32s3ser-safeboot.bin"
]
]
},
@ -49,10 +38,10 @@
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
"speed": 2000000
"speed": 460800
},
"download": {
"speed": 2000000
"speed": 230400
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
"vendor": "Espressif"

View File

@ -0,0 +1,30 @@
{
"build": {
"arduino": {
"ldscript": "eagle.flash.16m14m.ld"
},
"core": "esp8266",
"extra_flags": "-DARDUINO_TASMOTA -DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_16M -DESP8266_16M14M",
"f_cpu": "80000000L",
"f_flash": "40000000L",
"flash_mode": "dout",
"mcu": "esp8266",
"variant": "generic"
},
"connectivity": [
"wifi"
],
"frameworks": [
"arduino"
],
"name": "Espressif Generic ESP8266 Tasmota 1M sketch 1M OTA 14M FS",
"upload": {
"maximum_ram_size": 81920,
"maximum_size": 995326,
"require_upload_port": true,
"resetmethod": "ck",
"speed": 115200
},
"url": "http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family",
"vendor": "Espressif"
}

View File

@ -4,7 +4,7 @@
"ldscript": "eagle.flash.1m.ld"
},
"core": "esp8266",
"extra_flags": "-DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_1M",
"extra_flags": "-DARDUINO_TASMOTA -DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_1M",
"f_cpu": "80000000L",
"f_flash": "40000000L",
"flash_mode": "dout",

View File

@ -4,7 +4,7 @@
"ldscript": "eagle.flash.2m1m.ld"
},
"core": "esp8266",
"extra_flags": "-DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_2M -DESP8266_2M1M",
"extra_flags": "-DARDUINO_TASMOTA -DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_2M -DESP8266_2M1M",
"f_cpu": "80000000L",
"f_flash": "40000000L",
"flash_mode": "dout",

View File

@ -4,7 +4,7 @@
"ldscript": "eagle.flash.2m256.ld"
},
"core": "esp8266",
"extra_flags": "-DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_2M -DESP8266_2M256",
"extra_flags": "-DARDUINO_TASMOTA -DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_2M -DESP8266_2M256",
"f_cpu": "80000000L",
"f_flash": "40000000L",
"flash_mode": "dout",

View File

@ -4,7 +4,7 @@
"ldscript": "eagle.flash.4m2m.ld"
},
"core": "esp8266",
"extra_flags": "-DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_4M -DESP8266_4M2M",
"extra_flags": "-DARDUINO_TASMOTA -DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_4M -DESP8266_4M2M",
"f_cpu": "80000000L",
"f_flash": "40000000L",
"flash_mode": "dout",

View File

@ -4,7 +4,7 @@
"ldscript": "eagle.flash.4m3m.ld"
},
"core": "esp8266",
"extra_flags": "-DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_4M -DESP8266_4M3M",
"extra_flags": "-DARDUINO_TASMOTA -DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_4M -DESP8266_4M3M",
"f_cpu": "80000000L",
"f_flash": "40000000L",
"flash_mode": "dout",

View File

@ -4,7 +4,7 @@
"ldscript": "eagle.flash.2m256.ld"
},
"core": "esp8266",
"extra_flags": "-DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_2M -DESP8266_2M256",
"extra_flags": "-DARDUINO_TASMOTA -DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_2M -DESP8266_2M256",
"f_cpu": "160000000L",
"f_flash": "40000000L",
"flash_mode": "dout",

View File

@ -70,3 +70,10 @@
#define SPI_MOSI_DLEN_REG(x) SPI_MS_DLEN_REG(x)
#endif // TARGET
// This trick makes sure that 'lto' optimizer does not inline `delay()
// so we can override it with `-Wl,--wrap=delay` linker directive
#ifdef __cplusplus
extern "C"
#endif // _cplusplus
void delay(__UINT32_TYPE__ ms) __attribute__((noinline)) __attribute__ ((noclone));

View File

@ -157,6 +157,42 @@ char * U64toHex(uint64_t value, char *str) {
}
*/
char * ToBinary(uint32_t value, char *str, int32_t digits) {
if (digits > 32) { digits = 32; }
if (digits < 1) { digits = 1; }
int32_t digits_to_one = 1; // how many digits until we find the last `1`
str[32] = 0; // end of string
for (uint32_t i=0; i<32; i++) { // 32 digits in uint32_t
if ((value & 1) && (i+1 > digits_to_one)) {
digits_to_one = i+1;
}
str[31 - i] = (char)(value & 1)+'0';
value = value >> 1;
}
// adjust digits to always show the total value
if (digits_to_one > digits) { digits = digits_to_one; }
if (digits < 32) {
memmove(str, str + 32 - digits, digits + 1);
}
return str;
}
char * U64toStr(uint64_t value, char *str) {
// str must be at least 24 bytes long
uint32_t i = 23;
str[--i] = 0; // end of string
do {
uint64_t m = value;
value /= 10;
char c = m - 10 * value;
str[--i] = c < 10 ? c + '0' : c + 'A' - 10;
} while (value);
if (i) {
memmove(str, str +i, 23 -i);
}
return str;
}
char * U64toHex(uint64_t value, char *str, uint32_t zeroleads) {
// str must be at least 17 bytes long
str[16] = 0; // end of string
@ -235,7 +271,7 @@ int32_t ext_vsnprintf_P(char * out_buf, size_t buf_len, const char * fmt_P, va_l
const uint32_t ALLOC_SIZE = 12;
static const char * allocs[ALLOC_SIZE] = {}; // initialized to zeroes
uint32_t alloc_idx = 0;
static char hex[20]; // buffer used for 64 bits, favor RAM instead of stack to remove pressure
static char hex[34]; // buffer used for 64 bits, favor RAM instead of stack to remove pressure
for (; *fmt != 0; ++fmt) {
int32_t decimals = -2; // default to 2 decimals and remove trailing zeros
@ -290,6 +326,7 @@ int32_t ext_vsnprintf_P(char * out_buf, size_t buf_len, const char * fmt_P, va_l
}
}
break;
case 'B': // Pointer to SBuffer
{
if (cur_val < min_valid_ptr) { new_val_str = ext_invalid_mem; }
@ -306,6 +343,17 @@ int32_t ext_vsnprintf_P(char * out_buf, size_t buf_len, const char * fmt_P, va_l
}
}
break;
// '%_b' outputs a uint32_t to binary
// '%8_b' outputs a uint8_t to binary
case 'b': // Binary, decimals indicates the zero prefill
{
ToBinary(cur_val, hex, decimals);
new_val_str = copyStr(hex);
if (new_val_str == nullptr) { goto free_allocs; }
allocs[alloc_idx++] = new_val_str;
}
break;
/*
case 'V': // 2-byte values, decimals indicates the length, default 2
{
@ -386,6 +434,7 @@ int32_t ext_vsnprintf_P(char * out_buf, size_t buf_len, const char * fmt_P, va_l
}
}
break;
// '%_X' outputs a 64 bits unsigned int to uppercase HEX with 16 digits
case 'X': // input is `uint64_t*`, printed as 16 hex digits (no prefix 0x)
{
@ -399,6 +448,20 @@ int32_t ext_vsnprintf_P(char * out_buf, size_t buf_len, const char * fmt_P, va_l
}
}
break;
// '%_U' outputs a 64 bits unsigned int to decimal
case 'U': // input is `uint64_t*`, printed as decimal
{
if (cur_val < min_valid_ptr) { new_val_str = ext_invalid_mem; }
else {
U64toStr(*(uint64_t*)cur_val, hex);
new_val_str = copyStr(hex);
if (new_val_str == nullptr) { goto free_allocs; }
allocs[alloc_idx++] = new_val_str;
}
}
break;
}
*cur_val_ptr = new_val_str;
*fmt = 's'; // replace `%_X` with `%0s` to display a string instead

View File

@ -66,11 +66,14 @@ void test_ext_snprintf_P(void) {
Serial.printf("--> out=%s\n", c);
ext_snprintf_P(c, sizeof(c), "Float default=%*_f, int(3)=%*_f, int(3)=%*_f, int(3)=%*_f, 6dec=%*_f", 1, &fpi, 4, &f3, -4, &f3, -4, &f31, -8, &fpi);
Serial.printf("--> out=%s\n", c);
uint64_t u641 = 0x1122334455667788LL;
uint64_t u642 = 0x0123456789ABCDEFLL;
uint64_t u643 = 0xFEDCBA9876543210LL;
uint64_t u641 = 0x1122334455667788LL; // 1234605616436508552
uint64_t u642 = 0x0123456789ABCDEFLL; // 81985529216486895
uint64_t u643 = 0xFEDCBA9876543210LL; // 18364758544493064720
ext_snprintf_P(c, sizeof(c), "Int64 0x%_X 0x%_X 0x%_X", &u641, &u642, &u643);
Serial.printf("--> out=%s\n", c);
ext_snprintf_P(c, sizeof(c), "Int64 decimal %_U %_U %_U", &u641, &u642, &u643);
Serial.printf("--> out=%s\n", c);
// ext_snprintf_P(c, sizeof(c), "Float default=%*_f, int(3)=%*_f, int(3)=%*_f, int(3)=%*_f, 6dec=%*_f", &fpi, &f3, &f3, &f31, &fpi);

View File

@ -123,7 +123,9 @@ void TasmotaSerial::end(void) {
}
TasmotaSerial::~TasmotaSerial(void) {
end();
if (m_valid) {
end();
}
}
bool TasmotaSerial::isValidGPIOpin(int pin) {
@ -136,7 +138,12 @@ bool TasmotaSerial::isValidGPIOpin(int pin) {
}
void TasmotaSerial::setTransmitEnablePin(int tx_enable_pin) {
#ifdef ESP8266
if ((tx_enable_pin > -1) && (isValidGPIOpin(tx_enable_pin) || (16 == tx_enable_pin))) {
#endif
#ifdef ESP32
if ((tx_enable_pin > -1) && isValidGPIOpin(tx_enable_pin)) {
#endif
m_tx_enable_pin = tx_enable_pin;
pinMode(m_tx_enable_pin, OUTPUT);
digitalWrite(m_tx_enable_pin, LOW);
@ -145,9 +152,9 @@ void TasmotaSerial::setTransmitEnablePin(int tx_enable_pin) {
#ifdef ESP32
bool TasmotaSerial::freeUart(void) {
for (uint32_t i = SOC_UART_NUM -1; i >= 0; i--) {
for (uint32_t i = SOC_UART_HP_NUM -1; i >= 0; i--) {
if (0 == bitRead(tasmota_serial_uart_bitmap, i)) {
m_uart = i;
m_uart = uart_port_t(i);
bitSet(tasmota_serial_uart_bitmap, m_uart);
return true;
}
@ -161,15 +168,25 @@ void TasmotaSerial::Esp32Begin(void) {
if (m_speed <= 9600) {
// At 9600, 10 chars are ~10ms
uart_set_rx_full_threshold(m_uart, 10);
} else {
// At 19200, 120 chars are ~60ms
// At 76800, 120 chars are ~15ms
uart_set_rx_full_threshold(m_uart, 120);
}
/*
} else if (m_speed < 115200) {
// At 19200, 120 chars are ~60ms
// At 76800, 120 chars are ~15ms
uart_set_rx_full_threshold(m_uart, 120);
} else {
} else if (m_speed == 115200) {
// At 115200, 256 chars are ~20ms
// Zigbee requires to keep frames together, i.e. 256 bytes max
uart_set_rx_full_threshold(m_uart, 256);
} else {
// At even higher speeds set 75% of the buffer
uart_set_rx_full_threshold(m_uart, serial_buffer_size * 3 / 4);
}
*/
// For bitrate below 115200, set the Rx time out to 6 chars instead of the default 10
if (m_speed < 115200) {
// At 76800 the timeout is ~1ms
@ -469,6 +486,42 @@ size_t TasmotaSerial::write(uint8_t b) {
return size;
}
#ifdef ESP32
// Add ability to change parity on the fly, for RS-485
// See https://github.com/arendst/Tasmota/discussions/22272
int32_t TasmotaSerial::setConfig(uint32_t config) {
uint32_t data_bits_before = (m_config & 0xc) >> 2;
uint32_t parity_before = m_config & 0x3;
uint32_t stop_bits_before = (m_config & 0x30) >> 4;
uint32_t data_bits = (config & 0xc) >> 2;
uint32_t parity = config & 0x3;
uint32_t stop_bits = (config & 0x30) >> 4;
esp_err_t err;
if (data_bits_before != data_bits) {
if (err = uart_set_word_length(m_uart, (uart_word_length_t) data_bits)) {
return (int32_t) err;
}
}
if (parity_before != parity) {
if (err = uart_set_parity(m_uart, (uart_parity_t) parity)) {
return (int32_t) err;
}
}
if (stop_bits_before != stop_bits) {
if (err = uart_set_stop_bits(m_uart, (uart_stop_bits_t) stop_bits)) {
return (int32_t) err;
}
}
m_config = config;
return 0; // no error
}
#endif
#ifdef ESP8266
void IRAM_ATTR TasmotaSerial::rxRead(void) {
if (!m_nwmode) {

View File

@ -33,6 +33,12 @@
#ifdef ESP32
#include <HardwareSerial.h>
// IDF 5.2 has changed counting UART channels, SOC_UART_NUM includes now LP UARTS too for ESP32-C6 and -P4
#ifndef SOC_UART_HP_NUM
#define SOC_UART_HP_NUM SOC_UART_NUM // Set new define SOC_UART_HP_NUM in pre IDF 5.2 to SOC_UART_NUM
#endif
#endif
class TasmotaSerial : public Stream {
@ -40,6 +46,7 @@ class TasmotaSerial : public Stream {
TasmotaSerial(int receive_pin, int transmit_pin, int hardware_fallback = 0, int nwmode = 0, int buffer_size = TM_SERIAL_BUFFER_SIZE, bool invert = false);
virtual ~TasmotaSerial();
void setTransmitEnablePin(int tx_enable_pin);
void clearTransmitEnablePin(void) { m_tx_enable_pin = -1; }
size_t setRxBufferSize(size_t size);
size_t getRxBufferSize() { return serial_buffer_size; }
@ -65,6 +72,7 @@ class TasmotaSerial : public Stream {
#ifdef ESP32
uint32_t getUart(void) const { return m_uart; }
HardwareSerial *getesp32hws(void) { return TSerial; }
int32_t setConfig(uint32_t config);
#endif
bool isValid(void) { return m_valid; }
bool overflow(void);
@ -108,7 +116,7 @@ class TasmotaSerial : public Stream {
uint32_t m_speed;
uint32_t m_config;
HardwareSerial *TSerial;
int m_uart = 0;
uart_port_t m_uart = uart_port_t(0);
#endif
};

View File

@ -0,0 +1,19 @@
Wifi Helper for Tasmota bridging differences between ESP8266 and ESP32
This Class is for compatibility with esp8266 code
== License ==
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

View File

@ -0,0 +1,8 @@
{
"name": "WiFiHelper",
"keywords": "esp32, esp8266",
"description": "Bridges differences in Arduino WiFi between ESP32 and ESP8266",
"version": "1.0.0",
"frameworks": "arduino",
"platforms": "*"
}

View File

@ -0,0 +1,97 @@
/*
WiFiHelper.h - provide a wrapper for differences between ESP8266 and ESP32 WiFi
Copyright (C) 2024 Theo Arends / Stephan Hadinger
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef WIFIHELPER_H
#define WIFIHELPER_H
// ======================================================
// ESP8266 specific section
// ======================================================
#ifdef ESP8266
#include "ESP8266WiFi.h"
#endif
// ======================================================
// ESP32 specific section
// ======================================================
#ifdef ESP32
#include <WiFi.h>
#define ENC_TYPE_NONE WIFI_AUTH_OPEN
#define ENC_TYPE_WEP WIFI_AUTH_WEP
#define ENC_TYPE_CCMP WIFI_AUTH_WPA2_PSK
#define ENC_TYPE_TKIP WIFI_AUTH_WPA_WPA2_PSK
#define ENC_TYPE_AUTO WIFI_AUTH_MAX + 1
#define WIFI_NONE_SLEEP 0
#define WIFI_LIGHT_SLEEP 1
#define WIFI_MODEM_SLEEP 2
// ESP8266
typedef enum WiFiPhyMode
{
TAS_WIFI_PHY_MODE_LR = 0, TAS_WIFI_PHY_MODE_11B = 1, TAS_WIFI_PHY_MODE_11G = 2, TAS_WIFI_PHY_MODE_11N = 3
#if ESP_IDF_VERSION_MAJOR >= 5
, TAS_WIFI_PHY_MODE_11AX = 4
#endif
} WiFiPhyMode_t;
#endif // ESP32
// This is an abstract class containing wrappers to call WiFi
class WiFiHelper {
public:
#ifdef ESP32
static wl_status_t begin(const char* wpa2_ssid, wpa2_auth_method_t method, const char* wpa2_identity=NULL, const char* wpa2_username=NULL, const char *wpa2_password=NULL, const char* ca_pem=NULL, const char* client_crt=NULL, const char* client_key=NULL, int ttls_phase2_type=-1, int32_t channel=0, const uint8_t* bssid=0, bool connect=true);
#endif
static wl_status_t begin(const char* ssid, const char *passphrase = NULL, int32_t channel = 0, const uint8_t* bssid = NULL, bool connect = true);
static wl_status_t begin(char* ssid, char *passphrase = NULL, int32_t channel = 0, const uint8_t* bssid = NULL, bool connect = true);
static wl_status_t begin();
static void hostname(const char* aHostname);
static void setSleepMode(int iSleepMode);
static int getPhyMode();
static bool setPhyMode(WiFiPhyMode_t mode);
static void setOutputPower(int n);
static void forceSleepBegin();
static void forceSleepWake();
static bool getNetworkInfo(uint8_t i, String &ssid, uint8_t &encType, int32_t &rssi, uint8_t* &bssid, int32_t &channel, bool &hidden_scan);
static int hostByName(const char* aHostname, IPAddress& aResult, int32_t timer_ms);
static int hostByName(const char* aHostname, IPAddress& aResult);
static void scrubDNS(void);
// With ESP32 Core3, the WiFi mac address is not valid until the wifi is actually started
// this helper function always provide a valid mac address
static String macAddress(void);
// Auto-fix zone
//
// After a reconnect, the zone id may not be valid anymore
// In such case we detect any "%st<n>" or "%en<n>" zone identifier
// and replace with the current zone id
static void IPv6ZoneAutoFix(IPAddress &addr, const char* aHostname);
};
#endif // WIFIHELPER_H

View File

@ -16,48 +16,50 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
//
#ifdef ESP32
#include "Arduino.h"
#include <ESP8266WiFi.h>
#include "WiFiHelper.h"
#include <esp_wifi.h>
extern void AddLog(uint32_t loglevel, PGM_P formatP, ...);
enum LoggingLevels {LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE};
//
// Wifi
//
#ifdef WiFi
#undef WiFi
#endif
#ifdef USE_IPV6
ip_addr_t dns_save4[DNS_MAX_SERVERS] = {}; // IPv4 DNS servers
ip_addr_t dns_save6[DNS_MAX_SERVERS] = {}; // IPv6 DNS servers
#endif // USE_IPV6
#include "tasmota_options.h"
#include "lwip/dns.h"
wl_status_t WiFiClass32::begin(const char* wpa2_ssid, wpa2_auth_method_t method, const char* wpa2_identity, const char* wpa2_username, const char *wpa2_password, const char* ca_pem, const char* client_crt, const char* client_key, int32_t channel, const uint8_t* bssid, bool connect) {
scrubDNS();
wl_status_t ret = WiFiClass::begin(wpa2_ssid, method, wpa2_identity, wpa2_username, wpa2_password, ca_pem, client_crt, client_key, channel, bssid, connect);
scrubDNS();
#if CONFIG_ESP_WIFI_ENTERPRISE_SUPPORT
wl_status_t WiFiHelper::begin(const char *wpa2_ssid, wpa2_auth_method_t method, const char *wpa2_identity, const char *wpa2_username, const char *wpa2_password, const char *ca_pem, const char *client_crt, const char *client_key, int ttls_phase2_type, int32_t channel, const uint8_t *bssid, bool connect) {
WiFiHelper::scrubDNS();
wl_status_t ret = WiFi.begin(wpa2_ssid, method, wpa2_identity, wpa2_username, wpa2_password, ca_pem, client_crt, client_key, ttls_phase2_type, channel, bssid, connect);
WiFiHelper::scrubDNS();
return ret;
}
#endif // CONFIG_ESP_WIFI_ENTERPRISE_SUPPORT
wl_status_t WiFiHelper::begin(const char* ssid, const char *passphrase, int32_t channel, const uint8_t* bssid, bool connect) {
WiFiHelper::scrubDNS();
wl_status_t ret = WiFi.begin(ssid, passphrase, channel, bssid, connect);
WiFiHelper::scrubDNS();
return ret;
}
wl_status_t WiFiClass32::begin(const char* ssid, const char *passphrase, int32_t channel, const uint8_t* bssid, bool connect) {
scrubDNS();
wl_status_t ret = WiFiClass::begin(ssid, passphrase, channel, bssid, connect);
scrubDNS();
wl_status_t WiFiHelper::begin(char* ssid, char *passphrase, int32_t channel, const uint8_t* bssid, bool connect) {
WiFiHelper::scrubDNS();
wl_status_t ret = WiFi.begin(ssid, passphrase, channel, bssid, connect);
WiFiHelper::scrubDNS();
return ret;
}
wl_status_t WiFiClass32::begin(char* ssid, char *passphrase, int32_t channel, const uint8_t* bssid, bool connect) {
scrubDNS();
wl_status_t ret = WiFiClass::begin(ssid, passphrase, channel, bssid, connect);
scrubDNS();
return ret;
}
wl_status_t WiFiClass32::begin() {
scrubDNS();
wl_status_t ret = WiFiClass::begin();
scrubDNS();
wl_status_t WiFiHelper::begin() {
WiFiHelper::scrubDNS();
wl_status_t ret = WiFi.begin();
WiFiHelper::scrubDNS();
return ret;
}
@ -73,7 +75,7 @@ extern bool EthernetHasIPv4(void);
extern bool WifiHasIPv6(void);
extern bool EthernetHasIPv6(void);
void WiFiClass32::scrubDNS(void) {
void WiFiHelper::scrubDNS(void) {
// String dns_entry0 = IPAddress(dns_getserver(0)).toString();
// String dns_entry1 = IPAddress(dns_getserver(1)).toString();
// scan DNS entries
@ -118,36 +120,52 @@ void WiFiClass32::scrubDNS(void) {
// AddLog(LOG_LEVEL_DEBUG, "IP>: DNS: from(%s %s) to (%s %s) has4/6:%i-%i", dns_entry0.c_str(), dns_entry1.c_str(), IPAddress(dns_getserver(0)).toString().c_str(), IPAddress(dns_getserver(1)).toString().c_str(), has_v4, has_v6);
}
void WiFiClass32::setSleepMode(int iSleepMode) {
void WiFiHelper::hostname(const char* aHostname) {
WiFi.setHostname(aHostname);
}
void WiFiHelper::setSleepMode(int iSleepMode) {
// WIFI_LIGHT_SLEEP and WIFI_MODEM_SLEEP
WiFi.setSleep(iSleepMode != WIFI_NONE_SLEEP);
}
int WiFiClass32::getPhyMode() {
int phy_mode = 0; // " BGNL"
uint8_t protocol_bitmap;
if (esp_wifi_get_protocol(WIFI_IF_STA, &protocol_bitmap) == ESP_OK) {
if (protocol_bitmap & 1) { phy_mode = TAS_WIFI_PHY_MODE_11B; } // 1 = 11b (WIFI_PHY_MODE_11B)
if (protocol_bitmap & 2) { phy_mode = TAS_WIFI_PHY_MODE_11G; } // 2 = 11bg (WIFI_PHY_MODE_11G)
if (protocol_bitmap & 4) { phy_mode = TAS_WIFI_PHY_MODE_11N; } // 3 = 11bgn (WIFI_PHY_MODE_11N)
if (protocol_bitmap & 8) { phy_mode = 4; } // Low rate (WIFI_PHY_MODE_LR)
int WiFiHelper::getPhyMode() {
/*
typedef enum
{
WIFI_PHY_MODE_LR, // PHY mode for Low Rate
WIFI_PHY_MODE_11B, // PHY mode for 11b
WIFI_PHY_MODE_11G, // PHY mode for 11g
WIFI_PHY_MODE_HT20, // PHY mode for Bandwidth HT20 (11n)
WIFI_PHY_MODE_HT40, // PHY mode for Bandwidth HT40 (11n)
WIFI_PHY_MODE_HE20, // PHY mode for Bandwidth HE20 (11ax)
} wifi_phy_mode_t;
*/
int phy_mode = 0; // "low rate|11b|11g|HT20|HT40|HE20"
wifi_phy_mode_t WiFiMode;
if (esp_wifi_sta_get_negotiated_phymode(&WiFiMode) == ESP_OK) {
phy_mode = (int)WiFiMode;
if (phy_mode > 5) {
phy_mode = 5;
}
}
return phy_mode;
}
bool WiFiClass32::setPhyMode(WiFiPhyMode_t mode) {
uint8_t protocol_bitmap = WIFI_PROTOCOL_11B; // 1
bool WiFiHelper::setPhyMode(WiFiPhyMode_t mode) {
uint8_t protocol_bitmap = WIFI_PROTOCOL_11B; // 1
switch (mode) {
case 3: protocol_bitmap |= WIFI_PROTOCOL_11N; // 4
case 2: protocol_bitmap |= WIFI_PROTOCOL_11G; // 2
#if ESP_IDF_VERSION_MAJOR >= 5
case 4: protocol_bitmap |= WIFI_PROTOCOL_11AX; // 16
#endif
case 3: protocol_bitmap |= WIFI_PROTOCOL_11N; // 4
case 2: protocol_bitmap |= WIFI_PROTOCOL_11G; // 2
}
return (ESP_OK == esp_wifi_set_protocol(WIFI_IF_STA, protocol_bitmap));
}
void WiFiClass32::wps_disable() {
}
void WiFiClass32::setOutputPower(int n) {
void WiFiHelper::setOutputPower(int n) {
wifi_power_t p = WIFI_POWER_2dBm;
if (n > 19)
p = WIFI_POWER_19_5dBm;
@ -170,13 +188,13 @@ void WiFiClass32::setOutputPower(int n) {
WiFi.setTxPower(p);
}
void WiFiClass32::forceSleepBegin() {
void WiFiHelper::forceSleepBegin() {
}
void WiFiClass32::forceSleepWake() {
void WiFiHelper::forceSleepWake() {
}
bool WiFiClass32::getNetworkInfo(uint8_t i, String &ssid, uint8_t &encType, int32_t &rssi, uint8_t *&bssid, int32_t &channel, bool &hidden_scan) {
bool WiFiHelper::getNetworkInfo(uint8_t i, String &ssid, uint8_t &encType, int32_t &rssi, uint8_t *&bssid, int32_t &channel, bool &hidden_scan) {
hidden_scan = false;
return WiFi.getNetworkInfo(i, ssid, encType, rssi, bssid, channel);
}
@ -199,6 +217,16 @@ static volatile uint32_t ip_addr_counter = 0; // counter for requests
extern int32_t WifiDNSGetTimeout(void);
extern bool WifiDNSGetIPv6Priority(void);
static volatile bool dns_found = false;
bool DNS_TimeReached(uint32_t timer)
{
// Check if a certain timeout has been reached.
int32_t passed = ((int32_t) (millis() - timer));
return (passed >= 0);
}
static void wifi32_dns_found_callback(const char *name, const ip_addr_t *ipaddr, void *callback_arg)
{
// Serial.printf("DNS: cb name=%s ipaddr=%s arg=%i counter=%i\n", name ? name : "<null>", IPAddress(ipaddr).toString().c_str(), (int) callback_arg, ip_addr_counter);
@ -210,12 +238,46 @@ static void wifi32_dns_found_callback(const char *name, const ip_addr_t *ipaddr,
} else {
dns_ipaddr = *IP4_ADDR_ANY; // set to IPv4 0.0.0.0
}
WiFiClass32::dnsDone();
dns_found = true;
// AddLog(LOG_LEVEL_DEBUG, "WIF: dns_found=%s", ipaddr ? IPAddress(*ipaddr).toString().c_str() : "<null>");
}
// We need this helper method to access protected methods from WiFiGeneric
void WiFiClass32::dnsDone(void) {
setStatusBits(NET_DNS_DONE_BIT);
// Auto-fix zone
//
// After a reconnect, the zone id may not be valid anymore
// In such case we detect any "%st<n>" or "%en<n>" zone identifier
// and replace with the current zone id
extern bool WifiGetIPv6LinkLocal(IPAddress *ip);
extern bool EthernetGetIPv6LinkLocal(IPAddress *ip);
void WiFiHelper::IPv6ZoneAutoFix(IPAddress &addr, const char* aHostname) {
#ifdef USE_IPV6
if ((addr.type() == IPv6) && (addr.zone() == 0)) {
// check if hostname contains '%'
const char *zone_identifier = strchr(aHostname, '%');
if (zone_identifier != nullptr) {
uint8_t zone_id = 0;
// check if zone id is valid
if (strncmp(zone_identifier, "%st", 3) == 0) {
IPAddress wifi_link_local;
if (WifiGetIPv6LinkLocal(&wifi_link_local)) {
zone_id = wifi_link_local.zone();
}
} else if (strncmp(zone_identifier, "%en", 3) == 0) {
IPAddress eth_link_local;
if (EthernetGetIPv6LinkLocal(&eth_link_local)) {
zone_id = eth_link_local.zone();
}
}
if (zone_id) {
// convert to ip_addr_t which is currently the only way to change the zone_id
ip_addr_t ip_addr;
addr.to_ip_addr_t(&ip_addr);
ip_addr.u_addr.ip6.zone = zone_id;
addr = IPAddress(&ip_addr);
}
}
}
#endif
}
/**
@ -225,19 +287,22 @@ void WiFiClass32::dnsDone(void) {
* @return 1 if aIPAddrString was successfully converted to an IP address,
* else error code
*/
int WiFiClass32::hostByName(const char* aHostname, IPAddress& aResult, int32_t timer_ms)
int WiFiHelper::hostByName(const char* aHostname, IPAddress& aResult, int32_t timer_ms)
{
// return WiFi.hostByName(aHostname, aResult);
// #if 0
ip_addr_t addr;
aResult = (uint32_t) 0; // by default set to IPv4 0.0.0.0
dns_ipaddr = *IP4_ADDR_ANY; // by default set to IPv4 0.0.0.0
scrubDNS(); // internal calls to reconnect can zero the DNS servers, save DNS for future use
WiFiHelper::scrubDNS(); // internal calls to reconnect can zero the DNS servers, save DNS for future use
ip_addr_counter++; // increase counter, from now ignore previous responses
clearStatusBits(NET_DNS_IDLE_BIT | NET_DNS_DONE_BIT);
// clearStatusBits(NET_DNS_IDLE_BIT | NET_DNS_DONE_BIT);
uint8_t v4v6priority = LWIP_DNS_ADDRTYPE_IPV4;
#ifdef USE_IPV6
v4v6priority = WifiDNSGetIPv6Priority() ? LWIP_DNS_ADDRTYPE_IPV6_IPV4 : LWIP_DNS_ADDRTYPE_IPV4_IPV6;
#endif // USE_IPV6
dns_found = false;
err_t err = dns_gethostbyname_addrtype(aHostname, &dns_ipaddr, &wifi32_dns_found_callback, (void*) ip_addr_counter, v4v6priority);
// Serial.printf("DNS: dns_gethostbyname_addrtype errg=%i counter=%i\n", err, ip_addr_counter);
if(err == ERR_OK && !ip_addr_isany_val(dns_ipaddr)) {
@ -247,32 +312,45 @@ int WiFiClass32::hostByName(const char* aHostname, IPAddress& aResult, int32_t t
aResult = ip_addr_get_ip4_u32(&dns_ipaddr);
#endif // USE_IPV6
} else if(err == ERR_INPROGRESS) {
waitStatusBits(NET_DNS_DONE_BIT, timer_ms); //real internal timeout in lwip library is 14[s]
clearStatusBits(NET_DNS_DONE_BIT);
uint32_t deadline = millis() + timer_ms;
while ((!DNS_TimeReached(deadline)) && !dns_found) {
delay(1);
}
}
if (!ip_addr_isany_val(dns_ipaddr)) {
#ifdef USE_IPV6
aResult.from_ip_addr_t(&dns_ipaddr);
WiFiHelper::IPv6ZoneAutoFix(aResult, aHostname);
#else // USE_IPV6
aResult = ip_addr_get_ip4_u32(&dns_ipaddr);
#endif // USE_IPV6
return true;
}
return false;
// #endif
}
int WiFiClass32::hostByName(const char* aHostname, IPAddress& aResult)
int WiFiHelper::hostByName(const char* aHostname, IPAddress& aResult)
{
return hostByName(aHostname, aResult, WifiDNSGetTimeout());
return WiFiHelper::hostByName(aHostname, aResult, WifiDNSGetTimeout());
}
void wifi_station_disconnect() {
// erase ap: empty ssid, ...
WiFi.disconnect(true, true);
#if (ESP_IDF_VERSION_MAJOR >= 5)
#include "esp_mac.h"
#endif
String WiFiHelper::macAddress(void) {
#if (ESP_IDF_VERSION_MAJOR < 5)
return WiFi.macAddress();
#else
uint8_t mac[6] = {0,0,0,0,0,0};
char macStr[18] = { 0 };
esp_read_mac(mac, ESP_MAC_WIFI_STA);
snprintf(macStr, sizeof(macStr), "%02X:%02X:%02X:%02X:%02X:%02X", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
return String(macStr);
#endif
}
void wifi_station_dhcpc_start() {
}
WiFiClass32 WiFi32;
#endif // ESP32

View File

@ -0,0 +1,82 @@
/*
WiFi compat with ESP32
Copyright (C) 2021 Theo Arends / Jörg Schüler-Maroldt
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
//
#ifdef ESP8266
#include "Arduino.h"
#include "WiFiHelper.h"
wl_status_t WiFiHelper::begin(const char* ssid, const char *passphrase, int32_t channel, const uint8_t* bssid, bool connect) {
return WiFi.begin(ssid, passphrase, channel, bssid, connect);
}
wl_status_t WiFiHelper::begin(char* ssid, char *passphrase, int32_t channel, const uint8_t* bssid, bool connect) {
return WiFi.begin(ssid, passphrase, channel, bssid, connect);
}
wl_status_t WiFiHelper::begin() {
return WiFi.begin();
}
void WiFiHelper::scrubDNS(void) {
}
void WiFiHelper::hostname(const char* aHostname) {
WiFi.hostname(aHostname);
}
void WiFiHelper::setSleepMode(int iSleepMode) {
WiFi.setSleepMode((WiFiSleepType_t)iSleepMode);
}
int WiFiHelper::getPhyMode() {
return WiFi.getPhyMode();
}
bool WiFiHelper::setPhyMode(WiFiPhyMode_t mode) {
return WiFi.setPhyMode(mode);
}
void WiFiHelper::setOutputPower(int n) {
WiFi.setOutputPower(n);
}
void WiFiHelper::forceSleepBegin() {
WiFi.forceSleepBegin();
}
void WiFiHelper::forceSleepWake() {
WiFi.forceSleepWake();
}
bool WiFiHelper::getNetworkInfo(uint8_t i, String &ssid, uint8_t &encType, int32_t &rssi, uint8_t* &bssid, int32_t &channel, bool &hidden_scan) {
return WiFi.getNetworkInfo(i, ssid, encType, rssi, bssid, channel, hidden_scan);
}
int WiFiHelper::hostByName(const char* aHostname, IPAddress& aResult, int32_t timer_ms) {
return WiFi.hostByName(aHostname, aResult, timer_ms);
}
int WiFiHelper::hostByName(const char* aHostname, IPAddress& aResult) {
return WiFi.hostByName(aHostname, aResult);
}
String WiFiHelper::macAddress(void) {
return WiFi.macAddress();
}
void WiFiHelper::IPv6ZoneAutoFix(IPAddress &addr, const char* aHostname) {
}
#endif // ESP8266

View File

@ -0,0 +1,128 @@
/**
* Base64 encoding and decoding of strings. Uses '+' for 62, '/' for 63, '=' for padding
*/
#include "base64.hpp"
unsigned char binary_to_base64(unsigned char v) {
// Capital letters - 'A' is ascii 65 and base64 0
if(v < 26) return v + 'A';
// Lowercase letters - 'a' is ascii 97 and base64 26
if(v < 52) return v + 71;
// Digits - '0' is ascii 48 and base64 52
if(v < 62) return v - 4;
// '+' is ascii 43 and base64 62
if(v == 62) return '+';
// '/' is ascii 47 and base64 63
if(v == 63) return '/';
return 64;
}
unsigned char base64_to_binary(unsigned char c) {
// Capital letters - 'A' is ascii 65 and base64 0
if('A' <= c && c <= 'Z') return c - 'A';
// Lowercase letters - 'a' is ascii 97 and base64 26
if('a' <= c && c <= 'z') return c - 71;
// Digits - '0' is ascii 48 and base64 52
if('0' <= c && c <= '9') return c + 4;
// '+' is ascii 43 and base64 62
if(c == '+') return 62;
// '/' is ascii 47 and base64 63
if(c == '/') return 63;
return 255;
}
unsigned int encode_base64_length(unsigned int input_length) {
return (input_length + 2)/3*4;
}
unsigned int decode_base64_length(unsigned char input[]) {
unsigned char *start = input;
while(base64_to_binary(input[0]) < 64) {
++input;
}
unsigned int input_length = input - start;
unsigned int output_length = input_length/4*3;
switch(input_length % 4) {
default: return output_length;
case 2: return output_length + 1;
case 3: return output_length + 2;
}
}
unsigned int encode_base64(unsigned char input[], unsigned int input_length, unsigned char output[]) {
unsigned int full_sets = input_length/3;
// While there are still full sets of 24 bits...
for(unsigned int i = 0; i < full_sets; ++i) {
output[0] = binary_to_base64( input[0] >> 2);
output[1] = binary_to_base64((input[0] & 0x03) << 4 | input[1] >> 4);
output[2] = binary_to_base64((input[1] & 0x0F) << 2 | input[2] >> 6);
output[3] = binary_to_base64( input[2] & 0x3F);
input += 3;
output += 4;
}
switch(input_length % 3) {
case 0:
output[0] = '\0';
break;
case 1:
output[0] = binary_to_base64( input[0] >> 2);
output[1] = binary_to_base64((input[0] & 0x03) << 4);
output[2] = '=';
output[3] = '=';
output[4] = '\0';
break;
case 2:
output[0] = binary_to_base64( input[0] >> 2);
output[1] = binary_to_base64((input[0] & 0x03) << 4 | input[1] >> 4);
output[2] = binary_to_base64((input[1] & 0x0F) << 2);
output[3] = '=';
output[4] = '\0';
break;
}
return encode_base64_length(input_length);
}
unsigned int decode_base64(unsigned char input[], unsigned char output[]) {
unsigned int output_length = decode_base64_length(input);
// While there are still full sets of 24 bits...
for(unsigned int i = 2; i < output_length; i += 3) {
output[0] = base64_to_binary(input[0]) << 2 | base64_to_binary(input[1]) >> 4;
output[1] = base64_to_binary(input[1]) << 4 | base64_to_binary(input[2]) >> 2;
output[2] = base64_to_binary(input[2]) << 6 | base64_to_binary(input[3]);
input += 4;
output += 3;
}
switch(output_length % 3) {
case 1:
output[0] = base64_to_binary(input[0]) << 2 | base64_to_binary(input[1]) >> 4;
break;
case 2:
output[0] = base64_to_binary(input[0]) << 2 | base64_to_binary(input[1]) >> 4;
output[1] = base64_to_binary(input[1]) << 4 | base64_to_binary(input[2]) >> 2;
break;
}
return output_length;
}

View File

@ -69,127 +69,4 @@ unsigned int encode_base64(unsigned char input[], unsigned int input_length, uns
*/
unsigned int decode_base64(unsigned char input[], unsigned char output[]);
unsigned char binary_to_base64(unsigned char v) {
// Capital letters - 'A' is ascii 65 and base64 0
if(v < 26) return v + 'A';
// Lowercase letters - 'a' is ascii 97 and base64 26
if(v < 52) return v + 71;
// Digits - '0' is ascii 48 and base64 52
if(v < 62) return v - 4;
// '+' is ascii 43 and base64 62
if(v == 62) return '+';
// '/' is ascii 47 and base64 63
if(v == 63) return '/';
return 64;
}
unsigned char base64_to_binary(unsigned char c) {
// Capital letters - 'A' is ascii 65 and base64 0
if('A' <= c && c <= 'Z') return c - 'A';
// Lowercase letters - 'a' is ascii 97 and base64 26
if('a' <= c && c <= 'z') return c - 71;
// Digits - '0' is ascii 48 and base64 52
if('0' <= c && c <= '9') return c + 4;
// '+' is ascii 43 and base64 62
if(c == '+') return 62;
// '/' is ascii 47 and base64 63
if(c == '/') return 63;
return 255;
}
unsigned int encode_base64_length(unsigned int input_length) {
return (input_length + 2)/3*4;
}
unsigned int decode_base64_length(unsigned char input[]) {
unsigned char *start = input;
while(base64_to_binary(input[0]) < 64) {
++input;
}
unsigned int input_length = input - start;
unsigned int output_length = input_length/4*3;
switch(input_length % 4) {
default: return output_length;
case 2: return output_length + 1;
case 3: return output_length + 2;
}
}
unsigned int encode_base64(unsigned char input[], unsigned int input_length, unsigned char output[]) {
unsigned int full_sets = input_length/3;
// While there are still full sets of 24 bits...
for(unsigned int i = 0; i < full_sets; ++i) {
output[0] = binary_to_base64( input[0] >> 2);
output[1] = binary_to_base64((input[0] & 0x03) << 4 | input[1] >> 4);
output[2] = binary_to_base64((input[1] & 0x0F) << 2 | input[2] >> 6);
output[3] = binary_to_base64( input[2] & 0x3F);
input += 3;
output += 4;
}
switch(input_length % 3) {
case 0:
output[0] = '\0';
break;
case 1:
output[0] = binary_to_base64( input[0] >> 2);
output[1] = binary_to_base64((input[0] & 0x03) << 4);
output[2] = '=';
output[3] = '=';
output[4] = '\0';
break;
case 2:
output[0] = binary_to_base64( input[0] >> 2);
output[1] = binary_to_base64((input[0] & 0x03) << 4 | input[1] >> 4);
output[2] = binary_to_base64((input[1] & 0x0F) << 2);
output[3] = '=';
output[4] = '\0';
break;
}
return encode_base64_length(input_length);
}
unsigned int decode_base64(unsigned char input[], unsigned char output[]) {
unsigned int output_length = decode_base64_length(input);
// While there are still full sets of 24 bits...
for(unsigned int i = 2; i < output_length; i += 3) {
output[0] = base64_to_binary(input[0]) << 2 | base64_to_binary(input[1]) >> 4;
output[1] = base64_to_binary(input[1]) << 4 | base64_to_binary(input[2]) >> 2;
output[2] = base64_to_binary(input[2]) << 6 | base64_to_binary(input[3]);
input += 4;
output += 3;
}
switch(output_length % 3) {
case 1:
output[0] = base64_to_binary(input[0]) << 2 | base64_to_binary(input[1]) >> 4;
break;
case 2:
output[0] = base64_to_binary(input[0]) << 2 | base64_to_binary(input[1]) >> 4;
output[1] = base64_to_binary(input[1]) << 4 | base64_to_binary(input[2]) >> 2;
break;
}
return output_length;
}
#endif // ifndef

View File

@ -1,4 +1,3 @@
#if defined(CAMERA_MODEL_WROVER_KIT)
#define PWDN_GPIO_NUM -1
#define RESET_GPIO_NUM -1
@ -14,6 +13,7 @@
#define Y4_GPIO_NUM 18
#define Y3_GPIO_NUM 5
#define Y2_GPIO_NUM 4
#define VSYNC_GPIO_NUM 25
#define HREF_GPIO_NUM 23
#define PCLK_GPIO_NUM 22
@ -33,12 +33,12 @@
#define Y4_GPIO_NUM 14
#define Y3_GPIO_NUM 13
#define Y2_GPIO_NUM 34
#define VSYNC_GPIO_NUM 5
#define HREF_GPIO_NUM 27
#define PCLK_GPIO_NUM 25
#elif defined(CAMERA_MODEL_ESP32S3_EYE)
#define PWDN_GPIO_NUM -1
#define RESET_GPIO_NUM -1
#define XCLK_GPIO_NUM 15
@ -73,6 +73,7 @@
#define Y4_GPIO_NUM 34
#define Y3_GPIO_NUM 35
#define Y2_GPIO_NUM 32
#define VSYNC_GPIO_NUM 22
#define HREF_GPIO_NUM 26
#define PCLK_GPIO_NUM 21
@ -92,6 +93,7 @@
#define Y4_GPIO_NUM 34
#define Y3_GPIO_NUM 35
#define Y2_GPIO_NUM 32
#define VSYNC_GPIO_NUM 25
#define HREF_GPIO_NUM 26
#define PCLK_GPIO_NUM 21
@ -111,6 +113,7 @@
#define Y4_GPIO_NUM 34
#define Y3_GPIO_NUM 35
#define Y2_GPIO_NUM 32
#define VSYNC_GPIO_NUM 25
#define HREF_GPIO_NUM 26
#define PCLK_GPIO_NUM 21
@ -130,6 +133,7 @@
#define Y4_GPIO_NUM 34
#define Y3_GPIO_NUM 35
#define Y2_GPIO_NUM 17
#define VSYNC_GPIO_NUM 22
#define HREF_GPIO_NUM 26
#define PCLK_GPIO_NUM 21
@ -149,6 +153,7 @@
#define Y4_GPIO_NUM 34
#define Y3_GPIO_NUM 35
#define Y2_GPIO_NUM 32
#define VSYNC_GPIO_NUM 22
#define HREF_GPIO_NUM 26
#define PCLK_GPIO_NUM 21
@ -168,6 +173,7 @@
#define Y4_GPIO_NUM 19
#define Y3_GPIO_NUM 18
#define Y2_GPIO_NUM 5
#define VSYNC_GPIO_NUM 25
#define HREF_GPIO_NUM 23
#define PCLK_GPIO_NUM 22
@ -187,6 +193,7 @@
#define Y4_GPIO_NUM 4
#define Y3_GPIO_NUM 14
#define Y2_GPIO_NUM 5
#define VSYNC_GPIO_NUM 27
#define HREF_GPIO_NUM 25
#define PCLK_GPIO_NUM 19
@ -206,6 +213,7 @@
#define Y4_GPIO_NUM 14
#define Y3_GPIO_NUM 13
#define Y2_GPIO_NUM 34
#define VSYNC_GPIO_NUM 5
#define HREF_GPIO_NUM 27
#define PCLK_GPIO_NUM 25
@ -225,6 +233,7 @@
#define Y4_GPIO_NUM 14
#define Y3_GPIO_NUM 13
#define Y2_GPIO_NUM 34
#define VSYNC_GPIO_NUM 5
#define HREF_GPIO_NUM 27
#define PCLK_GPIO_NUM 25
@ -244,6 +253,7 @@
#define Y4_GPIO_NUM 4
#define Y3_GPIO_NUM 14
#define Y2_GPIO_NUM 5
#define VSYNC_GPIO_NUM 27
#define HREF_GPIO_NUM 25
#define PCLK_GPIO_NUM 19
@ -263,6 +273,7 @@
#define Y4_GPIO_NUM 4
#define Y3_GPIO_NUM 14
#define Y2_GPIO_NUM 5
#define VSYNC_GPIO_NUM 27
#define HREF_GPIO_NUM 25
#define PCLK_GPIO_NUM 19
@ -282,6 +293,7 @@
#define Y4_GPIO_NUM 26
#define Y3_GPIO_NUM 13
#define Y2_GPIO_NUM 34
#define VSYNC_GPIO_NUM 5
#define HREF_GPIO_NUM 27
#define PCLK_GPIO_NUM 25
@ -302,12 +314,12 @@
#define Y4_GPIO_NUM 8
#define Y3_GPIO_NUM 9
#define Y2_GPIO_NUM 11
#define VSYNC_GPIO_NUM 6
#define HREF_GPIO_NUM 7
#define PCLK_GPIO_NUM 13
#elif defined(CAMERA_MODEL_TTGO_T_CAM_SIM)
#define PWDN_GPIO_NUM -1
#define RESET_GPIO_NUM 18
#define XCLK_GPIO_NUM 14
@ -322,6 +334,7 @@
#define Y4_GPIO_NUM 8
#define Y3_GPIO_NUM 9
#define Y2_GPIO_NUM 11
#define VSYNC_GPIO_NUM 6
#define HREF_GPIO_NUM 7
#define PCLK_GPIO_NUM 13
@ -332,6 +345,27 @@
#define PCIE_TX_PIN 45
#define PCIE_RX_PIN 46
#define PCIE_LED_PIN 21
#elif defined(CAMERA_MODEL_XIAO_ESP32S3_SENSE)
#define PWDN_GPIO_NUM -1
#define RESET_GPIO_NUM -1
#define XCLK_GPIO_NUM 10
#define SIOD_GPIO_NUM 40
#define SIOC_GPIO_NUM 39
#define Y9_GPIO_NUM 48
#define Y8_GPIO_NUM 11
#define Y7_GPIO_NUM 12
#define Y6_GPIO_NUM 14
#define Y5_GPIO_NUM 16
#define Y4_GPIO_NUM 18
#define Y3_GPIO_NUM 17
#define Y2_GPIO_NUM 15
#define VSYNC_GPIO_NUM 38
#define HREF_GPIO_NUM 47
#define PCLK_GPIO_NUM 13
#else
#define PWDN_GPIO_NUM -1
#define RESET_GPIO_NUM -1
@ -347,6 +381,7 @@
#define Y4_GPIO_NUM -1
#define Y3_GPIO_NUM -1
#define Y2_GPIO_NUM -1
#define VSYNC_GPIO_NUM -1
#define HREF_GPIO_NUM -1
#define PCLK_GPIO_NUM -1

View File

@ -24,6 +24,7 @@
#include <Arduino.h>
#ifdef ESP32
#include <HTTPClient.h>
#include <WiFi.h>
#else
#include <ESP8266HTTPClient.h>
#endif

View File

@ -45,17 +45,15 @@ bool AudioFileSourceICYStream::open(const char *url)
{
static const char *hdr[] = { "icy-metaint", "icy-name", "icy-genre", "icy-br" };
pos = 0;
http.begin(client, url);
if (!http.begin(client, url)) {
cb.st(STATUS_HTTPFAIL, PSTR("Can't connect to url"));
return false;
}
http.addHeader("Icy-MetaData", "1");
http.collectHeaders( hdr, 4 );
http.setReuse(true);
http.setFollowRedirects(HTTPC_FORCE_FOLLOW_REDIRECTS);
int code = http.GET();
if (code != HTTP_CODE_OK) {
http.end();
cb.st(STATUS_HTTPFAIL, PSTR("Can't open HTTP request"));
return false;
}
if (http.hasHeader(hdr[0])) {
String ret = http.header(hdr[0]);
icyMetaInt = ret.toInt();

View File

@ -24,6 +24,7 @@
#include <Arduino.h>
#ifdef ESP32
#include <HTTPClient.h>
#include <WiFi.h>
#else
#include <ESP8266HTTPClient.h>
#endif

View File

@ -18,7 +18,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma GCC optimize ("O3")
#pragma GCC optimize ("Os")
#include "AudioGeneratorAAC.h"

View File

@ -58,6 +58,10 @@
#include "AudioGeneratorMIDI.h"
#if defined(ESP32)
// Do not build, Espressif's GCC8+ has a compiler bug
#else // __GNUC__ == 8
#pragma GCC optimize ("O3")
#define TSF_NO_STDIO
@ -637,3 +641,4 @@ void AudioGeneratorMIDI::MakeStreamFromAFS(AudioFileSource *src, tsf_stream *afs
afs->size = &afs_size;
}
#endif //__GNUC__ == 8

View File

@ -21,6 +21,10 @@
#ifndef _AUDIOGENERATORMIDI_H
#define _AUDIOGENERATORMIDI_H
#if defined(ESP32)
// Do not build, Espressif's GCC8+ has a compiler bug
#else // __GNUC__ == 8
#include "AudioGenerator.h"
#define TSF_NO_STDIO
@ -90,7 +94,7 @@ class AudioGeneratorMIDI : public AudioGenerator
unsigned long earliest_time = 0;
struct tonegen_status { /* current status of a tone generator */
bool playing; /* is it playing? */
bool playing; /* is it playing? */
char track; /* if so, which track is the note from? */
char note; /* what note is playing? */
char instrument; /* what instrument? */
@ -176,6 +180,7 @@ class AudioGeneratorMIDI : public AudioGenerator
short samplesRendered[256];
};
#endif //__GNUC__ == 8
#endif

View File

@ -186,7 +186,9 @@ bool AudioGeneratorMP3::GetOneSample(int16_t sample[2])
// If we're here, we have one decoded frame and sent 0 or more samples out
if (samplePtr < synth->pcm.length) {
sample[AudioOutput::LEFTCHANNEL ] = synth->pcm.samples[0][samplePtr];
sample[AudioOutput::RIGHTCHANNEL] = synth->pcm.samples[1][samplePtr];
if(lastChannels == 2) {
sample[AudioOutput::RIGHTCHANNEL] = synth->pcm.samples[1][samplePtr];
}
samplePtr++;
} else {
samplePtr = 0;
@ -200,7 +202,9 @@ bool AudioGeneratorMP3::GetOneSample(int16_t sample[2])
}
// for IGNORE and CONTINUE, just play what we have now
sample[AudioOutput::LEFTCHANNEL ] = synth->pcm.samples[0][samplePtr];
sample[AudioOutput::RIGHTCHANNEL] = synth->pcm.samples[1][samplePtr];
if(lastChannels == 2) {
sample[AudioOutput::RIGHTCHANNEL] = synth->pcm.samples[1][samplePtr];
}
samplePtr++;
}
return true;

View File

@ -190,7 +190,7 @@ bool AudioOutputMixer::loop()
}
}
if (avail) {
int16_t s[2];
int16_t s[2] = {0};
if (leftAccum[readPtr] > 32767) {
s[LEFTCHANNEL] = 32767;
} else if (leftAccum[readPtr] < -32767) {

View File

@ -54,7 +54,7 @@
#define AAC_ENABLE_SBR 1
#endif
#pragma GCC optimize ("O3")
#pragma GCC optimize ("Os")
#include "aacdec.h"
#include "statname.h"

View File

@ -482,7 +482,7 @@ static int celt_plc_pitch_search(celt_sig *decode_mem[2], int C, int arch)
int pitch_index;
VARDECL( opus_val16, lp_pitch_buf );
SAVE_STACK;
opus_val16 *lp_pitch_buf = (opus_val16*)malloc((DECODE_BUFFER_SIZE>>1) * sizeof(opus_val16)); //ALLOC( lp_pitch_buf, DECODE_BUFFER_SIZE>>1, opus_val16 );
ALLOC( lp_pitch_buf, DECODE_BUFFER_SIZE>>1, opus_val16 );
pitch_downsample(decode_mem, lp_pitch_buf,
DECODE_BUFFER_SIZE, C, arch);
pitch_search(lp_pitch_buf+(PLC_PITCH_LAG_MAX>>1), lp_pitch_buf,
@ -490,7 +490,6 @@ static int celt_plc_pitch_search(celt_sig *decode_mem[2], int C, int arch)
PLC_PITCH_LAG_MAX-PLC_PITCH_LAG_MIN, &pitch_index, arch);
pitch_index = PLC_PITCH_LAG_MAX-pitch_index;
RESTORE_STACK;
free(lp_pitch_buf);
return pitch_index;
}

View File

@ -207,4 +207,3 @@
# define __restrict__
#endif
#include <stdlib.h>

View File

@ -171,7 +171,7 @@ extern "C" {
#define OPUS_GET_IN_DTX_REQUEST 4049
/** Defines for the presence of extended APIs. */
#define OPUS_HAVE_OPUS_PROJECTION_H
// #define OPUS_HAVE_OPUS_PROJECTION_H
/* Macros to trigger compilation errors when the wrong types are provided to a CTL */
#define __opus_check_int(x) (((void)((x) == (opus_int32)0)), (opus_int32)(x))

View File

@ -239,30 +239,21 @@ opus_int32 opus_repacketizer_out(OpusRepacketizer *rp, unsigned char *data, opus
int opus_packet_pad(unsigned char *data, opus_int32 len, opus_int32 new_len)
{
OpusRepacketizer *rp = (OpusRepacketizer*)malloc(sizeof(OpusRepacketizer));
OpusRepacketizer rp;
opus_int32 ret;
if (len < 1) {
free(rp);
if (len < 1)
return OPUS_BAD_ARG;
}
if (len==new_len) {
free(rp);
if (len==new_len)
return OPUS_OK;
}
else if (len > new_len) {
free(rp);
else if (len > new_len)
return OPUS_BAD_ARG;
}
opus_repacketizer_init(rp);
opus_repacketizer_init(&rp);
/* Moving payload to the end of the packet so we can do in-place padding */
OPUS_MOVE(data+new_len-len, data, len);
ret = opus_repacketizer_cat(rp, data+new_len-len, len);
if (ret != OPUS_OK) {
free(rp);
ret = opus_repacketizer_cat(&rp, data+new_len-len, len);
if (ret != OPUS_OK)
return ret;
}
ret = opus_repacketizer_out_range_impl(rp, 0, rp->nb_frames, data, new_len, 0, 1);
free(rp);
ret = opus_repacketizer_out_range_impl(&rp, 0, rp.nb_frames, data, new_len, 0, 1);
if (ret > 0)
return OPUS_OK;
else
@ -271,20 +262,15 @@ int opus_packet_pad(unsigned char *data, opus_int32 len, opus_int32 new_len)
opus_int32 opus_packet_unpad(unsigned char *data, opus_int32 len)
{
OpusRepacketizer *rp = (OpusRepacketizer*)malloc(sizeof(OpusRepacketizer));
OpusRepacketizer rp;
opus_int32 ret;
if (len < 1) {
free(rp);
if (len < 1)
return OPUS_BAD_ARG;
}
opus_repacketizer_init(rp);
ret = opus_repacketizer_cat(rp, data, len);
if (ret < 0) {
free(rp);
opus_repacketizer_init(&rp);
ret = opus_repacketizer_cat(&rp, data, len);
if (ret < 0)
return ret;
}
ret = opus_repacketizer_out_range_impl(rp, 0, rp->nb_frames, data, len, 0, 0);
free(rp);
ret = opus_repacketizer_out_range_impl(&rp, 0, rp.nb_frames, data, len, 0, 0);
celt_assert(ret > 0 && ret <= len);
return ret;
}
@ -326,14 +312,12 @@ opus_int32 opus_multistream_packet_unpad(unsigned char *data, opus_int32 len, in
unsigned char toc;
opus_int16 size[48];
opus_int32 packet_offset;
OpusRepacketizer *rp = (OpusRepacketizer*)malloc(sizeof(OpusRepacketizer));
OpusRepacketizer rp;
unsigned char *dst;
opus_int32 dst_len;
if (len < 1){
free(rp);
if (len < 1)
return OPUS_BAD_ARG;
}
dst = data;
dst_len = 0;
/* Unpad all frames */
@ -341,34 +325,25 @@ opus_int32 opus_multistream_packet_unpad(unsigned char *data, opus_int32 len, in
{
opus_int32 ret;
int self_delimited = s!=nb_streams-1;
if (len<=0) {
free(rp);
if (len<=0)
return OPUS_INVALID_PACKET;
}
opus_repacketizer_init(rp);
opus_repacketizer_init(&rp);
ret = opus_packet_parse_impl(data, len, self_delimited, &toc, NULL,
size, NULL, &packet_offset);
if (ret<0) {
free(rp);
if (ret<0)
return ret;
}
ret = opus_repacketizer_cat_impl(rp, data, packet_offset, self_delimited);
if (ret < 0) {
free(rp);
ret = opus_repacketizer_cat_impl(&rp, data, packet_offset, self_delimited);
if (ret < 0)
return ret;
}
ret = opus_repacketizer_out_range_impl(rp, 0, rp->nb_frames, dst, len, self_delimited, 0);
if (ret < 0) {
free(rp);
ret = opus_repacketizer_out_range_impl(&rp, 0, rp.nb_frames, dst, len, self_delimited, 0);
if (ret < 0)
return ret;
}
else
dst_len += ret;
dst += ret;
data += packet_offset;
len -= packet_offset;
}
free(rp);
return dst_len;
}

View File

@ -80,11 +80,10 @@ void silk_NLSF2A(
};
const unsigned char *ordering;
opus_int k, i, dd;
opus_int32 *cos_LSF_QA = (opus_int32*)malloc(sizeof(opus_int32) * SILK_MAX_ORDER_LPC );
opus_int32 *P = (opus_int32*)malloc(sizeof(opus_int32) * (SILK_MAX_ORDER_LPC / 2 + 1));
opus_int32 *Q= (opus_int32*)malloc(sizeof(opus_int32) * (SILK_MAX_ORDER_LPC / 2 + 1));
opus_int32 cos_LSF_QA[ SILK_MAX_ORDER_LPC ];
opus_int32 P[ SILK_MAX_ORDER_LPC / 2 + 1 ], Q[ SILK_MAX_ORDER_LPC / 2 + 1 ];
opus_int32 Ptmp, Qtmp, f_int, f_frac, cos_val, delta;
opus_int32 *a32_QA1 = (opus_int32*)malloc(sizeof(opus_int32) * SILK_MAX_ORDER_LPC );
opus_int32 a32_QA1[ SILK_MAX_ORDER_LPC ];
silk_assert( LSF_COS_TAB_SZ_FIX == 128 );
celt_assert( d==10 || d==16 );
@ -138,9 +137,5 @@ void silk_NLSF2A(
a_Q12[ k ] = (opus_int16)silk_RSHIFT_ROUND( a32_QA1[ k ], QA + 1 - 12 ); /* QA+1 -> Q12 */
}
}
free(cos_LSF_QA);
free(P);
free(Q);
free(a32_QA1);
}

View File

@ -57,12 +57,12 @@ void silk_burg_modified_c(
opus_int k, n, s, lz, rshifts, reached_max_gain;
opus_int32 C0, num, nrg, rc_Q31, invGain_Q30, Atmp_QA, Atmp1, tmp1, tmp2, x1, x2;
const opus_int16 *x_ptr;
opus_int32 *C_first_row = (opus_int32*)malloc(sizeof(opus_int32) * SILK_MAX_ORDER_LPC);
opus_int32 *C_last_row = (opus_int32*)malloc(sizeof(opus_int32) * SILK_MAX_ORDER_LPC);
opus_int32 *Af_QA = (opus_int32*)malloc(sizeof(opus_int32) * SILK_MAX_ORDER_LPC);
opus_int32 *CAf = (opus_int32*)malloc(sizeof(opus_int32) * (SILK_MAX_ORDER_LPC+1));
opus_int32 *CAb = (opus_int32*)malloc(sizeof(opus_int32) * (SILK_MAX_ORDER_LPC+1));
opus_int32 *xcorr = (opus_int32*)malloc(sizeof(opus_int32) * SILK_MAX_ORDER_LPC);
opus_int32 C_first_row[ SILK_MAX_ORDER_LPC ];
opus_int32 C_last_row[ SILK_MAX_ORDER_LPC ];
opus_int32 Af_QA[ SILK_MAX_ORDER_LPC ];
opus_int32 CAf[ SILK_MAX_ORDER_LPC + 1 ];
opus_int32 CAb[ SILK_MAX_ORDER_LPC + 1 ];
opus_int32 xcorr[ SILK_MAX_ORDER_LPC ];
opus_int64 C0_64;
celt_assert( subfr_length * nb_subfr <= MAX_FRAME_SIZE );
@ -277,10 +277,4 @@ void silk_burg_modified_c(
*res_nrg = silk_SMLAWW( nrg, silk_SMMUL( SILK_FIX_CONST( FIND_LPC_COND_FAC, 32 ), C0 ), -tmp1 );/* Q( -rshifts ) */
*res_nrg_Q = -rshifts;
}
free(C_first_row);
free(C_last_row);
free(Af_QA);
free(CAf);
free(CAb);
free(xcorr);
}

View File

@ -49,8 +49,8 @@ void silk_warped_autocorrelation_FIX_c(
{
opus_int n, i, lsh;
opus_int32 tmp1_QS, tmp2_QS;
opus_int32 *state_QS = (opus_int32*)calloc(MAX_SHAPE_LPC_ORDER + 1, sizeof(opus_int32));
opus_int64 *corr_QC = (opus_int64*)calloc(MAX_SHAPE_LPC_ORDER + 1, sizeof(opus_int64));
opus_int32 state_QS[ MAX_SHAPE_LPC_ORDER + 1 ] = { 0 };
opus_int64 corr_QC[ MAX_SHAPE_LPC_ORDER + 1 ] = { 0 };
/* Order must be even */
celt_assert( ( order & 1 ) == 0 );
@ -88,7 +88,5 @@ void silk_warped_autocorrelation_FIX_c(
}
}
silk_assert( corr_QC[ 0 ] >= 0 ); /* If breaking, decrease QC*/
free(state_QS);
free(corr_QC);
}
#endif /* OVERRIDE_silk_warped_autocorrelation_FIX_c */

View File

@ -48,8 +48,7 @@ void silk_resampler_down2_3(
opus_int32 *buf_ptr;
SAVE_STACK;
// ALLOC( buf, RESAMPLER_MAX_BATCH_SIZE_IN + ORDER_FIR, opus_int32 );
opus_int32 *buf = (opus_int32*)malloc((RESAMPLER_MAX_BATCH_SIZE_IN + ORDER_FIR) * sizeof(opus_int32));
ALLOC( buf, RESAMPLER_MAX_BATCH_SIZE_IN + ORDER_FIR, opus_int32 );
/* Copy buffered samples to start of buffer */
silk_memcpy( buf, S, ORDER_FIR * sizeof( opus_int32 ) );
@ -100,6 +99,5 @@ void silk_resampler_down2_3(
/* Copy last part of filtered signal to the state for the next call */
silk_memcpy( S, &buf[ nSamplesIn ], ORDER_FIR * sizeof( opus_int32 ) );
free(buf);
RESTORE_STACK;
}

View File

@ -42,6 +42,16 @@
*/
// ESP32 as of 3.x has a compiler bug in this section, with the G++ generated assembly
// being illegal. There's nothing wrong with the code here, it just looks like an
// Xtensa backend issue. Until that's fixed, no MIDI for you!
///home/earle/Arduino/libraries/ESP8266Audio/src/libtinysoundfont/tsf.h: In function 'void tsf_channel_midi_control(tsf*, int, int, int)':
// /home/earle/Arduino/libraries/ESP8266Audio/src/libtinysoundfont/tsf.h:2101:1: error: insn does not satisfy its constraints:
// 2101 | }
// | ^
#if !defined(ESP32)
#ifndef TSF_INCLUDE_TSF_INL
#define TSF_INCLUDE_TSF_INL
@ -2149,3 +2159,5 @@ TSFDEF float tsf_channel_get_tuning(tsf* f, int channel)
#endif
#endif //TSF_IMPLEMENTATION
#endif // ! ESP32

View File

@ -0,0 +1,35 @@
---
Language: Cpp
BasedOnStyle: Google
AlignTrailingComments: false
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
# A separate 'Other libraries' grouping is added before libwebm's headers for
# gtest and gmock includes. This is based on the suggested grouping in the
# Google C++ Style Guide:
# https://google.github.io/styleguide/cppguide.html#Names_and_Order_of_Includes
# The other categories come from `clang-format-14 --dump-config --style=Google`.
# See the clang-format documentation for more information on this option:
# https://clang.llvm.org/docs/ClangFormatStyleOptions.html#includecategories
IncludeCategories:
- Regex: '^<ext/.*\.h>'
Priority: 2
SortPriority: 0
CaseSensitive: false
- Regex: '^<.*\.h>'
Priority: 1
SortPriority: 0
CaseSensitive: false
- Regex: '^<.*'
Priority: 2
SortPriority: 0
CaseSensitive: false
- Regex: '^((<|")(gtest|gmock)/)'
Priority: 3
SortPriority: 0
CaseSensitive: false
- Regex: '.*'
Priority: 4
SortPriority: 0
CaseSensitive: false

View File

@ -0,0 +1,6 @@
*.sln eol=crlf
*.vcproj eol=crlf
*.vsprops eol=crlf
*.vcxproj eol=crlf
*.mkv -text -diff
*.webm -text -diff

View File

@ -0,0 +1,36 @@
*.MKV
*.a
*.cmake
*.d
*.exe
*.mkv
*.ncb
*.o
*.opensdf
*.sdf
*.so*
*.suo
*.swp
*.user
*~
.vscode
/*.webm
CMakeCache.txt
CMakeFiles
Debug
Makefile
Release
core
dumpvtt
ipch
mkvmuxer_sample
mkvmuxer_tests
mkvparser_sample
mkvparser_tests
vp9_header_parser_tests
vp9_level_stats_tests
vttdemux
webm2pes
webm2pes_tests
webm2ts
webm_info

View File

@ -0,0 +1,6 @@
Hui Su <huisu@google.com>
Matthew Heaney <matthewjheaney@google.com>
Neil Birkbeck <birkbeck@google.com>
Patrik Carlsson <patrik2.carlsson@sonymobile.com>
Roberto Alanis Baez <alanisbaez@google.com>
Tom Finegan <tomfinegan@google.com> <tomfinegan@chromium.org>

View File

@ -0,0 +1,441 @@
# This Pylint rcfile contains a best-effort configuration to uphold the
# best-practices and style described in the Google Python style guide:
# https://google.github.io/styleguide/pyguide.html
#
# Its canonical open-source location is:
# https://google.github.io/styleguide/pylintrc
[MASTER]
# Files or directories to be skipped. They should be base names, not paths.
ignore=third_party
# Files or directories matching the regex patterns are skipped. The regex
# matches against base names, not paths.
ignore-patterns=
# Pickle collected data for later comparisons.
persistent=no
# List of plugins (as comma separated values of python modules names) to load,
# usually to register additional checkers.
load-plugins=
# Use multiple processes to speed up Pylint.
jobs=4
# Allow loading of arbitrary C extensions. Extensions are imported into the
# active Python interpreter and may run arbitrary code.
unsafe-load-any-extension=no
[MESSAGES CONTROL]
# Only show warnings with the listed confidence levels. Leave empty to show
# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED
confidence=
# Enable the message, report, category or checker with the given id(s). You can
# either give multiple identifier separated by comma (,) or put this option
# multiple time (only on the command line, not in the configuration file where
# it should appear only once). See also the "--disable" option for examples.
#enable=
# Disable the message, report, category or checker with the given id(s). You
# can either give multiple identifiers separated by comma (,) or put this
# option multiple times (only on the command line, not in the configuration
# file where it should appear only once).You can also use "--disable=all" to
# disable everything first and then reenable specific checks. For example, if
# you want to run only the similarities checker, you can use "--disable=all
# --enable=similarities". If you want to run only the classes checker, but have
# no Warning level messages displayed, use"--disable=all --enable=classes
# --disable=W"
disable=abstract-method,
apply-builtin,
arguments-differ,
attribute-defined-outside-init,
backtick,
bad-option-value,
basestring-builtin,
buffer-builtin,
c-extension-no-member,
consider-using-enumerate,
cmp-builtin,
cmp-method,
coerce-builtin,
coerce-method,
delslice-method,
div-method,
duplicate-code,
eq-without-hash,
execfile-builtin,
file-builtin,
filter-builtin-not-iterating,
fixme,
getslice-method,
global-statement,
hex-method,
idiv-method,
implicit-str-concat-in-sequence,
import-error,
import-self,
import-star-module-level,
inconsistent-return-statements,
input-builtin,
intern-builtin,
invalid-str-codec,
locally-disabled,
long-builtin,
long-suffix,
map-builtin-not-iterating,
misplaced-comparison-constant,
missing-function-docstring,
metaclass-assignment,
next-method-called,
next-method-defined,
no-absolute-import,
no-else-break,
no-else-continue,
no-else-raise,
no-else-return,
no-init, # added
no-member,
no-name-in-module,
no-self-use,
nonzero-method,
oct-method,
old-division,
old-ne-operator,
old-octal-literal,
old-raise-syntax,
parameter-unpacking,
print-statement,
raising-string,
range-builtin-not-iterating,
raw_input-builtin,
rdiv-method,
reduce-builtin,
relative-import,
reload-builtin,
round-builtin,
setslice-method,
signature-differs,
standarderror-builtin,
suppressed-message,
sys-max-int,
too-few-public-methods,
too-many-ancestors,
too-many-arguments,
too-many-boolean-expressions,
too-many-branches,
too-many-instance-attributes,
too-many-locals,
too-many-nested-blocks,
too-many-public-methods,
too-many-return-statements,
too-many-statements,
trailing-newlines,
unichr-builtin,
unicode-builtin,
unnecessary-pass,
unpacking-in-except,
useless-else-on-loop,
useless-object-inheritance,
useless-suppression,
using-cmp-argument,
wrong-import-order,
xrange-builtin,
zip-builtin-not-iterating,
[REPORTS]
# Set the output format. Available formats are text, parseable, colorized, msvs
# (visual studio) and html. You can also give a reporter class, eg
# mypackage.mymodule.MyReporterClass.
output-format=text
# Put messages in a separate file for each module / package specified on the
# command line instead of printing them on stdout. Reports (if any) will be
# written in a file name "pylint_global.[txt|html]". This option is deprecated
# and it will be removed in Pylint 2.0.
files-output=no
# Tells whether to display a full report or only the messages
reports=no
# Python expression which should return a note less than 10 (10 is the highest
# note). You have access to the variables errors warning, statement which
# respectively contain the number of errors / warnings messages and the total
# number of statements analyzed. This is used by the global evaluation report
# (RP0004).
evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
# Template used to display messages. This is a python new-style format string
# used to format the message information. See doc for all details
#msg-template=
[BASIC]
# Good variable names which should always be accepted, separated by a comma
good-names=main,_,PRESUBMIT
# Bad variable names which should always be refused, separated by a comma
bad-names=
# Colon-delimited sets of names that determine each other's naming style when
# the name regexes allow several styles.
name-group=
# Include a hint for the correct naming format with invalid-name
include-naming-hint=no
# List of decorators that produce properties, such as abc.abstractproperty. Add
# to this list to register other decorators that produce valid properties.
property-classes=abc.abstractproperty,cached_property.cached_property,cached_property.threaded_cached_property,cached_property.cached_property_with_ttl,cached_property.threaded_cached_property_with_ttl
# Regular expression matching correct function names
function-rgx=^(?:(?P<exempt>setUp|tearDown|setUpModule|tearDownModule)|(?P<camel_case>_?[A-Z][a-zA-Z0-9]*)|(?P<snake_case>_?[a-z][a-z0-9_]*))$
# Regular expression matching correct variable names
variable-rgx=^[a-z][a-z0-9_]*$
# Regular expression matching correct constant names
const-rgx=^(_?[A-Z][A-Z0-9_]*|__[a-z0-9_]+__|_?[a-z][a-z0-9_]*)$
# Regular expression matching correct attribute names
attr-rgx=^_{0,2}[a-z][a-z0-9_]*$
# Regular expression matching correct argument names
argument-rgx=^[a-z][a-z0-9_]*$
# Regular expression matching correct class attribute names
class-attribute-rgx=^(_?[A-Z][A-Z0-9_]*|__[a-z0-9_]+__|_?[a-z][a-z0-9_]*)$
# Regular expression matching correct inline iteration names
inlinevar-rgx=^[a-z][a-z0-9_]*$
# Regular expression matching correct class names
class-rgx=^_?[A-Z][a-zA-Z0-9]*$
# Regular expression matching correct module names
module-rgx=^(_?[a-z][a-z0-9_]*|__init__)$
# Regular expression matching correct method names
method-rgx=(?x)^(?:(?P<exempt>_[a-z0-9_]+__|runTest|setUp|tearDown|setUpTestCase|tearDownTestCase|setupSelf|tearDownClass|setUpClass|(test|assert)_*[A-Z0-9][a-zA-Z0-9_]*|next)|(?P<camel_case>_{0,2}[A-Z][a-zA-Z0-9_]*)|(?P<snake_case>_{0,2}[a-z][a-z0-9_]*))$
# Regular expression which should only match function or class names that do
# not require a docstring.
no-docstring-rgx=(__.*__|main|test.*|.*test|.*Test)$
# Minimum line length for functions/classes that require docstrings, shorter
# ones are exempt.
docstring-min-length=10
[TYPECHECK]
# List of decorators that produce context managers, such as
# contextlib.contextmanager. Add to this list to register other decorators that
# produce valid context managers.
contextmanager-decorators=contextlib.contextmanager,contextlib2.contextmanager
# Tells whether missing members accessed in mixin class should be ignored. A
# mixin class is detected if its name ends with "mixin" (case insensitive).
ignore-mixin-members=yes
# List of module names for which member attributes should not be checked
# (useful for modules/projects where namespaces are manipulated during runtime
# and thus existing member attributes cannot be deduced by static analysis. It
# supports qualified module names, as well as Unix pattern matching.
ignored-modules=
# List of class names for which member attributes should not be checked (useful
# for classes with dynamically set attributes). This supports the use of
# qualified names.
ignored-classes=optparse.Values,thread._local,_thread._local
# List of members which are set dynamically and missed by pylint inference
# system, and so shouldn't trigger E1101 when accessed. Python regular
# expressions are accepted.
generated-members=
[FORMAT]
# Maximum number of characters on a single line.
max-line-length=80
# TODO(https://github.com/PyCQA/pylint/issues/3352): Direct pylint to exempt
# lines made too long by directives to pytype.
# Regexp for a line that is allowed to be longer than the limit.
ignore-long-lines=(?x)(
^\s*(\#\ )?<?https?://\S+>?$|
^\s*(from\s+\S+\s+)?import\s+.+$)
# Allow the body of an if to be on the same line as the test if there is no
# else.
single-line-if-stmt=yes
# List of optional constructs for which whitespace checking is disabled. `dict-
# separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}.
# `trailing-comma` allows a space between comma and closing bracket: (a, ).
# `empty-line` allows space-only lines.
no-space-check=
# Maximum number of lines in a module
max-module-lines=99999
# String used as indentation unit. The internal Google style guide mandates 2
# spaces. Google's externaly-published style guide says 4, consistent with
# PEP 8. Here, we use 2 spaces, for conformity with many open-sourced Google
# projects (like TensorFlow).
indent-string=' '
# Number of spaces of indent required inside a hanging or continued line.
indent-after-paren=4
# Expected format of line ending, e.g. empty (any line ending), LF or CRLF.
expected-line-ending-format=
[MISCELLANEOUS]
# List of note tags to take in consideration, separated by a comma.
notes=TODO
[STRING]
# This flag controls whether inconsistent-quotes generates a warning when the
# character used as a quote delimiter is used inconsistently within a module.
check-quote-consistency=yes
[VARIABLES]
# Tells whether we should check for unused import in __init__ files.
init-import=no
# A regular expression matching the name of dummy variables (i.e. expectedly
# not used).
dummy-variables-rgx=^\*{0,2}(_$|unused_|dummy_)
# List of additional names supposed to be defined in builtins. Remember that
# you should avoid to define new builtins when possible.
additional-builtins=
# List of strings which can identify a callback function by name. A callback
# name must start or end with one of those strings.
callbacks=cb_,_cb
# List of qualified module names which can have objects that can redefine
# builtins.
redefining-builtins-modules=six,six.moves,past.builtins,future.builtins,functools
[LOGGING]
# Logging modules to check that the string format arguments are in logging
# function parameter format
logging-modules=logging,absl.logging,tensorflow.io.logging
[SIMILARITIES]
# Minimum lines number of a similarity.
min-similarity-lines=4
# Ignore comments when computing similarities.
ignore-comments=yes
# Ignore docstrings when computing similarities.
ignore-docstrings=yes
# Ignore imports when computing similarities.
ignore-imports=no
[SPELLING]
# Spelling dictionary name. Available dictionaries: none. To make it working
# install python-enchant package.
spelling-dict=
# List of comma separated words that should not be checked.
spelling-ignore-words=
# A path to a file that contains private dictionary; one word per line.
spelling-private-dict-file=
# Tells whether to store unknown words to indicated private dictionary in
# --spelling-private-dict-file option instead of raising a message.
spelling-store-unknown-words=no
[IMPORTS]
# Deprecated modules which should not be used, separated by a comma
deprecated-modules=regsub,
TERMIOS,
Bastion,
rexec,
sets
# Create a graph of every (i.e. internal and external) dependencies in the
# given file (report RP0402 must not be disabled)
import-graph=
# Create a graph of external dependencies in the given file (report RP0402 must
# not be disabled)
ext-import-graph=
# Create a graph of internal dependencies in the given file (report RP0402 must
# not be disabled)
int-import-graph=
# Force import order to recognize a module as part of the standard
# compatibility libraries.
known-standard-library=
# Force import order to recognize a module as part of a third party library.
known-third-party=enchant, absl
# Analyse import fallback blocks. This can be used to support both Python 2 and
# 3 compatible code, which means that the block might have code that exists
# only in one or another interpreter, leading to false positives when analysed.
analyse-fallback-blocks=no
[CLASSES]
# List of method names used to declare (i.e. assign) instance attributes.
defining-attr-methods=__init__,
__new__,
setUp
# List of member names, which should be excluded from the protected access
# warning.
exclude-protected=_asdict,
_fields,
_replace,
_source,
_make
# List of valid names for the first argument in a class method.
valid-classmethod-first-arg=cls,
class_
# List of valid names for the first argument in a metaclass class method.
valid-metaclass-classmethod-first-arg=mcs
[EXCEPTIONS]
# Exceptions that will emit a warning when being caught. Defaults to
# "Exception"
overgeneral-exceptions=StandardError,
Exception,
BaseException

View File

@ -0,0 +1,5 @@
# Names should be added to this file like so:
# Name or Organization <email address>
Google Inc.
Elijah Cirioli <eli.cirioli@gmail.com>

View File

@ -0,0 +1,41 @@
# How to Contribute
We'd love to accept your patches and contributions to this project. There are
just a few small guidelines you need to follow.
## Contributor License Agreement
Contributions to this project must be accompanied by a Contributor License
Agreement. You (or your employer) retain the copyright to your contribution;
this simply gives us permission to use and redistribute your contributions as
part of the project. Head over to <https://cla.developers.google.com/> to see
your current agreements on file or to sign a new one.
You generally only need to submit a CLA once, so if you've already submitted one
(even if it was for a different project), you probably don't need to do it
again.
## Code reviews
All submissions, including submissions by project members, require review. We
use a [Gerrit](https://www.gerritcodereview.com) instance hosted at
https://chromium-review.googlesource.com for this purpose. See the
[WebM Project page](https://www.webmproject.org/code/contribute/submitting-patches/)
for additional details.
## Code Style
The C++ code style is based on the
[Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html) and
`clang-format --style=Google`. `clang-format -i --style=file` can be used to
format individual files, it will use the settings from `.clang-format`.
CMake files are formatted with
[cmake-format](https://cmake-format.readthedocs.io/en/latest/). `cmake-format
-i` can be used to format individual files, it will use the settings from
`.cmake-format.py`.
## Community Guidelines
This project follows
[Google's Open Source Community Guidelines](https://opensource.google.com/conduct/).

View File

@ -0,0 +1,30 @@
Copyright (c) 2010, Google Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of Google nor the names of its contributors may
be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -0,0 +1,23 @@
Additional IP Rights Grant (Patents)
------------------------------------
"These implementations" means the copyrightable works that implement the WebM
codecs distributed by Google as part of the WebM Project.
Google hereby grants to you a perpetual, worldwide, non-exclusive, no-charge,
royalty-free, irrevocable (except as stated in this section) patent license to
make, have made, use, offer to sell, sell, import, transfer, and otherwise
run, modify and propagate the contents of these implementations of WebM, where
such license applies only to those patent claims, both currently owned by
Google and acquired in the future, licensable by Google that are necessarily
infringed by these implementations of WebM. This grant does not include claims
that would be infringed only as a consequence of further modification of these
implementations. If you or your agent or exclusive licensee institute or order
or agree to the institution of patent litigation or any other patent
enforcement activity against any entity (including a cross-claim or
counterclaim in a lawsuit) alleging that any of these implementations of WebM
or any code incorporated within any of these implementations of WebM
constitute direct or contributory patent infringement, or inducement of
patent infringement, then any patent rights granted to you under this License
for these implementations of WebM shall terminate as of the date such
litigation is filed.

View File

@ -0,0 +1,202 @@
# Copyright (c) 2021, Google Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
#
# * Neither the name of Google nor the names of its contributors may
# be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
"""Top-level presubmit script for libwebm.
See https://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts for
details on the presubmit API built into depot_tools.
"""
import re
import subprocess2
USE_PYTHON3 = True
_BASH_INDENTATION = "2"
_GIT_COMMIT_SUBJECT_LENGTH = 65
_INCLUDE_BASH_FILES_ONLY = [r".*\.sh$"]
_INCLUDE_SOURCE_FILES_ONLY = [r".*\.(c|cc|[hc]pp|h)$"]
_LIBWEBM_MAX_LINE_LENGTH = 80
def _CheckCommitSubjectLength(input_api, output_api):
"""Ensures commit's subject length is no longer than 65 chars."""
name = "git-commit subject"
cmd = ["git", "log", "-1", "--pretty=%s"]
start = input_api.time.time()
proc = subprocess2.Popen(
cmd,
stderr=subprocess2.PIPE,
stdout=subprocess2.PIPE,
universal_newlines=True)
stdout, _ = proc.communicate()
duration = input_api.time.time() - start
if not re.match(r"^Revert",
stdout) and (len(stdout) - 1) > _GIT_COMMIT_SUBJECT_LENGTH:
failure_msg = (
"The commit subject: %s is too long (%d chars)\n"
"Try to keep this to 50 or less (up to 65 is permitted for "
"non-reverts).\n"
"https://www.git-scm.com/book/en/v2/Distributed-Git-Contributing-to-a-"
"Project#_commit_guidelines") % (stdout, len(stdout) - 1)
return output_api.PresubmitError("%s\n (%4.2fs) failed\n%s" %
(name, duration, failure_msg))
return output_api.PresubmitResult("%s\n (%4.2fs) success" % (name, duration))
def _GetFilesToSkip(input_api):
"""Skips libwebm-specific files."""
return list(input_api.DEFAULT_FILES_TO_SKIP) + [
r"\.pylintrc$",
]
def _CheckChangeLintsClean(input_api, output_api):
"""Makes sure that libwebm/ code is cpplint clean."""
sources = lambda x: input_api.FilterSourceFile(
x, files_to_check=_INCLUDE_SOURCE_FILES_ONLY, files_to_skip=None)
return input_api.canned_checks.CheckChangeLintsClean(input_api, output_api,
sources)
def _RunShellCheckCmd(input_api, output_api, bash_file):
"""shellcheck command wrapper."""
cmd = ["shellcheck", "-x", "-oall", "-sbash", bash_file]
name = "Check %s file." % bash_file
start = input_api.time.time()
output, rc = subprocess2.communicate(
cmd, stdout=None, stderr=subprocess2.PIPE, universal_newlines=True)
duration = input_api.time.time() - start
if rc == 0:
return output_api.PresubmitResult("%s\n%s (%4.2fs)\n" %
(name, " ".join(cmd), duration))
return output_api.PresubmitError("%s\n%s (%4.2fs) failed\n%s" %
(name, " ".join(cmd), duration, output[1]))
def _RunShfmtCheckCmd(input_api, output_api, bash_file):
"""shfmt command wrapper."""
cmd = [
"shfmt", "-i", _BASH_INDENTATION, "-bn", "-ci", "-sr", "-kp", "-d",
bash_file
]
name = "Check %s file." % bash_file
start = input_api.time.time()
output, rc = subprocess2.communicate(
cmd, stdout=None, stderr=subprocess2.PIPE, universal_newlines=True)
duration = input_api.time.time() - start
if rc == 0:
return output_api.PresubmitResult("%s\n%s (%4.2fs)\n" %
(name, " ".join(cmd), duration))
return output_api.PresubmitError("%s\n%s (%4.2fs) failed\n%s" %
(name, " ".join(cmd), duration, output[1]))
def _RunCmdOnCheckedFiles(input_api, output_api, run_cmd, files_to_check):
"""Ensure that libwebm/ files are clean."""
file_filter = lambda x: input_api.FilterSourceFile(
x, files_to_check=files_to_check, files_to_skip=None)
affected_files = input_api.change.AffectedFiles(file_filter=file_filter)
results = [
run_cmd(input_api, output_api, f.AbsoluteLocalPath())
for f in affected_files
]
return results
def _CommonChecks(input_api, output_api):
results = []
results.extend(
input_api.canned_checks.CheckChangeHasNoCrAndHasOnlyOneEol(
input_api, output_api))
results.extend(
input_api.canned_checks.CheckChangeHasNoTabs(input_api, output_api))
results.extend(
input_api.canned_checks.CheckChangeHasNoStrayWhitespace(
input_api, output_api))
results.append(_CheckCommitSubjectLength(input_api, output_api))
source_file_filter = lambda x: input_api.FilterSourceFile(
x, files_to_skip=_GetFilesToSkip(input_api))
results.extend(
input_api.canned_checks.CheckLongLines(
input_api,
output_api,
maxlen=_LIBWEBM_MAX_LINE_LENGTH,
source_file_filter=source_file_filter))
results.extend(
input_api.canned_checks.CheckPatchFormatted(
input_api,
output_api,
check_clang_format=True,
check_python=True,
result_factory=output_api.PresubmitError))
results.extend(_CheckChangeLintsClean(input_api, output_api))
# Run pylint.
results.extend(
input_api.canned_checks.RunPylint(
input_api,
output_api,
files_to_skip=_GetFilesToSkip(input_api),
pylintrc=".pylintrc",
version="2.7"))
# Binaries shellcheck and shfmt are not installed in depot_tools.
# Installation is needed
try:
subprocess2.communicate(["shellcheck", "--version"])
results.extend(
_RunCmdOnCheckedFiles(input_api, output_api, _RunShellCheckCmd,
_INCLUDE_BASH_FILES_ONLY))
print("shfmt")
subprocess2.communicate(["shfmt", "-version"])
results.extend(
_RunCmdOnCheckedFiles(input_api, output_api, _RunShfmtCheckCmd,
_INCLUDE_BASH_FILES_ONLY))
except OSError as os_error:
results.append(
output_api.PresubmitPromptWarning(
"%s\nPlease install missing binaries locally." % os_error.args[0]))
return results
def CheckChangeOnUpload(input_api, output_api):
results = []
results.extend(_CommonChecks(input_api, output_api))
return results
def CheckChangeOnCommit(input_api, output_api):
results = []
results.extend(_CommonChecks(input_api, output_api))
return results

View File

@ -0,0 +1,148 @@
Building Libwebm
To build libwebm you must first create project files. To do this run cmake
and pass it the path to your libwebm repo.
Makefile.unix can be used as a fallback on systems that cmake does not
support.
CMake Basics
To generate project/make files for the default toolchain on your system simply
run cmake with the path to the libwebm repo:
$ cmake path/to/libwebm
On Windows the above command will produce Visual Studio project files for the
newest Visual Studio detected on the system. On Mac OS X and Linux systems, the
above command will produce a makefile.
To control what types of projects are generated the -G parameter is added to
the cmake command line. This argument must be followed by the name of a
generator. Running cmake with the --help argument will list the available
generators for your system.
On Mac OS X you would run the following command to generate Xcode projects:
$ cmake path/to/libwebm -G Xcode
On a Windows box you would run the following command to generate Visual Studio
2013 projects:
$ cmake path/to/libwebm -G "Visual Studio 12"
To generate 64-bit Windows Visual Studio 2013 projects:
$ cmake path/to/libwebm "Visual Studio 12 Win64"
CMake Makefiles: Debugging and Optimization
Unlike Visual Studio and Xcode projects, the build configuration for make builds
is controlled when you run cmake. The following examples demonstrate various
build configurations.
Omitting the build type produces makefiles that use build flags containing
neither optimization nor debug flags:
$ cmake path/to/libwebm
A makefile using release (optimized) flags is produced like this:
$ cmake path/to/libwebm -DCMAKE_BUILD_TYPE=release
A release build with debug info can be produced as well:
$ cmake path/to/libwebm -DCMAKE_BUILD_TYPE=relwithdebinfo
And your standard debug build will be produced using:
$ cmake path/to/libwebm -DCMAKE_BUILD_TYPE=debug
Tests
To enable libwebm tests add -DENABLE_TESTS=ON CMake generation command line. For
example:
$ cmake path/to/libwebm -G Xcode -DENABLE_TESTS=ON
Libwebm tests depend on googletest. By default googletest is expected to be a
sibling directory of the Libwebm repository. To change that, update your CMake
command to be similar to the following:
$ cmake path/to/libwebm -G Xcode -DENABLE_TESTS=ON \
-DGTEST_SRC_DIR=/path/to/googletest
The tests rely upon the LIBWEBM_TEST_DATA_PATH environment variable to locate
test input. The following example demonstrates running the muxer tests from the
build directory:
$ LIBWEBM_TEST_DATA_PATH=path/to/libwebm/testing/testdata ./mkvmuxer_tests
Note: Libwebm Googletest integration was built with googletest from
https://github.com/google/googletest.git at git revision
ddb8012eb48bc203aa93dcc2b22c1db516302b29.
CMake Include-what-you-use integration
Include-what-you-use is an analysis tool that helps ensure libwebm includes the
C/C++ header files actually in use. To enable the integration support
ENABLE_IWYU must be turned on at cmake run time:
$ cmake path/to/libwebm -G "Unix Makefiles" -DENABLE_IWYU=ON
This adds the iwyu target to the build. To run include-what-you-use:
$ make iwyu
The following requirements must be met for ENABLE_IWYU to enable the iwyu
target:
1. include-what-you-use and iwyu_tool.py must be in your PATH.
2. A python interpreter must be on the system and available to CMake.
The values of the following variables are used to determine if the requirements
have been met. Values to the right of the equals sign are what a successful run
might look like:
iwyu_path=/path/to/iwyu_tool.py
iwyu_tool_path=/path/to/include-what-you-use
PYTHONINTERP_FOUND=TRUE
An empty PYTHONINTERP_FOUND, or iwyu_path/iwyu_tool_path suffixed with NOTFOUND
are failures.
For Include-what-you-use setup instructions, see:
https://github.com/include-what-you-use/include-what-you-use/blob/master/docs/InstructionsForUsers.md
If, when building the iwyu target, compile errors reporting failures loading
standard include files occur, one solution can be found here:
https://github.com/include-what-you-use/include-what-you-use/issues/100
CMake cross compile
To cross compile libwebm for Windows using mingw-w64 run cmake with the
following arguments:
$ cmake -DCMAKE_TOOLCHAIN_FILE=path/to/libwebm/build/mingw-w64_toolchain.cmake \
path/to/libwebm
Note1: As of this writing googletest will not build via mingw-w64 without
disabling pthreads.
googletest hash: d225acc90bc3a8c420a9bcd1f033033c1ccd7fe0
To build with tests when using mingw-w64 use the following arguments when
running CMake:
$ cmake -DCMAKE_TOOLCHAIN_FILE=path/to/libwebm/build/mingw-w64_toolchain.cmake \
-DENABLE_TESTS=ON -Dgtest_disable_pthreads=ON path/to/libwebm
Note2: i686-w64-mingw32 is the default compiler. This can be controlled using
the MINGW_PREFIX variable:
$ cmake -DCMAKE_TOOLCHAIN_FILE=path/to/libwebm/build/mingw-w64_toolchain.cmake \
-DMINGW_PREFIX=x86_64-w64-mingw32 path/to/libwebm
Bug reports
Bug reports can be filed in the libwebm issue tracker:
https://issues.webmproject.org/.
For security reports, select 'Security report' from the Template dropdown.

View File

@ -0,0 +1,4 @@
# This file is used by git cl to get repository specific information.
GERRIT_HOST: True
CODE_REVIEW_SERVER: chromium-review.googlesource.com
GERRIT_SQUASH_UPLOADS: False

View File

@ -0,0 +1,193 @@
// Copyright (c) 2012 The WebM project authors. All Rights Reserved.
//
// Use of this source code is governed by a BSD-style license
// that can be found in the LICENSE file in the root of the source
// tree. An additional intellectual property rights grant can be found
// in the file PATENTS. All contributing project authors may
// be found in the AUTHORS file in the root of the source tree.
#ifndef COMMON_WEBMIDS_H_
#define COMMON_WEBMIDS_H_
namespace libwebm {
enum MkvId {
kMkvEBML = 0x1A45DFA3,
kMkvEBMLVersion = 0x4286,
kMkvEBMLReadVersion = 0x42F7,
kMkvEBMLMaxIDLength = 0x42F2,
kMkvEBMLMaxSizeLength = 0x42F3,
kMkvDocType = 0x4282,
kMkvDocTypeVersion = 0x4287,
kMkvDocTypeReadVersion = 0x4285,
kMkvVoid = 0xEC,
kMkvSignatureSlot = 0x1B538667,
kMkvSignatureAlgo = 0x7E8A,
kMkvSignatureHash = 0x7E9A,
kMkvSignaturePublicKey = 0x7EA5,
kMkvSignature = 0x7EB5,
kMkvSignatureElements = 0x7E5B,
kMkvSignatureElementList = 0x7E7B,
kMkvSignedElement = 0x6532,
// segment
kMkvSegment = 0x18538067,
// Meta Seek Information
kMkvSeekHead = 0x114D9B74,
kMkvSeek = 0x4DBB,
kMkvSeekID = 0x53AB,
kMkvSeekPosition = 0x53AC,
// Segment Information
kMkvInfo = 0x1549A966,
kMkvTimecodeScale = 0x2AD7B1,
kMkvDuration = 0x4489,
kMkvDateUTC = 0x4461,
kMkvTitle = 0x7BA9,
kMkvMuxingApp = 0x4D80,
kMkvWritingApp = 0x5741,
// Cluster
kMkvCluster = 0x1F43B675,
kMkvTimecode = 0xE7,
kMkvPrevSize = 0xAB,
kMkvBlockGroup = 0xA0,
kMkvBlock = 0xA1,
kMkvBlockDuration = 0x9B,
kMkvReferenceBlock = 0xFB,
kMkvLaceNumber = 0xCC,
kMkvSimpleBlock = 0xA3,
kMkvBlockAdditions = 0x75A1,
kMkvBlockMore = 0xA6,
kMkvBlockAddID = 0xEE,
kMkvBlockAdditional = 0xA5,
kMkvDiscardPadding = 0x75A2,
// Track
kMkvTracks = 0x1654AE6B,
kMkvTrackEntry = 0xAE,
kMkvTrackNumber = 0xD7,
kMkvTrackUID = 0x73C5,
kMkvTrackType = 0x83,
kMkvFlagEnabled = 0xB9,
kMkvFlagDefault = 0x88,
kMkvFlagForced = 0x55AA,
kMkvFlagLacing = 0x9C,
kMkvDefaultDuration = 0x23E383,
kMkvMaxBlockAdditionID = 0x55EE,
kMkvName = 0x536E,
kMkvLanguage = 0x22B59C,
kMkvCodecID = 0x86,
kMkvCodecPrivate = 0x63A2,
kMkvCodecName = 0x258688,
kMkvCodecDelay = 0x56AA,
kMkvSeekPreRoll = 0x56BB,
// video
kMkvVideo = 0xE0,
kMkvFlagInterlaced = 0x9A,
kMkvStereoMode = 0x53B8,
kMkvAlphaMode = 0x53C0,
kMkvPixelWidth = 0xB0,
kMkvPixelHeight = 0xBA,
kMkvPixelCropBottom = 0x54AA,
kMkvPixelCropTop = 0x54BB,
kMkvPixelCropLeft = 0x54CC,
kMkvPixelCropRight = 0x54DD,
kMkvDisplayWidth = 0x54B0,
kMkvDisplayHeight = 0x54BA,
kMkvDisplayUnit = 0x54B2,
kMkvAspectRatioType = 0x54B3,
kMkvColourSpace = 0x2EB524,
kMkvFrameRate = 0x2383E3,
// end video
// colour
kMkvColour = 0x55B0,
kMkvMatrixCoefficients = 0x55B1,
kMkvBitsPerChannel = 0x55B2,
kMkvChromaSubsamplingHorz = 0x55B3,
kMkvChromaSubsamplingVert = 0x55B4,
kMkvCbSubsamplingHorz = 0x55B5,
kMkvCbSubsamplingVert = 0x55B6,
kMkvChromaSitingHorz = 0x55B7,
kMkvChromaSitingVert = 0x55B8,
kMkvRange = 0x55B9,
kMkvTransferCharacteristics = 0x55BA,
kMkvPrimaries = 0x55BB,
kMkvMaxCLL = 0x55BC,
kMkvMaxFALL = 0x55BD,
// mastering metadata
kMkvMasteringMetadata = 0x55D0,
kMkvPrimaryRChromaticityX = 0x55D1,
kMkvPrimaryRChromaticityY = 0x55D2,
kMkvPrimaryGChromaticityX = 0x55D3,
kMkvPrimaryGChromaticityY = 0x55D4,
kMkvPrimaryBChromaticityX = 0x55D5,
kMkvPrimaryBChromaticityY = 0x55D6,
kMkvWhitePointChromaticityX = 0x55D7,
kMkvWhitePointChromaticityY = 0x55D8,
kMkvLuminanceMax = 0x55D9,
kMkvLuminanceMin = 0x55DA,
// end mastering metadata
// end colour
// projection
kMkvProjection = 0x7670,
kMkvProjectionType = 0x7671,
kMkvProjectionPrivate = 0x7672,
kMkvProjectionPoseYaw = 0x7673,
kMkvProjectionPosePitch = 0x7674,
kMkvProjectionPoseRoll = 0x7675,
// end projection
// audio
kMkvAudio = 0xE1,
kMkvSamplingFrequency = 0xB5,
kMkvOutputSamplingFrequency = 0x78B5,
kMkvChannels = 0x9F,
kMkvBitDepth = 0x6264,
// end audio
// ContentEncodings
kMkvContentEncodings = 0x6D80,
kMkvContentEncoding = 0x6240,
kMkvContentEncodingOrder = 0x5031,
kMkvContentEncodingScope = 0x5032,
kMkvContentEncodingType = 0x5033,
kMkvContentCompression = 0x5034,
kMkvContentCompAlgo = 0x4254,
kMkvContentCompSettings = 0x4255,
kMkvContentEncryption = 0x5035,
kMkvContentEncAlgo = 0x47E1,
kMkvContentEncKeyID = 0x47E2,
kMkvContentSignature = 0x47E3,
kMkvContentSigKeyID = 0x47E4,
kMkvContentSigAlgo = 0x47E5,
kMkvContentSigHashAlgo = 0x47E6,
kMkvContentEncAESSettings = 0x47E7,
kMkvAESSettingsCipherMode = 0x47E8,
kMkvAESSettingsCipherInitData = 0x47E9,
// end ContentEncodings
// Cueing Data
kMkvCues = 0x1C53BB6B,
kMkvCuePoint = 0xBB,
kMkvCueTime = 0xB3,
kMkvCueTrackPositions = 0xB7,
kMkvCueTrack = 0xF7,
kMkvCueClusterPosition = 0xF1,
kMkvCueBlockNumber = 0x5378,
// Chapters
kMkvChapters = 0x1043A770,
kMkvEditionEntry = 0x45B9,
kMkvChapterAtom = 0xB6,
kMkvChapterUID = 0x73C4,
kMkvChapterStringUID = 0x5654,
kMkvChapterTimeStart = 0x91,
kMkvChapterTimeEnd = 0x92,
kMkvChapterDisplay = 0x80,
kMkvChapString = 0x85,
kMkvChapLanguage = 0x437C,
kMkvChapCountry = 0x437E,
// Tags
kMkvTags = 0x1254C367,
kMkvTag = 0x7373,
kMkvSimpleTag = 0x67C8,
kMkvTagName = 0x45A3,
kMkvTagString = 0x4487
};
} // namespace libwebm
#endif // COMMON_WEBMIDS_H_

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,28 @@
// Copyright (c) 2012 The WebM project authors. All Rights Reserved.
//
// Use of this source code is governed by a BSD-style license
// that can be found in the LICENSE file in the root of the source
// tree. An additional intellectual property rights grant can be found
// in the file PATENTS. All contributing project authors may
// be found in the AUTHORS file in the root of the source tree.
#ifndef MKVMUXER_MKVMUXERTYPES_H_
#define MKVMUXER_MKVMUXERTYPES_H_
namespace mkvmuxer {
typedef unsigned char uint8;
typedef short int16;
typedef int int32;
typedef unsigned int uint32;
typedef long long int64;
typedef unsigned long long uint64;
} // namespace mkvmuxer
// Copied from Chromium basictypes.h
// A macro to disallow the copy constructor and operator= functions
// This should be used in the private: declarations for a class
#define LIBWEBM_DISALLOW_COPY_AND_ASSIGN(TypeName) \
TypeName(const TypeName&); \
void operator=(const TypeName&)
#endif // MKVMUXER_MKVMUXERTYPES_HPP_

View File

@ -0,0 +1,739 @@
// Copyright (c) 2012 The WebM project authors. All Rights Reserved.
//
// Use of this source code is governed by a BSD-style license
// that can be found in the LICENSE file in the root of the source
// tree. An additional intellectual property rights grant can be found
// in the file PATENTS. All contributing project authors may
// be found in the AUTHORS file in the root of the source tree.
#include "mkvmuxerutil.h"
#ifdef ESP32
#ifdef __ANDROID__
#include <fcntl.h>
#include <unistd.h>
#endif
#include <cassert>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <new>
#include "../common/webmids.h"
#include "mkvmuxer.h"
#include "mkvwriter.h"
namespace mkvmuxer {
namespace {
// Date elements are always 8 octets in size.
const int kDateElementSize = 8;
uint64 WriteBlock(IMkvWriter* writer, const Frame* const frame, int64 timecode,
uint64 timecode_scale) {
uint64 block_additional_elem_size = 0;
uint64 block_addid_elem_size = 0;
uint64 block_more_payload_size = 0;
uint64 block_more_elem_size = 0;
uint64 block_additions_payload_size = 0;
uint64 block_additions_elem_size = 0;
if (frame->additional()) {
block_additional_elem_size =
EbmlElementSize(libwebm::kMkvBlockAdditional, frame->additional(),
frame->additional_length());
block_addid_elem_size = EbmlElementSize(
libwebm::kMkvBlockAddID, static_cast<uint64>(frame->add_id()));
block_more_payload_size =
block_addid_elem_size + block_additional_elem_size;
block_more_elem_size =
EbmlMasterElementSize(libwebm::kMkvBlockMore, block_more_payload_size) +
block_more_payload_size;
block_additions_payload_size = block_more_elem_size;
block_additions_elem_size =
EbmlMasterElementSize(libwebm::kMkvBlockAdditions,
block_additions_payload_size) +
block_additions_payload_size;
}
uint64 discard_padding_elem_size = 0;
if (frame->discard_padding() != 0) {
discard_padding_elem_size =
EbmlElementSize(libwebm::kMkvDiscardPadding,
static_cast<int64>(frame->discard_padding()));
}
const uint64 reference_block_timestamp =
frame->reference_block_timestamp() / timecode_scale;
uint64 reference_block_elem_size = 0;
if (!frame->is_key()) {
reference_block_elem_size =
EbmlElementSize(libwebm::kMkvReferenceBlock, reference_block_timestamp);
}
const uint64 duration = frame->duration() / timecode_scale;
uint64 block_duration_elem_size = 0;
if (duration > 0)
block_duration_elem_size =
EbmlElementSize(libwebm::kMkvBlockDuration, duration);
const uint64 block_payload_size = 4 + frame->length();
const uint64 block_elem_size =
EbmlMasterElementSize(libwebm::kMkvBlock, block_payload_size) +
block_payload_size;
const uint64 block_group_payload_size =
block_elem_size + block_additions_elem_size + block_duration_elem_size +
discard_padding_elem_size + reference_block_elem_size;
if (!WriteEbmlMasterElement(writer, libwebm::kMkvBlockGroup,
block_group_payload_size)) {
return 0;
}
if (!WriteEbmlMasterElement(writer, libwebm::kMkvBlock, block_payload_size))
return 0;
if (WriteUInt(writer, frame->track_number()))
return 0;
if (SerializeInt(writer, timecode, 2))
return 0;
// For a Block, flags is always 0.
if (SerializeInt(writer, 0, 1))
return 0;
if (writer->Write(frame->frame(), static_cast<uint32>(frame->length())))
return 0;
if (frame->additional()) {
if (!WriteEbmlMasterElement(writer, libwebm::kMkvBlockAdditions,
block_additions_payload_size)) {
return 0;
}
if (!WriteEbmlMasterElement(writer, libwebm::kMkvBlockMore,
block_more_payload_size))
return 0;
if (!WriteEbmlElement(writer, libwebm::kMkvBlockAddID,
static_cast<uint64>(frame->add_id())))
return 0;
if (!WriteEbmlElement(writer, libwebm::kMkvBlockAdditional,
frame->additional(), frame->additional_length())) {
return 0;
}
}
if (frame->discard_padding() != 0 &&
!WriteEbmlElement(writer, libwebm::kMkvDiscardPadding,
static_cast<int64>(frame->discard_padding()))) {
return false;
}
if (!frame->is_key() && !WriteEbmlElement(writer, libwebm::kMkvReferenceBlock,
reference_block_timestamp)) {
return false;
}
if (duration > 0 &&
!WriteEbmlElement(writer, libwebm::kMkvBlockDuration, duration)) {
return false;
}
return EbmlMasterElementSize(libwebm::kMkvBlockGroup,
block_group_payload_size) +
block_group_payload_size;
}
uint64 WriteSimpleBlock(IMkvWriter* writer, const Frame* const frame,
int64 timecode) {
if (WriteID(writer, libwebm::kMkvSimpleBlock))
return 0;
const int32 size = static_cast<int32>(frame->length()) + 4;
if (WriteUInt(writer, size))
return 0;
if (WriteUInt(writer, static_cast<uint64>(frame->track_number())))
return 0;
if (SerializeInt(writer, timecode, 2))
return 0;
uint64 flags = 0;
if (frame->is_key())
flags |= 0x80;
if (SerializeInt(writer, flags, 1))
return 0;
if (writer->Write(frame->frame(), static_cast<uint32>(frame->length())))
return 0;
return GetUIntSize(libwebm::kMkvSimpleBlock) + GetCodedUIntSize(size) + 4 +
frame->length();
}
} // namespace
int32 GetCodedUIntSize(uint64 value) {
if (value < 0x000000000000007FULL)
return 1;
else if (value < 0x0000000000003FFFULL)
return 2;
else if (value < 0x00000000001FFFFFULL)
return 3;
else if (value < 0x000000000FFFFFFFULL)
return 4;
else if (value < 0x00000007FFFFFFFFULL)
return 5;
else if (value < 0x000003FFFFFFFFFFULL)
return 6;
else if (value < 0x0001FFFFFFFFFFFFULL)
return 7;
return 8;
}
int32 GetUIntSize(uint64 value) {
if (value < 0x0000000000000100ULL)
return 1;
else if (value < 0x0000000000010000ULL)
return 2;
else if (value < 0x0000000001000000ULL)
return 3;
else if (value < 0x0000000100000000ULL)
return 4;
else if (value < 0x0000010000000000ULL)
return 5;
else if (value < 0x0001000000000000ULL)
return 6;
else if (value < 0x0100000000000000ULL)
return 7;
return 8;
}
int32 GetIntSize(int64 value) {
// Doubling the requested value ensures positive values with their high bit
// set are written with 0-padding to avoid flipping the signedness.
const uint64 v = (value < 0) ? value ^ -1LL : value;
return GetUIntSize(2 * v);
}
uint64 EbmlMasterElementSize(uint64 type, uint64 value) {
// Size of EBML ID
int32 ebml_size = GetUIntSize(type);
// Datasize
ebml_size += GetCodedUIntSize(value);
return ebml_size;
}
uint64 EbmlElementSize(uint64 type, int64 value) {
// Size of EBML ID
int32 ebml_size = GetUIntSize(type);
// Datasize
ebml_size += GetIntSize(value);
// Size of Datasize
ebml_size++;
return ebml_size;
}
uint64 EbmlElementSize(uint64 type, uint64 value) {
return EbmlElementSize(type, value, 0);
}
uint64 EbmlElementSize(uint64 type, uint64 value, uint64 fixed_size) {
// Size of EBML ID
uint64 ebml_size = GetUIntSize(type);
// Datasize
ebml_size += (fixed_size > 0) ? fixed_size : GetUIntSize(value);
// Size of Datasize
ebml_size++;
return ebml_size;
}
uint64 EbmlElementSize(uint64 type, float /* value */) {
// Size of EBML ID
uint64 ebml_size = GetUIntSize(type);
// Datasize
ebml_size += sizeof(float);
// Size of Datasize
ebml_size++;
return ebml_size;
}
uint64 EbmlElementSize(uint64 type, const char* value) {
if (!value)
return 0;
// Size of EBML ID
uint64 ebml_size = GetUIntSize(type);
// Datasize
ebml_size += strlen(value);
// Size of Datasize
ebml_size += GetCodedUIntSize(strlen(value));
return ebml_size;
}
uint64 EbmlElementSize(uint64 type, const uint8* value, uint64 size) {
if (!value)
return 0;
// Size of EBML ID
uint64 ebml_size = GetUIntSize(type);
// Datasize
ebml_size += size;
// Size of Datasize
ebml_size += GetCodedUIntSize(size);
return ebml_size;
}
uint64 EbmlDateElementSize(uint64 type) {
// Size of EBML ID
uint64 ebml_size = GetUIntSize(type);
// Datasize
ebml_size += kDateElementSize;
// Size of Datasize
ebml_size++;
return ebml_size;
}
int32 SerializeInt(IMkvWriter* writer, int64 value, int32 size) {
if (!writer || size < 1 || size > 8)
return -1;
for (int32 i = 1; i <= size; ++i) {
const int32 byte_count = size - i;
const int32 bit_count = byte_count * 8;
const int64 bb = value >> bit_count;
const uint8 b = static_cast<uint8>(bb);
const int32 status = writer->Write(&b, 1);
if (status < 0)
return status;
}
return 0;
}
int32 SerializeFloat(IMkvWriter* writer, float f) {
if (!writer)
return -1;
assert(sizeof(uint32) == sizeof(float));
// This union is merely used to avoid a reinterpret_cast from float& to
// uint32& which will result in violation of strict aliasing.
union U32 {
uint32 u32;
float f;
} value;
value.f = f;
for (int32 i = 1; i <= 4; ++i) {
const int32 byte_count = 4 - i;
const int32 bit_count = byte_count * 8;
const uint8 byte = static_cast<uint8>(value.u32 >> bit_count);
const int32 status = writer->Write(&byte, 1);
if (status < 0)
return status;
}
return 0;
}
int32 WriteUInt(IMkvWriter* writer, uint64 value) {
if (!writer)
return -1;
int32 size = GetCodedUIntSize(value);
return WriteUIntSize(writer, value, size);
}
int32 WriteUIntSize(IMkvWriter* writer, uint64 value, int32 size) {
if (!writer || size < 0 || size > 8)
return -1;
if (size > 0) {
const uint64 bit = 1LL << (size * 7);
if (value > (bit - 2))
return -1;
value |= bit;
} else {
size = 1;
int64 bit;
for (;;) {
bit = 1LL << (size * 7);
const uint64 max = bit - 2;
if (value <= max)
break;
++size;
}
if (size > 8)
return false;
value |= bit;
}
return SerializeInt(writer, value, size);
}
int32 WriteID(IMkvWriter* writer, uint64 type) {
if (!writer)
return -1;
writer->ElementStartNotify(type, writer->Position());
const int32 size = GetUIntSize(type);
return SerializeInt(writer, type, size);
}
bool WriteEbmlMasterElement(IMkvWriter* writer, uint64 type, uint64 size) {
if (!writer)
return false;
if (WriteID(writer, type))
return false;
if (WriteUInt(writer, size))
return false;
return true;
}
bool WriteEbmlElement(IMkvWriter* writer, uint64 type, uint64 value) {
return WriteEbmlElement(writer, type, value, 0);
}
bool WriteEbmlElement(IMkvWriter* writer, uint64 type, uint64 value,
uint64 fixed_size) {
if (!writer)
return false;
if (WriteID(writer, type))
return false;
uint64 size = GetUIntSize(value);
if (fixed_size > 0) {
if (size > fixed_size)
return false;
size = fixed_size;
}
if (WriteUInt(writer, size))
return false;
if (SerializeInt(writer, value, static_cast<int32>(size)))
return false;
return true;
}
bool WriteEbmlElement(IMkvWriter* writer, uint64 type, int64 value) {
if (!writer)
return false;
if (WriteID(writer, type))
return 0;
const uint64 size = GetIntSize(value);
if (WriteUInt(writer, size))
return false;
if (SerializeInt(writer, value, static_cast<int32>(size)))
return false;
return true;
}
bool WriteEbmlElement(IMkvWriter* writer, uint64 type, float value) {
if (!writer)
return false;
if (WriteID(writer, type))
return false;
if (WriteUInt(writer, 4))
return false;
if (SerializeFloat(writer, value))
return false;
return true;
}
bool WriteEbmlElement(IMkvWriter* writer, uint64 type, const char* value) {
if (!writer || !value)
return false;
if (WriteID(writer, type))
return false;
const uint64 length = strlen(value);
if (WriteUInt(writer, length))
return false;
if (writer->Write(value, static_cast<uint32>(length)))
return false;
return true;
}
bool WriteEbmlElement(IMkvWriter* writer, uint64 type, const uint8* value,
uint64 size) {
if (!writer || !value || size < 1)
return false;
if (WriteID(writer, type))
return false;
if (WriteUInt(writer, size))
return false;
if (writer->Write(value, static_cast<uint32>(size)))
return false;
return true;
}
bool WriteEbmlDateElement(IMkvWriter* writer, uint64 type, int64 value) {
if (!writer)
return false;
if (WriteID(writer, type))
return false;
if (WriteUInt(writer, kDateElementSize))
return false;
if (SerializeInt(writer, value, kDateElementSize))
return false;
return true;
}
uint64 WriteFrame(IMkvWriter* writer, const Frame* const frame,
Cluster* cluster) {
if (!writer || !frame || !frame->IsValid() || !cluster ||
!cluster->timecode_scale())
return 0;
// Technically the timecode for a block can be less than the
// timecode for the cluster itself (remember that block timecode
// is a signed, 16-bit integer). However, as a simplification we
// only permit non-negative cluster-relative timecodes for blocks.
const int64 relative_timecode = cluster->GetRelativeTimecode(
frame->timestamp() / cluster->timecode_scale());
if (relative_timecode < 0 || relative_timecode > kMaxBlockTimecode)
return 0;
return frame->CanBeSimpleBlock()
? WriteSimpleBlock(writer, frame, relative_timecode)
: WriteBlock(writer, frame, relative_timecode,
cluster->timecode_scale());
}
uint64 WriteVoidElement(IMkvWriter* writer, uint64 size) {
if (!writer)
return false;
// Subtract one for the void ID and the coded size.
uint64 void_entry_size = size - 1 - GetCodedUIntSize(size - 1);
uint64 void_size = EbmlMasterElementSize(libwebm::kMkvVoid, void_entry_size) +
void_entry_size;
if (void_size != size)
return 0;
const int64 payload_position = writer->Position();
if (payload_position < 0)
return 0;
if (WriteID(writer, libwebm::kMkvVoid))
return 0;
if (WriteUInt(writer, void_entry_size))
return 0;
const uint8 value = 0;
for (int32 i = 0; i < static_cast<int32>(void_entry_size); ++i) {
if (writer->Write(&value, 1))
return 0;
}
const int64 stop_position = writer->Position();
if (stop_position < 0 ||
stop_position - payload_position != static_cast<int64>(void_size))
return 0;
return void_size;
}
void GetVersion(int32_t* major, int32_t* minor, int32_t* build, int32_t* revision) {
*major = 0;
*minor = 3;
*build = 3;
*revision = 0;
}
uint64 MakeUID(unsigned int* seed) {
uint64 uid = 0;
for (int i = 0; i < 7; ++i) { // avoid problems with 8-byte values
uid <<= 8;
// TODO(fgalligan): Move random number generation to platform specific code.
#ifdef _WIN32
(void)seed;
const int32 nn = rand();
#elif defined(__ANDROID__)
(void)seed;
int32 temp_num = 1;
int fd = open("/dev/urandom", O_RDONLY);
if (fd != -1) {
read(fd, &temp_num, sizeof(temp_num));
close(fd);
}
const int32 nn = temp_num;
#else
const int32 nn = rand_r(seed);
#endif
const int32 n = 0xFF & (nn >> 4); // throw away low-order bits
uid |= n;
}
return uid;
}
bool IsMatrixCoefficientsValueValid(uint64_t value) {
switch (value) {
case mkvmuxer::Colour::kGbr:
case mkvmuxer::Colour::kBt709:
case mkvmuxer::Colour::kUnspecifiedMc:
case mkvmuxer::Colour::kReserved:
case mkvmuxer::Colour::kFcc:
case mkvmuxer::Colour::kBt470bg:
case mkvmuxer::Colour::kSmpte170MMc:
case mkvmuxer::Colour::kSmpte240MMc:
case mkvmuxer::Colour::kYcocg:
case mkvmuxer::Colour::kBt2020NonConstantLuminance:
case mkvmuxer::Colour::kBt2020ConstantLuminance:
return true;
}
return false;
}
bool IsChromaSitingHorzValueValid(uint64_t value) {
switch (value) {
case mkvmuxer::Colour::kUnspecifiedCsh:
case mkvmuxer::Colour::kLeftCollocated:
case mkvmuxer::Colour::kHalfCsh:
return true;
}
return false;
}
bool IsChromaSitingVertValueValid(uint64_t value) {
switch (value) {
case mkvmuxer::Colour::kUnspecifiedCsv:
case mkvmuxer::Colour::kTopCollocated:
case mkvmuxer::Colour::kHalfCsv:
return true;
}
return false;
}
bool IsColourRangeValueValid(uint64_t value) {
switch (value) {
case mkvmuxer::Colour::kUnspecifiedCr:
case mkvmuxer::Colour::kBroadcastRange:
case mkvmuxer::Colour::kFullRange:
case mkvmuxer::Colour::kMcTcDefined:
return true;
}
return false;
}
bool IsTransferCharacteristicsValueValid(uint64_t value) {
switch (value) {
case mkvmuxer::Colour::kIturBt709Tc:
case mkvmuxer::Colour::kUnspecifiedTc:
case mkvmuxer::Colour::kReservedTc:
case mkvmuxer::Colour::kGamma22Curve:
case mkvmuxer::Colour::kGamma28Curve:
case mkvmuxer::Colour::kSmpte170MTc:
case mkvmuxer::Colour::kSmpte240MTc:
case mkvmuxer::Colour::kLinear:
case mkvmuxer::Colour::kLog:
case mkvmuxer::Colour::kLogSqrt:
case mkvmuxer::Colour::kIec6196624:
case mkvmuxer::Colour::kIturBt1361ExtendedColourGamut:
case mkvmuxer::Colour::kIec6196621:
case mkvmuxer::Colour::kIturBt202010bit:
case mkvmuxer::Colour::kIturBt202012bit:
case mkvmuxer::Colour::kSmpteSt2084:
case mkvmuxer::Colour::kSmpteSt4281Tc:
case mkvmuxer::Colour::kAribStdB67Hlg:
return true;
}
return false;
}
bool IsPrimariesValueValid(uint64_t value) {
switch (value) {
case mkvmuxer::Colour::kReservedP0:
case mkvmuxer::Colour::kIturBt709P:
case mkvmuxer::Colour::kUnspecifiedP:
case mkvmuxer::Colour::kReservedP3:
case mkvmuxer::Colour::kIturBt470M:
case mkvmuxer::Colour::kIturBt470Bg:
case mkvmuxer::Colour::kSmpte170MP:
case mkvmuxer::Colour::kSmpte240MP:
case mkvmuxer::Colour::kFilm:
case mkvmuxer::Colour::kIturBt2020:
case mkvmuxer::Colour::kSmpteSt4281P:
case mkvmuxer::Colour::kJedecP22Phosphors:
return true;
}
return false;
}
} // namespace mkvmuxer
#endif // ESP32

View File

@ -0,0 +1,117 @@
// Copyright (c) 2012 The WebM project authors. All Rights Reserved.
//
// Use of this source code is governed by a BSD-style license
// that can be found in the LICENSE file in the root of the source
// tree. An additional intellectual property rights grant can be found
// in the file PATENTS. All contributing project authors may
// be found in the AUTHORS file in the root of the source tree.
#ifndef MKVMUXER_MKVMUXERUTIL_H_
#define MKVMUXER_MKVMUXERUTIL_H_
#ifdef ESP32
#include <stdint.h>
#include "mkvmuxertypes.h"
namespace mkvmuxer {
class Cluster;
class Frame;
class IMkvWriter;
// TODO(tomfinegan): mkvmuxer:: integer types continue to be used here because
// changing them causes pain for downstream projects. It would be nice if a
// solution that allows removal of the mkvmuxer:: integer types while avoiding
// pain for downstream users of libwebm. Considering that mkvmuxerutil.{cc,h}
// are really, for the great majority of cases, EBML size calculation and writer
// functions, perhaps a more EBML focused utility would be the way to go as a
// first step.
const uint64 kEbmlUnknownValue = 0x01FFFFFFFFFFFFFFULL;
const int64 kMaxBlockTimecode = 0x07FFFLL;
// Writes out |value| in Big Endian order. Returns 0 on success.
int32 SerializeInt(IMkvWriter* writer, int64 value, int32 size);
// Writes out |f| in Big Endian order. Returns 0 on success.
int32 SerializeFloat(IMkvWriter* writer, float f);
// Returns the size in bytes of the element.
int32 GetUIntSize(uint64 value);
int32 GetIntSize(int64 value);
int32 GetCodedUIntSize(uint64 value);
uint64 EbmlMasterElementSize(uint64 type, uint64 value);
uint64 EbmlElementSize(uint64 type, int64 value);
uint64 EbmlElementSize(uint64 type, uint64 value);
uint64 EbmlElementSize(uint64 type, float value);
uint64 EbmlElementSize(uint64 type, const char* value);
uint64 EbmlElementSize(uint64 type, const uint8* value, uint64 size);
uint64 EbmlDateElementSize(uint64 type);
// Returns the size in bytes of the element assuming that the element was
// written using |fixed_size| bytes. If |fixed_size| is set to zero, then it
// computes the necessary number of bytes based on |value|.
uint64 EbmlElementSize(uint64 type, uint64 value, uint64 fixed_size);
// Creates an EBML coded number from |value| and writes it out. The size of
// the coded number is determined by the value of |value|. |value| must not
// be in a coded form. Returns 0 on success.
int32 WriteUInt(IMkvWriter* writer, uint64 value);
// Creates an EBML coded number from |value| and writes it out. The size of
// the coded number is determined by the value of |size|. |value| must not
// be in a coded form. Returns 0 on success.
int32 WriteUIntSize(IMkvWriter* writer, uint64 value, int32 size);
// Output an Mkv master element. Returns true if the element was written.
bool WriteEbmlMasterElement(IMkvWriter* writer, uint64 value, uint64 size);
// Outputs an Mkv ID, calls |IMkvWriter::ElementStartNotify|, and passes the
// ID to |SerializeInt|. Returns 0 on success.
int32 WriteID(IMkvWriter* writer, uint64 type);
// Output an Mkv non-master element. Returns true if the element was written.
bool WriteEbmlElement(IMkvWriter* writer, uint64 type, uint64 value);
bool WriteEbmlElement(IMkvWriter* writer, uint64 type, int64 value);
bool WriteEbmlElement(IMkvWriter* writer, uint64 type, float value);
bool WriteEbmlElement(IMkvWriter* writer, uint64 type, const char* value);
bool WriteEbmlElement(IMkvWriter* writer, uint64 type, const uint8* value,
uint64 size);
bool WriteEbmlDateElement(IMkvWriter* writer, uint64 type, int64 value);
// Output an Mkv non-master element using fixed size. The element will be
// written out using exactly |fixed_size| bytes. If |fixed_size| is set to zero
// then it computes the necessary number of bytes based on |value|. Returns true
// if the element was written.
bool WriteEbmlElement(IMkvWriter* writer, uint64 type, uint64 value,
uint64 fixed_size);
// Output a Mkv Frame. It decides the correct element to write (Block vs
// SimpleBlock) based on the parameters of the Frame.
uint64 WriteFrame(IMkvWriter* writer, const Frame* const frame,
Cluster* cluster);
// Output a void element. |size| must be the entire size in bytes that will be
// void. The function will calculate the size of the void header and subtract
// it from |size|.
uint64 WriteVoidElement(IMkvWriter* writer, uint64 size);
// Returns the version number of the muxer in |major|, |minor|, |build|,
// and |revision|.
void GetVersion(int32_t* major, int32_t* minor, int32_t* build, int32_t* revision);
// Returns a random number to be used for UID, using |seed| to seed
// the random-number generator (see POSIX rand_r() for semantics).
uint64 MakeUID(unsigned int* seed);
// Colour field validation helpers. All return true when |value| is valid.
bool IsMatrixCoefficientsValueValid(uint64_t value);
bool IsChromaSitingHorzValueValid(uint64_t value);
bool IsChromaSitingVertValueValid(uint64_t value);
bool IsColourRangeValueValid(uint64_t value);
bool IsTransferCharacteristicsValueValid(uint64_t value);
bool IsPrimariesValueValid(uint64_t value);
} // namespace mkvmuxer
#endif // ESP32
#endif // MKVMUXER_MKVMUXERUTIL_H_

View File

@ -0,0 +1,101 @@
// Copyright (c) 2012 The WebM project authors. All Rights Reserved.
//
// Use of this source code is governed by a BSD-style license
// that can be found in the LICENSE file in the root of the source
// tree. An additional intellectual property rights grant can be found
// in the file PATENTS. All contributing project authors may
// be found in the AUTHORS file in the root of the source tree.
#include "mkvwriter.h"
#ifdef ESP32
#include <sys/types.h>
#ifdef _MSC_VER
#include <share.h> // for _SH_DENYWR
#endif
namespace mkvmuxer {
MkvWriter::MkvWriter() : file_(NULL), writer_owns_file_(true) {}
MkvWriter::MkvWriter(File* fp) : file_(fp), writer_owns_file_(false), use_write_cb_(false) {}
MkvWriter::MkvWriter(void* userdata, int(*cb)(void* userdata, const void* buffer, uint32 length)) : write_cb_(cb), cb_userdata_(userdata), writer_owns_file_(false), use_write_cb_(true) {}
MkvWriter::~MkvWriter() { Close(); }
int32 MkvWriter::Write(const void* buffer, uint32 length) {
if (!file_ && !write_cb_)
return -1;
if (length == 0)
return 0;
if (buffer == NULL)
return -1;
size_t bytes_written = 0;
if(!use_write_cb_){
bytes_written = file_->write((const uint8_t *)buffer, (size_t)length);
} else {
bytes_written = write_cb_(cb_userdata_, buffer, length);
write_cb_written_ += bytes_written;
}
return (bytes_written == length) ? 0 : -1;
}
bool MkvWriter::Open(const char* filename) {
return false;
}
void MkvWriter::Close() {
if (file_ && writer_owns_file_) {
file_->close();
}
file_ = NULL;
}
int64 MkvWriter::Position() const {
if (!file_ || use_write_cb_)
return write_cb_written_;
return file_->position();
}
int32 MkvWriter::Position(int64 position) {
if (use_write_cb_ && write_cb_written_ == position)
return 0;
if (!file_ || use_write_cb_)
return -1;
return file_->seek(position);
// #ifdef _MSC_VER
// return _fseeki64(file_, position, SEEK_SET);
// #elif defined(_WIN32)
// return fseeko64(file_, static_cast<off_t>(position), SEEK_SET);
// #elif !(defined(__ANDROID__) && __ANDROID_API__ < 24 && !defined(__LP64__) && \
// defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64)
// // POSIX.1 has fseeko and ftello. fseeko and ftello are not available before
// // Android API level 24. See
// // https://android.googlesource.com/platform/bionic/+/main/docs/32-bit-abi.md
// // return fseeko(file_, static_cast<off_t>(position), SEEK_SET);
// #else
// return fseek(file_, static_cast<long>(position), SEEK_SET);
// #endif
// return -1;
}
bool MkvWriter::Seekable() const {
if (!file_ || use_write_cb_)
return false;
return true;
}
void MkvWriter::ElementStartNotify(uint64, int64) {}
} // namespace mkvmuxer
#endif // ESP32

View File

@ -0,0 +1,60 @@
// Copyright (c) 2012 The WebM project authors. All Rights Reserved.
//
// Use of this source code is governed by a BSD-style license
// that can be found in the LICENSE file in the root of the source
// tree. An additional intellectual property rights grant can be found
// in the file PATENTS. All contributing project authors may
// be found in the AUTHORS file in the root of the source tree.
#ifndef MKVMUXER_MKVWRITER_H_
#define MKVMUXER_MKVWRITER_H_
#ifdef ESP32
#include <stdio.h>
#include <FS.h>
#include "mkvmuxer.h"
#include "mkvmuxertypes.h"
namespace mkvmuxer {
// Default implementation of the IMkvWriter interface on Windows.
class MkvWriter : public IMkvWriter {
public:
MkvWriter();
MkvWriter(File* fp);
MkvWriter(void* userdata, int(*cb)(void* userdata, const void* buffer, uint32 length));
virtual ~MkvWriter();
// IMkvWriter interface
virtual int64 Position() const;
virtual int32 Position(int64 position);
virtual bool Seekable() const;
virtual int32 Write(const void* buffer, uint32 length);
virtual void ElementStartNotify(uint64 element_id, int64 position);
// Creates and opens a file for writing. |filename| is the name of the file
// to open. This function will overwrite the contents of |filename|. Returns
// true on success.
bool Open(const char* filename);
// Closes an opened file.
void Close();
private:
// File handle to output file.
File* file_;
// Callback function to output stream.
int(*write_cb_)(void* userdata, const void* buffer, uint32 length);
void* cb_userdata_;
bool writer_owns_file_;
bool use_write_cb_;
uint32_t write_cb_written_ = 0;
LIBWEBM_DISALLOW_COPY_AND_ASSIGN(MkvWriter);
};
} // namespace mkvmuxer
#endif // ESP32
#endif // MKVMUXER_MKVWRITER_H_

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -90,12 +90,12 @@ int op_test(OpusHead *_head,
ogg_sync_init(&oy);
data=ogg_sync_buffer(&oy,(long)_initial_bytes);
if(data!=NULL){
ogg_stream_state *os = (ogg_stream_state*)malloc(sizeof(ogg_stream_state));
ogg_stream_state os;
ogg_page og;
int ret;
memcpy(data,_initial_data,_initial_bytes);
ogg_sync_wrote(&oy,(long)_initial_bytes);
ogg_stream_init(os,-1);
ogg_stream_init(&os,-1);
err=OP_FALSE;
do{
ogg_packet op;
@ -104,11 +104,11 @@ int op_test(OpusHead *_head,
if(ret<0)continue;
/*Stop if we run out of data.*/
if(!ret)break;
ogg_stream_reset_serialno(os,ogg_page_serialno(&og));
ogg_stream_pagein(os,&og);
ogg_stream_reset_serialno(&os,ogg_page_serialno(&og));
ogg_stream_pagein(&os,&og);
/*Only process the first packet on this page (if it's a BOS packet,
it's required to be the only one).*/
if(ogg_stream_packetout(os,&op)==1){
if(ogg_stream_packetout(&os,&op)==1){
if(op.b_o_s){
ret=opus_head_parse(_head,op.packet,op.bytes);
/*If this didn't look like Opus, keep going.*/
@ -122,8 +122,7 @@ int op_test(OpusHead *_head,
}
}
while(err==OP_FALSE);
ogg_stream_clear(os);
free(os);
ogg_stream_clear(&os);
}
else err=OP_EFAULT;
ogg_sync_clear(&oy);
@ -836,7 +835,7 @@ static int op_find_initial_pcm_offset(OggOpusFile *_of,
ogg_int64_t cur_page_gp;
ogg_uint32_t serialno;
opus_int32 total_duration;
int *durations = (int*)malloc(255 * sizeof(int));
int durations[255];
int cur_page_eos;
int op_count;
int pi;
@ -853,31 +852,26 @@ static int op_find_initial_pcm_offset(OggOpusFile *_of,
Otherwise there are no audio data packets in the whole logical stream.*/
if(OP_UNLIKELY(page_offset<0)){
/*Fail if there was a read error.*/
if(page_offset<OP_FALSE) { free(durations); return (int)page_offset; }
if(page_offset<OP_FALSE)return (int)page_offset;
/*Fail if the pre-skip is non-zero, since it's asking us to skip more
samples than exist.*/
if(_link->head.pre_skip>0) {free(durations); return OP_EBADTIMESTAMP;}
if(_link->head.pre_skip>0)return OP_EBADTIMESTAMP;
_link->pcm_file_offset=0;
/*Set pcm_end and end_offset so we can skip the call to
op_find_final_pcm_offset().*/
_link->pcm_start=_link->pcm_end=0;
_link->end_offset=_link->data_offset;
free(durations);
return 0;
}
/*Similarly, if we hit the next link in the chain, we've gone too far.*/
if(OP_UNLIKELY(ogg_page_bos(_og))){
if(_link->head.pre_skip>0) {
free(durations);
return OP_EBADTIMESTAMP;
}
if(_link->head.pre_skip>0)return OP_EBADTIMESTAMP;
/*Set pcm_end and end_offset so we can skip the call to
op_find_final_pcm_offset().*/
_link->pcm_file_offset=0;
_link->pcm_start=_link->pcm_end=0;
_link->end_offset=_link->data_offset;
/*Tell the caller we've got a buffered page for them.*/
free(durations);
return 1;
}
/*Ignore pages from other streams (not strictly necessary, because of the
@ -907,10 +901,7 @@ static int op_find_initial_pcm_offset(OggOpusFile *_of,
cur_page_gp=_of->op[op_count-1].granulepos;
/*But getting a packet without a valid granule position on the page is not
okay.*/
if(cur_page_gp==-1) {
free(durations);
return OP_EBADTIMESTAMP;
}
if(cur_page_gp==-1)return OP_EBADTIMESTAMP;
cur_page_eos=_of->op[op_count-1].e_o_s;
if(OP_LIKELY(!cur_page_eos)){
/*The EOS flag wasn't set.
@ -919,7 +910,6 @@ static int op_find_initial_pcm_offset(OggOpusFile *_of,
if(OP_UNLIKELY(op_granpos_add(&pcm_start,cur_page_gp,-total_duration)<0)){
/*The starting granule position MUST not be smaller than the amount of
audio on the first page with completed packets.*/
free(durations);
return OP_EBADTIMESTAMP;
}
}
@ -933,7 +923,6 @@ static int op_find_initial_pcm_offset(OggOpusFile *_of,
/*However, the end-trimming MUST not ask us to trim more samples than
exist after applying the pre-skip.*/
if(OP_UNLIKELY(op_granpos_cmp(cur_page_gp,_link->head.pre_skip)<0)){
free(durations);
return OP_EBADTIMESTAMP;
}
}
@ -968,7 +957,6 @@ static int op_find_initial_pcm_offset(OggOpusFile *_of,
_link->pcm_file_offset=0;
_of->prev_packet_gp=_link->pcm_start=pcm_start;
_of->prev_page_offset=page_offset;
free(durations);
return 0;
}
@ -1403,34 +1391,32 @@ static int op_open_seekable2_impl(OggOpusFile *_of){
/*64 seek records should be enough for anybody.
Actually, with a bisection search in a 63-bit range down to OP_CHUNK_SIZE
granularity, much more than enough.*/
OpusSeekRecord *sr = (OpusSeekRecord*)malloc(64 * sizeof(OpusSeekRecord));
OpusSeekRecord sr[64];
opus_int64 data_offset;
int ret;
/*We can seek, so set out learning all about this file.*/
(*_of->callbacks.seek)(_of->stream,0,SEEK_END);
_of->offset=_of->end=(*_of->callbacks.tell)(_of->stream);
if(OP_UNLIKELY(_of->end<0)){free(sr); return OP_EREAD;}
if(OP_UNLIKELY(_of->end<0))return OP_EREAD;
data_offset=_of->links[0].data_offset;
if(OP_UNLIKELY(_of->end<data_offset)){ free(sr); return OP_EBADLINK;}
if(OP_UNLIKELY(_of->end<data_offset))return OP_EBADLINK;
/*Get the offset of the last page of the physical bitstream, or, if we're
lucky, the last Opus page of the first link, as most Ogg Opus files will
contain a single logical bitstream.*/
ret=op_get_prev_page_serial(_of,sr,_of->end,
_of->links[0].serialno,_of->serialnos,_of->nserialnos);
if(OP_UNLIKELY(ret<0)){free(sr); return ret;}
if(OP_UNLIKELY(ret<0))return ret;
/*If there's any trailing junk, forget about it.*/
_of->end=sr[0].offset+sr[0].size;
if(OP_UNLIKELY(_of->end<data_offset)){free(sr); return OP_EBADLINK;}
if(OP_UNLIKELY(_of->end<data_offset))return OP_EBADLINK;
/*Now enumerate the bitstream structure.*/
ret = op_bisect_forward_serialno(_of,data_offset,sr,sizeof(sr)/sizeof(*sr),
return op_bisect_forward_serialno(_of,data_offset,sr,sizeof(sr)/sizeof(*sr),
&_of->serialnos,&_of->nserialnos,&_of->cserialnos);
free(sr);
return ret;
}
static int op_open_seekable2(OggOpusFile *_of){
ogg_sync_state oy_start;
ogg_stream_state *os_start = (ogg_stream_state*)malloc(sizeof(ogg_stream_state));
ogg_stream_state os_start;
ogg_packet *op_start;
opus_int64 prev_page_offset;
opus_int64 start_offset;
@ -1449,9 +1435,9 @@ static int op_open_seekable2(OggOpusFile *_of){
start_op_count=_of->op_count;
/*This is a bit too large to put on the stack unconditionally.*/
op_start=(ogg_packet *)_ogg_malloc(sizeof(*op_start)*start_op_count);
if(op_start==NULL){free(os_start); return OP_EFAULT;}
if(op_start==NULL)return OP_EFAULT;
*&oy_start=_of->oy;
*os_start=_of->os;
*&os_start=_of->os;
prev_page_offset=_of->prev_page_offset;
start_offset=_of->offset;
memcpy(op_start,_of->op,sizeof(*op_start)*start_op_count);
@ -1463,7 +1449,7 @@ static int op_open_seekable2(OggOpusFile *_of){
ogg_stream_clear(&_of->os);
ogg_sync_clear(&_of->oy);
*&_of->oy=*&oy_start;
*&_of->os=*os_start;
*&_of->os=*&os_start;
_of->offset=start_offset;
_of->op_count=start_op_count;
memcpy(_of->op,op_start,sizeof(*_of->op)*start_op_count);
@ -1471,10 +1457,9 @@ static int op_open_seekable2(OggOpusFile *_of){
_of->prev_packet_gp=_of->links[0].pcm_start;
_of->prev_page_offset=prev_page_offset;
_of->cur_discard_count=_of->links[0].head.pre_skip;
if(OP_UNLIKELY(ret<0)){free(os_start); return ret;}
if(OP_UNLIKELY(ret<0))return ret;
/*And restore the position indicator.*/
ret=(*_of->callbacks.seek)(_of->stream,op_position(_of),SEEK_SET);
free(os_start);
return OP_UNLIKELY(ret<0)?OP_EREAD:0;
}
@ -1995,7 +1980,7 @@ static int op_fetch_and_process_page(OggOpusFile *_of,
ogg_stream_pagein(&_of->os,&og);
if(OP_LIKELY(_of->ready_state>=OP_INITSET)){
opus_int32 total_duration;
int *durations = (int*)malloc(255 * sizeof(int));
int durations[255];
int op_count;
int report_hole;
report_hole=0;
@ -2052,7 +2037,7 @@ static int op_fetch_and_process_page(OggOpusFile *_of,
Proceed to the next link, rather than risk playing back some
samples that shouldn't have been played.*/
_of->op_count=0;
if(report_hole){ free(durations); return OP_HOLE; }
if(report_hole)return OP_HOLE;
continue;
}
/*By default discard 80 ms of data after a seek, unless we seek
@ -2160,9 +2145,9 @@ static int op_fetch_and_process_page(OggOpusFile *_of,
_of->prev_page_offset=_page_offset;
_of->op_count=op_count=pi;
}
if(report_hole) { free(durations); return OP_HOLE; }
if(report_hole)return OP_HOLE;
/*If end-trimming didn't trim all the packets, we're done.*/
if(op_count>0) { free(durations); return 0; }
if(op_count>0)return 0;
}
}
}
@ -3016,7 +3001,7 @@ static const float OP_STEREO_DOWNMIX[OP_NCHANNELS_MAX-2][OP_NCHANNELS_MAX][2]={
#endif
#if defined(OP_FIXED_POINT)
#if 0
/*Matrices for downmixing from the supported channel counts to stereo.
The matrices with 5 or more channels are normalized to a total volume of 2.0,
since most mixes sound too quiet if normalized to 1.0 (as there is generally
@ -3025,6 +3010,7 @@ static const float OP_STEREO_DOWNMIX[OP_NCHANNELS_MAX-2][OP_NCHANNELS_MAX][2]={
32-bit number.*/
static const opus_int16 OP_STEREO_DOWNMIX_Q14
[OP_NCHANNELS_MAX-2][OP_NCHANNELS_MAX][2]={
#if OP_NCHANNELS_MAX>2
/*3.0*/
{
{9598,0},{6786,6786},{0,9598}
@ -3051,8 +3037,9 @@ static const opus_int16 OP_STEREO_DOWNMIX_Q14
{6368,0},{4502,4502},{0,6368},{5515,3183},{3183,5515},{5515,3183},
{3183,5515},{4502,4502}
}
#endif // OP_NCHANNELS_MAX>2
};
#endif
int op_read(OggOpusFile *_of,opus_int16 *_pcm,int _buf_size,int *_li){
return op_read_native(_of,_pcm,_buf_size,_li);
}
@ -3070,7 +3057,6 @@ static int op_stereo_filter(OggOpusFile *_of,void *_dst,int _dst_sz,
for(i=0;i<_nsamples;i++)dst[2*i+0]=dst[2*i+1]=_src[i];
}
else{
#if 0
for(i=0;i<_nsamples;i++){
opus_int32 l;
opus_int32 r;
@ -3086,8 +3072,6 @@ static int op_stereo_filter(OggOpusFile *_of,void *_dst,int _dst_sz,
dst[2*i+0]=(opus_int16)OP_CLAMP(-32768,l+8192>>14,32767);
dst[2*i+1]=(opus_int16)OP_CLAMP(-32768,r+8192>>14,32767);
}
#endif
// noop, removed for RAM savings
}
}
return _nsamples;

Some files were not shown because too many files have changed in this diff Show More