48_HomeConnect.pm neue Überarbeitung

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

Vorheriges Thema - Nächstes Thema

Adimarantis

ZitatWie gesagt, irgendwann kommt irgendein Wert vom Backofen. Der hat auch 1* gestimmt.....
Damit wäre wohl recht offensichtlich, dass die API diesbezüglich nicht funktioniert. Ich hab mal ein Ticket auf gemacht, aber ich befürchte die werden sagen, dass die Developer API zum Ausprobieren ist und sie gar kein Interesse haben diese 100% akkurat zu bekommen. Mal sehen.
Wenn wenigstens das get Status korrekte Infos liefern würde, dann könnte man das periodisch automatisch auslösen (immer wenn ElapsedProgramTime aktualisiert wird). Bringt aber scheinbar erstens nichts, und zweitens hat die Developer API ein rate limit - maximal 1000 Abfragen in 24h.

Kannst du PreHeat und SetpointTemperature setzen? Zumindest wäre interessant welche Fehlermeldungen er bringt und ob diese dann im exclude Attribut landen und zukünftig ausgeblendet werden.
Desweiteren gibt es ja auch das Setting "AlarmClock" - kannst du damit was machen, bzw. manuell am Gerät was einstellen und sehen was kommt?

Ansonsten wären wir wohl ohne weitere Fixes von BSH am Ende des machbaren.

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: tomhead am 06 Januar 2025, 14:18:19Anbei mal meine logs (Waschmaschine, Geschirrspüler, Kaffeemaschine, Backofen) der letzten Tage noch mit der Version vom 3.1.25.
Backofen: Zeigt das selbe Problem wie bei isy - Die Temperatur wird nicht aktualiert. Ticket bei BSH offen.
Kaffeemaschine: Da sehe ich die selben Probleme, die ich auch gestern in der Simulation hatte. Das könnte mit der aktuellen Version besser sein
Geschirrspüler: Auf den ersten Blick alles OK - ziemlich genau wie meiner
Waschmaschine: Da sehe ich die Fehler mit den "." Programmen - das sollte jetzt behoben sein

Also ich denke der nächste Schritt wäre hier ein paar Sachen auszuprobieren und zu schauen ob etwas nicht so funktioniert wie erwartet (Logfile laufen lassen).
Wenn ein Problem auftritt, noch ein aktuelles "list" vom Device und eine kurze Beschreibung, sowie den ungefähren Zeitstempel, damit ich das im Logfile finde.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU)/RfxTrx433XL/Zigbee
Module: 50_Signalbot, 48_HomeConnect, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

DerTom71

#77
Zum Kühlschrank:
setpointTemperatureRefrigerator 2 bis 8 °C => funktioniert jetzt  ;D

