@mxtommy/kip 4.5.0-beta.1 → 4.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +11 -7
  3. package/package.json +21 -8
  4. package/plugin/duckdb-parquet-storage.service.js +1182 -0
  5. package/plugin/history-series.service.js +439 -0
  6. package/plugin/index.js +705 -30
  7. package/plugin/openApi.json +253 -3
  8. package/plugin/plugin-auth.service.js +75 -0
  9. package/public/assets/help-docs/chartplotter.md +5 -18
  10. package/public/assets/help-docs/community.md +0 -3
  11. package/public/assets/help-docs/configuration.md +1 -1
  12. package/public/assets/help-docs/contact-us.md +0 -4
  13. package/public/assets/help-docs/dashboards.md +20 -18
  14. package/public/assets/help-docs/datainspector.md +7 -5
  15. package/public/assets/help-docs/history-api.md +116 -0
  16. package/public/assets/help-docs/menu.json +18 -6
  17. package/public/assets/help-docs/nodered-control-flows.md +125 -0
  18. package/public/assets/help-docs/putcontrols.md +101 -60
  19. package/public/assets/help-docs/welcome.md +6 -7
  20. package/public/assets/help-docs/widget-historical-series.md +66 -0
  21. package/public/assets/help-docs/zones.md +5 -10
  22. package/public/chunk-A6DQJFP4.js +16 -0
  23. package/public/chunk-B75MT7ND.js +1 -0
  24. package/public/{chunk-T6TFVZVM.js → chunk-CEB42O2C.js} +1 -1
  25. package/public/chunk-CHGXAEKT.js +2 -0
  26. package/public/chunk-D7VDX7ZF.js +5 -0
  27. package/public/{chunk-ZQER6AIQ.js → chunk-DEGYRCMI.js} +1 -1
  28. package/public/{chunk-M2B5OYGO.js → chunk-DEM56G4S.js} +1 -1
  29. package/public/chunk-DYTBBUMI.js +4 -0
  30. package/public/chunk-EQ2N7KDA.js +3 -0
  31. package/public/chunk-FNF7M3AE.js +1 -0
  32. package/public/chunk-IHURI4IH.js +5 -0
  33. package/public/{chunk-YIYYVDFO.js → chunk-IYRLINL7.js} +2 -2
  34. package/public/{chunk-5FEX27I4.js → chunk-JB4YVVNW.js} +1 -1
  35. package/public/chunk-JGGMFMY5.js +1 -0
  36. package/public/chunk-KPHICV76.js +5 -0
  37. package/public/{chunk-QZKCRH3H.js → chunk-KZ5DUKAX.js} +1 -1
  38. package/public/{chunk-HMOOTAEA.js → chunk-LQDSU4WS.js} +3 -3
  39. package/public/{chunk-IXQ7KIFY.js → chunk-MGPPVLZ7.js} +1 -1
  40. package/public/{chunk-QVCLOCEC.js → chunk-R7RQHWKJ.js} +1 -1
  41. package/public/chunk-RONXIZ2U.js +9 -0
  42. package/public/chunk-S72JTJPN.js +6 -0
  43. package/public/{chunk-KFFAA7DL.js → chunk-VCY32MWT.js} +8 -8
  44. package/public/chunk-YCEXTKGG.js +1 -0
  45. package/public/chunk-YKJKIWXO.js +6 -0
  46. package/public/chunk-ZV7IYYEQ.js +50 -0
  47. package/public/index.html +1 -1
  48. package/public/main-FQESQQV6.js +1 -0
  49. package/.github/ISSUE_TEMPLATE/bug_report.yml +0 -84
  50. package/.github/ISSUE_TEMPLATE/config.yml +0 -5
  51. package/.github/ISSUE_TEMPLATE/feature_request.yml +0 -35
  52. package/.github/copilot-instructions.md +0 -205
  53. package/.github/instructions/angular.instructions.md +0 -123
  54. package/.github/instructions/best-practices.instructions.md +0 -59
  55. package/.github/instructions/project.instructions.md +0 -432
  56. package/.github/workflows/ci.yml +0 -37
  57. package/docs/widget-schematic.md +0 -102
  58. package/images/ActionSidenav.png +0 -0
  59. package/images/ChartplotterMode.png +0 -0
  60. package/images/KIPDemo.png +0 -0
  61. package/images/KipBrightness-1024.png +0 -0
  62. package/images/KipConfig-Units-1024.png +0 -0
  63. package/images/KipConfig-display-1024x488.png +0 -0
  64. package/images/KipFreeboard-SK-1024.png +0 -0
  65. package/images/KipGaugeSample1-1024x545.png +0 -0
  66. package/images/KipGaugeSample2-1024x488.png +0 -0
  67. package/images/KipGaugeSample3-1024x508.png +0 -0
  68. package/images/KipNightMode-1024.png +0 -0
  69. package/images/KipWidgetConfig-layout-1024.png +0 -0
  70. package/images/KipWidgetConfig-paths-1024x488.png +0 -0
  71. package/images/Options.png +0 -0
  72. package/images/exterior_user_installs.png +0 -0
  73. package/images/formfactor.png +0 -0
  74. package/public/assets/help-docs/datasets.md +0 -95
  75. package/public/chunk-2OB7ZJBR.js +0 -3
  76. package/public/chunk-6GGJZDRE.js +0 -1
  77. package/public/chunk-6V4GGGXE.js +0 -2
  78. package/public/chunk-A5BW6BUM.js +0 -1
  79. package/public/chunk-DGE5YFPU.js +0 -5
  80. package/public/chunk-G6M3Z3BY.js +0 -53
  81. package/public/chunk-GMGZLXY7.js +0 -4
  82. package/public/chunk-GUZ3BDVZ.js +0 -2
  83. package/public/chunk-ICDGHQFP.js +0 -6
  84. package/public/chunk-JCNE4QHQ.js +0 -15
  85. package/public/chunk-K6XYUNG4.js +0 -8
  86. package/public/chunk-LGCQEN7V.js +0 -4
  87. package/public/chunk-O3JH7UTR.js +0 -1
  88. package/public/chunk-Q3USFT4F.js +0 -2
  89. package/public/chunk-VIKU7BH7.js +0 -1
  90. package/public/chunk-XMQPXXLW.js +0 -8
  91. package/public/main-4URMGBQS.js +0 -1
  92. package/rm-npmjs-beta.sh +0 -50
  93. package/tools/schematics/collection.json +0 -9
  94. package/tools/schematics/create-host2-widget/files/readme/README.md.template +0 -109
  95. package/tools/schematics/create-host2-widget/files/spec/widget-__name@dasherize__.component.spec.ts +0 -38
  96. package/tools/schematics/create-host2-widget/files/widget/widget-__name@dasherize__.component.html +0 -6
  97. package/tools/schematics/create-host2-widget/files/widget/widget-__name@dasherize__.component.scss +0 -5
  98. package/tools/schematics/create-host2-widget/files/widget/widget-__name@dasherize__.component.ts.template +0 -94
  99. package/tools/schematics/create-host2-widget/index.js +0 -138
  100. package/tools/schematics/create-host2-widget/schema.json +0 -89
  101. package/tools/schematics/create-host2-widget/test/create-host2-widget.spec.ts +0 -70
  102. package/tools/schematics/create-host2-widget/utils/formatting.js +0 -119
