Introduce.

This tutorial only use for ESPrtk 2.6.0 or higher

Besides using WEB configure to configure profile settings such as wifi hotspot settings or action profiles for ESPrtk in Action Planning, …Since ESPrtk 2.5.2 allows users to configure them through UART connection.

This function is useful when users want to integrate ESPrtk in hierarchies and use ESPrtk as a transmission device solution. ESPrtk will be controlled and configured by another device such as computer or microcontroller.

How it works ? 

Computers or microcontrollers are collectively referred to as HOST.

There are 2 main behaviors on HOST: Profile data query and Profile data configuration on ESPrtk.

Both HOST and ESPrtk follow a message frame when communicating.

Before querying or configuring, HOST and ESPrtk need to shake hands together, the handshake is to put ESPrtk into configuration mode via UART, the handshake only needs to be done once.

If the handshake fails, HOST will not be able to do anything else.

When the HOST sends a message asking for a query or configuration, ESPrtk will return a response message. (After handshake success).

Messages sent from HOST or ESPrtk can be encrypted as needed to ensure security.

Query requests or configurations always come with a profile login account (login name and password) or at least the hash value of them.

Before communicating:

Both HOST and ESPrtk need to be configured with the appropriate parameters.

+ Using the same baudrate speed.

+ Using the same private key.

( Output message encryption is not required on HOST and ESPrtk, but we still recommend users to enable output message encryption in both HOST and ESPrtk on their final products / systems. )

Hardware connection.

ESPrtk uses UART0 port to perform UART configure function.

HOST needs 1 more output pin connected to the RESET pin of ESPrtk.

The standard logic level voltage on ESPrtk is 3.3v.

Communicate handshake.

The process to instruct ESPrtk into UART configure mode is called a communication handshake. They take place in the following order:

  • Step 1 on HOST: HOST reset ESPrtk (by put low logic voltage on Reset pin of ESPrtk, wait for 500ms, then put on ESPrtk’s RESET pin to high logic voltage).
  • Step 2 on ESPrtk: (If UART configure on ESPrtk is enabled), ESPrtk will send at least 1 message with TYPE_MESSAGE = 0 and wait for response from HOST.
  • Step 3 on HOST: If HOST receives a message with TYPE_MESSAGE = 0, HOST will send a message with TYPE_MESSAGE = 1.
  • Step 4 on ESPrtk: If ESPrtk receives a message with TYPE_MESSAGE = 1, ESPrtk will enter UART configure mode, the status LED on ESPrtk will light up continuously. ESPrtk will resend the message with TYPE_MESSAGE = 1.
  • Step 5 on HOST: If HOST receives a message with TYPE_MESSAGE = 1, HOST will enter UART configure mode. Successful handshake.
    Stop the handshaking process.

In steps 2 and 4, if after 4 seconds (from step 1) that HOST does not respond, ESPrtk will ignore UART configure mode and will not respond to messages from HOST -> handshake failed.

In steps 3 and 5 If after 10 seconds (from step 1) that ESPrtk does not respond, -> handshake failed. HOST can return to step 1 to try again.

After successful handshaking, HOST can start queries and configure to ESPrtk. The handshake only needs to be done once, however, HOST will repeat shaking hands with ESPrtk when it detects that ESPrtk does not respond properly.

Communication framework

This is our exclusive messaging framework for ESPrtk.

This frame is currently applied on ESPrtk 2.6.0.

* HEADER + TYPE_MESSAGE + ID_MESSAGE + FLAG_ENCODE + PUBLIC_KEY + STATE_MESSAGE +LENGTH_MESSAGE +MESSAGE + Checksum + <CR><LF>
* 6byte + 1 byte + 1 byte + 1BYTE + 16 byte + 1byte + 2 byte + max 1000byte + 4byte + 1byte +1byte
*

*HEADER : The default is 6 bytes [6,5,0,1,8,1]

TYPE_MESSAGE :

  • 0 =TYPE_MG_wait_handshake_CF_UA, //request handshake (go into UART configuration mode)
  • 1=TYPE_MG_start_CF_UA, // check handshake status
  • 2=TYPE_MG_stop_CF_UA, //exit configuration mode with UART and start right away
  • 3=TYPE_MG_reset_esprtk_CF_UA, //Reset ESPrtk module (instead of pressing RESET button on ESPrtk)
  • 4=TYPE_MG_query_CF_UA, //Query data
  • 5=TYPE_MG_configure_CF_UA, //Configure data

*ID_MESSAGE: (with TYPE_MESSAGE= 4 or =5)

  • 0=ID_MESSAGE_CREATE_NEW_PROFILE_CF_UA, —
  • 1=ID_MESSAGE_LOGIN_LOGOUT_CF_UA,  —
  • 2=ID_MESSAGE_YOUR_PROFILE_CF_UA,  —
  • 3=ID_MESSAGE_ACTION_PLANNING_CF_UA,  ++
  • 4=ID_MESSAGE_WIFI_HOTSPOT_CF_UA,  ++
  • 5=ID_MESSAGE_MQTT_RTK_CF_UA, ++
  • 6=ID_MESSAGE_NTRIP_CLIENT_CF_UA,  ++
  • 7=ID_MESSAGE_NTRIP_MASTER_CF_UA,  ++
  • 8=ID_MESSAGE_WIFI_TCP_CF_UA,  ++
  • 9=ID_MESSAGE_WIFI_UDP_CF_UA,  ++
  • 10=ID_MESSAGE_UART_BRIDGE_ENCODE_CF_UA,  —
  • 11=ID_MESSAGE_BLUETOOTH_BRIDGE_CF_UA,  ++
  • 12=ID_MESSAGE_DISPLAY_VIEWER_CF_UA,  ++
  • 13=ID_MESSAGE_EVENT_LOG_CF_UA,  ++
  • 14=ID_MESSAGE_SIMPLE_DEBUG_CF_UA  , ++
  • 15 =ID_MESSAGE_NMEA_LOGGER_CF_UA ,++

(with ++ is supported , — is non support)

FLAG_ENCODE : Flag indicating whether the message content is encrypted or not.

  • 0=NO_ENCODE_MESSAGE_CF_UA, //The message is not encrypted
  • 1=ENCODE_MESSAGE_CF_UA // The message is encrypted

PUBLIC_KEY :Key to decoding the message content if it is encrypted

 STATE_MESSAGE: The flag emphasizes the content of the message.

  • 0=STATE_MESSAGE_FINE_CF_UA : Tin nhắn bình thường
  • 1=STATE_MESSAGE_WARNING_CF_UA, : The message carries an error warning from ESPrtk

* LENGTH_MESSAGE : message length (number of bytes) with 2 bytes, (high byte in front of low byte).

* MESSAGE : Main message content

* Checksum : Check message integrity. Includes 4 bytes and is the result of a 32 bit hash function with the algorithm below:

Deploy in C:

void calculate_hash_32bit ( uint8_t data_[], uint32_t length_, uint8_t *hash_4_byte){

uint32_t hash_CF_UA = 0;
for(uint32_t i=0; i< length_ ; i++){
hash_CF_UA = ((hash_CF_UA<<5)-hash_CF_UA)+data_[i];
hash_CF_UA = hash_CF_UA & hash_CF_UA; // Convert to 32bit integer
}

for(uint8_t i=0; i<4; i++){
*(hash_4_byte +i)=(uint8_t)((hash_CF_UA >> (i*8))& 255);
}
}

* Checksum partition:  [ TYPE_MESSAGE + ID_MESSAGE + FLAG_ENCODE + PUBLIC_KEY + STATE_MESSAGE +LENGTH_MESSAGE +MESSAGE ]
* <CR><LF> : 2 bytes ending message frame.

<CR> : “Carriage return”  or ‘r’ or ‘0x0D in hex’ (13 in decimal) 

<LF> : “Line Feed” or ‘n’ or ‘0x0A in hex ‘ (10 in decimal)   

Encrypt the content of the message.

Let’s look back at the full message frame:

* HEADER + TYPE_MESSAGE + ID_MESSAGE + FLAG_ENCODE + PUBLIC_KEY + STATE_MESSAGE + LENGTH_MESSAGE + MESSAGE + Checksum + <CR> <LF>

