Compare commits

...

90 Commits

Author SHA1 Message Date
Johannes
ac832e5f6e bump version 2022-04-15 18:20:20 +02:00
Johannes
0808074e85 bump version 2022-04-15 18:19:17 +02:00
Johannes
c7f4d4ed78 Update nspanel-lovelace-ui.py 2022-04-15 18:14:28 +02:00
Johannes
92f172c4bc Create auto_assign.yml 2022-04-15 11:15:45 +02:00
britzelpuf
3b3810cf0d Merge pull request #149 from britzelpuf/patch-hwbutton
Fix HW Button pages
2022-04-15 11:03:56 +02:00
britzelpuf
5b72676c11 Fix HW Button pages 2022-04-15 11:00:06 +02:00
britzelpuf
559e0bfa9f Merge pull request #147 from MacSchlack/patch-4
Added unit in type PageItem
2022-04-15 08:31:57 +02:00
britzelpuf
7581f4fc47 Merge pull request #148 from MacSchlack/patch-5
Update README.md
2022-04-15 08:31:26 +02:00
MacSchlack
979e52d1f5 Update README.md 2022-04-15 07:05:07 +02:00
MacSchlack
ba2abef465 Added unit in type PageItem
example unit on Page "Müllkalender"
2022-04-14 16:44:03 +02:00
britzelpuf
58da8efc0c Merge pull request #146 from MacSchlack/patch-3
Added socket as posible device
2022-04-14 16:30:42 +02:00
MacSchlack
ed77f897b4 Added socket as posible device 2022-04-14 16:11:56 +02:00
Johannes
4cd5fa9d6d Create CODEOWNERS 2022-04-13 23:25:39 +02:00
joBr99
cc40d38c41 Merge branch 'main' of https://github.com/joBr99/nspanel-lovelace-ui (add nextion2text) 2022-04-13 20:21:36 +00:00
Johannes
d215029319 Merge branch 'main' of https://github.com/joBr99/nspanel-lovelace-ui 2022-04-13 22:21:11 +02:00
Johannes
38a615f7a0 synced screensaver serial code 2022-04-13 22:21:05 +02:00
joBr99
ab18effc7b Merge branch 'main' of https://github.com/joBr99/nspanel-lovelace-ui (add nextion2text) 2022-04-13 20:17:08 +00:00
Johannes
e5d1afe5e1 Merge branch 'main' of https://github.com/joBr99/nspanel-lovelace-ui 2022-04-13 22:16:46 +02:00
Johannes
c9f305c1ed synced light popup serial code 2022-04-13 22:16:39 +02:00
joBr99
d3f6a8d6ad Merge branch 'main' of https://github.com/joBr99/nspanel-lovelace-ui (add nextion2text) 2022-04-13 20:14:00 +00:00
Johannes
dc96fea0f2 Merge branch 'main' of https://github.com/joBr99/nspanel-lovelace-ui 2022-04-13 22:13:37 +02:00
Johannes
e59dcae711 implemented color cmd 2022-04-13 22:13:31 +02:00
joBr99
1a74a99347 synced us-p (add nextion2text) 2022-04-13 19:28:24 +00:00
Johannes
5b62ef0d27 synced us-p 2022-04-13 21:27:54 +02:00
joBr99
533db201a8 syned serial fix to us versions (add nextion2text) 2022-04-12 19:23:44 +00:00
Johannes
e86e1f6fb4 syned serial fix to us versions 2022-04-12 21:23:18 +02:00
Johannes
78b3da8843 Merge pull request #140 from jmbinette/main
Changed known diff
2022-04-12 21:17:34 +02:00
Johannes
e79a0634ca Fix berry message 2022-04-12 21:09:18 +02:00
joBr99
bac8e96932 fix exit from popup pages to screensaver (add nextion2text) 2022-04-12 19:02:34 +00:00
Johannes
188323a5cc fix exit from popup pages to screensaver 2022-04-12 21:02:13 +02:00
jmbinette
fa4417d913 Changed known diff 2022-04-12 14:55:28 -04:00
Johannes
95757691bd Update mqttListener.py 2022-04-12 20:52:35 +02:00
Johannes
80208e42ed Update mqttListener.py 2022-04-12 20:50:51 +02:00
Johannes
b7e4cf647c Update updater.py 2022-04-12 20:43:00 +02:00
Johannes
263889737d Update nspanel-lovelace-ui.py 2022-04-12 20:35:33 +02:00
Johannes
756e212d34 Update mqttListener.py 2022-04-12 20:23:00 +02:00
Johannes
c923f7058b Update updater.py 2022-04-12 20:19:13 +02:00
Johannes
f9e8f6513c Update autoexec.be 2022-04-12 20:14:51 +02:00
Johannes
211db1ddf4 Update nspanel-lovelace-ui.py 2022-04-12 20:12:41 +02:00
Johannes
562ce8ce48 Update autoexec.be 2022-04-12 20:12:31 +02:00
Johannes
da1da082e9 Update autoexec.be 2022-04-12 20:09:48 +02:00
Johannes
f8ff39fe67 Merge branch 'main' of https://github.com/joBr99/nspanel-lovelace-ui 2022-04-12 20:07:36 +02:00
Johannes
8283c0939c move beta to current version 2022-04-12 20:07:29 +02:00
Johannes
0c13622d76 move current berry driver to oldstable 2022-04-12 20:07:06 +02:00
Johannes
01b4aac715 bump version 2022-04-12 20:02:40 +02:00
joBr99
5693ec21a8 Merge branch 'main' of https://github.com/joBr99/nspanel-lovelace-ui (add nextion2text) 2022-04-12 16:33:02 +00:00
Johannes
9903b394fe Merge branch 'main' of https://github.com/joBr99/nspanel-lovelace-ui 2022-04-12 18:32:32 +02:00
Johannes
c5dc53fd84 bump firmware version us-p 2022-04-12 18:32:24 +02:00
joBr99
7649537c62 bump firmware version for next release (add nextion2text) 2022-04-12 16:30:15 +00:00
Johannes
cca8477b36 bump firmware version for next release 2022-04-12 18:29:26 +02:00
joBr99
b7a965f3ef Merge pull request #138 from jmbinette/main (add nextion2text) 2022-04-12 16:20:52 +00:00
Johannes
da0376c8f0 Merge pull request #138 from jmbinette/main
Changed Entities page
2022-04-12 18:20:33 +02:00
jmbinette
125ebee23b Changed entities layout for 5 only (add nextion2text) 2022-04-12 16:15:31 +00:00
jmbinette
72314db002 Changed entities layout for 5 only 2022-04-12 12:14:57 -04:00
Johannes
73abbd8ea4 Merge pull request #137 from britzelpuf/main
Changes for panel version 30
2022-04-12 12:07:48 +02:00
britzelpuf
6b82d5715b Added fix suggested by Armilar
https://forum.iobroker.net/topic/50888/sonoff-nspanel/151
2022-04-11 23:08:47 +02:00
britzelpuf
ad31b90128 Remove navigation items on hardware button pages 2022-04-11 22:37:36 +02:00
britzelpuf
d31ff9dde5 Update Readme for name extension 2022-04-11 22:30:51 +02:00
britzelpuf
50328fc386 Fix CardThermo, added names 2022-04-11 22:28:42 +02:00
britzelpuf
147e08aa5f Update for Panel version 30 2022-04-11 15:38:13 +02:00
britzelpuf
9da519dce9 Documentation for display version 30 2022-04-11 15:35:06 +02:00
Johannes
ff569829fc Merge branch 'main' of https://github.com/joBr99/nspanel-lovelace-ui 2022-04-11 00:20:58 +02:00
Johannes
e2fabe9eb4 fix lightup on callback 2022-04-11 00:20:52 +02:00
Johannes
1097a9c6bb Update README.md 2022-04-10 23:20:56 +02:00
Johannes
2f7189eca5 some changes to screensaver navigation #123 2022-04-10 21:53:55 +02:00
joBr99
51cb0956a6 Merge branch 'main' of https://github.com/joBr99/nspanel-lovelace-ui (add nextion2text) 2022-04-10 15:53:54 +00:00
Johannes
cca413a761 Merge branch 'main' of https://github.com/joBr99/nspanel-lovelace-ui 2022-04-10 17:53:31 +02:00
Johannes
fc9520f2d6 . 2022-04-10 17:53:23 +02:00
joBr99
49f483c5c6 added diff between diffs (add nextion2text) 2022-04-10 15:50:49 +00:00
Johannes
3fa99fbc72 added diff between diffs 2022-04-10 17:50:29 +02:00
Johannes
f3f7de9210 add known good change 2022-04-10 17:47:47 +02:00
Johannes
66afb2d5a4 cleanup 2022-04-10 17:21:05 +02:00
Johannes
19c512b5ea change speed during flashing 2022-04-10 17:10:52 +02:00
Johannes
62e4333024 added time elapsed 2022-04-10 16:32:50 +02:00
Johannes
e53407caaa cleanup, remove old skipping 2022-04-10 16:03:22 +02:00
Johannes
66f69cf21f fix for inital flash 2022-04-10 15:38:03 +02:00
Johannes
1a0e9c6357 skip to end with http range 2022-04-10 15:08:02 +02:00
Johannes
06894b21ec added iobroker icon gen to hmi icon script 2022-04-10 14:56:21 +02:00
Johannes
0a7dd91860 add 206 to http code check 2022-04-10 14:55:32 +02:00
Johannes
a7c9184561 removed couting 2022-04-10 14:38:18 +02:00
Johannes
4567d7e63c improved error handling on non 200 answer 2022-04-10 14:28:55 +02:00
Johannes
92383695df Merge branch 'main' of https://github.com/joBr99/nspanel-lovelace-ui 2022-04-10 14:20:42 +02:00
Johannes
ab70eb52fc added iobroker IconSelector 2022-04-10 14:20:36 +02:00
joBr99
a8ea56e461 Merge branch 'main' of https://github.com/joBr99/nspanel-lovelace-ui (add nextion2text) 2022-04-10 11:25:51 +00:00
Johannes
9b928832cc Merge branch 'main' of https://github.com/joBr99/nspanel-lovelace-ui 2022-04-10 13:25:25 +02:00
Johannes
4710b3733d synced us versions 2022-04-10 13:25:17 +02:00
joBr99
fcaa4faae7 fix nav button in eu version (add nextion2text) 2022-04-10 11:19:06 +00:00
Johannes
9436514c71 fix nav button in eu version 2022-04-10 13:18:39 +02:00
Johannes
3c418d4c98 remove test version 2022-04-09 23:11:37 +02:00
Johannes
cd1c03fbb6 added berry driver with higher serial speed during flashing 2022-04-09 22:25:15 +02:00
91 changed files with 7057 additions and 2454 deletions

2
.github/CODEOWNERS vendored Normal file
View File

@@ -0,0 +1,2 @@
* @joBr99
/ioBroker @britzelpuf

6
.github/auto_assign.yml vendored Normal file
View File

@@ -0,0 +1,6 @@
addReviewers: true
addAssignees: true
# A list of keywords to be skipped the process that add reviewers if pull requests include it
skipKeywords:
- wip

View File

@@ -58,6 +58,11 @@ jobs:
python Nextion2Text.py -c ignore-id.py -p font -d -i HMI/US/portrait/nspanel_US_P.HMI -o HMI/US/portrait/n2t-out python Nextion2Text.py -c ignore-id.py -p font -d -i HMI/US/portrait/nspanel_US_P.HMI -o HMI/US/portrait/n2t-out
diff -bur HMI/n2t-out HMI/US/portrait/n2t-out > HMI/US/portrait/diff-eu-version.txt diff -bur HMI/n2t-out HMI/US/portrait/n2t-out > HMI/US/portrait/diff-eu-version.txt
- name: Run n2t US P DIFF DIFF
continue-on-error: true
run: |
diff -u HMI/US/portrait/diff-eu-version-known-good.txt HMI/US/portrait/diff-eu-version.txt | grep -E "^\+" > HMI/US/portrait/diff-filtered.txt
- name: Run n2t US L DIFF - name: Run n2t US L DIFF
continue-on-error: true continue-on-error: true
run: | run: |
@@ -65,6 +70,7 @@ jobs:
python Nextion2Text.py -c ignore-id.py -p font -d -i HMI/US/landscape/nspanel_US_L.HMI -o HMI/US/landscape/n2t-out python Nextion2Text.py -c ignore-id.py -p font -d -i HMI/US/landscape/nspanel_US_L.HMI -o HMI/US/landscape/n2t-out
diff -bur HMI/n2t-out HMI/US/landscape/n2t-out > HMI/US/landscape/diff-eu-version.txt diff -bur HMI/n2t-out HMI/US/landscape/n2t-out > HMI/US/landscape/diff-eu-version.txt
- name: Display txt files - name: Display txt files
continue-on-error: true continue-on-error: true
run: | run: |

View File

@@ -77,6 +77,8 @@ change the page type:
`weatherUpdate~tMainIcon~tMainText~tForecast1~tF1Icon~tForecast1Val~tForecast2~tF2Icon~tForecast2Val~tForecast3~tF3Icon~tForecast3Val~tForecast4~tF4Icon~tForecast4Val~optionalLayoutIcon~optionalLayoutText` `weatherUpdate~tMainIcon~tMainText~tForecast1~tF1Icon~tForecast1Val~tForecast2~tF2Icon~tForecast2Val~tForecast3~tF3Icon~tForecast3Val~tForecast4~tF4Icon~tForecast4Val~optionalLayoutIcon~optionalLayoutText`
`color~background~time~timeAMPM~date~tMainIcon~tMainText~tForecast1~tForecast2~tForecast3~tForecast4~tF1Icon~tF2Icon~tF3Icon~tF4Icon~tForecast1Val~tForecast2Val~tForecast3Val~tForecast4Val~bar~tMainIconAlt~tMainTextAlt~tMRIcon~tMR`
### cardEntities Page ### cardEntities Page
The following message can be used to update the content on the cardEntities Page The following message can be used to update the content on the cardEntities Page

View File

@@ -1,6 +1,6 @@
diff -bur HMI/n2t-out/Program.s.txt HMI/US/landscape/n2t-out/Program.s.txt diff -bur HMI/n2t-out/Program.s.txt HMI/US/landscape/n2t-out/Program.s.txt
--- HMI/n2t-out/Program.s.txt 2022-04-08 20:30:53.290164509 +0000 --- HMI/n2t-out/Program.s.txt 2022-04-13 20:21:34.698226402 +0000
+++ HMI/US/landscape/n2t-out/Program.s.txt 2022-04-08 20:30:54.170202708 +0000 +++ HMI/US/landscape/n2t-out/Program.s.txt 2022-04-13 20:21:35.478242275 +0000
@@ -11,6 +11,6 @@ @@ -11,6 +11,6 @@
// dim value // dim value
int dimValue=40 int dimValue=40
@@ -11,8 +11,8 @@ diff -bur HMI/n2t-out/Program.s.txt HMI/US/landscape/n2t-out/Program.s.txt
+ //lcd_dev fffb 0002 0000 0020 + //lcd_dev fffb 0002 0000 0020
page pageStartup page pageStartup
diff -bur HMI/n2t-out/pageStartup.txt HMI/US/landscape/n2t-out/pageStartup.txt diff -bur HMI/n2t-out/pageStartup.txt HMI/US/landscape/n2t-out/pageStartup.txt
--- HMI/n2t-out/pageStartup.txt 2022-04-08 20:30:53.290164509 +0000 --- HMI/n2t-out/pageStartup.txt 2022-04-13 20:21:34.698226402 +0000
+++ HMI/US/landscape/n2t-out/pageStartup.txt 2022-04-08 20:30:54.174202881 +0000 +++ HMI/US/landscape/n2t-out/pageStartup.txt 2022-04-13 20:21:35.478242275 +0000
@@ -177,7 +177,7 @@ @@ -177,7 +177,7 @@
recmod=1 recmod=1
bauds=115200 bauds=115200
@@ -22,3 +22,105 @@ diff -bur HMI/n2t-out/pageStartup.txt HMI/US/landscape/n2t-out/pageStartup.txt
//send calc crc //send calc crc
btlen tSend.txt,sys0 btlen tSend.txt,sys0
crcrest 1,0xffff // reset CRC crcrest 1,0xffff // reset CRC
diff -bur HMI/n2t-out/popupLight.txt HMI/US/landscape/n2t-out/popupLight.txt
--- HMI/n2t-out/popupLight.txt 2022-04-13 20:21:34.698226402 +0000
+++ HMI/US/landscape/n2t-out/popupLight.txt 2022-04-13 20:21:35.478242275 +0000
@@ -570,43 +570,25 @@
//we are going to exit this page with this command, so we have to clear the buffer, so we are not getting into a stupid loop ...
udelete payloadLength-1
bufferPos=0
- if(tId.txt=="pageStartup")
- {
- page pageStartup
- }
- if(tId.txt=="screensaver")
- {
- page screensaver
- }
if(tId.txt=="cardEntities")
{
page cardEntities
}
- if(tId.txt=="cardGrid")
- {
- page cardGrid
- }
- if(tId.txt=="popupLight")
+ if(tId.txt=="cardMedia")
{
- pageIcons.tTmp1.txt=tTmp.txt
- page popupLight
+ page cardMedia
}
- if(tId.txt=="popupShutter")
+ if(tId.txt=="pageStartup")
{
- pageIcons.tTmp1.txt=tTmp.txt
- page popupShutter
+ page pageStartup
}
if(tId.txt=="popupNotify")
{
page popupNotify
}
- if(tId.txt=="cardThermo")
- {
- page cardThermo
- }
- if(tId.txt=="cardMedia")
+ if(tId.txt=="cardGrid")
{
- page cardMedia
+ page cardGrid
}
if(tId.txt=="cardAlarm")
{
diff -bur HMI/n2t-out/screensaver.txt HMI/US/landscape/n2t-out/screensaver.txt
--- HMI/n2t-out/screensaver.txt 2022-04-13 20:21:34.698226402 +0000
+++ HMI/US/landscape/n2t-out/screensaver.txt 2022-04-13 20:21:35.478242275 +0000
@@ -48,18 +48,6 @@
Scope: local
Value: 0
-Variable (string) tInstruction
- Attributes
- Scope : local
- Text :
- Max. Text Size: 50
-
-Variable (string) tTmp
- Attributes
- Scope : local
- Text :
- Max. Text Size: 50
-
Text tTime
Attributes
Scope : local
@@ -290,6 +278,26 @@
Text :
Max. Text Size : 10
+Text tTmp
+ Attributes
+ Scope : local
+ Dragging : 0
+ Disable release event after dragging: 0
+ Send Component ID : disabled
+ Associated Keyboard : none
+ Text :
+ Max. Text Size : 50
+
+Text tInstruction
+ Attributes
+ Scope : local
+ Dragging : 0
+ Disable release event after dragging: 0
+ Send Component ID : disabled
+ Associated Keyboard : none
+ Text :
+ Max. Text Size : 50
+
Picture p0
Attributes
Scope : local

View File

@@ -1073,7 +1073,7 @@ Timer tmSerial
} }
if(tTmp.txt=="1") if(tTmp.txt=="1")
{ {
vis bPrev,1 vis bNext,1
bNext.txt="" bNext.txt=""
} }
//text arm1 //text arm1

View File

@@ -2096,7 +2096,7 @@ Timer tmSerial
} }
if(tTmp.txt=="1") if(tTmp.txt=="1")
{ {
vis bPrev,1 vis bNext,1
bNext.txt="" bNext.txt=""
} }
// get Type // get Type

View File

@@ -1036,7 +1036,7 @@ Timer tmSerial
} }
if(tTmp.txt=="1") if(tTmp.txt=="1")
{ {
vis bPrev,1 vis bNext,1
bNext.txt="" bNext.txt=""
} }
// get Type // get Type

View File

@@ -956,7 +956,7 @@ Timer tmSerial
} }
if(tTmp.txt=="1") if(tTmp.txt=="1")
{ {
vis bPrev,1 vis bNext,1
bNext.txt="" bNext.txt=""
} }
//entity name //entity name

View File

@@ -1224,7 +1224,7 @@ Timer tmSerial
} }
if(tTmp.txt=="1") if(tTmp.txt=="1")
{ {
vis bPrev,1 vis bNext,1
bNext.txt="" bNext.txt=""
} }
//entity name //entity name

View File

@@ -10,49 +10,49 @@ pageTest
13 Component(s) 13 Component(s)
13 Line(s) of event code 13 Line(s) of event code
13 Unique line(s) of event code 13 Unique line(s) of event code
screensaver cardMedia
33 Component(s) 30 Component(s)
195 Line(s) of event code 329 Line(s) of event code
152 Unique line(s) of event code 169 Unique line(s) of event code
cardAlarm
35 Component(s)
343 Line(s) of event code
213 Unique line(s) of event code
popupNotify popupNotify
17 Component(s) 17 Component(s)
178 Line(s) of event code 196 Line(s) of event code
117 Unique line(s) of event code 123 Unique line(s) of event code
pageStartup pageStartup
19 Component(s) 19 Component(s)
150 Line(s) of event code 150 Line(s) of event code
113 Unique line(s) of event code 113 Unique line(s) of event code
cardAlarm
35 Component(s)
343 Line(s) of event code
214 Unique line(s) of event code
popupShutter popupShutter
19 Component(s) 19 Component(s)
178 Line(s) of event code 191 Line(s) of event code
101 Unique line(s) of event code 107 Unique line(s) of event code
cardMedia cardGrid
30 Component(s) 39 Component(s)
329 Line(s) of event code 418 Line(s) of event code
168 Unique line(s) of event code 244 Unique line(s) of event code
cardThermo
41 Component(s)
442 Line(s) of event code
247 Unique line(s) of event code
cardEntities
62 Component(s)
964 Line(s) of event code
410 Unique line(s) of event code
popupLight popupLight
27 Component(s) 27 Component(s)
320 Line(s) of event code 320 Line(s) of event code
173 Unique line(s) of event code 173 Unique line(s) of event code
cardGrid screensaver
39 Component(s) 33 Component(s)
418 Line(s) of event code 266 Line(s) of event code
243 Unique line(s) of event code 218 Unique line(s) of event code
cardThermo
41 Component(s)
442 Line(s) of event code
246 Unique line(s) of event code
cardEntities
62 Component(s)
964 Line(s) of event code
409 Unique line(s) of event code
Total Total
12 Page(s) 12 Page(s)
341 Component(s) 341 Component(s)
3540 Line(s) of event code 3642 Line(s) of event code
946 Unique line(s) of event code 1001 Unique line(s) of event code

View File

@@ -402,7 +402,7 @@ Text tVersion
Horizontal Alignment : center Horizontal Alignment : center
Vertical Alignment : center Vertical Alignment : center
Input Type : character Input Type : character
Text : 30 Text : 31
Max. Text Size : 10 Max. Text Size : 10
Word wrap : disabled Word wrap : disabled
Horizontal Spacing : 0 Horizontal Spacing : 0

View File

@@ -548,25 +548,43 @@ Timer tmSerial
pageIcons.tTmp1.txt=tTmp.txt pageIcons.tTmp1.txt=tTmp.txt
page popupLight page popupLight
} }
if(tId.txt=="pageStartup")
{
page pageStartup
}
if(tId.txt=="screensaver")
{
page screensaver
}
if(tId.txt=="cardEntities") if(tId.txt=="cardEntities")
{ {
page cardEntities page cardEntities
} }
if(tId.txt=="cardMedia") if(tId.txt=="cardGrid")
{ {
page cardMedia page cardGrid
}
if(tId.txt=="popupLight")
{
pageIcons.tTmp1.txt=tTmp.txt
page popupLight
}
if(tId.txt=="popupShutter")
{
pageIcons.tTmp1.txt=tTmp.txt
page popupShutter
}
if(tId.txt=="popupNotify")
{
page popupNotify
} }
if(tId.txt=="cardThermo") if(tId.txt=="cardThermo")
{ {
page cardThermo page cardThermo
} }
if(tId.txt=="pageStartup") if(tId.txt=="cardMedia")
{ {
page pageStartup page cardMedia
}
if(tId.txt=="cardGrid")
{
page cardGrid
} }
if(tId.txt=="cardAlarm") if(tId.txt=="cardAlarm")
{ {

View File

@@ -631,30 +631,43 @@ Timer tmSerial
//we are going to exit this page with this command, so we have to clear the buffer, so we are not getting into a stupid loop ... //we are going to exit this page with this command, so we have to clear the buffer, so we are not getting into a stupid loop ...
udelete payloadLength-1 udelete payloadLength-1
bufferPos=0 bufferPos=0
if(tId.txt=="popupLight") if(tId.txt=="pageStartup")
{ {
pageIcons.tTmp1.txt=tTmp.txt page pageStartup
page popupLight }
if(tId.txt=="screensaver")
{
page screensaver
} }
if(tId.txt=="cardEntities") if(tId.txt=="cardEntities")
{ {
page cardEntities page cardEntities
} }
if(tId.txt=="cardMedia") if(tId.txt=="cardGrid")
{ {
page cardMedia page cardGrid
} }
if(tId.txt=="pageStartup") if(tId.txt=="popupLight")
{ {
page pageStartup pageIcons.tTmp1.txt=tTmp.txt
page popupLight
}
if(tId.txt=="popupShutter")
{
pageIcons.tTmp1.txt=tTmp.txt
page popupShutter
} }
if(tId.txt=="popupNotify") if(tId.txt=="popupNotify")
{ {
page popupNotify page popupNotify
} }
if(tId.txt=="cardGrid") if(tId.txt=="cardThermo")
{ {
page cardGrid page cardThermo
}
if(tId.txt=="cardMedia")
{
page cardMedia
} }
if(tId.txt=="cardAlarm") if(tId.txt=="cardAlarm")
{ {

View File

@@ -980,6 +980,77 @@ Timer tmSerial
//tMR //tMR
spstr strCommand.txt,tMR.txt,"~",16 spstr strCommand.txt,tMR.txt,"~",16
} }
if(tInstruction.txt=="color")
{
spstr strCommand.txt,tTmp.txt,"~",1
covx tTmp.txt,tTime.bco,0,0
screensaver.bco=tTime.bco
tAMPM.bco=tTime.bco
tDate.bco=tTime.bco
tMainIcon.bco=tTime.bco
tMainText.bco=tTime.bco
tMainIconAlt.bco=tTime.bco
tMainTextAlt.bco=tTime.bco
tMRIcon.bco=tTime.bco
tMR.bco=tTime.bco
tMRIcon.bco=tTime.bco
tForecast1.bco=tTime.bco
tForecast1Val.bco=tTime.bco
tF1Icon.bco=tTime.bco
tForecast2.bco=tTime.bco
tForecast2Val.bco=tTime.bco
tF2Icon.bco=tTime.bco
tForecast3.bco=tTime.bco
tForecast3Val.bco=tTime.bco
tF3Icon.bco=tTime.bco
tForecast4.bco=tTime.bco
tForecast4Val.bco=tTime.bco
tF4Icon.bco=tTime.bco
spstr strCommand.txt,tTmp.txt,"~",2
covx tTmp.txt,tTime.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",3
covx tTmp.txt,tAMPM.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",4
covx tTmp.txt,tDate.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",5
covx tTmp.txt,tMainIcon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",6
covx tTmp.txt,tMainText.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",7
covx tTmp.txt,tForecast1.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",8
covx tTmp.txt,tForecast2.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",9
covx tTmp.txt,tForecast3.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",10
covx tTmp.txt,tForecast4.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",11
covx tTmp.txt,tF1Icon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",12
covx tTmp.txt,tF2Icon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",13
covx tTmp.txt,tF3Icon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",14
covx tTmp.txt,tF4Icon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",15
covx tTmp.txt,tForecast1Val.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",16
covx tTmp.txt,tForecast2Val.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",17
covx tTmp.txt,tForecast3Val.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",18
covx tTmp.txt,tForecast4Val.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",19
covx tTmp.txt,t10.bco,0,0
spstr strCommand.txt,tTmp.txt,"~",20
covx tTmp.txt,tMainIconAlt.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",21
covx tTmp.txt,tMainTextAlt.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",22
covx tTmp.txt,tMRIcon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",23
covx tTmp.txt,tMR.pco,0,0
}
if(tInstruction.txt=="pageType") if(tInstruction.txt=="pageType")
{ {
dim=100 dim=100

View File

@@ -543,7 +543,7 @@ Timer tmSerial
} }
if(tTmp.txt=="1") if(tTmp.txt=="1")
{ {
vis bPrev,1 vis bNext,1
bNext.txt="" bNext.txt=""
} }
//text arm1 //text arm1

View File

@@ -1151,7 +1151,7 @@ Timer tmSerial
} }
if(tTmp.txt=="1") if(tTmp.txt=="1")
{ {
vis bPrev,1 vis bNext,1
bNext.txt="" bNext.txt=""
} }
// get Type // get Type

