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:
- 54003 (shipnavlogr)
- 54005 (videologr)
- 54007 (rovctdlogr)
- 54009 (dataprobelogr)
- 54017 (nav4dlogr)
- 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()