Compare commits

...

22 Commits

Author SHA1 Message Date
Johannes
e49f18b125 Update pages.py 2022-06-16 23:16:19 +02:00
Armilar
689f9e8bf8 Bugfix by Grrzzz - Subpages - Issue #286 2022-06-16 22:43:28 +02:00
Armilar
4646781d93 Bugfix by Grrzzz - Subpages - Issue #286 2022-06-16 22:42:06 +02:00
Armilar
c0521bac9e Use localString for time, date and multilingualism
- Date/time in the screensaver based on localString (de-DE/en-EN/nl-NL/etc.)
- Multilingual - config.locale (en-EN, de-DE, nl-NL, da-DK, es-ES, fr-FR, it-IT, ru-RU)
2022-06-16 22:18:37 +02:00
Johannes
4e57b15206 Update pages.py 2022-06-16 19:53:48 +02:00
Armilar
3d927393a4 Language File
en-EN, de-DE, nl-NL, da-DK, es-ES, fr-FR, it-IT, ru-RU
2022-06-16 19:43:11 +02:00
Johannes
41b48a0237 add issue config 2022-06-16 19:18:05 +02:00
Johannes
6b9e8d6b92 Merge branch 'main' of https://github.com/joBr99/nspanel-lovelace-ui 2022-06-16 19:04:21 +02:00
Johannes
bb07f36327 check type for every button press call 2022-06-16 19:04:14 +02:00
joBr99
5c50bad008 extended length of bText to 20 (add nextion2text) 2022-06-16 16:54:49 +00:00
Johannes
229002088f extended length of bText to 20 2022-06-16 18:54:18 +02:00
Johannes
ae33905463 change link to normal version 2022-06-15 21:49:08 +02:00
joBr99
035a4b5129 extended cardEntities value char limit to 15 (add nextion2text) 2022-06-15 18:19:11 +00:00
Johannes
0be532bbce extended cardEntities value char limit to 15 2022-06-15 20:18:42 +02:00
Johannes
a2a42add20 add color overwrite to statusIcons #233 2022-06-15 17:24:00 +02:00
Johannes
2b252d4327 additional fix for #284 2022-06-15 16:25:31 +02:00
Armilar
e84ce9cc1b V3.0.0 + Bugfix: Sub-Page closes on Button Action (Fix by Grrzzz) 2022-06-14 22:45:37 +02:00
Armilar
69a5dd323d V3.0.0 + Bugfix: Sub-Page closes on Button Action (Fix by Grrzzz) 2022-06-14 22:42:08 +02:00
Armilar
c7346ed02c Bugfix - Sub-Page closes on Button Action - (Many thanks to Grrzzz) 2022-06-14 22:37:22 +02:00
Johannes
57c5449dfc improve error handling navigation 2022-06-14 22:13:41 +02:00
Armilar
bf2023aa3e Bugfix - Sub-Page closes on Button Action - (Many thanks to Grrzzz) 2022-06-14 21:53:56 +02:00
Johannes
754f0dd4a7 Update card-media.md 2022-06-14 21:24:38 +02:00
23 changed files with 521 additions and 328 deletions

5
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: NsPanel Lovelace UI Docs
url: https://docs.nspanel.pky.eu
about: All the information related to flashing and configuration.

View File

@@ -1,6 +1,6 @@
diff -bur HMI/n2t-out/Program.s.txt HMI/US/landscape/n2t-out/Program.s.txt
--- HMI/n2t-out/Program.s.txt 2022-06-12 12:21:18.432756347 +0000
+++ HMI/US/landscape/n2t-out/Program.s.txt 2022-06-12 12:21:19.348768343 +0000
--- HMI/n2t-out/Program.s.txt 2022-06-16 16:54:47.818443964 +0000
+++ HMI/US/landscape/n2t-out/Program.s.txt 2022-06-16 16:54:48.686499319 +0000
@@ -11,6 +11,4 @@
// dim value
int dimValue=40
@@ -9,8 +9,8 @@ diff -bur HMI/n2t-out/Program.s.txt HMI/US/landscape/n2t-out/Program.s.txt
- lcd_dev fffb 0002 0000 0020
page pageStartup
diff -bur HMI/n2t-out/pageStartup.txt HMI/US/landscape/n2t-out/pageStartup.txt
--- HMI/n2t-out/pageStartup.txt 2022-06-12 12:21:18.432756347 +0000
+++ HMI/US/landscape/n2t-out/pageStartup.txt 2022-06-12 12:21:19.348768343 +0000
--- HMI/n2t-out/pageStartup.txt 2022-06-16 16:54:47.818443964 +0000
+++ HMI/US/landscape/n2t-out/pageStartup.txt 2022-06-16 16:54:48.690499574 +0000
@@ -177,7 +177,7 @@
recmod=1
bauds=115200

View File

@@ -83,63 +83,63 @@ Variable (string) strCommand
Variable (string) type1
Attributes
ID : 45
ID : 41
Scope : local
Text :
Max. Text Size: 10
Variable (string) type2
Attributes
ID : 46
ID : 42
Scope : local
Text :
Max. Text Size: 10
Variable (string) type3
Attributes
ID : 47
ID : 43
Scope : local
Text :
Max. Text Size: 10
Variable (string) type4
Attributes
ID : 48
ID : 44
Scope : local
Text :
Max. Text Size: 10
Variable (string) entn1
Attributes
ID : 49
ID : 45
Scope : local
Text :
Max. Text Size: 80
Variable (string) entn2
Attributes
ID : 50
ID : 46
Scope : local
Text :
Max. Text Size: 80
Variable (string) entn3
Attributes
ID : 51
ID : 47
Scope : local
Text :
Max. Text Size: 80
Variable (string) entn4
Attributes
ID : 52
ID : 48
Scope : local
Text :
Max. Text Size: 80
Number nNum1
Attributes
ID : 58
ID : 54
Scope : local
Dragging : 0
Disable release event after dragging: 0
@@ -169,7 +169,7 @@ Number nNum1
Number nNum2
Attributes
ID : 59
ID : 55
Scope : local
Dragging : 0
Disable release event after dragging: 0
@@ -199,7 +199,7 @@ Number nNum2
Number nNum3
Attributes
ID : 60
ID : 56
Scope : local
Dragging : 0
Disable release event after dragging: 0
@@ -229,7 +229,7 @@ Number nNum3
Number nNum4
Attributes
ID : 61
ID : 57
Scope : local
Dragging : 0
Disable release event after dragging: 0
@@ -275,7 +275,7 @@ Text tHeading
Fill : solid color
Style : flat
Associated Keyboard : none
Font ID : 2
Font ID : 1
Back. Color : 6371
Font Color : 65535
Horizontal Alignment : center
@@ -666,7 +666,7 @@ Picture p0
Slider hSlider1
Attributes
ID : 54
ID : 50
Scope : local
Dragging : 0
Disable release event after dragging: 0
@@ -709,7 +709,7 @@ Slider hSlider1
Slider hSlider2
Attributes
ID : 55
ID : 51
Scope : local
Dragging : 0
Disable release event after dragging: 0
@@ -752,7 +752,7 @@ Slider hSlider2
Slider hSlider3
Attributes
ID : 56
ID : 52
Scope : local
Dragging : 0
Disable release event after dragging: 0
@@ -795,7 +795,7 @@ Slider hSlider3
Slider hSlider4
Attributes
ID : 57
ID : 53
Scope : local
Dragging : 0
Disable release event after dragging: 0
@@ -1503,15 +1503,15 @@ Button bNext
Button bText1
Attributes
ID : 37
ID : 61
Scope : local
Dragging : 0
Disable release event after dragging: 0
Send Component ID : disabled
Opacity : 127
x coordinate : 292
x coordinate : 276
y coordinate : 84
Width : 145
Width : 166
Height : 30
Effect : load
Effect Priority : 0
@@ -1527,8 +1527,8 @@ Button bText1
Horizontal Alignment : right
Vertical Alignment : center
State : unpressed
Text : newtxt
Max. Text Size : 10
Text :
Max. Text Size : 20
Word wrap : disabled
Horizontal Spacing : 0
Vertical Spacing : 0
@@ -1550,15 +1550,15 @@ Button bText1
Button bText2
Attributes
ID : 38
ID : 62
Scope : local
Dragging : 0
Disable release event after dragging: 0
Send Component ID : disabled
Opacity : 127
x coordinate : 291
x coordinate : 276
y coordinate : 140
Width : 145
Width : 166
Height : 30
Effect : load
Effect Priority : 0
@@ -1574,8 +1574,8 @@ Button bText2
Horizontal Alignment : right
Vertical Alignment : center
State : unpressed
Text : newtxt
Max. Text Size : 10
Text :
Max. Text Size : 20
Word wrap : disabled
Horizontal Spacing : 0
Vertical Spacing : 0
@@ -1597,15 +1597,15 @@ Button bText2
Button bText3
Attributes
ID : 39
ID : 63
Scope : local
Dragging : 0
Disable release event after dragging: 0
Send Component ID : disabled
Opacity : 127
x coordinate : 292
x coordinate : 277
y coordinate : 197
Width : 145
Width : 166
Height : 30
Effect : load
Effect Priority : 0
@@ -1621,8 +1621,8 @@ Button bText3
Horizontal Alignment : right
Vertical Alignment : center
State : unpressed
Text : newtxt
Max. Text Size : 10
Text :
Max. Text Size : 20
Word wrap : disabled
Horizontal Spacing : 0
Vertical Spacing : 0
@@ -1644,15 +1644,15 @@ Button bText3
Button bText4
Attributes
ID : 40
ID : 64
Scope : local
Dragging : 0
Disable release event after dragging: 0
Send Component ID : disabled
Opacity : 127
x coordinate : 292
x coordinate : 277
y coordinate : 254
Width : 145
Width : 166
Height : 30
Effect : load
Effect Priority : 0
@@ -1668,8 +1668,8 @@ Button bText4
Horizontal Alignment : right
Vertical Alignment : center
State : unpressed
Text : newtxt
Max. Text Size : 10
Text :
Max. Text Size : 20
Word wrap : disabled
Horizontal Spacing : 0
Vertical Spacing : 0
@@ -1897,7 +1897,7 @@ Hotspot mSpecial
Hotspot m2
Attributes
ID : 41
ID : 37
Scope : local
Dragging : 0
Disable release event after dragging: 0
@@ -1905,7 +1905,7 @@ Hotspot m2
Opacity : 127
x coordinate : 40
y coordinate : 184
Width : 250
Width : 235
Height : 60
Effect : load
Effect Priority : 0
@@ -1928,7 +1928,7 @@ Hotspot m2
Hotspot m1
Attributes
ID : 42
ID : 38
Scope : local
Dragging : 0
Disable release event after dragging: 0
@@ -1936,7 +1936,7 @@ Hotspot m1
Opacity : 127
x coordinate : 39
y coordinate : 127
Width : 247
Width : 236
Height : 60
Effect : load
Effect Priority : 0
@@ -1959,7 +1959,7 @@ Hotspot m1
Hotspot m0
Attributes
ID : 43
ID : 39
Scope : local
Dragging : 0
Disable release event after dragging: 0
@@ -1967,7 +1967,7 @@ Hotspot m0
Opacity : 127
x coordinate : 37
y coordinate : 70
Width : 244
Width : 237
Height : 56
Effect : load
Effect Priority : 0
@@ -1990,7 +1990,7 @@ Hotspot m0
Hotspot m3
Attributes
ID : 44
ID : 40
Scope : local
Dragging : 0
Disable release event after dragging: 0
@@ -1998,7 +1998,7 @@ Hotspot m3
Opacity : 127
x coordinate : 38
y coordinate : 237
Width : 244
Width : 236
Height : 60
Effect : load
Effect Priority : 0
@@ -2021,7 +2021,7 @@ Hotspot m3
Hotspot mSwipeNext
Attributes
ID : 62
ID : 58
Scope : local
Dragging : 0
Disable release event after dragging: 0
@@ -2041,7 +2041,7 @@ Hotspot mSwipeNext
Hotspot mSwipeUp
Attributes
ID : 63
ID : 59
Scope : local
Dragging : 0
Disable release event after dragging: 0
@@ -2049,7 +2049,7 @@ Hotspot mSwipeUp
Opacity : 127
x coordinate : 12
y coordinate : 0
Width : 454
Width : 453
Height : 9
Effect : load
Effect Priority : 0
@@ -2061,7 +2061,7 @@ Hotspot mSwipeUp
Hotspot mSwipePrev
Attributes
ID : 64
ID : 60
Scope : local
Dragging : 0
Disable release event after dragging: 0
@@ -2953,7 +2953,7 @@ Timer tmSleep
TouchCap tc0
Attributes
ID : 53
ID : 49
Scope: local
Value: 0

