Nextion display plugin
Moderators: grovkillen, Stuntteam, TD-er
- grovkillen
- Core team member
- Posts: 3621
- Joined: 19 Jan 2017, 12:56
- Location: Hudiksvall, Sweden
- Contact:
Re: Nextion display plugin
Sorry, most have missed! Thanks!
ESP Easy Flasher [flash tool and wifi setup at flash time]
ESP Easy Webdumper [easy screendumping of your units]
ESP Easy Netscan [find units]
Official shop: https://firstbyte.shop/
Sponsor ESP Easy, we need you
ESP Easy Webdumper [easy screendumping of your units]
ESP Easy Netscan [find units]
Official shop: https://firstbyte.shop/
Sponsor ESP Easy, we need you
Re: Nextion display plugin
Hi
I'm new on this forum,so hello.
I have nextion lcd and i trying send to them some data using lua script.
I saw examples to this,but only using arduino software..i like to use only esp and lua.
One thing is hard to do,mayby someone has solution.
I have to send 3x 0xff data to end transmission.
In lua to send hex command is write(0,0xff,0xff,0xff)
Now i have to split this with print command,but it must be one command e.g. print("t0.txt=/"test/""....and here send hex data)
If i send hex in next line,to the end of print commant i got /r/n so this metod is not ok.
How to send some hex data inside the print command?
Variable,table or using function inside?
The string must look this:
"t0="test"0xff 0xff 0xff (0xff='255' in asci,11111111 in binary).
Regards
I'm new on this forum,so hello.
I have nextion lcd and i trying send to them some data using lua script.
I saw examples to this,but only using arduino software..i like to use only esp and lua.
One thing is hard to do,mayby someone has solution.
I have to send 3x 0xff data to end transmission.
In lua to send hex command is write(0,0xff,0xff,0xff)
Now i have to split this with print command,but it must be one command e.g. print("t0.txt=/"test/""....and here send hex data)
If i send hex in next line,to the end of print commant i got /r/n so this metod is not ok.
How to send some hex data inside the print command?
Variable,table or using function inside?
The string must look this:
"t0="test"0xff 0xff 0xff (0xff='255' in asci,11111111 in binary).
Regards
Re: Nextion display plugin
Hi !
I'm new on this forum and i've discovered Nextion display on French domotic forum.
I've a question about the plugin: is it possible to switch between page (page0, page1, ...) ?
Thanks (and sorry for my bad english)
I'm new on this forum and i've discovered Nextion display on French domotic forum.
I've a question about the plugin: is it possible to switch between page (page0, page1, ...) ?
Thanks (and sorry for my bad english)
Re: Nextion display plugin
yes you can:
In a script, like after a button push. 770 is de code of the button that has been pushed.
on E16Nextion#code=770 do
Nextion,page 0
endon
or through a json call.
http://192.168.0.76/control?cmd=NEXTION,page 2
In a script, like after a button push. 770 is de code of the button that has been pushed.
on E16Nextion#code=770 do
Nextion,page 0
endon
or through a json call.
http://192.168.0.76/control?cmd=NEXTION,page 2
- ledfreak3d
- Normal user
- Posts: 48
- Joined: 21 Oct 2016, 12:41
Re: Nextion display plugin
Domoticz Synology Esp easy Location Netherlands /Hoorn
Re: Nextion display plugin
Ouah good integration !
How do you for the battery, we can see a photo inside !
How do you for the battery, we can see a photo inside !
- ledfreak3d
- Normal user
- Posts: 48
- Joined: 21 Oct 2016, 12:41
Re: Nextion display plugin
Lol the inside looks crap but working on a beter version and domoticz interface
It basicly ru s on a single 18650 powerbank ript apart.
In the process of designig a beter case also
It basicly ru s on a single 18650 powerbank ript apart.
In the process of designig a beter case also
Domoticz Synology Esp easy Location Netherlands /Hoorn
Re: Nextion display plugin
Hello,BertB wrote: ↑12 Jul 2017, 15:06 yes you can:
(...)
or through a json call.
http://192.168.0.76/control?cmd=NEXTION,page 2
Is it possible to do the same think with MQTT ?
Regards,
- grovkillen
- Core team member
- Posts: 3621
- Joined: 19 Jan 2017, 12:56
- Location: Hudiksvall, Sweden
- Contact:
Re: Nextion display plugin
Use the same commands over MQTT. See wiki for more info.
ESP Easy Flasher [flash tool and wifi setup at flash time]
ESP Easy Webdumper [easy screendumping of your units]
ESP Easy Netscan [find units]
Official shop: https://firstbyte.shop/
Sponsor ESP Easy, we need you
ESP Easy Webdumper [easy screendumping of your units]
ESP Easy Netscan [find units]
Official shop: https://firstbyte.shop/
Sponsor ESP Easy, we need you
-
- New user
- Posts: 7
- Joined: 28 Oct 2017, 16:16
Re: Nextion display plugin
Hello. I have Wemos D1 mini pro, Nextion Enhanced 3.5 "and SHT30 sensor .In ESPEasy I added plugin for display and sensor. The sensor works well. But I do not know how to properly connect the display to Wemos D1 mini pro. Would you please help me as correct connect and set to display the temperature and humidity on the display? Or show at least any text. Here is my current engagement. The power connection is each separately. Thank you
- Attachments
-
- WP_20171028_16_28_16_Pro.jpg (3.31 MiB) Viewed 221605 times
Re: Nextion display plugin
Hi.
I am not sure the plugin also works with the enhanced models, but first you need to prepare the display, so that it contains text and number objects.
There are many tutorials on the web that sohw how to do that. Especially the tutorials with Arduino are useful.
I am not sure the plugin also works with the enhanced models, but first you need to prepare the display, so that it contains text and number objects.
There are many tutorials on the web that sohw how to do that. Especially the tutorials with Arduino are useful.
-
- New user
- Posts: 7
- Joined: 28 Oct 2017, 16:16
Re: Nextion display plugin
Hi. The display is prepared as follows: I have the object t0 on which I want to display some text, eg. hello
Re: Nextion display plugin
Are you sure the baudrate is set ok?
Did you for instance test it with a USB to serial converter and Nextion Editor to send it the text you want?
Did you for instance test it with a USB to serial converter and Nextion Editor to send it the text you want?
-
- New user
- Posts: 7
- Joined: 28 Oct 2017, 16:16
Re: Nextion display plugin
Where is the baud rate set? In the plugin?
Unfortunately I do not have USB to serial converter ...
Unfortunately I do not have USB to serial converter ...
Re: Nextion display plugin
How did you program the Display with USB to serial?
-
- New user
- Posts: 7
- Joined: 28 Oct 2017, 16:16
Re: Nextion display plugin
with sd card
Re: Nextion display plugin
Difficult to test then.
-
- New user
- Posts: 7
- Joined: 28 Oct 2017, 16:16
Re: Nextion display plugin
And what USB to serial converter to buy
-
- New user
- Posts: 7
- Joined: 28 Oct 2017, 16:16
Re: Nextion display plugin
Or is it another way?
Is there any simple code in the Arduino IDE to display the text on the display? Connected only wemos D1 mini pro and nextion.
Is there any simple code in the Arduino IDE to display the text on the display? Connected only wemos D1 mini pro and nextion.
-
- New user
- Posts: 7
- Joined: 28 Oct 2017, 16:16
Re: Nextion display plugin
This is how you celebrate your first success with this http://support.iteadstudio.com/support/ ... rl_locale= contributor to Dave A "Steve, thanks very much for your help. " etc .. So at least the display works (I thought it was necessary to break it). Perhaps the problem is that your library does not support Nextion Enhanced. Or ...?
Re: Nextion display plugin
I am having issues to get sliders running, some how the data looses its first chars.
print "publish .........
and gives result in the debug screen sh......
So somehow it looses publi
Tried alsmost anything i could think of but did not find any answers. Rules just wont do for my setup as there are to many buttons and things going on that 4 pages arent enough for me.
https://github.com/maragelis/NextionMqtt
This firmware does reveals that the nextion sends out more data on the serial than we receive.
Like wakeup on sleep
0x87
0xff
0xff
0xff
Sleep
0x86
0xff
0xff
0xff
thup=1 {To set sleep on for your nextion project ( 0/1))
thsp=xx (Set sleep after xx secs)
I prefer node red and mqtt route, as you could change the status of a button based on incoming msg.
So when the lights are set on thru a rocker, the status on the nextion screen will be updated.
I would prefer to use the espeasy route, but some how i cant get it working further than buttons and updating fields.
print "publish .........
and gives result in the debug screen sh......
So somehow it looses publi
Tried alsmost anything i could think of but did not find any answers. Rules just wont do for my setup as there are to many buttons and things going on that 4 pages arent enough for me.
https://github.com/maragelis/NextionMqtt
This firmware does reveals that the nextion sends out more data on the serial than we receive.
Like wakeup on sleep
0x87
0xff
0xff
0xff
Sleep
0x86
0xff
0xff
0xff
thup=1 {To set sleep on for your nextion project ( 0/1))
thsp=xx (Set sleep after xx secs)
I prefer node red and mqtt route, as you could change the status of a button based on incoming msg.
So when the lights are set on thru a rocker, the status on the nextion screen will be updated.
I would prefer to use the espeasy route, but some how i cant get it working further than buttons and updating fields.
Re: Nextion display plugin
Very well posible. I never tested it and I do not know the difference between the two.dragowasabi wrote: ↑28 Oct 2017, 21:08 This is how you celebrate your first success with this http://support.iteadstudio.com/support/ ... rl_locale= contributor to Dave A "Steve, thanks very much for your help. " etc .. So at least the display works (I thought it was necessary to break it). Perhaps the problem is that your library does not support Nextion Enhanced. Or ...?
On the other hand, the code shows some strange serial port handling. I am not sure what baudrate is used to communicate with the display, but the plugin uses 9600 baud.
Re: Nextion display plugin
Please keep in mind this plugin is highly experimental. I did ask for someone with more programming skills to make it nice.r_255 wrote: ↑29 Oct 2017, 09:56 I am having issues to get sliders running, some how the data looses its first chars.
....
I prefer node red and mqtt route, as you could change the status of a button based on incoming msg.
So when the lights are set on thru a rocker, the status on the nextion screen will be updated.
I would prefer to use the espeasy route, but some how i cant get it working further than buttons and updating fields.
Without using the Nextion drivers, it is not easy to interprete the data coming from the display.
I created a kind of workaroud for sliders. It is a mixture of programming the display and the use of Rules.
I'll see if I can find it.
Regarding MQTT, I have a lot of problems getting it to work reliably.
Re: Nextion display plugin
Hi Bert,
Its much appreciated, all the efforts you put into the plugin.
I got the dimmer running thru the mentioned plugin, but Espeasy gives me more flexebility in other devices.
Your programming, is much better than mine... with a lot of effort i can read some.
I also did see on Jeffs website that there is some one that has things running up and down, not sure as time is a issue at the moment here.
Thanks!
Robin
BIG PS:
The example on jeff's website is domoticz related and works with bash scripts.
The whole reason that i don't want to use rules is because there are not rules enough for what i want ( 4 pages is not enough )
What i want to try is that my toggle buttons get their status get updated thru mqtt. So the intention is to make a button visible based on the on or off status and later on also push dimmer values to a slider.
" { "topic":sendCommand, "payload":{ "command":"click b9,1" } }" Works in the mqtt firmware i mentioned so technical it would be possible to send commands to your nextion screen
and get buttons updated based on a device status.
I am not sure how the decoding in your plugin works, but it could be that some data from the nextion comes thru as it sends more data than only a key press. ( strange data that occurs now and then ) The other firmware works on softserial to, and does not receive any weird chars.
Its much appreciated, all the efforts you put into the plugin.
I got the dimmer running thru the mentioned plugin, but Espeasy gives me more flexebility in other devices.
Your programming, is much better than mine... with a lot of effort i can read some.
I also did see on Jeffs website that there is some one that has things running up and down, not sure as time is a issue at the moment here.
Thanks!
Robin
BIG PS:
The example on jeff's website is domoticz related and works with bash scripts.
The whole reason that i don't want to use rules is because there are not rules enough for what i want ( 4 pages is not enough )
What i want to try is that my toggle buttons get their status get updated thru mqtt. So the intention is to make a button visible based on the on or off status and later on also push dimmer values to a slider.
" { "topic":sendCommand, "payload":{ "command":"click b9,1" } }" Works in the mqtt firmware i mentioned so technical it would be possible to send commands to your nextion screen
and get buttons updated based on a device status.
I am not sure how the decoding in your plugin works, but it could be that some data from the nextion comes thru as it sends more data than only a key press. ( strange data that occurs now and then ) The other firmware works on softserial to, and does not receive any weird chars.
Re: Nextion display plugin
Hi !BertB wrote: ↑22 Jan 2017, 15:34 Under Tough Release Event of down:
va0.val--
if(va0.val<0)
{
va0.val=0
}
cov va0.val,t3.txt,0
print "|u,i230,n,s"
print t3.txt
printh 0a
Under Tough Release Event of b0:
va0.val++
if(va0.val>30)
{
va0.val=30
}
cov va0.val,t3.txt,0
print "|u,i230,n,s"
print t3.txt
printh 0a
This will increase or decrease value of 1, is it possible to make it change (+ or -) of 0,5 ?
Regards,
Re: Nextion display plugin
The variable in Nextion is either a string or an integer. You could try to work it out, by adding or subtracting 5 and dividing the value by 10 in domoticz.dokho wrote: ↑06 Nov 2017, 18:55Hi !BertB wrote: ↑22 Jan 2017, 15:34 Under Tough Release Event of down:
va0.val--
if(va0.val<0)
{
va0.val=0
}
cov va0.val,t3.txt,0
print "|u,i230,n,s"
print t3.txt
printh 0a
Under Tough Release Event of b0:
va0.val++
if(va0.val>30)
{
va0.val=30
}
cov va0.val,t3.txt,0
print "|u,i230,n,s"
print t3.txt
printh 0a
This will increase or decrease value of 1, is it possible to make it change (+ or -) of 0,5 ?
Regards,
Re: Nextion display plugin
First post here so want to thank all contributors, very good thread and just the plugin i needed.
ESP12E bare connected to Nextion 4" and MQTT to Node-red.
Had a hard time compiling ESPEasy v2.0.something but in the end did manage with the v2.0 with plugin included.
Also took some time to understand the espeasy setup, needed to get MQTT publish triggered etc. %systemdate% etc not yet available in this version either so now filling this data via formatted MQTT input from node-red.
All communications sorted now, there is just one thing not clear to me, are actually 2 things.
First, in the ESPEasy => Device tab, the section with the 4 Values, i just don't get what "code" stands for and where the reported codes/values come from.
I've created some of @BertB 's code in the Nextion button. When using:
i get a constant code value of 105.00 but when i use |u instead of |s the code changes all the time and part of the send string "|u,i33,n,s18" is missing.
I suppose "|s |u" is some lua talk? at some point lua and other text came as data, but happened only once.
The other Values are also filled when i send a button press with this code to ESP, but can't figure out where the come from.
And the Rules engine does not pick up on this. I've changed the nextion code to:
giving me this msg in the log:
but the rule does not work.. ? ( neither does : on Nextion#code=105 .. or Nextion#code=105.00 )
[update] Ok sorry, got it, about the 4 value fields anyway, it's the serial read buffers. Code is assuming the deviceid is being sent with the 0xFF's ending.
Had to rack my brain for some 1970's info stored away very deep about serial comms..
I get that the plugin is a bit of a quick and dirty solution but it works so love that, and the print string is an ever quicker and dirtier solution then, but don't see how BertB's rules would work if no device id is being sent. Will give it some more thoughs and tries, maybe try Pete Scargils way of using "get attr" on the Nextion.
[update2] Solved my problem by only using button/deviceid then rule on Nextion#code to send '1' or '-1' ,depending on button, via mqtt to node-red and have node-red return the desired temp. update is fast enough for ux ease-of-use.
leaves me with the sleep/wake-up data refresh issue as all data on nextion comes from node-red in 1 min intervals. the nextion page touch event is not sent when screen is being woken up. so cant tell esp that sceen is tapped to wakeup and needs refreshing data....
setup...
ESP12E bare connected to Nextion 4" and MQTT to Node-red.
Had a hard time compiling ESPEasy v2.0.something but in the end did manage with the v2.0 with plugin included.
Also took some time to understand the espeasy setup, needed to get MQTT publish triggered etc. %systemdate% etc not yet available in this version either so now filling this data via formatted MQTT input from node-red.
All communications sorted now, there is just one thing not clear to me, are actually 2 things.
First, in the ESPEasy => Device tab, the section with the 4 Values, i just don't get what "code" stands for and where the reported codes/values come from.
I've created some of @BertB 's code in the Nextion button. When using:
Code: Select all
if(va0.val=0)
{
print "|s,i13,n,s"
} else
{
print "|s,i33,n,s"
}
print page0.vattempset.txt
printh 0xa
I suppose "|s |u" is some lua talk? at some point lua and other text came as data, but happened only once.
The other Values are also filled when i send a button press with this code to ESP, but can't figure out where the come from.
And the Rules engine does not pick up on this. I've changed the nextion code to:
Code: Select all
print "|s,idx=33,value="
print page0.vattempset.txt
printh 0xa
but the rule does not work.. ? ( neither does : on Nextion#code=105 .. or Nextion#code=105.00 )
[update] Ok sorry, got it, about the 4 value fields anyway, it's the serial read buffers. Code is assuming the deviceid is being sent with the 0xFF's ending.
Had to rack my brain for some 1970's info stored away very deep about serial comms..
I get that the plugin is a bit of a quick and dirty solution but it works so love that, and the print string is an ever quicker and dirtier solution then, but don't see how BertB's rules would work if no device id is being sent. Will give it some more thoughs and tries, maybe try Pete Scargils way of using "get attr" on the Nextion.
[update2] Solved my problem by only using button/deviceid then rule on Nextion#code to send '1' or '-1' ,depending on button, via mqtt to node-red and have node-red return the desired temp. update is fast enough for ux ease-of-use.
leaves me with the sleep/wake-up data refresh issue as all data on nextion comes from node-red in 1 min intervals. the nextion page touch event is not sent when screen is being woken up. so cant tell esp that sceen is tapped to wakeup and needs refreshing data....
setup...
Re: Nextion display plugin
@BertB
First of all: Great Plugin !
I am just beginning with the plugin for the Nextion display. I flased a nodeMCU V 1.0 and I have communication with the display.
I can send Data to the display through a url (http://192.168.178.55/control?cmd=NEXTI ... txt="Hallo" ).
Question:
Do you have more documentation for the Nextion programming
print "|u,i230,n,s" The parameters where do they stand for?
The "1230 thats the Idx value that's simple but the rest?"
Alvast bedankt!
Mvg Ernst
First of all: Great Plugin !
I am just beginning with the plugin for the Nextion display. I flased a nodeMCU V 1.0 and I have communication with the display.
I can send Data to the display through a url (http://192.168.178.55/control?cmd=NEXTI ... txt="Hallo" ).
Question:
Do you have more documentation for the Nextion programming
print "|u,i230,n,s" The parameters where do they stand for?
The "1230 thats the Idx value that's simple but the rest?"
Alvast bedankt!
Mvg Ernst
Re: Nextion display plugin
Hi Ernst,
First of all, the code is not ready, it needs a some more attention, but I do not have much time to do it.
Initially the code simply received the data to the outputs, like this:
output 1 = pagenumber * 256 + itemnumber.
Page = 1 (it starts with 0) and button id is 9, you get 256+9=265
output 2 = button state, 0 is off, 1 is on.
With rules and events you can then make things happen:
Set the time out timer to 20 seconds and background intensity to 80%
on E16Nextion#code do
Nextion,tm0.tim=20000
Nextion,dim=80
endon
You only need to tick the Send Component ID box for that.
If you want more detail, like toggling a light switch via domoticz:
put this code in the Touch Release Event code box of the switch:
page0.vBT0.val=bt0.val /this is to update a variable
if(page0.vBT0.val==1)
{ / if on then send on
print "|s,i7,sOn" /This and (|s is switch identifier, i7 is a chosen id for a button)
printh 0a / this is sent to the ESP code
}else
{ / else send off
print "|s,i7,sOff"
printh 0x0a
}
The ESP code now shows 7 and the value is 1 or 0
In this case idx 7 must be a real switch. Nextion id and idx are not related.
The rules need the folowing code:
on E16Nextion#code=7 do
if [E16Nextion#value]=1
SendToHTTP <ip of domoticz,8080>,/json.htm?type=command¶m=switchlight&idx=7&switchcmd=On
else
SendToHTTP <ip of domoticz,8080>,/json.htm?type=command¶m=switchlight&idx=7&switchcmd=Off
endif
endon
sending the value of a counter after an update, you need to program the display:
va0.val-- /when the down button is touched, the variable decreases
if(va0.val<0) / not less than 0
{
va0.val=0
}
cov va0.val,t3.txt,0 convert a string to integer
print "|u,i230,n,s" |u is identifier for update of a variable, i230 is a choosen id
print t3.txt also print the value of the variable
printh 0a end of string
In the rules you can use:
on E16Nextion#code=230 do
sendtohttp ,domoticz ip,8080>,/json.htm?param=udevice&type=command&idx=79&nvalue=0&svalue=[Nextion#value]
endon
Hope this helps
First of all, the code is not ready, it needs a some more attention, but I do not have much time to do it.
Initially the code simply received the data to the outputs, like this:
output 1 = pagenumber * 256 + itemnumber.
Page = 1 (it starts with 0) and button id is 9, you get 256+9=265
output 2 = button state, 0 is off, 1 is on.
With rules and events you can then make things happen:
Set the time out timer to 20 seconds and background intensity to 80%
on E16Nextion#code do
Nextion,tm0.tim=20000
Nextion,dim=80
endon
You only need to tick the Send Component ID box for that.
If you want more detail, like toggling a light switch via domoticz:
put this code in the Touch Release Event code box of the switch:
page0.vBT0.val=bt0.val /this is to update a variable
if(page0.vBT0.val==1)
{ / if on then send on
print "|s,i7,sOn" /This and (|s is switch identifier, i7 is a chosen id for a button)
printh 0a / this is sent to the ESP code
}else
{ / else send off
print "|s,i7,sOff"
printh 0x0a
}
The ESP code now shows 7 and the value is 1 or 0
In this case idx 7 must be a real switch. Nextion id and idx are not related.
The rules need the folowing code:
on E16Nextion#code=7 do
if [E16Nextion#value]=1
SendToHTTP <ip of domoticz,8080>,/json.htm?type=command¶m=switchlight&idx=7&switchcmd=On
else
SendToHTTP <ip of domoticz,8080>,/json.htm?type=command¶m=switchlight&idx=7&switchcmd=Off
endif
endon
sending the value of a counter after an update, you need to program the display:
va0.val-- /when the down button is touched, the variable decreases
if(va0.val<0) / not less than 0
{
va0.val=0
}
cov va0.val,t3.txt,0 convert a string to integer
print "|u,i230,n,s" |u is identifier for update of a variable, i230 is a choosen id
print t3.txt also print the value of the variable
printh 0a end of string
In the rules you can use:
on E16Nextion#code=230 do
sendtohttp ,domoticz ip,8080>,/json.htm?param=udevice&type=command&idx=79&nvalue=0&svalue=[Nextion#value]
endon
Hope this helps
Re: Nextion display plugin
It can even get better if you only enable Send Component ID in the Touch Release Event of a button.
Let's assume that gives the code of 774 in the ESPEasy and in Domoticz you have a switch with idx 7.
Then with Rule:
on E16Nextion#code=774 do
SendToHTTP <domoticz ip,8080>,/json.htm?type=command¶m=switchlight&idx=7&switchcmd=Toggle
endon
you can toggle the switch.
And if you put:
http://<domoticz ip>/control?cmd=NEXTION,page3.b5.bco=1024 in the switch's On Action and
http://<domoticz ip>/control?cmd=NEXTION,page3.b5.bco=48631 in the off action
With a switch b5 on page3 of the Nextion, obviously, you get a feedback.
The switch is grey when off and green when on. It is important that the switches have a vscope set to global.
If on the Nextion you have the switch on page 0, you send: http://<domoticz ip>/control?cmd=NEXTION,page0.b5.bco=1024
Have fun.
Let's assume that gives the code of 774 in the ESPEasy and in Domoticz you have a switch with idx 7.
Then with Rule:
on E16Nextion#code=774 do
SendToHTTP <domoticz ip,8080>,/json.htm?type=command¶m=switchlight&idx=7&switchcmd=Toggle
endon
you can toggle the switch.
And if you put:
http://<domoticz ip>/control?cmd=NEXTION,page3.b5.bco=1024 in the switch's On Action and
http://<domoticz ip>/control?cmd=NEXTION,page3.b5.bco=48631 in the off action
With a switch b5 on page3 of the Nextion, obviously, you get a feedback.
The switch is grey when off and green when on. It is important that the switches have a vscope set to global.
If on the Nextion you have the switch on page 0, you send: http://<domoticz ip>/control?cmd=NEXTION,page0.b5.bco=1024
Have fun.
-
- New user
- Posts: 2
- Joined: 13 Feb 2018, 09:22
Re: Nextion display plugin
In Domoticz I created a few scripts to update the device through this plugin. Took me a while to figure out how to send a textvalue in quotes.
So for historial purposes and well, maybe it saves someone a lot of time I''ll put a few lua examples here. You can simply update any value this way.
For example button color, button txt, textvalues, text color etc.etc. Basically everything that's "green" in the attribute window (right-down window in Nextion Editor) when selecting a box (Button, text whatever) can be updated this way. It's quite easy if you get the hang of it.
(Lines that start with -- are not code, they are comments and are ignored by Lua)
First is text as is, (no values just text in quotes)
script_device_nextiontextquotes.lua
Next one is sending a value from Domoticz (Temperature or Solar or Energy for example) to Nextion. Nextion cannot handle floats (0.1 or 1.5) so sending the value in a textbox works like a charm but needs some extra lines of code.
script_device_nextion_valuequotes.lua
What I did for example is I created 18 pictures for Solar (cropped, global) which are updated based on the power value.
power =tonumber(powervalueintext) -- If you want to compare numeric values, thats why powervalueintext and powervalueinquotes
( Original background Domoticz picture and GUI is from here https://www.domoticz.com/forum/viewtopi ... 6&start=20
So for historial purposes and well, maybe it saves someone a lot of time I''ll put a few lua examples here. You can simply update any value this way.
For example button color, button txt, textvalues, text color etc.etc. Basically everything that's "green" in the attribute window (right-down window in Nextion Editor) when selecting a box (Button, text whatever) can be updated this way. It's quite easy if you get the hang of it.
(Lines that start with -- are not code, they are comments and are ignored by Lua)
First is text as is, (no values just text in quotes)
script_device_nextiontextquotes.lua
Code: Select all
commandArray = {}
print('Script bin_selector_nextion executed') --This shows up in Domoticz log
print(devicechanged['Afval'])
afval = otherdevices_svalues['Afval'] --Afval is the name of my dummy selector switch in this case.
print(otherdevices_svalues['Afval']) -- svalue returns the value of level (Off, 10, 20, 30, etc)
if (afval == "10") then -- In this case 10 is selector level 10, needs quotes, just for reference
os.execute('curl -s "http://192.168.1.125/control?cmd=NEXTION,default.nAfval2.pic=20" ') -- changing a picture does not requires quotes
os.execute([[curl -s 'http://192.168.1.125/control?cmd=NEXTION,default.nAfval1.txt="Weekend"']]) --changing a text does requires quotes
return commandarray --execute the commands
end -- to close if
script_device_nextion_valuequotes.lua
Code: Select all
-- we need this function to send the quotes around the values
function url_encode(str)
if (str) then
str = string.gsub (str, "\n", "\r\n")
str = string.gsub (str, "([^%w %-%_%.%~])",
function (c) return string.format ("%%%02X", string.byte(c)) end)
str = string.gsub (str, " ", "+")
end
return str
end
powervalueintext = otherdevices_svalues['SolarEnergyLive'] --this values can be for example 88.5 or 1433.2, just like temperature can be 2.3 or -4.4)
powervalueinquotes = '"' ..powervalueintext.. '"' --First part of the magic
commandArray = {}
print('Power = '..powervalueintext) --This shows up in Domoticz log
power =tonumber(powervalueintext) -- If you want to compare numeric values, see example later on
if (devicechanged['SolarEnergyLive'])then --If value changes of device SolarEnergyLive
os.execute('curl -s "http://192.168.1.125/control?cmd=NEXTION,default.tSolar1.txt=' .. url_encode(powervaluesinquotes) .. '"') --sending value to textbox in quotes
print('Sending data to Nextion') --This shows up in Domoticz log
return commandarray --execute the commands
end --To close the If
power =tonumber(powervalueintext) -- If you want to compare numeric values, thats why powervalueintext and powervalueinquotes
Code: Select all
-- If power value (not the quoted onces these are the to a real number ones) is between 80.x and 160.x
-- this can not be compared in Nextion editor because value can be x.x (floats) so lua does that for me
if (power>=80 and power<=160) then
os.execute('curl -s "http://192.168.1.125/control?cmd=NEXTION,default.nSolar2.pic=3" ') ---pictures do not need quotes around the value
os.execute('curl -s "http://192.168.1.125/control?cmd=NEXTION,default.nSolar1.txt=' .. url_encode(powerquotes) .. '"') --textvalue send with quotes
print('Sending data')
- Attachments
-
- Quick demo
- nextion.png (417.42 KiB) Viewed 173748 times
-
- New user
- Posts: 2
- Joined: 13 Feb 2018, 09:22
Re: Nextion display plugin
Quick PHP example (Because I also use a php script (for the bus part) but just to show you how things can be done in PHP or without Domoticz.
For example(a very small part of the actual script) that is a cron job every minute around bus arrival, again not depending on Domoticz.
/* PHP code Not Lua */-- just for reference
For example(a very small part of the actual script) that is a cron job every minute around bus arrival, again not depending on Domoticz.
/* PHP code Not Lua */-- just for reference
Code: Select all
$Trip_Status = "Active"; //Example text
/* Text color changes based on value*/
if ($Trip_Status == "Active")
{
$color2 = 63488; //Color value red because Active is true in this case
}
else if ($Trip_Status == "DroppedOff")
{
$color2 = 65535; //Color White
}
else
{
$color2 = 1024; //Color Green
}
$nex3 = curl_init("http://192.168.1.125/control?cmd=NEXTION,default.nRitstatus2.txt=\"$Trip_Status\""); // text does need quotes while sending so escaped
$nex3c =curl_init("http://192.168.1.125/control?cmd=NEXTION,default.nRitstatus2.pco=$color2"); //color doesn't need quotes while sending so no escapes
$nex3d = curl_init("http://192.168.1.125/control?cmd=NEXTION,page%20default"); //Screen jumps to the page with the name default,space escaped with %20
error_log("Nextion ('$Trip_Status')",0);
closelog();
curl_exec($nex3);
curl_exec($nex3c);
curl_exec($nex3d)
curl_close($nex3);
curl_close($nex3c);
curl_close($nex3d)
Re: Nextion display plugin
It realy looks great, but honestly ... Lua is too much for me
Re: Nextion display plugin
hi, and congratulations for the plugin
I'm using it to interface a nextion display with my domoticz server.
I'm having trouble changing the value of a setpoint.
In t3 I have the value to send
with a send button
If I enable "send compoment id" I can intercept the evendo from the esp but not the value.
Below is the log
s if the value of t3.txt
If I disable "send component id"
I get only
Nextion: send command: s7
10:00
Nextion: send command: s8
10:00
what am I wrong?
I'm using it to interface a nextion display with my domoticz server.
I'm having trouble changing the value of a setpoint.
In t3 I have the value to send
with a send button
Code: Select all
va0.val++
if(va0.val>30)
{
va0.val=30
}
cov va0.val,t0.txt,0
print "|u,i230,n,s"
print t0.txt
printh 0a
Below is the log
Code: Select all
Nextion : code: ,,
EVENT: NEXTION#idx=261.00
ACT : temperatura=
ACT : sendtohttp 192.168.1.80,8080,/json.htm?param=udevice&type=command&idx=245&nvalue=0&svalue=0
HTTP/1.1 200 OK
EVENT: NEXTION#value=0.00
EVENT: NEXTION#=255.00
EVENT: NEXTION#=255.00
Nextion: send command: s7
10:00
If I disable "send component id"
I get only
Nextion: send command: s7
10:00
Nextion: send command: s8
10:00
what am I wrong?
Last edited by fabix68 on 24 Feb 2018, 18:10, edited 1 time in total.
Re: Nextion display plugin
Where did you put the code in the Nextion button?
It has to be in the Touch Release Event.
Your Nextion#idx=261
This is the code in Rules:
xxx is to be replaced by your address.
This is what I get in the log:
It has to be in the Touch Release Event.
Your Nextion#idx=261
This is the code in Rules:
Code: Select all
on Nextion#idx=230 do
sendtohttp xxx.xxx.xxx.xxx,8080,/json.htm?param=udevice&type=command&idx=79&nvalue=0&svalue=[Nextion#value]
endon
This is what I get in the log:
Code: Select all
EVENT: Nextion#idx=230.00
ACT : sendtohttp xxx.xxx.xxx.xxx,8080,/json.htm?param=udevice&type=command&idx=79&nvalue=0&svalue=22
HTTP/1.1 200 OK
EVENT: Processing time:165 milliSeconds
EVENT: Nextion#value=22.00
EVENT: Processing time:107 milliSeconds
HTTP : connecting to xxx.xxx.xxx.xxx:8080
Re: Nextion display plugin
The code in nextion is released in the release event of the page1 id 5 (detected as 261)
these are the rules set in the espeasy
245 if the Setpoint idx in Domoticz
if I do not enable "send component id" it will always expeasy ignore the rule.
these are the rules set in the espeasy
245 if the Setpoint idx in Domoticz
Code: Select all
on NEXTION#idx=261 do
sendtohttp 192.168.1.80,8080,/json.htm?param=udevice&type=command&idx=245&nvalue=0&svalue=[Nextion#value]
endon
Re: Nextion display plugin
I am sorry,choxnox wrote: ↑29 Jan 2018, 08:52 Is this the latest version of the plugin?
https://github.com/letscontrolit/ESPEas ... extion.ino
It is not the latest version. Somehow I cannot get it on the playground.
Just above, there is the newest one.
Re: Nextion display plugin
I have compiled ESPEASY with the new plugin but the result does not change.
Can you send me an HMI file and a working rule in order to understand what I'm wrong with?
Thank you
Can you send me an HMI file and a working rule in order to understand what I'm wrong with?
Thank you
Re: Nextion display plugin
Is this plugin currently mature enough to port to the Mega branch for the "testing" builds?
Re: Nextion display plugin
I am trying to get it to the playground, but I just don't understand this process.
My current attempt seems to end up in all sorts of conflicts.
My current attempt seems to end up in all sorts of conflicts.
Re: Nextion display plugin
If you think it is workable, I can port it to the Mega branch, then more people can test it.
- budman1758
- Normal user
- Posts: 301
- Joined: 15 Apr 2017, 05:13
- Location: Riverside CA USA
Re: Nextion display plugin
Please do that. I have one of these displays coming.
"The glass is twice as big as it needs to be".
-
- New user
- Posts: 2
- Joined: 05 Mar 2018, 22:21
Re: Nextion display plugin
hi
I am trying to upload the plugin but I keep getting an error. when I flash it without the nextion plug in it works fine. when I add the plugin _p117_nextion.ino I get the following error
C:\Documents and Settings\me2\Local Settings\Application Data\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\SoftwareSerial/SoftwareSerial.cpp:38: multiple definition of `sws_isr_0()'
libraries\ESPEasySoftwareSerial\ESPeasySoftwareSerial.cpp.o:C:\Program Files\Arduino\libraries\ESPEasySoftwareSerial/ESPeasySoftwareSerial.cpp:41: first defined here
libraries\SoftwareSerial\SoftwareSerial.cpp.o: In function `sws_isr_1()':
C:\Documents and Settings\me2\Local Settings\Application Data\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\SoftwareSerial/SoftwareSerial.cpp:39: multiple definition of `sws_isr_1()'
libraries\ESPEasySoftwareSerial\ESPeasySoftwareSerial.cpp.o:C:\Program Files\Arduino\libraries\ESPEasySoftwareSerial/ESPeasySoftwareSerial.cpp:42: first defined here
libraries\SoftwareSerial\SoftwareSerial.cpp.o: In function `sws_isr_2()':
C:\Documents and Settings\me2\Local Settings\Application Data\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\SoftwareSerial/SoftwareSerial.cpp:40: multiple definition of `sws_isr_2()'
libraries\ESPEasySoftwareSerial\ESPeasySoftwareSerial.cpp.o:C:\Program Files\Arduino\libraries\ESPEasySoftwareSerial/ESPeasySoftwareSerial.cpp:43: first defined here
c:/documents and settings/me2/local settings/application data/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9-2/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: C:\DOCUME~1\me2\LOCALS~1\Temp\arduino_build_87757/ESPEasy.ino.elf section `.text' will not fit in region `iram1_0_seg'
collect2.exe: error: ld returned 1 exit status
Multiple libraries were found for "Servo.h"
Used: C:\Documents and Settings\me2\Local Settings\Application Data\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Servo
Not used: C:\Program Files\Arduino\libraries\Servo
exit status 1
Error compiling for board NodeMCU 0.9 (ESP-12 Module).
I am at a loss. any help would be great. thank you in advance
I am trying to upload the plugin but I keep getting an error. when I flash it without the nextion plug in it works fine. when I add the plugin _p117_nextion.ino I get the following error
C:\Documents and Settings\me2\Local Settings\Application Data\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\SoftwareSerial/SoftwareSerial.cpp:38: multiple definition of `sws_isr_0()'
libraries\ESPEasySoftwareSerial\ESPeasySoftwareSerial.cpp.o:C:\Program Files\Arduino\libraries\ESPEasySoftwareSerial/ESPeasySoftwareSerial.cpp:41: first defined here
libraries\SoftwareSerial\SoftwareSerial.cpp.o: In function `sws_isr_1()':
C:\Documents and Settings\me2\Local Settings\Application Data\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\SoftwareSerial/SoftwareSerial.cpp:39: multiple definition of `sws_isr_1()'
libraries\ESPEasySoftwareSerial\ESPeasySoftwareSerial.cpp.o:C:\Program Files\Arduino\libraries\ESPEasySoftwareSerial/ESPeasySoftwareSerial.cpp:42: first defined here
libraries\SoftwareSerial\SoftwareSerial.cpp.o: In function `sws_isr_2()':
C:\Documents and Settings\me2\Local Settings\Application Data\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\SoftwareSerial/SoftwareSerial.cpp:40: multiple definition of `sws_isr_2()'
libraries\ESPEasySoftwareSerial\ESPeasySoftwareSerial.cpp.o:C:\Program Files\Arduino\libraries\ESPEasySoftwareSerial/ESPeasySoftwareSerial.cpp:43: first defined here
c:/documents and settings/me2/local settings/application data/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9-2/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: C:\DOCUME~1\me2\LOCALS~1\Temp\arduino_build_87757/ESPEasy.ino.elf section `.text' will not fit in region `iram1_0_seg'
collect2.exe: error: ld returned 1 exit status
Multiple libraries were found for "Servo.h"
Used: C:\Documents and Settings\me2\Local Settings\Application Data\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Servo
Not used: C:\Program Files\Arduino\libraries\Servo
exit status 1
Error compiling for board NodeMCU 0.9 (ESP-12 Module).
I am at a loss. any help would be great. thank you in advance
Re: Nextion display plugin
in the plugin rename 3x SoftwareSerial on ESPeasySoftwareSerial
Who is online
Users browsing this forum: No registered users and 53 guests