If the user allows to encrypt the output message.
Suppose <MESSAGE> = <abc! Def!> Then after coding it will be <MESSAGE> = <hg5c_960>.
now, in the message frame, the FLAG_ENCODE is set = 1 with the 16-byte decryption key.

Encryption method:

This is a type of Symmetric-key algorithm . Using character shifting method (commonly known as Vigenère cipher) with displacement created by pseudo-random number generation function. The random function initialized by a seed K is a combination of A-B key pair.

See the algorithm implemented in C language for arduino below.

Encryption process:

  • Step 1: Generate random A key. Random seed K = f (A, B).
  • Step 2: Move (increase value) the characters with the displacement is the value taken continuously from the pseudo-random function in the range of [0,110].
    • For example:
    • Text_in [] = {‘a’, ‘b’, ‘c’, …..};
    • Radom (K) [] = {1,2,3, ….};
    • Text_out = {‘a’ + 1, ‘b’ + 2, ‘c’ + 3, ….} = {‘b’, ‘d’, ‘f’, …..}
  • Step 3: Send encrypted message with KEY A.

Decoding process:

  • Step 1: Receive KEY A. Random seed K = f (A, B).
  • Step 2: Move (reduce value) the characters with the displacement is the value taken sequentially from the pseudo-random function.
    • For example:
    • Text_in [] = {‘b’, ‘d’, ‘f’, …..};
    • Radom (K) [] = {1,2,3, ….};
    • Text_out = {‘b’-1,’ d’-2, ‘f’-3, ….} = {‘ a ‘,’ b ‘,’ c ‘, …..}

Before encoding and decoding, both HOST and ESPrtk must be provided with the same KEY B and call it Private KEY. Key A is sent called Public KEY. (Note that these two names are not the same as names in asymmetric cryptography)

Security :

This is a simple and easy-to-understand encryption format. Safety depends on the length of the A-B key pair and the quality of the entropy source used for encryption. It is not really strong and safe enough to be trusted but enough to hide communication messages between HOST and ESPrtk from prying eyes. We will change the encryption algorithm (even the communication framework) with a higher level of security in subsequent updates.

Process on HOST to send a message frame to query / configure data.

  • Step 1: Before sending a message for query or configure, HOST will send a message with TYPE_MESSAGE = 1, if ESPrtk responds to a message with TYPE_MESSAGE = 1, HOST enters step 2, otherwise HOST will report an error, Try to shake hands and go back to step 1.
  • Step 2: Send the main message, wait for the response from ESPrtk.
  • Step 3: If ESPrtk responds with TYPE_MESSAGE and ID_Message similar to the main message sent by HOST, this means that the message from HOST has been sent successfully.
  • Step 4: HOST relies on STATE_MESSAGE flag to identify query status (or configuration).
    • If STATE_MESSAGE = 0, ESPrtk accepts the message content from HOST.
    •  If STATE_MESSAGE = 1, ESPrtk does not accept the message content from HOST, (this is an error from HOST when it sends ESPrtk a message with invalid, misspelled, wrong structure, or simply ESPrtk does not support that message from HOST.)
  • Step 5: HOST find the main content of the message and filter out the necessary values. The filtered values ​​can be data fields, notifications or error messages in the form of text …

HOST configure ESPrtk.

The main message has the format:

  • HEADER =06, 05, 00, 01, 08, 01.
  • TYPE_MESSAGE = 5 (TYPE_MG_configure_CF_UA),
  • ID_MESSAGE : = ID_CONFIGURE 
  • FLAG_ENCODE : (option on HOST)
  • PUBLIC_KEY = <16 byte >
  • STATE_MESSAGE = 0 (STATE_MESSAGE_FINE_CF_UA) 
  • LENGTH_MESSAGE=<Highbyte>,<Lowbyte> .
  • MESSAGE : <name_profile>+’!’ + <password_profile>+’!’  + <Data configure 1> +’!’ + + <Data configure 2> +’!’ + ……+ <Data configure n> +’!’ .
  • Checksum=<Byte3>, <Byte2>, <Byte1>, <Byte0>.
  • <CR><LF>=0D, 0A.

Message feedback from ESPrtk has form A: Successful configuration.

  • HEADER =06, 05, 00, 01, 08, 01.
  • TYPE_MESSAGE = 5 (TYPE_MG_configure_CF_UA),
  • ID_MESSAGE : = ID_CONFIGURE
  • FLAG_ENCODE : (option on ESPrtk)
  • PUBLIC_KEY = <16 byte >
  • STATE_MESSAGE = 0 (STATE_MESSAGE_FINE_CF_UA) 
  • LENGTH_MESSAGE=<Highbyte>,<Lowbyte> .
  • MESSAGE : <Text with notice as successful configuration>
  • Checksum=<Byte3>, <Byte2>, <Byte1>, <Byte0>.
  • <CR><LF>=0D, 0A.

The reply message from ESPrtk has the form B: Configuration failed.

  • HEADER =06, 05, 00, 01, 08, 01.
  • TYPE_MESSAGE = 5 (TYPE_MG_configure_CF_UA),
  • ID_MESSAGE : =ID_CONFIGURE
  • FLAG_ENCODE : (option on ESPrtk)
  • PUBLIC_KEY = <16 byte >
  • STATE_MESSAGE = 1 (STATE_MESSAGE_WARNING_CF_UA) 
  • LENGTH_MESSAGE=<Highbyte>,<Lowbyte> .
  • MESSAGE : <Text with notice as fail configuration >
  • Checksum=<Byte3>, <Byte2>, <Byte1>, <Byte0>.
  • <CR><LF>=0D, 0A.

HOST query ESPrtk.

The main message has the format:

  • HEADER =06, 05, 00, 01, 08, 01.
  • TYPE_MESSAGE = 4 (TYPE_MG_query_CF_UA),
  • ID_MESSAGE : = ID_QUERY 
  • FLAG_ENCODE : (option on HOST)
  • PUBLIC_KEY = <16 byte >
  • STATE_MESSAGE = 0 (STATE_MESSAGE_FINE_CF_UA) 
  • LENGTH_MESSAGE=<Highbyte>,<Lowbyte> .
  • MESSAGE : <name_profile>+’!’ + <password_profile>+’!’ .
  • Checksum=<Byte3>, <Byte2>, <Byte1>, <Byte0>.
  • <CR><LF>=0D, 0A.

The reply message from ESPrtk comes in the form of A: Successful query.

  • HEADER =06, 05, 00, 01, 08, 01.
  • TYPE_MESSAGE = 4 (TYPE_MG_query_CF_UA),
  • ID_MESSAGE : =ID_QUERY 
  • FLAG_ENCODE : (option on ESPrtk)
  • PUBLIC_KEY = <16 byte >
  • STATE_MESSAGE = 0 (STATE_MESSAGE_FINE_CF_UA) 
  • LENGTH_MESSAGE=<Highbyte>,<Lowbyte> .
  • MESSAGE : <Data Query 1>+’!’ + <Data Query 2>+’!’ + <Data Query3>+’!’ …… <Data Query n>+’!’.
  • Checksum=<Byte3>, <Byte2>, <Byte1>, <Byte0>.
  • <CR><LF>=0D, 0A.

The reply message from ESPrtk has the form B: Query failed (error).

  • HEADER =06, 05, 00, 01, 08, 01.
  • TYPE_MESSAGE = 4 (TYPE_MG_query_CF_UA),
  • ID_MESSAGE : =ID_QUERY 
  • FLAG_ENCODE : (option on ESPrtk)
  • PUBLIC_KEY = <16 byte >
  • STATE_MESSAGE = 1 (STATE_MESSAGE_WARNING_CF_UA) 
  • LENGTH_MESSAGE=<Highbyte>,<Lowbyte> .
  • MESSAGE : <Text with notice as invalid query>
  • Checksum=<Byte3>, <Byte2>, <Byte1>, <Byte0>.
  • <CR><LF>=0D, 0A.

Here are examples of frames that communicate with the username “admin”, the password is “abc123ABC”. FLAG_ENCODE = 0, This example is done on ESPrtk 2.6.0.

 Configure message for ACTION PLANNING :

