pvyleta / ebusd-brink-hru

Collection of Brink HRU configuration files for ebusd
GNU General Public License v3.0
2 stars 1 forks source link

New settings don't apply permanently #2

Closed RogMoe closed 2 months ago

RogMoe commented 3 months ago

Hi Petr, As discussed in a previous "issue", I took out the Air Control and have HomeAssistant take over. I edited filter-name=* in mqtt-hassio.cfg and took out lines from the configfile that don't seem to apply to my Excellent300+. All relevant entities show up in HomeAssistant, but if I change a setting, it only changes for aprox. 2 minutes and then reverts to the default setting. The new setting reaches the Excellent for sure because for 2 minutes the ventilation spins harder. For some reason the data (new setting) does not retain. This goes for all new settings.

My config: Brink Excellent 300+ sw S1.06.08 0007 Ebusd 23.3 on Pi3 Bullseye 64b

EBUSD_OPTS="-d /dev/ttyUSB0 --scanconfig=off -c /etc/ebusd/ --mqttvar=filter-direction=r|u|^w --accesslevel=* --mqtthost 192.168.1.14 --mqttport 1883 --mqttint=/etc/ebusd/mqtt-hassio.cfg --mqttuser=mqtt --mqttpass=mqtt --mqttjson -l /var/log/ebusd.log

If I change a seting in HA, it shows (for 2 minutes) in ebusctl finf -w, and then changes back to no data stored. All entities show no data stored as default by the way. ebusctl find -r show all enties from the 3c. config file with their current and optional settings.

Why do setting not retain after setting? Can you please have a look? I attached all relevant files.

3c.Excellent300.10608.10706.plus.csv:

This file is for Excellent300 SW version from 1.06.08 to 1.07.06
*r,Excellent300,,,,3c,
*w,Excellent300,,,,3c,

w,,FabrieksinstellingenInstellen,FactoryReset,,,40ff,466163746f72795265736574
w,,ResetMeldingen,ResetNotifications,,,4091,,,,UIR,0x0001=Errors;0x0100=Filter;0x0101=ErrorsAndFilter;0x0000=NoResetRequested,,NoResetRequested is a dummy message doing nothing. It might be useful for integration in MQTT and HA automation.
r,,FoutHistorie,RequestErrorList,,,4090,,,,HEX:18,,,
w,,VentilatorMode,FanMode,,,40a1,,,,ULR,0x0=Afwezig;0x00010001=Minimaal;0x00020002=Normaal;0x00030003=Maximaal,,
#w,,VentilatorModeAlternative,FanModeAlternative,,,40cb,0101,,,UIR,0=Holiday;1=Reduced;2=Normal;3=High,,
#r,,FilterMaximumDebiet,FilterNotificationFlow,,,4050,1c,,,UIR,-1000,m³,,min,,UIR,-1000,m³,,max,,UIR,-1000,m³,,step,,UIR,-1000,m³,,default,,UIR,-1000,m³,
#r,,FiltergebruikDagen,TotalFilterDays,,,4050,22,,,UIR,,Days,,min,,UIR,,Days,,max,,UIR,,Days,,step,,UIR,,Days,,default,,UIR,,Days,
#r,,Filtergebruik,TotalFilterFlow,,,4050,23,,,UIR,-1000,m³,,min,,UIR,-1000,m³,,max,,UIR,-1000,m³,,step,,UIR,-1000,m³,,default,,UIR,-1000,m³,
#r,,Bedieningstijd,TotalOperatingHours,,,4050,24,,,UIR,-5,Hours,,min,,UIR,-5,Hours,,max,,UIR,-5,Hours,,step,,UIR,-5,Hours,,default,,UIR,-5,Hours,
#r,,TotaalDebiet,TotalFlow,,,4050,25,,,UIR,-1000,m³,,min,,UIR,-1000,m³,,max,,UIR,-1000,m³,,step,,UIR,-1000,m³,,default,,UIR,-1000,m³,

r1,,VentilatorMode,FanMode,,,4022,01,,,UIR,0=Afwezig;1=Minimaal;2=Normaal;3=Maximaal,,
r1,,ToevoerDebiet,SettingInletFlow,,,4022,09,,,UIR,,m³/h,
r1,,AfvoerDebiet,SettingExhaustFlow,,,4022,0a,,,UIR,,m³/h,
r1,,HuidigToevoerDebiet,InletFlow,,,4022,0b,,,UIR,,m³/h,
r1,,HuidigAfvoerDebiet,ExhaustFlow,,,4022,0c,,,UIR,,m³/h,
r1,,ToevoerFanSnelheid,InletFanSpeed,,,4022,02,,,UIR,,rpm,
r1,,AfvoerFanSnelheid,ExhaustFanSpeed,,,4022,03,,,UIR,,rpm,
#r,,PerilexPositie,PerilexPosition,,,4022,05,,,UIR,0=Position_0;1=Position_1;2=Position_2;3=Position_3;,,
#r,,SchakelaarPositie,SwitchPosition,,,4022,06,,,UIR,0=Position_0;1=Position_1;2=Position_2;3=Position_3;,,
#r,,Schakelcontact1Positie,Contact1Position,,,4022,1b,,,UIR,0=Off;1=On,,
#r,,Schakelcontact2Positie,Contact2Position,,,4022,1c,,,UIR,0=Off;1=On,,
#r,,DipswitchWaarde,DipswitchValue,,,4022,04,,,UIR,31=Excellent180Basic;30=Excellent180Plus;7=Excellent300Basic;6=Excellent300Plus;5=Excellent400Basic;4=Excellent400Plus;27=Excellent450Basic;26=Excellent450Plus;3=RenoventElan300Basic;2=RenoventElan300Plus;19=Sky150Basic;18=Sky150Plus;9=Sky200Basic;8=Sky200Plus;21=Sky300Basic;20=Sky300Plus,,
#r,,SoftwareVersie,SoftwareVersion,,,4022,00,,,STR:13,,,
r1,,BypassStatus,BypassStatus,,,4022,0e,,,UIR,0=Initialiseren;1=Openen;2=Sluiten;3=Open;4=Gesloten;5=Foutmelding;6=Calibreren;255=Error,,
#r,,BypassStroom,BypassCurrent,,,4022,0d,,,UIR,,,
r1,,VoorverwarmerStatus,PreheaterStatus,,,4022,0f,,,UIR,0=Initialiseren;1=Uit;2=Aan,,
r1,,VoorverwarmVermogen,PreheaterPower,,,4022,10,,,UIR,,%,
#r,,NaverwarmerStatus,PostheaterStatus,,,4022,1d,,,UIR,0=Initialiseren;1=Uit;2=Aan,,
#r,,NaverwarmerVermogen,PostheaterPower,,,4022,1e,,,UIR,,%,
#r,,EWTStatus,EWTStatus,,,4022,1f,,,UIR,0=OpenLow;1=Closed;2=OpenHigh,,
r1,,VorstStatus,FrostStatus,,,4022,16,,,UIR,0=Initializing;1=NoFrost;17=NoFrost;2=DefrostWait;3=Preheater;18=Preheater;255=Error;5=VeluHeater;6=VeluFanCtrl;7=TableFanCtrl;19=TableFanCtrl;8=Sky150Heater;9=FanCtrlFanOff;10=FanCtrlFanRestart;11=FanCtrlCurve1;12=FanCtrlCurve2;13=FanCtrlCurve3;14=FanCtrlCurve4;15=HeaterCoolDown;16=Blocked,,
#r,,VentilatorStatus,FanStatus,,,4022,11,,,UIR,0=Initializing;1=ConstantFlow;2=ConstantPWM;3=Off;4=Error;5=MassBalance;6=Standby;7=ConstantRPM,,
r1,,BinnenTemperatuur,InsideTemperature,,,4022,07,,,SIR,10,°C,
r1,,BuitenTemperatuur,OutsideTemperature,,,4022,08,,,SIR,10,°C,
#r,,OptioneleTemperatuur,OptionTemperature,,,4022,1a,,,SIR,10,°C,
r1,,FilterStatus,FilterStatus,,,4022,18,,,UIR,0=Schoon;1=Vervuild,,
#r,,RelatieveVochtigheid,RelativeHumidity,,,4022,20,,,SIR,10,%,
#r,,VochtigheidBoostStatus,HumidityBoostState,,,4022,21,,,UIR,0=Error;1=NotInitialized;2=SensorNotActive;3=PowerUpDelay;4=NormalRH;5=BoostRising;6=BoostStable;7=BoostDecending;8=BoostRHLowLevelStable,Pa,
r1,,ToevoerDruk,PressureInlet,,,4022,14,,,UIR,10,Pa,
r1,,AfvoerDruk,PressureExhaust,,,4022,15,,,UIR,10,Pa,
#r3,,EbusSyncGenFouten,EbusSyncGenErrorCount,,,4022,64,,,UIR,,,

