Compare commits

..

293 Commits

Author SHA1 Message Date
Theo Arends
64ba75f034 Merge branch 'development' into prerelease-14.6.0 2025-04-16 11:46:39 +02:00
Theo Arends
4dc88234ef Prep release v14.6.0 2025-04-16 11:44:03 +02:00
Theo Arends
87449961bc Merge branch 'development' into prerelease-14.6.0 2025-04-16 11:42:03 +02:00
Theo Arends
2e476d21b7 Merge branch 'development' into prerelease-14.6.0 2025-04-14 16:23:00 +02:00
Theo Arends
d78a3a0aa8 Update CHANGELOG.md 2025-04-14 14:08:00 +02:00
Theo Arends
16e4211c4d Merge branch 'development' into prerelease-14.6.0 2025-04-14 14:06:59 +02:00
Theo Arends
d436a4034b Merge branch 'development' into prerelease-14.5.0 2025-02-18 12:17:11 +01:00
Theo Arends
a1f7e3c4e5 Merge branch 'development' into prerelease-14.5.0 2025-02-17 17:52:33 +01:00
Theo Arends
4f43c7548b Prep v14.5.0 2025-02-17 10:18:30 +01:00
Theo Arends
439dd2ebe1 Merge branch 'development' into prerelease-14.5.0 2025-02-17 10:16:20 +01:00
Theo Arends
031e2fdbb7 Update changelog 2024-12-15 14:28:36 +01:00
Theo Arends
b352d34565 Merge branch 'development' into prerelease-14.4.1 2024-12-15 14:17:09 +01:00
Theo Arends
4dfac9b414 Merge branch 'development' into prerelease-14.4.1 2024-12-14 16:59:31 +01:00
Theo Arends
9a5394f9ab Prep 14.4 2024-12-11 10:17:21 +01:00
Theo Arends
74e741012c Merge branch 'development' into prerelease-14.4.0 2024-12-11 10:13:41 +01:00
Theo Arends
2f4ca9bbe9 Merge branch 'development' into prerelease-14.4.0 2024-12-10 12:17:21 +01:00
Theo Arends
8eada8e7d8 Merge branch 'development' into prerelease-14.4.0 2024-12-09 15:20:01 +01:00
Theo Arends
f62080bc54 Merge branch 'development' into prerelease-14.4.0 2024-12-08 14:55:14 +01:00
Theo Arends
55a6bc876b Merge branch 'development' into prerelease-14.3.0 2024-10-14 23:35:52 +02:00
Theo Arends
59409aedb2 Merge branch 'development' into prerelease-14.3.0 2024-10-14 23:15:24 +02:00
Theo Arends
38ad7bd24f Merge branch 'development' into prerelease-14.3.0 2024-10-14 17:12:22 +02:00
Theo Arends
f7b3476eb5 Merge branch 'development' into prerelease-14.3.0 2024-10-14 15:30:03 +02:00
Theo Arends
50823e7a32 Merge branch 'development' into prerelease-14.3.0 2024-10-14 12:34:15 +02:00
Theo Arends
6cb623930b Merge branch 'development' into prerelease-14.3.0 2024-10-11 11:58:25 +02:00
Theo Arends
d87e7ea677 Update CHANGELOG.md 2024-10-10 12:43:14 +02:00
Theo Arends
96a99f9951 Merge branch 'development' into prerelease-14.3.0 2024-10-10 12:40:29 +02:00
Theo Arends
84ac55378e Merge branch 'development' into prerelease-14.2.0 2024-08-14 14:23:13 +02:00
Theo Arends
b15ef60db5 Prep v14.2.0 2024-08-14 14:13:16 +02:00
Theo Arends
325c722ee1 Merge branch 'development' into prerelease-14.2.0 2024-08-14 14:09:06 +02:00
Theo Arends
c1feaffa80 Merge branch 'development' into prerelease-14.1.0 2024-06-03 13:51:54 +02:00
Theo Arends
8781def40f Prep v14.1.0 2024-06-02 11:30:30 +02:00
Theo Arends
2a2e853ff2 Merge branch 'development' into prerelease-14.1.0 2024-06-02 11:28:36 +02:00
Theo Arends
d8c53d48d1 Prep release v14.0.0 2024-05-14 13:41:38 +02:00
Theo Arends
ba2ad90384 Merge branch 'development' into prerelease-14.0.0 2024-05-14 11:07:06 +02:00
Theo Arends
e23fadf0f6 Merge branch 'development' into prerelease-14.0.0 2024-05-10 11:09:33 +02:00
Theo Arends
103860f394 Merge branch 'development' into prerelease-14.0.0 2024-05-10 10:47:33 +02:00
Theo Arends
4111b7883b Merge branch 'development' into prerelease-14.0.0 2024-05-10 10:44:54 +02:00
Theo Arends
45d3124602 Merge branch 'development' into prerelease-14.0.0 2024-05-08 13:27:08 +02:00
Theo Arends
a3fb17b4f1 Merge branch 'development' into prerelease-14.0.0 2024-05-07 17:15:16 +02:00
Theo Arends
983694cc2b Merge branch 'development' into prerelease-14.0.0 2024-05-06 17:39:08 +02:00
Theo Arends
ba58271219 Prep release v14.0.0 2024-05-06 10:57:03 +02:00
Theo Arends
133cc25bdb Merge branch 'development' into prerelease-14.0.0 2024-05-06 10:52:57 +02:00
Theo Arends
05e2444e6a Update to v13.4.0 2024-02-14 17:05:25 +01:00
Theo Arends
e617328051 Merge branch 'development' into prerelease-13.4 2024-02-14 16:16:36 +01:00
Theo Arends
99e44a10af Merge branch 'development' into prerelease-13.4 2024-02-14 10:33:54 +01:00
Theo Arends
3648ce5fda Merge branch 'development' into prerelease-13.4 2024-02-13 12:21:14 +01:00
Theo Arends
8a08895110 Merge branch 'development' into prerelease-13.4 2024-02-13 10:49:31 +01:00
Theo Arends
e6515883f0 Prep v13.3 2023-12-12 11:08:21 +01:00
Theo Arends
fb904a0610 Merge branch 'development' into prerelease-13.3 2023-12-12 11:06:02 +01:00
Theo Arends
ff3e3e9360 Prep v13.2.0 2023-10-19 11:00:38 +02:00
Theo Arends
81c4e518a0 Merge branch 'development' into prerelease-13.2 2023-10-19 10:57:47 +02:00
Theo Arends
2efefeb8a7 Merge branch 'development' into prerelease-13.2 2023-10-18 09:53:10 +02:00
Theo Arends
2d97311c5c Merge branch 'development' into prerelease-13.2 2023-10-16 16:52:59 +02:00
Theo Arends
01bb287436 prep v13.1 2023-08-15 09:49:04 +02:00
Theo Arends
ed5d74a4f9 Merge branch 'development' into prerelease-13.1 2023-08-15 09:46:52 +02:00
Theo Arends
41bd8bcd79 Merge branch 'development' into prerelease-13.1 2023-08-14 10:58:35 +02:00
Theo Arends
9671d87b19 Merge branch 'development' into prerelease-13.1 2023-08-14 09:41:43 +02:00
Theo Arends
5a7a82e975 Merge branch 'development' into prerelease-13.1 2023-08-12 14:25:15 +02:00
Theo Arends
383855e1c1 Merge branch 'development' into prerelease-13.0 2023-06-26 12:39:32 +02:00
Theo Arends
a435ec84b4 Merge branch 'development' into prerelease-13.0 2023-06-26 10:18:13 +02:00
Theo Arends
654f4200a1 Merge branch 'development' into prerelease-13.0 2023-06-26 09:19:34 +02:00
Theo Arends
0ced0c26e9 Merge branch 'development' into prerelease-13.0 2023-06-25 14:32:18 +02:00
Theo Arends
bf5c886ee0 Update CHANGELOG.md 2023-06-25 13:58:39 +02:00
Theo Arends
80bf7e53cc Merge branch 'development' into prerelease-13.0 2023-06-25 13:33:44 +02:00
Theo Arends
27e8617040 Merge branch 'development' into prerelease-13.0 2023-06-24 14:04:46 +02:00
Theo Arends
bed113fd79 Merge branch 'development' into prerelease-13.0 2023-06-24 13:57:27 +02:00
Theo Arends
91c635abc3 Update CHANGELOG.md 2023-06-24 12:23:08 +02:00
Theo Arends
34d15036e6 Merge branch 'development' into prerelease-13.0 2023-06-24 12:18:30 +02:00
Jason2866
04cff5fbff
New workflow for release (#18722) 2023-05-25 16:21:30 +02:00
Theo Arends
6c65ac8d81 Update README.md 2023-04-17 10:02:30 +02:00
Theo Arends
e9e3b03dbb Merge branch 'development' into prerelease-12.5 2023-04-17 09:58:32 +02:00
Theo Arends
ea592b918f Merge branch 'development' into prerelease-12.5 2023-04-16 12:22:20 +02:00
Theo Arends
3f43db93f0 Merge branch 'development' into prerelease-12.5 2023-04-15 15:13:16 +02:00
Theo Arends
8e820e90c6 Fix duplicate EnergyTotal update 2023-02-24 16:31:15 +01:00
Theo Arends
ca3045f68f Fix support for non-sequential buttons and switches
Fix support for non-sequential buttons and switches (#17967)
2023-02-18 17:06:18 +01:00
Theo Arends
fbbf8ff781 Merge branch 'development' into prerelease-12.4 2023-02-16 13:10:16 +01:00
Theo Arends
dafa28f8ba Merge branch 'development' into prerelease-12.4 2023-02-13 16:22:03 +01:00
Theo Arends
669d016560 Merge branch 'pre-release-12.3' 2023-01-24 10:31:22 +01:00
Theo Arends
4acd5d82e4 Create TASMOTA_FullLogo_Vector_White.svg 2023-01-24 10:30:46 +01:00
Theo Arends
f15971d9d3 Fix ESP32 uploads 2022-12-16 11:08:35 +01:00
Jason2866
431e32b42b
fix needed depend. base32-images (#17406) 2022-12-16 11:05:58 +01:00
Theo Arends
e1a725f564 Update RELEASENOTES.md 2022-12-16 10:19:22 +01:00
Theo Arends
e8edf976da Merge branch 'pre-release-12.3' 2022-12-16 09:36:35 +01:00
Theo Arends
ac731d08fb Fix ESP8266 zifbee exception 3 2022-12-16 09:36:08 +01:00
Theo Arends
ae12ce727f Merge branch 'pre-release-12.3' 2022-12-14 15:41:41 +01:00
Theo Arends
616c6859e3 Update Tasmota_build_master.yml 2022-12-14 15:41:02 +01:00
Jason2866
1507a51f64
add safeboot to release (#17393) 2022-12-14 15:39:23 +01:00
Theo Arends
dce90f30d7 Revert Tuya change 2022-12-14 13:55:16 +01:00
Theo Arends
6a9c3bf3e5 Prep v12.3.0 release 2022-12-14 13:27:09 +01:00
Theo Arends
0cb5edd2e0 Merge branch 'development' into pre-release-12.3 2022-12-14 12:27:25 +01:00
Theo Arends
23cbdb93b0 Merge branch 'development' into pre-release-12.3 2022-12-14 11:31:41 +01:00
Theo Arends
3919668fc5 Merge branch 'development' into pre-release-12.3 2022-12-13 16:02:24 +01:00
Theo Arends
f7d227c280 Merge branch 'development' into pre-release-12.3 2022-12-13 09:42:47 +01:00
Theo Arends
1e86a9a8cf Merge branch 'development' into pre-release-12.3 2022-12-12 12:05:57 +01:00
Theo Arends
ac8a886988 Merge branch 'development' into pre-release-12.3 2022-12-11 12:23:24 +01:00
Theo Arends
b07f6994c7 Merge branch 'development' into pre-release-12.3 2022-12-10 17:28:43 +01:00
Theo Arends
4fb3d9cb41 Merge branch 'development' into pre-release-12.2 2022-10-17 10:35:08 +02:00
Theo Arends
34f441ce7d Merge branch 'development' into pre-release-12.2 2022-10-16 15:06:42 +02:00
Theo Arends
7b0c5e8adb Prep release v12.2.0 2022-10-14 14:29:35 +02:00
Theo Arends
4135a4607d Merge branch 'development' into pre-release-12.2 2022-10-14 14:22:39 +02:00
Theo Arends
98a100d0ab Merge branch 'development' into pre-release-12.2 2022-10-14 13:49:57 +02:00
Theo Arends
e71235ea3a Prep v12.1.1 2022-08-24 17:35:11 +02:00
Theo Arends
930e659915 Prep v12.1.1 2022-08-24 17:30:50 +02:00
Theo Arends
8d52722941 Prep v12.1.1 2022-08-24 17:24:31 +02:00
Theo Arends
ca10e7b909 Revert camera changes 2022-08-19 10:29:05 +02:00
Theo Arends
806c5762bc Merge branch 'development' into pre-release-12.1 2022-08-18 12:20:03 +02:00
Theo Arends
f5b2216361 Merge branch 'development' into pre-release-12.1 2022-08-17 09:55:50 +02:00
Theo Arends
dfa2c25c03 Release 12.1 2022-08-15 09:41:23 +02:00
Theo Arends
eed11319ac Release 12.1 2022-08-15 09:38:51 +02:00
Theo Arends
e5310ad6e5 Merge branch 'development' into pre-release-12.1 2022-08-15 09:36:50 +02:00
Theo Arends
9eb42b41d0 Merge branch 'development' into pre-release-12.1 2022-08-11 15:05:51 +02:00
Theo Arends
4074d82ac7 Update CHANGELOG.md 2022-06-20 14:40:00 +02:00
Theo Arends
dc1605f96a Merge branch 'pre-release-12.0' 2022-06-20 14:39:51 +02:00
Theo Arends
4ff60deafc Update RELEASENOTES.md 2022-06-20 14:32:25 +02:00
Theo Arends
24757be59e Merge branch 'development' into pre-release-12.0 2022-06-20 14:29:00 +02:00
Theo Arends
b44a87a3d8 Fix resolving MQTT and NTP servers
- Fix resolving MQTT and NTP servers (#15816)
- Bump version to v12.0.1
2022-06-17 16:37:32 +02:00
Theo Arends
7bc7be56ee Merge branch 'development' into pre-release-12.0 2022-06-16 09:53:43 +02:00
Theo Arends
fa03edbeb4 Merge branch 'development' into pre-release-12.0 2022-06-15 17:29:04 +02:00
Theo Arends
c9cd367e53 Prep release 12.0 2022-06-13 16:35:21 +02:00
Theo Arends
1cdd2be008 Merge branch 'development' into pre-release-12.0 2022-06-13 16:28:00 +02:00
Theo Arends
d157b1c5e0 Merge branch 'development' into pre-release-11.1 2022-04-12 17:45:25 +02:00
Theo Arends
ffc2352cd6 Merge branch 'development' into pre-release-11.1 2022-04-12 16:29:25 +02:00
Theo Arends
41f7580210 Merge branch 'development' into pre-release-11.1 2022-04-12 13:33:14 +02:00
Theo Arends
6e2592fe02 Merge branch 'development' into pre-release-11.1 2022-04-12 12:14:38 +02:00
Theo Arends
0b25206f90 Prep release 11.1 2022-04-10 12:21:37 +02:00
Theo Arends
4f2a59d27d Merge branch 'development' into pre-release-11.1 2022-04-10 12:17:46 +02:00
Theo Arends
0cbc1681d2 Merge branch 'development' into pre-release-11.1 2022-04-10 12:06:50 +02:00
Theo Arends
00227a45c6 Merge branch 'development' into pre-release-11.1 2022-04-07 17:34:42 +02:00
Theo Arends
e8988e4b31 Merge branch 'development' into pre-release-11.1 2022-04-07 17:10:14 +02:00
Theo Arends
64ea803ef1 Prep release 2022-02-12 15:12:14 +01:00
Theo Arends
078fb0ea3a Merge branch 'development' into pre-release-11.0 2022-02-12 15:05:39 +01:00
Theo Arends
efc2f54610 Merge branch 'development' into pre-release-11.0 2022-02-12 15:01:41 +01:00
Theo Arends
942ebe1cf4 Merge branch 'development' into pre-release-11.0 2022-02-12 14:55:11 +01:00
Theo Arends
c22d936f8c Merge branch 'development' into pre-release-11.0 2022-02-12 14:50:30 +01:00
Theo Arends
a955827db9 Merge branch 'development' into pre-release-11.0 2022-02-07 18:09:45 +01:00
Theo Arends
f09d6b5452 Merge branch 'development' into pre-release-11.0 2022-02-07 17:40:03 +01:00
Theo Arends
9dd05501a8 Merge branch 'development' into pre-release-11.0 2022-02-07 15:13:36 +01:00
Theo Arends
5254a26145 Prep release 2022-02-07 15:07:24 +01:00
Theo Arends
02659ff1a5 Merge branch 'development' into pre-release-11.0 2022-02-07 14:54:44 +01:00
Theo Arends
50f0101e59 Merge branch 'development' into pre-release-11.0 2022-02-07 13:41:39 +01:00
Theo Arends
1ee598cefd
Merge pull request #14346 from arendst/revert-14336-patch-3
Revert "Update xsns_69_opentherm.ino"
2022-01-09 15:38:31 +01:00
Theo Arends
0c22b69bd0
Revert "Update xsns_69_opentherm.ino" 2022-01-09 15:38:01 +01:00
Theo Arends
5057314977
Merge pull request #14336 from Xjeater/patch-3
Update xsns_69_opentherm.ino
2022-01-09 15:34:30 +01:00
Serge
71c146ab35
Update xsns_69_opentherm.ino
Add variable overrides
2022-01-08 22:38:53 +03:00
Theo Arends
e5d576b507 Prep v10.1.0 2021-12-08 11:14:35 +01:00
Theo Arends
329d76346f Merge branch 'development' into pre-release-10.1.0 2021-12-08 11:11:02 +01:00
Theo Arends
6d5227ba75 Merge branch 'development' into pre-release-10.0.0 2021-10-19 09:48:58 +02:00
Theo Arends
0ccf7de945 Merge branch 'development' into pre-release-10.0.0 2021-10-19 09:45:10 +02:00
Theo Arends
8c4ab12e9a Merge branch 'development' into pre-release-10.0.0 2021-10-19 09:24:00 +02:00
Theo Arends
6decedbb31 Update README.md 2021-10-18 17:09:10 +02:00
Theo Arends
8d61740a9f Merge branch 'development' into pre-release-10.0.0 2021-10-18 17:01:46 +02:00
Theo Arends
388db0e795 Merge branch 'development' into pre-release-10.0.0 2021-10-17 17:54:24 +02:00
Theo Arends
d696c00d3f Merge branch 'development' into pre-release-10.0.0 2021-10-16 15:13:49 +02:00
Theo Arends
1e3bc9f8be Merge branch 'development' into pre-release-10.0.0 2021-10-16 10:57:17 +02:00
Theo Arends
b3a1fa99f2 Merge branch 'development' into pre-release-10.0.0 2021-10-15 13:15:21 +02:00
Theo Arends
d7847061b9 Merge branch 'development' into pre-release-10.0.0 2021-10-13 14:06:01 +02:00
Theo Arends
e2a8e39646 Update CHANGELOG.md 2021-10-13 11:36:02 +02:00
Theo Arends
9482079573 Update tasmota_version.h 2021-10-13 11:31:39 +02:00
Theo Arends
f100430125 Merge branch 'development' into pre-release-9.6.0 2021-10-13 11:30:46 +02:00
Theo Arends
c1d61c9eb0 Merge branch 'development' into pre-release-9.6.0 2021-10-12 11:34:11 +02:00
Theo Arends
e96ce2f637 Merge branch 'development' into pre-release-9.6.0 2021-10-10 16:41:47 +02:00
Theo Arends
838ab4f553 Merge branch 'development' into pre-release-9.6.0 2021-10-08 14:42:12 +02:00
Theo Arends
cbc74ab873 Merge branch 'development' into pre-release-9.5.0 2021-06-17 09:44:42 +02:00
Theo Arends
92994455c4 Merge branch 'development' into pre-release-9.5.0 2021-06-15 10:20:06 +02:00
Theo Arends
1fe0160ef6 Merge branch 'development' into pre-release-9.5.0 2021-06-15 09:24:32 +02:00
Theo Arends
15b75422b5 Merge branch 'development' into pre-release-9.5.0 2021-06-14 19:36:38 +02:00
Theo Arends
1b40bfb336 Merge branch 'development' into pre-release-9.5.0 2021-06-14 16:48:05 +02:00
Theo Arends
aacb37ecfc Update changelog 2021-06-14 15:47:20 +02:00
Theo Arends
9ac9e0460a Merge branch 'development' into pre-release-9.5.0 2021-06-14 15:44:31 +02:00
Theo Arends
6f03368c85 Merge branch 'development' into pre-release-9.5.0 2021-06-14 14:32:38 +02:00
Theo Arends
330a12efe4 Merge branch 'development' into pre-release-9.5.0 2021-06-14 11:59:07 +02:00
Theo Arends
fab0cd88c2 Merge branch 'development' into pre-release-9.5.0 2021-06-14 10:08:42 +02:00
Theo Arends
ed23cd8d95 Merge branch 'development' into pre-release-9.5.0 2021-06-13 17:38:15 +02:00
Theo Arends
7defc325f1 Merge branch 'development' into pre-release-9.5.0 2021-06-13 15:33:07 +02:00
Theo Arends
30cbc1b1e5 Merge branch 'development' into pre-release-9.5.0 2021-06-13 12:32:31 +02:00
Theo Arends
61adb53da6 Push rebuild 2021-04-23 12:05:20 +02:00
Theo Arends
9e008008c3 Merge branch 'development' into pre-release-9.4.0 2021-04-23 11:31:05 +02:00
Theo Arends
f5d1594a6b Update languages 2021-04-21 18:03:01 +02:00
Theo Arends
80d72ecbf5 Update Spanish and Italian 2021-04-21 17:38:17 +02:00
Theo Arends
0150c9e809 Merge branch 'development' into pre-release-9.4.0 2021-04-21 15:37:37 +02:00
Theo Arends
7e532a87f9 Merge branch 'development' into pre-release-9.4.0 2021-04-21 14:37:44 +02:00
Theo Arends
4052903810 Merge branch 'development' into pre-release-9.4.0 2021-04-21 13:51:53 +02:00
Theo Arends
04c1262bc2 Merge branch 'development' into pre-release-9.4.0 2021-04-21 12:47:09 +02:00
Theo Arends
851c839c53 Merge branch 'development' into pre-release-9.4.0 2021-04-21 11:33:15 +02:00
Theo Arends
c88152c14e Merge branch 'development' into pre-release-9.4.0 2021-04-16 17:31:25 +02:00
Theo Arends
08fa219a88 Merge branch 'development' into pre-release-9.4.0 2021-04-14 17:48:00 +02:00
Theo Arends
adbb5f8d53 Merge branch 'development' into pre-release-9.4.0 2021-04-14 17:02:57 +02:00
Theo Arends
71268e5aae Prep 9.4.0 2021-04-14 16:53:04 +02:00
Theo Arends
9f21938c2c Merge branch 'development' into pre-release-9.4.0 2021-04-14 16:49:36 +02:00
Theo Arends
ebb998ea06 Merge branch 'development' into pre-release-9.4.0 2021-04-14 16:24:42 +02:00
Theo Arends
e6e00c80cc Merge branch 'development' into pre-release-9.4.0 2021-04-14 14:34:20 +02:00
Theo Arends
7e3b7ddc69 Prep release 9.4.0 2021-04-14 12:50:33 +02:00
Theo Arends
31c6075a84 Merge branch 'development' into pre-release-9.4.0 2021-04-14 12:47:02 +02:00
Theo Arends
92c0eb000f Update xsns_05_ds18x20.ino
Fix DS18x20 driver timing issue (#11270)
2021-03-09 16:53:59 +01:00
Theo Arends
3f7071c6b9 Merge branch 'development' into pre-release-9.3.0 2021-02-23 12:00:31 +01:00
Theo Arends
cabe894933 Merge branch 'development' into pre-release-9.3.0 2021-02-22 14:18:00 +01:00
Theo Arends
b6f283d8d8 Update README.md 2021-02-21 12:35:28 +01:00
Theo Arends
5e3c1b6415 Merge branch 'development' into pre-release-9.3.0 2021-02-21 12:35:19 +01:00
Theo Arends
96d4e60680 pre-release 9.3.0 2021-02-19 11:06:32 +01:00
Theo Arends
488edab49c Merge branch 'development' into pre-release-9.3.0 2021-02-19 10:58:43 +01:00
Theo Arends
45cd73940d Merge branch 'development' into pre-release-9.3.0 2021-02-18 14:36:10 +01:00
Theo Arends
25033908cd Merge branch 'development' into pre-release-9.3.0 2021-02-18 13:07:17 +01:00
Theo Arends
b75520cde9 Merge branch 'development' into pre-release-9.3.0 2021-02-16 15:57:24 +01:00
Theo Arends
3374990115 Merge branch 'development' into pre-release-9.3.0 2021-02-15 11:52:15 +01:00
Theo Arends
2b34c6843a Merge branch 'development' into pre-release-9.3.0 2021-02-12 15:19:21 +01:00
Theo Arends
e7a27893b3 Merge branch 'development' into pre-release-9.3.0 2021-02-12 11:01:37 +01:00
Theo Arends
d37b9db08d Merge branch 'development' into pre-release-9.3.0 2021-02-11 15:15:51 +01:00
Theo Arends
c74c0d9d10
Merge pull request #10639 from arendst/revert-10598-master
Revert "Added ENS160 (Air quality) and ENS210 (Temperature & Humidity) sensor"
2021-01-20 17:07:11 +01:00
Theo Arends
4cc0f05cb1
Revert "Added ENS160 (Air quality) and ENS210 (Temperature & Humidity) sensor" 2021-01-20 17:06:50 +01:00
Theo Arends
ec14623169
Merge pull request #10598 from chrfriese123/master
Added ENS160 (Air quality) and ENS210 (Temperature & Humidity) sensor
2021-01-20 17:04:24 +01:00
chrfriese123
dc73b67a61 Added ENS160 (Air quality) and ENS210 (Temperature & Humidity) sensor 2021-01-17 15:26:10 +00:00
Theo Arends
fa0e8867af Merge branch 'pre-release-9.2.0' 2020-12-23 18:31:24 +01:00
Theo Arends
6afb2767f7 Updated workflows 2020-12-23 18:30:21 +01:00
Theo Arends
6cb9b3ce80
Merge pull request #10241 from Jason2866/revert-10238-patch-3
Revert "Build firmware from Master branch"
2020-12-23 16:13:00 +01:00
Jason2866
39f31d8cdf
Revert "Build firmware from Master branch" 2020-12-23 15:57:37 +01:00
Theo Arends
e1d44b9dfa
Merge pull request #10238 from Jason2866/patch-3
Build firmware from Master branch
2020-12-23 15:28:25 +01:00
Jason2866
0c36bcb25c
Build firmware from Master branch 2020-12-23 15:23:57 +01:00
Theo Arends
0489d3fc9a Add backported fixes 2020-12-21 15:01:04 +01:00
Theo Arends
3ba19e1552 Add backported fixes 2020-12-21 14:27:21 +01:00
Theo Arends
08ec5cecda Release 9.2.0 2020-12-17 12:29:31 +01:00
Theo Arends
0d505baa0e
Merge pull request #10158 from arendst/changelog-plus-1
changelog but better
2020-12-17 12:19:17 +01:00
blakadder
fd6a9fdc90
changelog but better
added hyperlinks to pulls/issues for convenience
2020-12-17 11:56:23 +01:00
Theo Arends
386dbbd878 Merge branch 'development' into pre-release-9.2.0 2020-12-17 10:03:33 +01:00
Theo Arends
797f82dc27 Merge branch 'development' into pre-release-9.2.0 2020-12-16 15:31:19 +01:00
Theo Arends
c09f966f41 Merge branch 'development' into pre-release-9.2.0 2020-12-15 16:45:59 +01:00
Theo Arends
829397f4ed Merge branch 'development' into pre-release-9.2.0 2020-12-13 17:41:26 +01:00
Theo Arends
198ec55473 Merge branch 'development' into pre-release-9.2.0 2020-12-13 12:17:35 +01:00
Theo Arends
1c24df6df8 Merge branch 'development' into pre-release-9.2.0 2020-12-10 15:50:42 +01:00
Theo Arends
83f76e2432 Merge branch 'development' into pre-release-9.2.0 2020-12-08 16:21:08 +01:00
Theo Arends
fa8a6bc0e5 Merge branch 'development' into pre-release-9.2.0 2020-12-08 11:08:52 +01:00
Theo Arends
603f08291a Update CHANGELOG.md 2020-12-07 12:08:44 +01:00
Theo Arends
ae793c8f2d Merge branch 'development' into pre-release-9.2.0 2020-12-07 11:59:34 +01:00
Theo Arends
556156f73f Merge branch 'development' into pre-release-9.2.0 2020-12-06 16:36:18 +01:00
Theo Arends
e035bdb71f Fix default dimmer step 2020-11-07 11:10:41 +01:00
Theo Arends
16ffdb6f49 Merge branch 'development' into pre-release-9.1.0 2020-11-05 11:38:35 +01:00
Theo Arends
76decfaa43 Merge branch 'development' into pre-release-9.1.0 2020-11-05 10:22:32 +01:00
Theo Arends
b369e87385 Merge branch 'development' into pre-release-9.1.0 2020-11-05 10:01:38 +01:00
Theo Arends
4f92d4984f Merge branch 'development' into pre-release-9.1.0 2020-11-04 16:59:29 +01:00
Theo Arends
68f8ea6f39 Merge branch 'development' into pre-release-9.1.0 2020-11-03 16:45:17 +01:00
Theo Arends
1838c582b3 Merge branch 'development' into pre-release-9.1.0 2020-11-02 14:48:47 +01:00
Theo Arends
8255468f9c Merge branch 'development' into pre-release-9.1.0 2020-11-01 17:43:13 +01:00
Theo Arends
e217ab49d9 Merge branch 'development' into pre-release-9.1.0 2020-11-01 15:22:33 +01:00
Theo Arends
a73b2d1e09 Merge branch 'development' into pre-release-9.1.0 2020-10-26 16:48:54 +01:00
Theo Arends
584ae41cb7 Merge branch 'development' into pre-release-9.1.0 2020-10-25 15:22:30 +01:00
Theo Arends
e076b50dfc Prep release 8.5.1 2020-10-02 11:47:47 +02:00
Theo Arends
e1df24be17 Merge branch 'development' into pre-release-8.5.1 2020-10-02 10:05:54 +02:00
Theo Arends
b1782f32ca Merge branch 'development' into pre-release-8.5.1 2020-10-01 15:41:22 +02:00
Theo Arends
61d6a1240b Prep release 8.5.1 2020-10-01 15:38:29 +02:00
Theo Arends
c987f4357e Merge branch 'development' into pre-release-8.5.1 2020-10-01 15:23:09 +02:00
Theo Arends
ed50401812 Update RELEASENOTES.md 2020-09-14 10:54:55 +02:00
Theo Arends
ec4bc1fb98
Merge pull request #9299 from Jason2866/8.5.0
fix pio setup
2020-09-13 18:26:02 +02:00
Jason2866
4c906a794a Merge branch '8.5.0' of https://github.com/Jason2866/Tasmota into 8.5.0 2020-09-13 18:23:11 +02:00
Jason2866
20d545e873 del cpp 2020-09-13 18:23:07 +02:00
Jason2866
e84bbe9e64
Delete tasmota.ino.cpp 2020-09-13 18:21:02 +02:00
Jason2866
43b0831cb2 fix pio setup 2020-09-13 18:16:57 +02:00
Theo Arends
92766df1a5 Remove binaries from release page 2020-09-09 12:31:20 +02:00
Theo Arends
8bac4981ea Fix energy total counters
Fix energy total counters (#9263, #9266)
2020-09-09 11:38:18 +02:00
Theo Arends
a89f208da0 Update CHANGELOG.md 2020-09-07 14:06:54 +02:00
Theo Arends
3041f9dccb Merge branch 'development' into pre-release-850 2020-09-07 10:31:54 +02:00
Theo Arends
fe3f705448 Merge branch 'development' into pre-release-850 2020-09-06 18:44:27 +02:00
Theo Arends
33a44f7a39 Merge branch 'development' into pre-release-850 2020-09-05 14:18:55 +02:00
Theo Arends
efd4a6b542 Merge branch 'development' into pre-release-850 2020-09-02 15:00:36 +02:00
Theo Arends
69765f5706 Prep release 8.5.0 2020-09-02 10:58:50 +02:00
Theo Arends
3195ce7b14 Merge branch 'development' into pre-release-850 2020-09-02 10:49:12 +02:00
Theo Arends
b59a8a7966 Merge branch 'pre-release-840' 2020-07-29 16:16:19 +02:00
Theo Arends
da704f4ecb Revert "Prep release 8.4.0"
This reverts commit f14f1d7798b8272caaa932ad5d8d34ac89b5d504.
2020-07-29 16:13:53 +02:00
Theo Arends
f14f1d7798 Prep release 8.4.0 2020-07-29 16:06:10 +02:00
Theo Arends
99feefba84 Merge branch 'development' into pre-release-840 2020-07-29 14:49:20 +02:00
Theo Arends
9a3307a73f Prep release 8.4.0 2020-07-29 11:18:56 +02:00
Theo Arends
5b3d673dea Merge branch 'pre-release' 2020-05-18 15:32:45 +02:00
Theo Arends
fddc15db70 Merge branch 'pre-release' 2020-05-18 14:24:10 +02:00
Theo Arends
04263f3969 Merge branch 'pre-release' 2020-05-18 14:22:05 +02:00
Theo Arends
e66f17c6bb Merge branch 'pre-release' 2020-05-18 10:08:59 +02:00
Theo Arends
f10257fd29 Merge branch 'pre-release' 2020-05-18 10:06:47 +02:00
Theo Arends
ae2c50cbe4 Merge branch 'pre-release' 2020-05-14 16:15:58 +02:00
Theo Arends
c6b02fb1e1 Merge branch 'pre-release' 2020-05-14 15:43:22 +02:00
Theo Arends
b5fb079228 Merge branch 'pre-release' 2020-05-14 15:36:06 +02:00
Theo Arends
7e5f3aa006 Merge branch 'pre-release' 2020-05-14 09:55:50 +02:00
Theo Arends
0fa559d143 Merge branch 'release' 2020-03-21 11:01:17 +01:00
Theo Arends
f2f8b5efa9
Merge pull request #7811 from Jason2866/patch-1
Fix compile fail with latest PlatformIO
2020-02-28 14:20:51 +01:00
Jason2866
11d37cc15b
Update platformio_tasmota_env.ini 2020-02-28 14:14:26 +01:00
Jason2866
99b15fe056
Update .gitpod.yml 2020-02-28 14:06:48 +01:00
Jason2866
19836d1136
Update platformio_override_sample.ini 2020-02-28 14:01:48 +01:00
Jason2866
3e4975831a
Update platformio.ini 2020-02-28 13:57:45 +01:00
Jason2866
cc8ae7c7a7
Update platformio_tasmota_env.ini 2020-02-28 13:55:40 +01:00
Jason2866
10f2d17a5a
Fix compile fail with latest PlatformIO 2020-02-28 13:48:56 +01:00
Jason2866
1198246572
Delete platformio.ini 2020-02-28 13:47:06 +01:00
Theo Arends
7138ddd80a Merge branch 'release' 2019-12-25 13:13:19 +01:00
Theo Arends
27bcc29421 Change basic version string to lite (#7291)
Change basic version string to lite (#7291)
2019-12-22 14:23:01 +01:00
Theo Arends
4c7283c292 Fix failing downgrade (#7285)
Fix failing downgrade (#7285)
2019-12-22 11:44:40 +01:00
Theo Arends
257f3d2808 Fix restore parameters
Fix restore ShutterAccuracy, MqttLog, WifiConfig, WifiPower and SerialConfig (#7281)
2019-12-21 18:55:58 +01:00
Theo Arends
5e4c5f67e6 Fix no AP on initial install
Fix no AP on initial install (#7282)
2019-12-21 18:01:09 +01:00
Theo Arends
4dab991d09 Fix Arduino IDE compile error
Fix Arduino IDE compile error (#7277)
2019-12-21 17:10:14 +01:00
19 changed files with 492 additions and 649 deletions

View File

@ -1,234 +1,234 @@
name: Build_firmware_master
on:
workflow_dispatch: # Start a workflow
push:
branches: master
paths-ignore:
- '.github/**' # Ignore changes towards the .github directory
- '**.md' # Do no build if *.md files changes
# Ensures that only one deploy task per branch/environment will run at a time.
concurrency:
group: environment-${{ github.ref }}
cancel-in-progress: true
jobs:
safeboot-images:
runs-on: ubuntu-latest
if: github.repository == 'arendst/Tasmota'
continue-on-error: true
strategy:
matrix:
variant:
- tasmota32-safeboot
- tasmota32solo1-safeboot
- tasmota32c2-safeboot
- tasmota32c3-safeboot
- tasmota32c3ser-safeboot
- tasmota32s2-safeboot
- tasmota32s2cdc-safeboot
- tasmota32s3-safeboot
- tasmota32s3ser-safeboot
- tasmota32c6-safeboot
- tasmota32c6ser-safeboot
steps:
- uses: actions/checkout@v4
with:
ref: master
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install dependencies
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 safeboot firmware artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.variant }}
path: ./build_output
base-images:
runs-on: ubuntu-latest
if: github.repository == 'arendst/Tasmota'
continue-on-error: true
strategy:
matrix:
variant:
- tasmota
- tasmota-4M
- tasmota-minimal
- tasmota-display
- tasmota-ir
- tasmota-knx
- tasmota-lite
- tasmota-sensors
- tasmota-zbbridge
- tasmota-zigbee
steps:
- uses: actions/checkout@v4
with:
ref: master
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install dependencies
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: actions/upload-artifact@v4
with:
name: ${{ matrix.variant }}
path: ./build_output
base32-images:
needs: safeboot-images
runs-on: ubuntu-latest
if: github.repository == 'arendst/Tasmota'
continue-on-error: true
strategy:
matrix:
variant:
- tasmota32
- tasmota32-zbbrdgpro
- tasmota32-webcam
- tasmota32-bluetooth
- tasmota32-nspanel
- tasmota32-display
- tasmota32-ir
- tasmota32-lvgl
- tasmota32c2
- tasmota32c3
- tasmota32c6
- tasmota32s2
- tasmota32s2cdc
- tasmota32s3
- tasmota32solo1
steps:
- uses: actions/checkout@v4
with:
ref: master
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install dependencies
run: |
pip install wheel
pip install -U platformio
cp ./platformio_override_sample.ini ./platformio_override.ini
- name: Download safeboot firmwares
uses: actions/download-artifact@v4
with:
pattern: tasmota32*
path: ./temp
- name: Move safeboot files
run: |
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: actions/upload-artifact@v4
with:
name: ${{ matrix.variant }}
path: ./build_output
language-images:
needs: safeboot-images
runs-on: ubuntu-latest
if: github.repository == 'arendst/Tasmota'
continue-on-error: true
strategy:
matrix:
variant: [ tasmota, tasmota32 ]
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:
ref: master
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install dependencies
run: |
pip install wheel
pip install -U platformio
cp ./platformio_override_sample.ini ./platformio_override.ini
- name: Download safeboot firmwares
uses: actions/download-artifact@v4
with:
pattern: tasmota32*
path: ./temp
- name: Move safeboot files
run: |
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: actions/upload-artifact@v4
with:
name: ${{ matrix.variant }}-${{ matrix.language }}
path: ./build_output
Release:
needs: [base-images, base32-images, language-images]
runs-on: ubuntu-latest
continue-on-error: true
steps:
- uses: actions/checkout@v4
- name: Download all Tasmota artifacts
uses: actions/download-artifact@v4
with:
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 ./release/
- name: Release
uses: jason2866/action-gh-release@v1.2
#if: startsWith(github.ref, 'refs/tags/')
with:
tag_name: ${{ github.run_number }}
files: |
./release/tasmota*
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Start_final_copy:
needs: Release
runs-on: ubuntu-latest
steps:
- name: Dispatch workflow in arendst/Tasmota-firmware
run: |
curl -X POST https://api.github.com/repos/arendst/Tasmota-firmware/actions/workflows/fetch_deploy.yml/dispatches \
-H 'Accept: application/vnd.github.everest-preview+json' \
-u ${{ secrets.API_TOKEN_GITHUB }} \
--data '{"ref": "gh_actions"}'
name: Build_firmware_master
on:
workflow_dispatch: # Start a workflow
push:
branches: master
paths-ignore:
- '.github/**' # Ignore changes towards the .github directory
- '**.md' # Do no build if *.md files changes
# Ensures that only one deploy task per branch/environment will run at a time.
concurrency:
group: environment-${{ github.ref }}
cancel-in-progress: true
jobs:
safeboot-images:
runs-on: ubuntu-latest
if: github.repository == 'arendst/Tasmota'
continue-on-error: true
strategy:
matrix:
variant:
- tasmota32-safeboot
- tasmota32solo1-safeboot
- tasmota32c2-safeboot
- tasmota32c3-safeboot
- tasmota32c3ser-safeboot
- tasmota32s2-safeboot
- tasmota32s2cdc-safeboot
- tasmota32s3-safeboot
- tasmota32s3ser-safeboot
- tasmota32c6-safeboot
- tasmota32c6ser-safeboot
steps:
- uses: actions/checkout@v4
with:
ref: master
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install dependencies
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 safeboot firmware artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.variant }}
path: ./build_output
base-images:
runs-on: ubuntu-latest
if: github.repository == 'arendst/Tasmota'
continue-on-error: true
strategy:
matrix:
variant:
- tasmota
- tasmota-4M
- tasmota-minimal
- tasmota-display
- tasmota-ir
- tasmota-knx
- tasmota-lite
- tasmota-sensors
- tasmota-zbbridge
- tasmota-zigbee
steps:
- uses: actions/checkout@v4
with:
ref: master
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install dependencies
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: actions/upload-artifact@v4
with:
name: ${{ matrix.variant }}
path: ./build_output
base32-images:
needs: safeboot-images
runs-on: ubuntu-latest
if: github.repository == 'arendst/Tasmota'
continue-on-error: true
strategy:
matrix:
variant:
- tasmota32
- tasmota32-zbbrdgpro
- tasmota32-webcam
- tasmota32-bluetooth
- tasmota32-nspanel
- tasmota32-display
- tasmota32-ir
- tasmota32-lvgl
- tasmota32c2
- tasmota32c3
- tasmota32c6
- tasmota32s2
- tasmota32s2cdc
- tasmota32s3
- tasmota32solo1
steps:
- uses: actions/checkout@v4
with:
ref: master
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install dependencies
run: |
pip install wheel
pip install -U platformio
cp ./platformio_override_sample.ini ./platformio_override.ini
- name: Download safeboot firmwares
uses: actions/download-artifact@v4
with:
pattern: tasmota32*
path: ./temp
- name: Move safeboot files
run: |
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: actions/upload-artifact@v4
with:
name: ${{ matrix.variant }}
path: ./build_output
language-images:
needs: safeboot-images
runs-on: ubuntu-latest
if: github.repository == 'arendst/Tasmota'
continue-on-error: true
strategy:
matrix:
variant: [ tasmota, tasmota32 ]
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:
ref: master
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install dependencies
run: |
pip install wheel
pip install -U platformio
cp ./platformio_override_sample.ini ./platformio_override.ini
- name: Download safeboot firmwares
uses: actions/download-artifact@v4
with:
pattern: tasmota32*
path: ./temp
- name: Move safeboot files
run: |
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: actions/upload-artifact@v4
with:
name: ${{ matrix.variant }}-${{ matrix.language }}
path: ./build_output
Release:
needs: [base-images, base32-images, language-images]
runs-on: ubuntu-latest
continue-on-error: true
steps:
- uses: actions/checkout@v4
- name: Download all Tasmota artifacts
uses: actions/download-artifact@v4
with:
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 ./release/
- name: Release
uses: jason2866/action-gh-release@v1.2
#if: startsWith(github.ref, 'refs/tags/')
with:
tag_name: ${{ github.run_number }}
files: |
./release/tasmota*
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Start_final_copy:
needs: Release
runs-on: ubuntu-latest
steps:
- name: Dispatch workflow in arendst/Tasmota-firmware
run: |
curl -X POST https://api.github.com/repos/arendst/Tasmota-firmware/actions/workflows/fetch_deploy.yml/dispatches \
-H 'Accept: application/vnd.github.everest-preview+json' \
-u ${{ secrets.API_TOKEN_GITHUB }} \
--data '{"ref": "gh_actions"}'

View File

@ -1,25 +1,6 @@
# Changelog
All notable changes to this project will be documented in this file.
## [Unreleased] - Development
## [14.6.0.1]
### Added
- Command `JsonPP 0..7` to enable (>0) JSON Pretty Print on user interfaces and set number of indents
- Command `JsonPP <command>|backlog <command>;...` to enable JSON PP only once
### Breaking Changed
### Changed
### Fixed
- Berry `bytes().asstring()` now truncates a string if buffer contains NULL (#23311)
- Berry string literals containing NULL are truncated (#23312)
### Removed
## [Released]
## [14.6.0] 20250416

View File

@ -114,17 +114,58 @@ 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 v14.6.0.1
## Changelog v14.6.0 Ryan
### Added
- Command `JsonPP 0..7` to enable (>0) JSON Pretty Print on user interfaces and set number of indents
- Command `JsonPP <command>|backlog <command>;...` to enable JSON PP only once
- Filesystem command ``UfsList[2]``
- Extend command `GPIO` with different display options and allowing updating of module GPIO's in one go
- Support Vango Technologies V924x ultralow power, single-phase, power measurement [#23127](https://github.com/arendst/Tasmota/issues/23127)
- Support for HLK-LD2402 24GHz smart wave motion sensor [#23133](https://github.com/arendst/Tasmota/issues/23133)
- Support for Telnet server using command `Telnet <0|1|port>[,<IP filter>]` if enabled with `#define USE_TELNET`
- Support for XMODEM over serial and telnet if enabled with `#define USE_XYZMODEM`
- PZEM_AC device address in JSON and GUI [#23268](https://github.com/arendst/Tasmota/issues/23268)
- Allow acl in mqtt when client certificate is in use with `#define USE_MQTT_CLIENT_CERT` [#22998](https://github.com/arendst/Tasmota/issues/22998)
- AlpineJS 2.8.2 - optional for now [#23259](https://github.com/arendst/Tasmota/issues/23259)
- ESP32 show network interface priority in `Status 5` debug logging [#23302](https://github.com/arendst/Tasmota/issues/23302)
- Berry experimental driver for AXP2101 for M5Core2v1.1 [#23039](https://github.com/arendst/Tasmota/issues/23039)
- Berry `tasmota.when_network_up()` and simplified Matter using it [#23057](https://github.com/arendst/Tasmota/issues/23057)
- Berry `introspect.solidified()` to know if a Berry object is solidified or in RAM [#23063](https://github.com/arendst/Tasmota/issues/23063)
- Berry `global.undef()` to undefine a global variable [#23073](https://github.com/arendst/Tasmota/issues/23073)
- Berry load `.tapp` files in `/.extensions/` then in `/` [#23113](https://github.com/arendst/Tasmota/issues/23113)
- Berry `re.dump()` [#23162](https://github.com/arendst/Tasmota/issues/23162)
- Berry `bytes.add()` now accepts 3-bytes values [#23200](https://github.com/arendst/Tasmota/issues/23200)
- Berry expose `esp_http_server` for websockets [#23206](https://github.com/arendst/Tasmota/issues/23206)
- Matter prepare for ICD cluster [#23158](https://github.com/arendst/Tasmota/issues/23158)
- LVGL experimental mirroring of display on Web UI [#23041](https://github.com/arendst/Tasmota/issues/23041)
- HASPmota autostart when `pages.jsonl` exists [#23181](https://github.com/arendst/Tasmota/issues/23181)
### Breaking Changed
- Berry remove `Leds.create_matrix` from the standard library waiting for reimplementation [#23114](https://github.com/arendst/Tasmota/issues/23114)
- HASPmota added `y2_min` and `y2_max` to control the second series of `chart` [#23287](https://github.com/arendst/Tasmota/issues/23287)
- HASPmota default theme is now Tasmota-style [#23288](https://github.com/arendst/Tasmota/issues/23288)
### Changed
- ESP32 Platform from 2025.02.30 to 2025.04.30, Framework (Arduino Core) from v3.1.1.250203 to v3.1.3.250411 and IDF from v5.3.2.250120 to 5.3.2.250403 [#23280](https://github.com/arendst/Tasmota/issues/23280)
- Output of commands `GPIO` and `GPIOs` swapped
- Smoothen light gamma curve when using `Fade` [#23230](https://github.com/arendst/Tasmota/issues/23230)
- RCSwitch `RCSWITCH_SEPARATION_LIMIT` from 4100 to 3600
- GPIOViewer from v1.6.1 to v1.6.2 (No functional change)
- HLK-LD2402 updates for firmware 3.3.5+ [#23281](https://github.com/arendst/Tasmota/issues/23281)
- ESP8266 enable FTP for >= 4MB variants [#23120](https://github.com/arendst/Tasmota/issues/23120)
- ESP32 enable webcam version 2 [#18732](https://github.com/arendst/Tasmota/issues/18732)
- Berry update flasher for Sonoff ZBBridge Pro [#23136](https://github.com/arendst/Tasmota/issues/23136)
- Berry `re` now accepts `bytes()` as precompiled patterns, added `re.compilebytes()` [#23149](https://github.com/arendst/Tasmota/issues/23149)
- LVGL, prepare for HASPmota theme, change: no-grow when clicked, DPI set to 160 [#23040](https://github.com/arendst/Tasmota/issues/23040)
- LVGL Mirroring add checkbox to enable/disable the feature (in the iterim for a better solution) [#23047](https://github.com/arendst/Tasmota/issues/23047)
- Leds Panel add checkbox to enable/disable the feature (in the iterim for a better solution) [#23048](https://github.com/arendst/Tasmota/issues/23048)
### Fixed
- 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)
- Too many zeros in RCSwitch received data regression from v14.4.1.4 [#23050](https://github.com/arendst/Tasmota/issues/23050)
- INA226 driver fixes [#23197](https://github.com/arendst/Tasmota/issues/23197)
- TLS increase timeout and fix crash [#23249](https://github.com/arendst/Tasmota/issues/23249)
- ESP32 receive incomplete serial data over 128 bytes [#23156](https://github.com/arendst/Tasmota/issues/23156)
- ESP32 intermittent exception on WiFi AP cannot be reached [#23115](https://github.com/arendst/Tasmota/issues/23115)
- ESP32-C3 WiFi sleep [#23096](https://github.com/arendst/Tasmota/issues/23096)
- Berry prevent `import` from hiding a solidified class [#23112](https://github.com/arendst/Tasmota/issues/23112)
- Berry `readline` when a line is exactly 98 characters [#23276](https://github.com/arendst/Tasmota/issues/23276)
### Removed

View File

@ -1,128 +0,0 @@
/**
* 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,4 +69,127 @@ 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

@ -806,8 +806,7 @@ static int m_asstring(bvm *vm)
{
buf_impl attr = bytes_check_data(vm, 0);
check_ptr(vm, &attr);
size_t safe_len = strnlen((const char*) attr.bufptr, attr.len);
be_pushnstring(vm, (const char*) attr.bufptr, safe_len);
be_pushnstring(vm, (const char*) attr.bufptr, attr.len);
be_return(vm);
}

View File

@ -284,8 +284,7 @@ static void tr_string(blexer *lexer)
break;
}
}
size_t len = dst - lexbuf(lexer);
lexer->buf.len = strnlen(lexbuf(lexer), len);
lexer->buf.len = dst - lexbuf(lexer);
}
static int skip_newline(blexer *lexer)

View File

@ -354,9 +354,3 @@ assert(b.appendb64(c, 2) == bytes("AABBCC49673D3D"))
b = bytes("AABBCC")
assert(bytes().fromstring(bytes("11").tob64()) == bytes('45513D3D'))
assert(b.appendb64(c, 1, 1) == bytes("AABBCC45513D3D"))
#- asstring truncates if NULL is present -#
s=bytes("414243").asstring()
assert(size(s) == 3)
s=bytes("410000").asstring()
assert(size(s) == 1)

View File

@ -84,6 +84,3 @@ var malformed_numbers = [
for i : malformed_numbers
test_source(i, 'malformed number')
end
#- ensure that string literal with NULL character is truncated -#
assert(size('aa\000bb\000cc') == 2)

View File

@ -272,7 +272,6 @@
// Commands tasmota.ino
#define D_CMND_BACKLOG "Backlog"
#define D_CMND_JSON "Json"
#define D_CMND_JSON_PP "JsonPP"
#define D_CMND_DELAY "Delay"
#define D_CMND_NODELAY "NoDelay"
#define D_CMND_STATUS "Status"

View File

@ -16,10 +16,9 @@ class TASCONSOLE {
virtual void begin(uint32_t) = 0;
virtual void flush() = 0;
virtual size_t println() = 0;
virtual size_t println(const char*) = 0;
virtual size_t print(char*) = 0;
virtual size_t printf(const char*, char*, const char*&, const char*&, const char*&) = 0;
virtual size_t printf(char*) = 0;
virtual size_t print(char *) = 0;
virtual size_t printf(const char*, char *, const char*&, const char*&, const char*&) = 0;
virtual size_t printf(char *) = 0;
virtual size_t read() = 0;
virtual size_t write(uint8_t) = 0;
virtual size_t write(const uint8_t *buf, size_t size) = 0;
@ -50,11 +49,7 @@ public:
return object->println();
}
size_t println(const char *string) {
return object->println(string);
}
size_t print(char *string) {
size_t print(char * string) {
return object->print(string);
}
@ -101,15 +96,10 @@ public:
object.flush();
}
size_t println() override {
size_t println() override {
return object.println();
}
size_t println(const char *string) override {
return object.println(string);
}
size_t print(char *string) override {
size_t print(char * string) override {
return object.print(string);
}

View File

@ -252,7 +252,9 @@ typedef union {
uint32_t spare13 : 1; // bit 13
uint32_t spare14 : 1; // bit 14
uint32_t spare15 : 1; // bit 15
uint32_t json_pretty_print : 3; // bit 16.18 (v14.6.0.1) - JSON pretty print log data no or indent
uint32_t spare16 : 1; // bit 16
uint32_t spare17 : 1; // bit 17
uint32_t spare18 : 1; // bit 18
uint32_t dali_group_sliders : 5; // bit 19.23 (v14.3.0.3) - (DALI) Number of group sliders 0 to 16
uint32_t FTP_Mode : 2; // bit 24/25
uint32_t tariff_forced : 2; // bit 26/27 (v12.4.0.2) - Energy forced tariff : 0=tariff change on time, 1|2=tariff forced

View File

@ -22,6 +22,6 @@
#define TASMOTA_SHA_SHORT // Filled by Github sed
const uint32_t TASMOTA_VERSION = 0x0E060001; // 14.6.0.1
const uint32_t TASMOTA_VERSION = 0x0E060000; // 14.6.0.0
#endif // _TASMOTA_VERSION_H_

View File

@ -28,7 +28,7 @@
* Use online command StateText to translate ON, OFF, HOLD and TOGGLE.
* Use online command Prefix to translate cmnd, stat and tele.
*
* Updated until v9.4.0.1 - Last update 17.04.2025
* Updated until v9.4.0.1 - Last update 12.03.2025
\*********************************************************************/
#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English)
@ -52,7 +52,7 @@
// Common
#define D_ABSOLUTE_HUMIDITY "Umidità ass"
#define D_ADDRESS "Indirizzo"
#define D_ADDRESS "Address"
#define D_ADMIN "Admin"
#define D_AIR_QUALITY "Qualità dell'aria"
#define D_AP "AP" // Access Point

View File

@ -2611,95 +2611,6 @@ bool GetLog(uint32_t req_loglevel, uint32_t* index_p, char** entry_pp, size_t* l
return false;
}
bool LogDataJsonPrettyPrint(const char *log_line, uint32_t log_data_len, std::function<void(const char*, uint32_t)> println) {
// log_line:
// 14:49:36.123 MQTT: stat/wemos5/RESULT = {"POWER":"OFF"}
// 14:30:16.749-172/38 MQT: tele/atomlite3/INFO3 = {"Info3":{"RestartReason":"Vbat power on reset","BootCount":74}}
if (!Settings->mbflag2.json_pretty_print) { return false; } // [JsonPP] Number of indents
char *bch = (char*)memchr(log_line, '{', log_data_len);
if (!bch) { return false; } // No JSON data
uint32_t pos_brace = bch - log_line;
uint32_t cnt_brace = 0; // {}
uint32_t len_mxtime = strchr(log_line, ' ') - log_line +2;
uint32_t pos_value_pair = pos_brace;
uint32_t cnt_bracket = 0; // []
uint32_t cnt_Indent = 0; // indent
bool quotes = false; // ""
bool bracket_comma = false;
bool pls_print = false;
for (uint32_t i = pos_brace; i < log_data_len; i++) {
char curchar = log_line[i];
char nxtchar = log_line[i +1];
cnt_Indent = cnt_brace + cnt_bracket;
if (curchar == '{') {
cnt_brace++;
pls_print = true;
}
else if (cnt_brace) {
if (nxtchar == '}') {
pls_print = true;
}
if (curchar == '}') {
cnt_brace--;
if (cnt_brace) {
if (nxtchar != ',') {
pls_print = true;
cnt_Indent = cnt_brace + cnt_bracket;
}
} else {
pls_print = true;
cnt_Indent = 0;
}
}
else if (curchar == '[') {
cnt_bracket++;
if (nxtchar == '[') {
pls_print = true;
}
}
else if (curchar == ']') {
cnt_bracket--;
if (nxtchar == ',') {
bracket_comma = true;
}
else {
pls_print = true;
if ((nxtchar == ']') || (nxtchar == '}')) {
cnt_Indent = cnt_brace + cnt_bracket;
}
}
}
else if (curchar == '"') {
quotes ^= 1;
}
else if (curchar == ',') {
if (!quotes && (!cnt_bracket || bracket_comma)) {
bracket_comma = false;
pls_print = true;
}
}
}
if (pls_print) {
pls_print = false;
uint32_t len_id = (pos_brace == i) ? pos_brace +1 : len_mxtime;
uint32_t len_indent = cnt_Indent * Settings->mbflag2.json_pretty_print;
uint32_t len_value_pair = (i - pos_value_pair) +1;
uint32_t len_full = len_id + len_indent + len_value_pair +1;
char line[len_full]; // Known max value pair size is 152
strlcpy(line, log_line, len_id); // Repeat mxtime
sprintf(line, "%s%*s", line, len_indent, ""); // Add space indent
strncat(line, log_line + pos_value_pair, len_value_pair);
println(line, strlen(line)); // Callback for output
pos_value_pair = i +1;
}
}
return true;
}
uint32_t HighestLogLevel(void) {
uint32_t highest_loglevel = TasmotaGlobal.seriallog_level;
if (Settings->seriallog_level > highest_loglevel) { highest_loglevel = Settings->seriallog_level; }
@ -2749,9 +2660,7 @@ void AddLogData(uint32_t loglevel, const char* log_data, const char* log_data_pa
if ((loglevel <= TasmotaGlobal.seriallog_level) &&
(TasmotaGlobal.masterlog_level <= TasmotaGlobal.seriallog_level)) {
if (!Settings->mbflag2.json_pretty_print || !strchr(log_data_payload, '{')) {
TasConsole.printf("%s%s%s%s\r\n", mxtime, log_data, log_data_payload, log_data_retained);
}
TasConsole.printf("%s%s%s%s\r\n", mxtime, log_data, log_data_payload, log_data_retained);
}
if (!TasmotaGlobal.log_buffer) { return; } // Leave now if there is no buffer available
@ -2798,14 +2707,6 @@ void AddLogData(uint32_t loglevel, const char* log_data, const char* log_data_pa
// These calls fail to show initial logging
log_line += 2; // Skip log_buffer_pointer and loglevel
// 14:49:36.123 MQTT: stat/wemos5/RESULT = {"POWER":"OFF"}
// 14:30:16.749-172/38 MQT: tele/atomlite3/INFO3 = {"Info3":{"RestartReason":"Vbat power on reset","BootCount":74}}
if ((loglevel <= TasmotaGlobal.seriallog_level) &&
(TasmotaGlobal.masterlog_level <= TasmotaGlobal.seriallog_level)) {
LogDataJsonPrettyPrint(log_line, log_data_len, TasConsoleLDJsonPPCb);
}
#ifdef USE_SERIAL_BRIDGE
if (loglevel <= TasmotaGlobal.seriallog_level) {
SerialBridgeWrite(log_line, log_data_len);
@ -2822,10 +2723,6 @@ void AddLogData(uint32_t loglevel, const char* log_data, const char* log_data_pa
}
}
void TasConsoleLDJsonPPCb(const char* line, uint32_t len) {
TasConsole.println(line);
}
void AddLog(uint32_t loglevel, PGM_P formatP, ...) {
#ifdef ESP32
if (xPortInIsrContext()) {

View File

@ -29,18 +29,18 @@ const char kTasmotaCommands[] PROGMEM = "|" // No prefix
D_CMND_VOLTAGE_RESOLUTION "|" D_CMND_FREQUENCY_RESOLUTION "|" D_CMND_CURRENT_RESOLUTION "|" D_CMND_ENERGY_RESOLUTION "|" D_CMND_WEIGHT_RESOLUTION "|"
D_CMND_MODULE "|" D_CMND_MODULES "|" D_CMND_GPIO "|" D_CMND_GPIOREAD "|" D_CMND_GPIOS "|" D_CMND_TEMPLATE "|" D_CMND_PWM "|" D_CMND_PWMFREQUENCY "|" D_CMND_PWMRANGE "|"
D_CMND_BUTTONDEBOUNCE "|" D_CMND_SWITCHDEBOUNCE "|" D_CMND_SYSLOG "|" D_CMND_LOGHOST "|" D_CMND_LOGPORT "|"
#ifdef USE_UFILESYS
D_CMND_FILELOG "|"
#endif // USE_UFILESYS
D_CMND_SERIALBUFFER "|" D_CMND_SERIALSEND "|" D_CMND_BAUDRATE "|" D_CMND_SERIALCONFIG "|" D_CMND_SERIALDELIMITER "|"
D_CMND_IPADDRESS "|" D_CMND_NTPSERVER "|" D_CMND_AP "|" D_CMND_SSID "|" D_CMND_PASSWORD "|" D_CMND_HOSTNAME "|" D_CMND_WIFICONFIG "|" D_CMND_WIFI "|" D_CMND_DNSTIMEOUT "|"
D_CMND_DEVICENAME "|" D_CMND_FN "|" D_CMND_FRIENDLYNAME "|" D_CMND_SWITCHMODE "|" D_CMND_INTERLOCK "|" D_CMND_TELEPERIOD "|" D_CMND_RESET "|"
D_CMND_TIME "|" D_CMND_TIMEZONE "|" D_CMND_TIMESTD "|" D_CMND_TIMEDST "|" D_CMND_ALTITUDE "|"
D_CMND_LEDPOWER "|" D_CMND_LEDSTATE "|" D_CMND_LEDMASK "|" D_CMND_LEDPWM_ON "|" D_CMND_LEDPWM_OFF "|" D_CMND_LEDPWM_MODE "|"
D_CMND_WIFIPOWER "|" D_CMND_TEMPOFFSET "|" D_CMND_HUMOFFSET "|" D_CMND_SPEEDUNIT "|" D_CMND_GLOBAL_TEMP "|" D_CMND_GLOBAL_HUM"|" D_CMND_GLOBAL_PRESS "|" D_CMND_SWITCHTEXT "|"
D_CMND_WIFISCAN "|" D_CMND_WIFITEST "|" D_CMND_ZIGBEE_BATTPERCENT "|"
D_CMND_DEVICENAME "|" D_CMND_FN "|" D_CMND_FRIENDLYNAME "|" D_CMND_SWITCHMODE "|" D_CMND_INTERLOCK "|" D_CMND_TELEPERIOD "|" D_CMND_RESET "|" D_CMND_TIME "|" D_CMND_TIMEZONE "|" D_CMND_TIMESTD "|"
D_CMND_TIMEDST "|" D_CMND_ALTITUDE "|" D_CMND_LEDPOWER "|" D_CMND_LEDSTATE "|" D_CMND_LEDMASK "|" D_CMND_LEDPWM_ON "|" D_CMND_LEDPWM_OFF "|" D_CMND_LEDPWM_MODE "|"
D_CMND_WIFIPOWER "|" D_CMND_TEMPOFFSET "|" D_CMND_HUMOFFSET "|" D_CMND_SPEEDUNIT "|" D_CMND_GLOBAL_TEMP "|" D_CMND_GLOBAL_HUM"|" D_CMND_GLOBAL_PRESS "|" D_CMND_SWITCHTEXT "|" D_CMND_WIFISCAN "|" D_CMND_WIFITEST "|"
D_CMND_ZIGBEE_BATTPERCENT "|"
#ifdef USE_I2C
D_CMND_I2CSCAN "|" D_CMND_I2CDRIVER "|"
#endif
#ifdef USE_DEVICE_GROUPS
D_CMND_DEVGROUP_NAME "|"
#ifdef USE_DEVICE_GROUPS_SEND
@ -48,20 +48,14 @@ const char kTasmotaCommands[] PROGMEM = "|" // No prefix
#endif // USE_DEVICE_GROUPS_SEND
D_CMND_DEVGROUP_SHARE "|" D_CMND_DEVGROUPSTATUS "|" D_CMND_DEVGROUP_TIE "|"
#endif // USE_DEVICE_GROUPS
#ifdef USE_UFILESYS
D_CMND_FILELOG "|"
#endif // USE_UFILESYS
D_CMND_SETSENSOR "|" D_CMND_SENSOR "|" D_CMND_DRIVER "|" D_CMND_JSON
#ifdef ESP32
"|Info|"
"|Info|"
#if defined(SOC_TOUCH_VERSION_1) || defined(SOC_TOUCH_VERSION_2)
D_CMND_TOUCH_CAL "|" D_CMND_TOUCH_THRES "|"
#endif // ESP32 SOC_TOUCH_VERSION_1 or SOC_TOUCH_VERSION_2
D_CMND_CPU_FREQUENCY
#endif // ESP32
D_CMND_SETSENSOR "|" D_CMND_SENSOR "|" D_CMND_DRIVER "|" D_CMND_JSON "|" D_CMND_JSON_PP
#endif //FIRMWARE_MINIMAL
;
@ -78,18 +72,18 @@ void (* const TasmotaCommand[])(void) PROGMEM = {
&CmndVoltageResolution, &CmndFrequencyResolution, &CmndCurrentResolution, &CmndEnergyResolution, &CmndWeightResolution,
&CmndModule, &CmndModules, &CmndGpio, &CmndGpioRead, &CmndGpios, &CmndTemplate, &CmndPwm, &CmndPwmfrequency, &CmndPwmrange,
&CmndButtonDebounce, &CmndSwitchDebounce, &CmndSyslog, &CmndLoghost, &CmndLogport,
#ifdef USE_UFILESYS
&CmndFilelog,
#endif // USE_UFILESYS
&CmndSerialBuffer, &CmndSerialSend, &CmndBaudrate, &CmndSerialConfig, &CmndSerialDelimiter,
&CmndIpAddress, &CmndNtpServer, &CmndAp, &CmndSsid, &CmndPassword, &CmndHostname, &CmndWifiConfig, &CmndWifi, &CmndDnsTimeout,
&CmndDevicename, &CmndFriendlyname, &CmndFriendlyname, &CmndSwitchMode, &CmndInterlock, &CmndTeleperiod, &CmndReset,
&CmndTime, &CmndTimezone, &CmndTimeStd, &CmndTimeDst, &CmndAltitude,
&CmndLedPower, &CmndLedState, &CmndLedMask, &CmndLedPwmOn, &CmndLedPwmOff, &CmndLedPwmMode,
&CmndWifiPower, &CmndTempOffset, &CmndHumOffset, &CmndSpeedUnit, &CmndGlobalTemp, &CmndGlobalHum, &CmndGlobalPress, &CmndSwitchText,
&CmndWifiScan, &CmndWifiTest, &CmndBatteryPercent,
&CmndDevicename, &CmndFriendlyname, &CmndFriendlyname, &CmndSwitchMode, &CmndInterlock, &CmndTeleperiod, &CmndReset, &CmndTime, &CmndTimezone, &CmndTimeStd,
&CmndTimeDst, &CmndAltitude, &CmndLedPower, &CmndLedState, &CmndLedMask, &CmndLedPwmOn, &CmndLedPwmOff, &CmndLedPwmMode,
&CmndWifiPower, &CmndTempOffset, &CmndHumOffset, &CmndSpeedUnit, &CmndGlobalTemp, &CmndGlobalHum, &CmndGlobalPress, &CmndSwitchText, &CmndWifiScan, &CmndWifiTest,
&CmndBatteryPercent,
#ifdef USE_I2C
&CmndI2cScan, &CmndI2cDriver,
#endif
#ifdef USE_DEVICE_GROUPS
&CmndDevGroupName,
#ifdef USE_DEVICE_GROUPS_SEND
@ -97,20 +91,14 @@ void (* const TasmotaCommand[])(void) PROGMEM = {
#endif // USE_DEVICE_GROUPS_SEND
&CmndDevGroupShare, &CmndDevGroupStatus, &CmndDevGroupTie,
#endif // USE_DEVICE_GROUPS
#ifdef USE_UFILESYS
&CmndFilelog,
#endif // USE_UFILESYS
&CmndSetSensor, &CmndSensor, &CmndDriver, &CmndJson
#ifdef ESP32
&CmndInfo,
, &CmndInfo,
#if defined(SOC_TOUCH_VERSION_1) || defined(SOC_TOUCH_VERSION_2)
&CmndTouchCal, &CmndTouchThres,
#endif // ESP32 SOC_TOUCH_VERSION_1 or SOC_TOUCH_VERSION_2
&CmndCpuFrequency,
&CmndCpuFrequency
#endif // ESP32
&CmndSetSensor, &CmndSensor, &CmndDriver, &CmndJson, &CmndJsonPP
#endif //FIRMWARE_MINIMAL
};
@ -664,35 +652,6 @@ void CmndDelay(void) {
ResponseCmndNumber(bl_delay);
}
void CmndJsonPP(void) {
// JsonPP 0 - Disable JSON Pretty Print
// JsonPP 1..7 - Enable JSON Pretty Print with 1..7 indent spaces
// JsonPP <command> - If not enabled, enable JSON PP with 1 indent, execute command and restore JsonPP
// JsonPP Backlog <command>;... - If not enabled, enable JSON PP with 1 indent, execute command and restore JsonPP
if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 7)) {
Settings->mbflag2.json_pretty_print = XdrvMailbox.payload;
}
else if (XdrvMailbox.data_len) {
uint32_t last_json_pretty_print = Settings->mbflag2.json_pretty_print;
if (0 == Settings->mbflag2.json_pretty_print) {
Settings->mbflag2.json_pretty_print = 1; // Default 1 indent if not set
}
bool backlog = (strchr(XdrvMailbox.data, ';') != nullptr);
String cmnds = XdrvMailbox.data;
if (!last_json_pretty_print && backlog) {
cmnds += ";_JsonPP ";
cmnds += last_json_pretty_print; // Restore JsonPP after execution of backlog commands
}
ExecuteCommand((char*)cmnds.c_str(), SRC_IGNORE);
if (!last_json_pretty_print && !backlog) { // Restore JsonPP after execution of single command
Settings->mbflag2.json_pretty_print = last_json_pretty_print;
}
ResponseClear();
return;
}
ResponseCmndNumber(Settings->mbflag2.json_pretty_print);
}
void CmndPower(void)
{
if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= TasmotaGlobal.devices_present)) {

View File

@ -500,7 +500,6 @@ struct WEB {
bool upload_services_stopped = false;
bool reset_web_log_flag = false; // Reset web console log
bool initial_config = false;
bool cflg;
} Web;
/*********************************************************************************************/
@ -3738,24 +3737,18 @@ void HandleConsoleRefresh(void) {
index = 0;
Web.reset_web_log_flag = true;
}
Web.cflg = (index);
bool cflg = (index);
char* line;
size_t len;
while (GetLog(Settings->weblog_level, &index, &line, &len)) {
if (!LogDataJsonPrettyPrint(line, len -1, WSContentSendLDJsonPPCb)) {
WSContentSendLDJsonPPCb(line, len -1);
}
if (cflg) { WSContentSend_P(PSTR("\n")); }
WSContentSend(line, len -1);
cflg = true;
}
WSContentSend_P(PSTR("}1"));
WSContentEnd();
}
void WSContentSendLDJsonPPCb(const char* line, uint32_t len) {
if (Web.cflg) { WSContentSend_P(PSTR("\n")); }
WSContentSend(line, len);
Web.cflg = true;
}
/********************************************************************************************/
void HandleNotFound(void) {

View File

@ -65,9 +65,8 @@ enum XTrim1aModes { XYZT_NONE, XYZT_TRIM, XYZT_AUTO };
enum XReceiveModes { XYZD_NONE, XYZD_SOH, XYZD_BLK1, XYZD_BLK2, XYZD_DATA };
enum XYZFileSteps { XYZM_IDLE,
XYZM_SEND, XYZM_SND_ACK,
XYZM_RECEIVE, XYZM_RCV_START, XYZM_RCV_EOT,
XYZM_ERROR, XYZM_DONE };
XYZM_SEND, XYZM_SEOT, XYZM_ACKT, XYZM_COMPLETE, XYZM_ERROR, XYZM_DONE,
XYZM_RECEIVE, XYZM_RCV_START, XYZM_RCV_EOT };
enum XReceiveStates { XYZS_OK, XYZS_TIMEOUT, XYZS_EOT, XYZS_CAN, XYZS_OTHER, XYZS_CHECKSUM, XYZS_PACKET, XYZS_FILE };
@ -713,7 +712,8 @@ void XModemSendStart(void) {
XYZFile.step = XYZM_SEND;
AddLog(LOG_LEVEL_DEBUG, PSTR("XMD: Send started"));
} else {
XYZModemInit();
XYZFile.step = XYZM_SEOT;
AddLog(LOG_LEVEL_DEBUG, PSTR("XMD: Send aborted"));
}
}
@ -738,8 +738,8 @@ bool XYZModemLoop(void) {
// *** Send
case XYZM_SEND: { // *** Handle file send using XModem - upload
if (XYZModemFileAvailable()) {
if (XYZFile.byte_counter && !(XYZFile.byte_counter % 10240)) { // Show progress every 10KB
AddLog(LOG_LEVEL_DEBUG, PSTR("XMD: Progress %d KB"), XYZFile.byte_counter / 1024);
if (XYZFile.byte_counter && !(XYZFile.byte_counter % 10240)) { // Show progress every 10kB
AddLog(LOG_LEVEL_DEBUG, PSTR("XMD: Progress %d kB"), XYZFile.byte_counter / 1024);
}
if (!XYZModemSend(XYZModem.packet_no)) {
AddLog(LOG_LEVEL_DEBUG, PSTR("XMD: Packet %d send failed"), XYZModem.packet_no);
@ -748,16 +748,21 @@ bool XYZModemLoop(void) {
}
XYZModem.packet_no++;
} else {
// Once the last block is ACKed by the target, the transfer should be finalized by an
// EOT (ASCII 0x04) packet from the source. This packet is confirmed via XModem ACK
// from the target.
XYZModemWrite(XYZM_EOT); // *** Send EOT
XYZModem.timeout = millis() + (30 * 1000); // Allow 30 seconds to receive EOT ACK
XYZFile.step = XYZM_SND_ACK;
XYZFile.step = XYZM_SEOT;
AddLog(LOG_LEVEL_DEBUG, PSTR("XMD: Send %d bytes"), XYZFile.size);
}
break;
}
case XYZM_SND_ACK: { // *** Wait for ACK
case XYZM_SEOT: { // *** Send EOT and wait for ACK
// Once the last block is ACKed by the target, the transfer should be finalized by an
// EOT (ASCII 0x04) packet from the source. This packet is confirmed via XModem ACK
// from the target.
XYZModemWrite(XYZM_EOT);
XYZModem.timeout = millis() + (30 * 1000); // Allow 30 seconds to receive EOT ACK
XYZFile.step = XYZM_ACKT;
break;
}
case XYZM_ACKT: { // *** Send EOT and wait for ACK
// The ACK for the last XModem data packet may take much longer (1-3 seconds) than prior
// data packets to be received.
if (millis() > XYZModem.timeout) {
@ -773,8 +778,9 @@ bool XYZModemLoop(void) {
return true;
}
else if (XYZM_ACK == xmodem_ack) {
// !!! Send an AddLog here as it previously would interfere with XModem protocol !!!
AddLog(LOG_LEVEL_INFO, PSTR("XMD: Send %d bytes succesful"), XYZFile.size);
AddLog(LOG_LEVEL_DEBUG, PSTR("XMD: Successful"));
XYZModem.timeout = millis() + (30 * 1000); // Allow 30 seconds
XYZFile.byte_counter = 0;
XYZFile.step = XYZM_DONE;
}
}
@ -801,15 +807,16 @@ bool XYZModemLoop(void) {
break;
}
case XYZM_RCV_START: {
if (XYZFile.byte_counter && !(XYZFile.byte_counter % 10240)) { // Show progress every 10KB
AddLog(LOG_LEVEL_DEBUG, PSTR("XMD: Progress %d KB"), XYZFile.byte_counter / 1024);
if (XYZFile.byte_counter && !(XYZFile.byte_counter % 10240)) { // Show progress every 10kB
AddLog(LOG_LEVEL_DEBUG, PSTR("XMD: Progress %d kB"), XYZFile.byte_counter / 1024);
}
int result = XYZModemReceive(XYZModem.packet_no);
if (result) {
switch (result) {
case XYZS_EOT: {
AddLog(LOG_LEVEL_DEBUG, PSTR("XMD: Received %d bytes"), XYZFile.byte_counter);
AddLog(LOG_LEVEL_DEBUG, PSTR("XMD: Successful"));
XYZModemFileWriteEot(1);
AddLog(LOG_LEVEL_INFO, PSTR("XMD: Received %d bytes succesful"), XYZFile.byte_counter);
XYZFile.step = XYZM_DONE;
break;
}
@ -868,6 +875,17 @@ bool XYZModemLoop(void) {
break;
}
// *** Finish
case XYZM_COMPLETE: { // *** Wait for send complete
if (millis() > XYZModem.timeout) {
AddLog(LOG_LEVEL_DEBUG, PSTR("XMD: Timeout"));
XYZFile.step = XYZM_ERROR;
return true;
} else {
XYZFile.state = XYZM_COMPLETE;
XYZFile.step = XYZM_DONE;
}
break;
}
case XYZM_ERROR:
XYZFile.state = XYZM_ERROR;
AddLog(LOG_LEVEL_DEBUG, PSTR("XMD: Failed"));

View File

@ -97,25 +97,6 @@ void TelnetWriteColor(uint32_t color) {
}
}
void TelnetLDJsonPPCb(const char* line, uint32_t len) {
uint32_t textcolor = Telnet.color[Telnet.prompt];
uint32_t diffcolor = textcolor;
if ((textcolor >= 30) && (textcolor <= 37)) {
diffcolor += 60; // Highlight color
}
else if ((textcolor >= 90) && (textcolor <= 97)) {
diffcolor -= 60; // Lowlight color
}
char* time_end = (char*)memchr(line, ' ', len); // Find first word (usually 14:49:36.123-017)
uint32_t time_len = time_end - line;
TelnetWriteColor(diffcolor);
Telnet.client.write(line, time_len);
TelnetWriteColor(textcolor);
Telnet.client.write(time_end, len - time_len);
TelnetWriteColor(0);
Telnet.client.println();
}
void TelnetWrite(char *line, uint32_t len) {
if (Telnet.client) {
if (3 == Telnet.prompt) { // Print linefeed for non-requested data
@ -123,10 +104,22 @@ void TelnetWrite(char *line, uint32_t len) {
Telnet.client.println();
}
// line = 14:49:36.123-017 MQTT: stat/wemos5/RESULT = {"POWER":"OFF"}
if (!LogDataJsonPrettyPrint(line, len, TelnetLDJsonPPCb)) {
TelnetLDJsonPPCb(line, len);
uint32_t textcolor = Telnet.color[Telnet.prompt];
uint32_t diffcolor = textcolor;
if ((textcolor >= 30) && (textcolor <= 37)) {
diffcolor += 60; // Highlight color
}
else if ((textcolor >= 90) && (textcolor <= 97)) {
diffcolor -= 60; // Lowlight color
}
char* time_end = (char*)memchr(line, ' ', len); // Find first word (usually 14:49:36.123-017)
uint32_t time_len = time_end - line;
TelnetWriteColor(diffcolor);
Telnet.client.write(line, time_len);
TelnetWriteColor(textcolor);
Telnet.client.write(time_end, len - time_len);
TelnetWriteColor(0);
Telnet.client.println();
}
}
@ -189,24 +182,10 @@ void TelnetLoop(void) {
}
// Input keyboard data
bool telnet_iac = false;
while (Telnet.client.available()) {
yield();
uint8_t in_byte = Telnet.client.read();
if (telnet_iac) {
telnet_iac = false;
if (in_byte != 0xFF) {
// Process telnet Interpret as Command (IAC) codes
AddLog(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_TELNET "IAC %d"), in_byte);
continue;
}
}
else if (0xFF == in_byte) { // Telnet Interpret as Command (IAC)
telnet_iac = true;
continue;
}
#ifdef USE_XYZMODEM
if (XYZModemWifiClientStart(&Telnet.client, in_byte)) { return; }
#endif // USE_XYZMODEM