Skip to content

UDP Access

There is a service on navproc API where you can request the latest data from the loggers that are recording data on the boats. Each UDP port has a different set of data items and the easiest way to find out what data is available it to query for the 'header' on each port and then you can request the data items (CSV format) and then parse them based on the headers. The ports available on the different ships are:

  1. 54003 (shipnavlogr)
  2. 54005 (videologr)
  3. 54007 (rovctdlogr)
  4. 54009 (dataprobelogr)
  5. 54017 (nav4dlogr)
  6. 54019 (m3rslogr)

Here is example Python client that requests the header and then the data from the shipnavlogr (port 54003)

import socket

def udp_client(server_ip='coredata-dpkd.dp.mbari.org', server_port=54003):
    # Create a UDP socket
    with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as sock:
        server_address = (server_ip, server_port)
        message = b'header'
        message_data = b'data'

        try:
            # Send data
            print(f"Sending request: {message.decode()}")
            sock.sendto(message, server_address)

            # Receive response
            data, _ = sock.recvfrom(4096)
            print(f"Received response: {data.decode()}")

            print(f"Sending request: {message_data.decode()}")
            sock.sendto(message_data, server_address)

            # Receive response
            data, _ = sock.recvfrom(4096)
            print(f"Received response: {data.decode()}")
        except Exception as e:
            print(f"Error: {e}")

if __name__ == "__main__":
    udp_client()