48_HomeConnect.pm neue Überarbeitung

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

Vorheriges Thema - Nächstes Thema

Prof. Dr. Peter Henning

Ich kann leider im Moment nicht testen, weil ich seit 7 Stunden auf einem Landesparteitag herumhänge...

LG

pah

isy

Wir haben Besuch und ich kann nicht testen.
Aber die Spülmaschine läuft, alle Readings sehen sehr gut aus und der Status ist auch korrekt:
Geschirrspüler Eco50 (3:34)
Melde mich später wieder wegen des Backofens.
Ein Weg wird erst zu einem Weg, wenn man ihn geht

Prof. Dr. Peter Henning

ZitatWenn das Kochfeld nie Programme haben kann, macht es aber wahrscheinlich Sinn den Typ "Hob" aus der Progammlogik rauszunehmen.
Um Himmels Willen, nein! Mein Kochfeld kennt eine ganze Menge Programme, die man zwar (noch) nicht steuern kann - die aber jeweils unterschiedliche Daten liefern. Bis in zur Temperatur im Topf.

LG

pah

Shadow3561

#63
Moin,
Ich habe jetzt am WE auch mal deine Version laufen lassen und mitgelockt. Files anbei.

Bei Waschtrockner kann ich leider mit deiner Version nicht einschalten, ausschalten geht aber.
Programme werden leider auch nicht angezeigt oder von der API geladen, funktionierte bisher auch nicht.
Vielleicht helfen dir die Logs (wäre schön wenn sie im log-Verzeichnis liegen würden) weiter.
Mit freundlichen Grüßen

Adimarantis

Zitat von: Prof. Dr. Peter Henning am 05 Januar 2025, 17:11:28Um Himmels Willen, nein! Mein Kochfeld kennt eine ganze Menge Programme, die man zwar (noch) nicht steuern kann - die aber jeweils unterschiedliche Daten liefern. Bis in zur Temperatur im Topf.
Dann freue ich mich schon auf das Logfile damit wir sehen, was schon alles an Infos kommt.
Bitte dann auch das extraInfo Attribut setzen, damit wir auch wirklich alles sehen.

Bei der Gelegenheit möchte ich noch meine FTUI integration teilen:
Jedes Gerät hat bei mir so eine Zelle:
<ftui-cell>
    <ftui-column>
    <ftui-icon [color]="WM14VL40:state | map('done|error:red, run: yellow, auto|scheduled|pause: blue, idle:my-green, , off:my-green')" size="4"
                name="scene_washing_machine"
                path="..\images\openautomation\"
                [class-list]="WM14VL40:state | map('run:spin, done:hop')">
            </ftui-icon>
    <ftui-badge color="danger" size="4" [text]="WM14VL40:alarmCount"> </ftui-badge>
    </ftui-column>
    <ftui-label size="3" [text]="WM14VL40:state1"></ftui-label>
    <ftui-label size="3" [text]="WM14VL40:state2"></ftui-label>
    <ftui-label size="2" text="Siemens"></ftui-label>
</ftui-cell>
Hier nochmal ein Screenshot. In der zweiten Zeile mit dem Strich wird bei laufendem Program dann z.B. die Restzeit angezeigt. Die (1) bei der Spülmaschine ist der aktuelle Alarm (in dem Fall: Klarspüler fast leer)
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 05 Januar 2025, 17:22:54Vielleicht helfen dir die Logs (wäre schön wenn sie im log-Verzeichnis liegen würden) weiter.
Danke. Das Attribut "logfile" ist der Dateiname der 1:1 an das FileLog Device durchgereicht wird.
Setze das also z.B. auf "log/spuelmaschine-%Y-%m-%d.log" und es landet sogar tagesfein im log Verzeichnis.

Also das Kochfeld ist soweit extrem "langweilig". Das spuckt irgendwie gar keine Zusatzinfos aus. Hatte das nicht die Möglichkeit irgendwie einen Timer zu setzen? Wäre interessant ob da mehr kommt. Wird dir dort ein "set" für AlarmClock angeboten?

Spülmaschine schaut sehr wie meine aus. Da steige ich jetzt nicht tiefer ein. Falls da irgendwas nicht so funktioniert wie du es erwartest, lass es mich wissen. Dann brauche ich speziell für den Zeitraum ein Logfile.