Sorting request message :

<Name_profile>+’!’ + <Password_profile>+’!’ +<Baud uart0>+’!’ +<Baud uart1>+’!’ +<Baud uart2>+’!’ +<APL0>+’!’ +<APL1>+’!’ +<APL2>+’!’ +<APL3>+’!’ +<APL4>+’!’ +<APL5>+’!’+<TX-B>+’!’ +<RX-A>+’!’ .

  • Baud uart – Range : [0,3];
  • APLx- Range : [0,7];
  • TX-B-Range : [0,1];
  • RX-A-Range : [0,1];

 

Baud uart0 / Baud uart1/Baud uart2 : 

  • Baud uartX = 0 : Set baudrate uartX to 57600
  •   -(Baud uartX= 1 : Set baudrate uartX to 115200)
  •   -( Baud uartX= 2 : Set baudrate uartX to 230400)
  •   -(Baud uartX = 3 : Set baudrate uartX to 460800)

If    APL0  = 0 :

   (No action)

If    APL0  = 1 ( RTK/RTCM Online):

  •   APL1=0: Internet via Wifi connect.
  •     -(APL1=1: Internet via Bluetooth connect.)
  •     -(APL1=2: Internet via  Ethernet ENC28J60 connect.)
  •   APL2=0: MQTT Cloud :
    •   APL3=0:  RTK-BASE STATION :
      •     APL4=0: No encode RTCM.
      •        -(APL4= 1: encode RTCM.)
      •    APL5= 0: Publish RTCM.
      •       -(APL5= 1: Publish RTCM + Out Broker Status.)
      •       -(APL5= 2: Publish RTCM + Out NMEA from Client.)
    •   APL3=1:  RTK-ROVER :
      •     APL4=0:Receive RTCM.
      •       -(APL4= 1: Receive RTCM+ Send NMEA via Bluetooth.)
      •      -(APL4= 2: Receive RTCM+ Send NMEA Back to BaseStation.)
      •    APL5= 0: No encode NMEA.
      •        -(APL5= 1: encode NMEA.)
  •   APL2=1:NTRIP Cloud :
    • APL3 =0: RTK-BASE STATION:
      • APL4 =0: Publish RTCM.
    • APL3 =1: RTK-ROVER:
      • APL4 =0: Receive RTCM.
      •   -(APL4 =1: Receive RTCM + Send NMEA via Bluetooth.)
      •   -(APL4 =2: Receive RTCM +Send NMEA Back to SERVER .)
      •   -(APL4 =3: NTRIP UPDATE SOURCETABLE .)

If    APL0  = 2 ( RTK/RTCM Offline):         

  •  APL1= 0 : Wifi-TCP.
    • APL2 =0 : RTK-BASE STATION:
      • APL3 =0 :Publish RTCM.
      •   -(APL3 =1 Publish RTCM + Out NMEA from Client.)
    • APL2 =1 :RTK-ROVER:
      • APL3 =0 :Receive RTCM.
      •   -(APL3 =1 :Receive RTCM + Send NMEA via Bluetooth.)
      •   -(APL3 =2 :Receive RTCM + Send NMEA to Master.)
  • APL1= 0 : Wifi-UDP.
    • APL2 =0 : RTK-BASE STATION:
      • APL3 =0 :Publish RTCM + Out NMEA from Client.
    • APL2 =1 :RTK-ROVER:
      • APL3 =0 :Receive RTCM +Send NMEA to Master.
      •   -(APL3 =1 :Receive RTCM + Send NMEA via Bluetooth.)
      •   -(APL3 =2 :Receive RTCM +Send NMEA to Master.)

If    APL0  = 3 (DATA BRIDGE):

  • APL1  = 0: BLUETOOTH BRIDGE.
  •   -(APL1  = 1: UART BRIDGE.)

 

If    TX-B :

  • TX-B  = 0: Map TX-B port as TX-UART1 .
  • TX-B  = 1: Map TX-B port as TX-UART2.

If    RX-A:

  • RX-A  = 0: Map RX-A port as RX-UART1 .
  • RX-A  = 1: Map RX-A port as RX-UART2.

 

Example full frame configure for ACTION PLANNING :

HEADER =06, 05, 00, 01, 08, 01,
TYPE_MESSAGE =05,
ID_MESSAGE =03,
FLAG_ENCODE =00,
PUBLIC_KEY =00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
STATE_MESSAGE =00,
LENGTH_MESSAGE=00, 22,
(MESSAGE Text= admin!abc123ABC!1!1!0!1!0!1!1!2!0!1!0!)
MESSAGE =61, 64, 6D, 69, 6E, 21, 61, 62, 63, 31, 32, 33, 41, 42, 43, 21, 31, 21, 31, 21, 30, 21, 31, 21, 30, 21, 31, 21, 31, 21, 32, 21, 30, 21, 31, 21, 30, 21,
Checksum=?,?,?,?,
<CR><LF>=0D, 0A,

Feedback message for ACTION PLANNING from ESPrtk takes the form:

  • TYPE_MESSAGE = 04 
  • ID_MESSAGE = 03
  • FLAG_ENCODE : (option on ESPrtk)
  • PUBLIC_KEY : (option on ESPrtk)
  • STATE_MESSAGE = 00 :
    • MESSAGE  : < Text with notice as successful configuration>.
  • STATE_MESSAGE = 01:
    • MESSAGE  : < Text with notice as fail configuration>.

 Configure message for WIFI HOTSPOT :

Sorting request message :

<Name_profile>+’!’ + <Password_profile>+’!’ +<Number Wifi>+’!’ + <SSID0>+’!’ + <PASS0>+’!’+ <SSID1>+’!’ + <PASS1>+’!’+ <SSID2>+’!’ + <PASS2>+’!’.

  • Number Wifi -Range : [0,3];

Example full frame configure for WIFI HOTSPOT :

HEADER =06, 05, 00, 01, 08, 01,
TYPE_MESSAGE =05,
ID_MESSAGE =04,
FLAG_ENCODE =00,
PUBLIC_KEY =00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
STATE_MESSAGE =00,
LENGTH_MESSAGE=00, 3C,
(MESSAGE Text= admin!abc123ABC!2!My router 1!0123456!My router 2!0123456!!!)
MESSAGE =61, 64, 6D, 69, 6E, 21, 61, 62, 63, 31, 32, 33, 41, 42, 43, 21, 32, 21, 4D, 79, 20, 72, 6F, 75, 74, 65, 72, 20, 31, 21, 30, 31, 32, 33, 34, 35, 36, 21, 4D, 79, 20, 72, 6F, 75, 74, 65, 72, 20, 32, 21, 30, 31, 32, 33, 34, 35, 36, 21, 21, 21,
Checksum=EC, 87, 79, 55,
<CR><LF>=0D, 0A,

Feedback message for WIFI HOTSPOT from ESPrtk takes the form:

  • TYPE_MESSAGE = 04 
  • ID_MESSAGE = 04
  • FLAG_ENCODE : (option on ESPrtk)
  • PUBLIC_KEY : (option on ESPrtk)
  • STATE_MESSAGE = 00 :
    • MESSAGE  : < Text with notice as successful configuration>.
  • STATE_MESSAGE = 01:
    • MESSAGE  : < Text with notice as fail configuration>.

 Configure message for MQTT RTK :

Sorting request message :

<Name_profile>+’!’ + <Password_profile>+’!’ + <Topic_RTCM>+’!’ + <Topic_NMEA>+’!’ + <IP_Server>+’!’ + <Port_Server>+’!’ + <UsersName_mqtt>+’!’ + <Password_mqtt>+’!’ + <Client_id>+’!’ + <key_encode>+’!’ .

  • Port_Server -Range : [0, 65535];

Example full frame configure for MQTT RTK :