w,,DebietAfwezig,FlowMode0,,,4080,21,,,SIR,,m³/h,[min:0;max:50;step:50;default:50]
r1,,DebietAfwezig,FlowMode0,,,4050,21,,,SIR,,m³/h,,min,,SIR,,m³/h,[min:0],max,,SIR,,m³/h,[max:50],step,,SIR,,m³/h,[step:50],default,,SIR,,m³/h,[default:50]
w,,DebietMinimaal,FlowMode1,,,4080,01,,,SIR,,m³/h,[min:50;max:300;step:5;default:100]
r1,,DebietMinimaal,FlowMode1,,,4050,01,,,SIR,,m³/h,,min,,SIR,,m³/h,[min:50],max,,SIR,,m³/h,[max:300],step,,SIR,,m³/h,[step:5],default,,SIR,,m³/h,[default:100]
w,,DebietNormaal,FlowMode2,,,4080,02,,,SIR,,m³/h,[min:50;max:300;step:5;default:150]
r1,,DebietNormaal,FlowMode2,,,4050,02,,,SIR,,m³/h,,min,,SIR,,m³/h,[min:50],max,,SIR,,m³/h,[max:300],step,,SIR,,m³/h,[step:5],default,,SIR,,m³/h,[default:150]
w,,DebietMaximaal,FlowMode3,,,4080,03,,,SIR,,m³/h,[min:50;max:300;step:5;default:225]
r1,,DebietMaximaal,FlowMode3,,,4050,03,,,SIR,,m³/h,,min,,SIR,,m³/h,[min:50],max,,SIR,,m³/h,[max:300],step,,SIR,,m³/h,[step:5],default,,SIR,,m³/h,[default:225]
w,,BypassTemperatuur,BypassTemp,,,4080,04,,,SIR,10,°C,[min:150;max:350;step:5;default:240]
r1,,BypassTemperatuur,BypassTemp,,,4050,04,,,SIR,10,°C,,min,,SIR,10,°C,[min:150],max,,SIR,10,°C,[max:350],step,,SIR,10,°C,[step:5],default,,SIR,10,°C,[default:240]
w,,BypassHysterese,BypassTempHyst,,,4080,30,,,SIR,10,°C,[min:0;max:50;step:5;default:20]
r1,,BypassHysterese,BypassTempHyst,,,4050,30,,,SIR,10,°C,,min,,SIR,10,°C,[min:0],max,,SIR,10,°C,[max:50],step,,SIR,10,°C,[step:5],default,,SIR,10,°C,[default:20]
w,,BypassMode,BypassMode,,,4080,1b,,,UIR,0=Auto;1=Gesloten;2=Open,,[min:0;max:2;step:1;default:0]
r1,,BypassMode,BypassMode,,,4050,1b,,,UIR,0=Auto;1=Gesloten;2=Open,,,,,IGN:6,,,,default,,UIR,0=Auto;1=Gesloten;2=Open,,[default:0] - min/max/step fields of enum message omitted
#w,,CVWTW,CVWTWMode,,,4080,07,,,UIR,0=off;1=on,,[min:0;max:1;step:1;default:0]
#r,,CVWTW,CVWTWMode,,,4050,07,,,UIR,0=off;1=on,,,,,IGN:6,,,,default,,UIR,0=off;1=on,,[default:0] - min/max/step fields of enum message omitted
w,,OnbalansToelaatbaar,UnbalanceMode,,,4080,08,,,UIR,0=Niet toegestaan;1=Toegestaan,,[min:0;max:1;step:1;default:1]
r1,,OnbalansToelaatbaar,UnbalanceMode,,,4050,08,,,UIR,0=Niet toegestaan;1=Toegestaan,,,,,IGN:6,,,,default,,UIR,0=Not Permitted;1=Permitted,,[default:1] - min/max/step fields of enum message omitted
w,,VasteOnbalans,UnbalanceFlow,,,4080,09,,,SIR,,m³/h,[min:-100;max:100;step:1;default:0]
r1,,VasteOnbalans,UnbalanceFlow,,,4050,09,,,SIR,,m³/h,,min,,SIR,,m³/h,[min:-100],max,,SIR,,m³/h,[max:100],step,,SIR,,m³/h,[step:1],default,,SIR,,m³/h,[default:0]
#w,,ExtraVerwarmerType,ExtraHeaterType,,,4080,0a,,,UIR,,,[min:0;max:2;step:1;default:0]
#r,,ExtraVerwarmerType,ExtraHeaterType,,,4050,0a,,,UIR,,,,min,,UIR,,,[min:0],max,,UIR,,,[max:2],step,,UIR,,,[step:1],default,,UIR,,,[default:0]
#w,,TemperatuurNaverwarmer,PostheaterTemp,,,4080,0b,,,SIR,10,°C,[min:150;max:300;step:5;default:210]
#r,,TemperatuurNaverwarmer,PostheaterTemp,,,4050,0b,,,SIR,10,°C,,min,,SIR,10,°C,[min:150],max,,SIR,10,°C,[max:300],step,,SIR,10,°C,[step:5],default,,SIR,10,°C,[default:210]
#w,,SelectieIngang1,Input1Mode,,,4080,0c,,,UIR,0=Normally Closed;1=0-10V input;2=Normally Open;3=12V Bypass Open/0V Bypass Closed;4=0V Bypass Open/12V Bypass Closed,,[min:0;max:4;step:1;default:0]
#r,,SelectieIngang1,Input1Mode,,,4050,0c,,,UIR,0=Normally Closed;1=0-10V input;2=Normally Open;3=12V Bypass Open/0V Bypass Closed;4=0V Bypass Open/12V Bypass Closed,,,,,IGN:6,,,,default,,UIR,0=Normally Closed;1=0-10V input;2=Normally Open;3=12V Bypass Open/0V Bypass Closed;4=0V Bypass Open/12V Bypass Closed,,[default:0] - min/max/step fields of enum message omitted
#w,,MinimaleSpanningIngang1,Input1VMin,,,4080,0d,,,SIR,10,V,[min:0;max:100;step:5;default:0]
#r,,MinimaleSpanningIngang1,Input1VMin,,,4050,0d,,,SIR,10,V,,min,,SIR,10,V,[min:0],max,,SIR,10,V,[max:100],step,,SIR,10,V,[step:5],default,,SIR,10,V,[default:0]
#w,,MaximaleSpanningIngang1,Input1VMax,,,4080,0e,,,SIR,10,V,[min:0;max:100;step:5;default:100]
#r,,MaximaleSpanningIngang1,Input1VMax,,,4050,0e,,,SIR,10,V,,min,,SIR,10,V,[min:0],max,,SIR,10,V,[max:100],step,,SIR,10,V,[step:5],default,,SIR,10,V,[default:100]
#w,,VoorwaardenSchakelingang1,CN1Coupling,,,4080,0f,,,UIR,0=off;1=on;2=on if bypass open condition satisfied;3=bypass control;4=Bedroom valve,,[min:0;max:4;step:1;default:0]
#r,,VoorwaardenSchakelingang1,CN1Coupling,,,4050,0f,,,UIR,0=off;1=on;2=on if bypass open condition satisfied;3=bypass control;4=Bedroom valve,,,,,IGN:6,,,,default,,UIR,0=off;1=on;2=on if bypass open condition satisfied;3=bypass control;4=Bedroom valve,,[default:0] - min/max/step fields of enum message omitted
#w,,ToevoerventSchakelingang1,CN1Inlet,,,4080,10,,,UIR,0=FanOff;1=Minimal flow 50m³/h;2=FanMode1;3=FanMode2;4=FanMode3;5=ManualSwitch;6=MaximalFlow;7=FanNotActive,,[min:0;max:7;step:1;default:5]
#r,,ToevoerventSchakelingang1,CN1Inlet,,,4050,10,,,UIR,0=FanOff;1=Minimal flow 50m³/h;2=FanMode1;3=FanMode2;4=FanMode3;5=ManualSwitch;6=MaximalFlow;7=FanNotActive,,,,,IGN:6,,,,default,,UIR,0=FanOff;1=Minimal flow 50m³/h;2=FanMode1;3=FanMode2;4=FanMode3;5=ManualSwitch;6=MaximalFlow;7=FanNotActive,,[default:5] - min/max/step fields of enum message omitted
#w,,AfvoerventSchakelingang1,CN1Exhaust,,,4080,11,,,UIR,0=FanOff;1=Minimal flow 50m³/h;2=FanMode1;3=FanMode2;4=FanMode3;5=ManualSwitch;6=MaximalFlow;7=FanNotActive,,[min:0;max:7;step:1;default:5]
#r,,AfvoerventSchakelingang1,CN1Exhaust,,,4050,11,,,UIR,0=FanOff;1=Minimal flow 50m³/h;2=FanMode1;3=FanMode2;4=FanMode3;5=ManualSwitch;6=MaximalFlow;7=FanNotActive,,,,,IGN:6,,,,default,,UIR,0=FanOff;1=Minimal flow 50m³/h;2=FanMode1;3=FanMode2;4=FanMode3;5=ManualSwitch;6=MaximalFlow;7=FanNotActive,,[default:5] - min/max/step fields of enum message omitted
#w,,SelectieIngang2,Input2Mode,,,4080,12,,,UIR,0=Normally Closed;1=0-10V input;2=Normally Open;3=12V Bypass Open/0V Bypass Closed;4=0V Bypass Open/12V Bypass Closed,,[min:0;max:4;step:1;default:1]
#r,,SelectieIngang2,Input2Mode,,,4050,12,,,UIR,0=Normally Closed;1=0-10V input;2=Normally Open;3=12V Bypass Open/0V Bypass Closed;4=0V Bypass Open/12V Bypass Closed,,,,,IGN:6,,,,default,,UIR,0=Normally Closed;1=0-10V input;2=Normally Open;3=12V Bypass Open/0V Bypass Closed;4=0V Bypass Open/12V Bypass Closed,,[default:1] - min/max/step fields of enum message omitted
#w,,MinimaleSpanningIngang2,Input2VMin,,,4080,13,,,SIR,10,V,[min:0;max:100;step:5;default:0]
#r,,MinimaleSpanningIngang2,Input2VMin,,,4050,13,,,SIR,10,V,,min,,SIR,10,V,[min:0],max,,SIR,10,V,[max:100],step,,SIR,10,V,[step:5],default,,SIR,10,V,[default:0]
#w,,MaximaleSpanningIngang2,Input2VMax,,,4080,14,,,SIR,10,V,[min:0;max:100;step:5;default:100]
#r,,MaximaleSpanningIngang2,Input2VMax,,,4050,14,,,SIR,10,V,,min,,SIR,10,V,[min:0],max,,SIR,10,V,[max:100],step,,SIR,10,V,[step:5],default,,SIR,10,V,[default:100]
#w,,VoorwaardenSchakelingang2,CN2Coupling,,,4080,15,,,UIR,0=off;1=on;2=on if bypass open condition satisfied;3=bypass control;4=Bedroom valve,,[min:0;max:4;step:1;default:0]
#r,,VoorwaardenSchakelingang2,CN2Coupling,,,4050,15,,,UIR,0=off;1=on;2=on if bypass open condition satisfied;3=bypass control;4=Bedroom valve,,,,,IGN:6,,,,default,,UIR,0=off;1=on;2=on if bypass open condition satisfied;3=bypass control;4=Bedroom valve,,[default:0] - min/max/step fields of enum message omitted
#w,,ToevoerventSchakelingang2,CN2Inlet,,,4080,16,,,UIR,0=FanOff;1=Minimal flow 50m³/h;2=FanMode1;3=FanMode2;4=FanMode3;5=ManualSwitch;6=MaximalFlow;7=FanNotActive,,[min:0;max:7;step:1;default:5]
#r,,ToevoerventSchakelingang2,CN2Inlet,,,4050,16,,,UIR,0=FanOff;1=Minimal flow 50m³/h;2=FanMode1;3=FanMode2;4=FanMode3;5=ManualSwitch;6=MaximalFlow;7=FanNotActive,,,,,IGN:6,,,,default,,UIR,0=FanOff;1=Minimal flow 50m³/h;2=FanMode1;3=FanMode2;4=FanMode3;5=ManualSwitch;6=MaximalFlow;7=FanNotActive,,[default:5] - min/max/step fields of enum message omitted
#w,,AfvoerventSchakelingang2,CN2Exhaust,,,4080,17,,,UIR,0=FanOff;1=Minimal flow 50m³/h;2=FanMode1;3=FanMode2;4=FanMode3;5=ManualSwitch;6=MaximalFlow;7=FanNotActive,,[min:0;max:7;step:1;default:5]
#r,,AfvoerventSchakelingang2,CN2Exhaust,,,4050,17,,,UIR,0=FanOff;1=Minimal flow 50m³/h;2=FanMode1;3=FanMode2;4=FanMode3;5=ManualSwitch;6=MaximalFlow;7=FanNotActive,,,,,IGN:6,,,,default,,UIR,0=FanOff;1=Minimal flow 50m³/h;2=FanMode1;3=FanMode2;4=FanMode3;5=ManualSwitch;6=MaximalFlow;7=FanNotActive,,[default:5] - min/max/step fields of enum message omitted
#w,,Aardwarmtewisselaar,EWTMode,,,4080,18,,,UIR,0=off;1=on,,[min:0;max:1;step:1;default:0]
#r,,Aardwarmtewisselaar,EWTMode,,,4050,18,,,UIR,0=off;1=on,,,,,IGN:6,,,,default,,UIR,0=off;1=on,,[default:0] - min/max/step fields of enum message omitted
#w,,MinTempAardwarmtewisselaar,EWTTempMin,,,4080,19,,,SIR,10,°C,[min:0;max:100;step:5;default:50]
#r,,MinTempAardwarmtewisselaar,EWTTempMin,,,4050,19,,,SIR,10,°C,,min,,SIR,10,°C,[min:0],max,,SIR,10,°C,[max:100],step,,SIR,10,°C,[step:5],default,,SIR,10,°C,[default:50]
#w,,MaxTempAardwarmtewisselaar,EWTTempMax,,,4080,1a,,,SIR,10,°C,[min:150;max:400;step:5;default:250]
#r,,MaxTempAardwarmtewisselaar,EWTTempMax,,,4050,1a,,,SIR,10,°C,,min,,SIR,10,°C,[min:150],max,,SIR,10,°C,[max:400],step,,SIR,10,°C,[step:5],default,,SIR,10,°C,[default:250]
#w,,RHSensorAanwezig,RHTSensorPresent,,,4080,32,,,UIR,,,[min:0;max:1;step:1;default:0]
#r,,RHSensorAanwezig,RHTSensorPresent,,,4050,32,,,UIR,,,,min,,UIR,,,[min:0],max,,UIR,,,[max:1],step,,UIR,,,[step:1],default,,UIR,,,[default:0]
#w,,GevoeligheidRHSensor,RHTSensorSensitivity,,,4080,33,,,SIR,,,[min:-2;max:2;step:1;default:0]
#r,,GevoeligheidRHSensor,RHTSensorSensitivity,,,4050,33,,,SIR,,,,min,,SIR,,,[min:-2],max,,SIR,,,[max:2],step,,SIR,,,[step:1],default,,SIR,,,[default:0]
#w,,HelderheidAchtergrondVerlichting,BacklightLevel,,,4080,1d,,,UIR,,%,[min:0;max:100;step:5;default:10]
#r,,HelderheidAchtergrondVerlichting,BacklightLevel,,,4050,1d,,,UIR,,%,,min,,UIR,,%,[min:0],max,,UIR,,%,[max:100],step,,UIR,,%,[step:5],default,,UIR,,%,[default:10]
#w,,DebietCorrectie,FlowCorrection,,,4080,3f,,,UIR,,%,[min:90;max:110;step:1;default:100]
#r1,,DebietCorrectie,FlowCorrection,,,4050,3f,,,UIR,,%,,min,,UIR,,%,[min:90],max,,UIR,,%,[max:110],step,,UIR,,%,[step:1],default,,UIR,,%,[default:100]
#w,,StandaardpositieSchakelaar,SwitchDefaultPos,,,4080,40,,,UIR,0=off;1=on,,[min:0;max:1;step:1;default:1]
#r,,StandaardpositieSchakelaar,SwitchDefaultPos,,,4050,40,,,UIR,0=off;1=on,,,,,IGN:6,,,,default,,UIR,0=off;1=on,,[default:1] - min/max/step fields of enum message omitted

