SRC plus: mqtt subscribe, modbus

This commit is contained in:
MichaelDvP
2025-10-12 11:35:24 +02:00
parent d294c418c1
commit 036e2917a5
5 changed files with 50 additions and 45 deletions

View File

@@ -49,7 +49,7 @@
"@preact/compat": "^18.3.1",
"@preact/preset-vite": "^2.10.2",
"@trivago/prettier-plugin-sort-imports": "^5.2.2",
"@types/node": "^24.7.0",
"@types/node": "^24.7.2",
"@types/react": "^19.2.2",
"@types/react-dom": "^19.2.1",
"concurrently": "^9.2.1",
@@ -63,5 +63,5 @@
"vite-plugin-imagemin": "^0.6.1",
"vite-tsconfig-paths": "^5.1.4"
},
"packageManager": "pnpm@10.18.1+sha512.77a884a165cbba2d8d1c19e3b4880eee6d2fcabd0d879121e282196b80042351d5eb3ca0935fa599da1dc51265cc68816ad2bddd2a2de5ea9fdf92adbec7cd34"
"packageManager": "pnpm@10.18.2"
}

View File

@@ -80,13 +80,13 @@ importers:
version: 18.3.1(preact@10.27.2)
'@preact/preset-vite':
specifier: ^2.10.2
version: 2.10.2(@babel/core@7.28.4)(preact@10.27.2)(vite@7.1.9(@types/node@24.7.0)(terser@5.44.0))
version: 2.10.2(@babel/core@7.28.4)(preact@10.27.2)(vite@7.1.9(@types/node@24.7.2)(terser@5.44.0))
'@trivago/prettier-plugin-sort-imports':
specifier: ^5.2.2
version: 5.2.2(prettier@3.6.2)
'@types/node':
specifier: ^24.7.0
version: 24.7.0
specifier: ^24.7.2
version: 24.7.2
'@types/react':
specifier: ^19.2.2
version: 19.2.2
@@ -116,13 +116,13 @@ importers:
version: 8.46.0(eslint@9.37.0)(typescript@5.9.3)
vite:
specifier: ^7.1.9
version: 7.1.9(@types/node@24.7.0)(terser@5.44.0)
version: 7.1.9(@types/node@24.7.2)(terser@5.44.0)
vite-plugin-imagemin:
specifier: ^0.6.1
version: 0.6.1(vite@7.1.9(@types/node@24.7.0)(terser@5.44.0))
version: 0.6.1(vite@7.1.9(@types/node@24.7.2)(terser@5.44.0))
vite-tsconfig-paths:
specifier: ^5.1.4
version: 5.1.4(typescript@5.9.3)(vite@7.1.9(@types/node@24.7.0)(terser@5.44.0))
version: 5.1.4(typescript@5.9.3)(vite@7.1.9(@types/node@24.7.2)(terser@5.44.0))
packages:
@@ -851,8 +851,8 @@ packages:
resolution: {integrity: sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA==}
deprecated: This is a stub types definition. minimatch provides its own type definitions, so you do not need this installed.
'@types/node@24.7.0':
resolution: {integrity: sha512-IbKooQVqUBrlzWTi79E8Fw78l8k1RNtlDDNWsFZs7XonuQSJ8oNYfEeclhprUldXISRMLzBpILuKgPlIxm+/Yw==}
'@types/node@24.7.2':
resolution: {integrity: sha512-/NbVmcGTP+lj5oa4yiYxxeBjRivKQ5Ns1eSZeB99ExsEQ6rX5XYU1Zy/gGxY/ilqtD4Etx9mKyrPxZRetiahhA==}
'@types/parse-json@4.0.2':
resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
@@ -1014,8 +1014,8 @@ packages:
base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
baseline-browser-mapping@2.8.14:
resolution: {integrity: sha512-GM9c0cWWR8Ga7//Ves/9KRgTS8nLausCkP3CGiFLrnwA2CDUluXgaQqvrULoR2Ujrd/mz/lkX87F5BHFsNr5sQ==}
baseline-browser-mapping@2.8.16:
resolution: {integrity: sha512-OMu3BGQ4E7P1ErFsIPpbJh0qvDudM/UuJeHgkAvfWe+0HFJCXh+t/l8L6fVLR55RI/UbKrVLnAXZSVwd9ysWYw==}
hasBin: true
bin-build@3.0.0:
@@ -1104,8 +1104,8 @@ packages:
resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==}
engines: {node: '>=0.10.0'}
caniuse-lite@1.0.30001749:
resolution: {integrity: sha512-0rw2fJOmLfnzCRbkm8EyHL8SvI2Apu5UbnQuTsJ0ClgrH8hcwFooJ1s5R0EP8o8aVrFu8++ae29Kt9/gZAZp/Q==}
caniuse-lite@1.0.30001750:
resolution: {integrity: sha512-cuom0g5sdX6rw00qOoLNSFCJ9/mYIsuSOA+yzpDw8eopiFqcVwQvZHqov0vmEighRxX++cfC0Vg1G+1Iy/mSpQ==}
caw@2.0.1:
resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==}
@@ -1324,8 +1324,8 @@ packages:
duplexer3@0.1.5:
resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==}
electron-to-chromium@1.5.233:
resolution: {integrity: sha512-iUdTQSf7EFXsDdQsp8MwJz5SVk4APEFqXU/S47OtQ0YLqacSwPXdZ5vRlMX3neb07Cy2vgioNuRnWUXFwuslkg==}
electron-to-chromium@1.5.234:
resolution: {integrity: sha512-RXfEp2x+VRYn8jbKfQlRImzoJU01kyDvVPBmG39eU2iuRVhuS6vQNocB8J0/8GrIMLnPzgz4eW6WiRnJkTuNWg==}
emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
@@ -3575,18 +3575,18 @@ snapshots:
dependencies:
preact: 10.27.2
'@preact/preset-vite@2.10.2(@babel/core@7.28.4)(preact@10.27.2)(vite@7.1.9(@types/node@24.7.0)(terser@5.44.0))':
'@preact/preset-vite@2.10.2(@babel/core@7.28.4)(preact@10.27.2)(vite@7.1.9(@types/node@24.7.2)(terser@5.44.0))':
dependencies:
'@babel/core': 7.28.4
'@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.4)
'@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.4)
'@prefresh/vite': 2.4.10(preact@10.27.2)(vite@7.1.9(@types/node@24.7.0)(terser@5.44.0))
'@prefresh/vite': 2.4.10(preact@10.27.2)(vite@7.1.9(@types/node@24.7.2)(terser@5.44.0))
'@rollup/pluginutils': 4.2.1
babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.28.4)
debug: 4.4.3
picocolors: 1.1.1
vite: 7.1.9(@types/node@24.7.0)(terser@5.44.0)
vite-prerender-plugin: 0.5.12(vite@7.1.9(@types/node@24.7.0)(terser@5.44.0))
vite: 7.1.9(@types/node@24.7.2)(terser@5.44.0)
vite-prerender-plugin: 0.5.12(vite@7.1.9(@types/node@24.7.2)(terser@5.44.0))
transitivePeerDependencies:
- preact
- supports-color
@@ -3599,7 +3599,7 @@ snapshots:
'@prefresh/utils@1.2.1': {}
'@prefresh/vite@2.4.10(preact@10.27.2)(vite@7.1.9(@types/node@24.7.0)(terser@5.44.0))':
'@prefresh/vite@2.4.10(preact@10.27.2)(vite@7.1.9(@types/node@24.7.2)(terser@5.44.0))':
dependencies:
'@babel/core': 7.28.4
'@prefresh/babel-plugin': 0.5.2
@@ -3607,7 +3607,7 @@ snapshots:
'@prefresh/utils': 1.2.1
'@rollup/pluginutils': 4.2.1
preact: 10.27.2
vite: 7.1.9(@types/node@24.7.0)(terser@5.44.0)
vite: 7.1.9(@types/node@24.7.2)(terser@5.44.0)
transitivePeerDependencies:
- supports-color
@@ -3712,7 +3712,7 @@ snapshots:
'@types/glob@7.2.0':
dependencies:
'@types/minimatch': 6.0.0
'@types/node': 24.7.0
'@types/node': 24.7.2
'@types/imagemin-gifsicle@7.0.4':
dependencies:
@@ -3741,19 +3741,19 @@ snapshots:
'@types/imagemin@7.0.1':
dependencies:
'@types/node': 24.7.0
'@types/node': 24.7.2
'@types/json-schema@7.0.15': {}
'@types/keyv@3.1.4':
dependencies:
'@types/node': 24.7.0
'@types/node': 24.7.2
'@types/minimatch@6.0.0':
dependencies:
minimatch: 10.0.3
'@types/node@24.7.0':
'@types/node@24.7.2':
dependencies:
undici-types: 7.14.0
@@ -3775,11 +3775,11 @@ snapshots:
'@types/responselike@1.0.3':
dependencies:
'@types/node': 24.7.0
'@types/node': 24.7.2
'@types/svgo@2.6.4':
dependencies:
'@types/node': 24.7.0
'@types/node': 24.7.2
'@typescript-eslint/eslint-plugin@8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0)(typescript@5.9.3))(eslint@9.37.0)(typescript@5.9.3)':
dependencies:
@@ -3936,7 +3936,7 @@ snapshots:
base64-js@1.5.1: {}
baseline-browser-mapping@2.8.14: {}
baseline-browser-mapping@2.8.16: {}
bin-build@3.0.0:
dependencies:
@@ -3993,9 +3993,9 @@ snapshots:
browserslist@4.26.3:
dependencies:
baseline-browser-mapping: 2.8.14
caniuse-lite: 1.0.30001749
electron-to-chromium: 1.5.233
baseline-browser-mapping: 2.8.16
caniuse-lite: 1.0.30001750
electron-to-chromium: 1.5.234
node-releases: 2.0.23
update-browserslist-db: 1.1.3(browserslist@4.26.3)
@@ -4053,7 +4053,7 @@ snapshots:
camelcase@2.1.1: {}
caniuse-lite@1.0.30001749: {}
caniuse-lite@1.0.30001750: {}
caw@2.0.1:
dependencies:
@@ -4340,7 +4340,7 @@ snapshots:
duplexer3@0.1.5: {}
electron-to-chromium@1.5.233: {}
electron-to-chromium@1.5.234: {}
emoji-regex@8.0.0: {}
@@ -5936,7 +5936,7 @@ snapshots:
spdx-correct: 3.2.0
spdx-expression-parse: 3.0.1
vite-plugin-imagemin@0.6.1(vite@7.1.9(@types/node@24.7.0)(terser@5.44.0)):
vite-plugin-imagemin@0.6.1(vite@7.1.9(@types/node@24.7.2)(terser@5.44.0)):
dependencies:
'@types/imagemin': 7.0.1
'@types/imagemin-gifsicle': 7.0.4
@@ -5961,11 +5961,11 @@ snapshots:
imagemin-webp: 6.1.0
jpegtran-bin: 6.0.1
pathe: 0.2.0
vite: 7.1.9(@types/node@24.7.0)(terser@5.44.0)
vite: 7.1.9(@types/node@24.7.2)(terser@5.44.0)
transitivePeerDependencies:
- supports-color
vite-prerender-plugin@0.5.12(vite@7.1.9(@types/node@24.7.0)(terser@5.44.0)):
vite-prerender-plugin@0.5.12(vite@7.1.9(@types/node@24.7.2)(terser@5.44.0)):
dependencies:
kolorist: 1.8.0
magic-string: 0.30.19
@@ -5973,20 +5973,20 @@ snapshots:
simple-code-frame: 1.3.0
source-map: 0.7.6
stack-trace: 1.0.0-pre2
vite: 7.1.9(@types/node@24.7.0)(terser@5.44.0)
vite: 7.1.9(@types/node@24.7.2)(terser@5.44.0)
vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.1.9(@types/node@24.7.0)(terser@5.44.0)):
vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.1.9(@types/node@24.7.2)(terser@5.44.0)):
dependencies:
debug: 4.4.3
globrex: 0.1.2
tsconfck: 3.1.6(typescript@5.9.3)
optionalDependencies:
vite: 7.1.9(@types/node@24.7.0)(terser@5.44.0)
vite: 7.1.9(@types/node@24.7.2)(terser@5.44.0)
transitivePeerDependencies:
- supports-color
- typescript
vite@7.1.9(@types/node@24.7.0)(terser@5.44.0):
vite@7.1.9(@types/node@24.7.2)(terser@5.44.0):
dependencies:
esbuild: 0.25.10
fdir: 6.5.0(picomatch@4.0.3)
@@ -5995,7 +5995,7 @@ snapshots:
rollup: 4.52.4
tinyglobby: 0.2.15
optionalDependencies:
'@types/node': 24.7.0
'@types/node': 24.7.2
fsevents: 2.3.3
terser: 5.44.0