HEADER =06, 05, 00, 01, 08, 01,
TYPE_MESSAGE =05,
ID_MESSAGE =05,
FLAG_ENCODE =00,
PUBLIC_KEY =00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
STATE_MESSAGE =00,
LENGTH_MESSAGE=00, 56,
(MESSAGE Text= admin!abc123ABC!myRTCM!myNMEA!mqttcloud.com!28421!my_name!my_pass!my_id_12!my_KEY_013!)
MESSAGE =61, 64, 6D, 69, 6E, 21, 61, 62, 63, 31, 32, 33, 41, 42, 43, 21, 6D, 79, 52, 54, 43, 4D, 21, 6D, 79, 4E, 4D, 45, 41, 21, 6D, 71, 74, 74, 63, 6C, 6F, 75, 64, 2E, 63, 6F, 6D, 21, 32, 38, 34, 32, 31, 21, 6D, 79, 5F, 6E, 61, 6D, 65, 21, 6D, 79, 5F, 70, 61, 73, 73, 21, 6D, 79, 5F, 69, 64, 5F, 31, 32, 21, 6D, 79, 5F, 4B, 45, 59, 5F, 30, 31, 33, 21,
Checksum=6C, E6, 05, 92,
<CR><LF>=0D, 0A,

Feedback message for MQTT RTK from ESPrtk takes the form:

  • TYPE_MESSAGE = 04 
  • ID_MESSAGE = 05
  • FLAG_ENCODE : (option on ESPrtk)
  • PUBLIC_KEY : (option on ESPrtk)
  • STATE_MESSAGE = 00 :
    • MESSAGE  : < Text with notice as successful configuration>.
  • STATE_MESSAGE = 01:
    • MESSAGE  : < Text with notice as fail configuration>.

 Configure message for NTRIP CLIENT :

Sorting request message :

<Name_profile>+’!’ + <Password_profile>+’!’ + <IP_server>+’!’  + <Port_server>+’!’ + <Mountpoint>+’!’  + <Check_spelling_mountpoint>+’!’  + <UsersName_ntrip>+’!’  + <Password_ntrip>+’!’ ‘ + <Check_spelling_lat_long>+’!’  + <Latitude>+’!’ + <Longitude>+’!’ + <cycle_update_nmea>+’!’ + <Need_check_mountpoint_exist>+’!’ .

  • Port_Server -Range : [0, 65535];
  • Check_spelling_mountpoint -Range : [0, 1];
  • Check_spelling_lat_long -Range : [0, 1];
  • Latitude -Range : [-90.000000, 90.000000];
  • Longitude -Range : [-180.0000000, 180.000000];
  • Cycle_update_nmea -Range : [0, 10000];
  • Need_check_mountpoint_exist -Range : [0, 1];
  • By default, <Check_spelling_mountpoint> and <Check_spelling_lat_long> need set is 1.

Example full frame configure for NTRIP CLIENT :

HEADER =06, 05, 00, 01, 08, 01,
TYPE_MESSAGE =05,
ID_MESSAGE =06,
FLAG_ENCODE =00,
PUBLIC_KEY =00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
STATE_MESSAGE =00,
LENGTH_MESSAGE=00, 68,
(MESSAGE Text= admin!abc123ABC!rtk2go.com!2102!MY_Mountpoint!1!my_login_name!,my_pass_login!1!23.12345!106.433244!10!1!)
MESSAGE =61, 64, 6D, 69, 6E, 21, 61, 62, 63, 31, 32, 33, 41, 42, 43, 21, 72, 74, 6B, 32, 67, 6F, 2E, 63, 6F, 6D, 21, 32, 31, 30, 32, 21, 4D, 59, 5F, 4D, 6F, 75, 6E, 74, 70, 6F, 69, 6E, 74, 21, 31, 21, 6D, 79, 5F, 6C, 6F, 67, 69, 6E, 5F, 6E, 61, 6D, 65, 21, 2C, 6D, 79, 5F, 70, 61, 73, 73, 5F, 6C, 6F, 67, 69, 6E, 21, 31, 21, 32, 33, 2E, 31, 32, 33, 34, 35, 21, 31, 30, 36, 2E, 34, 33, 33, 32, 34, 34, 21, 31, 30, 21, 31, 21,
Checksum=13, 79, 3F, AA,
<CR><LF>=0D, 0A,

Feedback message for NTRIP CLIENT from ESPrtk takes the form:

  • TYPE_MESSAGE = 04 
  • ID_MESSAGE = 06
  • FLAG_ENCODE : (option on ESPrtk)
  • PUBLIC_KEY : (option on ESPrtk)
  • STATE_MESSAGE = 00 :
    • MESSAGE  : < Text with notice as successful configuration>.
  • STATE_MESSAGE = 01:
    • MESSAGE  : < Text with notice as fail configuration>.

 Configure message for NTRIP MASTER :

Sorting request message :

<Name_profile>+’!’ + <Password_profile>+’!’ + <IP_server>+’!’ ‘ + <Port_server>+’!’ ‘ + <Mountpoint>+’!’  + <Password_ntrip>+’!’  + <Need_check_mountpoint_exist>+’!’ <Enable Use Custom ENTRY>+’!’  + <City>+’!’  + <Data Format ID>+’!’  + <Message type detail>+’!’  + <Carrier Phase>+’!’  + <Beidou>+’!’  + <GPS>+’!’  + <Glonass>+’!’  + <Galileo>+’!’  + <QZSS>+’!’  + <IRNSS>+’!’  + <SBAS>+’!’  + <Navic>+’!’  + <GNSS>+’!’  + <GFZ>+’!’  + <Network>+’!’  + <Country (max 3 digit)>+’!’  + <Latitude>+’!’  + <Longitude>+’!’  + <Request GGA>+’!’  + <Solution>+’!’  + <Compression/Encryption>+’!’  + <Authentication>+’!’  + <User Fee>+’!’  + <Speed (Bitrate)>+’!’  + <Misc>+’!’  .

 

 

  • Port_Server -Range : [0, 65535];
  • Need_check_mountpoint_exist -Range : [0, 1];
  •  
  • Enable Use Custom ENTRY : [0, 1];
  • Data Format ID :
    • Data Format ID =  0 : “Auto Detect”
    • Data Format ID =  1:  “ADV”
    • Data Format ID =  2:  “AOA”
    • Data Format ID =  3:  “BINEX”
    • Data Format ID =  4:  “DGPS”
    • Data Format ID =  5:  “RAW”
    • Data Format ID =  6:  “RTCM 2.0”
    • Data Format ID =  7:  “RTCM 2.1”
    • Data Format ID =  8:  “RTCM 2.2”
    • Data Format ID =  9:  “RTCM 2.3 “
    • Data Format ID =  10:  “RTCM 2.x”
    • Data Format ID =  11:  “RTCM 3.0”
    • Data Format ID =  12:  “RTCM 3.1”
    • Data Format ID =  13:  “RTCM 3.2”
    • Data Format ID =  14:  “RTCM 3.3”
    • Data Format ID =  15:  “RTCM 3.4”
    • Data Format ID =  16:  “RTCM 3.5”
    • Data Format ID =  17:  “RTCM 3.x”
    • Data Format ID =  18:  “UBlox RAW”
    • Data Format ID =  19:  “Hermisphere Eclipse”
    • Data Format ID =  20:  “Skytraq Navspark RAW”
    • Data Format ID =  21:  “NMEA”
    • Data Format ID =  22:  “NCT”
    • Data Format ID =  23:  “Novatel OEM”
    • Data Format ID =  24:  “SAE J2735 DSRC”
    • Data Format ID =  25:  “Trimble RMC”
    • Data Format ID =  26:  “Trimble RMC+”
    • Data Format ID =  27:  “Trimble RMCx”
    • Data Format ID =  28:  “Trimble sRMCx”
    • Data Format ID =  29:  “Trimble R17”
    • Data Format ID =  30:  “Trimble R27”
    • Data Format ID =  31:  “Septentrio SBF”
    • Data Format ID =  32:  “SAPOS”
    • Data Format ID =  33:  “RINEX”
    • Data Format ID =  34:  “SP3”
    • Data Format ID =  35:  “RTCA”
    • Data Format ID =  36:  “FKP”
    • Data Format ID =  37:  “COP”
    • Data Format ID =  38:  “LB2”
    • Data Format ID =  39:  “ZERO”
    • Data Format ID =  40:  “POS_ASCII”
    • Data Format ID =  41:  “JDNCT”
    • Data Format ID =  42:  “SP3-ASC”
    • Data Format ID =  43:  “UPD-ASC”
    • Data Format ID =  44:  “UPD-RTCM”
    • Data Format ID =  45:  “ION-ASC”,
    • Data Format ID =  46:  “Other Format”
  • Carrier Phase :
    • Carrier Phase = 0: DGPS (no RTK)
    • Carrier Phase = 1: L1   (RTK)
    • Carrier Phase = 2 : L1+ L2 (RTK)
    • Carrier Phase = 3 : ???
    • Carrier Phase = 4 : ???
  • Beidou : [0,1] 
  • GPS : [0,1]
  • Glonass : [0,1]
  • Galileo : [0,1]
  • QZSS : [0,1]
  • IRNSS: [0,1]
  • SBAS : [0,1]
  • Navic: [0,1]
  • GNSS : [0,1]
  • GFZ : [0,1]
  • Latitude -Range : [-90.000000, 90.000000];
  • Longitude -Range : [-180.0000000, 180.000000];
  • Request GGA : [0,1]
  • Solution :
    • Solution =0 : Single reference station
    • Solution = 1: Networked reference stations
  • Compression :
    • Compression = 0  : none
    • Compression = 1 : yes
  • Authentication :
    • Authentication = 0 : None
    • Authentication = 1 : Basic
    • Authentication = 2 : Digest
  • User Fee :
    • User Fee = 0: No user fee
    • User Fee = 1: Usage is charged
  • Speed : [0,10000000000]

 

