48_HomeConnect.pm neue Überarbeitung

Begonnen von Adimarantis, 24 Dezember 2024, 00:02:52

Vorheriges Thema - Nächstes Thema

Prof. Dr. Peter Henning

Zitat von: Adimarantis am 16 Januar 2025, 08:59:52@pah: Thema Favorit - hat das mit deiner Version je funktioniert einen Favoriten zu selektieren?
Nein - das war reines Experimentieren.

LG

pah

Adimarantis

Hatte ich schon vermutet. Dass die Favoriten so nicht funktionieren sieht man auch in den Diskussionsforen der anderen Platformen.

Ich teste gerade einen Workaround, wie man zumindest das Favoritenprogramm starten kann, wenn es an der Maschine gewählt wurde.
Selektieren kann man es über die API definitiv nicht.
Aber es ist möglich FHEM beizubringen mit der manuellen Selektion zurechtzukommen.

Favoriten sind ja einfach nur Basisprogramme die gleich entsprechende Zusatzoptionen (z.B. VarioSpeed) gesetzt haben.
In den ProgammOptionen steht drin, welches Basisprogramm zugrunde liegt. Durch das Drücken auf den Favoritenknopf leuchten dann entsprechend Basisprogramm und alle Optionen auf.
Wenn man jetzt nicht den Favoriten, sondern das Basisprogramm startet, dann wird es mit allen gewählten Optionen gestartet, was exakt dem Favoriten entspricht. Oder habe ich da jetzt einen Denkfehler?

Hab das zumindest gerade erfolgreich an meiner Maschine gestartet.
Ich tüftele gerade noch ein wenig daran wann und wie man am Besten Infos holt. Aktuell fragt mir das Modul ein wenig zu oft redundante Infos ab.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU)/RfxTrx433XL/Zigbee
Module: 50_Signalbot, 48_HomeConnect, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Stonemuc

#167
Bein Ofen stimmt die Restzeitanzeige im state nicht...da steht bei mir immer 0:01. Obwohl das Reading in dem Fall 15 Sekunden anzeigt...wäre bei dir state1

