date: '2026-10-19'
status: design_input_contract_not_implemented_or_hardware_validated
reference: docs/41_open_boat_projects_review.md
motor_nominal_V: 72
max_hull_skin_draft_m: 0.53
SignalK_schema_snapshot_version: 1.8.4
required_record_fields:
- value
- unit
- source
- measurement_time_UTC
- reception_monotonic_time
- quality
- calibration_id
- device_revision
- firmware_commit
- frame_and_position
- stale_or_fault_state
freshness:
  max_age_by_channel_s: null
  maximum_clock_error_s: null
  repeated_value_does_not_renew_measurement_time: true
  replay_data_must_be_marked_and_not_command_live_actuators: true
gateway:
  telemetry_only_by_default_design: true
  actuation_requires_separate_authority_and_guard_contract: true
  physical_interfaces_voltage_isolation_and_pinout: null
  required_PGN_sentence_conversion_table: null
  source_priority_and_loop_prevention: null
  MQTT_topic_alone_is_not_SignalK_delta: true
  traction_CAN_and_instrument_network_not_assumed_same_bus: true
power:
  auxiliary_bus_voltage_V: null
  DC_DC_upper_input_V: null
  DC_DC_nominal_and_peak_W: null
  separate_emergency_control_power: null
  do_not_feed_low_voltage_modules_directly_from_72V: true
channels:
- id: wind
  signalK_path: environment.wind.speedApparent
  unit: m/s
  source_ids:
  - OBP03
  - OBP15
  - OBP16
  role: nav_and_slow_energy_kite_coordination
  constraint: not_fast_kite_feedback
  physical_count: null
  installed_mass_kg: null
  average_power_W: null
  peak_power_W: null
  measurement_range: null
  update_period_s: null
  timeout_s: null
- id: wind_angle
  signalK_path: environment.wind.angleApparent
  unit: rad
  source_ids:
  - OBP15
  role: nav_and_slow_coordination
  constraint: negative_to_port
  physical_count: null
  installed_mass_kg: null
  average_power_W: null
  peak_power_W: null
  measurement_range: null
  update_period_s: null
  timeout_s: null
- id: heading
  signalK_path: navigation.headingMagnetic
  unit: rad
  source_ids:
  - OBP11
  - OBP24
  role: navigation_and_rudder
  constraint: calibrate_under_actual_motor_and_winch_currents
  physical_count: null
  installed_mass_kg: null
  average_power_W: null
  peak_power_W: null
  measurement_range: null
  update_period_s: null
  timeout_s: null
- id: position
  signalK_path: navigation.position
  unit: lat_lon_deg
  source_ids:
  - OBP04
  - OBP24
  role: navigation_and_anchor_watch
  constraint: separate_position_from_COG_and_heading
  physical_count: null
  installed_mass_kg: null
  average_power_W: null
  peak_power_W: null
  measurement_range: null
  update_period_s: null
  timeout_s: null
- id: attitude
  signalK_path: navigation.attitude
  unit: rad
  source_ids:
  - OBP24
  role: frame_transformations
  constraint: define_sensor_to_boat_and_calculation_frames
  physical_count: null
  installed_mass_kg: null
  average_power_W: null
  peak_power_W: null
  measurement_range: null
  update_period_s: null
  timeout_s: null
- id: shaft_speed
  signalK_path: propulsion.<id>.revolutions
  unit: Hz
  source_ids:
  - OBP17
  - OBP34
  role: propulsion_diagnostics
  constraint: mechanical_rev_per_second_not_ERPM
  physical_count: null
  installed_mass_kg: null
  average_power_W: null
  peak_power_W: null
  measurement_range: null
  update_period_s: null
  timeout_s: null
- id: battery_current
  signalK_path: electrical.batteries.<id>.current
  unit: A
  source_ids:
  - OBP31
  - OBP32
  role: energy_balance
  constraint: positive_charging_in_SignalK_battery_schema
  physical_count: null
  installed_mass_kg: null
  average_power_W: null
  peak_power_W: null
  measurement_range: null
  update_period_s: null
  timeout_s: null
- id: battery_SOC
  signalK_path: electrical.batteries.<id>.capacity.stateOfCharge
  unit: ratio
  source_ids:
  - OBP32
  role: energy_reserve
  constraint: 0_to_1_not_percent
  physical_count: null
  installed_mass_kg: null
  average_power_W: null
  peak_power_W: null
  measurement_range: null
  update_period_s: null
  timeout_s: null
- id: temperature
  signalK_path: per_selected_schema
  unit: K
  source_ids:
  - OBP09
  - OBP17
  role: cooling_and_energy
  constraint: physical_probe_and_medium_compatibility_pending
  physical_count: null
  installed_mass_kg: null
  average_power_W: null
  peak_power_W: null
  measurement_range: null
  update_period_s: null
  timeout_s: null
- id: coolant_flow
  signalK_path: null
  unit: m3/s
  source_ids:
  - OBP17
  role: cooling_diagnostics
  constraint: path_and_sensor_to_select
  physical_count: null
  installed_mass_kg: null
  average_power_W: null
  peak_power_W: null
  measurement_range: null
  update_period_s: null
  timeout_s: null
- id: tank_volume
  signalK_path: null
  unit: m3
  source_ids:
  - OBP12
  - OBP13
  role: water_and_loading
  constraint: calibrated_tank_geometry_heel_trim_sloshing
  physical_count: null
  installed_mass_kg: null
  average_power_W: null
  peak_power_W: null
  measurement_range: null
  update_period_s: null
  timeout_s: null
- id: bilge_alarm
  signalK_path: null
  unit: boolean
  source_ids:
  - OBP09
  - OBPU01
  role: monitoring_and_alarm
  constraint: local_alarm_independent_of_WiFi
  physical_count: null
  installed_mass_kg: null
  average_power_W: null
  peak_power_W: null
  measurement_range: null
  update_period_s: null
  timeout_s: null
- id: AIS
  signalK_path: null
  unit: per_message_schema
  source_ids:
  - OBP29
  role: situational_awareness
  constraint: onboard_receiver_distinct_from_internet_AIS
  physical_count: null
  installed_mass_kg: null
  average_power_W: null
  peak_power_W: null
  measurement_range: null
  update_period_s: null
  timeout_s: null
- id: anchor_watch
  signalK_path: null
  unit: per_schema
  source_ids:
  - OBP21
  role: anchoring
  constraint: separate_GNSS_and_power_failure_alarm
  physical_count: null
  installed_mass_kg: null
  average_power_W: null
  peak_power_W: null
  measurement_range: null
  update_period_s: null
  timeout_s: null
wind:
  no_mast_sensor_location: null
  distortion_due_roof_PV_kite: null
  velocity_frame_and_ground_water_reference_required: true
  sensor_reading_not_equal_wind_at_kite: true
mass_accounting: replace identified electronics allowance; include cables enclosures
  power modules cooling backup and mounts without duplicate full allowance
independent_fast_controllers:
- kite
- inverter_current_loops
- BMS_protection
- rudder_actuator_local_limits
