48_HomeConnect.pm neue Überarbeitung

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

Vorheriges Thema - Nächstes Thema

Adimarantis

Ok, nachdem ich ElapsedProgramTime jetzt bei meiner Waschmaschine beobachten konnte, müsste ich feststellen, das da noch rein gar nichts ging. Konzept war ok, aber die Trigger/Test haben nicht gepasst.
Leider wurde die Maschine fertig bevor ich fertig wurde, aber ich denke es könnte jetzt schon mal einigermaßen funktionieren.
Außerdem habe ich jetzt Übersetzungen für die ProcessPhase von der Waschmaschine drin.
Wenn man ProcessPhase in das translate Attribut aufnimmt, bekommt man ein Extra Reading dafür. Vorausgesetzt natürlich get ProgramStatus wird z.B. per DOIF regelmäßig ausgeführt. Ich mach das jetzt so:
defmod DI_Waschmaschine_Status DOIF ([+0:05] and [WM14VL40:state] eq "run")   (get WM14VL40 ProgramStatus)
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU)/RfxTrx433XL/Zigbee
Module: 50_Signalbot, 48_HomeConnect, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Adimarantis

So, Spülmaschine läuft - die hat nur RemainingProgramTime und mit dem aktuellen Update eben auch ElapsedProgramTime (ob man das braucht sei mal dahingestellt).
Bis auf eine Warning beim logging hat funktioniert.
Hab die jetzt beseitigt und außerdem noch ein ElapsedProgramTimeHHMM eingeführt - leichter zu lesen als die Sekunden.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU)/RfxTrx433XL/Zigbee
Module: 50_Signalbot, 48_HomeConnect, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Adimarantis

Kleines Update (V1.23):
Neues Attribut "stateUpdate":
Ich habe mich jetzt doch entschlossen zumindest optional die Möglichkeit zu geben regelmäßig den Programmstatus abzufragen. (Statt dem DOIF, dass ich vorher beschrieben habe).
Sollte wegen des Rate Limit mit Bedacht und nur bei Geräten verwendet werden, bei denen es tatsächlich einen Mehrwert bringt.
Soweit mit bekannt dürften das Waschmaschinen und Öfen sein, da hier manche Readings nicht per Event aktualisiert werden.

Außerdem habe ich bei Öfen die in der API Beschreibung erwähnten Features "OpenDoor" und "PartlyOpenDoor" freigeschaltet. Hat jemand einen Ofen der sowas unterstützt?
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU)/RfxTrx433XL/Zigbee
Module: 50_Signalbot, 48_HomeConnect, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

isy

Moin,
bei mir zeigt der Ofen nur Status offen an.

Interessant: Direkt nach Neustart zeigt die Temperatur 57 Grad. Kurz darauf auf blank und beim Öffnen der Tür wieder 57.

Beim nächsten Vorgang schicke ich ein Log bzgl der Timer
Ein Weg wird erst zu einem Weg, wenn man ihn geht

Adimarantis

Das mit dem Temperatur wird sich nicht vermeiden lassen.
Wird gelöscht wenn der Ofen ausgeschaltet wird bzw. Programm beendet.
Wenn der Ofen wieder eingeschaltet wird, dann werden alle möglichen Infos geholt - und da ist bei dir halt die (falsche) Temperatur dabei.

Noch zu erwähnen: Das neue "statusUpdate" fragt natürlich nur bei laufendem Programm Infos ab - sonst wäre das Rate Limit ziemlich schnell erreicht.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU)/RfxTrx433XL/Zigbee
Module: 50_Signalbot, 48_HomeConnect, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Adimarantis

Zitat von: Shadow3561 am 18 Januar 2025, 14:47:40
ZitatKannst du da bisschen rumexperiementieren?

Habe jetzt ein wenig experimentiert. Leider ohne Erfolg. Bin dann ins ratelimit geraten.

Zum Thema ein kleines Update mithilfe des Supports.
Sie weisen darauf hin, das nur funktioniert was auch dokumentiert ist - wenn ein Programm nicht dokumentiert ist, gehts auch nicht.
Bei deinem Gerät trifft das leider im Prinzip auf alle Programme zu, aber:
Schau mal unter https://api-docs.home-connect.com/programs-and-options/#washer-dryer
Da sind die Programme aufgelistet die offiziell gehen sollten. Kannst du mal probieren ob du eines davon zum Laufen kriegst?
In der gerade eingecheckten Version habe ich "StartX" wieder so hingebogen, dass du Programmnamen übergeben kannst.