Wenn du sagst, dass der Waschtrockner nicht eingeschaltet werden kann: Wird die "set Power On" nicht angeboten oder funktioniert es nicht? Im Logfile finde ich nämlich keinen Hinweis darauf, dass ein "Power On" versucht wurde.
Wenn es dir nicht angeboten wird, dann mach einfach mal in der Kommandozeile "set <device> Power On" - mal sehen ob das tut.

Beim Waschtrockner bitte auch mal ein "list" vom Device. Da kommen ein paar Sachen und ich würde gerne wissen, was das Modul davon "versteht" und in interne Readings schreibt.
Aktuell sehe ich da nur ein Program: "LaundryCare.WasherDryer.Program.LabelEU19.LabelEU19.Eco4060" und das mag er anscheinend nicht als Programmname für GetProgramOptions
Sonst auch mal gerne am Gerät den Regler kurz auf alle verschiedenen Programme stellen - oft kommen da jeweils Events und auch mal einen Lauf mitprotokollieren.



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

Adimarantis

#66
Ich noch ein bisschen in den offiziellen Dokumenten gewühlt und dabei ist mir aufgefallen, dass wir ein
api/homeappliances/$hash->{haId}/programs/availablemachen um die Programliste zu holen. (und das macht schon die Urversion so ohne das das je jemand hinterfragt hat)
Erstens geht das nur wenn das Gerät eingeschaltet ist, und dann könnte das auch der Grund sein warum beim Kochfeld oder Waschtrockner so wenig zurückkommt.
Daher habe ich das jetzt auf
api/homeappliances/$hash->{haId}/programsund das schaut zumindest bei allen meinen Geräten weiterhin vernünftig aus.
Vielleicht hilfts....
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: Adimarantis am 05 Januar 2025, 18:04:36Wenn du sagst, dass der Waschtrockner nicht eingeschaltet werden kann: Wird die "set Power On" nicht angeboten oder funktioniert es nicht?
Die Frage kann ich mir glaube ich selbst beantworten: Power on wird für "Washer" deaktiviert und matched versehtlich auch auf WasherDryer. Sollte jetzt gefixed sein.
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, nochmal ein Update für heute.

Ich habe mit viel Tricks die Simulation zum laufen gekriegt (der mag die Syntax mit dem "set ... auth" irgendwie nicht. Wenn man also Ziel URL nur sowas wie "http://raspi400.local:8083/fhem.html" definiert, läuft zwar der Request FHEM-seitig ins leere, aber man hat im Browser noch die komplette URL mit dem "code=...." tag, welches man dann extrahieren und manuell mit "set ... auth" setzen kann - Achtung %XX Ersetzungen!)

Die Simulation ist ziemlich fragil. Die schickt manche Dinge nur wenn sie mag, womit es nicht so leicht ist konsistente Tests zu machen, aber immerhin denke ich das ich ein paar kleinere Bugs gefunden habe und für die Geräte Ofen, Coffeemaker und Kühlschrank die Statusmeldungen angepasst habe.
Dass die Simulation teilweise grauenvoll ist, merkt man z.B. an der Spülmaschine. Die funktioniert in der Simulation überhaupt nicht, weil sie keine Optionen und Zeiten zurückliefert.
 
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU)/RfxTrx433XL/Zigbee
Module: 50_Signalbot, 48_HomeConnect, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

DerTom71

Da ich wohl der einzigste mit einem Kühlschrank bin ist das mein Hauptaugenmerk.

