@signalk/freeboard-sk 2.17.0-beta.3 → 2.18.0

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@signalk/freeboard-sk",
3
- "version": "2.17.0-beta.3",
3
+ "version": "2.18.0",
4
4
  "description": "Openlayers chart plotter implementation for Signal K",
5
5
  "keywords": [
6
6
  "signalk-webapp",
package/plugin/index.js CHANGED
@@ -2,11 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const server_api_1 = require("@signalk/server-api");
4
4
  const alarms_1 = require("./alarms/alarms");
5
+ /** @deprecated */
5
6
  const weather_service_1 = require("./weather/weather-service");
6
7
  const openapi = require("./openApi.json");
7
8
  const defaultPollInterval = 60;
8
9
  const CONFIG_SCHEMA = {
9
10
  properties: {
11
+ /** @deprecated */
10
12
  weather: {
11
13
  type: 'object',
12
14
  title: 'Weather API.',
@@ -43,6 +45,7 @@ const CONFIG_SCHEMA = {
43
45
  }
44
46
  };
45
47
  const CONFIG_UISCHEMA = {
48
+ /** @deprecated */
46
49
  weather: {
47
50
  enable: {
48
51
  'ui:widget': 'checkbox',
@@ -70,6 +73,7 @@ module.exports = (server) => {
70
73
  alarms: {
71
74
  enable: true
72
75
  },
76
+ /** @deprecated */
73
77
  weather: {
74
78
  enable: false,
75
79
  apiVersion: 3,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "openapi": "3.0.0",
3
3
  "info": {
4
- "version": "2.5.0",
4
+ "version": "2.18.0",
5
5
  "title": "Freeboard-SK API",
6
6
  "description": "API endpoints exposed by Freeboard-SK to support application functionality and experimental features.",
7
7
  "termsOfService": "http://signalk.org/terms/",
@@ -21,8 +21,8 @@
21
21
  ],
22
22
  "tags": [
23
23
  {
24
- "name": "OpenWeather",
25
- "description": "Weather data from OpenWeather service."
24
+ "name": "Alarms",
25
+ "description": "Action alarms."
26
26
  }
27
27
  ],
28
28
  "components": {
@@ -46,318 +46,6 @@
46
46
  "description": "Date / Time when data values were recorded",
47
47
  "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}(?:\\.\\d*)?)((-(\\d{2}):(\\d{2})|Z)?)$",
48
48
  "example": "2022-04-22T05:02:56.484Z"
49
- },
50
- "WeatherStationInfoModel": {
51
- "type": "object",
52
- "properties": {
53
- "id": {
54
- "type": "string",
55
- "example": "12345678"
56
- },
57
- "name": {
58
- "type": "string",
59
- "example": "Weather data relative to supplied position."
60
- },
61
- "position": {
62
- "$ref": "#/components/schemas/Position"
63
- }
64
- }
65
- },
66
- "MeteoStationResponseModel": {
67
- "type": "object",
68
- "required": ["timestamp"],
69
- "properties": {
70
- "date": {
71
- "$ref": "#/components/schemas/IsoTime"
72
- },
73
- "description": {
74
- "type": "string",
75
- "example": "broken clouds"
76
- },
77
- "sun": {
78
- "type": "object",
79
- "required": ["times"],
80
- "properties": {
81
- "sunrise": {
82
- "$ref": "#/components/schemas/IsoTime"
83
- },
84
- "sunset": {
85
- "$ref": "#/components/schemas/IsoTime"
86
- }
87
- }
88
- },
89
- "outside": {
90
- "type": "object",
91
- "properties": {
92
- "uvIndex": {
93
- "type": "number",
94
- "example": 7.5,
95
- "description": "UV Index (1 UVI = 25mW/sqm)"
96
- },
97
- "cloudCover": {
98
- "type": "number",
99
- "example": 85,
100
- "description": "Amount of cloud cover (%)"
101
- },
102
- "horizontalVisibility": {
103
- "type": "number",
104
- "example": 5000,
105
- "description": "Visibilty (m)"
106
- },
107
- "horizontalVisibilityOverRange": {
108
- "type": "boolean",
109
- "example": "true",
110
- "description": "Visibilty distance is greater than the range of the measuring equipment."
111
- },
112
- "temperature": {
113
- "type": "number",
114
- "example": 290,
115
- "description": "Air temperature (K)"
116
- },
117
- "feelsLikeTemperature": {
118
- "type": "number",
119
- "example": 277,
120
- "description": "Feels-like temperature (K)"
121
- },
122
- "dewPointTemperature": {
123
- "type": "number",
124
- "example": 260,
125
- "description": "Dew point temperature (K)"
126
- },
127
- "pressure": {
128
- "type": "number",
129
- "example": 10100,
130
- "description": "Air pressure (Pa)"
131
- },
132
- "pressureTendency": {
133
- "type": "string",
134
- "enum": ["steady", "decreasing", "increasing"],
135
- "example": "steady",
136
- "description": "Air pressure tendency"
137
- },
138
- "absoluteHumidity": {
139
- "type": "number",
140
- "example": 56,
141
- "description": "Absolute humidity (%)"
142
- },
143
- "relativeHumidity": {
144
- "type": "number",
145
- "example": 56,
146
- "description": "Relative humidity (%)"
147
- },
148
- "precipitationType": {
149
- "type": "string",
150
- "enum": ["rain", "thunderstorm", "snow", "freezing rain", "mixed/ice"],
151
- "example": "rain",
152
- "description": "Type of preceipitation"
153
- },
154
- "precipitationVolume": {
155
- "type": "number",
156
- "example": 56,
157
- "description": "Amount of precipitation (mm)"
158
- }
159
- }
160
- },
161
- "wind": {
162
- "type": "object",
163
- "properties": {
164
- "averageSpeed": {
165
- "type": "number",
166
- "example": 9.3,
167
- "description": "Average wind speed (m/s)"
168
- },
169
- "speedTrue": {
170
- "type": "number",
171
- "example": 15.3,
172
- "description": "Wind speed (m/s)"
173
- },
174
- "directionTrue": {
175
- "type": "number",
176
- "example": 2.145,
177
- "description": "Wind direction relative to true north (rad)"
178
- },
179
- "gust": {
180
- "type": "number",
181
- "example": 21.6,
182
- "description": "Wind gust (m/s)"
183
- },
184
- "gustDirectionTrue": {
185
- "type": "number",
186
- "example": 2.6,
187
- "description": "Wind gust direction relative to true north (rad)"
188
- }
189
- }
190
- },
191
- "water": {
192
- "type": "object",
193
- "properties": {
194
- "temperature": {
195
- "type": "number",
196
- "example": 21.6,
197
- "description": "Wind gust (m/s)"
198
- },
199
- "level": {
200
- "type": "number",
201
- "example": 11.9,
202
- "description": "Water level (m)"
203
- },
204
- "levelTendency": {
205
- "type": "number",
206
- "enum": ["steady", "decreasing", "increasing"],
207
- "example": "steady",
208
- "description": "Water level trend"
209
- },
210
- "waves": {
211
- "type": "object",
212
- "properties": {
213
- "significantHeight": {
214
- "type": "number",
215
- "example": 2.6,
216
- "description": "Wave height (m)"
217
- },
218
- "directionTrue": {
219
- "type": "number",
220
- "example": 2.3876,
221
- "description": "Wave direction relative to true north (rad)"
222
- },
223
- "period": {
224
- "type": "number",
225
- "example": 2.3876,
226
- "description": "Wave period (m/s)"
227
- }
228
- }
229
- },
230
- "swell": {
231
- "type": "object",
232
- "properties": {
233
- "height": {
234
- "type": "number",
235
- "example": 2.6,
236
- "description": "Swell height (m)"
237
- },
238
- "directionTrue": {
239
- "type": "number",
240
- "example": 2.3876,
241
- "description": "Swell direction relative to true north (rad)"
242
- },
243
- "period": {
244
- "type": "number",
245
- "example": 2.3876,
246
- "description": "Swell period (m/s)"
247
- }
248
- }
249
- },
250
- "seaState": {
251
- "type": "number",
252
- "example": 2,
253
- "description": "Sea state (Beaufort)"
254
- },
255
- "salinity": {
256
- "type": "number",
257
- "example": 12,
258
- "description": "Water salinity (%)"
259
- },
260
- "ice": {
261
- "type": "boolean",
262
- "example": true,
263
- "description": "Ice present."
264
- }
265
- }
266
- },
267
- "current": {
268
- "type": "object",
269
- "properties": {
270
- "drift": {
271
- "type": "number",
272
- "example": 3.4,
273
- "description": "Surface current speed (m/s)"
274
- },
275
- "set": {
276
- "type": "number",
277
- "example": 1.74,
278
- "description": "Surface current direction (rad)"
279
- }
280
- }
281
- }
282
- }
283
- },
284
- "WarningDataModel": {
285
- "type": "object",
286
- "required": ["startTime", "endTime"],
287
- "properties": {
288
- "startTime": {
289
- "$ref": "#/components/schemas/IsoTime"
290
- },
291
- "endTime": {
292
- "$ref": "#/components/schemas/IsoTime"
293
- },
294
- "source": {
295
- "type": "string",
296
- "description": "Name of source."
297
- },
298
- "type": {
299
- "type": "string",
300
- "description": "Type of warning.",
301
- "example": "Heat Advisory"
302
- },
303
- "details": {
304
- "type": "string",
305
- "description": "Text describing the details of the warning.",
306
- "example": "HEAT ADVISORY REMAINS IN EFFECT FROM 1 PM THIS AFTERNOON...."
307
- }
308
- }
309
- },
310
- "ObservationsAttrib": {
311
- "type": "object",
312
- "required": ["observations"],
313
- "properties": {
314
- "observations": {
315
- "type": "array",
316
- "items": {
317
- "$ref": "#/components/schemas/MeteoStationResponseModel"
318
- }
319
- }
320
- }
321
- },
322
- "ForecastsAttrib": {
323
- "type": "object",
324
- "required": ["forecasts"],
325
- "properties": {
326
- "forecasts": {
327
- "type": "array",
328
- "items": {
329
- "$ref": "#/components/schemas/MeteoStationResponseModel"
330
- }
331
- }
332
- }
333
- },
334
- "WarningsAttrib": {
335
- "type": "object",
336
- "required": ["warnings"],
337
- "properties": {
338
- "warnings": {
339
- "type": "array",
340
- "items": {
341
- "$ref": "#/components/schemas/WarningDataModel"
342
- }
343
- }
344
- }
345
- },
346
- "WeatherStationResponseModel": {
347
- "allOf": [
348
- {
349
- "$ref": "#/components/schemas/WeatherStationInfoModel"
350
- },
351
- {
352
- "$ref": "#/components/schemas/WarningsAttrib"
353
- },
354
- {
355
- "$ref": "#/components/schemas/ObservationsAttrib"
356
- },
357
- {
358
- "$ref": "#/components/schemas/ForecastsAttrib"
359
- }
360
- ]
361
49
  }
362
50
  },
363
51
  "responses": {
@@ -410,21 +98,11 @@
410
98
  }
411
99
  },
412
100
  "parameters": {
413
- "StationIdParam": {
101
+ "AlarmIdParam": {
414
102
  "in": "path",
415
103
  "required": true,
416
104
  "name": "id",
417
- "description": "Weather station identifier.",
418
- "schema": {
419
- "type": "string",
420
- "enum": ["freeboard-sk"]
421
- }
422
- },
423
- "EntryIdParam": {
424
- "in": "path",
425
- "required": true,
426
- "name": "entryId",
427
- "description": "Forecast entry identifier.",
105
+ "description": "Alarm identifier.",
428
106
  "schema": {
429
107
  "type": "number"
430
108
  }
@@ -433,7 +111,7 @@
433
111
  "in": "path",
434
112
  "required": true,
435
113
  "name": "alarmType",
436
- "description": "Alarm identifier.",
114
+ "description": "Alarm type.",
437
115
  "schema": {
438
116
  "type": "string",
439
117
  "enum": [
@@ -446,7 +124,8 @@
446
124
  "listing",
447
125
  "adrift",
448
126
  "piracy",
449
- "abandon"
127
+ "abandon",
128
+ "aground"
450
129
  ]
451
130
  }
452
131
  }
@@ -466,181 +145,83 @@
466
145
  },
467
146
  "security": [{ "cookieAuth": [] }, { "bearerAuth": [] }],
468
147
  "paths": {
469
- "/signalk/v2/api/meteo/{id}": {
470
- "parameters": [
471
- {
472
- "$ref": "#/components/parameters/StationIdParam"
473
- }
474
- ],
475
- "get": {
476
- "tags": ["OpenWeather"],
477
- "summary": "Nearest weather station data.",
478
- "responses": {
479
- "default": {
480
- "description": "Data from weather station that weather proivder deems closest to the vessel position.",
481
- "content": {
482
- "application/json": {
483
- "schema": {
484
- "$ref": "#/components/schemas/WeatherStationResponseModel"
485
- }
486
- }
487
- }
488
- }
489
- }
490
- }
491
- },
492
- "/signalk/v2/api/meteo/{id}/observations": {
148
+ "/signalk/v2/api/alarms/{alarmType}": {
493
149
  "parameters": [
494
150
  {
495
- "$ref": "#/components/parameters/StationIdParam"
151
+ "$ref": "#/components/parameters/AlarmTypeParam"
496
152
  }
497
153
  ],
498
- "get": {
499
- "tags": ["OpenWeather"],
500
- "summary": "Nearest weather station observation data.",
501
- "responses": {
502
- "default": {
503
- "description": "Observation data from weather station that weather proivder deems closest to the vessel position.",
504
- "content": {
505
- "application/json": {
506
- "schema": {
507
- "type": "array",
508
- "items": {
509
- "$ref": "#/components/schemas/MeteoStationResponseModel"
154
+ "post": {
155
+ "tags": ["Alarms"],
156
+ "summary": "Raise Alarm.",
157
+ "requestBody": {
158
+ "description": "Alarm message text.",
159
+ "required": false,
160
+ "content": {
161
+ "application/json": {
162
+ "schema": {
163
+ "type": "object",
164
+ "properties": {
165
+ "message": {
166
+ "type": "string",
167
+ "description": "Alarm message text.",
168
+ "example": "Person overboard!"
510
169
  }
511
170
  }
512
171
  }
513
172
  }
514
173
  }
515
- }
516
- }
517
- },
518
- "/signalk/v2/api/meteo/{id}/observations/{entryId}": {
519
- "parameters": [
520
- {
521
- "$ref": "#/components/parameters/StationIdParam"
522
174
  },
523
- {
524
- "$ref": "#/components/parameters/EntryIdParam"
525
- }
526
- ],
527
- "get": {
528
- "tags": ["OpenWeather"],
529
- "summary": "Return data for the supplied observation entry.",
530
- "responses": {
531
- "default": {
532
- "description": "Data form observation entry at the supplied position in the list of observations.",
533
- "content": {
534
- "application/json": {
535
- "schema": {
536
- "$ref": "#/components/schemas/MeteoStationResponseModel"
537
- }
538
- }
539
- }
540
- }
541
- }
542
- }
543
- },
544
- "/signalk/v2/api/meteo/{id}/forecasts": {
545
- "parameters": [
546
- {
547
- "$ref": "#/components/parameters/StationIdParam"
548
- }
549
- ],
550
- "get": {
551
- "tags": ["OpenWeather"],
552
- "summary": "Nearest weather station forecast data.",
553
175
  "responses": {
176
+ "200ActionResponse": {
177
+ "$ref": "#/components/responses/200OKResponse"
178
+ },
554
179
  "default": {
555
- "description": "Forecast data from weather station that weather proivder deems closest to the vessel position.",
556
- "content": {
557
- "application/json": {
558
- "schema": {
559
- "type": "array",
560
- "items": {
561
- "$ref": "#/components/schemas/MeteoStationResponseModel"
562
- }
563
- }
564
- }
565
- }
180
+ "$ref": "#/components/responses/ErrorResponse"
566
181
  }
567
182
  }
568
183
  }
569
184
  },
570
- "/signalk/v2/api/meteo/{id}/forecasts/{entryId}": {
185
+ "/signalk/v2/api/alarms/{alarmType}/{id}": {
571
186
  "parameters": [
572
187
  {
573
- "$ref": "#/components/parameters/StationIdParam"
188
+ "$ref": "#/components/parameters/AlarmTypeParam"
574
189
  },
575
190
  {
576
- "$ref": "#/components/parameters/EntryIdParam"
191
+ "$ref": "#/components/parameters/AlarmIdParam"
577
192
  }
578
193
  ],
579
- "get": {
580
- "tags": ["OpenWeather"],
581
- "summary": "Return data for the supplied forecast entry.",
582
- "responses": {
583
- "default": {
584
- "description": "Data form forecast entry at the supplied position in the list of forecasts.",
585
- "content": {
586
- "application/json": {
587
- "schema": {
588
- "$ref": "#/components/schemas/MeteoStationResponseModel"
589
- }
590
- }
591
- }
592
- }
593
- }
594
- }
595
- },
596
- "/signalk/v2/api/meteo/{id}/warnings": {
597
- "parameters": [
598
- {
599
- "$ref": "#/components/parameters/StationIdParam"
600
- }
601
- ],
602
- "get": {
603
- "tags": ["OpenWeather"],
604
- "summary": "Nearest weather station warning data.",
194
+ "delete": {
195
+ "tags": ["Alarms"],
196
+ "summary": "Clear / cancel Alarm.",
605
197
  "responses": {
198
+ "200ActionResponse": {
199
+ "$ref": "#/components/responses/200OKResponse"
200
+ },
606
201
  "default": {
607
- "description": "Warnings from weather station that weather proivder deems closest to the vessel position.",
608
- "content": {
609
- "application/json": {
610
- "schema": {
611
- "type": "array",
612
- "items": {
613
- "$ref": "#/components/schemas/WarningDataModel"
614
- }
615
- }
616
- }
617
- }
202
+ "$ref": "#/components/responses/ErrorResponse"
618
203
  }
619
204
  }
620
205
  }
621
206
  },
622
- "/signalk/v2/api/meteo/{id}/warnings/{entryId}": {
207
+ "/signalk/v2/api/alarms/{alarmType}/{id}/silence": {
623
208
  "parameters": [
624
209
  {
625
- "$ref": "#/components/parameters/StationIdParam"
210
+ "$ref": "#/components/parameters/AlarmTypeParam"
626
211
  },
627
212
  {
628
- "$ref": "#/components/parameters/EntryIdParam"
213
+ "$ref": "#/components/parameters/AlarmIdParam"
629
214
  }
630
215
  ],
631
- "get": {
632
- "tags": ["OpenWeather"],
633
- "summary": "Return data for the supplied warning entry.",
216
+ "post": {
217
+ "tags": ["Alarms"],
218
+ "summary": "Silence Alarm.",
634
219
  "responses": {
220
+ "200ActionResponse": {
221
+ "$ref": "#/components/responses/200OKResponse"
222
+ },
635
223
  "default": {
636
- "description": "Data form warning entry at the supplied position in the list of warnings.",
637
- "content": {
638
- "application/json": {
639
- "schema": {
640
- "$ref": "#/components/schemas/MeteoStationResponseModel"
641
- }
642
- }
643
- }
224
+ "$ref": "#/components/responses/ErrorResponse"
644
225
  }
645
226
  }
646
227
  }
@@ -119,7 +119,7 @@
119
119
  >
120
120
  </div>
121
121
 
122
- <!--<div
122
+ <div
123
123
  class="panel"
124
124
  id="deprecations"
125
125
  style="background-color: rgba(255, 0, 0, 0.4)"
@@ -128,10 +128,20 @@
128
128
  <i>Please note the following feature has been deprecated:</i><br />
129
129
  <ul>
130
130
  <li>
131
-
131
+ <b>Weather Service:</b> With the introduction to the Signal K
132
+ Weather API in Signal K Server 2.16.0 the in-built OpenWeather
133
+ provider is now deprecated and will be removed in an upcoming
134
+ release.<br />
135
+ Once you have updated Signal K Server to v2.16.0 (or later) you
136
+ can install the weather provider plugin(s) of your choice to
137
+ continue having weather data available in Freeboard-SK.<br />
138
+ <b
139
+ >Note: The <i>signalk-openweather-provider</i> plugin provides
140
+ equivalent functionality to the deprecated built-in service.</b
141
+ >
132
142
  </li>
133
143
  </ul>
134
- </div>-->
144
+ </div>
135
145
 
136
146
  <div class="panel" id="server">
137
147
  <h3>Signal K Server</h3>