View File

@@ -599,7 +599,7 @@ Timer tmSerial
} }
if(tTmp.txt=="1") if(tTmp.txt=="1")
{ {
vis bPrev,1 vis bNext,1
bNext.txt="" bNext.txt=""
} }
// get Type // get Type

View File

@@ -534,7 +534,7 @@ Timer tmSerial
} }
if(tTmp.txt=="1") if(tTmp.txt=="1")
{ {
vis bPrev,1 vis bNext,1
bNext.txt="" bNext.txt=""
} }
//entity name //entity name

View File

@@ -671,7 +671,7 @@ Timer tmSerial
} }
if(tTmp.txt=="1") if(tTmp.txt=="1")
{ {
vis bPrev,1 vis bNext,1
bNext.txt="" bNext.txt=""
} }
//entity name //entity name

View File

@@ -152,7 +152,7 @@ Text tVersion
Disable release event after dragging: 0 Disable release event after dragging: 0
Send Component ID : disabled Send Component ID : disabled
Associated Keyboard : none Associated Keyboard : none
Text : 30 Text : 31
Max. Text Size : 10 Max. Text Size : 10
Picture p0 Picture p0

View File

@@ -339,25 +339,43 @@ Timer tmSerial
pageIcons.tTmp1.txt=tTmp.txt pageIcons.tTmp1.txt=tTmp.txt
page popupLight page popupLight
} }
if(tId.txt=="pageStartup")
{
page pageStartup
}
if(tId.txt=="screensaver")
{
page screensaver
}
if(tId.txt=="cardEntities") if(tId.txt=="cardEntities")
{ {
page cardEntities page cardEntities
} }
if(tId.txt=="cardMedia") if(tId.txt=="cardGrid")
{ {
page cardMedia page cardGrid
}
if(tId.txt=="popupLight")
{
pageIcons.tTmp1.txt=tTmp.txt
page popupLight
}
if(tId.txt=="popupShutter")
{
pageIcons.tTmp1.txt=tTmp.txt
page popupShutter
}
if(tId.txt=="popupNotify")
{
page popupNotify
} }
if(tId.txt=="cardThermo") if(tId.txt=="cardThermo")
{ {
page cardThermo page cardThermo
} }
if(tId.txt=="pageStartup") if(tId.txt=="cardMedia")
{ {
page pageStartup page cardMedia
}
if(tId.txt=="cardGrid")
{
page cardGrid
} }
if(tId.txt=="cardAlarm") if(tId.txt=="cardAlarm")
{ {

View File

@@ -366,30 +366,43 @@ Timer tmSerial
//we are going to exit this page with this command, so we have to clear the buffer, so we are not getting into a stupid loop ... //we are going to exit this page with this command, so we have to clear the buffer, so we are not getting into a stupid loop ...
udelete payloadLength-1 udelete payloadLength-1
bufferPos=0 bufferPos=0
if(tId.txt=="popupLight") if(tId.txt=="pageStartup")
{ {
pageIcons.tTmp1.txt=tTmp.txt page pageStartup
page popupLight }
if(tId.txt=="screensaver")
{
page screensaver
} }
if(tId.txt=="cardEntities") if(tId.txt=="cardEntities")
{ {
page cardEntities page cardEntities
} }
if(tId.txt=="cardMedia") if(tId.txt=="cardGrid")
{ {
page cardMedia page cardGrid
} }
if(tId.txt=="pageStartup") if(tId.txt=="popupLight")
{ {
page pageStartup pageIcons.tTmp1.txt=tTmp.txt
page popupLight
}
if(tId.txt=="popupShutter")
{
pageIcons.tTmp1.txt=tTmp.txt
page popupShutter
} }
if(tId.txt=="popupNotify") if(tId.txt=="popupNotify")
{ {
page popupNotify page popupNotify
} }
if(tId.txt=="cardGrid") if(tId.txt=="cardThermo")
{ {
page cardGrid page cardThermo
}
if(tId.txt=="cardMedia")
{
page cardMedia
} }
if(tId.txt=="cardAlarm") if(tId.txt=="cardAlarm")
{ {

View File

@@ -458,6 +458,77 @@ Timer tmSerial
//tMR //tMR
spstr strCommand.txt,tMR.txt,"~",16 spstr strCommand.txt,tMR.txt,"~",16
} }
if(tInstruction.txt=="color")
{
spstr strCommand.txt,tTmp.txt,"~",1
covx tTmp.txt,tTime.bco,0,0
screensaver.bco=tTime.bco
tAMPM.bco=tTime.bco
tDate.bco=tTime.bco
tMainIcon.bco=tTime.bco
tMainText.bco=tTime.bco
tMainIconAlt.bco=tTime.bco
tMainTextAlt.bco=tTime.bco
tMRIcon.bco=tTime.bco
tMR.bco=tTime.bco
tMRIcon.bco=tTime.bco
tForecast1.bco=tTime.bco
tForecast1Val.bco=tTime.bco
tF1Icon.bco=tTime.bco
tForecast2.bco=tTime.bco
tForecast2Val.bco=tTime.bco
tF2Icon.bco=tTime.bco
tForecast3.bco=tTime.bco
tForecast3Val.bco=tTime.bco
tF3Icon.bco=tTime.bco
tForecast4.bco=tTime.bco
tForecast4Val.bco=tTime.bco
tF4Icon.bco=tTime.bco
spstr strCommand.txt,tTmp.txt,"~",2
covx tTmp.txt,tTime.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",3
covx tTmp.txt,tAMPM.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",4
covx tTmp.txt,tDate.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",5
covx tTmp.txt,tMainIcon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",6
covx tTmp.txt,tMainText.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",7
covx tTmp.txt,tForecast1.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",8
covx tTmp.txt,tForecast2.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",9
covx tTmp.txt,tForecast3.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",10
covx tTmp.txt,tForecast4.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",11
covx tTmp.txt,tF1Icon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",12
covx tTmp.txt,tF2Icon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",13
covx tTmp.txt,tF3Icon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",14
covx tTmp.txt,tF4Icon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",15
covx tTmp.txt,tForecast1Val.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",16
covx tTmp.txt,tForecast2Val.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",17
covx tTmp.txt,tForecast3Val.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",18
covx tTmp.txt,tForecast4Val.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",19
covx tTmp.txt,t10.bco,0,0
spstr strCommand.txt,tTmp.txt,"~",20
covx tTmp.txt,tMainIconAlt.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",21
covx tTmp.txt,tMainTextAlt.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",22
covx tTmp.txt,tMRIcon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",23
covx tTmp.txt,tMR.pco,0,0
}
if(tInstruction.txt=="pageType") if(tInstruction.txt=="pageType")
{ {
dim=100 dim=100

Binary file not shown.

Binary file not shown.

View File

@@ -27,16 +27,7 @@ diff -bur HMI/n2t-out/cardEntities.txt HMI/US/portrait/n2t-out/cardEntities.txt
+ vis bText5,0 + vis bText5,0
+ vis hSlider5,0 + vis hSlider5,0
+ vis nNum5,0 + vis nNum5,0
+ //ui e6
+ vis btOnOff6,0
+ vis bUp6,0
+ vis bStop6,0
+ vis bDown6,0
+ vis tIcon6,0
+ vis tEntity6,0
+ vis bText6,0
+ vis hSlider6,0
+ vis nNum6,0
Variable (string) strCommand Variable (string) strCommand
Attributes Attributes
@@ -50,23 +41,12 @@ diff -bur HMI/n2t-out/cardEntities.txt HMI/US/portrait/n2t-out/cardEntities.txt
+ Text : + Text :
+ Max. Text Size: 70 + Max. Text Size: 70
+ +
+Variable (string) entn6
+ Attributes
+ Scope : local
+ Text :
+ Max. Text Size: 70
+ +
+Variable (string) type5 +Variable (string) type5
+ Attributes + Attributes
+ Scope : local + Scope : local
+ Text : + Text :
+ Max. Text Size: 10 + Max. Text Size: 10
+
+Variable (string) type6
+ Attributes
+ Scope : local
+ Text :
+ Max. Text Size: 10
+ +
Number nNum1 Number nNum1
Attributes Attributes
@@ -84,15 +64,7 @@ diff -bur HMI/n2t-out/cardEntities.txt HMI/US/portrait/n2t-out/cardEntities.txt
+ Associated Keyboard : none + Associated Keyboard : none
+ Value : 0 + Value : 0
+ +
+Number nNum6
+ Attributes
+ Scope : local
+ Dragging : 0
+ Disable release event after dragging: 0
+ Send Component ID : disabled
+ Associated Keyboard : none
+ Value : 0
+
Text tHeading Text tHeading
Attributes Attributes
Scope : local Scope : local
@@ -120,26 +92,7 @@ diff -bur HMI/n2t-out/cardEntities.txt HMI/US/portrait/n2t-out/cardEntities.txt
+ Text :  + Text : 
+ Max. Text Size : 5 + Max. Text Size : 5
+ +
+Text tEntity6
+ Attributes
+ Scope : local
+ Dragging : 0
+ Disable release event after dragging: 0
+ Send Component ID : disabled
+ Associated Keyboard : none
+ Text : tEntity6
+ Max. Text Size : 30
+
+Text tIcon6
+ Attributes
+ Scope : local
+ Dragging : 0
+ Disable release event after dragging: 0
+ Send Component ID : disabled
+ Associated Keyboard : none
+ Text : 
+ Max. Text Size : 5
+
Picture p0 Picture p0
Attributes Attributes
Scope : local Scope : local
@@ -175,34 +128,7 @@ diff -bur HMI/n2t-out/cardEntities.txt HMI/US/portrait/n2t-out/cardEntities.txt
+ prints tSend.txt,0 + prints tSend.txt,0
+ prints crcval,2 + prints crcval,2
+ +
+Slider hSlider6
+ Attributes
+ Scope : local
+ Dragging : 0
+ Disable release event after dragging: 0
+ Send Component ID : disabled
+ Position : 50
+ Upper range limit : 100
+ Lower range limit : 0
+
+ Events
+ Touch Release Event
+ nNum6.val=hSlider6.val
+ tSend.txt="event,buttonPress2,"+entn6.txt+",number-set,"
+ covx nNum6.val,tTmp.txt,0,0
+ tSend.txt+=tTmp.txt
+ //send calc crc
+ btlen tSend.txt,sys0
+ crcrest 1,0xffff // reset CRC
+ crcputh 55 bb
+ crcputs sys0,1
+ crcputs tSend.txt,0
+ //send cmd
+ printh 55 bb
+ prints sys0,2
+ prints tSend.txt,0
+ prints crcval,2
+
Button bDown1 Button bDown1
Attributes Attributes
Scope : local Scope : local
@@ -310,106 +236,7 @@ diff -bur HMI/n2t-out/cardEntities.txt HMI/US/portrait/n2t-out/cardEntities.txt
+ prints tSend.txt,0 + prints tSend.txt,0
+ prints crcval,2 + prints crcval,2
+ +
+Button bStop6
+ Attributes
+ Scope : local
+ Dragging : 0
+ Disable release event after dragging: 0
+ Send Component ID : disabled
+ State : unpressed
+ Text : 
+ Max. Text Size : 10
+
+ Events
+ Touch Press Event
+ tSend.txt="event,buttonPress2,"+entn6.txt+",stop"
+ //send calc crc
+ btlen tSend.txt,sys0
+ crcrest 1,0xffff // reset CRC
+ crcputh 55 bb
+ crcputs sys0,1
+ crcputs tSend.txt,0
+ //send cmd
+ printh 55 bb
+ prints sys0,2
+ prints tSend.txt,0
+ prints crcval,2
+
+Button bDown6
+ Attributes
+ Scope : local
+ Dragging : 0
+ Disable release event after dragging: 0
+ Send Component ID : disabled
+ State : unpressed
+ Text : 
+ Max. Text Size : 10
+
+ Events
+ Touch Press Event
+ tSend.txt="event,buttonPress2,"+entn6.txt+",down"
+ //send calc crc
+ btlen tSend.txt,sys0
+ crcrest 1,0xffff // reset CRC
+ crcputh 55 bb
+ crcputs sys0,1
+ crcputs tSend.txt,0
+ //send cmd
+ printh 55 bb
+ prints sys0,2
+ prints tSend.txt,0
+ prints crcval,2
+
+Button bUp6
+ Attributes
+ Scope : local
+ Dragging : 0
+ Disable release event after dragging: 0
+ Send Component ID : disabled
+ State : unpressed
+ Text : 
+ Max. Text Size : 10
+
+ Events
+ Touch Press Event
+ tSend.txt="event,buttonPress2,"+entn6.txt+",up"
+ //send calc crc
+ btlen tSend.txt,sys0
+ crcrest 1,0xffff // reset CRC
+ crcputh 55 bb
+ crcputs sys0,1
+ crcputs tSend.txt,0
+ //send cmd
+ printh 55 bb
+ prints sys0,2
+ prints tSend.txt,0
+ prints crcval,2
+
+Button bText6
+ Attributes
+ Scope : local
+ Dragging : 0
+ Disable release event after dragging: 0
+ Send Component ID : disabled
+ State : unpressed
+ Text : newtxt
+ Max. Text Size : 10
+
+ Events
+ Touch Press Event
+ tSend.txt="event,buttonPress2,"+entn6.txt+",button"
+ //send calc crc
+ btlen tSend.txt,sys0
+ crcrest 1,0xffff // reset CRC
+ crcputh 55 bb
+ crcputs sys0,1
+ crcputs tSend.txt,0
+ //send cmd
+ printh 55 bb
+ prints sys0,2
+ prints tSend.txt,0
+ prints crcval,2
+
Dual-state Button btOnOff1 Dual-state Button btOnOff1
Attributes Attributes
Scope : local Scope : local
@@ -444,33 +271,7 @@ diff -bur HMI/n2t-out/cardEntities.txt HMI/US/portrait/n2t-out/cardEntities.txt
+ prints tSend.txt,0 + prints tSend.txt,0
+ prints crcval,2 + prints crcval,2
+ +
+Dual-state Button btOnOff6
+ Attributes
+ Scope : local
+ Dragging : 0
+ Disable release event after dragging: 0
+ Send Component ID : disabled
+ State : unpressed
+ Text :
+ Max. Text Size : 10
+
+ Events
+ Touch Press Event
+ tSend.txt="event,buttonPress2,"+entn6.txt+",OnOff,"
+ covx btOnOff6.val,tTmp.txt,0,0
+ tSend.txt+=tTmp.txt
+ //send calc crc
+ btlen tSend.txt,sys0
+ crcrest 1,0xffff // reset CRC
+ crcputh 55 bb
+ crcputs sys0,1
+ crcputs tSend.txt,0
+ //send cmd
+ printh 55 bb
+ prints sys0,2
+ prints tSend.txt,0
+ prints crcval,2
+
Hotspot mSpecial Hotspot mSpecial
Attributes Attributes
Scope : local Scope : local
@@ -500,39 +301,18 @@ diff -bur HMI/n2t-out/cardEntities.txt HMI/US/portrait/n2t-out/cardEntities.txt
+ page popupLight + page popupLight
+ } + }
+ +
+Hotspot m5
+ Attributes
+ Scope : local
+ Dragging : 0
+ Disable release event after dragging: 0
+ Send Component ID : disabled
+
+ Events
+ Touch Press Event
+ pageIcons.tTmp1.txt=tEntity6.txt
+ pageIcons.tTmp2.txt=entn6.txt
+ if(type6.txt=="shutter")
+ {
+ //popupShutter.tHeading.txt=tEntity6.txt
+ page popupShutter
+ }
+ if(type6.txt=="light")
+ {
+ //popupLight.tEntity.txt=tEntity6.txt
+ page popupLight
+ }
+
Timer tmSerial Timer tmSerial
Attributes Attributes
Scope : local Scope : local
@@ -1648,6 +2104,254 @@ @@ -1642,6 +2098,250 @@
covx tTmp.txt,sys0,0,0 covx tTmp.txt,sys0,0,0
hSlider4.maxval=sys0 hSlider4.maxval=sys0
} }
+ // get Type + // get Type
+ spstr strCommand.txt,type5.txt,",",27 + spstr strCommand.txt,type5.txt,"~",27
+ // get internal name + // get internal name
+ spstr strCommand.txt,entn5.txt,",",28 + spstr strCommand.txt,entn5.txt,"~",28
+ if(type5.txt=="delete"||type5.txt=="") + if(type5.txt=="delete"||type5.txt=="")
+ { + {
+ vis bUp5,0 + vis bUp5,0
@@ -547,16 +327,14 @@ diff -bur HMI/n2t-out/cardEntities.txt HMI/US/portrait/n2t-out/cardEntities.txt
+ }else + }else
+ { + {
+ // change icon + // change icon
+ spstr strCommand.txt,tTmp.txt,",",29 + spstr strCommand.txt,tIcon5.txt,"~",29
+ covx tTmp.txt,sys0,0,0
+ substr pageIcons.tIcons.txt,tIcon5.txt,sys0,1
+ vis tIcon5,1 + vis tIcon5,1
+ // change icon color + // change icon color
+ spstr strCommand.txt,tTmp.txt,",",30 + spstr strCommand.txt,tTmp.txt,"~",30
+ covx tTmp.txt,sys0,0,0 + covx tTmp.txt,sys0,0,0
+ tIcon5.pco=sys0 + tIcon5.pco=sys0
+ // set name + // set name
+ spstr strCommand.txt,tEntity5.txt,",",31 + spstr strCommand.txt,tEntity5.txt,"~",31
+ vis tEntity5,1 + vis tEntity5,1
+ } + }
+ if(type5.txt=="shutter") + if(type5.txt=="shutter")
@@ -579,7 +357,7 @@ diff -bur HMI/n2t-out/cardEntities.txt HMI/US/portrait/n2t-out/cardEntities.txt
+ vis hSlider5,0 + vis hSlider5,0
+ vis nNum5,0 + vis nNum5,0
+ // get Button State (optional Value) + // get Button State (optional Value)
+ spstr strCommand.txt,tTmp.txt,",",32 + spstr strCommand.txt,tTmp.txt,"~",32
+ covx tTmp.txt,sys0,0,0 + covx tTmp.txt,sys0,0,0
+ btOnOff5.val=sys0 + btOnOff5.val=sys0
+ } + }
@@ -593,7 +371,7 @@ diff -bur HMI/n2t-out/cardEntities.txt HMI/US/portrait/n2t-out/cardEntities.txt
+ vis hSlider5,0 + vis hSlider5,0
+ vis nNum5,0 + vis nNum5,0
+ // get Button State (optional Value) + // get Button State (optional Value)
+ spstr strCommand.txt,tTmp.txt,",",32 + spstr strCommand.txt,tTmp.txt,"~",32
+ covx tTmp.txt,sys0,0,0 + covx tTmp.txt,sys0,0,0
+ btOnOff5.val=sys0 + btOnOff5.val=sys0
+ } + }
@@ -610,7 +388,7 @@ diff -bur HMI/n2t-out/cardEntities.txt HMI/US/portrait/n2t-out/cardEntities.txt
+ bText5.pco=65535 + bText5.pco=65535
+ bText5.pco2=65535 + bText5.pco2=65535
+ // get Text (optional Value) + // get Text (optional Value)
+ spstr strCommand.txt,bText5.txt,",",32 + spstr strCommand.txt,bText5.txt,"~",32
+ } + }
+ if(type5.txt=="button") + if(type5.txt=="button")
+ { + {
@@ -625,7 +403,7 @@ diff -bur HMI/n2t-out/cardEntities.txt HMI/US/portrait/n2t-out/cardEntities.txt
+ bText5.pco=1374 + bText5.pco=1374
+ bText5.pco2=1374 + bText5.pco2=1374
+ // get Text (optional Value) + // get Text (optional Value)
+ spstr strCommand.txt,bText5.txt,",",32 + spstr strCommand.txt,bText5.txt,"~",32
+ } + }
+ if(type5.txt=="number") + if(type5.txt=="number")
+ { + {
@@ -638,7 +416,7 @@ diff -bur HMI/n2t-out/cardEntities.txt HMI/US/portrait/n2t-out/cardEntities.txt
+ vis hSlider5,1 + vis hSlider5,1
+ vis nNum5,1 + vis nNum5,1
+ // get config (optional Value) (use bText as variable) + // get config (optional Value) (use bText as variable)
+ spstr strCommand.txt,bText5.txt,",",32 + spstr strCommand.txt,bText5.txt,"~",32
+ //first value is current value + //first value is current value
+ spstr bText5.txt,tTmp.txt,"|",0 + spstr bText5.txt,tTmp.txt,"|",0
+ covx tTmp.txt,sys0,0,0 + covx tTmp.txt,sys0,0,0
@@ -653,133 +431,7 @@ diff -bur HMI/n2t-out/cardEntities.txt HMI/US/portrait/n2t-out/cardEntities.txt
+ covx tTmp.txt,sys0,0,0 + covx tTmp.txt,sys0,0,0
+ hSlider5.maxval=sys0 + hSlider5.maxval=sys0
+ } + }
+ // get Type
+ spstr strCommand.txt,type6.txt,",",33
+ // get internal name
+ spstr strCommand.txt,entn6.txt,",",34
+ if(type6.txt=="delete"||type6.txt=="")
+ {
+ vis bUp6,0
+ vis bStop6,0
+ vis bDown6,0
+ vis btOnOff6,0
+ vis tEntity6,0
+ vis tIcon6,0
+ vis bText6,0
+ vis hSlider6,0
+ vis nNum6,0
+ }else
+ {
+ // change icon
+ spstr strCommand.txt,tTmp.txt,",",35
+ covx tTmp.txt,sys0,0,0
+ substr pageIcons.tIcons.txt,tIcon6.txt,sys0,1
+ vis tIcon6,1
+ // change icon color
+ spstr strCommand.txt,tTmp.txt,",",36
+ covx tTmp.txt,sys0,0,0
+ tIcon6.pco=sys0
+ // set name
+ spstr strCommand.txt,tEntity6.txt,",",37
+ vis tEntity6,1
+ }
+ if(type6.txt=="shutter")
+ {
+ vis bUp6,1
+ vis bStop6,1
+ vis bDown6,1
+ vis btOnOff6,0
+ vis bText6,0
+ vis hSlider6,0
+ vis nNum6,0
+ }
+ if(type6.txt=="light")
+ {
+ vis bUp6,0
+ vis bStop6,0
+ vis bDown6,0
+ vis btOnOff6,1
+ vis bText6,0
+ vis hSlider6,0
+ vis nNum6,0
+ // get Button State (optional Value)
+ spstr strCommand.txt,tTmp.txt,",",38
+ covx tTmp.txt,sys0,0,0
+ btOnOff6.val=sys0
+ }
+ if(type6.txt=="switch")
+ {
+ vis bUp6,0
+ vis bStop6,0
+ vis bDown6,0
+ vis btOnOff6,1
+ vis bText6,0
+ vis hSlider6,0
+ vis nNum6,0
+ // get Button State (optional Value)
+ spstr strCommand.txt,tTmp.txt,",",38
+ covx tTmp.txt,sys0,0,0
+ btOnOff6.val=sys0
+ }
+ if(type6.txt=="text")
+ {
+ vis bUp6,0
+ vis bStop6,0
+ vis bDown6,0
+ vis btOnOff6,0
+ vis bText6,1
+ tsw bText6,0
+ vis hSlider6,0
+ vis nNum6,0
+ bText6.pco=65535
+ bText6.pco2=65535
+ // get Text (optional Value)
+ spstr strCommand.txt,bText6.txt,",",38
+ }
+ if(type6.txt=="button")
+ {
+ vis bUp6,0
+ vis bStop6,0
+ vis bDown6,0
+ vis btOnOff6,0
+ vis bText6,1
+ tsw bText6,1
+ vis hSlider6,0
+ vis nNum6,0
+ bText6.pco=1374
+ bText6.pco2=1374
+ // get Text (optional Value)
+ spstr strCommand.txt,bText6.txt,",",38
+ }
+ if(type6.txt=="number")
+ {
+ vis bUp6,0
+ vis bStop6,0
+ vis bDown6,0
+ vis btOnOff6,0
+ vis bText6,0
+ tsw bText6,0
+ vis hSlider6,1
+ vis nNum6,1
+ // get config (optional Value) (use bText as variable)
+ spstr strCommand.txt,bText6.txt,",",38
+ //first value is current value
+ spstr bText6.txt,tTmp.txt,"|",0
+ covx tTmp.txt,sys0,0,0
+ hSlider6.val=sys0
+ nNum6.val=sys0
+ //second value is min value
+ spstr bText6.txt,tTmp.txt,"|",1
+ covx tTmp.txt,sys0,0,0
+ hSlider6.minval=sys0
+ //third value is max value
+ spstr bText6.txt,tTmp.txt,"|",2
+ covx tTmp.txt,sys0,0,0
+ hSlider6.maxval=sys0
+ }
}
if(tInstruction.txt=="pageType")
{
diff -bur HMI/n2t-out/pageStartup.txt HMI/US/portrait/n2t-out/pageStartup.txt diff -bur HMI/n2t-out/pageStartup.txt HMI/US/portrait/n2t-out/pageStartup.txt
--- HMI/n2t-out/pageStartup.txt 2022-04-01 04:54:12.884151859 +0000 --- HMI/n2t-out/pageStartup.txt 2022-04-01 04:54:12.884151859 +0000
+++ HMI/US/portrait/n2t-out/pageStartup.txt 2022-04-01 04:54:13.372185922 +0000 +++ HMI/US/portrait/n2t-out/pageStartup.txt 2022-04-01 04:54:13.372185922 +0000

View File

@@ -1,6 +1,6 @@
diff -bur HMI/n2t-out/Program.s.txt HMI/US/portrait/n2t-out/Program.s.txt diff -bur HMI/n2t-out/Program.s.txt HMI/US/portrait/n2t-out/Program.s.txt
--- HMI/n2t-out/Program.s.txt 2022-04-08 20:30:53.290164509 +0000 --- HMI/n2t-out/Program.s.txt 2022-04-13 20:21:34.698226402 +0000
+++ HMI/US/portrait/n2t-out/Program.s.txt 2022-04-08 20:30:53.734183782 +0000 +++ HMI/US/portrait/n2t-out/Program.s.txt 2022-04-13 20:21:35.070233972 +0000
@@ -11,6 +11,6 @@ @@ -11,6 +11,6 @@
// dim value // dim value
int dimValue=40 int dimValue=40
@@ -11,9 +11,9 @@ diff -bur HMI/n2t-out/Program.s.txt HMI/US/portrait/n2t-out/Program.s.txt
+ //lcd_dev fffb 0002 0000 0020 + //lcd_dev fffb 0002 0000 0020
page pageStartup page pageStartup
diff -bur HMI/n2t-out/cardEntities.txt HMI/US/portrait/n2t-out/cardEntities.txt diff -bur HMI/n2t-out/cardEntities.txt HMI/US/portrait/n2t-out/cardEntities.txt
--- HMI/n2t-out/cardEntities.txt 2022-04-08 20:30:53.290164509 +0000 --- HMI/n2t-out/cardEntities.txt 2022-04-13 20:21:34.698226402 +0000
+++ HMI/US/portrait/n2t-out/cardEntities.txt 2022-04-08 20:30:53.738183956 +0000 +++ HMI/US/portrait/n2t-out/cardEntities.txt 2022-04-13 20:21:35.070233972 +0000
@@ -62,6 +62,26 @@ @@ -62,6 +62,16 @@
vis bText4,0 vis bText4,0
vis hSlider4,0 vis hSlider4,0
vis nNum4,0 vis nNum4,0
@@ -27,20 +27,10 @@ diff -bur HMI/n2t-out/cardEntities.txt HMI/US/portrait/n2t-out/cardEntities.txt
+ vis bText5,0 + vis bText5,0
+ vis hSlider5,0 + vis hSlider5,0
+ vis nNum5,0 + vis nNum5,0
+ //ui e6
+ vis btOnOff6,0
+ vis bUp6,0
+ vis bStop6,0
+ vis bDown6,0
+ vis tIcon6,0
+ vis tEntity6,0
+ vis bText6,0
+ vis hSlider6,0
+ vis nNum6,0
Variable (string) strCommand Variable (string) strCommand
Attributes Attributes
@@ -117,6 +137,30 @@ @@ -117,6 +127,18 @@
Text : Text :
Max. Text Size: 70 Max. Text Size: 70
@@ -50,28 +40,16 @@ diff -bur HMI/n2t-out/cardEntities.txt HMI/US/portrait/n2t-out/cardEntities.txt
+ Text : + Text :
+ Max. Text Size: 70 + Max. Text Size: 70
+ +
+Variable (string) entn6
+ Attributes
+ Scope : local
+ Text :
+ Max. Text Size: 70
+
+Variable (string) type5 +Variable (string) type5
+ Attributes + Attributes
+ Scope : local + Scope : local
+ Text : + Text :
+ Max. Text Size: 10 + Max. Text Size: 10
+
+Variable (string) type6
+ Attributes
+ Scope : local
+ Text :
+ Max. Text Size: 10
+ +
Number nNum1 Number nNum1
Attributes Attributes
Scope : local Scope : local
@@ -153,6 +197,24 @@ @@ -153,6 +175,15 @@
Associated Keyboard : none Associated Keyboard : none
Value : 0 Value : 0
@@ -83,20 +61,11 @@ diff -bur HMI/n2t-out/cardEntities.txt HMI/US/portrait/n2t-out/cardEntities.txt
+ Send Component ID : disabled + Send Component ID : disabled
+ Associated Keyboard : none + Associated Keyboard : none
+ Value : 0 + Value : 0
+
+Number nNum6
+ Attributes
+ Scope : local
+ Dragging : 0
+ Disable release event after dragging: 0
+ Send Component ID : disabled
+ Associated Keyboard : none
+ Value : 0
+ +
Text tHeading Text tHeading
Attributes Attributes
Scope : local Scope : local
@@ -283,6 +345,46 @@ @@ -283,6 +314,26 @@
Text : Text :
Max. Text Size : 50 Max. Text Size : 50
@@ -119,31 +88,11 @@ diff -bur HMI/n2t-out/cardEntities.txt HMI/US/portrait/n2t-out/cardEntities.txt
+ Associated Keyboard : none + Associated Keyboard : none
+ Text :  + Text : 
+ Max. Text Size : 5 + Max. Text Size : 5
+
+Text tEntity6
+ Attributes
+ Scope : local
+ Dragging : 0
+ Disable release event after dragging: 0
+ Send Component ID : disabled
+ Associated Keyboard : none
+ Text : tEntity6
+ Max. Text Size : 30
+
+Text tIcon6
+ Attributes
+ Scope : local
+ Dragging : 0
+ Disable release event after dragging: 0
+ Send Component ID : disabled
+ Associated Keyboard : none
+ Text : 
+ Max. Text Size : 5
+ +
Picture p0 Picture p0
Attributes Attributes
Scope : local Scope : local
@@ -402,6 +504,62 @@ @@ -402,6 +453,34 @@
prints tSend.txt,0 prints tSend.txt,0
prints crcval,2 prints crcval,2
@@ -174,39 +123,11 @@ diff -bur HMI/n2t-out/cardEntities.txt HMI/US/portrait/n2t-out/cardEntities.txt
+ prints sys0,2 + prints sys0,2
+ prints tSend.txt,0 + prints tSend.txt,0
+ prints crcval,2 + prints crcval,2
+
+Slider hSlider6
+ Attributes
+ Scope : local
+ Dragging : 0
+ Disable release event after dragging: 0
+ Send Component ID : disabled
+ Position : 50
+ Upper range limit : 100
+ Lower range limit : 0
+
+ Events
+ Touch Release Event
+ nNum6.val=hSlider6.val
+ tSend.txt="event,buttonPress2,"+entn6.txt+",number-set,"
+ covx nNum6.val,tTmp.txt,0,0
+ tSend.txt+=tTmp.txt
+ //send calc crc
+ btlen tSend.txt,sys0
+ crcrest 1,0xffff // reset CRC
+ crcputh 55 bb
+ crcputs sys0,1
+ crcputs tSend.txt,0
+ //send cmd
+ printh 55 bb
+ prints sys0,2
+ prints tSend.txt,0
+ prints crcval,2
+ +
Button bDown1 Button bDown1
Attributes Attributes
Scope : local Scope : local
@@ -859,6 +1017,206 @@ @@ -859,6 +938,106 @@
prints tSend.txt,0 prints tSend.txt,0
prints crcval,2 prints crcval,2
@@ -309,111 +230,11 @@ diff -bur HMI/n2t-out/cardEntities.txt HMI/US/portrait/n2t-out/cardEntities.txt
+ prints sys0,2 + prints sys0,2
+ prints tSend.txt,0 + prints tSend.txt,0
+ prints crcval,2 + prints crcval,2
+
+Button bStop6
+ Attributes
+ Scope : local
+ Dragging : 0
+ Disable release event after dragging: 0
+ Send Component ID : disabled
+ State : unpressed
+ Text : 
+ Max. Text Size : 10
+
+ Events
+ Touch Press Event
+ tSend.txt="event,buttonPress2,"+entn6.txt+",stop"
+ //send calc crc
+ btlen tSend.txt,sys0
+ crcrest 1,0xffff // reset CRC
+ crcputh 55 bb
+ crcputs sys0,1
+ crcputs tSend.txt,0
+ //send cmd
+ printh 55 bb
+ prints sys0,2
+ prints tSend.txt,0
+ prints crcval,2
+
+Button bDown6
+ Attributes
+ Scope : local
+ Dragging : 0
+ Disable release event after dragging: 0
+ Send Component ID : disabled
+ State : unpressed
+ Text : 
+ Max. Text Size : 10
+
+ Events
+ Touch Press Event
+ tSend.txt="event,buttonPress2,"+entn6.txt+",down"
+ //send calc crc
+ btlen tSend.txt,sys0
+ crcrest 1,0xffff // reset CRC
+ crcputh 55 bb
+ crcputs sys0,1
+ crcputs tSend.txt,0
+ //send cmd
+ printh 55 bb
+ prints sys0,2
+ prints tSend.txt,0
+ prints crcval,2
+
+Button bUp6
+ Attributes
+ Scope : local
+ Dragging : 0
+ Disable release event after dragging: 0
+ Send Component ID : disabled
+ State : unpressed
+ Text : 
+ Max. Text Size : 10
+
+ Events
+ Touch Press Event
+ tSend.txt="event,buttonPress2,"+entn6.txt+",up"
+ //send calc crc
+ btlen tSend.txt,sys0
+ crcrest 1,0xffff // reset CRC
+ crcputh 55 bb
+ crcputs sys0,1
+ crcputs tSend.txt,0
+ //send cmd
+ printh 55 bb
+ prints sys0,2
+ prints tSend.txt,0
+ prints crcval,2
+
+Button bText6
+ Attributes
+ Scope : local
+ Dragging : 0
+ Disable release event after dragging: 0
+ Send Component ID : disabled
+ State : unpressed
+ Text : newtxt
+ Max. Text Size : 10
+
+ Events
+ Touch Press Event
+ tSend.txt="event,buttonPress2,"+entn6.txt+",button"
+ //send calc crc
+ btlen tSend.txt,sys0
+ crcrest 1,0xffff // reset CRC
+ crcputh 55 bb
+ crcputs sys0,1
+ crcputs tSend.txt,0
+ //send cmd
+ printh 55 bb
+ prints sys0,2
+ prints tSend.txt,0
+ prints crcval,2
+ +
Dual-state Button btOnOff1 Dual-state Button btOnOff1
Attributes Attributes
Scope : local Scope : local
@@ -967,6 +1325,60 @@ @@ -967,6 +1146,33 @@
prints tSend.txt,0 prints tSend.txt,0
prints crcval,2 prints crcval,2
@@ -443,38 +264,11 @@ diff -bur HMI/n2t-out/cardEntities.txt HMI/US/portrait/n2t-out/cardEntities.txt
+ prints sys0,2 + prints sys0,2
+ prints tSend.txt,0 + prints tSend.txt,0
+ prints crcval,2 + prints crcval,2
+
+Dual-state Button btOnOff6
+ Attributes
+ Scope : local
+ Dragging : 0
+ Disable release event after dragging: 0
+ Send Component ID : disabled
+ State : unpressed
+ Text :
+ Max. Text Size : 10
+
+ Events
+ Touch Press Event
+ tSend.txt="event,buttonPress2,"+entn6.txt+",OnOff,"
+ covx btOnOff6.val,tTmp.txt,0,0
+ tSend.txt+=tTmp.txt
+ //send calc crc
+ btlen tSend.txt,sys0
+ crcrest 1,0xffff // reset CRC
+ crcputh 55 bb
+ crcputs sys0,1
+ crcputs tSend.txt,0
+ //send cmd
+ printh 55 bb
+ prints sys0,2
+ prints tSend.txt,0
+ prints crcval,2
+ +
Hotspot mSpecial Hotspot mSpecial
Attributes Attributes
Scope : local Scope : local
@@ -1072,6 +1484,50 @@ @@ -1072,6 +1278,28 @@
page popupLight page popupLight
} }
@@ -499,33 +293,11 @@ diff -bur HMI/n2t-out/cardEntities.txt HMI/US/portrait/n2t-out/cardEntities.txt
+ //popupLight.tEntity.txt=tEntity5.txt + //popupLight.tEntity.txt=tEntity5.txt
+ page popupLight + page popupLight
+ } + }
+
+Hotspot m5
+ Attributes
+ Scope : local
+ Dragging : 0
+ Disable release event after dragging: 0
+ Send Component ID : disabled
+
+ Events
+ Touch Press Event
+ pageIcons.tTmp1.txt=tEntity6.txt
+ pageIcons.tTmp2.txt=entn6.txt
+ if(type6.txt=="shutter")
+ {
+ //popupShutter.tHeading.txt=tEntity6.txt
+ page popupShutter
+ }
+ if(type6.txt=="light")
+ {
+ //popupLight.tEntity.txt=tEntity6.txt
+ page popupLight
+ }
+ +
Timer tmSerial Timer tmSerial
Attributes Attributes
Scope : local Scope : local
@@ -1642,6 +2098,250 @@ @@ -1642,6 +1870,128 @@
covx tTmp.txt,sys0,0,0 covx tTmp.txt,sys0,0,0
hSlider4.maxval=sys0 hSlider4.maxval=sys0
} }
@@ -650,135 +422,13 @@ diff -bur HMI/n2t-out/cardEntities.txt HMI/US/portrait/n2t-out/cardEntities.txt
+ spstr bText5.txt,tTmp.txt,"|",2 + spstr bText5.txt,tTmp.txt,"|",2
+ covx tTmp.txt,sys0,0,0 + covx tTmp.txt,sys0,0,0
+ hSlider5.maxval=sys0 + hSlider5.maxval=sys0
+ }
+ // get Type
+ spstr strCommand.txt,type6.txt,"~",33
+ // get internal name
+ spstr strCommand.txt,entn6.txt,"~",34
+ if(type6.txt=="delete"||type6.txt=="")
+ {
+ vis bUp6,0
+ vis bStop6,0
+ vis bDown6,0
+ vis btOnOff6,0
+ vis tEntity6,0
+ vis tIcon6,0
+ vis bText6,0
+ vis hSlider6,0
+ vis nNum6,0
+ }else
+ {
+ // change icon
+ spstr strCommand.txt,tIcon6.txt,"~",35
+ vis tIcon6,1
+ // change icon color
+ spstr strCommand.txt,tTmp.txt,"~",36
+ covx tTmp.txt,sys0,0,0
+ tIcon6.pco=sys0
+ // set name
+ spstr strCommand.txt,tEntity6.txt,"~",37
+ vis tEntity6,1
+ }
+ if(type6.txt=="shutter")
+ {
+ vis bUp6,1
+ vis bStop6,1
+ vis bDown6,1
+ vis btOnOff6,0
+ vis bText6,0
+ vis hSlider6,0
+ vis nNum6,0
+ }
+ if(type6.txt=="light")
+ {
+ vis bUp6,0
+ vis bStop6,0
+ vis bDown6,0
+ vis btOnOff6,1
+ vis bText6,0
+ vis hSlider6,0
+ vis nNum6,0
+ // get Button State (optional Value)
+ spstr strCommand.txt,tTmp.txt,"~",38
+ covx tTmp.txt,sys0,0,0
+ btOnOff6.val=sys0
+ }
+ if(type6.txt=="switch")
+ {
+ vis bUp6,0
+ vis bStop6,0
+ vis bDown6,0
+ vis btOnOff6,1
+ vis bText6,0
+ vis hSlider6,0
+ vis nNum6,0
+ // get Button State (optional Value)
+ spstr strCommand.txt,tTmp.txt,"~",38
+ covx tTmp.txt,sys0,0,0
+ btOnOff6.val=sys0
+ }
+ if(type6.txt=="text")
+ {
+ vis bUp6,0
+ vis bStop6,0
+ vis bDown6,0
+ vis btOnOff6,0
+ vis bText6,1
+ tsw bText6,0
+ vis hSlider6,0
+ vis nNum6,0
+ bText6.pco=65535
+ bText6.pco2=65535
+ // get Text (optional Value)
+ spstr strCommand.txt,bText6.txt,"~",38
+ }
+ if(type6.txt=="button")
+ {
+ vis bUp6,0
+ vis bStop6,0
+ vis bDown6,0
+ vis btOnOff6,0
+ vis bText6,1
+ tsw bText6,1
+ vis hSlider6,0
+ vis nNum6,0
+ bText6.pco=1374
+ bText6.pco2=1374
+ // get Text (optional Value)
+ spstr strCommand.txt,bText6.txt,"~",38
+ }
+ if(type6.txt=="number")
+ {
+ vis bUp6,0
+ vis bStop6,0
+ vis bDown6,0
+ vis btOnOff6,0
+ vis bText6,0
+ tsw bText6,0
+ vis hSlider6,1
+ vis nNum6,1
+ // get config (optional Value) (use bText as variable)
+ spstr strCommand.txt,bText6.txt,"~",38
+ //first value is current value
+ spstr bText6.txt,tTmp.txt,"|",0
+ covx tTmp.txt,sys0,0,0
+ hSlider6.val=sys0
+ nNum6.val=sys0
+ //second value is min value
+ spstr bText6.txt,tTmp.txt,"|",1
+ covx tTmp.txt,sys0,0,0
+ hSlider6.minval=sys0
+ //third value is max value
+ spstr bText6.txt,tTmp.txt,"|",2
+ covx tTmp.txt,sys0,0,0
+ hSlider6.maxval=sys0
+ } + }
} }
if(tInstruction.txt=="pageType") if(tInstruction.txt=="pageType")
{ {
diff -bur HMI/n2t-out/pageStartup.txt HMI/US/portrait/n2t-out/pageStartup.txt diff -bur HMI/n2t-out/pageStartup.txt HMI/US/portrait/n2t-out/pageStartup.txt
--- HMI/n2t-out/pageStartup.txt 2022-04-08 20:30:53.290164509 +0000 --- HMI/n2t-out/pageStartup.txt 2022-04-13 20:21:34.698226402 +0000
+++ HMI/US/portrait/n2t-out/pageStartup.txt 2022-04-08 20:30:53.734183782 +0000 +++ HMI/US/portrait/n2t-out/pageStartup.txt 2022-04-13 20:21:35.070233972 +0000
@@ -142,7 +142,7 @@ @@ -142,7 +142,7 @@
Disable release event after dragging: 0 Disable release event after dragging: 0
Send Component ID : disabled Send Component ID : disabled
@@ -797,60 +447,3 @@ diff -bur HMI/n2t-out/pageStartup.txt HMI/US/portrait/n2t-out/pageStartup.txt
//send calc crc //send calc crc
btlen tSend.txt,sys0 btlen tSend.txt,sys0
crcrest 1,0xffff // reset CRC crcrest 1,0xffff // reset CRC
diff -bur HMI/n2t-out/screensaver.txt HMI/US/portrait/n2t-out/screensaver.txt
--- HMI/n2t-out/screensaver.txt 2022-04-08 20:30:53.290164509 +0000
+++ HMI/US/portrait/n2t-out/screensaver.txt 2022-04-08 20:30:53.738183956 +0000
@@ -48,6 +48,26 @@
Scope: local
Value: 0
+Text tInstruction
+ Attributes
+ Scope : local
+ Dragging : 0
+ Disable release event after dragging: 0
+ Send Component ID : disabled
+ Associated Keyboard : none
+ Text :
+ Max. Text Size : 50
+
+Text tTmp
+ Attributes
+ Scope : local
+ Dragging : 0
+ Disable release event after dragging: 0
+ Send Component ID : disabled
+ Associated Keyboard : none
+ Text :
+ Max. Text Size : 50
+
Text tTime
Attributes
Scope : local
@@ -278,26 +298,6 @@
Text :
Max. Text Size : 10
-Text tTmp
- Attributes
- Scope : local
- Dragging : 0
- Disable release event after dragging: 0
- Send Component ID : disabled
- Associated Keyboard : none
- Text :
- Max. Text Size : 50
-
-Text tInstruction
- Attributes
- Scope : local
- Dragging : 0
- Disable release event after dragging: 0
- Send Component ID : disabled
- Associated Keyboard : none
- Text :
- Max. Text Size : 50
-
Picture p0
Attributes
Scope : local

View File

@@ -0,0 +1,19 @@
+++ HMI/US/portrait/diff-eu-version.txt 2022-04-13 20:21:35.094234461 +0000
+--- HMI/n2t-out/Program.s.txt 2022-04-13 20:21:34.698226402 +0000
++++ HMI/US/portrait/n2t-out/Program.s.txt 2022-04-13 20:21:35.070233972 +0000
+--- HMI/n2t-out/cardEntities.txt 2022-04-13 20:21:34.698226402 +0000
++++ HMI/US/portrait/n2t-out/cardEntities.txt 2022-04-13 20:21:35.070233972 +0000
+@@ -62,6 +62,16 @@
+@@ -117,6 +127,18 @@
+@@ -153,6 +175,15 @@
+@@ -283,6 +314,26 @@
+@@ -402,6 +453,34 @@
+@@ -859,6 +938,106 @@
+@@ -967,6 +1146,33 @@
+@@ -1072,6 +1278,28 @@
+@@ -1642,6 +1870,128 @@
+ }
+ if(tInstruction.txt=="pageType")
+ {
+--- HMI/n2t-out/pageStartup.txt 2022-04-13 20:21:34.698226402 +0000
++++ HMI/US/portrait/n2t-out/pageStartup.txt 2022-04-13 20:21:35.070233972 +0000

View File

@@ -1073,7 +1073,7 @@ Timer tmSerial
} }
if(tTmp.txt=="1") if(tTmp.txt=="1")
{ {
vis bPrev,1 vis bNext,1
bNext.txt="" bNext.txt=""
} }
//text arm1 //text arm1

