Autor Thema: Läuft: Heizung mit eBus-Schnittstelle  (Gelesen 556713 mal)

Offline Sven77

  • Full Member
  • ***
  • Beiträge: 170
Antw:Läuft: Heizung mit eBus-Schnittstelle
« Antwort #2985 am: 13 März 2019, 10:15:52 »
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:

Vielen Dank für die schnelle und hilfreiche Antwort, Reinhart!
Leider bekomme ich bei beiden ebusctl Befehlen nur
ERR: invalid position in decodeals 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
Zustimmung Zustimmung x 1 Liste anzeigen

Offline freetz

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1209
    • GitHub Projektseite für BSB-LAN und Robotan
Antw:Läuft: Heizung mit eBus-Schnittstelle
« Antwort #2986 am: 13 März 2019, 10:40:24 »
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

Offline cs-online

  • Sr. Member
  • ****
  • Beiträge: 785
Antw:Läuft: Heizung mit eBus-Schnittstelle
« Antwort #2987 am: 13 März 2019, 11:54:30 »
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 Raspi 2, NanoCul 433 mit V1.65 für IT, NanoCul433 mit a-FW für Eurochrons, HM-CFG-USB-2, HM-WLAN-Gateway,ein paar HM-Aktoren,  2x EBUSD, ESP8266 am Strom-, Gas- , Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Lacrosse-Gateway und Sensoren, Alexa-Fhem... nd da geht noch was

Offline cs-online

  • Sr. Member
  • ****
  • Beiträge: 785
Antw:Läuft: Heizung mit eBus-Schnittstelle
« Antwort #2988 am: 13 März 2019, 12:52:23 »
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 Raspi 2, NanoCul 433 mit V1.65 für IT, NanoCul433 mit a-FW für Eurochrons, HM-CFG-USB-2, HM-WLAN-Gateway,ein paar HM-Aktoren,  2x EBUSD, ESP8266 am Strom-, Gas- , Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Lacrosse-Gateway und Sensoren, Alexa-Fhem... nd da geht noch was

Offline Sven77

  • Full Member
  • ***
  • Beiträge: 170
Antw:Läuft: Heizung mit eBus-Schnittstelle
« Antwort #2989 am: 13 März 2019, 12:58:08 »
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

Offline Sven77

  • Full Member
  • ***
  • Beiträge: 170
Antw:Läuft: Heizung mit eBus-Schnittstelle
« Antwort #2990 am: 13 März 2019, 13:00:27 »
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.

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

Offline freetz

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1209
    • GitHub Projektseite für BSB-LAN und Robotan
Antw:Läuft: Heizung mit eBus-Schnittstelle
« Antwort #2991 am: 13 März 2019, 13:43:16 »
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

Offline freetz

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1209
    • GitHub Projektseite für BSB-LAN und Robotan
Antw:Läuft: Heizung mit eBus-Schnittstelle
« Antwort #2992 am: 13 März 2019, 14:32:13 »
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

Offline Sven77

  • Full Member
  • ***
  • Beiträge: 170
Antw:Läuft: Heizung mit eBus-Schnittstelle
« Antwort #2993 am: 13 März 2019, 14:34:11 »
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

Offline freetz

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1209
    • GitHub Projektseite für BSB-LAN und Robotan
Antw:Läuft: Heizung mit eBus-Schnittstelle
« Antwort #2994 am: 13 März 2019, 16:03:08 »
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

Offline Sven77

  • Full Member
  • ***
  • Beiträge: 170
Antw:Läuft: Heizung mit eBus-Schnittstelle
« Antwort #2995 am: 13 März 2019, 17:22:02 »
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

Offline freetz

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1209
    • GitHub Projektseite für BSB-LAN und Robotan
Antw:Läuft: Heizung mit eBus-Schnittstelle
« Antwort #2996 am: 13 März 2019, 17:37:38 »
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

Offline freetz

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1209
    • GitHub Projektseite für BSB-LAN und Robotan
Antw:Läuft: Heizung mit eBus-Schnittstelle
« Antwort #2997 am: 14 März 2019, 22:20:43 »
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

Offline freetz

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1209
    • GitHub Projektseite für BSB-LAN und Robotan
