Läuft: Heizung mit eBus-Schnittstelle

Begonnen von Prof. Dr. Peter Henning, 29 November 2014, 13:36:59

Vorheriges Thema - Nächstes Thema

pc1246

Moin freetz
Wenn Du mal diese Anleitung https://www.google.de/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=2ahUKEwiyqsrRvv7gAhXOZ1AKHdMBBgMQFjAAegQIChAC&url=https%3A%2F%2Fwww.vaillant.at%2Fdownloads%2Finstallationsanleitungen%2Fregelung-1%2Fi-vrt332-0020131926-00-360450.pdf&usg=AOvVaw24gb9cY-6VpxDmwb2IRfcC liest, dann wirst du unsere Verwunderung verstehen.
Und nur weil da Servicebuchse dransteht bedeutet das nicht, dass es eine eBus Schnittstelle ist!
Ob man einen Raumregler simulieren kann, kann ich dir nicht beantworten. Soweit ich es bis jetzt verstanden hatte, geht der eBus-d aber nur, wenn auch ein Regler an der Therme angeschlossen ist. Wo genau die Intelligenz ist sollte Reinhart/John/Chons sagen koennen. Je nach Regler kann die Therme auch andere Funktionen. Nachdem ich meine 420 gegen eine 470 ersetzt hatte, konnte ich auf einmal neue Funktionen einstellen.
Gruss Christoph
HP T610
Onkyo_AVR;3 Enigma2; SB_Server ; SB_Player; HM-USB mit 15 HM-CC-RT-DN, 3 HM_WDS10_TH_O, 6 HM-Sec-SCo, 4 HM-Sec-MDIR-2, 1 HM-Sen-MDIR-O-2, 8 Ferion 5000 OW ; PhilipsTV; 4 harmony hub; Jeelink mit 9 PCA301; Somfy; S7-300; 3 LGW; HUE; HM-IP auf Charly

freetz

...interessant, dann scheint es wohl unterschiedliche Versionen zu geben - wenn man hier auf der Seite ganz unten schaut, scheint es 2015 eine neue Revision gegeben zu haben:
https://www.vaillant.at/privatanwender/produkte/calormatic-332-10816.html

Ich frage mich nur, wie dann bei den alten Geräten die Service-Buchse umgesetzt wurde, denn das Vaillant vrDialog-Dongle scheint ja auch ebus-basiert zu sein.

Aber wie dem auch sei, bei neueren 332ern ist die Service-Buchse auf jeden Fall ebus, genau so wie die Anbindung an die Therme. Die Frage für mich bleibt nur, ob/was ich tun kann, um Betriebsmodus und/oder Soll-Temperaturen oder auch das Datum/Zeit umzustellen, denn all diese Werte muss die 332 ja irgendwie über eBus an die Therme kommunizieren, denn wie soll die sonst wissen, ob sie heizen muss, und wenn ja, wie lange? Wenn mir da noch jemand weiterhelfen könnte, wäre ich sehr dankbar...
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

Sven77

Nachdem nun die Frage "Ebus oder nicht" geklärt sein sollte (auch wenn ich das mit den Versionen auch nicht verstehe, das Dokument von 2015 ist nur eine Konformitätserklärung), mal zurück zum eigentlichen Problem:

Zitat von: freetz am 28 Februar 2019, 21:16:02
Vielen Dank für die schnelle und hilfreiche Antwort, Reinhart!
Leider bekomme ich bei beiden ebusctl Befehlen nur
ERR: invalid position in decode
als Antwort.
Im Log findet sich Folgendes:
2019-02-28 20:13:36.012 [update error] unable to parse read 350 Time from 3115b509030d1700 / 0100: ERR: invalid position
2019-02-28 20:13:36.013 [main error] read 350 Time: decode ERR: invalid position
2019-02-28 20:13:38.077 [update error] unable to parse read 350 Date from 3115b509030d2000 / 020000: ERR: invalid position
2019-02-28 20:13:38.077 [main error] read 350 Date: decode ERR: invalid position

