Compare commits

..

34 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
Johannes
5bf810ad5a change char cap for sensors on cardGird 2022-06-14 20:52:50 +02:00
Johannes
a9576adf2f Merge branch 'main' of https://github.com/joBr99/nspanel-lovelace-ui 2022-06-14 20:20:51 +02:00
Johannes
470a3d5d9e fixed docs 2022-06-14 20:20:36 +02:00
Johannes
780f61d1c7 fixes #282 2022-06-13 21:21:09 +02:00
Johannes
7cbbbc5b36 fixed typo 2022-06-13 19:48:43 +02:00
Johannes
e01b23640c Update README.md 2022-06-13 19:42:30 +02:00
Johannes
964be86c5d Merge branch 'main' of https://github.com/joBr99/nspanel-lovelace-ui 2022-06-13 18:22:59 +02:00
Johannes
8b37b3b669 fixed pics for cardqr alarm and media 2022-06-13 18:22:52 +02:00
Johannes
709f916bec do auto color on script 2022-06-13 18:08:36 +02:00
Armilar
e7771ba599 Fix - HandleMessage -> pageOpenDetail does not work for Sub-Pages 2022-06-13 12:23:46 +02:00
Johannes
6ccc8af2fa add state to icon overwrite for light 2022-06-13 12:14:58 +02:00
Johannes
7f4a50f8c8 Update prepare_nspanel.md 2022-06-12 18:49:15 +02:00
36 changed files with 546 additions and 307 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

@@ -16,7 +16,7 @@ Or an TypeScript on your ioBroker Instance in case you are an ioBroker User.
NsPanel needs to be flashed with Tasmota (or upcoming with ESPHome)
![nspanel-rl](doc-pics/nspanel-rl.png)
![nspanel-rl](docs/img/nspanel-rl.png)
## Features
@@ -44,4 +44,4 @@ Some (not all) screenshots from the US Portrait Version:
## Documentation
Visit https://docs.nspanel.pky.eu/ for installation instructions and documentation of the configuration.
Visit https://docs.nspanel.pky.eu/ for installation instructions and documentation of the configuration.

View File

@@ -80,8 +80,8 @@ class LuiBackendConfig(object):
'locale': "en_US",
'timeFormat': "%H:%M",
'dateFormatBabel': "full",
'dateAdditonalTemplate': "",
'timeAdditonalTemplate': "",
'dateAdditionalTemplate': "",
'timeAdditionalTemplate': "",
'dateFormat': "%A, %d. %B %Y",
'cards': [{
'type': 'cardEntities',

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,8 +259,8 @@ 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:
self._ha_api.get_entity(entity_id).call_service("press")
elif entity_id.startswith('button') or entity_id.startswith('input_button'):
self._ha_api.get_entity(entity_id).call_service("press")
# for media page
if button_type == "media-next":

View File

@@ -42,7 +42,7 @@ class LuiPagesGen(object):
def update_time(self, kwargs):
time = datetime.datetime.now().strftime(self._config.get("timeFormat"))
addTemplate = self._config.get("timeAdditonalTemplate")
addTemplate = self._config.get("timeAdditionalTemplate")
addTimeText = self._ha_api.render_template(addTemplate)
self._send_mqtt_msg(f"time~{time}~{addTimeText}")
@@ -55,7 +55,7 @@ class LuiPagesGen(object):
dateformat = self._config.get("dateFormat")
date = datetime.datetime.now().strftime(dateformat)
addTemplate = self._config.get("dateAdditonalTemplate")
addTemplate = self._config.get("dateAdditionalTemplate")
addDateText = self._ha_api.render_template(addTemplate)
self._send_mqtt_msg(f"date~{date}{addDateText}")
@@ -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}"
@@ -222,7 +224,7 @@ class LuiPagesGen(object):
if entityType in "light":
switch_val = 1 if entity.state == "on" else 0
icon_color = self.get_entity_color(entity, overwrite=colorOverride)
icon_id = get_icon_id_ha("light", overwrite=icon)
icon_id = get_icon_id_ha("light", state=entity.state, overwrite=icon)
return f"~{entityType}~{entityId}~{icon_id}~{icon_color}~{name}~{switch_val}"
if entityType in ["switch", "input_boolean", "automation"]:
switch_val = 1 if entity.state == "on" else 0
@@ -251,8 +253,9 @@ class LuiPagesGen(object):
return f"~button~{entityId}~{icon_id}~17299~{name}~{text}"
if entityType == "script":
icon_id = get_icon_id_ha("script", overwrite=icon)
icon_color = self.get_entity_color(entity, overwrite=colorOverride)
text = get_translation(self._locale, "frontend.ui.card.script.run")
return f"~button~{entityId}~{icon_id}~17299~{name}~{text}"
return f"~button~{entityId}~{icon_id}~{icon_color}~{name}~{text}"
if entityType == "lock":
icon_id = get_icon_id_ha("lock", state=entity.state, overwrite=icon)
icon_color = self.get_entity_color(entity, overwrite=colorOverride)
@@ -271,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}"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 985 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