Internals:
   DEF        hcconn SIEMENS-HN678G4S6-68A40E51CDF1
   FUUID      67812a97-f33f-37e6-6d04-3798c11d7366fb12
   NAME       HN678G4S6
   NR         673
   NTFY_ORDER 50-HN678G4S6
   STATE      Microwave.Max (Pause)
   TYPE       HomeConnect
   aliasname  Backofen
   brand      Siemens
   eventCount 2220
   events     
   haId       SIEMENS-HN678G4S6-68A40E51CDF1
   hcconn     hcconn
   options    Duration,ElapsedProgramTime,RemainingProgramTime,ProgramProgress
   prefix     Cooking.Oven
   programs   HeatingMode.HotAirEco,HeatingMode.TopBottomHeatingEco,HeatingMode.PizzaSetting,HeatingMode.IntensiveHeat,HeatingMode.SlowCook,HeatingMode.HotAir,HeatingMode.TopBottomHeating,HeatingMode.HotAirGrilling,HeatingMode.BottomHeating,HeatingMode.Desiccation,HeatingMode.PreheatOvenware,HeatingMode.FrozenHeatupSpecial,HeatingMode.SabbathProgramme,HeatingMode.KeepWarm,Microwave.90Watt,Microwave.180Watt,Microwave.360Watt,Microwave.600Watt,Microwave.Max
   settings   ChildLock,PowerState,AlarmClock,SabbathMode
   type       Oven
   version    1.13
   vib        HN678G4S6
   READINGS:
     2025-01-16 11:42:54   Event.PreheatFinished Off
     2025-01-14 11:53:05   Event.ProgramFinished Off
     2025-01-17 11:38:48   Option.Duration 90 seconds
     2025-01-17 11:40:03   Option.ElapsedProgramTime 151 seconds
     2025-01-16 11:38:04   Option.FastPreHeat Off
     2025-01-17 11:40:03   Option.FinishAtHHMM 11:40
     2025-01-17 11:40:03   Option.FinishInRelativeHHMM 0:01
     2025-01-17 11:40:03   Option.ProgramProgress 84 %
     2025-01-17 11:40:03   Option.RemainingProgramTime 15 seconds
     2025-01-17 11:40:03   Option.RemainingProgramTimeHHMM 0:01
     2025-01-16 11:45:24   Option.SetpointTemperature 200 °C
     2025-01-17 11:37:22   Option.StartAtHHMM 11:37
     2025-01-17 11:37:22   Option.StartInRelative 0 seconds
     2025-01-17 11:37:22   Option.StartInRelativeHHMM 0:00
     2025-01-17 11:37:22   Option.StartToHHMM 11:37
     2025-01-17 11:37:22   Setting.ActiveProgram Microwave.Max
     2025-01-14 07:43:24   Setting.AlarmClock 0 seconds
     2025-01-14 07:43:24   Setting.ChildLock Off
     2025-01-17 11:37:17   Setting.PowerState On
     2025-01-14 07:43:24   Setting.SabbathMode Off
     2025-01-10 21:28:48   Setting.SelectedProgram Max
     2025-01-17 11:40:44   Status.CurrentCavityTemperature 33 °C
     2025-01-17 11:40:19   Status.DoorState Closed
     2025-01-17 11:40:19   Status.LocalControlActive Off
     2025-01-17 11:40:19   Status.OperationState Pause
     2025-01-17 11:40:19   Status.RemoteControlActive On
     2025-01-17 11:40:19   Status.RemoteControlStartAllowed On
     2025-01-17 11:36:42   lastErr         ok
     2025-01-17 11:40:19   state           pause
     2025-01-17 11:40:19   state1          Microwave.Max
     2025-01-17 11:40:19   state2          Pause
   data:
     poweroff   PowerStandby
     options:
       Duration:
         name       BSH.Common.Option.Duration
         unit       seconds
         value      17
       ElapsedProgramTime:
         name       BSH.Common.Option.ElapsedProgramTime
         unit       seconds
         value      70
       FastPreHeat:
         name       Cooking.Oven.Option.FastPreHeat
         value      Off
         values     On,Off
       ProgramProgress:
         name       BSH.Common.Option.ProgramProgress
         unit       %
         value      6
       RemainingProgramTime:
         name       BSH.Common.Option.RemainingProgramTime
         unit       seconds
         value      16
       SetpointTemperature:
         name       Cooking.Oven.Option.SetpointTemperature
         unit       °C
         value      200
       StartInRelative:
         name       BSH.Common.Option.StartInRelative
         unit       seconds
         value      0
       SteamAssistLevel:
         name       Cooking.Oven.Option.SteamAssistLevel
         type       Cooking.Oven.EnumType.AddedSteam
         value      Off
         values     On,Off
     retrans:
       Auftauen   HeatingMode.Defrost
       Flächengrill HeatingMode.GrillLargeArea
       Heißluft  HeatingMode.HotAir
       HeißluftSchonend HeatingMode.HotAirGentle
       Heißluftgrill HeatingMode.HotAirGrilling
       LangsamGaren HeatingMode.SlowCook
       Ober/Unterhitze HeatingMode.TopBottomHeating
       Pizza      HeatingMode.PizzaSetting
       Pyrolyse   Cleaning.Pyrolysis
       Warmhalten HeatingMode.KeepWarm
     settings:
       AlarmClock:
         name       BSH.Common.Setting.AlarmClock
         unit       seconds
         value      0
       ChildLock:
         name       BSH.Common.Setting.ChildLock
         value      Off
         values     On,Off
       PowerState:
         name       BSH.Common.Setting.PowerState
         type       BSH.Common.EnumType.PowerState
         value      Standby
       SabbathMode:
         name       Cooking.Oven.Setting.SabbathMode
         value      Off
         values     On,Off
     status:
       CurrentCavityTemperature:
         name       Cooking.Oven.Status.CurrentCavityTemperature
         unit       °C
         value      31
       DoorState:
         name       BSH.Common.Status.DoorState
         type       BSH.Common.EnumType.DoorState
         value      Closed
       LocalControlActive:
         name       BSH.Common.Status.LocalControlActive
         value      Off
         values     On,Off
       OperationState:
         name       BSH.Common.Status.OperationState
         type       BSH.Common.EnumType.OperationState
         value      Pause
       RemoteControlActive:
         name       BSH.Common.Status.RemoteControlActive
         value      On
         values     On,Off
       RemoteControlStartAllowed:
         name       BSH.Common.Status.RemoteControlStartAllowed
         value      On
         values     On,Off
     trans:
       Cleaning.Pyrolysis Pyrolyse
       HeatingMode.Defrost Auftauen
       HeatingMode.GrillLargeArea Flächengrill
       HeatingMode.HotAir Heißluft
       HeatingMode.HotAirGentle HeißluftSchonend
       HeatingMode.HotAirGrilling Heißluftgrill
       HeatingMode.KeepWarm Warmhalten
       HeatingMode.PizzaSetting Pizza
       HeatingMode.SlowCook LangsamGaren
       HeatingMode.TopBottomHeating Ober/Unterhitze
     value:
       CurrentCavityTemperature 31
       Duration   17
   helper:
     ActiveProgram HeatingMode.HotAir
     eventChannelTimeout 1737110444.07896
     init       status_done
     init_count 2
     key       
     retrycounter 0
     total_count 4
     updatePO   0