Mein ebusd ist so konfiguriert:
EBUSD_OPTS="--scanconfig --device=/dev/ttyebus --httpport=8889 --accesslevel=* --mqtthost=local.code-it.de --mqttjson --mqttport=18883 --mqtttopic=vaillant/%cir
cuit/%name"

Kann man da noch was machen oder muss ich mich damit abfinden, dass es dann bei meiner Therme nicht geht?
Interessanterweise bekomme ich bei vdate mit "broadcast vdatetime = 21:14:51;28.02.2019" die richtige Zeit, nur halt nicht in den o.g. Feldern...

Ich denke, da ist dann eben die CSV der 350 für den 332 unpassend. Was ich noch nicht ganz verstanden habe: kommt nur der Fehler im "decode" und die Zeit wird dennoch richtig gesetzt?
Man müsste mal ein "readallregisters.sh" laufen lassen, zu verschiedenen Uhrzeiten - dann sollte man die Position von Datum/Uhrzeit schnell finden und könnte die CSV entsprechend abändern.
Alternativ könnte man versuchen, einfach Broadcasts über den Ebus zu schicken - in meinem Fall habe ich das mal mit der Außentemperatur gemacht und die VRC700 hat diese auch brav als gültig betrachtet, bis sie das nächste Mal aktiv die AT vom BAI angefordert hat...
VG, Sven

freetz

Hi Sven,

das Setzen hatte ich bisher noch nicht probiert, weil mir nicht klar ist, wie da das Zeitformat auf der Kommandozeile aussehen muss. Die zitierten Fehlermeldungen beziehen sich auf die weiter oben (von Reinhart glaube ich) vorgeschlagenen ebusctl-Befehle
ebusctl r -f date
und
ebusctl r -f time

Und wegen des Überprüfens, meinst Du "readall.sh" oder "readallvaillantregisters.sh"? Letzteres gibt von 1 bis 511 durchweg "ERR: command not enabled" aus, nur bei 244 und 489 kommt stattdessen eine leere Zeile.