File diff suppressed because it is too large Load Diff

View File

@@ -1036,7 +1036,7 @@ Timer tmSerial
} }
if(tTmp.txt=="1") if(tTmp.txt=="1")
{ {
vis bPrev,1 vis bNext,1
bNext.txt="" bNext.txt=""
} }
// get Type // get Type

View File

@@ -956,7 +956,7 @@ Timer tmSerial
} }
if(tTmp.txt=="1") if(tTmp.txt=="1")
{ {
vis bPrev,1 vis bNext,1
bNext.txt="" bNext.txt=""
} }
//entity name //entity name

View File

@@ -1224,7 +1224,7 @@ Timer tmSerial
} }
if(tTmp.txt=="1") if(tTmp.txt=="1")
{ {
vis bPrev,1 vis bNext,1
bNext.txt="" bNext.txt=""
} }
//entity name //entity name

View File

@@ -10,49 +10,49 @@ pageIcons
6 Component(s) 6 Component(s)
0 Line(s) of event code 0 Line(s) of event code
0 Unique line(s) of event code 0 Unique line(s) of event code
popupNotify
17 Component(s)
196 Line(s) of event code
123 Unique line(s) of event code
popupShutter
19 Component(s)
191 Line(s) of event code
107 Unique line(s) of event code
pageStartup pageStartup
19 Component(s) 19 Component(s)
150 Line(s) of event code 150 Line(s) of event code
113 Unique line(s) of event code 113 Unique line(s) of event code
popupNotify popupLight
17 Component(s) 27 Component(s)
178 Line(s) of event code 338 Line(s) of event code
117 Unique line(s) of event code 182 Unique line(s) of event code
screensaver screensaver
33 Component(s) 33 Component(s)
195 Line(s) of event code 266 Line(s) of event code
152 Unique line(s) of event code 218 Unique line(s) of event code
cardEntities
86 Component(s)
1350 Line(s) of event code
547 Unique line(s) of event code
cardMedia cardMedia
30 Component(s) 30 Component(s)
329 Line(s) of event code 329 Line(s) of event code
168 Unique line(s) of event code 169 Unique line(s) of event code
cardAlarm cardAlarm
35 Component(s) 35 Component(s)
343 Line(s) of event code 343 Line(s) of event code
213 Unique line(s) of event code 214 Unique line(s) of event code
cardGrid cardGrid
39 Component(s) 39 Component(s)
418 Line(s) of event code 418 Line(s) of event code
243 Unique line(s) of event code 244 Unique line(s) of event code
cardThermo cardThermo
41 Component(s) 41 Component(s)
442 Line(s) of event code 442 Line(s) of event code
246 Unique line(s) of event code 247 Unique line(s) of event code
popupShutter cardEntities
19 Component(s) 74 Component(s)
178 Line(s) of event code 1157 Line(s) of event code
101 Unique line(s) of event code 479 Unique line(s) of event code
popupLight
27 Component(s)
320 Line(s) of event code
173 Unique line(s) of event code
Total Total
12 Page(s) 12 Page(s)
365 Component(s) 353 Component(s)
3926 Line(s) of event code 3853 Line(s) of event code
1059 Unique line(s) of event code 1057 Unique line(s) of event code

View File

