From 7f0a0f280b6542eb843a632c624f2e6c6476df79 Mon Sep 17 00:00:00 2001 From: Thomas Hooge Date: Sat, 19 Jul 2025 07:44:35 +0200 Subject: [PATCH] =?UTF-8?q?Daten=C3=BCbertragung=20=C3=BCber=20Netzwerk=20?= =?UTF-8?q?vorbereitet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TODO | 8 ++++++++ obp60v.conf-sample | 5 +++++ obp60v.py | 21 +++++++++++++++++++++ 3 files changed, 34 insertions(+) diff --git a/TODO b/TODO index 06148e6..03ba003 100644 --- a/TODO +++ b/TODO @@ -14,3 +14,11 @@ Aufgaben- und Planungs- und Ideenliste Rechtecke mit SNR (Signal/Noise) - Sea wave recorder (siehe Steamrock) + +- Datenübertragung über Ethernet + Achtung: Fast Packets + - SeaSmart + NMEA2000 in NMEA0183 gekapselt + - Yacht Devices ASCII Raw Protokoll + https://www.yachtd.com/downloads/ydnr02.pdf + - Actisense? diff --git a/obp60v.conf-sample b/obp60v.conf-sample index 081ae90..3d22ede 100644 --- a/obp60v.conf-sample +++ b/obp60v.conf-sample @@ -19,6 +19,11 @@ interface = can0 enabled = false port = /dev/ttyV1 +[network] +enabled = false +address = 127.0.0.1 +port = 10110 + [bme280] enabled = false port = 1 diff --git a/obp60v.py b/obp60v.py index dde49f0..3930198 100755 --- a/obp60v.py +++ b/obp60v.py @@ -92,6 +92,7 @@ from gi.repository import GLib, Gtk, Gdk, Rsvg import cairo import math import threading +import socket import can import serial import smbus2 @@ -256,6 +257,15 @@ def rxd_gps(devname, devspeed): print(msg.fields) ser.close() +def rxd_network(address, port): + # WIP Daten über Netzwerk empfangen + # Wir verwenden UDP. Ein verlorenes Paket tut uns nicht weh. + sock = socket.socket() + sock.connect((address, port)) + while not shutdown: + time.sleep(0.5) + sock.close() + def datareader(cfg, history): """ Daten zu fest definierten Zeitpunkten lesen @@ -669,6 +679,11 @@ if __name__ == "__main__": if cfg['gps']: cfg['gps_port'] = config.get('gps', 'port') + cfg['network'] = config.getboolean('network', 'enabled') + if cfg['network']: + cfg['net_addr'] = config.get('network', 'address') + cfg['net_port'] = config.get('network', 'port') + cfg['bme280'] = config.getboolean('bme280', 'enabled') if cfg['bme280']: cfg['bme280_port'] = config.getint('bme280', 'port') @@ -696,6 +711,10 @@ if __name__ == "__main__": print("GPS enabled (local)") t_rxd_gps = threading.Thread(target=rxd_gps, args=(cfg['gps_port'],)) t_rxd_gps.start() + if cfg['network']: + print("Networking enabled") + t_rxd_net = threading.Thread(target=rxd_network, args=(cfg['net_port'],cfg['net_addr'])) + t_rxd_net.start() if not cfg['simulation']: if cfg['bme280']: t_data = threading.Thread(target=datareader, args=(cfg, history)) @@ -712,6 +731,8 @@ if __name__ == "__main__": t_rxd_0183.join() if cfg['gps']: t_rxd_gps.join() + if cfg['net']: + t_rxd_net.join() if not cfg['simulation'] and cfg['bme280']: t_data.join() print("Another fine product of the Sirius Cybernetics Corporation.")