@@ -10,7 +10,7 @@ The Data Inspector is a good way to validate raw data and available paths withou
10
10
  - Type `self.` to view paths related to your vessel.
11
11
  - Type `environment` to view environmental data like wind or temperature.
12
12
  - Type `speed` to view any speed related data like wind speed, max speed, polar speed, etc.
13
- - Type `derived` to view all path from source derived-data .
13
+ - Type `derived` to view all paths from source `derived-data`.
14
14
 
15
15
  2. **Sort and Navigate**:
16
16
  - Click on column headers to sort the data by Path, PUT Support, or Source.
@@ -24,7 +24,7 @@ The Data Inspector is a good way to validate raw data and available paths withou
24
24
 
25
25
  2. **PUT Support**:
26
26
  - You can see if a path supports PUT operations, indicated by a green checkmark in the **PUT Support** column.
27
- - For more details on PUT support and how to use it, refer to the **Updating Signal K Data** help documentation.
27
+ - For more details on PUT support and how to use it, refer to the [Updating Signal K Data](putcontrols.md) help documentation.
28
28
 
29
29
  3. **Multiple Data Sources**:
30
30
  - The Data Inspector displays how many sources are providing data for each path.
@@ -41,11 +41,13 @@ The Data Inspector is a good way to validate raw data and available paths withou
41
41
  - Use the Data Inspector to validate raw data and available paths without the constraints that widgets can impose. This is especially useful when setting up new devices or debugging data issues.
42
42
 
43
43
  - **Verify PUT Support**:
44
- - Check if a path supports PUT operations before configuring widgets like the Switch Panel or Slider.
44
+ - Check if a path supports PUT operations. It is required to configure widgets like Switch Panel, Slider, or Multi State Switch.
45
+ - For more details on PUT support and how to use it, refer to the [Updating Signal K Data](putcontrols.md) help documentation.
46
+ - If you are learning Node-RED flows and want your flow to work with KIP digital switching widgets, continue with [Node-RED Control Flows for KIP Widgets (Beginner Guide)](nodered-control-flows.md).
45
47
 
46
48
  - **Troubleshoot Data Issues**:
47
- - The Data Inspector is a good troubleshooting tool, but it should be matched with the Signal K Data Browser when trying to understand raw data and what is going on. The combination of these tools provides a more complete picture of the data, it's processing and its behavior.
49
+ - The Data Inspector is a good troubleshooting tool, but it should be used with the Signal K Data Browser when trying to understand raw data and behavior. The combination of these tools provides a more complete picture of the data, its processing, and its behavior.
48
50
 
49
51
  ## Summary
50
52
 