Attributes:
   alias      Backofen
   icon       scene_baking_oven
   room       Home Connect
   stateFormat state1 (state2)
FHEM aus Raspberry PI 3 B+, Haussteuerung auf EnOcean Basis, Tecalor THZ 404eco Wärmepumpe

Shadow3561

Moin,
ich habe mir jetzt einmal die IOS-App angesehen.
Dabei ist mir aufgefallen, dass der Waschtrockner wohl eine Extrawurst bei BSH bekommt.
Manchmal steht bei der Response/Request "LaundryCare.Washer.EnumType." und manchmal "LaundryCare.WasherDryer.EnumType."
Die ProcessPhase wird im Modul leider nur beim Programmstart einmalig abgefragt, in der App ist sie unter "LaundryCare.Common.EnumType.ProcessPhase." aktualisiert.

Des weiter lässt sich der Waschtrockner mit FHEM nicht starten. Aber das hängt wahrscheinlich an der selben Kante wie mit dem Favorit-Programm beim Geschirrspüler.
Ich hoffe du bekommst es irgendwann hin. Dann kann ich endlich die WM starten wenn genug PV vom Dach kommt.
VG und schönes WE


Adimarantis

Aktuelles Update (V1.15):
Ich habe den ganzen Flow wie die API aufgerufen wird nochmal überarbeitet.
Jetzt setze ich eine Art "dirty" Flag und die API calls passieren alle im Timer, wenn das Flag gesetzt ist.
Dadurch sollte der Startup etwas sauberer laufen (falls Gerät offline) und dann Calls nachholen, sobald das Gerät online geht.

Natürlich kann es jetzt sein, dass ich wieder was "verschlimmbessert" habe. Der Vorteil ist, dass ich jetzt ohne große Nebeneffekte eben ein Flag setzen kann, wenn die Daten nicht sauber sind. (also z.B. genau bei dem Event, bei dem es gebraucht wird)
Der accessScope steht jetzt wirklich aktuell im Device und wird auch ins Logfile geschrieben.

Spülmaschinen Favorit:
Es sollte jetzt funktionieren die Maschine zu starten, wenn der Favorit vorgewählt ist. Das passiert eben über den Workaround dass das Basisprogramm plus der entsprechenden Optionen verwendet wird.
Der Favorit landet u.U. auch in der Programmliste (wenn gewählt wenn die Maschine angeschaltet wird), aber "SelectedProgram" gibt dann den Hinweis, dass dies nicht supported ist das Program zu wählen.
Workaround wäre halt den Favoriten per API zusammenzubauen (Basisprogramm plus die entsprechenden Optionen wählen).