@@ -402,7 +402,7 @@ Text tVersion
Horizontal Alignment : center Horizontal Alignment : center
Vertical Alignment : center Vertical Alignment : center
Input Type : character Input Type : character
Text : 30 Text : 31
Max. Text Size : 10 Max. Text Size : 10
Word wrap : disabled Word wrap : disabled
Horizontal Spacing : 0 Horizontal Spacing : 0

View File

@@ -916,25 +916,43 @@ Timer tmSerial
//we are going to exit this page with this command, so we have to clear the buffer, so we are not getting into a stupid loop ... //we are going to exit this page with this command, so we have to clear the buffer, so we are not getting into a stupid loop ...
udelete payloadLength-1 udelete payloadLength-1
bufferPos=0 bufferPos=0
if(tId.txt=="pageStartup")
{
page pageStartup
}
if(tId.txt=="screensaver")
{
page screensaver
}
if(tId.txt=="cardEntities") if(tId.txt=="cardEntities")
{ {
page cardEntities page cardEntities
} }
if(tId.txt=="cardMedia") if(tId.txt=="cardGrid")
{ {
page cardMedia page cardGrid
} }
if(tId.txt=="pageStartup") if(tId.txt=="popupLight")
{ {
page pageStartup pageIcons.tTmp1.txt=tTmp.txt
page popupLight
}
if(tId.txt=="popupShutter")
{
pageIcons.tTmp1.txt=tTmp.txt
page popupShutter
} }
if(tId.txt=="popupNotify") if(tId.txt=="popupNotify")
{ {
page popupNotify page popupNotify
} }
if(tId.txt=="cardGrid") if(tId.txt=="cardThermo")
{ {
page cardGrid page cardThermo
}
if(tId.txt=="cardMedia")
{
page cardMedia
} }
if(tId.txt=="cardAlarm") if(tId.txt=="cardAlarm")
{ {

View File

@@ -548,25 +548,43 @@ Timer tmSerial
pageIcons.tTmp1.txt=tTmp.txt pageIcons.tTmp1.txt=tTmp.txt
page popupLight page popupLight
} }
if(tId.txt=="pageStartup")
{
page pageStartup
}
if(tId.txt=="screensaver")
{
page screensaver
}
if(tId.txt=="cardEntities") if(tId.txt=="cardEntities")
{ {
page cardEntities page cardEntities
} }
if(tId.txt=="cardMedia") if(tId.txt=="cardGrid")
{ {
page cardMedia page cardGrid
}
if(tId.txt=="popupLight")
{
pageIcons.tTmp1.txt=tTmp.txt
page popupLight
}
if(tId.txt=="popupShutter")
{
pageIcons.tTmp1.txt=tTmp.txt
page popupShutter
}
if(tId.txt=="popupNotify")
{
page popupNotify
} }
if(tId.txt=="cardThermo") if(tId.txt=="cardThermo")
{ {
page cardThermo page cardThermo
} }
if(tId.txt=="pageStartup") if(tId.txt=="cardMedia")
{ {
page pageStartup page cardMedia
}
if(tId.txt=="cardGrid")
{
page cardGrid
} }
if(tId.txt=="cardAlarm") if(tId.txt=="cardAlarm")
{ {

View File

@@ -631,30 +631,43 @@ Timer tmSerial
//we are going to exit this page with this command, so we have to clear the buffer, so we are not getting into a stupid loop ... //we are going to exit this page with this command, so we have to clear the buffer, so we are not getting into a stupid loop ...
udelete payloadLength-1 udelete payloadLength-1
bufferPos=0 bufferPos=0
if(tId.txt=="popupLight") if(tId.txt=="pageStartup")
{ {
pageIcons.tTmp1.txt=tTmp.txt page pageStartup
page popupLight }
if(tId.txt=="screensaver")
{
page screensaver
} }
if(tId.txt=="cardEntities") if(tId.txt=="cardEntities")
{ {
page cardEntities page cardEntities
} }
if(tId.txt=="cardMedia") if(tId.txt=="cardGrid")
{ {
page cardMedia page cardGrid
} }
if(tId.txt=="pageStartup") if(tId.txt=="popupLight")
{ {
page pageStartup pageIcons.tTmp1.txt=tTmp.txt
page popupLight
}
if(tId.txt=="popupShutter")
{
pageIcons.tTmp1.txt=tTmp.txt
page popupShutter
} }
if(tId.txt=="popupNotify") if(tId.txt=="popupNotify")
{ {
page popupNotify page popupNotify
} }
if(tId.txt=="cardGrid") if(tId.txt=="cardThermo")
{ {
page cardGrid page cardThermo
}
if(tId.txt=="cardMedia")
{
page cardMedia
} }
if(tId.txt=="cardAlarm") if(tId.txt=="cardAlarm")
{ {

View File

@@ -48,80 +48,34 @@ Variable (string) strCommand
Variable (string) tId Variable (string) tId
Attributes Attributes
ID : 19 ID : 17
Scope : local Scope : local
Text : Text :
Max. Text Size: 25 Max. Text Size: 25
Variable (int32) vaTap Variable (int32) vaTap
Attributes Attributes
ID : 27 ID : 25
Scope: local Scope: local
Value: 0 Value: 0
Text tInstruction Variable (string) tInstruction
Attributes Attributes
ID : 5 ID : 31
Scope : local Scope : local
Dragging : 0
Disable release event after dragging: 0
Send Component ID : disabled
Opacity : 127
x coordinate : 260
y coordinate : 446
Width : 26
Height : 30
Effect : load
Effect Priority : 0
Effect Time : 300
Fill : solid color
Style : flat
Associated Keyboard : none
Font ID : 0
Back. Color : 65535
Font Color : 0
Horizontal Alignment : center
Vertical Alignment : center
Input Type : character
Text : Text :
Max. Text Size : 50 Max. Text Size: 50
Word wrap : disabled
Horizontal Spacing : 0
Vertical Spacing : 0
Text tTmp Variable (string) tTmp
Attributes Attributes
ID : 6 ID : 32
Scope : local Scope : local
Dragging : 0
Disable release event after dragging: 0
Send Component ID : disabled
Opacity : 127
x coordinate : 293
y coordinate : 447
Width : 25
Height : 30
Effect : load
Effect Priority : 0
Effect Time : 300
Fill : solid color
Style : flat
Associated Keyboard : none
Font ID : 0
Back. Color : 65535
Font Color : 0
Horizontal Alignment : center
Vertical Alignment : center
Input Type : character
Text : Text :
Max. Text Size : 50 Max. Text Size: 50
Word wrap : disabled
Horizontal Spacing : 0
Vertical Spacing : 0
Text tTime Text tTime
Attributes Attributes
ID : 7 ID : 5
Scope : local Scope : local
Dragging : 0 Dragging : 0
Disable release event after dragging: 0 Disable release event after dragging: 0
@@ -151,7 +105,7 @@ Text tTime
Text tDate Text tDate
Attributes Attributes
ID : 8 ID : 6
Scope : local Scope : local
Dragging : 0 Dragging : 0
Disable release event after dragging: 0 Disable release event after dragging: 0
@@ -181,7 +135,7 @@ Text tDate
Text tSend Text tSend
Attributes Attributes
ID : 9 ID : 7
Scope : local Scope : local
Dragging : 0 Dragging : 0
Disable release event after dragging: 0 Disable release event after dragging: 0
@@ -211,7 +165,7 @@ Text tSend
Text tMainIcon Text tMainIcon
Attributes Attributes
ID : 10 ID : 8
Scope : local Scope : local
Dragging : 0 Dragging : 0
Disable release event after dragging: 0 Disable release event after dragging: 0
@@ -241,7 +195,7 @@ Text tMainIcon
Text tMainText Text tMainText
Attributes Attributes
ID : 11 ID : 9
Scope : local Scope : local
Dragging : 0 Dragging : 0
Disable release event after dragging: 0 Disable release event after dragging: 0
@@ -271,7 +225,7 @@ Text tMainText
Text tForecast1 Text tForecast1
Attributes Attributes
ID : 12 ID : 10
Scope : local Scope : local
Dragging : 0 Dragging : 0
Disable release event after dragging: 0 Disable release event after dragging: 0
@@ -301,7 +255,7 @@ Text tForecast1
Text tForecast1Val Text tForecast1Val
Attributes Attributes
ID : 13 ID : 11
Scope : local Scope : local
Dragging : 0 Dragging : 0
Disable release event after dragging: 0 Disable release event after dragging: 0
@@ -331,7 +285,7 @@ Text tForecast1Val
Text tF1Icon Text tF1Icon
Attributes Attributes
ID : 14 ID : 12
Scope : local Scope : local
Dragging : 0 Dragging : 0
Disable release event after dragging: 0 Disable release event after dragging: 0
@@ -361,7 +315,7 @@ Text tF1Icon
Text tForecast2 Text tForecast2
Attributes Attributes
ID : 15 ID : 13
Scope : local Scope : local
Dragging : 0 Dragging : 0
Disable release event after dragging: 0 Disable release event after dragging: 0
@@ -391,7 +345,7 @@ Text tForecast2
Text tF2Icon Text tF2Icon
Attributes Attributes
ID : 16 ID : 14
Scope : local Scope : local
Dragging : 0 Dragging : 0
Disable release event after dragging: 0 Disable release event after dragging: 0
@@ -421,7 +375,7 @@ Text tF2Icon
Text tForecast2Val Text tForecast2Val
Attributes Attributes
ID : 17 ID : 15
Scope : local Scope : local
Dragging : 0 Dragging : 0
Disable release event after dragging: 0 Disable release event after dragging: 0
@@ -451,7 +405,7 @@ Text tForecast2Val
Text t10 Text t10
Attributes Attributes
ID : 18 ID : 16
Scope : local Scope : local
Dragging : 0 Dragging : 0
Disable release event after dragging: 0 Disable release event after dragging: 0
@@ -481,7 +435,7 @@ Text t10
Text tAMPM Text tAMPM
Attributes Attributes
ID : 20 ID : 18
Scope : local Scope : local
Dragging : 0 Dragging : 0
Disable release event after dragging: 0 Disable release event after dragging: 0
@@ -511,7 +465,7 @@ Text tAMPM
Text tForecast3Val Text tForecast3Val
Attributes Attributes
ID : 21 ID : 19
Scope : local Scope : local
Dragging : 0 Dragging : 0
Disable release event after dragging: 0 Disable release event after dragging: 0
@@ -541,7 +495,7 @@ Text tForecast3Val
Text tF3Icon Text tF3Icon
Attributes Attributes
ID : 22 ID : 20
Scope : local Scope : local
Dragging : 0 Dragging : 0
Disable release event after dragging: 0 Disable release event after dragging: 0
@@ -571,7 +525,7 @@ Text tF3Icon
Text tForecast3 Text tForecast3
Attributes Attributes
ID : 23 ID : 21
Scope : local Scope : local
Dragging : 0 Dragging : 0
Disable release event after dragging: 0 Disable release event after dragging: 0
@@ -601,7 +555,7 @@ Text tForecast3
Text tForecast4 Text tForecast4
Attributes Attributes
ID : 24 ID : 22
Scope : local Scope : local
Dragging : 0 Dragging : 0
Disable release event after dragging: 0 Disable release event after dragging: 0
@@ -631,7 +585,7 @@ Text tForecast4
Text tF4Icon Text tF4Icon
Attributes Attributes
ID : 25 ID : 23
Scope : local Scope : local
Dragging : 0 Dragging : 0
Disable release event after dragging: 0 Disable release event after dragging: 0
@@ -661,7 +615,7 @@ Text tF4Icon
Text tForecast4Val Text tForecast4Val
Attributes Attributes
ID : 26 ID : 24
Scope : local Scope : local
Dragging : 0 Dragging : 0
Disable release event after dragging: 0 Disable release event after dragging: 0
@@ -691,7 +645,7 @@ Text tForecast4Val
Text tMainTextAlt Text tMainTextAlt
Attributes Attributes
ID : 29 ID : 27
Scope : local Scope : local
Dragging : 0 Dragging : 0
Disable release event after dragging: 0 Disable release event after dragging: 0
@@ -721,7 +675,7 @@ Text tMainTextAlt
Text tMainIconAlt Text tMainIconAlt
Attributes Attributes
ID : 30 ID : 28
Scope : local Scope : local
Dragging : 0 Dragging : 0
Disable release event after dragging: 0 Disable release event after dragging: 0
@@ -751,7 +705,7 @@ Text tMainIconAlt
Text tMRIcon Text tMRIcon
Attributes Attributes
ID : 31 ID : 29
Scope : local Scope : local
Dragging : 0 Dragging : 0
Disable release event after dragging: 0 Disable release event after dragging: 0
@@ -781,7 +735,7 @@ Text tMRIcon
Text tMR Text tMR
Attributes Attributes
ID : 32 ID : 30
Scope : local Scope : local
Dragging : 0 Dragging : 0
Disable release event after dragging: 0 Disable release event after dragging: 0
@@ -980,6 +934,77 @@ Timer tmSerial
//tMR //tMR
spstr strCommand.txt,tMR.txt,"~",16 spstr strCommand.txt,tMR.txt,"~",16
} }
if(tInstruction.txt=="color")
{
spstr strCommand.txt,tTmp.txt,"~",1
covx tTmp.txt,tTime.bco,0,0
screensaver.bco=tTime.bco
tAMPM.bco=tTime.bco
tDate.bco=tTime.bco
tMainIcon.bco=tTime.bco
tMainText.bco=tTime.bco
tMainIconAlt.bco=tTime.bco
tMainTextAlt.bco=tTime.bco
tMRIcon.bco=tTime.bco
tMR.bco=tTime.bco
tMRIcon.bco=tTime.bco
tForecast1.bco=tTime.bco
tForecast1Val.bco=tTime.bco
tF1Icon.bco=tTime.bco
tForecast2.bco=tTime.bco
tForecast2Val.bco=tTime.bco
tF2Icon.bco=tTime.bco
tForecast3.bco=tTime.bco
tForecast3Val.bco=tTime.bco
tF3Icon.bco=tTime.bco
tForecast4.bco=tTime.bco
tForecast4Val.bco=tTime.bco
tF4Icon.bco=tTime.bco
spstr strCommand.txt,tTmp.txt,"~",2
covx tTmp.txt,tTime.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",3
covx tTmp.txt,tAMPM.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",4
covx tTmp.txt,tDate.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",5
covx tTmp.txt,tMainIcon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",6
covx tTmp.txt,tMainText.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",7
covx tTmp.txt,tForecast1.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",8
covx tTmp.txt,tForecast2.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",9
covx tTmp.txt,tForecast3.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",10
covx tTmp.txt,tForecast4.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",11
covx tTmp.txt,tF1Icon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",12
covx tTmp.txt,tF2Icon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",13
covx tTmp.txt,tF3Icon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",14
covx tTmp.txt,tF4Icon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",15
covx tTmp.txt,tForecast1Val.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",16
covx tTmp.txt,tForecast2Val.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",17
covx tTmp.txt,tForecast3Val.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",18
covx tTmp.txt,tForecast4Val.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",19
covx tTmp.txt,t10.bco,0,0
spstr strCommand.txt,tTmp.txt,"~",20
covx tTmp.txt,tMainIconAlt.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",21
covx tTmp.txt,tMainTextAlt.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",22
covx tTmp.txt,tMRIcon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",23
covx tTmp.txt,tMR.pco,0,0
}
if(tInstruction.txt=="pageType") if(tInstruction.txt=="pageType")
{ {
dim=100 dim=100
@@ -1045,7 +1070,7 @@ Timer tmSerial
Timer tmSleep Timer tmSleep
Attributes Attributes
ID : 28 ID : 26
Scope : local Scope : local
Period (ms): 1000 Period (ms): 1000
Enabled : yes Enabled : yes

View File

@@ -543,7 +543,7 @@ Timer tmSerial
} }
if(tTmp.txt=="1") if(tTmp.txt=="1")
{ {
vis bPrev,1 vis bNext,1
bNext.txt="" bNext.txt=""
} }
//text arm1 //text arm1

View File

@@ -72,16 +72,6 @@ Page cardEntities
vis bText5,0 vis bText5,0
vis hSlider5,0 vis hSlider5,0
vis nNum5,0 vis nNum5,0
//ui e6
vis btOnOff6,0
vis bUp6,0
vis bStop6,0
vis bDown6,0
vis tIcon6,0
vis tEntity6,0
vis bText6,0
vis hSlider6,0
vis nNum6,0
Variable (string) strCommand Variable (string) strCommand
Attributes Attributes
@@ -143,24 +133,12 @@ Variable (string) entn5
Text : Text :
Max. Text Size: 70 Max. Text Size: 70
Variable (string) entn6
Attributes
Scope : local
Text :
Max. Text Size: 70
Variable (string) type5 Variable (string) type5
Attributes Attributes
Scope : local Scope : local
Text : Text :
Max. Text Size: 10 Max. Text Size: 10
Variable (string) type6
Attributes
Scope : local
Text :
Max. Text Size: 10
Number nNum1 Number nNum1
Attributes Attributes
Scope : local Scope : local
@@ -206,15 +184,6 @@ Number nNum5
Associated Keyboard : none Associated Keyboard : none
Value : 0 Value : 0
Number nNum6
Attributes
Scope : local
Dragging : 0
Disable release event after dragging: 0
Send Component ID : disabled
Associated Keyboard : none
Value : 0
Text tHeading Text tHeading
Attributes Attributes
Scope : local Scope : local
@@ -365,26 +334,6 @@ Text tIcon5
Text :  Text : 
Max. Text Size : 5 Max. Text Size : 5
Text tEntity6
Attributes
Scope : local
Dragging : 0
Disable release event after dragging: 0
Send Component ID : disabled
Associated Keyboard : none
Text : tEntity6
Max. Text Size : 30
Text tIcon6
Attributes
Scope : local
Dragging : 0
Disable release event after dragging: 0
Send Component ID : disabled
Associated Keyboard : none
Text : 
Max. Text Size : 5
Picture p0 Picture p0
Attributes Attributes
Scope : local Scope : local
@@ -532,34 +481,6 @@ Slider hSlider5
prints tSend.txt,0 prints tSend.txt,0
prints crcval,2 prints crcval,2
Slider hSlider6
Attributes
Scope : local
Dragging : 0
Disable release event after dragging: 0
Send Component ID : disabled
Position : 50
Upper range limit : 100
Lower range limit : 0
Events
Touch Release Event
nNum6.val=hSlider6.val
tSend.txt="event,buttonPress2,"+entn6.txt+",number-set,"
covx nNum6.val,tTmp.txt,0,0
tSend.txt+=tTmp.txt
//send calc crc
btlen tSend.txt,sys0
crcrest 1,0xffff // reset CRC
crcputh 55 bb
crcputs sys0,1
crcputs tSend.txt,0
//send cmd
printh 55 bb
prints sys0,2
prints tSend.txt,0
prints crcval,2
Button bDown1 Button bDown1
Attributes Attributes
Scope : local Scope : local
@@ -1117,106 +1038,6 @@ Button bText5
prints tSend.txt,0 prints tSend.txt,0
prints crcval,2 prints crcval,2
Button bStop6
Attributes
Scope : local
Dragging : 0
Disable release event after dragging: 0
Send Component ID : disabled
State : unpressed
Text : 
Max. Text Size : 10
Events
Touch Press Event
tSend.txt="event,buttonPress2,"+entn6.txt+",stop"
//send calc crc
btlen tSend.txt,sys0
crcrest 1,0xffff // reset CRC
crcputh 55 bb
crcputs sys0,1
crcputs tSend.txt,0
//send cmd
printh 55 bb
prints sys0,2
prints tSend.txt,0
prints crcval,2
Button bDown6
Attributes
Scope : local
Dragging : 0
Disable release event after dragging: 0
Send Component ID : disabled
State : unpressed
Text : 
Max. Text Size : 10
Events
Touch Press Event
tSend.txt="event,buttonPress2,"+entn6.txt+",down"
//send calc crc
btlen tSend.txt,sys0
crcrest 1,0xffff // reset CRC
crcputh 55 bb
crcputs sys0,1
crcputs tSend.txt,0
//send cmd
printh 55 bb
prints sys0,2
prints tSend.txt,0
prints crcval,2
Button bUp6
Attributes
Scope : local
Dragging : 0
Disable release event after dragging: 0
Send Component ID : disabled
State : unpressed
Text : 
Max. Text Size : 10
Events
Touch Press Event
tSend.txt="event,buttonPress2,"+entn6.txt+",up"
//send calc crc
btlen tSend.txt,sys0
crcrest 1,0xffff // reset CRC
crcputh 55 bb
crcputs sys0,1
crcputs tSend.txt,0
//send cmd
printh 55 bb
prints sys0,2
prints tSend.txt,0
prints crcval,2
Button bText6
Attributes
Scope : local
Dragging : 0
Disable release event after dragging: 0
Send Component ID : disabled
State : unpressed
Text : newtxt
Max. Text Size : 10
Events
Touch Press Event
tSend.txt="event,buttonPress2,"+entn6.txt+",button"
//send calc crc
btlen tSend.txt,sys0
crcrest 1,0xffff // reset CRC
crcputh 55 bb
crcputs sys0,1
crcputs tSend.txt,0
//send cmd
printh 55 bb
prints sys0,2
prints tSend.txt,0
prints crcval,2
Dual-state Button btOnOff1 Dual-state Button btOnOff1
Attributes Attributes
Scope : local Scope : local
@@ -1352,33 +1173,6 @@ Dual-state Button btOnOff5
prints tSend.txt,0 prints tSend.txt,0
prints crcval,2 prints crcval,2
Dual-state Button btOnOff6
Attributes
Scope : local
Dragging : 0
Disable release event after dragging: 0
Send Component ID : disabled
State : unpressed
Text :
Max. Text Size : 10
Events
Touch Press Event
tSend.txt="event,buttonPress2,"+entn6.txt+",OnOff,"
covx btOnOff6.val,tTmp.txt,0,0
tSend.txt+=tTmp.txt
//send calc crc
btlen tSend.txt,sys0
crcrest 1,0xffff // reset CRC
crcputh 55 bb
crcputs sys0,1
crcputs tSend.txt,0
//send cmd
printh 55 bb
prints sys0,2
prints tSend.txt,0
prints crcval,2
Hotspot mSpecial Hotspot mSpecial
Attributes Attributes
Scope : local Scope : local
@@ -1506,28 +1300,6 @@ Hotspot m4
page popupLight page popupLight
} }
Hotspot m5
Attributes
Scope : local
Dragging : 0
Disable release event after dragging: 0
Send Component ID : disabled
Events
Touch Press Event
pageIcons.tTmp1.txt=tEntity6.txt
pageIcons.tTmp2.txt=entn6.txt
if(type6.txt=="shutter")
{
//popupShutter.tHeading.txt=tEntity6.txt
page popupShutter
}
if(type6.txt=="light")
{
//popupLight.tEntity.txt=tEntity6.txt
page popupLight
}
Timer tmSerial Timer tmSerial
Attributes Attributes
Scope : local Scope : local
@@ -1607,7 +1379,7 @@ Timer tmSerial
} }
if(tTmp.txt=="1") if(tTmp.txt=="1")
{ {
vis bPrev,1 vis bNext,1
bNext.txt="" bNext.txt=""
} }
// get Type // get Type
@@ -2220,128 +1992,6 @@ Timer tmSerial
covx tTmp.txt,sys0,0,0 covx tTmp.txt,sys0,0,0
hSlider5.maxval=sys0 hSlider5.maxval=sys0
} }
// get Type
spstr strCommand.txt,type6.txt,"~",33
// get internal name
spstr strCommand.txt,entn6.txt,"~",34
if(type6.txt=="delete"||type6.txt=="")
{
vis bUp6,0
vis bStop6,0
vis bDown6,0
vis btOnOff6,0
vis tEntity6,0
vis tIcon6,0
vis bText6,0
vis hSlider6,0
vis nNum6,0
}else
{
// change icon
spstr strCommand.txt,tIcon6.txt,"~",35
vis tIcon6,1
// change icon color
spstr strCommand.txt,tTmp.txt,"~",36
covx tTmp.txt,sys0,0,0
tIcon6.pco=sys0
// set name
spstr strCommand.txt,tEntity6.txt,"~",37
vis tEntity6,1
}
if(type6.txt=="shutter")
{
vis bUp6,1
vis bStop6,1
vis bDown6,1
vis btOnOff6,0
vis bText6,0
vis hSlider6,0
vis nNum6,0
}
if(type6.txt=="light")
{
vis bUp6,0
vis bStop6,0
vis bDown6,0
vis btOnOff6,1
vis bText6,0
vis hSlider6,0
vis nNum6,0
// get Button State (optional Value)
spstr strCommand.txt,tTmp.txt,"~",38
covx tTmp.txt,sys0,0,0
btOnOff6.val=sys0
}
if(type6.txt=="switch")
{
vis bUp6,0
vis bStop6,0
vis bDown6,0
vis btOnOff6,1
vis bText6,0
vis hSlider6,0
vis nNum6,0
// get Button State (optional Value)
spstr strCommand.txt,tTmp.txt,"~",38
covx tTmp.txt,sys0,0,0
btOnOff6.val=sys0
}
if(type6.txt=="text")
{
vis bUp6,0
vis bStop6,0
vis bDown6,0
vis btOnOff6,0
vis bText6,1
tsw bText6,0
vis hSlider6,0
vis nNum6,0
bText6.pco=65535
bText6.pco2=65535
// get Text (optional Value)
spstr strCommand.txt,bText6.txt,"~",38
}
if(type6.txt=="button")
{
vis bUp6,0
vis bStop6,0
vis bDown6,0
vis btOnOff6,0
vis bText6,1
tsw bText6,1
vis hSlider6,0
vis nNum6,0
bText6.pco=1374
bText6.pco2=1374
// get Text (optional Value)
spstr strCommand.txt,bText6.txt,"~",38
}
if(type6.txt=="number")
{
vis bUp6,0
vis bStop6,0
vis bDown6,0
vis btOnOff6,0
vis bText6,0
tsw bText6,0
vis hSlider6,1
vis nNum6,1
// get config (optional Value) (use bText as variable)
spstr strCommand.txt,bText6.txt,"~",38
//first value is current value
spstr bText6.txt,tTmp.txt,"|",0
covx tTmp.txt,sys0,0,0
hSlider6.val=sys0
nNum6.val=sys0
//second value is min value
spstr bText6.txt,tTmp.txt,"|",1
covx tTmp.txt,sys0,0,0
hSlider6.minval=sys0
//third value is max value
spstr bText6.txt,tTmp.txt,"|",2
covx tTmp.txt,sys0,0,0
hSlider6.maxval=sys0
}
} }
if(tInstruction.txt=="pageType") if(tInstruction.txt=="pageType")
{ {

View File

@@ -599,7 +599,7 @@ Timer tmSerial
} }
if(tTmp.txt=="1") if(tTmp.txt=="1")
{ {
vis bPrev,1 vis bNext,1
bNext.txt="" bNext.txt=""
} }
// get Type // get Type