View File

@@ -1,4 +1,4 @@
# Alarm Card
# Media Card
![card-media](img/card-media.png)
@@ -16,4 +16,4 @@ key | optional | type | default | description
`title` | True | string | `None` | Title of the Page
`entity` | False | string | `None` | contains the entity of the current card
`key` | True | string | `None` | Used by navigate items
`alarmControl` | True | complex | `None` | overwrites the action executed on pressing the left bottom icon, by default this button is used to show a list of open sensors on a failed attempt to arm.
`mediaControl` | True | complex | `None` | overwrites the action executed on pressing the left upper icon (red circle), icon is showing the current type of media and cannot be changed

View File

@@ -62,8 +62,8 @@ key | optional | type | default | description
`locale` | True | string | `en_US` | Used by babel to determinante Date format on screensaver, also used for localization.
`dateFormatBabel` | True | string | `full` | formatting options on https://babel.pocoo.org/en/latest/dates.html?highlight=name%20of%20day#date-fields
`timeFormat` | True | string | `%H:%M` | Time Format on screensaver. Substring after `?` is displayed in a seperate smaller textbox. Useful for 12h time format with AM/PM <pre>`"%I:%M ?%p"`</pre>
`dateAdditonalTemplate` | True | string | `""` | Addional Text dispayed after Date, can contain a Homeassistant Template Example `" - {{ states('sun.sun') }}"`
`timeAdditonalTemplate` | True | string | `""` | Addional Text dispayed below Time, can contain a Homeassistant Template
`dateAdditionalTemplate` | True | string | `""` | Addional Text dispayed after Date, can contain a Homeassistant Template Example `" - {{ states('sun.sun') }}"`
`timeAdditionalTemplate` | True | string | `""` | Addional Text dispayed below Time, can contain a Homeassistant Template
`dateFormat` | True | string | `%A, %d. %B %Y` | date format used if babel is not installed
`cards` | False | complex | | configuration for cards that are displayed on panel; see docs for cards
`screensaver` | True | complex | | configuration for screensaver; see docs for screensaver

View File