ProcessPhase:
Wie angemerkt muss dafür der aktuelle Status abgefragt werden, wird leider nicht als Event geschickt. Ich habe jetzt noch "get ProgramStatus" eingeführt. Da müsste bei Waschmaschine/Waschtrockner die ProcessPhase dabei sein. Wer das gerne möchte, kann das ja alle paar Minuten abfragen (z.B. DOIF ([+:5] and [xxxx:state] eq "run") (get xxx ProgramStatus) ). Das sollte noch ok sein für das Rate Limit. Werde ich aber nicht fest einbauen. Vorher musste man "get ProgramOptions" aufrufen, was implizit 2 API calls waren.

@Shadow zum Thema ProgrammStart Waschtrocker:
Ich habe einige Änderung gemacht, weiss aber jetzt echt nicht mehr, ob die das Problem schon adressieren oder nicht. Kannst du das bitte nochmal mit der aktuellen Version probieren und loggen?

@Stonemuc zum Thema Restzeitanzeige:
Selbiges, bitte nochmal probieren und Logfile

Gruß,
Jörg



Raspberry 4 + HM-MOD-RPI-PCB (pivCCU)/RfxTrx433XL/Zigbee
Module: 50_Signalbot, 48_HomeConnect, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Shadow3561

#170
ZitatIch habe einige Änderung gemacht, weiss aber jetzt echt nicht mehr, ob die das Problem schon adressieren oder nicht. Kannst du das bitte nochmal mit der aktuellen Version probieren und loggen?
Morgen werde ich es mal probieren, ebenso bei GS das Favorit-Programm.

Edit:
GS Favorit funktioniert jetzt. Man muss einmal ein "getPrograms" ausführen wenn das Favorit-Prog am GS manuell ausgewählt wurde damit es in den internals erscheint.
Dann kann man mit Fhem starten.
Perfekt.
Super Arbeit. Danke

"get XXX ProgramStatus" funktioniert auch beim Waschtrockner, starten der Programme leider nicht.




Adimarantis

Zitat von: Shadow3561 am 17 Januar 2025, 19:34:18GS Favorit funktioniert jetzt. Man muss einmal ein "getPrograms" ausführen wenn das Favorit-Prog am GS manuell ausgewählt wurde damit es in den internals erscheint.
Ich habe jetzt mal eingebaut, dass automatisch GetPrograms ausgeführt wird, wenn ein unbekanntes Programm selektiert wird.
Außerdem hatte ich noch das Problem, dass er versucht hatte SilenceOnDemand  beim Programmstart zu setzen. Interessanterweise bei dir nicht. Eventuell passiert das nur in bestimmten Konstellationen - auf jeden Fall ist das hoffentlich jetzt auch gefixt.
Zitat"get XXX ProgramStatus" funktioniert auch beim Waschtrockner, starten der Programme leider nicht.
Die Programmlisten kommen beim Waschtrockner noch recht wild durcheinander - mal keines, mal eins aber irgendwie nie die ganze Liste. Ich hab da jetzt noch bisschen rumoptimiert damit er die Default Liste nicht löscht.
Der "StartProgram" Befehl schaut eigentlich gut aus. Aber er mag den Programmnamen nicht.
Aktuell schickt er z.B. "LaundryCare.WasherDryer.Program.Spin.Spin.SpinDrain"

Kannst du da bisschen rumexperiementieren? In der aktuell eingecheckten Version habe ich dir ein "set xxx StartX <programname>" eingebaut. (versteckt - geht nur von der Kommandozeile)
Als Programname nimmst du dann eben den vollen String "LaundryCare.WasherDryer.Program.Spin.Spin.SpinDrain" - der wird ungefiltert weitergereicht - also stelle vorher sicher, dass die Maschine auch bereit ist.
Probieren könntest du z.B.
LaundryCare.WasherDryer.Program.SpinDrain
LaundryCare.Washer.Program.Spin.Spin.SpinDrain
LaundryCare.Washer.Program.SpinDrain
...