Example full frame configure for NTRIP MASTER :

HEADER =06, 05, 00, 01, 08, 01,
TYPE_MESSAGE =05,
ID_MESSAGE =07,
FLAG_ENCODE =00,
PUBLIC_KEY =00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
STATE_MESSAGE =00,
LENGTH_MESSAGE=00, 39,

(MESSAGE Text= admin!abc123ABC!rtk2go.com!2101!my_mount!BETATEST!0! 1!My_city!0!1005(1),1007(1),1027(1)!1!1!1!1!0!0!0!0!0!0!0!my_network!USA!37.38099049!-121.94101104!1!0!0!0!0!8400!My_ESPrtk!)
MESSAGE = 
Checksum=,
<CR><LF>=0D, 0A,

 

Feedback message for NTRIP MASTER from ESPrtk takes the form:

  • TYPE_MESSAGE = 04 
  • ID_MESSAGE = 07
  • FLAG_ENCODE : (option on ESPrtk)
  • PUBLIC_KEY : (option on ESPrtk)
  • STATE_MESSAGE = 00 :
    • MESSAGE  : < Text with notice as successful configuration>.
  • STATE_MESSAGE = 01:
    • MESSAGE  : < Text with notice as fail configuration>.

 Configure message for WIFI TCP :

Sorting request message :

<Name_profile>+’!’ + <Password_profile>+’!’ +<Password_wifi_TCP>+’!’ +<Device_ID_Master>+’!’ +<Number_rover>+’!’ +<ID_Rover_1>+’!’ +<ID_Rover_2>+’!’ +<ID_Rover_3>+’!’ +<ID_Rover_4>+’!’ +<ID_Rover_5>+’!’ +<ID_Rover_6>+’!’ +<ID_Rover_7>+’!’ +<ID_Rover_8>+’!’ +<ID_Rover_9>+’!’ +<ID_Rover_10>+’!’.

  • Number_rover – Range : [0,10];

Example full frame configure for WIFI TCP :

HEADER =06, 05, 00, 01, 08, 01,
TYPE_MESSAGE =05,
ID_MESSAGE =08,
FLAG_ENCODE =00,
PUBLIC_KEY =00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
STATE_MESSAGE =00,
LENGTH_MESSAGE=00, 3D,
(MESSAGE Text= admin!abc123ABC!abd-123-DFG!D-u_U!3!Deu_U!DFu_t!Dou_U!!!!!!!!)
MESSAGE =61, 64, 6D, 69, 6E, 21, 61, 62, 63, 31, 32, 33, 41, 42, 43, 21, 61, 62, 64, 2D, 31, 32, 33, 2D, 44, 46, 47, 21, 44, 2D, 75, 5F, 55, 21, 33, 21, 44, 65, 75, 5F, 55, 21, 44, 46, 75, 5F, 74, 21, 44, 6F, 75, 5F, 55, 21, 21, 21, 21, 21, 21, 21, 21,
Checksum=81, 75, CC, 7C,
<CR><LF>=0D, 0A,

Feedback message for WIFI TCP from ESPrtk takes the form:

  • TYPE_MESSAGE = 04 
  • ID_MESSAGE = 08
  • FLAG_ENCODE : (option on ESPrtk)
  • PUBLIC_KEY : (option on ESPrtk)
  • STATE_MESSAGE = 00 :
    • MESSAGE  : < Text with notice as successful configuration>.
  • STATE_MESSAGE = 01:
    • MESSAGE  : < Text with notice as fail configuration>.

 Configure message for WIFI UDP :

Sorting request message :

<Name_profile>+’!’ + <Password_profile>+’!’ +<Password_wifi_UDP>+’!’.

Example full frame configure for WIFI UDP :

HEADER =06, 05, 00, 01, 08, 01,
TYPE_MESSAGE =05,
ID_MESSAGE =09,
FLAG_ENCODE =00,
PUBLIC_KEY =00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
STATE_MESSAGE =00,
LENGTH_MESSAGE=00, 1B,
(MESSAGE Text= admin!abc123ABC!hgf-55-GHF!)
MESSAGE =61, 64, 6D, 69, 6E, 21, 61, 62, 63, 31, 32, 33, 41, 42, 43, 21, 68, 67, 66, 2D, 35, 35, 2D, 47, 48, 46, 21,
Checksum=23, 28, 48, E9,
<CR><LF>=0D, 0A,

Feedback message for WIFI UDP from ESPrtk takes the form:

  • TYPE_MESSAGE = 04 
  • ID_MESSAGE = 09
  • FLAG_ENCODE : (option on ESPrtk)
  • PUBLIC_KEY : (option on ESPrtk)
  • STATE_MESSAGE = 00 :
    • MESSAGE  : < Text with notice as successful configuration>.
  • STATE_MESSAGE = 01:
    • MESSAGE  : < Text with notice as fail configuration>.

 Configure message for BLUETOOTH BRIDGE :

Sorting request message :

<Name_profile>+’!’ + <Password_profile>+’!’ +<Name Bluetooth Bridge>+’!’.

Example full frame configure for BLUETOOTH BRIDGE :

HEADER =06, 05, 00, 01, 08, 01,
TYPE_MESSAGE =05,
ID_MESSAGE =0B,
FLAG_ENCODE =00,
PUBLIC_KEY =00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
STATE_MESSAGE =00,
LENGTH_MESSAGE=00, 1A,
(MESSAGE Text= admin!abc123ABC!MY_BLT_00!)
MESSAGE =61, 64, 6D, 69, 6E, 21, 61, 62, 63, 31, 32, 33, 41, 42, 43, 21, 4D, 59, 5F, 42, 4C, 54, 5F, 30, 30, 21,
Checksum=7A, 5D, DD, 2F,
<CR><LF>=0D, 0A,

Feedback message for BLUETOOTH BRIDGE from ESPrtk takes the form:

  • TYPE_MESSAGE = 04 
  • ID_MESSAGE = 0B
  • FLAG_ENCODE : (option on ESPrtk)
  • PUBLIC_KEY : (option on ESPrtk)
  • STATE_MESSAGE = 00 :
    • MESSAGE  : < Text with notice as successful configuration>.
  • STATE_MESSAGE = 01:
    • MESSAGE  : < Text with notice as fail configuration>.

 Configure message for DISPLAY VIEWER :

Sorting request message :

<Name_profile>+’!’ + <Password_profile>+’!’ +<Type Display>+’!’ + Detail set>+’!’.

  • Type Display – Range : [0,3];
  • Detail set – Range : [0,10];

 

