mirror of
https://github.com/joBr99/nspanel-lovelace-ui.git
synced 2025-12-20 14:37:01 +01:00
Compare commits
24 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
beebb0afef | ||
|
|
5e513fbab6 | ||
|
|
e49f18b125 | ||
|
|
689f9e8bf8 | ||
|
|
4646781d93 | ||
|
|
c0521bac9e | ||
|
|
4e57b15206 | ||
|
|
3d927393a4 | ||
|
|
41b48a0237 | ||
|
|
6b9e8d6b92 | ||
|
|
bb07f36327 | ||
|
|
5c50bad008 | ||
|
|
229002088f | ||
|
|
ae33905463 | ||
|
|
035a4b5129 | ||
|
|
0be532bbce | ||
|
|
a2a42add20 | ||
|
|
2b252d4327 | ||
|
|
e84ce9cc1b | ||
|
|
69a5dd323d | ||
|
|
c7346ed02c | ||
|
|
57c5449dfc | ||
|
|
bf2023aa3e | ||
|
|
754f0dd4a7 |
5
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
5
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal 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.
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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.
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
BIN
HMI/nspanel.HMI
BIN
HMI/nspanel.HMI
Binary file not shown.
BIN
HMI/nspanel.tft
BIN
HMI/nspanel.tft
Binary file not shown.
@@ -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":
|
||||
|
||||
@@ -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}"
|
||||
|
||||
@@ -23,7 +23,8 @@ default_screensaver_color_mapping = {
|
||||
"tForecast4Val": "65535",
|
||||
"bar": "65535",
|
||||
"tMRIcon": "65535",
|
||||
"tMR": "65535"
|
||||
"tMR": "65535",
|
||||
"tTimeAdd": "65535"
|
||||
}
|
||||
|
||||
default_weather_icon_color_mapping = {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Alarm Card
|
||||
# Media Card
|
||||
|
||||

|
||||
|
||||
@@ -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
|
||||
`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
|
||||
`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
|
||||
|
||||
@@ -138,6 +138,7 @@ Example for the theme config:
|
||||
#bar: [220, 0, 255]
|
||||
#tMRIcon: [220, 0, 255]
|
||||
#tMR: [220, 0, 255]
|
||||
#tTimeAdd: [220, 0, 255]
|
||||
|
||||
#autoWeather automatically colors the screensaver weather icons based upon weather. Uncomment the following line to enable.
|
||||
#autoWeather: true
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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");
|
||||
@@ -665,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);
|
||||
@@ -750,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") {
|
||||
@@ -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;
|
||||
}
|
||||
)
|
||||
}
|
||||
SendToPanel(GenerateDetailPage(words[2], pageItem));
|
||||
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;
|
||||
}
|
||||
@@ -1036,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;
|
||||
}
|
||||
|
||||
@@ -1188,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;
|
||||
|
||||
@@ -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") {
|
||||
@@ -1372,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) });
|
||||
}))
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -1639,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;
|
||||
@@ -1693,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
|
||||
@@ -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" });
|
||||
@@ -1876,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;
|
||||
@@ -1895,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) {
|
||||
@@ -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":
|
||||
@@ -1926,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")
|
||||
@@ -1959,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")
|
||||
@@ -1996,25 +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);
|
||||
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);
|
||||
|
||||
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);
|
||||
@@ -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,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;
|
||||
@@ -2296,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 {
|
||||
@@ -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 {
|
||||
|
||||
143
ioBroker/ioBroker_NSPanel_locales.json
Normal file
143
ioBroker/ioBroker_NSPanel_locales.json
Normal 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":"действие"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user