Der Support hatte noch eine Idee, die ich aber erst Testen und Implementieren muss:
Wenn du dein Gerät mit DelayedStart (am Gerät - geht das? Oder über die App) mit mehreren Stunden Versatz startest, gibt es vielleicht eine Möglichkeit das Delay über FHEM auf z.B. 1 Minute runterzusetzen. Nicht schön, nicht WAF tauglich, aber zumindest ein Schritt weiter.

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

Shadow3561

Ich habe es probiert, leider erfolglos.
Was es noch zu sagen gibt,
Ich kann in der App kein Programm direkt anwählen, die Schritte sind folgende,

Program auswählen, "weiter" klicken
waschen, waschen und trocknen oder trocknen auswählen, "weiter" klicken
dann erscheint eine Seite wo man Schleuderdrehzahl und Optionen (vorwaschen usw.) auswählen kann "weiter" klicken
danach muss man die Endzeit wählen oder einfach "weiter" klicken, dann wird die vorgeschlagene Zeit übernommen.
Erst nach diesem wird anscheinen alles an den Waschtrockner gesendet.
In deinem Modul werden zumindest unter "HomeConnect_StartProgram2" options mit übergeben, welche das dann sind überschreitet meinen Perl-Horizont.
Könnte mir vorstellen, dass evtl. die "waschen" option fehlt.

Anbei mal ein paar Zeilen log.
Danke fürs dranbleiben

Adimarantis

Danke.
Hab ich gleich dem Support unter die Nase gerieben.

So wie du aber die Vorgehensweise in der App beschreibst, scheint das Gerät insgesamt ein Exot zu sein der sogar dort eine Spezialbehandlung braucht.
Die Options die ich übergebe sind nur definierte Optionen des Programs - das ist bei dir leer.
Da würde bei korrekter Funktionsweise dann z.B. die Schleuderzahl drinstehen.
Ob es eine Option "Waschen" gibt, weiss ich nicht - aber er meckert ja bereits an, dass er das Programm nicht kennt.

Hab jetzt die Idee mit dem DelayedStart probiert und bei meinem Trockner klappt das.
Ich definiere ein DelayRelative von "2:00" und dann StartProgram - das müsstest du in der App oder am Gerät machen.

Dann zeigt FHEM an, dass das Gerät im "DelayedStart" (state=scheduled) ist.
Wenn ich jetzt ein set xxx DelayedStart 0 schicke, läuft der Trockner los - dabei muss ich keinen Programmnamen übermitteln - könnte also auch bei dir gehen.

Eine entsprechende Version ist eingecheckt. Ich hoffe es sind keine Nebeneffekte drin - hatte zuletzt wohl die ganze DelayedStart Logik kaputt gemacht, sollte jetzt aber wieder OK sein.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU)/RfxTrx433XL/Zigbee
Module: 50_Signalbot, 48_HomeConnect, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Shadow3561

funktioniert leider nicht.
Ich habe in der App ein Programm und alles andere ausgewählt und die Endzeit nach hinten verschoben.
Ein "startProgram" funktioniert nicht.
Dann habe ich das Program in der App gestartet, was ja erst in der Zukunft lag, dann ein "StartProgram" in FHEM hat die Startzeit nicht verkürzt.

Oder habe ich dich völlig falsch verstanden?
log anbei

Adimarantis

Nicht "StartProgram" sondern eine der "Delay..." Optionen. Z.B. "DelayRelative" mit Argument 0 - dann müsste es loslaufen
"Gestartet" ist es dann ja schon.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU)/RfxTrx433XL/Zigbee
Module: 50_Signalbot, 48_HomeConnect, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Shadow3561

Ich habe als Set Optionen nur Power, startProgram, childlock und selectProgram

Adimarantis

Fernstart ist aktiviert?
Muss ich mir im Log anschauen, warum das nicht angeboten wird - und bitte auch ein "list", aber du kannst es ja einfach über die Kommandozeile machen
set xxx DelayRelative 0
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU)/RfxTrx433XL/Zigbee
Module: 50_Signalbot, 48_HomeConnect, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Adimarantis

Im Logfile finde ich nicht dass er im DelayedStart ist.
Mach auch nochmal ein "get Status"
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU)/RfxTrx433XL/Zigbee
Module: 50_Signalbot, 48_HomeConnect, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Shadow3561

#208
Fernstart ist aktiviert.
Starten der Maschine funktioniert nicht.