Type Display = 0 : Neopixel :

  •     Detail set =0 : BRIGHTNESS 20.
  •     Detail set =1 : BRIGHTNESS 50.
  •     Detail set =2 : BRIGHTNESS 100.
  •     Detail set =3 : BRIGHTNESS 150.
  •     Detail set =4 : BRIGHTNESS 200.
  •     Detail set =5 : BRIGHTNESS 250.

 

Type Display = 1: Nokia 5110 (64×48) LCD :

  • Detail set =0 : CONTRAST 30.
  • Detail set =1 : CONTRAST 40.
  • Detail set =2 : CONTRAST 45.
  • Detail set =3 : CONTRAST 50.
  • Detail set =4 : CONTRAST 55.
  • Detail set =5 : CONTRAST 60.
  • Detail set =6 : CONTRAST 70.
  • Detail set =7 : CONTRAST 80.
  • Detail set =8 : CONTRAST 90.

 

Type Display = 2:  OLED SSD1306 (128×64) 0.96 inch Display:

  •     Detail set =0 : Normal Screen Display.
  •     Detail set =1 : Flip Screen Display.

 

Example full frame configure for DISPLAY VIEWER :

HEADER =06, 05, 00, 01, 08, 01,
TYPE_MESSAGE =05,
ID_MESSAGE =0C,
FLAG_ENCODE =00,
PUBLIC_KEY =00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
STATE_MESSAGE =00,
LENGTH_MESSAGE=00, 14,
(MESSAGE Text= admin!abc123ABC!0!2!)
MESSAGE =61, 64, 6D, 69, 6E, 21, 61, 62, 63, 31, 32, 33, 41, 42, 43, 21, 30, 21, 32, 21,
Checksum=FC, FD, 77, 31,
<CR><LF>=0D, 0A,

Feedback message for DISPLAY VIEWER from ESPrtk takes the form:

  • TYPE_MESSAGE = 04 
  • ID_MESSAGE = 0C
  • FLAG_ENCODE : (option on ESPrtk)
  • PUBLIC_KEY : (option on ESPrtk)
  • STATE_MESSAGE = 00 :
    • MESSAGE  : < Text with notice as successful configuration>.
  • STATE_MESSAGE = 01:
    • MESSAGE  : < Text with notice as fail configuration>.

 Configure message for EVENT LOG :

Sorting request message :

<Name_profile>+’!’ + <Password_profile>+’!’ +<Size_Event_Log_file>+’!’ +<Record_in_action>+’!’+<Record_error>+’!’+<Record_ac_planning>+’!’+<Record_wifi_scan>+’!’.

  • Size_Event_Log_file –  Range : [0,7];
  • Record_in_action –  Range : [0,1];
  • Record_error –  Range : [0,1];
  • Record_ac_planning –  Range : [0,1];
  • Record_wifi_scan –  Range : [0,1];

Size_Event_Log_file :

  • =0: 5000Byte.    
  • =1: 10000Byte.
  • =2: 15000Byte.   
  • =3: 20000Byte.
  • =4: 25000Byte.   
  • =5: 30000Byte.
  • =6: 35000Byte.  
  • =7 :40000Byte. 

Example full frame configure for EVENT LOG :

HEADER =06, 05, 00, 01, 08, 01,
TYPE_MESSAGE =05,
ID_MESSAGE =0D,
FLAG_ENCODE =00,
PUBLIC_KEY =00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
STATE_MESSAGE =00,
LENGTH_MESSAGE=00, 1A,
(MESSAGE Text= admin!abc123ABC!2!0!0!0!0!)
MESSAGE =61, 64, 6D, 69, 6E, 21, 61, 62, 63, 31, 32, 33, 41, 42, 43, 21, 32, 21, 30, 21, 30, 21, 30, 21, 30, 21,
Checksum=56, 9D, 69, D1,
<CR><LF>=0D, 0A,

Feedback message for EVENT LOG from ESPrtk takes the form:

  • TYPE_MESSAGE = 04 
  • ID_MESSAGE = 0D
  • FLAG_ENCODE : (option on ESPrtk)
  • PUBLIC_KEY : (option on ESPrtk)
  • STATE_MESSAGE = 00 :
    • MESSAGE  : < Text with notice as successful configuration>.
  • STATE_MESSAGE = 01:
    • MESSAGE  : < Text with notice as fail configuration>.
    •  

 Configure message for NMEA Logger :

Sorting request message :

<Name_profile>+’!’ + <Password_profile>+’!'<Enable NMEA Logger>+’!’ +<File’s Name>+’!’ +<File format>+’!’ +<Type write>+’!’ +<Update Cycle>+’!’ +<Max NMEA save in an Update Cycle>+’!’ +<Enable type NMEA (32 char )>+’!’  .

 

  • Enable NMEA Logger : [0,1]
  • File format :
    • File format= 0 : .log 
    • File format= 1 : .txt
    • File format= 2 : .nmea
    • File format= 3 : .nme
    • File format= 4 : .gps
    • File format= 5 : .ubx
    • File format= 6 : .skt
    • File format= 7 : .data
    • File format= 8 : .dat
    • File format= 9 : .bin
  • Type write :
    • Type write = 0 : Append to old file
    • Type write = 1 : Create and write to new file
  • Update Cycle : [ 0 ,100000000]      (in Second ) 
  • Max NMEA save in an Update Cycle : [0,65000]
  • Enable type NMEA ( 32 char as “0” or “1”) :
    • <GGA>+ <RMC>+ <GSA>+ <GSV>+ <VTG>+ <GLL> + <ZDA>+ <GNS>+ <GST>+ <DTM>+ <GBS>+ <GRS>+ <AAM> + <ALM>+ <APA>+ <APB>+ <BOD>+ <BWC>+ <MSK>+ <MSS>+ <RMA>+ <RMB>+ <RTE>+ <TRF>+ <STN>+ <VBW>+ <WCV>+ <WPL>+ <XTC>+ <XTE>+ <ZTG>+ <Other types>
  •  

Example full frame configure for NMEA Logger :

HEADER =06, 05, 00, 01, 08, 01,
TYPE_MESSAGE =05,
ID_MESSAGE =0F, 
FLAG_ENCODE =00,
PUBLIC_KEY =00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
STATE_MESSAGE =00,
LENGTH_MESSAGE=00, 68,
(MESSAGE Text= admin!abc123ABC!1!2!0!60!10!10000000000000000000000000000000)

Checksum=,
<CR><LF>=0D, 0A,

Feedback message for NMEA Logger from ESPrtk takes the form:

  • TYPE_MESSAGE = 04 
  • ID_MESSAGE = 0F
  • FLAG_ENCODE : (option on ESPrtk)
  • PUBLIC_KEY : (option on ESPrtk)
  • STATE_MESSAGE = 00 :
    • MESSAGE  : < Text with notice as successful configuration>.
  • STATE_MESSAGE = 01:
    • MESSAGE  : < Text with notice as fail configuration>.

HOST query for Action Planning.

Sorting request message :

<Name_profile>+’!’ + <Password_profile>+’!’ 

Example full frame query for ACTION PLANNING :

HEADER =06, 05, 00, 01, 08, 01,
TYPE_MESSAGE =04,
ID_MESSAGE =03,
FLAG_ENCODE =00,
PUBLIC_KEY =00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
STATE_MESSAGE =00,
LENGTH_MESSAGE=00, 10,
(MESSAGE Text= admin!abc123ABC!)
MESSAGE =61, 64, 6D, 69, 6E, 21, 61, 62, 63, 31, 32, 33, 41, 42, 43, 21,
Checksum=F0, 93, 42, D2,
<CR><LF>=0D, 0A,

Feedback message for ACTION PLANNING from ESPrtk takes the form:

  • TYPE_MESSAGE = 04 
  • ID_MESSAGE = 03
  • FLAG_ENCODE : (option on ESPrtk)
  • PUBLIC_KEY : (option on ESPrtk)
  • STATE_MESSAGE = 00 :
    • MESSAGE : <Baud uart0>+’!’ +<Baud uart1>+’!’ +<Baud uart2>+’!’ +<APL0>+’!’ +<APL1>+’!’ +<APL2>+’!’ +<APL3>+’!’ +<APL4>+’!’ +<APL5>+’!’+<TXB>+’!’ +<RXA>+’!’ .
  • STATE_MESSAGE = 01 :
    • MESSAGE  : < Text with notice as invalid query>.
 

