Displaying Nextion text fields for MMDVMHost and the Nextion Driver (.hmi file included)

All things relating to the Nextion Screen(s)
Post Reply
Posts: 666
Joined: Wed Apr 17, 2019 11:11 pm

Displaying Nextion text fields for MMDVMHost and the Nextion Driver (.hmi file included)

Post by KE7FNS » Wed Oct 16, 2019 8:54 am

As many of you have already figured out, I'm pretty passionate about tinkering around with Nextions.

Today I saw a post on another related website that I thought was a great idea, but poorly implemented, I also had a number of "issues" with it. The first being that the files are not available if you are not a member of the group. Second it was stated that it was a "Nextion Driver test" when actually it tests both Nextion Driver related fields and the regular ones sent by MMDVMHost. Another issue I had is he only wrote his file for 3.5 inch basic screens. And lastly it has errors, even after all of the digging he did through the documentation, he missed some text fields.

So, I thought about it and said, I can do that. I'll make a .hmi file really quick that does ALL the following:
  • Is available to download by pi-star forum users.
  • able to openly view, study, modify and build upon. (not in a .tft format where you can purposely keep your code hidden (booo.... insert closed source code rant here))
  • works for any Nextion screen model, orientation and series (basic, enhanced or intelligent), simply set the device and orientation after you load it in the editor.
  • has ALL the correct fields for MMDVMHost and the Nextion Driver 1.17 (as of 10/15/2019)
  • has no hidden text caching, timers, or complex display manipulation, so what is sent to the Nextion is EXACTLY what is displayed (serial errors might be included).
  • is small and compact, so it flashes very fast, no fancy graphics, just plain black and white text.
Since I was limited to the 2.4 inch screen resolution (320x240) and the stupid Nextion Editor doesn't automatically scale things up for the larger screens, the text is TINY, but this isn't meant to be a fancy screen for everyday use, it is meant to be used for testing and as documentation plus a foundation to build upon, and show every available field that MMDVMHost and the Nextion Driver (if installed) can display on every page during real world operation. If fields are blank it is because nothing was sent to it (for example when you are listening to a DMR transmission, you are not going to see the t7 field (BER) being displayed, but once you transmit you will see that field update.) Every time a page is switched ALL of the fields are cleared until they are updated, again there is no hidden caching of any data happening in the background on the Nextion)

In the upper right corner you will see MMDVM status value: XX. This is a simple way to identify which field was just updated. It might be difficult to catch it get updated, if a number of messages were sent rapidly, it will always overwrite and display the most recent value that was sent.

On some pages you will see a "Nextion Driver Only:" section. Below that are fields that only the Nextion Driver will write to (MMDVMHost doesn't use them), so if you don't have the Nextion Driver installed they will always remain blank. msg, msg1, and msg2 are used for responses from touch commands and advanced processes, I am including them (since I said I wanted to make sure I included ALL the fields correctly), but with the limited amount of screen space I am just going to leave those out, if you want examples of how those work there are plenty of .HMI files on PD0DIB's github you can view for examples.

On the DMR page you will see two columns those are grouped together because the left column is for TS1, and the right column is for TS2. You might not see all the characters due to the limited display space available, that DOES NOT mean they were NOT sent.

I got the listing of the text fields from parsing the most current source code (both MMDVMHost and NextionDriver), NOT the documentation, that is why on certain pages things are not in numerical order, it is because that is the way it is written in the code, I mimicked the order they are sent and used the same structure from top to bottom.

Instructions on how to use:

Code: Select all

Download, and unzip
load the .hmi file in the Nextion Editor v.58
set the device type
set the orientation
compile and create the .tft file
load the .tft file onto a SD card, or upload it onto the Nextion using a serial adapter
enjoy, learn and be creative
As far as pi-star settings you should be using layout: ON7LDS L3 (you can also use ON7LDS L3 HS if using a USB ttl adapter) Using any of the other layouts might cause the font sizes and colors to change, and since there is only one size font, it probably won't work very well (I didn't test it, but I already expect it will mess up). It was designed to be small,compact and simple, making it work for those other layouts means making it more complicated, than it needs to be. Just use ON7LDS L3