Edit: richtiges List beigefügt, neues log.
PS: StopProgram funktioniert zumindest
Internals:
   DEF        hcconn_new XXXXXX
   FUUID      65ed8f3f-f33f-e62d-8059-23a39d365322868c
   NAME       WNC244070_new
   NR         70
   NTFY_ORDER 50-WNC244070_new
   STATE      Start um (0:00)
   TYPE       HomeConnect
   aliasname  Waschtrockner
   brand      Bosch
   eventCount 133
   events    
   haId       XXXXX
   hcconn     hcconn_new
   logfile    log/HC/WasherDryer
   offline    0
   options   
   prefix     LaundryCare.WasherDryer
   programs   SportFitness.SportFitness.SportFitness,EasyCare.HHSynthetics.HHSynthetics,DelicatesSilk.DelicatesSilk.DelicatesSilk,Sensitive.Sensitive.Sensitiv,LabelEU19.LabelEU19.Eco4060,Wool.Wool.Wool,FastWashDry.WD45.WD45,RefreshWD.Refresh.Refresh,Rinse.Rinse.Rinse,Cotton.Cotton.Cotton,Mix.HHMix.HHMix,Spin.Spin.SpinDrain
   settings   ChildLock,PowerState
   type       WasherDryer
   version    1.25
   vib        WNC244070
   OLDREADINGS:
   READINGS:
     2025-01-23 19:33:43   Event.ProgramAborted Off
     2025-01-23 17:07:30   Event.ProgramFinished Off
     2025-01-20 17:28:29   LaundryCare.Washer.Option.IntensivePlus Off
     2025-01-23 19:33:45   LaundryCare.Washer.Option.LessIroning Off
     2025-01-23 19:23:37   LaundryCare.Washer.Option.MiniLoad Off
     2025-01-23 19:06:22   LaundryCare.Washer.Option.Prewash Off
     2025-01-23 19:33:45   LaundryCare.Washer.Option.RinseHold Off
     2025-01-23 19:33:45   LaundryCare.Washer.Option.RinsePlus Off
     2025-01-23 19:06:22   LaundryCare.Washer.Option.Soak Off
     2025-01-23 19:33:45   LaundryCare.Washer.Option.SpinSpeed RPM400
     2025-01-23 19:06:22   LaundryCare.Washer.Option.Stains Off
     2025-01-23 19:26:37   LaundryCare.Washer.Option.Temperature GC30
     2025-01-23 19:33:45   LaundryCare.Washer.Option.WaterPlus Off
     2025-01-20 17:26:27   Option.Duration 1200 seconds
     2025-01-23 18:41:44   Option.ElapsedProgramTime
     2025-01-23 18:41:44   Option.ElapsedProgramTimeHHMM
     2025-01-23 19:33:45   Option.EstimatedTotalProgramTime 1320 seconds
     2025-01-23 19:35:13   Option.FinishAtHHMM 21:16
     2025-01-23 19:35:13   Option.FinishInRelative 6060 seconds
     2025-01-23 19:35:13   Option.FinishInRelativeHHMM 1:41
     2025-01-23 19:23:37   Option.LoadRecommendation 2000 gram
     2025-01-23 19:06:22   Option.LowTemperatureHygiene Off
     2025-01-23 19:26:39   Option.ProcessPhase Rinsing
     2025-01-23 19:33:45   Option.ProgramMode Washing
     2025-01-23 17:07:30   Option.ProgramProgress 0 %
     2025-01-23 19:05:50   Option.RemainingProgramTime 1320 seconds
     2025-01-23 19:05:50   Option.RemainingProgramTimeHHMM 0:22
     2025-01-23 19:33:45   Option.RemainingProgramTimeIsEstimated On
     2025-01-23 19:23:37   Option.SilentMode Off
     2025-01-23 19:06:22   Option.SpeedPerfect Off
     2025-01-23 19:34:13   Setting.ActiveProgram Rinse.Rinse.Rinse
     2025-01-23 19:02:40   Setting.ChildLock Off
     2025-01-23 19:02:40   Setting.PowerState On
     2025-01-23 19:33:45   Setting.SelectedProgram Rinse
     2025-01-23 19:33:55   Status.DoorState Locked
     2025-01-23 19:33:55   Status.LocalControlActive Off
     2025-01-23 19:34:13   Status.OperationState DelayedStart
     2025-01-23 19:33:55   Status.RemoteControlActive On
     2025-01-23 19:33:55   Status.RemoteControlStartAllowed On
     2025-01-23 19:33:45   lastErr         No programs found
     2025-01-23 19:35:13   state           scheduled
     2025-01-23 19:35:13   state1          Start um
     2025-01-23 19:35:13   state2          0:00
   data:
     finished  
     poweroff   PowerOff
     options:
     retrans:
       Baumwolle  Cotton.Cotton.Cotton
       Eco40-60   LabelEU19.LabelEU19.Eco4060
       ExtraKurz15/Wash&Dry45 FastWashDry.WD45.WD45
       Fein/Seide DelicatesSilk.DelicatesSilk.DelicatesSilk
       HygienePlus Sensitive.Sensitive.Sensitiv
       IronAssist RefreshWD.Refresh.Refresh
       Pflegeleicht EasyCare.HHSynthetics.HHSynthetics
       Schleudern/Abpumpen Spin.Spin.SpinDrain
       Schnell/Mix Mix.HHMix.HHMix
       Sportswear SportFitness.SportFitness.SportFitness
       Spülen    Rinse.Rinse.Rinse
       Wolle      Wool.Wool.Wool
     settings:
       ChildLock:
         name       BSH.Common.Setting.ChildLock
         value      Off
         values     On,Off
       PowerState:
         name       BSH.Common.Setting.PowerState
         type       BSH.Common.EnumType.PowerState
         value      On
         values     On,Off
     status:
       DoorState:
         name       BSH.Common.Status.DoorState
         type       BSH.Common.EnumType.DoorState
         value      Locked
       LocalControlActive:
         name       BSH.Common.Status.LocalControlActive
         value      Off
         values     On,Off
       OperationState:
         name       BSH.Common.Status.OperationState
         type       BSH.Common.EnumType.OperationState
         value      DelayedStart
       RemoteControlActive:
         name       BSH.Common.Status.RemoteControlActive
         value      On
         values     On,Off
       RemoteControlStartAllowed:
         name       BSH.Common.Status.RemoteControlStartAllowed
         value      On
         values     On,Off
     trans:
       Cotton.Cotton.Cotton Baumwolle
       DelicatesSilk.DelicatesSilk.DelicatesSilk Fein/Seide
       EasyCare.HHSynthetics.HHSynthetics Pflegeleicht
       FastWashDry.WD45.WD45 ExtraKurz15/Wash&Dry45
       LabelEU19.LabelEU19.Eco4060 Eco40-60
       Mix.HHMix.HHMix Schnell/Mix
       RefreshWD.Refresh.Refresh IronAssist
       Rinse.Rinse.Rinse Spülen
       Sensitive.Sensitive.Sensitiv HygienePlus
       Spin.Spin.SpinDrain Schleudern/Abpumpen
       SportFitness.SportFitness.SportFitness Sportswear
       Wool.Wool.Wool Wolle
   helper:
     ActiveProgram Spin
     autostart  0
     clear      0
     details    1
     elapsed    0
     eventChannelTimeout 1737657313.88533
     init       1
     init_count 3
     key       
     options    -1
     programs   0
     retrycounter 0
     settings   1
     stateupdate 0
     status     1