Bei readall.sh kommt folgendes Ergebnis, aber bei den nicht dekodierbaren Parametern leider keine Rohdaten:
350 ActualPumpPower = ERR: invalid position in decode
350 ActualRoomTempDesired = ERR: invalid position in decode
350 ActualTempDesired = 0
350 ActualWeekday = Mon
350 BypassValve = on
350 C1C2State = off
350 CirPump = off
350 ClockSwitchSummerWinterDone = 30
350 CMResetCnt = ERR: invalid position in decode
350 CollPumpHRuntime = ERR: invalid position in decode
350 COMErrorCnt = 8736
350 ComfTempDesired = ERR: invalid position in decode
350 ComfTempEnabled = on
350 ControlMode = 8
350 Date = ERR: invalid position in decode
350 DcfDaten = ERR: invalid position in decode
350 DisableAutoSync = 0
350 eBUSCRC = 0
350 eBUSFifoDiffCntMax = 0
350 EDControlEnabled = off
350 EEpromMaxInkonsCnt = ERR: invalid position in decode
350 ElectronicCartridge = off
350 FillmodeStartTime = 2
350 FlowTempMin = 0.00
350 FrostProtectDelay = 27
350 HeatingCurve = ERR: invalid position in decode
350 HwcState = 0
350 HwcTempDesired = 0.00
350 HydraulicMixer = 32
350 HydraulicScheme = 0
350 IsInFloorPavingDrying = 32
350 IsInHoliday = 0
350 IsInParty = 81
350 IsInQuickVeto = 120
350 IsInSavingsFunction = off
350 IsInSingleHwcLoadingMode = off
350 IsInTeleSwitch = 2
350 LegioProtectionEnabled = no
350 LegioProtectionState = on
350 LegioPump = off
350 LoadingDelayEnabled = 50
350 LVResetCnt = ERR: invalid position in decode
350 NumCollPanels = 120
350 OffDiff = 10
350 OffsetDesTemp = 16.06
350 ONDiff = 72
350 ONMAXDiff = 1
350 ONMINDiff = 0
350 OperatingMode = 227
350 OperatingModeHwc = on
350 OperatingmodeStartTime = 0
350 OtShutdownLimit = ERR: invalid position in decode
350 OutsideTemp = 80.69;17
350 OutsideTempOffset = ERR: invalid position in decode
350 POCResetCnt = ERR: invalid position in decode
350 PrevOperatingMode = 11
350 PumpPower = 0
350 QuickVetoTemp = ERR: invalid position in decode
350 ReducedNightTemp = ERR: invalid position in decode
350 ResetOperatingTimes = off
350 ResetYield = 7
350 RestoreOpModeAfterHoliday = on
350 resvdColl1Sensor = 1590.19;99
350 resvdColl2Sensor = ERR: invalid position in decode
350 resvdCollPump1 = 0
350 resvdCollPump2 = 0
350 resvdStorage1Sensor = 13.94;ok
350 resvdStorage2Sensor = ERR: invalid position in decode
350 resvdStorage3Sensor = ERR: invalid position in decode
350 ROCRoomSet = 16.06
350 RoomTemp = ERR: invalid position in decode
350 RoomTempOffset = 80.56
350 RoomTempOffsetSelfWarming = ERR: invalid position in decode
350 RoomTempSwitchOn = modulating
350 RTCAdjustment = ERR: invalid position in decode
350 SavingsFunctionTime = ERR: invalid position in decode
350 SolFlowRate = ERR: invalid position in decode
350 SolHwcMaxLoadTemp = ERR: invalid position in decode
350 SolPumpBlockingTime = 0
350 StackeBUSTaskMax = 0
350 StackLifeCheckTaskMax = 30
350 StackMainTaskMax = 0
350 StartCircuitAeration = off
350 StateOfRoomCon = 1
350 StatusDcf = ok
350 SwitchOffParty = on
350 TeleSwOperatingMode = eco
350 Time = ERR: invalid position in decode
350 TimeWindows = ERR: invalid position in decode
350 UV1State = 0
350 Variant = ERR: invalid position in decode
350 VariantDKRefreshCnt = 13
350 WDResetCnt = ERR: invalid position in decode
350 WeekDayProgSwitch = off
350 YearCalendarActive = off
350 Yield = ERR: invalid position in decode
350 YieldSensor = ERR: invalid position in decode
350 ZweipunktAnalogSlct = -
bai AATemp = 17.25;65259;ok
bai AccessoriesOne = fluegasflapextractorhood
bai AccessoriesTwo = fluegasflapextractorhood
bai ACRoomthermostat = on
bai AircontrolOk = off
bai AITemp = 17.81;65250;ok
bai AntiCondensValue = 8
bai averageIgnitiontime = 1.8
bai BlockTimeHcMax = 60
bai BoilerType = 0
bai BoilerType2 = ERR: invalid position in decode
bai ChangesDSN = 0
bai CirPump = on
bai CounterStartattempts1 = 31
bai CounterStartattempts2 = 2
bai CounterStartAttempts3 = 0
bai currenterror = -;-;-;-;-
bai DateTime = nosignal;23:16:37;-.-.-;-
bai dcfState = nosignal
bai DCFTimeDate = 10:10:14;17.01.2050
bai DCRoomthermostat = off
bai DeactivationsIFC = 1
bai DeactivationsTemplimiter = 0
bai DeltaFlowReturnMax = 15.94
bai DisplayMode = 146
bai DSN = 5181
bai DSNOffset = 61
bai DSNStart = 5120
bai EBusHeatcontrol = yes
bai EbusSourceOn = on
bai EbusVoltage = on
bai errorhistory = ERR: end of input reached
bai ExhaustCurve = 1
bai exhaustWayBlockCounter = 81
bai expertlevel_ReturnTemp = -1.81;cutoff
bai ExternalFaultmessage = off
bai externalFlowTempDesired = 90.00
bai externalHwcSwitch = off
bai ExternGasvalve = 240
bai ExtFlowTempDesiredMin = 0.00
bai extWP = off
bai FanHours = 0
bai FanMaxSpeedOperation = 0
bai FanMinSpeedOperation = 0
bai FanPWMSum = 0
bai FanPWMTest = 0
bai FanSpeed = 0
bai FanStarts = 0
bai Flame = off
bai FlameSensingASIC = 579
bai FloorHeatingContact = off
bai FlowsetHcMax = 40.00
bai FlowsetHwcMax = 80.00
bai FlowSetPotmeter = 40.00
bai FlowTemp = 13.44;ok
bai FlowTempDesired = 0.00
bai Fluegasvalve = off
bai Gasvalve = off
bai Gasvalve3UC = off
bai GasvalveASICFeedback = off
bai GasvalveUC = off
bai GasvalveUCFeedback = off
bai GVStepOffsetMax = -25
bai GVStepOffsetMin = 58
bai HcHours = 3152
bai HcPumpMode = post run
bai HcPumpStarts = 24641
bai HcStarts = 143000
bai HcUnderHundredStarts = 85
bai HeatingSwitch = on
bai HoursTillService = 3010
bai HwcDemand = no
bai HwcHours = 437
bai HwcImpellorSwitch = no
bai HwcPostrunTime = 20
bai HwcSetPotmeter = 61.44
bai HwcStarts = 36600
bai HwcSwitch = on
bai HwcTemp = -13.50;cutoff
bai HwcTempDesired = 0.00
bai HwcTempMax = 65.00
bai HwcTypes = 80
bai HwcUnderHundredStarts = 10
bai HwcWaterflow = 0.00
bai HwcWaterflowMax = 6.58
bai Ignitor = off
bai IonisationVoltageLevel = 46.9
bai maintenancedata_HwcTempMax = 116.06
bai maxIgnitiontime = 2.7
bai minIgnitiontime = 1.1
bai ModulationTempDesired = 40.0
bai OutdoorstempSensor = -60.44;cutoff
bai OverflowCounter = yes
bai ParamToken = 3
bai PartloadHcKW = 8
bai PartloadHwcKW = 20
bai PartnumberBox = 00 20 04 55 16
bai PositionValveSet = 0
bai PowerValue = 28 08 64 14 64 14
bai PrAPSCounter = 0
bai PrAPSSum = 0
bai PredCombustionDecrementTime = ERR: invalid position in decode
bai PredCombustionPredCounter = ERR: invalid position in decode
bai PredCombustionSwitchingPoint = ERR: invalid position in decode
bai PredFanPWMDevThreshold = ERR: invalid position in decode
bai PredFanPWMPredCounter = ERR: invalid position in decode
bai PredFanPWMRefPWMcounter = ERR: invalid position in decode
bai PredFanPWMRefPWMsum = ERR: invalid position in decode
bai PredFanPWMSwitchingPoint = ERR: invalid position in decode
bai PredIgnitionPredCounter = ERR: invalid position in decode
bai PredIgnitionSwitchingPoint = ERR: invalid position in decode
bai PredSourcePressureDevThreshold = ERR: invalid position in decode
bai PredSourcePressurePredCounter = ERR: invalid position in decode
bai PredSourcePressureSwitchingPoint = ERR: invalid position in decode
bai PredWaterflowDevThreshold = ERR: invalid position in decode
bai PredWaterflowSwitchingPoint = ERR: invalid position in decode
bai PredWaterpressureMaxPressure = ERR: invalid position in decode
bai PredWaterpressureMinPressure = ERR: invalid position in decode
bai PredWaterpressureSwitchingPoint = ERR: invalid position in decode
bai PrEnergyCountHc1 = 11298820
bai PrEnergyCountHc2 = 39646
bai PrEnergyCountHc3 = 298996
bai PrEnergyCountHwc1 = 530557
bai PrEnergyCountHwc2 = 390525
bai PrEnergyCountHwc3 = 556805
bai PrEnergySumHc1 = 455456923
bai PrEnergySumHc2 = 2764747
bai PrEnergySumHc3 = 29490709
bai PrEnergySumHwc1 = 23542761
bai PrEnergySumHwc2 = 27702589
bai PrEnergySumHwc3 = 51153556
bai PumpHours = 17038
bai PumpHwcFlowNumber = -
bai PumpHwcFlowSum = 0
bai ReduceModulationBlocktime = -
bai RemainingBoilerblocktime = 0
bai ReturnRegulation = off
bai ReturnTemp = 13.31;65322;ok
bai ReturnTempMax = 0.00
bai SecondPumpMode = 2
bai SerialNumber = 30 30 30 30 37 35 37 34
bai SetFactoryValues = no
bai SetMode = auto;0.0;-;-;1;0;1;0;0;0
bai SHEMaxDeltaHwcFlow = 0.00
bai SHEMaxFlowTemp = 0.00
bai SolPostHeat = 2
bai SpecialAdj = 1
bai Statenumber = 31
bai Status = ERR: invalid position in decode
bai Status01 = 13.0;13.0;-;-;13.0;off
bai Status02 = auto;60;40.0;70;61.0
bai Status16 = ERR: invalid position in decode
bai Storageloadpump = 0
bai StorageLoadPumpHours = 949
bai StorageloadPumpStarts = 28019
bai StorageLoadTimeMax = 45
bai StoragereleaseClock = no
bai StorageTemp = 13.00;ok
bai StorageTempDesired = 61.00
bai StorageTempMax = 66.62
bai TargetFanSpeed = 0
bai TargetFanSpeedOutput = 0
bai TempDiffBlock = 0
bai TempDiffFailure = 0
bai TempGradientFailure = 0
bai Templimiter = off
bai TemplimiterWithNTC = yes
bai TempMaxDiffExtTFT = 0.00
bai TimerInputHc = on
bai ValveMode = 0
bai ValveStarts = 29138
bai VolatileLockout = no
bai WarmstartDemand = yes
bai WarmstartOffset = 0.00
bai WaterHcFlowMax = 0
bai WaterPressure = 1.213;ok
bai WaterpressureBranchControlOff = off
bai WaterpressureMeasureCounter = 105
bai WaterpressureVariantSum = 65531
bai WP = off
bai WPPostrunTime = 15
bai WPPWMPower = 0
bai WPPWMPowerDia = 0
bai WPSecondStage = 0
broadcast datetime = ERR: no data stored
broadcast error = ERR: no data stored
broadcast hwcStatus = ERR: no data stored
broadcast id = ERR: invalid address
broadcast load = ERR: no data stored
broadcast outsidetemp = ERR: no data stored
broadcast signoflife = ERR: no data stored
broadcast vdatetime = 10:37:44;13.03.2019
general valuerange = ERR: invalid address
memory eeprom = ERR: invalid address
memory ram = ERR: invalid address
scan.08 id = 21;12;36;0010006110;0001;012873;N3
scan.15 id = 21;12;34;0020124472;0082;006074;N9