HOST query for WIFI HOTSPOT.

Sorting request message :

<Name_profile>+’!’ + <Password_profile>+’!’ 

Example full frame query for WIFI HOTSPOT :

HEADER =06, 05, 00, 01, 08, 01,
TYPE_MESSAGE =04,
ID_MESSAGE =04,
FLAG_ENCODE =00,
PUBLIC_KEY =00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
STATE_MESSAGE =00,
LENGTH_MESSAGE=00, 10,
(MESSAGE Text= admin!abc123ABC!)
MESSAGE =61, 64, 6D, 69, 6E, 21, 61, 62, 63, 31, 32, 33, 41, 42, 43, 21,
Checksum=71, 67, EA, E5,
<CR><LF>=0D, 0A,

Feedback message for WIFI HOTSPOT from ESPrtk takes the form:

  • TYPE_MESSAGE = 04 
  • ID_MESSAGE = 04
  • FLAG_ENCODE : (option on ESPrtk)
  • PUBLIC_KEY : (option on ESPrtk)
  • STATE_MESSAGE = 00 :
    • MESSAGE :  <Number Wifi>+’!’ + <SSID0>+’!’ + <PASS0>+’!’+ <SSID1>+’!’ + <PASS1>+’!’+ <SSID2>+’!’ + <PASS2>+’!’ .
  • STATE_MESSAGE = 01 :
    • MESSAGE  : < Text with notice as invalid query>.
 

HOST query for MQTT RTK.

Sorting request message :

<Name_profile>+’!’ + <Password_profile>+’!’ 

Example full frame query for MQTT RTK :

HEADER =06, 05, 00, 01, 08, 01,
TYPE_MESSAGE =04,
ID_MESSAGE =05,
FLAG_ENCODE =00,
PUBLIC_KEY =00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
STATE_MESSAGE =00,
LENGTH_MESSAGE=00, 10,
(MESSAGE Text= admin!abc123ABC!)
MESSAGE =61, 64, 6D, 69, 6E, 21, 61, 62, 63, 31, 32, 33, 41, 42, 43, 21,
Checksum=F2, 3A, 92, F9,
<CR><LF>=0D, 0A,

Feedback message for MQTT RTK  from ESPrtk takes the form:

  • TYPE_MESSAGE = 04 
  • ID_MESSAGE = 05
  • FLAG_ENCODE : (option on ESPrtk)
  • PUBLIC_KEY : (option on ESPrtk)
  • STATE_MESSAGE = 00 :
    • MESSAGE  : <Topic_RTCM>+’!’ + <Topic_NMEA>+’!’ + <IP_Server>+’!’ + <Port_Server>+’!’ + <UsersName_mqtt>+’!’ + <Password_mqtt>+’!’ + <Client_id>+’!’ + <key_encode>+’!’ .
  • STATE_MESSAGE = 01 :
    • MESSAGE  : < Text with notice as invalid query>.

HOST query for NTRIP CLIENT.

Sorting request message :

<Name_profile>+’!’ + <Password_profile>+’!’ 

Example full frame query for NTRIP CLIENT :

HEADER =06, 05, 00, 01, 08, 01,
TYPE_MESSAGE =04,
ID_MESSAGE =06,
FLAG_ENCODE =00,
PUBLIC_KEY =00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
STATE_MESSAGE =00,
LENGTH_MESSAGE=00, 10,
(MESSAGE Text= admin!abc123ABC!)
MESSAGE =61, 64, 6D, 69, 6E, 21, 61, 62, 63, 31, 32, 33, 41, 42, 43, 21,
Checksum=73, 0E, 3A, 0D,
<CR><LF>=0D, 0A,

Feedback message for NTRIP CLIENT from ESPrtk takes the form:

  • TYPE_MESSAGE = 04 
  • ID_MESSAGE = 06
  • FLAG_ENCODE : (option on ESPrtk)
  • PUBLIC_KEY : (option on ESPrtk)
  • STATE_MESSAGE = 00 :
    • MESSAGE  : <IP_server>+’!’  + <Port_server>+’!’ + <Mountpoint>+’!’   + <UsersName_ntrip>+’!’  + <Password_ntrip>+’!’ ‘  + <Latitude>+’!’ + <Longitude>+’!’ + <cycle_update_nmea>+’!’ + <Need_check_mountpoint_exist>+’!’ .
  • STATE_MESSAGE = 01 :
    • MESSAGE  : < Text with notice as invalid query>.

HOST query for NTRIP MASTER.

Sorting request message :

<Name_profile>+’!’ + <Password_profile>+’!’ 

Example full frame query for NTRIP MASTER :

HEADER =06, 05, 00, 01, 08, 01,
TYPE_MESSAGE =04,
ID_MESSAGE =07,
FLAG_ENCODE =00,
PUBLIC_KEY =00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
STATE_MESSAGE =00,
LENGTH_MESSAGE=00, 10,
(MESSAGE Text= admin!abc123ABC!)
MESSAGE =61, 64, 6D, 69, 6E, 21, 61, 62, 63, 31, 32, 33, 41, 42, 43, 21,
Checksum=F4, E1, E1, 20,
<CR><LF>=0D, 0A,

Feedback message for  NTRIP MASTER from ESPrtk takes the form:

  • TYPE_MESSAGE = 04 
  • ID_MESSAGE = 07
  • FLAG_ENCODE : (option on ESPrtk)
  • PUBLIC_KEY : (option on ESPrtk)
  • STATE_MESSAGE = 00 :
    • MESSAGE  : <IP_server>+’!’ ‘ + <Port_server>+’!’ ‘ + <Mountpoint>+’!’  + <Password_ntrip>+’!’  + <Need_check_mountpoint_exist>+’!’ <Enable Use Custom ENTRY>+’!’  + <City>+’!’  + <Data Format ID>+’!’  + <Message type detail>+’!’  + <Carrier Phase>+’!’  + <Beidou>+’!’  + <GPS>+’!’  + <Glonass>+’!’  + <Galileo>+’!’  + <QZSS>+’!’  + <IRNSS>+’!’  + <SBAS>+’!’  + <Navic>+’!’  + <GNSS>+’!’  + <GFZ>+’!’  + <Network>+’!’  + <Country (max 3 digit)>+’!’  + <Latitude>+’!’  + <Longitude>+’!’  + <Request GGA>+’!’  + <Solution>+’!’  + <Compression/Encryption>+’!’  + <Authentication>+’!’  + <User Fee>+’!’  + <Speed (Bitrate)>+’!’  + <Misc>+’!’
  • STATE_MESSAGE = 01 :
    • MESSAGE  : < Text with notice as invalid query>.

HOST query for WIFI TCP .

Sorting request message :

<Name_profile>+’!’ + <Password_profile>+’!’ 

Example full frame query for WIFI TCP :

HEADER =06, 05, 00, 01, 08, 01,
TYPE_MESSAGE =04,
ID_MESSAGE =08,
FLAG_ENCODE =00,
PUBLIC_KEY =00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
STATE_MESSAGE =00,
LENGTH_MESSAGE=00, 10,
(MESSAGE Text= admin!abc123ABC!)
MESSAGE =61, 64, 6D, 69, 6E, 21, 61, 62, 63, 31, 32, 33, 41, 42, 43, 21,
Checksum=75, B5, 89, 34,
<CR><LF>=0D, 0A,

Feedback message for WIFI TCP from ESPrtk takes the form:

  • TYPE_MESSAGE = 04 
  • ID_MESSAGE = 08
  • FLAG_ENCODE : (option on ESPrtk)
  • PUBLIC_KEY : (option on ESPrtk)
  • STATE_MESSAGE = 00 :
    • MESSAGE  :<Password_wifi_TCP>+’!’ +<Device_ID_Master>+’!’ +<Number_rover>+’!’ +<ID_Rover_1>+’!’ +<ID_Rover_2>+’!’ +<ID_Rover_3>+’!’ +<ID_Rover_4>+’!’ +<ID_Rover_5>+’!’ +<ID_Rover_6>+’!’ +<ID_Rover_7>+’!’ +<ID_Rover_8>+’!’ +<ID_Rover_9>+’!’ +<ID_Rover_10>+’!’.
  • STATE_MESSAGE = 01 :
    • MESSAGE  : < Text with notice as invalid query>.