Attributes:
   alias      Waschtrockner
   icon       scene_washing_machine
   logfile    log/HC/WasherDryer
   room       Bosch
   stateFormat state1 (state2)
   translate  Option.ProcessPhase
   updateTimer 30
   verbose    0
   webCmd     :StartProgram:StopProgram:PauseProgram

Adimarantis

Ich denke ich weiss was schief lief (das würde im normalen Logfile stehen):
Er erwartet eine Zeitangabe in "HH:MM" - also musst du "set xxx DelayStart 0:00" machen - sorry.

Ich habe jetzt auch noch etwas mehr Logging eingebaut. Zur Sicherheit der Ablauf:

1. FHEM updaten, Waschmaschine aus
2. Sobald FHEM voll da ist: Waschmaschine einschalten und einen verzögerten Start definieren
3. In FHEM prüfen ob der OperationState auf DelayedStart wechselt. Wenn nicht mal "get Status" machen (und sonst nichts)
4. ggf. reload im Browser. Dann sollte eigentlich auch die "set" Option DelayRelative auftauchen. Wenn nicht bitte ein "list" an dieser Stelle.
5. "set xx DelayRelative 0:00" ausführen (über klick oder im Zweifelsfall über Kommandzeile) - sofern OperationState=DelayedStart (sonst hilft es nichts)


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