Die in broadcast vdatetime übertragene Zeit ist korrekt, aber 350 Date und 350 Time antworten eben mit "ERR: invalid position in decode".
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

cs-online

Zitat von: Sven77 am 12 März 2019, 14:34:11
Zu 1 kann ich nichts sagen.

Mit Fehlern hatte ich mich auch mal beschäftigt, es dann aber doch weider verworfen. Hab mir gerade nochmal die ERRORS.INC angesehen:
*r,,,,,,"B503","01",,,,,,,,,
r,,errorhistory,Fehlerhistorie,,,,01,index,m,UCH,,,,,,errorhistory


Wenn ich das nun richtig verstehe, müsste man wohl mit ebusctl r -c bai -i 0..9 errorhistory die 10 Einträge des Fehlerspeichers lesen können.
Klappte bei mir aber nicht - wenn ich mir die Hex-Nachrichten von Hand gebastelt habe, ging es aber.

Nachtrag:
Der Cache scheint hier den übergebenen Index zu ignorieren, mit einem -f bzw. -m 0 scheint es aber zu gehen:
# ebusctl r -f -c bai -i 1 -V errorhistory
bai errorhistory status=1 [Status];time2=-:- [Zeit];date=-.-.- [Datum];error=29 [Fehlernummer]

# ebusctl r -f -c bai -i 0 -V errorhistory
bai errorhistory status=1 [Status];time2=-:- [Zeit];date=-.-.- [Datum];error=49 [Fehlernummer]