View File

@@ -203,6 +203,7 @@
{163, DeviceType::WATER, "SM100, MS100", DeviceFlags::EMS_DEVICE_FLAG_SM100},
{164, DeviceType::WATER, "SM200, MS200", DeviceFlags::EMS_DEVICE_FLAG_SM100},
{248, DeviceType::MIXER, "HM210", DeviceFlags::EMS_DEVICE_FLAG_MMPLUS}
{17, DeviceType::CONNECT, "MX400", DeviceFlags::EMS_DEVICE_FLAG_NONE}, // 0x50 Wirelss Base
// {157, DeviceType::THERMOSTAT, "RC120", DeviceFlags::EMS_DEVICE_FLAG_CR120}
#endif

View File

@@ -362,6 +362,10 @@ void EMSESP::dump_all_entities(uuid::console::Shell & shell) {
if (device.device_type == DeviceType::HEATSOURCE) {
device_id = EMSdevice::EMS_DEVICE_ID_AHS1;
}
// For MX400 SRC plus base
if (device.device_type == DeviceType::CONNECT && device.product_id == 17) {
device_id = EMSdevice::EMS_DEVICE_ID_RFBASE;
}
// add the device and print out all the entities
// for testing the mixer use ... if (device.product_id == 69) {
@@ -1414,8 +1418,8 @@ bool EMSESP::add_device(const uint8_t device_id, const uint8_t product_id, const
LOG_INFO("Detected EMS device: %s (0x%02X)", EMSdevice::device_type_2_device_name(device_type), device_id);
// register the MQTT subscribe topic for this device
// except for connect, controller and gateway
if ((device_type == DeviceType::CONNECT) || (device_type == DeviceType::CONTROLLER) || (device_type == DeviceType::GATEWAY)) {
// except for controller and gateway
if ((device_type == DeviceType::CONTROLLER) || (device_type == DeviceType::GATEWAY)) {
return true;
}

View File

@@ -24,7 +24,7 @@ REGISTER_FACTORY(Connect, EMSdevice::DeviceType::CONNECT);
Connect::Connect(uint8_t device_type, uint8_t device_id, uint8_t product_id, const char * version, const char * name, uint8_t flags, uint8_t brand)
: EMSdevice(device_type, device_id, product_id, version, name, flags, brand) {
if (device_id == 0x02) { // Modems have no entities
if (device_id != EMSdevice::EMS_DEVICE_ID_RFBASE) { // Modems have no entities
return;
}
register_telegram_type(0xD1, "RFOutdoorTemp", false, MAKE_PF_CB(process_OutdoorTemp));