mqtt-hassio.cfg:

# Configuration file for ebusd MQTT integration with Home Assistant (https://www.home-assistant.io/).

# Use this file with ebusd in MQTT JSON mode to have many seen messages automatically appear on HA. This is achieved by
# using the MQTT Discovery feature of Home Assistant (see https://www.home-assistant.io/integrations/mqtt#mqtt-discovery).
# The commandline options to ebusd should contain e.g.:
# --mqttport=1883 --mqttjson --mqttint=/etc/ebusd/mqtt-hassio.cfg

# This file allows flexible construction of MQTT topics and payloads depending on message and field definitions as well
# as global status topics.
# It is a set of named variables (or constants) with the name on the left of an equal sign and the value on the right,
# where only the value is allowed to contain references to other variables.
# A reference to a variable is escaped by a leading "%" character in front of the variable name consisting of only
# alphabetic characters or the underscore. A double percent character "%%" is replaced by a single "%" in the value.
# Curly braces may be used to separate a variable explicitly from the rest, e.g. as "%{version}" instead of "%version".
# Every variable without an underscore in the name is automatically made available as well with an uppercase name and a
# normalized value composed of only alphanumeric characters or underscore (i.e. suitable for being part of a topic).
# When using "?=" instead of only the equal sign in a variable definition, the variable value is set to empty when one
# of the variables referred to is empty or missing.

# The variable replacements are constructed for each message and/or field (depending on whether the topic is field
# specific or not) in the following order:

# 1. predefined constants from ebusd, i.e.
#   %version the ebusd version number.
#   %prefix the invariable prefix part of the "--mqtttopic" configuration option, defaults to "ebusd/".
#   %prefixn the same as %prefix but without trailing slashes or underscores.

# 2. variables referring to constants only (directly or indirectly).

# 3. circuit and message specific variables:
#   %circuit the circuit name.
#   %name the message name.
#   %priority the message poll priority (or 0).
#   %level the message access level (or empty).
#   %messagecomment the message comment.
#   %direction the message direction ("r", "w", "u", or "uw").
#   %topic the message update topic built from the mqtttopic configuration option (only if the topic is not field
#     specific) and/or the %topic variable defined here.

# 4. the direction mapped from variables named "direction_map-%direction" with the actual direction in the suffix.
#     Available as "%direction_map".

# 5. the field type mapped from variables named "type_map-%direction-%type" or "type_map-%type" as fallback with the
#     field type and the optional direction in the suffix. The variable including the direction is evaluated first and
#     if it is missing or the result is empty, the variable excluding the direction is used instead.
#     This is also an implicit field type filter as missing or empty mappings are not published at all.
#     Available as "%type_map".

# 6. other field specific variables for each field (only once for each message if the topic is field specific):
#   %index the numeric field index (excluding ignored fields).
#   %field the field name and key for JSON objects (equals the field index if no name is defined or the names are not
#     unique in the message).
#   %fieldname the field name (and nothing else like in %field, might be empty though!)
#   %type the field type (one of "number", "list", "string", "date", "time", or "datetime").
#   %basetype the base data type ID (e.g. "UCH").
#   %comment the field comment (if any).
#   %unit the field unit (if any).
#   %min, %max, and %step the minimum/maximum possible value and step value for number fields.
#   %topic the field (or message) update topic built from the mqtttopic configuration option and/or the %topic variable
#     defined here.

# 7. optional field type switch in "%type_switch" using the value of the variable named "type_switch-by" and matching it
#     against the value lines of the variable named "type_switch-%type" with the field type in the suffix.
#     The value of such a variable needs to be a constant list of string pairs with one pair per line. Each pair is
#     separated by "=" and the left part is the value set to the "type_switch" variable when the wildcard pattern in the
#     right part matches the value of the "type_switch-by" value. The list is traversed from top to bottom with the
#     first match stopping the evaluation. Optionally, "type_switch-names" can be used to define a list of variable
#     names to be set in addition to the "type_switch" variable, in which case a list of variable names (comma
#     separated) is expected as "type_switch-names" value and the appropriate values to set on the left side of each
#     match list entry.
#     Available as "%type_switch" and optionally by the set of fields as defined in "%type_switch-names".

# 8. optional field type part mapping in "%type_part" for each field type in variables named "type_part-%type" with the
#     field type in the suffix (or the value of the "type_part-by" variable).

