Skip to content

In use by RVMT (RTCM Via MQTT Transmitter) using the MQTT msg/protocol (as a secure and opensource alternative to NTRIP) to get RTK correction data from BaseStations to Broker and to Rover GPS units.

License

Notifications You must be signed in to change notification settings

hagre/RVMP_RTCM-VIA-MQTT-PROTOCOL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 

Repository files navigation

RVMP (RTCM-Via-MQTT-Protocol)

RVMP (RTCM Via MQTT Protocol) V0.1 (first very basic approach, but some features for future are in preperation).

In use by RVMT (RTCM Via MQTT Transmitter - https://github.com/hagre/RVMT-RTCM-VIA-MQTT-TRANSMITTER) using the MQTT msg/protocol (as a secure and opensource alternative to NTRIP) to get RTK correction data from BaseStations to Broker and to Rover GPS units.

Basicly, this is a try to implement something like a NTRIP caster with MQTT features. There are a lot of similarities to NTRIP (V1.0/V2.0), because it is a knowen and usefull protocol with most needet features for this task.

Attension: Topics are casesensitive!!

Topics:

Basestation (MNTP) publish:

Welcome msg: (transmitted when a new connection is established, or a feature is updated, .. )

  • RTK/Base//Status/Tversion/ - e.g "2.2" - Version of transmitter firmware [QOS = 1, retain = true, last_will = null] [read acces only by caster app, read/write by Basestation ] +RTK/Base//Status/Pversion/ - e.g "0.1" - Version of protocol [QOS = 1, retain = true, last_will = null] [read acces only by caster app, read/write by Basestation ]
  • RTK/Base//Status/RTCM// - e.g "1", "0.5" or "30" - time in seconds between update (~frequenz) [QOS = 1, retain = true, last_will = null] [read acces only by caster app, read/write by Basestation ]
  • RTK/Base//Status/Operation/ - "ON" full working RTCM, "STBY" receiving RTCM, but not transmitting over MQTT, "ERROR" having some trouble, "OFF" - not avaliable [QOS = 1, retain = true, last_will = "OFF"] [read acces only by caster app, read/write by Basestation ]
  • RTK/Base//Status/Error/ - type of error e.g "NO_RTCM_INPUT" [QOS = 1, retain = false, last_will = null] [read acces only by caster app, read/write by Basestation ] //further work required
  • //planning to implement: RTK/Base//Status/Position/Lat/ - LatPosition [QOS = 1, retain = true, last_will = null] [read acces only by caster app, read/write by Basestation ] //further work required
  • //planning to implement: RTK/Base//Status/Position/Long/ - LongPosition [QOS = 1, retain = true, last_will = null] [read acces only by caster app, read/write by Basestation ] //further work required
  • //planning to try: RTK/MNTP/NAME of BASE/Command/Out/PW/ - e.g "Password" [QOS = 1, retain = false, last_will = null] [read acces only by caster app, read/write by Basestation ] //further work required
  • //planning to try: RTK/MNTP/NAME of BASE/Command/Out/USER/ - e.g "Username" (? username == ) [QOS = 1, retain = false, last_will = null] [read acces only by caster app, read/write by Basestation ] //further work required

for each RTCM msg type:

  • RTK/Base/NAME of BASE/RTCM// [retain = false, last_will = null] [read acces only by caster app, read/write by Basestation ]

Basestation (MNTP) subscribe:

  • RTK/Base//Command/In/RTCM/
  • RTK/Base//Command/In/GPS/
  • RTK/Base//Command/In/Transmitter/
  • //planning to try: RTK/Base/Command/In/Serial/
  • //planning to try: RTK/Base//Serial/In/

Caster subscribe:

  • RTK/Base//Status/Tversion/
  • RTK/Base//Status/Pversion/
  • RTK/Base//Status/RTCM//
  • RTK/Base//Status/Operation/
  • RTK/Base//Status/Error/
  • RTK/Base//Status/Position/Lat/
  • RTK/Base//Status/Status/Position/Long/
  • //planning to try: RTK/MNTP//Command/Out/PW/
  • //planning to try: RTK/MNTP//Command/Out/USER/
  • RTK/Base//RTCM/#

some calculation in the caster ....

  • acvtivate or deactivate Basestations
  • solve errors witch reboot if required
  • copy RTCM from RTK/Base//... to RTK/MNTP/
  • keep track of the Basestations
  • construct and update Mountpointlist (all possible avaliable Basestations )
  • keep track of the Basestations

Caster publish:

  • RTK/MNTP//RTCM// [retain = false, last_will = null] [read acces by all RTK users, read/write by caster] commands to Basestation
  • RTK/MNTP//Command/In/RTCM/ - "ON" or "OFF" to activate/deactivate RTCM transmission if required [QOS = 1, retain = false, last_will = null] [read/write acces by caster app, read by correct Basestation ]
  • RTK/MNTP//Command/In/GPS/ - "REBOOT" to force an GPS reboot [retain = false, last_will = null] [QOS = 1, read/write acces by caster app, read by correct Basestation ]
  • RTK/MNTP//Command/In/Transmitter/ - "REBOOT" to force an transmitter reboot (e.g ESP32 modul) [QOS = 1, retain = false, last_will = null] [read/write acces by caster app, read by correct Basestation ]
  • RTK/MNTPList//Status/Pversion/ [QOS = 1, retain = true, last_will = null] [read/write acces by caster app, read by clients ]
  • RTK/MNTPList//Status/RTCM// [QOS = 1, retain = true, last_will = null] [read/write acces by caster app, read by clients ]
  • RTK/MNTPList//Status/Operation/ [QOS = 1, retain = true, last_will = null] [read/write acces by caster app, read by clients ]
  • RTK/MNTPList//Status/Position/Lat/ [QOS = 1, retain = true, last_will = null] [read/write acces by caster app, read by clients ]
  • RTK/MNTPList//Status/Position/Long/ [QOS = 1, retain = true, last_will = null] [read/write acces by caster app, read by clients ]

Clients publish:

  • RTK/User/Subscribe// - "" to request MNTP transmission, caster will provide needet data if on the mountpointlist [QOS = 1, retain = false, last_will = "ByBy"] [read/write acces by clients app, read by caster ]

Clients subscribe:

initially and refresh if needed

  • RTK/MNTPList/# - get complete list or
  • RTK/MNTPList//# - get single desired MNTP continously
  • RTK/MNTP//Status/Operation/ - check operation of desired MNTP
  • RTK/MNTP//RTCM/# - get all RTCM msg avaliable or
  • RTK/MNTP//RTCM// - just for each desired msg type

//MaintenanceClient subscribe:

  • //planning: RTK/Base//Serial/Out/

//MaintenanceClient publish:

  • //planning: RTK/Base//Serial/In/ - Serial transmission to GPS if required (config of chip) [retain = false, last_will = null] //serial transmission will be included in a later version
  • //planning to try: RTK/Base/Command/In/Serial/ - "ON" or "OFF" to activate/deactivate Serial transmission to GPS if required (config of chip) [retain = false, last_will = null] //serial transmission will be included in a later version

Hints:

MNTP - Mountpoint == - e.g. XYZ01 - e.g. 1074

further plans:

+add PW acces for Basestation (if required at all) +add a special client ID (user "BaseMaintenance") for mantenance my basestations with serial com +serial com with base (RTK/Base/Command/In/Serial/ ...) in far future

  • RTK/User/Subscribe//Position/
  • and construckt/calculate virtual basestation on user request for user position - give virtual name MNTP and publish accordingly

About

In use by RVMT (RTCM Via MQTT Transmitter) using the MQTT msg/protocol (as a secure and opensource alternative to NTRIP) to get RTK correction data from BaseStations to Broker and to Rover GPS units.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published