write-Eigenschaft nun auch an holding-Register

This commit is contained in:
Eric Neuber 2026-03-11 21:26:41 +01:00
parent 825547889c
commit 497a0e48e3
5 changed files with 168 additions and 757 deletions

View File

@ -22,759 +22,114 @@ modbus:
max_input_addr: 45 max_input_addr: 45
max_holding_addr: 61 max_holding_addr: 61
modbus_coils: modbus_coils:
- MgtSystem: - MgtSystem: {addr: 0, write: false, mqtt: false, influxdb: false, comment: Leitsystem aktiv}
addr: 0 - HK1pres: {addr: 1, write: false, mqtt: false, influxdb: false, comment: HK1 vorhanden}
write: false - HK2pres: {addr: 2, write: false, mqtt: false, influxdb: false, comment: HK2 vorhanden}
mqtt: false - HK3pres: {addr: 3, write: false, mqtt: false, influxdb: false, comment: HK3 vorhanden}
influxdb: false - TWrelease: {addr: 4, write: true, mqtt: false, influxdb: false, comment: Trinkwassererwärmung freigegeben}
comment: Leitsystem aktiv - TWlock: {addr: 5, write: true, mqtt: false, influxdb: false, comment: Trinkwassererwärmung gesperrt}
- HK1pres: - Zrelease: {addr: 6, write: true, mqtt: false, influxdb: false, comment: Zirkulation freigegeben}
addr: 1 - Zlock: {addr: 7, write: true, mqtt: false, influxdb: false, comment: Zirkulation gesperrt}
write: false - SHKpres: {addr: 8, write: false, mqtt: false, influxdb: false, comment: Schwimmbadheizkrei vorhanden}
mqtt: false
influxdb: false
comment: HK1 vorhanden
- HK2pres:
addr: 2
write: false
mqtt: false
influxdb: false
comment: HK2 vorhanden
- HK3pres:
addr: 3
write: false
mqtt: false
influxdb: false
comment: HK3 vorhanden
- TWrelease:
addr: 4
write: true
mqtt: false
influxdb: false
comment: Trinkwassererwärmung freigegeben
- TWlock:
addr: 5
write: true
mqtt: false
influxdb: false
comment: Trinkwassererwärmung gesperrt
- Zrelease:
addr: 6
write: true
mqtt: false
influxdb: false
comment: Zirkulation freigegeben
- Zlock:
addr: 7
write: true
mqtt: false
influxdb: false
comment: Zirkulation gesperrt
- SHKpres:
addr: 8
write: false
mqtt: false
influxdb: false
comment: Schwimmbadheizkrei vorhanden
modbus_input_register: modbus_input_register:
- TA: - TA: {addr: 0, type: INT16, factor: 0.1, mqtt: true, influxdb: true}
addr: 0 - TV: {addr: 1, type: INT16, factor: 0.1, mqtt: true, influxdb: true}
type: INT16 - TR: {addr: 2, type: INT16, factor: 0.1, mqtt: true, influxdb: true}
factor: 0.1 - TWO: {addr: 3, type: INT16, factor: 0.1, mqtt: false, influxdb: true}
mqtt: true - TPO: {addr: 4, type: INT16, factor: 0.1, mqtt: false, influxdb: true}
influxdb: true - TPU: {addr: 5, type: INT16, factor: 0.1, mqtt: false, influxdb: true}
comment: null - TZR: {addr: 6, type: INT16, factor: 0.1, mqtt: false, influxdb: false}
- TV: - TV2: {addr: 7, type: INT16, factor: 0.1, mqtt: false, influxdb: false}
addr: 1 - TR2: {addr: 8, type: INT16, factor: 0.1, mqtt: false, influxdb: false}
type: INT16 - RI1: {addr: 9, type: INT16, factor: 0.1, mqtt: false, influxdb: true}
factor: 0.1 - RI2: {addr: 10, type: INT16, factor: 0.1, mqtt: false, influxdb: false}
mqtt: true - TSA: {addr: 11, type: INT16, factor: 0.1, mqtt: false, influxdb: true}
influxdb: true - FATV: {addr: 12, type: INT16, factor: 0.1, mqtt: false, influxdb: true}
comment: null - FATR: {addr: 13, type: INT16, factor: 0.1, mqtt: false, influxdb: true}
- TR: - TVKH: {addr: 14, type: INT16, factor: 0.1, mqtt: false, influxdb: false}
addr: 2 - TRKH: {addr: 15, type: INT16, factor: 0.1, mqtt: false, influxdb: false}
type: INT16 - TPOKH: {addr: 16, type: INT16, factor: 0.1, mqtt: false, influxdb: false}
factor: 0.1 - TV3: {addr: 17, type: INT16, factor: 0.1, mqtt: false, influxdb: false}
mqtt: true - TR3: {addr: 18, type: INT16, factor: 0.1, mqtt: false, influxdb: false}
influxdb: true - TSB: {addr: 19, type: INT16, factor: 0.1, mqtt: false, influxdb: false}
comment: null - TVSB: {addr: 20, type: INT16, factor: 0.1, mqtt: false, influxdb: false}
- TWO: - TRSB: {addr: 21, type: INT16, factor: 0.1, mqtt: false, influxdb: false}
addr: 3 - TWE: {addr: 22, type: INT16, factor: 0.1, mqtt: false, influxdb: false}
type: INT16 - TWA: {addr: 23, type: INT16, factor: 0.1, mqtt: false, influxdb: false}
factor: 0.1 - TWS: {addr: 24, type: INT16, factor: 0.1, mqtt: false, influxdb: false}
mqtt: false - TVSI: {addr: 25, type: INT16, factor: 0.1, mqtt: false, influxdb: false}
influxdb: true - TK: {addr: 26, type: INT16, factor: 0.1, mqtt: false, influxdb: false}
comment: null - FATV1: {addr: 27, type: INT16, factor: 0.1, mqtt: false, influxdb: false}
- TPO: - FATV2: {addr: 28, type: INT16, factor: 0.1, mqtt: false, influxdb: false}
addr: 4 - FATV3: {addr: 29, type: INT16, factor: 0.1, mqtt: false, influxdb: false}
type: INT16 - FATV4: {addr: 30, type: INT16, factor: 0.1, mqtt: false, influxdb: false}
factor: 0.1 - TSE: {addr: 31, type: INT16, factor: 0.1, mqtt: false, influxdb: true}
mqtt: false - TW: {addr: 32, type: INT16, factor: 0.1, mqtt: false, influxdb: false}
influxdb: true - TSV: {addr: 33, type: INT16, factor: 0.1, mqtt: false, influxdb: true}
comment: null - TW2: {addr: 34, type: INT16, factor: 0.1, mqtt: false, influxdb: false}
- TPU: - S: {addr: 35, type: INT16, factor: 0.1, mqtt: false, influxdb: true}
addr: 5 - TAM: {addr: 36, type: INT16, factor: 0.1, mqtt: false, influxdb: true}
type: INT16 - TAM2: {addr: 37, type: INT16, factor: 0.1, mqtt: false, influxdb: false}
factor: 0.1 - TSA1: {addr: 38, type: INT16, factor: 0.1, mqtt: false, influxdb: true}
mqtt: false - TSA2: {addr: 39, type: INT16, factor: 0.1, mqtt: false, influxdb: false}
influxdb: true - TSP: {addr: 40, type: INT16, factor: 0.1, mqtt: false, influxdb: true}
comment: null - TWW: {addr: 41, type: INT16, factor: 0.1, mqtt: false, influxdb: true}
- TZR: - TKW: {addr: 42, type: INT16, factor: 0.1, mqtt: false, influxdb: true}
addr: 6 - VKW: {addr: 43, type: INT16, factor: 0.1, mqtt: false, influxdb: true}
type: INT16 - VSPm: {addr: 44, type: INT16, factor: 0.1, mqtt: false, influxdb: true}
factor: 0.1
mqtt: false
influxdb: false
comment: null
- TV2:
addr: 7
type: INT16
factor: 0.1
mqtt: false
influxdb: false
comment: null
- TR2:
addr: 8
type: INT16
factor: 0.1
mqtt: false
influxdb: false
comment: null
- RI1:
addr: 9
type: INT16
factor: 0.1
mqtt: false
influxdb: true
comment: null
- RI2:
addr: 10
type: INT16
factor: 0.1
mqtt: false
influxdb: false
comment: null
- TSA:
addr: 11
type: INT16
factor: 0.1
mqtt: false
influxdb: true
comment: null
- FATV:
addr: 12
type: INT16
factor: 0.1
mqtt: false
influxdb: true
comment: null
- FATR:
addr: 13
type: INT16
factor: 0.1
mqtt: false
influxdb: true
comment: null
- TVKH:
addr: 14
type: INT16
factor: 0.1
mqtt: false
influxdb: false
comment: null
- TRKH:
addr: 15
type: INT16
factor: 0.1
mqtt: false
influxdb: false
comment: null
- TPOKH:
addr: 16
type: INT16
factor: 0.1
mqtt: false
influxdb: false
comment: null
- TV3:
addr: 17
type: INT16
factor: 0.1
mqtt: false
influxdb: false
comment: null
- TR3:
addr: 18
type: INT16
factor: 0.1
mqtt: false
influxdb: false
comment: null
- TSB:
addr: 19
type: INT16
factor: 0.1
mqtt: false
influxdb: false
comment: null
- TVSB:
addr: 20
type: INT16
factor: 0.1
mqtt: false
influxdb: false
comment: null
- TRSB:
addr: 21
type: INT16
factor: 0.1
mqtt: false
influxdb: false
comment: null
- TWE:
addr: 22
type: INT16
factor: 0.1
mqtt: false
influxdb: false
comment: null
- TWA:
addr: 23
type: INT16
factor: 0.1
mqtt: false
influxdb: false
comment: null
- TWS:
addr: 24
type: INT16
factor: 0.1
mqtt: false
influxdb: false
comment: null
- TVSI:
addr: 25
type: INT16
factor: 0.1
mqtt: false
influxdb: false
comment: null
- TK:
addr: 26
type: INT16
factor: 0.1
mqtt: false
influxdb: false
comment: null
- FATV1:
addr: 27
type: INT16
factor: 0.1
mqtt: false
influxdb: false
comment: null
- FATV2:
addr: 28
type: INT16
factor: 0.1
mqtt: false
influxdb: false
comment: null
- FATV3:
addr: 29
type: INT16
factor: 0.1
mqtt: false
influxdb: false
comment: null
- FATV4:
addr: 30
type: INT16
factor: 0.1
mqtt: false
influxdb: false
comment: null
- TSE:
addr: 31
type: INT16
factor: 0.1
mqtt: false
influxdb: true
comment: null
- TW:
addr: 32
type: INT16
factor: 0.1
mqtt: false
influxdb: false
comment: null
- TSV:
addr: 33
type: INT16
factor: 0.1
mqtt: false
influxdb: true
comment: null
- TW2:
addr: 34
type: INT16
factor: 0.1
mqtt: false
influxdb: false
comment: null
- S:
addr: 35
type: INT16
factor: 0.1
mqtt: false
influxdb: true
comment: null
- TAM:
addr: 36
type: INT16
factor: 0.1
mqtt: false
influxdb: true
comment: null
- TAM2:
addr: 37
type: INT16
factor: 0.1
mqtt: false
influxdb: false
comment: null
- TSA1:
addr: 38
type: INT16
factor: 0.1
mqtt: false
influxdb: true
comment: null
- TSA2:
addr: 39
type: INT16
factor: 0.1
mqtt: false
influxdb: false
comment: null
- TSP:
addr: 40
type: INT16
factor: 0.1
mqtt: false
influxdb: true
comment: null
- TWW:
addr: 41
type: INT16
factor: 0.1
mqtt: false
influxdb: true
comment: null
- TKW:
addr: 42
type: INT16
factor: 0.1
mqtt: false
influxdb: true
comment: null
- VKW:
addr: 43
type: INT16
factor: 0.1
mqtt: false
influxdb: true
comment: null
- VSPm:
addr: 44
type: INT16
factor: 0.1
mqtt: false
influxdb: true
comment: null
modbus_holding_register: modbus_holding_register:
- nothing: - nothing: {addr: 0, type: UINT16, factor: 1, write: true, mqtt: false, influxdb: false}
addr: 0 - ErrLS: {addr: 1, type: UINT16, factor: 1, write: false, mqtt: false, influxdb: true}
type: UINT16 - TVsoll: {addr: 2, type: INT16, factor: 0.1, write: false, mqtt: false, influxdb: true}
factor: 1.0 - TV2soll: {addr: 3, type: INT16, factor: 0.1, write: false, mqtt: false, influxdb: false}
mqtt: false - TV3soll: {addr: 4, type: INT16, factor: 0.1, write: false, mqtt: false, influxdb: false}
influxdb: false - HK1soll: {addr: 5, type: UINT16, factor: 1, write: false, mqtt: false, influxdb: true}
comment: null - HK2soll: {addr: 6, type: UINT16, factor: 1, write: false, mqtt: false, influxdb: false}
- ErrLS: - HK3soll: {addr: 7, type: UINT16, factor: 1, write: false, mqtt: false, influxdb: false}
addr: 1 - TWWsoll: {addr: 8, type: INT16, factor: 0.1, write: false, mqtt: false, influxdb: true}
type: UINT16 - TV1max: {addr: 9, type: INT16, factor: 0.1, write: false, mqtt: false, influxdb: true}
factor: 1.0 - TV2max: {addr: 10, type: INT16, factor: 0.1, write: false, mqtt: false, influxdb: false}
mqtt: false - TV3max: {addr: 11, type: INT16, factor: 0.1, write: false, mqtt: false, influxdb: false}
influxdb: true - ErrHR: {addr: 12, type: UINT16, factor: 1, write: false, mqtt: false, influxdb: true}
comment: null - ErrSR: {addr: 13, type: UINT16, factor: 1, write: false, mqtt: false, influxdb: true}
- TVsoll: - ErrWE1_1: {addr: 14, type: UINT16, factor: 1, write: false, mqtt: false, influxdb: true}
addr: 2 - ErrWE1_2: {addr: 15, type: UINT16, factor: 1, write: false, mqtt: false, influxdb: false}
type: INT16 - ErrWE1_3: {addr: 16, type: UINT16, factor: 1, write: false, mqtt: false, influxdb: false}
factor: 0.1 - ErrWE1_4: {addr: 17, type: UINT16, factor: 1, write: false, mqtt: false, influxdb: false}
mqtt: false - ErrWE1_5: {addr: 18, type: UINT16, factor: 1, write: false, mqtt: false, influxdb: false}
influxdb: true - KollLei: {addr: 19, type: UINT16, factor: 0.1, write: false, mqtt: false, influxdb: true}
comment: null - TagesS: {addr: 20, type: UINT16, factor: 0.1, write: false, mqtt: true, influxdb: true}
- TV2soll: - GesS: {addr: 21, type: UINT32, factor: 0.1, write: false, mqtt: false, influxdb: true}
addr: 3 - GesWW: {addr: 23, type: UINT32, factor: 0.1, write: false, mqtt: false, influxdb: true}
type: INT16 - GesZ: {addr: 25, type: UINT32, factor: 0.1, write: false, mqtt: false, influxdb: true}
factor: 0.1 - HGesK1: {addr: 27, type: UINT32, factor: 1, write: false, mqtt: false, influxdb: true}
mqtt: false - StartK1: {addr: 29, type: UINT32, factor: 1, write: false, mqtt: false, influxdb: true}
influxdb: false - HGesPel: {addr: 31, type: UINT32, factor: 1, write: false, mqtt: false, influxdb: true}
comment: null - VGesPel: {addr: 33, type: UINT16, factor: 0.1, write: false, mqtt: false, influxdb: true}
- TV3soll: - StatWW: {addr: 34, type: UINT16, factor: 1, write: false, mqtt: false, influxdb: true}
addr: 4 - StatZ: {addr: 35, type: UINT16, factor: 1, write: false, mqtt: false, influxdb: true}
type: INT16 - StatHK1: {addr: 36, type: UINT16, factor: 1, write: false, mqtt: false, influxdb: true}
factor: 0.1 - StatHK2: {addr: 37, type: UINT16, factor: 1, write: false, mqtt: false, influxdb: false}
mqtt: false - StatHK3: {addr: 38, type: UINT16, factor: 1, write: false, mqtt: false, influxdb: false}
influxdb: false - StatS: {addr: 39, type: UINT16, factor: 1, write: false, mqtt: false, influxdb: true}
comment: null - StatSB: {addr: 40, type: UINT16, factor: 1, write: false, mqtt: false, influxdb: false}
- HK1soll: - StatK1: {addr: 41, type: UINT16, factor: 1, write: false, mqtt: false, influxdb: true}
addr: 5 - StatPel: {addr: 42, type: UINT16, factor: 1, write: false, mqtt: false, influxdb: true}
type: UINT16 - StatKH: {addr: 43, type: UINT16, factor: 1, write: false, mqtt: false, influxdb: false}
factor: 1.0 - TPOsoll: {addr: 44, type: UINT16, factor: 0.1, write: false, mqtt: false, influxdb: true}
mqtt: false - FATVsoll: {addr: 45, type: UINT16, factor: 0.1, write: false, mqtt: false, influxdb: true}
influxdb: true - TSBsollHK: {addr: 46, type: INT16, factor: 0.1, write: false, mqtt: false, influxdb: false}
comment: null - TSBsollS: {addr: 47, type: INT16, factor: 0.1, write: false, mqtt: false, influxdb: false}
- HK2soll: - BetrHK1: {addr: 48, type: UINT16, factor: 1, write: false, mqtt: false, influxdb: true}
addr: 6 - BetrHK2: {addr: 49, type: UINT16, factor: 1, write: false, mqtt: false, influxdb: false}
type: UINT16 - BetrHK3: {addr: 50, type: UINT16, factor: 1, write: false, mqtt: false, influxdb: false}
factor: 1.0 - BetrSB: {addr: 51, type: UINT16, factor: 1, write: false, mqtt: false, influxdb: false}
mqtt: false - GesKKsoll: {addr: 52, type: INT16, factor: 0.1, write: false, mqtt: false, influxdb: false}
influxdb: false - KKsollWE1: {addr: 53, type: UINT16, factor: 0.1, write: false, mqtt: false, influxdb: false}
comment: null - KKsollWE2: {addr: 54, type: UINT16, factor: 0.1, write: false, mqtt: false, influxdb: false}
- HK3soll: - KKsollWE3: {addr: 55, type: UINT16, factor: 0.1, write: false, mqtt: false, influxdb: false}
addr: 7 - KKsollWE4: {addr: 56, type: UINT16, factor: 0.1, write: false, mqtt: false, influxdb: false}
type: UINT16 - ErrWE1: {addr: 57, type: UINT16, factor: 1, write: false, mqtt: false, influxdb: false}
factor: 1.0 - ErrWE2: {addr: 58, type: UINT16, factor: 1, write: false, mqtt: false, influxdb: false}
mqtt: false - ErrWE3: {addr: 59, type: UINT16, factor: 1, write: false, mqtt: false, influxdb: false}
influxdb: false - ErrWE4: {addr: 60, type: UINT16, factor: 1, write: false, mqtt: false, influxdb: false}
comment: null
- TWWsoll:
addr: 8
type: INT16
factor: 0.1
mqtt: false
influxdb: true
comment: null
- TV1max:
addr: 9
type: INT16
factor: 0.1
mqtt: false
influxdb: true
comment: null
- TV2max:
addr: 10
type: INT16
factor: 0.1
mqtt: false
influxdb: false
comment: null
- TV3max:
addr: 11
type: INT16
factor: 0.1
mqtt: false
influxdb: false
comment: null
- ErrHR:
addr: 12
type: UINT16
factor: 1.0
mqtt: false
influxdb: true
comment: null
- ErrSR:
addr: 13
type: UINT16
factor: 1.0
mqtt: false
influxdb: true
comment: null
- ErrWE1_1:
addr: 14
type: UINT16
factor: 1.0
mqtt: false
influxdb: true
comment: null
- ErrWE1_2:
addr: 15
type: UINT16
factor: 1.0
mqtt: false
influxdb: false
comment: null
- ErrWE1_3:
addr: 16
type: UINT16
factor: 1.0
mqtt: false
influxdb: false
comment: null
- ErrWE1_4:
addr: 17
type: UINT16
factor: 1.0
mqtt: false
influxdb: false
comment: null
- ErrWE1_5:
addr: 18
type: UINT16
factor: 1.0
mqtt: false
influxdb: false
comment: null
- KollLei:
addr: 19
type: UINT16
factor: 0.1
mqtt: false
influxdb: true
comment: null
- TagesS:
addr: 20
type: UINT16
factor: 0.1
mqtt: true
influxdb: true
comment: null
- GesS:
addr: 21
type: UINT32
factor: 0.1
mqtt: false
influxdb: true
comment: null
- GesWW:
addr: 23
type: UINT32
factor: 0.1
mqtt: false
influxdb: true
comment: null
- GesZ:
addr: 25
type: UINT32
factor: 0.1
mqtt: false
influxdb: true
comment: null
- HGesK1:
addr: 27
type: UINT32
factor: 1.0
mqtt: false
influxdb: true
comment: null
- StartK1:
addr: 29
type: UINT32
factor: 1.0
mqtt: false
influxdb: true
comment: null
- HGesPel:
addr: 31
type: UINT32
factor: 1.0
mqtt: false
influxdb: true
comment: null
- VGesPel:
addr: 33
type: UINT16
factor: 0.1
mqtt: false
influxdb: true
comment: null
- StatWW:
addr: 34
type: UINT16
factor: 1.0
mqtt: false
influxdb: true
comment: null
- StatZ:
addr: 35
type: UINT16
factor: 1.0
mqtt: false
influxdb: true
comment: null
- StatHK1:
addr: 36
type: UINT16
factor: 1.0
mqtt: false
influxdb: true
comment: null
- StatHK2:
addr: 37
type: UINT16
factor: 1.0
mqtt: false
influxdb: false
comment: null
- StatHK3:
addr: 38
type: UINT16
factor: 1.0
mqtt: false
influxdb: false
comment: null
- StatS:
addr: 39
type: UINT16
factor: 1.0
mqtt: false
influxdb: true
comment: null
- StatSB:
addr: 40
type: UINT16
factor: 1.0
mqtt: false
influxdb: false
comment: null
- StatK1:
addr: 41
type: UINT16
factor: 1.0
mqtt: false
influxdb: true
comment: null
- StatPel:
addr: 42
type: UINT16
factor: 1.0
mqtt: false
influxdb: true
comment: null
- StatKH:
addr: 43
type: UINT16
factor: 1.0
mqtt: false
influxdb: false
comment: null
- TPOsoll:
addr: 44
type: UINT16
factor: 0.1
mqtt: false
influxdb: true
comment: null
- FATVsoll:
addr: 45
type: UINT16
factor: 0.1
mqtt: false
influxdb: true
comment: null
- TSBsollHK:
addr: 46
type: INT16
factor: 0.1
mqtt: false
influxdb: false
comment: null
- TSBsollS:
addr: 47
type: INT16
factor: 0.1
mqtt: false
influxdb: false
comment: null
- BetrHK1:
addr: 48
type: UINT16
factor: 1.0
mqtt: false
influxdb: true
comment: null
- BetrHK2:
addr: 49
type: UINT16
factor: 1.0
mqtt: false
influxdb: false
comment: null
- BetrHK3:
addr: 50
type: UINT16
factor: 1.0
mqtt: false
influxdb: false
comment: null
- BetrSB:
addr: 51
type: UINT16
factor: 1.0
mqtt: false
influxdb: false
comment: null
- GesKKsoll:
addr: 52
type: INT16
factor: 0.1
mqtt: false
influxdb: false
comment: null
- KKsollWE1:
addr: 53
type: UINT16
factor: 0.1
mqtt: false
influxdb: false
comment: null
- KKsollWE2:
addr: 54
type: UINT16
factor: 0.1
mqtt: false
influxdb: false
comment: null
- KKsollWE3:
addr: 55
type: UINT16
factor: 0.1
mqtt: false
influxdb: false
comment: null
- KKsollWE4:
addr: 56
type: UINT16
factor: 0.1
mqtt: false
influxdb: false
comment: null
- ErrWE1:
addr: 57
type: UINT16
factor: 1.0
mqtt: false
influxdb: false
comment: null
- ErrWE2:
addr: 58
type: UINT16
factor: 1.0
mqtt: false
influxdb: false
comment: null
- ErrWE3:
addr: 59
type: UINT16
factor: 1.0
mqtt: false
influxdb: false
comment: null
- ErrWE4:
addr: 60
type: UINT16
factor: 1.0
mqtt: false
influxdb: false
comment: null