# ebusctl r -f -c bai -i 2 -V errorhistory
bai errorhistory status=1 [Status];time2=-:- [Zeit];date=-.-.- [Datum];error=254 [Fehlernummer]

# ebusctl r -c bai -i 0 -V errorhistory
bai errorhistory index=2;status=1 [Status];time2=-:- [Zeit];date=-.-.- [Datum];error=254 [Fehlernummer]

Beim letzten Read ist schön zu sehen, dass nicht Index 0 (wie angefordert) gelesen wird, sondern "index=2" noch im Cache steht.

Das ist cool, das werde ich mal ausprobieren. Werde euch berichten.

Grüße

Christian
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

cs-online

Super, das funktioniert, ich kann damit (nacheinander) die 10 Speicherplätze auslesen ! :-)

Gibt's eigentlich auch eine Möglichkeit, die Fehler per Ebus wieder zu löschen ?
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

Sven77

Ja, es gibt auch ein Schreibkommando 'clearerrorhistory', was aber eben nur die Fehlerliste löscht - und leider nicht (wie von mir vergeblich gesucht) den Fehlerstatus zurücksetzt.
Letzteres kann die VRC700 offenbar mit manchen Wärmeerzeugern machen - mit meinem leider nicht.
VG, Sven

Sven77

Zitat von: freetz am 13 März 2019, 10:40:24
Und wegen des Überprüfens, meinst Du "readall.sh" oder "readallvaillantregisters.sh"? Letzteres gibt von 1 bis 511 durchweg "ERR: command not enabled" aus, nur bei 244 und 489 kommt stattdessen eine leere Zeile.
Wenn das so ist, fehlt dem Ebusd die Kommandozeilenoption --enablehex.