OpenDoor will noch nicht so ganz:
2025.01.06 18:29:28.562 3: [HomeConnect] KIF81HOD0: set command: OpenDoor
2025.01.06 18:29:28.562 3: [HomeConnect] KIF81HOD0: OpenDoor uri /api/homeappliances/BOSCH-KIF81HOD0-xx/commands/BSH.Common.Command.OpenDoor and data {"data":{"key":"BSH.Common.Command.OpenDoor","value": true } }
2025.01.06 18:29:28.562 4: KIF81HOD0: request /api/homeappliances/BOSCH-KIF81HOD0-xx/commands/BSH.Common.Command.OpenDoor
2025.01.06 18:29:28.563 4: KIF81HOD0: no token refresh needed
2025.01.06 18:29:28.563 4: KIF81HOD0: requestAfterToken https://api.home-connect.com/api/homeappliances/BOSCH-KIF81HOD0-xx/commands/BSH.Common.Command.OpenDoor
2025.01.06 18:29:28.584 4: [HomeConnect_ReadingsVal] KIF81HOD0: Refrigeration.Common.Setting.Door.AssistantFridge->Setting.Door.AssistantFridge : On
2025.01.06 18:29:28.584 4: [HomeConnect_ReadingsVal] KIF81HOD0: Refrigeration.Common.Setting.Door.AssistantFreezer->Setting.Door.AssistantFreezer : Off
2025.01.06 18:29:28.584 4: [HomeConnect_ReadingsVal] KIF81HOD0: BSH.Common.Status.OperationState->Status.OperationState :
2025.01.06 18:29:28.584 4: [HomeConnect_ReadingsVal] KIF81HOD0: BSH.Common.Status.RemoteControlStartAllowed->Status.RemoteControlStartAllowed : Off
2025.01.06 18:29:28.682 4: KIF81HOD0: response {
  "error": {
    "description": "Insufficient scope for this resource",
    "key": "insufficient_scope"
  }
}
2025.01.06 18:29:28.682 1: [HomeConnect_HandleError] KIF81HOD0: Error "Insufficient scope for this resource"
2025.01.06 18:29:28.687 4: [HomeConnect_ReadingsVal] KIF81HOD0: Refrigeration.Common.Setting.Door.AssistantFridge->Setting.Door.AssistantFridge : On
2025.01.06 18:29:28.687 4: [HomeConnect_ReadingsVal] KIF81HOD0: Refrigeration.Common.Setting.Door.AssistantFreezer->Setting.Door.AssistantFreezer : Off
2025.01.06 18:29:28.687 4: [HomeConnect_ReadingsVal] KIF81HOD0: BSH.Common.Status.OperationState->Status.OperationState :
2025.01.06 18:29:28.687 4: [HomeConnect_ReadingsVal] KIF81HOD0: BSH.Common.Status.RemoteControlStartAllowed->Status.RemoteControlStartAllowed : Off
2025.01.06 18:29:28.816 4: [HomeConnect_ReadingsVal] KIF81HOD0: Refrigeration.Common.Setting.Door.AssistantFridge->Setting.Door.AssistantFridge : On
2025.01.06 18:29:28.816 4: [HomeConnect_ReadingsVal] KIF81HOD0: Refrigeration.Common.Setting.Door.AssistantFreezer->Setting.Door.AssistantFreezer : Off
2025.01.06 18:29:28.816 4: [HomeConnect_ReadingsVal] KIF81HOD0: BSH.Common.Status.OperationState->Status.OperationState :
2025.01.06 18:29:28.816 4: [HomeConnect_ReadingsVal] KIF81HOD0: BSH.Common.Status.RemoteControlStartAllowed->Status.RemoteControlStartAllowed : Off

ZitatDumme Frage: Wozu ist das? Irgendwie verstehe ich nicht warum jemand einen Kühlschrank per Fernsteuerung öffnen sollte...
Letzendlich spielerei. (Der Kühlschrank ist Mannshoch und integiert. Es soll so die Türöffnung erleichtert werden.)

Adimarantis

"description": "Insufficient scope for this resource",Ich denke ich habe dafür (und eventuell auch für andere Einschränkungen) die Ursache gefunden.

HomeConnectConnection hat uralte Defaults für den accessScope.
Ich nehme nicht an, dass sich irgendjemand die Mühe gemacht hat in dieses Attribut irgendetwas eigenes zu schreiben.
Bisher holt sich FHEM nur diese Rechte:
"IdentifyAppliance Monitor Settings Dishwasher-Control Washer-Control Dryer-Control CoffeeMaker-Control"Ich habe das jetzt auf die maximal mögliche Liste erweitert:
"IdentifyAppliance Monitor Settings Control " .
"Oven Oven-Control Oven-Monitor Oven-Settings " .
"Dishwasher Dishwasher-Control Dishwasher-Monitor Dishwasher-Settings " .
"Washer Washer-Control Washer-Monitor Washer-Settings " .
"Dryer Dryer-Control Dryer-Monitor Dryer-Settings " .
"WasherDryer WasherDryer-Control WasherDryer-Monitor WasherDryer-Settings " .
"Refrigerator Refrigerator-Control Refrigerator-Monitor Refrigerator-Settings " .
"Freezer Freezer-Control Freezer-Monitor Freezer-Settings " .
"WineCooler WineCooler-Control WineCooler-Monitor WineCooler-Settings " .
"CoffeeMaker CoffeeMaker-Control CoffeeMaker-Monitor CoffeeMaker-Settings " .
"Hob Hob-Control Hob-Monitor Hob-Settings " .
"Hood Hood-Control Hood-Monitor Hood-Settings " .
"CleaningRobot CleaningRobot-Control CleaningRobot-Monitor CleaningRobot-Settings " .
"CookProcessor CookProcessor-Control CookProcessor-Monitor CookProcessor-Settings " .
Kleiner Unterschied, oder?

Mit dieser Liste kann ich z.B. in der Simulation jetzt die Temperatur des Ofens ändern - dürfte ich vorher nicht.

Vielleicht kommen jetzt auch mehr Events.
Tja, ich hatte mich auf das HomeConnect Modul konzentriert und das komplett übersehen.