View File

@@ -769,8 +769,8 @@ Button bText1
Disable release event after dragging: 0
Send Component ID : disabled
State : unpressed
Text : newtxt
Max. Text Size : 10
Text :
Max. Text Size : 20
Events
Touch Press Event
@@ -794,8 +794,8 @@ Button bText2
Disable release event after dragging: 0
Send Component ID : disabled
State : unpressed
Text : newtxt
Max. Text Size : 10
Text :
Max. Text Size : 20
Events
Touch Press Event
@@ -819,8 +819,8 @@ Button bText3
Disable release event after dragging: 0
Send Component ID : disabled
State : unpressed
Text : newtxt
Max. Text Size : 10
Text :
Max. Text Size : 20
Events
Touch Press Event
@@ -844,8 +844,8 @@ Button bText4
Disable release event after dragging: 0
Send Component ID : disabled
State : unpressed
Text : newtxt
Max. Text Size : 10
Text :
Max. Text Size : 20
Events
Touch Press Event

Binary file not shown.

Binary file not shown.

View File

@@ -1,6 +1,6 @@
diff -bur HMI/n2t-out/Program.s.txt HMI/US/portrait/n2t-out/Program.s.txt
--- HMI/n2t-out/Program.s.txt 2022-06-12 12:21:18.432756347 +0000
+++ HMI/US/portrait/n2t-out/Program.s.txt 2022-06-12 12:21:18.872762109 +0000
--- HMI/n2t-out/Program.s.txt 2022-06-16 16:54:47.818443964 +0000
+++ HMI/US/portrait/n2t-out/Program.s.txt 2022-06-16 16:54:48.242471004 +0000
@@ -11,6 +11,6 @@
// dim value
int dimValue=40
@@ -11,8 +11,8 @@ diff -bur HMI/n2t-out/Program.s.txt HMI/US/portrait/n2t-out/Program.s.txt
+ //lcd_dev fffb 0002 0000 0020
page pageStartup
diff -bur HMI/n2t-out/cardEntities.txt HMI/US/portrait/n2t-out/cardEntities.txt
--- HMI/n2t-out/cardEntities.txt 2022-06-12 12:21:18.436756399 +0000
+++ HMI/US/portrait/n2t-out/cardEntities.txt 2022-06-12 12:21:18.876762161 +0000
--- HMI/n2t-out/cardEntities.txt 2022-06-16 16:54:47.818443964 +0000
+++ HMI/US/portrait/n2t-out/cardEntities.txt 2022-06-16 16:54:48.242471004 +0000
@@ -63,6 +63,16 @@
vis bText4,0
vis hSlider4,0
@@ -213,8 +213,8 @@ diff -bur HMI/n2t-out/cardEntities.txt HMI/US/portrait/n2t-out/cardEntities.txt
+ Disable release event after dragging: 0
+ Send Component ID : disabled
+ State : unpressed
+ Text : newtxt
+ Max. Text Size : 10
+ Text :
+ Max. Text Size : 20
+
+ Events
+ Touch Press Event
@@ -468,8 +468,8 @@ diff -bur HMI/n2t-out/cardEntities.txt HMI/US/portrait/n2t-out/cardEntities.txt
if(tInstruction.txt=="pageType")
{
diff -bur HMI/n2t-out/pageStartup.txt HMI/US/portrait/n2t-out/pageStartup.txt
--- HMI/n2t-out/pageStartup.txt 2022-06-12 12:21:18.432756347 +0000
+++ HMI/US/portrait/n2t-out/pageStartup.txt 2022-06-12 12:21:18.872762109 +0000
--- HMI/n2t-out/pageStartup.txt 2022-06-16 16:54:47.818443964 +0000
+++ HMI/US/portrait/n2t-out/pageStartup.txt 2022-06-16 16:54:48.242471004 +0000
@@ -142,7 +142,7 @@
Disable release event after dragging: 0
Send Component ID : disabled

View File

@@ -1,16 +1,18 @@
+++ HMI/US/portrait/diff-eu-version.txt 2022-06-12 12:21:18.904762528 +0000
+--- HMI/n2t-out/Program.s.txt 2022-06-12 12:21:18.432756347 +0000
++++ HMI/US/portrait/n2t-out/Program.s.txt 2022-06-12 12:21:18.872762109 +0000
+--- HMI/n2t-out/cardEntities.txt 2022-06-12 12:21:18.436756399 +0000
++++ HMI/US/portrait/n2t-out/cardEntities.txt 2022-06-12 12:21:18.876762161 +0000
+++ HMI/US/portrait/diff-eu-version.txt 2022-06-16 16:54:48.258472024 +0000
+--- HMI/n2t-out/Program.s.txt 2022-06-16 16:54:47.818443964 +0000
++++ HMI/US/portrait/n2t-out/Program.s.txt 2022-06-16 16:54:48.242471004 +0000
+--- HMI/n2t-out/cardEntities.txt 2022-06-16 16:54:47.818443964 +0000
++++ HMI/US/portrait/n2t-out/cardEntities.txt 2022-06-16 16:54:48.242471004 +0000
+@@ -63,6 +63,16 @@
+@@ -120,6 +130,18 @@
+@@ -156,6 +178,15 @@
+@@ -286,6 +317,26 @@
+@@ -405,6 +456,34 @@
+@@ -862,6 +941,106 @@
++ Text :
++ Max. Text Size : 20
+@@ -970,6 +1149,33 @@
+@@ -1075,6 +1281,28 @@
+@@ -1850,6 +2078,169 @@
+--- HMI/n2t-out/pageStartup.txt 2022-06-12 12:21:18.432756347 +0000
++++ HMI/US/portrait/n2t-out/pageStartup.txt 2022-06-12 12:21:18.872762109 +0000
+--- HMI/n2t-out/pageStartup.txt 2022-06-16 16:54:47.818443964 +0000
++++ HMI/US/portrait/n2t-out/pageStartup.txt 2022-06-16 16:54:48.242471004 +0000

View File

@@ -1684,8 +1684,8 @@ Button bText1
Horizontal Alignment : right
Vertical Alignment : center
State : unpressed
Text : newtxt
Max. Text Size : 10
Text :
Max. Text Size : 20
Word wrap : disabled
Horizontal Spacing : 0
Vertical Spacing : 0
@@ -1731,8 +1731,8 @@ Button bText2
Horizontal Alignment : right
Vertical Alignment : center
State : unpressed
Text : newtxt
Max. Text Size : 10
Text :
Max. Text Size : 20
Word wrap : disabled
Horizontal Spacing : 0
Vertical Spacing : 0
@@ -1778,8 +1778,8 @@ Button bText3
Horizontal Alignment : right
Vertical Alignment : center
State : unpressed
Text : newtxt
Max. Text Size : 10
Text :
Max. Text Size : 20
Word wrap : disabled
Horizontal Spacing : 0
Vertical Spacing : 0
@@ -1825,8 +1825,8 @@ Button bText4
Horizontal Alignment : right
Vertical Alignment : center
State : unpressed
Text : newtxt
Max. Text Size : 10
Text :
Max. Text Size : 20
Word wrap : disabled
Horizontal Spacing : 0
Vertical Spacing : 0
@@ -2013,8 +2013,8 @@ Button bText5
Horizontal Alignment : right
Vertical Alignment : center
State : unpressed
Text : newtxt
Max. Text Size : 10
Text :
Max. Text Size : 20
Word wrap : disabled
Horizontal Spacing : 0
Vertical Spacing : 0

View File

@@ -848,8 +848,8 @@ Button bText1
Disable release event after dragging: 0
Send Component ID : disabled
State : unpressed
Text : newtxt
Max. Text Size : 10
Text :
Max. Text Size : 20
Events
Touch Press Event
@@ -873,8 +873,8 @@ Button bText2
Disable release event after dragging: 0
Send Component ID : disabled
State : unpressed
Text : newtxt
Max. Text Size : 10
Text :
Max. Text Size : 20
Events
Touch Press Event
@@ -898,8 +898,8 @@ Button bText3
Disable release event after dragging: 0
Send Component ID : disabled
State : unpressed
Text : newtxt
Max. Text Size : 10
Text :
Max. Text Size : 20
Events
Touch Press Event
@@ -923,8 +923,8 @@ Button bText4
Disable release event after dragging: 0
Send Component ID : disabled
State : unpressed
Text : newtxt
Max. Text Size : 10
Text :
Max. Text Size : 20
Events
Touch Press Event
@@ -1023,8 +1023,8 @@ Button bText5
Disable release event after dragging: 0
Send Component ID : disabled
State : unpressed
Text : newtxt
Max. Text Size : 10
Text :
Max. Text Size : 20
Events
Touch Press Event

Binary file not shown.

Binary file not shown.

View File

@@ -83,63 +83,63 @@ Variable (string) strCommand
Variable (string) type1
Attributes
ID : 45
ID : 41
Scope : local
Text :
Max. Text Size: 10
Variable (string) type2
Attributes
ID : 46
ID : 42
Scope : local
Text :
Max. Text Size: 10
Variable (string) type3
Attributes
ID : 47
ID : 43
Scope : local
Text :
Max. Text Size: 10
Variable (string) type4
Attributes
ID : 48
ID : 44
Scope : local
Text :
Max. Text Size: 10
Variable (string) entn1
Attributes
ID : 49
ID : 45
Scope : local
Text :
Max. Text Size: 80
Variable (string) entn2
Attributes
ID : 50
ID : 46
Scope : local
Text :
Max. Text Size: 80
Variable (string) entn3
Attributes
ID : 51
ID : 47
Scope : local
Text :
Max. Text Size: 80
Variable (string) entn4
Attributes
ID : 52
ID : 48
Scope : local
Text :
Max. Text Size: 80
Number nNum1
Attributes
ID : 58
ID : 54
Scope : local
Dragging : 0
Disable release event after dragging: 0
@@ -169,7 +169,7 @@ Number nNum1
Number nNum2
Attributes
ID : 59
ID : 55
Scope : local
Dragging : 0
Disable release event after dragging: 0
@@ -199,7 +199,7 @@ Number nNum2
Number nNum3
Attributes
ID : 60
ID : 56
Scope : local
Dragging : 0
Disable release event after dragging: 0
@@ -229,7 +229,7 @@ Number nNum3
Number nNum4
Attributes
ID : 61
ID : 57
Scope : local
Dragging : 0
Disable release event after dragging: 0
@@ -666,7 +666,7 @@ Picture p0
Slider hSlider1
Attributes
ID : 54
ID : 50
Scope : local
Dragging : 0
Disable release event after dragging: 0
@@ -709,7 +709,7 @@ Slider hSlider1
Slider hSlider2
Attributes
ID : 55
ID : 51
Scope : local
Dragging : 0
Disable release event after dragging: 0
@@ -752,7 +752,7 @@ Slider hSlider2
Slider hSlider3
Attributes
ID : 56
ID : 52
Scope : local
Dragging : 0
Disable release event after dragging: 0
@@ -795,7 +795,7 @@ Slider hSlider3
Slider hSlider4
Attributes
ID : 57
ID : 53
Scope : local
Dragging : 0
Disable release event after dragging: 0
@@ -1503,15 +1503,15 @@ Button bNext
Button bText1
Attributes
ID : 37
ID : 61
Scope : local
Dragging : 0
Disable release event after dragging: 0
Send Component ID : disabled
Opacity : 127
x coordinate : 277
x coordinate : 261
y coordinate : 84
Width : 145
Width : 166
Height : 30
Effect : load
Effect Priority : 0
@@ -1527,8 +1527,8 @@ Button bText1
Horizontal Alignment : right
Vertical Alignment : center
State : unpressed
Text : newtxt
Max. Text Size : 10
Text :
Max. Text Size : 20
Word wrap : disabled
Horizontal Spacing : 0
Vertical Spacing : 0
@@ -1550,15 +1550,15 @@ Button bText1
Button bText2
Attributes
ID : 38
ID : 62
Scope : local
Dragging : 0
Disable release event after dragging: 0
Send Component ID : disabled
Opacity : 127
x coordinate : 276
x coordinate : 261
y coordinate : 140
Width : 145
Width : 166
Height : 30
Effect : load
Effect Priority : 0
@@ -1574,8 +1574,8 @@ Button bText2
Horizontal Alignment : right
Vertical Alignment : center
State : unpressed
Text : newtxt
Max. Text Size : 10
Text :
Max. Text Size : 20
Word wrap : disabled
Horizontal Spacing : 0
Vertical Spacing : 0
@@ -1597,15 +1597,15 @@ Button bText2
Button bText3
Attributes
ID : 39
ID : 63
Scope : local
Dragging : 0
Disable release event after dragging: 0
Send Component ID : disabled
Opacity : 127
x coordinate : 277
x coordinate : 262
y coordinate : 197
Width : 145
Width : 166
Height : 30
Effect : load
Effect Priority : 0
@@ -1621,8 +1621,8 @@ Button bText3
Horizontal Alignment : right
Vertical Alignment : center
State : unpressed
Text : newtxt
Max. Text Size : 10
Text :
Max. Text Size : 20
Word wrap : disabled
Horizontal Spacing : 0
Vertical Spacing : 0
@@ -1644,15 +1644,15 @@ Button bText3
Button bText4
Attributes
ID : 40
ID : 64
Scope : local
Dragging : 0
Disable release event after dragging: 0
Send Component ID : disabled
Opacity : 127
x coordinate : 277
x coordinate : 262
y coordinate : 254
Width : 145
Width : 166
Height : 30
Effect : load
Effect Priority : 0
@@ -1668,8 +1668,8 @@ Button bText4
Horizontal Alignment : right
Vertical Alignment : center
State : unpressed
Text : newtxt
Max. Text Size : 10
Text :
Max. Text Size : 20
Word wrap : disabled
Horizontal Spacing : 0
Vertical Spacing : 0
@@ -1897,7 +1897,7 @@ Hotspot mSpecial
Hotspot m2
Attributes
ID : 41
ID : 37
Scope : local
Dragging : 0
Disable release event after dragging: 0
@@ -1905,7 +1905,7 @@ Hotspot m2
Opacity : 127
x coordinate : 25
y coordinate : 184
Width : 250
Width : 235
Height : 60
Effect : load
Effect Priority : 0
@@ -1928,7 +1928,7 @@ Hotspot m2
Hotspot m1
Attributes
ID : 42
ID : 38
Scope : local
Dragging : 0
Disable release event after dragging: 0
@@ -1936,7 +1936,7 @@ Hotspot m1
Opacity : 127
x coordinate : 24
y coordinate : 127
Width : 247
Width : 236
Height : 60
Effect : load
Effect Priority : 0
@@ -1959,7 +1959,7 @@ Hotspot m1
Hotspot m0
Attributes
ID : 43
ID : 39
Scope : local
Dragging : 0
Disable release event after dragging: 0
@@ -1967,7 +1967,7 @@ Hotspot m0
Opacity : 127
x coordinate : 22
y coordinate : 70
Width : 244
Width : 237
Height : 56
Effect : load
Effect Priority : 0
@@ -1990,7 +1990,7 @@ Hotspot m0
Hotspot m3
Attributes
ID : 44
ID : 40
Scope : local
Dragging : 0
Disable release event after dragging: 0
@@ -1998,7 +1998,7 @@ Hotspot m3
Opacity : 127
x coordinate : 23
y coordinate : 237
Width : 244
Width : 236
Height : 60
Effect : load
Effect Priority : 0
@@ -2021,7 +2021,7 @@ Hotspot m3
Hotspot mSwipeNext
Attributes
ID : 62
ID : 58
Scope : local
Dragging : 0
Disable release event after dragging: 0
@@ -2041,7 +2041,7 @@ Hotspot mSwipeNext
Hotspot mSwipeUp
Attributes
ID : 63
ID : 59
Scope : local
Dragging : 0
Disable release event after dragging: 0
@@ -2061,7 +2061,7 @@ Hotspot mSwipeUp
Hotspot mSwipePrev
Attributes
ID : 64
ID : 60
Scope : local
Dragging : 0
Disable release event after dragging: 0
@@ -2953,7 +2953,7 @@ Timer tmSleep
TouchCap tc0
Attributes
ID : 53
ID : 49
Scope: local
Value: 0

View File

@@ -769,8 +769,8 @@ Button bText1
Disable release event after dragging: 0
Send Component ID : disabled
State : unpressed
Text : newtxt
Max. Text Size : 10
Text :
Max. Text Size : 20
Events
Touch Press Event
@@ -794,8 +794,8 @@ Button bText2
Disable release event after dragging: 0
Send Component ID : disabled
State : unpressed
Text : newtxt
Max. Text Size : 10
Text :
Max. Text Size : 20
Events
Touch Press Event
@@ -819,8 +819,8 @@ Button bText3
Disable release event after dragging: 0
Send Component ID : disabled
State : unpressed
Text : newtxt
Max. Text Size : 10
Text :
Max. Text Size : 20
Events
Touch Press Event
@@ -844,8 +844,8 @@ Button bText4
Disable release event after dragging: 0
Send Component ID : disabled
State : unpressed
Text : newtxt
Max. Text Size : 10
Text :
Max. Text Size : 20
Events
Touch Press Event

Binary file not shown.

Binary file not shown.

View File

@@ -241,9 +241,13 @@ class LuiController(object):
if button_type == "button":
if entity_id.startswith('navigate'):
# internal for navigation to nested pages
self._previous_cards.append(self._current_card)
self._current_card = self._config.searchCard(entity_id)
self._pages_gen.render_card(self._current_card)
dstCard = self._config.searchCard(entity_id)
if dstCard is not None:
self._previous_cards.append(self._current_card)
self._current_card = dstCard
self._pages_gen.render_card(self._current_card)
else:
self._ha_api.log(f"No page with key {entity_id} found")
elif entity_id.startswith('scene'):
self._ha_api.get_entity(entity_id).call_service("turn_on")
elif entity_id.startswith('script'):
@@ -255,7 +259,7 @@ class LuiController(object):
self._ha_api.get_entity(entity_id).call_service("unlock")
else:
self._ha_api.get_entity(entity_id).call_service("lock")
else:
elif entity_id.startswith('button') or entity_id.startswith('input_button'):
self._ha_api.get_entity(entity_id).call_service("press")
# for media page

View File

@@ -139,7 +139,7 @@ class LuiPagesGen(object):
entity = self._ha_api.get_entity(statusIcon.get("entity"))
entityType = statusIcon.get("entity").split(".")[0]
icon = get_icon_id_ha(entityType, state=entity.state, device_class=entity.attributes.get("device_class", ""), overwrite=icon)
color = self.get_entity_color(entity)
color = self.get_entity_color(entity, overwrite=statusIcon.get("color", None))
status_res += f"~{icon}~{color}"
self._send_mqtt_msg(f"weatherUpdate~{icon_cur}~{text_cur}{weather_res}{altLayout}{status_res}")
@@ -172,7 +172,9 @@ class LuiPagesGen(object):
status_entity = self._ha_api.get_entity(item.status)
icon_color = self.get_entity_color(status_entity)
if item.status.startswith("sensor") and cardType == "cardGrid":
icon_id = status_entity.state
icon_id = status_entity.state[:4]
if icon_id[-1] == ".":
icon_id = icon_id[:-1]
else:
icon_color = 17299
return f"~button~{entityId}~{icon_id}~{icon_color}~{name}~{text}"
@@ -234,7 +236,7 @@ class LuiPagesGen(object):
unit_of_measurement = entity.attributes.get("unit_of_measurement", "")
value = entity.state + " " + unit_of_measurement
if cardType == "cardGrid" and entityType == "sensor":
icon_id = entity.state[:3]
icon_id = entity.state[:4]
if icon_id[-1] == ".":
icon_id = icon_id[:-1]
else:
@@ -272,7 +274,7 @@ class LuiPagesGen(object):
icon_id = get_icon_id_ha("input_text", overwrite=icon)
value = entity.state
return f"~text~{entityId}~{icon_id}~17299~{name}~{value}"
return f"~text~{entityId}~{get_icon_id('alert-circle-outline')}~17299~error~"
return f"~text~{entityId}~{get_icon_id('alert-circle-outline')}~17299~unsupported~"
def generate_entities_page(self, navigation, heading, items, cardType):
command = f"entityUpd~{heading}~{navigation}"

View File

@@ -1,4 +1,4 @@
# Alarm Card
# Media Card
![card-media](img/card-media.png)

View File

@@ -1,6 +1,6 @@
# Flash Tasmota to your NSPanel
You need to connect to your nspanel via serial and flash tasmtoa [tasmota32-nspanel.factory.bin](https://tasmota.github.io/install/firmware/development/tasmota32-nspanel.factory.bin) to your NSPanel.
You need to connect to your nspanel via serial and flash tasmtoa [tasmota32-nspanel.bin](https://tasmota.github.io/install/firmware/development/tasmota32-nspanel.bin) to your NSPanel.
You can use the Tasmota Web Installer to do so. [Tasmota Web Installer](https://tasmota.github.io/install/)
Checkout Blakadders Template Repo for more information on flashing, do not use the autoexec.be from this page.

View File

@@ -1,6 +1,6 @@
# Flash Tasmota to your NSPanel
You need to connect to your nspanel via serial and flash tasmtoa [tasmota32-nspanel.factory.bin](https://tasmota.github.io/install/firmware/development/tasmota32-nspanel.factory.bin) to your NSPanel.
You need to connect to your nspanel via serial and flash tasmtoa [tasmota32-nspanel.bin](https://tasmota.github.io/install/firmware/development/tasmota32-nspanel.bin) to your NSPanel.
You can use the Tasmota Web Installer to do so. [Tasmota Web Installer](https://tasmota.github.io/install/)
Checkout Blakadders Template Repo for more information on flashing, do not use the autoexec.be from this page.

View File

@@ -1,6 +1,6 @@
/*-----------------------------------------------------------------------
TypeScript zur Steuerung des SONOFF NSPanel mit dem ioBroker
- abgestimmt auf TFT 36 / v2.9.0 / BerryDriver 4 / Tasmota 11.1.0
- abgestimmt auf TFT 37 / v3.0.0 / BerryDriver 4 / Tasmota 11.1.0
joBr99 Projekt: https://github.com/joBr99/nspanel-lovelace-ui/tree/main/ioBroker
NsPanelTs.ts (dieses TypeScript in ioBroker) Stable: https://github.com/joBr99/nspanel-lovelace-ui/blob/main/ioBroker/NsPanelTs.ts
icon_mapping.ts: https://github.com/joBr99/nspanel-lovelace-ui/blob/main/ioBroker/icon_mapping.ts (TypeScript muss in global liegen)
@@ -13,11 +13,11 @@ ReleaseNotes:
- 08.05.2022 - Menüpfeile bei HardwareButtons (button1Page; button2Page) mit Navigation auf Page 0
- 08.05.2022 - Standard-Brightness über neuen Parameter active einstellbar (Test mit 2.9.3)
- 08.05.2022 - Schalter (Licht, Dimmer, Hue, etc) in cardGrid lassen sich wieder schalten
- 13.06.2022 - GitHub Issue #277 - HandleMessage -> pageOpenDetail does not work for Sub-Page
Known-Bugs --> Bugfix folgt:
- Aktion auf Submenüs schaltet unmittelbar auf vorheriges Mainmenu
- Menü-Pfeile in Subpages (z.B. card QR, cardMedia, etc)
- 14.06.2022 - Aktion auf Submenüs schaltet unmittelbar auf vorheriges Mainmenu (Many thanks to Grrzzz)
- 14.06.2022 - Menü-Pfeile in Subpages (z.B. card QR, cardMedia, etc) (Many thanks to Grrzzz)
- 15.06.2022 - Date/Time im Screensaver auf Basis localString (de-DE/en-EN/nl-NL/etc.)
- 16.06.2022 - Multilingual - config.locale (en-EN, de-DE, nl-NL, da-DK, es-ES, fr-FR, it-IT, ru-RU)
- 16.06.2022 - Bugfix by Grrzzz - Subpages
Wenn Rule definiert, dann können die Hardware-Tasten ebenfalls für Seitensteuerung (dann nicht mehr als Releais) genutzt werden
Tasmota Konsole:
@@ -71,10 +71,8 @@ Interne Sonoff-Sensoren (über Tasmota):
(!!! Achtung: der interne Sonoff-Sensor liefert keine exakten Daten, da das NSPanel-Board und der ESP selbst Hitze produzieren !!!
ggf. Offset einplanen oder besser einen externen Sensor über Zigbee etc. verwenden)
Timestamp - wird in 0_userdata.0. Zeitpunkt der letzten Sensorübertragung
Tasmota-Status0 - (zyklische Ausführung)
liefert relevanten Tasmota-Informationen und kann bei Bedarf in "function get_tasmota_status0()" erweitert werden. Daten werden in 0_userdata.0. abgelegt
Erforderliche Adapter:
Accu-Wheater: - Bei Nutzung der Wetterfunktionen (und zur Icon-Konvertierung) im Screensaver
Alexa2: - Bei Nutzung der dynamischen SpeakerList in der cardMedia
@@ -82,10 +80,9 @@ Erforderliche Adapter:
Alias-Manager - !!! ausschießlich für MEDIA-Alias
MQTT-Adapter - Für Kommunikation zwischen Skript und Tasmota
JavaScript-Adapter
Upgrades in Konsole:
Tasmota BerryDriver : Backlog UpdateDriverVersion https://raw.githubusercontent.com/joBr99/nspanel-lovelace-ui/main/tasmota/autoexec.be; Restart 1
TFT EU STABLE Version : FlashNextion http://nspanel.pky.eu/lovelace-ui/github/nspanel-v2.9.0.tft
TFT EU STABLE Version : FlashNextion http://nspanel.pky.eu/lovelace-ui/github/nspanel-v3.0.0.tft
---------------------------------------------------------------------------------------
*/
var Icons = new IconsSelector();
@@ -94,8 +91,9 @@ const NSPanel_Path = "0_userdata.0.NSPanel.1."
const Debug = false;
var manually_Update = true;
const Months = ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"];
const Days = ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"];
//const Months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
//const Days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
//const Off: RGB = { red: 68, green: 115, blue: 158 }; //Blau-Off
const Off: RGB = { red: 253, green: 128, blue: 0 }; //Orange-Off - schönere Farbübergänge
const On: RGB = { red: 253, green: 216, blue: 53 };
@@ -180,6 +178,7 @@ var Test_Licht: PageEntities =
"heading": "Color Aliase",
"useColor": true,
"subPage": false,
"parent": Test_Licht,
"items": [
<PageItem>{ id: "alias.0.NSPanel_1.TestRGBLichteinzeln", name: "RGB-Licht Hex-Color", interpolateColor: true},
//<PageItem>{ id: "alias.0.NSPanel_1.TestFarbtemperatur", name: "Farbtemperatur", interpolateColor: true},
@@ -195,6 +194,7 @@ var Test_Funktionen: PageEntities =
"heading": "Sonstige Aliase",
"useColor": true,
"subPage": false,
"parent": Test_Funktionen,
"items": [
<PageItem>{ id: "alias.0.NSPanel_1.TestLautstärke", offColor: MSRed /*if mute=true*/, onColor: MSGreen ,name: "Echo Spot Büro", minValue: 0, maxValue: 100},
<PageItem>{ id: "alias.0.NSPanel_1.TestTemperatur",name: "Temperatur außen", icon: "thermometer", onColor: White},
@@ -209,6 +209,7 @@ var Buero_Seite_1: PageEntities =
"heading": "Büro",
"useColor": true,
"subPage": false,
"parent": Buero_Seite_1,
"items": [
<PageItem>{ id: "alias.0.NSPanel_1.Schreibtischlampe", interpolateColor: true},
<PageItem>{ id: "alias.0.NSPanel_1.Deckenbeleuchtung", interpolateColor: true},
@@ -223,6 +224,7 @@ var Fenster_1: PageEntities =
"heading": "Fenster und Türen",
"useColor": true,
"subPage": false,
"parent": Fenster_1,
"items": [
<PageItem>{ id: "alias.0.NSPanel_1.TestFenster", offColor: MSRed, onColor: MSGreen, name: "Büro Fenster"},
<PageItem>{ id: "alias.0.NSPanel_1.Haustuer", offColor: MSRed, onColor: MSGreen, name: "Haustür"},
@@ -237,6 +239,7 @@ var Button_1: PageEntities =
"heading": "Button Aliase",
"useColor": true,
"subPage": false,
"parent": Button_1,
"items": [
<PageItem>{ id: "alias.0.NSPanel_1.TestTastensensor", name: "Tastensensor (FFN)"},
<PageItem>{ id: "alias.0.NSPanel_1.Radio.NDR2", icon: "radio", name: "Taste (NDR2)", onColor: colorRadio},
@@ -249,6 +252,7 @@ var Subpages_1: PageEntities =
"heading": "Test Subpages",
"useColor": true,
"subPage": false,
"parent": Subpages_1,
"items": [
<PageItem>{ navigate: true, id: "Abfall", onColor: White, name: "Abfallkalender"},
<PageItem>{ navigate: true, id: "WLAN", onColor: White, name: "Gäste WLAN"},
@@ -262,6 +266,7 @@ var Abfall: PageEntities =
"heading": "Abfallkalender",
"useColor": true,
"subPage": true,
"parent": Subpages_1,
"items": [
<PageItem>{ id: "alias.0.NSPanel_1.Abfall.event1",icon: "trash-can"},
<PageItem>{ id: "alias.0.NSPanel_1.Abfall.event2",icon: "trash-can"},
@@ -276,6 +281,7 @@ var Buero_Seite_2: PageGrid =
"heading": "Büro 2",
"useColor": true,
"subPage": false,
"parent": Buero_Seite_2,
"items": [
<PageItem>{ id: "alias.0.NSPanel_1.Schreibtischlampe", name: "Schreibtisch"},
<PageItem>{ id: "alias.0.NSPanel_1.Deckenbeleuchtung", name: "Deckenlampe"},
@@ -292,6 +298,7 @@ var Alexa: PageMedia =
"heading": "Alexa",
"useColor": true,
"subPage": false,
"parent": Alexa,
"items": [<PageItem>{ id: "alias.0.NSPanel_1.Alexa.PlayerBuero" }]
};
@@ -301,6 +308,7 @@ var Buero_Themostat: PageThermo =
"heading": "Test Thermostat",
"useColor": true,
"subPage": false,
"parent": Buero_Themostat,
"items": [<PageItem>{ id: "alias.0.NSPanel_1.Thermostat_Büro", minValue: 50, maxValue: 300 }]
};
@@ -310,6 +318,7 @@ var Buero_Klimaanlage: PageThermo =
"heading": "Test Klimaanlage",
"useColor": true,
"subPage": false,
"parent": Buero_Klimaanlage,
"items": [<PageItem>{ id: "alias.0.NSPanel_1.TestKlimaanlage", minValue: 170, maxValue: 250}]
};
@@ -320,6 +329,7 @@ var WLAN: PageQR =
"heading": "Gäste WLAN",
"useColor": true,
"subPage": true,
"parent": Subpages_1,
"items": [<PageItem>{ id: "alias.0.NSPanel_1.Guest_Wifi" }]
};
@@ -329,6 +339,7 @@ var Buero_Alarm: PageAlarm =
"heading": "Alarm",
"useColor": true,
"subPage": false,
"parent": Buero_Alarm,
"items": [<PageItem>{ id: "alias.0.NSPanel_1.Alarm" }]
};
@@ -338,6 +349,7 @@ var button1Page: PageGrid =
"heading": "Radio",
"useColor": true,
"subPage": false,
"parent": button1Page,
"items": [
<PageItem>{ id: "alias.0.NSPanel_1.Radio.FFN", icon: "radio", name: "FFN", onColor: colorRadio},
<PageItem>{ id: "alias.0.NSPanel_1.Radio.Antenne" , icon: "radio", name: "Antenne Nds.", onColor: colorRadio},
@@ -354,6 +366,7 @@ var button2Page: PageEntities =
"heading": "Büro",
"useColor": true,
"subPage": false,
"parent": button2Page,
"items": [
<PageItem>{ id: "alias.0.NSPanel_1.Schreibtischlampe"},
<PageItem>{ id: "alias.0.NSPanel_1.Deckenbeleuchtung"}
@@ -367,6 +380,7 @@ var Service: PageEntities =
"heading": "NSPanel Service",
"useColor": true,
"subPage": false,
"parent": Service,
"items": [
<PageItem>{ id: "alias.0.NSPanel_1.NSPanel_AutoUpdate", name: "Auto-Updates" ,icon: "update", offColor: MSRed, onColor: MSGreen},
<PageItem>{ navigate: true, id: "NSPanel_Infos", icon: "information-outline", onColor: White, name: "NSPanel Infos"},
@@ -382,6 +396,7 @@ var NSPanel_Infos: PageEntities =
"heading": "NSPanel Infos",
"useColor": true,
"subPage": true,
"parent": Service,
"items": [
<PageItem>{ id: "alias.0.NSPanel_1.NSPanel_Hardware", name: "Hardware", icon: "memory", offColor: MSYellow, onColor: MSYellow, useColor: true},
<PageItem>{ id: "alias.0.NSPanel_1.NSPanel_ESP_Temp", name: "ESP Temperatur", icon: "thermometer", unit: "°C", offColor: MSYellow, onColor: MSYellow, useColor: true},
@@ -397,6 +412,7 @@ var NSPanel_Einstellungen: PageEntities =
"heading": "Screensaver",
"useColor": true,
"subPage": true,
"parent": Service,
"items": [
<PageItem>{ id: "alias.0.NSPanel_1.Dimmode_BrightnessDay", name: "Brightness Tag", icon: "brightness-5", offColor: MSYellow, onColor: MSYellow, useColor: true, minValue: 5, maxValue: 10},
<PageItem>{ id: "alias.0.NSPanel_1.Dimmode_BrightnessNight", name: "Brightness Nacht", icon: "brightness-4", offColor: MSYellow, onColor: MSYellow, useColor: true, minValue: 0, maxValue: 4},
@@ -412,6 +428,7 @@ var NSPanel_Firmware_Updates: PageEntities =
"heading": "Firmware-Updates",
"useColor": true,
"subPage": true,
"parent": Service,
"items": [
<PageItem>{ id: "alias.0.NSPanel_1.Tasmota_Version", name: "Tasmota Firmware", useColor: true},
<PageItem>{ id: "alias.0.NSPanel_1.TFT_Firmware", name: "TFT-Firmware", useColor: true},
@@ -429,9 +446,9 @@ export const config: Config = {
dimmode: 8,
active: 100, //Standard-Brightness TFT
screenSaverDoubleClick: false,
locale: "de_DE",
timeFormat: "%H:%M",
dateFormat: "%A, %d. %B %Y",
locale: "en-EN", //en-EN, de-DE, nl-NL, da-DK, es-ES, fr-FR, it-IT, ru-RU
timeFormat: "%H:%M", //currently not used
dateFormat: "%A, %d. %B %Y", //currently not used
weatherEntity: "alias.0.Wetter",
defaultOffColor: Off,
defaultOnColor: On,
@@ -494,7 +511,7 @@ var screensaverEnabled : boolean = false;
var pageId = 0;
//Neu für Subpages
var subPage_open = false;
var activePage = undefined;
schedule("* * * * *", function () {
SendTime();
@@ -526,15 +543,29 @@ schedule("*/30 * * * *", function () {
});
//Mit Start auf Updates checken
get_locales();
setState(config.panelSendTopic, 'pageType~pageStartup');
get_tasmota_status0()
get_tasmota_status0();
get_panel_update_data();
check_updates();
//------------------Begin Update Functions
function get_locales() {
exec('curl https://raw.githubusercontent.com/joBr99/nspanel-lovelace-ui/main/ioBroker/ioBroker_NSPanel_locales.json', function (error, result, stderr){
if (result) {
let BerryDriverVersionOnline = result.substring((result.indexOf("version_of_this_script = ") + 24), result.indexOf("version_of_this_script = ") + 27).replace(/\s+/g, '');
createState(NSPanel_Path + "NSPanel_locales_json");
var timer = setTimeout(function() {
setIfExists(NSPanel_Path + 'NSPanel_locales_json', result);
}, 2000);
}
});
}
function check_updates() {
const desired_display_firmware_version = 36;
const desired_display_firmware_version = 37;
const berry_driver_version = 4;
if (Debug) console.log("Check-Updates");
@@ -768,7 +799,7 @@ function update_berry_driver_version() {
}
function update_tft_firmware() {
const tft_version : string = "v2.9.0";
const tft_version : string = "v3.0.0";
var desired_display_firmware_url = "http://nspanel.pky.eu/lovelace-ui/github/nspanel-" + tft_version + ".tft"
require("request")((['http://',get_current_tasmota_ip_address(),'/cm?cmnd=FlashNextion ', desired_display_firmware_url].join('')), async function (error, response, result) {
createState(NSPanel_Path + "TFT_Firmware.onlineVersion");
@@ -849,21 +880,9 @@ function HandleMessage(typ: string, method: string, page: number, words: Array<s
case "pageOpenDetail":
screensaverEnabled = false;
UnsubscribeWatcher();
let pageItem = config.pages[pageId].items.find(e => e.id === words[3]);
let pageItem = findPageItem(words[3]);
if (pageItem !== undefined)
SendToPanel(GenerateDetailPage(words[2], pageItem));
else {
config.subPages.every (sp => {
let pageItem = sp.items.find(e => e.id === words[3]);
if (pageItem !== undefined) {
SendToPanel(GenerateDetailPage(words[2], pageItem));
console.log(words[2] + " - " + pageItem);
return false;
}
return true;
}
)
}
case "buttonPress2":
screensaverEnabled = false;
HandleButtonEvent(words);
@@ -879,6 +898,23 @@ function HandleMessage(typ: string, method: string, page: number, words: Array<s
}
}
function findPageItem(searching: String) : PageItem {
let pageItem = activePage.items.find(e => e.id === searching);
if (pageItem !== undefined) {
return pageItem;
}
config.subPages.every (sp => {
pageItem = sp.items.find(e => e.id === searching);
if (pageItem !== undefined) {
return false;
}
return true;
});
return pageItem;
}
function GeneratePage(page: Page): void {
switch (page.type) {
case "cardEntities":
@@ -926,27 +962,32 @@ function HandleStartupProcess(): void {
}
function SendDate(): void {
var d = new Date();
var day = Days[d.getDay()];
var date = d.getDate();
var month = Months[d.getMonth()];
var year = d.getFullYear();
var _sendDate = "date~" + day + " " + date + " " + month + " " + year;
SendToPanel(<Payload>{ payload: _sendDate });
var month = d.getMonth();
var day = d.getDate();
const date = new Date(year,month,day,1,1,1);
const options : any = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
var _SendDate = date.toLocaleDateString(config.locale, options);
SendToPanel(<Payload>{ payload: "date~" + _SendDate });
}
function SendTime(): void {
var d = new Date();
var hr = d.getHours().toString();
var min = d.getMinutes().toString();
if (d.getHours() < 10) {
hr = "0" + d.getHours().toString();
}
if (d.getMinutes() < 10) {
min = "0" + d.getMinutes().toString();
}
SendToPanel(<Payload>{ payload: "time~" + hr + ":" + min });
var d = new Date();
var year = d.getFullYear();
var month = d.getMonth();
var day = d.getDate();
var hr = d.getHours();
var min = d.getMinutes();
const date = new Date(year, month, day, hr, min, 1);
var _SendTime = date.toLocaleTimeString(config.locale, { hour: '2-digit', minute: '2-digit', hour12: false});
SendToPanel(<Payload>{ payload: "time~" + _SendTime });
}
function ScreensaverDimmode() {
@@ -976,6 +1017,7 @@ function GenerateGridPage(page: PageGrid): Payload[] {
}
function GeneratePageElements(page: Page): string {
activePage = page;
let maxItems = 0;
switch (page.type) {
case "cardThermo":
@@ -1000,22 +1042,10 @@ function GeneratePageElements(page: Page): string {
let pageData = "entityUpd~" + page.heading + "~" + GetNavigationString(pageId);
//--------------------------------------Subpage----------------
if (page.subPage) {
subPage_open = true;
pageData = "entityUpd~" + page.heading + "~" + "1|0";
}
//---------------------------------------------------------
for (let index = 0; index < maxItems; index++) {
if (page.items[index] !== undefined) {
pageData += CreateEntity(page.items[index], index + 1, page.useColor);
}
/*
else {
pageData += CreateEntity(<PageItem>{ id: "delete" }, index + 1);
//muss das wirklich? Wo erforderlich wird es mitgegeben!
}
*/
}
return pageData;
}
@@ -1206,12 +1236,12 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
if (getState(pageItem.id + ".ACTUAL").val) {
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : o.common.role == "door" ? Icons.GetIcon("door-open") : Icons.GetIcon("window-open-variant");
iconColor = GetIconColor(pageItem, false, useColors);
var windowState = "opened"
var windowState = findLocale("window","opened");
} else {
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : o.common.role == "door" ? Icons.GetIcon("door-closed") : Icons.GetIcon("window-closed-variant");
//iconId = Icons.GetIcon("window-closed-variant");
iconColor = GetIconColor(pageItem, true, useColors);
var windowState = "closed"
var windowState = findLocale("window","closed");
}
RegisterEntityWatcher(pageItem.id + ".ACTUAL");
}
@@ -1272,12 +1302,13 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
if (getState(pageItem.id + ".ACTUAL").val) {
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon("lock");
iconColor = GetIconColor(pageItem, true, useColors);
var lockState = "UNLOCK"
var lockState = findLocale("lock","UNLOCK")
} else {
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon("lock-open-variant");
iconColor = GetIconColor(pageItem, false, useColors);
var lockState = "LOCK"
var lockState = findLocale("lock","LOCK")
}
lockState = pageItem.buttonText !== undefined ? pageItem.buttonText : lockState;
RegisterEntityWatcher(pageItem.id + ".ACTUAL");
}
@@ -1344,6 +1375,20 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
return "~delete~~~~~"
}
function findLocale(controlsObject: string, controlsState: string) : string {
var locale = config.locale;
var strJson = getState(NSPanel_Path + 'NSPanel_locales_json').val;
var obj = JSON.parse(strJson);
var strLocale = obj[controlsObject][controlsState][locale];
if (strLocale != undefined) {
return strLocale;
} else {
return controlsState;
}
}
function GetIconColor(pageItem: PageItem, value: (boolean | number), useColors: boolean): number {
// dimmer
if ((pageItem.useColor || useColors) && pageItem.interpolateColor && typeof (value) === "number") {
@@ -1373,12 +1418,12 @@ function RegisterEntityWatcher(id: string): void {
return;
}
subscriptions[id] = (on({ id: id, change: 'any' }, function (data) {
if(pageId >= 0)
SendToPanel({ payload: GeneratePageElements(config.pages[pageId]) });
if(pageId == -1 && config.button1Page != undefined)
SendToPanel({ payload: GeneratePageElements(config.button1Page) });
if(pageId == -2 && config.button2Page != undefined)
SendToPanel({ payload: GeneratePageElements(config.button2Page) });
if(activePage!=undefined)
SendToPanel({ payload: GeneratePageElements(activePage) });
}))
}
@@ -1610,24 +1655,26 @@ function GenerateThermoPage(page: PageThermo): Payload[] {
out_msgs.push({ payload: "entityUpd~"
+ name + "~" //Heading
+ GetNavigationString(pageId) + "~" //Page Navigation
+ id + "~" //internalNameEntiy
+ currentTemp + "°C" + "~" //Ist-Temperatur (String)
+ destTemp + "~" //Soll-Temperatur (numerisch ohne Komma)
+ statusStr + "~" //Mode
+ minTemp + "~" //Thermostat Min-Temperatur
+ maxTemp + "~" //Thermostat Max-Temperatur
+ stepTemp + "~" //Schritte für Soll (5°C)
+ icon_res //Icons Status
+ "Aktuell" + "~" //Bezeicher vor Aktueller Raumtemperatur
+ "Status" + "~" //Bezeicner vor
+ "HVAC" + "~" //Bezeichner vor HVAC
+ "°C"}) //Bezeichner Hinter Solltemp
+ name + "~" //Heading
+ GetNavigationString(pageId) + "~" //Page Navigation
+ id + "~" //internalNameEntiy
+ currentTemp + config.temperatureUnit + "~" //Ist-Temperatur (String)
+ destTemp + "~" //Soll-Temperatur (numerisch ohne Komma)
+ statusStr + "~" //Mode
+ minTemp + "~" //Thermostat Min-Temperatur
+ maxTemp + "~" //Thermostat Max-Temperatur
+ stepTemp + "~" //Schritte für Soll (5°C)
+ icon_res //Icons Status
+ findLocale("thermostat","Currently") + "~" //Bezeicher vor Aktueller Raumtemperatur
+ findLocale("thermostat","State") + "~" //Bezeicner vor
+ findLocale("thermostat","Action") + "~" //Bezeichner vor HVAC
+ config.temperatureUnit + "~" //Bezeichner hinter Solltemp
+ "" + "~" //iconTemperature
+ "" //dstTempTwoTempMode
});
}
if (Debug) console.log(out_msgs);
return out_msgs
}
@@ -1788,6 +1835,8 @@ function GenerateAlarmPage(page: PageAlarm): Payload[] {
}
function GenerateQRPage(page: PageQR): Payload[] {
activePage = page;
var id = page.items[0].id
var out_msgs: Array<Payload> = [];
out_msgs.push({ payload: "pageType~cardQR" });
@@ -1897,14 +1946,19 @@ function HandleButtonEvent(words): void {
var pageNum = ((pageId - 1) % config.pages.length);
pageId = Math.abs(pageNum);
UnsubscribeWatcher();
GeneratePage(config.pages[pageId]);
//-------------Subpage
if (subPage_open) {
subPage_open = false;
HandleButtonEvent(['event','buttonPress2','cardEntities','bNext'])
if(activePage!=undefined && activePage.parent!=undefined) {
//update pageID
for (let i=0; i<config.pages.length; i++) {
if(config.pages[i] == activePage.parent) {
pageId = i;
break;
}
}
GeneratePage(activePage.parent);
}
else {
GeneratePage(config.pages[pageId]);
}
//--------------------------------
break;
case "bExit":
if (config.screenSaverDoubleClick) {
@@ -1913,7 +1967,7 @@ function HandleButtonEvent(words): void {
}
} else {
if (Debug) console.log("bExit: " + words[4] + " - "+ pageId)
GeneratePage(config.pages[pageId]);
GeneratePage(activePage);
}
break;
case "notifyAction":
@@ -2001,18 +2055,8 @@ function HandleButtonEvent(words): void {
timeoutSlider = setTimeout(async function () {
if (existsObject(id)) {
let o = getObject(id);
let pageItem = config.pages[pageId].items.find(e => e.id === id);
if (pageItem == undefined) {
config.subPages.every (sp => {
pageItem = sp.items.find(e => e.id === id);
if (pageItem !== undefined) {
let pageItem = findPageItem(id);
return false;
}
return true;
}
)
}
switch (o.common.role) {
case "dimmer":
if (pageItem.minValueBrightness != undefined && pageItem.maxValueBrightness != undefined) {
@@ -2040,17 +2084,7 @@ function HandleButtonEvent(words): void {
case "colorTempSlider": // Armilar - Slider tickt verkehrt - Hell = 0 / Dunkel = 100 -> Korrektur
(function () {if (timeoutSlider) {clearTimeout(timeoutSlider); timeoutSlider = null;}})();
timeoutSlider = setTimeout(async function () {
let pageItem = config.pages[pageId].items.find(e => e.id === id);
if (pageItem == undefined) {
config.subPages.every (sp => {
pageItem = sp.items.find(e => e.id === id);
if (pageItem !== undefined) {
return false;
}
return true;
}
)
}
let pageItem = findPageItem(id);
if (pageItem.minValueColorTemp !== undefined && pageItem.minValueColorTemp !== undefined) {
let colorTempK = Math.trunc(scale(parseInt(words[4]), 0, 100, pageItem.minValueColorTemp, pageItem.maxValueColorTemp));
setIfExists(id + ".TEMPERATURE", (colorTempK));
@@ -2221,7 +2255,9 @@ function HandleButtonEvent(words): void {
function GetNavigationString(pageId: number): string {
if (Debug) console.log(pageId);
if (Debug) console.log(subPage_open);
if(activePage.subPage)
return "1|0";
switch (pageId) {
case 0:
@@ -2276,9 +2312,9 @@ function GenerateDetailPage(type: string, pageItem: PageItem): Payload[] {
+ "disable" + "~" //sliderBrightnessPos
+ "disable" + "~" //sliderColorTempPos
+ "disable" + "~" //colorMode
+ "Color" + "~" //Color-Bezeichnung
+ "Temperature" + "~" //Temperature-Bezeichnung
+ "Brightness" }) //Brightness-Bezeichnung
+ findLocale("lights","Color") + "~" //Color-Bezeichnung
+ findLocale("lights","Temperature") + "~" //Temperature-Bezeichnung
+ findLocale("lights","Brightness")}); //Brightness-Bezeichnung
}
//Dimmer
@@ -2323,9 +2359,9 @@ function GenerateDetailPage(type: string, pageItem: PageItem): Payload[] {
+ brightness + "~" //sliderBrightnessPos
+ "disable" + "~" //sliderColorTempPos
+ "disable" + "~" //colorMod
+ "Color" + "~" //Color-Bezeichnung
+ "Temperature" + "~" //Temperature-Bezeichnung
+ "Brightness" }) //Brightness-Bezeichnung
+ findLocale("lights","Color") + "~" //Color-Bezeichnung
+ findLocale("lights","Temperature") + "~" //Temperature-Bezeichnung
+ findLocale("lights","Brightness")}); //Brightness-Bezeichnung
}
@@ -2387,9 +2423,9 @@ function GenerateDetailPage(type: string, pageItem: PageItem): Payload[] {
+ brightness + "~" //sliderBrightnessPos
+ colorTemp + "~" //sliderColorTempPos
+ colorMode + "~" //colorMode (if hue-alias without hue-datapoint, then disable)
+ "Color" + "~" //Color-Bezeichnung
+ "Temperature" + "~" //Temperature-Bezeichnung
+ "Brightness" }) //Brightness-Bezeichnung
+ findLocale("lights","Color") + "~" //Color-Bezeichnung
+ findLocale("lights","Temperature") + "~" //Temperature-Bezeichnung
+ findLocale("lights","Brightness")}); //Brightness-Bezeichnung
}
//RGB-Licht
@@ -2449,9 +2485,9 @@ function GenerateDetailPage(type: string, pageItem: PageItem): Payload[] {
+ brightness + "~" //sliderBrightnessPos
+ colorTemp + "~" //sliderColorTempPos
+ colorMode + "~" //colorMode (if hue-alias without hue-datapoint, then disable)
+ "Color" + "~" //Color-Bezeichnung
+ "Temperature" + "~" //Temperature-Bezeichnung
+ "Brightness" }) //Brightness-Bezeichnung
+ findLocale("lights","Color") + "~" //Color-Bezeichnung
+ findLocale("lights","Temperature") + "~" //Temperature-Bezeichnung
+ findLocale("lights","Brightness")}); //Brightness-Bezeichnung
}
//RGB-Licht-einzeln (HEX)
@@ -2515,9 +2551,9 @@ function GenerateDetailPage(type: string, pageItem: PageItem): Payload[] {
+ brightness + "~" //sliderBrightnessPos
+ colorTemp + "~" //sliderColorTempPos
+ colorMode + "~" //colorMode (if hue-alias without hue-datapoint, then disable)
+ "Color" + "~" //Color-Bezeichnung
+ "Temperature" + "~" //Temperature-Bezeichnung
+ "Brightness" }) //Brightness-Bezeichnung)
+ findLocale("lights","Color") + "~" //Color-Bezeichnung
+ findLocale("lights","Temperature") + "~" //Temperature-Bezeichnung
+ findLocale("lights","Brightness")}); //Brightness-Bezeichnung
}
//Farbtemperatur
@@ -2562,16 +2598,16 @@ function GenerateDetailPage(type: string, pageItem: PageItem): Payload[] {
console.warn("Alias-Datenpunkt: " + id + ".TEMPERATURE could not be read");
}
out_msgs.push({ payload: "entityUpdateDetail" + "~" //entityUpdateDetail
+ icon + "~" //iconId
+ iconColor + "~" //iconColor
+ switchVal + "~" //buttonState
+ brightness + "~" //sliderBrightnessPos
+ colorTemp + "~" //sliderColorTempPos
+ colorMode + "~" //colorMode (if hue-alias without hue-datapoint, then disable)
+ "Color" + "~" //Color-Bezeichnung
+ "Temperature" + "~" //Temperature-Bezeichnung
+ "Brightness" }) //Brightness-Bezeichnung
out_msgs.push({ payload: "entityUpdateDetail" + "~" //entityUpdateDetail
+ icon + "~" //iconId
+ iconColor + "~" //iconColor
+ switchVal + "~" //buttonState
+ brightness + "~" //sliderBrightnessPos
+ colorTemp + "~" //sliderColorTempPos
+ colorMode + "~" //colorMode (if hue-alias without hue-datapoint, then disable)
+ findLocale("lights","Color") + "~" //Color-Bezeichnung
+ findLocale("lights","Temperature") + "~" //Temperature-Bezeichnung
+ findLocale("lights","Brightness")}); //Brightness-Bezeichnung
}
}
@@ -2585,10 +2621,10 @@ function GenerateDetailPage(type: string, pageItem: PageItem): Payload[] {
val = getState(id + ".SET").val;
RegisterDetailEntityWatcher(id + ".SET", pageItem, type);
}
out_msgs.push({ payload: "entityUpdateDetail" + "~" //entityUpdateDetail
+ val + "~" //Shutterposition
out_msgs.push({ payload: "entityUpdateDetail" + "~" //entityUpdateDetail
+ val + "~" //Shutterposition
+ "" + "~"
+ "Position"}) //Position-Bezeichnung
+ findLocale("blinds","Position")}); //Position-Bezeichnung
}
}
return out_msgs
@@ -2630,7 +2666,7 @@ function HandleScreensaverUpdate(): void {
let TempMax = getState("accuweather.0.Summary.TempMax_d" + i).val;
let DayOfWeek = getState("accuweather.0.Summary.DayOfWeek_d" + i).val;
let WeatherIcon = GetAccuWeatherIcon(getState("accuweather.0.Summary.WeatherIcon_d" + i).val);
payloadString += DayOfWeek + "~" + Icons.GetIcon(WeatherIcon) + "~" + TempMax + " °C~";
payloadString += DayOfWeek + "~" + Icons.GetIcon(WeatherIcon) + "~" + TempMax + " " + config.temperatureUnit + "~";
}
}
else {
@@ -2864,6 +2900,7 @@ type Page = {
items: PageItem[],
useColor: boolean,
subPage: boolean,
parent: Page,
};
interface PageEntities extends Page {

View File

@@ -0,0 +1,143 @@
{
"lights":{
"Brightness":{
"en-EN":"Brightness",
"de-DE":"Helligkeit",
"nl-NL":"Helderheid",
"da-DK":"Lysstyrke",
"es-ES":"Brillo",
"fr-FR":"Luminosité",
"it-IT":"Luminosità",
"ru-RU":"Яркость"
},
"Color":{
"en-EN":"Color",
"de-DE":"Farbe",
"nl-NL":"Kleur",
"da-DK":"Farve",
"es-ES":"Colore",
"fr-FR":"Couleur",
"ru-RU":"цвет"
},
"Temperature":{
"en-EN":"Temperature",
"de-DE":"Temperatur",
"nl-NL":"Temperatuur",
"da-DK":"Temperatur",
"es-ES":"temperatura",
"fr-FR":"Température",
"it-IT":"Temperatura",
"ru-RU":"температура"
}
},
"window":{
"closed":{
"en-EN":"closed",
"de-DE":"geschlossen",
"nl-NL":"gesloten",
"da-DK":"lukket",
"es-ES":"cerrada",
"fr-FR":"fermée ",
"it-IT":"chiusa",
"ru-RU":"закрыто"
},
"opened":{
"en-EN":"opened",
"de-DE":"offen",
"nl-NL":"geopend",
"da-DK":"åbnede",
"es-ES":"abierta",
"fr-FR":"ouverte ",
"it-IT":"aperta",
"ru-RU":"открыто"
}
},
"door":{
"closed":{
"en-EN":"closed",
"de-DE":"geschlossen",
"nl-NL":"gesloten",
"da-DK":"lukket",
"es-ES":"cerrada",
"fr-FR":"fermée ",
"it-IT":"chiusa",
"ru-RU":"закрыто"
},
"opened":{
"en-EN":"opened",
"de-DE":"offen",
"nl-NL":"geopend",
"da-DK":"åbnede",
"es-ES":"abierta",
"fr-FR":"ouverte ",
"it-IT":"aperta",
"ru-RU":"открыто"
}
},
"lock":{
"LOCK":{
"en-EN":"lock",
"de-DE":"schließen",
"nl-NL":"stilgelegd",
"da-DK":"låse",
"es-ES":"cerrar",
"fr-FR":"bloquer ",
"it-IT":"serratura",
"ru-RU":"замок"
},
"UNLOCK":{
"en-EN":"unlock",
"de-DE":"öffnen",
"nl-NL":"openen",
"da-DK":"at åbne",
"es-ES":"abrir",
"fr-FR":"ouvrir ",
"it-IT":"aprire",
"ru-RU":"открыть"
}
},
"blinds":{
"Position":{
"en-EN":"Position",
"de-DE":"Position",
"nl-NL":"Positie",
"da-DK":"Blindstilling",
"es-ES":"Posición",
"fr-FR":"Position ",
"it-IT":"Posizione",
"ru-RU":"Слепая"
}
},
"thermostat":{
"Currently":{
"en-EN":"Currently",
"de-DE":"Aktuell",
"nl-NL":"momenteel",
"da-DK":"i øjeblikket",
"es-ES":"corrientemente",
"fr-FR":"actuellement ",
"it-IT":"attualmente",
"ru-RU":"актуальный"
},
"State":{
"en-EN":"State",
"de-DE":"Status",
"nl-NL":"toestand",
"da-DK":"stat",
"es-ES":"estado",
"fr-FR":"statut ",
"it-IT":"stato",
"ru-RU":"статус"
},
"Action":{
"en-EN":"Action",
"de-DE":"Aktion",
"nl-NL":"actie",
"da-DK":"handling",
"es-ES":"acción",
"fr-FR":"action ",
"it-IT":"azione",
"ru-RU":"действие"
}
}
}