View File

@@ -534,7 +534,7 @@ Timer tmSerial
} }
if(tTmp.txt=="1") if(tTmp.txt=="1")
{ {
vis bPrev,1 vis bNext,1
bNext.txt="" bNext.txt=""
} }
//entity name //entity name

View File

@@ -671,7 +671,7 @@ Timer tmSerial
} }
if(tTmp.txt=="1") if(tTmp.txt=="1")
{ {
vis bPrev,1 vis bNext,1
bNext.txt="" bNext.txt=""
} }
//entity name //entity name

View File

@@ -152,7 +152,7 @@ Text tVersion
Disable release event after dragging: 0 Disable release event after dragging: 0
Send Component ID : disabled Send Component ID : disabled
Associated Keyboard : none Associated Keyboard : none
Text : 30 Text : 31
Max. Text Size : 10 Max. Text Size : 10
Picture p0 Picture p0

View File

@@ -570,25 +570,43 @@ Timer tmSerial
//we are going to exit this page with this command, so we have to clear the buffer, so we are not getting into a stupid loop ... //we are going to exit this page with this command, so we have to clear the buffer, so we are not getting into a stupid loop ...
udelete payloadLength-1 udelete payloadLength-1
bufferPos=0 bufferPos=0
if(tId.txt=="pageStartup")
{
page pageStartup
}
if(tId.txt=="screensaver")
{
page screensaver
}
if(tId.txt=="cardEntities") if(tId.txt=="cardEntities")
{ {
page cardEntities page cardEntities
} }
if(tId.txt=="cardMedia") if(tId.txt=="cardGrid")
{ {
page cardMedia page cardGrid
} }
if(tId.txt=="pageStartup") if(tId.txt=="popupLight")
{ {
page pageStartup pageIcons.tTmp1.txt=tTmp.txt
page popupLight
}
if(tId.txt=="popupShutter")
{
pageIcons.tTmp1.txt=tTmp.txt
page popupShutter
} }
if(tId.txt=="popupNotify") if(tId.txt=="popupNotify")
{ {
page popupNotify page popupNotify
} }
if(tId.txt=="cardGrid") if(tId.txt=="cardThermo")
{ {
page cardGrid page cardThermo
}
if(tId.txt=="cardMedia")
{
page cardMedia
} }
if(tId.txt=="cardAlarm") if(tId.txt=="cardAlarm")
{ {

View File

@@ -339,25 +339,43 @@ Timer tmSerial
pageIcons.tTmp1.txt=tTmp.txt pageIcons.tTmp1.txt=tTmp.txt
page popupLight page popupLight
} }
if(tId.txt=="pageStartup")
{
page pageStartup
}
if(tId.txt=="screensaver")
{
page screensaver
}
if(tId.txt=="cardEntities") if(tId.txt=="cardEntities")
{ {
page cardEntities page cardEntities
} }
if(tId.txt=="cardMedia") if(tId.txt=="cardGrid")
{ {
page cardMedia page cardGrid
}
if(tId.txt=="popupLight")
{
pageIcons.tTmp1.txt=tTmp.txt
page popupLight
}
if(tId.txt=="popupShutter")
{
pageIcons.tTmp1.txt=tTmp.txt
page popupShutter
}
if(tId.txt=="popupNotify")
{
page popupNotify
} }
if(tId.txt=="cardThermo") if(tId.txt=="cardThermo")
{ {
page cardThermo page cardThermo
} }
if(tId.txt=="pageStartup") if(tId.txt=="cardMedia")
{ {
page pageStartup page cardMedia
}
if(tId.txt=="cardGrid")
{
page cardGrid
} }
if(tId.txt=="cardAlarm") if(tId.txt=="cardAlarm")
{ {

View File

@@ -366,30 +366,43 @@ Timer tmSerial
//we are going to exit this page with this command, so we have to clear the buffer, so we are not getting into a stupid loop ... //we are going to exit this page with this command, so we have to clear the buffer, so we are not getting into a stupid loop ...
udelete payloadLength-1 udelete payloadLength-1
bufferPos=0 bufferPos=0
if(tId.txt=="popupLight") if(tId.txt=="pageStartup")
{ {
pageIcons.tTmp1.txt=tTmp.txt page pageStartup
page popupLight }
if(tId.txt=="screensaver")
{
page screensaver
} }
if(tId.txt=="cardEntities") if(tId.txt=="cardEntities")
{ {
page cardEntities page cardEntities
} }
if(tId.txt=="cardMedia") if(tId.txt=="cardGrid")
{ {
page cardMedia page cardGrid
} }
if(tId.txt=="pageStartup") if(tId.txt=="popupLight")
{ {
page pageStartup pageIcons.tTmp1.txt=tTmp.txt
page popupLight
}
if(tId.txt=="popupShutter")
{
pageIcons.tTmp1.txt=tTmp.txt
page popupShutter
} }
if(tId.txt=="popupNotify") if(tId.txt=="popupNotify")
{ {
page popupNotify page popupNotify
} }
if(tId.txt=="cardGrid") if(tId.txt=="cardThermo")
{ {
page cardGrid page cardThermo
}
if(tId.txt=="cardMedia")
{
page cardMedia
} }
if(tId.txt=="cardAlarm") if(tId.txt=="cardAlarm")
{ {

View File

@@ -48,25 +48,17 @@ Variable (int32) vaTap
Scope: local Scope: local
Value: 0 Value: 0
Text tInstruction Variable (string) tInstruction
Attributes Attributes
Scope : local Scope : local
Dragging : 0
Disable release event after dragging: 0
Send Component ID : disabled
Associated Keyboard : none
Text : Text :
Max. Text Size : 50 Max. Text Size: 50
Text tTmp Variable (string) tTmp
Attributes Attributes
Scope : local Scope : local
Dragging : 0
Disable release event after dragging: 0
Send Component ID : disabled
Associated Keyboard : none
Text : Text :
Max. Text Size : 50 Max. Text Size: 50
Text tTime Text tTime
Attributes Attributes
@@ -458,6 +450,77 @@ Timer tmSerial
//tMR //tMR
spstr strCommand.txt,tMR.txt,"~",16 spstr strCommand.txt,tMR.txt,"~",16
} }
if(tInstruction.txt=="color")
{
spstr strCommand.txt,tTmp.txt,"~",1
covx tTmp.txt,tTime.bco,0,0
screensaver.bco=tTime.bco
tAMPM.bco=tTime.bco
tDate.bco=tTime.bco
tMainIcon.bco=tTime.bco
tMainText.bco=tTime.bco
tMainIconAlt.bco=tTime.bco
tMainTextAlt.bco=tTime.bco
tMRIcon.bco=tTime.bco
tMR.bco=tTime.bco
tMRIcon.bco=tTime.bco
tForecast1.bco=tTime.bco
tForecast1Val.bco=tTime.bco
tF1Icon.bco=tTime.bco
tForecast2.bco=tTime.bco
tForecast2Val.bco=tTime.bco
tF2Icon.bco=tTime.bco
tForecast3.bco=tTime.bco
tForecast3Val.bco=tTime.bco
tF3Icon.bco=tTime.bco
tForecast4.bco=tTime.bco
tForecast4Val.bco=tTime.bco
tF4Icon.bco=tTime.bco
spstr strCommand.txt,tTmp.txt,"~",2
covx tTmp.txt,tTime.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",3
covx tTmp.txt,tAMPM.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",4
covx tTmp.txt,tDate.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",5
covx tTmp.txt,tMainIcon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",6
covx tTmp.txt,tMainText.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",7
covx tTmp.txt,tForecast1.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",8
covx tTmp.txt,tForecast2.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",9
covx tTmp.txt,tForecast3.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",10
covx tTmp.txt,tForecast4.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",11
covx tTmp.txt,tF1Icon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",12
covx tTmp.txt,tF2Icon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",13
covx tTmp.txt,tF3Icon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",14
covx tTmp.txt,tF4Icon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",15
covx tTmp.txt,tForecast1Val.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",16
covx tTmp.txt,tForecast2Val.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",17
covx tTmp.txt,tForecast3Val.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",18
covx tTmp.txt,tForecast4Val.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",19
covx tTmp.txt,t10.bco,0,0
spstr strCommand.txt,tTmp.txt,"~",20
covx tTmp.txt,tMainIconAlt.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",21
covx tTmp.txt,tMainTextAlt.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",22
covx tTmp.txt,tMRIcon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",23
covx tTmp.txt,tMR.pco,0,0
}
if(tInstruction.txt=="pageType") if(tInstruction.txt=="pageType")
{ {
dim=100 dim=100

Binary file not shown.

Binary file not shown.

View File

@@ -28,19 +28,24 @@ def get_icon_id(ma_name):
# write mapping lib for typescript # write mapping lib for typescript
with open(os.path.join(__location__, "../../../iobroker", "icon_mapping.ts"), 'w') as f: with open(os.path.join(__location__, "../../../iobroker", "icon_mapping.ts"), 'w') as f:
f.write("let iconMap = new Map<string, string>([\n") f.write("""
export class IconsSelector {
iconMap = new Map<string, string>([
""")
for icon in icon_metadata: for icon in icon_metadata:
iconchar = chr(int(icon['hex'], 16)) iconchar = chr(int(icon['hex'], 16))
name = icon["name"] name = icon["name"]
f.write(f" [\"{name}\", \"{iconchar}\"],\n") f.write(f" [\"{name}\", \"{iconchar}\"],\n")
f.write("]);\n") f.write("]);\n")
f.write(""" f.write("""
function get_icon(ma_name:string):string{ GetIcon(ma_name:string):string{
if(iconMap.has(ma_name)){ if(this.iconMap.has(ma_name)){
return iconMap.get(ma_name); return this.iconMap.get(ma_name)!;
}
return "";
} }
return iconMap.get("alert-circle-outline");
} }
"""); """);
# write documentation file # write documentation file

View File

@@ -7,7 +7,7 @@ head = sharedhead + """
""" + navigation """ + navigation
print(head) print(head)
start = 3 start = 3
for i in range(1,7): for i in range(1,6):
idxstart = start + (i-1)*6 idxstart = start + (i-1)*6
item = f""" item = f"""
// get Type // get Type

View File

@@ -160,7 +160,7 @@ navigation = """
} }
if(tTmp.txt=="1") if(tTmp.txt=="1")
{ {
vis bPrev,1 vis bNext,1
bNext.txt="" bNext.txt=""
} }
""" """

View File

@@ -1073,7 +1073,7 @@ Timer tmSerial
} }
if(tTmp.txt=="1") if(tTmp.txt=="1")
{ {
vis bPrev,1 vis bNext,1
bNext.txt="" bNext.txt=""
} }
//text arm1 //text arm1

View File

@@ -2096,7 +2096,7 @@ Timer tmSerial
} }
if(tTmp.txt=="1") if(tTmp.txt=="1")
{ {
vis bPrev,1 vis bNext,1
bNext.txt="" bNext.txt=""
} }
// get Type // get Type

View File

@@ -1036,7 +1036,7 @@ Timer tmSerial
} }
if(tTmp.txt=="1") if(tTmp.txt=="1")
{ {
vis bPrev,1 vis bNext,1
bNext.txt="" bNext.txt=""
} }
// get Type // get Type

View File

@@ -956,7 +956,7 @@ Timer tmSerial
} }
if(tTmp.txt=="1") if(tTmp.txt=="1")
{ {
vis bPrev,1 vis bNext,1
bNext.txt="" bNext.txt=""
} }
//entity name //entity name

View File

@@ -1224,7 +1224,7 @@ Timer tmSerial
} }
if(tTmp.txt=="1") if(tTmp.txt=="1")
{ {
vis bPrev,1 vis bNext,1
bNext.txt="" bNext.txt=""
} }
//entity name //entity name

View File

@@ -10,49 +10,49 @@ pageTest
13 Component(s) 13 Component(s)
13 Line(s) of event code 13 Line(s) of event code
13 Unique line(s) of event code 13 Unique line(s) of event code
popupNotify
17 Component(s)
178 Line(s) of event code
117 Unique line(s) of event code
pageStartup pageStartup
19 Component(s) 19 Component(s)
150 Line(s) of event code 150 Line(s) of event code
113 Unique line(s) of event code 113 Unique line(s) of event code
cardGrid
39 Component(s)
418 Line(s) of event code
243 Unique line(s) of event code
popupLight popupLight
27 Component(s) 27 Component(s)
320 Line(s) of event code 338 Line(s) of event code
173 Unique line(s) of event code 182 Unique line(s) of event code
popupShutter popupShutter
19 Component(s) 19 Component(s)
178 Line(s) of event code 191 Line(s) of event code
101 Unique line(s) of event code 107 Unique line(s) of event code
popupNotify
17 Component(s)
196 Line(s) of event code
123 Unique line(s) of event code
cardMedia cardMedia
30 Component(s) 30 Component(s)
329 Line(s) of event code 329 Line(s) of event code
168 Unique line(s) of event code 169 Unique line(s) of event code
cardAlarm
35 Component(s)
343 Line(s) of event code
213 Unique line(s) of event code
cardThermo cardThermo
41 Component(s) 41 Component(s)
442 Line(s) of event code 442 Line(s) of event code
246 Unique line(s) of event code 247 Unique line(s) of event code
cardGrid
39 Component(s)
418 Line(s) of event code
244 Unique line(s) of event code
screensaver screensaver
33 Component(s) 33 Component(s)
195 Line(s) of event code 266 Line(s) of event code
152 Unique line(s) of event code 218 Unique line(s) of event code
cardAlarm
35 Component(s)
343 Line(s) of event code
214 Unique line(s) of event code
cardEntities cardEntities
62 Component(s) 62 Component(s)
964 Line(s) of event code 964 Line(s) of event code
409 Unique line(s) of event code 410 Unique line(s) of event code
Total Total
12 Page(s) 12 Page(s)
341 Component(s) 341 Component(s)
3541 Line(s) of event code 3661 Line(s) of event code
947 Unique line(s) of event code 1002 Unique line(s) of event code

View File

@@ -402,7 +402,7 @@ Text tVersion
Horizontal Alignment : center Horizontal Alignment : center
Vertical Alignment : center Vertical Alignment : center
Input Type : character Input Type : character
Text : 30 Text : 31
Max. Text Size : 10 Max. Text Size : 10
Word wrap : disabled Word wrap : disabled
Horizontal Spacing : 0 Horizontal Spacing : 0

View File

@@ -916,25 +916,43 @@ Timer tmSerial
//we are going to exit this page with this command, so we have to clear the buffer, so we are not getting into a stupid loop ... //we are going to exit this page with this command, so we have to clear the buffer, so we are not getting into a stupid loop ...
udelete payloadLength-1 udelete payloadLength-1
bufferPos=0 bufferPos=0
if(tId.txt=="pageStartup")
{
page pageStartup
}
if(tId.txt=="screensaver")
{
page screensaver
}
if(tId.txt=="cardEntities") if(tId.txt=="cardEntities")
{ {
page cardEntities page cardEntities
} }
if(tId.txt=="cardMedia") if(tId.txt=="cardGrid")
{ {
page cardMedia page cardGrid
} }
if(tId.txt=="pageStartup") if(tId.txt=="popupLight")
{ {
page pageStartup pageIcons.tTmp1.txt=tTmp.txt
page popupLight
}
if(tId.txt=="popupShutter")
{
pageIcons.tTmp1.txt=tTmp.txt
page popupShutter
} }
if(tId.txt=="popupNotify") if(tId.txt=="popupNotify")
{ {
page popupNotify page popupNotify
} }
if(tId.txt=="cardGrid") if(tId.txt=="cardThermo")
{ {
page cardGrid page cardThermo
}
if(tId.txt=="cardMedia")
{
page cardMedia
} }
if(tId.txt=="cardAlarm") if(tId.txt=="cardAlarm")
{ {

View File

@@ -548,25 +548,43 @@ Timer tmSerial
pageIcons.tTmp1.txt=tTmp.txt pageIcons.tTmp1.txt=tTmp.txt
page popupLight page popupLight
} }
if(tId.txt=="pageStartup")
{
page pageStartup
}
if(tId.txt=="screensaver")
{
page screensaver
}
if(tId.txt=="cardEntities") if(tId.txt=="cardEntities")
{ {
page cardEntities page cardEntities
} }
if(tId.txt=="cardMedia") if(tId.txt=="cardGrid")
{ {
page cardMedia page cardGrid
}
if(tId.txt=="popupLight")
{
pageIcons.tTmp1.txt=tTmp.txt
page popupLight
}
if(tId.txt=="popupShutter")
{
pageIcons.tTmp1.txt=tTmp.txt
page popupShutter
}
if(tId.txt=="popupNotify")
{
page popupNotify
} }
if(tId.txt=="cardThermo") if(tId.txt=="cardThermo")
{ {
page cardThermo page cardThermo
} }
if(tId.txt=="pageStartup") if(tId.txt=="cardMedia")
{ {
page pageStartup page cardMedia
}
if(tId.txt=="cardGrid")
{
page cardGrid
} }
if(tId.txt=="cardAlarm") if(tId.txt=="cardAlarm")
{ {

View File

@@ -631,30 +631,43 @@ Timer tmSerial
//we are going to exit this page with this command, so we have to clear the buffer, so we are not getting into a stupid loop ... //we are going to exit this page with this command, so we have to clear the buffer, so we are not getting into a stupid loop ...
udelete payloadLength-1 udelete payloadLength-1
bufferPos=0 bufferPos=0
if(tId.txt=="popupLight") if(tId.txt=="pageStartup")
{ {
pageIcons.tTmp1.txt=tTmp.txt page pageStartup
page popupLight }
if(tId.txt=="screensaver")
{
page screensaver
} }
if(tId.txt=="cardEntities") if(tId.txt=="cardEntities")
{ {
page cardEntities page cardEntities
} }
if(tId.txt=="cardMedia") if(tId.txt=="cardGrid")
{ {
page cardMedia page cardGrid
} }
if(tId.txt=="pageStartup") if(tId.txt=="popupLight")
{ {
page pageStartup pageIcons.tTmp1.txt=tTmp.txt
page popupLight
}
if(tId.txt=="popupShutter")
{
pageIcons.tTmp1.txt=tTmp.txt
page popupShutter
} }
if(tId.txt=="popupNotify") if(tId.txt=="popupNotify")
{ {
page popupNotify page popupNotify
} }
if(tId.txt=="cardGrid") if(tId.txt=="cardThermo")
{ {
page cardGrid page cardThermo
}
if(tId.txt=="cardMedia")
{
page cardMedia
} }
if(tId.txt=="cardAlarm") if(tId.txt=="cardAlarm")
{ {

View File

@@ -59,6 +59,20 @@ Variable (int32) vaTap
Scope: local Scope: local
Value: 0 Value: 0
Variable (string) tInstruction
Attributes
ID : 31
Scope : local
Text :
Max. Text Size: 50
Variable (string) tTmp
Attributes
ID : 32
Scope : local
Text :
Max. Text Size: 50
Text tTime Text tTime
Attributes Attributes
ID : 5 ID : 5
@@ -749,66 +763,6 @@ Text tMR
Horizontal Spacing : 0 Horizontal Spacing : 0
Vertical Spacing : 0 Vertical Spacing : 0
Text tTmp
Attributes
ID : 31
Scope : local
Dragging : 0
Disable release event after dragging: 0
Send Component ID : disabled
Opacity : 127
x coordinate : 368
y coordinate : 0
Width : 25
Height : 30
Effect : load
Effect Priority : 0
Effect Time : 300
Fill : solid color
Style : flat
Associated Keyboard : none
Font ID : 0
Back. Color : 65535
Font Color : 0
Horizontal Alignment : center
Vertical Alignment : center
Input Type : character
Text :
Max. Text Size : 50
Word wrap : disabled
Horizontal Spacing : 0
Vertical Spacing : 0
Text tInstruction
Attributes
ID : 32
Scope : local
Dragging : 0
Disable release event after dragging: 0
Send Component ID : disabled
Opacity : 127
x coordinate : 335
y coordinate : 0
Width : 27
Height : 30
Effect : load
Effect Priority : 0
Effect Time : 300
Fill : solid color
Style : flat
Associated Keyboard : none
Font ID : 0
Back. Color : 65535
Font Color : 0
Horizontal Alignment : center
Vertical Alignment : center
Input Type : character
Text :
Max. Text Size : 50
Word wrap : disabled
Horizontal Spacing : 0
Vertical Spacing : 0
Picture p0 Picture p0
Attributes Attributes
ID : 1 ID : 1
@@ -980,6 +934,77 @@ Timer tmSerial
//tMR //tMR
spstr strCommand.txt,tMR.txt,"~",16 spstr strCommand.txt,tMR.txt,"~",16
} }
if(tInstruction.txt=="color")
{
spstr strCommand.txt,tTmp.txt,"~",1
covx tTmp.txt,tTime.bco,0,0
screensaver.bco=tTime.bco
tAMPM.bco=tTime.bco
tDate.bco=tTime.bco
tMainIcon.bco=tTime.bco
tMainText.bco=tTime.bco
tMainIconAlt.bco=tTime.bco
tMainTextAlt.bco=tTime.bco
tMRIcon.bco=tTime.bco
tMR.bco=tTime.bco
tMRIcon.bco=tTime.bco
tForecast1.bco=tTime.bco
tForecast1Val.bco=tTime.bco
tF1Icon.bco=tTime.bco
tForecast2.bco=tTime.bco
tForecast2Val.bco=tTime.bco
tF2Icon.bco=tTime.bco
tForecast3.bco=tTime.bco
tForecast3Val.bco=tTime.bco
tF3Icon.bco=tTime.bco
tForecast4.bco=tTime.bco
tForecast4Val.bco=tTime.bco
tF4Icon.bco=tTime.bco
spstr strCommand.txt,tTmp.txt,"~",2
covx tTmp.txt,tTime.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",3
covx tTmp.txt,tAMPM.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",4
covx tTmp.txt,tDate.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",5
covx tTmp.txt,tMainIcon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",6
covx tTmp.txt,tMainText.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",7
covx tTmp.txt,tForecast1.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",8
covx tTmp.txt,tForecast2.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",9
covx tTmp.txt,tForecast3.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",10
covx tTmp.txt,tForecast4.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",11
covx tTmp.txt,tF1Icon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",12
covx tTmp.txt,tF2Icon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",13
covx tTmp.txt,tF3Icon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",14
covx tTmp.txt,tF4Icon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",15
covx tTmp.txt,tForecast1Val.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",16
covx tTmp.txt,tForecast2Val.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",17
covx tTmp.txt,tForecast3Val.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",18
covx tTmp.txt,tForecast4Val.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",19
covx tTmp.txt,t10.bco,0,0
spstr strCommand.txt,tTmp.txt,"~",20
covx tTmp.txt,tMainIconAlt.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",21
covx tTmp.txt,tMainTextAlt.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",22
covx tTmp.txt,tMRIcon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",23
covx tTmp.txt,tMR.pco,0,0
}
if(tInstruction.txt=="pageType") if(tInstruction.txt=="pageType")
{ {
dim=100 dim=100

View File

@@ -543,7 +543,7 @@ Timer tmSerial
} }
if(tTmp.txt=="1") if(tTmp.txt=="1")
{ {
vis bPrev,1 vis bNext,1
bNext.txt="" bNext.txt=""
} }
//text arm1 //text arm1

View File

@@ -1151,7 +1151,7 @@ Timer tmSerial
} }
if(tTmp.txt=="1") if(tTmp.txt=="1")
{ {
vis bPrev,1 vis bNext,1
bNext.txt="" bNext.txt=""
} }
// get Type // get Type

View File

@@ -599,7 +599,7 @@ Timer tmSerial
} }
if(tTmp.txt=="1") if(tTmp.txt=="1")
{ {
vis bPrev,1 vis bNext,1
bNext.txt="" bNext.txt=""
} }
// get Type // get Type

View File

@@ -534,7 +534,7 @@ Timer tmSerial
} }
if(tTmp.txt=="1") if(tTmp.txt=="1")
{ {
vis bPrev,1 vis bNext,1
bNext.txt="" bNext.txt=""
} }
//entity name //entity name

View File

@@ -671,7 +671,7 @@ Timer tmSerial
} }
if(tTmp.txt=="1") if(tTmp.txt=="1")
{ {
vis bPrev,1 vis bNext,1
bNext.txt="" bNext.txt=""
} }
//entity name //entity name

View File

@@ -152,7 +152,7 @@ Text tVersion
Disable release event after dragging: 0 Disable release event after dragging: 0
Send Component ID : disabled Send Component ID : disabled
Associated Keyboard : none Associated Keyboard : none
Text : 30 Text : 31
Max. Text Size : 10 Max. Text Size : 10
Picture p0 Picture p0

View File