51
- The Data Inspector is an essential tool for managing and understanding the data KIP receives from your Signal K server. With its real-time updates, filtering, and unit conversion capabilities, it provides a comprehensive view of your vessel's data. Whether you're monitoring performance, configuring widgets, or troubleshooting issues. For deeper analysis and understanding of raw data, pair it with the Signal K Data Browser to gain even more insights.
53
+ The Data Inspector is an essential tool for managing and understanding the data KIP receives from your Signal K server. With its real-time updates, filtering, and unit conversion capabilities, it provides a comprehensive view of your vessel's data whether you're monitoring performance, configuring widgets, or troubleshooting issues. For deeper analysis and understanding of raw data, pair it with the Signal K Data Browser.
@@ -0,0 +1,116 @@
1
+ ## Using the History-API to Obtain Historical Data
2
+
3
+ KIP can automatically request History Provider historical data points when opening chart widgets, seamlessly integrating past data with live updates.
4
+
5
+ This enables the display of minutes, hours, days, weeks, etc. of pre-populated historical data immediately—no waiting, no empty charts. The History-API is used to achieve this.
6
+
7
+ A History Provider can also be used as a source for the widget historical data feature.
8
+
9
+ ## What Is the History-API?
10
+
11
+ A Signal K server endpoint that provides access to recorded historical data. Behind the endpoint, the data is served by a history provider plugin. KIP automatically requests historical data points when opening chart widgets, pre-filling the chart instead of starting empty.
12
+
13
+ ## Which Widgets Support History?
14
+
15
+ ### Data Chart Widget
16
+ - **Supported**: Yes, fully seeded with history data when available.
17
+ - **Requirements**: Time scale = minutes or longer.
18
+ - See "Configure Time Scales" below for more details.
19
+
20
+ ### Wind Trends Widget
21
+ - **Supported**: Yes, uses fixed paths (True Wind Direction and Speed).
22
+ - **Requirements**: Time Span of `5 minutes` or `30 minutes`.
23
+ - See [Wind Trends Fixed Paths](#wind-trends-fixed-paths) below for configuration details.
24
+
25
+ ### Numeric Widget (with Mini Chart)
26
+ - **Supported**: No. Mini charts use very short time windows (12 seconds) and skip history seeding.
27
+ - Mini charts start live-only for performance reasons.
28
+
29
+ ## What Plugins and Signal K Version Are Required?
30
+
31
+ The History-API requires Signal K version 2.22.1 or above and one plugin that records data to a persistent store. Currently, two plugins support the History-API:
32
+
33
+ ### 1. signalk-to-influxdb2, v2.0.0 or above
34
+ - **Purpose**: Records Signal K data to an InfluxDB v2 time-series database. Requires pre-installed InfluxDB v2.
35
+ - **Link**: [signalk-to-influxdb2](https://www.npmjs.com/package/signalk-to-influxdb2)
36
+ - **Setup**: Consult the plugin documentation for installation and configuration.
37
+ - **Path Configuration**: By default, records all paths. Configure filters, resolution, and other settings to match the paths you want available in KIP charts.
38
+
39
+ ### 2. signalk-parquet, (supporting version not release yet)
40
+ - **Purpose**: Records Signal K data to Parquet files for efficient storage and querying. No external database installation required.
41
+ - **Link**: [signalk-parquet](https://www.npmjs.com/package/signalk-parquet)
42
+ - **Setup**: Consult the plugin documentation for installation and configuration.
43
+ - **Path Configuration**: Specify which paths to record in the plugin settings. None are recorded by default.
44
+
45
+
46
+ ## How History Data Works in KIP
47
+
48
+ ### History Seeding
49
+ When you open a chart widget with a larger time scale (minutes/hours):
50
+ 1. KIP checks if history data is available via the History-API.
51
+ 2. If available and the time window allows (resolution >= 1000ms), KIP requests historical data points.
52
+ 3. The chart immediately displays the historical trend.
53
+
54
+ ### Live Updates
55
+ After history data loads:
56
+ - New data points arrive continuously via Signal K's live WebSocket connection.
57
+ - The chart smoothly transitions from history to live updates.
58
+ - Old data points are removed to maintain a rolling window of the configured time scale.
59
+
60
+ ### When History Is Not Available
61
+ - If a History-API plugin is not installed, or the plugin report the path is not recorded, history requests are skipped silently.
62
+ - The chart will display only live data starting from when it was opened.
63
+ - This is normal and does not indicate an error.
64
+
65
+ ## Wind Trends Fixed Paths
66
+
67
+ The Wind Trends widget uses two fixed Signal K paths:
68
+ - **True Wind Direction**: `environment.wind.directionTrue`
69
+ - **True Wind Speed**: `environment.wind.speedTrue`
70
+
71
+ For Wind Trends to display historical data, both of these paths **must be configured in your chosen History-API plugin**. Check your plugin documentation to ensure these paths are included in the capture list.
72
+
73
+ ## Limitations
74
+
75
+ For historical data to seed widgets, you need to, in most cases, manually configure your chosen provider to collect the said data. This is not an automatic process.
76
+
77
+ ## Troubleshooting
78
+
79
+ ### History Data Is Not Showing
80
+
81
+ **Check 1: Is the History-API plugin installed?**
82
+ - Confirm that a History-API plugin is installed and enabled on your Signal K server.
83
+ - Verify that the plugin is running without errors (check server logs).
84
+
85
+ **Check 2: Are the paths configured in the plugin?**
86
+ - Open your plugin's configuration settings.
87
+ - Confirm that the paths you're charting (e.g., `navigation.speedThroughWater`) are in the capture list.
88
+
89
+ **Check 3: Is there historical data available?**
90
+ - If the plugin was just installed, data will start recording from that moment forward.
91
+ - Charts will not show history for times before the plugin was enabled or the path configured for recording.
92
+ - Allow the plugin to record data for a while (days or weeks) before expecting deep history.
93
+
94
+ **Check 4: Is the chart time scale eligible?**
95
+ - Very short time scales (seconds) skip history seeding for performance.
96
+ - Use time scales of **minutes or longer** to enable history seeding.
97
+
98
+ **Check 5: Are there any network or permission issues?**
99
+ - Confirm that KIP can reach the Signal K server's History-API endpoint. Use the OpenApi link in the Server Admin pages to the test.
100
+ - Check browser console logs (F12) for any HTTP errors from history requests.
101
+
102
+
103
+ ## Next Steps
104
+
105
+ 1. Verify that a History-API plugin is installed on your Signal K server.
106
+ 2. Configure the plugin to capture the paths you want to chart.
107
+ 3. Wait for plugin to capture enough data to fill your Data Chart's time span.
108
+ 4. Open a Data Chart or Wind Trends widget with a time scale of minutes or longer.
109
+ 5. Allow the chart to load—history data will appear if available.
110
+ 6. For more details, consult your plugin's documentation and the Signal K community resources.
111
+
112
+
113
+ ## Questions or Issues?
114
+
115
+ - Refer to the plugin and History-API documentation for plugin-specific configuration and troubleshooting.
116
+ - For general questions or issues, see `Contact-Us` help page—the KIP community is active on Discord and GitHub.
@@ -2,15 +2,27 @@
2
2
  { "title": "The basics", "file": "welcome.md" },
3
3
  { "title": "Login & Configurations", "file": "configuration.md" },
4
4
  { "title": "Dashboards and Layout", "file": "dashboards.md" },
5
+ { "title": "Data Inspector", "file": "datainspector.md" },
5
6
  { "title": "Chartplotter Mode", "file": "chartplotter.md" },
6
7
  { "title": "Zones, Notifications and Highlights", "file": "zones.md" },
7
- { "title": "Data Inspector", "file": "datainspector.md" },
8
8
  { "title": "Digital Switching and PUT", "file": "putcontrols.md" },
9
- { "title": "The Embed Page Viewer", "file": "embedwidget.md" },
10
- { "title": "Datasets and Data Chart Widget", "file": "datasets.md" },
11
- { "title": "Kiosk Mode", "file": "kiosk.md" },
12
- { "title": "Grafana Integration", "file": "grafana.md" },
13
- { "title": "InfluxDB and Signal K", "file": "influxdb.md" },
9
+ { "title": "Historical Widget Data", "file": "widget-historical-series.md" },
10
+ {
11
+ "title": "Integrations",
12
+ "items": [
13
+ { "title": "Node-RED (Getting Started)", "file": "nodered-control-flows.md" },
14
+ { "title": "The Embed Page Viewer", "file": "embedwidget.md" },
15
+ { "title": "Using The History-API", "file": "history-api.md" },
16
+ { "title": "Grafana Integration", "file": "grafana.md" },
17
+ { "title": "InfluxDB and Signal K", "file": "influxdb.md" }
18
+ ]
19
+ },
20
+ {
21
+ "title": "Advanced Features",
22
+ "items": [
23
+ { "title": "Kiosk Mode", "file": "kiosk.md" }
24
+ ]
25
+ },
14
26
  { "title": "Online Community Content", "file": "community.md" },
15
27
  { "title": "Contact Us", "file": "contact-us.md" }
16
28
  ]
@@ -0,0 +1,125 @@
1
+ ## Node-RED Control Flows for KIP Widgets (Beginner Guide)
2
+
3
+ This guide is for first-time Node-RED users who want KIP control widgets to trigger real actions (like GPIO or relay switching) through Signal K. It is not a full Node-RED product guide or a complete flow-programming course. It focuses on the Signal K and KIP-specific parts you need for digital switching.
4
+
5
+ Before you start building flows, read **[Digital Switching and PUT Path Setup](putcontrols.md)** so you understand the core concepts, data flow, and control logic.
6
+
7
+ ## What You Are Building
8
+
9
+ Use this sequence as your basic mental model:
10
+
11
+ KIP widget → Signal K path (PUT) → Node-RED **put handler** → action node (GPIO/relay/driver/Web Service/etc.)
12
+
13
+ This is the basic flow:
14
+
15
+ 1. A KIP widget sends a value to a Signal K path (PUT).
16
+ 2. Node-RED receives that path value through a **put handler** node.
17
+ 3. Your flow converts or uses that value to perform the final action.
18
+
19
+ Think of Signal K as the shared data bus and Node-RED as the automation logic.
20
+
21
+ ### Why You Need a PUT Handler in the Flow
22
+
23
+ To receive commands sent by KIP widgets, your flow needs a Signal K node named `put handler`.
24
+
25
+ Why it is needed:
26
+ - KIP writes values to Signal K paths using PUT.
27
+ - The `put handler` listens for PUT updates on those paths.
28
+ - Without it, your flow will not receive widget commands, so no action will run.
29
+
30
+ Where to find it:
31
+ - In Node-RED, open the **Signal K** node group.
32
+ - Add the node called **put handler** to your flow.
33
+
34
+ ## Before You Start
35
+
36
+ Check these basics first:
37
+
38
+ 1. KIP is connected and authenticated to Signal K.
39
+ 2. You can see your target path in Data Inspector, unless you plan to create a new path with your flow.
40
+ 3. The path type matches your widget type.
41
+ 4. Your Node-RED environment can access target hardware (GPIO, relay board, Web Service, etc.).
42
+
43
+ ## Safety First
44
+
45
+ Always test with non-critical outputs first.
46
+
47
+ - Start with a debug/test path or non-critical device before controlling live systems.
48
+ - Validate expected behavior in Data Browser and Data Inspector before switching real loads.
49
+ - Add safe defaults so outputs stay in a known state on startup/restart.
50
+
51
+ ## 5-Minute First Success
52
+
53
+ Goal: prove the full command path works end-to-end (KIP → Signal K PUT → Node-RED `put handler` → value update).
54
+
55
+ 1. In Node-RED, open **Import** (`Cmd+I` on Mac).
56
+ 2. In **Examples**, go to: `flows -> @signalk/node-red-embedded -> put-handler`, then click **Import**.
57
+ 3. Open the imported **put handler** node and note the path it listens to (default example: `self.red.autoLights.state`).
58
+ Leave defaults unchanged for this first test.
59
+ 4. Click **Deploy**.
60
+ 5. In KIP **Data Inspector**, search for `self.red.autoLights.state`.
61
+ - Confirm the path exists.
62
+ - Confirm **PUT Support** is enabled.
63
+ 6. In KIP, add a **Switch Panel** widget:
64
+ - Add a **Toggle** control.
65
+ - Set the control path to `self.red.autoLights.state`.
66
+ - Save/apply widget settings.
67
+ 7. Toggle ON/OFF in KIP and verify:
68
+ - The widget changes state without error notifications.
69
+ - The value updates in both Signal K Admin Data Browser and KIP Data Inspector.
70
+ - The updated value is visible in Node-RED under the **send autoLights** node (green status dot, e.g. **State: 1**).
71
+
72
+ Note that this example flow uses numeric `1/0` path values. For ON/OFF control, the preferred value type is `boolean` (`true/false`).
73
+
74
+ You can change this by double-clicking the **Inject** node labeled `1` and changing `msg.payload` type from `number` to `boolean`.
75
+
76
+ When changing an existing path type, restart Signal K so the path is recreated with the new type. Path types are not safely changed in-place during runtime.
77
+
78
+ Remember to click **Deploy** after any flow change.
79
+
80
+ If this works, your core control pipeline is correctly set up. You can now repeat the same pattern with different path values for Slider and Multi State Switch paths.
81
+
82
+ ## Troubleshooting for Beginners
83
+
84
+ If something does not work, check these first.
85
+
86
+ ### Widget changes value, but flow does not react
87
+ - Verify Node-RED is watching the same exact Signal K path.
88
+ - Verify your flow includes a Signal K **put handler** node and it is configured for the same path.
89
+ - Verify authentication/permissions and path visibility.
90
+
91
+ ### Flow reacts, but hardware still does nothing
92
+ - Verify hardware node wiring, pin mapping, and runtime permissions.
93
+ - Test with a known manual value from Node-RED first.
94
+
95
+ ### Multi State widget shows no options
96
+ - Metadata is incomplete for that path. Confirm `multiple` type and possible values list in Signal K metadata.
97
+
98
+ ## Suggested Learning Path
99
+
100
+ Build in this order to keep setup simple.
101
+
102
+ 1. Start with one boolean switch end-to-end.
103
+ 2. Add one numeric slider flow.
104
+ 3. Add one multi-state mode flow.
105
+ 4. After each step, confirm path value in Data Inspector and physical result on hardware.
106
+
107
+ ## Glossary (Beginner)
108
+
109
+ Use these terms consistently while setting up your flow.
110
+
111
+ - **PUT**: Writing a value to a Signal K path.
112
+ - **Path**: The Signal K key where a value is stored (for example `self.electrical.switches.bank.0.1.state`).
113
+ - **PUT Support**: Signal K metadata indicating a path handler will react to PUT writes.
114
+ - **put handler**: The Signal K Node-RED node that receives PUT writes from Signal K paths.
115
+ - **Metadata**: Extra path information such as type, units, possible values and more.
116
+ - **Possible values**: The allowed list of modes/states for a Multi State path.
117
+
118
+ ## Related Guides
119
+
120
+ Use these guides next as needed.
121
+
122
+ - SignalK signalk-node-red: [Show and tell](https://github.com/SignalK/signalk-node-red/discussions/categories/show-and-tell)
123
+ - Path requirements and widget compatibility: [Digital Switching and PUT Path Setup](putcontrols.md)
124
+ - Finding paths and checking PUT support: [Data Inspector](datainspector.md)
125
+ - Adding and configuring widgets: [Dashboards and Layout](dashboards.md)
@@ -1,60 +1,101 @@
1
- ## Digital Switching and using PUT Commands
2
-
3
- Signal K allows users to update data paths and trigger device reactions. This can include turning a light on or off, dimming it, activating a bilge pump, or other similar actions. This guide explains how to use the Switch Panel or Slider widgets to achieve this, how to verify if a path supports data reception (known as PUT-enabled in Signal K terms), and what is required to enable PUT functionality.
4
-
5
- ## What is Required to Trigger Device Reactions
6
- For Signal K to accept any data from a client application, the application must be authenticated with a valid security token. Read the **Login & Configurations** help section for details on how to setup login in KIP. By default, sending data to a Signal K path only updates the value and broadcasts it to the network. No actions are taken unless an action handler is configured to respond to the updated value. For example:
7
- - Sending a PUT 'engage' command to `self.steering.autopilot.state` will update the state value, but the autopilot will not engage unless a handler (the autopilot plugin in this case) is set up to process the command and communicate with the hardware.
8
-
9
- To enable action handles, you have several options:
10
- 1. **Install a Plugin**:
11
- - The simplest option is to look in Signal K's Appstore. There are many plugins already available in the Signal K ecosystem such as plugins for (Shelly)[https://www.shelly.com], (Sonoff)[https://sonoff.tech/collections/diy-smart-switches] and standard N2K, like the (Yacht Devices)[https://www.yachtd.com] YDCC. Search for the plugin you need, install it, and configure it.
12
-
13
- 2. **Use Node-RED's Signal K PUT Handler**:
14
- - Node-RED is a visual and easy-to-learn automation platform installed with Signal K. The Signal K team has created Signal K-specific Node-RED nodes, allowing you to easily automate your vessel. You can find Node-RED in the Webapps section of the Signal K Admin site.
15
-
16
- 3. **Build Your Own Plugin**:
17
- - If no existing plugin meets your needs, you can create a custom Signal K plugin to handle PUT commands for your specific requirements. See: [Getting Started with Plugin Development](https://github.com/SignalK/signalk-server/blob/master/docs/develop/plugins/README.md)
18
-
19
- ## Checking for PUT Support
20
- To verify if a path supports PUT:
21
- 1. Open KIP's **Data Inspector** located in the right sidebar.
22
- 2. Search for the desired path (e.g., `self.electrical.switches.bank.0.1.state` or just `self.electrical` to list many).
23
- 3. Look for a green check indicator in the **PUT Support** column. If PUT is not enabled/supported, the path will not be listed in the path selection options of widgets designed to send data.
24
-
25
- ## Types of Path Data That Are Supported
26
- KIP currently supports the following types of paths for widgets:
27
- 1. **Boolean Paths**:
28
- - Supported by the Switch Panel widget.
29
- - These paths toggle between `true` and `false` values (e.g., turning a device on/off).
30
-
31
- 2. **Numerical Data Ranges**:
32
- - Supported by the Slider widget.
33
- - These paths allow for a range of numeric values (e.g., dimming a light or adjusting volume).
34
-
35
- For backward compatibility, boolean paths can also support numerical data types with `1/0` values. However, this legacy mode is discouraged. If needed, you can enable this mode by selecting the "Use Numeric" checkbox below the control.
36
-
37
- ## Using the Switch Panel or Slider Widgets
38
- 1. **Open the Widget Configuration**:
39
- - Add a Switch Panel or Slider widget to your dashboard.
40
- - Double-tap the widget to access its configuration options.
41
- - Configure the widget to use the desired Signal K data path from the list of PUT-enabled paths.
42
-
43
- 2. **Verify the Path**:
44
- - Use the **Data Inspector** to search for the data path you want to update.
45
- - Check if the path has **PUT Support** enabled. Paths with PUT support allow you to send updates to Signal K.
46
-
47
- 3. **Send Updates**:
48
- - Once configured, use the widget to send updates to the selected path. For example:
49
- - A Switch Panel can toggle a boolean value (e.g., turning a device on/off).
50
- - A Slider can adjust a numeric value (e.g., setting a dim percentage or audio system volume level).
51
- - Use the **Data Inspector** to search for the data path and see the updated path value.
52
- * If you find you have issues or need to troubleshoot further, using the Signal K Data Browser to validate path configuration, metadata, value or consult the server logs is also a best practice.
53
-
54
- ## Summary
55
- To update Signal K data with PUT commands:
56
- 1. Verify PUT support for the path using the Data Inspector.
57
- 2. Enable PUT support by installing a plugin, building one, or using Node-RED with the Signal K PUT Handler.
58
- 3. Use the Switch Panel or Slider widgets to send updates.
59
-
60
- With these steps, you can effectively update Signal K data and trigger actions on your vessel's systems.
1
+ ## Digital Switching, Node-RED, and PUT
2
+
3
+ Use KIP digital switching controls when you want to do real actions from your dashboard, like turning devices on/off, changing levels, or selecting operating modes. This guide helps you choose the right Signal K path for Switch Panel, Slider, and Multi State Switch controls so they work reliably in daily use.
4
+
5
+ The focus here is practical KIP setup: what path type to use, what PUT support is needed, and how to avoid common configuration mistakes. This guide supports built-in server handlers, custom plugins, and Node-RED flows.
6
+
7
+ If you are new to Node-RED, start with this guide, then continue with **[Node-RED Control Flows for KIP Widgets (Beginner Guide)](nodered-control-flows.md)** for beginner flow examples.
8
+
9
+ ## What PUT Does (and Does Not Do)
10
+
11
+ Start with this key idea:
12
+
13
+ PUT writes a value to a Signal K path. By itself, that write does not trigger hardware or system behavior. For actions to happen, a handler must be registered for that path. The handler reacts to the new value and performs the action. This handler capability is commonly called PUT Support.
14
+
15
+ Examples of server-side handlers:
16
+ - A built-in server handler
17
+ - A Signal K plugin (see [Popular Digital Switching Plugins](#popular-digital-switching-plugins))
18
+ - A Node-RED flow (see [Node-RED Control Flows for KIP Widgets (Beginner Guide)](nodered-control-flows.md))
19
+
20
+ ## Basic Requirements
21
+
22
+ Check these basics first:
23
+
24
+ 1. For security reasons, KIP must be authenticated against Signal K for the server to accept PUTs.
25
+ 2. The target path must exist in Signal K and have metadata matching the digital switching widget type.
26
+ 3. For control widgets that send commands, the path metadata must report that PUT Support is enabled.
27
+ 4. The appropriate server-side handler must be present to react to value changes and control the targeted hardware.
28
+
29
+ ## Verifying Path Configuration
30
+
31
+ Use this quick check before widget setup:
32
+
33
+ 1. Open **Data Inspector**.
34
+ 2. Search for your candidate path (for example `self.electrical.switches.bank.0.1.state`).
35
+ 3. Confirm the path data type and whether **PUT Support** is enabled (a handler is registered).
36
+ 4. For Multi State controls, confirm the path metadata includes possible values (use the Signal K Data Browser).
37
+
38
+ ## Path Eligibility by Widget and Control Type
39
+
40
+ Use this table to match each control to the right path type.
41
+
42
+ | Widget / Control | Typical Path Type | PUT Required | Notes |
43
+ |---|---|---|---|
44
+ | Switch Panel Toggle | `boolean` (preferred) or `number` (`1/0` mode) | Yes | Use **Use numeric path** only when your system expects numeric states. |
45
+ | Switch Panel Push | `boolean` (preferred) or `number` (`1/0` mode) | Yes | Behaves like a momentary action style control. |
46
+ | Switch Panel → Indicator | `boolean` or `number` | No (display only) | Indicator is read-only visualization and does not send commands. |
47
+ | Slider | `number` | Yes | Best for ranges such as dimmer level or percentage setpoints. |
48
+ | Multi State Switch | `multiple` metadata type | Yes | Metadata should expose possible values so options can be shown. |
49
+
50
+ ## Quick Setup Workflow
51
+
52
+ Follow these steps in order:
53
+
54
+ 1. Install the required plugin or configure a Node-RED flow.
55
+ 2. If you installed a new plugin, restart the server. If you created a Node-RED flow, make sure the flow is Deployed.
56
+ 3. If using Node-RED, include a Signal K **put handler** node in your flow so widget commands are received.
57
+ 4. Confirm path exists in Data Inspector.
58
+ 5. Confirm type and PUT support are compatible with widget/control type.
59
+ 6. Configure the widget in KIP.
60
+ 7. Trigger the control and verify the value changes in Data Inspector.
61
+ 8. Validate the server-side handler executes the expected real-world action.
62
+
63
+ ## Popular Digital Switching Plugins
64
+
65
+ If you prefer plugin-based integrations instead of building your own flow logic, these are commonly used options in the Signal K ecosystem:
66
+
67
+ - **Shelly Gen 1 integrations**
68
+ - Commonly used to control Shelly Gen 1 relays, switches, and I/O modules.
69
+ - npm: [signalk-shelly](https://www.npmjs.com/package/signalk-shelly)
70
+
71
+ - **Shelly Gen 2+ integrations**
72
+ - Commonly used to control Shelly Gen 2+ smart devices relays, switches, and I/O modules.
73
+ - npm: [signalk-shelly2](https://www.npmjs.com/package/signalk-shelly2)
74
+
75
+ - **Sonoff integrations**
76
+ - Commonly used for eWeLink switches running the factory firmware.
77
+ - npm: [signalk-sonoff-ewelink](https://www.npmjs.com/package/signalk-sonoff-ewelink)
78
+
79
+
80
+ ## Troubleshooting
81
+
82
+ If something does not work, check these first.
83
+
84
+ ### Path does not appear in widget config
85
+ - Check type compatibility with the control you selected.
86
+ - Check **PUT Support** for controls that write values (all except Indicator).
87
+
88
+ ### Value updates but hardware does nothing
89
+ - The PUT write is working, but no server-side action handler is registered, or the handler has an error.
90
+ - Verify plugin/flow/integration logic and server logs.
91
+
92
+ ### Multi State options are empty
93
+ - Confirm the path metadata is type `multiple` and includes possible values.
94
+
95
+ ## Related Guides
96
+
97
+ Use these guides next as needed.
98
+
99
+ - **Node-RED beginners:** [Node-RED Control Flows for KIP Widgets (Beginner Guide)](nodered-control-flows.md)
100
+ - **Path discovery and validation:** [Data Inspector](datainspector.md)
101
+ - **Widget overview and placement:** [Dashboards and Layout](dashboards.md)
@@ -10,8 +10,7 @@ KIP supports multiple input modes for seamless navigation across devices.
10
10
  | Toggle Night mode | N/A | N/A | <kbd>Shift</kbd> + <kbd>Ctrl</kbd> + <kbd>N</kbd> |
11
11
  | Toggle dashboard edit mode | N/A | N/A | <kbd>Shift</kbd> + <kbd>Ctrl</kbd> + <kbd>E</kbd> |
12
12
 
13
- _Note that the words Touch and Tap are synonymous with mouse click._
14
- <br/>
13
+ > Note that the words Touch and Tap are synonymous with mouse click.
15
14
 
16
15
  ## General Layout
17
16
  <img src="../../assets/help-docs/img/general-layout.png" alt="Sidebar Menus" title="Sidebar Menus" width="100%">
@@ -101,11 +100,11 @@ If multiple devices log in with the same Signal K user to share configuration, t
101
100
  | Wrong device switched | Two devices share same Instance Name—rename one. |
102
101
  | Works, then stops | Network drop or Signal K reconnect in progress—wait a few seconds or reload. |
103
102
 
104
- ### Tips
105
- - Keep Instance Names short but meaningful (e.g. Mast, Helm, NavTV).
106
- - For unattended displays, enable the browser’s keep‑awake / no‑sleep features if supported.
107
- - Combine with Night Mode + per‑profile layouts for role‑specific remote switching.
108
- - Use different Signal K users if you want fully isolated configurations.
103
+ > **Tips**
104
+ >- Keep Instance Names short but meaningful (e.g. Mast, Helm, NavTV).
105
+ >- For unattended displays, enable the browser’s keep‑awake / no‑sleep features if supported.
106
+ >- Combine with Night Mode + per‑profile layouts for role‑specific remote switching.
107
+ >- Use different Signal K users if you want fully isolated configurations.
109
108
 
110
109
  ### Privacy / Safety Note
111
110
  Anyone with access to a logged‑in controlling KIP instance can switch dashboards on enabled targets. Only enable remote management on displays where that is acceptable.
@@ -0,0 +1,66 @@
1
+
2
+
3
+ ## Widget Historical Chart
4
+
5
+ Widgets that use numeric paths automatically track and store data for their configured paths. This lets you easily view charts showing the last 15 minutes, 1 hour, 8 hours, or 24 hours of data.
6
+
7
+ ## Accessing Widget Historical Charts
8
+
9
+ ### Locked Dashboard Quick View
10
+ You can open a widget history dialog directly from a locked dashboard:
11
+
12
+ - **Touch devices:** Two-finger tap a widget
13
+ - **Desktop / mouse:** Right-click a widget or two-finger click on trackpads
14
+
15
+ This dialog displays only historical data (no live stream overlay).
16
+
17
+ ## Which Widgets Support History?
18
+ Most widgets that use numeric paths support history, including the Horizon widget.
19
+
20
+ ## Which Chart Widgets Support Data Seeding?
21
+
22
+ ### Data Chart Widget
23
+ - **Supported:** Yes, fully seeded with history data.
24
+ - **Requirements:** Time scale must be minutes or longer.
25
+
26
+ ### Wind Trends Widget
27
+ - **Supported:** Yes, fully seeded with history data.
28
+ - **Requirements:** Time span of `5 minutes` or `30 minutes`.
29
+
30
+ ### Numeric Widget's Mini Chart
31
+ - **Supported:** No. Mini charts use very short time windows (12 seconds) and skip history seeding.
32
+ - Mini charts start live-only for performance reasons.
33
+
34
+ ### History Seeding
35
+ When you open a chart widget with a large time scale (minutes or larger):
36
+ 1. KIP requests historical data points.
37
+ 2. The chart immediately displays the historical trend.
38
+
39
+ ### Live Updates
40
+ After history data loads:
41
+ - New data points arrive continuously.
42
+ - The chart smoothly transitions from history to live updates.
43
+ - Old data points are removed to maintain a rolling window of the configured time scale.
44
+
45
+ ## How Does Historical Widget Data Work?
46
+
47
+ KIP and its server-side plugin work together to seamlessly monitor dashboard and widget configurations. For numeric and chart-type widgets (such as Data Chart and Wind Trends), time-series data is automatically captured and managed in the background. For the Data Chart widget, this enables pre-filling the chart instead of starting empty.
48
+
49
+ Time-series data is pruned automatically, retaining only the data required by active widgets and only for the time ranges those widgets display. This process is fully transparent, requires no manual intervention, and keeps server storage efficient and lean.
50
+
51
+ This feature uses History-API query/request, introduced in Signal K version 2.22.1.
52
+
53
+ ## Configuration Options
54
+
55
+ Configuration options are found in **Settings → Options → Display** under the Widget Historical Data section.
56
+
57
+ You can:
58
+ - Disable KIP's automatic time-series and data capture services and use a History-API provider of your choice. See [Using The History-API](history-api.md) in the Integrations Help menu for more details.
59
+ - Disable access to widget historical charts (disables two-finger tap, mouse right-click, or two-finger click on trackpads).
60
+
61
+ If you don't want to use this feature, set the option to use a History API provider (this turns off the plugin's data collection), and disable widget historical charts to also disable the UI elements.
62
+
63
+ ## Questions or Issues?
64
+
65
+ - Refer to [Using The History-API](history-api.md) to learn how to use other History API providers.
66
+ - For general questions or issues, see the `Contact-Us` help page—the KIP community is active on Discord and GitHub.
@@ -2,7 +2,6 @@
2
2
 
3
3
  Stay informed about your vessel’s data with Signal K’s state notifications. For example, Signal K can flag certain sensor readings—such as depth or temperature—when they reach critical levels. KIP can then visually or audibly alert you. For instance, if the depth drops to 3 meters or less, KIP can highlight this with a warning sound or visual cue. This powerful feature combines **Zones Configuration** and **Notification Methods** in Signal K.
4
4
 
5
- ---
6
5
 
7
6
  ## Zones & Notification Configuration
8
7
 
@@ -15,7 +14,6 @@ For more details on path units, see the [Keys Reference (Vessel)](https://signal
15
14
 
16
15
  As path values move between zone ranges, Signal K generates a notification sent to KIP. Each notification includes a state (severity), optional presentation methods (visual and/or sound), and an optional message.
17
16
 
18
- ---
19
17
 
20
18
  ### Zone State and Method Guidance
21
19
 
@@ -26,13 +24,12 @@ As path values move between zone ranges, Signal K generates a notification sent
26
24
  - KIP uses predefined, state specific sound files.
27
25
  - You can configure KIP to globally ignore audio prompts in **Settings > Notifications**; this applies globally to all notifications and paths.
28
26
 
29
- **Tips:**
30
- 1. You don’t need zones for every path.
31
- 2. You don’t need to configure every zone for a given path. Only configure what is really needed. For example, if all you want is to be alerted at 20% State Of Charge, just add one zone with the Alarm state and method. No need for Warn and Alert zones in this case.
32
- 3. Don't enable the **visual** method if you don't want a zone state in the Notifications menu.
33
- 4. Keep your zone setup simple—too many Notifications can become overwhelming.
27
+ >**Tips:**
28
+ >1. You don’t need zones for every path.
29
+ >2. You don’t need to configure every zone for a given path. Only configure what is really needed. For example, if all you want is to be alerted at 20% State Of Charge, just add one zone with the Alarm state and method. No need for Warn and Alert zones in this case.
30
+ >3. Don't enable the **visual** method if you don't want a zone state in the Notifications menu.
31
+ >4. Keep your zone setup simple—too many Notifications can become overwhelming.
34
32
 
35
- ---
36
33
 
37
34
  ### Taking Action on Notifications
38
35
 
@@ -46,7 +43,6 @@ You can **Silence** or **Resolve** notifications.
46
43
  - If you turn off a device, then resolve its last notification, it will remain resolved until the device is powered back on and sends new data.
47
44
  - Different devices send data at different intervals—some multiple times per second, others as infrequently as once per day. Check your device or plugin documentation for details. Once a notification is silenced or resolved, it will stay in this state until a new value is received and evaluated.
48
45
 
49
- ---
50
46
 
51
47
  ## Displaying Zones and Notifications
52
48
 
@@ -81,7 +77,6 @@ You can **Silence** or **Resolve** notifications.
81
77
  - **Individual Widgets:**
82
78
  Widgets such as **Numeric**, **Simple Linear**, **Linear**, **Radial**, and **Steel Style** visually highlight relevant data ranges according to their configured zones and integrate notification states into their display. You can configure each widget to ignore zones if desired.
83
79
 
84
- ---
85
80
 
86
81
  ## KIP Notification Configuration Override
87
82