@victronenergy/mfd-modules 8.1.0 → 9.0.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/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js.map +1 -1
- package/dist/src/Modules/AcLoads/AcLoads.provider.d.ts +1 -0
- package/dist/src/Modules/AcLoads/AcLoads.provider.d.ts.map +1 -0
- package/dist/src/Modules/AcLoads/AcLoads.provider.js.map +1 -1
- package/dist/src/Modules/AcLoads/index.d.ts +1 -0
- package/dist/src/Modules/AcLoads/index.d.ts.map +1 -0
- package/dist/src/Modules/AcLoads/index.js.map +1 -1
- package/dist/src/Modules/AcMode/AcMode.provider.d.ts +1 -0
- package/dist/src/Modules/AcMode/AcMode.provider.d.ts.map +1 -0
- package/dist/src/Modules/AcMode/AcMode.provider.js.map +1 -1
- package/dist/src/Modules/AcMode/index.d.ts +1 -0
- package/dist/src/Modules/AcMode/index.d.ts.map +1 -0
- package/dist/src/Modules/AcMode/index.js.map +1 -1
- package/dist/src/Modules/ActiveSource/ActiveInValues.provider.d.ts +1 -0
- package/dist/src/Modules/ActiveSource/ActiveInValues.provider.d.ts.map +1 -0
- package/dist/src/Modules/ActiveSource/ActiveInValues.provider.js.map +1 -1
- package/dist/src/Modules/ActiveSource/ActiveSource.provider.d.ts +1 -0
- package/dist/src/Modules/ActiveSource/ActiveSource.provider.d.ts.map +1 -0
- package/dist/src/Modules/ActiveSource/ActiveSource.provider.js.map +1 -1
- package/dist/src/Modules/ActiveSource/index.d.ts +1 -0
- package/dist/src/Modules/ActiveSource/index.d.ts.map +1 -0
- package/dist/src/Modules/ActiveSource/index.js.map +1 -1
- package/dist/src/Modules/Alternators/Alternator.provider.d.ts +1 -0
- package/dist/src/Modules/Alternators/Alternator.provider.d.ts.map +1 -0
- package/dist/src/Modules/Alternators/Alternator.provider.js.map +1 -1
- package/dist/src/Modules/Alternators/Alternators.provider.d.ts +1 -0
- package/dist/src/Modules/Alternators/Alternators.provider.d.ts.map +1 -0
- package/dist/src/Modules/Alternators/Alternators.provider.js +1 -1
- package/dist/src/Modules/Alternators/Alternators.provider.js.map +1 -1
- package/dist/src/Modules/Alternators/Alternators.store.d.ts +1 -0
- package/dist/src/Modules/Alternators/Alternators.store.d.ts.map +1 -0
- package/dist/src/Modules/Alternators/Alternators.store.js.map +1 -1
- package/dist/src/Modules/Alternators/index.d.ts +1 -0
- package/dist/src/Modules/Alternators/index.d.ts.map +1 -0
- package/dist/src/Modules/Alternators/index.js.map +1 -1
- package/dist/src/Modules/App/App.provider.d.ts +1 -0
- package/dist/src/Modules/App/App.provider.d.ts.map +1 -0
- package/dist/src/Modules/App/App.provider.js.map +1 -1
- package/dist/src/Modules/App/App.store.d.ts +1 -0
- package/dist/src/Modules/App/App.store.d.ts.map +1 -0
- package/dist/src/Modules/App/App.store.js.map +1 -1
- package/dist/src/Modules/App/index.d.ts +1 -0
- package/dist/src/Modules/App/index.d.ts.map +1 -0
- package/dist/src/Modules/App/index.js.map +1 -1
- package/dist/src/Modules/Battery/Batteries.provider.d.ts +1 -0
- package/dist/src/Modules/Battery/Batteries.provider.d.ts.map +1 -0
- package/dist/src/Modules/Battery/Batteries.provider.js +1 -1
- package/dist/src/Modules/Battery/Batteries.provider.js.map +1 -1
- package/dist/src/Modules/Battery/Batteries.store.d.ts +1 -0
- package/dist/src/Modules/Battery/Batteries.store.d.ts.map +1 -0
- package/dist/src/Modules/Battery/Batteries.store.js.map +1 -1
- package/dist/src/Modules/Battery/SystemBatteries.provider.d.ts +1 -0
- package/dist/src/Modules/Battery/SystemBatteries.provider.d.ts.map +1 -0
- package/dist/src/Modules/Battery/SystemBatteries.provider.js.map +1 -1
- package/dist/src/Modules/Battery/index.d.ts +1 -0
- package/dist/src/Modules/Battery/index.d.ts.map +1 -0
- package/dist/src/Modules/Battery/index.js.map +1 -1
- package/dist/src/Modules/Chargers/Charger.provider.d.ts +1 -0
- package/dist/src/Modules/Chargers/Charger.provider.d.ts.map +1 -0
- package/dist/src/Modules/Chargers/Charger.provider.js.map +1 -1
- package/dist/src/Modules/Chargers/Chargers.provider.d.ts +1 -0
- package/dist/src/Modules/Chargers/Chargers.provider.d.ts.map +1 -0
- package/dist/src/Modules/Chargers/Chargers.provider.js +1 -1
- package/dist/src/Modules/Chargers/Chargers.provider.js.map +1 -1
- package/dist/src/Modules/Chargers/Chargers.store.d.ts +1 -0
- package/dist/src/Modules/Chargers/Chargers.store.d.ts.map +1 -0
- package/dist/src/Modules/Chargers/Chargers.store.js.map +1 -1
- package/dist/src/Modules/Chargers/index.d.ts +1 -0
- package/dist/src/Modules/Chargers/index.d.ts.map +1 -0
- package/dist/src/Modules/Chargers/index.js.map +1 -1
- package/dist/src/Modules/DcLoads/DcLoads.provider.d.ts +1 -0
- package/dist/src/Modules/DcLoads/DcLoads.provider.d.ts.map +1 -0
- package/dist/src/Modules/DcLoads/DcLoads.provider.js.map +1 -1
- package/dist/src/Modules/DcLoads/index.d.ts +1 -0
- package/dist/src/Modules/DcLoads/index.d.ts.map +1 -0
- package/dist/src/Modules/DcLoads/index.js.map +1 -1
- package/dist/src/Modules/Generators/ConnectedGenset.provider.d.ts +1 -0
- package/dist/src/Modules/Generators/ConnectedGenset.provider.d.ts.map +1 -0
- package/dist/src/Modules/Generators/ConnectedGenset.provider.js.map +1 -1
- package/dist/src/Modules/Generators/ConnectedGensets.provider.d.ts +1 -0
- package/dist/src/Modules/Generators/ConnectedGensets.provider.d.ts.map +1 -0
- package/dist/src/Modules/Generators/ConnectedGensets.provider.js +1 -1
- package/dist/src/Modules/Generators/ConnectedGensets.provider.js.map +1 -1
- package/dist/src/Modules/Generators/ConnectedGensets.store.d.ts +1 -0
- package/dist/src/Modules/Generators/ConnectedGensets.store.d.ts.map +1 -0
- package/dist/src/Modules/Generators/ConnectedGensets.store.js.map +1 -1
- package/dist/src/Modules/Generators/GeneratorConnectedGenset.provider.d.ts +1 -0
- package/dist/src/Modules/Generators/GeneratorConnectedGenset.provider.d.ts.map +1 -0
- package/dist/src/Modules/Generators/GeneratorConnectedGenset.provider.js.map +1 -1
- package/dist/src/Modules/Generators/GeneratorRelay.provider.d.ts +1 -0
- package/dist/src/Modules/Generators/GeneratorRelay.provider.d.ts.map +1 -0
- package/dist/src/Modules/Generators/GeneratorRelay.provider.js.map +1 -1
- package/dist/src/Modules/Generators/index.d.ts +1 -0
- package/dist/src/Modules/Generators/index.d.ts.map +1 -0
- package/dist/src/Modules/Generators/index.js.map +1 -1
- package/dist/src/Modules/Header/Header.provider.d.ts +1 -0
- package/dist/src/Modules/Header/Header.provider.d.ts.map +1 -0
- package/dist/src/Modules/Header/Header.provider.js.map +1 -1
- package/dist/src/Modules/Header/index.d.ts +1 -0
- package/dist/src/Modules/Header/index.d.ts.map +1 -0
- package/dist/src/Modules/Header/index.js.map +1 -1
- package/dist/src/Modules/InverterCharger/InputLimit.provider.d.ts +3 -1
- package/dist/src/Modules/InverterCharger/InputLimit.provider.d.ts.map +1 -0
- package/dist/src/Modules/InverterCharger/InputLimit.provider.js +5 -7
- package/dist/src/Modules/InverterCharger/InputLimit.provider.js.map +1 -1
- package/dist/src/Modules/InverterCharger/InputLimitSelector.provider.d.ts +3 -1
- package/dist/src/Modules/InverterCharger/InputLimitSelector.provider.d.ts.map +1 -0
- package/dist/src/Modules/InverterCharger/InputLimitSelector.provider.js +6 -8
- package/dist/src/Modules/InverterCharger/InputLimitSelector.provider.js.map +1 -1
- package/dist/src/Modules/InverterCharger/InverterCharger.provider.d.ts +5 -1
- package/dist/src/Modules/InverterCharger/InverterCharger.provider.d.ts.map +1 -0
- package/dist/src/Modules/InverterCharger/InverterCharger.provider.js +3 -4
- package/dist/src/Modules/InverterCharger/InverterCharger.provider.js.map +1 -1
- package/dist/src/Modules/InverterCharger/index.d.ts +1 -0
- package/dist/src/Modules/InverterCharger/index.d.ts.map +1 -0
- package/dist/src/Modules/InverterCharger/index.js.map +1 -1
- package/dist/src/Modules/Inverters/Inverter.provider.d.ts +1 -0
- package/dist/src/Modules/Inverters/Inverter.provider.d.ts.map +1 -0
- package/dist/src/Modules/Inverters/Inverter.provider.js.map +1 -1
- package/dist/src/Modules/Inverters/Inverters.provider.d.ts +1 -0
- package/dist/src/Modules/Inverters/Inverters.provider.d.ts.map +1 -0
- package/dist/src/Modules/Inverters/Inverters.provider.js +2 -2
- package/dist/src/Modules/Inverters/Inverters.provider.js.map +1 -1
- package/dist/src/Modules/Inverters/Inverters.store.d.ts +1 -0
- package/dist/src/Modules/Inverters/Inverters.store.d.ts.map +1 -0
- package/dist/src/Modules/Inverters/Inverters.store.js.map +1 -1
- package/dist/src/Modules/Inverters/index.d.ts +1 -0
- package/dist/src/Modules/Inverters/index.d.ts.map +1 -0
- package/dist/src/Modules/Inverters/index.js.map +1 -1
- package/dist/src/Modules/Language/Language.provider.d.ts +1 -0
- package/dist/src/Modules/Language/Language.provider.d.ts.map +1 -0
- package/dist/src/Modules/Language/Language.provider.js.map +1 -1
- package/dist/src/Modules/Language/index.d.ts +1 -0
- package/dist/src/Modules/Language/index.d.ts.map +1 -0
- package/dist/src/Modules/Language/index.js.map +1 -1
- package/dist/src/Modules/Mqtt/Mqtt.constants.d.ts +1 -0
- package/dist/src/Modules/Mqtt/Mqtt.constants.d.ts.map +1 -0
- package/dist/src/Modules/Mqtt/Mqtt.constants.js.map +1 -1
- package/dist/src/Modules/Mqtt/Mqtt.provider.d.ts +1 -0
- package/dist/src/Modules/Mqtt/Mqtt.provider.d.ts.map +1 -0
- package/dist/src/Modules/Mqtt/Mqtt.provider.js.map +1 -1
- package/dist/src/Modules/Mqtt/Mqtt.store.d.ts +1 -0
- package/dist/src/Modules/Mqtt/Mqtt.store.d.ts.map +1 -0
- package/dist/src/Modules/Mqtt/Mqtt.store.js.map +1 -1
- package/dist/src/Modules/Mqtt/Mqtt.types.d.ts +1 -0
- package/dist/src/Modules/Mqtt/Mqtt.types.d.ts.map +1 -0
- package/dist/src/Modules/Mqtt/Mqtt.types.js.map +1 -1
- package/dist/src/Modules/Mqtt/index.d.ts +1 -0
- package/dist/src/Modules/Mqtt/index.d.ts.map +1 -0
- package/dist/src/Modules/Mqtt/index.js.map +1 -1
- package/dist/src/Modules/PvCharger/PvCharger.provider.d.ts +1 -0
- package/dist/src/Modules/PvCharger/PvCharger.provider.d.ts.map +1 -0
- package/dist/src/Modules/PvCharger/PvCharger.provider.js.map +1 -1
- package/dist/src/Modules/PvCharger/index.d.ts +1 -0
- package/dist/src/Modules/PvCharger/index.d.ts.map +1 -0
- package/dist/src/Modules/PvCharger/index.js.map +1 -1
- package/dist/src/Modules/ShorePowerInput/ShorePowerInput.provider.d.ts +1 -0
- package/dist/src/Modules/ShorePowerInput/ShorePowerInput.provider.d.ts.map +1 -0
- package/dist/src/Modules/ShorePowerInput/ShorePowerInput.provider.js.map +1 -1
- package/dist/src/Modules/ShorePowerInput/ShorePowerInput.store.d.ts +1 -0
- package/dist/src/Modules/ShorePowerInput/ShorePowerInput.store.d.ts.map +1 -0
- package/dist/src/Modules/ShorePowerInput/ShorePowerInput.store.js.map +1 -1
- package/dist/src/Modules/ShorePowerInput/index.d.ts +1 -0
- package/dist/src/Modules/ShorePowerInput/index.d.ts.map +1 -0
- package/dist/src/Modules/ShorePowerInput/index.js.map +1 -1
- package/dist/src/Modules/SystemState/SystemState.provider.d.ts +3 -2
- package/dist/src/Modules/SystemState/SystemState.provider.d.ts.map +1 -0
- package/dist/src/Modules/SystemState/SystemState.provider.js +1 -1
- package/dist/src/Modules/SystemState/SystemState.provider.js.map +1 -1
- package/dist/src/Modules/SystemState/index.d.ts +1 -0
- package/dist/src/Modules/SystemState/index.d.ts.map +1 -0
- package/dist/src/Modules/SystemState/index.js.map +1 -1
- package/dist/src/Modules/Tanks/Tank.provider.d.ts +1 -0
- package/dist/src/Modules/Tanks/Tank.provider.d.ts.map +1 -0
- package/dist/src/Modules/Tanks/Tank.provider.js.map +1 -1
- package/dist/src/Modules/Tanks/Tanks.provider.d.ts +1 -0
- package/dist/src/Modules/Tanks/Tanks.provider.d.ts.map +1 -0
- package/dist/src/Modules/Tanks/Tanks.provider.js +1 -1
- package/dist/src/Modules/Tanks/Tanks.provider.js.map +1 -1
- package/dist/src/Modules/Tanks/Tanks.store.d.ts +1 -0
- package/dist/src/Modules/Tanks/Tanks.store.d.ts.map +1 -0
- package/dist/src/Modules/Tanks/Tanks.store.js.map +1 -1
- package/dist/src/Modules/Tanks/index.d.ts +1 -0
- package/dist/src/Modules/Tanks/index.d.ts.map +1 -0
- package/dist/src/Modules/Tanks/index.js.map +1 -1
- package/dist/src/Modules/Temperatures/Temperature.provider.d.ts +1 -0
- package/dist/src/Modules/Temperatures/Temperature.provider.d.ts.map +1 -0
- package/dist/src/Modules/Temperatures/Temperature.provider.js.map +1 -1
- package/dist/src/Modules/Temperatures/Temperatures.provider.d.ts +1 -0
- package/dist/src/Modules/Temperatures/Temperatures.provider.d.ts.map +1 -0
- package/dist/src/Modules/Temperatures/Temperatures.provider.js +1 -1
- package/dist/src/Modules/Temperatures/Temperatures.provider.js.map +1 -1
- package/dist/src/Modules/Temperatures/Temperatures.store.d.ts +1 -0
- package/dist/src/Modules/Temperatures/Temperatures.store.d.ts.map +1 -0
- package/dist/src/Modules/Temperatures/Temperatures.store.js.map +1 -1
- package/dist/src/Modules/Temperatures/index.d.ts +1 -0
- package/dist/src/Modules/Temperatures/index.d.ts.map +1 -0
- package/dist/src/Modules/Temperatures/index.js.map +1 -1
- package/dist/src/Modules/Theme/Theme.provider.d.ts +1 -0
- package/dist/src/Modules/Theme/Theme.provider.d.ts.map +1 -0
- package/dist/src/Modules/Theme/Theme.provider.js.map +1 -1
- package/dist/src/Modules/Theme/Theme.store.d.ts +1 -0
- package/dist/src/Modules/Theme/Theme.store.d.ts.map +1 -0
- package/dist/src/Modules/Theme/Theme.store.js.map +1 -1
- package/dist/src/Modules/Theme/index.d.ts +1 -0
- package/dist/src/Modules/Theme/index.d.ts.map +1 -0
- package/dist/src/Modules/Theme/index.js.map +1 -1
- package/dist/src/Modules/Vebus/Vebus.provider.d.ts +1 -0
- package/dist/src/Modules/Vebus/Vebus.provider.d.ts.map +1 -0
- package/dist/src/Modules/Vebus/Vebus.provider.js +58 -49
- package/dist/src/Modules/Vebus/Vebus.provider.js.map +1 -1
- package/dist/src/Modules/Vebus/Vebus.store.d.ts +11 -9
- package/dist/src/Modules/Vebus/Vebus.store.d.ts.map +1 -0
- package/dist/src/Modules/Vebus/Vebus.store.js +20 -6
- package/dist/src/Modules/Vebus/Vebus.store.js.map +1 -1
- package/dist/src/Modules/Vebus/index.d.ts +1 -0
- package/dist/src/Modules/Vebus/index.d.ts.map +1 -0
- package/dist/src/Modules/Vebus/index.js.map +1 -1
- package/dist/src/Modules/Vrm/Vrm.store.d.ts +1 -0
- package/dist/src/Modules/Vrm/Vrm.store.d.ts.map +1 -0
- package/dist/src/Modules/Vrm/Vrm.store.js.map +1 -1
- package/dist/src/Modules/Vrm/Vrm.types.d.ts +1 -0
- package/dist/src/Modules/Vrm/Vrm.types.d.ts.map +1 -0
- package/dist/src/Modules/Vrm/Vrm.types.js.map +1 -1
- package/dist/src/Modules/Vrm/index.d.ts +1 -0
- package/dist/src/Modules/Vrm/index.d.ts.map +1 -0
- package/dist/src/Modules/Vrm/index.js.map +1 -1
- package/dist/src/Modules/WindGenerators/WindGenerator.provider.d.ts +1 -0
- package/dist/src/Modules/WindGenerators/WindGenerator.provider.d.ts.map +1 -0
- package/dist/src/Modules/WindGenerators/WindGenerator.provider.js.map +1 -1
- package/dist/src/Modules/WindGenerators/WindGenerators.provider.d.ts +1 -0
- package/dist/src/Modules/WindGenerators/WindGenerators.provider.d.ts.map +1 -0
- package/dist/src/Modules/WindGenerators/WindGenerators.provider.js +1 -1
- package/dist/src/Modules/WindGenerators/WindGenerators.provider.js.map +1 -1
- package/dist/src/Modules/WindGenerators/WindGenerators.store.d.ts +1 -0
- package/dist/src/Modules/WindGenerators/WindGenerators.store.d.ts.map +1 -0
- package/dist/src/Modules/WindGenerators/WindGenerators.store.js.map +1 -1
- package/dist/src/Modules/WindGenerators/index.d.ts +1 -0
- package/dist/src/Modules/WindGenerators/index.d.ts.map +1 -0
- package/dist/src/Modules/WindGenerators/index.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/utils/constants.d.ts +1 -0
- package/dist/src/utils/constants.d.ts.map +1 -0
- package/dist/src/utils/constants.js.map +1 -1
- package/dist/src/utils/logger.d.ts +1 -0
- package/dist/src/utils/logger.d.ts.map +1 -0
- package/dist/src/utils/logger.js.map +1 -1
- package/dist/src/utils/storage.d.ts +1 -0
- package/dist/src/utils/storage.d.ts.map +1 -0
- package/dist/src/utils/storage.js.map +1 -1
- package/dist/src/utils/util.d.ts +1 -0
- package/dist/src/utils/util.d.ts.map +1 -0
- package/dist/src/utils/util.js.map +1 -1
- package/package.json +5 -5
|
@@ -1,68 +1,77 @@
|
|
|
1
1
|
import { useEffect, useMemo } from "react";
|
|
2
|
-
import { toJS } from "mobx";
|
|
3
|
-
import { isEqual } from "lodash-es";
|
|
4
2
|
import Logger from "../../utils/logger";
|
|
5
|
-
import { useMqtt,
|
|
3
|
+
import { useMqtt, useTopicState } from "../Mqtt";
|
|
6
4
|
import { useVebusStore, } from "./Vebus.store";
|
|
7
5
|
export var useVebus = function () {
|
|
8
6
|
var mqtt = useMqtt();
|
|
9
7
|
var vebusStore = useVebusStore();
|
|
10
8
|
var portalId = mqtt.portalId;
|
|
11
9
|
var getTopics = function (portalId) { return ({
|
|
10
|
+
vebusInstanceId: "N/".concat(portalId, "/system/0/VebusInstance"),
|
|
12
11
|
deviceInstances: "N/".concat(portalId, "/vebus/+/DeviceInstance"),
|
|
13
12
|
}); };
|
|
14
13
|
var topics = useMemo(function () { return getTopics(portalId); }, [portalId]);
|
|
14
|
+
var vebusInstanceId = useTopicState(topics.vebusInstanceId);
|
|
15
15
|
var messages = mqtt.messagesByWildcard(topics.deviceInstances);
|
|
16
|
-
// Checks for old inverter paths, if not equal, set new path.
|
|
17
16
|
useEffect(function () {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
return acc;
|
|
22
|
-
}, {});
|
|
23
|
-
var oldInvertersPaths = toJS(vebusStore.possibleInvertersPaths);
|
|
24
|
-
if (!isEqual(possibleInvertersPaths, oldInvertersPaths)) {
|
|
25
|
-
Logger.log("Saving vebus inverters paths");
|
|
26
|
-
vebusStore.setPossibleInvertersPaths(possibleInvertersPaths);
|
|
27
|
-
}
|
|
28
|
-
}, [messages]);
|
|
29
|
-
var subsMessages = useTopicsState(vebusStore.possibleInvertersPaths);
|
|
30
|
-
// set vebus instanceId (system with multiple inputs)
|
|
31
|
-
useEffect(function () {
|
|
32
|
-
// Logger.log("Setting vebus device instance");
|
|
33
|
-
// Sometimes "ghost" instances of devices linger in MQTT, so we need to select the highest (i.e. latest) instance ID
|
|
34
|
-
var multiInstances = Object.entries(subsMessages)
|
|
35
|
-
// Take only "Multi" devices -> must have more than one AcInput
|
|
36
|
-
.filter(function (_a) {
|
|
37
|
-
var _ = _a[0], nAcInputs = _a[1];
|
|
38
|
-
return nAcInputs && parseInt(nAcInputs) !== 0;
|
|
39
|
-
})
|
|
40
|
-
.map(function (instance) { return parseInt(instance[0]); })
|
|
41
|
-
.sort(function (a, b) { return b - a; });
|
|
42
|
-
var newInstanceId = multiInstances && multiInstances.length && multiInstances[0];
|
|
43
|
-
if (newInstanceId && newInstanceId !== vebusStore.instanceId) {
|
|
44
|
-
Logger.log("New VE.Bus instance ID: ".concat(newInstanceId));
|
|
45
|
-
vebusStore.setInstanceId(newInstanceId);
|
|
17
|
+
if (vebusInstanceId && vebusInstanceId !== vebusStore.instanceId) {
|
|
18
|
+
Logger.log("New VE.Bus instance ID: ".concat(vebusInstanceId));
|
|
19
|
+
vebusStore.setInstanceId(vebusInstanceId);
|
|
46
20
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
//
|
|
51
|
-
|
|
52
|
-
.
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
21
|
+
var oldDevices = vebusStore.vebusInstanceIds;
|
|
22
|
+
var deviceInstances = Object.values(messages);
|
|
23
|
+
// TODO: check unordered structural identify of old and new state
|
|
24
|
+
// TODO: to avoid unnecessary re-rendering: O(n^2) baby
|
|
25
|
+
if (!oldDevices || oldDevices.length != deviceInstances.length || !deviceInstances.every(function (id) { return oldDevices.includes(id); })) {
|
|
26
|
+
Logger.log("New VE.Bus devices: ".concat(JSON.stringify(deviceInstances)));
|
|
27
|
+
vebusStore.setVebusInstanceIds(deviceInstances);
|
|
28
|
+
var possibleInvertersPaths = deviceInstances.reduce(function (acc, id) {
|
|
29
|
+
acc["".concat(id)] = "N/".concat(portalId, "/vebus/").concat(id, "/Ac/NumberOfAcInputs");
|
|
30
|
+
return acc;
|
|
31
|
+
}, {});
|
|
32
|
+
var vebusDevices = mqtt.messagesByTopics(possibleInvertersPaths);
|
|
33
|
+
// extract devices with no ac input -> pure inverters
|
|
34
|
+
var vebusInverters = Object.entries(vebusDevices)
|
|
35
|
+
.filter(function (_a) {
|
|
36
|
+
var _ = _a[0], nAcInputs = _a[1];
|
|
37
|
+
return parseInt(nAcInputs) === 0;
|
|
38
|
+
})
|
|
39
|
+
.map(function (_a) {
|
|
40
|
+
var instance = _a[0];
|
|
41
|
+
return parseInt(instance);
|
|
42
|
+
})
|
|
43
|
+
// make sure vebusInstanceId is always listed first, then ascending
|
|
44
|
+
.sort(function (a, b) {
|
|
45
|
+
if (a == vebusInstanceId)
|
|
46
|
+
return -1;
|
|
47
|
+
if (b == vebusInstanceId)
|
|
48
|
+
return 1;
|
|
49
|
+
return a - b;
|
|
50
|
+
});
|
|
51
|
+
// extract devices with at least one ac input -> inverters + chargers
|
|
52
|
+
var vebusInverterChargers = Object.entries(vebusDevices)
|
|
53
|
+
.filter(function (_a) {
|
|
54
|
+
var _ = _a[0], nAcInputs = _a[1];
|
|
55
|
+
return parseInt(nAcInputs) > 0;
|
|
56
|
+
})
|
|
57
|
+
.map(function (_a) {
|
|
58
|
+
var instance = _a[0];
|
|
59
|
+
return parseInt(instance);
|
|
60
|
+
})
|
|
61
|
+
// make sure vebusInstanceId is always listed first, then ascending
|
|
62
|
+
.sort(function (a, b) {
|
|
63
|
+
if (a == vebusInstanceId)
|
|
64
|
+
return -1;
|
|
65
|
+
if (b == vebusInstanceId)
|
|
66
|
+
return 1;
|
|
67
|
+
return a - b;
|
|
68
|
+
});
|
|
69
|
+
Logger.log("New VE.Bus inverters: ".concat(JSON.stringify(vebusInverters)));
|
|
63
70
|
vebusStore.setVebusInverters(vebusInverters);
|
|
71
|
+
Logger.log("New VE.Bus inverter/chargers: ".concat(JSON.stringify(vebusInverterChargers)));
|
|
72
|
+
vebusStore.setVebusInverterChargers(vebusInverterChargers);
|
|
64
73
|
}
|
|
65
|
-
}, [
|
|
74
|
+
}, [vebusInstanceId, messages]);
|
|
66
75
|
return vebusStore;
|
|
67
76
|
};
|
|
68
77
|
//# sourceMappingURL=Vebus.provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Vebus.provider.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"Vebus.provider.js","sourceRoot":"/","sources":["src/Modules/Vebus/Vebus.provider.ts"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useMemo } from \"react\";\nimport Logger from \"../../utils/logger\";\nimport {\n PortalId,\n useMqtt,\n useTopicState\n} from \"../Mqtt\";\nimport {\n InstanceId,\n useVebusStore,\n VebusDevices,\n VebusState,\n} from \"./Vebus.store\";\n\nexport const useVebus = (): VebusState => {\n const mqtt = useMqtt();\n const vebusStore = useVebusStore();\n const portalId = mqtt.portalId;\n\n const getTopics = (portalId: PortalId) => ({\n vebusInstanceId: `N/${portalId}/system/0/VebusInstance`,\n deviceInstances: `N/${portalId}/vebus/+/DeviceInstance`,\n });\n\n const topics = useMemo(() => getTopics(portalId), [portalId]);\n const vebusInstanceId = useTopicState<InstanceId>(topics.vebusInstanceId)\n const messages = mqtt.messagesByWildcard(topics.deviceInstances);\n\n useEffect(() => {\n if (vebusInstanceId && vebusInstanceId !== vebusStore.instanceId) {\n Logger.log(`New VE.Bus instance ID: ${vebusInstanceId}`);\n vebusStore.setInstanceId(vebusInstanceId);\n }\n\n const oldDevices = vebusStore.vebusInstanceIds\n const deviceInstances = Object.values(messages) as VebusDevices;\n\n // TODO: check unordered structural identify of old and new state\n // TODO: to avoid unnecessary re-rendering: O(n^2) baby\n if (!oldDevices || oldDevices.length != deviceInstances.length || !deviceInstances.every((id) => oldDevices.includes(id))) {\n\n Logger.log(`New VE.Bus devices: ${JSON.stringify(deviceInstances)}`);\n vebusStore.setVebusInstanceIds(deviceInstances)\n\n const possibleInvertersPaths = deviceInstances.reduce(\n (acc: { [key: string]: string }, id) => {\n acc[`${id}`] = `N/${portalId}/vebus/${id}/Ac/NumberOfAcInputs`;\n return acc;\n },\n {}\n );\n\n const vebusDevices = mqtt.messagesByTopics(possibleInvertersPaths) as unknown as { [key: string]: string}\n\n // extract devices with no ac input -> pure inverters\n const vebusInverters = Object.entries(vebusDevices)\n .filter(([_, nAcInputs]) => parseInt(nAcInputs) === 0)\n .map(([instance]) => parseInt(instance))\n // make sure vebusInstanceId is always listed first, then ascending\n .sort((a, b) => {\n if (a == vebusInstanceId) return -1\n if (b == vebusInstanceId) return 1\n return a - b\n })\n\n // extract devices with at least one ac input -> inverters + chargers\n const vebusInverterChargers = Object.entries(vebusDevices)\n .filter(([_, nAcInputs]) => parseInt(nAcInputs) > 0)\n .map(([instance]) => parseInt(instance))\n // make sure vebusInstanceId is always listed first, then ascending\n .sort((a, b) => {\n if (a == vebusInstanceId) return -1\n if (b == vebusInstanceId) return 1\n return a - b\n })\n\n Logger.log(`New VE.Bus inverters: ${JSON.stringify(vebusInverters)}`);\n vebusStore.setVebusInverters(vebusInverters);\n\n Logger.log(`New VE.Bus inverter/chargers: ${JSON.stringify(vebusInverterChargers)}`);\n vebusStore.setVebusInverterChargers(vebusInverterChargers);\n }\n }, [vebusInstanceId, messages])\n\n return vebusStore;\n};\n"]}
|
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
export type InstanceId = number | null | undefined;
|
|
2
|
-
export type
|
|
3
|
-
[key: string]: string;
|
|
4
|
-
};
|
|
5
|
-
export type VebusInverters = Array<number>;
|
|
2
|
+
export type VebusDevices = Array<number>;
|
|
6
3
|
export interface VebusState {
|
|
7
4
|
instanceId: InstanceId;
|
|
8
|
-
|
|
5
|
+
vebusInstanceIds: VebusDevices;
|
|
6
|
+
vebusInverters: VebusDevices;
|
|
7
|
+
vebusInverterChargers: VebusDevices;
|
|
9
8
|
}
|
|
10
9
|
export declare class VebusStore {
|
|
11
10
|
instanceId: InstanceId;
|
|
12
|
-
|
|
13
|
-
vebusInverters:
|
|
11
|
+
vebusInstanceIds: VebusDevices;
|
|
12
|
+
vebusInverters: VebusDevices;
|
|
13
|
+
vebusInverterChargers: VebusDevices;
|
|
14
14
|
constructor();
|
|
15
|
-
|
|
16
|
-
setVebusInverters: (
|
|
15
|
+
setVebusInstanceIds: (devices: VebusDevices) => VebusDevices;
|
|
16
|
+
setVebusInverters: (devices: VebusDevices) => VebusDevices;
|
|
17
|
+
setVebusInverterChargers: (devices: VebusDevices) => VebusDevices;
|
|
17
18
|
setInstanceId: (instanceId: InstanceId) => InstanceId;
|
|
18
19
|
}
|
|
19
20
|
export declare function useVebusStore(): VebusStore;
|
|
21
|
+
//# sourceMappingURL=Vebus.store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Vebus.store.d.ts","sourceRoot":"/","sources":["src/Modules/Vebus/Vebus.store.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;AAElD,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;AAExC,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,UAAU,CAAA;IACtB,gBAAgB,EAAE,YAAY,CAAA;IAC9B,cAAc,EAAE,YAAY,CAAA;IAC5B,qBAAqB,EAAE,YAAY,CAAA;CACpC;AAED,qBAAa,UAAU;IACrB,UAAU,EAAE,UAAU,CAAA;IACtB,gBAAgB,EAAE,YAAY,CAAA;IAC9B,cAAc,EAAE,YAAY,CAAA;IAC5B,qBAAqB,EAAE,YAAY,CAAA;;IAcnC,mBAAmB,YAAa,YAAY,kBAAqC;IAEjF,iBAAiB,YAAa,YAAY,kBAAmC;IAE7E,wBAAwB,YAAa,YAAY,kBAA0C;IAE3F,aAAa,eAAgB,UAAU,gBAAiC;CACzE;AAYD,wBAAgB,aAAa,eAE5B"}
|
|
@@ -10,7 +10,7 @@ var VebusStore = /** @class */ (function () {
|
|
|
10
10
|
writable: true,
|
|
11
11
|
value: void 0
|
|
12
12
|
});
|
|
13
|
-
Object.defineProperty(this, "
|
|
13
|
+
Object.defineProperty(this, "vebusInstanceIds", {
|
|
14
14
|
enumerable: true,
|
|
15
15
|
configurable: true,
|
|
16
16
|
writable: true,
|
|
@@ -22,17 +22,29 @@ var VebusStore = /** @class */ (function () {
|
|
|
22
22
|
writable: true,
|
|
23
23
|
value: void 0
|
|
24
24
|
});
|
|
25
|
-
Object.defineProperty(this, "
|
|
25
|
+
Object.defineProperty(this, "vebusInverterChargers", {
|
|
26
26
|
enumerable: true,
|
|
27
27
|
configurable: true,
|
|
28
28
|
writable: true,
|
|
29
|
-
value:
|
|
29
|
+
value: void 0
|
|
30
|
+
});
|
|
31
|
+
Object.defineProperty(this, "setVebusInstanceIds", {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
configurable: true,
|
|
34
|
+
writable: true,
|
|
35
|
+
value: function (devices) { return _this.vebusInstanceIds = devices; }
|
|
30
36
|
});
|
|
31
37
|
Object.defineProperty(this, "setVebusInverters", {
|
|
32
38
|
enumerable: true,
|
|
33
39
|
configurable: true,
|
|
34
40
|
writable: true,
|
|
35
|
-
value: function (
|
|
41
|
+
value: function (devices) { return _this.vebusInverters = devices; }
|
|
42
|
+
});
|
|
43
|
+
Object.defineProperty(this, "setVebusInverterChargers", {
|
|
44
|
+
enumerable: true,
|
|
45
|
+
configurable: true,
|
|
46
|
+
writable: true,
|
|
47
|
+
value: function (devices) { return _this.vebusInverterChargers = devices; }
|
|
36
48
|
});
|
|
37
49
|
Object.defineProperty(this, "setInstanceId", {
|
|
38
50
|
enumerable: true,
|
|
@@ -41,12 +53,14 @@ var VebusStore = /** @class */ (function () {
|
|
|
41
53
|
value: function (instanceId) { return _this.instanceId = instanceId; }
|
|
42
54
|
});
|
|
43
55
|
makeAutoObservable(this, {
|
|
44
|
-
|
|
56
|
+
setVebusInstanceIds: action,
|
|
45
57
|
setVebusInverters: action,
|
|
58
|
+
setVebusInverterChargers: action,
|
|
46
59
|
setInstanceId: action
|
|
47
60
|
});
|
|
48
|
-
this.
|
|
61
|
+
this.vebusInstanceIds = [];
|
|
49
62
|
this.vebusInverters = [];
|
|
63
|
+
this.vebusInverterChargers = [];
|
|
50
64
|
}
|
|
51
65
|
return VebusStore;
|
|
52
66
|
}());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Vebus.store.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"Vebus.store.js","sourceRoot":"/","sources":["src/Modules/Vebus/Vebus.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAe,MAAM,MAAM,CAAA;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE/B,IAAI,KAAiB,CAAA;AAarB;IAME;QAAA,iBAUC;QAfD;;;;;WAAsB;QACtB;;;;;WAA8B;QAC9B;;;;;WAA4B;QAC5B;;;;;WAAmC;QAcnC;;;;mBAAsB,UAAC,OAAqB,IAAK,OAAA,KAAI,CAAC,gBAAgB,GAAG,OAAO,EAA/B,CAA+B;WAAC;QAEjF;;;;mBAAoB,UAAC,OAAqB,IAAK,OAAA,KAAI,CAAC,cAAc,GAAG,OAAO,EAA7B,CAA6B;WAAC;QAE7E;;;;mBAA2B,UAAC,OAAqB,IAAK,OAAA,KAAI,CAAC,qBAAqB,GAAG,OAAO,EAApC,CAAoC;WAAC;QAE3F;;;;mBAAgB,UAAC,UAAsB,IAAK,OAAA,KAAI,CAAC,UAAU,GAAG,UAAU,EAA5B,CAA4B;WAAA;QAjBtE,kBAAkB,CAAC,IAAI,EAAE;YACvB,mBAAmB,EAAE,MAAM;YAC3B,iBAAiB,EAAE,MAAM;YACzB,wBAAwB,EAAE,MAAM;YAChC,aAAa,EAAE,MAAM;SACtB,CAAC,CAAA;QACF,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAA;QAC1B,IAAI,CAAC,cAAc,GAAG,EAAE,CAAA;QACxB,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAA;IACjC,CAAC;IASH,iBAAC;AAAD,CAAC,AAzBD,IAyBC;;AAED,SAAS,eAAe;IACtB,IAAM,MAAM,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAI,UAAU,EAAE,CAAA;IACxC,4CAA4C;IAC5C,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,MAAM,CAAA;IAChD,sCAAsC;IACtC,IAAI,CAAC,KAAK;QAAE,KAAK,GAAG,MAAM,CAAA;IAE1B,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,OAAO,CAAC,cAAM,OAAA,eAAe,EAAE,EAAjB,CAAiB,EAAE,EAAE,CAAC,CAAA;AAC7C,CAAC","sourcesContent":["import { action, makeAutoObservable, runInAction } from \"mobx\"\nimport { useMemo } from \"react\"\n\nlet store: VebusStore\n\nexport type InstanceId = number | null | undefined\n\nexport type VebusDevices = Array<number>\n\nexport interface VebusState {\n instanceId: InstanceId\n vebusInstanceIds: VebusDevices\n vebusInverters: VebusDevices\n vebusInverterChargers: VebusDevices\n}\n\nexport class VebusStore {\n instanceId: InstanceId\n vebusInstanceIds: VebusDevices\n vebusInverters: VebusDevices\n vebusInverterChargers: VebusDevices\n\n constructor() {\n makeAutoObservable(this, {\n setVebusInstanceIds: action,\n setVebusInverters: action,\n setVebusInverterChargers: action,\n setInstanceId: action\n })\n this.vebusInstanceIds = []\n this.vebusInverters = []\n this.vebusInverterChargers = []\n }\n\n setVebusInstanceIds = (devices: VebusDevices) => this.vebusInstanceIds = devices;\n\n setVebusInverters = (devices: VebusDevices) => this.vebusInverters = devices;\n\n setVebusInverterChargers = (devices: VebusDevices) => this.vebusInverterChargers = devices;\n\n setInstanceId = (instanceId: InstanceId) => this.instanceId = instanceId\n}\n\nfunction initializeStore() {\n const _store = store ?? new VebusStore()\n // For SSG and SSR always create a new store\n if (typeof window === \"undefined\") return _store\n // Create the store once in the client\n if (!store) store = _store\n\n return _store\n}\n\nexport function useVebusStore() {\n return useMemo(() => initializeStore(), [])\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["src/Modules/Vebus/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"/","sources":["src/Modules/Vebus/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA","sourcesContent":["export * from \"./Vebus.provider\"\nexport * from \"./Vebus.store\"\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Vrm.store.d.ts","sourceRoot":"/","sources":["src/Modules/Vrm/Vrm.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAyB,aAAa,EAAE,MAAM,aAAa,CAAA;AAIhF,OAAO,EAAE,QAAQ,EAAe,MAAM,QAAQ,CAAA;AAM9C,MAAM,WAAW,QAAQ;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAA;IAC9B,WAAW,EAAE,MAAM,GAAG,YAAY,CAAA;CACnC;AAED,qBAAa,QAAQ;IACnB,QAAQ,EAAE,QAAQ,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAA;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,GAAG,YAAY,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwC;gBAEvD,QAAQ,EAAE,QAAQ;IAY9B,IAAI,QAAQ,uBAEX;IAED,KAAK,aAAoB,MAAM,YAAY,MAAM,4CAAyC,MAAM,KAAG,OAAO,CAAC,aAAa,CAAC,CA8BxH;IAED,MAAM,aAcL;IAED,qBAAqB,QAAa,OAAO,CAAC,IAAI,CAAC,CAoC9C;IAED,qBAAqB,WAAY,MAAM,UAiBtC;CAEF;AAYD,wBAAgB,WAAW,aAG1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Vrm.store.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"Vrm.store.js","sourceRoot":"/","sources":["src/Modules/Vrm/Vrm.store.ts"],"names":[],"mappings":"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","sourcesContent":["import { Installation, InstallationsResponse, LoginResponse } from \"./Vrm.types\"\nimport { makeAutoObservable, runInAction } from \"mobx\"\nimport { useMemo } from \"react\"\nimport axios, { AxiosError } from \"axios\"\nimport { AppStore, useAppStore } from \"../App\"\nimport { makePersistable } from \"mobx-persist-store\"\nimport { Storage } from \"../../utils/storage\"\n\nlet store: VrmStore\n\nexport interface VrmState {\n userId?: number\n sentVerification?: boolean\n verificationMode?: string\n username?: string\n token?: string\n mqttHost?: string\n portalId?: string\n siteId?: number\n webhost?: string\n installations?: Installation[]\n environment: \"live\" | \"acceptance\"\n}\n\nexport class VrmStore {\n appStore: AppStore\n userId?: number\n username?: string\n token?: string\n mqttHost?: string\n portalId?: string\n siteId?: number\n webhost?: string\n sentVerification?: boolean\n verificationMode?: string\n installations?: Installation[]\n siteName?: string\n environment: \"live\" | \"acceptance\" = \"live\"\n private readonly apiBaseUrl = \"https://vrmapi.victronenergy.com/v2\"\n\n constructor(appStore: AppStore) {\n this.appStore = appStore\n makeAutoObservable(this, { appStore: false })\n makePersistable(this, {\n name: \"VrmStore\",\n properties: [\"userId\", \"username\", \"token\", \"mqttHost\", \"portalId\", \"siteId\", \"siteName\", \"webhost\"],\n storage: Storage,\n expireIn: 1000 * 60 * 60 * 24 * 90, // 90 days (ms)\n removeOnExpiration: true,\n }).then()\n }\n\n get loggedIn() {\n return this.username && this.token && this.webhost && this.portalId\n }\n\n login = async (username: string, password: string, rememberMe = true, verificationToken?: string): Promise<LoginResponse> => {\n try {\n const response = await axios.post(`${this.apiBaseUrl}/auth/login`, {\n username,\n password,\n remember_me: rememberMe,\n sms_token: verificationToken\n })\n\n const data: LoginResponse = response.data\n\n runInAction(() => {\n this.token = data.token\n this.userId = data.idUser\n this.username = username\n this.sentVerification = data.verification_sent\n this.verificationMode = data.verification_mode\n })\n\n return data\n } catch (e) {\n runInAction(() => {\n this.sentVerification = undefined\n this.verificationMode = undefined\n })\n\n const response = (e as AxiosError)?.response\n\n throw new Error(`Login failed with status code: ${response?.status} (${response?.statusText})`)\n }\n }\n\n logout = () => {\n this.appStore.setRemote(false)\n\n this.userId = undefined\n this.username = undefined\n this.token = undefined\n this.mqttHost = undefined\n this.portalId = undefined\n this.siteId = undefined\n this.siteName = undefined\n this.webhost = undefined\n this.installations = undefined\n this.sentVerification = undefined\n this.verificationMode = undefined\n }\n\n updateInstanceDetails = async (): Promise<void> => {\n const userId = this.userId\n const token = this.token\n\n if (!userId || !token) {\n throw new Error(\"Not logged in\")\n }\n\n const response = await axios.get(`${this.apiBaseUrl}/users/${userId}/installations?extended=1`, {\n headers: {\n \"x-authorization\": `Bearer ${token}`,\n },\n })\n\n if (response.status !== 200) {\n throw new Error(response.data)\n }\n\n const data: InstallationsResponse = response.data\n\n if (data.records.length === 0) {\n throw new Error(\"This account has no installations!\")\n }\n\n runInAction(() => {\n this.installations = data.records.map((v) => ({\n idSite: v.idSite,\n identifier: v.identifier,\n mqtt_webhost: v.mqtt_webhost,\n name: v.name,\n }))\n })\n\n if (data.records.length === 1) {\n runInAction(() => this.setActiveInstallation(data.records[0].idSite))\n }\n }\n\n setActiveInstallation = (siteId: number) => {\n const installations = this.installations\n\n if (!installations) {\n throw new Error(\"No installations, try logging in again!\")\n }\n\n const site = installations.find((v) => v.idSite === siteId)\n\n if (!site) {\n throw new Error(\"Incorrect data - site with specified ID not found!\")\n }\n\n this.siteName = site.name\n this.portalId = site.identifier\n this.webhost = site.mqtt_webhost\n this.siteId = siteId\n }\n\n}\n\nfunction initializeStore(appStore: AppStore) {\n const _store = store ?? new VrmStore(appStore)\n // For SSG and SSR always create a new store\n if (typeof window === \"undefined\") return _store\n // Create the store once in the client\n if (!store) store = _store\n\n return _store\n}\n\nexport function useVrmStore() {\n const appStore = useAppStore()\n return useMemo(() => initializeStore(appStore), [])\n}"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Vrm.types.d.ts","sourceRoot":"/","sources":["src/Modules/Vrm/Vrm.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,EAAE,MAAM,CAAA;IACzB,iBAAiB,EAAE,OAAO,CAAA;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,YAAY,EAAE,CAAA;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;CACb"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Vrm.types.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"Vrm.types.js","sourceRoot":"/","sources":["src/Modules/Vrm/Vrm.types.ts"],"names":[],"mappings":"","sourcesContent":["export interface LoginResponse {\n token: string\n idUser: number\n verification_mode: string\n verification_sent: boolean\n}\n\nexport interface InstallationsResponse {\n success: boolean\n records: Installation[]\n}\n\nexport interface Installation {\n idSite: number\n identifier: string\n mqtt_webhost: string\n name: string\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["src/Modules/Vrm/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"/","sources":["src/Modules/Vrm/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA","sourcesContent":["export * from \"./Vrm.store\"\nexport * from \"./Vrm.types\"\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WindGenerator.provider.d.ts","sourceRoot":"/","sources":["src/Modules/WindGenerators/WindGenerator.provider.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,wBAAgB,gBAAgB,CAAC,eAAe,EAAE,MAAM,GAAG,kBAAkB,CAW5E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WindGenerator.provider.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"WindGenerator.provider.js","sourceRoot":"/","sources":["src/Modules/WindGenerators/WindGenerator.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAQ/B,MAAM,UAAU,gBAAgB,CAAC,eAAuB;IACtD,IAAM,SAAS,GAAG,UAAC,QAAkB,IAAK,OAAA,CAAC;QACzC,OAAO,EAAE,YAAK,QAAQ,uBAAa,eAAe,kBAAe;QACjE,OAAO,EAAE,YAAK,QAAQ,uBAAa,eAAe,kBAAe;QACjE,WAAW,EAAE,YAAK,QAAQ,uBAAa,eAAe,sBAAmB;KAC1E,CAAC,EAJwC,CAIxC,CAAA;IACF,IAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IAEtB,IAAM,MAAM,GAAG,OAAO,CAAC,cAAM,OAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAxB,CAAwB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEvE,OAAO,cAAc,CAAqB,MAAM,CAAC,CAAA;AACnD,CAAC","sourcesContent":["import { PortalId, useMqtt, useTopicsState } from \"../Mqtt\"\nimport { useMemo } from \"react\"\n\nexport interface WindGeneratorState {\n current: number\n voltage: number\n temperature: number\n}\n\nexport function useWindGenerator(windGeneratorId: number): WindGeneratorState {\n const getTopics = (portalId: PortalId) => ({\n voltage: `N/${portalId}/dcsource/${windGeneratorId}/Dc/0/Voltage`,\n current: `N/${portalId}/dcsource/${windGeneratorId}/Dc/0/Current`,\n temperature: `N/${portalId}/dcsource/${windGeneratorId}/Dc/0/Temperature`,\n })\n const mqtt = useMqtt()\n\n const topics = useMemo(() => getTopics(mqtt.portalId), [mqtt.portalId])\n\n return useTopicsState<WindGeneratorState>(topics)\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WindGenerators.provider.d.ts","sourceRoot":"/","sources":["src/Modules/WindGenerators/WindGenerators.provider.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,iBAAiB,uDAmC7B,CAAA"}
|
|
@@ -25,7 +25,7 @@ export var useWindGenerators = function () {
|
|
|
25
25
|
}
|
|
26
26
|
});
|
|
27
27
|
// TODO: check unordered structural identify of old and new state
|
|
28
|
-
// TODO: to avoid unnecessary re-rendering: O(n^2 baby
|
|
28
|
+
// TODO: to avoid unnecessary re-rendering: O(n^2) baby
|
|
29
29
|
if (!windGenerators_1 || windGenerators_1.length != deviceInstances_1.length || !deviceInstances_1.every(function (id) { return windGenerators_1.includes(id); })) {
|
|
30
30
|
Logger.log("New wind generators instances: ".concat(JSON.stringify(deviceInstances_1)));
|
|
31
31
|
windGeneratorsStore.setWindGenerators(deviceInstances_1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WindGenerators.provider.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"WindGenerators.provider.js","sourceRoot":"/","sources":["src/Modules/WindGenerators/WindGenerators.provider.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,EAAY,OAAO,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAmB,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,CAAC,IAAM,iBAAiB,GAAG;IAC/B,IAAM,mBAAmB,GAAG,sBAAsB,EAAE,CAAA;IACpD,IAAM,IAAI,GAAG,OAAO,EAAE,CAAA;IAEtB,IAAM,SAAS,GAAG,UAAC,QAAkB,IAAK,OAAA,CAAC;QACzC,oBAAoB,EAAE,YAAK,QAAQ,qCAAkC;KACtE,CAAC,EAFwC,CAExC,CAAA;IAEF,IAAM,MAAM,GAAG,OAAO,CAAC,cAAM,OAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAxB,CAAwB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEvE,IAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAA;IAErE,SAAS,CAAC;QACR,IAAI,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtD,IAAM,gBAAc,GAAG,mBAAmB,CAAC,cAAc,CAAA;YACzD,IAAM,iBAAe,GAAsB,EAAE,CAAA;YAE7C,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAA,IAAI;;gBAChC,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,sBAAsB,CAAC,cAAc,EAAE,CAAC;oBAC7D,IAAM,UAAU,GAAG,IAAI,MAAM,CAAC,6BAA6B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBACvE,IAAM,QAAQ,GAAG,MAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,0CAAE,QAAQ,mCAAI,EAAE,CAAA;oBACnD,IAAI,QAAQ,KAAK,EAAE;wBAAE,iBAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAA;gBACtD,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,iEAAiE;YACjE,uDAAuD;YACvD,IAAI,CAAC,gBAAc,IAAI,gBAAc,CAAC,MAAM,IAAI,iBAAe,CAAC,MAAM,IAAI,CAAC,iBAAe,CAAC,KAAK,CAAC,UAAC,EAAE,IAAK,OAAA,gBAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,EAA3B,CAA2B,CAAC,EAAE,CAAC;gBACtI,MAAM,CAAC,GAAG,CAAC,yCAAkC,IAAI,CAAC,SAAS,CAAC,iBAAe,CAAC,CAAE,CAAC,CAAC;gBAChF,mBAAmB,CAAC,iBAAiB,CAAC,iBAAe,CAAC,CAAA;YACxD,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEd,OAAO,mBAAmB,CAAA;AAC5B,CAAC,CAAA","sourcesContent":["import Logger from \"../../utils/logger\";\nimport { useEffect, useMemo } from \"react\"\nimport { PortalId, useMqtt } from \"../Mqtt\"\nimport { WindGeneratorId, useWindGeneratorsStore } from \"./WindGenerators.store\"\nimport { DC_SOURCE_MONITOR_MODE } from \"../../utils/constants\";\n\nexport const useWindGenerators = () => {\n const windGeneratorsStore = useWindGeneratorsStore()\n const mqtt = useMqtt()\n\n const getTopics = (portalId: PortalId) => ({\n dcSourceMonitorModes: `N/${portalId}/dcsource/+/Settings/MonitorMode`,\n })\n\n const topics = useMemo(() => getTopics(mqtt.portalId), [mqtt.portalId])\n\n const messages = mqtt.messagesByWildcard(topics.dcSourceMonitorModes)\n\n useEffect(() => {\n if (messages && Object.entries(messages).length !== 0) {\n const windGenerators = windGeneratorsStore.windGenerators\n const deviceInstances: WindGeneratorId[] = []\n\n Object.keys(messages).forEach(path => {\n if (messages[path] === DC_SOURCE_MONITOR_MODE.WIND_GENERATOR) {\n const regExpExec = new RegExp('dcsource\\/(?<instance>\\\\d*)').exec(path)\n const instance = regExpExec?.groups?.instance ?? \"\"\n if (instance !== \"\") deviceInstances.push(+instance)\n }\n })\n\n // TODO: check unordered structural identify of old and new state\n // TODO: to avoid unnecessary re-rendering: O(n^2) baby\n if (!windGenerators || windGenerators.length != deviceInstances.length || !deviceInstances.every((id) => windGenerators.includes(id))) {\n Logger.log(`New wind generators instances: ${JSON.stringify(deviceInstances)}`);\n windGeneratorsStore.setWindGenerators(deviceInstances)\n }\n }\n }, [messages])\n\n return windGeneratorsStore\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WindGenerators.store.d.ts","sourceRoot":"/","sources":["src/Modules/WindGenerators/WindGenerators.store.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;AAEvD,qBAAa,cAAc;IACzB,cAAc,EAAE,eAAe,EAAE,CAAK;;IAMtC,iBAAiB,mBAAoB,eAAe,EAAE,uBAAyC;CAChG;AAYD,wBAAgB,sBAAsB,mBAErC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WindGenerators.store.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"WindGenerators.store.js","sourceRoot":"/","sources":["src/Modules/WindGenerators/WindGenerators.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE/B,IAAI,KAAqB,CAAA;AAIzB;IAGE;QAAA,iBAEC;QAJD;;;;mBAAoC,EAAE;WAAA;QAMtC;;;;mBAAoB,UAAC,cAAiC,IAAK,OAAA,KAAI,CAAC,cAAc,GAAG,cAAc,EAApC,CAAoC;WAAA;QAH7F,kBAAkB,CAAC,IAAI,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC,CAAA;IACzD,CAAC;IAGH,qBAAC;AAAD,CAAC,AARD,IAQC;;AAED,SAAS,eAAe;IACtB,IAAM,MAAM,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAI,cAAc,EAAE,CAAA;IAC5C,4CAA4C;IAC5C,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,MAAM,CAAA;IAChD,sCAAsC;IACtC,IAAI,CAAC,KAAK;QAAE,KAAK,GAAG,MAAM,CAAA;IAE1B,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,OAAO,CAAC,cAAM,OAAA,eAAe,EAAE,EAAjB,CAAiB,EAAE,EAAE,CAAC,CAAA;AAC7C,CAAC","sourcesContent":["import { action, makeAutoObservable } from \"mobx\"\nimport { useMemo } from \"react\"\n\nlet store: WindGenerators\n\nexport type WindGeneratorId = number | null | undefined\n\nexport class WindGenerators {\n windGenerators: WindGeneratorId[] = []\n\n constructor() {\n makeAutoObservable(this, { setWindGenerators: action })\n }\n\n setWindGenerators = (windGenerators: WindGeneratorId[]) => this.windGenerators = windGenerators\n}\n\nfunction initializeStore() {\n const _store = store ?? new WindGenerators()\n // For SSG and SSR always create a new store\n if (typeof window === \"undefined\") return _store\n // Create the store once in the client\n if (!store) store = _store\n\n return _store\n}\n\nexport function useWindGeneratorsStore() {\n return useMemo(() => initializeStore(), [])\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["src/Modules/WindGenerators/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAA;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,0BAA0B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"/","sources":["src/Modules/WindGenerators/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAA;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,0BAA0B,CAAA","sourcesContent":["export * from \"./WindGenerators.provider\"\nexport * from \"./WindGenerators.store\"\nexport * from \"./WindGenerator.provider\"\n"]}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,qBAAqB,CAAA;AACnC,cAAc,2BAA2B,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA"}
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"/","sources":["src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,qBAAqB,CAAA;AACnC,cAAc,2BAA2B,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA","sourcesContent":["export * from \"./Modules/AcLoads\"\nexport * from \"./Modules/AcMode\"\nexport * from \"./Modules/ActiveSource\"\nexport * from \"./Modules/Alternators\"\nexport * from \"./Modules/App\"\nexport * from \"./Modules/Battery\"\nexport * from \"./Modules/Chargers\"\nexport * from \"./Modules/DcLoads\"\nexport * from \"./Modules/Generators\"\nexport * from \"./Modules/Header\"\nexport * from \"./Modules/InverterCharger\"\nexport * from \"./Modules/Inverters\"\nexport * from \"./Modules/Language\"\nexport * from \"./Modules/Mqtt\"\nexport * from \"./Modules/PvCharger\"\nexport * from \"./Modules/ShorePowerInput\"\nexport * from \"./Modules/SystemState\"\nexport * from \"./Modules/Tanks\"\nexport * from \"./Modules/Theme\"\nexport * from \"./Modules/Vebus\"\nexport * from \"./Modules/Vrm\"\nexport * from \"./Modules/WindGenerators\"\nexport * from \"./Modules/Temperatures\"\nexport * from \"./utils/storage\""]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"/","sources":["src/utils/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa;;;;CAIzB,CAAA;AAED,eAAO,MAAM,sBAAsB;;CAElC,CAAA;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;CAe9B,CAAA;AAED,eAAO,MAAM,SAAS;;;;;;CAMrB,CAAA;AAED,eAAO,MAAM,cAAc;;;;;CAK1B,CAAA;AAED,eAAO,MAAM,YAAY;;;;CAIxB,CAAA;AAED,eAAO,MAAM,WAAW;;;;;CAKvB,CAAA;AAED,eAAO,MAAM,YAAY;;;CAGxB,CAAA;AAED,eAAO,MAAM,aAAa;;;;;CAKzB,CAAA;AAED,eAAO,MAAM,+BAA+B,QAAQ,CAAA;AAEpD,eAAO,MAAM,8BAA8B;;;CAG1C,CAAA;AAED,eAAO,MAAM,cAAc;;CAE1B,CAAA;AAED,eAAO,MAAM,oBAAoB;;;;;CAKhC,CAAA;AAED,eAAO,MAAM,eAAe;;;;;;;;;;;;;CAa3B,CAAA;AAED,eAAO,MAAM,KAAK;;;;;;;CAOjB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"/","sources":["src/utils/constants.ts"],"names":[],"mappings":"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","sourcesContent":["export const BATTERY_STATE = {\n IDLE: 0,\n CHARGING: 1,\n DISCHARGING: 2,\n}\n\nexport const DC_SOURCE_MONITOR_MODE = {\n WIND_GENERATOR: -8,\n}\n\nexport const VEBUS_SYSTEM_STATE = {\n OFF: 0,\n LOW_POWER: 1,\n FAULT_CONDITION: 2,\n BULK_CHARGING: 3,\n ABSORPTION_CHARGINNG: 4,\n FLOAT_CHARGING: 5,\n STORAGE_MODE: 6,\n EQUALISATION_CHARGING: 7,\n PASSTHRU: 8,\n INVERTING: 9,\n ASSISTING: 10,\n POWER_SUPPLY_MODE: 11,\n DISCHARGING: 256,\n SUSTAIN: 257,\n}\n\nexport const AC_SOURCE = {\n NOT_AVAILABLE: 0,\n GRID: 1,\n GENSET: 2,\n SHORE: 3,\n INVERTING_ISLAND_MODE: 240,\n}\n\nexport const AC_SOURCE_TYPE = {\n NOT_IN_USE: 0,\n GRID: 1,\n GENERATOR: 2,\n SHORE: 3,\n}\n\nexport const ACTIVE_INPUT = {\n INPUT_0: 0,\n INPUT_1: 1,\n NONE: 240, // Inverting\n}\n\nexport const SYSTEM_MODE = {\n CHARGER_ONLY: 1,\n INVERTER_ONLY: 2,\n ON: 3,\n OFF: 4,\n}\n\nexport const CHARGER_MODE = {\n OFF: 4,\n ON: 1,\n}\n\nexport const INVERTER_MODE = {\n ON: 2,\n VEBUS_ON: 3, // Vebus inverters use mode 3 in stead of 2 for ON.\n OFF: 4,\n ECO: 5,\n}\n\nexport const FISCHER_PANDA_GENSET_PRODUCT_ID = 45120 /// 0xB040 VE_PROD_ID_FISCHER_PANDA_GENSET\n\nexport const FISCHER_PANDA_GENSET_AUTOSTART = {\n DISABLED: 0,\n ENABLED: 1,\n}\n\nexport const RELAY_FUNCTION = {\n GENERATOR_START_STOP: 1,\n}\n\nexport const GENERATOR_START_STOP = {\n STOP: 0,\n START: 1,\n AUTO_ON: 1,\n AUTO_OFF: 0,\n}\n\nexport const TANK_FLUID_TYPE = {\n FUEL: 0,\n FRESH_WATER: 1,\n WASTE_WATER: 2,\n LIVE_WELL: 3,\n OIL: 4,\n BLACK_WATER: 5,\n GASOLINE: 5,\n DIESEL: 6,\n LPG: 7,\n LNG: 8,\n HYDRAULIC_OIL: 9,\n RAW_WATER: 10\n}\n\nexport const VIEWS = {\n CONNECTING: \"CONNECTING\",\n METRICS: \"METRICS\",\n INVERTER_CHARGER_INPUT_LIMIT_SELECTOR: \"INVERTER_CHARGER_INPUT_LIMIT_SELECTOR\",\n REMOTE_CONSOLE: \"REMOTE_CONSOLE\",\n MQTT_UNAVAILABLE: \"MQTT_UNAVAILABLE\",\n ERROR: \"ERROR\",\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"/","sources":["src/utils/logger.js"],"names":[],"mappings":";;;;;;AAEA,2CAEC;AACD,4CAEC;AACD,6CAEC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"/","sources":["src/utils/logger.js"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,QAAQ,CAAA;AAEzC,IAAM,GAAG,GAAG;IAAC,cAAO;SAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;QAAP,yBAAO;;IAChB,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;QAAE,OAAO,CAAC,GAAG,OAAX,OAAO,EAAQ,IAAI,EAAC;AAC1D,CAAC,CAAA;AACD,IAAM,IAAI,GAAG;IAAC,cAAO;SAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;QAAP,yBAAO;;IACjB,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;QAAE,OAAO,CAAC,IAAI,OAAZ,OAAO,EAAS,IAAI,EAAC;AAC3D,CAAC,CAAA;AACD,IAAM,KAAK,GAAG;IAAC,cAAO;SAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;QAAP,yBAAO;;IAClB,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;QAAE,OAAO,CAAC,KAAK,OAAb,OAAO,EAAU,IAAI,EAAC;AAC5D,CAAC,CAAA;AAED,eAAe,EAAC,GAAG,KAAA,EAAE,IAAI,MAAA,EAAE,KAAK,OAAA,EAAC,CAAA","sourcesContent":["import {getParameterByName} from \"./util\"\n\nconst log = (...msgs) => {\n if (!getParameterByName(\"nolog\")) console.log(...msgs)\n}\nconst warn = (...msgs) => {\n if (!getParameterByName(\"nolog\")) console.warn(...msgs)\n}\nconst error = (...msgs) => {\n if (!getParameterByName(\"nolog\")) console.error(...msgs)\n}\n\nexport default {log, warn, error}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"/","sources":["src/utils/storage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEtD,eAAO,MAAM,OAAO,EAAE,iBAuCrB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"/","sources":["src/utils/storage.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,aAAa,CAAA;AACrC,OAAO,OAAO,MAAM,WAAW,CAAA;AAG/B,MAAM,CAAC,IAAM,OAAO,GAAsB;IACxC,oGAAoG;IACpG,OAAO,YAAI,GAAW;;QACpB,IAAI,CAAC;YACH,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,MAAA,MAAA,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,mCAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,mCAAI,IAAI,CAAA;YAC7D,CAAC;YAED,OAAO,MAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,mCAAI,IAAI,CAAA;QACjC,CAAC;QAAC,WAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,UAAU,YAAC,GAAW;QACpB,IAAI,CAAC;YACH,IAAI,WAAW,EAAE,CAAC;gBAChB,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;YACpC,CAAC;YAED,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACrB,CAAC;QAAC,WAAM,CAAC;YACP,2CAA2C;QAC7C,CAAC;IACH,CAAC;IAED,gDAAgD;IAChD,OAAO,YAAC,GAAW,EAAE,KAAU;QAC7B,IAAI,CAAC;YACH,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;YACxC,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAA;QAC3C,CAAC;QAAC,WAAM,CAAC;YACP,uCAAuC;QACzC,CAAC;IACH,CAAC;CACF,CAAA","sourcesContent":["import localForage from \"localforage\"\nimport Cookies from \"js-cookie\"\nimport { StorageController } from \"mobx-persist-store\"\n\nexport const Storage: StorageController = {\n // Get a value from browser storage, or null if the value does not exist or storage is not supported\n getItem<T>(key: string): string | T | Promise<string | T | null> | null {\n try {\n if (localForage) {\n return localForage.getItem(key) ?? Cookies.get(key) ?? null\n }\n\n return Cookies.get(key) ?? null\n } catch {\n return null\n }\n },\n\n // Remove an item from browser storage\n removeItem(key: string): void | Promise<void> {\n try {\n if (localForage) {\n localForage.removeItem(key).then()\n }\n\n Cookies.remove(key)\n } catch {\n // Storage not supported, nothing to remove\n }\n },\n\n // Set a value in browser storage (if supported)\n setItem(key: string, value: any): void | Promise<void> {\n try {\n if (localForage) {\n return localForage.setItem(key, value)\n }\n\n Cookies.set(key, value, { expires: 365 })\n } catch {\n // Storage not supported, nothing to do\n }\n }\n}"]}
|
package/dist/src/utils/util.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"/","sources":["src/utils/util.js"],"names":[],"mappings":"AAuBO,wCAFM,KAAK,CAajB;AAEM,kDAON;AAEM,+CAEN;AAEM,sEAGN;AAEM,8DAKN;AAEM,uEAQN;AAEM,8CAEN;AAEM,2SAiCN;AAEM,0DAQN;;UA/GS,GAAG,GAAG,GAAG,GAAG,GAAG;cACf,MAAM;iBACN,MAAM;oBACN,MAAM;cACN,MAAM"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"/","sources":["src/utils/util.js"],"names":[],"mappings":"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","sourcesContent":["import Logger from \"./logger\"\n\nimport { VEBUS_SYSTEM_STATE } from \"./constants\"\n\n/**\n * @typedef {object} Topic\n *\n * @prop {\"N\" | \"R\" | \"W\"} type\n * @prop {string} portalId\n * @prop {string} serviceType\n * @prop {string} deviceInstance\n * @prop {string} dbusPath\n */\n\n/**\n * Splits a topic string into an object with properties for each \"part\"\n *\n * Topic structure is:\n * N/<portal ID>/<service_type>/<device instance>/<D-Bus path>\n *\n * See details at https://github.com/victronenergy/dbus-mqtt\n * @returns {Topic}\n */\nexport const parseTopic = (topic) => {\n const parts = topic.split(\"/\")\n const dbusPathParts = parts.splice(4)\n const isAcIn = dbusPathParts[0] === \"Ac\" && dbusPathParts[1] === \"In\"\n return {\n type: parts[0],\n portalId: parts[1],\n serviceType: parts[2],\n deviceInstance: parts[3] === \"+\" ? \"+\" : parseInt(parts[3]),\n dbusPath: \"/\" + (isAcIn ? dbusPathParts.splice(3).join(\"/\") : dbusPathParts.join(\"/\")),\n }\n}\n\nexport const getMessageJson = (message) => {\n try {\n return JSON.parse(message.toString())\n } catch (e) {\n Logger.error(\"Could not parse message: \", message.toString())\n return { value: null }\n }\n}\n\nexport const objectValues = (data) => {\n return Object.keys(data).map((key) => data[key])\n}\n\nexport const isPathOfType = (dbusPath, enumObject) => {\n const paths = objectValues(enumObject)\n return paths.includes(dbusPath)\n}\n\nexport const arrayToSubscriptionMap = (toSubscribe) => {\n return toSubscribe.reduce((acc, value) => {\n acc[value] = 0\n return acc\n }, {})\n}\n\nexport const getParameterByName = (name, url) => {\n if (!url) url = window.location.href\n name = name.replace(/[[\\]]/g, \"\\\\$&\")\n var regex = new RegExp(\"[?&]\" + name + \"(=([^&#]*)|&|#|$)\"),\n results = regex.exec(url)\n if (!results) return null\n if (!results[2]) return \"\"\n return decodeURIComponent(results[2].replace(/\\+/g, \" \"))\n}\n\nexport const flatten = (arrays) => {\n return [].concat(...arrays)\n}\n\nexport const systemStateFormatter = (value) => {\n switch (value) {\n case VEBUS_SYSTEM_STATE.OFF:\n return \"Off\"\n case VEBUS_SYSTEM_STATE.LOW_POWER:\n return \"Low power\"\n case VEBUS_SYSTEM_STATE.FAULT_CONDITION:\n return \"VE.Bus Fault condition\"\n case VEBUS_SYSTEM_STATE.BULK_CHARGING:\n return \"Bulk charging\"\n case VEBUS_SYSTEM_STATE.ABSORPTION_CHARGINNG:\n return \"Absorption charging\"\n case VEBUS_SYSTEM_STATE.FLOAT_CHARGING:\n return \"Float charging\"\n case VEBUS_SYSTEM_STATE.STORAGE_MODE:\n return \"Storage mode\"\n case VEBUS_SYSTEM_STATE.EQUALISATION_CHARGING:\n return \"Equalisation charging\"\n case VEBUS_SYSTEM_STATE.PASSTHRU:\n return \"Passthru\"\n case VEBUS_SYSTEM_STATE.INVERTING:\n return \"Inverting\"\n case VEBUS_SYSTEM_STATE.ASSISTING:\n return \"Assisting\"\n case VEBUS_SYSTEM_STATE.POWER_SUPPLY_MODE:\n return \"Power supply mode\"\n case VEBUS_SYSTEM_STATE.DISCHARGING:\n return \"Discharging\"\n case VEBUS_SYSTEM_STATE.SUSTAIN:\n return \"Sustain\"\n default:\n return \"--\"\n }\n}\n\nexport const versionToHumanReadable = (version) => {\n if (typeof version !== \"number\" || isNaN(version)) {\n return version\n }\n const major = version >> 16\n const minor = (version >> 8) & 255\n const rev = version & 255\n return \"v\" + major.toString(16) + \".\" + minor.toString(16) + (rev ? \"~\" + rev.toString(16) : \"\") \n}"]}
|