# 9. if the %fields_payload variable is used, then it is set to the concatenation of all fields of the message:
#   %field_payload is expected to build a single field payload.
#   %field-separator is the separator placed between consecutive field payloads.
#   %fields_payload is set to the concatenation of all fields of the message, separated by %field-separator.

# 10. %definition-topic, %definition-payload, and %definition-retain to build the message definition topic and payload
#     and determine the retain value.

# Before constructing the variable replacements, the messages and fields can optionally be filtered in order to use
# certain message definitions only. All of these criteria are applied, so they are basically combined by "AND".
# Filters with a "partial match" mention in the documentation allow using a limited glob/regex inspired case insensitive
# matching with the following options:
# - "|" allows defining alternatives, e.g. "a|b" matches "but" as well as "all".
# - "^" matches the beginning of the input, e.g. "^al" matches "al" but not "hal".
# - "$" matches the end of the input, e.g. "al$" matches "hal" but not "all".
# - "*" matches a single arbitrary length wildcard part in the middle, e.g. "^a*l$" matches "all" but not "always".

# include only messages having data sent at least once (only checked for passive or read messages, not for active write)
# when set to 1. If set to >1, then all messages passing the other filter criteria (including active read messages) will
# automatically be set to have a poll priority of at most this value, so these are automatically being polled.
# HA integration: filtering only seen messages to avoid unnecessary "pollution" and auto-poll all matched messages
filter-seen = 5
# include only messages having a priority less than or equal to the specified value.
#filter-priority =
# include only messages having the specified circuit (partial match, alternatives and wildcard supported).
#filter-circuit =
# exclude messages having the specified circuit (partial match, alternatives and wildcard supported).
#filter-non-circuit =
# include only messages having the specified name (partial match, alternatives and wildcard supported).
# HA integration: filter to some useful names for monitoring the heating circuit
filter-name = *
# exclude messages having the specified name (partial match, alternatives and wildcard supported).
#filter-non-name =
# include only messages having the specified level (partial match, alternatives and wildcard supported).
# Note: This is a filter on top of the messages already filtered implicitly for the ebusd "mqtt" user (if any).
# Note: Since the empty string matches all levels, an explicit check for empty string (with "^$") needs to be used for
# including only messages without a level.
filter-level = ^$
# include only messages having the specified direction ("r", "w", "u", or "uw". partial match, alternatives and wildcard supported).
# HA integration: writable messages excluded for now
filter-direction = r|u|^w
# HA integration: for including writable messages, use this line or overwrite with '--mqttvar=filter-direction=r|u|^w'.
#filter-direction = r|u|^w
# include only fields having the specified name (partial match, alternatives and wildcard supported).
#filter-field =
# exclude fields having the specified name (partial match, alternatives and wildcard supported).
# HA integration: exclude the useless sensor ok/cutoff info from temperature sensor.
filter-non-field = ^sensor$

# HA integration: home assistant configuration topics prefix
haprefix = homeassistant
# HA integration: the area of all entities in home assistant
area = Ventilation

# HA integration: circuit specific part used as device entity for message definitions below
circuit_part = {
   "identifiers":"%{PREFIX}_%CIRCUIT",
   "manufacturer":"ebusd.eu",
   "name":"%prefixn %circuit",
   "via_device":"%PREFIXN",
   "sw_version":"%version",
   "suggested_area":"%area"
  }

# the field type mapped from variables named "type_map-%direction-%type" or "type_map-%type" as fallback with the
# field type and the optional direction in the suffix. The variable including the direction is evaluated first and
# if it is missing or the result is empty, the variable excluding the direction is used instead.
# This is also an implicit field type filter as missing or empty mappings are not published at all.
type_map-number = number
type_map-list = string
type_map-time = time
# HA integration: skip string/date/datetime types completely
type_map-string =
type_map-date =
type_map-datetime =

# field type switch designator, see below.
# HA integration: this is used to set several variable values depending on the field type, message name, field name, and unit.
type_switch-by = %name%field,%unit

# field type switch variables names to use in addition to %type_switch in case of multiple keys (separated by comma).
# HA integration: var names for topic/class/state/sub values mapped from field type, message name, field name, and unit.
type_switch-names = type_topic,type_class,type_state,type_sub

# field type switch for each field type and optionally direction (between dash before the field type) available as
# %type_switch (as well as the variable names defined in "type_switch-names" if any).
# The value needs to be a constant list of string pairs with one pair per line. Each pair is separated by "=" and the
# left part is the value set to the type_switch variable (as well as the variable names defined in %type_switch-names)
# when the wildcard string in the right part matched the "type_switch-by" value. The list is traversed from top to
# bottom stopping at the first match. If direction specific definitions exist, these are traversed first. If no line
# matches at all, the variable(s) are set to the empty string.
# HA integration: the mapping list for (potentially) writable number entities by field type, name, message, and unit.
type_switch-w-number =
    number,temperature, = temp|,°C$|,K$
    number,, = integral|,°min$
    number,power_factor, = power*%%
    number,power, = power|,kW$|,W$
    number,voltage, = volt|,V$
    number,current, = current,|,A$
    number,pressure, = bar$
    number,gas, = gas*/min$
    number,volume, = m³$
    number,volume_flow_rate, = m³/h$
    number,humidity, = humid*%%$
    number,, =

# HA integration: the mapping list for numeric sensor entities by field type, name, message, and unit.
type_switch-number =
    sensor,,total_increasing = poweron|count,
    sensor,temperature,measurement = temp|,°C$|,K$
    sensor,power_factor,measurement = power*%%
    sensor,power,measurement = power|,kW$|,W$
    sensor,voltage,measurement = volt|,V$
    sensor,current,measurement = current,|,A$
    sensor,,measurement = integral|,°min$
    sensor,energy,total_increasing = energy|,Wh$
    sensor,yield,total_increasing = total*,Wh$
    sensor,duration,total_increasing = hours|days|,h$|,d$
    sensor,,total_increasing = starts*,$
    sensor,pressure,measurement = bar$|Pa$
    sensor,gas,measurement = gas*/min$|air*,m³$
    sensor,volume,total_increasing = total*,m³$
    sensor,volume,measurement = m³$
    sensor,volume_flow_rate,measurement = m³/h$
    sensor,carbon_dioxide,measurement = CO2*,ppm$
    sensor,humidity,measurement = humid*%%$
    sensor,, =

# HA integration: the mapping list for (potentially) writable binary switch entities by field type, name, message, and unit.
type_switch-w-list =
    switch,, = onoff
    switch,,,yesno = yesno
    select,, =

# HA integration: the mapping list for rather binary sensor entities by field type, name, message, and unit.
type_switch-list =
    binary_sensor,,measurement = onoff
    binary_sensor,,measurement,yesno = yesno
    sensor,,,list =

# HA integration: the mapping list for (potentially) writable string entities containing a time value by field type, name, message, and unit.
type_switch-w-time =
    text,,,time = from,|to,|time2,|timer
    text,,,time3 = time,

type_switch-time =
    sensor,,,time = from,|to,|time2,|timer
    sensor,,,time3 = time,

# HA integration: currently unused mapping lists for non-numeric/non-binary entities.
#type_switch-string =
#    sensor,, =
#type_switch-date =
#    sensor,,measurement =
#type_switch-datetime =
#    sensor, =

# HA integration: optional variable with the entity device class for numbers
type_class_number ?= ,
  "device_class":"%type_class"

# HA integration: optional variable with the entity device class for sensors
type_class_sensor ?= ,
  "device_class":"%type_class"

# HA integration: optional variable with the entity state class
state_class ?= ,
  "state_class":"%type_state"

# HA integration: optional variable with the entity unit
unit_of_measurement ?= ,
  "unit_of_measurement":"%unit"

# HA integration: optional variable with the minimum numeric value
min_number ?= ,
  "min":%min

# HA integration: optional variable with the maximum numeric value
max_number ?= ,
  "max":%max

# HA integration: optional variable with the numeric step value
step_number ?= ,
  "step":%step

# field type part suffix to use instead of the field type itself, see below.
# HA integration: %type_part variable mapped from the mapped %type_topic and optional %type_sub
type_part-by = %type_topic%type_sub

# field type part mappings for each field type (or the "type_part-by" variable value) in the suffix (available as
# %type_part).
# HA integration: %type_part variable for number %type_topic
type_part-number = ,
  "command_topic":"%topic/set"%min_number%max_number%step_number%unit_of_measurement%state_class%type_class_number

# HA integration: %type_part variable for sensor %type_topic
type_part-sensor = %unit_of_measurement%state_class%type_class_sensor

# HA integration: %type_part variable for switch %type_topic
type_part-switch = ,
  "command_topic":"%topic/set",
  "payload_on":"on",
  "payload_off":"off"%state_class

type_part-switchyesno = ,
  "command_topic":"%topic/set",
  "payload_on":"yes",
  "payload_off":"no"%state_class

# HA integration: %type_part variable for binary_sensor %type_topic
type_part-binary_sensor = ,
  "payload_on":"on",
  "payload_off":"off"%state_class

type_part-binary_sensoryesno = ,
  "payload_on":"yes",
  "payload_off":"no"%state_class

# HA integration: %type_part variable for text %type_topic
type_part-texttime = ,
  "command_topic":"%topic/set",
  "pattern": "^[012][0-9]:[0-5][0-9]$"%state_class
type_part-texttime3 = ,
  "command_topic":"%topic/set",
  "pattern": "^[012][0-9]:[0-5][0-9]:[0-5][0-9]$"%state_class

# optional format string for converting a fields value list into %field_values.
# "$value" and "$text" are being replaced by the corresponding part.
field_values-entry = "$text"
# optional separator for concatenating of field value list items.
field_values-separator = ,
# optional prefix for surrounding field value list items.
field_values-prefix = [
# optional suffix for surrounding field value list items.
field_values-suffix = ]