Zitat von: freetz am 13 März 2019, 10:40:24
Die in broadcast vdatetime übertragene Zeit ist korrekt, aber 350 Date und 350 Time antworten eben mit "ERR: invalid position in decode".
Das deutet nur einmal mehr auf eine nicht passende CSV hin. Zeigt denn aber die 332 die richtige Zeit an?
Ich würde mich um die Korrektur der CSV wohl nur sekundär kümmern, wenn ich denn über ein Broadcast die Zeit im Zweifelsfall korrigieren kann...
VG, Sven

freetz

Ich dachte, dass --enablehex dafür gut ist, um selber HEX-Telegramme auf den Bus zu schicken?
Bei readall.sh kommt jedenfalls weiterhin nur die Fehlermeldung, in der ebusd.log findet sich die bereits schon oben aufgeführten Fehlermeldungen (mit einem kurzen Hex-Dump):
2019-03-13 12:37:42.528 [update error] unable to parse read 350 Date from 3115b509030d2000 / 020000: ERR: invalid position
2019-03-13 12:37:47.327 [update error] unable to parse read 350 Time from 3115b509030d1700 / 0100: ERR: invalid position

Diese bleiben auch identisch, egal, wann/wie oft ich die beiden Parameter abfrage.

Wenn das mit dem Broadcast über vdatetime klappen würde, wäre das natürlich schon mal prima, ich habe leider nicht gefunden, wie ich einen solchen Broadcast senden würde, bzw. wie ich Datum und Uhrzeit formatieren müsste. Hast Du da einen Tipp?
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

freetz

Das Setzen von 350 Time und 350 Date ergibt übrigens einen "read timeout":
ebusctl write -c 350 Date "14:44:50"
2019-03-13 13:28:14.979 [bus error] send to 15: ERR: read timeout, retry
2019-03-13 13:28:15.541 [bus error] send to 15: ERR: read timeout, retry
2019-03-13 13:28:16.101 [bus error] send to 15: ERR: read timeout, retry
2019-03-13 13:28:16.659 [bus error] send to 15: ERR: read timeout
2019-03-13 13:28:16.659 [bus error] send message part 0: ERR: read timeout


