iobroker.proscenic 0.1.2 → 0.1.3
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/README.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# ioBroker.proscenic
|
|
2
2
|
|
|
3
|
+
<img width="147" height="139" alt="image" src="https://github.com/user-attachments/assets/c5d6a8c4-e6e4-42d6-be61-2c79e37f5a60" />
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
3
8
|
Development-stage ioBroker adapter for supported Proscenic vacuum robots,
|
|
4
9
|
initially the Proscenic M7 Pro (`M7_PRO`, model `811_LDS`) through the legacy
|
|
5
10
|
Proscenic cloud/gateway path.
|
|
@@ -13,7 +18,10 @@ against the verified legacy European Proscenic cloud, enumerate one real M7 Pro,
|
|
|
13
18
|
connect to the cloud gateway, project normalized runtime states, and expose the
|
|
14
19
|
first real-device-validated control and maintenance objects.
|
|
15
20
|
|
|
16
|
-
Verified on
|
|
21
|
+
Verified on Proscenic M7 Pro so far:
|
|
22
|
+
|
|
23
|
+
<img width="1136" height="378" alt="image" src="https://github.com/user-attachments/assets/8a53c100-3ec4-41a0-8254-29cdf28c7000" />
|
|
24
|
+
|
|
17
25
|
|
|
18
26
|
- cloud login, token acquisition, device discovery, gateway discovery, framed
|
|
19
27
|
socket reception, decryption, bounded reconnect, and adapter unload cleanup;
|
|
@@ -23,7 +31,7 @@ Verified on one owner-local Proscenic M7 Pro so far:
|
|
|
23
31
|
modes, deep cleaning, and dust collection;
|
|
24
32
|
- consumable counters for filter, side brush, main brush, and sensors;
|
|
25
33
|
- recent maintenance/message history, including dust-bag messages;
|
|
26
|
-
-
|
|
34
|
+
- local-development live-map rendering for VIS, including
|
|
27
35
|
app-oriented map colors, no-go areas, room-zone candidates, charger marker,
|
|
28
36
|
and an interpolated pose trail.
|
|
29
37
|
|
|
@@ -63,6 +71,11 @@ Security policy and contribution requirements are documented in
|
|
|
63
71
|
|
|
64
72
|
## Changelog
|
|
65
73
|
|
|
74
|
+
### 0.1.3 (2026-09-14)
|
|
75
|
+
|
|
76
|
+
- Fixed ioBroker object role metadata for command buttons and the water level
|
|
77
|
+
state.
|
|
78
|
+
|
|
66
79
|
### 0.1.2 (2026-09-14)
|
|
67
80
|
|
|
68
81
|
- Updated public maintainer/contact metadata for ioBroker latest review.
|
|
@@ -77,7 +77,7 @@ const STATE_DEFINITIONS = [
|
|
|
77
77
|
state("status.clean.totalTime", "Total cleaning time", "number", "value", { unit: "s", min: 0 }),
|
|
78
78
|
state("status.battery.percent", "Battery", "number", "value.battery", { unit: "%", min: 0, max: 100 }),
|
|
79
79
|
state("status.battery.rawPercent", "Raw battery", "number", "value.battery", { unit: "%", min: 0, max: 100 }),
|
|
80
|
-
state("status.water.level", "Water level", "number", "
|
|
80
|
+
state("status.water.level", "Water level", "number", "value", { min: 0 }),
|
|
81
81
|
state("status.mop.mode", "Mop mode", "number", "state", { min: 0 }),
|
|
82
82
|
state("status.fan.mode", "Fan mode", "string", "state"),
|
|
83
83
|
state("status.error.rawCount", "Raw error count", "number", "value", { min: 0 }),
|
|
@@ -197,7 +197,7 @@ function commandButton(definition) {
|
|
|
197
197
|
name: definition.command,
|
|
198
198
|
type: "boolean",
|
|
199
199
|
role: "button",
|
|
200
|
-
read:
|
|
200
|
+
read: false,
|
|
201
201
|
write: true,
|
|
202
202
|
def: false
|
|
203
203
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/objects/object-definitions.ts"],
|
|
4
|
-
"sourcesContent": ["import type { CommandDefinition } from \"../domain/commands\";\nimport { COMMAND_DEFINITIONS } from \"../domain/commands\";\n\nexport interface StateDefinition {\n\tid: string;\n\tobject: ioBroker.StateObject;\n}\n\nexport interface ChannelDefinition {\n\tid: string;\n\tobject: ioBroker.ChannelObject;\n}\n\nexport const CHANNEL_DEFINITIONS: readonly ChannelDefinition[] = [\n\tchannel(\"device\", \"Selected device\"),\n\tchannel(\"connection\", \"Connection\"),\n\tchannel(\"capabilities\", \"Capabilities\"),\n\tchannel(\"consumables\", \"Consumables\"),\n\tchannel(\"consumables.filter\", \"Filter\"),\n\tchannel(\"consumables.sideBrush\", \"Side brush\"),\n\tchannel(\"consumables.mainBrush\", \"Main brush\"),\n\tchannel(\"consumables.sensors\", \"Sensors\"),\n\tchannel(\"status\", \"Status\"),\n\tchannel(\"status.clean\", \"Cleaning\"),\n\tchannel(\"status.battery\", \"Battery\"),\n\tchannel(\"status.water\", \"Water\"),\n\tchannel(\"status.mop\", \"Mop\"),\n\tchannel(\"status.fan\", \"Fan\"),\n\tchannel(\"status.error\", \"Error\"),\n\tchannel(\"status.features\", \"Features\"),\n\tchannel(\"status.maintenance\", \"Maintenance\"),\n\tchannel(\"status.maintenance.history\", \"Maintenance message history\"),\n\tchannel(\"map\", \"Map metadata\"),\n\tchannel(\"map.live\", \"Experimental live map\"),\n\tchannel(\"commands\", \"Commands\"),\n\tchannel(\"commands.fan\", \"Fan commands\"),\n];\n\nexport const STATE_DEFINITIONS: readonly StateDefinition[] = [\n\tstate(\"device.code\", \"Device code\", \"string\", \"info.name\"),\n\tstate(\"device.model\", \"Device model\", \"string\", \"info.name\"),\n\tstate(\"device.online\", \"Device online\", \"boolean\", \"indicator.reachable\"),\n\tstate(\"device.image\", \"Device image\", \"string\", \"text\"),\n\tstate(\"connection.cloud\", \"Cloud connected\", \"boolean\", \"indicator.connected\"),\n\tstate(\"connection.gateway\", \"Gateway connected\", \"boolean\", \"indicator.connected\"),\n\tstate(\"connection.lastError\", \"Last redacted error\", \"string\", \"text\"),\n\tstate(\"connection.lastStatusEvent\", \"Last status event\", \"string\", \"date\"),\n\tstate(\"capabilities.statusRead\", \"Read status\", \"boolean\", \"indicator\"),\n\tstate(\"capabilities.commands\", \"Commands exposed\", \"boolean\", \"indicator\"),\n\tstate(\"capabilities.maps\", \"Maps exposed\", \"boolean\", \"indicator\"),\n\tstate(\"capabilities.consumables\", \"Consumables exposed\", \"boolean\", \"indicator\"),\n\tstate(\"capabilities.maintenanceMessages\", \"Maintenance messages exposed\", \"boolean\", \"indicator\"),\n\t...consumableStates(\"consumables.filter\", \"Filter\"),\n\t...consumableStates(\"consumables.sideBrush\", \"Side brush\"),\n\t...consumableStates(\"consumables.mainBrush\", \"Main brush\"),\n\t...consumableStates(\"consumables.sensors\", \"Sensors\"),\n\tstate(\"consumables.updated\", \"Last consumables update\", \"string\", \"date\"),\n\tstate(\"consumables.lastReadResult\", \"Last consumables read result\", \"string\", \"text\"),\n\tstate(\"consumables.lastError\", \"Last consumables read error\", \"string\", \"text\"),\n\tstate(\"status.mode\", \"Mode\", \"string\", \"state\"),\n\tstate(\"status.subMode\", \"Sub mode\", \"string\", \"state\"),\n\tstate(\"status.clean.area\", \"Cleaning area\", \"number\", \"value\", { unit: \"m\u00B2\", min: 0 }),\n\tstate(\"status.clean.time\", \"Cleaning time\", \"number\", \"value\", { unit: \"s\", min: 0 }),\n\tstate(\"status.clean.totalArea\", \"Total cleaning area\", \"number\", \"value\", { min: 0 }),\n\tstate(\"status.clean.totalTime\", \"Total cleaning time\", \"number\", \"value\", { unit: \"s\", min: 0 }),\n\tstate(\"status.battery.percent\", \"Battery\", \"number\", \"value.battery\", { unit: \"%\", min: 0, max: 100 }),\n\tstate(\"status.battery.rawPercent\", \"Raw battery\", \"number\", \"value.battery\", { unit: \"%\", min: 0, max: 100 }),\n\tstate(\"status.water.level\", \"Water level\", \"number\", \"level\", { min: 0 }),\n\tstate(\"status.mop.mode\", \"Mop mode\", \"number\", \"state\", { min: 0 }),\n\tstate(\"status.fan.mode\", \"Fan mode\", \"string\", \"state\"),\n\tstate(\"status.error.rawCount\", \"Raw error count\", \"number\", \"value\", { min: 0 }),\n\tstate(\"status.maintenance.hasWarning\", \"Has maintenance warning\", \"boolean\", \"indicator\"),\n\tstate(\"status.maintenance.warningCount\", \"Maintenance warning count\", \"number\", \"value\", { min: 0 }),\n\tstate(\"status.maintenance.code\", \"Last maintenance event code\", \"number\", \"value\"),\n\tstate(\"status.maintenance.level\", \"Last maintenance event level\", \"number\", \"value\", { min: 0 }),\n\tstate(\"status.maintenance.message\", \"Maintenance message\", \"string\", \"text\"),\n\tstate(\"status.maintenance.details\", \"Maintenance details\", \"string\", \"text\"),\n\tstate(\"status.maintenance.eventCount\", \"Maintenance event count\", \"number\", \"value\", { min: 0 }),\n\tstate(\"status.maintenance.updated\", \"Last maintenance event update\", \"string\", \"date\"),\n\tstate(\"status.maintenance.history.items\", \"Maintenance message history\", \"string\", \"json\"),\n\tstate(\"status.maintenance.history.count\", \"Maintenance message history count\", \"number\", \"value\", { min: 0 }),\n\tstate(\"status.maintenance.history.totalCount\", \"Total maintenance message count\", \"number\", \"value\", { min: 0 }),\n\tstate(\"status.maintenance.history.latestCode\", \"Latest maintenance history code\", \"number\", \"value\"),\n\tstate(\"status.maintenance.history.latestLevel\", \"Latest maintenance history level\", \"number\", \"value\", { min: 0 }),\n\tstate(\"status.maintenance.history.latestMessage\", \"Latest maintenance history message\", \"string\", \"text\"),\n\tstate(\"status.maintenance.history.latestEventTime\", \"Latest maintenance history event time\", \"string\", \"date\"),\n\tstate(\"status.maintenance.history.updated\", \"Last maintenance message history update\", \"string\", \"date\"),\n\tstate(\n\t\t\"status.maintenance.history.lastReadResult\",\n\t\t\"Last maintenance message history read result\",\n\t\t\"string\",\n\t\t\"text\",\n\t),\n\tstate(\"status.maintenance.history.lastError\", \"Last maintenance message history read error\", \"string\", \"text\"),\n\tstate(\"status.features.autoBoost\", \"Auto boost\", \"boolean\", \"indicator\"),\n\tstate(\"status.features.cleanComponents\", \"Clean components\", \"boolean\", \"indicator\"),\n\tstate(\"map.available\", \"Map data available\", \"boolean\", \"indicator\"),\n\tstate(\"map.id\", \"Map ID\", \"number\", \"value\", { min: 0 }),\n\tstate(\"map.pathId\", \"Path ID\", \"number\", \"value\", { min: 0 }),\n\tstate(\"map.width\", \"Map width\", \"number\", \"value\", { min: 0 }),\n\tstate(\"map.height\", \"Map height\", \"number\", \"value\", { min: 0 }),\n\tstate(\"map.resolution\", \"Map resolution\", \"number\", \"value\", { min: 0 }),\n\tstate(\"map.areaCount\", \"Map area count\", \"number\", \"value\", { min: 0 }),\n\tstate(\"map.compressedBytes\", \"Compressed map bytes\", \"number\", \"value\", { unit: \"B\", min: 0 }),\n\tstate(\"map.encodedBytes\", \"Encoded map bytes\", \"number\", \"value\", { unit: \"B\", min: 0 }),\n\tstate(\"map.updated\", \"Last map metadata update\", \"string\", \"date\"),\n\tstate(\"map.live.image\", \"Experimental live map image\", \"string\", \"text\"),\n\tstate(\"map.live.areas\", \"Experimental live map areas\", \"string\", \"json\"),\n\tstate(\"map.live.updated\", \"Last live map image update\", \"string\", \"date\"),\n\tstate(\"map.live.orientation\", \"Live map orientation\", \"string\", \"state\"),\n\tstate(\"map.live.poseCount\", \"Live map pose count\", \"number\", \"value\", { min: 0 }),\n\tstate(\"map.live.rawPoseCount\", \"Raw live map pose count\", \"number\", \"value\", { min: 0 }),\n\tstate(\"map.live.pathLineSegments\", \"Live map path line segments\", \"number\", \"value\", { min: 0 }),\n\tstate(\"map.live.skippedPathSegments\", \"Skipped live map path segments\", \"number\", \"value\", { min: 0 }),\n\tstate(\"map.live.currentAreaCount\", \"Current live map area count\", \"number\", \"value\", { min: 0 }),\n\tstate(\"map.live.cachedAreaCount\", \"Cached live map area count\", \"number\", \"value\", { min: 0 }),\n\tstate(\"map.live.renderedForbiddenAreaCount\", \"Rendered forbidden area count\", \"number\", \"value\", { min: 0 }),\n\tstate(\"map.live.renderedRoomAreaCount\", \"Rendered room area count\", \"number\", \"value\", { min: 0 }),\n\tstate(\"map.live.hasCachedStaticOverlays\", \"Has cached static live map overlays\", \"boolean\", \"indicator\"),\n\tstate(\"map.live.renderReason\", \"Last live map render reason\", \"string\", \"state\"),\n\tstate(\"map.live.lastPathId\", \"Last live map path ID\", \"number\", \"value\", { min: 0 }),\n\tstate(\"map.live.pathResetCount\", \"Live map path reset count\", \"number\", \"value\", { min: 0 }),\n\tstate(\"map.live.lastPoseUpdated\", \"Last live map pose update\", \"string\", \"date\"),\n\tstate(\"map.live.decompressedBytes\", \"Live map decompressed bytes\", \"number\", \"value\", { unit: \"B\", min: 0 }),\n\t...COMMAND_DEFINITIONS.map(definition => commandButton(definition)),\n\tstate(\"commands.lastCommand\", \"Last command\", \"string\", \"text\"),\n\tstate(\"commands.lastResult\", \"Last command result\", \"string\", \"text\"),\n\tstate(\"commands.lastError\", \"Last command error\", \"string\", \"text\"),\n\tstate(\"commands.lastExecution\", \"Last command execution\", \"string\", \"date\"),\n];\n\nexport async function extendAdapterObjects(adapter: ioBroker.Adapter): Promise<void> {\n\tfor (const definition of CHANNEL_DEFINITIONS) {\n\t\tawait adapter.setObjectNotExistsAsync(definition.id, definition.object);\n\t}\n\n\tfor (const definition of STATE_DEFINITIONS) {\n\t\tawait adapter.setObjectNotExistsAsync(definition.id, definition.object);\n\t}\n}\n\nfunction channel(id: string, name: string): ChannelDefinition {\n\treturn {\n\t\tid,\n\t\tobject: {\n\t\t\t_id: id,\n\t\t\ttype: \"channel\",\n\t\t\tcommon: {\n\t\t\t\tname,\n\t\t\t},\n\t\t\tnative: {},\n\t\t},\n\t};\n}\n\nfunction state(\n\tid: string,\n\tname: string,\n\ttype: ioBroker.CommonType,\n\trole: string,\n\toptions: Partial<ioBroker.StateCommon> = {},\n): StateDefinition {\n\treturn {\n\t\tid,\n\t\tobject: {\n\t\t\t_id: id,\n\t\t\ttype: \"state\",\n\t\t\tcommon: {\n\t\t\t\tname,\n\t\t\t\ttype,\n\t\t\t\trole,\n\t\t\t\tread: true,\n\t\t\t\twrite: false,\n\t\t\t\t...options,\n\t\t\t},\n\t\t\tnative: {},\n\t\t},\n\t};\n}\n\nfunction consumableStates(prefix: string, name: string): StateDefinition[] {\n\treturn [\n\t\tstate(`${prefix}.usedSeconds`, `${name} used seconds`, \"number\", \"value\", { unit: \"s\", min: 0 }),\n\t\tstate(`${prefix}.intervalHours`, `${name} interval`, \"number\", \"value\", { unit: \"h\", min: 0 }),\n\t\tstate(`${prefix}.remainingPercent`, `${name} remaining`, \"number\", \"value\", { unit: \"%\" }),\n\t\tstate(`${prefix}.overdueHours`, `${name} overdue`, \"number\", \"value\", { unit: \"h\", min: 0 }),\n\t];\n}\n\nfunction commandButton(definition: CommandDefinition): StateDefinition {\n\treturn {\n\t\tid: definition.id,\n\t\tobject: {\n\t\t\t_id: definition.id,\n\t\t\ttype: \"state\",\n\t\t\tcommon: {\n\t\t\t\tname: definition.command,\n\t\t\t\ttype: \"boolean\",\n\t\t\t\trole: \"button\",\n\t\t\t\tread: true,\n\t\t\t\twrite: true,\n\t\t\t\tdef: false,\n\t\t\t},\n\t\t\tnative: {},\n\t\t},\n\t};\n}\n"],
|
|
4
|
+
"sourcesContent": ["import type { CommandDefinition } from \"../domain/commands\";\nimport { COMMAND_DEFINITIONS } from \"../domain/commands\";\n\nexport interface StateDefinition {\n\tid: string;\n\tobject: ioBroker.StateObject;\n}\n\nexport interface ChannelDefinition {\n\tid: string;\n\tobject: ioBroker.ChannelObject;\n}\n\nexport const CHANNEL_DEFINITIONS: readonly ChannelDefinition[] = [\n\tchannel(\"device\", \"Selected device\"),\n\tchannel(\"connection\", \"Connection\"),\n\tchannel(\"capabilities\", \"Capabilities\"),\n\tchannel(\"consumables\", \"Consumables\"),\n\tchannel(\"consumables.filter\", \"Filter\"),\n\tchannel(\"consumables.sideBrush\", \"Side brush\"),\n\tchannel(\"consumables.mainBrush\", \"Main brush\"),\n\tchannel(\"consumables.sensors\", \"Sensors\"),\n\tchannel(\"status\", \"Status\"),\n\tchannel(\"status.clean\", \"Cleaning\"),\n\tchannel(\"status.battery\", \"Battery\"),\n\tchannel(\"status.water\", \"Water\"),\n\tchannel(\"status.mop\", \"Mop\"),\n\tchannel(\"status.fan\", \"Fan\"),\n\tchannel(\"status.error\", \"Error\"),\n\tchannel(\"status.features\", \"Features\"),\n\tchannel(\"status.maintenance\", \"Maintenance\"),\n\tchannel(\"status.maintenance.history\", \"Maintenance message history\"),\n\tchannel(\"map\", \"Map metadata\"),\n\tchannel(\"map.live\", \"Experimental live map\"),\n\tchannel(\"commands\", \"Commands\"),\n\tchannel(\"commands.fan\", \"Fan commands\"),\n];\n\nexport const STATE_DEFINITIONS: readonly StateDefinition[] = [\n\tstate(\"device.code\", \"Device code\", \"string\", \"info.name\"),\n\tstate(\"device.model\", \"Device model\", \"string\", \"info.name\"),\n\tstate(\"device.online\", \"Device online\", \"boolean\", \"indicator.reachable\"),\n\tstate(\"device.image\", \"Device image\", \"string\", \"text\"),\n\tstate(\"connection.cloud\", \"Cloud connected\", \"boolean\", \"indicator.connected\"),\n\tstate(\"connection.gateway\", \"Gateway connected\", \"boolean\", \"indicator.connected\"),\n\tstate(\"connection.lastError\", \"Last redacted error\", \"string\", \"text\"),\n\tstate(\"connection.lastStatusEvent\", \"Last status event\", \"string\", \"date\"),\n\tstate(\"capabilities.statusRead\", \"Read status\", \"boolean\", \"indicator\"),\n\tstate(\"capabilities.commands\", \"Commands exposed\", \"boolean\", \"indicator\"),\n\tstate(\"capabilities.maps\", \"Maps exposed\", \"boolean\", \"indicator\"),\n\tstate(\"capabilities.consumables\", \"Consumables exposed\", \"boolean\", \"indicator\"),\n\tstate(\"capabilities.maintenanceMessages\", \"Maintenance messages exposed\", \"boolean\", \"indicator\"),\n\t...consumableStates(\"consumables.filter\", \"Filter\"),\n\t...consumableStates(\"consumables.sideBrush\", \"Side brush\"),\n\t...consumableStates(\"consumables.mainBrush\", \"Main brush\"),\n\t...consumableStates(\"consumables.sensors\", \"Sensors\"),\n\tstate(\"consumables.updated\", \"Last consumables update\", \"string\", \"date\"),\n\tstate(\"consumables.lastReadResult\", \"Last consumables read result\", \"string\", \"text\"),\n\tstate(\"consumables.lastError\", \"Last consumables read error\", \"string\", \"text\"),\n\tstate(\"status.mode\", \"Mode\", \"string\", \"state\"),\n\tstate(\"status.subMode\", \"Sub mode\", \"string\", \"state\"),\n\tstate(\"status.clean.area\", \"Cleaning area\", \"number\", \"value\", { unit: \"m\u00B2\", min: 0 }),\n\tstate(\"status.clean.time\", \"Cleaning time\", \"number\", \"value\", { unit: \"s\", min: 0 }),\n\tstate(\"status.clean.totalArea\", \"Total cleaning area\", \"number\", \"value\", { min: 0 }),\n\tstate(\"status.clean.totalTime\", \"Total cleaning time\", \"number\", \"value\", { unit: \"s\", min: 0 }),\n\tstate(\"status.battery.percent\", \"Battery\", \"number\", \"value.battery\", { unit: \"%\", min: 0, max: 100 }),\n\tstate(\"status.battery.rawPercent\", \"Raw battery\", \"number\", \"value.battery\", { unit: \"%\", min: 0, max: 100 }),\n\tstate(\"status.water.level\", \"Water level\", \"number\", \"value\", { min: 0 }),\n\tstate(\"status.mop.mode\", \"Mop mode\", \"number\", \"state\", { min: 0 }),\n\tstate(\"status.fan.mode\", \"Fan mode\", \"string\", \"state\"),\n\tstate(\"status.error.rawCount\", \"Raw error count\", \"number\", \"value\", { min: 0 }),\n\tstate(\"status.maintenance.hasWarning\", \"Has maintenance warning\", \"boolean\", \"indicator\"),\n\tstate(\"status.maintenance.warningCount\", \"Maintenance warning count\", \"number\", \"value\", { min: 0 }),\n\tstate(\"status.maintenance.code\", \"Last maintenance event code\", \"number\", \"value\"),\n\tstate(\"status.maintenance.level\", \"Last maintenance event level\", \"number\", \"value\", { min: 0 }),\n\tstate(\"status.maintenance.message\", \"Maintenance message\", \"string\", \"text\"),\n\tstate(\"status.maintenance.details\", \"Maintenance details\", \"string\", \"text\"),\n\tstate(\"status.maintenance.eventCount\", \"Maintenance event count\", \"number\", \"value\", { min: 0 }),\n\tstate(\"status.maintenance.updated\", \"Last maintenance event update\", \"string\", \"date\"),\n\tstate(\"status.maintenance.history.items\", \"Maintenance message history\", \"string\", \"json\"),\n\tstate(\"status.maintenance.history.count\", \"Maintenance message history count\", \"number\", \"value\", { min: 0 }),\n\tstate(\"status.maintenance.history.totalCount\", \"Total maintenance message count\", \"number\", \"value\", { min: 0 }),\n\tstate(\"status.maintenance.history.latestCode\", \"Latest maintenance history code\", \"number\", \"value\"),\n\tstate(\"status.maintenance.history.latestLevel\", \"Latest maintenance history level\", \"number\", \"value\", { min: 0 }),\n\tstate(\"status.maintenance.history.latestMessage\", \"Latest maintenance history message\", \"string\", \"text\"),\n\tstate(\"status.maintenance.history.latestEventTime\", \"Latest maintenance history event time\", \"string\", \"date\"),\n\tstate(\"status.maintenance.history.updated\", \"Last maintenance message history update\", \"string\", \"date\"),\n\tstate(\n\t\t\"status.maintenance.history.lastReadResult\",\n\t\t\"Last maintenance message history read result\",\n\t\t\"string\",\n\t\t\"text\",\n\t),\n\tstate(\"status.maintenance.history.lastError\", \"Last maintenance message history read error\", \"string\", \"text\"),\n\tstate(\"status.features.autoBoost\", \"Auto boost\", \"boolean\", \"indicator\"),\n\tstate(\"status.features.cleanComponents\", \"Clean components\", \"boolean\", \"indicator\"),\n\tstate(\"map.available\", \"Map data available\", \"boolean\", \"indicator\"),\n\tstate(\"map.id\", \"Map ID\", \"number\", \"value\", { min: 0 }),\n\tstate(\"map.pathId\", \"Path ID\", \"number\", \"value\", { min: 0 }),\n\tstate(\"map.width\", \"Map width\", \"number\", \"value\", { min: 0 }),\n\tstate(\"map.height\", \"Map height\", \"number\", \"value\", { min: 0 }),\n\tstate(\"map.resolution\", \"Map resolution\", \"number\", \"value\", { min: 0 }),\n\tstate(\"map.areaCount\", \"Map area count\", \"number\", \"value\", { min: 0 }),\n\tstate(\"map.compressedBytes\", \"Compressed map bytes\", \"number\", \"value\", { unit: \"B\", min: 0 }),\n\tstate(\"map.encodedBytes\", \"Encoded map bytes\", \"number\", \"value\", { unit: \"B\", min: 0 }),\n\tstate(\"map.updated\", \"Last map metadata update\", \"string\", \"date\"),\n\tstate(\"map.live.image\", \"Experimental live map image\", \"string\", \"text\"),\n\tstate(\"map.live.areas\", \"Experimental live map areas\", \"string\", \"json\"),\n\tstate(\"map.live.updated\", \"Last live map image update\", \"string\", \"date\"),\n\tstate(\"map.live.orientation\", \"Live map orientation\", \"string\", \"state\"),\n\tstate(\"map.live.poseCount\", \"Live map pose count\", \"number\", \"value\", { min: 0 }),\n\tstate(\"map.live.rawPoseCount\", \"Raw live map pose count\", \"number\", \"value\", { min: 0 }),\n\tstate(\"map.live.pathLineSegments\", \"Live map path line segments\", \"number\", \"value\", { min: 0 }),\n\tstate(\"map.live.skippedPathSegments\", \"Skipped live map path segments\", \"number\", \"value\", { min: 0 }),\n\tstate(\"map.live.currentAreaCount\", \"Current live map area count\", \"number\", \"value\", { min: 0 }),\n\tstate(\"map.live.cachedAreaCount\", \"Cached live map area count\", \"number\", \"value\", { min: 0 }),\n\tstate(\"map.live.renderedForbiddenAreaCount\", \"Rendered forbidden area count\", \"number\", \"value\", { min: 0 }),\n\tstate(\"map.live.renderedRoomAreaCount\", \"Rendered room area count\", \"number\", \"value\", { min: 0 }),\n\tstate(\"map.live.hasCachedStaticOverlays\", \"Has cached static live map overlays\", \"boolean\", \"indicator\"),\n\tstate(\"map.live.renderReason\", \"Last live map render reason\", \"string\", \"state\"),\n\tstate(\"map.live.lastPathId\", \"Last live map path ID\", \"number\", \"value\", { min: 0 }),\n\tstate(\"map.live.pathResetCount\", \"Live map path reset count\", \"number\", \"value\", { min: 0 }),\n\tstate(\"map.live.lastPoseUpdated\", \"Last live map pose update\", \"string\", \"date\"),\n\tstate(\"map.live.decompressedBytes\", \"Live map decompressed bytes\", \"number\", \"value\", { unit: \"B\", min: 0 }),\n\t...COMMAND_DEFINITIONS.map(definition => commandButton(definition)),\n\tstate(\"commands.lastCommand\", \"Last command\", \"string\", \"text\"),\n\tstate(\"commands.lastResult\", \"Last command result\", \"string\", \"text\"),\n\tstate(\"commands.lastError\", \"Last command error\", \"string\", \"text\"),\n\tstate(\"commands.lastExecution\", \"Last command execution\", \"string\", \"date\"),\n];\n\nexport async function extendAdapterObjects(adapter: ioBroker.Adapter): Promise<void> {\n\tfor (const definition of CHANNEL_DEFINITIONS) {\n\t\tawait adapter.setObjectNotExistsAsync(definition.id, definition.object);\n\t}\n\n\tfor (const definition of STATE_DEFINITIONS) {\n\t\tawait adapter.setObjectNotExistsAsync(definition.id, definition.object);\n\t}\n}\n\nfunction channel(id: string, name: string): ChannelDefinition {\n\treturn {\n\t\tid,\n\t\tobject: {\n\t\t\t_id: id,\n\t\t\ttype: \"channel\",\n\t\t\tcommon: {\n\t\t\t\tname,\n\t\t\t},\n\t\t\tnative: {},\n\t\t},\n\t};\n}\n\nfunction state(\n\tid: string,\n\tname: string,\n\ttype: ioBroker.CommonType,\n\trole: string,\n\toptions: Partial<ioBroker.StateCommon> = {},\n): StateDefinition {\n\treturn {\n\t\tid,\n\t\tobject: {\n\t\t\t_id: id,\n\t\t\ttype: \"state\",\n\t\t\tcommon: {\n\t\t\t\tname,\n\t\t\t\ttype,\n\t\t\t\trole,\n\t\t\t\tread: true,\n\t\t\t\twrite: false,\n\t\t\t\t...options,\n\t\t\t},\n\t\t\tnative: {},\n\t\t},\n\t};\n}\n\nfunction consumableStates(prefix: string, name: string): StateDefinition[] {\n\treturn [\n\t\tstate(`${prefix}.usedSeconds`, `${name} used seconds`, \"number\", \"value\", { unit: \"s\", min: 0 }),\n\t\tstate(`${prefix}.intervalHours`, `${name} interval`, \"number\", \"value\", { unit: \"h\", min: 0 }),\n\t\tstate(`${prefix}.remainingPercent`, `${name} remaining`, \"number\", \"value\", { unit: \"%\" }),\n\t\tstate(`${prefix}.overdueHours`, `${name} overdue`, \"number\", \"value\", { unit: \"h\", min: 0 }),\n\t];\n}\n\nfunction commandButton(definition: CommandDefinition): StateDefinition {\n\treturn {\n\t\tid: definition.id,\n\t\tobject: {\n\t\t\t_id: definition.id,\n\t\t\ttype: \"state\",\n\t\t\tcommon: {\n\t\t\t\tname: definition.command,\n\t\t\t\ttype: \"boolean\",\n\t\t\t\trole: \"button\",\n\t\t\t\tread: false,\n\t\t\t\twrite: true,\n\t\t\t\tdef: false,\n\t\t\t},\n\t\t\tnative: {},\n\t\t},\n\t};\n}\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/io-package.json
CHANGED
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "proscenic",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.3",
|
|
5
5
|
"news": {
|
|
6
|
+
"0.1.3": {
|
|
7
|
+
"en": "Fixed ioBroker object role metadata for command buttons and the water level state",
|
|
8
|
+
"de": "ioBroker-Objektrollen für Befehlstasten und den Wasserstand-State korrigiert",
|
|
9
|
+
"ru": "Исправлены метаданные ролей объектов ioBroker для кнопок команд и состояния уровня воды",
|
|
10
|
+
"pt": "Metadados de função dos objetos ioBroker corrigidos para botões de comando e estado do nível de água",
|
|
11
|
+
"nl": "ioBroker-objectrolmetadata gecorrigeerd voor opdrachtknoppen en de waterniveau-status",
|
|
12
|
+
"fr": "Correction des métadonnées de rôle des objets ioBroker pour les boutons de commande et l'état du niveau d'eau",
|
|
13
|
+
"it": "Corretti i metadati dei ruoli degli oggetti ioBroker per i pulsanti di comando e lo stato del livello dell'acqua",
|
|
14
|
+
"es": "Corregidos los metadatos de roles de objetos ioBroker para botones de comando y estado del nivel de agua",
|
|
15
|
+
"pl": "Poprawiono metadane ról obiektów ioBroker dla przycisków poleceń i stanu poziomu wody",
|
|
16
|
+
"uk": "Виправлено метадані ролей об'єктів ioBroker для кнопок команд і стану рівня води",
|
|
17
|
+
"zh-cn": "修正命令按钮和水位状态的 ioBroker 对象角色元数据"
|
|
18
|
+
},
|
|
6
19
|
"0.1.2": {
|
|
7
20
|
"en": "Updated public maintainer metadata for ioBroker latest review",
|
|
8
21
|
"de": "Öffentliche Maintainer-Metadaten für die ioBroker-Latest-Prüfung aktualisiert",
|