# HA integration: %type_part variable for select %type_topic and sensor with list of known values
type_part-select = ,
  "command_topic":"%topic/set",
  "options":%field_values
type_part-sensorlist = ,
  "device_class":"enum",
  "options":%field_values

# the field specific part (evaluated after the message specific part).
# HA integration: set to the mapped %type_part from above
field_payload = %type_part

# the message definition config topic, payload, and retain setting.
# HA integration: the config topic for HA's MQTT discovery for the ebusd message definition found.
# set to conditionally to avoid incomplete configs.
definition-topic ?= %haprefix/%type_topic/%{TOPIC}_%FIELD/config
# HA integration: this is the config topic payload for HA's MQTT discovery.
definition-payload = {
  "unique_id":"%{TOPIC}_%FIELD",
  "name":"%name %fieldname",
  "device":%circuit_part,
  "value_template":"{{value_json[\"%field\"].value}}",
  "state_topic":"%topic"%field_payload
 }
#definition-retain = 0

# the message value topic (if other than the default). If set here, it will be replaced by the "--mqtttopic"
# configuration option only if that one contains at least one variable. If the the "--mqtttopic" configuration option
# does not contain any variable, it is taken as prefix and can be used here as well.
# HA integration: use the prefix from --mqtttopic and non field specific topic for the actual data
topic = %prefix/%circuit/%name

# HA integration: global part used as device entity for the global config topics
global_device = {
   "identifiers":"%PREFIXN",
   "manufacturer":"ebusd.eu",
   "name":"%prefixn",
   "sw_version":"%version",
   "suggested_area":"%area"
  }

# HA integration: common prefix for global parts
global_prefix = {
  "unique_id":"%TOPIC",
  "device":%global_device,
  "state_topic":"%topic",
  "name":"global %name"

# HA integration: boolean suffix for global parts
global_boolean_suffix = ,
  "payload_on":"true",
  "payload_off":"false"
 }

# the common global config topic, payload, and retain setting (used by running, version, signal, uptime, updatecheck,
# and scan if not otherwise defined explicitly).
# HA integration: the config topic for HA's MQTT discovery for the ebusd global parts.
def_global-topic = %haprefix/sensor/%TOPIC/config
def_global-payload = %global_prefix
 }
#def_global-retain = 0

# individual global running, version, signal, uptime, updatecheck, and scan config topic, payload, and retain setting.
def_global_running-topic = %haprefix/binary_sensor/%TOPIC/config
def_global_running-payload = %global_prefix,
  "device_class":"running"%global_boolean_suffix
def_global_version-topic =
def_global_uptime-payload = %global_prefix,
  "device_class":"duration",
  "state_class":"total_increasing",
  "unit_of_measurement":"s"
 }
def_global_signal-topic = %haprefix/binary_sensor/%TOPIC/config
def_global_signal-payload = %global_prefix,
  "device_class":"connectivity"%global_boolean_suffix

def_global_updatecheck-topic = %haprefix/update/%TOPIC/config
def_global_updatecheck-payload = %global_prefix,
  "value_template":"{%% set my_new = value_json|truncate(255)|regex_replace(find=',.*| available|revision v|version v|OK',replace='') %%}{%% if my_new == '' %%}{%% set my_new = '%version' %%}{%% endif %%}{{ {'installed_version':'%version','latest_version':my_new,'entity_picture':'https://ebusd.eu/logo-32x32.png','release_url':'https://github.com/john30/ebusd/releases/latest'} | tojson }}"
 }

# optional secondary update check for the enhanced eBUS device (consuming the same topic though!)
def_global_updatecheck_device-topic = %haprefix/update/%{TOPIC}_device/config
def_global_updatecheck_device-payload =  {
  "unique_id":"%{TOPIC}_device",
  "device":{
    "identifiers":"%{PREFIXN}_device",
    "manufacturer":"ebusd.eu",
    "name":"%prefixn eBUS device",
    "via_device":"%PREFIXN",
    "suggested_area":"%area"
  },
  "state_topic":"%topic",
  "name":"%name",
  "value_template":"{%% set my_new = value_json|truncate(255)|regex_replace(find='^[^,]*|, device firmware |,.*| available',replace='') %%}{%% set my_cur = 'old' %%}{%% if my_new == '' %%}{%% set my_new = 'current' %%}{%% set my_cur = 'current' %%}{%% endif %%}{{ {'installed_version':my_cur,'latest_version':my_new,'entity_picture':'https://adapter.ebusd.eu/favicon.ico','release_url':'https://adapter.ebusd.eu/firmware/ChangeLog'} | tojson }}"
 }

# the topic and payload to listen to in order to republish all config messages.
# HA integration: force republish of all configs when HA goes down and comes up again.
config_restart-topic = %haprefix/status
config_restart-payload = online

and finally mqtt-integration.cfg:

# Configuration file for ebusd MQTT integration.

# This file allows flexible construction of MQTT topics and payloads depending on message and field definitions as well
# as global status topics.
# It is a set of named variables (or constants) with the name on the left of an equal sign and the value on the right,
# where only the value is allowed to contain references to other variables.
# A reference to a variable is escaped by a leading "%" character in front of the variable name consisting of only
# alphabetic characters or the underscore. A double percent character "%%" is replaced by a single "%" in the value.
# Curly braces may be used to separate a variable explicitly from the rest, e.g. as "%{version}" instead of "%version".
# Every variable without an underscore in the name is automatically made available as well with an uppercase name and a
# normalized value composed of only alphanumeric characters or underscore (i.e. suitable for being part of a topic).
# When using "?=" instead of only the equal sign in a variable definition, the variable value is set to empty when one
# of the variables referred to is empty or missing.

# The variable replacements are constructed for each message and/or field (depending on whether the topic is field
# specific or not) in the following order:

# 1. predefined constants from ebusd, i.e.
#   %version the ebusd version number.
#   %prefix the invariable prefix part of the "--mqtttopic" configuration option, defaults to "ebusd/".
#   %prefixn the same as %prefix but without trailing slashes or underscores.

# 2. variables referring to constants only (directly or indirectly).

# 3. circuit and message specific variables:
#   %circuit the circuit name.
#   %name the message name.
#   %priority the message poll priority (or 0).
#   %level the message access level (or empty).
#   %messagecomment the message comment.
#   %direction the message direction ("r", "w", "u", or "uw").
#   %topic the message update topic built from the mqtttopic configuration option (only if the topic is not field
#     specific) and/or the %topic variable defined here.

# 4. the direction mapped from variables named "direction_map-%direction" with the actual direction in the suffix.
#     Available as "%direction_map".

# 5. the field type mapped from variables named "type_map-%direction-%type" or "type_map-%type" as fallback with the
#     field type and the optional direction in the suffix. The variable including the direction is evaluated first and
#     if it is missing or the result is empty, the variable excluding the direction is used instead.
#     This is also an implicit field type filter as missing or empty mappings are not published at all.
#     Available as "%type_map".

# 6. other field specific variables for each field (only once for each message if the topic is field specific):
#   %index the numeric field index (excluding ignored fields).
#   %field the field name and key for JSON objects (equals the field index if no name is defined or the names are not
#     unique in the message).
#   %fieldname the field name (and nothing else like in %field, might be empty though!)
#   %type the field type (one of "number", "list", "string", "date", "time", or "datetime").
#   %basetype the base data type ID (e.g. "UCH").
#   %comment the field comment (if any).
#   %unit the field unit (if any).
#   %min, %max, and %step the minimum/maximum possible value and step value for number fields.
#   %topic the field (or message) update topic built from the mqtttopic configuration option and/or the %topic variable
#     defined here.

# 7. optional field type switch in "%type_switch" using the value of the variable named "type_switch-by" and matching it
#     against the value lines of the variable named "type_switch-%type" with the field type in the suffix.
#     The value of such a variable needs to be a constant list of string pairs with one pair per line. Each pair is
#     separated by "=" and the left part is the value set to the "type_switch" variable when the wildcard pattern in the
#     right part matches the value of the "type_switch-by" value. The list is traversed from top to bottom with the
#     first match stopping the evaluation. Optionally, "type_switch-names" can be used to define a list of variable
#     names to be set in addition to the "type_switch" variable, in which case a list of variable names (comma
#     separated) is expected as "type_switch-names" value and the appropriate values to set on the left side of each
#     match list entry.
#     Available as "%type_switch" and optionally by the set of fields as defined in "%type_switch-names".

# 8. optional field type part mapping in "%type_part" for each field type in variables named "type_part-%type" with the
#     field type in the suffix (or the value of the "type_part-by" variable).

# 9. if the %fields_payload variable is used, then it is set to the concatenation of all fields of the message:
#   %field_payload is expected to build a single field payload.
#   %field-separator is the separator placed between consecutive field payloads.
#   %fields_payload is set to the concatenation of all fields of the message, separated by %field-separator.

# 10. %definition-topic, %definition-payload, and %definition-retain to build the message definition topic and payload
#     and determine the retain value.

# Before constructing the variable replacements, the messages and fields can optionally be filtered in order to use
# certain message definitions only. All of these criteria are applied, so they are basically combined by "AND".
# Filters with a "partial match" mention in the documentation allow using a limited glob/regex inspired case insensitive
# matching with the following options:
# - "|" allows defining alternatives, e.g. "a|b" matches "but" as well as "all".
# - "^" matches the beginning of the input, e.g. "^al" matches "al" but not "hal".
# - "$" matches the end of the input, e.g. "al$" matches "hal" but not "all".
# - "*" matches a single arbitrary length wildcard part in the middle, e.g. "^a*l$" matches "all" but not "always".