This way you can physically watch what was just sent to your screen, no hidden smoke and mirrors magic. You can take that .hmi file and rearrange the text fields to your liking and insert a picture in the background and build your own .hmi and then show it off to the world. Or if you see that a .hmi file you want to use is missing certain text fields, you can add the missing ones to it. Do whatever you want, just don't rely on the people that won't SHARE their work by only making the .tft file available to download, and don't be one of those people who won't SHARE either.

I don't want this thread to become a "I can't get it to work" tech support section, so if you have troubles please by all means make a seperate thread in the Nextion area of the forum and I'm sure I'll respond to it or at least Toshen will if he beats me too it. I'll be more than happy to help. If you find mistakes in my documentation, then by all means speak up and point them out. I compiled all this data on the fly tonight, I'm sure I accidently skipped over something. If you'd like to discuss things or have questions, they by all means ASK.
(13.59 KiB) Downloaded 219 times
I'm curious as to how many times this will be downloaded (my guess is probably less than 250 times).

(if you do plan on using this .hmi to build your own screen, you can just delete the n0 field and any zXX text fields, I just renamed them that so they wouldn't conflict with txx fields and be overwritten and so I could set what text I wanted them to display all the time.) Leave the S0 touch hotspot intact but clear out the code in it (n0.val=MMDVM.status.val)

I hope you find this useful and as interesting as I do.

Good luck, and have fun.

Code: Select all

Page names
 1 : page MMDVM
 2 : page DStar
 3 : page DMR
 4 : page YSF
 5 : page P25 
 6 : page NXDN
 7 : page POCSAG
MMDVM Status values
 0 : bkcmd  (nextion command to stop all success/failure messages over the serial port)
11 : IDLE
12 : CW Ident
13 : ERROR text
14 : ERROR
16 : IPaddress
17 : ID/Call (t0 and if layout >2 t4,and t5 are sent also)
19 : END
20 : RX Frequency
21 : TX Frequency
22 : Temperature
23 : Location
24 : Nextion Driver extra info update (t3, t20, t21, t22, cpuload, t23)

41 : D-Star listening
42 : type/my1/my2
45 : your
46 : reflector
47 : RSSI
48 : ber

61 : DMR listening1
62 : ID1
63 : TA1
64 : Call end1
65 : TG1
66 : RSSI1
67 : ber1
68 : User data TS1 (t18,19,20,21,22)
69 : DMR listening2
70 : ID2
71 : TA2
72 : Call end2
73 : TG2
74 : RSSI2
75 : ber2
76 : No longer used?
77 : No longer used?
78 : User data TS2 (t13,14,15,16,17)

81 : YSF listening
82 : src
83 : dest
84 : origin
85 : RSSI
86 : ber

101 : P25 listening
102 : source
103 : dest
104 : RSSI
105 : ber

121 : NXDN listening
122 : source
123 : dest
124 : RSSI
125 : ber

132 : RIC
133 : message text
134 : waiting


t0 : owner call & ID / errortext  LOCKOUT
t1 : status / ERROR
t2 : date & time

screenLayout >2 :
 t3 : ip address
 t4 : owner call
 t5 : owner ID
t30 : RXfrequency
t32 : TXfrequency
t20 : CPU Temperature in C.   ( Can be changed to F in mmdmvhost config setting: [NEXTION] Section, Setting=DisplayTempInFahrenheit=1)
t31 : location

t0 : type my1 my2
t1 : your
t2 : reflector
t3 : rssi
t4 : ber

 t0 : src1 id / call / TA
 t1 : dst
 t2 : src2 id / call / TA
 t3 : dst
 t4 : rssi1
 t5 : rssi2
 t6 : ber1
 t7 : ber2

screenLayout >2 :
 t8 : talkgroup name TS2
 t9 : talkgroup name TS1
t10: No longer used?
t11: No longer used?
t12: No longer used?
t13: CSV lookup data TS2
t14: CSV lookup data TS2
t15: CSV lookup data TS2
t16: CSV lookup data TS2
t17: CSV lookup data TS2
t18: CSV lookup data TS1
t19: CSV lookup data TS1
t20: CSV lookup data TS1
t21: CSV lookup data TS1
t22: CSV lookup data TS1

t0 : type,source
t1 : dst
t2 : src
t3 : rssi
t4 : ber

t0 : type,source
t1 : dst
t2 : rssi
t3 : ber

t0 : type,source
t1 : dst
t2 : rssi
t3 : ber

t0 : waiting / RIC
t1 : message
All views, comments, posts and opinions shared are entirely my own.

Post Reply