@camstack/addon-provider-homeassistant 1.2.658 → 1.2.660
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 +12 -0
- package/dist/addon.js +661 -553
- package/dist/addon.mjs +191 -83
- package/dist/ha-export/ha-export.addon.js +639 -432
- package/dist/ha-export/ha-export.addon.mjs +585 -367
- package/dist/{ha-instance-settings-qhCNJbbn.mjs → legacy-integration-rows-BIbFoT26.mjs} +27 -5
- package/dist/{ha-instance-settings-CRvQ5rH6.js → legacy-integration-rows-BWVmjfDO.js} +27 -5
- package/i18n/en.json +18 -4
- package/i18n/it.json +18 -4
- package/package.json +5 -2
|
@@ -11996,7 +11996,7 @@ object({
|
|
|
11996
11996
|
params: record(string(), union([string(), number()])).optional()
|
|
11997
11997
|
});
|
|
11998
11998
|
//#endregion
|
|
11999
|
-
//#region ../types/dist/composition-
|
|
11999
|
+
//#region ../types/dist/composition-pOHbTzRB.mjs
|
|
12000
12000
|
/**
|
|
12001
12001
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
12002
12002
|
*
|
|
@@ -50855,6 +50855,9 @@ var RunningProposalEvidenceSchema = object({
|
|
|
50855
50855
|
runsFound: number().int().nonnegative(),
|
|
50856
50856
|
pausesFound: number().int().nonnegative(),
|
|
50857
50857
|
longestPauseMs: number().nonnegative(),
|
|
50858
|
+
/** Episodes shorter than ~90 s (an anti-crease pulse, a display waking): never a run, never a pause. */
|
|
50859
|
+
pulsesFound: number().int().nonnegative(),
|
|
50860
|
+
longestPulseMs: number().nonnegative(),
|
|
50858
50861
|
idleFloorW: number(),
|
|
50859
50862
|
noiseCeilingW: number(),
|
|
50860
50863
|
plateauW: number(),
|
|
@@ -81310,11 +81313,15 @@ function runningFromMediaPlayer(state, previous, fetchedAt, transitionAt) {
|
|
|
81310
81313
|
* 1. idle floor F = time-weighted median; noise ceiling N = highest value seen
|
|
81311
81314
|
* near F. A device that is not near one level most of the time has no floor.
|
|
81312
81315
|
* 2. coarse activity = above max(2N, N + 5 W); consecutive stretches are episodes.
|
|
81313
|
-
* 3.
|
|
81314
|
-
*
|
|
81316
|
+
* 3. an episode shorter than `PULSE_MAX_MS` is a PULSE (an anti-crease tumble, a
|
|
81317
|
+
* display waking): it is neither a run nor a pause. Among the remaining
|
|
81318
|
+
* episodes, gaps over `PAUSE_MAX_MS` always separate runs; the rest split in
|
|
81319
|
+
* two by the largest log-scale jump (>= 3x): the short ones are pauses INSIDE
|
|
81320
|
+
* a run (a soak), the long ones separate runs. A stretch under `MIN_RUN_MS`
|
|
81321
|
+
* is no run.
|
|
81315
81322
|
* 4. T = geometric mean of N and the plateau's 10th percentile, snapped to a
|
|
81316
|
-
* grid a person would type; stop dwell covers the longest pause
|
|
81317
|
-
* covers the longest standby blip above T.
|
|
81323
|
+
* grid a person would type; stop dwell covers the longest pause and the
|
|
81324
|
+
* kind's floor; start dwell covers the longest pulse and standby blip above T.
|
|
81318
81325
|
* 5. the numbers are proved by REPLAY through the real `dwell` evaluation: each
|
|
81319
81326
|
* run must hold exactly one true interval and nothing may flap outside.
|
|
81320
81327
|
*/
|
|
@@ -81325,6 +81332,10 @@ var MINUTE_MS$1 = 60 * SECOND_MS;
|
|
|
81325
81332
|
30 * SECOND_MS;
|
|
81326
81333
|
60 * SECOND_MS;
|
|
81327
81334
|
20 * MINUTE_MS$1;
|
|
81335
|
+
90 * SECOND_MS;
|
|
81336
|
+
30 * MINUTE_MS$1;
|
|
81337
|
+
10 * MINUTE_MS$1;
|
|
81338
|
+
DeviceType.Dryer, 3 * MINUTE_MS$1, DeviceType.Dishwasher, 3 * MINUTE_MS$1, DeviceType.Washer, 10 * MINUTE_MS$1;
|
|
81328
81339
|
10 * SECOND_MS;
|
|
81329
81340
|
10 * SECOND_MS;
|
|
81330
81341
|
DeviceFeature.FanSpeed, DeviceFeature.FanPreset, DeviceFeature.FanDirection, DeviceFeature.FanOscillating, DeviceFeature.CoverStoppable, DeviceFeature.CoverPositionable, DeviceFeature.CoverTilt, DeviceFeature.ValvePositionable, DeviceFeature.MediaPlayerVolume, DeviceFeature.ClimateFanMode;
|
|
@@ -98417,6 +98428,17 @@ function haInstanceSettingsPortsOver(api) {
|
|
|
98417
98428
|
skipRestart: true
|
|
98418
98429
|
});
|
|
98419
98430
|
return true;
|
|
98431
|
+
},
|
|
98432
|
+
clearInstanceSettingsKeys: async (integrationId, keys) => {
|
|
98433
|
+
if (!(await api.list.query()).some((i) => i.id === integrationId && i.addonId === "provider-homeassistant")) return false;
|
|
98434
|
+
const stored = await api.getSettings.query({ id: integrationId });
|
|
98435
|
+
const drop = new Set(keys);
|
|
98436
|
+
await api.setSettings.mutate({
|
|
98437
|
+
id: integrationId,
|
|
98438
|
+
settings: Object.fromEntries(Object.entries(stored).filter(([key]) => !drop.has(key))),
|
|
98439
|
+
skipRestart: true
|
|
98440
|
+
});
|
|
98441
|
+
return true;
|
|
98420
98442
|
}
|
|
98421
98443
|
};
|
|
98422
98444
|
}
|
|
@@ -11997,7 +11997,7 @@ object({
|
|
|
11997
11997
|
params: record(string(), union([string(), number()])).optional()
|
|
11998
11998
|
});
|
|
11999
11999
|
//#endregion
|
|
12000
|
-
//#region ../types/dist/composition-
|
|
12000
|
+
//#region ../types/dist/composition-pOHbTzRB.mjs
|
|
12001
12001
|
/**
|
|
12002
12002
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
12003
12003
|
*
|
|
@@ -50856,6 +50856,9 @@ var RunningProposalEvidenceSchema = object({
|
|
|
50856
50856
|
runsFound: number().int().nonnegative(),
|
|
50857
50857
|
pausesFound: number().int().nonnegative(),
|
|
50858
50858
|
longestPauseMs: number().nonnegative(),
|
|
50859
|
+
/** Episodes shorter than ~90 s (an anti-crease pulse, a display waking): never a run, never a pause. */
|
|
50860
|
+
pulsesFound: number().int().nonnegative(),
|
|
50861
|
+
longestPulseMs: number().nonnegative(),
|
|
50859
50862
|
idleFloorW: number(),
|
|
50860
50863
|
noiseCeilingW: number(),
|
|
50861
50864
|
plateauW: number(),
|
|
@@ -81311,11 +81314,15 @@ function runningFromMediaPlayer(state, previous, fetchedAt, transitionAt) {
|
|
|
81311
81314
|
* 1. idle floor F = time-weighted median; noise ceiling N = highest value seen
|
|
81312
81315
|
* near F. A device that is not near one level most of the time has no floor.
|
|
81313
81316
|
* 2. coarse activity = above max(2N, N + 5 W); consecutive stretches are episodes.
|
|
81314
|
-
* 3.
|
|
81315
|
-
*
|
|
81317
|
+
* 3. an episode shorter than `PULSE_MAX_MS` is a PULSE (an anti-crease tumble, a
|
|
81318
|
+
* display waking): it is neither a run nor a pause. Among the remaining
|
|
81319
|
+
* episodes, gaps over `PAUSE_MAX_MS` always separate runs; the rest split in
|
|
81320
|
+
* two by the largest log-scale jump (>= 3x): the short ones are pauses INSIDE
|
|
81321
|
+
* a run (a soak), the long ones separate runs. A stretch under `MIN_RUN_MS`
|
|
81322
|
+
* is no run.
|
|
81316
81323
|
* 4. T = geometric mean of N and the plateau's 10th percentile, snapped to a
|
|
81317
|
-
* grid a person would type; stop dwell covers the longest pause
|
|
81318
|
-
* covers the longest standby blip above T.
|
|
81324
|
+
* grid a person would type; stop dwell covers the longest pause and the
|
|
81325
|
+
* kind's floor; start dwell covers the longest pulse and standby blip above T.
|
|
81319
81326
|
* 5. the numbers are proved by REPLAY through the real `dwell` evaluation: each
|
|
81320
81327
|
* run must hold exactly one true interval and nothing may flap outside.
|
|
81321
81328
|
*/
|
|
@@ -81326,6 +81333,10 @@ var MINUTE_MS$1 = 60 * SECOND_MS;
|
|
|
81326
81333
|
30 * SECOND_MS;
|
|
81327
81334
|
60 * SECOND_MS;
|
|
81328
81335
|
20 * MINUTE_MS$1;
|
|
81336
|
+
90 * SECOND_MS;
|
|
81337
|
+
30 * MINUTE_MS$1;
|
|
81338
|
+
10 * MINUTE_MS$1;
|
|
81339
|
+
DeviceType.Dryer, 3 * MINUTE_MS$1, DeviceType.Dishwasher, 3 * MINUTE_MS$1, DeviceType.Washer, 10 * MINUTE_MS$1;
|
|
81329
81340
|
10 * SECOND_MS;
|
|
81330
81341
|
10 * SECOND_MS;
|
|
81331
81342
|
DeviceFeature.FanSpeed, DeviceFeature.FanPreset, DeviceFeature.FanDirection, DeviceFeature.FanOscillating, DeviceFeature.CoverStoppable, DeviceFeature.CoverPositionable, DeviceFeature.CoverTilt, DeviceFeature.ValvePositionable, DeviceFeature.MediaPlayerVolume, DeviceFeature.ClimateFanMode;
|
|
@@ -98418,6 +98429,17 @@ function haInstanceSettingsPortsOver(api) {
|
|
|
98418
98429
|
skipRestart: true
|
|
98419
98430
|
});
|
|
98420
98431
|
return true;
|
|
98432
|
+
},
|
|
98433
|
+
clearInstanceSettingsKeys: async (integrationId, keys) => {
|
|
98434
|
+
if (!(await api.list.query()).some((i) => i.id === integrationId && i.addonId === "provider-homeassistant")) return false;
|
|
98435
|
+
const stored = await api.getSettings.query({ id: integrationId });
|
|
98436
|
+
const drop = new Set(keys);
|
|
98437
|
+
await api.setSettings.mutate({
|
|
98438
|
+
id: integrationId,
|
|
98439
|
+
settings: Object.fromEntries(Object.entries(stored).filter(([key]) => !drop.has(key))),
|
|
98440
|
+
skipRestart: true
|
|
98441
|
+
});
|
|
98442
|
+
return true;
|
|
98421
98443
|
}
|
|
98422
98444
|
};
|
|
98423
98445
|
}
|
package/i18n/en.json
CHANGED
|
@@ -11,9 +11,6 @@
|
|
|
11
11
|
"haBrokerSettings.s_ha-broker-credentials.baseUrl.label": "HA base URL",
|
|
12
12
|
"haBrokerSettings.s_ha-broker-credentials.accessToken.label": "Long-lived access token",
|
|
13
13
|
"haBrokerSettings.s_ha-broker-credentials.supervisorToken.label": "Supervisor token",
|
|
14
|
-
"globalSettings.s_ha-export-brokers.title": "Home Assistant instances",
|
|
15
|
-
"globalSettings.s_ha-export-brokers.ha-export___no-brokers.label": "No brokers",
|
|
16
|
-
"globalSettings.s_ha-export-transport.title": "Connection",
|
|
17
14
|
"globalSettings.s_ha-export-advanced.title": "Advanced",
|
|
18
15
|
"globalSettings.s_ha-export-advanced.reconcileIntervalSec.label": "Reconcile interval (s)",
|
|
19
16
|
"globalSettings.s_ha-export-advanced.reconcileIntervalSec.description": "Full re-announce and re-push cadence.",
|
|
@@ -22,5 +19,22 @@
|
|
|
22
19
|
"haConfig.s_connection.service.label": "Notify service",
|
|
23
20
|
"haConfig.s_connection.service.description": "Loaded from the broker once it is picked. If the list does not load, type the part after `notify.`.",
|
|
24
21
|
"haConfig.s_connection.brokerId.label": "Broker",
|
|
25
|
-
"haConfig.s_connection.brokerId.description": "The Home Assistant connection the notification goes through."
|
|
22
|
+
"haConfig.s_connection.brokerId.description": "The Home Assistant connection the notification goes through.",
|
|
23
|
+
"globalSettings": {
|
|
24
|
+
"s_ha-export-target": {
|
|
25
|
+
"title": "Home Assistant target",
|
|
26
|
+
"description": "Which Home Assistant connection this export feeds, and how it links to images.",
|
|
27
|
+
"name": {
|
|
28
|
+
"label": "Name"
|
|
29
|
+
},
|
|
30
|
+
"connectionId": {
|
|
31
|
+
"label": "Home Assistant connection",
|
|
32
|
+
"description": "The Home Assistant broker this target pushes to. Several targets may share one."
|
|
33
|
+
},
|
|
34
|
+
"mediaRole": {
|
|
35
|
+
"label": "Image links",
|
|
36
|
+
"description": "Which address Home Assistant uses to fetch images."
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
26
40
|
}
|
package/i18n/it.json
CHANGED
|
@@ -11,9 +11,6 @@
|
|
|
11
11
|
"haBrokerSettings.s_ha-broker-credentials.baseUrl.label": "URL base di HA",
|
|
12
12
|
"haBrokerSettings.s_ha-broker-credentials.accessToken.label": "Token di accesso a lunga durata",
|
|
13
13
|
"haBrokerSettings.s_ha-broker-credentials.supervisorToken.label": "Token del Supervisor",
|
|
14
|
-
"globalSettings.s_ha-export-brokers.title": "Istanze di Home Assistant",
|
|
15
|
-
"globalSettings.s_ha-export-brokers.ha-export___no-brokers.label": "Nessun broker",
|
|
16
|
-
"globalSettings.s_ha-export-transport.title": "Connessione",
|
|
17
14
|
"globalSettings.s_ha-export-advanced.title": "Avanzate",
|
|
18
15
|
"globalSettings.s_ha-export-advanced.reconcileIntervalSec.label": "Intervallo di riconciliazione (s)",
|
|
19
16
|
"globalSettings.s_ha-export-advanced.reconcileIntervalSec.description": "Cadenza di ri-annuncio e ri-invio completo.",
|
|
@@ -22,5 +19,22 @@
|
|
|
22
19
|
"haConfig.s_connection.service.label": "Servizio di notifica",
|
|
23
20
|
"haConfig.s_connection.service.description": "Caricato dal broker una volta scelto. Se l'elenco non si carica, scrivi la parte dopo `notify.`.",
|
|
24
21
|
"haConfig.s_connection.brokerId.label": "Broker",
|
|
25
|
-
"haConfig.s_connection.brokerId.description": "La connessione Home Assistant attraverso cui passa la notifica."
|
|
22
|
+
"haConfig.s_connection.brokerId.description": "La connessione Home Assistant attraverso cui passa la notifica.",
|
|
23
|
+
"globalSettings": {
|
|
24
|
+
"s_ha-export-target": {
|
|
25
|
+
"title": "Destinazione Home Assistant",
|
|
26
|
+
"description": "Quale connessione Home Assistant alimenta questo export e come collega le immagini.",
|
|
27
|
+
"name": {
|
|
28
|
+
"label": "Nome"
|
|
29
|
+
},
|
|
30
|
+
"connectionId": {
|
|
31
|
+
"label": "Connessione Home Assistant",
|
|
32
|
+
"description": "Il broker Home Assistant a cui questa destinazione invia. Più destinazioni possono condividerne uno."
|
|
33
|
+
},
|
|
34
|
+
"mediaRole": {
|
|
35
|
+
"label": "Link alle immagini",
|
|
36
|
+
"description": "Quale indirizzo usa Home Assistant per scaricare le immagini."
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
26
40
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-provider-homeassistant",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.660",
|
|
4
4
|
"description": "Home Assistant device provider addon for CamStack",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|
|
@@ -125,6 +125,9 @@
|
|
|
125
125
|
},
|
|
126
126
|
{
|
|
127
127
|
"name": "oauth-integration"
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"name": "integration-instances"
|
|
128
131
|
}
|
|
129
132
|
]
|
|
130
133
|
}
|
|
@@ -134,7 +137,7 @@
|
|
|
134
137
|
"description": "Device provider (import) + native entity export (push). Two addons, one bundle, separate processes."
|
|
135
138
|
},
|
|
136
139
|
"requires": {
|
|
137
|
-
"server": ">=1.2.
|
|
140
|
+
"server": ">=1.2.769"
|
|
138
141
|
}
|
|
139
142
|
},
|
|
140
143
|
"files": [
|