682 lines
18 KiB
Plaintext
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 : on press and release
|
|
Associated Keyboard: none
|
|
Text :
|
|
Max. Text Size : 10
|
|
|
|
Text temp_value_2
|
|
Attributes
|
|
ID : 28
|
|
Scope : local
|
|
Dragging : 0
|
|
Send Component ID : on press and release
|
|
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
|
|
}
|
|
}
|
|
|