@victronenergy/mfd-modules 11.0.0 → 11.1.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/src/Modules/SwitchingPane/SwitchableOutput.provider.d.ts +4 -1
- package/dist/src/Modules/SwitchingPane/SwitchableOutput.provider.d.ts.map +1 -1
- package/dist/src/Modules/SwitchingPane/SwitchableOutput.provider.js +1 -0
- package/dist/src/Modules/SwitchingPane/SwitchableOutput.provider.js.map +1 -1
- package/dist/src/Modules/SwitchingPane/SwitchingPane.provider.d.ts.map +1 -1
- package/dist/src/Modules/SwitchingPane/SwitchingPane.provider.js +19 -1
- package/dist/src/Modules/SwitchingPane/SwitchingPane.provider.js.map +1 -1
- package/dist/src/Modules/SwitchingPane/SwitchingPane.store.d.ts +3 -0
- package/dist/src/Modules/SwitchingPane/SwitchingPane.store.d.ts.map +1 -1
- package/dist/src/Modules/SwitchingPane/SwitchingPane.store.js +13 -0
- package/dist/src/Modules/SwitchingPane/SwitchingPane.store.js.map +1 -1
- package/dist/src/utils/constants.d.ts +4 -0
- package/dist/src/utils/constants.d.ts.map +1 -1
- package/dist/src/utils/constants.js +4 -0
- package/dist/src/utils/constants.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PortalId, Topics } from "../Mqtt";
|
|
2
2
|
import { SwitchingDeviceInstanceId } from "./SwitchingDevice.provider";
|
|
3
|
-
import { GenericInputStatus, GenericInputType, GenericInputValidTypesBitmask, SwitchableOutputStatus, SwitchableOutputType, SwitchableOutputValidTypesBitmask, SwitchableOutputVisibility } from "../../utils/constants";
|
|
3
|
+
import { GenericInputStatus, GenericInputType, GenericInputValidTypesBitmask, SwitchableOutputStatus, SwitchableOutputType, SwitchableOutputValidTypesBitmask, SwitchableOutputVisibility, SwitchableOutputFunction } from "../../utils/constants";
|
|
4
4
|
import { HSVWColorArray } from "../../utils/hsvw";
|
|
5
5
|
export declare const SWITCHABLE_OUTPUT_TREES: readonly ["system", "switch"];
|
|
6
6
|
export type SwitchableOutputTree = (typeof SWITCHABLE_OUTPUT_TREES)[number];
|
|
@@ -24,6 +24,7 @@ export interface SwitchableOutputState extends SwitchingPaneItemBase {
|
|
|
24
24
|
kind: "switchableOutput";
|
|
25
25
|
type: SwitchableOutputType;
|
|
26
26
|
status: SwitchableOutputStatus;
|
|
27
|
+
function?: SwitchableOutputFunction;
|
|
27
28
|
auto: 0 | 1;
|
|
28
29
|
state: 0 | 1;
|
|
29
30
|
dimming?: number;
|
|
@@ -62,6 +63,7 @@ export interface SwitchableOutputTopics extends Topics {
|
|
|
62
63
|
customName?: string;
|
|
63
64
|
group?: string;
|
|
64
65
|
showUIControl?: string;
|
|
66
|
+
function?: string;
|
|
65
67
|
auto?: string;
|
|
66
68
|
state?: string;
|
|
67
69
|
dimming?: string;
|
|
@@ -81,6 +83,7 @@ export declare const getSwitchableOutputStateTopics: (portalId: PortalId, tree:
|
|
|
81
83
|
customName: string;
|
|
82
84
|
group: string;
|
|
83
85
|
showUIControl: string;
|
|
86
|
+
function: string;
|
|
84
87
|
auto: string;
|
|
85
88
|
state: string;
|
|
86
89
|
dimming: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SwitchableOutput.provider.d.ts","sourceRoot":"/","sources":["src/Modules/SwitchingPane/SwitchableOutput.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAA2B,MAAM,SAAS,CAAA;AAEnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAA;AACtE,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,6BAA6B,EAC7B,sBAAsB,EACtB,oBAAoB,EACpB,iCAAiC,EACjC,0BAA0B,
|
|
1
|
+
{"version":3,"file":"SwitchableOutput.provider.d.ts","sourceRoot":"/","sources":["src/Modules/SwitchingPane/SwitchableOutput.provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,7 @@ export const getSwitchableOutputStateTopics = (portalId, tree, deviceId, outputI
|
|
|
21
21
|
customName: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Settings/CustomName`,
|
|
22
22
|
group: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Settings/Group`,
|
|
23
23
|
showUIControl: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Settings/ShowUIControl`,
|
|
24
|
+
function: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Settings/Function`,
|
|
24
25
|
auto: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Auto`,
|
|
25
26
|
state: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/State`,
|
|
26
27
|
dimming: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Dimming`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SwitchableOutput.provider.js","sourceRoot":"/","sources":["src/Modules/SwitchingPane/SwitchableOutput.provider.ts"],"names":[],"mappings":"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","sourcesContent":["import { PortalId, Topics, useMqtt, useTopicsState } from \"../Mqtt\"\nimport { useMemo } from \"react\"\nimport { SwitchingDeviceInstanceId } from \"./SwitchingDevice.provider\"\nimport {\n GenericInputStatus,\n GenericInputType,\n GenericInputValidTypesBitmask,\n SwitchableOutputStatus,\n SwitchableOutputType,\n SwitchableOutputValidTypesBitmask,\n SwitchableOutputVisibility,\n} from \"../../utils/constants\"\nimport { hsvwArrayToJSON, HSVWColorArray } from \"../../utils/hsvw\"\n\nexport const SWITCHABLE_OUTPUT_TREES = [\"system\", \"switch\"] as const\nexport type SwitchableOutputTree = (typeof SWITCHABLE_OUTPUT_TREES)[number]\nexport type SwitchableOutputId = string\nexport type SwitchableOutputUnit = string | \"/Speed\" | \"/Temperature\" | \"/Volume\"\n\nexport interface SwitchingPaneItemBase {\n tree: SwitchableOutputTree\n deviceId: SwitchingDeviceInstanceId\n outputId: SwitchableOutputId\n name: string\n customName: string\n group: string\n parentDeviceName: string\n showUIControl: SwitchableOutputVisibility\n validTypes: SwitchableOutputValidTypesBitmask | GenericInputValidTypesBitmask\n unit: SwitchableOutputUnit\n decimals?: number\n // NOTE: JSON encoded string array\n labels: string\n}\n\nexport interface SwitchableOutputState extends SwitchingPaneItemBase {\n kind: \"switchableOutput\"\n type: SwitchableOutputType\n status: SwitchableOutputStatus\n auto: 0 | 1\n state: 0 | 1\n dimming?: number\n dimmingMin?: number\n dimmingMax?: number\n // NOTE: stepSize can be of any precision, respect the precision in the UI\n stepSize?: number\n measurement?: number\n lightControls: HSVWColorArray\n}\n\nexport interface GenericInputState extends SwitchingPaneItemBase {\n kind: \"genericInput\"\n type: GenericInputType\n status: GenericInputStatus\n value?: number | null\n event?: number\n primaryLabel?: string\n rangeMin?: number\n rangeMax?: number\n invert?: 0 | 1\n digitalInputMode?: number\n}\n\nexport type SwitchingPaneItem = SwitchableOutputState | GenericInputState\n\nexport interface SwitchableOutputProvider extends SwitchableOutputState {\n updateType: (type: SwitchableOutputType) => void\n updateAuto: (auto: 0 | 1) => void\n updateState: (state: 0 | 1) => void\n updateDimming: (dimming: number) => void\n updateLightControls: (hsvwa: HSVWColorArray) => void\n}\n\nexport function switchableOutputSupportsType(\n validType: SwitchableOutputValidTypesBitmask,\n type: SwitchableOutputType\n): boolean {\n return (validType & (1 << type)) !== 0\n}\n\nexport interface SwitchableOutputTopics extends Topics {\n type?: string\n validTypes?: string\n status?: string\n name?: string\n customName?: string\n group?: string\n showUIControl?: string\n auto?: string\n state?: string\n dimming?: string\n dimmingMin?: string\n dimmingMax?: string\n stepSize?: string\n measurement?: string\n unit?: string\n labels?: string[]\n}\n\nexport const getSwitchingPaneItemNameForDisplay = (state: SwitchingPaneItem, switchingDeviceName: string) => {\n // when custom name defined, or group not overriden\n if (state.customName || state.group === \"\") {\n return state.customName || state.name\n }\n // otherwise prepend switching device name\n return `${switchingDeviceName} | ${state.name}`\n}\n\nexport const getSwitchableOutputStateTopics = (\n portalId: PortalId,\n tree: SwitchableOutputTree,\n deviceId: SwitchingDeviceInstanceId,\n outputId: SwitchableOutputId\n) => ({\n type: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Settings/Type`,\n validTypes: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Settings/ValidTypes`,\n status: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Status`,\n name: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Name`,\n customName: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Settings/CustomName`,\n group: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Settings/Group`,\n showUIControl: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Settings/ShowUIControl`,\n auto: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Auto`,\n state: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/State`,\n dimming: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Dimming`,\n dimmingMin: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Settings/DimmingMin`,\n dimmingMax: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Settings/DimmingMax`,\n stepSize: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Settings/StepSize`,\n measurement: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Measurement`,\n unit: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Settings/Unit`,\n decimals: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Settings/Decimals`,\n labels: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Settings/Labels`,\n lightControls: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/LightControls`,\n})\n\nexport const getSwitchableOutputWriteTopics = (\n portalId: PortalId,\n tree: SwitchableOutputTree,\n deviceId: SwitchingDeviceInstanceId,\n outputId: SwitchableOutputId\n) => ({\n type: `W/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Settings/Type`,\n auto: `W/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Auto`,\n state: `W/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/State`,\n dimming: `W/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Dimming`,\n lightControls: `W/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/LightControls`,\n})\n\nexport function useSwitchableOutput(\n tree: SwitchableOutputTree,\n deviceId: SwitchingDeviceInstanceId,\n outputId: SwitchableOutputId\n): SwitchableOutputProvider {\n const mqtt = useMqtt()\n const topics = useMemo(\n () => getSwitchableOutputStateTopics(mqtt.portalId, tree, deviceId, outputId),\n [mqtt.portalId, tree, deviceId, outputId]\n )\n const writeTopics = useMemo(\n () => getSwitchableOutputWriteTopics(mqtt.portalId, tree, deviceId, outputId),\n [mqtt.portalId, tree, deviceId, outputId]\n )\n\n const updateType = (type: SwitchableOutputType) => mqtt.publish(writeTopics.type, type)\n const updateAuto = (auto: 0 | 1) => mqtt.publish(writeTopics.auto, auto)\n const updateState = (state: 0 | 1) => mqtt.publish(writeTopics.state, state)\n const updateDimming = (dimming: number) => mqtt.publish(writeTopics.dimming, dimming)\n const updateLightControls = (hsvwa: HSVWColorArray) =>\n mqtt.publish(writeTopics.lightControls, { raw: hsvwArrayToJSON(hsvwa) })\n\n return {\n ...useTopicsState<SwitchableOutputState>(topics),\n tree: tree,\n updateType,\n updateAuto,\n updateState,\n updateDimming,\n updateLightControls,\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SwitchableOutput.provider.js","sourceRoot":"/","sources":["src/Modules/SwitchingPane/SwitchableOutput.provider.ts"],"names":[],"mappings":"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","sourcesContent":["import { PortalId, Topics, useMqtt, useTopicsState } from \"../Mqtt\"\nimport { useMemo } from \"react\"\nimport { SwitchingDeviceInstanceId } from \"./SwitchingDevice.provider\"\nimport {\n GenericInputStatus,\n GenericInputType,\n GenericInputValidTypesBitmask,\n SwitchableOutputStatus,\n SwitchableOutputType,\n SwitchableOutputValidTypesBitmask,\n SwitchableOutputVisibility,\n SwitchableOutputFunction,\n} from \"../../utils/constants\"\nimport { hsvwArrayToJSON, HSVWColorArray } from \"../../utils/hsvw\"\n\nexport const SWITCHABLE_OUTPUT_TREES = [\"system\", \"switch\"] as const\nexport type SwitchableOutputTree = (typeof SWITCHABLE_OUTPUT_TREES)[number]\nexport type SwitchableOutputId = string\nexport type SwitchableOutputUnit = string | \"/Speed\" | \"/Temperature\" | \"/Volume\"\n\nexport interface SwitchingPaneItemBase {\n tree: SwitchableOutputTree\n deviceId: SwitchingDeviceInstanceId\n outputId: SwitchableOutputId\n name: string\n customName: string\n group: string\n parentDeviceName: string\n showUIControl: SwitchableOutputVisibility\n validTypes: SwitchableOutputValidTypesBitmask | GenericInputValidTypesBitmask\n unit: SwitchableOutputUnit\n decimals?: number\n // NOTE: JSON encoded string array\n labels: string\n}\n\nexport interface SwitchableOutputState extends SwitchingPaneItemBase {\n kind: \"switchableOutput\"\n type: SwitchableOutputType\n status: SwitchableOutputStatus\n function?: SwitchableOutputFunction\n auto: 0 | 1\n state: 0 | 1\n dimming?: number\n dimmingMin?: number\n dimmingMax?: number\n // NOTE: stepSize can be of any precision, respect the precision in the UI\n stepSize?: number\n measurement?: number\n lightControls: HSVWColorArray\n}\n\nexport interface GenericInputState extends SwitchingPaneItemBase {\n kind: \"genericInput\"\n type: GenericInputType\n status: GenericInputStatus\n value?: number | null\n event?: number\n primaryLabel?: string\n rangeMin?: number\n rangeMax?: number\n invert?: 0 | 1\n digitalInputMode?: number\n}\n\nexport type SwitchingPaneItem = SwitchableOutputState | GenericInputState\n\nexport interface SwitchableOutputProvider extends SwitchableOutputState {\n updateType: (type: SwitchableOutputType) => void\n updateAuto: (auto: 0 | 1) => void\n updateState: (state: 0 | 1) => void\n updateDimming: (dimming: number) => void\n updateLightControls: (hsvwa: HSVWColorArray) => void\n}\n\nexport function switchableOutputSupportsType(\n validType: SwitchableOutputValidTypesBitmask,\n type: SwitchableOutputType\n): boolean {\n return (validType & (1 << type)) !== 0\n}\n\nexport interface SwitchableOutputTopics extends Topics {\n type?: string\n validTypes?: string\n status?: string\n name?: string\n customName?: string\n group?: string\n showUIControl?: string\n function?: string\n auto?: string\n state?: string\n dimming?: string\n dimmingMin?: string\n dimmingMax?: string\n stepSize?: string\n measurement?: string\n unit?: string\n labels?: string[]\n}\n\nexport const getSwitchingPaneItemNameForDisplay = (state: SwitchingPaneItem, switchingDeviceName: string) => {\n // when custom name defined, or group not overriden\n if (state.customName || state.group === \"\") {\n return state.customName || state.name\n }\n // otherwise prepend switching device name\n return `${switchingDeviceName} | ${state.name}`\n}\n\nexport const getSwitchableOutputStateTopics = (\n portalId: PortalId,\n tree: SwitchableOutputTree,\n deviceId: SwitchingDeviceInstanceId,\n outputId: SwitchableOutputId\n) => ({\n type: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Settings/Type`,\n validTypes: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Settings/ValidTypes`,\n status: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Status`,\n name: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Name`,\n customName: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Settings/CustomName`,\n group: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Settings/Group`,\n showUIControl: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Settings/ShowUIControl`,\n function: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Settings/Function`,\n auto: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Auto`,\n state: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/State`,\n dimming: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Dimming`,\n dimmingMin: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Settings/DimmingMin`,\n dimmingMax: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Settings/DimmingMax`,\n stepSize: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Settings/StepSize`,\n measurement: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Measurement`,\n unit: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Settings/Unit`,\n decimals: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Settings/Decimals`,\n labels: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Settings/Labels`,\n lightControls: `N/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/LightControls`,\n})\n\nexport const getSwitchableOutputWriteTopics = (\n portalId: PortalId,\n tree: SwitchableOutputTree,\n deviceId: SwitchingDeviceInstanceId,\n outputId: SwitchableOutputId\n) => ({\n type: `W/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Settings/Type`,\n auto: `W/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Auto`,\n state: `W/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/State`,\n dimming: `W/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/Dimming`,\n lightControls: `W/${portalId}/${tree}/${deviceId}/SwitchableOutput/${outputId}/LightControls`,\n})\n\nexport function useSwitchableOutput(\n tree: SwitchableOutputTree,\n deviceId: SwitchingDeviceInstanceId,\n outputId: SwitchableOutputId\n): SwitchableOutputProvider {\n const mqtt = useMqtt()\n const topics = useMemo(\n () => getSwitchableOutputStateTopics(mqtt.portalId, tree, deviceId, outputId),\n [mqtt.portalId, tree, deviceId, outputId]\n )\n const writeTopics = useMemo(\n () => getSwitchableOutputWriteTopics(mqtt.portalId, tree, deviceId, outputId),\n [mqtt.portalId, tree, deviceId, outputId]\n )\n\n const updateType = (type: SwitchableOutputType) => mqtt.publish(writeTopics.type, type)\n const updateAuto = (auto: 0 | 1) => mqtt.publish(writeTopics.auto, auto)\n const updateState = (state: 0 | 1) => mqtt.publish(writeTopics.state, state)\n const updateDimming = (dimming: number) => mqtt.publish(writeTopics.dimming, dimming)\n const updateLightControls = (hsvwa: HSVWColorArray) =>\n mqtt.publish(writeTopics.lightControls, { raw: hsvwArrayToJSON(hsvwa) })\n\n return {\n ...useTopicsState<SwitchableOutputState>(topics),\n tree: tree,\n updateType,\n updateAuto,\n updateState,\n updateDimming,\n updateLightControls,\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SwitchingPane.provider.d.ts","sourceRoot":"/","sources":["src/Modules/SwitchingPane/SwitchingPane.provider.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,gBAAgB,GAAI,yBAAyB,MAAM,
|
|
1
|
+
{"version":3,"file":"SwitchingPane.provider.d.ts","sourceRoot":"/","sources":["src/Modules/SwitchingPane/SwitchingPane.provider.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,gBAAgB,GAAI,yBAAyB,MAAM,uDA+S/D,CAAA"}
|
|
@@ -6,7 +6,7 @@ import { useSwitchingPaneStore } from "./SwitchingPane.store";
|
|
|
6
6
|
import { getSwitchingDeviceStateTopics } from "./SwitchingDevice.provider";
|
|
7
7
|
import { getSwitchingPaneItemNameForDisplay, getSwitchableOutputStateTopics, SWITCHABLE_OUTPUT_TREES, } from "./SwitchableOutput.provider";
|
|
8
8
|
import { getGenericInputStateTopics } from "./GenericInput.provider";
|
|
9
|
-
import { remapGenericInputType, SWITCHABLE_OUTPUT_VISIBILITY } from "../../utils/constants";
|
|
9
|
+
import { remapGenericInputType, SWITCHABLE_OUTPUT_FUNCTION, SWITCHABLE_OUTPUT_VISIBILITY } from "../../utils/constants";
|
|
10
10
|
const hasMessages = (messages) => messages && Object.keys(messages).length > 0;
|
|
11
11
|
export const useSwitchingPane = (gxDeviceRelaysGroupName) => {
|
|
12
12
|
const switchingPaneStore = useSwitchingPaneStore();
|
|
@@ -48,6 +48,10 @@ export const useSwitchingPane = (gxDeviceRelaysGroupName) => {
|
|
|
48
48
|
const availableSwitchableOutputVisibilityFlags = availableSwitchableOutputs.map((topic) => {
|
|
49
49
|
return messagesForSwitchableOutputs[`${topic.slice(0, -"/Group".length)}/ShowUIControl`];
|
|
50
50
|
});
|
|
51
|
+
// All switchable outputs functions in array sorted by topic
|
|
52
|
+
const availableSwitchableOutputFunctions = availableSwitchableOutputs.map((topic) => {
|
|
53
|
+
return messagesForSwitchableOutputs[`${topic.slice(0, -"/Group".length)}/Function`];
|
|
54
|
+
});
|
|
51
55
|
// All generic inputs in array sorted by topic
|
|
52
56
|
const availableGenericInputs = messagesForGenericInputs
|
|
53
57
|
? Object.keys(messagesForGenericInputs)
|
|
@@ -109,6 +113,13 @@ export const useSwitchingPane = (gxDeviceRelaysGroupName) => {
|
|
|
109
113
|
switchingPaneStore.setOutputVisibilityFlags(newOutputVisibilityFlags);
|
|
110
114
|
Logger.log(`Switchable outputs visibility flags changed, recomputing...`);
|
|
111
115
|
}
|
|
116
|
+
const oldOutputFunctions = switchingPaneStore.outputFunctions;
|
|
117
|
+
const newOutputFunctions = availableSwitchableOutputFunctions;
|
|
118
|
+
const outputFunctionsChanged = !arraysEqual(oldOutputFunctions, newOutputFunctions);
|
|
119
|
+
if (outputFunctionsChanged) {
|
|
120
|
+
switchingPaneStore.setOutputFunctions(newOutputFunctions);
|
|
121
|
+
Logger.log(`Switchable outputs functions changed, recomputing...`);
|
|
122
|
+
}
|
|
112
123
|
const oldSwitchingDevices = switchingPaneStore.switchingDevices;
|
|
113
124
|
const newSwitchingDevices = availableSwitchingDevices;
|
|
114
125
|
const switchingDevicesChanged = !arraysEqual(oldSwitchingDevices, newSwitchingDevices);
|
|
@@ -155,6 +166,7 @@ export const useSwitchingPane = (gxDeviceRelaysGroupName) => {
|
|
|
155
166
|
outputTypesChanged ||
|
|
156
167
|
outputNamesChanged ||
|
|
157
168
|
outputVisibilityFlagsChanged ||
|
|
169
|
+
outputFunctionsChanged ||
|
|
158
170
|
switchingDevicesChanged ||
|
|
159
171
|
switchingDeviceNamesChanged ||
|
|
160
172
|
giGroupAssignmentsChanged ||
|
|
@@ -174,6 +186,12 @@ export const useSwitchingPane = (gxDeviceRelaysGroupName) => {
|
|
|
174
186
|
switchableOutput.showUIControl & SWITCHABLE_OUTPUT_VISIBILITY.VISIBLE_LOCAL_UI)) {
|
|
175
187
|
return;
|
|
176
188
|
}
|
|
189
|
+
// GX system relays: only show when Function is Manual (matching gui-v2)
|
|
190
|
+
if (swo.tree === "system" &&
|
|
191
|
+
switchableOutput.function != null &&
|
|
192
|
+
switchableOutput.function !== SWITCHABLE_OUTPUT_FUNCTION.MANUAL) {
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
177
195
|
items.push({
|
|
178
196
|
groupName,
|
|
179
197
|
item: Object.assign(Object.assign({}, switchableOutput), { kind: "switchableOutput", tree: swo.tree, deviceId: swo.deviceId, outputId: swo.outputId, parentDeviceName: deviceName }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SwitchingPane.provider.js","sourceRoot":"/","sources":["src/Modules/SwitchingPane/SwitchingPane.provider.ts"],"names":[],"mappings":"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","sourcesContent":["import { autorun } from \"mobx\"\nimport Logger from \"../../utils/logger\"\nimport { PortalId, useMqtt } from \"../Mqtt\"\nimport { useMemo, useEffect } from \"react\"\nimport { useSwitchingPaneStore } from \"./SwitchingPane.store\"\nimport { getSwitchingDeviceStateTopics, SwitchingDeviceInstanceId } from \"./SwitchingDevice.provider\"\nimport {\n getSwitchingPaneItemNameForDisplay,\n getSwitchableOutputStateTopics,\n SWITCHABLE_OUTPUT_TREES,\n SwitchableOutputId,\n SwitchableOutputState,\n SwitchableOutputTree,\n GenericInputState,\n SwitchingPaneItem,\n} from \"./SwitchableOutput.provider\"\nimport { getGenericInputStateTopics, GenericInputId } from \"./GenericInput.provider\"\nimport { remapGenericInputType, SWITCHABLE_OUTPUT_VISIBILITY } from \"../../utils/constants\"\n\nconst hasMessages = (messages: Record<string, string> | undefined) => messages && Object.keys(messages).length > 0\n\nexport const useSwitchingPane = (gxDeviceRelaysGroupName: string) => {\n const switchingPaneStore = useSwitchingPaneStore()\n\n const getTopics = (portalId: PortalId) => ({\n switchableOutputs: `N/${portalId}/(${SWITCHABLE_OUTPUT_TREES.join(\"|\")})/+/SwitchableOutput/+/Settings/+`,\n genericInputs: `N/${portalId}/(${SWITCHABLE_OUTPUT_TREES.join(\"|\")})/+/GenericInput/+/Settings/+`,\n switchingDevices: `N/${portalId}/switch/+`,\n })\n\n const mqtt = useMqtt()\n const topics = useMemo(() => getTopics(mqtt.portalId), [mqtt.portalId])\n\n const messagesForSwitchableOutputs = mqtt.messagesByWildcard(topics.switchableOutputs)\n const messagesForGenericInputs = mqtt.messagesByWildcard(topics.genericInputs)\n const messagesForSwitchingDevices = mqtt.messagesByWildcard(topics.switchingDevices)\n\n // Examine MQTT to find all available switchable outputs, generic inputs, and their group assignments\n useEffect(() => {\n if (!hasMessages(messagesForSwitchableOutputs) && !hasMessages(messagesForGenericInputs)) {\n Logger.log(\"Waiting for switchable outputs or generic inputs...\")\n return\n }\n\n // All switchable outputs in array sorted by topic\n const availableSwitchableOutputs = messagesForSwitchableOutputs\n ? (Object.keys(messagesForSwitchableOutputs)\n .filter((key) => key.endsWith(\"/Settings/Group\"))\n .sort() as string[])\n : []\n\n // All switchable outputs group assignments in array sorted by topic\n const customGroupAssigments = availableSwitchableOutputs.map((topic) => {\n return messagesForSwitchableOutputs[topic]\n })\n // All switchable outputs types in array sorted by topic\n const availableSwitchableOutputTypes = availableSwitchableOutputs.map((topic) => {\n return messagesForSwitchableOutputs[`${topic.slice(0, -\"/Group\".length)}/Type`]\n })\n // All switchable outputs names in array sorted by topic\n const availableSwitchableOutputNames = availableSwitchableOutputs.map((topic) => {\n return messagesForSwitchableOutputs[`${topic.slice(0, -\"/Group\".length)}/CustomName`]\n })\n // All switchable outputs visibility in array sorted by topic\n const availableSwitchableOutputVisibilityFlags = availableSwitchableOutputs.map((topic) => {\n return messagesForSwitchableOutputs[`${topic.slice(0, -\"/Group\".length)}/ShowUIControl`]\n })\n\n // All generic inputs in array sorted by topic\n const availableGenericInputs = messagesForGenericInputs\n ? (Object.keys(messagesForGenericInputs)\n .filter((key) => key.endsWith(\"/Settings/Group\"))\n .sort() as string[])\n : []\n\n // All generic input group assignments in array sorted by topic\n const genericInputGroupAssignments = availableGenericInputs.map((topic) => {\n return messagesForGenericInputs[topic]\n })\n // All generic input types in array sorted by topic\n const availableGenericInputTypes = availableGenericInputs.map((topic) => {\n return messagesForGenericInputs[`${topic.slice(0, -\"/Group\".length)}/Type`]\n })\n // All generic input names in array sorted by topic\n const availableGenericInputNames = availableGenericInputs.map((topic) => {\n return messagesForGenericInputs[`${topic.slice(0, -\"/Group\".length)}/CustomName`]\n })\n // All generic input visibility in array sorted by topic\n const availableGenericInputVisibilityFlags = availableGenericInputs.map((topic) => {\n return messagesForGenericInputs[`${topic.slice(0, -\"/Group\".length)}/ShowUIInput`]\n })\n\n // All switching devices in array sorted by instance number\n const availableSwitchingDevices = Object.keys(messagesForSwitchingDevices)\n .filter((key) => key.endsWith(\"/DeviceInstance\"))\n .sort() as string[]\n\n // All switching device names in array sorted by instance number\n const availableSwitchingDeviceNames = availableSwitchingDevices.map((topic) => {\n const topicPrefix = topic.slice(0, -\"/DeviceInstance\".length)\n return (\n messagesForSwitchingDevices[`${topicPrefix}/CustomName`] ||\n messagesForSwitchingDevices[`${topicPrefix}/ProductName`]\n )\n })\n\n const dispose = autorun(() => {\n const oldAssignments = switchingPaneStore.customGroupAssignments\n const newAssignments = customGroupAssigments\n const groupAssignmentsChanged = !arraysEqual(oldAssignments, newAssignments)\n if (groupAssignmentsChanged) {\n switchingPaneStore.setCustomGroupAssignments(newAssignments)\n Logger.log(`Switchable outputs group assignments changed, recomputing...`)\n }\n\n const oldOutputTypes = switchingPaneStore.outputTypes\n const newOutputTypes = availableSwitchableOutputTypes\n const outputTypesChanged = !arraysEqual(oldOutputTypes, newOutputTypes)\n if (outputTypesChanged) {\n switchingPaneStore.setOutputTypes(newOutputTypes)\n Logger.log(`Switchable outputs types changed, recomputing...`)\n }\n\n const oldOutputNames = switchingPaneStore.outputNames\n const newOutputNames = availableSwitchableOutputNames\n const outputNamesChanged = !arraysEqual(oldOutputNames, newOutputNames)\n if (outputNamesChanged) {\n switchingPaneStore.setOutputNames(newOutputNames)\n Logger.log(`Switchable outputs names changed, recomputing...`)\n }\n\n const oldOutputVisibilityFlags = switchingPaneStore.outputVisibilityFlags\n const newOutputVisibilityFlags = availableSwitchableOutputVisibilityFlags\n const outputVisibilityFlagsChanged = !arraysEqual(oldOutputVisibilityFlags, newOutputVisibilityFlags)\n if (outputVisibilityFlagsChanged) {\n switchingPaneStore.setOutputVisibilityFlags(newOutputVisibilityFlags)\n Logger.log(`Switchable outputs visibility flags changed, recomputing...`)\n }\n\n const oldSwitchingDevices = switchingPaneStore.switchingDevices\n const newSwitchingDevices = availableSwitchingDevices\n const switchingDevicesChanged = !arraysEqual(oldSwitchingDevices, newSwitchingDevices)\n if (switchingDevicesChanged) {\n switchingPaneStore.setSwitchingDevices(newSwitchingDevices)\n Logger.log(`Switching devices changed, recomputing...`)\n }\n\n const oldSwitchingDeviceNames = switchingPaneStore.switchingDeviceNames\n const newSwitchingDeviceNames = availableSwitchingDeviceNames\n const switchingDeviceNamesChanged = !arraysEqual(oldSwitchingDeviceNames, newSwitchingDeviceNames)\n if (switchingDeviceNamesChanged) {\n switchingPaneStore.setSwitchingDeviceNames(newSwitchingDeviceNames)\n Logger.log(`Switching device names changed, recomputing...`)\n }\n\n const oldGiAssignments = switchingPaneStore.genericInputGroupAssignments\n const newGiAssignments = genericInputGroupAssignments\n const giGroupAssignmentsChanged = !arraysEqual(oldGiAssignments, newGiAssignments)\n if (giGroupAssignmentsChanged) {\n switchingPaneStore.setGenericInputGroupAssignments(newGiAssignments)\n Logger.log(`Generic input group assignments changed, recomputing...`)\n }\n\n const oldGiTypes = switchingPaneStore.genericInputTypes\n const newGiTypes = availableGenericInputTypes\n const giTypesChanged = !arraysEqual(oldGiTypes, newGiTypes)\n if (giTypesChanged) {\n switchingPaneStore.setGenericInputTypes(newGiTypes)\n Logger.log(`Generic input types changed, recomputing...`)\n }\n\n const oldGiNames = switchingPaneStore.genericInputNames\n const newGiNames = availableGenericInputNames\n const giNamesChanged = !arraysEqual(oldGiNames, newGiNames)\n if (giNamesChanged) {\n switchingPaneStore.setGenericInputNames(newGiNames)\n Logger.log(`Generic input names changed, recomputing...`)\n }\n\n const oldGiVisibilityFlags = switchingPaneStore.genericInputVisibilityFlags\n const newGiVisibilityFlags = availableGenericInputVisibilityFlags\n const giVisibilityFlagsChanged = !arraysEqual(oldGiVisibilityFlags, newGiVisibilityFlags)\n if (giVisibilityFlagsChanged) {\n switchingPaneStore.setGenericInputVisibilityFlags(newGiVisibilityFlags)\n Logger.log(`Generic input visibility flags changed, recomputing...`)\n }\n\n if (\n groupAssignmentsChanged ||\n outputTypesChanged ||\n outputNamesChanged ||\n outputVisibilityFlagsChanged ||\n switchingDevicesChanged ||\n switchingDeviceNamesChanged ||\n giGroupAssignmentsChanged ||\n giTypesChanged ||\n giNamesChanged ||\n giVisibilityFlagsChanged\n ) {\n // Collect all switching pane items (switchable outputs + generic inputs) with their group info\n const items: { groupName: string; item: SwitchingPaneItem }[] = []\n\n availableSwitchableOutputs.forEach((output, index) => {\n const swo = extractSwitchableOutputInfo(output)\n const switchingDevice = mqtt.messagesByTopics(\n getSwitchingDeviceStateTopics(mqtt.portalId, swo.tree, swo.deviceId)\n )\n const customGroupAssignment = customGroupAssigments[index].trim()\n const deviceName = switchingDevice.customName || switchingDevice.productName || gxDeviceRelaysGroupName\n const groupName = customGroupAssignment === \"\" ? deviceName : customGroupAssignment\n const switchableOutput = mqtt.messagesByTopics(\n getSwitchableOutputStateTopics(mqtt.portalId, swo.tree, swo.deviceId, swo.outputId)\n ) as unknown as SwitchableOutputState\n\n if (\n !(\n switchableOutput.showUIControl & SWITCHABLE_OUTPUT_VISIBILITY.VISIBLE ||\n switchableOutput.showUIControl & SWITCHABLE_OUTPUT_VISIBILITY.VISIBLE_LOCAL_UI\n )\n ) {\n return\n }\n\n items.push({\n groupName,\n item: {\n ...switchableOutput,\n kind: \"switchableOutput\",\n tree: swo.tree,\n deviceId: swo.deviceId,\n outputId: swo.outputId,\n parentDeviceName: deviceName as string,\n },\n })\n })\n\n availableGenericInputs.forEach((input, index) => {\n const gi = extractGenericInputInfo(input)\n const switchingDevice = mqtt.messagesByTopics(\n getSwitchingDeviceStateTopics(mqtt.portalId, gi.tree, gi.deviceId)\n )\n const customGroupAssignment = genericInputGroupAssignments[index].trim()\n const deviceName = switchingDevice.customName || switchingDevice.productName || gxDeviceRelaysGroupName\n const groupName = customGroupAssignment === \"\" ? deviceName : customGroupAssignment\n const genericInput = mqtt.messagesByTopics(\n getGenericInputStateTopics(mqtt.portalId, gi.tree, gi.deviceId, gi.inputId)\n ) as unknown as GenericInputState\n\n if (\n !(\n genericInput.showUIControl & SWITCHABLE_OUTPUT_VISIBILITY.VISIBLE ||\n genericInput.showUIControl & SWITCHABLE_OUTPUT_VISIBILITY.VISIBLE_LOCAL_UI\n )\n ) {\n return\n }\n\n items.push({\n groupName,\n item: {\n ...genericInput,\n kind: \"genericInput\",\n tree: gi.tree,\n deviceId: gi.deviceId,\n outputId: gi.inputId,\n parentDeviceName: deviceName as string,\n type: remapGenericInputType(genericInput.type as number),\n },\n })\n })\n\n // Distribute items to groups\n const newGroups: { [key: string]: SwitchingPaneItem[] } = {}\n items.forEach(({ groupName, item }) => {\n newGroups[groupName] ||= []\n newGroups[groupName].push(item)\n })\n\n // Sort items in each group by display name\n Object.values(newGroups).forEach((array) => {\n array.sort((a, b) => {\n const aName = getSwitchingPaneItemNameForDisplay(a, a.parentDeviceName)\n const bName = getSwitchingPaneItemNameForDisplay(b, b.parentDeviceName)\n return aName.localeCompare(bName)\n })\n })\n\n Logger.log(`New switching pane groups: ${JSON.stringify(Object.keys(newGroups))}`)\n switchingPaneStore.setGroups(newGroups)\n }\n })\n return () => dispose()\n }, [\n messagesForSwitchableOutputs,\n messagesForGenericInputs,\n messagesForSwitchingDevices,\n gxDeviceRelaysGroupName,\n mqtt,\n switchingPaneStore,\n ])\n\n return switchingPaneStore\n}\n\nfunction extractSwitchableOutputInfo(topic: string) {\n const pattern = new RegExp(`/(${SWITCHABLE_OUTPUT_TREES.join(\"|\")})/`)\n const match = topic.match(pattern)\n const switchStart = match ? match.index! + match[0].length : -1 // length of `/system/`, or `/switch/`, or ...\n const outputStart = topic.indexOf(\"/SwitchableOutput/\") + 18 // length of `/SwitchableOutput/`\n\n return {\n tree: (match?.[1] as SwitchableOutputTree) ?? null, // \"switch\", \"system\", ...\n deviceId: Number(topic.substring(switchStart, topic.indexOf(\"/\", switchStart))) as SwitchingDeviceInstanceId,\n outputId: topic.substring(outputStart, topic.indexOf(\"/\", outputStart)) as SwitchableOutputId,\n }\n}\n\nfunction extractGenericInputInfo(topic: string) {\n const pattern = new RegExp(`/(${SWITCHABLE_OUTPUT_TREES.join(\"|\")})/`)\n const match = topic.match(pattern)\n const treeEnd = match ? match.index! + match[0].length : -1\n const inputStart = topic.indexOf(\"/GenericInput/\") + 14 // length of `/GenericInput/`\n\n return {\n tree: (match?.[1] as SwitchableOutputTree) ?? null,\n deviceId: Number(topic.substring(treeEnd, topic.indexOf(\"/\", treeEnd))) as SwitchingDeviceInstanceId,\n inputId: topic.substring(inputStart, topic.indexOf(\"/\", inputStart)) as GenericInputId,\n }\n}\n\nfunction arraysEqual<T>(a: T[], b: T[]): boolean {\n if (a.length !== b.length) return false\n return a.every((element, index) => b[index] === element)\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SwitchingPane.provider.js","sourceRoot":"/","sources":["src/Modules/SwitchingPane/SwitchingPane.provider.ts"],"names":[],"mappings":"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","sourcesContent":["import { autorun } from \"mobx\"\nimport Logger from \"../../utils/logger\"\nimport { PortalId, useMqtt } from \"../Mqtt\"\nimport { useMemo, useEffect } from \"react\"\nimport { useSwitchingPaneStore } from \"./SwitchingPane.store\"\nimport { getSwitchingDeviceStateTopics, SwitchingDeviceInstanceId } from \"./SwitchingDevice.provider\"\nimport {\n getSwitchingPaneItemNameForDisplay,\n getSwitchableOutputStateTopics,\n SWITCHABLE_OUTPUT_TREES,\n SwitchableOutputId,\n SwitchableOutputState,\n SwitchableOutputTree,\n GenericInputState,\n SwitchingPaneItem,\n} from \"./SwitchableOutput.provider\"\nimport { getGenericInputStateTopics, GenericInputId } from \"./GenericInput.provider\"\nimport { remapGenericInputType, SWITCHABLE_OUTPUT_FUNCTION, SWITCHABLE_OUTPUT_VISIBILITY } from \"../../utils/constants\"\n\nconst hasMessages = (messages: Record<string, string> | undefined) => messages && Object.keys(messages).length > 0\n\nexport const useSwitchingPane = (gxDeviceRelaysGroupName: string) => {\n const switchingPaneStore = useSwitchingPaneStore()\n\n const getTopics = (portalId: PortalId) => ({\n switchableOutputs: `N/${portalId}/(${SWITCHABLE_OUTPUT_TREES.join(\"|\")})/+/SwitchableOutput/+/Settings/+`,\n genericInputs: `N/${portalId}/(${SWITCHABLE_OUTPUT_TREES.join(\"|\")})/+/GenericInput/+/Settings/+`,\n switchingDevices: `N/${portalId}/switch/+`,\n })\n\n const mqtt = useMqtt()\n const topics = useMemo(() => getTopics(mqtt.portalId), [mqtt.portalId])\n\n const messagesForSwitchableOutputs = mqtt.messagesByWildcard(topics.switchableOutputs)\n const messagesForGenericInputs = mqtt.messagesByWildcard(topics.genericInputs)\n const messagesForSwitchingDevices = mqtt.messagesByWildcard(topics.switchingDevices)\n\n // Examine MQTT to find all available switchable outputs, generic inputs, and their group assignments\n useEffect(() => {\n if (!hasMessages(messagesForSwitchableOutputs) && !hasMessages(messagesForGenericInputs)) {\n Logger.log(\"Waiting for switchable outputs or generic inputs...\")\n return\n }\n\n // All switchable outputs in array sorted by topic\n const availableSwitchableOutputs = messagesForSwitchableOutputs\n ? (Object.keys(messagesForSwitchableOutputs)\n .filter((key) => key.endsWith(\"/Settings/Group\"))\n .sort() as string[])\n : []\n\n // All switchable outputs group assignments in array sorted by topic\n const customGroupAssigments = availableSwitchableOutputs.map((topic) => {\n return messagesForSwitchableOutputs[topic]\n })\n // All switchable outputs types in array sorted by topic\n const availableSwitchableOutputTypes = availableSwitchableOutputs.map((topic) => {\n return messagesForSwitchableOutputs[`${topic.slice(0, -\"/Group\".length)}/Type`]\n })\n // All switchable outputs names in array sorted by topic\n const availableSwitchableOutputNames = availableSwitchableOutputs.map((topic) => {\n return messagesForSwitchableOutputs[`${topic.slice(0, -\"/Group\".length)}/CustomName`]\n })\n // All switchable outputs visibility in array sorted by topic\n const availableSwitchableOutputVisibilityFlags = availableSwitchableOutputs.map((topic) => {\n return messagesForSwitchableOutputs[`${topic.slice(0, -\"/Group\".length)}/ShowUIControl`]\n })\n // All switchable outputs functions in array sorted by topic\n const availableSwitchableOutputFunctions = availableSwitchableOutputs.map((topic) => {\n return messagesForSwitchableOutputs[`${topic.slice(0, -\"/Group\".length)}/Function`]\n })\n\n // All generic inputs in array sorted by topic\n const availableGenericInputs = messagesForGenericInputs\n ? (Object.keys(messagesForGenericInputs)\n .filter((key) => key.endsWith(\"/Settings/Group\"))\n .sort() as string[])\n : []\n\n // All generic input group assignments in array sorted by topic\n const genericInputGroupAssignments = availableGenericInputs.map((topic) => {\n return messagesForGenericInputs[topic]\n })\n // All generic input types in array sorted by topic\n const availableGenericInputTypes = availableGenericInputs.map((topic) => {\n return messagesForGenericInputs[`${topic.slice(0, -\"/Group\".length)}/Type`]\n })\n // All generic input names in array sorted by topic\n const availableGenericInputNames = availableGenericInputs.map((topic) => {\n return messagesForGenericInputs[`${topic.slice(0, -\"/Group\".length)}/CustomName`]\n })\n // All generic input visibility in array sorted by topic\n const availableGenericInputVisibilityFlags = availableGenericInputs.map((topic) => {\n return messagesForGenericInputs[`${topic.slice(0, -\"/Group\".length)}/ShowUIInput`]\n })\n\n // All switching devices in array sorted by instance number\n const availableSwitchingDevices = Object.keys(messagesForSwitchingDevices)\n .filter((key) => key.endsWith(\"/DeviceInstance\"))\n .sort() as string[]\n\n // All switching device names in array sorted by instance number\n const availableSwitchingDeviceNames = availableSwitchingDevices.map((topic) => {\n const topicPrefix = topic.slice(0, -\"/DeviceInstance\".length)\n return (\n messagesForSwitchingDevices[`${topicPrefix}/CustomName`] ||\n messagesForSwitchingDevices[`${topicPrefix}/ProductName`]\n )\n })\n\n const dispose = autorun(() => {\n const oldAssignments = switchingPaneStore.customGroupAssignments\n const newAssignments = customGroupAssigments\n const groupAssignmentsChanged = !arraysEqual(oldAssignments, newAssignments)\n if (groupAssignmentsChanged) {\n switchingPaneStore.setCustomGroupAssignments(newAssignments)\n Logger.log(`Switchable outputs group assignments changed, recomputing...`)\n }\n\n const oldOutputTypes = switchingPaneStore.outputTypes\n const newOutputTypes = availableSwitchableOutputTypes\n const outputTypesChanged = !arraysEqual(oldOutputTypes, newOutputTypes)\n if (outputTypesChanged) {\n switchingPaneStore.setOutputTypes(newOutputTypes)\n Logger.log(`Switchable outputs types changed, recomputing...`)\n }\n\n const oldOutputNames = switchingPaneStore.outputNames\n const newOutputNames = availableSwitchableOutputNames\n const outputNamesChanged = !arraysEqual(oldOutputNames, newOutputNames)\n if (outputNamesChanged) {\n switchingPaneStore.setOutputNames(newOutputNames)\n Logger.log(`Switchable outputs names changed, recomputing...`)\n }\n\n const oldOutputVisibilityFlags = switchingPaneStore.outputVisibilityFlags\n const newOutputVisibilityFlags = availableSwitchableOutputVisibilityFlags\n const outputVisibilityFlagsChanged = !arraysEqual(oldOutputVisibilityFlags, newOutputVisibilityFlags)\n if (outputVisibilityFlagsChanged) {\n switchingPaneStore.setOutputVisibilityFlags(newOutputVisibilityFlags)\n Logger.log(`Switchable outputs visibility flags changed, recomputing...`)\n }\n\n const oldOutputFunctions = switchingPaneStore.outputFunctions\n const newOutputFunctions = availableSwitchableOutputFunctions\n const outputFunctionsChanged = !arraysEqual(oldOutputFunctions, newOutputFunctions)\n if (outputFunctionsChanged) {\n switchingPaneStore.setOutputFunctions(newOutputFunctions)\n Logger.log(`Switchable outputs functions changed, recomputing...`)\n }\n\n const oldSwitchingDevices = switchingPaneStore.switchingDevices\n const newSwitchingDevices = availableSwitchingDevices\n const switchingDevicesChanged = !arraysEqual(oldSwitchingDevices, newSwitchingDevices)\n if (switchingDevicesChanged) {\n switchingPaneStore.setSwitchingDevices(newSwitchingDevices)\n Logger.log(`Switching devices changed, recomputing...`)\n }\n\n const oldSwitchingDeviceNames = switchingPaneStore.switchingDeviceNames\n const newSwitchingDeviceNames = availableSwitchingDeviceNames\n const switchingDeviceNamesChanged = !arraysEqual(oldSwitchingDeviceNames, newSwitchingDeviceNames)\n if (switchingDeviceNamesChanged) {\n switchingPaneStore.setSwitchingDeviceNames(newSwitchingDeviceNames)\n Logger.log(`Switching device names changed, recomputing...`)\n }\n\n const oldGiAssignments = switchingPaneStore.genericInputGroupAssignments\n const newGiAssignments = genericInputGroupAssignments\n const giGroupAssignmentsChanged = !arraysEqual(oldGiAssignments, newGiAssignments)\n if (giGroupAssignmentsChanged) {\n switchingPaneStore.setGenericInputGroupAssignments(newGiAssignments)\n Logger.log(`Generic input group assignments changed, recomputing...`)\n }\n\n const oldGiTypes = switchingPaneStore.genericInputTypes\n const newGiTypes = availableGenericInputTypes\n const giTypesChanged = !arraysEqual(oldGiTypes, newGiTypes)\n if (giTypesChanged) {\n switchingPaneStore.setGenericInputTypes(newGiTypes)\n Logger.log(`Generic input types changed, recomputing...`)\n }\n\n const oldGiNames = switchingPaneStore.genericInputNames\n const newGiNames = availableGenericInputNames\n const giNamesChanged = !arraysEqual(oldGiNames, newGiNames)\n if (giNamesChanged) {\n switchingPaneStore.setGenericInputNames(newGiNames)\n Logger.log(`Generic input names changed, recomputing...`)\n }\n\n const oldGiVisibilityFlags = switchingPaneStore.genericInputVisibilityFlags\n const newGiVisibilityFlags = availableGenericInputVisibilityFlags\n const giVisibilityFlagsChanged = !arraysEqual(oldGiVisibilityFlags, newGiVisibilityFlags)\n if (giVisibilityFlagsChanged) {\n switchingPaneStore.setGenericInputVisibilityFlags(newGiVisibilityFlags)\n Logger.log(`Generic input visibility flags changed, recomputing...`)\n }\n\n if (\n groupAssignmentsChanged ||\n outputTypesChanged ||\n outputNamesChanged ||\n outputVisibilityFlagsChanged ||\n outputFunctionsChanged ||\n switchingDevicesChanged ||\n switchingDeviceNamesChanged ||\n giGroupAssignmentsChanged ||\n giTypesChanged ||\n giNamesChanged ||\n giVisibilityFlagsChanged\n ) {\n // Collect all switching pane items (switchable outputs + generic inputs) with their group info\n const items: { groupName: string; item: SwitchingPaneItem }[] = []\n\n availableSwitchableOutputs.forEach((output, index) => {\n const swo = extractSwitchableOutputInfo(output)\n const switchingDevice = mqtt.messagesByTopics(\n getSwitchingDeviceStateTopics(mqtt.portalId, swo.tree, swo.deviceId)\n )\n const customGroupAssignment = customGroupAssigments[index].trim()\n const deviceName = switchingDevice.customName || switchingDevice.productName || gxDeviceRelaysGroupName\n const groupName = customGroupAssignment === \"\" ? deviceName : customGroupAssignment\n const switchableOutput = mqtt.messagesByTopics(\n getSwitchableOutputStateTopics(mqtt.portalId, swo.tree, swo.deviceId, swo.outputId)\n ) as unknown as SwitchableOutputState\n\n if (\n !(\n switchableOutput.showUIControl & SWITCHABLE_OUTPUT_VISIBILITY.VISIBLE ||\n switchableOutput.showUIControl & SWITCHABLE_OUTPUT_VISIBILITY.VISIBLE_LOCAL_UI\n )\n ) {\n return\n }\n\n // GX system relays: only show when Function is Manual (matching gui-v2)\n if (\n swo.tree === \"system\" &&\n switchableOutput.function != null &&\n switchableOutput.function !== SWITCHABLE_OUTPUT_FUNCTION.MANUAL\n ) {\n return\n }\n\n items.push({\n groupName,\n item: {\n ...switchableOutput,\n kind: \"switchableOutput\",\n tree: swo.tree,\n deviceId: swo.deviceId,\n outputId: swo.outputId,\n parentDeviceName: deviceName as string,\n },\n })\n })\n\n availableGenericInputs.forEach((input, index) => {\n const gi = extractGenericInputInfo(input)\n const switchingDevice = mqtt.messagesByTopics(\n getSwitchingDeviceStateTopics(mqtt.portalId, gi.tree, gi.deviceId)\n )\n const customGroupAssignment = genericInputGroupAssignments[index].trim()\n const deviceName = switchingDevice.customName || switchingDevice.productName || gxDeviceRelaysGroupName\n const groupName = customGroupAssignment === \"\" ? deviceName : customGroupAssignment\n const genericInput = mqtt.messagesByTopics(\n getGenericInputStateTopics(mqtt.portalId, gi.tree, gi.deviceId, gi.inputId)\n ) as unknown as GenericInputState\n\n if (\n !(\n genericInput.showUIControl & SWITCHABLE_OUTPUT_VISIBILITY.VISIBLE ||\n genericInput.showUIControl & SWITCHABLE_OUTPUT_VISIBILITY.VISIBLE_LOCAL_UI\n )\n ) {\n return\n }\n\n items.push({\n groupName,\n item: {\n ...genericInput,\n kind: \"genericInput\",\n tree: gi.tree,\n deviceId: gi.deviceId,\n outputId: gi.inputId,\n parentDeviceName: deviceName as string,\n type: remapGenericInputType(genericInput.type as number),\n },\n })\n })\n\n // Distribute items to groups\n const newGroups: { [key: string]: SwitchingPaneItem[] } = {}\n items.forEach(({ groupName, item }) => {\n newGroups[groupName] ||= []\n newGroups[groupName].push(item)\n })\n\n // Sort items in each group by display name\n Object.values(newGroups).forEach((array) => {\n array.sort((a, b) => {\n const aName = getSwitchingPaneItemNameForDisplay(a, a.parentDeviceName)\n const bName = getSwitchingPaneItemNameForDisplay(b, b.parentDeviceName)\n return aName.localeCompare(bName)\n })\n })\n\n Logger.log(`New switching pane groups: ${JSON.stringify(Object.keys(newGroups))}`)\n switchingPaneStore.setGroups(newGroups)\n }\n })\n return () => dispose()\n }, [\n messagesForSwitchableOutputs,\n messagesForGenericInputs,\n messagesForSwitchingDevices,\n gxDeviceRelaysGroupName,\n mqtt,\n switchingPaneStore,\n ])\n\n return switchingPaneStore\n}\n\nfunction extractSwitchableOutputInfo(topic: string) {\n const pattern = new RegExp(`/(${SWITCHABLE_OUTPUT_TREES.join(\"|\")})/`)\n const match = topic.match(pattern)\n const switchStart = match ? match.index! + match[0].length : -1 // length of `/system/`, or `/switch/`, or ...\n const outputStart = topic.indexOf(\"/SwitchableOutput/\") + 18 // length of `/SwitchableOutput/`\n\n return {\n tree: (match?.[1] as SwitchableOutputTree) ?? null, // \"switch\", \"system\", ...\n deviceId: Number(topic.substring(switchStart, topic.indexOf(\"/\", switchStart))) as SwitchingDeviceInstanceId,\n outputId: topic.substring(outputStart, topic.indexOf(\"/\", outputStart)) as SwitchableOutputId,\n }\n}\n\nfunction extractGenericInputInfo(topic: string) {\n const pattern = new RegExp(`/(${SWITCHABLE_OUTPUT_TREES.join(\"|\")})/`)\n const match = topic.match(pattern)\n const treeEnd = match ? match.index! + match[0].length : -1\n const inputStart = topic.indexOf(\"/GenericInput/\") + 14 // length of `/GenericInput/`\n\n return {\n tree: (match?.[1] as SwitchableOutputTree) ?? null,\n deviceId: Number(topic.substring(treeEnd, topic.indexOf(\"/\", treeEnd))) as SwitchingDeviceInstanceId,\n inputId: topic.substring(inputStart, topic.indexOf(\"/\", inputStart)) as GenericInputId,\n }\n}\n\nfunction arraysEqual<T>(a: T[], b: T[]): boolean {\n if (a.length !== b.length) return false\n return a.every((element, index) => b[index] === element)\n}\n"]}
|
|
@@ -8,6 +8,7 @@ export interface SwitchingPaneState {
|
|
|
8
8
|
outputTypes: SwitchableOutputType[];
|
|
9
9
|
outputNames: string[];
|
|
10
10
|
outputVisibilityFlags: (0 | 1)[];
|
|
11
|
+
outputFunctions: number[];
|
|
11
12
|
switchingDevices: string[];
|
|
12
13
|
switchingDeviceNames: string[];
|
|
13
14
|
genericInputGroupAssignments: string[];
|
|
@@ -23,6 +24,7 @@ export declare class SwitchingPaneStore {
|
|
|
23
24
|
outputTypes: SwitchableOutputType[];
|
|
24
25
|
outputNames: string[];
|
|
25
26
|
outputVisibilityFlags: (0 | 1)[];
|
|
27
|
+
outputFunctions: number[];
|
|
26
28
|
switchingDevices: string[];
|
|
27
29
|
switchingDeviceNames: string[];
|
|
28
30
|
genericInputGroupAssignments: string[];
|
|
@@ -39,6 +41,7 @@ export declare class SwitchingPaneStore {
|
|
|
39
41
|
setOutputTypes: (outputTypes: SwitchableOutputType[]) => SwitchableOutputType[];
|
|
40
42
|
setOutputNames: (outputNames: string[]) => string[];
|
|
41
43
|
setOutputVisibilityFlags: (outputVisibilityFlags: (0 | 1)[]) => (0 | 1)[];
|
|
44
|
+
setOutputFunctions: (outputFunctions: number[]) => number[];
|
|
42
45
|
setSwitchingDevices: (switchingDevices: string[]) => string[];
|
|
43
46
|
setSwitchingDeviceNames: (switchingDeviceNames: string[]) => string[];
|
|
44
47
|
setGenericInputGroupAssignments: (assignments: string[]) => string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SwitchingPane.store.d.ts","sourceRoot":"/","sources":["src/Modules/SwitchingPane/SwitchingPane.store.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAI9E,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAAA;KAAE,CAAA;IAE9C,sBAAsB,EAAE,MAAM,EAAE,CAAA;IAEhC,WAAW,EAAE,oBAAoB,EAAE,CAAA;IAEnC,WAAW,EAAE,MAAM,EAAE,CAAA;IAErB,qBAAqB,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAA;IAEhC,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAE1B,oBAAoB,EAAE,MAAM,EAAE,CAAA;IAE9B,4BAA4B,EAAE,MAAM,EAAE,CAAA;IAEtC,iBAAiB,EAAE,gBAAgB,EAAE,CAAA;IAErC,iBAAiB,EAAE,MAAM,EAAE,CAAA;IAE3B,2BAA2B,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAA;CACvC;AAED,qBAAa,kBAAkB;IAC7B,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAAA;KAAE,CAAK;IACnD,sBAAsB,EAAE,MAAM,EAAE,CAAK;IACrC,WAAW,EAAE,oBAAoB,EAAE,CAAK;IACxC,WAAW,EAAE,MAAM,EAAE,CAAK;IAC1B,qBAAqB,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAK;IACrC,gBAAgB,EAAE,MAAM,EAAE,CAAK;IAC/B,oBAAoB,EAAE,MAAM,EAAE,CAAK;IACnC,4BAA4B,EAAE,MAAM,EAAE,CAAK;IAC3C,iBAAiB,EAAE,gBAAgB,EAAE,CAAK;IAC1C,iBAAiB,EAAE,MAAM,EAAE,CAAK;IAChC,2BAA2B,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAK;;
|
|
1
|
+
{"version":3,"file":"SwitchingPane.store.d.ts","sourceRoot":"/","sources":["src/Modules/SwitchingPane/SwitchingPane.store.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAI9E,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAAA;KAAE,CAAA;IAE9C,sBAAsB,EAAE,MAAM,EAAE,CAAA;IAEhC,WAAW,EAAE,oBAAoB,EAAE,CAAA;IAEnC,WAAW,EAAE,MAAM,EAAE,CAAA;IAErB,qBAAqB,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAA;IAEhC,eAAe,EAAE,MAAM,EAAE,CAAA;IAEzB,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAE1B,oBAAoB,EAAE,MAAM,EAAE,CAAA;IAE9B,4BAA4B,EAAE,MAAM,EAAE,CAAA;IAEtC,iBAAiB,EAAE,gBAAgB,EAAE,CAAA;IAErC,iBAAiB,EAAE,MAAM,EAAE,CAAA;IAE3B,2BAA2B,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAA;CACvC;AAED,qBAAa,kBAAkB;IAC7B,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAAA;KAAE,CAAK;IACnD,sBAAsB,EAAE,MAAM,EAAE,CAAK;IACrC,WAAW,EAAE,oBAAoB,EAAE,CAAK;IACxC,WAAW,EAAE,MAAM,EAAE,CAAK;IAC1B,qBAAqB,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAK;IACrC,eAAe,EAAE,MAAM,EAAE,CAAK;IAC9B,gBAAgB,EAAE,MAAM,EAAE,CAAK;IAC/B,oBAAoB,EAAE,MAAM,EAAE,CAAK;IACnC,4BAA4B,EAAE,MAAM,EAAE,CAAK;IAC3C,iBAAiB,EAAE,gBAAgB,EAAE,CAAK;IAC1C,iBAAiB,EAAE,MAAM,EAAE,CAAK;IAChC,2BAA2B,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAK;;IAkB3C,SAAS,GAAI,QAAQ;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAAA;KAAE;;MAA2B;IACtF,yBAAyB,GAAI,aAAa,MAAM,EAAE,cAAgD;IAClG,cAAc,GAAI,aAAa,oBAAoB,EAAE,4BAAqC;IAC1F,cAAc,GAAI,aAAa,MAAM,EAAE,cAAqC;IAC5E,wBAAwB,GAAI,uBAAuB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,eAAyD;IACrH,kBAAkB,GAAI,iBAAiB,MAAM,EAAE,cAA6C;IAC5F,mBAAmB,GAAI,kBAAkB,MAAM,EAAE,cAA+C;IAChG,uBAAuB,GAAI,sBAAsB,MAAM,EAAE,cAAuD;IAChH,+BAA+B,GAAI,aAAa,MAAM,EAAE,cAAsD;IAC9G,oBAAoB,GAAI,OAAO,gBAAgB,EAAE,wBAAqC;IACtF,oBAAoB,GAAI,OAAO,MAAM,EAAE,cAAqC;IAC5E,8BAA8B,GAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,eAA+C;CAClG;AAYD,wBAAgB,qBAAqB,uBAEpC"}
|
|
@@ -33,6 +33,12 @@ export class SwitchingPaneStore {
|
|
|
33
33
|
writable: true,
|
|
34
34
|
value: []
|
|
35
35
|
});
|
|
36
|
+
Object.defineProperty(this, "outputFunctions", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
configurable: true,
|
|
39
|
+
writable: true,
|
|
40
|
+
value: []
|
|
41
|
+
});
|
|
36
42
|
Object.defineProperty(this, "switchingDevices", {
|
|
37
43
|
enumerable: true,
|
|
38
44
|
configurable: true,
|
|
@@ -99,6 +105,12 @@ export class SwitchingPaneStore {
|
|
|
99
105
|
writable: true,
|
|
100
106
|
value: (outputVisibilityFlags) => (this.outputVisibilityFlags = outputVisibilityFlags)
|
|
101
107
|
});
|
|
108
|
+
Object.defineProperty(this, "setOutputFunctions", {
|
|
109
|
+
enumerable: true,
|
|
110
|
+
configurable: true,
|
|
111
|
+
writable: true,
|
|
112
|
+
value: (outputFunctions) => (this.outputFunctions = outputFunctions)
|
|
113
|
+
});
|
|
102
114
|
Object.defineProperty(this, "setSwitchingDevices", {
|
|
103
115
|
enumerable: true,
|
|
104
116
|
configurable: true,
|
|
@@ -140,6 +152,7 @@ export class SwitchingPaneStore {
|
|
|
140
152
|
setCustomGroupAssignments: action,
|
|
141
153
|
setOutputTypes: action,
|
|
142
154
|
setOutputVisibilityFlags: action,
|
|
155
|
+
setOutputFunctions: action,
|
|
143
156
|
setSwitchingDevices: action,
|
|
144
157
|
setSwitchingDeviceNames: action,
|
|
145
158
|
setGenericInputGroupAssignments: action,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SwitchingPane.store.js","sourceRoot":"/","sources":["src/Modules/SwitchingPane/SwitchingPane.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAI/B,IAAI,KAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"SwitchingPane.store.js","sourceRoot":"/","sources":["src/Modules/SwitchingPane/SwitchingPane.store.ts"],"names":[],"mappings":"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","sourcesContent":["import { action, makeAutoObservable } from \"mobx\"\nimport { useMemo } from \"react\"\nimport { SwitchingPaneItem } from \"./SwitchableOutput.provider\"\nimport { GenericInputType, SwitchableOutputType } from \"../../utils/constants\"\n\nlet store: SwitchingPaneStore\n\nexport interface SwitchingPaneState {\n groups: { [key: string]: SwitchingPaneItem[] }\n // custom group assignments for available switchable outputs sorted by their topic path\n customGroupAssignments: string[]\n // types of switchable outputs sorted by their topic path\n outputTypes: SwitchableOutputType[]\n // custom names of switchable outputs sorted by their topic path\n outputNames: string[]\n // visibility status of switchable outputs sorted by their topic path\n outputVisibilityFlags: (0 | 1)[]\n // function of switchable outputs sorted by their topic path\n outputFunctions: number[]\n // switching devices\n switchingDevices: string[]\n // switching devices custom names\n switchingDeviceNames: string[]\n // custom group assignments for available generic inputs sorted by their topic path\n genericInputGroupAssignments: string[]\n // types of generic inputs sorted by their topic path\n genericInputTypes: GenericInputType[]\n // custom names of generic inputs sorted by their topic path\n genericInputNames: string[]\n // visibility status of generic inputs sorted by their topic path\n genericInputVisibilityFlags: (0 | 1)[]\n}\n\nexport class SwitchingPaneStore {\n groups: { [key: string]: SwitchingPaneItem[] } = {}\n customGroupAssignments: string[] = []\n outputTypes: SwitchableOutputType[] = []\n outputNames: string[] = []\n outputVisibilityFlags: (0 | 1)[] = []\n outputFunctions: number[] = []\n switchingDevices: string[] = []\n switchingDeviceNames: string[] = []\n genericInputGroupAssignments: string[] = []\n genericInputTypes: GenericInputType[] = []\n genericInputNames: string[] = []\n genericInputVisibilityFlags: (0 | 1)[] = []\n\n constructor() {\n makeAutoObservable(this, {\n setGroups: action,\n setCustomGroupAssignments: action,\n setOutputTypes: action,\n setOutputVisibilityFlags: action,\n setOutputFunctions: action,\n setSwitchingDevices: action,\n setSwitchingDeviceNames: action,\n setGenericInputGroupAssignments: action,\n setGenericInputTypes: action,\n setGenericInputNames: action,\n setGenericInputVisibilityFlags: action,\n })\n }\n\n setGroups = (groups: { [key: string]: SwitchingPaneItem[] }) => (this.groups = groups)\n setCustomGroupAssignments = (assignments: string[]) => (this.customGroupAssignments = assignments)\n setOutputTypes = (outputTypes: SwitchableOutputType[]) => (this.outputTypes = outputTypes)\n setOutputNames = (outputNames: string[]) => (this.outputNames = outputNames)\n setOutputVisibilityFlags = (outputVisibilityFlags: (0 | 1)[]) => (this.outputVisibilityFlags = outputVisibilityFlags)\n setOutputFunctions = (outputFunctions: number[]) => (this.outputFunctions = outputFunctions)\n setSwitchingDevices = (switchingDevices: string[]) => (this.switchingDevices = switchingDevices)\n setSwitchingDeviceNames = (switchingDeviceNames: string[]) => (this.switchingDeviceNames = switchingDeviceNames)\n setGenericInputGroupAssignments = (assignments: string[]) => (this.genericInputGroupAssignments = assignments)\n setGenericInputTypes = (types: GenericInputType[]) => (this.genericInputTypes = types)\n setGenericInputNames = (names: string[]) => (this.genericInputNames = names)\n setGenericInputVisibilityFlags = (flags: (0 | 1)[]) => (this.genericInputVisibilityFlags = flags)\n}\n\nfunction initializeStore() {\n const _store = store ?? new SwitchingPaneStore()\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 useSwitchingPaneStore() {\n return useMemo(() => initializeStore(), [])\n}\n"]}
|
|
@@ -155,6 +155,10 @@ export declare const SWITCHABLE_OUTPUT_VISIBILITY: {
|
|
|
155
155
|
readonly VISIBLE_REMOTE_UI: number;
|
|
156
156
|
};
|
|
157
157
|
export type SwitchableOutputVisibility = (typeof SWITCHABLE_OUTPUT_VISIBILITY)[keyof typeof SWITCHABLE_OUTPUT_VISIBILITY];
|
|
158
|
+
export declare const SWITCHABLE_OUTPUT_FUNCTION: {
|
|
159
|
+
readonly MANUAL: 2;
|
|
160
|
+
};
|
|
161
|
+
export type SwitchableOutputFunction = (typeof SWITCHABLE_OUTPUT_FUNCTION)[keyof typeof SWITCHABLE_OUTPUT_FUNCTION];
|
|
158
162
|
export declare const GENERIC_INPUT_TYPE_OFFSET = 100;
|
|
159
163
|
export declare const GENERIC_INPUT_TYPE: {
|
|
160
164
|
readonly DISCRETE: 100;
|
|
@@ -1 +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;AAGD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;CAevB,CAAA;AAGD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;CAkBxB,CAAA;AAGD,eAAO,MAAM,aAAa;;;;;;;;;;;;CAYzB,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;AAGD,eAAO,MAAM,eAAe;;;;;;;;;;;;;CAa3B,CAAA;AAGD,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;CAezB,CAAA;AAEV,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,OAAO,sBAAsB,CAAC,CAAA;AAEvG,eAAO,MAAM,qCAAqC,EAE7C,GAAG,CAAC,IAAI,MAAM,OAAO,sBAAsB,GAAG,MAAM,GAAE,CAAA;AAE3D,MAAM,MAAM,iCAAiC,GAC3C,CAAC,OAAO,qCAAqC,CAAC,CAAC,MAAM,OAAO,qCAAqC,CAAC,CAAA;AAGpG,eAAO,MAAM,wBAAwB;;;;;;;;;;;CAW3B,CAAA;AAEV,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,OAAO,wBAAwB,CAAC,CAAA;AAG7G,eAAO,MAAM,4BAA4B;;;;;CAK/B,CAAA;AAEV,MAAM,MAAM,0BAA0B,GACpC,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,OAAO,4BAA4B,CAAC,CAAA;AAGlF,eAAO,MAAM,yBAAyB,MAAM,CAAA;AAE5C,eAAO,MAAM,kBAAkB;;;;;CAKrB,CAAA;AAEV,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAA;AAE3F,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAEvE;AAED,eAAO,MAAM,iCAAiC,EAEzC,GAAG,CAAC,IAAI,MAAM,OAAO,kBAAkB,GAAG,MAAM,GAAE,CAAA;AAEvD,MAAM,MAAM,6BAA6B,GACvC,CAAC,OAAO,iCAAiC,CAAC,CAAC,MAAM,OAAO,iCAAiC,CAAC,CAAA;AAG5F,eAAO,MAAM,oBAAoB;;;;CAIvB,CAAA;AAEV,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,OAAO,oBAAoB,CAAC,CAAA;AAEjG,eAAO,MAAM,KAAK;;;;;;;CAOjB,CAAA"}
|
|
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;AAGD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;CAevB,CAAA;AAGD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;CAkBxB,CAAA;AAGD,eAAO,MAAM,aAAa;;;;;;;;;;;;CAYzB,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;AAGD,eAAO,MAAM,eAAe;;;;;;;;;;;;;CAa3B,CAAA;AAGD,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;CAezB,CAAA;AAEV,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,OAAO,sBAAsB,CAAC,CAAA;AAEvG,eAAO,MAAM,qCAAqC,EAE7C,GAAG,CAAC,IAAI,MAAM,OAAO,sBAAsB,GAAG,MAAM,GAAE,CAAA;AAE3D,MAAM,MAAM,iCAAiC,GAC3C,CAAC,OAAO,qCAAqC,CAAC,CAAC,MAAM,OAAO,qCAAqC,CAAC,CAAA;AAGpG,eAAO,MAAM,wBAAwB;;;;;;;;;;;CAW3B,CAAA;AAEV,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,OAAO,wBAAwB,CAAC,CAAA;AAG7G,eAAO,MAAM,4BAA4B;;;;;CAK/B,CAAA;AAEV,MAAM,MAAM,0BAA0B,GACpC,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,OAAO,4BAA4B,CAAC,CAAA;AAGlF,eAAO,MAAM,0BAA0B;;CAE7B,CAAA;AAEV,MAAM,MAAM,wBAAwB,GAClC,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,OAAO,0BAA0B,CAAC,CAAA;AAG9E,eAAO,MAAM,yBAAyB,MAAM,CAAA;AAE5C,eAAO,MAAM,kBAAkB;;;;;CAKrB,CAAA;AAEV,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAA;AAE3F,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAEvE;AAED,eAAO,MAAM,iCAAiC,EAEzC,GAAG,CAAC,IAAI,MAAM,OAAO,kBAAkB,GAAG,MAAM,GAAE,CAAA;AAEvD,MAAM,MAAM,6BAA6B,GACvC,CAAC,OAAO,iCAAiC,CAAC,CAAC,MAAM,OAAO,iCAAiC,CAAC,CAAA;AAG5F,eAAO,MAAM,oBAAoB;;;;CAIvB,CAAA;AAEV,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,OAAO,oBAAoB,CAAC,CAAA;AAEjG,eAAO,MAAM,KAAK;;;;;;;CAOjB,CAAA"}
|
|
@@ -158,6 +158,10 @@ export const SWITCHABLE_OUTPUT_VISIBILITY = {
|
|
|
158
158
|
VISIBLE_LOCAL_UI: 1 << 1,
|
|
159
159
|
VISIBLE_REMOTE_UI: 1 << 2,
|
|
160
160
|
};
|
|
161
|
+
// Taken from: https://github.com/victronenergy/venus/wiki/dbus#switch
|
|
162
|
+
export const SWITCHABLE_OUTPUT_FUNCTION = {
|
|
163
|
+
MANUAL: 2,
|
|
164
|
+
};
|
|
161
165
|
// Taken from: https://github.com/victronenergy/venus/wiki/dbus#generic-input-api
|
|
162
166
|
export const GENERIC_INPUT_TYPE_OFFSET = 100;
|
|
163
167
|
export const GENERIC_INPUT_TYPE = {
|
|
@@ -1 +1 @@
|
|
|
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\n// Taken from: https://github.com/victronenergy/venus/wiki/dbus#vebus\nexport const VEBUS_STATE = {\n OFF: 0,\n LOW_POWER: 1,\n FAULT_CONDITION: 2,\n BULK_CHARGING: 3,\n ABSORPTION_CHARGING: 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 SUSTAIN: 244,\n EXTERNAL_CONTROL: 252,\n}\n\n// Taken from: https://github.com/victronenergy/venus/wiki/dbus#system\nexport const SYSTEM_STATE = {\n OFF: 0,\n LOW_POWER: 1,\n FAULT_CONDITION: 2,\n BULK_CHARGING: 3,\n ABSORPTION_CHARGING: 4,\n FLOAT_CHARGING: 5,\n STORAGE_MODE: 6,\n EQUALISATION_CHARGING: 7,\n PASSTHRU: 8,\n INVERTING: 9,\n ASSISTING: 10,\n SUSTAIN: 244,\n EXTERNAL_CONTROL: 252,\n DISCHARGING: 256,\n ESS_SUSTAIN: 257,\n RECHARGE: 258,\n SCHEDULED_RECHARGE: 259,\n}\n\n// Taken from: https://github.com/victronenergy/venus/wiki/dbus#charger\nexport const CHARGER_STATE = {\n OFF: 0,\n FAULT_CONDITION: 2,\n BULK_CHARGING: 3,\n ABSORPTION_CHARGING: 4,\n FLOAT_CHARGING: 5,\n STORAGE_MODE: 6,\n EQUALISATION_CHARGING: 7,\n POWER_SUPPLY_MODE: 11,\n REPEATED_ABSORPTION: 246,\n AUTO_EQUALIZE: 247,\n BATTERY_SAFE: 248,\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\n// Taken from: https://github.com/victronenergy/venus/wiki/dbus#tank-levels\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: 6,\n DIESEL: 7,\n LPG: 8,\n LNG: 9,\n HYDRAULIC_OIL: 10,\n RAW_WATER: 11,\n}\n\n// Taken from: https://github.com/victronenergy/venus/wiki/dbus#switch\nexport const SWITCHABLE_OUTPUT_TYPE = {\n MOMENTARY_SWITCH: 0,\n TOGGLE_SWITCH: 1,\n DIMMABLE: 2,\n TEMPERATURE_SETPOINT: 3,\n STEPPED_SWITCH: 4,\n SLAVE_MODE: 5,\n DROPDOWN: 6,\n SLIDER: 7,\n UNRANGED_SETPOINT: 8,\n THREE_STATE_SWITCH: 9,\n BILGE_PUMP_CONTROL: 10,\n RGB_COLOR_WHEEL: 11,\n CCT_COLOR_WHEEL: 12,\n RGBW_COLOR_WHEEL: 13,\n} as const\n\nexport type SwitchableOutputType = (typeof SWITCHABLE_OUTPUT_TYPE)[keyof typeof SWITCHABLE_OUTPUT_TYPE]\n\nexport const SWITCHABLE_OUTPUT_VALID_TYPES_BITMASK = Object.fromEntries(\n Object.entries(SWITCHABLE_OUTPUT_TYPE).map(([key, value]) => [key, 1 << value])\n) as { [K in keyof typeof SWITCHABLE_OUTPUT_TYPE]: number }\n\nexport type SwitchableOutputValidTypesBitmask =\n (typeof SWITCHABLE_OUTPUT_VALID_TYPES_BITMASK)[keyof typeof SWITCHABLE_OUTPUT_VALID_TYPES_BITMASK]\n\n// Taken from: https://github.com/victronenergy/venus/wiki/dbus#switch\nexport const SWITCHABLE_OUTPUT_STATUS = {\n STATUS_OFF: 0x00,\n STATUS_ON: 0x09,\n STATUS_POWERED: 0x01,\n STATUS_TRIPPED: 0x02,\n STATUS_OVER_TEMPERATURE: 0x04,\n STATUS_OUTPUT_FAULT: 0x08,\n STATUS_SHORT_FAULT: 0x10,\n STATUS_DISABLED: 0x20,\n STATUS_BYPASSED: 0x40,\n STATUS_EXT_CONTROL: 0x80,\n} as const\n\nexport type SwitchableOutputStatus = (typeof SWITCHABLE_OUTPUT_STATUS)[keyof typeof SWITCHABLE_OUTPUT_STATUS]\n\n// Taken from: https://github.com/victronenergy/venus/wiki/dbus#switch\nexport const SWITCHABLE_OUTPUT_VISIBILITY = {\n INVISIBLE: 0,\n VISIBLE: 1,\n VISIBLE_LOCAL_UI: 1 << 1,\n VISIBLE_REMOTE_UI: 1 << 2,\n} as const\n\nexport type SwitchableOutputVisibility =\n (typeof SWITCHABLE_OUTPUT_VISIBILITY)[keyof typeof SWITCHABLE_OUTPUT_VISIBILITY]\n\n// Taken from: https://github.com/victronenergy/venus/wiki/dbus#generic-input-api\nexport const GENERIC_INPUT_TYPE_OFFSET = 100\n\nexport const GENERIC_INPUT_TYPE = {\n DISCRETE: 100,\n VALUE_NO_RANGE: 101,\n VALUE_WITH_RANGE: 102,\n TEMPERATURE: 103,\n} as const\n\nexport type GenericInputType = (typeof GENERIC_INPUT_TYPE)[keyof typeof GENERIC_INPUT_TYPE]\n\nexport function remapGenericInputType(rawType: number): GenericInputType {\n return (rawType + GENERIC_INPUT_TYPE_OFFSET) as GenericInputType\n}\n\nexport const GENERIC_INPUT_VALID_TYPES_BITMASK = Object.fromEntries(\n Object.entries(GENERIC_INPUT_TYPE).map(([key, value]) => [key, 1 << (value - GENERIC_INPUT_TYPE_OFFSET)])\n) as { [K in keyof typeof GENERIC_INPUT_TYPE]: number }\n\nexport type GenericInputValidTypesBitmask =\n (typeof GENERIC_INPUT_VALID_TYPES_BITMASK)[keyof typeof GENERIC_INPUT_VALID_TYPES_BITMASK]\n\n// Taken from: https://github.com/victronenergy/venus/wiki/dbus#generic-input-api\nexport const GENERIC_INPUT_STATUS = {\n OK: 0x00,\n FAULT: 0x01,\n BATTERY_LOW: 0x02,\n} as const\n\nexport type GenericInputStatus = (typeof GENERIC_INPUT_STATUS)[keyof typeof GENERIC_INPUT_STATUS]\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"]}
|
|
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\n// Taken from: https://github.com/victronenergy/venus/wiki/dbus#vebus\nexport const VEBUS_STATE = {\n OFF: 0,\n LOW_POWER: 1,\n FAULT_CONDITION: 2,\n BULK_CHARGING: 3,\n ABSORPTION_CHARGING: 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 SUSTAIN: 244,\n EXTERNAL_CONTROL: 252,\n}\n\n// Taken from: https://github.com/victronenergy/venus/wiki/dbus#system\nexport const SYSTEM_STATE = {\n OFF: 0,\n LOW_POWER: 1,\n FAULT_CONDITION: 2,\n BULK_CHARGING: 3,\n ABSORPTION_CHARGING: 4,\n FLOAT_CHARGING: 5,\n STORAGE_MODE: 6,\n EQUALISATION_CHARGING: 7,\n PASSTHRU: 8,\n INVERTING: 9,\n ASSISTING: 10,\n SUSTAIN: 244,\n EXTERNAL_CONTROL: 252,\n DISCHARGING: 256,\n ESS_SUSTAIN: 257,\n RECHARGE: 258,\n SCHEDULED_RECHARGE: 259,\n}\n\n// Taken from: https://github.com/victronenergy/venus/wiki/dbus#charger\nexport const CHARGER_STATE = {\n OFF: 0,\n FAULT_CONDITION: 2,\n BULK_CHARGING: 3,\n ABSORPTION_CHARGING: 4,\n FLOAT_CHARGING: 5,\n STORAGE_MODE: 6,\n EQUALISATION_CHARGING: 7,\n POWER_SUPPLY_MODE: 11,\n REPEATED_ABSORPTION: 246,\n AUTO_EQUALIZE: 247,\n BATTERY_SAFE: 248,\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\n// Taken from: https://github.com/victronenergy/venus/wiki/dbus#tank-levels\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: 6,\n DIESEL: 7,\n LPG: 8,\n LNG: 9,\n HYDRAULIC_OIL: 10,\n RAW_WATER: 11,\n}\n\n// Taken from: https://github.com/victronenergy/venus/wiki/dbus#switch\nexport const SWITCHABLE_OUTPUT_TYPE = {\n MOMENTARY_SWITCH: 0,\n TOGGLE_SWITCH: 1,\n DIMMABLE: 2,\n TEMPERATURE_SETPOINT: 3,\n STEPPED_SWITCH: 4,\n SLAVE_MODE: 5,\n DROPDOWN: 6,\n SLIDER: 7,\n UNRANGED_SETPOINT: 8,\n THREE_STATE_SWITCH: 9,\n BILGE_PUMP_CONTROL: 10,\n RGB_COLOR_WHEEL: 11,\n CCT_COLOR_WHEEL: 12,\n RGBW_COLOR_WHEEL: 13,\n} as const\n\nexport type SwitchableOutputType = (typeof SWITCHABLE_OUTPUT_TYPE)[keyof typeof SWITCHABLE_OUTPUT_TYPE]\n\nexport const SWITCHABLE_OUTPUT_VALID_TYPES_BITMASK = Object.fromEntries(\n Object.entries(SWITCHABLE_OUTPUT_TYPE).map(([key, value]) => [key, 1 << value])\n) as { [K in keyof typeof SWITCHABLE_OUTPUT_TYPE]: number }\n\nexport type SwitchableOutputValidTypesBitmask =\n (typeof SWITCHABLE_OUTPUT_VALID_TYPES_BITMASK)[keyof typeof SWITCHABLE_OUTPUT_VALID_TYPES_BITMASK]\n\n// Taken from: https://github.com/victronenergy/venus/wiki/dbus#switch\nexport const SWITCHABLE_OUTPUT_STATUS = {\n STATUS_OFF: 0x00,\n STATUS_ON: 0x09,\n STATUS_POWERED: 0x01,\n STATUS_TRIPPED: 0x02,\n STATUS_OVER_TEMPERATURE: 0x04,\n STATUS_OUTPUT_FAULT: 0x08,\n STATUS_SHORT_FAULT: 0x10,\n STATUS_DISABLED: 0x20,\n STATUS_BYPASSED: 0x40,\n STATUS_EXT_CONTROL: 0x80,\n} as const\n\nexport type SwitchableOutputStatus = (typeof SWITCHABLE_OUTPUT_STATUS)[keyof typeof SWITCHABLE_OUTPUT_STATUS]\n\n// Taken from: https://github.com/victronenergy/venus/wiki/dbus#switch\nexport const SWITCHABLE_OUTPUT_VISIBILITY = {\n INVISIBLE: 0,\n VISIBLE: 1,\n VISIBLE_LOCAL_UI: 1 << 1,\n VISIBLE_REMOTE_UI: 1 << 2,\n} as const\n\nexport type SwitchableOutputVisibility =\n (typeof SWITCHABLE_OUTPUT_VISIBILITY)[keyof typeof SWITCHABLE_OUTPUT_VISIBILITY]\n\n// Taken from: https://github.com/victronenergy/venus/wiki/dbus#switch\nexport const SWITCHABLE_OUTPUT_FUNCTION = {\n MANUAL: 2,\n} as const\n\nexport type SwitchableOutputFunction =\n (typeof SWITCHABLE_OUTPUT_FUNCTION)[keyof typeof SWITCHABLE_OUTPUT_FUNCTION]\n\n// Taken from: https://github.com/victronenergy/venus/wiki/dbus#generic-input-api\nexport const GENERIC_INPUT_TYPE_OFFSET = 100\n\nexport const GENERIC_INPUT_TYPE = {\n DISCRETE: 100,\n VALUE_NO_RANGE: 101,\n VALUE_WITH_RANGE: 102,\n TEMPERATURE: 103,\n} as const\n\nexport type GenericInputType = (typeof GENERIC_INPUT_TYPE)[keyof typeof GENERIC_INPUT_TYPE]\n\nexport function remapGenericInputType(rawType: number): GenericInputType {\n return (rawType + GENERIC_INPUT_TYPE_OFFSET) as GenericInputType\n}\n\nexport const GENERIC_INPUT_VALID_TYPES_BITMASK = Object.fromEntries(\n Object.entries(GENERIC_INPUT_TYPE).map(([key, value]) => [key, 1 << (value - GENERIC_INPUT_TYPE_OFFSET)])\n) as { [K in keyof typeof GENERIC_INPUT_TYPE]: number }\n\nexport type GenericInputValidTypesBitmask =\n (typeof GENERIC_INPUT_VALID_TYPES_BITMASK)[keyof typeof GENERIC_INPUT_VALID_TYPES_BITMASK]\n\n// Taken from: https://github.com/victronenergy/venus/wiki/dbus#generic-input-api\nexport const GENERIC_INPUT_STATUS = {\n OK: 0x00,\n FAULT: 0x01,\n BATTERY_LOW: 0x02,\n} as const\n\nexport type GenericInputStatus = (typeof GENERIC_INPUT_STATUS)[keyof typeof GENERIC_INPUT_STATUS]\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"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@victronenergy/mfd-modules",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.1.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"js-cookie": "^3.0.8",
|
|
26
26
|
"localforage": "^1.10.0",
|
|
27
27
|
"lodash-es": "^4.18.1",
|
|
28
|
-
"mobx": "^6.
|
|
28
|
+
"mobx": "^6.16.0",
|
|
29
29
|
"mobx-persist-store": "^1.1.8",
|
|
30
30
|
"mobx-utils": "^6.1.1",
|
|
31
31
|
"mqtt": "^4.3.8"
|