View File

@ -24,6 +24,7 @@ pub struct ModbusHoldingRegisterConfig {
pub addr: u16, pub addr: u16,
pub r#type: Option<String>, pub r#type: Option<String>,
pub factor: Option<f64>, pub factor: Option<f64>,
pub write: Option<bool>,
pub mqtt: Option<bool>, pub mqtt: Option<bool>,
pub influxdb: Option<bool>, pub influxdb: Option<bool>,
pub comment: Option<String>, pub comment: Option<String>,

View File

@ -29,7 +29,7 @@ pub fn start_mqtt_thread(config: Arc<Mutex<AppConfig>>, values: Arc<Mutex<Modbus
for (name, val) in &values.modbus_input_register_values { for (name, val) in &values.modbus_input_register_values {
if let Some(v) = val { if let Some(v) = val {
if should_publish(&config, name, "input_register") { if should_publish(&config, name, "input_register") {
let topic = format!("{}/{}", path, name); let topic = format!("{}/{}/state", path, name);
let payload = format!("{}", v); let payload = format!("{}", v);
let _ = client.publish(topic, QoS::AtLeastOnce, false, payload); let _ = client.publish(topic, QoS::AtLeastOnce, false, payload);
} }
@ -39,7 +39,7 @@ pub fn start_mqtt_thread(config: Arc<Mutex<AppConfig>>, values: Arc<Mutex<Modbus
for (name, val) in &values.modbus_holding_register_values { for (name, val) in &values.modbus_holding_register_values {
if let Some(v) = val { if let Some(v) = val {
if should_publish(&config, name, "holding_register") { if should_publish(&config, name, "holding_register") {
let topic = format!("{}/{}", path, name); let topic = format!("{}/{}/state", path, name);
let payload = format!("{}", v); let payload = format!("{}", v);
let _ = client.publish(topic, QoS::AtLeastOnce, false, payload); let _ = client.publish(topic, QoS::AtLeastOnce, false, payload);
} }
@ -49,7 +49,7 @@ pub fn start_mqtt_thread(config: Arc<Mutex<AppConfig>>, values: Arc<Mutex<Modbus
for (name, val) in &values.modbus_coils_values { for (name, val) in &values.modbus_coils_values {
if let Some(v) = val { if let Some(v) = val {
if should_publish(&config, name, "coils") { if should_publish(&config, name, "coils") {
let topic = format!("{}/{}", path, name); let topic = format!("{}/{}/state", path, name);
let payload = format!("{}", v); let payload = format!("{}", v);
let _ = client.publish(topic, QoS::AtLeastOnce, false, payload); let _ = client.publish(topic, QoS::AtLeastOnce, false, payload);
} }

View File

@ -56,6 +56,34 @@ function addRow() {
<button class="delete-btn" onclick="deleteRow(this)">🗑</button> <button class="delete-btn" onclick="deleteRow(this)">🗑</button>
</td> </td>
`; `;
} else if (typeof tableId !== 'undefined' && tableId === 'modbus_holding_registers') {
newRow.innerHTML = `
<td><input type='text' class='text-input' data-field='bezeichnung' value='' /></td>
<td><input type='text' class='text-input' data-field='adresse' value='' /></td>
<td><input type='text' class='text-input' data-field='type' value='' /></td>
<td><input type='text' class='text-input' data-field='faktor' value='1.0' /></td>
<td>
<label class='switch'>
<input type='checkbox' class='bool-input' data-field='write' />
<span class='slider'></span>
</label>
</td>
<td>
<label class='switch'>
<input type='checkbox' class='bool-input' data-field='mqtt' />
<span class='slider'></span>
</label>
</td>
<td>
<label class='switch'>
<input type='checkbox' class='bool-input' data-field='influxdb' />
<span class='slider'></span>
</label>
</td>
<td>
<button class="delete-btn" onclick="deleteRow(this)">🗑</button>
</td>
`;
} else { } else {
newRow.innerHTML = ` newRow.innerHTML = `
<td><input type='text' class='text-input' data-field='bezeichnung' value='' /></td> <td><input type='text' class='text-input' data-field='bezeichnung' value='' /></td>
@ -119,6 +147,20 @@ async function saveTable() {
influxdb: influxdb, influxdb: influxdb,
comment: comment comment: comment
}; };
} else if (typeof tableId !== 'undefined' && tableId === 'modbus_holding_registers') {
const write = row.querySelector("input[data-field='write']")?.checked || false;
const rtype = row.querySelector("input[data-field='type']")?.value || null;
const factor = parseFloat(row.querySelector("input[data-field='factor']")?.value || row.querySelector("input[data-field='faktor']")?.value || '1.0');
const comment = row.querySelector("input[data-field='comment']")?.value || null;
value = {
addr: addr,
rtype: rtype,
factor: factor,
write: write,
mqtt: mqtt,
influxdb: influxdb,
comment: comment
};
} else { } else {
const rtype = row.querySelector("input[data-field='type']")?.value || null; const rtype = row.querySelector("input[data-field='type']")?.value || null;
const factor = parseFloat(row.querySelector("input[data-field='factor']")?.value || row.querySelector("input[data-field='faktor']")?.value || '1.0'); const factor = parseFloat(row.querySelector("input[data-field='factor']")?.value || row.querySelector("input[data-field='faktor']")?.value || '1.0');

View File

@ -37,6 +37,10 @@
<th>Adresse</th> <th>Adresse</th>
{% if table_id == "modbus_coils" %} {% if table_id == "modbus_coils" %}
<th>Write</th> <th>Write</th>
{% elif table_id == "modbus_holding_registers" or table_id == "modbus_holding_register" %}
<th>Type</th>
<th>Faktor</th>
<th>Write</th>
{% else %} {% else %}
<th>Type</th> <th>Type</th>
<th>Faktor</th> <th>Faktor</th>
@ -63,6 +67,15 @@
<span class='slider'></span> <span class='slider'></span>
</label> </label>
</td> </td>
{% elif table_id == "modbus_holding_registers" or table_id == "modbus_holding_register" %}
<td><input type='text' class='text-input' data-field='type' value='{{ row.type | default(value="") }}' /></td>
<td><input type='text' class='text-input' data-field='factor' value='{{ row.factor | default(value="") }}' /></td>
<td>
<label class='switch'>
<input type='checkbox' class='bool-input' data-field='write' {% if row.write %}checked{% endif %} />
<span class='slider'></span>
</label>
</td>
{% else %} {% else %}
<td><input type='text' class='text-input' data-field='type' value='{{ row.type | default(value="") }}' /></td> <td><input type='text' class='text-input' data-field='type' value='{{ row.type | default(value="") }}' /></td>
<td><input type='text' class='text-input' data-field='factor' value='{{ row.factor | default(value="") }}' /></td> <td><input type='text' class='text-input' data-field='factor' value='{{ row.factor | default(value="") }}' /></td>