Open pattyland opened 1 year ago
do you have writable messages at all? check with "ebusctl find -w"
Hi, same issue here. Trying to send a mqtt message results in
2023-10-20 21:41:41.616 [mqtt error] write message bai FlowTempDesired not found
Not sure if my formatting is wrong, or some other mistake..
Found this github issue while trying to figure out why I can't set anything (first time setup), I think I'm having similar problems:
root@58709eeec8de:/# grep ^filter-direction /etc/ebusd/mqtt-hassio.cfg
filter-direction = r|u|^w
root@58709eeec8de:/# ebusctl info
version: ebusd 23.2.23.2
device: ebus-62b5c8.lan:9999, enhanced, firmware 1.1[3501].1[3501]
signal: acquired
symbol rate: 23
max symbol rate: 81
min arbitration micros: 8
max arbitration micros: 90
min symbol latency: 9
max symbol latency: 21
scan: finished
reconnects: 0
masters: 2
messages: 202
conditional: 2
poll: 68
update: 10
address 03: master #11
address 08: slave #11, scanned "MF=Vaillant;ID=BAI00;SW=0405;HW=9602", loaded "vaillant/bai.0010015600.inc" ([HW=9602]), "vaillant/08.bai.csv"
address 31: master #8, ebusd
address 36: slave #8, ebusd
root@58709eeec8de:/# ebusctl find -w
broadcast id = no data stored
broadcast queryexistence = no data stored
broadcast vdatetime = no data stored
root@58709eeec8de:/# ebusctl find -r | wc -l
164
root@58709eeec8de:/#
I have the same issue. However i cant seem to get the ebusctl to run anywhere (its possibly on my end) ssh'ing the HA it sends back unknown command ebusctl. tried to ssh the adapter itself (just to make sure) but i couldnt., Sorry im just a layman at this point. i have HA running on VM, all the sensors from ebus adapter arriving but no option to write anything. im using the LukasGrebe ha-addons rep for connection.
FlowTempDesired
look out for the message definition using "ebusctl f -a -l * -w". if it appears as writable there, then you have to check your settings (e.g. acl file missing)
I have the same issue. However i cant seem to get the ebusctl to run anywhere (its possibly on my end) ssh'ing the HA it sends back unknown command ebusctl. tried to ssh the adapter itself (just to make sure) but i couldnt., Sorry im just a layman at this point. i have HA running on VM, all the sensors from ebus adapter arriving but no option to write anything. im using the LukasGrebe ha-addons rep for connection.
you don't need ebusctl, a simple netcat is doing quite the same. the adapter can't do ssh (would be fancy though).
The adapter should communicate over netcat? I get no response trying to access it by ncat..
Getting a bit off topic here :)
EDIT :
Got the communication part working. ebusctl find -w results in 👍
broadcast id = no data stored
broadcast queryexistence = (empty for 31fe07fe00 / )
not the adapter, you can communicate with ebusd using netcat. didn't I suggest a different command to use for checking?
You did, at first it did not work, it took me some time to get it to work - had to change it to "ebusctl f -a -l "*" -w". Result
bai AccessoriesOne = no data stored bai AccessoriesTwo = no data stored bai APCLegioProtection = no data stored (message not available due to condition) bai BlockTimeHcMax = no data stored bai clearerrorhistory = no data stored bai DSNOffset = no data stored bai FanSpeedOffsetMax = no data stored bai FanSpeedOffsetMin = no data stored bai FlowsetHcMax = no data stored bai FlowsetHwcMax = no data stored bai HcPumpMode = no data stored bai HoursTillService = no data stored bai HwcPostrunTime = no data stored bai HwcTempMax = no data stored bai PartloadHcKW = no data stored bai PartloadHwcKW = no data stored bai PrEnergyCountHc1 = no data stored bai PrEnergyCountHc2 = no data stored bai PrEnergyCountHc3 = no data stored bai PrEnergyCountHwc1 = no data stored bai PrEnergyCountHwc2 = no data stored bai PrEnergyCountHwc3 = no data stored bai PrEnergySumHc1 = no data stored bai PrEnergySumHc2 = no data stored bai PrEnergySumHc3 = no data stored bai PrEnergySumHwc1 = no data stored bai PrEnergySumHwc2 = no data stored bai PrEnergySumHwc3 = no data stored bai ReturnRegulation = no data stored bai SecondPumpMode = no data stored bai SetFactoryValues = no data stored bai SolPostHeat = no data stored bai StorageLoadTimeMax = no data stored bai ValveMode = no data stored bai WarmstartOffset = no data stored bai WPPostrunTime = no data stored broadcast id = no data stored broadcast queryexistence = (empty for 31fe07fe00 / ) broadcast vdatetime = no data stored memory eeprom = no data stored memory ram = no data stored
I think i have the same issue. I do see "select" and "number" entities being created for my thermostat (350), but nothing for my Vaillant-boiler (bai).
ebusctl info
version: ebusd 23.2.p20230716
update check: revision 23.2 available
device: /dev/ttyUSB0
access: *
signal: acquired
symbol rate: 23
max symbol rate: 123
min arbitration micros: 1
max arbitration micros: 4
min symbol latency: 5
max symbol latency: 7
scan: finished
reconnects: 0
masters: 3
messages: 369
conditional: 3
poll: 262
update: 10
address 03: master #11
address 08: slave #11, scanned "MF=Vaillant;ID=BAI00;SW=0604;HW=5502", loaded "vaillant/bai.308523.inc", "vaillant/08.bai.csv"
address 10: master #2
address 15: slave #2, scanned "MF=Vaillant;ID=35000;SW=0109;HW=7102", loaded "vaillant/15.350.HW7102.csv"
address 31: master #8, ebusd
address 36: slave #8, ebusd
I'm using the Home Assistant addon and configured: area=CV-Hok,filter-direction=r|u|^w,filter-name=status|temp|yield|count|energy|power|runtime|hours|starts|mode|curve|^load$|^party$|sensor|timer|fuel|cooling|heat|data|error|pressure|flame|speed|switch
.
Later i also manually modified mqtt-hassio.inc file. The result stays the same.
In MQTT-explorer i see the following "sensor" (while i would expect it as a writable-type):
{
"unique_id":"ebusd_bai_HwcPostrunTime_0",
"name":"ebusd bai HwcPostrunTime ",
"device":{
"identifiers":"ebusd_bai",
"manufacturer":"ebusd.eu",
"name":"ebusd bai",
"via_device":"ebusd",
"sw_version":"23.2",
"suggested_area":"CV-Hok"
},
"value_template":"{{value_json[\"0\"].value}}",
"state_topic":"ebusd/bai/HwcPostrunTime",
"unit_of_measurement":"s"
}
in the config definition file it is specified as:
r;wi,,HwcPostrunTime,d.72 WW Pumpnenachlaufzeit,,,,"1104",,,UCH,-10,s,Pumpennachlaufzeit nach Speicherladung
Might it be related to the unit "s" not being recognized as usable for "number"? Or might it be related to the "ws" and "wi" permission which don´t match with "w".
2ad9b828-ebusd:/# ebusctl f -a -l "*" -w
350 ccTimer.Friday = no data stored
350 ccTimer.Monday = no data stored
350 ccTimer.Saturday = no data stored
350 ccTimer.Sunday = no data stored
350 ccTimer.Thursday = no data stored
350 ccTimer.Tuesday = no data stored
350 ccTimer.Wednesday = no data stored
350 clearerrorhistory = no data stored
350 ContactName = no data stored
350 Date = no data stored
350 Hc12stepanalogCtrl = no data stored
350 Hc1BankHolidayEndPeriod = no data stored
350 Hc1BankHolidayStartPeriod = no data stored
350 Hc1DayTemp = no data stored
350 Hc1HolidayEndPeriod = no data stored
350 Hc1HolidayRoomTemp = no data stored
350 Hc1HolidayStartPeriod = no data stored
350 Hc1LineMatchingAdaption = no data stored
350 Hc1NightTemp = no data stored
350 Hc1OPMode = no data stored
350 HcName1 = no data stored
350 hcTimer.Friday = no data stored
350 hcTimer.Monday = no data stored
350 hcTimer.Saturday = no data stored
350 hcTimer.Sunday = no data stored
350 hcTimer.Thursday = no data stored
350 hcTimer.Tuesday = no data stored
350 hcTimer.Wednesday = no data stored
350 HwcCircuitActive = no data stored
350 HwcLegioStartDay = no data stored
350 HwcLegioStartTime = no data stored
350 HwcTempDesired = no data stored
350 hwcTimer.Friday = no data stored
350 hwcTimer.Monday = no data stored
350 hwcTimer.Saturday = no data stored
350 hwcTimer.Sunday = no data stored
350 hwcTimer.Thursday = no data stored
350 hwcTimer.Tuesday = no data stored
350 hwcTimer.Wednesday = no data stored
350 KeyCodeforConfigMenu = no data stored
350 LanguageVariant = no data stored
350 LcdContrastValue = no data stored
350 MaintenanceDate = no data stored
350 PhoneNumber = no data stored
350 RoomTempCorrection = no data stored
350 SummerWinterTimeAdjust = no data stored
350 Time = no data stored
bai AccessoriesOne = no data stored
bai AccessoriesTwo = no data stored
bai APCLegioProtection = no data stored
bai BlockTimeHcMax = no data stored
bai clearerrorhistory = no data stored
bai DSNOffset = no data stored
bai FanSpeedOffsetMax = no data stored
bai FanSpeedOffsetMin = no data stored
bai FlowsetHcMax = no data stored
bai FlowsetHwcMax = no data stored
bai HcPumpMode = no data stored
bai HoursTillService = no data stored
bai HwcPostrunTime = no data stored
bai HwcTempMax = no data stored
bai PartloadHcKW = no data stored
bai PartloadHwcKW = no data stored
bai PrEnergyCountHc1 = no data stored
bai PrEnergyCountHc2 = no data stored
bai PrEnergyCountHc3 = no data stored
bai PrEnergyCountHwc1 = no data stored
bai PrEnergyCountHwc2 = no data stored
bai PrEnergyCountHwc3 = no data stored
bai PrEnergySumHc1 = no data stored
bai PrEnergySumHc2 = no data stored
bai PrEnergySumHc3 = no data stored
bai PrEnergySumHwc1 = no data stored
bai PrEnergySumHwc2 = no data stored
bai PrEnergySumHwc3 = no data stored
bai ReturnRegulation = no data stored
bai SecondPumpMode = no data stored
bai SetFactoryValues = no data stored
bai SolPostHeat = no data stored
bai StorageLoadTimeMax = no data stored
bai ValveMode = no data stored
bai WarmstartOffset = no data stored
bai WPPostrunTime = no data stored
broadcast id = no data stored
broadcast queryexistence = no data stored
broadcast vdatetime = no data stored
memory eeprom = no data stored
memory ram = no data stored
I've set the "accesslevel=*". I'm not using an acl-file.
Note to others: It's possible to run commands in the ebusd-container by using the Portainer-addin.
I'm pretty sure it has got something to do with the "%direction" token replacement. This as the entity "Hc12stepanalogCtrl" is being registered as a sensor, while it's registered as "r;wi" here: https://github.com/john30/ebusd-configuration/blob/4675cd03b2763867cf74bd12426b1990bebb6204/ebusd-2.1.x/de/vaillant/15.370.csv#L34
Other writable fields with "r;w" do get registered as number or select types.
r|w|^w
as filter-direction. mkdir -p /config/addons_config/ebusd
cd /config/addons_config/ebusd/
git clone https://github.com/john30/ebusd-configuration.git
r;ws
and r;wi
with r;w
. So here you are modifying the "direction" configuration of the ebusd-parameters./config/addons_config/ebusd/ebusd-configuration/latest/en
Note! Probably the entities in Home Assistant will have no values. This is because the values have not been read yet by ebusd. In the ebusd-repository there is a "contrib/scripts"-folder with a "readall.sh" script you might want to run. You probably need to install netcat (nc) via "apk add netcat-freebsd".
Although it might be possible to create a Home Assistant script which will query all mqtt-entries automatically. Dunno (yet). Update: I don't think it's possible in Home Assistant to iterate over all auto-discovered mqtt entities and trigger an update. The home_assisstant _update-service seems to do nothing. Publishing to the topics of mqtt-entities also seems to be impossible as the state_topic is not available via the entity, only "friendly_name" and "entity_id". Both these attributes can initially be reverse-engineered into the mqtt-topic, but both values can be changed by the user via the home-assistant user-interface. The mqtt-topic is probably stored in the internals of the mqtt-entity.
Looking through the code, i see: https://github.com/john30/ebusd/blob/b9012326786c02033606745264053ac0d787ee54/src/ebusd/mqtthandler.cpp#L359
/**
* possible message direction names by (write*2) + (passive*1).
*/
static const char* directionNames[] = {
"r", "u", "w", "uw",
};
@john30 In the definition-file i see that "ws" and "wi" are being used. Should these values not be aligned?
if ws is used, then it is a matter of assigning more rights to the default user by using an ACL file and define a "mqtt" user there or just loosen the default rights (by using the "--accesslevel=..." option)
Is there a way for the data from the "bai" section to refresh and be sent via MQTT? Currently, only data from the VR71 section and "bai Status01";"bai Status01" are correctly sent. log
The next issue is that attempts to query gas consumption are returning an error.
Perhaps someone will find my solution useful. On Debian, where ebusd is installed, I've run a script that sends the necessary data via MQTT to my MQTT broker `
while true; do result_temp=$(ebusctl read StorageTemp) sleep 1 result_temp_desired=$(ebusctl read StorageTempDesired)
/usr/bin/mosquitto_pub -h 192.168.X.X -u YOUR_USER -P YOUR_PASS -t "ebus/StorageTemp" -m "$result_temp"
/usr/bin/mosquitto_pub -h 192.168.X.X -u YOUR_USER -P YOUR_PASS -t "ebus/StorageTempDesired" -m "$result_temp_desired"
sleep 60
done `
The only issue I can't solve is obtaining data on gas consumption.
ebusctl read PrEnergyCountHc1 ERR: invalid position in decode
Description
I'm using the Home Assistant Addon together with MQTT and a Vaillant atmoTEC exclusive boiler. Auto discovery works perfect for a few binary sensors and a lof ot sensors. To control my heater I added
--mqttvar=filter-direction=r|u|^w
to the additional parameters from the addon. In the arguments field below you can validate that it gets passed through to ebus, but:Actual behavior
only sensors and binary sensors in /homeassistant/
Expected behavior
Good question, switches or range inputs?
ebusd version
23.2
ebusd arguments
--foreground --httpport=8889 --mqtthost=core-mosquitto --mqttport=1883 --mqttuser=mosquitto --mqttpass=*** --scanconfig --mqttjson --mqttint=/etc/ebusd/mqtt-hassio.cfg --mqtttopic=ebusd --device=ens:192.168.178.8:9999 --log=all:notice --log=other:notice --mqttvar=filter-direction=r|u|^w
Operating system
other
CPU architecture
x64
Dockerized
other
Hardware interface
adapter 3.1 WiFi
Related integration
MQTT Home Assistant via mqtt-hassio.cfg
Logs