Swims
Comprehensive environmental monitoring solution — serial/protobuf sensor ingestion with realtime dashboards for water and air quality trials.
Problem
Environmental pilots fail when sensor data stays trapped on USB serial logs. SWIMS unifies protobuf-framed sensor ingestion, Python realtime services, and TypeScript web views so field teams can monitor temperature, pH, dissolved oxygen, and salinity continuously.
What it covers
- Protobuf
SensorDataframes over serial from edge acquisition - Python realtime ingestion with continuous generator pattern
- TypeScript web console (
swims-web) for live charts - Draft monitor modules for graphing and logger utilities
def get_continuous_sensor_data(self, serial_port='/dev/ttyUSB0', baud_rate=9600):
with serial.Serial(serial_port, baud_rate, timeout=1) as ser:
while True:
incoming_data = ser.read(ser.inWaiting())
if incoming_data:
sensor_data = sensor_data_pb2.SensorData()
sensor_data.ParseFromString(incoming_data)
self.temperature = round(sensor_data.temperature, 2)
self.pH = round(sensor_data.pH, 2)
yield self