Raspberry 4 + HM-MOD-RPI-PCB (pivCCU)/RfxTrx433XL/Zigbee
Module: 50_Signalbot, 48_HomeConnect, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Prof. Dr. Peter Henning

#172
So, ich habe jetzt einmal mit der Modulversion von vorgestern einen Test mit dem "Nudelauflauf" gefahren.

1. Am Ofen selbst das Programm eingestellt, ebenso das Gewicht 1,0 kg
2. Am Ofen startet das Programm dann automatisch, wenn ich keine Zeitverzögerung eingebe.
3. Nach ca. 15 Minuten habe ich das Programm via FHEM gestoppt, indem ich "set Power standby" abgesetzt habe.
4. Das Programm bleibt dann stehen, als Status wird "Autostart" angezeigt.
5. Nach ein paar Minuten habe ich das Programm dann mit "Starten" in der App wieder begonnen - läuft problemlos weiter.
6. Nach erneut ein paar Minuten wieder via FHEM gestoppt.

Log anbei

Ich erlaube mir mal, einen kleinen "Wunschzettel" anzuhängen:
a.) Anzeige der Zeiten: Wie lange läuft das (noch)?
b.) Möglichkeit zum Remote Start, wie in der App

Beim 2. Start in der App ist mir noch aufgefallen, dass für eine Weile die currentcavitytemperature auf 194 °C war, während state2 noch 205 °C zeigte.

LG

pah

Shadow3561

ZitatKannst du da bisschen rumexperiementieren?

Habe jetzt ein wenig experimentiert. Leider ohne Erfolg. Bin dann ins ratelimit geraten.
Anbei das Log.
Mit freundlichen Grüßen

Adimarantis

Zitat von: Prof. Dr. Peter Henning am 18 Januar 2025, 13:09:36So, ich habe jetzt einmal mit der Modulversion von vorgestern einen Test mit dem "Nudelauflauf" gefahren.
1. Am Ofen selbst das Programm eingestellt, ebenso das Gewicht 1,0 kg
Da kommt das erste Problem: ProgramOption können nicht geholt werden, weil er das Programm Cooking.Oven.Program.Dish.Automatic.Conv.PastaBake per API programs/available nicht kennt. Immerhin geht was über programs/selected. Da müsste es mit der aktuellen Version auch bereits klappen, dass Option.Weight, Option.RemainingProgramTime, Option.CavitySelector in readings landen.

Zitat3. Nach ca. 15 Minuten habe ich das Programm via FHEM gestoppt, indem ich "set Power standby" abgesetzt habe.
Das schaut im Log etwas komisch aus. Einerseits kommt Error.WriteRequest.Busy - so als dürfte man das nicht, aber irgendwie geht er danach trotzden auf OperationState Ready. Akzeptiert er vielleicht PauseProgram/ResumeProgram (das hab ich zwar für Oven deaktiviert aber über Kommandzeile dürfte es trotzdem geschickt werden)?
Zitata.) Anzeige der Zeiten: Wie lange läuft das (noch)?
Leider kommt die Remaining/Elapsed Time nicht via Event. Das müsste man also wohl per Berechnung lösen.
Alternativ regelmäßig "get ProgramState" aufrufen - da kommt die Zeit mit, aber wie beim Waschtrockner möchte ich das nicht standardmäßig einbauen (Rate Limit).
Zitatb.) Möglichkeit zum Remote Start, wie in der App
Nachdem schon "get ProgramOptions" mit "unbekanntes Program" quittiert, wird das beim "start" wohl auch fehlschlagen.
Du könntest ähnlich wie Shadow mal mit der StartX Funktion versuchen ob du rausfindest welchen Programmnamen er evtl. akzeptiert.
Oder kann man irgendwie anders ein Start auslösen? Ich kenne nur die Möglichkeit in programs/active einen Programmnamen zu schreiben - und wenn er den nicht akzeptiert haben wir schlechte Karten.
ZitatBeim 2. Start in der App ist mir noch aufgefallen, dass für eine Weile die currentcavitytemperature auf 194 °C war, während state2 noch 205 °C zeigte.
Zum einen sind die gelieferten Daten offensichtlich falsch (obwohl sie geschickt werden!) wenn kein Programm läuft, zum anderen fehlt ein Update des state beim Event. Das kriege ich hin.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU)/RfxTrx433XL/Zigbee
Module: 50_Signalbot, 48_HomeConnect, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Prof. Dr. Peter Henning

