@mxtommy/kip 4.6.0-beta.2 → 4.7.0-beta.10

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 (47) hide show
  1. package/CHANGELOG.md +12 -3
  2. package/package.json +17 -17
  3. package/plugin/history-series.service.js +125 -17
  4. package/plugin/index.js +168 -54
  5. package/plugin/kip-series-contract.js +14 -0
  6. package/plugin/openApi.json +90 -2
  7. package/plugin/sqlite-history-storage.service.js +14 -20
  8. package/public/3rdpartylicenses.txt +36 -0
  9. package/public/assets/help-docs/dashboards.md +3 -3
  10. package/public/assets/help-docs/datainspector.md +3 -3
  11. package/public/assets/help-docs/history-api.md +31 -21
  12. package/public/assets/help-docs/menu.json +1 -1
  13. package/public/assets/help-docs/nodered-control-flows.md +4 -4
  14. package/public/assets/help-docs/putcontrols.md +6 -6
  15. package/public/assets/help-docs/widget-historical-series.md +56 -12
  16. package/public/assets/help-docs/zones.md +1 -1
  17. package/public/assets/svg/icons.svg +17 -0
  18. package/public/{chunk-P7JKENHI.js → chunk-2GOHQZH5.js} +4 -4
  19. package/public/{chunk-NFJ4RQSE.js → chunk-4YDVZHMH.js} +4 -4
  20. package/public/{chunk-FZSLNGBK.js → chunk-6U74K6G4.js} +7 -7
  21. package/public/{chunk-TVNXBPFF.js → chunk-AQROQY2F.js} +1 -1
  22. package/public/{chunk-XBSU7OGT.js → chunk-AZC2WKQI.js} +1 -1
  23. package/public/{chunk-WH5CIUSB.js → chunk-BGGO4PGD.js} +1 -1
  24. package/public/{chunk-R36UY4Q4.js → chunk-BQPPRM7O.js} +1 -1
  25. package/public/{chunk-BEQKBGLG.js → chunk-BTVGQ4ZG.js} +2 -2
  26. package/public/{chunk-RCYOZLZB.js → chunk-CSIELI2Z.js} +2 -2
  27. package/public/{chunk-VXCYPAWR.js → chunk-FYDLTNP4.js} +1 -1
  28. package/public/{chunk-YI3MZWRZ.js → chunk-HSKVTFFQ.js} +1 -1
  29. package/public/{chunk-TBNKOU7M.js → chunk-IENESD5Q.js} +1 -1
  30. package/public/chunk-LS6AJ3JI.js +50 -0
  31. package/public/{chunk-SJFJEOSG.js → chunk-M37BLWHF.js} +5 -5
  32. package/public/chunk-MXUEYEZU.js +5 -0
  33. package/public/{chunk-WQSJFJLW.js → chunk-POMIQBAL.js} +2 -2
  34. package/public/{chunk-P4CRTB7N.js → chunk-PTLDR7X7.js} +1 -1
  35. package/public/{chunk-OPTBDYBL.js → chunk-PUPM3HUQ.js} +1 -1
  36. package/public/chunk-PZ6I6W3H.js +16 -0
  37. package/public/{chunk-Q2ANAJAD.js → chunk-SUWMN3AE.js} +1 -1
  38. package/public/{chunk-FZFDGAQO.js → chunk-WJFXI5PQ.js} +1 -1
  39. package/public/{chunk-BJEHRCYP.js → chunk-X44BRNVL.js} +1 -1
  40. package/public/{chunk-KWTS7JF7.js → chunk-Y6JCNR3H.js} +1 -1
  41. package/public/{chunk-VPF5756E.js → chunk-YY4ZUJFI.js} +5 -5
  42. package/public/{chunk-J6EEFXKZ.js → chunk-Z4K5KE3I.js} +8 -8
  43. package/public/index.html +1 -1
  44. package/public/{main-TZOV3JCT.js → main-775NFBN3.js} +1 -1
  45. package/public/chunk-67V4XHCY.js +0 -5
  46. package/public/chunk-BTFZS2TW.js +0 -16
  47. package/public/chunk-RFNZ4AQG.js +0 -50
