This commit is contained in:
MichaelDvP
2025-06-11 11:35:29 +02:00
19 changed files with 843 additions and 402 deletions

View File

@@ -469,6 +469,218 @@
| dhw.starts | starts | uint24 (>=0<=16777214) | | false | DHW | 66 | 2 | 1 |
| dhw.workm | active time | time (>=0<=16777214) | minutes | false | DHW | 68 | 2 | 1 |
### CS5800iG
| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor |
|-|-|-|-|-|-|-|-|-|
| reset | reset | cmd [-\|maintenance\|error\|history\|message] | | true | DEVICE_DATA | 0 | 1 | 1 |
| heatingoff | force heating off | boolean | | true | DEVICE_DATA | 1 | 1 | 1 |
| heatingactive | heating active | boolean | | false | DEVICE_DATA | 2 | 1 | 1 |
| tapwateractive | tapwater active | boolean | | false | DEVICE_DATA | 3 | 1 | 1 |
| selflowtemp | selected flow temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 4 | 1 | 1 |
| heatingpumpmod | heating pump modulation | uint8 (>=0<=100) | % | false | DEVICE_DATA | 5 | 1 | 1 |
| outdoortemp | outside temperature | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 6 | 1 | 1/10 |
| curflowtemp | current flow temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 7 | 1 | 1/10 |
| rettemp | return temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 8 | 1 | 1/10 |
| switchtemp | mixing switch temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 9 | 1 | 1/10 |
| syspress | system pressure | uint8 (>=0<=25) | bar | false | DEVICE_DATA | 10 | 1 | 1/10 |
| boiltemp | actual boiler temperature | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 11 | 1 | 1/10 |
| headertemp | low loss header | uint16 (>=0<=3199) | C | false | DEVICE_DATA | 12 | 1 | 1/10 |
| heatingactivated | heating activated | boolean | | true | DEVICE_DATA | 13 | 1 | 1 |
| heatingtemp | heating temperature | uint8 (>=0<=90) | C | true | DEVICE_DATA | 14 | 1 | 1 |
| heatingpump | heating pump | boolean | | false | DEVICE_DATA | 15 | 1 | 1 |
| pumpmodmax | boiler pump max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 16 | 1 | 1 |
| pumpmodmin | boiler pump min power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 17 | 1 | 1 |
| pumpmode | boiler pump mode | enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4] | | true | DEVICE_DATA | 18 | 1 | 1 |
| pumpcharacter | boiler pump characteristic | enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar] | | true | DEVICE_DATA | 19 | 1 | 1 |
| pumpdelay | pump delay | uint8 (>=0<=60) | minutes | true | DEVICE_DATA | 20 | 1 | 1 |
| pumpontemp | pump logic temperature | uint8 (>=0<=60) | C | true | DEVICE_DATA | 21 | 1 | 1 |
| selburnpow | burner selected max power | uint8 (>=0<=254) | % | true | DEVICE_DATA | 22 | 1 | 1 |
| curburnpow | burner current power | uint8 (>=0<=100) | % | false | DEVICE_DATA | 23 | 1 | 1 |
| burnstarts | burner starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 24 | 2 | 1 |
| burnworkmin | total burner operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 26 | 2 | 1 |
| burn2workmin | burner stage 2 operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 28 | 2 | 1 |
| heatworkmin | total heat operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 30 | 2 | 1 |
| heatstarts | burner starts heating | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 32 | 2 | 1 |
| ubauptime | total UBA operating time | time (>=0<=16777214) | minutes | false | DEVICE_DATA | 34 | 2 | 1 |
| lastcode | last error code | string | | false | DEVICE_DATA | 36 | 28 | 1 |
| servicecode | service code | string | | false | DEVICE_DATA | 64 | 2 | 1 |
| servicecodenumber | service code number | uint16 (>=0<=31999) | | false | DEVICE_DATA | 66 | 1 | 1 |
| maintenancemessage | maintenance message | string | | false | DEVICE_DATA | 67 | 2 | 1 |
| maintenance | maintenance scheduled | enum [off\|time\|date\|manual] | | true | DEVICE_DATA | 69 | 1 | 1 |
| maintenancetime | time to next maintenance | uint16 (>=0<=31999) | hours | true | DEVICE_DATA | 70 | 1 | 1 |
| maintenancedate | next maintenance date | string | | true | DEVICE_DATA | 71 | 6 | 1 |
| emergencyops | emergency operation | boolean | | true | DEVICE_DATA | 77 | 1 | 1 |
| emergencytemp | emergency temperature | uint8 (>=15<=70) | C | true | DEVICE_DATA | 78 | 1 | 1 |
| pc0flow | Flow PC0 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 79 | 1 | 1 |
| pc1flow | Flow PC1 | int16 (>=-31999<=31999) | l/h | false | DEVICE_DATA | 80 | 1 | 1 |
| pc1on | PC1 | boolean | | false | DEVICE_DATA | 81 | 1 | 1 |
| pc1rate | PC1 rate | uint8 (>=0<=100) | % | false | DEVICE_DATA | 82 | 1 | 1 |
| nrgtotal | total energy | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 83 | 2 | 1/100 |
| dhw.nrg | energy | uint24 (>=0<=167772) | kWh | false | DHW | 0 | 2 | 1/100 |
| nrgheat | energy heating | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 85 | 2 | 1/100 |
| nrgcool | energy cooling | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 87 | 2 | 1/100 |
| metertotal | meter total | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 89 | 2 | 1/100 |
| metercomp | meter compressor | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 91 | 2 | 1/100 |
| metereheat | meter e-heater | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 93 | 2 | 1/100 |
| meterheat | meter heating | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 95 | 2 | 1/100 |
| metercool | meter cooling | uint24 (>=0<=167772) | kWh | false | DEVICE_DATA | 97 | 2 | 1/100 |
| dhw.meter | meter | uint24 (>=0<=167772) | kWh | false | DHW | 2 | 2 | 1/100 |
| uptimetotal | heatpump total uptime | time (>=0<=279620) | minutes | false | DEVICE_DATA | 99 | 2 | 1/60 |
| uptimecontrol | total operating time heat | time (>=0<=279620) | minutes | false | DEVICE_DATA | 101 | 2 | 1/60 |
| uptimecompheating | operating time compressor heating | time (>=0<=279620) | minutes | false | DEVICE_DATA | 103 | 2 | 1/60 |
| uptimecompcooling | operating time compressor cooling | time (>=0<=279620) | minutes | false | DEVICE_DATA | 105 | 2 | 1/60 |
| dhw.uptimecomp | operating time compressor | time (>=0<=279620) | minutes | false | DHW | 4 | 2 | 1/60 |
| uptimecomppool | operating time compressor pool | time (>=0<=279620) | minutes | false | DEVICE_DATA | 107 | 2 | 1/60 |
| totalcompstarts | total compressor control starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 109 | 2 | 1 |
| heatingstarts | heating control starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 111 | 2 | 1 |
| coolingstarts | cooling control starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 113 | 2 | 1 |
| dhw.startshp | starts hp | uint24 (>=0<=16777214) | | false | DHW | 6 | 2 | 1 |
| poolstarts | pool control starts | uint24 (>=0<=16777214) | | false | DEVICE_DATA | 115 | 2 | 1 |
| nrgconstotal | total energy consumption | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 117 | 2 | 1 |
| nrgconscomptotal | total energy consumption compressor | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 119 | 2 | 1 |
| nrgconscompheating | energy consumption compressor heating | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 121 | 2 | 1 |
| dhw.nrgconscomp | energy consumption compressor | uint24 (>=0<=16777214) | kWh | false | DHW | 8 | 2 | 1 |
| nrgconscompcooling | energy consumption compressor cooling | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 123 | 2 | 1 |
| nrgconscomppool | energy consumption compressor pool | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 125 | 2 | 1 |
| auxelecheatnrgconstotal | total aux elec. heater energy consumption | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 127 | 2 | 1 |
| auxelecheatnrgconsheating | aux elec. heater energy consumption heating | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 129 | 2 | 1 |
| dhw.auxelecheatnrgcons | aux elec. heater energy consumption | uint24 (>=0<=16777214) | kWh | false | DHW | 10 | 2 | 1 |
| auxelecheatnrgconspool | aux elec. heater energy consumption pool | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 131 | 2 | 1 |
| nrgsupptotal | total energy supplied | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 133 | 2 | 1 |
| nrgsuppheating | total energy supplied heating | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 135 | 2 | 1 |
| dhw.nrgsupp | total energy warm supplied | uint24 (>=0<=16777214) | kWh | false | DHW | 12 | 2 | 1 |
| nrgsuppcooling | total energy supplied cooling | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 137 | 2 | 1 |
| nrgsupppool | total energy supplied pool | uint24 (>=0<=16777214) | kWh | false | DEVICE_DATA | 139 | 2 | 1 |
| hppower | compressor power output | uint16 (>=0<=3199) | kW | false | DEVICE_DATA | 141 | 1 | 1/10 |
| hpmaxpower | compressor max power | uint8 (>=0<=100) | % | true | DEVICE_DATA | 142 | 1 | 1 |
| pvmaxcomp | pv compressor max power | uint8 (>=0<=25) | kW | true | DEVICE_DATA | 143 | 1 | 1/10 |
| powerreduction | power reduction | uint8 (>=30<=60) | % | true | DEVICE_DATA | 144 | 1 | 10 |
| hpsetdiffpress | set differential pressure | uint8 (>=150<=750) | mbar | true | DEVICE_DATA | 145 | 1 | 50 |
| hpcompon | hp compressor | boolean | | false | DEVICE_DATA | 146 | 1 | 1 |
| hpactivity | compressor activity | enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm] | | false | DEVICE_DATA | 147 | 1 | 1 |
| hpbrinepumpspd | brine pump speed | uint8 (>=0<=100) | % | false | DEVICE_DATA | 148 | 1 | 1 |
| hpswitchvalve | switch valve | boolean | | false | DEVICE_DATA | 149 | 1 | 1 |
| hpcompspd | compressor speed | uint8 (>=0<=100) | % | false | DEVICE_DATA | 150 | 1 | 1 |
| hpcircspd | circulation pump speed | uint8 (>=0<=100) | % | false | DEVICE_DATA | 151 | 1 | 1 |
| hpbrinein | brine in/evaporator | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 152 | 1 | 1/10 |
| hpbrineout | brine out/condenser | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 153 | 1 | 1/10 |
| hptc0 | heat carrier return (TC0) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 154 | 1 | 1/10 |
| hptc1 | heat carrier forward (TC1) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 155 | 1 | 1/10 |
| hptc3 | condenser temperature (TC3) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 156 | 1 | 1/10 |
| hptr1 | compressor temperature (TR1) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 157 | 1 | 1/10 |
| hptr3 | refrigerant temperature liquid side (condenser output) (TR3) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 158 | 1 | 1/10 |
| hptr4 | evaporator inlet temperature (TR4) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 159 | 1 | 1/10 |
| hptr5 | compressor inlet temperature (TR5) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 160 | 1 | 1/10 |
| hptr6 | compressor outlet temperature (TR6) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 161 | 1 | 1/10 |
| hptr7 | refrigerant temperature gas side (condenser input) (TR7) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 162 | 1 | 1/10 |
| hptl2 | air inlet temperature (TL2) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 163 | 1 | 1/10 |
| hppl1 | low pressure side temperature (PL1) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 164 | 1 | 1/10 |
| hpph1 | high pressure side temperature (PH1) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 165 | 1 | 1/10 |
| hpta4 | drain pan temp (TA4) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 166 | 1 | 1/10 |
| hptw1 | reservoir temp (TW1) | int16 (>=-3199<=3199) | C | false | DEVICE_DATA | 167 | 1 | 1/10 |
| poolsettemp | pool set temperature | uint8 (>=0<=127) | C | true | DEVICE_DATA | 168 | 1 | 1/2 |
| hp4way | 4-way valve (VR4) | enum [cooling & defrost\|heating & dhw] | | false | DEVICE_DATA | 169 | 1 | 1 |
| hpin1 | input 1 state | boolean | | false | DEVICE_DATA | 170 | 1 | 1 |
| hpin1opt | input 1 options | string | | true | DEVICE_DATA | 171 | 8 | 1 |
| hpin2 | input 2 state | boolean | | false | DEVICE_DATA | 179 | 1 | 1 |
| hpin2opt | input 2 options | string | | true | DEVICE_DATA | 180 | 8 | 1 |
| hpin3 | input 3 state | boolean | | false | DEVICE_DATA | 188 | 1 | 1 |
| hpin3opt | input 3 options | string | | true | DEVICE_DATA | 189 | 8 | 1 |
| hpin4 | input 4 state | boolean | | false | DEVICE_DATA | 197 | 1 | 1 |
| hpin4opt | input 4 options | string | | true | DEVICE_DATA | 198 | 8 | 1 |
| maxheatcomp | heat limit compressor | enum [0 kW\|3 kW\|6 kW\|9 kW] | | true | DEVICE_DATA | 206 | 1 | 1 |
| maxheatheat | heat limit heating | enum [3 kW\|6 kW\|9 kW] | | true | DEVICE_DATA | 207 | 1 | 1 |
| dhw.maxheat | heat limit | enum [3 kW\|6 kW\|9 kW] | | true | DHW | 14 | 1 | 1 |
| auxheatersource | aux heater source | enum [not installed\|electric heater\|exclusive\|parallel\|hybrid] | | true | DEVICE_DATA | 208 | 1 | 1 |
| pvcooling | cooling only with PV | boolean | | true | DEVICE_DATA | 209 | 1 | 1 |
| auxheateronly | aux heater only | boolean | | true | DEVICE_DATA | 210 | 1 | 1 |
| auxheateroff | disable aux heater | boolean | | true | DEVICE_DATA | 211 | 1 | 1 |
| auxheaterstatus | aux heater status | enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm] | | false | DEVICE_DATA | 212 | 1 | 1 |
| auxheaterlevel | aux heater level | uint8 (>=0<=100) | % | false | DEVICE_DATA | 213 | 1 | 1 |
| auxheaterdelay | aux heater on delay | uint16 (>=10<=1000) | K*min | true | DEVICE_DATA | 214 | 1 | 10 |
| auxmaxlimit | aux heater max limit | uint8 (>=0<=10) | K | true | DEVICE_DATA | 215 | 1 | 1/10 |
| auxlimitstart | aux heater limit start | uint8 (>=0<=10) | K | true | DEVICE_DATA | 216 | 1 | 1/10 |
| auxheatrmode | aux heater mode | enum [eco\|comfort] | | true | DEVICE_DATA | 217 | 1 | 1 |
| hphystheat | on/off hyst heat | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 218 | 1 | 5 |
| hphystcool | on/off hyst cool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 219 | 1 | 5 |
| hphystpool | on/off hyst pool | uint16 (>=50<=1500) | K*min | true | DEVICE_DATA | 220 | 1 | 5 |
| silentmode | silent mode | enum [off\|auto\|on] | | true | DEVICE_DATA | 221 | 1 | 1 |
| silentfrom | silent mode from | uint8 (>=0<=3810) | minutes | true | DEVICE_DATA | 222 | 1 | 15 |
| silentto | silent mode to | uint8 (>=0<=3810) | minutes | true | DEVICE_DATA | 223 | 1 | 15 |
| mintempsilent | min outside temp for silent mode | int8 (>=-126<=126) | C | true | DEVICE_DATA | 224 | 1 | 1 |
| tempparmode | outside temp parallel mode | int8 (>=-126<=126) | C | true | DEVICE_DATA | 225 | 1 | 1 |
| auxheatmix | aux heater mixing valve | int8 (>=-100<=100) | % | false | DEVICE_DATA | 226 | 1 | 1 |
| tempdiffheat | temp diff TC3/TC0 heat | uint8 (>=2<=10) | K | true | DEVICE_DATA | 227 | 1 | 1/10 |
| tempdiffcool | temp diff TC3/TC0 cool | uint8 (>=2<=10) | K | true | DEVICE_DATA | 228 | 1 | 1/10 |
| vpcooling | valve/pump cooling | boolean | | true | DEVICE_DATA | 229 | 1 | 1 |
| heatcable | heating cable | boolean | | true | DEVICE_DATA | 230 | 1 | 1 |
| vc0valve | VC0 valve | boolean | | true | DEVICE_DATA | 231 | 1 | 1 |
| primepump | primary heatpump | boolean | | true | DEVICE_DATA | 232 | 1 | 1 |
| primepumpmod | primary heatpump modulation | uint8 (>=0<=100) | % | true | DEVICE_DATA | 233 | 1 | 1 |
| hp3way | 3-way valve | boolean | | true | DEVICE_DATA | 234 | 1 | 1 |
| elheatstep1 | el. heater step 1 | boolean | | true | DEVICE_DATA | 235 | 1 | 1 |
| elheatstep2 | el. heater step 2 | boolean | | true | DEVICE_DATA | 236 | 1 | 1 |
| elheatstep3 | el. heater step 3 | boolean | | true | DEVICE_DATA | 237 | 1 | 1 |
| hpea0 | condensate reservoir heating (EA0) | boolean | | false | DEVICE_DATA | 238 | 1 | 1 |
| hppumpmode | primary heatpump mode | enum [auto\|continuous] | | true | DEVICE_DATA | 239 | 1 | 1 |
| fan | fan | uint8 (>=20<=100) | % | true | DEVICE_DATA | 240 | 1 | 1 |
| shutdown | shutdown | cmd [off\|on] | | true | DEVICE_DATA | 241 | 1 | 1 |
| hpcurrpower | compressor current power | uint16 (>=0<=31999) | W | false | DEVICE_DATA | 242 | 1 | 1 |
| hppowerlimit | power limit | uint16 (>=0<=31999) | W | true | DEVICE_DATA | 243 | 1 | 1 |
| dhw.alternatingop | alternating operation | boolean | | true | DHW | 15 | 1 | 1 |
| dhw.altopprioheat | prioritise heating during dhw | uint8 (>=20<=120) | minutes | true | DHW | 16 | 1 | 1 |
| dhw.altopprio | prioritise dhw during heating | uint8 (>=30<=120) | minutes | true | DHW | 17 | 1 | 1 |
| dhw.comfoff | comfort switch off | uint8 (>=15<=65) | C | true | DHW | 18 | 1 | 1 |
| dhw.ecooff | eco switch off | uint8 (>=15<=65) | C | true | DHW | 19 | 1 | 1 |
| dhw.ecoplusoff | eco+ switch off | uint8 (>=48<=63) | C | true | DHW | 20 | 1 | 1 |
| dhw.comfdiff | comfort diff | uint8 (>=6<=12) | K | true | DHW | 21 | 1 | 1 |
| dhw.ecodiff | eco diff | uint8 (>=6<=12) | K | true | DHW | 22 | 1 | 1 |
| dhw.ecoplusdiff | eco+ diff | uint8 (>=6<=12) | K | true | DHW | 23 | 1 | 1 |
| dhw.comfstop | comfort stop temp | uint8 (>=0<=254) | C | true | DHW | 24 | 1 | 1 |
| dhw.ecostop | eco stop temp | uint8 (>=0<=254) | C | true | DHW | 25 | 1 | 1 |
| dhw.ecoplusstop | eco+ stop temp | uint8 (>=0<=254) | C | true | DHW | 26 | 1 | 1 |
| dhw.hpcircpump | circulation pump available during dhw | boolean | | true | DHW | 27 | 1 | 1 |
| dhw.tapactivated | turn on/off | boolean | | true | DHW | 28 | 1 | 1 |
| dhw.settemp | set temperature | uint8 (>=0<=254) | C | false | DHW | 29 | 1 | 1 |
| dhw.seltemp | selected temperature | uint8 (>=0<=254) | C | true | DHW | 30 | 1 | 1 |
| dhw.seltemplow | selected lower temperature | uint8 (>=0<=254) | C | true | DHW | 31 | 1 | 1 |
| dhw.tempecoplus | selected eco+ temperature | uint8 (>=0<=254) | C | true | DHW | 32 | 1 | 1 |
| dhw.seltempoff | selected temperature for off | uint8 (>=0<=254) | C | false | DHW | 33 | 1 | 1 |
| dhw.seltempsingle | single charge temperature | uint8 (>=0<=254) | C | true | DHW | 34 | 1 | 1 |
| dhw.solartemp | solar boiler temperature | uint16 (>=0<=3199) | C | false | DHW | 35 | 1 | 1/10 |
| dhw.type | type | enum [off\|flow\|buffered flow\|buffer\|layered buffer] | | false | DHW | 36 | 1 | 1 |
| dhw.comfort | comfort | enum [hot\|eco\|intelligent] | | true | DHW | 37 | 1 | 1 |
| dhw.comfort1 | comfort mode | enum [high comfort\|eco] | | true | DHW | 38 | 1 | 1 |
| dhw.flowtempoffset | flow temperature offset | uint8 (>=0<=100) | C | true | DHW | 39 | 1 | 1 |
| dhw.chargeoptimization | charge optimization | boolean | | true | DHW | 40 | 1 | 1 |
| dhw.maxpower | max power | uint8 (>=0<=254) | % | true | DHW | 41 | 1 | 1 |
| dhw.maxtemp | maximum temperature | uint8 (>=0<=80) | C | true | DHW | 42 | 1 | 1 |
| dhw.circpump | circulation pump available | boolean | | true | DHW | 43 | 1 | 1 |
| dhw.chargetype | charging type | enum [chargepump\|3-way valve] | | false | DHW | 44 | 1 | 1 |
| dhw.hyston | hysteresis on temperature | int8 (>=-126<=126) | C | true | DHW | 45 | 1 | 1 |
| dhw.hystoff | hysteresis off temperature | int8 (>=-126<=126) | C | true | DHW | 46 | 1 | 1 |
| dhw.disinfectiontemp | disinfection temperature | uint8 (>=60<=80) | C | true | DHW | 47 | 1 | 1 |
| dhw.circmode | circulation pump mode | enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous] | | true | DHW | 48 | 1 | 1 |
| dhw.circ | circulation active | boolean | | true | DHW | 49 | 1 | 1 |
| dhw.curtemp | current intern temperature | uint16 (>=0<=3199) | C | false | DHW | 50 | 1 | 1/10 |
| dhw.curtemp2 | current extern temperature | uint16 (>=0<=3199) | C | false | DHW | 51 | 1 | 1/10 |
| dhw.curflow | current tap water flow | uint8 (>=0<=25) | l/min | false | DHW | 52 | 1 | 1/10 |
| dhw.storagetemp1 | storage intern temperature | uint16 (>=0<=3199) | C | false | DHW | 53 | 1 | 1/10 |
| dhw.storagetemp2 | storage extern temperature | uint16 (>=0<=3199) | C | false | DHW | 54 | 1 | 1/10 |
| dhw.activated | activated | boolean | | true | DHW | 55 | 1 | 1 |
| dhw.onetime | one time charging | boolean | | true | DHW | 56 | 1 | 1 |
| dhw.disinfecting | disinfecting | boolean | | true | DHW | 57 | 1 | 1 |
| dhw.charging | charging | boolean | | false | DHW | 58 | 1 | 1 |
| dhw.recharging | recharging | boolean | | false | DHW | 59 | 1 | 1 |
| dhw.tempok | temperature ok | boolean | | false | DHW | 60 | 1 | 1 |
| dhw.active | active | boolean | | false | DHW | 61 | 1 | 1 |
| dhw.3wayvalve | 3-way valve active | boolean | | false | DHW | 62 | 1 | 1 |
| dhw.chargepump | charge pump | boolean | | false | DHW | 63 | 1 | 1 |
| dhw.mixertemp | mixer temperature | uint16 (>=0<=3199) | C | false | DHW | 64 | 1 | 1/10 |
| dhw.cylmiddletemp | cylinder middle temperature (TS3) | uint16 (>=0<=3199) | C | false | DHW | 65 | 1 | 1/10 |
| dhw.starts | starts | uint24 (>=0<=16777214) | | false | DHW | 66 | 2 | 1 |
| dhw.workm | active time | time (>=0<=16777214) | minutes | false | DHW | 68 | 2 | 1 |
### Cascade CM10
| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor |
|-|-|-|-|-|-|-|-|-|

