Description
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 =