@@ -570,25 +570,43 @@ Timer tmSerial
//we are going to exit this page with this command, so we have to clear the buffer, so we are not getting into a stupid loop ... //we are going to exit this page with this command, so we have to clear the buffer, so we are not getting into a stupid loop ...
udelete payloadLength-1 udelete payloadLength-1
bufferPos=0 bufferPos=0
if(tId.txt=="pageStartup")
{
page pageStartup
}
if(tId.txt=="screensaver")
{
page screensaver
}
if(tId.txt=="cardEntities") if(tId.txt=="cardEntities")
{ {
page cardEntities page cardEntities
} }
if(tId.txt=="cardMedia") if(tId.txt=="cardGrid")
{ {
page cardMedia page cardGrid
} }
if(tId.txt=="pageStartup") if(tId.txt=="popupLight")
{ {
page pageStartup pageIcons.tTmp1.txt=tTmp.txt
page popupLight
}
if(tId.txt=="popupShutter")
{
pageIcons.tTmp1.txt=tTmp.txt
page popupShutter
} }
if(tId.txt=="popupNotify") if(tId.txt=="popupNotify")
{ {
page popupNotify page popupNotify
} }
if(tId.txt=="cardGrid") if(tId.txt=="cardThermo")
{ {
page cardGrid page cardThermo
}
if(tId.txt=="cardMedia")
{
page cardMedia
} }
if(tId.txt=="cardAlarm") if(tId.txt=="cardAlarm")
{ {

View File

@@ -339,25 +339,43 @@ Timer tmSerial
pageIcons.tTmp1.txt=tTmp.txt pageIcons.tTmp1.txt=tTmp.txt
page popupLight page popupLight
} }
if(tId.txt=="pageStartup")
{
page pageStartup
}
if(tId.txt=="screensaver")
{
page screensaver
}
if(tId.txt=="cardEntities") if(tId.txt=="cardEntities")
{ {
page cardEntities page cardEntities
} }
if(tId.txt=="cardMedia") if(tId.txt=="cardGrid")
{ {
page cardMedia page cardGrid
}
if(tId.txt=="popupLight")
{
pageIcons.tTmp1.txt=tTmp.txt
page popupLight
}
if(tId.txt=="popupShutter")
{
pageIcons.tTmp1.txt=tTmp.txt
page popupShutter
}
if(tId.txt=="popupNotify")
{
page popupNotify
} }
if(tId.txt=="cardThermo") if(tId.txt=="cardThermo")
{ {
page cardThermo page cardThermo
} }
if(tId.txt=="pageStartup") if(tId.txt=="cardMedia")
{ {
page pageStartup page cardMedia
}
if(tId.txt=="cardGrid")
{
page cardGrid
} }
if(tId.txt=="cardAlarm") if(tId.txt=="cardAlarm")
{ {

View File

@@ -366,30 +366,43 @@ Timer tmSerial
//we are going to exit this page with this command, so we have to clear the buffer, so we are not getting into a stupid loop ... //we are going to exit this page with this command, so we have to clear the buffer, so we are not getting into a stupid loop ...
udelete payloadLength-1 udelete payloadLength-1
bufferPos=0 bufferPos=0
if(tId.txt=="popupLight") if(tId.txt=="pageStartup")
{ {
pageIcons.tTmp1.txt=tTmp.txt page pageStartup
page popupLight }
if(tId.txt=="screensaver")
{
page screensaver
} }
if(tId.txt=="cardEntities") if(tId.txt=="cardEntities")
{ {
page cardEntities page cardEntities
} }
if(tId.txt=="cardMedia") if(tId.txt=="cardGrid")
{ {
page cardMedia page cardGrid
} }
if(tId.txt=="pageStartup") if(tId.txt=="popupLight")
{ {
page pageStartup pageIcons.tTmp1.txt=tTmp.txt
page popupLight
}
if(tId.txt=="popupShutter")
{
pageIcons.tTmp1.txt=tTmp.txt
page popupShutter
} }
if(tId.txt=="popupNotify") if(tId.txt=="popupNotify")
{ {
page popupNotify page popupNotify
} }
if(tId.txt=="cardGrid") if(tId.txt=="cardThermo")
{ {
page cardGrid page cardThermo
}
if(tId.txt=="cardMedia")
{
page cardMedia
} }
if(tId.txt=="cardAlarm") if(tId.txt=="cardAlarm")
{ {

View File

@@ -48,6 +48,18 @@ Variable (int32) vaTap
Scope: local Scope: local
Value: 0 Value: 0
Variable (string) tInstruction
Attributes
Scope : local
Text :
Max. Text Size: 50
Variable (string) tTmp
Attributes
Scope : local
Text :
Max. Text Size: 50
Text tTime Text tTime
Attributes Attributes
Scope : local Scope : local
@@ -278,26 +290,6 @@ Text tMR
Text : Text :
Max. Text Size : 10 Max. Text Size : 10
Text tTmp
Attributes
Scope : local
Dragging : 0
Disable release event after dragging: 0
Send Component ID : disabled
Associated Keyboard : none
Text :
Max. Text Size : 50
Text tInstruction
Attributes
Scope : local
Dragging : 0
Disable release event after dragging: 0
Send Component ID : disabled
Associated Keyboard : none
Text :
Max. Text Size : 50
Picture p0 Picture p0
Attributes Attributes
Scope : local Scope : local
@@ -458,6 +450,77 @@ Timer tmSerial
//tMR //tMR
spstr strCommand.txt,tMR.txt,"~",16 spstr strCommand.txt,tMR.txt,"~",16
} }
if(tInstruction.txt=="color")
{
spstr strCommand.txt,tTmp.txt,"~",1
covx tTmp.txt,tTime.bco,0,0
screensaver.bco=tTime.bco
tAMPM.bco=tTime.bco
tDate.bco=tTime.bco
tMainIcon.bco=tTime.bco
tMainText.bco=tTime.bco
tMainIconAlt.bco=tTime.bco
tMainTextAlt.bco=tTime.bco
tMRIcon.bco=tTime.bco
tMR.bco=tTime.bco
tMRIcon.bco=tTime.bco
tForecast1.bco=tTime.bco
tForecast1Val.bco=tTime.bco
tF1Icon.bco=tTime.bco
tForecast2.bco=tTime.bco
tForecast2Val.bco=tTime.bco
tF2Icon.bco=tTime.bco
tForecast3.bco=tTime.bco
tForecast3Val.bco=tTime.bco
tF3Icon.bco=tTime.bco
tForecast4.bco=tTime.bco
tForecast4Val.bco=tTime.bco
tF4Icon.bco=tTime.bco
spstr strCommand.txt,tTmp.txt,"~",2
covx tTmp.txt,tTime.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",3
covx tTmp.txt,tAMPM.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",4
covx tTmp.txt,tDate.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",5
covx tTmp.txt,tMainIcon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",6
covx tTmp.txt,tMainText.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",7
covx tTmp.txt,tForecast1.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",8
covx tTmp.txt,tForecast2.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",9
covx tTmp.txt,tForecast3.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",10
covx tTmp.txt,tForecast4.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",11
covx tTmp.txt,tF1Icon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",12
covx tTmp.txt,tF2Icon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",13
covx tTmp.txt,tF3Icon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",14
covx tTmp.txt,tF4Icon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",15
covx tTmp.txt,tForecast1Val.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",16
covx tTmp.txt,tForecast2Val.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",17
covx tTmp.txt,tForecast3Val.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",18
covx tTmp.txt,tForecast4Val.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",19
covx tTmp.txt,t10.bco,0,0
spstr strCommand.txt,tTmp.txt,"~",20
covx tTmp.txt,tMainIconAlt.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",21
covx tTmp.txt,tMainTextAlt.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",22
covx tTmp.txt,tMRIcon.pco,0,0
spstr strCommand.txt,tTmp.txt,"~",23
covx tTmp.txt,tMR.pco,0,0
}
if(tInstruction.txt=="pageType") if(tInstruction.txt=="pageType")
{ {
dim=100 dim=100

Binary file not shown.

Binary file not shown.

View File

@@ -398,7 +398,7 @@ It is possible to schedule a brightness change for the screen at specific times.
#### Override Icons or Names #### Override Icons or Names
To override Icons or Names of entities you can configure an icon and/or name in your configuration, please see the following example. To override Icons or Names of entities you can configure an icon and/or name in your configuration, please see the following example.
Only the icons listed in the [Icon Cheetsheet](https://htmlpreview.github.io/?https://github.com/joBr99/nspanel-lovelace-ui/blob/main/HMI/icon-cheatsheet.html) are useable. Only the icons listed in the [Icon Cheatsheet](https://htmlpreview.github.io/?https://github.com/joBr99/nspanel-lovelace-ui/blob/main/HMI/icon-cheatsheet.html) are useable.
```yaml ```yaml
entities: entities:

View File

@@ -1,3 +1,4 @@
from helper import dict_recursive_update
import logging import logging
LOGGER = logging.getLogger(__name__) LOGGER = logging.getLogger(__name__)
@@ -41,6 +42,12 @@ class Card(object):
else: else:
for e in self.entities: for e in self.entities:
entityIds.append(e.entityId) entityIds.append(e.entityId)
# additional keys to check
add_ent_keys = ['weatherOverrideForecast1', 'weatherOverrideForecast2', 'weatherOverrideForecast3', 'weatherOverrideForecast4']
for ent_key in add_ent_keys:
val = self.raw_config.get(ent_key)
if val is not None:
entityIds.append(val.get("entity"))
return entityIds return entityIds
class LuiBackendConfig(object): class LuiBackendConfig(object):
@@ -91,7 +98,8 @@ class LuiBackendConfig(object):
'weatherOverrideForecast4': None, 'weatherOverrideForecast4': None,
'doubleTapToUnlock': False, 'doubleTapToUnlock': False,
'alternativeLayout': False, 'alternativeLayout': False,
'defaultCard': None 'defaultCard': None,
'key': 'screensaver'
}, },
'hiddenCards': [] 'hiddenCards': []
} }
@@ -106,10 +114,8 @@ class LuiBackendConfig(object):
self.load(config_in) self.load(config_in)
def load(self, args): def load(self, inconfig):
for k, v in args.items(): self._config = dict_recursive_update(inconfig, self._DEFAULT_CONFIG)
if k in self._DEFAULT_CONFIG:
self._config[k] = v
LOGGER.info(f"Loaded config: {self._config}") LOGGER.info(f"Loaded config: {self._config}")
# parse cards displayed on panel # parse cards displayed on panel
@@ -145,6 +151,7 @@ class LuiBackendConfig(object):
entities.extend(card.get_entity_list()) entities.extend(card.get_entity_list())
for card in self._config_hidden_cards: for card in self._config_hidden_cards:
entities.extend(card.get_entity_list()) entities.extend(card.get_entity_list())
entities.extend(self._config_screensaver.get_entity_list())
return entities return entities
def getCard(self, pos): def getCard(self, pos):

View File

@@ -13,9 +13,10 @@ class LuiController(object):
self._config = config self._config = config
self._send_mqtt_msg = send_mqtt_msg self._send_mqtt_msg = send_mqtt_msg
# first card (default, after startup) self._current_card = self._config._config_screensaver
self._current_card = self._config.getCard(0)
self._previous_cards = [] self._previous_cards = []
# first card (default, after startup)
self._previous_cards.append(self._config.getCard(0))
self._pages_gen = LuiPagesGen(ha_api, config, send_mqtt_msg) self._pages_gen = LuiPagesGen(ha_api, config, send_mqtt_msg)
@@ -29,10 +30,6 @@ class LuiController(object):
# Setup date callback # Setup date callback
ha_api.run_daily(self._pages_gen.update_date, time) ha_api.run_daily(self._pages_gen.update_date, time)
# weather callback
weather_interval = 15 * 60 # 15 minutes
ha_api.run_every(self.weather_update, "now", weather_interval)
# register callbacks # register callbacks
self.register_callbacks() self.register_callbacks()
@@ -62,8 +59,8 @@ class LuiController(object):
self.update_screensaver_brightness(kwargs={"value": self.current_screensaver_brightness}) self.update_screensaver_brightness(kwargs={"value": self.current_screensaver_brightness})
# send panel to screensaver # send panel to screensaver
self._pages_gen.page_type("screensaver") self._pages_gen.render_card(self._current_card)
self.weather_update("")
def update_screensaver_brightness_state_callback(self, entity, attribute, old, new, kwargs): def update_screensaver_brightness_state_callback(self, entity, attribute, old, new, kwargs):
self.update_screensaver_brightness(kwargs={"value": self.current_screensaver_brightness}) self.update_screensaver_brightness(kwargs={"value": self.current_screensaver_brightness})
@@ -78,9 +75,6 @@ class LuiController(object):
brightness = kwargs['value'] brightness = kwargs['value']
self._send_mqtt_msg(f"dimmode~{brightness}") self._send_mqtt_msg(f"dimmode~{brightness}")
def weather_update(self, kwargs):
self._pages_gen.update_screensaver_weather()
def calc_current_screensaver_brightness(self): def calc_current_screensaver_brightness(self):
current_screensaver_brightness = 20 current_screensaver_brightness = 20
# set brightness of screensaver # set brightness of screensaver
@@ -104,7 +98,7 @@ class LuiController(object):
def register_callbacks(self): def register_callbacks(self):
items = self._config.get_all_entity_names() items = self._config.get_all_entity_names()
LOGGER.debug(f"Registering callbacks for the following items: {items}") LOGGER.info(f"Registering callbacks for the following items: {items}")
for item in items: for item in items:
if self._ha_api.entity_exists(item): if self._ha_api.entity_exists(item):
self._ha_api.listen_state(self.state_change_callback, entity_id=item, attribute="all") self._ha_api.listen_state(self.state_change_callback, entity_id=item, attribute="all")
@@ -138,16 +132,20 @@ class LuiController(object):
dstCard = self._config.searchCard(self._config.get("screensaver.defaultCard")) dstCard = self._config.searchCard(self._config.get("screensaver.defaultCard"))
if dstCard is not None: if dstCard is not None:
self._previous_cards = [] self._previous_cards = []
self._current_card = dstCard self._previous_cards.append(dstCard)
# check for double tap if configured and render current page # check for double tap if configured and render current page
if self._config.get("screensaver.doubleTapToUnlock") and int(value) >= 2: if self._config.get("screensaver.doubleTapToUnlock") and int(value) >= 2:
self._current_card = self._previous_cards.pop()
self._pages_gen.render_card(self._current_card) self._pages_gen.render_card(self._current_card)
elif not self._config.get("screensaver.doubleTapToUnlock"): elif not self._config.get("screensaver.doubleTapToUnlock"):
self._current_card = self._previous_cards.pop()
self._pages_gen.render_card(self._current_card) self._pages_gen.render_card(self._current_card)
return return
if button_type == "sleepReached": if button_type == "sleepReached":
self._pages_gen.generate_screensaver_page() self._previous_cards.append(self._current_card)
self._current_card = self._config._config_screensaver
self._pages_gen.render_card(self._current_card)
return return
if button_type == "bExit": if button_type == "bExit":

View File

@@ -55,3 +55,11 @@ def get_attr_safe(entity, attr, default):
if res is None: if res is None:
res = default res = default
return res return res
def dict_recursive_update(source: dict, target: dict) -> dict:
for sk, sv in source.items():
if sk in target and isinstance(target[sk], dict):
target[sk] = dict_recursive_update(sv, target[sk])
else:
target[sk] = sv
return target

View File

@@ -31,6 +31,7 @@ class LuiMqttListener(object):
# run action based on received command # run action based on received command
if msg[0] == "event": if msg[0] == "event":
if msg[1] == "startup": if msg[1] == "startup":
self._updater.request_berry_driver_version()
display_firmware_version = int(msg[2]) display_firmware_version = int(msg[2])
model = None model = None
if display_firmware_version >= 23: if display_firmware_version >= 23:
@@ -54,6 +55,8 @@ class LuiMqttListener(object):
if entity_id == "updateDisplayNoYes" and value == "yes": if entity_id == "updateDisplayNoYes" and value == "yes":
self._updater.update_panel_driver() self._updater.update_panel_driver()
if entity_id == "updateBerryNoYes" and value == "yes":
self._updater.update_berry_driver()
self._controller.button_press(entity_id, btype, value) self._controller.button_press(entity_id, btype, value)
if msg[1] == "pageOpenDetail": if msg[1] == "pageOpenDetail":

View File

@@ -56,10 +56,6 @@ class LuiPagesGen(object):
def page_type(self, target_page): def page_type(self, target_page):
self._send_mqtt_msg(f"pageType~{target_page}") self._send_mqtt_msg(f"pageType~{target_page}")
def generate_screensaver_page(self):
self.page_type("screensaver")
self.update_screensaver_weather()
def update_screensaver_weather(self): def update_screensaver_weather(self):
global babel_spec global babel_spec
we_name = self._config._config_screensaver.entity.entityId we_name = self._config._config_screensaver.entity.entityId
@@ -340,6 +336,7 @@ class LuiPagesGen(object):
# Switch to page # Switch to page
if send_page_type: if send_page_type:
self.page_type(card.cardType) self.page_type(card.cardType)
if card.cardType in ["cardEntities", "cardGrid"]: if card.cardType in ["cardEntities", "cardGrid"]:
self.generate_entities_page(navigation, card.title, card.entities) self.generate_entities_page(navigation, card.title, card.entities)
return return
@@ -349,9 +346,8 @@ class LuiPagesGen(object):
self.generate_media_page(navigation, card.entity) self.generate_media_page(navigation, card.entity)
if card.cardType == "cardAlarm": if card.cardType == "cardAlarm":
self.generate_alarm_page(navigation, card.entity) self.generate_alarm_page(navigation, card.entity)
if card.cardType == "screensaver": if card.cardType == "screensaver":
self.generate_screensaver_page() self.update_screensaver_weather()
def generate_light_detail_page(self, entity): def generate_light_detail_page(self, entity):

View File

@@ -53,7 +53,7 @@ class Updater:
return False return False
# send notification about the update # send notification about the update
if self.mode == "auto-notify": if self.mode == "auto-notify":
update_msg = "There's an update available for the Tasmota Berry driver, do you want to start the update now? If you encounter issues after the update or this message appears frequently, please check the manual and repeat the installation steps for the Tasmota Berry driver. " update_msg = "There's an update available for the Tasmota Berry driver, do you want to start the update now? If you encounter issues after the update or this message appears frequently, please checkthe manual and repeat the installation steps for the Tasmota Berry driver. "
self.send_message_page("updateBerryNoYes", "Driver Update available!", update_msg, "Dismiss", "Yes") self.send_message_page("updateBerryNoYes", "Driver Update available!", update_msg, "Dismiss", "Yes")
return True return True
return False return False
@@ -82,12 +82,13 @@ class Updater:
return False return False
def request_berry_driver_version(self): def request_berry_driver_version(self):
self.current_tasmota_driver_version = None
topic = self.topic_send.replace("CustomSend", "GetDriverVersion") topic = self.topic_send.replace("CustomSend", "GetDriverVersion")
self._send_mqtt_msg("X", topic=topic) self._send_mqtt_msg("X", topic=topic)
def update_berry_driver(self): def update_berry_driver(self):
topic = self.topic_send.replace("CustomSend", "UpdateDriverVersion") topic = self.topic_send.replace("CustomSend", "Backlog")
self._send_mqtt_msg(self.desired_tasmota_driver_url, topic=topic) self._send_mqtt_msg(f"UpdateDriverVersion {self.desired_tasmota_driver_url}; Restart 1", topic=topic)
def update_panel_driver(self): def update_panel_driver(self):
topic = self.topic_send.replace("CustomSend", "FlashNextion") topic = self.topic_send.replace("CustomSend", "FlashNextion")
self._send_mqtt_msg(self.desired_display_firmware_url, topic=topic) self._send_mqtt_msg(self.desired_display_firmware_url, topic=topic)

View File

@@ -63,8 +63,8 @@ class NsPanelLovelaceUIManager(hass.Hass):
controller = LuiController(self, cfg, send_mqtt_msg) controller = LuiController(self, cfg, send_mqtt_msg)
desired_display_firmware_version = 30 desired_display_firmware_version = 32
version = "v2.6.0" version = "v2.7.2"
model = cfg.get("model") model = cfg.get("model")
if model == "us-l": if model == "us-l":
@@ -77,7 +77,7 @@ class NsPanelLovelaceUIManager(hass.Hass):
# eu version # eu version
desired_display_firmware_url = f"http://nspanel.pky.eu/lovelace-ui/github/nspanel-{version}.tft" desired_display_firmware_url = f"http://nspanel.pky.eu/lovelace-ui/github/nspanel-{version}.tft"
desired_tasmota_driver_version = 3 desired_tasmota_driver_version = 4
desired_tasmota_driver_url = "https://raw.githubusercontent.com/joBr99/nspanel-lovelace-ui/main/tasmota/autoexec.be" desired_tasmota_driver_url = "https://raw.githubusercontent.com/joBr99/nspanel-lovelace-ui/main/tasmota/autoexec.be"
mode = cfg.get("updateMode") mode = cfg.get("updateMode")

View File

@@ -1,8 +1,13 @@
var Icons = new IconsSelector();
const Months = ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"]; 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 Days = ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"];
const Red: RGB = { red: 255, green: 0, blue: 0 }; const Red: RGB = { red: 255, green: 0, blue: 0 };
const White: RGB = { red: 255, green: 255, blue: 255 }; const White: RGB = { red: 255, green: 255, blue: 255 };
const Yellow: RGB = { red: 253, green: 216, blue: 53 };
const Green: RGB = { red: 96, green: 176, blue: 62 }
const Brown: RGB = { red: 120, green: 80, blue: 59 }
const Gray: RGB = { red: 69, green: 69, blue: 69 }
const Off: RGB = { red: 68, green: 115, blue: 158 }; const Off: RGB = { red: 68, green: 115, blue: 158 };
const On: RGB = { red: 253, green: 216, blue: 53 }; const On: RGB = { red: 253, green: 216, blue: 53 };
const BatteryFull: RGB = { red: 96, green: 176, blue: 62 } const BatteryFull: RGB = { red: 96, green: 176, blue: 62 }
@@ -14,7 +19,7 @@ var Wohnen: PageEntities =
"heading": "Haus", "heading": "Haus",
"useColor": true, "useColor": true,
"items": [ "items": [
<PageItem>{ id: "alias.0.Stern"}, <PageItem>{ id: "alias.0.Stern", name: "Sternsteckdose"},
<PageItem>{ id: "alias.0.Erker"}, <PageItem>{ id: "alias.0.Erker"},
<PageItem>{ id: "alias.0.Küche", interpolateColor: true }, <PageItem>{ id: "alias.0.Küche", interpolateColor: true },
<PageItem>{ id: "alias.0.Wand" } <PageItem>{ id: "alias.0.Wand" }
@@ -27,10 +32,23 @@ var Strom: PageEntities =
"heading": "Strom", "heading": "Strom",
"useColor": true, "useColor": true,
"items": [ "items": [
<PageItem>{ id: "alias.0.Netz", icon: 4, interpolateColor: true, offColor: BatteryFull, onColor: Red , minValue: -1000, maxValue: 1000 }, <PageItem>{ id: "alias.0.Netz", icon: "flash", interpolateColor: true, offColor: BatteryFull, onColor: Red, minValue: -1000, maxValue: 1000 },
<PageItem>{ id: "alias.0.Hausverbrauch", icon: 4, interpolateColor: true, offColor: BatteryFull, onColor: Red , maxValue: 1000 }, <PageItem>{ id: "alias.0.Hausverbrauch", icon: "flash", interpolateColor: true, offColor: BatteryFull, onColor: Red, maxValue: 1000 },
<PageItem>{ id: "alias.0.Pv", icon: 4, interpolateColor: true, offColor: Off, onColor: BatteryFull , maxValue: 1000 }, <PageItem>{ id: "alias.0.Pv", icon: "solar-power", interpolateColor: true, offColor: Off, onColor: BatteryFull, maxValue: 1000 },
<PageItem>{ id: "alias.0.Batterie", icon: 34, interpolateColor: true, offColor: BatteryEmpty, onColor: BatteryFull } <PageItem>{ id: "alias.0.Batterie", icon: "battery-medium", interpolateColor: true, offColor: BatteryEmpty, onColor: BatteryFull }
]
};
var Müll: PageEntities =
{
"type": "cardEntities",
"heading": "Müllkalender",
"useColor": true,
"items": [
<PageItem>{ id: "alias.0.WzNsPanel.Müll.Bio_Tonne" ,unit:"Tage", icon: "trash-can",onColor: Brown},
<PageItem>{ id: "alias.0.WzNsPanel.Müll.Graue_Tonne" ,unit:"Tage",icon: "trash-can",onColor: Gray},
<PageItem>{ id: "alias.0.WzNsPanel.Müll.Grüne_Tonne" ,unit:"Tage",icon: "trash-can",onColor: Green},
<PageItem>{ id: "alias.0.WzNsPanel.Müll.Gelbe_Tonne" ,unit:"Tage",icon: "trash-can",onColor: Yellow}
] ]
}; };
@@ -62,10 +80,10 @@ var button2Page: PageEntities =
export const config: Config = { export const config: Config = {
panelRecvTopic: "mqtt.0.tele.WzDisplay.RESULT", panelRecvTopic: "mqtt.0.tele.WzDisplay.RESULT",
panelSendTopic: "mqtt.0.cmnd.WzDisplay.CustomSend", panelSendTopic: "mqtt.0.cmnd.WzDisplay.CustomSend",
firstScreensaverEntity: { ScreensaverEntity: "alias.0.Wetter.HUMIDITY", ScreensaverEntityIcon: 26, ScreensaverEntityText: "Luft", ScreensaverEntityUnitText: "%" }, firstScreensaverEntity: { ScreensaverEntity: "alias.0.Wetter.HUMIDITY", ScreensaverEntityIcon: "water-percent", ScreensaverEntityText: "Luft", ScreensaverEntityUnitText: "%" },
secondScreensaverEntity: { ScreensaverEntity: "alias.0.Wetter.PRECIPITATION_CHANCE", ScreensaverEntityIcon: 19, ScreensaverEntityText: "Regen", ScreensaverEntityUnitText: "%" }, secondScreensaverEntity: { ScreensaverEntity: "alias.0.Wetter.PRECIPITATION_CHANCE", ScreensaverEntityIcon: "weather-pouring", ScreensaverEntityText: "Regen", ScreensaverEntityUnitText: "%" },
thirdScreensaverEntity: { ScreensaverEntity: "alias.0.Batterie.ACTUAL", ScreensaverEntityIcon: 34, ScreensaverEntityText: "Batterie", ScreensaverEntityUnitText: "%" }, thirdScreensaverEntity: { ScreensaverEntity: "alias.0.Batterie.ACTUAL", ScreensaverEntityIcon: "battery-medium", ScreensaverEntityText: "Batterie", ScreensaverEntityUnitText: "%" },
fourthScreensaverEntity: { ScreensaverEntity: "alias.0.Pv.ACTUAL", ScreensaverEntityIcon: 32, ScreensaverEntityText: "PV", ScreensaverEntityUnitText: "W" }, fourthScreensaverEntity: { ScreensaverEntity: "alias.0.Pv.ACTUAL", ScreensaverEntityIcon: "solar-power", ScreensaverEntityText: "PV", ScreensaverEntityUnitText: "W" },
timeoutScreensaver: 15, timeoutScreensaver: 15,
dimmode: 8, dimmode: 8,
screenSaverDoubleClick: false, screenSaverDoubleClick: false,
@@ -77,12 +95,12 @@ export const config: Config = {
defaultOnColor: On, defaultOnColor: On,
defaultColor: Off, defaultColor: Off,
temperatureUnit: "°C", temperatureUnit: "°C",
pages: [Wohnen, Strom, pages: [Wohnen, Strom, Müll,
{ {
"type": "cardThermo", "type": "cardThermo",
"heading": "Thermostat", "heading": "Thermostat",
"useColor": true, "useColor": true,
"items": [<PageItem>{ id: "alias.0.WzNsPanel" }] "items": [<PageItem>{ id: "alias.0.WzNsPanel", name: "Wohnzimmer" }]
} }
], ],
button1Page: button1Page, button1Page: button1Page,
@@ -90,7 +108,7 @@ export const config: Config = {
}; };
var subscriptions: any = {}; var subscriptions: any = {};
var screensaverEnabled : boolean = false;
var pageId = 0; var pageId = 0;
schedule("* * * * *", function () { schedule("* * * * *", function () {
@@ -144,24 +162,31 @@ function HandleMessage(typ: string, method: string, page: number, words: Array<s
if (typ == "event") { if (typ == "event") {
switch (method) { switch (method) {
case "startup": case "startup":
screensaverEnabled = false;
UnsubscribeWatcher(); UnsubscribeWatcher();
HandleStartupProcess(); HandleStartupProcess();
pageId = 0; pageId = 0;
GeneratePage(config.pages[0]); GeneratePage(config.pages[0]);
break; break;
case "sleepReached":
screensaverEnabled = true;
if(pageId < 0)
pageId = 0;
HandleScreensaver();
break;
case "pageOpenDetail": case "pageOpenDetail":
screensaverEnabled = false;
UnsubscribeWatcher(); UnsubscribeWatcher();
let pageItem = config.pages[pageId].items.find(e => e.id === words[3]); let pageItem = config.pages[pageId].items.find(e => e.id === words[3]);
if (pageItem !== undefined) if (pageItem !== undefined)
SendToPanel(GenerateDetailPage(words[2], pageItem)); SendToPanel(GenerateDetailPage(words[2], pageItem));
case "buttonPress2": case "buttonPress2":
screensaverEnabled = false;
HandleButtonEvent(words); HandleButtonEvent(words);
break; break;
case "screensaverOpen":
HandleScreensaver();
break;
case "button1": case "button1":
case "button2": case "button2":
screensaverEnabled = false;
HandleHardwareButton(method); HandleHardwareButton(method);
default: default:
break; break;
@@ -187,9 +212,11 @@ function HandleHardwareButton(method: string): void {
let page: (PageThermo | PageEntities | PageGrid); let page: (PageThermo | PageEntities | PageGrid);
if (config.button1Page !== null && method == "button1") { if (config.button1Page !== null && method == "button1") {
page = config.button1Page; page = config.button1Page;
pageId = -1;
} }
else if (config.button2Page !== null && method == "button2") { else if (config.button2Page !== null && method == "button2") {
page = config.button2Page; page = config.button2Page;
pageId = -2;
} }
else { else {
return; return;
@@ -200,8 +227,8 @@ function HandleHardwareButton(method: string): void {
function HandleStartupProcess(): void { function HandleStartupProcess(): void {
SendDate(); SendDate();
SendTime(); SendTime();
SendToPanel({ payload: "timeout," + config.timeoutScreensaver }); SendToPanel({ payload: "timeout~" + config.timeoutScreensaver });
SendToPanel({ payload: "dimmode," + config.dimmode }); SendToPanel({ payload: "dimmode~" + config.dimmode });
} }
function SendDate(): void { function SendDate(): void {
@@ -210,7 +237,7 @@ function SendDate(): void {
var date = d.getDate(); var date = d.getDate();
var month = Months[d.getMonth()]; var month = Months[d.getMonth()];
var year = d.getFullYear(); var year = d.getFullYear();
var _sendDate = "date,?" + day + " " + date + " " + month + " " + year; var _sendDate = "date~" + day + " " + date + " " + month + " " + year;
SendToPanel(<Payload>{ payload: _sendDate }); SendToPanel(<Payload>{ payload: _sendDate });
} }
@@ -225,28 +252,40 @@ function SendTime(): void {
if (d.getMinutes() < 10) { if (d.getMinutes() < 10) {
min = "0" + d.getMinutes().toString(); min = "0" + d.getMinutes().toString();
} }
SendToPanel(<Payload>{ payload: "time," + hr + ":" + min }); SendToPanel(<Payload>{ payload: "time~" + hr + ":" + min });
} }
function GenerateEntitiesPage(page: PageEntities): Payload[] { function GenerateEntitiesPage(page: PageEntities): Payload[] {
var out_msgs: Array<Payload> = []; var out_msgs: Array<Payload> = [];
out_msgs = [{ payload: "pageType,cardEntities" }, { payload: "entityUpdHeading," + page.heading }] out_msgs = [{ payload: "pageType~cardEntities" }]
out_msgs.push({ payload: GeneratePageElements(page.items, 4, page.useColor) }); out_msgs.push({ payload: GeneratePageElements(page) });
return out_msgs return out_msgs
} }
function GenerateGridPage(page: PageGrid): Payload[] { function GenerateGridPage(page: PageGrid): Payload[] {
var out_msgs: Array<Payload> = []; var out_msgs: Array<Payload> = [];
out_msgs = [{ payload: "pageType,cardGrid" }, { payload: "entityUpdHeading," + page.heading }] out_msgs = [{ payload: "pageType~cardGrid" }]
out_msgs.push({ payload: GeneratePageElements(page.items, 6, page.useColor) }); out_msgs.push({ payload: GeneratePageElements(page) });
return out_msgs return out_msgs
} }
function GeneratePageElements(pageItems: PageItem[], maxItems: number, useColors: boolean = false): string { function GeneratePageElements(page: Page): string {
let pageData = "entityUpd"; let maxItems = 0;
switch (page.type) {
case "cardThermo":
maxItems = 1;
break;
case "cardEntities":
maxItems = 4;
break;
case "cardGrid":
maxItems = 6;
break;
}
let pageData = "entityUpd~" + page.heading + "~" + GetNavigationString(pageId)
for (let index = 0; index < maxItems; index++) { for (let index = 0; index < maxItems; index++) {
if (pageItems[index] !== undefined) { if (page.items[index] !== undefined) {
pageData += CreateEntity(pageItems[index], index + 1, useColors); pageData += CreateEntity(page.items[index], index + 1, page.useColor);
} }
else { else {
pageData += CreateEntity(<PageItem>{ id: "delete" }, index + 1); pageData += CreateEntity(<PageItem>{ id: "delete" }, index + 1);
@@ -256,9 +295,9 @@ function GeneratePageElements(pageItems: PageItem[], maxItems: number, useColors
} }
function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean = false): string { function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean = false): string {
var iconId = 0 var iconId = "0"
if (pageItem.id == "delete") { if (pageItem.id == "delete") {
return ",delete,,,,," return "~delete~~~~~"
} }
var name: string; var name: string;
var type: string; var type: string;
@@ -266,7 +305,7 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
if (existsObject(pageItem.id)) { if (existsObject(pageItem.id)) {
let o = getObject(pageItem.id) let o = getObject(pageItem.id)
var val = null; var val = null;
name = o.common.name.de name = pageItem.name !== undefined ? pageItem.name : o.common.name.de
if (existsState(pageItem.id + ".GET")) { if (existsState(pageItem.id + ".GET")) {
val = getState(pageItem.id + ".GET").val; val = getState(pageItem.id + ".GET").val;
@@ -279,9 +318,10 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
var iconColor = rgb_dec565(config.defaultColor); var iconColor = rgb_dec565(config.defaultColor);
switch (o.common.role) { switch (o.common.role) {
case "socket":
case "light": case "light":
type = "light" type = "light"
iconId = pageItem.icon !== undefined ? pageItem.icon : 1; iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : o.common.role == "socket" ? Icons.GetIcon("power-socket-de") : Icons.GetIcon("lightbulb");
var optVal = "0" var optVal = "0"
if (val === true || val === "true") { if (val === true || val === "true") {
@@ -289,11 +329,11 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
iconColor = GetIconColor(pageItem, true, useColors); iconColor = GetIconColor(pageItem, true, useColors);
} }
return "," + type + "," + pageItem.id + "," + iconId + "," + iconColor + "," + name + "," + optVal; return "~" + type + "~" + pageItem.id + "~" + iconId + "~" + iconColor + "~" + name + "~" + optVal;
case "dimmer": case "dimmer":
type = "light" type = "light"
iconId = pageItem.icon !== undefined ? pageItem.icon : 1; iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon("lightbulb");
var optVal = "0" var optVal = "0"
if (existsState(pageItem.id + ".ON_ACTUAL")) { if (existsState(pageItem.id + ".ON_ACTUAL")) {
val = getState(pageItem.id + ".ON_ACTUAL").val; val = getState(pageItem.id + ".ON_ACTUAL").val;
@@ -308,53 +348,53 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
iconColor = GetIconColor(pageItem, existsState(pageItem.id + ".ACTUAL") ? getState(pageItem.id + ".ACTUAL").val : true, useColors); iconColor = GetIconColor(pageItem, existsState(pageItem.id + ".ACTUAL") ? getState(pageItem.id + ".ACTUAL").val : true, useColors);
} }
return "," + type + "," + pageItem.id + "," + iconId + "," + iconColor + "," + name + "," + optVal; return "~" + type + "~" + pageItem.id + "~" + iconId + "~" + iconColor + "~" + name + "~" + optVal;
case "blind": case "blind":
type = "shutter" type = "shutter"
iconId = pageItem.icon !== undefined ? pageItem.icon : 11; iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon("window-open");
iconColor = GetIconColor(pageItem, existsState(pageItem.id + ".ACTUAL") ? getState(pageItem.id + ".ACTUAL").val : true, useColors); iconColor = GetIconColor(pageItem, existsState(pageItem.id + ".ACTUAL") ? getState(pageItem.id + ".ACTUAL").val : true, useColors);
return "," + type + "," + pageItem.id + "," + iconId + "," + iconColor + "," + name + "," return "~" + type + "~" + pageItem.id + "~" + iconId + "~" + iconColor + "~" + name + "~"
case "info": case "info":
case "value.temperature": case "value.temperature":
case "thermostat": case "thermostat":
type = "text"; type = "text";
iconId = pageItem.icon !== undefined ? pageItem.icon : o.common.role == "value.temperature" || o.common.role == "thermostat" ? 2 : 0; iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : o.common.role == "value.temperature" || o.common.role == "thermostat" ? Icons.GetIcon("thermometer") : Icons.GetIcon("information-outline");
let unit = ""; let unit = "";
var optVal = "0" var optVal = "0"
if (existsState(pageItem.id + ".ON_ACTUAL")) { if (existsState(pageItem.id + ".ON_ACTUAL")) {
optVal = getState(pageItem.id + ".ON_ACTUAL").val; optVal = getState(pageItem.id + ".ON_ACTUAL").val;
unit = GetUnitOfMeasurement(pageItem.id + ".ON_ACTUAL"); unit = pageItem.unit !== undefined ? pageItem.unit : GetUnitOfMeasurement(pageItem.id + ".ON_ACTUAL");
RegisterEntityWatcher(pageItem.id + ".ON_ACTUAL"); RegisterEntityWatcher(pageItem.id + ".ON_ACTUAL");
} }
else if (existsState(pageItem.id + ".ACTUAL")) { else if (existsState(pageItem.id + ".ACTUAL")) {
optVal = getState(pageItem.id + ".ACTUAL").val; optVal = getState(pageItem.id + ".ACTUAL").val;
unit = GetUnitOfMeasurement(pageItem.id + ".ACTUAL"); unit = pageItem.unit !== undefined ? pageItem.unit : GetUnitOfMeasurement(pageItem.id + ".ACTUAL");
RegisterEntityWatcher(pageItem.id + ".ACTUAL"); RegisterEntityWatcher(pageItem.id + ".ACTUAL");
} }
if (o.common.role == "value.temperature") { if (o.common.role == "value.temperature") {
iconId = pageItem.icon !== undefined ? pageItem.icon : 2; iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon("thermometer");
} }
iconColor = GetIconColor(pageItem, parseInt(optVal), useColors); iconColor = GetIconColor(pageItem, parseInt(optVal), useColors);
return "," + type + "," + pageItem.id + "," + iconId + "," + iconColor + "," + name + "," + optVal + " " + unit; return "~" + type + "~" + pageItem.id + "~" + iconId + "~" + iconColor + "~" + name + "~" + optVal + " " + unit;
case "button": case "button":
type = "button"; type = "button";
iconId = pageItem.icon !== undefined ? pageItem.icon : 3; iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon("gesture-tap-button");
let buttonText = pageItem.buttonText !== undefined ? pageItem.buttonText : "PRESS"; let buttonText = pageItem.name !== undefined ? pageItem.name : "PRESS";
iconColor = GetIconColor(pageItem, true, useColors); iconColor = GetIconColor(pageItem, true, useColors);
return "," + type + "," + pageItem.id + "," + iconId + "," + + iconColor + "," + name + "," + buttonText; return "~" + type + "~" + pageItem.id + "~" + iconId + "~" + + iconColor + "~" + name + "~" + buttonText;
default: default:
return ",delete,,,,"; return "~delete~~~~~";
} }
} }
return ",delete,,,,," return "~delete~~~~~"
} }
function GetIconColor(pageItem: PageItem, value: (boolean | number), useColors: boolean): number { function GetIconColor(pageItem: PageItem, value: (boolean | number), useColors: boolean): number {
@@ -384,8 +424,12 @@ function RegisterEntityWatcher(id: string): void {
return; return;
} }
subscriptions[id] = (on({ id: id, change: 'any' }, function (data) { subscriptions[id] = (on({ id: id, change: 'any' }, function (data) {
log("RegisterEntityWatcher PageId:" + pageId.toString()) if(pageId >= 0)
GeneratePage(config.pages[pageId]); SendToPanel({ payload: GeneratePageElements(config.pages[pageId]) });
if(pageId == -1 && config.button1Page != undefined)
SendToPanel({ payload: GeneratePageElements(config.button1Page) });
if(pageId == -2 && config.button2Page != undefined)
SendToPanel({ payload: GeneratePageElements(config.button2Page) });
})) }))
} }
@@ -417,15 +461,15 @@ function GetUnitOfMeasurement(id: string): string {
function GenerateThermoPage(page: PageThermo): Payload[] { function GenerateThermoPage(page: PageThermo): Payload[] {
var id = page.items[0].id var id = page.items[0].id
var out_msgs: Array<Payload> = []; var out_msgs: Array<Payload> = [];
out_msgs.push({ payload: "pageType,cardThermo" }); out_msgs.push({ payload: "pageType~cardThermo" });
// ioBroker // ioBroker
if (existsObject(id)) { if (existsObject(id)) {
let o = getObject(id) let o = getObject(id)
let name = o.common.name.de let name = page.items[0].name !== undefined ? page.items[0].name : o.common.name.de
let currentTemp = 0; let currentTemp = 0;
if (existsState(id + ".ACTUAL")) if (existsState(id + ".ACTUAL"))
currentTemp = parseInt(getState(id + ".ACTUAL").val) * 10; currentTemp = (Math.round(parseFloat(getState(id + ".ACTUAL").val) * 10)/10)*10;
let destTemp = 0; let destTemp = 0;
if (existsState(id + ".SET")) { if (existsState(id + ".SET")) {
@@ -441,7 +485,7 @@ function GenerateThermoPage(page: PageThermo): Payload[] {
let maxTemp = 300 let maxTemp = 300
let stepTemp = 5 let stepTemp = 5
out_msgs.push({ payload: "entityUpd," + id + "," + name + "," + currentTemp + "," + destTemp + "," + status + "," + minTemp + "," + maxTemp + "," + stepTemp }) out_msgs.push({ payload: "entityUpd~" + name + "~" + GetNavigationString(pageId) + "~" + id + "~" + currentTemp + "~" + destTemp + "~" + status + "~" + minTemp + "~" + maxTemp + "~" + stepTemp })
} }
return out_msgs return out_msgs
@@ -537,6 +581,19 @@ function HandleButtonEvent(words): void {
break; break;
} }
} }
function GetNavigationString(pageId: number): string {
switch (pageId) {
case 0:
return "0|1";
case config.pages.length - 1:
return "1|0";
case -1:
return "0|0";
default:
return "1|1";
}
}
function GenerateDetailPage(type: string, pageItem: PageItem): Payload[] { function GenerateDetailPage(type: string, pageItem: PageItem): Payload[] {
@@ -545,7 +602,7 @@ function GenerateDetailPage(type: string, pageItem: PageItem): Payload[] {
if (existsObject(id)) { if (existsObject(id)) {
var o = getObject(id) var o = getObject(id)
var val: (boolean | number) = 0; var val: (boolean | number) = 0;
let icon = 1; let icon = Icons.GetIcon("lightbulb");
var iconColor = rgb_dec565(config.defaultColor); var iconColor = rgb_dec565(config.defaultColor);
if (type == "popupLight") { if (type == "popupLight") {
let switchVal = "0" let switchVal = "0"
@@ -564,7 +621,7 @@ function GenerateDetailPage(type: string, pageItem: PageItem): Payload[] {
iconColor = GetIconColor(pageItem, true, false); iconColor = GetIconColor(pageItem, true, false);
} }
out_msgs.push({ payload: "entityUpdateDetail," + icon + "," + + iconColor + "," + switchVal + ",disable,disable,disable" }) out_msgs.push({ payload: "entityUpdateDetail~" + icon + "~" + + iconColor + "~" + switchVal + ",disable,disable,disable" })
} }
if (o.common.role == "dimmer") { if (o.common.role == "dimmer") {
@@ -594,7 +651,7 @@ function GenerateDetailPage(type: string, pageItem: PageItem): Payload[] {
//if (attr_support_color.includes("color_temp")) //if (attr_support_color.includes("color_temp"))
// colortemp = Math.trunc(scale(attr.color_temp, attr.min_mireds, attr.max_mireds, 0, 100)) // colortemp = Math.trunc(scale(attr.color_temp, attr.min_mireds, attr.max_mireds, 0, 100))
out_msgs.push({ payload: "entityUpdateDetail," + icon + "," + iconColor + "," + switchVal + "," + brightness + "," + colorTemp + "," + colorMode }) out_msgs.push({ payload: "entityUpdateDetail~" + icon + "~" + iconColor + "~" + switchVal + "~" + brightness + "~" + colorTemp + "~" + colorMode })
} }
} }
@@ -622,12 +679,13 @@ function UnsubscribeWatcher(): void {
} }
function HandleScreensaver(): void { function HandleScreensaver(): void {
SendToPanel({ payload: "pageType~screensaver"})
UnsubscribeWatcher(); UnsubscribeWatcher();
HandleScreensaverUpdate(); HandleScreensaverUpdate();
} }
function HandleScreensaverUpdate(): void { function HandleScreensaverUpdate(): void {
if (config.weatherEntity != null && existsObject(config.weatherEntity)) { if (screensaverEnabled && config.weatherEntity != null && existsObject(config.weatherEntity)) {
var icon = getState(config.weatherEntity + ".ICON").val; var icon = getState(config.weatherEntity + ".ICON").val;
let temperature: string = let temperature: string =
@@ -635,8 +693,8 @@ function HandleScreensaverUpdate(): void {
existsState(config.weatherEntity + ".TEMP") ? getState(config.weatherEntity + ".TEMP").val : "null"; existsState(config.weatherEntity + ".TEMP") ? getState(config.weatherEntity + ".TEMP").val : "null";
let payloadString = let payloadString =
"weatherUpdate,?" + GetAccuWeatherIcon(parseInt(icon)) + "?" "weatherUpdate~" + Icons.GetIcon(GetAccuWeatherIcon(parseInt(icon))) + "~"
+ temperature + " " + config.temperatureUnit + "?" + temperature + " " + config.temperatureUnit + "~"
payloadString += GetScreenSaverEntityString(config.firstScreensaverEntity); payloadString += GetScreenSaverEntityString(config.firstScreensaverEntity);
payloadString += GetScreenSaverEntityString(config.secondScreensaverEntity); payloadString += GetScreenSaverEntityString(config.secondScreensaverEntity);
@@ -650,54 +708,54 @@ function HandleScreensaverUpdate(): void {
function GetScreenSaverEntityString(configElement: ScreenSaverElement | null): string { function GetScreenSaverEntityString(configElement: ScreenSaverElement | null): string {
if (configElement != null && configElement.ScreensaverEntity != null && existsState(configElement.ScreensaverEntity)) { if (configElement != null && configElement.ScreensaverEntity != null && existsState(configElement.ScreensaverEntity)) {
let u1 = getState(configElement.ScreensaverEntity).val; let u1 = getState(configElement.ScreensaverEntity).val;
return configElement.ScreensaverEntityText + "?" + configElement.ScreensaverEntityIcon + "?" + u1 + " " + configElement.ScreensaverEntityUnitText + "?"; return configElement.ScreensaverEntityText + "~" + Icons.GetIcon(configElement.ScreensaverEntityIcon) + "~" + u1 + " " + configElement.ScreensaverEntityUnitText + "~";
} }
else { else {
return "???"; return "~~~";
} }
} }
function GetAccuWeatherIcon(icon: number): number { function GetAccuWeatherIcon(icon: number): string {
switch (icon) { switch (icon) {
case 24: // Ice case 24: // Ice
case 30: // Hot case 30: // Hot
case 31: // Cold case 31: // Cold
return 11; // exceptional return "window-open"; // exceptional
case 7: // Cloudy case 7: // Cloudy
case 8: // Dreary (Overcast) case 8: // Dreary (Overcast)
case 38: // Mostly Cloudy case 38: // Mostly Cloudy
return 12; // cloudy return "weather-cloudy"; // cloudy
case 11: // fog case 11: // fog
return 13; // fog return "weather-fog"; // fog
case 25: // Sleet case 25: // Sleet
return 14; // Hail return "weather-hail"; // Hail
case 15: // T-Storms case 15: // T-Storms
return 15; // lightning return "weather-lightning"; // lightning
case 16: // Mostly Cloudy w/ T-Storms case 16: // Mostly Cloudy w/ T-Storms
case 17: // Partly Sunny w/ T-Storms case 17: // Partly Sunny w/ T-Storms
case 41: // Partly Cloudy w/ T-Storms case 41: // Partly Cloudy w/ T-Storms
case 42: // Mostly Cloudy w/ T-Storms case 42: // Mostly Cloudy w/ T-Storms
return 16; // lightning-rainy return "weather-lightning-rainy"; // lightning-rainy
case 33: // Clear case 33: // Clear
case 34: // Mostly Clear case 34: // Mostly Clear
case 37: // Hazy Moonlight case 37: // Hazy Moonlight
return 17; return "weather-night";
case 3: // Partly Sunny case 3: // Partly Sunny
case 4: // Intermittent Clouds case 4: // Intermittent Clouds
case 6: // Mostly Cloudy case 6: // Mostly Cloudy
case 35: // Partly Cloudy case 35: // Partly Cloudy
case 36: // Intermittent Clouds case 36: // Intermittent Clouds
return 18; // partlycloudy return "weather-partly-cloudy"; // partlycloudy
case 18: // pouring case 18: // pouring
return 19; // pouring return "weather-pouring"; // pouring
case 12: // Showers case 12: // Showers
case 13: // Mostly Cloudy w/ Showers case 13: // Mostly Cloudy w/ Showers
@@ -705,7 +763,7 @@ function GetAccuWeatherIcon(icon: number): number {
case 26: // Freezing Rain case 26: // Freezing Rain
case 39: // Partly Cloudy w/ Showers case 39: // Partly Cloudy w/ Showers
case 40: // Mostly Cloudy w/ Showers case 40: // Mostly Cloudy w/ Showers
return 20; // rainy return "weather-rainy"; // rainy
case 19: // Flurries case 19: // Flurries
case 20: // Mostly Cloudy w/ Flurries case 20: // Mostly Cloudy w/ Flurries
@@ -714,21 +772,21 @@ function GetAccuWeatherIcon(icon: number): number {
case 23: // Mostly Cloudy w/ Snow case 23: // Mostly Cloudy w/ Snow
case 43: // Mostly Cloudy w/ Flurries case 43: // Mostly Cloudy w/ Flurries
case 44: // Mostly Cloudy w/ Snow case 44: // Mostly Cloudy w/ Snow
return 21; // snowy return "weather-snowy"; // snowy
case 29: // Rain and Snow case 29: // Rain and Snow
return 22; // snowy-rainy return "weather-snowy-rainy"; // snowy-rainy
case 1: // Sunny case 1: // Sunny
case 2: // Mostly Sunny case 2: // Mostly Sunny
case 5: // Hazy Sunshine case 5: // Hazy Sunshine
return 23; // sunny return "weather-sunny"; // sunny
case 32: // windy case 32: // windy
return 24; // windy return "weather-windy"; // windy
default: default:
return 1; return "alert-circle-outline";
} }
} }
@@ -787,14 +845,15 @@ interface PageThermo extends Page {
type PageItem = { type PageItem = {
id: string, id: string,
icon: (number | undefined), icon: (string | undefined),
onColor: (RGB | undefined), onColor: (RGB | undefined),
offColor: (RGB | undefined), offColor: (RGB | undefined),
useColor: (boolean | undefined), useColor: (boolean | undefined),
interpolateColor: (boolean | undefined), interpolateColor: (boolean | undefined),
minValue: (number | undefined), minValue: (number | undefined),
maxValue: (number | undefined), maxValue: (number | undefined),
buttonText: (string | undefined) name: (string | undefined),
unit: (string | undefined)
} }
type Config = { type Config = {
@@ -823,7 +882,7 @@ type Config = {
type ScreenSaverElement = { type ScreenSaverElement = {
ScreensaverEntity: string | null, ScreensaverEntity: string | null,
ScreensaverEntityIcon: number | null, ScreensaverEntityIcon: string | null,
ScreensaverEntityText: string | null, ScreensaverEntityText: string | null,
ScreensaverEntityUnitText: string | null, ScreensaverEntityUnitText: string | null,
} }

View File

@@ -32,18 +32,8 @@ You can find this in the device raw settings.
- Create a state with a mqtt client or create one per hand. The mqtt adapter will not create the state CustomSend - Create a state with a mqtt client or create one per hand. The mqtt adapter will not create the state CustomSend
- you only need to send a dummy message to cmnd/<yourPanel>/CustomSend - you only need to send a dummy message to cmnd/<yourPanel>/CustomSend
- then the state will be created - then the state will be created
- Put the file icon_mapping.ts in the global folder
## Update the screensaver string
The screensaver string which is send to the display looks something like this:
weatherUpdate,?23?11 °C?26?54%?Batterie?4?12 %?PV?23?123W
All fields are seperated by a question mark. In detail the fields are:
weatherUpdate,?Icon?Text?Icon (default humidity)?Text next to the last icon?Text for the left icon on the right side?Icon?Text under the icon?Text for the right icon on the left side?Icon?Text under the icon
See the icons currently usable in the following table:
[Icon Table](../HMI#icons-ids)
You can change the string and devices in the config object.
## Hardware buttons ## Hardware buttons
If you like you can add special pages for the buttons. If you like you can add special pages for the buttons.
@@ -66,11 +56,11 @@ const BatteryEmpty: RGB = { red: 179, green: 45, blue: 25 }
var config: Config = { var config: Config = {
panelRecvTopic: "mqtt.0.tele.WzDisplay.RESULT", // This is the object where the panel send the data to. panelRecvTopic: "mqtt.0.tele.WzDisplay.RESULT", // This is the object where the panel send the data to.
panelSendTopic: "mqtt.0.cmnd.WzDisplay.CustomSend", // This is the object where data is send to the panel. panelSendTopic: "mqtt.0.cmnd.WzDisplay.CustomSend", // This is the object where data is send to the panel.
firstScreensaverEntity: { ScreensaverEntity: "alias.0.Wetter.HUMIDITY", ScreensaverEntityIcon: 26, ScreensaverEntityText: "Luft", ScreensaverEntityUnitText: "%" }, firstScreensaverEntity: { ScreensaverEntity: "alias.0.Wetter.HUMIDITY", ScreensaverEntityIcon: "water-percent", ScreensaverEntityText: "Luft", ScreensaverEntityUnitText: "%" },
// Items which should be presented on the screensaver page // Items which should be presented on the screensaver page
secondScreensaverEntity: { ScreensaverEntity: "alias.0.Wetter.PRECIPITATION_CHANCE", ScreensaverEntityIcon: 19, ScreensaverEntityText: "Regen", ScreensaverEntityUnitText: "%" }, secondScreensaverEntity: { ScreensaverEntity: "alias.0.Wetter.PRECIPITATION_CHANCE", ScreensaverEntityIcon: "weather-pouring", ScreensaverEntityText: "Regen", ScreensaverEntityUnitText: "%" },
thirdScreensaverEntity: { ScreensaverEntity: "alias.0.Batterie.ACTUAL", ScreensaverEntityIcon: 34, ScreensaverEntityText: "Batterie", ScreensaverEntityUnitText: "%" }, thirdScreensaverEntity: { ScreensaverEntity: "alias.0.Batterie.ACTUAL", ScreensaverEntityIcon: "battery-medium", ScreensaverEntityText: "Batterie", ScreensaverEntityUnitText: "%" },
fourthScreensaverEntity: { ScreensaverEntity: "alias.0.Pv.ACTUAL", ScreensaverEntityIcon: 32, ScreensaverEntityText: "PV", ScreensaverEntityUnitText: "W" }, fourthScreensaverEntity: { ScreensaverEntity: "alias.0.Pv.ACTUAL", ScreensaverEntityIcon: "solar-power", ScreensaverEntityText: "PV", ScreensaverEntityUnitText: "W" },
screenSaverDoubleClick: false, // Doubletouch needed for leaving screensaver. screenSaverDoubleClick: false, // Doubletouch needed for leaving screensaver.
timeoutScreensaver: 15, // Timeout for screensaver timeoutScreensaver: 15, // Timeout for screensaver
dimmode: 8, // Display dim dimmode: 8, // Display dim
@@ -82,45 +72,12 @@ var config: Config = {
defaultOnColor: RGB, // Default on state color for items defaultOnColor: RGB, // Default on state color for items
defaultOffColor: RGB, // Default off state color for page defaultOffColor: RGB, // Default off state color for page
temperatureUnit: "°C", // Unit to append on temperature sensors temperatureUnit: "°C", // Unit to append on temperature sensors
<<<<<<< HEAD
pages: [Wohnen, Strom, pages: [Wohnen, Strom,
{ {
"type": "cardThermo", "type": "cardThermo",
"heading": "Thermostat", "heading": "Thermostat",
"useColor": true, "useColor": true,
"items": [<PageItem>{ id: "alias.0.WzNsPanel" }] "items": [<PageItem>{ id: "alias.0.WzNsPanel" }]
=======
pages: [
{
"type": "cardEntities", // card type (cardEntities, cardThermo)
"heading": "Testseite", // heading
"useColor": false, // should colors be enabled on this page, can be overridden in PageItem
"items": [ // items array (up to 4 on cardEntities, 1 for cardThermo)
<PageItem>{ id: "alias.0.Rolladen_Eltern" }, // device which must be configured in the device panel. Use only the folder for the device, not the set, get states ...
<PageItem>{ id: "alias.0.Erker" },
<PageItem>{ id: "alias.0.Küche", useColor: true },
<PageItem>{ id: "alias.0.Wand", useColor: true }
]
},
{
"type": "cardEntities",
"heading": "Strom",
"useColor": true, // should colors be enabled on this page, can be overridden in PageItem
"items": [
<PageItem>{ id: "alias.0.Netz" },
<PageItem>{ id: "alias.0.Hausverbrauch", icon: 4, interpolateColor: true, offColor: BatteryFull, onColor: Red , maxValue: 1000 },
<PageItem>{ id: "alias.0.Pv" },
<PageItem>{ id: "alias.0.Batterie", icon: 34, interpolateColor: true, offColor: BatteryEmpty, onColor: BatteryFull }
]
},
{
"type": "cardThermo",
"heading": "Thermostat",
"useColor": false, // should colors be enabled on this page, can be overridden in PageItem
"item": "alias.0.WzNsPanel" // Needs to be a thermostat in the device panel
>>>>>>> 8a48ff35d408a7712a3052ee3cf8fc84e8b699c7
} }
], ],
button1Page: button1Page, // A cardEntities, cardThermo or nothing. This will be opened when pressing button1 button1Page: button1Page, // A cardEntities, cardThermo or nothing. This will be opened when pressing button1
@@ -139,7 +96,8 @@ type PageItem = {
interpolateColor: (boolean | undefined),// fade between color on and off, useColor on Page or PageItem must be enabled interpolateColor: (boolean | undefined),// fade between color on and off, useColor on Page or PageItem must be enabled
minValue: (number | undefined), // the minimum value for the fade calculation, if smaller the minimum value will be used minValue: (number | undefined), // the minimum value for the fade calculation, if smaller the minimum value will be used
maxValue: (number | undefined), // the maximum value for the fade calculation, if larger the maximum value will be used maxValue: (number | undefined), // the maximum value for the fade calculation, if larger the maximum value will be used
buttonText: (string | undefined) // the Button Text, default is "Press" name: (string | undefined), // the Name which should be displayed, default is the name of the object itself
unit: (string | undefined) // the unit which should be displayed, default is the unit of the object itself
} }
``` ```
@@ -170,10 +128,10 @@ pages: [
"heading": "Strom", "heading": "Strom",
"useColor": true, // should colors be enabled on this page, can be overridden in PageItem "useColor": true, // should colors be enabled on this page, can be overridden in PageItem
"items": [ "items": [
<PageItem>{ id: "alias.0.Netz" }, <PageItem>{ id: "alias.0.Netz", icon: "flash", interpolateColor: true, offColor: BatteryFull, onColor: Red, minValue: -1000, maxValue: 1000 },
<PageItem>{ id: "alias.0.Hausverbrauch" }, <PageItem>{ id: "alias.0.Hausverbrauch", icon: "flash", interpolateColor: true, offColor: BatteryFull, onColor: Red, maxValue: 1000 },
<PageItem>{ id: "alias.0.Pv" }, <PageItem>{ id: "alias.0.Pv", name: "Solar" ,icon: "solar-power", interpolateColor: true, offColor: Off, onColor: BatteryFull, maxValue: 1000 },
<PageItem>{ id: "alias.0.Batterie" } <PageItem>{ id: "alias.0.Batterie", icon: "battery-medium", interpolateColor: true, offColor: BatteryEmpty, onColor: BatteryFull }
] ]
}] }]
``` ```

5131
ioBroker/icon_mapping.ts Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,388 @@
# Sonoff NSPanel Tasmota Lovelace UI Berry Driver | code by joBr99
# based on;
# Sonoff NSPanel Tasmota (Nextion with Flashing) driver | code by peepshow-21
# based on;
# Sonoff NSPanel Tasmota driver v0.47 | code by blakadder and s-hadinger
# Example Flash
# FlashNextion http://ip-address-of-your-homeassistant:8123/local/nspanel.tft
# FlashNextion http://nspanel.pky.eu/lui.tft
class Nextion : Driver
static VERSION = "1.1.3"
static header = bytes('55BB')
static flash_block_size = 4096
var flash_mode
var flash_size
var flash_written
var flash_buff
var flash_offset
var awaiting_offset
var tcp
var ser
var last_per
def split_55(b)
var ret = []
var s = size(b)
var i = s-2 # start from last-1
while i > 0
if b[i] == 0x55 && b[i+1] == 0xBB
ret.push(b[i..s-1]) # push last msg to list
b = b[(0..i-1)] # write the rest back to b
end
i -= 1
end
ret.push(b)
return ret
end
def crc16(data, poly)
if !poly poly = 0xA001 end
# CRC-16 MODBUS HASHING ALGORITHM
var crc = 0xFFFF
for i:0..size(data)-1
crc = crc ^ data[i]
for j:0..7
if crc & 1
crc = (crc >> 1) ^ poly
else
crc = crc >> 1
end
end
end
return crc
end
# encode using custom protocol 55 BB [payload length] [payload length] [payload] [crc] [crc]
def encode(payload)
var b = bytes()
b += self.header
b.add(size(payload), 2) # add size as 2 bytes, little endian
b += bytes().fromstring(payload)
var msg_crc = self.crc16(b)
b.add(msg_crc, 2) # crc 2 bytes, little endian
return b
end
def encodenx(payload)
var b = bytes().fromstring(payload)
b += bytes('FFFFFF')
return b
end
def sendnx(payload)
import string
var payload_bin = self.encodenx(payload)
self.ser.write(payload_bin)
log(string.format("NXP: Nextion command sent = %s",str(payload_bin)), 3)
end
def send(payload)
var payload_bin = self.encode(payload)
if self.flash_mode==1
log("NXP: skipped command becuase still flashing", 3)
else
self.ser.write(payload_bin)
log("NXP: payload sent = " + str(payload_bin), 3)
end
end
def write_to_nextion(b)
self.ser.write(b)
end
def screeninit()
log("NXP: Screen Initialized")
self.sendnx("recmod=1")
end
def write_block()
import string
log("FLH: Read block",3)
while size(self.flash_buff)<self.flash_block_size && self.tcp.connected()
if self.tcp.available()>0
self.flash_buff += self.tcp.readbytes()
else
tasmota.delay(50)
log("FLH: Wait for available...",3)
end
end
log("FLH: Buff size "+str(size(self.flash_buff)),3)
var to_write
if size(self.flash_buff)>self.flash_block_size
to_write = self.flash_buff[0..self.flash_block_size-1]
self.flash_buff = self.flash_buff[self.flash_block_size..]
else
to_write = self.flash_buff
self.flash_buff = bytes()
end
log("FLH: Writing "+str(size(to_write)),3)
var per = (self.flash_written*100)/self.flash_size
if (self.last_per!=per)
self.last_per = per
tasmota.publish_result(string.format("{\"Flashing\":{\"complete\": %d}}",per), "RESULT")
end
if size(to_write)>0
self.flash_written += size(to_write)
if self.flash_offset==0 || self.flash_written>self.flash_offset
self.ser.write(to_write)
self.flash_offset = 0
else
tasmota.set_timer(10,/->self.write_block())
end
end
log("FLH: Total "+str(self.flash_written),3)
if (self.flash_written==self.flash_size)
log("FLH: Flashing complete")
self.flash_mode = 0
end
end
def every_100ms()
import string
if self.ser.available() > 0
var msg = self.ser.read()
if size(msg) > 0
log(string.format("NXP: Received Raw = %s",str(msg)), 3)
if (self.flash_mode==1)
var strv = msg[0..-4].asstring()
if string.find(strv,"comok 2")>=0
log("FLH: Send (High Speed) flash start")
self.sendnx(string.format("whmi-wris %d,115200,res0",self.flash_size))
elif size(msg)==1 && msg[0]==0x08
log("FLH: Waiting offset...",3)
self.awaiting_offset = 1
elif size(msg)==4 && self.awaiting_offset==1
self.awaiting_offset = 0
self.flash_offset = msg.get(0,4)
log("FLH: Flash offset marker "+str(self.flash_offset),3)
self.write_block()
elif size(msg)==1 && msg[0]==0x05
self.write_block()
else
log("FLH: Something has gone wrong flashing display firmware ["+str(msg)+"]",2)
end
else
var msg_list = self.split_55(msg)
for i:0..size(msg_list)-1
msg = msg_list[i]
if size(msg) > 0
if msg == bytes('000000FFFFFF88FFFFFF')
self.screeninit()
elif size(msg)>=2 && msg[0]==0x55 && msg[1]==0xBB
var jm = string.format("{\"CustomRecv\":\"%s\"}",msg[4..-3].asstring())
tasmota.publish_result(jm, "RESULT")
elif msg[0]==0x07 && size(msg)==1 # BELL/Buzzer
tasmota.cmd("buzzer 1,1")
else
var jm = string.format("{\"nextion\":\"%s\"}",str(msg[0..-4]))
tasmota.publish_result(jm, "RESULT")
end
end
end
end
end
end
end
def begin_nextion_flash()
self.flash_written = 0
self.awaiting_offset = 0
self.flash_offset = 0
self.sendnx('DRAKJHSUYDGBNCJHGJKSHBDN')
self.sendnx('recmod=0')
self.sendnx('recmod=0')
self.flash_mode = 1
self.sendnx("connect")
end
def open_url(url)
import string
var host
var port
var s1 = string.split(url,7)[1]
var i = string.find(s1,":")
var sa
if i<0
port = 80
i = string.find(s1,"/")
sa = string.split(s1,i)
host = sa[0]
else
sa = string.split(s1,i)
host = sa[0]
s1 = string.split(sa[1],1)[1]
i = string.find(s1,"/")
sa = string.split(s1,i)
port = int(sa[0])
end
var get = sa[1]
log(string.format("FLH: host: %s, port: %s, get: %s",host,port,get))
self.tcp = tcpclient()
self.tcp.connect(host,port)
log("FLH: Connected:"+str(self.tcp.connected()),3)
var get_req = "GET "+get+" HTTP/1.0\r\n"
get_req += string.format("HOST: %s:%s\r\n\r\n",host,port)
self.tcp.write(get_req)
var a = self.tcp.available()
i = 1
while a==0 && i<5
tasmota.delay(100*i)
tasmota.yield()
i += 1
log("FLH: Retry "+str(i),3)
a = self.tcp.available()
end
if a==0
log("FLH: Nothing available to read!",3)
return
end
var b = self.tcp.readbytes()
i = 0
var end_headers = false;
var headers
while i<size(b) && headers==nil
if b[i..(i+3)]==bytes().fromstring("\r\n\r\n")
headers = b[0..(i+3)].asstring()
self.flash_buff = b[(i+4)..]
else
i += 1
end
end
#print(headers)
# check http respose for code 200
var tag = "200 OK"
i = string.find(headers,tag)
if (i>0)
log("FLH: HTTP Respose is 200 OK",3)
else
log("FLH: HTTP Respose is not 200 OK",3)
print(headers)
return
end
# check http respose for content-length
tag = "Content-Length: "
i = string.find(headers,tag)
if (i>0)
var i2 = string.find(headers,"\r\n",i)
var s = headers[i+size(tag)..i2-1]
self.flash_size=int(s)
end
if self.flash_size==0
log("FLH: No size header, counting ...",3)
self.flash_size = size(self.flash_buff)
#print("counting start ...")
while self.tcp.connected()
while self.tcp.available()>0
self.flash_size += size(self.tcp.readbytes())
end
tasmota.delay(50)
end
#print("counting end ...",self.flash_size)
self.tcp.close()
self.open_url(url)
else
log("FLH: Size found in header, skip count",3)
end
log("FLH: Flash file size: "+str(self.flash_size),3)
end
def flash_nextion(url)
self.flash_size = 0
self.open_url(url)
self.begin_nextion_flash()
end
def version_number(str)
import string
var i1 = string.find(str,".",0)
var i2 = string.find(str,".",i1+1)
var num = int(str[0..i1-1])*10000+int(str[i1+1..i2-1])*100+int(str[i2+1..])
return num
end
def init()
log("NXP: Initializing Driver")
self.ser = serial(17, 16, 115200, serial.SERIAL_8N1)
self.flash_mode = 0
end
end
var nextion = Nextion()
tasmota.add_driver(nextion)
def get_current_version(cmd, idx, payload, payload_json)
import string
var version_of_this_script = 3
var jm = string.format("{\"nlui_driver_version\":\"%s\"}", version_of_this_script)
tasmota.publish_result(jm, "RESULT")
end
tasmota.add_cmd('GetDriverVersion', get_current_version)
def update_berry_driver(cmd, idx, payload, payload_json)
def task()
import string
var cl = webclient()
cl.begin(payload)
var r = cl.GET()
if r == 200
print("Sucessfully downloaded nspanel-lovelace-ui berry driver")
else
print("Error while downloading nspanel-lovelace-ui berry driver")
end
r = cl.write_file("autoexec.be")
if r < 0
print("Error while writeing nspanel-lovelace-ui berry driver")
else
print("Sucessfully written nspanel-lovelace-ui berry driver")
var s = load('autoexec.be')
if s == true
var jm = string.format("{\"nlui_driver_update\":\"%s\"}", "succeeded")
tasmota.publish_result(jm, "RESULT")
else
var jm = string.format("{\"nlui_driver_update\":\"%s\"}", "failed")
tasmota.publish_result(jm, "RESULT")
end
end
end
tasmota.set_timer(0,task)
tasmota.resp_cmnd_done()
end
tasmota.add_cmd('UpdateDriverVersion', update_berry_driver)
def flash_nextion(cmd, idx, payload, payload_json)
def task()
nextion.flash_nextion(payload)
end
tasmota.set_timer(0,task)
tasmota.resp_cmnd_done()
end
def send_cmd(cmd, idx, payload, payload_json)
nextion.sendnx(payload)
tasmota.resp_cmnd_done()
end
def send_cmd2(cmd, idx, payload, payload_json)
nextion.send(payload)
tasmota.resp_cmnd_done()
end
tasmota.add_cmd('Nextion', send_cmd)
tasmota.add_cmd('CustomSend', send_cmd2)
tasmota.add_cmd('FlashNextion', flash_nextion)

View File

@@ -10,12 +10,12 @@
class Nextion : Driver class Nextion : Driver
static VERSION = "1.1.3"
static header = bytes('55BB') static header = bytes('55BB')
static flash_block_size = 4096 static flash_block_size = 4096
var flash_mode var flash_mode
var flash_start_millis
var flash_size var flash_size
var flash_written var flash_written
var flash_buff var flash_buff
@@ -24,6 +24,7 @@ class Nextion : Driver
var tcp var tcp
var ser var ser
var last_per var last_per
var url
def split_55(b) def split_55(b)
var ret = [] var ret = []
@@ -125,21 +126,19 @@ class Nextion : Driver
var per = (self.flash_written*100)/self.flash_size var per = (self.flash_written*100)/self.flash_size
if (self.last_per!=per) if (self.last_per!=per)
self.last_per = per self.last_per = per
tasmota.publish_result(string.format("{\"Flashing\":{\"complete\": %d}}",per), "RESULT") tasmota.publish_result(string.format("{\"Flashing\":{\"complete\": %d, \"time_elapsed\": %d}}",per , (tasmota.millis()-self.flash_start_millis)/1000), "RESULT")
end end
if size(to_write)>0 if size(to_write)>0
self.flash_written += size(to_write) self.flash_written += size(to_write)
if self.flash_offset==0 || self.flash_written>self.flash_offset
self.ser.write(to_write) self.ser.write(to_write)
self.flash_offset = 0
else
tasmota.set_timer(10,/->self.write_block())
end
end end
log("FLH: Total "+str(self.flash_written),3) log("FLH: Total "+str(self.flash_written),3)
if (self.flash_written==self.flash_size) if (self.flash_written==self.flash_size)
log("FLH: Flashing complete") log("FLH: Flashing complete - Time elapsed: %d", (tasmota.millis()-self.flash_start_millis)/1000)
self.flash_mode = 0 self.flash_mode = 0
self.ser = nil
tasmota.gc()
self.ser = serial(17, 16, 115200, serial.SERIAL_8N1)
end end
end end
@@ -154,7 +153,10 @@ class Nextion : Driver
var strv = msg[0..-4].asstring() var strv = msg[0..-4].asstring()
if string.find(strv,"comok 2")>=0 if string.find(strv,"comok 2")>=0
log("FLH: Send (High Speed) flash start") log("FLH: Send (High Speed) flash start")
self.sendnx(string.format("whmi-wris %d,115200,res0",self.flash_size)) self.flash_start_millis = tasmota.millis()
#self.sendnx(string.format("whmi-wris %d,115200,res0",self.flash_size))
self.sendnx(string.format("whmi-wris %d,921600,res0",self.flash_size))
self.ser = serial(17, 16, 921600, serial.SERIAL_8N1)
elif size(msg)==1 && msg[0]==0x08 elif size(msg)==1 && msg[0]==0x08
log("FLH: Waiting offset...",3) log("FLH: Waiting offset...",3)
self.awaiting_offset = 1 self.awaiting_offset = 1
@@ -162,6 +164,10 @@ class Nextion : Driver
self.awaiting_offset = 0 self.awaiting_offset = 0
self.flash_offset = msg.get(0,4) self.flash_offset = msg.get(0,4)
log("FLH: Flash offset marker "+str(self.flash_offset),3) log("FLH: Flash offset marker "+str(self.flash_offset),3)
if self.flash_offset != 0
self.open_url_at(self.url, self.flash_offset)
self.flash_written = self.flash_offset
end
self.write_block() self.write_block()
elif size(msg)==1 && msg[0]==0x05 elif size(msg)==1 && msg[0]==0x05
self.write_block() self.write_block()
@@ -202,8 +208,8 @@ class Nextion : Driver
self.sendnx("connect") self.sendnx("connect")
end end
def open_url(url) def open_url_at(url, pos)
self.url = url
import string import string
var host var host
var port var port
@@ -229,6 +235,7 @@ class Nextion : Driver
self.tcp.connect(host,port) self.tcp.connect(host,port)
log("FLH: Connected:"+str(self.tcp.connected()),3) log("FLH: Connected:"+str(self.tcp.connected()),3)
var get_req = "GET "+get+" HTTP/1.0\r\n" var get_req = "GET "+get+" HTTP/1.0\r\n"
get_req += string.format("Range: bytes=%d-\r\n", pos)
get_req += string.format("HOST: %s:%s\r\n\r\n",host,port) get_req += string.format("HOST: %s:%s\r\n\r\n",host,port)
self.tcp.write(get_req) self.tcp.write(get_req)
var a = self.tcp.available() var a = self.tcp.available()
@@ -257,58 +264,35 @@ class Nextion : Driver
end end
end end
#print(headers) #print(headers)
# check http respose for code 200 # check http respose for code 200/206
var tag = "200 OK" if string.find(headers,"200 OK")>0 || string.find(headers,"206 Partial Content")>0
i = string.find(headers,tag) log("FLH: HTTP Respose is 200 OK or 206 Partial Content",3)
if (i>0)
log("FLH: HTTP Respose is 200 OK",3)
else else
log("FLH: HTTP Respose is not 200 OK",3) log("FLH: HTTP Respose is not 200 OK or 206 Partial Content",3)
print(headers) print(headers)
return return -1
end end
# only set flash size if pos is zero
if pos == 0
# check http respose for content-length # check http respose for content-length
tag = "Content-Length: " var tag = "Content-Length: "
i = string.find(headers,tag) i = string.find(headers,tag)
if (i>0) if (i>0)
var i2 = string.find(headers,"\r\n",i) var i2 = string.find(headers,"\r\n",i)
var s = headers[i+size(tag)..i2-1] var s = headers[i+size(tag)..i2-1]
self.flash_size=int(s) self.flash_size=int(s)
end end
if self.flash_size==0
log("FLH: No size header, counting ...",3)
self.flash_size = size(self.flash_buff)
#print("counting start ...")
while self.tcp.connected()
while self.tcp.available()>0
self.flash_size += size(self.tcp.readbytes())
end
tasmota.delay(50)
end
#print("counting end ...",self.flash_size)
self.tcp.close()
self.open_url(url)
else
log("FLH: Size found in header, skip count",3)
end
log("FLH: Flash file size: "+str(self.flash_size),3) log("FLH: Flash file size: "+str(self.flash_size),3)
end
end end
def flash_nextion(url) def flash_nextion(url)
self.flash_size = 0 self.flash_size = 0
self.open_url(url) var res = self.open_url_at(url, 0)
if res != -1
self.begin_nextion_flash() self.begin_nextion_flash()
end end
def version_number(str)
import string
var i1 = string.find(str,".",0)
var i2 = string.find(str,".",i1+1)
var num = int(str[0..i1-1])*10000+int(str[i1+1..i2-1])*100+int(str[i2+1..])
return num
end end
def init() def init()
@@ -325,7 +309,7 @@ tasmota.add_driver(nextion)
def get_current_version(cmd, idx, payload, payload_json) def get_current_version(cmd, idx, payload, payload_json)
import string import string
var version_of_this_script = 3 var version_of_this_script = 4
var jm = string.format("{\"nlui_driver_version\":\"%s\"}", version_of_this_script) var jm = string.format("{\"nlui_driver_version\":\"%s\"}", version_of_this_script)
tasmota.publish_result(jm, "RESULT") tasmota.publish_result(jm, "RESULT")
end end