View File

@@ -322,6 +322,214 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/
"C1200W",boiler,12,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,83,2
"C1200W",boiler,12,nrgheat,energy heating,uint24 (>=0<=10000000),kWh,true,number.boiler_energy_heating,number.boiler_nrgheat,5,0,1/100,85,2
"C1200W",boiler,12,dhw.nrg,energy,uint24 (>=0<=10000000),kWh,true,number.boiler_dhw_energy,number.boiler_dhw_nrg,5,9,1/100,0,2
"CS5800iG",boiler,16,reset,reset,cmd [-\|maintenance\|error\|history\|message], ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
"CS5800iG",boiler,16,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,1,1
"CS5800iG",boiler,16,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,2,1
"CS5800iG",boiler,16,tapwateractive,tapwater active,boolean, ,false,binary_sensor.boiler_tapwater_active,binary_sensor.boiler_tapwateractive,5,0,1,3,1
"CS5800iG",boiler,16,selflowtemp,selected flow temperature,uint8 (>=0<=90),C,true,number.boiler_selected_flow_temperature,number.boiler_selflowtemp,5,0,1,4,1
"CS5800iG",boiler,16,heatingpumpmod,heating pump modulation,uint8 (>=0<=100),%,false,sensor.boiler_heating_pump_modulation,sensor.boiler_heatingpumpmod,5,0,1,5,1
"CS5800iG",boiler,16,outdoortemp,outside temperature,int16 (>=-3199<=3199),C,false,sensor.boiler_outside_temperature,sensor.boiler_outdoortemp,5,0,1/10,6,1
"CS5800iG",boiler,16,curflowtemp,current flow temperature,uint16 (>=0<=3199),C,false,sensor.boiler_current_flow_temperature,sensor.boiler_curflowtemp,5,0,1/10,7,1
"CS5800iG",boiler,16,rettemp,return temperature,uint16 (>=0<=3199),C,false,sensor.boiler_return_temperature,sensor.boiler_rettemp,5,0,1/10,8,1
"CS5800iG",boiler,16,switchtemp,mixing switch temperature,uint16 (>=0<=3199),C,false,sensor.boiler_mixing_switch_temperature,sensor.boiler_switchtemp,5,0,1/10,9,1
"CS5800iG",boiler,16,syspress,system pressure,uint8 (>=0<=25),bar,false,sensor.boiler_system_pressure,sensor.boiler_syspress,5,0,1/10,10,1
"CS5800iG",boiler,16,boiltemp,actual boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_actual_boiler_temperature,sensor.boiler_boiltemp,5,0,1/10,11,1
"CS5800iG",boiler,16,headertemp,low loss header,uint16 (>=0<=3199),C,false,sensor.boiler_low_loss_header,sensor.boiler_headertemp,5,0,1/10,12,1
"CS5800iG",boiler,16,heatingactivated,heating activated,boolean, ,true,switch.boiler_heating_activated,switch.boiler_heatingactivated,5,0,1,13,1
"CS5800iG",boiler,16,heatingtemp,heating temperature,uint8 (>=0<=90),C,true,number.boiler_heating_temperature,number.boiler_heatingtemp,5,0,1,14,1
"CS5800iG",boiler,16,heatingpump,heating pump,boolean, ,false,binary_sensor.boiler_heating_pump,binary_sensor.boiler_heatingpump,5,0,1,15,1
"CS5800iG",boiler,16,pumpmodmax,boiler pump max power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_max_power,number.boiler_pumpmodmax,5,0,1,16,1
"CS5800iG",boiler,16,pumpmodmin,boiler pump min power,uint8 (>=0<=100),%,true,number.boiler_boiler_pump_min_power,number.boiler_pumpmodmin,5,0,1,17,1
"CS5800iG",boiler,16,pumpmode,boiler pump mode,enum [proportional\|deltaP-1\|deltaP-2\|deltaP-3\|deltaP-4], ,true,select.boiler_boiler_pump_mode,select.boiler_pumpmode,5,0,1,18,1
"CS5800iG",boiler,16,pumpcharacter,boiler pump characteristic,enum [proportional\|150mbar\|200mbar\|250mbar\|300mbar\|350mbar\|400mbar], ,true,select.boiler_boiler_pump_characteristic,select.boiler_pumpcharacter,5,0,1,19,1
"CS5800iG",boiler,16,pumpdelay,pump delay,uint8 (>=0<=60),minutes,true,number.boiler_pump_delay,number.boiler_pumpdelay,5,0,1,20,1
"CS5800iG",boiler,16,pumpontemp,pump logic temperature,uint8 (>=0<=60),C,true,number.boiler_pump_logic_temperature,number.boiler_pumpontemp,5,0,1,21,1
"CS5800iG",boiler,16,selburnpow,burner selected max power,uint8 (>=0<=254),%,true,number.boiler_burner_selected_max_power,number.boiler_selburnpow,5,0,1,22,1
"CS5800iG",boiler,16,curburnpow,burner current power,uint8 (>=0<=100),%,false,sensor.boiler_burner_current_power,sensor.boiler_curburnpow,5,0,1,23,1
"CS5800iG",boiler,16,burnstarts,burner starts,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts,sensor.boiler_burnstarts,5,0,1,24,2
"CS5800iG",boiler,16,burnworkmin,total burner operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_burner_operating_time,sensor.boiler_burnworkmin,5,0,1,26,2
"CS5800iG",boiler,16,burn2workmin,burner stage 2 operating time,time (>=0<=16777214),minutes,false,sensor.boiler_burner_stage_2_operating_time,sensor.boiler_burn2workmin,5,0,1,28,2
"CS5800iG",boiler,16,heatworkmin,total heat operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_heat_operating_time,sensor.boiler_heatworkmin,5,0,1,30,2
"CS5800iG",boiler,16,heatstarts,burner starts heating,uint24 (>=0<=16777214), ,false,sensor.boiler_burner_starts_heating,sensor.boiler_heatstarts,5,0,1,32,2
"CS5800iG",boiler,16,ubauptime,total UBA operating time,time (>=0<=16777214),minutes,false,sensor.boiler_total_UBA_operating_time,sensor.boiler_ubauptime,5,0,1,34,2
"CS5800iG",boiler,16,lastcode,last error code,string, ,false,sensor.boiler_last_error_code,sensor.boiler_lastcode,5,0,1,36,28
"CS5800iG",boiler,16,servicecode,service code,string, ,false,sensor.boiler_service_code,sensor.boiler_servicecode,5,0,1,64,2
"CS5800iG",boiler,16,servicecodenumber,service code number,uint16 (>=0<=31999), ,false,sensor.boiler_service_code_number,sensor.boiler_servicecodenumber,5,0,1,66,1
"CS5800iG",boiler,16,maintenancemessage,maintenance message,string, ,false,sensor.boiler_maintenance_message,sensor.boiler_maintenancemessage,5,0,1,67,2
"CS5800iG",boiler,16,maintenance,maintenance scheduled,enum [off\|time\|date\|manual], ,true,select.boiler_maintenance_scheduled,select.boiler_maintenance,5,0,1,69,1
"CS5800iG",boiler,16,maintenancetime,time to next maintenance,uint16 (>=0<=31999),hours,true,number.boiler_time_to_next_maintenance,number.boiler_maintenancetime,5,0,1,70,1
"CS5800iG",boiler,16,maintenancedate,next maintenance date,string, ,true,sensor.boiler_next_maintenance_date,sensor.boiler_maintenancedate,5,0,1,71,6
"CS5800iG",boiler,16,emergencyops,emergency operation,boolean, ,true,switch.boiler_emergency_operation,switch.boiler_emergencyops,5,0,1,77,1
"CS5800iG",boiler,16,emergencytemp,emergency temperature,uint8 (>=15<=70),C,true,number.boiler_emergency_temperature,number.boiler_emergencytemp,5,0,1,78,1
"CS5800iG",boiler,16,pc0flow,Flow PC0,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC0,sensor.boiler_pc0flow,5,0,1,79,1
"CS5800iG",boiler,16,pc1flow,Flow PC1,int16 (>=-31999<=31999),l/h,false,sensor.boiler_Flow_PC1,sensor.boiler_pc1flow,5,0,1,80,1
"CS5800iG",boiler,16,pc1on,PC1,boolean, ,false,binary_sensor.boiler_PC1,binary_sensor.boiler_pc1on,5,0,1,81,1
"CS5800iG",boiler,16,pc1rate,PC1 rate,uint8 (>=0<=100),%,false,sensor.boiler_PC1_rate,sensor.boiler_pc1rate,5,0,1,82,1
"CS5800iG",boiler,16,nrgtotal,total energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_total_energy,sensor.boiler_nrgtotal,5,0,1/100,83,2
"CS5800iG",boiler,16,dhw.nrg,energy,uint24 (>=0<=167772),kWh,false,sensor.boiler_dhw_energy,sensor.boiler_dhw_nrg,5,9,1/100,0,2
"CS5800iG",boiler,16,nrgheat,energy heating,uint24 (>=0<=167772),kWh,false,sensor.boiler_energy_heating,sensor.boiler_nrgheat,5,0,1/100,85,2
"CS5800iG",boiler,16,nrgcool,energy cooling,uint24 (>=0<=167772),kWh,false,sensor.boiler_energy_cooling,sensor.boiler_nrgcool,5,0,1/100,87,2
"CS5800iG",boiler,16,metertotal,meter total,uint24 (>=0<=167772),kWh,false,sensor.boiler_meter_total,sensor.boiler_metertotal,5,0,1/100,89,2
"CS5800iG",boiler,16,metercomp,meter compressor,uint24 (>=0<=167772),kWh,false,sensor.boiler_meter_compressor,sensor.boiler_metercomp,5,0,1/100,91,2
"CS5800iG",boiler,16,metereheat,meter e-heater,uint24 (>=0<=167772),kWh,false,sensor.boiler_meter_e-heater,sensor.boiler_metereheat,5,0,1/100,93,2
"CS5800iG",boiler,16,meterheat,meter heating,uint24 (>=0<=167772),kWh,false,sensor.boiler_meter_heating,sensor.boiler_meterheat,5,0,1/100,95,2
"CS5800iG",boiler,16,metercool,meter cooling,uint24 (>=0<=167772),kWh,false,sensor.boiler_meter_cooling,sensor.boiler_metercool,5,0,1/100,97,2
"CS5800iG",boiler,16,dhw.meter,meter,uint24 (>=0<=167772),kWh,false,sensor.boiler_dhw_meter,sensor.boiler_dhw_meter,5,9,1/100,2,2
"CS5800iG",boiler,16,uptimetotal,heatpump total uptime,time (>=0<=279620),minutes,false,sensor.boiler_heatpump_total_uptime,sensor.boiler_uptimetotal,5,0,1/60,99,2
"CS5800iG",boiler,16,uptimecontrol,total operating time heat,time (>=0<=279620),minutes,false,sensor.boiler_total_operating_time_heat,sensor.boiler_uptimecontrol,5,0,1/60,101,2
"CS5800iG",boiler,16,uptimecompheating,operating time compressor heating,time (>=0<=279620),minutes,false,sensor.boiler_operating_time_compressor_heating,sensor.boiler_uptimecompheating,5,0,1/60,103,2
"CS5800iG",boiler,16,uptimecompcooling,operating time compressor cooling,time (>=0<=279620),minutes,false,sensor.boiler_operating_time_compressor_cooling,sensor.boiler_uptimecompcooling,5,0,1/60,105,2
"CS5800iG",boiler,16,dhw.uptimecomp,operating time compressor,time (>=0<=279620),minutes,false,sensor.boiler_dhw_operating_time_compressor,sensor.boiler_dhw_uptimecomp,5,9,1/60,4,2
"CS5800iG",boiler,16,uptimecomppool,operating time compressor pool,time (>=0<=279620),minutes,false,sensor.boiler_operating_time_compressor_pool,sensor.boiler_uptimecomppool,5,0,1/60,107,2
"CS5800iG",boiler,16,totalcompstarts,total compressor control starts,uint24 (>=0<=16777214), ,false,sensor.boiler_total_compressor_control_starts,sensor.boiler_totalcompstarts,5,0,1,109,2
"CS5800iG",boiler,16,heatingstarts,heating control starts,uint24 (>=0<=16777214), ,false,sensor.boiler_heating_control_starts,sensor.boiler_heatingstarts,5,0,1,111,2
"CS5800iG",boiler,16,coolingstarts,cooling control starts,uint24 (>=0<=16777214), ,false,sensor.boiler_cooling_control_starts,sensor.boiler_coolingstarts,5,0,1,113,2
"CS5800iG",boiler,16,dhw.startshp,starts hp,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts_hp,sensor.boiler_dhw_startshp,5,9,1,6,2
"CS5800iG",boiler,16,poolstarts,pool control starts,uint24 (>=0<=16777214), ,false,sensor.boiler_pool_control_starts,sensor.boiler_poolstarts,5,0,1,115,2
"CS5800iG",boiler,16,nrgconstotal,total energy consumption,uint24 (>=0<=16777214),kWh,false,sensor.boiler_total_energy_consumption,sensor.boiler_nrgconstotal,5,0,1,117,2
"CS5800iG",boiler,16,nrgconscomptotal,total energy consumption compressor,uint24 (>=0<=16777214),kWh,false,sensor.boiler_total_energy_consumption_compressor,sensor.boiler_nrgconscomptotal,5,0,1,119,2
"CS5800iG",boiler,16,nrgconscompheating,energy consumption compressor heating,uint24 (>=0<=16777214),kWh,false,sensor.boiler_energy_consumption_compressor_heating,sensor.boiler_nrgconscompheating,5,0,1,121,2
"CS5800iG",boiler,16,dhw.nrgconscomp,energy consumption compressor,uint24 (>=0<=16777214),kWh,false,sensor.boiler_dhw_energy_consumption_compressor,sensor.boiler_dhw_nrgconscomp,5,9,1,8,2
"CS5800iG",boiler,16,nrgconscompcooling,energy consumption compressor cooling,uint24 (>=0<=16777214),kWh,false,sensor.boiler_energy_consumption_compressor_cooling,sensor.boiler_nrgconscompcooling,5,0,1,123,2
"CS5800iG",boiler,16,nrgconscomppool,energy consumption compressor pool,uint24 (>=0<=16777214),kWh,false,sensor.boiler_energy_consumption_compressor_pool,sensor.boiler_nrgconscomppool,5,0,1,125,2
"CS5800iG",boiler,16,auxelecheatnrgconstotal,total aux elec. heater energy consumption,uint24 (>=0<=16777214),kWh,false,sensor.boiler_total_aux_elec._heater_energy_consumption,sensor.boiler_auxelecheatnrgconstotal,5,0,1,127,2
"CS5800iG",boiler,16,auxelecheatnrgconsheating,aux elec. heater energy consumption heating,uint24 (>=0<=16777214),kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_heating,sensor.boiler_auxelecheatnrgconsheating,5,0,1,129,2
"CS5800iG",boiler,16,dhw.auxelecheatnrgcons,aux elec. heater energy consumption,uint24 (>=0<=16777214),kWh,false,sensor.boiler_dhw_aux_elec._heater_energy_consumption,sensor.boiler_dhw_auxelecheatnrgcons,5,9,1,10,2
"CS5800iG",boiler,16,auxelecheatnrgconspool,aux elec. heater energy consumption pool,uint24 (>=0<=16777214),kWh,false,sensor.boiler_aux_elec._heater_energy_consumption_pool,sensor.boiler_auxelecheatnrgconspool,5,0,1,131,2
"CS5800iG",boiler,16,nrgsupptotal,total energy supplied,uint24 (>=0<=16777214),kWh,false,sensor.boiler_total_energy_supplied,sensor.boiler_nrgsupptotal,5,0,1,133,2
"CS5800iG",boiler,16,nrgsuppheating,total energy supplied heating,uint24 (>=0<=16777214),kWh,false,sensor.boiler_total_energy_supplied_heating,sensor.boiler_nrgsuppheating,5,0,1,135,2
"CS5800iG",boiler,16,dhw.nrgsupp,total energy warm supplied,uint24 (>=0<=16777214),kWh,false,sensor.boiler_dhw_total_energy_warm_supplied,sensor.boiler_dhw_nrgsupp,5,9,1,12,2
"CS5800iG",boiler,16,nrgsuppcooling,total energy supplied cooling,uint24 (>=0<=16777214),kWh,false,sensor.boiler_total_energy_supplied_cooling,sensor.boiler_nrgsuppcooling,5,0,1,137,2
"CS5800iG",boiler,16,nrgsupppool,total energy supplied pool,uint24 (>=0<=16777214),kWh,false,sensor.boiler_total_energy_supplied_pool,sensor.boiler_nrgsupppool,5,0,1,139,2
"CS5800iG",boiler,16,hppower,compressor power output,uint16 (>=0<=3199),kW,false,sensor.boiler_compressor_power_output,sensor.boiler_hppower,5,0,1/10,141,1
"CS5800iG",boiler,16,hpmaxpower,compressor max power,uint8 (>=0<=100),%,true,number.boiler_compressor_max_power,number.boiler_hpmaxpower,5,0,1,142,1
"CS5800iG",boiler,16,pvmaxcomp,pv compressor max power,uint8 (>=0<=25),kW,true,number.boiler_pv_compressor_max_power,number.boiler_pvmaxcomp,5,0,1/10,143,1
"CS5800iG",boiler,16,powerreduction,power reduction,uint8 (>=30<=60),%,true,number.boiler_power_reduction,number.boiler_powerreduction,5,0,10,144,1
"CS5800iG",boiler,16,hpsetdiffpress,set differential pressure,uint8 (>=150<=750),mbar,true,number.boiler_set_differential_pressure,number.boiler_hpsetdiffpress,5,0,50,145,1
"CS5800iG",boiler,16,hpcompon,hp compressor,boolean, ,false,binary_sensor.boiler_hp_compressor,binary_sensor.boiler_hpcompon,5,0,1,146,1
"CS5800iG",boiler,16,hpactivity,compressor activity,enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm], ,false,sensor.boiler_compressor_activity,sensor.boiler_hpactivity,5,0,1,147,1
"CS5800iG",boiler,16,hpbrinepumpspd,brine pump speed,uint8 (>=0<=100),%,false,sensor.boiler_brine_pump_speed,sensor.boiler_hpbrinepumpspd,5,0,1,148,1
"CS5800iG",boiler,16,hpswitchvalve,switch valve,boolean, ,false,binary_sensor.boiler_switch_valve,binary_sensor.boiler_hpswitchvalve,5,0,1,149,1
"CS5800iG",boiler,16,hpcompspd,compressor speed,uint8 (>=0<=100),%,false,sensor.boiler_compressor_speed,sensor.boiler_hpcompspd,5,0,1,150,1
"CS5800iG",boiler,16,hpcircspd,circulation pump speed,uint8 (>=0<=100),%,false,sensor.boiler_circulation_pump_speed,sensor.boiler_hpcircspd,5,0,1,151,1
"CS5800iG",boiler,16,hpbrinein,brine in/evaporator,int16 (>=-3199<=3199),C,false,sensor.boiler_brine_in/evaporator,sensor.boiler_hpbrinein,5,0,1/10,152,1
"CS5800iG",boiler,16,hpbrineout,brine out/condenser,int16 (>=-3199<=3199),C,false,sensor.boiler_brine_out/condenser,sensor.boiler_hpbrineout,5,0,1/10,153,1
"CS5800iG",boiler,16,hptc0,heat carrier return (TC0),int16 (>=-3199<=3199),C,false,sensor.boiler_heat_carrier_return_(TC0),sensor.boiler_hptc0,5,0,1/10,154,1
"CS5800iG",boiler,16,hptc1,heat carrier forward (TC1),int16 (>=-3199<=3199),C,false,sensor.boiler_heat_carrier_forward_(TC1),sensor.boiler_hptc1,5,0,1/10,155,1
"CS5800iG",boiler,16,hptc3,condenser temperature (TC3),int16 (>=-3199<=3199),C,false,sensor.boiler_condenser_temperature_(TC3),sensor.boiler_hptc3,5,0,1/10,156,1
"CS5800iG",boiler,16,hptr1,compressor temperature (TR1),int16 (>=-3199<=3199),C,false,sensor.boiler_compressor_temperature_(TR1),sensor.boiler_hptr1,5,0,1/10,157,1
"CS5800iG",boiler,16,hptr3,refrigerant temperature liquid side (condenser output) (TR3),int16 (>=-3199<=3199),C,false,sensor.boiler_refrigerant_temperature_liquid_side_(condenser_output)_(TR3),sensor.boiler_hptr3,5,0,1/10,158,1
"CS5800iG",boiler,16,hptr4,evaporator inlet temperature (TR4),int16 (>=-3199<=3199),C,false,sensor.boiler_evaporator_inlet_temperature_(TR4),sensor.boiler_hptr4,5,0,1/10,159,1
"CS5800iG",boiler,16,hptr5,compressor inlet temperature (TR5),int16 (>=-3199<=3199),C,false,sensor.boiler_compressor_inlet_temperature_(TR5),sensor.boiler_hptr5,5,0,1/10,160,1
"CS5800iG",boiler,16,hptr6,compressor outlet temperature (TR6),int16 (>=-3199<=3199),C,false,sensor.boiler_compressor_outlet_temperature_(TR6),sensor.boiler_hptr6,5,0,1/10,161,1
"CS5800iG",boiler,16,hptr7,refrigerant temperature gas side (condenser input) (TR7),int16 (>=-3199<=3199),C,false,sensor.boiler_refrigerant_temperature_gas_side_(condenser_input)_(TR7),sensor.boiler_hptr7,5,0,1/10,162,1
"CS5800iG",boiler,16,hptl2,air inlet temperature (TL2),int16 (>=-3199<=3199),C,false,sensor.boiler_air_inlet_temperature_(TL2),sensor.boiler_hptl2,5,0,1/10,163,1
"CS5800iG",boiler,16,hppl1,low pressure side temperature (PL1),int16 (>=-3199<=3199),C,false,sensor.boiler_low_pressure_side_temperature_(PL1),sensor.boiler_hppl1,5,0,1/10,164,1
"CS5800iG",boiler,16,hpph1,high pressure side temperature (PH1),int16 (>=-3199<=3199),C,false,sensor.boiler_high_pressure_side_temperature_(PH1),sensor.boiler_hpph1,5,0,1/10,165,1
"CS5800iG",boiler,16,hpta4,drain pan temp (TA4),int16 (>=-3199<=3199),C,false,sensor.boiler_drain_pan_temp_(TA4),sensor.boiler_hpta4,5,0,1/10,166,1
"CS5800iG",boiler,16,hptw1,reservoir temp (TW1),int16 (>=-3199<=3199),C,false,sensor.boiler_reservoir_temp_(TW1),sensor.boiler_hptw1,5,0,1/10,167,1
"CS5800iG",boiler,16,poolsettemp,pool set temperature,uint8 (>=0<=127),C,true,number.boiler_pool_set_temperature,number.boiler_poolsettemp,5,0,1/2,168,1
"CS5800iG",boiler,16,hp4way,4-way valve (VR4),enum [cooling & defrost\|heating & dhw], ,false,sensor.boiler_4-way_valve_(VR4),sensor.boiler_hp4way,5,0,1,169,1
"CS5800iG",boiler,16,hpin1,input 1 state,boolean, ,false,binary_sensor.boiler_input_1_state,binary_sensor.boiler_hpin1,5,0,1,170,1
"CS5800iG",boiler,16,hpin1opt,input 1 options,string, ,true,sensor.boiler_input_1_options,sensor.boiler_hpin1opt,5,0,1,171,8
"CS5800iG",boiler,16,hpin2,input 2 state,boolean, ,false,binary_sensor.boiler_input_2_state,binary_sensor.boiler_hpin2,5,0,1,179,1
"CS5800iG",boiler,16,hpin2opt,input 2 options,string, ,true,sensor.boiler_input_2_options,sensor.boiler_hpin2opt,5,0,1,180,8
"CS5800iG",boiler,16,hpin3,input 3 state,boolean, ,false,binary_sensor.boiler_input_3_state,binary_sensor.boiler_hpin3,5,0,1,188,1
"CS5800iG",boiler,16,hpin3opt,input 3 options,string, ,true,sensor.boiler_input_3_options,sensor.boiler_hpin3opt,5,0,1,189,8
"CS5800iG",boiler,16,hpin4,input 4 state,boolean, ,false,binary_sensor.boiler_input_4_state,binary_sensor.boiler_hpin4,5,0,1,197,1
"CS5800iG",boiler,16,hpin4opt,input 4 options,string, ,true,sensor.boiler_input_4_options,sensor.boiler_hpin4opt,5,0,1,198,8
"CS5800iG",boiler,16,maxheatcomp,heat limit compressor,enum [0 kW\|3 kW\|6 kW\|9 kW], ,true,select.boiler_heat_limit_compressor,select.boiler_maxheatcomp,5,0,1,206,1
"CS5800iG",boiler,16,maxheatheat,heat limit heating,enum [3 kW\|6 kW\|9 kW], ,true,select.boiler_heat_limit_heating,select.boiler_maxheatheat,5,0,1,207,1
"CS5800iG",boiler,16,dhw.maxheat,heat limit,enum [3 kW\|6 kW\|9 kW], ,true,select.boiler_dhw_heat_limit,select.boiler_dhw_maxheat,5,9,1,14,1
"CS5800iG",boiler,16,auxheatersource,aux heater source,enum [not installed\|electric heater\|exclusive\|parallel\|hybrid], ,true,select.boiler_aux_heater_source,select.boiler_auxheatersource,5,0,1,208,1
"CS5800iG",boiler,16,pvcooling,cooling only with PV,boolean, ,true,switch.boiler_cooling_only_with_PV,switch.boiler_pvcooling,5,0,1,209,1
"CS5800iG",boiler,16,auxheateronly,aux heater only,boolean, ,true,switch.boiler_aux_heater_only,switch.boiler_auxheateronly,5,0,1,210,1
"CS5800iG",boiler,16,auxheateroff,disable aux heater,boolean, ,true,switch.boiler_disable_aux_heater,switch.boiler_auxheateroff,5,0,1,211,1
"CS5800iG",boiler,16,auxheaterstatus,aux heater status,enum [off\|heating\|cooling\|hot water\|pool\|pool heating\|defrost\|compressor alarm], ,false,sensor.boiler_aux_heater_status,sensor.boiler_auxheaterstatus,5,0,1,212,1
"CS5800iG",boiler,16,auxheaterlevel,aux heater level,uint8 (>=0<=100),%,false,sensor.boiler_aux_heater_level,sensor.boiler_auxheaterlevel,5,0,1,213,1
"CS5800iG",boiler,16,auxheaterdelay,aux heater on delay,uint16 (>=10<=1000),K*min,true,number.boiler_aux_heater_on_delay,number.boiler_auxheaterdelay,5,0,10,214,1
"CS5800iG",boiler,16,auxmaxlimit,aux heater max limit,uint8 (>=0<=10),K,true,number.boiler_aux_heater_max_limit,number.boiler_auxmaxlimit,5,0,1/10,215,1
"CS5800iG",boiler,16,auxlimitstart,aux heater limit start,uint8 (>=0<=10),K,true,number.boiler_aux_heater_limit_start,number.boiler_auxlimitstart,5,0,1/10,216,1
"CS5800iG",boiler,16,auxheatrmode,aux heater mode,enum [eco\|comfort], ,true,select.boiler_aux_heater_mode,select.boiler_auxheatrmode,5,0,1,217,1
"CS5800iG",boiler,16,hphystheat,on/off hyst heat,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_heat,number.boiler_hphystheat,5,0,5,218,1
"CS5800iG",boiler,16,hphystcool,on/off hyst cool,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_cool,number.boiler_hphystcool,5,0,5,219,1
"CS5800iG",boiler,16,hphystpool,on/off hyst pool,uint16 (>=50<=1500),K*min,true,number.boiler_on/off_hyst_pool,number.boiler_hphystpool,5,0,5,220,1
"CS5800iG",boiler,16,silentmode,silent mode,enum [off\|auto\|on], ,true,select.boiler_silent_mode,select.boiler_silentmode,5,0,1,221,1
"CS5800iG",boiler,16,silentfrom,silent mode from,uint8 (>=0<=3810),minutes,true,number.boiler_silent_mode_from,number.boiler_silentfrom,5,0,15,222,1
"CS5800iG",boiler,16,silentto,silent mode to,uint8 (>=0<=3810),minutes,true,number.boiler_silent_mode_to,number.boiler_silentto,5,0,15,223,1
"CS5800iG",boiler,16,mintempsilent,min outside temp for silent mode,int8 (>=-126<=126),C,true,number.boiler_min_outside_temp_for_silent_mode,number.boiler_mintempsilent,5,0,1,224,1
"CS5800iG",boiler,16,tempparmode,outside temp parallel mode,int8 (>=-126<=126),C,true,number.boiler_outside_temp_parallel_mode,number.boiler_tempparmode,5,0,1,225,1
"CS5800iG",boiler,16,auxheatmix,aux heater mixing valve,int8 (>=-100<=100),%,false,sensor.boiler_aux_heater_mixing_valve,sensor.boiler_auxheatmix,5,0,1,226,1
"CS5800iG",boiler,16,tempdiffheat,temp diff TC3/TC0 heat,uint8 (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_heat,number.boiler_tempdiffheat,5,0,1/10,227,1
"CS5800iG",boiler,16,tempdiffcool,temp diff TC3/TC0 cool,uint8 (>=2<=10),K,true,number.boiler_temp_diff_TC3/TC0_cool,number.boiler_tempdiffcool,5,0,1/10,228,1
"CS5800iG",boiler,16,vpcooling,valve/pump cooling,boolean, ,true,switch.boiler_valve/pump_cooling,switch.boiler_vpcooling,5,0,1,229,1
"CS5800iG",boiler,16,heatcable,heating cable,boolean, ,true,switch.boiler_heating_cable,switch.boiler_heatcable,5,0,1,230,1
"CS5800iG",boiler,16,vc0valve,VC0 valve,boolean, ,true,switch.boiler_VC0_valve,switch.boiler_vc0valve,5,0,1,231,1
"CS5800iG",boiler,16,primepump,primary heatpump,boolean, ,true,switch.boiler_primary_heatpump,switch.boiler_primepump,5,0,1,232,1
"CS5800iG",boiler,16,primepumpmod,primary heatpump modulation,uint8 (>=0<=100),%,true,number.boiler_primary_heatpump_modulation,number.boiler_primepumpmod,5,0,1,233,1
"CS5800iG",boiler,16,hp3way,3-way valve,boolean, ,true,switch.boiler_3-way_valve,switch.boiler_hp3way,5,0,1,234,1
"CS5800iG",boiler,16,elheatstep1,el. heater step 1,boolean, ,true,switch.boiler_el._heater_step_1,switch.boiler_elheatstep1,5,0,1,235,1
"CS5800iG",boiler,16,elheatstep2,el. heater step 2,boolean, ,true,switch.boiler_el._heater_step_2,switch.boiler_elheatstep2,5,0,1,236,1
"CS5800iG",boiler,16,elheatstep3,el. heater step 3,boolean, ,true,switch.boiler_el._heater_step_3,switch.boiler_elheatstep3,5,0,1,237,1
"CS5800iG",boiler,16,hpea0,condensate reservoir heating (EA0),boolean, ,false,binary_sensor.boiler_condensate_reservoir_heating_(EA0),binary_sensor.boiler_hpea0,5,0,1,238,1
"CS5800iG",boiler,16,hppumpmode,primary heatpump mode,enum [auto\|continuous], ,true,select.boiler_primary_heatpump_mode,select.boiler_hppumpmode,5,0,1,239,1
"CS5800iG",boiler,16,fan,fan,uint8 (>=20<=100),%,true,number.boiler_fan,number.boiler_fan,5,0,1,240,1
"CS5800iG",boiler,16,shutdown,shutdown,cmd [off\|on], ,true,sensor.boiler_shutdown,sensor.boiler_shutdown,5,0,1,241,1
"CS5800iG",boiler,16,hpcurrpower,compressor current power,uint16 (>=0<=31999),W,false,sensor.boiler_compressor_current_power,sensor.boiler_hpcurrpower,5,0,1,242,1
"CS5800iG",boiler,16,hppowerlimit,power limit,uint16 (>=0<=31999),W,true,number.boiler_power_limit,number.boiler_hppowerlimit,5,0,1,243,1
"CS5800iG",boiler,16,dhw.alternatingop,alternating operation,boolean, ,true,switch.boiler_dhw_alternating_operation,switch.boiler_dhw_alternatingop,5,9,1,15,1
"CS5800iG",boiler,16,dhw.altopprioheat,prioritise heating during dhw,uint8 (>=20<=120),minutes,true,number.boiler_dhw_prioritise_heating_during_dhw,number.boiler_dhw_altopprioheat,5,9,1,16,1
"CS5800iG",boiler,16,dhw.altopprio,prioritise dhw during heating,uint8 (>=30<=120),minutes,true,number.boiler_dhw_prioritise_dhw_during_heating,number.boiler_dhw_altopprio,5,9,1,17,1
"CS5800iG",boiler,16,dhw.comfoff,comfort switch off,uint8 (>=15<=65),C,true,number.boiler_dhw_comfort_switch_off,number.boiler_dhw_comfoff,5,9,1,18,1
"CS5800iG",boiler,16,dhw.ecooff,eco switch off,uint8 (>=15<=65),C,true,number.boiler_dhw_eco_switch_off,number.boiler_dhw_ecooff,5,9,1,19,1
"CS5800iG",boiler,16,dhw.ecoplusoff,eco+ switch off,uint8 (>=48<=63),C,true,number.boiler_dhw_eco+_switch_off,number.boiler_dhw_ecoplusoff,5,9,1,20,1
"CS5800iG",boiler,16,dhw.comfdiff,comfort diff,uint8 (>=6<=12),K,true,number.boiler_dhw_comfort_diff,number.boiler_dhw_comfdiff,5,9,1,21,1
"CS5800iG",boiler,16,dhw.ecodiff,eco diff,uint8 (>=6<=12),K,true,number.boiler_dhw_eco_diff,number.boiler_dhw_ecodiff,5,9,1,22,1
"CS5800iG",boiler,16,dhw.ecoplusdiff,eco+ diff,uint8 (>=6<=12),K,true,number.boiler_dhw_eco+_diff,number.boiler_dhw_ecoplusdiff,5,9,1,23,1
"CS5800iG",boiler,16,dhw.comfstop,comfort stop temp,uint8 (>=0<=254),C,true,number.boiler_dhw_comfort_stop_temp,number.boiler_dhw_comfstop,5,9,1,24,1
"CS5800iG",boiler,16,dhw.ecostop,eco stop temp,uint8 (>=0<=254),C,true,number.boiler_dhw_eco_stop_temp,number.boiler_dhw_ecostop,5,9,1,25,1
"CS5800iG",boiler,16,dhw.ecoplusstop,eco+ stop temp,uint8 (>=0<=254),C,true,number.boiler_dhw_eco+_stop_temp,number.boiler_dhw_ecoplusstop,5,9,1,26,1
"CS5800iG",boiler,16,dhw.hpcircpump,circulation pump available during dhw,boolean, ,true,switch.boiler_dhw_circulation_pump_available_during_dhw,switch.boiler_dhw_hpcircpump,5,9,1,27,1
"CS5800iG",boiler,16,dhw.tapactivated,turn on/off,boolean, ,true,switch.boiler_dhw_turn_on/off,switch.boiler_dhw_tapactivated,5,9,1,28,1
"CS5800iG",boiler,16,dhw.settemp,set temperature,uint8 (>=0<=254),C,false,sensor.boiler_dhw_set_temperature,sensor.boiler_dhw_settemp,5,9,1,29,1
"CS5800iG",boiler,16,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_temperature,number.boiler_dhw_seltemp,5,9,1,30,1
"CS5800iG",boiler,16,dhw.seltemplow,selected lower temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_lower_temperature,number.boiler_dhw_seltemplow,5,9,1,31,1
"CS5800iG",boiler,16,dhw.tempecoplus,selected eco+ temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_selected_eco+_temperature,number.boiler_dhw_tempecoplus,5,9,1,32,1
"CS5800iG",boiler,16,dhw.seltempoff,selected temperature for off,uint8 (>=0<=254),C,false,sensor.boiler_dhw_selected_temperature_for_off,sensor.boiler_dhw_seltempoff,5,9,1,33,1
"CS5800iG",boiler,16,dhw.seltempsingle,single charge temperature,uint8 (>=0<=254),C,true,number.boiler_dhw_single_charge_temperature,number.boiler_dhw_seltempsingle,5,9,1,34,1
"CS5800iG",boiler,16,dhw.solartemp,solar boiler temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_solar_boiler_temperature,sensor.boiler_dhw_solartemp,5,9,1/10,35,1
"CS5800iG",boiler,16,dhw.type,type,enum [off\|flow\|buffered flow\|buffer\|layered buffer], ,false,sensor.boiler_dhw_type,sensor.boiler_dhw_type,5,9,1,36,1
"CS5800iG",boiler,16,dhw.comfort,comfort,enum [hot\|eco\|intelligent], ,true,select.boiler_dhw_comfort,select.boiler_dhw_comfort,5,9,1,37,1
"CS5800iG",boiler,16,dhw.comfort1,comfort mode,enum [high comfort\|eco], ,true,select.boiler_dhw_comfort_mode,select.boiler_dhw_comfort1,5,9,1,38,1
"CS5800iG",boiler,16,dhw.flowtempoffset,flow temperature offset,uint8 (>=0<=100),C,true,number.boiler_dhw_flow_temperature_offset,number.boiler_dhw_flowtempoffset,5,9,1,39,1
"CS5800iG",boiler,16,dhw.chargeoptimization,charge optimization,boolean, ,true,switch.boiler_dhw_charge_optimization,switch.boiler_dhw_chargeoptimization,5,9,1,40,1
"CS5800iG",boiler,16,dhw.maxpower,max power,uint8 (>=0<=254),%,true,number.boiler_dhw_max_power,number.boiler_dhw_maxpower,5,9,1,41,1
"CS5800iG",boiler,16,dhw.maxtemp,maximum temperature,uint8 (>=0<=80),C,true,number.boiler_dhw_maximum_temperature,number.boiler_dhw_maxtemp,5,9,1,42,1
"CS5800iG",boiler,16,dhw.circpump,circulation pump available,boolean, ,true,switch.boiler_dhw_circulation_pump_available,switch.boiler_dhw_circpump,5,9,1,43,1
"CS5800iG",boiler,16,dhw.chargetype,charging type,enum [chargepump\|3-way valve], ,false,sensor.boiler_dhw_charging_type,sensor.boiler_dhw_chargetype,5,9,1,44,1
"CS5800iG",boiler,16,dhw.hyston,hysteresis on temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_on_temperature,number.boiler_dhw_hyston,5,9,1,45,1
"CS5800iG",boiler,16,dhw.hystoff,hysteresis off temperature,int8 (>=-126<=126),C,true,number.boiler_dhw_hysteresis_off_temperature,number.boiler_dhw_hystoff,5,9,1,46,1
"CS5800iG",boiler,16,dhw.disinfectiontemp,disinfection temperature,uint8 (>=60<=80),C,true,number.boiler_dhw_disinfection_temperature,number.boiler_dhw_disinfectiontemp,5,9,1,47,1
"CS5800iG",boiler,16,dhw.circmode,circulation pump mode,enum [off\|1x3min\|2x3min\|3x3min\|4x3min\|5x3min\|6x3min\|continuous], ,true,select.boiler_dhw_circulation_pump_mode,select.boiler_dhw_circmode,5,9,1,48,1
"CS5800iG",boiler,16,dhw.circ,circulation active,boolean, ,true,switch.boiler_dhw_circulation_active,switch.boiler_dhw_circ,5,9,1,49,1
"CS5800iG",boiler,16,dhw.curtemp,current intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_intern_temperature,sensor.boiler_dhw_curtemp,5,9,1/10,50,1
"CS5800iG",boiler,16,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_current_extern_temperature,sensor.boiler_dhw_curtemp2,5,9,1/10,51,1
"CS5800iG",boiler,16,dhw.curflow,current tap water flow,uint8 (>=0<=25),l/min,false,sensor.boiler_dhw_current_tap_water_flow,sensor.boiler_dhw_curflow,5,9,1/10,52,1
"CS5800iG",boiler,16,dhw.storagetemp1,storage intern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_intern_temperature,sensor.boiler_dhw_storagetemp1,5,9,1/10,53,1
"CS5800iG",boiler,16,dhw.storagetemp2,storage extern temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_storage_extern_temperature,sensor.boiler_dhw_storagetemp2,5,9,1/10,54,1
"CS5800iG",boiler,16,dhw.activated,activated,boolean, ,true,switch.boiler_dhw_activated,switch.boiler_dhw_activated,5,9,1,55,1
"CS5800iG",boiler,16,dhw.onetime,one time charging,boolean, ,true,switch.boiler_dhw_one_time_charging,switch.boiler_dhw_onetime,5,9,1,56,1
"CS5800iG",boiler,16,dhw.disinfecting,disinfecting,boolean, ,true,switch.boiler_dhw_disinfecting,switch.boiler_dhw_disinfecting,5,9,1,57,1
"CS5800iG",boiler,16,dhw.charging,charging,boolean, ,false,binary_sensor.boiler_dhw_charging,binary_sensor.boiler_dhw_charging,5,9,1,58,1
"CS5800iG",boiler,16,dhw.recharging,recharging,boolean, ,false,binary_sensor.boiler_dhw_recharging,binary_sensor.boiler_dhw_recharging,5,9,1,59,1
"CS5800iG",boiler,16,dhw.tempok,temperature ok,boolean, ,false,binary_sensor.boiler_dhw_temperature_ok,binary_sensor.boiler_dhw_tempok,5,9,1,60,1
"CS5800iG",boiler,16,dhw.active,active,boolean, ,false,binary_sensor.boiler_dhw_active,binary_sensor.boiler_dhw_active,5,9,1,61,1
"CS5800iG",boiler,16,dhw.3wayvalve,3-way valve active,boolean, ,false,binary_sensor.boiler_dhw_3-way_valve_active,binary_sensor.boiler_dhw_3wayvalve,5,9,1,62,1
"CS5800iG",boiler,16,dhw.chargepump,charge pump,boolean, ,false,binary_sensor.boiler_dhw_charge_pump,binary_sensor.boiler_dhw_chargepump,5,9,1,63,1
"CS5800iG",boiler,16,dhw.mixertemp,mixer temperature,uint16 (>=0<=3199),C,false,sensor.boiler_dhw_mixer_temperature,sensor.boiler_dhw_mixertemp,5,9,1/10,64,1
"CS5800iG",boiler,16,dhw.cylmiddletemp,cylinder middle temperature (TS3),uint16 (>=0<=3199),C,false,sensor.boiler_dhw_cylinder_middle_temperature_(TS3),sensor.boiler_dhw_cylmiddletemp,5,9,1/10,65,1
"CS5800iG",boiler,16,dhw.starts,starts,uint24 (>=0<=16777214), ,false,sensor.boiler_dhw_starts,sensor.boiler_dhw_starts,5,9,1,66,2
"CS5800iG",boiler,16,dhw.workm,active time,time (>=0<=16777214),minutes,false,sensor.boiler_dhw_active_time,sensor.boiler_dhw_workm,5,9,1,68,2
"BK13/BK15, Smartline, GB1*2",boiler,64,reset,reset,cmd [-\|maintenance\|error\|history\|message], ,true,sensor.boiler_reset,sensor.boiler_reset,5,0,1,0,1
"BK13/BK15, Smartline, GB1*2",boiler,64,heatingoff,force heating off,boolean, ,true,switch.boiler_force_heating_off,switch.boiler_heatingoff,5,0,1,1,1
"BK13/BK15, Smartline, GB1*2",boiler,64,heatingactive,heating active,boolean, ,false,binary_sensor.boiler_heating_active,binary_sensor.boiler_heatingactive,5,0,1,2,1
Can't render this file because it is too large.

View File

@@ -111,10 +111,10 @@ telegram_type_id,name,is_fetched
0x02A0,RC300Curves,
0x02A1,RC300Curves,
0x02A2,RC300Curves,
0x02A5,EasyMonitor,
0x02A5,RC300Monitor,fetched
0x02A6,RC300Monitor,
0x02A7,RC300Monitor,
0x02A8,RC300Monitor,
0x02A7,CRFMonitor,
0x02A8,CRFMonitor,
0x02A9,RC300Monitor,
0x02AA,RC300Monitor,
0x02AB,RC300Monitor,
1 telegram_type_id name is_fetched
111 0x02A0 RC300Curves
112 0x02A1 RC300Curves
113 0x02A2 RC300Curves
114 0x02A5 EasyMonitor RC300Monitor fetched
115 0x02A6 RC300Monitor
116 0x02A7 RC300Monitor CRFMonitor
117 0x02A8 RC300Monitor CRFMonitor
118 0x02A9 RC300Monitor
119 0x02AA RC300Monitor
120 0x02AB RC300Monitor

View File

@@ -49,15 +49,15 @@
"@preact/compat": "^18.3.1",
"@preact/preset-vite": "^2.10.1",
"@trivago/prettier-plugin-sort-imports": "^5.2.2",
"@types/node": "^22.15.29",
"@types/react": "^19.1.6",
"@types/node": "^22.15.31",
"@types/react": "^19.1.7",
"@types/react-dom": "^19.1.6",
"concurrently": "^9.1.2",
"eslint": "^9.28.0",
"eslint-config-prettier": "^10.1.5",
"prettier": "^3.5.3",
"rollup-plugin-visualizer": "^5.14.0",
"terser": "^5.41.0",
"terser": "^5.42.0",
"typescript-eslint": "8.32.1",
"vite": "^6.3.5",
"vite-plugin-imagemin": "^0.6.1",

425
interface/pnpm-lock.yaml generated
View File

@@ -13,19 +13,19 @@ importers:
version: 2.1.1(alova@3.2.11)
'@emotion/react':
specifier: ^11.14.0
version: 11.14.0(@types/react@19.1.6)(react@19.1.0)
version: 11.14.0(@types/react@19.1.7)(react@19.1.0)
'@emotion/styled':
specifier: ^11.14.0
version: 11.14.0(@emotion/react@11.14.0(@types/react@19.1.6)(react@19.1.0))(@types/react@19.1.6)(react@19.1.0)
version: 11.14.0(@emotion/react@11.14.0(@types/react@19.1.7)(react@19.1.0))(@types/react@19.1.7)(react@19.1.0)
'@mui/icons-material':
specifier: ^7.1.1
version: 7.1.1(@mui/material@7.1.1(@emotion/react@11.14.0(@types/react@19.1.6)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.6)(react@19.1.0))(@types/react@19.1.6)(react@19.1.0))(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@types/react@19.1.6)(react@19.1.0)
version: 7.1.1(@mui/material@7.1.1(@emotion/react@11.14.0(@types/react@19.1.7)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.7)(react@19.1.0))(@types/react@19.1.7)(react@19.1.0))(@types/react@19.1.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@types/react@19.1.7)(react@19.1.0)
'@mui/material':
specifier: ^7.1.1
version: 7.1.1(@emotion/react@11.14.0(@types/react@19.1.6)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.6)(react@19.1.0))(@types/react@19.1.6)(react@19.1.0))(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
version: 7.1.1(@emotion/react@11.14.0(@types/react@19.1.7)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.7)(react@19.1.0))(@types/react@19.1.7)(react@19.1.0))(@types/react@19.1.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@table-library/react-table-library':
specifier: 4.1.15
version: 4.1.15(@emotion/react@11.14.0(@types/react@19.1.6)(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
version: 4.1.15(@emotion/react@11.14.0(@types/react@19.1.7)(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
alova:
specifier: 3.2.11
version: 3.2.11
@@ -80,19 +80,19 @@ importers:
version: 18.3.1(preact@10.26.8)
'@preact/preset-vite':
specifier: ^2.10.1
version: 2.10.1(@babel/core@7.27.4)(preact@10.26.8)(vite@6.3.5(@types/node@22.15.29)(terser@5.41.0))
version: 2.10.1(@babel/core@7.27.4)(preact@10.26.8)(vite@6.3.5(@types/node@22.15.31)(terser@5.42.0))
'@trivago/prettier-plugin-sort-imports':
specifier: ^5.2.2
version: 5.2.2(prettier@3.5.3)
'@types/node':
specifier: ^22.15.29
version: 22.15.29
specifier: ^22.15.31
version: 22.15.31
'@types/react':
specifier: ^19.1.6
version: 19.1.6
specifier: ^19.1.7
version: 19.1.7
'@types/react-dom':
specifier: ^19.1.6
version: 19.1.6(@types/react@19.1.6)
version: 19.1.6(@types/react@19.1.7)
concurrently:
specifier: ^9.1.2
version: 9.1.2
@@ -107,22 +107,22 @@ importers:
version: 3.5.3
rollup-plugin-visualizer:
specifier: ^5.14.0
version: 5.14.0(rollup@4.41.1)
version: 5.14.0(rollup@4.42.0)
terser:
specifier: ^5.41.0
version: 5.41.0
specifier: ^5.42.0
version: 5.42.0
typescript-eslint:
specifier: 8.32.1
version: 8.32.1(eslint@9.28.0)(typescript@5.8.3)
vite:
specifier: ^6.3.5
version: 6.3.5(@types/node@22.15.29)(terser@5.41.0)
version: 6.3.5(@types/node@22.15.31)(terser@5.42.0)
vite-plugin-imagemin:
specifier: ^0.6.1
version: 0.6.1(vite@6.3.5(@types/node@22.15.29)(terser@5.41.0))
version: 0.6.1(vite@6.3.5(@types/node@22.15.31)(terser@5.42.0))
vite-tsconfig-paths:
specifier: ^5.1.4
version: 5.1.4(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.29)(terser@5.41.0))
version: 5.1.4(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.31)(terser@5.42.0))
packages:
@@ -665,103 +665,103 @@ packages:
resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==}
engines: {node: '>= 8.0.0'}
'@rollup/rollup-android-arm-eabi@4.41.1':
resolution: {integrity: sha512-NELNvyEWZ6R9QMkiytB4/L4zSEaBC03KIXEghptLGLZWJ6VPrL63ooZQCOnlx36aQPGhzuOMwDerC1Eb2VmrLw==}
'@rollup/rollup-android-arm-eabi@4.42.0':
resolution: {integrity: sha512-gldmAyS9hpj+H6LpRNlcjQWbuKUtb94lodB9uCz71Jm+7BxK1VIOo7y62tZZwxhA7j1ylv/yQz080L5WkS+LoQ==}
cpu: [arm]
os: [android]
'@rollup/rollup-android-arm64@4.41.1':
resolution: {integrity: sha512-DXdQe1BJ6TK47ukAoZLehRHhfKnKg9BjnQYUu9gzhI8Mwa1d2fzxA1aw2JixHVl403bwp1+/o/NhhHtxWJBgEA==}
'@rollup/rollup-android-arm64@4.42.0':
resolution: {integrity: sha512-bpRipfTgmGFdCZDFLRvIkSNO1/3RGS74aWkJJTFJBH7h3MRV4UijkaEUeOMbi9wxtxYmtAbVcnMtHTPBhLEkaw==}
cpu: [arm64]
os: [android]
'@rollup/rollup-darwin-arm64@4.41.1':
resolution: {integrity: sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w==}
'@rollup/rollup-darwin-arm64@4.42.0':
resolution: {integrity: sha512-JxHtA081izPBVCHLKnl6GEA0w3920mlJPLh89NojpU2GsBSB6ypu4erFg/Wx1qbpUbepn0jY4dVWMGZM8gplgA==}
cpu: [arm64]
os: [darwin]
'@rollup/rollup-darwin-x64@4.41.1':
resolution: {integrity: sha512-egpJACny8QOdHNNMZKf8xY0Is6gIMz+tuqXlusxquWu3F833DcMwmGM7WlvCO9sB3OsPjdC4U0wHw5FabzCGZg==}
'@rollup/rollup-darwin-x64@4.42.0':
resolution: {integrity: sha512-rv5UZaWVIJTDMyQ3dCEK+m0SAn6G7H3PRc2AZmExvbDvtaDc+qXkei0knQWcI3+c9tEs7iL/4I4pTQoPbNL2SA==}
cpu: [x64]
os: [darwin]
'@rollup/rollup-freebsd-arm64@4.41.1':
resolution: {integrity: sha512-DBVMZH5vbjgRk3r0OzgjS38z+atlupJ7xfKIDJdZZL6sM6wjfDNo64aowcLPKIx7LMQi8vybB56uh1Ftck/Atg==}
'@rollup/rollup-freebsd-arm64@4.42.0':
resolution: {integrity: sha512-fJcN4uSGPWdpVmvLuMtALUFwCHgb2XiQjuECkHT3lWLZhSQ3MBQ9pq+WoWeJq2PrNxr9rPM1Qx+IjyGj8/c6zQ==}
cpu: [arm64]
os: [freebsd]
'@rollup/rollup-freebsd-x64@4.41.1':
resolution: {integrity: sha512-3FkydeohozEskBxNWEIbPfOE0aqQgB6ttTkJ159uWOFn42VLyfAiyD9UK5mhu+ItWzft60DycIN1Xdgiy8o/SA==}
'@rollup/rollup-freebsd-x64@4.42.0':
resolution: {integrity: sha512-CziHfyzpp8hJpCVE/ZdTizw58gr+m7Y2Xq5VOuCSrZR++th2xWAz4Nqk52MoIIrV3JHtVBhbBsJcAxs6NammOQ==}
cpu: [x64]
os: [freebsd]
'@rollup/rollup-linux-arm-gnueabihf@4.41.1':
resolution: {integrity: sha512-wC53ZNDgt0pqx5xCAgNunkTzFE8GTgdZ9EwYGVcg+jEjJdZGtq9xPjDnFgfFozQI/Xm1mh+D9YlYtl+ueswNEg==}
'@rollup/rollup-linux-arm-gnueabihf@4.42.0':
resolution: {integrity: sha512-UsQD5fyLWm2Fe5CDM7VPYAo+UC7+2Px4Y+N3AcPh/LdZu23YcuGPegQly++XEVaC8XUTFVPscl5y5Cl1twEI4A==}
cpu: [arm]
os: [linux]
'@rollup/rollup-linux-arm-musleabihf@4.41.1':
resolution: {integrity: sha512-jwKCca1gbZkZLhLRtsrka5N8sFAaxrGz/7wRJ8Wwvq3jug7toO21vWlViihG85ei7uJTpzbXZRcORotE+xyrLA==}
'@rollup/rollup-linux-arm-musleabihf@4.42.0':
resolution: {integrity: sha512-/i8NIrlgc/+4n1lnoWl1zgH7Uo0XK5xK3EDqVTf38KvyYgCU/Rm04+o1VvvzJZnVS5/cWSd07owkzcVasgfIkQ==}
cpu: [arm]
os: [linux]
'@rollup/rollup-linux-arm64-gnu@4.41.1':
resolution: {integrity: sha512-g0UBcNknsmmNQ8V2d/zD2P7WWfJKU0F1nu0k5pW4rvdb+BIqMm8ToluW/eeRmxCared5dD76lS04uL4UaNgpNA==}
'@rollup/rollup-linux-arm64-gnu@4.42.0':
resolution: {integrity: sha512-eoujJFOvoIBjZEi9hJnXAbWg+Vo1Ov8n/0IKZZcPZ7JhBzxh2A+2NFyeMZIRkY9iwBvSjloKgcvnjTbGKHE44Q==}
cpu: [arm64]
os: [linux]
'@rollup/rollup-linux-arm64-musl@4.41.1':
resolution: {integrity: sha512-XZpeGB5TKEZWzIrj7sXr+BEaSgo/ma/kCgrZgL0oo5qdB1JlTzIYQKel/RmhT6vMAvOdM2teYlAaOGJpJ9lahg==}
'@rollup/rollup-linux-arm64-musl@4.42.0':
resolution: {integrity: sha512-/3NrcOWFSR7RQUQIuZQChLND36aTU9IYE4j+TB40VU78S+RA0IiqHR30oSh6P1S9f9/wVOenHQnacs/Byb824g==}
cpu: [arm64]
os: [linux]
'@rollup/rollup-linux-loongarch64-gnu@4.41.1':
resolution: {integrity: sha512-bkCfDJ4qzWfFRCNt5RVV4DOw6KEgFTUZi2r2RuYhGWC8WhCA8lCAJhDeAmrM/fdiAH54m0mA0Vk2FGRPyzI+tw==}
'@rollup/rollup-linux-loongarch64-gnu@4.42.0':
resolution: {integrity: sha512-O8AplvIeavK5ABmZlKBq9/STdZlnQo7Sle0LLhVA7QT+CiGpNVe197/t8Aph9bhJqbDVGCHpY2i7QyfEDDStDg==}
cpu: [loong64]
os: [linux]
'@rollup/rollup-linux-powerpc64le-gnu@4.41.1':
resolution: {integrity: sha512-3mr3Xm+gvMX+/8EKogIZSIEF0WUu0HL9di+YWlJpO8CQBnoLAEL/roTCxuLncEdgcfJcvA4UMOf+2dnjl4Ut1A==}
'@rollup/rollup-linux-powerpc64le-gnu@4.42.0':
resolution: {integrity: sha512-6Qb66tbKVN7VyQrekhEzbHRxXXFFD8QKiFAwX5v9Xt6FiJ3BnCVBuyBxa2fkFGqxOCSGGYNejxd8ht+q5SnmtA==}
cpu: [ppc64]
os: [linux]
'@rollup/rollup-linux-riscv64-gnu@4.41.1':
resolution: {integrity: sha512-3rwCIh6MQ1LGrvKJitQjZFuQnT2wxfU+ivhNBzmxXTXPllewOF7JR1s2vMX/tWtUYFgphygxjqMl76q4aMotGw==}
'@rollup/rollup-linux-riscv64-gnu@4.42.0':
resolution: {integrity: sha512-KQETDSEBamQFvg/d8jajtRwLNBlGc3aKpaGiP/LvEbnmVUKlFta1vqJqTrvPtsYsfbE/DLg5CC9zyXRX3fnBiA==}
cpu: [riscv64]
os: [linux]
'@rollup/rollup-linux-riscv64-musl@4.41.1':
resolution: {integrity: sha512-LdIUOb3gvfmpkgFZuccNa2uYiqtgZAz3PTzjuM5bH3nvuy9ty6RGc/Q0+HDFrHrizJGVpjnTZ1yS5TNNjFlklw==}
'@rollup/rollup-linux-riscv64-musl@4.42.0':
resolution: {integrity: sha512-qMvnyjcU37sCo/tuC+JqeDKSuukGAd+pVlRl/oyDbkvPJ3awk6G6ua7tyum02O3lI+fio+eM5wsVd66X0jQtxw==}
cpu: [riscv64]
os: [linux]
'@rollup/rollup-linux-s390x-gnu@4.41.1':
resolution: {integrity: sha512-oIE6M8WC9ma6xYqjvPhzZYk6NbobIURvP/lEbh7FWplcMO6gn7MM2yHKA1eC/GvYwzNKK/1LYgqzdkZ8YFxR8g==}
'@rollup/rollup-linux-s390x-gnu@4.42.0':
resolution: {integrity: sha512-I2Y1ZUgTgU2RLddUHXTIgyrdOwljjkmcZ/VilvaEumtS3Fkuhbw4p4hgHc39Ypwvo2o7sBFNl2MquNvGCa55Iw==}
cpu: [s390x]
os: [linux]
'@rollup/rollup-linux-x64-gnu@4.41.1':
resolution: {integrity: sha512-cWBOvayNvA+SyeQMp79BHPK8ws6sHSsYnK5zDcsC3Hsxr1dgTABKjMnMslPq1DvZIp6uO7kIWhiGwaTdR4Og9A==}
'@rollup/rollup-linux-x64-gnu@4.42.0':
resolution: {integrity: sha512-Gfm6cV6mj3hCUY8TqWa63DB8Mx3NADoFwiJrMpoZ1uESbK8FQV3LXkhfry+8bOniq9pqY1OdsjFWNsSbfjPugw==}
cpu: [x64]
os: [linux]
'@rollup/rollup-linux-x64-musl@4.41.1':
resolution: {integrity: sha512-y5CbN44M+pUCdGDlZFzGGBSKCA4A/J2ZH4edTYSSxFg7ce1Xt3GtydbVKWLlzL+INfFIZAEg1ZV6hh9+QQf9YQ==}
'@rollup/rollup-linux-x64-musl@4.42.0':
resolution: {integrity: sha512-g86PF8YZ9GRqkdi0VoGlcDUb4rYtQKyTD1IVtxxN4Hpe7YqLBShA7oHMKU6oKTCi3uxwW4VkIGnOaH/El8de3w==}
cpu: [x64]
os: [linux]
'@rollup/rollup-win32-arm64-msvc@4.41.1':
resolution: {integrity: sha512-lZkCxIrjlJlMt1dLO/FbpZbzt6J/A8p4DnqzSa4PWqPEUUUnzXLeki/iyPLfV0BmHItlYgHUqJe+3KiyydmiNQ==}
'@rollup/rollup-win32-arm64-msvc@4.42.0':
resolution: {integrity: sha512-+axkdyDGSp6hjyzQ5m1pgcvQScfHnMCcsXkx8pTgy/6qBmWVhtRVlgxjWwDp67wEXXUr0x+vD6tp5W4x6V7u1A==}
cpu: [arm64]
os: [win32]
'@rollup/rollup-win32-ia32-msvc@4.41.1':
resolution: {integrity: sha512-+psFT9+pIh2iuGsxFYYa/LhS5MFKmuivRsx9iPJWNSGbh2XVEjk90fmpUEjCnILPEPJnikAU6SFDiEUyOv90Pg==}
'@rollup/rollup-win32-ia32-msvc@4.42.0':
resolution: {integrity: sha512-F+5J9pelstXKwRSDq92J0TEBXn2nfUrQGg+HK1+Tk7VOL09e0gBqUHugZv7SW4MGrYj41oNCUe3IKCDGVlis2g==}
cpu: [ia32]
os: [win32]
'@rollup/rollup-win32-x64-msvc@4.41.1':
resolution: {integrity: sha512-Wq2zpapRYLfi4aKxf2Xff0tN+7slj2d4R87WEzqw7ZLsVvO5zwYCIuEGSZYiK41+GlwUo1HiR+GdkLEJnCKTCw==}
'@rollup/rollup-win32-x64-msvc@4.42.0':
resolution: {integrity: sha512-LpHiJRwkaVz/LqjHjK8LCi8osq7elmpwujwbXKNW88bM8eeGxavJIKKjkjpMHAh/2xfnrt1ZSnhTv41WYUHYmA==}
cpu: [x64]
os: [win32]
@@ -799,6 +799,9 @@ packages:
'@types/estree@1.0.7':
resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==}
'@types/estree@1.0.8':
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
'@types/glob@7.2.0':
resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==}
@@ -832,14 +835,14 @@ packages:
'@types/minimatch@5.1.2':
resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==}
'@types/node@22.15.29':
resolution: {integrity: sha512-LNdjOkUDlU1RZb8e1kOIUpN1qQUlzGkEtbVNo53vbrwDg5om6oduhm4SiUaPW5ASTXhAiP0jInWG8Qx9fVlOeQ==}
'@types/node@22.15.31':
resolution: {integrity: sha512-jnVe5ULKl6tijxUhvQeNbQG/84fHfg+yMak02cT8QVhBx/F05rAVxCGBYYTh2EKz22D6JF5ktXuNwdx7b9iEGw==}
'@types/parse-json@4.0.2':
resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
'@types/prop-types@15.7.14':
resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==}
'@types/prop-types@15.7.15':
resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==}
'@types/react-dom@19.1.6':
resolution: {integrity: sha512-4hOiT/dwO8Ko0gV1m/TJZYk3y0KBnY9vzDh7W+DH17b2HFSOGgdj33dhihPeuy3l0q23+4e+hoXHV6hCC4dCXw==}
@@ -851,8 +854,8 @@ packages:
peerDependencies:
'@types/react': '*'
'@types/react@19.1.6':
resolution: {integrity: sha512-JeG0rEWak0N6Itr6QUx+X60uQmN+5t3j9r/OVDtWzFXKaj6kD1BwJzOksD0FF6iWxZlbE1kB0q9vtnU2ekqa1Q==}
'@types/react@19.1.7':
resolution: {integrity: sha512-BnsPLV43ddr05N71gaGzyZ5hzkCmGwhMvYc8zmvI8Ci1bRkkDSzDDVfAXfN2tk748OwI7ediiPX6PfT9p0QGVg==}
'@types/responselike@1.0.3':
resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==}
@@ -912,8 +915,8 @@ packages:
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
acorn@8.14.1:
resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==}
acorn@8.15.0:
resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
engines: {node: '>=0.4.0'}
hasBin: true
@@ -1265,8 +1268,8 @@ packages:
duplexer3@0.1.5:
resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==}
electron-to-chromium@1.5.165:
resolution: {integrity: sha512-naiMx1Z6Nb2TxPU6fiFrUrDTjyPMLdTtaOd2oLmG8zVSg2hCWGkhPyxwk+qRmZ1ytwVqUv0u7ZcDA5+ALhaUtw==}
electron-to-chromium@1.5.166:
resolution: {integrity: sha512-QPWqHL0BglzPYyJJ1zSSmwFFL6MFXhbACOCcsCdUMCkzPdS9/OIBVxg516X/Ado2qwAq8k0nJJ7phQPCqiaFAw==}
emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
@@ -1432,16 +1435,16 @@ packages:
peerDependencies:
eslint: '>=7.0.0'
eslint-scope@8.3.0:
resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==}
eslint-scope@8.4.0:
resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
eslint-visitor-keys@3.4.3:
resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
eslint-visitor-keys@4.2.0:
resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==}
eslint-visitor-keys@4.2.1:
resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
eslint@9.28.0:
@@ -1454,8 +1457,8 @@ packages:
jiti:
optional: true
espree@10.3.0:
resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==}
espree@10.4.0:
resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
esquery@1.6.0:
@@ -1532,8 +1535,8 @@ packages:
fd-slicer@1.1.0:
resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==}
fdir@6.4.5:
resolution: {integrity: sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==}
fdir@6.4.6:
resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==}
peerDependencies:
picomatch: ^3 || ^4
peerDependenciesMeta:
@@ -2487,8 +2490,8 @@ packages:
rollup:
optional: true
rollup@4.41.1:
resolution: {integrity: sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==}
rollup@4.42.0:
resolution: {integrity: sha512-LW+Vse3BJPyGJGAJt1j8pWDKPd73QM8cRXYK1IxOBgL2AGLu7Xd2YOW0M2sLUBCkF5MshXXtMApyEAEzMVMsnw==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
@@ -2706,8 +2709,8 @@ packages:
resolution: {integrity: sha512-ZOn6nJUgvgC09+doCEF3oB+r3ag7kUvlsXEGX069QRD60p+P3uP7XG9N2/at+EyIRGSN//ZY3LyEotA1YpmjuA==}
engines: {node: '>=4'}
terser@5.41.0:
resolution: {integrity: sha512-H406eLPXpZbAX14+B8psIuvIr8+3c+2hkuYzpMkoE0ij+NdsVATbA78vb8neA/eqrj7rywa2pIkdmWRsXW6wmw==}
terser@5.42.0:
resolution: {integrity: sha512-UYCvU9YQW2f/Vwl+P0GfhxJxbUGLwd+5QrrGgLajzWAtC/23AX0vcise32kkP7Eu0Wu9VlzzHAXkLObgjQfFlQ==}
engines: {node: '>=10'}
hasBin: true
@@ -3117,7 +3120,7 @@ snapshots:
'@emotion/memoize@0.9.0': {}
'@emotion/react@11.14.0(@types/react@19.1.6)(react@19.1.0)':
'@emotion/react@11.14.0(@types/react@19.1.7)(react@19.1.0)':
dependencies:
'@babel/runtime': 7.27.6
'@emotion/babel-plugin': 11.13.5
@@ -3129,7 +3132,7 @@ snapshots:
hoist-non-react-statics: 3.3.2
react: 19.1.0
optionalDependencies:
'@types/react': 19.1.6
'@types/react': 19.1.7
transitivePeerDependencies:
- supports-color
@@ -3143,18 +3146,18 @@ snapshots:
'@emotion/sheet@1.4.0': {}
'@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.6)(react@19.1.0))(@types/react@19.1.6)(react@19.1.0)':
'@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.7)(react@19.1.0))(@types/react@19.1.7)(react@19.1.0)':
dependencies:
'@babel/runtime': 7.27.6
'@emotion/babel-plugin': 11.13.5
'@emotion/is-prop-valid': 1.3.1
'@emotion/react': 11.14.0(@types/react@19.1.6)(react@19.1.0)
'@emotion/react': 11.14.0(@types/react@19.1.7)(react@19.1.0)
'@emotion/serialize': 1.3.3
'@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.1.0)
'@emotion/utils': 1.4.2
react: 19.1.0
optionalDependencies:
'@types/react': 19.1.6
'@types/react': 19.1.7
transitivePeerDependencies:
- supports-color
@@ -3271,7 +3274,7 @@ snapshots:
dependencies:
ajv: 6.12.6
debug: 4.4.1
espree: 10.3.0
espree: 10.4.0
globals: 14.0.0
ignore: 5.3.2
import-fresh: 3.3.1
@@ -3327,23 +3330,23 @@ snapshots:
'@mui/core-downloads-tracker@7.1.1': {}
'@mui/icons-material@7.1.1(@mui/material@7.1.1(@emotion/react@11.14.0(@types/react@19.1.6)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.6)(react@19.1.0))(@types/react@19.1.6)(react@19.1.0))(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@types/react@19.1.6)(react@19.1.0)':
'@mui/icons-material@7.1.1(@mui/material@7.1.1(@emotion/react@11.14.0(@types/react@19.1.7)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.7)(react@19.1.0))(@types/react@19.1.7)(react@19.1.0))(@types/react@19.1.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@types/react@19.1.7)(react@19.1.0)':
dependencies:
'@babel/runtime': 7.27.6
'@mui/material': 7.1.1(@emotion/react@11.14.0(@types/react@19.1.6)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.6)(react@19.1.0))(@types/react@19.1.6)(react@19.1.0))(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@mui/material': 7.1.1(@emotion/react@11.14.0(@types/react@19.1.7)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.7)(react@19.1.0))(@types/react@19.1.7)(react@19.1.0))(@types/react@19.1.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
react: 19.1.0
optionalDependencies:
'@types/react': 19.1.6
'@types/react': 19.1.7
'@mui/material@7.1.1(@emotion/react@11.14.0(@types/react@19.1.6)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.6)(react@19.1.0))(@types/react@19.1.6)(react@19.1.0))(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
'@mui/material@7.1.1(@emotion/react@11.14.0(@types/react@19.1.7)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.7)(react@19.1.0))(@types/react@19.1.7)(react@19.1.0))(@types/react@19.1.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
dependencies:
'@babel/runtime': 7.27.6
'@mui/core-downloads-tracker': 7.1.1
'@mui/system': 7.1.1(@emotion/react@11.14.0(@types/react@19.1.6)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.6)(react@19.1.0))(@types/react@19.1.6)(react@19.1.0))(@types/react@19.1.6)(react@19.1.0)
'@mui/types': 7.4.3(@types/react@19.1.6)
'@mui/utils': 7.1.1(@types/react@19.1.6)(react@19.1.0)
'@mui/system': 7.1.1(@emotion/react@11.14.0(@types/react@19.1.7)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.7)(react@19.1.0))(@types/react@19.1.7)(react@19.1.0))(@types/react@19.1.7)(react@19.1.0)
'@mui/types': 7.4.3(@types/react@19.1.7)
'@mui/utils': 7.1.1(@types/react@19.1.7)(react@19.1.0)
'@popperjs/core': 2.11.8
'@types/react-transition-group': 4.4.12(@types/react@19.1.6)
'@types/react-transition-group': 4.4.12(@types/react@19.1.7)
clsx: 2.1.1
csstype: 3.1.3
prop-types: 15.8.1
@@ -3352,20 +3355,20 @@ snapshots:
react-is: 19.1.0
react-transition-group: 4.4.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
optionalDependencies:
'@emotion/react': 11.14.0(@types/react@19.1.6)(react@19.1.0)
'@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.1.6)(react@19.1.0))(@types/react@19.1.6)(react@19.1.0)
'@types/react': 19.1.6
'@emotion/react': 11.14.0(@types/react@19.1.7)(react@19.1.0)
'@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.1.7)(react@19.1.0))(@types/react@19.1.7)(react@19.1.0)
'@types/react': 19.1.7
'@mui/private-theming@7.1.1(@types/react@19.1.6)(react@19.1.0)':
'@mui/private-theming@7.1.1(@types/react@19.1.7)(react@19.1.0)':
dependencies:
'@babel/runtime': 7.27.6
'@mui/utils': 7.1.1(@types/react@19.1.6)(react@19.1.0)
'@mui/utils': 7.1.1(@types/react@19.1.7)(react@19.1.0)
prop-types: 15.8.1
react: 19.1.0
optionalDependencies:
'@types/react': 19.1.6
'@types/react': 19.1.7
'@mui/styled-engine@7.1.1(@emotion/react@11.14.0(@types/react@19.1.6)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.6)(react@19.1.0))(@types/react@19.1.6)(react@19.1.0))(react@19.1.0)':
'@mui/styled-engine@7.1.1(@emotion/react@11.14.0(@types/react@19.1.7)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.7)(react@19.1.0))(@types/react@19.1.7)(react@19.1.0))(react@19.1.0)':
dependencies:
'@babel/runtime': 7.27.6
'@emotion/cache': 11.14.0
@@ -3375,42 +3378,42 @@ snapshots:
prop-types: 15.8.1
react: 19.1.0
optionalDependencies:
'@emotion/react': 11.14.0(@types/react@19.1.6)(react@19.1.0)
'@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.1.6)(react@19.1.0))(@types/react@19.1.6)(react@19.1.0)
'@emotion/react': 11.14.0(@types/react@19.1.7)(react@19.1.0)
'@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.1.7)(react@19.1.0))(@types/react@19.1.7)(react@19.1.0)
'@mui/system@7.1.1(@emotion/react@11.14.0(@types/react@19.1.6)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.6)(react@19.1.0))(@types/react@19.1.6)(react@19.1.0))(@types/react@19.1.6)(react@19.1.0)':
'@mui/system@7.1.1(@emotion/react@11.14.0(@types/react@19.1.7)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.7)(react@19.1.0))(@types/react@19.1.7)(react@19.1.0))(@types/react@19.1.7)(react@19.1.0)':
dependencies:
'@babel/runtime': 7.27.6
'@mui/private-theming': 7.1.1(@types/react@19.1.6)(react@19.1.0)
'@mui/styled-engine': 7.1.1(@emotion/react@11.14.0(@types/react@19.1.6)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.6)(react@19.1.0))(@types/react@19.1.6)(react@19.1.0))(react@19.1.0)
'@mui/types': 7.4.3(@types/react@19.1.6)
'@mui/utils': 7.1.1(@types/react@19.1.6)(react@19.1.0)
'@mui/private-theming': 7.1.1(@types/react@19.1.7)(react@19.1.0)
'@mui/styled-engine': 7.1.1(@emotion/react@11.14.0(@types/react@19.1.7)(react@19.1.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.7)(react@19.1.0))(@types/react@19.1.7)(react@19.1.0))(react@19.1.0)
'@mui/types': 7.4.3(@types/react@19.1.7)
'@mui/utils': 7.1.1(@types/react@19.1.7)(react@19.1.0)
clsx: 2.1.1
csstype: 3.1.3
prop-types: 15.8.1
react: 19.1.0
optionalDependencies:
'@emotion/react': 11.14.0(@types/react@19.1.6)(react@19.1.0)
'@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.1.6)(react@19.1.0))(@types/react@19.1.6)(react@19.1.0)
'@types/react': 19.1.6
'@emotion/react': 11.14.0(@types/react@19.1.7)(react@19.1.0)
'@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.1.7)(react@19.1.0))(@types/react@19.1.7)(react@19.1.0)
'@types/react': 19.1.7
'@mui/types@7.4.3(@types/react@19.1.6)':
'@mui/types@7.4.3(@types/react@19.1.7)':
dependencies:
'@babel/runtime': 7.27.6
optionalDependencies:
'@types/react': 19.1.6
'@types/react': 19.1.7
'@mui/utils@7.1.1(@types/react@19.1.6)(react@19.1.0)':
'@mui/utils@7.1.1(@types/react@19.1.7)(react@19.1.0)':
dependencies:
'@babel/runtime': 7.27.6
'@mui/types': 7.4.3(@types/react@19.1.6)
'@types/prop-types': 15.7.14
'@mui/types': 7.4.3(@types/react@19.1.7)
'@types/prop-types': 15.7.15
clsx: 2.1.1
prop-types: 15.8.1
react: 19.1.0
react-is: 19.1.0
optionalDependencies:
'@types/react': 19.1.6
'@types/react': 19.1.7
'@noble/hashes@1.8.0': {}
@@ -3436,18 +3439,18 @@ snapshots:
dependencies:
preact: 10.26.8
'@preact/preset-vite@2.10.1(@babel/core@7.27.4)(preact@10.26.8)(vite@6.3.5(@types/node@22.15.29)(terser@5.41.0))':
'@preact/preset-vite@2.10.1(@babel/core@7.27.4)(preact@10.26.8)(vite@6.3.5(@types/node@22.15.31)(terser@5.42.0))':
dependencies:
'@babel/core': 7.27.4
'@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.27.4)
'@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.27.4)
'@prefresh/vite': 2.4.7(preact@10.26.8)(vite@6.3.5(@types/node@22.15.29)(terser@5.41.0))
'@prefresh/vite': 2.4.7(preact@10.26.8)(vite@6.3.5(@types/node@22.15.31)(terser@5.42.0))
'@rollup/pluginutils': 4.2.1
babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.27.4)
debug: 4.4.1
kolorist: 1.8.0
vite: 6.3.5(@types/node@22.15.29)(terser@5.41.0)
vite-prerender-plugin: 0.5.10(vite@6.3.5(@types/node@22.15.29)(terser@5.41.0))
vite: 6.3.5(@types/node@22.15.31)(terser@5.42.0)
vite-prerender-plugin: 0.5.10(vite@6.3.5(@types/node@22.15.31)(terser@5.42.0))
transitivePeerDependencies:
- preact
- supports-color
@@ -3460,7 +3463,7 @@ snapshots:
'@prefresh/utils@1.2.0': {}
'@prefresh/vite@2.4.7(preact@10.26.8)(vite@6.3.5(@types/node@22.15.29)(terser@5.41.0))':
'@prefresh/vite@2.4.7(preact@10.26.8)(vite@6.3.5(@types/node@22.15.31)(terser@5.42.0))':
dependencies:
'@babel/core': 7.27.4
'@prefresh/babel-plugin': 0.5.1
@@ -3468,7 +3471,7 @@ snapshots:
'@prefresh/utils': 1.2.0
'@rollup/pluginutils': 4.2.1
preact: 10.26.8
vite: 6.3.5(@types/node@22.15.29)(terser@5.41.0)
vite: 6.3.5(@types/node@22.15.31)(terser@5.42.0)
transitivePeerDependencies:
- supports-color
@@ -3477,71 +3480,71 @@ snapshots:
estree-walker: 2.0.2
picomatch: 2.3.1
'@rollup/rollup-android-arm-eabi@4.41.1':
'@rollup/rollup-android-arm-eabi@4.42.0':
optional: true
'@rollup/rollup-android-arm64@4.41.1':
'@rollup/rollup-android-arm64@4.42.0':
optional: true
'@rollup/rollup-darwin-arm64@4.41.1':
'@rollup/rollup-darwin-arm64@4.42.0':
optional: true
'@rollup/rollup-darwin-x64@4.41.1':
'@rollup/rollup-darwin-x64@4.42.0':
optional: true
'@rollup/rollup-freebsd-arm64@4.41.1':
'@rollup/rollup-freebsd-arm64@4.42.0':
optional: true
'@rollup/rollup-freebsd-x64@4.41.1':
'@rollup/rollup-freebsd-x64@4.42.0':
optional: true
'@rollup/rollup-linux-arm-gnueabihf@4.41.1':
'@rollup/rollup-linux-arm-gnueabihf@4.42.0':
optional: true
'@rollup/rollup-linux-arm-musleabihf@4.41.1':
'@rollup/rollup-linux-arm-musleabihf@4.42.0':
optional: true
'@rollup/rollup-linux-arm64-gnu@4.41.1':
'@rollup/rollup-linux-arm64-gnu@4.42.0':
optional: true
'@rollup/rollup-linux-arm64-musl@4.41.1':
'@rollup/rollup-linux-arm64-musl@4.42.0':
optional: true
'@rollup/rollup-linux-loongarch64-gnu@4.41.1':
'@rollup/rollup-linux-loongarch64-gnu@4.42.0':
optional: true
'@rollup/rollup-linux-powerpc64le-gnu@4.41.1':
'@rollup/rollup-linux-powerpc64le-gnu@4.42.0':
optional: true
'@rollup/rollup-linux-riscv64-gnu@4.41.1':
'@rollup/rollup-linux-riscv64-gnu@4.42.0':
optional: true
'@rollup/rollup-linux-riscv64-musl@4.41.1':
'@rollup/rollup-linux-riscv64-musl@4.42.0':
optional: true
'@rollup/rollup-linux-s390x-gnu@4.41.1':
'@rollup/rollup-linux-s390x-gnu@4.42.0':
optional: true
'@rollup/rollup-linux-x64-gnu@4.41.1':
'@rollup/rollup-linux-x64-gnu@4.42.0':
optional: true
'@rollup/rollup-linux-x64-musl@4.41.1':
'@rollup/rollup-linux-x64-musl@4.42.0':
optional: true
'@rollup/rollup-win32-arm64-msvc@4.41.1':
'@rollup/rollup-win32-arm64-msvc@4.42.0':
optional: true
'@rollup/rollup-win32-ia32-msvc@4.41.1':
'@rollup/rollup-win32-ia32-msvc@4.42.0':
optional: true
'@rollup/rollup-win32-x64-msvc@4.41.1':
'@rollup/rollup-win32-x64-msvc@4.42.0':
optional: true
'@sindresorhus/is@0.7.0': {}
'@table-library/react-table-library@4.1.15(@emotion/react@11.14.0(@types/react@19.1.6)(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
'@table-library/react-table-library@4.1.15(@emotion/react@11.14.0(@types/react@19.1.7)(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
dependencies:
'@emotion/react': 11.14.0(@types/react@19.1.6)(react@19.1.0)
'@emotion/react': 11.14.0(@types/react@19.1.7)(react@19.1.0)
clsx: 1.1.1
react: 19.1.0
react-dom: 19.1.0(react@19.1.0)
@@ -3564,10 +3567,12 @@ snapshots:
'@types/estree@1.0.7': {}
'@types/estree@1.0.8': {}
'@types/glob@7.2.0':
dependencies:
'@types/minimatch': 5.1.2
'@types/node': 22.15.29
'@types/node': 22.15.31
'@types/imagemin-gifsicle@7.0.4':
dependencies:
@@ -3596,43 +3601,43 @@ snapshots:
'@types/imagemin@7.0.1':
dependencies:
'@types/node': 22.15.29
'@types/node': 22.15.31
'@types/json-schema@7.0.15': {}
'@types/keyv@3.1.4':
dependencies:
'@types/node': 22.15.29
'@types/node': 22.15.31
'@types/minimatch@5.1.2': {}
'@types/node@22.15.29':
'@types/node@22.15.31':
dependencies:
undici-types: 6.21.0
'@types/parse-json@4.0.2': {}
'@types/prop-types@15.7.14': {}
'@types/prop-types@15.7.15': {}
'@types/react-dom@19.1.6(@types/react@19.1.6)':
'@types/react-dom@19.1.6(@types/react@19.1.7)':
dependencies:
'@types/react': 19.1.6
'@types/react': 19.1.7
'@types/react-transition-group@4.4.12(@types/react@19.1.6)':
'@types/react-transition-group@4.4.12(@types/react@19.1.7)':
dependencies:
'@types/react': 19.1.6
'@types/react': 19.1.7
'@types/react@19.1.6':
'@types/react@19.1.7':
dependencies:
csstype: 3.1.3
'@types/responselike@1.0.3':
dependencies:
'@types/node': 22.15.29
'@types/node': 22.15.31
'@types/svgo@2.6.4':
dependencies:
'@types/node': 22.15.29
'@types/node': 22.15.31
'@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.28.0)(typescript@5.8.3))(eslint@9.28.0)(typescript@5.8.3)':
dependencies:
@@ -3709,13 +3714,13 @@ snapshots:
'@typescript-eslint/visitor-keys@8.32.1':
dependencies:
'@typescript-eslint/types': 8.32.1
eslint-visitor-keys: 4.2.0
eslint-visitor-keys: 4.2.1
acorn-jsx@5.3.2(acorn@8.14.1):
acorn-jsx@5.3.2(acorn@8.15.0):
dependencies:
acorn: 8.14.1
acorn: 8.15.0
acorn@8.14.1: {}
acorn@8.15.0: {}
ajv@6.12.6:
dependencies:
@@ -3825,7 +3830,7 @@ snapshots:
browserslist@4.25.0:
dependencies:
caniuse-lite: 1.0.30001721
electron-to-chromium: 1.5.165
electron-to-chromium: 1.5.166
node-releases: 2.0.19
update-browserslist-db: 1.1.3(browserslist@4.25.0)
@@ -4142,7 +4147,7 @@ snapshots:
duplexer3@0.1.5: {}
electron-to-chromium@1.5.165: {}
electron-to-chromium@1.5.166: {}
emoji-regex@8.0.0: {}
@@ -4280,14 +4285,14 @@ snapshots:
dependencies:
eslint: 9.28.0
eslint-scope@8.3.0:
eslint-scope@8.4.0:
dependencies:
esrecurse: 4.3.0
estraverse: 5.3.0
eslint-visitor-keys@3.4.3: {}
eslint-visitor-keys@4.2.0: {}
eslint-visitor-keys@4.2.1: {}
eslint@9.28.0:
dependencies:
@@ -4302,16 +4307,16 @@ snapshots:
'@humanfs/node': 0.16.6
'@humanwhocodes/module-importer': 1.0.1
'@humanwhocodes/retry': 0.4.3
'@types/estree': 1.0.7
'@types/estree': 1.0.8
'@types/json-schema': 7.0.15
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.6
debug: 4.4.1
escape-string-regexp: 4.0.0
eslint-scope: 8.3.0
eslint-visitor-keys: 4.2.0
espree: 10.3.0
eslint-scope: 8.4.0
eslint-visitor-keys: 4.2.1
espree: 10.4.0
esquery: 1.6.0
esutils: 2.0.3
fast-deep-equal: 3.1.3
@@ -4329,11 +4334,11 @@ snapshots:
transitivePeerDependencies:
- supports-color
espree@10.3.0:
espree@10.4.0:
dependencies:
acorn: 8.14.1
acorn-jsx: 5.3.2(acorn@8.14.1)
eslint-visitor-keys: 4.2.0
acorn: 8.15.0
acorn-jsx: 5.3.2(acorn@8.15.0)
eslint-visitor-keys: 4.2.1
esquery@1.6.0:
dependencies:
@@ -4440,7 +4445,7 @@ snapshots:
dependencies:
pend: 1.2.0
fdir@6.4.5(picomatch@4.0.2):
fdir@6.4.6(picomatch@4.0.2):
optionalDependencies:
picomatch: 4.0.2
@@ -5332,39 +5337,39 @@ snapshots:
dependencies:
glob: 7.2.3
rollup-plugin-visualizer@5.14.0(rollup@4.41.1):
rollup-plugin-visualizer@5.14.0(rollup@4.42.0):
dependencies:
open: 8.4.2
picomatch: 4.0.2
source-map: 0.7.4
yargs: 17.7.2
optionalDependencies:
rollup: 4.41.1
rollup: 4.42.0
rollup@4.41.1:
rollup@4.42.0:
dependencies:
'@types/estree': 1.0.7
optionalDependencies:
'@rollup/rollup-android-arm-eabi': 4.41.1
'@rollup/rollup-android-arm64': 4.41.1
'@rollup/rollup-darwin-arm64': 4.41.1
'@rollup/rollup-darwin-x64': 4.41.1
'@rollup/rollup-freebsd-arm64': 4.41.1
'@rollup/rollup-freebsd-x64': 4.41.1
'@rollup/rollup-linux-arm-gnueabihf': 4.41.1
'@rollup/rollup-linux-arm-musleabihf': 4.41.1
'@rollup/rollup-linux-arm64-gnu': 4.41.1
'@rollup/rollup-linux-arm64-musl': 4.41.1
'@rollup/rollup-linux-loongarch64-gnu': 4.41.1
'@rollup/rollup-linux-powerpc64le-gnu': 4.41.1
'@rollup/rollup-linux-riscv64-gnu': 4.41.1
'@rollup/rollup-linux-riscv64-musl': 4.41.1
'@rollup/rollup-linux-s390x-gnu': 4.41.1
'@rollup/rollup-linux-x64-gnu': 4.41.1
'@rollup/rollup-linux-x64-musl': 4.41.1
'@rollup/rollup-win32-arm64-msvc': 4.41.1
'@rollup/rollup-win32-ia32-msvc': 4.41.1
'@rollup/rollup-win32-x64-msvc': 4.41.1
'@rollup/rollup-android-arm-eabi': 4.42.0
'@rollup/rollup-android-arm64': 4.42.0
'@rollup/rollup-darwin-arm64': 4.42.0
'@rollup/rollup-darwin-x64': 4.42.0
'@rollup/rollup-freebsd-arm64': 4.42.0
'@rollup/rollup-freebsd-x64': 4.42.0
'@rollup/rollup-linux-arm-gnueabihf': 4.42.0
'@rollup/rollup-linux-arm-musleabihf': 4.42.0
'@rollup/rollup-linux-arm64-gnu': 4.42.0
'@rollup/rollup-linux-arm64-musl': 4.42.0
'@rollup/rollup-linux-loongarch64-gnu': 4.42.0
'@rollup/rollup-linux-powerpc64le-gnu': 4.42.0
'@rollup/rollup-linux-riscv64-gnu': 4.42.0
'@rollup/rollup-linux-riscv64-musl': 4.42.0
'@rollup/rollup-linux-s390x-gnu': 4.42.0
'@rollup/rollup-linux-x64-gnu': 4.42.0
'@rollup/rollup-linux-x64-musl': 4.42.0
'@rollup/rollup-win32-arm64-msvc': 4.42.0
'@rollup/rollup-win32-ia32-msvc': 4.42.0
'@rollup/rollup-win32-x64-msvc': 4.42.0
fsevents: 2.3.3
run-parallel@1.2.0:
@@ -5555,10 +5560,10 @@ snapshots:
temp-dir: 1.0.0
uuid: 3.4.0
terser@5.41.0:
terser@5.42.0:
dependencies:
'@jridgewell/source-map': 0.3.6
acorn: 8.14.1
acorn: 8.15.0
commander: 2.20.3
source-map-support: 0.5.21
@@ -5568,7 +5573,7 @@ snapshots:
tinyglobby@0.2.14:
dependencies:
fdir: 6.4.5(picomatch@4.0.2)
fdir: 6.4.6(picomatch@4.0.2)
picomatch: 4.0.2
to-buffer@1.1.1: {}
@@ -5659,7 +5664,7 @@ snapshots:
spdx-correct: 3.2.0
spdx-expression-parse: 3.0.1
vite-plugin-imagemin@0.6.1(vite@6.3.5(@types/node@22.15.29)(terser@5.41.0)):
vite-plugin-imagemin@0.6.1(vite@6.3.5(@types/node@22.15.31)(terser@5.42.0)):
dependencies:
'@types/imagemin': 7.0.1
'@types/imagemin-gifsicle': 7.0.4
@@ -5684,11 +5689,11 @@ snapshots:
imagemin-webp: 6.1.0
jpegtran-bin: 6.0.1
pathe: 0.2.0
vite: 6.3.5(@types/node@22.15.29)(terser@5.41.0)
vite: 6.3.5(@types/node@22.15.31)(terser@5.42.0)
transitivePeerDependencies:
- supports-color
vite-prerender-plugin@0.5.10(vite@6.3.5(@types/node@22.15.29)(terser@5.41.0)):
vite-prerender-plugin@0.5.10(vite@6.3.5(@types/node@22.15.31)(terser@5.42.0)):
dependencies:
kolorist: 1.8.0
magic-string: 0.30.17
@@ -5696,31 +5701,31 @@ snapshots:
simple-code-frame: 1.3.0
source-map: 0.7.4
stack-trace: 1.0.0-pre2
vite: 6.3.5(@types/node@22.15.29)(terser@5.41.0)
vite: 6.3.5(@types/node@22.15.31)(terser@5.42.0)
vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.29)(terser@5.41.0)):
vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.31)(terser@5.42.0)):
dependencies:
debug: 4.4.1
globrex: 0.1.2
tsconfck: 3.1.6(typescript@5.8.3)
optionalDependencies:
vite: 6.3.5(@types/node@22.15.29)(terser@5.41.0)
vite: 6.3.5(@types/node@22.15.31)(terser@5.42.0)
transitivePeerDependencies:
- supports-color
- typescript
vite@6.3.5(@types/node@22.15.29)(terser@5.41.0):
vite@6.3.5(@types/node@22.15.31)(terser@5.42.0):
dependencies:
esbuild: 0.25.5
fdir: 6.4.5(picomatch@4.0.2)
fdir: 6.4.6(picomatch@4.0.2)
picomatch: 4.0.2
postcss: 8.5.4
rollup: 4.41.1
rollup: 4.42.0
tinyglobby: 0.2.14
optionalDependencies:
'@types/node': 22.15.29
'@types/node': 22.15.31
fsevents: 2.3.3
terser: 5.41.0
terser: 5.42.0
which@1.3.1:
dependencies:

View File

@@ -308,9 +308,9 @@ const fr: Translation = {
ON: 'On',
OFF: 'Off',
POLARITY: 'Polarity',
ACTIVEHIGH: 'Active High',
ACTIVELOW: 'Active Low',
UNCHANGED: 'Unchanged',
ACTIVEHIGH: 'Actif haut',
ACTIVELOW: 'Actif bas',
UNCHANGED: 'Inchangé',
ALWAYS: 'Toujours',
ACTIVITY: 'Activité',
CONFIGURE: 'Configurer {0}',
@@ -330,28 +330,28 @@ const fr: Translation = {
SERVICES: 'Services',
ALLVALUES: 'Toutes les valeurs',
SPECIAL_FUNCTIONS: 'Fonctions spéciales',
WAIT_FIRMWARE: 'Firmware is uploading and installing',
INSTALL_VERSION: 'This will {0} version {1}. Are you sure?',
UPDATE_AVAILABLE: 'update available',
LATEST_VERSION: 'You are using the latest {0} firmware version',
PLEASE_WAIT: 'Please wait',
RESTARTING_PRE: 'Initializing',
RESTARTING_POST: 'Preparing',
AUTO_SCROLL: 'Auto Scroll',
DASHBOARD: 'Dashboard',
WAIT_FIRMWARE: 'Firmware en cours de téléchargement et d\'installation',
INSTALL_VERSION: 'Cela va {0} la version {1}. Êtes-vous sûr ?',
UPDATE_AVAILABLE: 'mise à jour disponible',
LATEST_VERSION: 'Vous utilisez la dernière version {0} du firmware',
PLEASE_WAIT: 'Veuillez patienter',
RESTARTING_PRE: 'Initialisation',
RESTARTING_POST: 'Préparation',
AUTO_SCROLL: 'Défilement automatique',
DASHBOARD: 'Tableau de bord',
DEVELOPER_MODE: 'Mode développeur',
BYTES: 'Bytes',
BITMASK: 'Bit Mask',
DUPLICATE: 'Duplicate',
DASHBOARD_1: 'All EMS entities that are active and marked as Favorite, plus all Custom Entities, Schedules and external Sensors data are displayed below.',
NO_DATA_1: 'No favorite EMS entities found yet. Use the',
NO_DATA_2: 'module to mark them.',
NO_DATA_3: 'To see all available entities go to',
THIS_VERSION: 'This Version',
PLATFORM: 'Platform',
RELEASE_TYPE: 'Release Type',
INTERNET_CONNECTION_REQUIRED: 'Internet connection required for automatic version checking and upgrading',
SWITCH_RELEASE_TYPE: 'Switch to {0} release'
BYTES: 'Octets',
BITMASK: 'Masque de bits',
DUPLICATE: 'Dupliquer',
DASHBOARD_1: 'Toutes les entités EMS actives et marquées comme favoris, plus toutes les entités personnalisées, les programmes et les données des capteurs externes sont affichées ci-dessous.',
NO_DATA_1: 'Aucune entité EMS favorite trouvée. Utilisez le',
NO_DATA_2: 'module pour les marquer.',
NO_DATA_3: 'Pour voir toutes les entités disponibles, aller à',
THIS_VERSION: 'Cette version',
PLATFORM: 'Plateforme',
RELEASE_TYPE: 'Type de version',
INTERNET_CONNECTION_REQUIRED: 'Connexion Internet requise pour la vérification automatique des versions et la mise à niveau',
SWITCH_RELEASE_TYPE: 'Passer à la version {0}'
};
export default fr;

View File

@@ -340,8 +340,8 @@ const it: Translation = {
AUTO_SCROLL: 'Scorrimento automatico',
DASHBOARD: 'Pannello di controllo',
DEVELOPER_MODE: 'Modalità sviluppatore',
BYTES: 'Bytes',
BITMASK: 'Bit Mask',
BYTES: 'Byte',
BITMASK: 'Bitmask',
DUPLICATE: 'Duplicato',
DASHBOARD_1: 'Tutte le entità EMS che sono attive e marcate come preferite, più tutte le entità personalizzate, piani di programmazione e dati dei sensori esterni sono visualizzati di seguito.',
NO_DATA_1: 'Nessuna entità EMS preferita trovata. Usa il',

View File

@@ -337,21 +337,21 @@ const no: Translation = {
PLEASE_WAIT: 'Vennligst vent',
RESTARTING_PRE: 'Initialiserer',
RESTARTING_POST: 'Forbereder',
AUTO_SCROLL: 'Auto Scroll',
AUTO_SCROLL: 'Automatisk rulling',
DASHBOARD: 'Dashboard',
DEVELOPER_MODE: 'Developer Mode',
DEVELOPER_MODE: 'Utvikler modus',
BYTES: 'Bytes',
BITMASK: 'Bit Mask',
DUPLICATE: 'Duplicate',
DASHBOARD_1: 'All EMS entities that are active and marked as Favorite, plus all Custom Entities, Schedules and external Sensors data are displayed below.',
BITMASK: 'Bitmask',
DUPLICATE: 'Duplikat',
DASHBOARD_1: 'Alle EMS enheter som er aktive og merket som favoritt, pluss alle personlige enheter, planlegg og eksterne sensor data er vist nedenfor.',
NO_DATA_1: 'Ingen favoritte EMS enheter funnet enda. Bruk',
NO_DATA_2: 'modul for å markere dem.',
NO_DATA_3: 'For å se alle tilgjengelige enheter, gå til',
THIS_VERSION: 'Denne versjonen',
PLATFORM: 'Platform',
RELEASE_TYPE: 'Release Type',
INTERNET_CONNECTION_REQUIRED: 'Internet connection required for automatic version checking and upgrading',
SWITCH_RELEASE_TYPE: 'Switch to {0} release'
PLATFORM: 'Plattform',
RELEASE_TYPE: 'Utgivelses type',
INTERNET_CONNECTION_REQUIRED: 'Internettilkobling kreves for automatisk versjonskontroll og oppgradering',
SWITCH_RELEASE_TYPE: 'Bytt til {0} utgivelse'
};
export default no;

View File

@@ -341,17 +341,17 @@ const sv: Translation = {
DASHBOARD: 'Kontrollpanel',
DEVELOPER_MODE: 'Utvecklarläge',
BYTES: 'Bytes',
BITMASK: 'Bit Mask',
BITMASK: 'Bitmask',
DUPLICATE: 'Dublett',
DASHBOARD_1: 'All EMS entities that are active and marked as Favorite, plus all Custom Entities, Schedules and external Sensors data are displayed below.',
DASHBOARD_1: 'Alla EMS-enheter som är aktiva och markerade som favorit, plus alla anpassade entiteter, scheman och externa sensor-data visas nedan.',
NO_DATA_1: 'Inga favorit EMS enheter hittade än. Använd',
NO_DATA_2: 'modul för att markera dem.',
NO_DATA_3: 'För att se alla tillgängliga enheter, gå till',
THIS_VERSION: 'Denna version',
PLATFORM: 'Platform',
RELEASE_TYPE: 'Release Type',
PLATFORM: 'Plattform',
RELEASE_TYPE: 'Utgivelsestyp',
INTERNET_CONNECTION_REQUIRED: 'Internetanslutning krävs för automatisk version kontroll och uppdatering',
SWITCH_RELEASE_TYPE: 'Byt till {0} version'
SWITCH_RELEASE_TYPE: 'Byt till {0} utgåva'
};
export default sv;

View File

@@ -340,18 +340,18 @@ const tr: Translation = {
AUTO_SCROLL: 'Otomatik kaydırma',
DASHBOARD: 'Kontrol Paneli',
DEVELOPER_MODE: 'Geliştirici Modu',
BYTES: 'Bytes',
BITMASK: 'Bit Mask',
DUPLICATE: 'Duplicate',
BYTES: 'Bayt',
BITMASK: 'Bit Maskesi',
DUPLICATE: 'Çift',
DASHBOARD_1: 'Tüm aktif ve Favori olarak işaretlenmiş EMS varlıkları, artı tüm özel varlıklar, zamanlayıcılar ve harici sensör verileri aşağıda görüntüleniyor.',
NO_DATA_1: 'Henüz bir favori EMS varlığı bulunamadı. Kullanın',
NO_DATA_2: 'modülünü kullanın.',
NO_DATA_3: 'Tüm kullanılabilir varlıkları görmek için git',
THIS_VERSION: 'Bu Sürüm',
PLATFORM: 'Platform',
RELEASE_TYPE: 'Release Type',
INTERNET_CONNECTION_REQUIRED: 'Internet connection required for automatic version checking and upgrading',
SWITCH_RELEASE_TYPE: 'Switch to {0} release'
PLATFORM: 'Platforma',
RELEASE_TYPE: 'Sürüm Tipi',
INTERNET_CONNECTION_REQUIRED: 'Otomatik sürüm kontrolü ve güncelleme için internet bağlantısı gereklidir',
SWITCH_RELEASE_TYPE: '{0} sürümüne geç'
};
export default tr;

View File

@@ -122,37 +122,44 @@ let LATEST_STABLE_VERSION = '3.7.2';
let LATEST_DEV_VERSION = '3.7.3-dev.6';
// scenarios for testing versioning
// version_test = 0; // on latest stable, can switch to dev only
// version_test = 1; // on latest dev, can switch back to stable only or reinstall
version_test = 0; // on latest stable, or switch to dev
// version_test = 1; // on latest dev, or switch back to stable
// version_test = 2; // upgrade an older stable to latest stable or switch to latest dev
version_test = 3; // upgrade an older dev to latest dev, switch to stable available
// version_test = 3; // upgrade dev to latest, or switch to stable
// version_test = 4; // downgrade to an older dev, or switch back to stable
switch (version_test as number) {
case 0:
default:
// on latest stable, can upgrade to dev only
// on latest stable, or switch to dev
THIS_VERSION = LATEST_STABLE_VERSION;
STABLE_VERSION_IS_UPGRADEABLE = false;
DEV_VERSION_IS_UPGRADEABLE = true;
break;
case 1:
// on latest dev, no updates to either dev or stable
// on latest dev, or switch back to stable
THIS_VERSION = LATEST_DEV_VERSION;
STABLE_VERSION_IS_UPGRADEABLE = false;
DEV_VERSION_IS_UPGRADEABLE = false;
break;
case 2:
// upgrade an older stable to latest stable or the latest dev
// upgrade an older stable to latest stable or switch to latest dev
THIS_VERSION = '3.6.5';
STABLE_VERSION_IS_UPGRADEABLE = true;
DEV_VERSION_IS_UPGRADEABLE = true;
break;
case 3:
// upgrade an older dev to latest dev, no stable upgrades available
// upgrade dev to latest, or switch to stable
THIS_VERSION = '3.7.3-dev.2';
STABLE_VERSION_IS_UPGRADEABLE = false;
DEV_VERSION_IS_UPGRADEABLE = true;
break;
case 4:
// downgrade to an older dev, or switch back to stable
THIS_VERSION = '3.7.3-dev.9';
STABLE_VERSION_IS_UPGRADEABLE = true;
DEV_VERSION_IS_UPGRADEABLE = false;
break;
}
// set the version
@@ -271,10 +278,10 @@ function updateMask(entity: any, de: any, dd: any) {
const old_custom_name = dd.nodes[dd_objIndex].cn;
console.log(
'comparing names, old (' +
old_custom_name +
') with new (' +
new_custom_name +
')'
old_custom_name +
') with new (' +
new_custom_name +
')'
);
if (old_custom_name !== new_custom_name) {
changed = true;
@@ -370,15 +377,15 @@ function check_upgrade(version: string) {
console.log(
'Upgrade this version (' +
THIS_VERSION +
') to dev (' +
dev_version +
') is ' +
(DEV_VERSION_IS_UPGRADEABLE ? 'YES' : 'NO') +
' and to stable (' +
stable_version +
') is ' +
(STABLE_VERSION_IS_UPGRADEABLE ? 'YES' : 'NO')
THIS_VERSION +
') to dev (' +
dev_version +
') is ' +
(DEV_VERSION_IS_UPGRADEABLE ? 'YES' : 'NO') +
' and to stable (' +
stable_version +
') is ' +
(STABLE_VERSION_IS_UPGRADEABLE ? 'YES' : 'NO')
);
data = {
emsesp_version: THIS_VERSION,

View File

@@ -636,7 +636,7 @@ void AnalogSensor::publish_values(const bool force) {
snprintf(topic, sizeof(topic), "switch/%s/%s_%02d/config", Mqtt::basename().c_str(), F_(analogsensor), sensor.gpio());
snprintf(command_topic, sizeof(command_topic), "%s/%s/%s", Mqtt::base().c_str(), F_(analogsensor), sensor.name().c_str());
config["cmd_t"] = command_topic;
Mqtt::add_ha_bool(config);
Mqtt::add_ha_bool(config.as<JsonObject>());
} else if (sensor.type() == AnalogType::DIGITAL_OUT) { // DAC
snprintf(topic, sizeof(topic), "number/%s/%s_%02d/config", Mqtt::basename().c_str(), F_(analogsensor), sensor.gpio());
snprintf(command_topic, sizeof(command_topic), "%s/%s/%s", Mqtt::base().c_str(), F_(analogsensor), sensor.name().c_str());
@@ -670,7 +670,7 @@ void AnalogSensor::publish_values(const bool force) {
// config["step"] = sensor.factor();
} else if (sensor.type() == AnalogType::DIGITAL_IN) {
snprintf(topic, sizeof(topic), "binary_sensor/%s/%s_%02d/config", Mqtt::basename().c_str(), F_(analogsensor), sensor.gpio());
Mqtt::add_ha_bool(config);
Mqtt::add_ha_bool(config.as<JsonObject>());
} else {
snprintf(topic, sizeof(topic), "sensor/%s/%s_%02d/config", Mqtt::basename().c_str(), F_(analogsensor), sensor.gpio());
config["stat_cla"] = "measurement";
@@ -685,7 +685,8 @@ void AnalogSensor::publish_values(const bool force) {
}
}
Mqtt::add_ha_sections_to_doc("analog", stat_t, config, !is_ha_device_created, val_cond);
Mqtt::add_ha_dev_section(config.as<JsonObject>(), "Analog Sensors", nullptr, nullptr, false);
Mqtt::add_ha_avail_section(config.as<JsonObject>(), stat_t, !is_ha_device_created, val_cond);
sensor.ha_registered = Mqtt::queue_ha(topic, config.as<JsonObject>());
}

View File

@@ -1221,7 +1221,7 @@ void EMSdevice::setCustomizationEntity(const std::string & entity_id) {
if (Mqtt::ha_enabled() && (has_custom_name || ((current_mask ^ new_mask) & (DeviceValueState::DV_READONLY >> 4)))) {
// remove ha config on change of dv_readonly flag
dv.remove_state(DeviceValueState::DV_HA_CONFIG_CREATED);
Mqtt::publish_ha_sensor_config(dv, "", "", true); // delete topic (remove = true)
Mqtt::publish_ha_sensor_config_dv(dv, "", "", true); // delete topic (remove = true)
}
// always write the mask
@@ -1673,7 +1673,7 @@ void EMSdevice::get_value_json(JsonObject json, DeviceValue & dv) {
}
// add uom, state class and device class
Mqtt::add_ha_uom(json, dv.type, dv.uom, dv.short_name, false); // no icon
Mqtt::add_ha_classes(json, device_type(), dv.type, dv.uom, dv.short_name, false); // no icon
json["readable"] = dv.type != DeviceValueType::CMD && !dv.has_state(DeviceValueState::DV_API_MQTT_EXCLUDE);
json["writeable"] = dv.has_cmd && !dv.has_state(DeviceValueState::DV_READONLY);
@@ -1886,7 +1886,7 @@ void EMSdevice::mqtt_ha_entity_config_create() {
if (!dv.has_state(DeviceValueState::DV_HA_CONFIG_CREATED) && dv.has_state(DeviceValueState::DV_ACTIVE)
&& !dv.has_state(DeviceValueState::DV_API_MQTT_EXCLUDE)) {
// create_device_config is only done once for the EMS device. It can added to any entity, so we take the first
if (Mqtt::publish_ha_sensor_config(dv, name().c_str(), brand_to_char(), false, create_device_config)) {
if (Mqtt::publish_ha_sensor_config_dv(dv, name().c_str(), brand_to_char(), false, create_device_config)) {
dv.add_state(DeviceValueState::DV_HA_CONFIG_CREATED);
create_device_config = false; // only create the main config once
count++;

View File

@@ -744,39 +744,17 @@ bool Mqtt::queue_ha(const char * topic, const JsonObjectConst payload) {
return queue_publish_message(Mqtt::discovery_prefix() + topic, payload_text, true); // with retain true
}
// create's a ha sensor config topic from a device value object
// create's a ha sensor config topic from a device value object (dev)
// adds ids, name, mf, mdl, via_device
// and also takes a flag (create_device_config) used to also create the main HA device config. This is only needed for one entity
bool Mqtt::publish_ha_sensor_config(DeviceValue & dv, const char * model, const char * brand, const bool remove, const bool create_device_config) {
JsonDocument dev_json;
// always create the ids (discovery identifiers)
// with the name always
// and the manufacturer and model if we're creating the device config for the first entity
JsonArray ids = dev_json["ids"].to<JsonArray>();
char ha_device[40];
auto device_type_name = EMSdevice::device_type_2_device_name(dv.device_type);
snprintf(ha_device, sizeof(ha_device), "%s-%s", Mqtt::basename().c_str(), device_type_name);
ids.add(ha_device);
auto cap_name = strdup(device_type_name);
Helpers::CharToUpperUTF8(cap_name); // capitalize first letter
dev_json["name"] = Mqtt::basename() + " " + cap_name;
free(cap_name);
// create only once per category
if (create_device_config) {
dev_json["mf"] = brand;
dev_json["mdl"] = model;
dev_json["via_device"] = Mqtt::basename();
}
bool Mqtt::publish_ha_sensor_config_dv(DeviceValue & dv, const char * model, const char * brand, const bool remove, const bool create_device_config) {
// calculate the min and max
int16_t dv_set_min;
uint32_t dv_set_max;
(void)dv.get_min_max(dv_set_min, dv_set_max);
// determine if we're creating the command topics which we use special HA configs
// unless the entity has been marked as read-only and so it'll default to using the sensor/ type
// if the entity has been marked as read-only it'll be created as a binary_sensor or sensor
// or we're dealing with Energy sensors that must have "diagnostic" as an entity category (e.g. negheat & nrgww)
bool has_cmd = dv.has_cmd && !dv.has_state(DeviceValueState::DV_READONLY) && (dv.uom != DeviceValueUOM::KWH);
@@ -794,20 +772,14 @@ bool Mqtt::publish_ha_sensor_config(DeviceValue & dv, const char * model, const
dv_set_min,
dv_set_max,
dv.numeric_operator,
dev_json.as<JsonObject>());
model,
brand,
create_device_config);
}
// publish HA sensor for System using the heartbeat tag
// publish HA sensor specific for System using the heartbeat tag
bool Mqtt::publish_system_ha_sensor_config(uint8_t type, const char * name, const char * entity, const uint8_t uom) {
JsonDocument doc;
JsonObject dev_json = doc["dev"].to<JsonObject>();
dev_json["name"] = Mqtt::basename();
JsonArray ids = dev_json["ids"].to<JsonArray>();
ids.add(Mqtt::basename());
return publish_ha_sensor_config(
type, DeviceValueTAG::TAG_DEVICE_DATA, name, name, EMSdevice::DeviceType::SYSTEM, entity, uom, false, false, nullptr, 0, 0, 0, 0, dev_json);
return publish_ha_sensor_config(type, DeviceValueTAG::TAG_DEVICE_DATA, name, name, EMSdevice::DeviceType::SYSTEM, entity, uom, false, false, nullptr, 0, 0, 0, 0);
}
// MQTT discovery configs
@@ -827,7 +799,9 @@ bool Mqtt::publish_ha_sensor_config(uint8_t type, // EMSdev
const int16_t dv_set_min,
const uint32_t dv_set_max,
const int8_t num_op,
const JsonObjectConst dev_json) {
const char * const model,
const char * const brand,
const bool create_device_config) {
// ignore if name (fullname) is empty
if (!fullname || !en_name) {
return false;
@@ -984,8 +958,10 @@ bool Mqtt::publish_ha_sensor_config(uint8_t type, // EMSdev
}
// if at this point we don't have a topic created yet, create a default sensor one. We always need a topic.
bool is_sensor = false;
if (!strnlen(topic, sizeof(topic))) {
snprintf(topic, sizeof(topic), (type == DeviceValueType::BOOL) ? "binary_sensor/%s" : "sensor/%s", config_topic); // binary sensor (for booleans)
is_sensor = true;
}
// if we're asking to remove this topic, send an empty payload and exit
@@ -995,7 +971,7 @@ bool Mqtt::publish_ha_sensor_config(uint8_t type, // EMSdev
return queue_remove_topic(topic);
}
// build the payload
// build the full payload
JsonDocument doc;
doc["uniq_id"] = uniq_id;
doc["obj_id"] = uniq_id; // same as unique_id
@@ -1065,8 +1041,8 @@ bool Mqtt::publish_ha_sensor_config(uint8_t type, // EMSdev
free(F_name); // very important!
doc["name"] = ha_name;
// not needed for commands
if (type != DeviceValueType::CMD) {
// add state_topic and it's value_template. This is not needed for commands, only sensors
if (type != DeviceValueType::CMD || is_sensor) {
// state topic, except for commands
char stat_t[MQTT_TOPIC_MAX_SIZE];
@@ -1095,7 +1071,7 @@ bool Mqtt::publish_ha_sensor_config(uint8_t type, // EMSdev
// applies to both Binary Sensor (read only) and a Switch (for a command)
// has no unit of measure or icon, and must be true/false (not on/off or 1/0)
if (type == DeviceValueType::BOOL) {
add_ha_bool(doc);
add_ha_bool(doc.as<JsonObject>());
strlcpy(sample_val, "false", sizeof(sample_val)); // default is "false"
}
@@ -1105,7 +1081,7 @@ bool Mqtt::publish_ha_sensor_config(uint8_t type, // EMSdev
// adds availability, dev, ids to the config section to HA Discovery config
// except for commands
add_ha_sections_to_doc(nullptr, stat_t, doc, false, val_cond); // no name, since the "dev" has already been added
add_ha_avail_section(doc.as<JsonObject>(), stat_t, false, val_cond);
} else {
// Domoticz doesn't support value templates, so we just use the value directly
// Also omit the uom and other state classes
@@ -1116,18 +1092,24 @@ bool Mqtt::publish_ha_sensor_config(uint8_t type, // EMSdev
// Add the state class, device class and an optional icon based on the uom
// first set the catagory for System entities
// https://github.com/emsesp/EMS-ESP32/discussions/1459#discussioncomment-7694873
if (device_type == EMSdevice::DeviceType::SYSTEM) {
doc["ent_cat"] = "diagnostic"; // instead of config
}
add_ha_uom(doc.as<JsonObject>(), type, uom, entity);
add_ha_classes(doc.as<JsonObject>(), device_type, type, uom, entity);
doc["dev"] = dev_json;
// add dev section
if (device_type == EMSdevice::DeviceType::SYSTEM) {
add_ha_dev_section(doc.as<JsonObject>(), nullptr, nullptr, nullptr, false);
} else {
add_ha_dev_section(doc.as<JsonObject>(), EMSdevice::device_type_2_device_name(device_type), model, brand, create_device_config);
}
return queue_ha(topic, doc.as<JsonObject>());
}
// Add the uom, state class, device class and an optional icon based on the uom
void Mqtt::add_ha_uom(JsonObject doc, const uint8_t type, const uint8_t uom, const char * entity, bool is_discovery) {
void Mqtt::add_ha_classes(JsonObject doc, const uint8_t device_type, const uint8_t type, const uint8_t uom, const char * entity, bool is_discovery) {
if (device_type == EMSdevice::DeviceType::SYSTEM) {
doc["ent_cat"] = "diagnostic"; // instead of 'config'
}
// for HA discovery we use different namings
const char * dc_ha = is_discovery ? "dev_cla" : "device_class"; // device class
const char * sc_ha = is_discovery ? "stat_cla" : "state_class"; // state class
@@ -1145,8 +1127,7 @@ void Mqtt::add_ha_uom(JsonObject doc, const uint8_t type, const uint8_t uom, con
} else if (uom != DeviceValueUOM::NONE) {
doc[uom_ha] = EMSdevice::uom_to_string(uom); // use default
} else if (discovery_type() != discoveryType::HOMEASSISTANT) {
// Domoticz use " " for a no-uom
doc[uom_ha] = " ";
doc[uom_ha] = " "; // Domoticz uses " " for a no-uom
}
}
@@ -1353,8 +1334,8 @@ bool Mqtt::publish_ha_climate_config(const int8_t tag, const bool has_roomtemp,
modes.add("heat");
modes.add("off");
// device name must be different to the entity name, take the ids value we just created
add_ha_sections_to_doc("thermostat", topic_t, doc, false, seltemp_cond, has_roomtemp ? currtemp_cond : nullptr, hc_mode_cond);
add_ha_dev_section(doc.as<JsonObject>(), "thermostat", nullptr, nullptr, false); // add dev section
add_ha_avail_section(doc.as<JsonObject>(), topic_t, false, seltemp_cond, has_roomtemp ? currtemp_cond : nullptr, hc_mode_cond); // add availability section
return queue_ha(topic, doc.as<JsonObject>()); // publish the config payload with retain flag
}
@@ -1378,34 +1359,52 @@ std::string Mqtt::tag_to_topic(uint8_t device_type, int8_t tag) {
}
}
// adds availability, dev, ids to the config section to HA Discovery config
void Mqtt::add_ha_sections_to_doc(const char * name,
const char * state_t,
JsonDocument & config,
const bool is_first,
const char * cond1,
const char * cond2,
const char * negcond) {
// only for HA
// add devs section to an existing doc, only for HA
// under devs node it will create ids and name and optional mf, mdl, via_device
// name could be EMSdevice::device_type_2_device_name(dv.device_type));
void Mqtt::add_ha_dev_section(JsonObject doc, const char * name, const char * model, const char * brand, const bool create_model) {
// only works for HA
if (discovery_type() != discoveryType::HOMEASSISTANT) {
return;
}
// adds dev section to HA Discovery config
// create dev section
JsonObject dev_json = doc["dev"].to<JsonObject>();
// add ids and name - with capitalize first letter
JsonArray ids = dev_json["ids"].to<JsonArray>(); // ids, it is an array with a single element
if (name != nullptr) {
JsonObject dev = config["dev"].to<JsonObject>();
char * cap_name = strdup(name);
cap_name[0] = toupper(name[0]); // capitalize first letter
dev["name"] = std::string(Mqtt::basename()) + " " + cap_name;
// if it's the first in the category, attach the group to the main HA device
if (is_first) {
dev["mf"] = "EMS-ESP";
dev["mdl"] = cap_name;
dev["via_device"] = Mqtt::basename();
}
JsonArray ids = dev["ids"].to<JsonArray>();
ids.add(Mqtt::basename() + "-" + Helpers::toLower(name));
// for ids, replace all spaces with -
std::string lower_name_str(name);
std::replace(lower_name_str.begin(), lower_name_str.end(), ' ', '-');
ids.add(Mqtt::basename() + "-" + Helpers::toLower(lower_name_str));
auto cap_name = strdup(name);
Helpers::CharToUpperUTF8(cap_name); // capitalize first letter
dev_json["name"] = Mqtt::basename() + " " + cap_name;
free(cap_name);
} else {
ids.add(Mqtt::basename());
dev_json["name"] = Mqtt::basename();
}
// this is used to only create it once when entities are dynamically added
if (create_model) {
dev_json["mf"] = brand != nullptr ? brand : "EMS-ESP";
if (model != nullptr) {
dev_json["mdl"] = model;
}
dev_json["via_device"] = Mqtt::basename();
}
}
// adds sections for HA Discovery to an existing JSON doc
// adds dev section with ids, name, mf, mdl, via_device
// adds optional availability section
void Mqtt::add_ha_avail_section(JsonObject doc, const char * state_t, const bool is_first, const char * cond1, const char * cond2, const char * negcond) {
// only works for HA
if (discovery_type() != discoveryType::HOMEASSISTANT) {
return;
}
// skip availability section if no conditions set
@@ -1414,7 +1413,7 @@ void Mqtt::add_ha_sections_to_doc(const char * name,
}
// adds "availability" section to HA Discovery config
JsonArray avty = config["avty"].to<JsonArray>();
JsonArray avty = doc["avty"].to<JsonArray>();
JsonDocument avty_json;
// make local copy of state, as the pointer will get de-referenced
@@ -1451,22 +1450,23 @@ void Mqtt::add_ha_sections_to_doc(const char * name,
avty.add(avty_json); // returns 0 if no mem
}
config["avty_mode"] = "all";
doc["avty_mode"] = "all";
}
void Mqtt::add_ha_bool(JsonDocument & config) {
// adds the pl_on and pl_off sections to the doc
void Mqtt::add_ha_bool(JsonObject doc) {
const char * pl_on = "pl_on";
const char * pl_off = "pl_off";
if (EMSESP::system_.bool_format() == BOOL_FORMAT_TRUEFALSE) {
config[pl_on] = true;
config[pl_off] = false;
doc[pl_on] = true;
doc[pl_off] = false;
} else if (EMSESP::system_.bool_format() == BOOL_FORMAT_10) {
config[pl_on] = 1;
config[pl_off] = 0;
doc[pl_on] = 1;
doc[pl_off] = 0;
} else {
char result[12];
config[pl_on] = Helpers::render_boolean(result, true);
config[pl_off] = Helpers::render_boolean(result, false);
doc[pl_on] = Helpers::render_boolean(result, true);
doc[pl_off] = Helpers::render_boolean(result, false);
}
}

View File

@@ -85,7 +85,7 @@ class Mqtt {
static bool queue_ha(const char * topic, const JsonObjectConst payload);
static bool queue_remove_topic(const char * topic);
static bool publish_ha_sensor_config(DeviceValue & dv, const char * model, const char * brand, const bool remove, const bool create_device_config = false);
static bool publish_ha_sensor_config_dv(DeviceValue & dv, const char * model, const char * brand, const bool remove, const bool create_device_config = false);
static bool publish_ha_sensor_config(uint8_t type,
int8_t tag,
const char * const fullname,
@@ -100,7 +100,9 @@ class Mqtt {
const int16_t dv_set_min,
const uint32_t dv_set_max,
const int8_t num_op,
const JsonObjectConst dev_json);
const char * const model = nullptr,
const char * const brand = nullptr,
const bool create_device_config = false);
static bool publish_system_ha_sensor_config(uint8_t type, const char * name, const char * entity, const uint8_t uom);
static bool publish_ha_climate_config(const int8_t tag, const bool has_roomtemp, const bool remove = false, const int16_t min = 5, const uint32_t max = 30);
@@ -243,16 +245,16 @@ class Mqtt {
static std::string tag_to_topic(uint8_t device_type, int8_t tag);
static void add_ha_uom(JsonObject doc, const uint8_t type, const uint8_t uom, const char * entity = nullptr, bool is_discovery = true);
static void add_ha_sections_to_doc(const char * name,
const char * state_t,
JsonDocument & config,
const bool is_first = false,
const char * cond1 = nullptr,
const char * cond2 = nullptr,
const char * negcond = nullptr);
static void add_ha_bool(JsonDocument & config);
static void
add_ha_classes(JsonObject doc, const uint8_t device_type, const uint8_t type, const uint8_t uom, const char * entity = nullptr, bool is_discovery = true);
static void add_ha_dev_section(JsonObject doc, const char * name, const char * model, const char * brand, const bool create_model);
static void add_ha_avail_section(JsonObject doc,
const char * state_t,
const bool is_first,
const char * cond1 = nullptr,
const char * cond2 = nullptr,
const char * negcond = nullptr);
static void add_ha_bool(JsonObject doc);
private:
static uuid::log::Logger logger_;

View File

@@ -211,9 +211,9 @@ void Shower::create_ha_discovery() {
snprintf(stat_t, sizeof(stat_t), "%s/shower_active", Mqtt::base().c_str());
doc["stat_t"] = stat_t;
Mqtt::add_ha_bool(doc);
Mqtt::add_ha_sections_to_doc("shower", stat_t, doc, true); // create first dev & ids, no conditions
Mqtt::add_ha_bool(doc.as<JsonObject>());
Mqtt::add_ha_dev_section(doc.as<JsonObject>(), "Shower Sensor", nullptr, nullptr, false);
Mqtt::add_ha_avail_section(doc.as<JsonObject>(), stat_t, true); // no conditions
snprintf(topic, sizeof(topic), "binary_sensor/%s/shower_active/config", Mqtt::basename().c_str());
ha_configdone_ = Mqtt::queue_ha(topic, doc.as<JsonObject>()); // publish the config payload with retain flag
@@ -243,7 +243,8 @@ void Shower::create_ha_discovery() {
doc["dev_cla"] = "duration";
// doc["ent_cat"] = "diagnostic";
Mqtt::add_ha_sections_to_doc("shower", stat_t, doc, false, "value_json.duration is defined");
Mqtt::add_ha_dev_section(doc.as<JsonObject>(), "Shower Sensor", nullptr, nullptr, false);
Mqtt::add_ha_avail_section(doc.as<JsonObject>(), stat_t, false, "value_json.duration is defined");
snprintf(topic, sizeof(topic), "sensor/%s/shower_duration/config", Mqtt::basename().c_str());
Mqtt::queue_ha(topic, doc.as<JsonObject>()); // publish the config payload with retain flag

View File

@@ -520,7 +520,8 @@ void TemperatureSensor::publish_values(const bool force) {
}
}
Mqtt::add_ha_sections_to_doc("temperature", stat_t, config, !is_ha_device_created, val_cond);
Mqtt::add_ha_dev_section(config.as<JsonObject>(), "Temperature Sensors", nullptr, nullptr, false);
Mqtt::add_ha_avail_section(config.as<JsonObject>(), stat_t, !is_ha_device_created, val_cond);
char topic[Mqtt::MQTT_TOPIC_MAX_SIZE];
snprintf(topic, sizeof(topic), "sensor/%s/%s_%s/config", Mqtt::basename().c_str(), F_(temperaturesensor), sensor.id().c_str());

View File

@@ -326,15 +326,14 @@ bool WebCustomEntityService::get_value_info(JsonObject output, const char * cmd)
// build the json for specific entity
void WebCustomEntityService::get_value_json(JsonObject output, CustomEntityItem & entity) {
output["name"] = entity.name;
output["fullname"] = entity.name;
output["storage"] = entity.ram ? "ram" : "ems";
output["type"] = entity.value_type == DeviceValueType::BOOL ? "boolean" : entity.value_type == DeviceValueType::STRING ? "string" : F_(number);
// add uom state class and device class
Mqtt::add_ha_uom(output, entity.value_type, entity.uom, nullptr, false);
output["name"] = entity.name;
output["fullname"] = entity.name;
output["storage"] = entity.ram ? "ram" : "ems";
output["type"] = entity.value_type == DeviceValueType::BOOL ? "boolean" : entity.value_type == DeviceValueType::STRING ? "string" : F_(number);
output["readable"] = true;
output["writeable"] = entity.writeable;
output["visible"] = true;
if (entity.ram == 0) {
output["device_id"] = Helpers::hextoa(entity.device_id);
output["type_id"] = Helpers::hextoa(entity.type_id);
@@ -345,6 +344,10 @@ void WebCustomEntityService::get_value_json(JsonObject output, CustomEntityItem
output["bytes"] = (uint8_t)entity.factor;
}
}
// add uom state class and device class
Mqtt::add_ha_classes(output, EMSdevice::DeviceType::SYSTEM, entity.value_type, entity.uom, nullptr, false);
render_value(output, entity, true); // create the "value" field
}
@@ -445,12 +448,12 @@ void WebCustomEntityService::publish(const bool force) {
if (entityItem.value_type == DeviceValueType::BOOL) {
// applies to both Binary Sensor (read only) and a Switch (for a command)
Mqtt::add_ha_bool(config);
Mqtt::add_ha_bool(config.as<JsonObject>());
}
Mqtt::add_ha_uom(config.as<JsonObject>(), entityItem.value_type, entityItem.uom); // add uom
Mqtt::add_ha_sections_to_doc(F_(custom), stat_t, config, !ha_created, val_cond);
Mqtt::add_ha_classes(config.as<JsonObject>(), EMSdevice::DeviceType::SYSTEM, entityItem.value_type, entityItem.uom);
Mqtt::add_ha_dev_section(config.as<JsonObject>(), "Custom Entities", nullptr, nullptr, false);
Mqtt::add_ha_avail_section(config.as<JsonObject>(), stat_t, !ha_created, val_cond);
ha_created |= Mqtt::queue_ha(topic, config.as<JsonObject>());
}

View File

@@ -287,8 +287,9 @@ void WebSchedulerService::publish(const bool force) {
snprintf(command_topic, sizeof(command_topic), "%s/%s/%s", Mqtt::base().c_str(), F_(scheduler), scheduleItem.name.c_str());
config["cmd_t"] = command_topic;
Mqtt::add_ha_bool(config);
Mqtt::add_ha_sections_to_doc(F_(scheduler), stat_t, config, !ha_created, val_cond);
Mqtt::add_ha_bool(config.as<JsonObject>());
Mqtt::add_ha_dev_section(config.as<JsonObject>(), F_(scheduler), nullptr, nullptr, false);
Mqtt::add_ha_avail_section(config.as<JsonObject>(), stat_t, !ha_created, val_cond);
ha_created |= Mqtt::queue_ha(topic, config.as<JsonObject>());
}