# include only messages having data sent at least once (only checked for passive or read messages, not for active write)
# when set to 1. If set to >1, then all messages passing the other filter criteria (including active read messages) will
# automatically be set to have a poll priority of at most this value, so these are automatically being polled.
filter-seen = 1
# include only messages having a priority less than or equal to the specified value.
#filter-priority =
# include only messages having the specified circuit (partial match, alternatives and wildcard supported).
#filter-circuit =
# exclude messages having the specified circuit (partial match, alternatives and wildcard supported).
#filter-non-circuit =
# include only messages having the specified name (partial match, alternatives and wildcard supported).
#filter-name =
# exclude messages having the specified name (partial match, alternatives and wildcard supported).
#filter-non-name =
# include only messages having the specified level (partial match, alternatives and wildcard supported).
# Note: This is a filter on top of the messages already filtered implicitly for the ebusd "mqtt" user (if any).
# Note: Since the empty string matches all levels, an explicit check for empty string (with "^$") needs to be used for
# including only messages without a level.
filter-level = ^$
# include only messages having the specified direction ("r", "w", "u", or "uw". partial match, alternatives and wildcard supported).
filter-direction = r|u
# include only fields having the specified name (partial match, alternatives and wildcard supported).
#filter-field =
# exclude fields having the specified name (partial match, alternatives and wildcard supported).
filter-non-field = ^sensor$

# the field type mapped from variables named "type_map-%direction-%type" or "type_map-%type" as fallback with the
# field type and the optional direction in the suffix. The variable including the direction is evaluated first and
# if it is missing or the result is empty, the variable excluding the direction is used instead.
# This is also an implicit field type filter as missing or empty mappings are not published at all.
type_map-number = number
type_map-list = string
type_map-string = string
type_map-date = string
type_map-time = string
type_map-datetime = string

# field type switch designator, see below.
#type_switch-by = %name%field,%unit

# field type switch variables names to use in addition to %type_switch in case of multiple keys (separated by comma).
#type_switch-names = type_topic,type_class,type_state

# field type switch for each field type and optionally direction (between dash before the field type) available as
# %type_switch (as well as the variable names defined in "type_switch-names" if any).
# The value needs to be a constant list of string pairs with one pair per line. Each pair is separated by "=" and the
# left part is the value set to the type_switch variable (as well as the variable names defined in %type_switch-names)
# when the wildcard string in the right part matched the "type_switch-by" value. The list is traversed from top to
# bottom stopping at the first match. If direction specific definitions exist, these are traversed first. If no line
# matches at all, the variable(s) are set to the empty string.
#type_switch-w-number =

# field type part suffix to use instead of the field type itself, see below.
#type_part-by = %type_topic

# field type part mappings for each field type (or the "type_part-by" variable value) in the suffix (available as
# %type_part).
#type_part-number = ,

# optional format string for converting a fields value list into %field_values.
# "$value" and "$text" are being replaced by the corresponding part.
#field_values-entry = $text
# optional separator for concatenating of field value list items.
#field_values-separator = ,
# optional prefix for surrounding field value list items.
#field_values-prefix =
# optional suffix for surrounding field value list items.
#field_values-suffix =

# the field specific part (evaluated after the message specific part).
#field_payload = %type_part

# the message definition config topic, payload, and retain setting.
definition-topic = %prefixn/config/%CIRCUIT/%NAME/%FIELD
definition-payload = {
  "name":"%prefixn %circuit %name %field",
  "topic":"%topic"
 }
#definition-retain = 0

# the message value topic (if other than the default). If set here, it will be replaced by the "--mqtttopic"
# configuration option only if that one contains at least one variable. If the the "--mqtttopic" configuration option
# does not contain any variable, it is taken as prefix and can be used here as well.
#topic=%prefix/%circuit/%name

# the common global config topic, payload, and retain setting (used by running, version, signal, uptime, updatecheck,
# and scan if not otherwise defined explicitly).
def_global-topic = %prefixn/config/global/%FIELD
def_global-payload = {
  "name":"%prefixn global %field",
  "topic":"%topic"
 }
#def_global-retain = 0

# individual global running, version, signal, uptime, updatecheck, and scan config topic, payload, and retain setting.
# a secondary update check for the eBUS device (consuming the same updatecheck topic) can be set up, which will only be
# used if an enhanced eBUS device supporting extra info is present (does not make use of the common global defaults).
#def_global_running-...
#def_global_version-...
#def_global_signal-...
#def_global_uptime-...
#def_global_updatecheck-...
#def_global_updatecheck_device-...
#def_global_scan-...

# the topic and payload to listen to in order to republish all config messages.
#config_restart-topic =
#config_restart-payload =
pvyleta commented 3 months ago
  1. if I change a setting, it only changes for aprox. 2 minutes and then reverts to the default setting

Can you give me exampel of a setting that does this? AFAIK only VentilatorMode does that; the VentilatorModeAlternative should not do that, neither the other settings.

  1. why do you use the mqtt-integration.cfg? the mqtt-hassio.cfg should be enough
  2. can you provide logs from the messages that are sent by the ebusd-addon to the ebus adapter, as well as what is read back in those two minutes? I extended the addon recently so that it should be able to log messages.
RogMoe commented 3 months ago

I installed ebusd on a Pi, and the default install puts three files in /etc/ebusd.

I just removed all files so only (your) mqtt-hassio.cfg and (your) 3c.Excellent300.10608.10706.plus.csv are left in /etc/ebusd. Afer reboot I waited for HA/mqtt to get populated with data. Then I changed most paramaters ONE notch (in bold printing) and left the log to get filled. See below.

After roughly 2 minutes values change back to their default. That goes for almost ALL values, except VasteOnbalans. That value stays at "2" all the time, allthough manually set and reset by me.

VentilatorModeAlternative does NOT influnce the Brink in any way. VentilatorMode does, but only for 2 minutes...

2024-05-17 19:51:22.911 [bus notice] device status: transport opened 2024-05-17 19:51:22.973 [mqtt error] unable to connect, retrying: errno 101=Network is unreachable 2024-05-17 19:51:22.973 [main notice] ebusd 23.3.23.3 started with full scan on device: /dev/ttyUSB0, serial 2024-05-17 19:51:23.044 [bus notice] bus started with own address 31/36 2024-05-17 19:51:23.044 [bus notice] signal acquired 2024-05-17 19:51:23.205 [bus notice] new master 37, master count 2 2024-05-17 19:51:23.205 [update notice] sent poll-read Excellent300 FoutHistorie QQ=31: 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2024-05-17 19:51:29.144 [update notice] sent poll-read Excellent300 VentilatorMode QQ=31: Minimaal 2024-05-17 19:51:33.047 [main notice] starting initial full scan 2024-05-17 19:51:33.047 [mqtt error] publish: The client is not currently connected. 2024-05-17 19:51:38.025 [bus notice] scan 3c: ;ENCON; ;-;- 2024-05-17 19:51:38.060 [update notice] store 3c ident: done 2024-05-17 19:51:38.060 [update notice] sent scan-read scan.3c QQ=31: ENCON; ;-;- 2024-05-17 19:51:38.061 [bus notice] scan 3c: ;ENCON; ;-;- 2024-05-17 19:51:43.048 [main error] unable to load scan config 3c: list files in encon ERR: element not found 2024-05-17 19:51:43.048 [main error] scan config 3c: ERR: element not found 2024-05-17 19:51:45.049 [mqtt error] publish: The client is not currently connected. 2024-05-17 19:51:48.061 [mqtt notice] connection re-established 2024-05-17 19:51:48.078 [mqtt notice] connection established 2024-05-17 19:52:06.904 [update notice] sent poll-read Excellent300 ToevoerDebiet QQ=31: 131 2024-05-17 19:52:29.327 [bus error] poll Excellent300 AfvoerDebiet failed: ERR: wrong symbol received 2024-05-17 19:52:30.033 [bus notice] max. symbols per second: 182 2024-05-17 19:52:35.120 [update notice] sent poll-read Excellent300 HuidigToevoerDebiet QQ=31: 131 2024-05-17 19:52:41.139 [update notice] sent poll-read Excellent300 HuidigAfvoerDebiet QQ=31: 130 2024-05-17 19:52:47.130 [update notice] sent poll-read Excellent300 ToevoerFanSnelheid QQ=31: 1590 2024-05-17 19:52:47.326 [main notice] scan completed 1 time(s), check again 2024-05-17 19:52:53.145 [update notice] sent poll-read Excellent300 AfvoerFanSnelheid QQ=31: 1638 2024-05-17 19:52:59.126 [update notice] sent poll-read Excellent300 BypassStatus QQ=31: Gesloten 2024-05-17 19:53:05.125 [update notice] sent poll-read Excellent300 VoorverwarmerStatus QQ=31: Uit 2024-05-17 19:53:11.149 [update notice] sent poll-read Excellent300 VoorverwarmVermogen QQ=31: 0 2024-05-17 19:53:17.134 [update notice] sent poll-read Excellent300 VorstStatus QQ=31: NoFrost 2024-05-17 19:53:23.153 [update notice] sent poll-read Excellent300 BinnenTemperatuur QQ=31: 24.6 2024-05-17 19:53:29.131 [update notice] sent poll-read Excellent300 BuitenTemperatuur QQ=31: 16.3 2024-05-17 19:53:29.381 [main notice] scan completed 2 time(s), check again 2024-05-17 19:53:29.986 [main notice] update check: OK 2024-05-17 19:53:35.128 [update notice] sent poll-read Excellent300 FilterStatus QQ=31: Schoon 2024-05-17 19:53:41.151 [update notice] sent poll-read Excellent300 ToevoerDruk QQ=31: 52.0 2024-05-17 19:53:47.139 [update notice] sent poll-read Excellent300 AfvoerDruk QQ=31: 67.0 2024-05-17 19:53:53.191 [update notice] sent poll-read Excellent300 DebietAfwezig QQ=31: 50;0;50;50;50 2024-05-17 19:53:59.152 [update notice] sent poll-read Excellent300 DebietMinimaal QQ=31: 130;50;300;5;100 2024-05-17 19:54:01.922 [update notice] received unknown BC cmd: 37fe07040a400816002202ffffffff 2024-05-17 19:54:05.168 [update notice] sent poll-read Excellent300 DebietNormaal QQ=31: 175;50;300;5;150 2024-05-17 19:54:11.174 [update notice] sent poll-read Excellent300 DebietMaximaal QQ=31: 225;50;300;5;225 2024-05-17 19:54:12.044 [main notice] scan completed 3 time(s), check again 2024-05-17 19:54:17.186 [update notice] sent poll-read Excellent300 BypassTemperatuur QQ=31: 19.0;15.0;35.0;0.5;22.0 2024-05-17 19:54:23.151 [update notice] sent poll-read Excellent300 BypassHysterese QQ=31: 1.0;0.0;5.0;0.5;2.0 2024-05-17 19:54:29.183 [update notice] sent poll-read Excellent300 BypassMode QQ=31: Auto;Auto 2024-05-17 19:54:35.196 [update notice] sent poll-read Excellent300 OnbalansToelaatbaar QQ=31: Toegestaan;Permitted 2024-05-17 19:54:41.161 [update notice] sent poll-read Excellent300 VasteOnbalans QQ=31: 1;-100;100;1;0 2024-05-17 19:54:47.202 [update notice] sent poll-read Excellent300 FoutHistorie QQ=31: 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2024-05-17 19:54:53.139 [update notice] sent poll-read Excellent300 VentilatorMode QQ=31: Minimaal 2024-05-17 19:54:54.101 [main notice] scan completed 4 time(s), check again 2024-05-17 19:54:59.121 [update notice] sent poll-read Excellent300 ToevoerDebiet QQ=31: 131 2024-05-17 19:55:05.148 [update notice] sent poll-read Excellent300 AfvoerDebiet QQ=31: 130 2024-05-17 19:55:11.142 [update notice] sent poll-read Excellent300 HuidigToevoerDebiet QQ=31: 129 2024-05-17 19:55:17.122 [update notice] sent poll-read Excellent300 HuidigAfvoerDebiet QQ=31: 128