Internals:
   DEF        hcconn BOSCH-KIF81HOD0-XX
   FUUID      673d0512-f33f-37a3-ffa4-7c2106d1bd97f928
   NAME       KIF81HOD0
   NR         1794
   NTFY_ORDER 50-KIF81HOD0
   STATE      On
   TYPE       HomeConnect
   aliasname  Kühlschrank
   brand      Bosch
   eventCount 344
   events     DoorAlarmRefrigerator
   haId       BOSCH-KIF81HOD0-XX
   hcconn     hcconn
   prefix     Refrigeration.FridgeFreezer
   settings   PowerState,SetpointTemperatureRefrigerator,SuperModeRefrigerator,AssistantFridge,AssistantForceFridge
   type       Refrigerator
   vib        KIF81HOD0
   OLDREADINGS:
   READINGS:
     2025-01-06 01:51:59   Setting.Door.AssistantForceFridge LowForce
     2025-01-06 01:51:59   Setting.Door.AssistantFridge On
     2025-01-06 01:51:59   Setting.PowerState On
     2025-01-06 01:51:59   Setting.SetpointTemperatureRefrigerator 5 °C
     2025-01-06 01:51:59   Setting.SuperModeRefrigerator Off
     2025-01-06 01:51:54   Status.Door.Refrigerator Closed
     2025-01-06 01:51:54   Status.DoorState Closed
     2025-01-06 01:52:39   lastErr         Unknown unit °C for feature key: Refrigeration.FridgeFreezer.Setting.SetpointTemperatureRefrigerator
     2025-01-06 01:51:54   state           off
     2025-01-06 01:51:54   state1         
     2025-01-06 01:51:54   state2         
   data:
     options:
     retrans:
       SuperMode  SuperModeRefrigerator
       Temperatur SetpointTemperatureRefrigerator
       TürAssistent AssistantFridge
       TürKraft  AssistantForceFridge
     settings:
       AssistantForceFridge:
         name       Refrigeration.Common.Setting.Door.AssistantForceFridge
         type       Refrigeration.Common.EnumType.Door.AssistantForce
         value      LowForce
       AssistantFridge:
         name       Refrigeration.Common.Setting.Door.AssistantFridge
         value      On
         values     On,Off
       PowerState:
         name       BSH.Common.Setting.PowerState
         type       BSH.Common.EnumType.PowerState
         value      On
         values     On,Off
       SetpointTemperatureRefrigerator:
         name       Refrigeration.FridgeFreezer.Setting.SetpointTemperatureRefrigerator
         unit       °C
         value      5
       SuperModeRefrigerator:
         name       Refrigeration.FridgeFreezer.Setting.SuperModeRefrigerator
         value      Off
         values     On,Off
     status:
       DoorState:
         name       BSH.Common.Status.DoorState
         type       BSH.Common.EnumType.DoorState
         value      Closed
       Refrigerator:
         name       Refrigeration.Common.Status.Door.Refrigerator
         type       Refrigeration.Common.EnumType.Door.States
         value      Closed
     trans:
       AssistantForceFridge TürKraft
       AssistantFridge TürAssistent
       SetpointTemperatureRefrigerator Temperatur
       SuperModeRefrigerator SuperMode
   helper:
     eventChannelTimeout 1736124771.22234
     init       settings_done
     init_count 1
     retrycounter 0
     total_count 10
     updatePO   0
Attributes:
   alias      Kühlschrank
   room       EG->Küche,System->Device->HomeConnect
   stateFormat Setting.PowerState
   verbose    0

Ich habe SET probiert:

Setting.Door.AssistantFridge => on/off => funktioniert ;D
Setting.Door.AssistantForceFridge LowForce/MiddleForce/HighForce => funktioniert ;D

SetpointTemperatureRefrigerator 2 bis 8 °C => Fehler  :o
KIF81HOD0: response {
  "error": {
    "description": "Unknown unit °C for feature key: Refrigeration.FridgeFreezer.Setting.SetpointTemperatureRefrigerator",
    "key": "SDK.Error.UnsupportedUnit"
  }
}

Setting.Door.AssistantFridge ist nur der Paramter ob die die automatische Türöffung erlaubt ist.
In der API-Beschreibung habe ich folgende gefunden: https://api-docs.home-connect.com/commands/#open-door

Kann man das Command "open-door" irgendwie da rein bekommen?




isy

Zitat von: Adimarantis am 05 Januar 2025, 23:33:24.......aber immerhin denke ich das ich ein paar kleinere Bugs gefunden habe und für die Geräte Ofen, Coffeemaker und Kühlschrank die Statusmeldungen angepasst habe.

Moin!
Ich habe heute morgen die neue Version eingespielt und den Backofen getestet.
  • Es wird nach "get status" das laufende Programm angezeigt, die IST-Temperatur und die aktuelle Laufzeit. Die Werte werde nicht automatisch aktualisiert.
  • Programme werden sauber geladen.