Das Senden des Broadcasts schlägt ebenfalls fehl (was aber an meiner Unkenntnis liegen kann, wie Broadcasts adressiert werden müssen):
ebusctl write -c bai vdatetime "14:44:50;13.03.2019"
ERR: element not found

(Gleiches Ergebnis mit -c 350 und -c broadcast)
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

Sven77

Ich bin kürzlich über ein nettes Feature gestolpert, was ich bisher nicht kannte (Danke, john30!!):

Wenn man Ebusd mit --enabledefine startet, kann man sich eine Messagedefinition selbst basteln und beim Schreiben mit übergeben - so kann man auf wohl einfachste Weise Broadcast-Meldungen schicken, ohne die Umrechnung in die Ebus-Datentypen bzw. nötigen Hexfolgen selbst zu übernehmen:
ebusctl w -def "w,broadcast,BCvdatetime,,,FE,B516,00,time,m,BTI,,,,date,m,BDA,,," "14:27:50;13.03.2019"

Im Log landet dann:
2019-03-13 14:27:42.729 [update notice] sent update-read broadcast vdatetime QQ=31: 14:27:50;13.03.2019


Und das mit --enablehex stimmt schon so, weil "readallvaillantregisters.sh" Hex-Nachrichten an die gewünschte Zieladresse schickt - es geht ja gerade darum, Nachrichten zu identifizieren, die noch unbekannt sind.
Aus deinem Log geht aber schon hervor, dass die 332 darauf offenbar gar nichts antwortet - entweder sie kennt gar kein Datum und Uhrzeit (zeigt sie das an?) oder es sind eben andere IDs, die man dann mit dem Script alle auslesen und die Antworten wegschreiben muss, um sie etwas später erneut auszulesen und die Antworten vergleichen...

Wäre aber zweitrangig, wenn das mit dem Broadcast schon so funktioniert.
VG, Sven

freetz

Sehr gut, danke sehr! Jetzt spuckt readallvaillantregisters.sh etwas aus, was ich dann mit ein paar weiteren Läufen vergleichen kann :).
Ebenso danke für den Tipp mit den on-the-fly Definitionen, Deine Kommandozeile konnte ich 1:1 übernehmen und wenn ich dann vdatetime abfrage, kommt auch die entsprechend aktualisierte Zeit :). Die Frage ist jetzt nur, ob die 332 die Zeit auch übernommen hat und nicht selber (ähnlich wie bei der Vorlauftemperatur) ihre eigene Zeit wieder über den Bus schickt. Da ich die nächsten Wochen nicht in der Wohnung bin, kann ich das jetzt nicht direkt überprüfen, aber es ist auf jeden Fall schon mal ein wichtiger Schritt.

Was ich mich jetzt noch frage, ist, ob man diesen Broadcast auch "schöner" setzen kann, denn nach dem Aufruf Deiner Zeile steht im Log
2019-03-13 14:57:44.246 [update notice] sent update-read broadcast vdatetime QQ=31: 14:27:50;13.03.2019
2019-03-13 14:57:44.246 [main notice] write broadcast BCvdatetime: decode empty

Da das Log direkt von "broadcast vdatetime" spricht, frage ich mich, ob es dann auch direkt mit ebusctl write (ohne -def) eine Möglichkeit gibt, diesen Broadcast zu senden.

Dank' Dir auf jeden Fall für die wertvollen Hinweise und VG,

F.
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

Sven77

Soweit ich weiß, geht das im Standard nicht, da Broadcast-Nachrichten nicht für "write" verfügbar sind - aber hier kann John ggf. mehr sagen.

Das Auslesen von "vdatetime" bringt nicht viel, weil Ebusd die selbst verschickte Nachricht auch im Cache ablegt und nur diese wieder ausgibt, ohne überhaupt auf den Bus zuzugreifen (Broadcasts können per Definition ja nie aktiv gelesen werden).
Zur Überprüfung würde ich empfehlen, mal aktiv die atmoTEC auszulesen:
ebusctl r -f -c bai DateTime

