matterbridge-valetudo 1.0.2
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/CHANGELOG.md +110 -0
- package/LICENSE +202 -0
- package/README.md +253 -0
- package/bmc-button.svg +22 -0
- package/dist/module.js +933 -0
- package/dist/valetudo-client.js +391 -0
- package/dist/valetudo-discovery.js +164 -0
- package/matterbridge-valetudo.schema.json +279 -0
- package/matterbridge.svg +50 -0
- package/npm-shrinkwrap.json +127 -0
- package/package.json +46 -0
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "Matterbridge Valetudo Plugin Configuration",
|
|
3
|
+
"description": "Multi-vacuum support for Valetudo-enabled robot vacuums with automatic mDNS discovery",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": ["name", "type"],
|
|
6
|
+
"properties": {
|
|
7
|
+
"name": {
|
|
8
|
+
"title": "Plugin Name",
|
|
9
|
+
"description": "Plugin identifier (read-only)",
|
|
10
|
+
"type": "string",
|
|
11
|
+
"readOnly": true
|
|
12
|
+
},
|
|
13
|
+
"type": {
|
|
14
|
+
"title": "Plugin Type",
|
|
15
|
+
"description": "Platform type (read-only)",
|
|
16
|
+
"type": "string",
|
|
17
|
+
"readOnly": true
|
|
18
|
+
},
|
|
19
|
+
"discovery": {
|
|
20
|
+
"title": "Auto-Discovery",
|
|
21
|
+
"description": "Automatic mDNS discovery of Valetudo vacuums on your network",
|
|
22
|
+
"type": "object",
|
|
23
|
+
"properties": {
|
|
24
|
+
"enabled": {
|
|
25
|
+
"title": "Enable Auto-Discovery",
|
|
26
|
+
"description": "Automatically find and add Valetudo vacuums on your network",
|
|
27
|
+
"type": "boolean",
|
|
28
|
+
"default": true
|
|
29
|
+
},
|
|
30
|
+
"timeout": {
|
|
31
|
+
"title": "Discovery Timeout (ms)",
|
|
32
|
+
"description": "How long to wait for mDNS responses (1000-30000ms)",
|
|
33
|
+
"type": "number",
|
|
34
|
+
"default": 5000,
|
|
35
|
+
"minimum": 1000,
|
|
36
|
+
"maximum": 30000
|
|
37
|
+
},
|
|
38
|
+
"scanIntervalSeconds": {
|
|
39
|
+
"title": "Periodic Scan Interval (seconds)",
|
|
40
|
+
"description": "Re-scan interval: 0 = scan once at startup, >0 = periodic scanning (useful for detecting new vacuums or IP changes)",
|
|
41
|
+
"type": "number",
|
|
42
|
+
"default": 300,
|
|
43
|
+
"minimum": 0,
|
|
44
|
+
"maximum": 86400
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"vacuums": {
|
|
49
|
+
"title": "Manual Vacuum Configuration",
|
|
50
|
+
"description": "Manually add vacuums by IP address (works alongside auto-discovery)",
|
|
51
|
+
"type": "array",
|
|
52
|
+
"items": {
|
|
53
|
+
"type": "object",
|
|
54
|
+
"required": ["ip"],
|
|
55
|
+
"properties": {
|
|
56
|
+
"ip": {
|
|
57
|
+
"title": "IP Address",
|
|
58
|
+
"description": "Static IP address or hostname of the Valetudo vacuum",
|
|
59
|
+
"type": "string",
|
|
60
|
+
"pattern": "^(?:[0-9]{1,3}\\.){3}[0-9]{1,3}$|^[a-zA-Z0-9][a-zA-Z0-9-_.]*[a-zA-Z0-9]$"
|
|
61
|
+
},
|
|
62
|
+
"name": {
|
|
63
|
+
"title": "Custom Name",
|
|
64
|
+
"description": "Optional friendly name (defaults to manufacturer + model from vacuum)",
|
|
65
|
+
"type": "string"
|
|
66
|
+
},
|
|
67
|
+
"enabled": {
|
|
68
|
+
"title": "Enabled",
|
|
69
|
+
"description": "Enable or disable this vacuum",
|
|
70
|
+
"type": "boolean",
|
|
71
|
+
"default": true
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
"default": []
|
|
76
|
+
},
|
|
77
|
+
"pollingInterval": {
|
|
78
|
+
"title": "Polling Interval (ms)",
|
|
79
|
+
"description": "How often to check vacuum status (5000-60000ms, applies to all vacuums)",
|
|
80
|
+
"type": "number",
|
|
81
|
+
"default": 30000,
|
|
82
|
+
"minimum": 5000,
|
|
83
|
+
"maximum": 60000
|
|
84
|
+
},
|
|
85
|
+
"enableServerMode": {
|
|
86
|
+
"title": "Apple Home Server Mode",
|
|
87
|
+
"description": "Enable server mode (required for Apple Home support, creates separate QR code for each vacuum)",
|
|
88
|
+
"type": "boolean",
|
|
89
|
+
"default": false
|
|
90
|
+
},
|
|
91
|
+
"positionTracking": {
|
|
92
|
+
"title": "Position Tracking",
|
|
93
|
+
"description": "Track which room/area the vacuum is currently cleaning",
|
|
94
|
+
"type": "object",
|
|
95
|
+
"properties": {
|
|
96
|
+
"enabled": {
|
|
97
|
+
"title": "Enable Position Tracking",
|
|
98
|
+
"description": "Show current room/area during cleaning",
|
|
99
|
+
"type": "boolean",
|
|
100
|
+
"default": true
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
"consumables": {
|
|
105
|
+
"title": "Consumables Tracking",
|
|
106
|
+
"description": "Monitor brush, filter, and sensor lifetime (applies to all vacuums)",
|
|
107
|
+
"type": "object",
|
|
108
|
+
"properties": {
|
|
109
|
+
"enabled": {
|
|
110
|
+
"title": "Enable Consumable Tracking",
|
|
111
|
+
"description": "Track and log consumable status",
|
|
112
|
+
"type": "boolean",
|
|
113
|
+
"default": true
|
|
114
|
+
},
|
|
115
|
+
"warningThreshold": {
|
|
116
|
+
"title": "Warning Threshold (%)",
|
|
117
|
+
"description": "Trigger warning when lifetime falls below this percentage (0-100)",
|
|
118
|
+
"type": "number",
|
|
119
|
+
"default": 10,
|
|
120
|
+
"minimum": 0,
|
|
121
|
+
"maximum": 100
|
|
122
|
+
},
|
|
123
|
+
"exposeAsContactSensors": {
|
|
124
|
+
"title": "Expose as Contact Sensors",
|
|
125
|
+
"description": "Create contact sensors for each consumable (open = needs replacement, closed = OK)",
|
|
126
|
+
"type": "boolean",
|
|
127
|
+
"default": false
|
|
128
|
+
},
|
|
129
|
+
"maxLifetimes": {
|
|
130
|
+
"title": "Maximum Lifetimes (minutes)",
|
|
131
|
+
"description": "Expected lifetime for each consumable type",
|
|
132
|
+
"type": "object",
|
|
133
|
+
"properties": {
|
|
134
|
+
"mainBrush": {
|
|
135
|
+
"title": "Main Brush",
|
|
136
|
+
"description": "Default: 18,000 minutes (300 hours)",
|
|
137
|
+
"type": "number",
|
|
138
|
+
"default": 18000,
|
|
139
|
+
"minimum": 60
|
|
140
|
+
},
|
|
141
|
+
"sideBrush": {
|
|
142
|
+
"title": "Side Brush",
|
|
143
|
+
"description": "Default: 12,000 minutes (200 hours)",
|
|
144
|
+
"type": "number",
|
|
145
|
+
"default": 12000,
|
|
146
|
+
"minimum": 60
|
|
147
|
+
},
|
|
148
|
+
"dustFilter": {
|
|
149
|
+
"title": "Dust Filter",
|
|
150
|
+
"description": "Default: 9,000 minutes (150 hours)",
|
|
151
|
+
"type": "number",
|
|
152
|
+
"default": 9000,
|
|
153
|
+
"minimum": 60
|
|
154
|
+
},
|
|
155
|
+
"sensor": {
|
|
156
|
+
"title": "Sensor Cleaning",
|
|
157
|
+
"description": "Default: 1,800 minutes (30 hours)",
|
|
158
|
+
"type": "number",
|
|
159
|
+
"default": 1800,
|
|
160
|
+
"minimum": 60
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
"intensityPresets": {
|
|
167
|
+
"title": "Intensity Presets (Advanced)",
|
|
168
|
+
"description": "Override default fan speed and water usage for each intensity level",
|
|
169
|
+
"type": "object",
|
|
170
|
+
"properties": {
|
|
171
|
+
"auto": {
|
|
172
|
+
"title": "Auto Intensity",
|
|
173
|
+
"type": "object",
|
|
174
|
+
"properties": {
|
|
175
|
+
"fanSpeed": {
|
|
176
|
+
"title": "Fan Speed",
|
|
177
|
+
"description": "e.g., 'low', 'medium', 'high', 'max'",
|
|
178
|
+
"type": "string",
|
|
179
|
+
"default": "medium"
|
|
180
|
+
},
|
|
181
|
+
"waterUsage": {
|
|
182
|
+
"title": "Water Usage",
|
|
183
|
+
"description": "For mop modes: 'min', 'low', 'medium', 'high', 'max'",
|
|
184
|
+
"type": "string",
|
|
185
|
+
"default": "medium"
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
"quiet": {
|
|
190
|
+
"title": "Quiet Intensity",
|
|
191
|
+
"type": "object",
|
|
192
|
+
"properties": {
|
|
193
|
+
"fanSpeed": {
|
|
194
|
+
"title": "Fan Speed",
|
|
195
|
+
"type": "string",
|
|
196
|
+
"default": "low"
|
|
197
|
+
},
|
|
198
|
+
"waterUsage": {
|
|
199
|
+
"title": "Water Usage",
|
|
200
|
+
"type": "string",
|
|
201
|
+
"default": "low"
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
},
|
|
205
|
+
"quick": {
|
|
206
|
+
"title": "Quick Intensity",
|
|
207
|
+
"type": "object",
|
|
208
|
+
"properties": {
|
|
209
|
+
"fanSpeed": {
|
|
210
|
+
"title": "Fan Speed",
|
|
211
|
+
"type": "string",
|
|
212
|
+
"default": "high"
|
|
213
|
+
},
|
|
214
|
+
"waterUsage": {
|
|
215
|
+
"title": "Water Usage",
|
|
216
|
+
"type": "string",
|
|
217
|
+
"default": "high"
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
},
|
|
221
|
+
"max": {
|
|
222
|
+
"title": "Max Intensity",
|
|
223
|
+
"type": "object",
|
|
224
|
+
"properties": {
|
|
225
|
+
"fanSpeed": {
|
|
226
|
+
"title": "Fan Speed",
|
|
227
|
+
"type": "string",
|
|
228
|
+
"default": "max"
|
|
229
|
+
},
|
|
230
|
+
"waterUsage": {
|
|
231
|
+
"title": "Water Usage",
|
|
232
|
+
"type": "string",
|
|
233
|
+
"default": "high"
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
},
|
|
239
|
+
"mapCache": {
|
|
240
|
+
"title": "Map Cache (Advanced)",
|
|
241
|
+
"description": "Cache configuration for efficient position tracking",
|
|
242
|
+
"type": "object",
|
|
243
|
+
"properties": {
|
|
244
|
+
"enabled": {
|
|
245
|
+
"title": "Enable Map Caching",
|
|
246
|
+
"description": "Reduce processing overhead during position tracking",
|
|
247
|
+
"type": "boolean",
|
|
248
|
+
"default": true
|
|
249
|
+
},
|
|
250
|
+
"refreshIntervalHours": {
|
|
251
|
+
"title": "Refresh Interval (hours)",
|
|
252
|
+
"description": "Hours between automatic cache refreshes (0.1-24)",
|
|
253
|
+
"type": "number",
|
|
254
|
+
"default": 1,
|
|
255
|
+
"minimum": 0.1,
|
|
256
|
+
"maximum": 24
|
|
257
|
+
},
|
|
258
|
+
"refreshOnError": {
|
|
259
|
+
"title": "Refresh on Error",
|
|
260
|
+
"description": "Auto-refresh cache when position tracking errors occur",
|
|
261
|
+
"type": "boolean",
|
|
262
|
+
"default": true
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
},
|
|
266
|
+
"debug": {
|
|
267
|
+
"title": "Debug Mode (Development)",
|
|
268
|
+
"description": "Enable verbose debug logging",
|
|
269
|
+
"type": "boolean",
|
|
270
|
+
"default": false
|
|
271
|
+
},
|
|
272
|
+
"unregisterOnShutdown": {
|
|
273
|
+
"title": "Unregister on Shutdown (Development)",
|
|
274
|
+
"description": "Remove all devices when plugin stops (development only)",
|
|
275
|
+
"type": "boolean",
|
|
276
|
+
"default": false
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
package/matterbridge.svg
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 296.2 296.2">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="lg1" x1="16.6" y1="16.6" x2="279.6" y2="279.6" gradientUnits="userSpaceOnUse">
|
|
4
|
+
<stop offset="0" stop-color="#00b48d" />
|
|
5
|
+
<stop offset=".1" stop-color="#3faa77" />
|
|
6
|
+
<stop offset=".3" stop-color="#234148" />
|
|
7
|
+
<stop offset=".7" stop-color="#203b44" />
|
|
8
|
+
<stop offset=".9" stop-color="#ad2e6e" />
|
|
9
|
+
<stop offset="1" stop-color="#c81b74" />
|
|
10
|
+
</linearGradient>
|
|
11
|
+
<linearGradient id="lg2" x1="31.1" y1="31.1" x2="265.1" y2="265.1" gradientUnits="userSpaceOnUse">
|
|
12
|
+
<stop offset="0" stop-color="#00b48d" />
|
|
13
|
+
<stop offset=".2" stop-color="#285251" />
|
|
14
|
+
<stop offset=".4" stop-color="#234148" />
|
|
15
|
+
<stop offset=".8" stop-color="#203b44" />
|
|
16
|
+
<stop offset=".9" stop-color="#a8316c" />
|
|
17
|
+
<stop offset="1" stop-color="#c81b74" />
|
|
18
|
+
</linearGradient>
|
|
19
|
+
<linearGradient id="lg3" x1="116.2" y1="143.9" x2="139.8" y2="143.9"
|
|
20
|
+
gradientUnits="userSpaceOnUse">
|
|
21
|
+
<stop offset="0" stop-color="#8bc751" />
|
|
22
|
+
<stop offset="1" stop-color="#0db14b" />
|
|
23
|
+
</linearGradient>
|
|
24
|
+
<linearGradient id="lg4" x1="136.1" y1="100.8" x2="159.6" y2="100.8"
|
|
25
|
+
xlink:href="#lg3" />
|
|
26
|
+
<linearGradient id="lg5" x1="155.3" y1="143.9" x2="178.9" y2="143.9"
|
|
27
|
+
xlink:href="#lg3" />
|
|
28
|
+
<linearGradient id="lg6" x1="46.8" y1="25.7" x2="89.6" y2="74.8" gradientUnits="userSpaceOnUse">
|
|
29
|
+
<stop offset="0" stop-color="#b1d34a" />
|
|
30
|
+
<stop offset="1" stop-color="#50b848" />
|
|
31
|
+
</linearGradient>
|
|
32
|
+
</defs>
|
|
33
|
+
<rect width="296.2" height="296.2" rx="56.7" ry="56.7" style="fill:url(#lg1)" />
|
|
34
|
+
<rect x="16.3" y="16.3" width="263.6" height="263.6" rx="50.5" ry="50.5" style="fill:url(#lg2)" />
|
|
35
|
+
<circle cx="128" cy="143.9" r="11.8" style="fill:url(#lg3)" />
|
|
36
|
+
<circle cx="147.8" cy="100.8" r="11.8" style="fill:url(#lg4)" />
|
|
37
|
+
<path
|
|
38
|
+
d="m244.6 114.5.4-.5L160 33a17 17 0 0 0-24.7-.5l-86.4 83.3a15 15 0 0 0 9.2 26.9h19.3v-4.7l-13.7-12.7v-.1l83.7-80.8 84.2 81-13.9 12.8v4.5h19.5a15 15 0 0 0 7.4-28.1Z"
|
|
39
|
+
style="fill:url(#lg3)" />
|
|
40
|
+
<circle cx="167.1" cy="143.9" r="11.8" style="fill:url(#lg5)" />
|
|
41
|
+
<path fill="#fff" d="M219 89.3V35.5a10.5 10.5 0 1 0-21 0v33.7l21 20Z" />
|
|
42
|
+
<path
|
|
43
|
+
d="M91.4 73.3H83a37 37 0 0 0-14.5-28.4L65 50.2c.1 0 12.6 9 11.7 25.4-5.3-.4-11.2-1.9-16.3-5.3-11.8-7.8-16-23.7-11.9-46 8.7 1.5 34 7 43 22.8 4.1 7.3 4.1 16.1 0 26.2Z"
|
|
44
|
+
style="fill:url(#lg6)" />
|
|
45
|
+
<path
|
|
46
|
+
d="M65.9 80a49.6 49.6 0 0 0 17.8 2.2l16.6-16c1.6-8.3.5-15.7-3.3-22.4C84.6 22 47.8 17.5 46.2 17.4l-3-.4-.6 3c-3.8 18.4-5.9 50.6 23.2 60ZM48.4 24.4c8.7 1.5 34 7 43 22.8 4.1 7.3 4.1 16.1 0 26.2H83a37 37 0 0 0-14.5-28.4l-3.7 5.3c.1 0 12.6 9 11.7 25.4-5.3-.4-11.2-1.9-16.3-5.3-11.9-7.8-16-23.7-11.9-46Z"
|
|
47
|
+
fill="#1e5857" />
|
|
48
|
+
<path fill="#fff"
|
|
49
|
+
d="M250.5 90.5a17.4 17.4 0 1 1 0-34.8 17.4 17.4 0 0 1 0 34.8Zm0-22.7a5.4 5.4 0 0 0 0 10.7 5.3 5.3 0 0 0 0-10.7ZM258.8 148.2a15.9 15.9 0 0 0-9.6 28.5c-.8 4.2-5.4 4.6-5.4 4.6h-26v-43l13.6-13-1.8-2-82.2-79-81.2 78.3-2.5 2.6 13.7 13v42.9H53a21.5 21.5 0 1 0 11.7 15h12.6v18.8c0 7.8 6.4 14.1 14.1 14.1h29.3v14.8H64a10.6 10.6 0 0 0-17.7 8 10.6 10.6 0 0 0 17.6 8h157.6a16.3 16.3 0 1 0 0-16h-84.8V229h66.8c7.8 0 14.2-6.3 14.2-14.1v-19.2h27.6c14.3 0 17.8-12.8 18.5-16.6a15.9 15.9 0 0 0-5-30.9ZM43.7 210.8a10.3 10.3 0 1 1 0-20.6 10.3 10.3 0 0 1 0 20.6Zm192 36a5 5 0 1 1 0 10 5 5 0 0 1 0-10Zm-77-34.8h-22v-34h22v34Zm8.4-79.8c2.7 0 5.2 1 7.2 2.5v-10.4L188 137s2.6 1.3 4.6 1.3h6.7v68c0 3.2-2.6 5.7-5.7 5.7h-19v-34h1.4a7.5 7.5 0 0 0 0-15H120a7.5 7.5 0 0 0 0 15h.7v34h-19.3a5.7 5.7 0 0 1-5.7-5.6v-68.1h6.7c2 0 4.6-1.3 4.6-1.3l13.7-12.7v10.4a11.7 11.7 0 0 1 16 1.6v-13a14.9 14.9 0 0 0-25-10.8s-.1.2-.1.2l-.5.5-6.9 7H92.5l55-53.2 55.1 53.2h-11.8l-7-7c0-.2-.2-.3-.4-.5l-.2-.2a14.8 14.8 0 0 0-25 10.9v12.9c2.2-2.5 5.3-4.1 8.9-4.1Zm91.7 36.7a4.9 4.9 0 1 1 0-9.7 4.9 4.9 0 0 1 0 9.7Z" />
|
|
50
|
+
</svg>
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "matterbridge-valetudo",
|
|
3
|
+
"version": "1.0.2",
|
|
4
|
+
"lockfileVersion": 3,
|
|
5
|
+
"requires": true,
|
|
6
|
+
"packages": {
|
|
7
|
+
"": {
|
|
8
|
+
"name": "matterbridge-valetudo",
|
|
9
|
+
"version": "1.0.2",
|
|
10
|
+
"license": "Apache-2.0",
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"multicast-dns": "^7.2.5",
|
|
13
|
+
"node-ansi-logger": "3.1.1",
|
|
14
|
+
"node-persist-manager": "2.0.0"
|
|
15
|
+
},
|
|
16
|
+
"engines": {
|
|
17
|
+
"node": ">=20.0.0 <21.0.0 || >=22.0.0 <23.0.0 || >=24.0.0 <25.0.0"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"node_modules/@leichtgewicht/ip-codec": {
|
|
21
|
+
"version": "2.0.5",
|
|
22
|
+
"resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz",
|
|
23
|
+
"integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==",
|
|
24
|
+
"license": "MIT"
|
|
25
|
+
},
|
|
26
|
+
"node_modules/dns-packet": {
|
|
27
|
+
"version": "5.6.1",
|
|
28
|
+
"resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz",
|
|
29
|
+
"integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==",
|
|
30
|
+
"license": "MIT",
|
|
31
|
+
"dependencies": {
|
|
32
|
+
"@leichtgewicht/ip-codec": "^2.0.1"
|
|
33
|
+
},
|
|
34
|
+
"engines": {
|
|
35
|
+
"node": ">=6"
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"node_modules/multicast-dns": {
|
|
39
|
+
"version": "7.2.5",
|
|
40
|
+
"resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz",
|
|
41
|
+
"integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==",
|
|
42
|
+
"license": "MIT",
|
|
43
|
+
"dependencies": {
|
|
44
|
+
"dns-packet": "^5.2.2",
|
|
45
|
+
"thunky": "^1.0.2"
|
|
46
|
+
},
|
|
47
|
+
"bin": {
|
|
48
|
+
"multicast-dns": "cli.js"
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"node_modules/node-ansi-logger": {
|
|
52
|
+
"version": "3.1.1",
|
|
53
|
+
"resolved": "https://registry.npmjs.org/node-ansi-logger/-/node-ansi-logger-3.1.1.tgz",
|
|
54
|
+
"integrity": "sha512-tFeCSxwiRg5XaNda5nC27alzraZP76nLtUk1JDZqb9byhW4WYaSGL7/lmxFHEI16gypQDMEYljuF+wcG+cPPHw==",
|
|
55
|
+
"hasShrinkwrap": true,
|
|
56
|
+
"license": "Apache-2.0",
|
|
57
|
+
"engines": {
|
|
58
|
+
"node": ">=18.0.0 <19.0.0 || >=20.0.0 <21.0.0 || >=22.0.0 <23.0.0 || >=24.0.0 <25.0.0"
|
|
59
|
+
},
|
|
60
|
+
"funding": {
|
|
61
|
+
"type": "buymeacoffee",
|
|
62
|
+
"url": "https://www.buymeacoffee.com/luligugithub"
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"node_modules/node-persist": {
|
|
66
|
+
"version": "4.0.4",
|
|
67
|
+
"resolved": "https://registry.npmjs.org/node-persist/-/node-persist-4.0.4.tgz",
|
|
68
|
+
"integrity": "sha512-8sPAz/7tw1mCCc8xBG4f0wi+flHkSSgQeX998iQ75Pu27evA6UUWCjSE7xnrYTg2q33oU5leJ061EKPDv6BocQ==",
|
|
69
|
+
"license": "MIT",
|
|
70
|
+
"dependencies": {
|
|
71
|
+
"p-limit": "^3.1.0"
|
|
72
|
+
},
|
|
73
|
+
"engines": {
|
|
74
|
+
"node": ">=10.12.0"
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
"node_modules/node-persist-manager": {
|
|
78
|
+
"version": "2.0.0",
|
|
79
|
+
"resolved": "https://registry.npmjs.org/node-persist-manager/-/node-persist-manager-2.0.0.tgz",
|
|
80
|
+
"integrity": "sha512-jpgOqCCn4ZEnIr4WcvqkyyGmmLJarV6aUyBlDQdG1G84X9UUmOmI1W2OZtc9K0z375CYWhjtGEXaY7GXNiEOfA==",
|
|
81
|
+
"license": "MIT",
|
|
82
|
+
"dependencies": {
|
|
83
|
+
"node-persist": "4.0.4"
|
|
84
|
+
},
|
|
85
|
+
"engines": {
|
|
86
|
+
"node": ">=18.0.0 <19.0.0 || >=20.0.0 <21.0.0 || >=22.0.0 <23.0.0 || >=24.0.0 <25.0.0"
|
|
87
|
+
},
|
|
88
|
+
"funding": {
|
|
89
|
+
"type": "buymeacoffee",
|
|
90
|
+
"url": "https://www.buymeacoffee.com/luligugithub"
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
"node_modules/p-limit": {
|
|
94
|
+
"version": "3.1.0",
|
|
95
|
+
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
|
|
96
|
+
"integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
|
|
97
|
+
"license": "MIT",
|
|
98
|
+
"dependencies": {
|
|
99
|
+
"yocto-queue": "^0.1.0"
|
|
100
|
+
},
|
|
101
|
+
"engines": {
|
|
102
|
+
"node": ">=10"
|
|
103
|
+
},
|
|
104
|
+
"funding": {
|
|
105
|
+
"url": "https://github.com/sponsors/sindresorhus"
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
"node_modules/thunky": {
|
|
109
|
+
"version": "1.1.0",
|
|
110
|
+
"resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
|
|
111
|
+
"integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
|
|
112
|
+
"license": "MIT"
|
|
113
|
+
},
|
|
114
|
+
"node_modules/yocto-queue": {
|
|
115
|
+
"version": "0.1.0",
|
|
116
|
+
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
|
|
117
|
+
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
|
|
118
|
+
"license": "MIT",
|
|
119
|
+
"engines": {
|
|
120
|
+
"node": ">=10"
|
|
121
|
+
},
|
|
122
|
+
"funding": {
|
|
123
|
+
"url": "https://github.com/sponsors/sindresorhus"
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "matterbridge-valetudo",
|
|
3
|
+
"version": "1.0.2",
|
|
4
|
+
"description": "Matterbridge plugin for Valetudo-enabled robot vacuums",
|
|
5
|
+
"author": "JGtHb",
|
|
6
|
+
"license": "Apache-2.0",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/JGtHb/matterbridge-valetudo.git"
|
|
10
|
+
},
|
|
11
|
+
"bugs": {
|
|
12
|
+
"url": "https://github.com/JGtHb/matterbridge-valetudo/issues"
|
|
13
|
+
},
|
|
14
|
+
"homepage": "https://github.com/JGtHb/matterbridge-valetudo",
|
|
15
|
+
"type": "module",
|
|
16
|
+
"main": "dist/module.js",
|
|
17
|
+
"engines": {
|
|
18
|
+
"node": ">=20.0.0 <21.0.0 || >=22.0.0 <23.0.0 || >=24.0.0 <25.0.0"
|
|
19
|
+
},
|
|
20
|
+
"keywords": [
|
|
21
|
+
"matterbridge",
|
|
22
|
+
"plugin",
|
|
23
|
+
"valetudo",
|
|
24
|
+
"robot-vacuum",
|
|
25
|
+
"vacuum-cleaner",
|
|
26
|
+
"matter.js",
|
|
27
|
+
"matter-node.js",
|
|
28
|
+
"matter",
|
|
29
|
+
"matterprotocol",
|
|
30
|
+
"iot",
|
|
31
|
+
"smarthome",
|
|
32
|
+
"connectedthings",
|
|
33
|
+
"hap",
|
|
34
|
+
"homekit",
|
|
35
|
+
"siri",
|
|
36
|
+
"google-home",
|
|
37
|
+
"alexa",
|
|
38
|
+
"homeassistant",
|
|
39
|
+
"smartthings"
|
|
40
|
+
],
|
|
41
|
+
"dependencies": {
|
|
42
|
+
"multicast-dns": "^7.2.5",
|
|
43
|
+
"node-ansi-logger": "3.1.1",
|
|
44
|
+
"node-persist-manager": "2.0.0"
|
|
45
|
+
}
|
|
46
|
+
}
|