Vorgensweise:
1. Neue Version beider Module einspielen.
2. Sicherstellen das nichts im accessScope Attribut steht
3. Im HomeConnectConnection ein logout und erneutes login
4. Save Config
5. shutdown restart
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU)/RfxTrx433XL/Zigbee
Module: 50_Signalbot, 48_HomeConnect, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Stonemuc

Ich werde auch mal etwas "Entwicklungshilfe" leisten - installiere morgen mal die überarbeitete Version aus diesem Repro...
Ich habe folgende Geräte: Waschmaschine, Trockner, Geschirrspüler, Cookit, Kühl-/Gefrierkombination mit Kamera und Backofen.
FHEM aus Raspberry PI 3 B+, Haussteuerung auf EnOcean Basis, Tecalor THZ 404eco Wärmepumpe

DerTom71

#80
Kühlschrank:
set KIF81HOD0 OpenDoor => Funktioniert ;D

Eine Kleinigkeit:
Das Reading state ist immer "off". (Ein Kühlschrank ist aber immer an.)
(Das Reading "Setting.PowerState" steht immer korrekt auf "on".)

Vielen Dank an Adimarantis

Adimarantis

Zitat von: DerTom71 am 07 Januar 2025, 00:11:53Das Reading state ist immer "off". (Ein Kühlschrank ist aber immer an.)
Was hältst du davon beim Kühlschrank den Zustand der Tür (open/closed) als state zu nehmen?
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU)/RfxTrx433XL/Zigbee
Module: 50_Signalbot, 48_HomeConnect, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

isy

ZitatKannst du PreHeat und SetpointTemperature setzen? Zumindest wäre interessant welche Fehlermeldungen er bringt und ob diese dann im exclude Attribut landen und zukünftig ausgeblendet werden.
Desweiteren gibt es ja auch das Setting "AlarmClock" - kannst du damit was machen, bzw. manuell am Gerät was einstellen und sehen was kommt?

Moin,
ich habe gerade die letzte Version eingespielt (2 neue Versionen letzte Nacht?).
Die Temperatur wird exakt zum Start des Backofens auf 20 Grad korrekt gesetzt. Einmalig, nach manuellem get status.
Die Set Optionen für Preheat etc. sind nicht mehr verfügbar.

List und Log in der Anlage, Aktivität war bis 10.45 Uhr.

Ein Weg wird erst zu einem Weg, wenn man ihn geht

isy

Zitat:
ZitatHomeConnectConnection hat uralte Defaults für den accessScope.

Sehen wir Anwender die Änderungen vom Post oben irgendwo in FHEM?
Ein Weg wird erst zu einem Weg, wenn man ihn geht

DerTom71

Ich habe die neuste Version mit der Kühlschrank state Änderung probiert => state bleibt unverändert auf "off". (Keine Fehlermedlung im LOG). Reading sehen bis auf state gut aus:
READINGS:
     2025-01-07 09:31:04   Event.DoorAlarmRefrigerator Off
     2025-01-07 11:32:39   Setting.Door.AssistantForceFridge LowForce
     2025-01-07 11:32:39   Setting.Door.AssistantFridge On
     2025-01-07 11:32:39   Setting.PowerState On
     2025-01-07 11:36:31   Setting.SetpointTemperatureRefrigerator 5 °C
     2025-01-07 11:32:39   Setting.SuperModeRefrigerator Off
     2025-01-07 11:36:46   Status.Door.Refrigerator Open
     2025-01-07 11:36:46   Status.DoorState Open
     2025-01-07 09:31:04   alarmCount      0
     2025-01-07 09:31:04   alarms         
     2025-01-07 11:24:54   lastErr         ok
     2025-01-07 11:36:46   state           off
     2025-01-07 11:36:46   state1          Tür offen
     2025-01-07 11:36:46   state2          -

Adimarantis

Zitat von: DerTom71 am 07 Januar 2025, 11:46:07Ich habe die neuste Version mit der Kühlschrank state Änderung probiert => state bleibt unverändert auf "off".
Argh.. Tippfehler: Fridge schreibt man mit "d" - Refrigerator ohne...

Ich habe jetzt noch einen dritten state eingebaut: Wenn der DoorAlarm losgeht, dann wechselt er auf "alarm".
Kannst du schauen ob das geht (und vorallem wieder weggeht, denn die Simulation geht zwar irgendwann auf "Present" - aber nie mehr auf "Off" - Nachdem ich in deiner ReadingList ein "Off" sehe, bin ich da aber zuversichtlich :)
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU)/RfxTrx433XL/Zigbee
Module: 50_Signalbot, 48_HomeConnect, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Shadow3561