Und wenn die diese Zeit übernommen hat, nach einer halben Stunde nochmals zu prüfen (also vielleicht mal bewusst um 10 Minuten oder eine Stunde falsch stellen, sofern nicht irgendein Busteilnehmer zwischendurch ein DCF-Signal empfängt).
VG, Sven

freetz

Das mit dem Cache stimmt, und wenn man vdatetime in kurzen Abständen abruft, bleibt die Uhrzeit auch gleich. Aber die 332 scheint jede Minute ihre Uhrzeit als Broadcast über den Bus zu schicken, denn nach ca. einer Minute bekomme ich beim Auslesen von vdatetime eine aktualisierte Uhrzeit, die dem entspricht, was ich vorher über den Broadcast eingestellt habe.

DateTime von bai auslesen bringt leider (bei mir) wenig, weil dort eine ganz andere (falsche) Zeit übermittelt wird ( nosignal;06:19:20;-.-.-;- ). Die Zeit ist aber auch nicht die, anhand derer die Zeitprogramme aktiviert werden - was auch Sinn macht, weil ich an der Therme auch gar keine Zeit einstellen kann, das geht nur an der 332.

@john30: Wenn vdatetime für anscheinend mehr Systeme verfügbar ist, als DateTime und Co., wäre es dann nicht sinnvoll, diesen Broadcast auf schreibbar zu stellen, wenn damit die Uhrzeit und das Datum problemlos eingestellt werden können?
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

freetz

So, nachdem ich nun mit readallvaillantregisters.sh eine Menge Werte auslesen konnte, die mit der 15.350.csv nur begrenzt übereinstimmen, habe ich diese Werte mal mit anderen CSVs verglichen und bin dabei zu dem Ergebnis gekommen, dass es mit 15.430.csv sehr große Übereinstimmungen gibt. U.a. würde hier nicht nur das Datum, sondern auch die Raumtemperatur, die Betriebsart, das Ferienprogramm u.v.m. passen.

@john30: Wäre es möglich, eine Kopie der 15.430.csv als 15.332.csv anzulegen, so dass diese dann mit --scanconfig von meiner Heizung aus erkannt wird? Dann könnte ich alle weiteren Parameter überprüfen und diesen Regler vervollständigen.

Falls das nicht (so schnell) geht, gibt es eine Möglichkeit, die Erkennung, die bei mir ja jetzt auf 15.350.csv springt, zu übergehen und stattdessen die 15.430.csv auszuwählen? Möglichst so, dass die bai bei mir immer noch erkannt wird? Oder wie sollte ich da vorgehen?

EDIT: Hier noch meine ebusctl info, die vielleicht für die Erkennung gebraucht wird:
version: ebusd 3.3.v3.3-13-gd366bbb
update check: revision v3.3-4-g212b22d available, broadcast.csv: different version available, vaillant/15.350.csv: different version available, vaillant/bai.0010006101.inc: different version available, vaillant/broadcast.csv: different version available, vaillant/errors.inc: different version available, vaillant/hcmode.inc: different version available
access: *
signal: acquired
symbol rate: 22
max symbol rate: 161
min arbitration micros: 10
max arbitration micros: 432
min symbol latency: 3
max symbol latency: 10
reconnects: 0
masters: 3
messages: 429
conditional: 4
poll: 0
update: 9
address 03: master #11
address 08: slave #11, scanned "MF=Vaillant;ID=BAI00;SW=0518;HW=7401", loaded "vaillant/bai.0010006101.inc" ([PROD='0010006110']), "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.csv"
address 31: master #8, ebusd
address 36: slave #8, ebusd


Freue mich jedenfalls sehr, dass ich dank Eurer Hilfe auf jeden Fall ein großes Stück weiter gekommen bin und hoffe, dass es anderen 332er-Besitzern auch etwas bringt...
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan