Files
NSPanel_HA_Blueprint/tft/nspanel_CJK_us_code/light.txt
Edward Firmo dc4a5f43e1 Reorg repo
Simplifies things
2024-02-16 16:55:12 +01:00

682 lines
18 KiB
Plaintext

Page light
Attributes
ID : 0
Scope : local
Dragging : 0
Send Component ID : on press and release
Locked : no
Swide up page ID : disabled
Swide down page ID : disabled
Swide left page ID : disabled
Swide right page ID: disabled
Events
Preinitialize Event
if(api==0)
{
page home
}else
{
vis light_b_press,1
vis lightslider,1
vis light_value,1
// #### OFF Button #####
vis temp_b_press,0
vis color_b_pres,0
// #### OFF Value #####
vis temp_value,0
vis light_value_2,0
// #### OFF Slider #####
vis tempslider,0
vis colorwheel,0
// #### Hide color & temp buttons #####
vis temp_touch,0
vis temp_value_2,0
vis temp_button,0
vis color_touch,0
vis color_button,0
}
vis unavailable,0
Postinitialize Event
sendme
Variable (int32) rgb565
Attributes
ID : 22
Scope: local
Value: 0
Variable (string) va1
Attributes
ID : 23
Scope : local
Text : newtxt
Max. Text Size: 20
Variable (string) va2
Attributes
ID : 24
Scope : local
Text : newtxt
Max. Text Size: 10
Variable (string) va3
Attributes
ID : 25
Scope : local
Text : newtxt
Max. Text Size: 10
Variable (int32) currenttab
Attributes
ID : 26
Scope: local
Value: 0
Variable (string) lightsetting
Attributes
ID : 30
Scope : local
Text :
Max. Text Size: 255
Number ring
Attributes
ID : 4
Scope : local
Dragging : 0
Send Component ID : on press and release
Associated Keyboard: none
Value : 0
Number field
Attributes
ID : 5
Scope : local
Dragging : 0
Send Component ID : on press and release
Associated Keyboard: none
Value : 0
Text light_value
Attributes
ID : 1
Scope : local
Dragging : 0
Send Component ID : disabled
Associated Keyboard: none
Text :
Max. Text Size : 10
Text page_label
Attributes
ID : 2
Scope : local
Dragging : 0
Send Component ID : on press and release
Associated Keyboard: none
Text :
Max. Text Size : 100
Text temp_value
Attributes
ID : 14
Scope : local
Dragging : 0
Send Component ID : on press and release
Associated Keyboard: none
Text :
Max. Text Size : 10
Text light_value_2
Attributes
ID : 27
Scope : local
Dragging : 0
Send Component ID : disabled
Associated Keyboard: none
Text :
Max. Text Size : 10
Text temp_value_2
Attributes
ID : 28
Scope : local
Dragging : 0
Send Component ID : disabled
Associated Keyboard: none
Text :
Max. Text Size : 10
Text icon_state
Attributes
ID : 29
Scope : local
Dragging : 0
Send Component ID : on press and release
Associated Keyboard: none
Text :
Max. Text Size : 10
Text unavailable
Attributes
ID : 33
Scope : local
Dragging : 0
Send Component ID : disabled
Associated Keyboard: none
Text :
Max. Text Size : 1
Picture light_button
Attributes
ID : 8
Scope : local
Dragging : 0
Send Component ID: disabled
Picture color_button
Attributes
ID : 9
Scope : local
Dragging : 0
Send Component ID: disabled
Picture temp_button
Attributes
ID : 10
Scope : local
Dragging : 0
Send Component ID: disabled
Picture light_b_press
Attributes
ID : 11
Scope : local
Dragging : 0
Send Component ID: disabled
Picture temp_b_press
Attributes
ID : 12
Scope : local
Dragging : 0
Send Component ID: disabled
Picture color_b_pres
Attributes
ID : 13
Scope : local
Dragging : 0
Send Component ID: disabled
Picture colorwheel
Attributes
ID : 16
Scope : local
Dragging : 0
Send Component ID: on press and release
Events
Touch Press Event
// Circular Color Picker for Nextion (c) Max Zuidberg 2022
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
//
// Put this code in the touch press or release
// event of the pic component with the color wheel.
// Requires the two variables field.val and ring.val
//
// sya0 = x, sya1 = sya1
// Note the usage of the hidden sya0, sya1 variables
// within event code as local, temporary variable is fine.
sya0=tch0
sya1=tch1
//
// Convert absolute coordinates to coordinates relative to
// the color wheel center.
// sys0 = x_center, sys1 = y_center
sys0=colorwheel.w/2
sys0+=colorwheel.x
sys1=colorwheel.h/2
sys1+=colorwheel.y
sya0-=sys0
sya1-=sys1
//
// Determine ring
ring.val=0
// sys0 = r^2 = x^2 + y^2
sys0=sya0*sya0
sys1=sya1*sya1
sys0+=sys1
// repeat for all rings
if(sys0>=156)
{
ring.val++
}
if(sys0>=625)
{
ring.val++
}
if(sys0>=1406)
{
ring.val++
}
if(sys0>=2500)
{
ring.val++
}
if(sys0>=3906)
{
ring.val++
}
if(sys0>=5625)
{
ring.val++
}
if(sys0>=7656)
{
ring.val++
}
//
// Determine quadrant (0-3). Note: pixel y coords are inverted
// compared to mathematical y coords. But we want math. quadrants.
sya1*=-1
sys2=0
if(sya1<0)
{
sys2+=2
}
sys0=sya0*sya1
if(sys0<0)
{
sys2+=1
// In this case we also want to swap x and y otherwise the
// atan(abs(x/y)) (calculated below) gives values running
// "the wrong way" (cw instead of ccw).
sys1=sya1
sya1=sya0
sya0=sys1
}
//
field.val=sys2*6
//
// x,y sign is not required anymore
if(sya0<0)
{
sya0*=-1
}
if(sya1<0)
{
sya1*=-1
}
//
// Determine field in ring quadrant
// Factor 100000 chosen more or less arbitrarily.
// sys0 = 100000 * tan_a = 100000 * y / x
sys0=100000*sya1
sys0/=sya0
// repeat for all fields
if(sys0>=26794)
{
field.val++
}
if(sys0>=57735)
{
field.val++
}
if(sys0>=99999)
{
field.val++
}
if(sys0>=173205)
{
field.val++
}
if(sys0>=373205)
{
field.val++
}
covx r,va1.txt,0,0
covx g,va2.txt,0,0
covx b,va3.txt,0,0
va1.txt=""
va2.txt=""
va3.txt=""
Touch Release Event
// Adjust field.val "orientation" and offset to match the h value of the colors in the wheel
h=23-field.val// 0 <= field.val <= 23
// h is expected to be 0-6*256 (see hsv2rgb)
h*=6*256
h/=24// Number of fields
//
// s is expected to be 0-256 (see hsv2rgb)
s=ring.val*256
s/=8// Number of rings
// no "value" selectable; fix it to the maximum (matching the colors in the wheels shown.
v=255
click hsv2rgb,0
click rgb888to565,0
//colPreview.bco=rgb565.val
covx r,va1.txt,0,0
covx g,va2.txt,0,0
covx b,va3.txt,0,0
lightsetting.txt="{\"page\": \"light\", \"component\": \"rgb_color\", \"value\": ["+va1.txt+", "+va2.txt+", "+va3.txt+"]}"
printh 92
prints "nspanelevent",0
printh 00
prints lightsetting.txt,0
printh 00
printh FF FF FF
va1.txt=""
va2.txt=""
va3.txt=""
Slider lightslider
Attributes
ID : 3
Scope : local
Dragging : 0
Send Component ID: on press and release
Position : 0
Upper range limit: 100
Lower range limit: 0
Events
Touch Release Event
covx lightslider.val,va1.txt,0,0
light_value.txt=va1.txt+"%"
light_value_2.txt=va1.txt+"%"
lightsetting.txt="{\"page\": \"light\", \"key\": \"brightness_pct\", \"value\": "+va1.txt+"}"
printh 92
prints "localevent",0
printh 00
prints lightsetting.txt,0
printh 00
printh FF FF FF
Slider tempslider
Attributes
ID : 15
Scope : local
Dragging : 0
Send Component ID: on press and release
Position : 0
Upper range limit: 500
Lower range limit: 153
Events
Touch Release Event
covx tempslider.val,va1.txt,0,0
temp_value.txt=va1.txt
temp_value_2.txt=va1.txt
lightsetting.txt="{\"page\": \"light\", \"key\": \"color_temp\", \"value\": "+va1.txt+"}"
printh 92
prints "localevent",0
printh 00
prints lightsetting.txt,0
printh 00
printh FF FF FF
Button button_back
Attributes
ID : 31
Scope : local
Dragging : 0
Send Component ID: on press and release
State : unpressed
Text : î…˜
Max. Text Size : 3
Events
Touch Press Event
page back_page_id
Hotspot hsv2rgb
Attributes
ID : 6
Scope : local
Dragging : 0
Send Component ID: on press and release
Events
Touch Release Event
// https://de.wikipedia.org/wiki/HSV-Farbraum#Umrechnung_HSV_in_RGB
// The values range from 0..255 instead of 0..1
// h ranges from 0..(6*256)
if(s>=256)
{
s=255
}else if(s<0)
{
s=0
}
if(v>=256)
{
v=255
}else if(v<0)
{
v=0
}
f=h&0xff
p=256-s
p*=v
p=p>>8// / 256
q=s*f// 0-256*256 = 0-65536
q=65536-q
q*=v
q=q>>16
t=256-f
t*=s
t=65536-t
t*=v
t=t>>16
//
f=h>>8
if(f==1)
{
r=q
g=v
b=p
}else if(f==2)
{
r=p
g=v
b=t
}else if(f==3)
{
r=p
g=q
b=v
}else if(f==4)
{
r=t
g=p
b=v
}else if(f==5)
{
r=v
g=p
b=q
}else
{
r=v
g=t
b=p
}
Hotspot rgb888to565
Attributes
ID : 7
Scope : local
Dragging : 0
Send Component ID: on press and release
Events
Touch Release Event
r=r&0xff
g=g&0xff
b=b&0xff
sys1=r>>3
sys2=sys1<<6
sys1=g>>2
sys2+=sys1
sys2=sys2<<5
sys1=b>>3
sys2+=sys1
rgb565.val=sys2
Hotspot light_touch
Attributes
ID : 17
Scope : local
Dragging : 0
Send Component ID: on press and release
Events
Touch Press Event
vis light_b_press,1
vis lightslider,1
vis light_value,1
vis temp_value_2,1
// #### OFF Button #####
vis temp_b_press,0
vis color_b_pres,0
// #### OFF Value #####
vis temp_value,0
vis light_value_2,0
// #### OFF Slider #####
vis tempslider,0
vis colorwheel,0
Hotspot temp_touch
Attributes
ID : 18
Scope : local
Dragging : 0
Send Component ID: on press and release
Events
Touch Press Event
vis temp_b_press,1
vis tempslider,1
vis temp_value,1
vis light_value_2,1
// #### OFF Button #####
vis light_b_press,0
vis color_b_pres,0
// #### OFF Value #####
vis light_value,0
vis temp_value_2,0
// #### OFF Slider #####
vis lightslider,0
vis colorwheel,0
Hotspot color_touch
Attributes
ID : 19
Scope : local
Dragging : 0
Send Component ID: on press and release
Events
Touch Press Event
vis color_b_pres,1
vis colorwheel,1
vis light_value_2,1
// #### OFF Button #####
vis light_b_press,0
vis temp_b_press,0
// #### OFF Value #####
vis light_value,0
vis temp_value,0
vis temp_value_2,0
// #### OFF Slider #####
vis lightslider,0
vis tempslider,0
// #### OFF Color #####
Timer swipestore
Attributes
ID : 21
Scope : local
Period (ms): 50
Enabled : no
Events
Timer Event
swipex=tch0
swipey=tch1
Timer wakeup_timer
Attributes
ID : 32
Scope : local
Period (ms): 100
Enabled : yes
Events
Timer Event
if(dim<brightness)
{
dimdelta=brightness-dim
dimdelta/=10
if(dimdelta<1)
{
dimdelta=1
}
dim+=dimdelta
}else
{
wakeup_timer.en=0
}
TouchCap swipe
Attributes
ID : 20
Scope: local
Value: 0
Events
Touch Press Event
swipestore.en=1 // Start swipestore timer
Touch Release Event
swipestore.en=0
// Touch has ended, x
if(tch0==0)
{
swipec=swipex-tch2
// From Left to Right
if(swipec>swipedx)
{
//page
}
// Right to Left
swipec2=0-swipedx
if(swipec<swipec2)
{
//page
}
}
// Touch has ended, y
if(tch1==0)
{
swipec=swipey-tch3
// From Up to Down
if(swipec>100)
{
//page
}
// Down to Up
swipec2=0-swipedy
if(swipec<-100)
{
//page
}
}