Habe deine neue Version gerade ausprobiert in der Hoffnung, dass beim Waschtrockner auch Programme gesetzt werden können. Leider funktioniert es nicht.
Anbei habe ich das Log vom Waschtrockner und auch eins vom Kochfeld.
Diese beherrscht so einige Programme (assistiertes Kochen), aber auch hier hat sich nichts geändert. Schade.

Mit freundlichen Grüßen

Adimarantis

Zitat von: isy am 07 Januar 2025, 10:47:45Sehen wir Anwender die Änderungen vom Post oben irgendwo in FHEM?
Bisher nicht. Ich habe gerade noch eine Version eingecheckt, die den gesetzen Scope in ein internal Reading schreibt.
Nachdem bei dir jetzt was verschwunden ist, weiss ich auch nicht, ob ich nicht übers Ziel hinausgeschossen bin. die Items mit Bindestrich sollten nicht nötig sein (aber auch nicht schaden). Ich hab das jetzt wieder vereinfacht (also nur noch "Dryer" und nicht zusätzlich "Dryer-*")
Vielleicht bringt das dein "FastPreHeat" zurück?
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU)/RfxTrx433XL/Zigbee
Module: 50_Signalbot, 48_HomeConnect, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Shadow3561

Beim Kochfeld wird der Status leider nicht aktualisiert.
Es zeigt aber brav an welche Leistungsstufe gerade an ist und auch welche Herdplatte. Diese bleibt jedoch immer auf "front left", egal welche man anschaltet. Die Leistung wird angezeigt, muss zumindest bei mir aber /10 genommen werden. Die Leistungsstufe wird nach einem "get Status" auch geändert.
Anbei noch einmal ein log.

PS:
Beim Kochfeld wird die Hash-ID nicht automatisch durch XXX ersetzt. Liegt aber wahrscheinlich daran, dass die Hash-ID etwa so ausschaut "BOSCH-PXY875KW1E-XXXXXX"

Mit freundlichen Grüßen

Adimarantis

@Shadow:
- Kochfeld aktualisieren: Soweit ich sehe, kommt jedesmal wenn du das Kochfeld bedienst ein "LocalControlActive" Event. Leider ohne weitere Infos, aber man könnte hier ein getStatus triggern, dann sollte es ja halbwegs konsistent aktualisiert werden.
- HaID: Danke- muss ich den regexp noch etwas erweitern. Meine Geräte haben alle reine Ziffernfolgen
- Waschtrockner: GetPrograms liefert hartnäckig nur eine leere Liste. Ich würde versuchen in dem Fall eine Defaultliste zu nehmen. Folgende Liste ist sowieso schon im Modul hinterlegt - entspricht das dem was dein Gerät kann?
  "Mix.HHMix.HHMix"                           => "Schnell/Mix",
  "EasyCare.HHSynthetics.HHSynthetics"        => "Pflegeleicht",
  "DelicatesSilk.DelicatesSilk.DelicatesSilk" => "Fein/Seide",
  "Sensitive.Sensitive.Sensitiv"              => "HygienePlus",
  "RefreshWD.Refresh.Refresh"                 => "IronAssist",
  "FastWashDry.WD45.WD45"                     => "ExtraKurz15/Wash&Dry45",
  "SportFitness.SportFitness.SportFitness"    => "Sportswear",
  "Wool.Wool.Wool"                            => "Wolle",
  "Cotton.Cotton.Cotton"                      => "Baumwolle",
  "LabelEU19.LabelEU19.Eco4060"               => "Eco40-60",
  "Rinse.Rinse.Rinse"                         => "Spülen",
  "Spin.Spin.SpinDrain"                       => "Schleudern/Abpumpen"

Den Schwachsinn mit den dreifachen Namen hat mein Trockner auch. Das könnte man wahrscheinlich noch verschönern.
Kannst du eventuell versuchen ein kurzes Logfile zu machen, an dem du folgendes am Gerät machst:
- Einschalten
- Programm wählen
- 2 Sekunden warten
- nächstes Programm wählen
- 2 Sekunden warten
- und so weiter bis du alle Programme durch hast

Ich würde erwarten, dass wir dann alle Programme ins logfile kriegen.
Eventuell muss man auch statt zu warten ein "GetStatus" machen - aber ich hoffe es geht erstmal nur so.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU)/RfxTrx433XL/Zigbee
Module: 50_Signalbot, 48_HomeConnect, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)