HOST query for WIFI UDP.

Sorting request message :

<Name_profile>+’!’ + <Password_profile>+’!’ 

Example full frame query for WIFI UDP :

HEADER =06, 05, 00, 01, 08, 01,
TYPE_MESSAGE =04,
ID_MESSAGE =09,
FLAG_ENCODE =00,
PUBLIC_KEY =00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
STATE_MESSAGE =00,
LENGTH_MESSAGE=00, 10,
(MESSAGE Text= admin!abc123ABC!)
MESSAGE =61, 64, 6D, 69, 6E, 21, 61, 62, 63, 31, 32, 33, 41, 42, 43, 21,
Checksum=F6, 88, 31, 48,
<CR><LF>=0D, 0A,

Feedback message for WIFI UDP from ESPrtk takes the form:

  • TYPE_MESSAGE = 04 
  • ID_MESSAGE = 09
  • FLAG_ENCODE : (option on ESPrtk)
  • PUBLIC_KEY : (option on ESPrtk)
  • STATE_MESSAGE = 00 :
    • MESSAGE  : <Password_wifi_UDP>+’!’..
  • STATE_MESSAGE = 01 :
    • MESSAGE  : < Text with notice as invalid query>.

HOST query for BLUETOOTH BRIDGE.

Sorting request message :

<Name_profile>+’!’ + <Password_profile>+’!’ 

Example full frame query for BLUETOOTH BRIDGE :

HEADER =06, 05, 00, 01, 08, 01,
TYPE_MESSAGE =04,
ID_MESSAGE =0B,
FLAG_ENCODE =00,
PUBLIC_KEY =00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
STATE_MESSAGE =00,
LENGTH_MESSAGE=00, 10,
(MESSAGE Text= admin!abc123ABC!)
MESSAGE =61, 64, 6D, 69, 6E, 21, 61, 62, 63, 31, 32, 33, 41, 42, 43, 21,
Checksum=F8, 2F, 81, 6F,
<CR><LF>=0D, 0A,

Feedback message for BLUETOOTH BRIDGE from ESPrtk takes the form:

  • TYPE_MESSAGE = 04 
  • ID_MESSAGE = 0B
  • FLAG_ENCODE : (option on ESPrtk)
  • PUBLIC_KEY : (option on ESPrtk)
  • STATE_MESSAGE = 00 :
    • MESSAGE : <Name Bluetooth Bridge>+’!’. 
  • STATE_MESSAGE = 01 :
    • MESSAGE  : < Text with notice as invalid query>.

HOST query for DISPLAY VIEWER.

Sorting request message :

<Name_profile>+’!’ + <Password_profile>+’!’ 

Example full frame query for DISPLAY VIEWER :

  • HEADER =06, 05, 00, 01, 08, 01,
    TYPE_MESSAGE =04,
    ID_MESSAGE =0C,
    FLAG_ENCODE =00,
    PUBLIC_KEY =00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
    STATE_MESSAGE =00,
    LENGTH_MESSAGE=00, 10,
    (MESSAGE Text= admin!abc123ABC!)
    MESSAGE =61, 64, 6D, 69, 6E, 21, 61, 62, 63, 31, 32, 33, 41, 42, 43, 21,
    Checksum=79, 03, 29, 83,
    <CR><LF>=0D, 0A,

Feedback message for DISPLAY VIEWER from ESPrtk takes the form:

  • TYPE_MESSAGE = 04 
  • ID_MESSAGE = 0C
  • FLAG_ENCODE : (option on ESPrtk)
  • PUBLIC_KEY : (option on ESPrtk)
  • STATE_MESSAGE = 00 :
    • MESSAGE  : <Type Display>+’!’ + Detail set>+’!’.
  • STATE_MESSAGE = 01:
    • MESSAGE  : < Text with notice as invalid query>.

HOST query for EVENT LOG.

Sorting request message :

<Name_profile>+’!’ + <Password_profile>+’!’ 

Example full frame query for EVENT LOG :

  • HEADER =06, 05, 00, 01, 08, 01,
  • TYPE_MESSAGE =04,
  • ID_MESSAGE =0D,
  • FLAG_ENCODE =00,
  • PUBLIC_KEY =00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
  • STATE_MESSAGE =00,
  • LENGTH_MESSAGE=00, 10,
  • (MESSAGE Text= admin!abc123ABC!)
    MESSAGE =61, 64, 6D, 69, 6E, 21, 61, 62, 63, 31, 32, 33, 41, 42, 43, 21,
  • Checksum=FA, D6, D0, 96,
  • <CR><LF>=0D, 0A,

Feedback message for EVENT LOG from ESPrtk takes the form :

  •  TYPE_MESSAGE = 04 
  • ID_MESSAGE = 0D
  • FLAG_ENCODE : (option on ESPrtk)
  • PUBLIC_KEY : (option on ESPrtk)
  • STATE_MESSAGE = 00 :
    • MESSAGE  :<Size_Event_Log_file>+’!’ +<Record_in_action>+’!’+<Record_error>+’!’+<Record_ac_planning>+’!’+<Record_wifi_scan>+’!’.
  • STATE_MESSAGE = 01:
    • MESSAGE  : < Text with notice as invalid query>

HOST query for NMEA Logger.

Sorting request message :

<Name_profile>+’!’ + <Password_profile>+’!’ 

Example full frame query for EVENT LOG :

  • HEADER =06, 05, 00, 01, 08, 01,
  • TYPE_MESSAGE =04,
  • ID_MESSAGE =0F,
  • FLAG_ENCODE =00,
  • PUBLIC_KEY =00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
  • STATE_MESSAGE =00,
  • LENGTH_MESSAGE=00, 10,
  • (MESSAGE Text= admin!abc123ABC!)
    MESSAGE =61, 64, 6D, 69, 6E, 21, 61, 62, 63, 31, 32, 33, 41, 42, 43, 21,
  • Checksum=,
  • <CR><LF>=0D, 0A,

Feedback message for EVENT LOG from ESPrtk takes the form :

  •  TYPE_MESSAGE = 04 
  • ID_MESSAGE = 0F
  • FLAG_ENCODE : (option on ESPrtk)
  • PUBLIC_KEY : (option on ESPrtk)
  • STATE_MESSAGE = 00 :
    • MESSAGE  :<Enable NMEA Logger>+’!’ +<File’s Name>+’!’ +<File format>+’!’ +<Type write>+’!’ +<Update Cycle>+’!’ +<Max NMEA save in an Update Cycle>+’!’ +<Enable type NMEA (32 char )>+’!’.
  • STATE_MESSAGE = 01:
    • MESSAGE  : < Text with notice as invalid query>.

Use arduino like HOST to configure ESPrtk.

Download the code here (must select for ESPrtk 2.6.0):  Arduino code – HOST test UART configure.

Arduino Mega and ESP32 support more UART ports, can use other UART ports to communicate with ESPrtk.

Before use it function, make sure anable UART configure mode on ESPrtk, go to  UART BRIDGE ENCODE tab and click enable it .

Configure ESPrtk via UART .

(From version 2.5.0 (higher 2.4.x), ESPrtk will support profile configuration via UART connection.)

Select “Enable Configure ESPrtk via UART” to allow this function.
Users can change their profile information by computer or microcontroller (collectively called HOST) via UART connection instead of using WEBconfigure.
Communication is deployed on ESPrtk’s UART0 port.
Connection handshake requires reset the ESPrtk module. (HOST will pull the Reset port on ESPrtk to a low level before send connecting command ).

When select “Enable Encode Message Output” . Messages from ESPrtk will be encrypted before sending to HOST.

KEY coding: KEY on ESPrtk and HOST need to be configured the same to ensure successful connection. There are 16 encoded bytes, each byte will have a value between 0 and 255.


pacman, rainbows, and roller s