Antw:Läuft: Heizung mit eBus-Schnittstelle
« Antwort #2998 am: 14 März 2019, 22:46:37 »
...so, habe jetzt quick&dirty das ebusd-configuration Repo gecloned, dort die 15.350.csv gegen die 15.430.csv ausgetauscht und entsprechend den ebusd mit --configpath gestartet - und das Ergebnis ist hervorragend, fast alle Parameter werden auch bei mir erkannt, so dass bei mir jetzt eine sehr umfangreiche Steuerung möglich ist :). Vielen Dank nochmals für die ganze Unterstützung; für den Moment kann ich mit diesem Workaround gut leben, aber andere 332er-Besitzer werden sich sicher freuen, wenn die CSV entsprechend erkannt wird.

Hier noch mal der schön gefüllte Output nach einem readall.sh Aufruf, man sieht nur wenige Parameter, die anscheinend entweder nicht vorhanden sind oder (noch) nicht korrekt dekodiert werden:
350 ACTOstorDetected = no
350 actoSTOROPMode = 0
350 ActualRoomTempDesiredHc1 = 5.00
350 ActualWeekday = Thu
350 adpPreHActive = on
350 adpPreHCurrentRoomTemp = 0.00
350 adpPreHInSideTW = 5
350 adpPreHMinutesBeforeFirstTW = 0
350 adpPreHOutdoorTemp = ERR: invalid position in decode
350 adpPreHOutdoorTempStart = ERR: invalid position in decode
350 adpPreHPreheatingTime = ERR: invalid position in decode
350 adpPreHRamp = ERR: invalid position in decode
350 adpPreHRoomTempDesired = 514.00
350 adpPreHRoomTempStart = ERR: invalid position in decode
350 adpPreHStarttime = ERR: invalid position in decode
350 AutoOffMode = eco
350 B50418actDesFlowTemp = 0.0
350 B51000FlowSetMonitor = 0.0
350 B51000HcDisableMonitor = 1
350 B51000TempDesiredLoadingPump = -
350 BaseDisplay = HC1
350 BMUB51101BoilerFlowTemp = 13.0
350 BMUB51101ErrorStatus = 0
350 BMUB51101HwcState = off
350 BMUB51101StorageTemp = 12.0
350 BMUFlowTempOrVF1 = 13.00;ok
350 CalculatedKickStopTime = 0
350 ccTimer.Friday = 06:00;22:00;22:00;22:00;22:00;22:00;Sa-So
350 ccTimer.Monday = 06:00;22:00;22:00;22:00;22:00;22:00;Sa-So
350 ccTimer.Saturday = 07:30;23:30;23:30;23:30;23:30;23:30;selected
350 ccTimer.Sunday = 07:30;22:00;22:00;22:00;22:00;22:00;selected
350 ccTimer.Thursday = 06:00;22:00;22:00;22:00;22:00;22:00;Sa-So
350 ccTimer.Tuesday = 06:00;22:00;22:00;22:00;22:00;22:00;Sa-So
350 ccTimer.Wednesday = 06:00;22:00;22:00;22:00;22:00;22:00;Sa-So
350 ChimneySweepModeActive = no
350 CirPump = off
350 ContinuosHeating = -26
350 CountryVariant = 0
350 CPLPLast24started = no
350 currenterror = -;-;-;-;-
350 Date = 14.03.2019
350 DisplayedHc1RoomTempDesired = 0.0
350 DisplayedRoomTemp = 11.88
350 EepromUpdateActive = on
350 EnermanState = 0
350 errorhistory = ERR: end of input reached
350 ExcessTemp = 0.0
350 FrostOverRideTime = 4
350 FrostProtectDelayMonitor = no
350 FrostProtectionRequiredMonitor = no
350 FrostProtectStateMonitor = 0
350 Hc1ActualFlowTempDesired = 0.0
350 Hc1HcType = burnercircuit
350 Hc1HeatCurve = 1.20
350 Hc1ManualOPRoomTempDesired = 0.0
350 Hc1MinimalFlowTempDesired = 15.0
350 Hc1NightTemp = 16.0
350 Hc1OPMode = auto
350 Hc1PreOrContinuosHeatingActive = no
350 Hc1Pump = off
350 Hc1PumpLast24started = no
350 Hc1QuickVetoActive = no
350 Hc1QuickVetoTemp = 0.0
350 Hc1RoomTempSwitchOn = off
350 Hc1SummerOffset = 1.0
350 Hc2HcType = mixing
350 HcMc1ConfigCPLPAsLP = CP
350 HcMc1CPLPState = off
350 HcMc1Detected = no
350 hcTimer.Friday = 18:00;23:00;23:20;23:20;23:20;23:20;Mo-Fr
350 hcTimer.Monday = 18:00;23:00;23:20;23:20;23:20;23:20;Mo-Fr
350 hcTimer.Saturday = 18:00;23:00;23:20;23:20;23:20;23:20;Mo-Fr
350 hcTimer.Sunday = 18:00;23:00;23:20;23:20;23:20;23:20;Mo-Fr
350 hcTimer.Thursday = 18:00;23:00;23:20;23:20;23:20;23:20;Mo-Fr
350 hcTimer.Tuesday = 18:00;23:00;23:20;23:20;23:20;23:20;Mo-Fr
350 hcTimer.Wednesday = 18:00;23:00;23:20;23:20;23:20;23:20;Mo-Fr
350 HolidayEndPeriod = 11.05.2017
350 HolidayRoomTemp = 5.0
350 HolidayStartPeriod = 09.05.2017
350 HRUDetected = no
350 HwcActualTempDesired = 0.0
350 HwcCircuitActive = no
350 HwcLegioStartDay = off
350 HwcLegioStartTime = 04:00:00
350 HwcLoadingIn430Active = no
350 HwcLoadingOffset = 25.0
350 HwcManualOPTempDesired = 0.0
350 HwcOPMode = auto
350 HwcParallelLoading = off
350 HwcPressLowpostrunningtime = 5
350 HwcQuickVetoActive = no
350 HwcQuickVetoTemp = 0.0
350 HwcTempDesired = 60.0
350 hwcTimer.Friday = 05:30;22:00;22:00;22:00;22:00;22:00;Sa-So
350 hwcTimer.Monday = 05:30;22:00;22:00;22:00;22:00;22:00;Sa-So
350 hwcTimer.Saturday = 07:00;23:30;23:30;23:30;23:30;23:30;selected
350 hwcTimer.Sunday = 07:00;22:00;22:00;22:00;22:00;22:00;selected
350 hwcTimer.Thursday = 05:30;22:00;22:00;22:00;22:00;22:00;Sa-So
350 hwcTimer.Tuesday = 05:30;22:00;22:00;22:00;22:00;22:00;Sa-So
350 hwcTimer.Wednesday = 05:30;22:00;22:00;22:00;22:00;22:00;Sa-So
350 IsInHoliday = no
350 KeyCodeforConfigMenu = ERR: invalid position in decode
350 LcdContrastValue = 12
350 LegioProtectActive = no
350 MaintenanceDate = 01.01.2011
350 NameHc1 = HEIZKREIS1
350 NameHc2 = HEIZKREIS2
350 NameHwc =    5
350 OutsideTemp = 0.00;cutoff
350 OutsideTempOffset = 0.0
350 PhoneNumber1 =         
350 PhoneNumber2 =         
350 PreheatingTime = 0
350 PreStopTime = 0
350 PumpBlockingTimeMax = 0
350 PumpEnergySaveCalculatedTimeMonitor = 0
350 PumpEnergySaveStateMonitor = 1
350 RoomTemp = 13.69;ok
350 RoomTempCorrection = 0.0
350 RoomTempOffsetSelfWarming = -1.81
350 Setpoints.Friday = ERR: invalid position in decode
350 Setpoints.Monday = ERR: invalid position in decode
350 Setpoints.Saturday = ERR: invalid position in decode
350 Setpoints.Sunday = ERR: invalid position in decode
350 Setpoints.Thursday = ERR: invalid position in decode
350 Setpoints.Tuesday = ERR: invalid position in decode
350 Setpoints.Wednesday = ERR: invalid position in decode
350 SolModuleDetected = no
350 StartEepromUpdate = off
350 StatusDcf = nosignal
350 SummerWinterTimeAdjust = on
350 Time = 22:39:09
350 VF1 = 0.00;cutoff
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

Offline istler

  • New Member
  • *
  • Beiträge: 42
Antw:Läuft: Heizung mit eBus-Schnittstelle
« Antwort #2999 am: 15 März 2019, 09:25:27 »
Hallo freetz,

das Problem ist nur, dass dein Regler sich als 350er meldet, deshalb wird ja die 350-Konfigdatei verwendet:
address 15: slave #2, scanned "MF=Vaillant;ID=35000;SW=0109;HW=7102", loaded "vaillant/15.350.csv"

Evtl kann man dies noch über die SW-Version oder Hardware-Kennung differenzieren.

Gruß
Maik