#175
OK, danke für die Hinweise.

Es muss eine Möglichkeit geben, einfach "Start" ohne übergebenen Programmnamen auszulösen. Mal sehen, morgen kann ich etwas damit spielen.

Dass bei den eingebauten Programmen keine großartigen Options existieren, ist immerhin plausibel - da sind die BSH-Leute ja ganz stolz auf ihre Künste. Beispielsweise verändert sich die Temperatur auch über die Zeit, und alles hängt von dem eingegebenen Gewicht ab.

LG

pah

Adimarantis

Zitat von: Prof. Dr. Peter Henning am 18 Januar 2025, 18:04:53Es muss eine Möglichkeit geben, einfach "Start" ohne übergebenen Programmnamen auszulösen. Mal sehen, morgen kann ich etwas damit spielen.
Laut Doku und einiger Experimente (programs/active ohne Programm aufrufen) scheint es die einzige Möglichkeit zu sein.
@Shadow: Für den Washdryer hätte ich in der Liste der Keys noch die Variation mit nur 1x Spin (Spin.SpinDrain) gefunden.
Die Automatikprogramme vom Ofen stehen aber nur haargenau so drin.
Leider trifft das Problem auch runtergeladene Programme für den Geschirrspüler. Das Programm Dishcare.Dishwasher.Program.QuickD bekomme ich zwar über die Liste der Programme nachdem ich es über die App selektiert habe, aber starten kann ich es nicht (SDK.Error.UnsupportedProgram)

Ich hab jetzt mal mit der RemainingProgramTime/ElapsedTime rumgespielt.
Da die ja bei "get ProgramStatus kommt", wird sie am Anfang eines laufenden Programs initialsiert.
Dann merke ich mir den timestamp und rechne bei jeder Aktualisierung der state* Readings den Stand neu aus und aktualisiere auch die Readings.
Ob das jetzt wirklich so funktioniert ist aber schwer zu testen.

Wenn Temperaturen kommen sollte jetzt außerdem der state* aktualisiert werden.



Raspberry 4 + HM-MOD-RPI-PCB (pivCCU)/RfxTrx433XL/Zigbee
Module: 50_Signalbot, 48_HomeConnect, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

isy

Ich habe gerade ein Update durchgeführt:
Messages collected while initializing FHEM:configfile: SN63E800BE: unknown attribute extraInfo. Type 'attr SN63E800BE ?' for a detailed list.
HB772G1B1: unknown attribute extraInfo. Type 'attr HB772G1B1 ?' for a detailed list.

Autosave deactivated

Wurde das Attribut extraInfo herausgenommen?
Ein Weg wird erst zu einem Weg, wenn man ihn geht

Adimarantis

Ja, das ist jetzt immer aktiv, weil ich die Readings für manche Dinge (z.B. Favorit Spülmaschine) zwingend brauche
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU)/RfxTrx433XL/Zigbee
Module: 50_Signalbot, 48_HomeConnect, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

isy

#179
Gut motd ist nach dem nä. Restart wieder weg  :)
Modul läuft unverändert gut!
Ein Weg wird erst zu einem Weg, wenn man ihn geht