polar-recorder
Version:
A SignalK plugin to record boat polars based on sailing performance
288 lines • 10.2 kB
JSON
{
"type": "object",
"properties": {
"sampleInterval": {
"type": "number",
"title": "Sampling Interval (ms)",
"description": "The interval at which to record data points.",
"default": 1000
},
"automaticRecording": {
"type": "boolean",
"title": "Always recording in background",
"description": "Toggle to enable or disable constant recording of polar data.",
"default": false
},
"automaticRecordingFile": {
"type": "string",
"title": "File name for automatic recording polar",
"description": "The interval at which to record data points.",
"format": "text",
"default": "auto-recording-polar.json"
},
"minSpeedToConsiderBoatMoving": {
"type": "number",
"title": "Min STW to consider boat is moving (kt)",
"description": "STW lesser than this value will be considered as boat is stopped.",
"format": "number",
"default": 0.5
},
"useStdDev": {
"type": "boolean",
"title": "Use standard deviation for filters",
"description": "If enabled, filters use standard deviation instead of simple average ratio comparisons. The threshold fields act as z-score limits.",
"default": true
},
"pathSources": {
"type": "object",
"title": "Paths & Sources",
"properties": {
"anglePath": {
"type": "string",
"title": "Wind angle path",
"format": "text",
"default": "environment.wind.angleTrueWater"
},
"angleSource": {
"type": "string",
"title": "Wind angle source (leave empty to use any)",
"format": "text",
"default": ""
},
"speedPath": {
"type": "string",
"title": "Wind speed path",
"format": "text",
"default": "environment.wind.speedTrue"
},
"speedSource": {
"type": "string",
"title": "Wind speed source (leave empty to use any)",
"format": "text",
"default": ""
},
"stwSource": {
"type": "string",
"title": "STW",
"description": "Source for navigation.speedThroughWater (leave empty to use any)"
},
"twdSource": {
"type": "string",
"title": "TWD",
"description": "Source for environment.wind.directionTrue (leave empty to use any)"
},
"cogSource": {
"type": "string",
"title": "COG",
"description": "Source for navigation.courseOverGroundTrue (leave empty to use any)"
},
"hdgSource": {
"type": "string",
"title": "HDG",
"description": "Source for navigation.headingTrue (leave empty to use any)"
}
}
},
"motoringFilter": {
"type": "object",
"title": "Motoring Filter",
"properties": {
"useAutostate": {
"type": "boolean",
"title": "Use signalk-autostate to detect if engines are on",
"description": "If enabled, the plugin will use signalk-autostate to detect if motoring, to disable the polar recording. If disabled, the plugin will record if engine revs are under 'Max revs'",
"default": true
},
"maxRevForEngine": {
"type": "integer",
"title": "Max revs",
"description": "Max revolutions to consider the engine is off",
"default": 0
}
}
},
"cogFilter": {
"type": "object",
"title": "COG Filter",
"properties": {
"useCogThreshold": {
"type": "boolean",
"title": "Filter the recorded points by COG stability",
"description": "Toggle to enable or disable the point filtering based on COG stability.",
"default": true
},
"minLenghtValidData": {
"type": "number",
"title": "Minimum time on course (seconds)",
"description": "The minimum time in the same course to consider the values are valid to record.",
"default": 5
},
"sameCourseAngleOffset": {
"type": "number",
"title": "Accepted course variation to consider stable course (degrees)",
"default": 2
}
}
},
"hdgFilter": {
"type": "object",
"title": "HDG Filter",
"properties": {
"useHdgThreshold": {
"type": "boolean",
"title": "Filter the recorded points by HDG stability",
"description": "Toggle to enable or disable the point filtering based on HDG stability.",
"default": false
},
"minLenghtValidData": {
"type": "number",
"title": "Minimum time on course (seconds)",
"description": "The minimum time in the same course to consider the values are valid to record.",
"default": 5
},
"sameCourseAngleOffset": {
"type": "number",
"title": "Accepted course variation to consider stable course (degrees)",
"default": 2
}
}
},
"twdFilter": {
"type": "object",
"title": "TWD Filter",
"properties": {
"useTwdThreshold": {
"type": "boolean",
"title": "Filter the recorded points by TWD stability",
"description": "Toggle to enable or disable the point filtering based on TWD stability.",
"default": true
},
"minStableTwdTime": {
"type": "number",
"title": "Minimum time with constant TWD",
"description": "The minimum time with the same TWD to consider the values are valid to record.",
"default": 5
},
"sameTwdAngleOffset": {
"type": "number",
"title": "Accepted TWD variation to consider stable wind direction (degrees)",
"default": 10
}
}
},
"vmgFilter": {
"type": "object",
"title": "VMG Filter",
"properties": {
"useVmgThreshold": {
"type": "boolean",
"title": "Filter the recorded points by current STW to polar recorded ratio",
"description": "Toggle to enable or disable the point filtering based on current STW to polar recorded to detect sudden speed changes.",
"default": true
},
"vmgRatioThresholdUp": {
"type": "number",
"title": "Upper threshold for STW to VMG ratio",
"description": "Ignored if standard deviation is used.",
"default": 1.1
},
"vmgRatioThresholdDown": {
"type": "number",
"title": "Lower threshold for STW to VMG ratio",
"description": "Ignored if standard deviation is used.",
"default": 0.8
}
}
},
"speedFilter": {
"type": "object",
"title": "STW Filter",
"properties": {
"useAvgSpeedThreshold": {
"type": "boolean",
"title": "Filter the recorded points by deviations from average STW",
"description": "Toggle to enable or disable the point filtering based on the average speed in the specified time window to detect sudden speed changes.",
"default": true
},
"avgSpeedTimeWindow": {
"type": "number",
"title": "Speed average time window (s)",
"description": "Time window (in seconds) to calculate average speed.",
"default": 5
},
"avgSpeedThresholdUp": {
"type": "number",
"title": "Speed filter threshold (z-score or ratio)",
"description": "If standard deviation is enabled, this is the maximum allowed z-score. Otherwise, it's the upper ratio threshold.",
"default": 1.1
},
"avgSpeedThresholdDown": {
"type": "number",
"title": "Lower speed ratio threshold",
"description": "Ignored if standard deviation is enabled.",
"default": 0.8
}
}
},
"twsFilter": {
"type": "object",
"title": "TWS Filter",
"properties": {
"useAvgTwsThreshold": {
"type": "boolean",
"title": "Filter by TWS deviation from average",
"description": "Enable filtering based on the average True Wind Speed over a time window.",
"default": true
},
"avgTwsTimeWindow": {
"type": "number",
"title": "TWS average time window (s)",
"description": "Time window in seconds to calculate average TWS.",
"default": 5
},
"avgTwsThresholdUp": {
"type": "number",
"title": "TWS filter threshold (z-score or ratio)",
"description": "If standard deviation is enabled, this is the maximum allowed z-score. Otherwise, it's the upper ratio threshold.",
"default": 1.1
},
"avgTwsThresholdDown": {
"type": "number",
"title": "Lower TWS ratio threshold",
"description": "Ignored if standard deviation is enabled.",
"default": 0.8
}
}
},
"twaFilter": {
"type": "object",
"title": "TWA Filter",
"properties": {
"useAvgTwaThreshold": {
"type": "boolean",
"title": "Filter by TWA deviation from average",
"description": "Enable filtering based on the average True Wind Angle over a time window.",
"default": true
},
"avgTwaTimeWindow": {
"type": "number",
"title": "TWA average time window (s)",
"description": "Time window in seconds to calculate average TWA.",
"default": 5
},
"avgTwaThresholdUp": {
"type": "number",
"title": "TWA filter threshold (z-score or ratio)",
"description": "If standard deviation is enabled, this is the maximum allowed z-score. Otherwise, it's the upper ratio threshold.",
"default": 1.1
},
"avgTwaThresholdDown": {
"type": "number",
"title": "Lower TWA ratio threshold",
"description": "Ignored if standard deviation is enabled.",
"default": 0.8
}
}
}
}
}