Gerade getestet:
Das Reading Status.CurrentCavityTemperature zeigt die aktuelle Temp an, wie gesagt, nach manuellem get status ging sie auch 1 mal runter von 51 Grad auf 47.
Ich habe die Tür geöffnet und schaue, ob die Anzeige weiter runter geht.
--> Der Wert bleibt allerdings auch nach 60 Minuten bei 47 Grad konstant. Der Ofen zeigt 31 Grad.
--> Ich habe ein neues Programm gestartet. Statusanzeige: Ober/Unterhitze (0:01/47 °C)
--> Temp lt. Ofen jetzt 50 Grad, angezeigte Temp bleibt bei 47
--> Es gibt also zu bestimmten Zeiten neue Temp-Werte, unklar wann oder unter welchen Konditionen.

Ich werde die Daten noch länger beobachten, aber die aktuelle Entwicklung sieht gut aus! Super!
Ein Weg wird erst zu einem Weg, wenn man ihn geht

Adimarantis

Zitat von: DerTom71 am 06 Januar 2025, 02:48:44SetpointTemperatureRefrigerator 2 bis 8 °C => Fehler  :o
Das hat mich jetzt lange gefuchst und ich weiss nicht ob es bei dir hilft, weil ichs mangels Gerät nicht testen kann.
Einerseits muss ich nach utf8 konvertieren, andereseits steigt mir dann aber httputils aus. Ich hab jetzt einen Hack implementiert, der für mich ok aussieht. bitte probieren.
ZitatKann man das Command "open-door" irgendwie da rein bekommen?
Ja. Sollte jetzt für alle Arten von Kühlschränken drin sein. Wird aber nur eingeblendet, wenn das "Assist" Setting "On" ist.
Dumme Frage: Wozu ist das? Irgendwie verstehe ich nicht warum jemand einen Kühlschrank per Fernsteuerung öffnen sollte...

Hinweis: Ich hab den Prototypen einer Routine geändert -> Beim "reload" wird ein Fehler kommen, es ist ein "shutdown restart" notwendig
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: isy am 06 Januar 2025, 10:15:48--> Der Wert bleibt allerdings auch nach 60 Minuten bei 47 Grad konstant. Der Ofen zeigt 31 Grad.
Laut log schickt die API auch nichts anderes. Dürfte leider mal wieder eine Einschränkung sein - er schickt scheinbar eine alte Temperatur.
Was mir noch aufgefallen ist, das da während des Betriebs immer ein Fehler kommt (no program selected) - wahrscheinlich weil man dann "active" abfragen muss. Das hatte ich irgendwie schon vorbereitet aber nicht zu Ende implementiert. Kannst du nochmal probieren.

Ich befürchte allerdings, dass das nicht helfen wird. Im Gegensatz zum Simulator, der brav in Abständen Events mit der aktuellen Temperatur feuert, scheint das dein Gerät (bzw. die developer API) nicht zu machen.
Um besser zu sehen wann du manuell ein "get status" machst, hab ich das logging noch etwas erweitert. Der wird ständig abgefragt und jetzt weiss ich nicht ob das ein Fehler ist, oder du das manuell getriggert hast.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU)/RfxTrx433XL/Zigbee
Module: 50_Signalbot, 48_HomeConnect, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

isy

#73
Alle Status Abfragen habe ich immer manuell ausgelöst.
Wie gesagt, irgendwann kommt irgendein Wert vom Backofen. Der hat auch 1* gestimmt.....

Ich habe das Update geladen und das Logfile geleert und die Readings gelöscht.
Danach Herd gestartet.
Temp war wieder mit 47 Grad gefüllt, früher schon mal mit 33 Grad oder auch 51 Grad (das war 1x korrekt).

Abfrage get program options scheint zu laufen, keine FM:
Unter Internals:
options SetpointTemperature,FastPreHeat
Unter den Readings
2025-01-06 13:33:54 Option.ElapsedProgramTime 101 seconds
2025-01-06 13:33:54 Option.FastPreHeat Off
2025-01-06 13:33:54 Option.SetpointTemperature 180 °C




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

tomhead

Hi, ich finde es klasse, dass das Modul wieder weiter entwickelt wird. Anbei mal meine logs (Waschmaschine, Geschirrspüler, Kaffeemaschine, Backofen) der letzten Tage noch mit der Version vom 3.1.25.
Die neueste Github Version habe ich gerade erst eingespielt.
VG, Tom