diff --git a/.github/workflows/docker-dev-build.yml b/.github/workflows/docker-dev-build.yml index 60f0342999..1ba112d65c 100644 --- a/.github/workflows/docker-dev-build.yml +++ b/.github/workflows/docker-dev-build.yml @@ -10,7 +10,7 @@ on: platforms: description: 'Docker platform to build' required: true - default: 'linux/amd64,linux/arm/v7,linux/arm64/v8' + default: 'linux/amd64,linux/arm64/v8' jobs: build-front: diff --git a/.github/workflows/docker-release-build.yml b/.github/workflows/docker-release-build.yml index 852495f396..a9f8083713 100644 --- a/.github/workflows/docker-release-build.yml +++ b/.github/workflows/docker-release-build.yml @@ -168,7 +168,7 @@ jobs: with: context: . file: ./docker/Dockerfile.buildx - platforms: linux/amd64,linux/arm/v7,linux/arm64/v8 + platforms: linux/amd64,linux/arm64/v8 push: true pull: true tags: ${{ steps.docker_meta.outputs.tags }} diff --git a/front/package-lock.json b/front/package-lock.json index 88d9130748..915085377d 100644 --- a/front/package-lock.json +++ b/front/package-lock.json @@ -6,7 +6,7 @@ "": { "name": "gladys-front", "dependencies": { - "@gladysassistant/gladys-gateway-js": "4.16.2", + "@gladysassistant/gladys-gateway-js": "4.15.0", "@gladysassistant/theme-optimized": "^1.0.3", "@jaames/iro": "^5.5.2", "@yaireo/tagify": "4.5.0", @@ -4085,9 +4085,9 @@ "dev": true }, "node_modules/@gladysassistant/gladys-gateway-js": { - "version": "4.16.2", - "resolved": "https://registry.npmjs.org/@gladysassistant/gladys-gateway-js/-/gladys-gateway-js-4.16.2.tgz", - "integrity": "sha512-ePkq3W1nYg5rRtNnI9s4A7SXFatSf1loKV6sHJkYzOk2b1uluHI0VrW7gmLrizvomfzpzmvKcC06PJJmKk894g==", + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/@gladysassistant/gladys-gateway-js/-/gladys-gateway-js-4.15.0.tgz", + "integrity": "sha512-vQlycZWF0sA3/KuIlPf0/DVFJ2lbf/R+SbCrkyeuT3P+NnD/EZ9QEFKI/Xu7x1uf4pS+H7CVUT0SudzOGMBoPw==", "dependencies": { "@ctrlpanel/pbkdf2": "^1.0.0", "array-buffer-to-hex": "^1.0.0", @@ -4096,7 +4096,7 @@ "encode-utf8": "^1.0.2", "hex-to-array-buffer": "^1.1.0", "secure-remote-password": "^0.3.1", - "socket.io-client": "^4.8.0" + "socket.io-client": "^4.5.3" } }, "node_modules/@gladysassistant/theme-optimized": { @@ -11328,15 +11328,15 @@ } }, "node_modules/engine.io-client": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.1.tgz", - "integrity": "sha512-aYuoak7I+R83M/BBPIOs2to51BmFIpC1wZe6zZzMrT2llVsHy5cvcmdsJgP2Qz6smHu+sD9oexiSUAVd8OfBPw==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.4.tgz", + "integrity": "sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1", "engine.io-parser": "~5.2.1", "ws": "~8.17.1", - "xmlhttprequest-ssl": "~2.1.1" + "xmlhttprequest-ssl": "~2.0.0" } }, "node_modules/engine.io-client/node_modules/debug": { @@ -23472,13 +23472,13 @@ } }, "node_modules/socket.io-client": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.0.tgz", - "integrity": "sha512-C0jdhD5yQahMws9alf/yvtsMGTaIDBnZ8Rb5HU56svyq0l5LIrGzIDZZD5pHQlmzxLuU91Gz+VpQMKgCTNYtkw==", + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.5.tgz", + "integrity": "sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", - "engine.io-client": "~6.6.1", + "engine.io-client": "~6.5.2", "socket.io-parser": "~4.2.4" }, "engines": { @@ -28137,9 +28137,9 @@ "dev": true }, "node_modules/xmlhttprequest-ssl": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.1.tgz", - "integrity": "sha512-ptjR8YSJIXoA3Mbv5po7RtSYHO6mZr8s7i5VGmEk7QY2pQWyT1o0N+W1gKbOyJPUCGXGnuw0wqe8f0L6Y0ny7g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", "engines": { "node": ">=0.4.0" } @@ -31250,9 +31250,9 @@ "dev": true }, "@gladysassistant/gladys-gateway-js": { - "version": "4.16.2", - "resolved": "https://registry.npmjs.org/@gladysassistant/gladys-gateway-js/-/gladys-gateway-js-4.16.2.tgz", - "integrity": "sha512-ePkq3W1nYg5rRtNnI9s4A7SXFatSf1loKV6sHJkYzOk2b1uluHI0VrW7gmLrizvomfzpzmvKcC06PJJmKk894g==", + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/@gladysassistant/gladys-gateway-js/-/gladys-gateway-js-4.15.0.tgz", + "integrity": "sha512-vQlycZWF0sA3/KuIlPf0/DVFJ2lbf/R+SbCrkyeuT3P+NnD/EZ9QEFKI/Xu7x1uf4pS+H7CVUT0SudzOGMBoPw==", "requires": { "@ctrlpanel/pbkdf2": "^1.0.0", "array-buffer-to-hex": "^1.0.0", @@ -31261,7 +31261,7 @@ "encode-utf8": "^1.0.2", "hex-to-array-buffer": "^1.1.0", "secure-remote-password": "^0.3.1", - "socket.io-client": "^4.8.0" + "socket.io-client": "^4.5.3" } }, "@gladysassistant/theme-optimized": { @@ -37015,15 +37015,15 @@ } }, "engine.io-client": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.1.tgz", - "integrity": "sha512-aYuoak7I+R83M/BBPIOs2to51BmFIpC1wZe6zZzMrT2llVsHy5cvcmdsJgP2Qz6smHu+sD9oexiSUAVd8OfBPw==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.4.tgz", + "integrity": "sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==", "requires": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1", "engine.io-parser": "~5.2.1", "ws": "~8.17.1", - "xmlhttprequest-ssl": "~2.1.1" + "xmlhttprequest-ssl": "~2.0.0" }, "dependencies": { "debug": { @@ -46379,13 +46379,13 @@ } }, "socket.io-client": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.0.tgz", - "integrity": "sha512-C0jdhD5yQahMws9alf/yvtsMGTaIDBnZ8Rb5HU56svyq0l5LIrGzIDZZD5pHQlmzxLuU91Gz+VpQMKgCTNYtkw==", + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.5.tgz", + "integrity": "sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==", "requires": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", - "engine.io-client": "~6.6.1", + "engine.io-client": "~6.5.2", "socket.io-parser": "~4.2.4" }, "dependencies": { @@ -50107,9 +50107,9 @@ "dev": true }, "xmlhttprequest-ssl": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.1.tgz", - "integrity": "sha512-ptjR8YSJIXoA3Mbv5po7RtSYHO6mZr8s7i5VGmEk7QY2pQWyT1o0N+W1gKbOyJPUCGXGnuw0wqe8f0L6Y0ny7g==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==" }, "xtend": { "version": "4.0.2", diff --git a/front/package.json b/front/package.json index f6b49cbc7b..b317c233a2 100644 --- a/front/package.json +++ b/front/package.json @@ -43,7 +43,7 @@ "prettier": "^1.17.1" }, "dependencies": { - "@gladysassistant/gladys-gateway-js": "4.16.2", + "@gladysassistant/gladys-gateway-js": "4.15.0", "@gladysassistant/theme-optimized": "^1.0.3", "@jaames/iro": "^5.5.2", "@yaireo/tagify": "4.5.0", diff --git a/front/src/components/boxs/chart/EditChart.jsx b/front/src/components/boxs/chart/EditChart.jsx index d40c59f3cd..50415bb5c0 100644 --- a/front/src/components/boxs/chart/EditChart.jsx +++ b/front/src/components/boxs/chart/EditChart.jsx @@ -8,7 +8,7 @@ import get from 'get-value'; import BaseEditBox from '../baseEditBox'; import Chart from './Chart'; import { getDeviceFeatureName } from '../../../utils/device'; -import { DeviceListWithDragAndDrop } from './DeviceListWithDragAndDrop'; +import { DeviceListWithDragAndDrop } from '../../drag-and-drop/DeviceListWithDragAndDrop'; import { DEVICE_FEATURE_TYPES } from '../../../../../server/utils/constants'; import withIntlAsProp from '../../../utils/withIntlAsProp'; import { DEFAULT_COLORS, DEFAULT_COLORS_NAME } from './ApexChartComponent'; @@ -129,9 +129,8 @@ class EditChart extends Component { refreshDeviceFeaturesNames = () => { const newDeviceFeatureNames = this.state.selectedDeviceFeaturesOptions.map(o => { - return o.new_label !== undefined ? o.new_label : o.label; + return o.new_label !== undefined && o.new_label !== '' ? o.new_label : o.label; }); - const newDeviceFeature = this.state.selectedDeviceFeaturesOptions.map(o => { return o.value; }); @@ -213,7 +212,10 @@ class EditChart extends Component { } }); await this.setState(newState); - this.refreshDeviceFeaturesNames(); + + if (name !== '') { + this.refreshDeviceFeaturesNames(); + } }; getSelectedDeviceFeaturesAndOptions = (devices, chartType = this.state.chart_type) => { @@ -342,7 +344,7 @@ class EditChart extends Component { } }); await this.setState(newStateWithoutElement); - this.refreshDeviceFeaturesNames(); + await this.refreshDeviceFeaturesNames(); this.refreshDeviceUnitAndChartType(this.state.selectedDeviceFeaturesOptions); }; diff --git a/front/src/components/boxs/chart/style.css b/front/src/components/boxs/chart/style.css index c6142c85a7..5a161f0ffb 100644 --- a/front/src/components/boxs/chart/style.css +++ b/front/src/components/boxs/chart/style.css @@ -133,20 +133,4 @@ padding-left: 1.5rem; padding-right: 1.5rem; text-align: justify; -} -.deviceListDragAndDrop { - cursor: 'pointer'; - user-select: 'none'; -} - -.deviceListDragAndDropDragging { - opacity: 0.5; -} - -.deviceListDragAndDropActive { - background-color: #ecf0f1; -} - -.deviceListRemoveButton { - z-index: 0; } \ No newline at end of file diff --git a/front/src/components/boxs/device-in-room/DeviceListWithDragAndDrop.jsx b/front/src/components/boxs/device-in-room/DeviceListWithDragAndDrop.jsx deleted file mode 100644 index b722f0e97e..0000000000 --- a/front/src/components/boxs/device-in-room/DeviceListWithDragAndDrop.jsx +++ /dev/null @@ -1,97 +0,0 @@ -import { DndProvider, useDrag, useDrop } from 'react-dnd'; -import { TouchBackend } from 'react-dnd-touch-backend'; -import { HTML5Backend } from 'react-dnd-html5-backend'; -import { useRef } from 'preact/hooks'; -import cx from 'classnames'; -import style from './style.css'; - -const DEVICE_TYPE = 'DEVICE_TYPE'; - -const DeviceRow = ({ selectedDeviceFeature, moveDevice, index, removeDevice, updateDeviceFeatureName }) => { - const ref = useRef(null); - const [{ isDragging }, drag, preview] = useDrag(() => ({ - type: DEVICE_TYPE, - item: () => { - return { index }; - }, - collect: monitor => ({ - isDragging: !!monitor.isDragging() - }) - })); - const [{ isActive }, drop] = useDrop({ - accept: DEVICE_TYPE, - collect: monitor => ({ - isActive: monitor.canDrop() && monitor.isOver() - }), - drop(item) { - if (!ref.current) { - return; - } - moveDevice(item.index, index); - } - }); - preview(drop(ref)); - const removeThisDevice = () => { - removeDevice(index); - }; - - const updateThisDeviceFeatureName = e => { - updateDeviceFeatureName(index, e.target.value); - }; - - return ( -
- -
-
- -
- -
- -
-
-
- ); -}; - -const DeviceListWithDragAndDrop = ({ - selectedDeviceFeaturesOptions, - isTouchDevice, - moveDevice, - removeDevice, - updateDeviceFeatureName -}) => ( - - {selectedDeviceFeaturesOptions.map((selectedDeviceFeature, index) => ( - - ))} - -); - -export { DeviceListWithDragAndDrop }; diff --git a/front/src/components/boxs/device-in-room/EditDevices.jsx b/front/src/components/boxs/device-in-room/EditDevices.jsx index 76784fcbb2..57e0a17da2 100644 --- a/front/src/components/boxs/device-in-room/EditDevices.jsx +++ b/front/src/components/boxs/device-in-room/EditDevices.jsx @@ -5,7 +5,7 @@ import Select from 'react-select'; import update from 'immutability-helper'; import BaseEditBox from '../baseEditBox'; import { getDeviceFeatureName } from '../../../utils/device'; -import { DeviceListWithDragAndDrop } from './DeviceListWithDragAndDrop'; +import { DeviceListWithDragAndDrop } from '../../drag-and-drop/DeviceListWithDragAndDrop'; import withIntlAsProp from '../../../utils/withIntlAsProp'; import SUPPORTED_FEATURE_TYPES from './SupportedFeatureTypes'; @@ -24,7 +24,7 @@ class EditDevices extends Component { refreshDeviceFeaturesNames = () => { const newDeviceFeatureNames = this.state.selectedDeviceFeaturesOptions.map(o => { - return o.new_label !== undefined ? o.new_label : o.label; + return o.new_label !== undefined && o.new_label !== '' ? o.new_label : o.label; }); const newDeviceFeature = this.state.selectedDeviceFeaturesOptions.map(o => { return o.value; @@ -62,7 +62,10 @@ class EditDevices extends Component { } }); await this.setState(newState); - this.refreshDeviceFeaturesNames(); + + if (name !== '') { + this.refreshDeviceFeaturesNames(); + } }; getSelectedDeviceFeaturesAndOptions = devices => { diff --git a/front/src/components/boxs/device-in-room/style.css b/front/src/components/boxs/device-in-room/style.css deleted file mode 100644 index d9711f3251..0000000000 --- a/front/src/components/boxs/device-in-room/style.css +++ /dev/null @@ -1,12 +0,0 @@ -.deviceListDragAndDrop { - cursor: 'pointer'; - userselect: 'none'; -} - -.deviceListDragAndDropDragging { - opacity: 0.5; -} - -.deviceListDragAndDropActive { - background-color: #ecf0f1; -} diff --git a/front/src/components/boxs/chart/DeviceListWithDragAndDrop.jsx b/front/src/components/drag-and-drop/DeviceListWithDragAndDrop.jsx similarity index 83% rename from front/src/components/boxs/chart/DeviceListWithDragAndDrop.jsx rename to front/src/components/drag-and-drop/DeviceListWithDragAndDrop.jsx index 5aba7997d7..65df874477 100644 --- a/front/src/components/boxs/chart/DeviceListWithDragAndDrop.jsx +++ b/front/src/components/drag-and-drop/DeviceListWithDragAndDrop.jsx @@ -1,7 +1,7 @@ import { DndProvider, useDrag, useDrop } from 'react-dnd'; import { TouchBackend } from 'react-dnd-touch-backend'; import { HTML5Backend } from 'react-dnd-html5-backend'; -import { useRef } from 'preact/hooks'; +import { useRef, useState } from 'preact/hooks'; import cx from 'classnames'; import style from './style.css'; @@ -35,10 +35,13 @@ const DeviceRow = ({ selectedDeviceFeature, moveDevice, index, removeDevice, upd removeDevice(index); }; + const [isEmpty, setIsEmpty] = useState(selectedDeviceFeature.new_label === ''); const updateThisDeviceFeatureName = e => { updateDeviceFeatureName(index, e.target.value); + setIsEmpty(e.target.value === ''); }; + const emptyFieldAutogenerated = isEmpty && selectedDeviceFeature.new_label !== ''; return (
@@ -55,13 +58,12 @@ const DeviceRow = ({ selectedDeviceFeature, moveDevice, index, removeDevice, upd
diff --git a/front/src/components/drag-and-drop/style.css b/front/src/components/drag-and-drop/style.css index ef4c64bc2b..abcb9ce1a4 100644 --- a/front/src/components/drag-and-drop/style.css +++ b/front/src/components/drag-and-drop/style.css @@ -17,3 +17,33 @@ height: 20%; width: 100%; } + +.deviceListDragAndDrop { + cursor: 'pointer'; + user-select: 'none'; +} + +.deviceListDragAndDropDragging { + opacity: 0.5; +} + +.deviceListDragAndDropActive { + background-color: #ecf0f1; +} + +.deviceListDragAndDropEmpty { + border: 1px solid #e90a0a; +} + +.deviceListDragAndDropEmptyAutoGenerated { + border: 1px dashed #e90a0a; +} + +.deviceListDragAndDropEmpty:focus { + border: 1px solid #e90a0a; + box-shadow: 0 0 5px #e90a0a; +} + +.deviceListRemoveButton { + z-index: 0; +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index f4e52973c1..16086682d8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "gladys", - "version": "4.46.1", + "version": "4.46.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "gladys", - "version": "4.46.1", + "version": "4.46.2", "hasInstallScript": true, "license": "Apache-2.0", "devDependencies": { diff --git a/package.json b/package.json index 94371e41c6..088f55b0d8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gladys", - "version": "4.46.1", + "version": "4.46.2", "description": "A privacy-first, open-source home assistant", "main": "index.js", "engines": { diff --git a/server/package-lock.json b/server/package-lock.json index 84b9def35c..4ccdff0528 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -8,7 +8,7 @@ "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@gladysassistant/gladys-gateway-js": "4.16.2", + "@gladysassistant/gladys-gateway-js": "4.15.0", "@hapi/joi": "^17.1.0", "@hapi/joi-date": "^2.0.1", "@nlpjs/similarity": "^4.26.1", @@ -705,9 +705,9 @@ "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" }, "node_modules/@gladysassistant/gladys-gateway-js": { - "version": "4.16.2", - "resolved": "https://registry.npmjs.org/@gladysassistant/gladys-gateway-js/-/gladys-gateway-js-4.16.2.tgz", - "integrity": "sha512-ePkq3W1nYg5rRtNnI9s4A7SXFatSf1loKV6sHJkYzOk2b1uluHI0VrW7gmLrizvomfzpzmvKcC06PJJmKk894g==", + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/@gladysassistant/gladys-gateway-js/-/gladys-gateway-js-4.15.0.tgz", + "integrity": "sha512-vQlycZWF0sA3/KuIlPf0/DVFJ2lbf/R+SbCrkyeuT3P+NnD/EZ9QEFKI/Xu7x1uf4pS+H7CVUT0SudzOGMBoPw==", "dependencies": { "@ctrlpanel/pbkdf2": "^1.0.0", "array-buffer-to-hex": "^1.0.0", @@ -716,7 +716,7 @@ "encode-utf8": "^1.0.2", "hex-to-array-buffer": "^1.1.0", "secure-remote-password": "^0.3.1", - "socket.io-client": "^4.8.0" + "socket.io-client": "^4.5.3" } }, "node_modules/@gladysassistant/gladys-gateway-js/node_modules/axios": { @@ -4246,15 +4246,15 @@ } }, "node_modules/engine.io-client": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.1.tgz", - "integrity": "sha512-aYuoak7I+R83M/BBPIOs2to51BmFIpC1wZe6zZzMrT2llVsHy5cvcmdsJgP2Qz6smHu+sD9oexiSUAVd8OfBPw==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.4.tgz", + "integrity": "sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1", "engine.io-parser": "~5.2.1", "ws": "~8.17.1", - "xmlhttprequest-ssl": "~2.1.1" + "xmlhttprequest-ssl": "~2.0.0" } }, "node_modules/engine.io-client/node_modules/debug": { @@ -10373,13 +10373,13 @@ } }, "node_modules/socket.io-client": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.0.tgz", - "integrity": "sha512-C0jdhD5yQahMws9alf/yvtsMGTaIDBnZ8Rb5HU56svyq0l5LIrGzIDZZD5pHQlmzxLuU91Gz+VpQMKgCTNYtkw==", + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.5.tgz", + "integrity": "sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", - "engine.io-client": "~6.6.1", + "engine.io-client": "~6.5.2", "socket.io-parser": "~4.2.4" }, "engines": { @@ -11996,9 +11996,9 @@ "dev": true }, "node_modules/xmlhttprequest-ssl": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.1.tgz", - "integrity": "sha512-ptjR8YSJIXoA3Mbv5po7RtSYHO6mZr8s7i5VGmEk7QY2pQWyT1o0N+W1gKbOyJPUCGXGnuw0wqe8f0L6Y0ny7g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", "engines": { "node": ">=0.4.0" } @@ -12576,9 +12576,9 @@ "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" }, "@gladysassistant/gladys-gateway-js": { - "version": "4.16.2", - "resolved": "https://registry.npmjs.org/@gladysassistant/gladys-gateway-js/-/gladys-gateway-js-4.16.2.tgz", - "integrity": "sha512-ePkq3W1nYg5rRtNnI9s4A7SXFatSf1loKV6sHJkYzOk2b1uluHI0VrW7gmLrizvomfzpzmvKcC06PJJmKk894g==", + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/@gladysassistant/gladys-gateway-js/-/gladys-gateway-js-4.15.0.tgz", + "integrity": "sha512-vQlycZWF0sA3/KuIlPf0/DVFJ2lbf/R+SbCrkyeuT3P+NnD/EZ9QEFKI/Xu7x1uf4pS+H7CVUT0SudzOGMBoPw==", "requires": { "@ctrlpanel/pbkdf2": "^1.0.0", "array-buffer-to-hex": "^1.0.0", @@ -12587,7 +12587,7 @@ "encode-utf8": "^1.0.2", "hex-to-array-buffer": "^1.1.0", "secure-remote-password": "^0.3.1", - "socket.io-client": "^4.8.0" + "socket.io-client": "^4.5.3" }, "dependencies": { "axios": { @@ -15488,15 +15488,15 @@ } }, "engine.io-client": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.1.tgz", - "integrity": "sha512-aYuoak7I+R83M/BBPIOs2to51BmFIpC1wZe6zZzMrT2llVsHy5cvcmdsJgP2Qz6smHu+sD9oexiSUAVd8OfBPw==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.4.tgz", + "integrity": "sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==", "requires": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1", "engine.io-parser": "~5.2.1", "ws": "~8.17.1", - "xmlhttprequest-ssl": "~2.1.1" + "xmlhttprequest-ssl": "~2.0.0" }, "dependencies": { "debug": { @@ -20101,13 +20101,13 @@ "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" }, "socket.io-client": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.0.tgz", - "integrity": "sha512-C0jdhD5yQahMws9alf/yvtsMGTaIDBnZ8Rb5HU56svyq0l5LIrGzIDZZD5pHQlmzxLuU91Gz+VpQMKgCTNYtkw==", + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.5.tgz", + "integrity": "sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==", "requires": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", - "engine.io-client": "~6.6.1", + "engine.io-client": "~6.5.2", "socket.io-parser": "~4.2.4" }, "dependencies": { @@ -21348,9 +21348,9 @@ "dev": true }, "xmlhttprequest-ssl": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.1.tgz", - "integrity": "sha512-ptjR8YSJIXoA3Mbv5po7RtSYHO6mZr8s7i5VGmEk7QY2pQWyT1o0N+W1gKbOyJPUCGXGnuw0wqe8f0L6Y0ny7g==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==" }, "y18n": { "version": "5.0.8", diff --git a/server/package.json b/server/package.json index cd52d81475..0ff217627a 100644 --- a/server/package.json +++ b/server/package.json @@ -73,7 +73,7 @@ "supertest": "^3.4.2" }, "dependencies": { - "@gladysassistant/gladys-gateway-js": "4.16.2", + "@gladysassistant/gladys-gateway-js": "4.15.0", "@hapi/joi": "^17.1.0", "@hapi/joi-date": "^2.0.1", "@nlpjs/similarity": "^4.26.1", diff --git a/server/services/zigbee2mqtt/exposes/numericType.js b/server/services/zigbee2mqtt/exposes/numericType.js index 05c3f296e6..aa142a0ad2 100644 --- a/server/services/zigbee2mqtt/exposes/numericType.js +++ b/server/services/zigbee2mqtt/exposes/numericType.js @@ -689,7 +689,7 @@ module.exports = { RELAIS: { feature: { category: DEVICE_FEATURE_CATEGORIES.ENERGY_SENSOR, - type: DEVICE_FEATURE_TYPES.SENSOR.INTEGER, + type: DEVICE_FEATURE_TYPES.ENERGY_SENSOR.BINARY, }, }, EAST: { @@ -716,6 +716,14 @@ module.exports = { max: 1000000, }, }, + EASF03: { + feature: { + category: DEVICE_FEATURE_CATEGORIES.ENERGY_SENSOR, + type: DEVICE_FEATURE_TYPES.ENERGY_SENSOR.INDEX, + min: 0, + max: 1000000, + }, + }, // End of Lixee TIC device voc: { feature: {