@@ -1,14 +1,8 @@
1
- ## Using the History-API to Obtain Historical Data
1
+ ## Using External History-API Provider to Obtain Historical Data
2
2
 
3
- KIP can automatically request History Provider historical data points when opening chart widgets, seamlessly integrating past data with live updates.
3
+ KIP can, using a special type of plugin called a History Provider, automatically request historical data points when opening chart widgets, seamlessly integrating past data with live updates.
4
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.
5
+ This enables the display of minutes, hours, days, weeks, etc. of pre-populated historical data immediately—no waiting, no empty charts.
12
6
 
13
7
  ## Which Widgets Support History?
14
8
 
@@ -20,15 +14,16 @@ A Signal K server endpoint that provides access to recorded historical data. Beh
20
14
  ### Wind Trends Widget
21
15
  - **Supported**: Yes, uses fixed paths (True Wind Direction and Speed).
22
16
  - **Requirements**: Time Span of `5 minutes` or `30 minutes`.
23
- - See [Wind Trends Fixed Paths](#wind-trends-fixed-paths) below for configuration details.
17
+ - See Wind Trends Fixed Paths below for configuration details.
24
18
 
25
- ### Numeric Widget (with Mini Chart)
19
+ ### Mini-chart
20
+ NOTE: This is the optional chart that can be display in the background of the Numeric Widget.
26
21
  - **Supported**: No. Mini charts use very short time windows (12 seconds) and skip history seeding.
27
22
  - Mini charts start live-only for performance reasons.
28
23
 
29
24
  ## What Plugins and Signal K Version Are Required?
30
25
 
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:
26
+ You will need both support for the History-API version 2 and a compatible History provider. The History-API version 2 was introduced in Signal K version 2.22.1. Currently, two plugins support the v2 History-API:
32
27
 
33
28
  ### 1. signalk-to-influxdb2, v2.0.0 or above
34
29
  - **Purpose**: Records Signal K data to an InfluxDB v2 time-series database. Requires pre-installed InfluxDB v2.
@@ -62,40 +57,55 @@ After history data loads:
62
57
  - The chart will display only live data starting from when it was opened.
63
58
  - This is normal and does not indicate an error.
64
59
 
65
- ## Wind Trends Fixed Paths
60
+ ## Provider Configuration Information
61
+
62
+ For performance reasons, all KIP charts display a maximum of 120 datapoints. KIP looks at the chart's configured time span 'window', and ask the provider to gather the requested data and to return results as 120 datapoints.
63
+
64
+ When configuring your provider's path sampling rates, insure your sampling rules meet this requirement. Slower sampling rates will create charts with fewer datapoints/of lesser resolution. Higher sampling rates will NOT create charts with more datapoints/of higher resolution.
65
+
66
+ ### Historical Widget Charts
67
+
68
+ Collect an appropriate mount of data samples for the smallest **last 15 minutes** window; every 7.5 seconds. Every 15 seconds is not too bad a resolution either.
69
+
70
+ ### Wind Trends Fixed Paths
66
71
 
67
72
  The Wind Trends widget uses two fixed Signal K paths:
68
73
  - **True Wind Direction**: `environment.wind.directionTrue`
69
74
  - **True Wind Speed**: `environment.wind.speedTrue`
70
75
 
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.
76
+ For Wind Trends to display historical data, both of these paths **must be configured in your chosen History-API plugin**.
77
+
78
+ Plan an appropriate data sampling rate to support the chart duration (5 and 30 minutes are supported).
72
79
 
73
80
  ## Limitations
74
81
 
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.
82
+ For historical data to seed charts, you need to, in most cases, to manually configure your chosen provider to collect the said data. This is not an automatic process when using a External History Provider.
76
83
 
77
84
  ## Troubleshooting
78
85
 
79
86
  ### History Data Is Not Showing
80
87
 
81
- **Check 1: Is the History-API plugin installed?**
88
+ **Check 1: Are the Technical Requirements Meet?**
89
+ - Confirm that Signal K server version 2.22.1 or above in installed.
90
+
91
+ **Check 2: Is the History-API plugin installed?**
82
92
  - Confirm that a History-API plugin is installed and enabled on your Signal K server.
83
93
  - Verify that the plugin is running without errors (check server logs).
84
94
 
85
- **Check 2: Are the paths configured in the plugin?**
95
+ **Check 3: Are the paths configured in the plugin?**
86
96
  - Open your plugin's configuration settings.
87
97
  - Confirm that the paths you're charting (e.g., `navigation.speedThroughWater`) are in the capture list.
88
98
 
89
- **Check 3: Is there historical data available?**
99
+ **Check 4: Is there historical data available?**
90
100
  - If the plugin was just installed, data will start recording from that moment forward.
91
101
  - Charts will not show history for times before the plugin was enabled or the path configured for recording.
92
102
  - Allow the plugin to record data for a while (days or weeks) before expecting deep history.
93
103
 
94
- **Check 4: Is the chart time scale eligible?**
104
+ **Check 5: Is the chart time scale eligible?**
95
105
  - Very short time scales (seconds) skip history seeding for performance.
96
106
  - Use time scales of **minutes or longer** to enable history seeding.
97
107
 
98
- **Check 5: Are there any network or permission issues?**
108
+ **Check 6: Are there any network or permission issues?**
99
109
  - 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
110
  - Check browser console logs (F12) for any HTTP errors from history requests.
101
111
 
@@ -113,4 +123,4 @@ For historical data to seed widgets, you need to, in most cases, manually config
113
123
  ## Questions or Issues?
114
124
 
115
125
  - 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.
126
+ - For general questions or issues, see `Contact-Us` help page—the Signal K community is active on Discord and GitHub.
@@ -12,7 +12,7 @@
12
12
  "items": [
13
13
  { "title": "Node-RED (Getting Started)", "file": "nodered-control-flows.md" },
14
14
  { "title": "The Embed Page Viewer", "file": "embedwidget.md" },
15
- { "title": "Using The History-API", "file": "history-api.md" },
15
+ { "title": "External History-API Provider", "file": "history-api.md" },
16
16
  { "title": "Grafana Integration", "file": "grafana.md" },
17
17
  { "title": "InfluxDB and Signal K", "file": "influxdb.md" }
18
18
  ]
@@ -2,7 +2,7 @@
2
2
 
3
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
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.
5
+ Before you start building flows, read **[Digital Switching and PUT Path Setup](#/help/putcontrols.md)** so you understand the core concepts, data flow, and control logic.
6
6
 
7
7
  ## What You Are Building
8
8
 
@@ -120,6 +120,6 @@ Use these terms consistently while setting up your flow.
120
120
  Use these guides next as needed.
121
121
 
122
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)
123
+ - Path requirements and widget compatibility: [Digital Switching and PUT Path Setup](#/help/putcontrols.md)
124
+ - Finding paths and checking PUT support: [Data Inspector](#/help/datainspector.md)
125
+ - Adding and configuring widgets: [Dashboards and Layout](#/help/dashboards.md)
@@ -4,7 +4,7 @@ Use KIP digital switching controls when you want to do real actions from your da
4
4
 
5
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
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.
7
+ If you are new to Node-RED, start with this guide, then continue with **[Node-RED Control Flows for KIP Widgets (Beginner Guide)](#/help/nodered-control-flows.md)** for beginner flow examples.
8
8
 
9
9
  ## What PUT Does (and Does Not Do)
10
10
 
@@ -14,8 +14,8 @@ PUT writes a value to a Signal K path. By itself, that write does not trigger ha
14
14
 
15
15
  Examples of server-side handlers:
16
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))
17
+ - A Signal K plugin (see Popular Digital Switching Plugins)
18
+ - A Node-RED flow (see Node-RED Control Flows for KIP Widgets - Beginner Guide)
19
19
 
20
20
  ## Basic Requirements
21
21
 
@@ -96,6 +96,6 @@ If something does not work, check these first.
96
96
 
97
97
  Use these guides next as needed.
98
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)
99
+ - **Node-RED beginners:** [Node-RED Control Flows for KIP Widgets (Beginner Guide)](#/help/nodered-control-flows.md)
100
+ - **Path discovery and validation:** [Data Inspector](#/help/datainspector.md)
101
+ - **Widget overview and placement:** [Dashboards and Layout](#/help/dashboards.md)
@@ -1,8 +1,49 @@
1
+ ## What is Historical Widget Data
1
2
 
3
+ KIP is built first for live sailing data.
4
+ To make charts useful right away and give you easy access to widget history, KIP includes a simple built-in history feature called Time-Series.
2
5
 
3
- ## Widget Historical Chart
6
+ With this built-in feature, KIP automatically:
7
+ 1. Keeps widget history available for quick viewing.
8
+ 2. Pre-seeds Data Chart and Wind Trends so they show recent trends immediately.
9
+ 3. Syncs with dashboard and widget configuration, and automatically prunes old or unused data.
4
10
 
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.
11
+ ## Who Is It For
12
+
13
+ This is for users who want history to “just work”:
14
+ * No extra setup.
15
+ * No plugin to install.
16
+ * No data storage rules and retention policies to configure.
17
+
18
+ It is made for quick, hassle-free chart history, not data engineering.
19
+
20
+ ## Built-In Time-Series vs External History Provider
21
+
22
+ ### Built-In Time-Series (default)
23
+ - Works automatically with your dashboards and widgets.
24
+ - Stores only the data KIP needs for widget history and chart startup.
25
+ - Keeps a small rolling history and removes older data.
26
+ - If you change widgets or chart paths, KIP updates history storage rules automatically.
27
+ - No screen to manually manage what gets recorded.
28
+
29
+ #### What Time-Series Don't Do
30
+ - KIP’s built-in Time-Series is not a full data-logging system. You cannot manually set capture paths, sampling policies, or long-term retention rules in built-in mode. Use an External History Provider for this purpose.
31
+ - The dialog window displaying widget history offers **a fixed set** of the last 15 minutes, 1 hour, 8 hours, or 24 hours of data. If you are in need of more flexible and powerful data analytics capabilities, use Grafana and similar purpose built, comprehensive platforms.
32
+
33
+ ### External History Provider (advanced)
34
+
35
+ KIP can disable its built-in Time-Series/provider registration and query any History-API compatible provider instead.
36
+ You then manage capture and retention in that provider.
37
+
38
+ Choose this if you need full control, such as:
39
+
40
+ - Long-term record keeping.
41
+ - Custom retention and sampling rules.
42
+ - Analytics or integration with other tools.
43
+
44
+ When you switch to an external History-API provider, KIP still uses History API queries, but capture/retention behavior is managed by that provider so you then have to **manually manage capture and retention in that provider**.
45
+
46
+ See [External History-API Provider](#/help/history-api.md) for details.
6
47
 
7
48
  ## Accessing Widget Historical Charts
8
49
 
@@ -32,7 +73,7 @@ Most widgets that use numeric paths support history, including the Horizon widge
32
73
  - Mini charts start live-only for performance reasons.
33
74
 
34
75
  ### History Seeding
35
- When you open a chart widget with a large time scale (minutes or larger):
76
+ When you open a dashboard containing a Data Chart/Wind Trends widget with a large time scale (minutes or larger):
36
77
  1. KIP requests historical data points.
37
78
  2. The chart immediately displays the historical trend.
38
79
 
@@ -42,25 +83,28 @@ After history data loads:
42
83
  - The chart smoothly transitions from history to live updates.
43
84
  - Old data points are removed to maintain a rolling window of the configured time scale.
44
85
 
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.
86
+ ## What are the Requirements for Historical Widget Data To Work?
48
87
 
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.
88
+ I use KIP's Time-Series built-in feature:
89
+ - Node.JS v20.5.0+: The built-in automatic Time-Series feature (integrated management of data) uses node:sqlite released in Node.JS v20.5.0.
90
+ - Signal K version 2.22.1+: The history querying service uses the History-API v2, introduced in Signal K version 2.22.1.
50
91
 
51
- This feature uses History-API query/request, introduced in Signal K version 2.22.1.
92
+ I use an External History Provider:
93
+ - Signal K version 2.22.1+: The history querying service uses the History-API v2, introduced in Signal K version 2.22.1.
52
94
 
53
95
  ## Configuration Options
54
96
 
55
97
  Configuration options are found in **Settings → Options → Display** under the Widget Historical Data section.
56
98
 
57
99
  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).
100
+ - Disable KIP's automatic Time-Series in favor of the History-API provider of your choice (See [External History-API Provider](#/help/history-api.md) in the Integrations Help menu for more details).
101
+ - Disable access to widget historical charts dialogue (disables two-finger tap, mouse right-click, or two-finger click on trackpads).
60
102
 
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.
103
+ If you want to completely disable the history feature, under the **Settings Options Display** tab in the Widget Historical Data group:
104
+ - Select "Other: Use a different History API provider and configure data logging manually" option. This stops the plugin's data capture and historical query services.
105
+ - Toggle the "Disable widget historical charts" switch. This disables pointer events to access the charts dialogue window.
62
106
 
63
107
  ## Questions or Issues?
64
108
 
65
- - Refer to [Using The History-API](history-api.md) to learn how to use other History API providers.
109
+ - Refer to [External History-API Provider](#/help/history-api.md) to learn how to use other History API providers.
66
110
  - For general questions or issues, see the `Contact-Us` help page—the KIP community is active on Discord and GitHub.
@@ -6,7 +6,7 @@ Stay informed about your vessel’s data with Signal K’s state notifications.
6
6
  ## Zones & Notification Configuration
7
7
 
8
8
  **Zones** are value ranges defined as metadata for each data path. Learn more at the [Signal K Metadata documentation](https://signalk.org/specification/1.7.0/doc/data_model_metadata.html).
9
- To configure metadata in Signal K, visit the [Data Browser server page](/admin/#/databrowser) and enable the **Meta Data** switch. Here, you can add or edit **methods** and **zones** for any path you want to monitor.
9
+ To configure metadata in Signal K, visit the [Data Browser server page](/../../admin/#/databrowser) and enable the **Meta Data** switch. Here, you can add or edit **methods** and **zones** for any path you want to monitor.
10
10
 
11
11
  > **Note:** Zone values use base units (e.g., wind speed in meters per second). Define your zone ranges using the base unit for each path. KIP will automatically convert and display these values according to your widget’s unit settings.
12
12
 
@@ -331,6 +331,23 @@
331
331
  <path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" d="M10.3004 7.49991C10.3004 8.4943 9.49426 9.30041 8.49988 9.30041C7.50549 9.30041 6.69938 8.4943 6.69938 7.49991C6.69938 6.50553 7.50549 5.69942 8.49988 5.69942C9.49426 5.69942 10.3004 6.50553 10.3004 7.49991ZM11.205 8C10.9699 9.28029 9.84816 10.2504 8.49988 10.2504C7.1516 10.2504 6.0299 9.28029 5.79473 8H0.5C0.223858 8 0 7.77614 0 7.5C0 7.22386 0.223858 7 0.5 7H5.7947C6.0298 5.71962 7.15154 4.74942 8.49988 4.74942C9.84822 4.74942 10.9699 5.71962 11.2051 7H14.5C14.7761 7 15 7.22386 15 7.5C15 7.77614 14.7761 8 14.5 8H11.205Z" />
332
332
  <circle cx="8.5" cy="7.5" r="1.5" fill="var(--mat-sys-primary)" />
333
333
  </svg>
334
+ <svg id="battery_available" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 48 48">
335
+ <path stroke="currentColor" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="3" d="M36.2142 13.502H7.28334c-2.36616 0 -4.28432 1.9181 -4.28432 4.2843v12.4311c0 2.3661 1.91816 4.2843 4.28432 4.2843H36.2142c2.3661 0 4.2843 -1.9182 4.2843 -4.2843V17.7863c0 -2.3662 -1.9182 -4.2843 -4.2843 -4.2843Z"></path>
336
+ <path fill="currentColor" stroke="currentColor" stroke-linecap="square" stroke-miterlimit="10" stroke-width="3" d="M22.1236 18.6504H8.40817c-0.20709 0 -0.37497 0.1679 -0.37497 0.375v9.9489c0 0.207 0.16788 0.3749 0.37497 0.3749H22.1236c0.2072 0 0.375 -0.1679 0.375 -0.3749v-9.9489c0 -0.2071 -0.1678 -0.375 -0.375 -0.375Z"></path>
337
+ <path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="3" d="M44.999 20.501v6.9987"></path>
338
+ </svg>
339
+ <svg id="battery_charging" xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 16 16">
340
+ <path fill="var(--mat-sys-primary)" d="M9.585 2.568a0.5 0.5 0 0 1 0.226 0.58L8.677 6.832h1.99a0.5 0.5 0 0 1 0.364 0.843l-5.334 5.667a0.5 0.5 0 0 1 -0.842 -0.49L5.99 9.167H4a0.5 0.5 0 0 1 -0.364 -0.843l5.333 -5.667a0.5 0.5 0 0 1 0.616 -0.09z" stroke-width="1"></path>
341
+ <path d="M2 4h4.332l-0.94 1H2a1 1 0 0 0 -1 1v4a1 1 0 0 0 1 1h2.38l-0.308 1H2a2 2 0 0 1 -2 -2V6a2 2 0 0 1 2 -2" stroke-width="1"></path>
342
+ <path d="M2 6h2.45L2.908 7.639A1.5 1.5 0 0 0 3.313 10H2zm8.595 -2 -0.308 1H12a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1H9.276l-0.942 1H12a2 2 0 0 0 2 -2V6a2 2 0 0 0 -2 -2z" stroke-width="1"></path>
343
+ <path d="M12 10h-1.783l1.542 -1.639q0.146 -0.156 0.241 -0.34zm0 -3.354V6h-0.646a1.5 1.5 0 0 1 0.646 0.646M16 8a1.5 1.5 0 0 1 -1.5 1.5v-3A1.5 1.5 0 0 1 16 8" stroke-width="1"></path>
344
+ </svg>
345
+ <svg id="power_available" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24">
346
+ <path fill="currentColor" d="M12 2c5.5228 0 10 4.47715 10 10 0 5.5228 -4.4772 10 -10 10 -5.52285 0 -10 -4.4772 -10 -10C2 6.47715 6.47715 2 12 2m1 8h3.5l-5.4678 9.9395c0.3174 0.0382 0.6401 0.0605 0.9678 0.0605 4.4183 0 8 -3.5817 8 -8 0 -4.07955 -3.0538 -7.44434 -7 -7.93652zm-1 -6c-4.41828 0 -8 3.58172 -8 8 0 4.0795 3.05384 7.4433 7 7.9355V14H7.5l5.4668 -9.94043C12.6498 4.02138 12.3273 4 12 4" stroke-width="1"></path>
347
+ </svg>
348
+ <svg id="power_renewal" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24">
349
+ <path fill="currentColor" d="M4.06445 13C4.55672 16.9461 7.92051 20 12 20c2.3364 -0.0002 4.4372 -1.0031 5.8994 -2.6006L15.5 15h6v6l-2.1855 -2.1855C17.4894 20.7734 14.8887 21.9998 12 22c-5.18532 0 -9.44843 -3.9467 -9.9502 -9zM12.5 10H16l-4.5 9v-5H8l4.5 -9zM12 2c5.1851 0.00028 9.4485 3.94685 9.9502 9h-2.0147C19.4434 7.05399 16.0793 4.00027 12 4 9.66354 4 7.56264 5.00292 6.10059 6.60059L8.5 9h-6V3l2.18457 2.18457C6.50965 3.22563 9.11128 2 12 2" stroke-width="1"></path>
350
+ </svg>
334
351
  <svg id="dashboard-beating-starboard" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
335
352
  <g id="g9" transform="matrix(-0.70710678,0.70710678,0.70710678,0.70710678,8.8211956,-6.2237242)">
336
353
  <path d="M 12,5.9999999 C 16,9.777778 17.777778,15.444445 16,23 H 8.0000001 C 6.2222223,15.444445 8.0000001,9.777778 12,5.9999999 Z" fill="var(--mat-sys-tertiary)" id="path1" style="stroke-width:0.229061" />