2024-05-17 19:55:19.626 [update notice] sent write Excellent300 BypassHysterese QQ=31: 1.1 2024-05-17 19:55:19.626 [mqtt notice] write Excellent300 BypassHysterese: 1.1 2024-05-17 19:55:21.349 [update notice] sent write Excellent300 BypassTemperatuur QQ=31: 19.1 2024-05-17 19:55:21.349 [mqtt notice] write Excellent300 BypassTemperatuur: 19.1 2024-05-17 19:55:23.159 [update notice] sent write Excellent300 DebietAfwezig QQ=31: 51 2024-05-17 19:55:23.159 [mqtt notice] write Excellent300 DebietAfwezig: 51 2024-05-17 19:55:23.278 [update notice] sent poll-read Excellent300 ToevoerFanSnelheid QQ=31: 1584 2024-05-17 19:55:24.423 [update notice] sent write Excellent300 DebietMinimaal QQ=31: 131 2024-05-17 19:55:24.423 [mqtt notice] write Excellent300 DebietMinimaal: 131 2024-05-17 19:55:26.573 [update notice] sent write Excellent300 DebietNormaal QQ=31: 176 2024-05-17 19:55:26.573 [mqtt notice] write Excellent300 DebietNormaal: 176 2024-05-17 19:55:27.174 [update notice] sent write Excellent300 DebietMaximaal QQ=31: 226 2024-05-17 19:55:27.175 [mqtt notice] write Excellent300 DebietMaximaal: 226 2024-05-17 19:55:29.109 [update notice] sent poll-read Excellent300 AfvoerFanSnelheid QQ=31: 1608 2024-05-17 19:55:30.026 [update notice] sent write Excellent300 OnbalansToelaatbaar QQ=31: Niet toegestaan 2024-05-17 19:55:30.026 [mqtt notice] write Excellent300 OnbalansToelaatbaar: Niet toegestaan 2024-05-17 19:55:32.666 [update notice] sent write Excellent300 VasteOnbalans QQ=31: 2 2024-05-17 19:55:32.666 [mqtt notice] write Excellent300 VasteOnbalans: 2 2024-05-17 19:55:35.152 [update notice] sent poll-read Excellent300 BypassStatus QQ=31: Gesloten 2024-05-17 19:55:36.161 [main notice] scan completed 5 time(s), check again 2024-05-17 19:55:36.750 [update notice] sent write Excellent300 VentilatorMode QQ=31: Normaal 2024-05-17 19:55:36.750 [mqtt notice] write Excellent300 VentilatorMode: Normaal 2024-05-17 19:55:38.784 [update notice] sent write Excellent300 VentilatorModeAlternative QQ=31: Normaal 2024-05-17 19:55:38.784 [mqtt notice] write Excellent300 VentilatorModeAlternative: Normaal