@@ -36,7 +36,7 @@ It is also possible to configure different icon overwrites per state:
"off": mdi:lightbulb
```
# Hide item based on state
## Hide item based on state
This sensor will only be shown on the card if it's state is equal to `off`

BIN
docs/img/card-alarm.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

BIN
docs/img/card-media.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
docs/img/card-qr.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

View File

@@ -1,11 +1,15 @@
# 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.
[NSPanel Page of the Tasmota Template Repository](https://templates.blakadder.com/sonoff_NSPanel.html)
If you prefer EspHome over Tasmota, you can use this thrid party esphome component, which is replacing tasmota and the berry driver of this project.
[ESPHome component](https://github.com/sairon/esphome-nspanel-lovelace-ui)
## Configure Tasmota Template for NSPanel
Configure the NSPanel template for Tasmota. (Go to Configuration and Configure Other and paste the template there, make sure to tick the activate checkbox)

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,22 +1,23 @@
/*-----------------------------------------------------------------------
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)
ioBroker-Unterstützung: https://forum.iobroker.net/topic/50888/sonoff-nspanel
ReleaseNotes:
Bugfixes und Erweiterungen seit letzter Verion:
Bugfixes und Erweiterungen seit letzter Version:
- cardQR (für Gäste WLAN)
- cardThermo (Neues Design für Alias Thermostat und zusätzlich für Alias Klimaanlage)
- 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
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:
@@ -70,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
@@ -81,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();
@@ -93,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 };
@@ -144,7 +143,7 @@ var weatherForecast = true; //true = WheatherForecast 5 Days --- false = Config
//Alexa-Instanz
var alexaInstanz = "alexa2.0"
var alexaDevice = "G0XXXXXXXXXXXXXXX"; //Primär zu steuerndes Device oder Gruppe aus alexa2-Adapter (Seriennummer)
var alexaDevice = "G0XXXXXXXXXXXXXX"; //Primär zu steuerndes Device oder Gruppe aus alexa2-Adapter (Seriennummer)
// Wenn alexaSpeakerList definiert, dann werden Einträge verwendet, sonst alle relevanten Devices aus Alexa-Instanz
// Speakerwechsel funktioniert nicht bei Radio/TuneIn sonden bei Playlists
@@ -179,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},
@@ -194,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},
@@ -208,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},
@@ -222,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"},
@@ -236,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},
@@ -248,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"},
@@ -261,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"},
@@ -275,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"},
@@ -291,6 +298,7 @@ var Alexa: PageMedia =
"heading": "Alexa",
"useColor": true,
"subPage": false,
"parent": Alexa,
"items": [<PageItem>{ id: "alias.0.NSPanel_1.Alexa.PlayerBuero" }]
};
@@ -300,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 }]
};
@@ -309,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}]
};
@@ -319,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" }]
};
@@ -328,6 +339,7 @@ var Buero_Alarm: PageAlarm =
"heading": "Alarm",
"useColor": true,
"subPage": false,
"parent": Buero_Alarm,
"items": [<PageItem>{ id: "alias.0.NSPanel_1.Alarm" }]
};
@@ -337,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},
@@ -353,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"}
@@ -366,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"},
@@ -381,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},
@@ -396,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},
@@ -411,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},
@@ -428,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,
@@ -440,7 +458,6 @@ export const config: Config = {
Buero_Seite_2,
Buero_Seite_1,
Buero_Klimaanlage,
//WLAN,
Button_1,
Test_Licht,
Test_Funktionen,
@@ -451,6 +468,13 @@ export const config: Config = {
Buero_Alarm,
Service
],
subPages: [
Abfall,
WLAN,
NSPanel_Infos,
NSPanel_Einstellungen,
NSPanel_Firmware_Updates
],
button1Page: button1Page,
button2Page: button2Page
};
@@ -487,7 +511,7 @@ var screensaverEnabled : boolean = false;
var pageId = 0;
//Neu für Subpages
var subPage_open = false;
var activePage = undefined;
schedule("* * * * *", function () {
SendTime();
@@ -519,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");
@@ -658,7 +696,7 @@ function get_panel_update_data() {
check_version_tft_firmware();
check_online_display_firmware();
}
function get_current_tasmota_ip_address() {
let mqttInfo2 = config.panelRecvTopic.substring(0, config.panelRecvTopic.length - 6) + "INFO2";
let Tasmota_Info2 = JSON.parse(getState(mqttInfo2).val);
@@ -743,7 +781,7 @@ function check_online_display_firmware() {
}
on({ id: config.panelRecvTopic }, function (obj) {
if (obj.state.val.startsWith('\{"CustomRecv":')) {
if (obj.state.val.startsWith('\{"CustomRecv":')) {
var json = JSON.parse(obj.state.val);
var split = json.CustomRecv.split(",");
if (split[0] == "event" && split[1] == "startup") {
@@ -761,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");
@@ -842,9 +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));
SendToPanel(GenerateDetailPage(words[2], pageItem));
case "buttonPress2":
screensaverEnabled = false;
HandleButtonEvent(words);
@@ -860,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":
@@ -907,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() {
@@ -957,6 +1017,7 @@ function GenerateGridPage(page: PageGrid): Payload[] {
}
function GeneratePageElements(page: Page): string {
activePage = page;
let maxItems = 0;
switch (page.type) {
case "cardThermo":
@@ -981,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;
}
@@ -1017,7 +1066,7 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
type = "button";
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon("gesture-tap-button");
iconColor = GetIconColor(pageItem, true, useColors);
let buttonText = pageItem.buttonText !== undefined ? pageItem.buttonText : "PRESS";
let buttonText = pageItem.buttonText !== undefined ? pageItem.buttonText : "PRESS";
return "~" + type + "~" + "navigate." + pageItem.id + "~" + iconId + "~" + iconColor + "~" + pageItem.name + "~" + buttonText;
}
@@ -1169,7 +1218,7 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
if (val === true || val === "true") {
optVal = "1"
iconColor = GetIconColor(pageItem, existsState(pageItem.id + ".ACTUAL") ? 100 - getState(pageItem.id + ".ACTUAL").val : true, useColors);
}
}
return "~" + type + "~" + pageItem.id + "~" + iconId + "~" + iconColor + "~" + name + "~" + optVal;
@@ -1187,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");
}
@@ -1253,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");
}
@@ -1325,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") {
@@ -1353,13 +1417,13 @@ function RegisterEntityWatcher(id: string): void {
if (subscriptions.hasOwnProperty(id)) {
return;
}
subscriptions[id] = (on({ id: id, change: 'any' }, function (data) {
if(pageId >= 0)
SendToPanel({ payload: GeneratePageElements(config.pages[pageId]) });
subscriptions[id] = (on({ id: id, change: 'any' }, function (data) {
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) });
}))
}
@@ -1591,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
}
@@ -1620,7 +1686,7 @@ function GenerateMediaPage(page: PageMedia): Payload[] {
out_msgs.push({ payload: "pageType~cardMedia" });
if (existsObject(id)) {
let name = getState(id + ".ALBUM").val;
let name = getState(id + ".ALBUM").val;
let media_icon = Icons.GetIcon("playlist-music");
let title = getState(id + ".TITLE").val;
let author = getState(id + ".ARTIST").val;
@@ -1674,7 +1740,7 @@ function GenerateMediaPage(page: PageMedia): Payload[] {
}
if (Debug) console.log(out_msgs);
return out_msgs
}
}
function GenerateAlarmPage(page: PageAlarm): Payload[] {
var id = page.items[0].id
@@ -1769,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" });
@@ -1857,8 +1925,8 @@ function HandleButtonEvent(words): void {
GeneratePage(eval((words[2]).substring(9, (words[2]).length)));
return;
}
switch (buttonAction) {
switch (buttonAction) {
case "bUp":
if (pageId < 0) { //Prüfen, ob button1page oder button2page
pageId = 0;
@@ -1876,16 +1944,21 @@ function HandleButtonEvent(words): void {
break;
case "bPrev":
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'])
}
//--------------------------------
pageId = Math.abs(pageNum);
UnsubscribeWatcher();
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) {
@@ -1894,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":
@@ -1907,7 +1980,7 @@ function HandleButtonEvent(words): void {
}
setIfExists(config.panelSendTopic, "exitPopup")
break;
case "OnOff":
case "OnOff":
if (existsObject(id)) {
var action = false
if (words[4] == "1")
@@ -1940,7 +2013,7 @@ function HandleButtonEvent(words): void {
case "down":
setIfExists(id + ".CLOSE", true)
break;
case "button":
case "button":
if (existsObject(id)) {
var action = false
if (words[4] == "1")
@@ -1977,14 +2050,15 @@ function HandleButtonEvent(words): void {
setIfExists(id + ".SET", parseInt(words[4])) ? true : setIfExists(id + ".ACTUAL", parseInt(words[4]));
}, 250);
break;
case "brightnessSlider":
case "brightnessSlider":
(function () {if (timeoutSlider) {clearTimeout(timeoutSlider); timeoutSlider = null;}})();
timeoutSlider = setTimeout(async function () {
if (existsObject(id)) {
if (existsObject(id)) {
let o = getObject(id);
let pageItem = config.pages[pageId].items.find(e => e.id === id);
let pageItem = findPageItem(id);
switch (o.common.role) {
case "dimmer":
case "dimmer":
if (pageItem.minValueBrightness != undefined && pageItem.maxValueBrightness != undefined) {
let sliderPos = Math.trunc(scale(parseInt(words[4]), 0, 100, pageItem.maxValueBrightness, pageItem.minValueBrightness))
setIfExists(id + ".SET", sliderPos) ? true : setIfExists(id + ".ACTUAL", sliderPos);
@@ -2010,7 +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);
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));
@@ -2181,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:
@@ -2236,12 +2312,12 @@ 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
//Dimmer
if (o.common.role == "dimmer") {
if (existsState(id + ".ON_ACTUAL")) {
val = getState(id + ".ON_ACTUAL").val;
@@ -2256,8 +2332,8 @@ function GenerateDetailPage(type: string, pageItem: PageItem): Payload[] {
var iconColor = GetIconColor(pageItem, val, false);
switchVal = "1"
}
if (existsState(id + ".ACTUAL")) {
if (existsState(id + ".ACTUAL")) {
if (pageItem.minValueBrightness != undefined && pageItem.maxValueBrightness != undefined) {
brightness = Math.trunc(scale(getState(id + ".ACTUAL").val, pageItem.minValueBrightness, pageItem.maxValueBrightness, 100, 0));
} else {
@@ -2283,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
}
@@ -2347,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
@@ -2409,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)
@@ -2475,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
@@ -2522,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
}
}
@@ -2545,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
@@ -2590,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 {
@@ -2824,6 +2900,7 @@ type Page = {
items: PageItem[],
useColor: boolean,
subPage: boolean,
parent: Page,
};
interface PageEntities extends Page {
@@ -2903,6 +2980,7 @@ type Config = {
defaultOnColor: RGB,
defaultOffColor: RGB,
pages: (PageThermo | PageMedia | PageAlarm | PageQR | PageEntities | PageGrid)[],
subPages: (PageThermo | PageMedia | PageAlarm | PageQR | PageEntities | PageGrid)[],
button1Page: (PageThermo | PageMedia | PageAlarm | PageQR | PageEntities | PageGrid | null),
button2Page: (PageThermo | PageMedia | PageAlarm | PageQR | PageEntities | PageGrid | null),
};

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":"действие"
}
}
}