2024-05-17 19:55:41.180 [update notice] sent poll-read Excellent300 VoorverwarmerStatus QQ=31: Uit 2024-05-17 19:55:47.121 [update notice] sent poll-read Excellent300 VoorverwarmVermogen QQ=31: 0 2024-05-17 19:55:53.144 [update notice] sent poll-read Excellent300 VorstStatus QQ=31: NoFrost 2024-05-17 19:55:59.131 [update notice] sent poll-read Excellent300 BinnenTemperatuur QQ=31: 24.6 2024-05-17 19:56:05.152 [update notice] sent poll-read Excellent300 BuitenTemperatuur QQ=31: 16.3 2024-05-17 19:56:11.143 [update notice] sent poll-read Excellent300 FilterStatus QQ=31: Schoon 2024-05-17 19:56:17.125 [update notice] sent poll-read Excellent300 ToevoerDruk QQ=31: 85.0 2024-05-17 19:56:18.216 [main notice] scan completed 6 time(s), end 2024-05-17 19:56:23.153 [update notice] sent poll-read Excellent300 AfvoerDruk QQ=31: 114.0 2024-05-17 19:56:29.154 [update notice] sent poll-read Excellent300 DebietAfwezig QQ=31: 50;0;50;50;50 2024-05-17 19:56:35.167 [update notice] sent poll-read Excellent300 DebietMinimaal QQ=31: 130;50;300;5;100 2024-05-17 19:56:41.165 [update notice] sent poll-read Excellent300 DebietNormaal QQ=31: 175;50;300;5;150 2024-05-17 19:56:47.189 [update notice] sent poll-read Excellent300 DebietMaximaal QQ=31: 225;50;300;5;225 2024-05-17 19:56:53.156 [update notice] sent poll-read Excellent300 BypassTemperatuur QQ=31: 19.0;15.0;35.0;0.5;22.0 2024-05-17 19:56:59.160 [update notice] sent poll-read Excellent300 BypassHysterese QQ=31: 1.0;0.0;5.0;0.5;2.0 2024-05-17 19:57:05.183 [update notice] sent poll-read Excellent300 BypassMode QQ=31: Auto;Auto 2024-05-17 19:57:11.162 [update notice] sent poll-read Excellent300 OnbalansToelaatbaar QQ=31: Niet toegestaan;Permitted 2024-05-17 19:57:17.189 [update notice] sent poll-read Excellent300 VasteOnbalans QQ=31: 2;-100;100;1;0 2024-05-17 19:57:23.201 [update notice] sent poll-read Excellent300 FoutHistorie QQ=31: 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2024-05-17 19:57:29.124 [update notice] sent poll-read Excellent300 VentilatorMode QQ=31: Normaal 2024-05-17 19:57:35.123 [update notice] sent poll-read Excellent300 ToevoerDebiet QQ=31: 175 2024-05-17 19:57:41.141 [update notice] sent poll-read Excellent300 AfvoerDebiet QQ=31: 130 2024-05-17 19:57:47.118 [update notice] sent poll-read Excellent300 HuidigToevoerDebiet QQ=31: 171 2024-05-17 19:57:53.116 [update notice] sent poll-read Excellent300 HuidigAfvoerDebiet QQ=31: 163 2024-05-17 19:57:59.137 [update notice] sent poll-read Excellent300 ToevoerFanSnelheid QQ=31: 1686 2024-05-17 19:58:05.126 [update notice] sent poll-read Excellent300 AfvoerFanSnelheid QQ=31: 1794 2024-05-17 19:58:11.145 [update notice] sent poll-read Excellent300 BypassStatus QQ=31: Gesloten 2024-05-17 19:58:17.117 [update notice] sent poll-read Excellent300 VoorverwarmerStatus QQ=31: Uit 2024-05-17 19:58:23.116 [update notice] sent poll-read Excellent300 VoorverwarmVermogen QQ=31: 0 2024-05-17 19:58:29.141 [update notice] sent poll-read Excellent300 VorstStatus QQ=31: NoFrost 2024-05-17 19:58:35.129 [update notice] sent poll-read Excellent300 BinnenTemperatuur QQ=31: 24.6 2024-05-17 19:58:41.155 [update notice] sent poll-read Excellent300 BuitenTemperatuur QQ=31: 16.3 2024-05-17 19:58:47.122 [update notice] sent poll-read Excellent300 FilterStatus QQ=31: Schoon 2024-05-17 19:58:53.174 [update notice] sent poll-read Excellent300 ToevoerDruk QQ=31: 53.0 2024-05-17 19:58:57.145 [update notice] received unknown BC cmd: 37fefe010a45303030202020202020 2024-05-17 19:58:59.114 [update notice] sent poll-read Excellent300 AfvoerDruk QQ=31: 64.0 2024-05-17 19:59:05.165 [update notice] sent poll-read Excellent300 DebietAfwezig QQ=31: 50;0;50;50;50 2024-05-17 19:59:11.178 [update notice] sent poll-read Excellent300 DebietMinimaal QQ=31: 130;50;300;5;100 2024-05-17 19:59:17.162 [update notice] sent poll-read Excellent300 DebietNormaal QQ=31: 175;50;300;5;150 2024-05-17 19:59:23.178 [update notice] sent poll-read Excellent300 DebietMaximaal QQ=31: 225;50;300;5;225 2024-05-17 19:59:29.179 [update notice] sent poll-read Excellent300 BypassTemperatuur QQ=31: 19.0;15.0;35.0;0.5;22.0 2024-05-17 19:59:35.156 [update notice] sent poll-read Excellent300 BypassHysterese QQ=31: 1.0;0.0;5.0;0.5;2.0 2024-05-17 19:59:41.155 [update notice] sent poll-read Excellent300 BypassMode QQ=31: Auto;Auto 2024-05-17 19:59:47.186 [update notice] sent poll-read Excellent300 OnbalansToelaatbaar QQ=31: Niet toegestaan;Permitted 2024-05-17 19:59:53.155 [update notice] sent poll-read Excellent300 VasteOnbalans QQ=31: 2;-100;100;1;0 2024-05-17 19:59:59.317 [update notice] sent poll-read Excellent300 FoutHistorie QQ=31: 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2024-05-17 20:00:05.146 [update notice] sent poll-read Excellent300 VentilatorMode QQ=31: Minimaal 2024-05-17 20:00:11.126 [update notice] sent poll-read Excellent300 ToevoerDebiet QQ=31: 130 2024-05-17 20:00:17.140 [update notice] sent poll-read Excellent300 AfvoerDebiet QQ=31: 130 2024-05-17 20:00:23.122 [update notice] sent poll-read Excellent300 HuidigToevoerDebiet QQ=31: 129 2024-05-17 20:00:29.135 [update notice] sent poll-read Excellent300 HuidigAfvoerDebiet QQ=31: 130 2024-05-17 20:00:35.149 [update notice] sent poll-read Excellent300 ToevoerFanSnelheid QQ=31: 1560 2024-05-17 20:00:41.129 [update notice] sent poll-read Excellent300 AfvoerFanSnelheid QQ=31: 1626 2024-05-17 20:00:47.159 [update notice] sent poll-read Excellent300 BypassStatus QQ=31: Gesloten 2024-05-17 20:00:53.135 [update notice] sent poll-read Excellent300 VoorverwarmerStatus QQ=31: Uit 2024-05-17 20:00:59.154 [update notice] sent poll-read Excellent300 VoorverwarmVermogen QQ=31: 0 2024-05-17 20:01:05.152 [update notice] sent poll-read Excellent300 VorstStatus QQ=31: NoFrost 2024-05-17 20:01:11.133 [update notice] sent poll-read Excellent300 BinnenTemperatuur QQ=31: 24.6 2024-05-17 20:01:17.125 [update notice] sent poll-read Excellent300 BuitenTemperatuur QQ=31: 16.3 2024-05-17 20:01:23.140 [update notice] sent poll-read Excellent300 FilterStatus QQ=31: Schoon 2024-05-17 20:01:29.142 [update notice] sent poll-read Excellent300 ToevoerDruk QQ=31: 54.0 2024-05-17 20:01:35.107 [update notice] sent poll-read Excellent300 AfvoerDruk QQ=31: 65.0 2024-05-17 20:01:41.166 [update notice] sent poll-read Excellent300 DebietAfwezig QQ=31: 50;0;50;50;50 2024-05-17 20:01:47.157 [update notice] sent poll-read Excellent300 DebietMinimaal QQ=31: 130;50;300;5;100 2024-05-17 20:01:53.172 [update notice] sent poll-read Excellent300 DebietNormaal QQ=31: 175;50;300;5;150 2024-05-17 20:01:59.175 [update notice] sent poll-read Excellent300 DebietMaximaal QQ=31: 225;50;300;5;225 2024-05-17 20:02:05.185 [update notice] sent poll-read Excellent300 BypassTemperatuur QQ=31: 19.0;15.0;35.0;0.5;22.0 2024-05-17 20:02:11.157 [update notice] sent poll-read Excellent300 BypassHysterese QQ=31: 1.0;0.0;5.0;0.5;2.0 2024-05-17 20:02:17.186 [update notice] sent poll-read Excellent300 BypassMode QQ=31: Auto;Auto 2024-05-17 20:02:23.169 [update notice] sent poll-read Excellent300 OnbalansToelaatbaar QQ=31: Niet toegestaan;Permitted 2024-05-17 20:02:29.164 [update notice] sent poll-read Excellent300 VasteOnbalans QQ=31: 2;-100;100;1;0 2024-05-17 20:02:35.208 [update notice] sent poll-read Excellent300 FoutHistorie QQ=31: 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2024-05-17 20:02:41.123 [update notice] sent poll-read Excellent300 VentilatorMode QQ=31: Minimaal 2024-05-17 20:02:47.148 [update notice] sent poll-read Excellent300 ToevoerDebiet QQ=31: 130 2024-05-17 20:02:53.133 [update notice] sent poll-read Excellent300 AfvoerDebiet QQ=31: 130 2024-05-17 20:02:59.111 [update notice] sent poll-read Excellent300 HuidigToevoerDebiet QQ=31: 126 2024-05-17 20:03:05.122 [update notice] sent poll-read Excellent300 HuidigAfvoerDebiet QQ=31: 132 2024-05-17 20:03:11.120 [update notice] sent poll-read Excellent300 ToevoerFanSnelheid QQ=31: 1590 2024-05-17 20:03:17.139 [update notice] sent poll-read Excellent300 AfvoerFanSnelheid QQ=31: 1614 2024-05-17 20:03:23.136 [update notice] sent poll-read Excellent300 BypassStatus QQ=31: Gesloten 2024-05-17 20:03:29.119 [update notice] sent poll-read Excellent300 VoorverwarmerStatus QQ=31: Uit 2024-05-17 20:03:35.133 [update notice] sent poll-read Excellent300 VoorverwarmVermogen QQ=31: 0 2024-05-17 20:03:41.122 [update notice] sent poll-read Excellent300 VorstStatus QQ=31: NoFrost 2024-05-17 20:03:47.121 [update notice] sent poll-read Excellent300 BinnenTemperatuur QQ=31: 24.6 2024-05-17 20:03:53.140 [update notice] sent poll-read Excellent300 BuitenTemperatuur QQ=31: 16.4 2024-05-17 20:03:59.123 [update notice] sent poll-read Excellent300 FilterStatus QQ=31: Schoon 2024-05-17 20:04:05.132 [update notice] sent poll-read Excellent300 ToevoerDruk QQ=31: 53.0 2024-05-17 20:04:10.609 [update notice] received unknown BC cmd: 37fe07040a400816002202ffffffff

pvyleta commented 2 months ago

Thanks for the details.I see couple of things that may cause the problem:

  1. You disregard the 'step' value, i.e. for DebietMinimaal you made change from 130 to 131, but the step value is 5. That means 131 would be an illegal value, and would be ignored. you need to write e.g. 135.
  2. OnbalansToelaatbaar seems to have messed up translation, the default values are in english while current setting is translated to dutch - can you changing the 3c file so that both are the same? can be a cause of problems.
  3. VentilatorModeAlternative is definitely not workign due to the fact the translation is messed up, can you try using the same names of the statuses as in VentilatorMode? (the values should be different, but the String names should be the same. It's kind of strange)

Basically - Please try with english file to see it the messed up translations are the problem, and the step values - or if your unit just behaves differently (both are possible.)

RogMoe commented 2 months ago

Hi Petr, it's not in the translation. Or the step value. The stepvalue does NOT need to be 5. It can be 1. I can set a value to 131 on the Brink itself so why not by ebus? The problem lies in the fact that the Brink expects a telegram at regular intervals. If not, it goes back to default values. That;s why I;m seeing ebus-floods on the bus, even in idle mode. I looked at the serial adapter and it presents a constant flow with messages.

You know about this because you've been trying to find an answer yourself and it has been mentioned before, here and here.

The solution is to make several automations in HA to re-send every (relevant) telegram again every 90 seconds or so.

What are your thoughts on this?

RogMoe commented 2 months ago

I tried all options again, including all possible addresses for "VentilatorMode" and AlternativeVentilatorMode". Nothing. Not a single value sticks permanently. It falls back to default after x minutes.

RogMoe commented 2 months ago

My solution in HomeAssistant is to

- id: '1716911053554'
  alias: Excellent Normaal
  description: ''
  trigger:
  - platform: time_pattern
    seconds: /30
  condition:
  - condition: device
    device_id: e9be518047d9c89883355b8a7b801a06
    domain: select
    entity_id: 2486d0e32acaa26f9749c463d2f73fd5
    type: selected_option
    option: Normaal
    for:
      hours: 0
      minutes: 0
      seconds: 2
  action:
  - device_id: e9be518047d9c89883355b8a7b801a06
    domain: select
    entity_id: 2486d0e32acaa26f9749c463d2f73fd5
    type: select_option
    option: Normaal
  mode: single

...and repeat for other three fanmodes. Works like a charm.

pvyleta commented 2 months ago

Interesting. Your unit is explicitely sending back:

2024-05-17 19:53:59.152 [update notice] sent poll-read Excellent300 DebietMinimaal QQ=31: 130;50;300;5;100

Where the values meaning is in order [current value=130, minimum value = 50, maximum value = 300, step =5, default = 100] so it is surprising to me that step 1 is allowed - But definitely not impossible.

The links you provided only concerned the VentilationMode - not the other values. All values set through 'PBSB 4080' are persistent. If they would not be persistent, then AirControl would need to constantly flood the bus with flow rate for all the individual modes, bypass more etc - which it does not.

I am glad you found the solution for you unit, and it's sad that the AlternativeVentilatorMode does not work for you, for me fortunately it worked well.

RogMoe commented 2 months ago

I stand corrected. You're right. All values stick, accept VentilatorMode. Stepsize can be adjusted one step at the time ;-) Alternative mode does not work. Tried different addresses found on the internet but nothing. My workaround solves the issue. Thanks for all your work.