FHEM Forum

FHEM - Hausautomations-Systeme => Home Connect => Thema gestartet von: Adimarantis am 24 Dezember 2024, 00:02:52

Titel: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 24 Dezember 2024, 00:02:52
Hallo Zusammen,

Nachdem das schon seit Jahren nicht mehr gepflegte Modul viele Unzulänglichkeiten hat, hatte ich mir die Überarbeitung von pah ("ergonomische Version") installiert und angefangen einige Verbesserungen vorzunehmen.

Ich hatte ein wenig Zeit und Motivation und es wurde ein komplette Überarbeitung draus - die sicherlich noch nicht abgeschlossen ist.

Das ist neu/anders:
- Die überlangen Readingnamen und Werte können jetzt getrennt über zwei Attribute optional gekürzt werden (namePrefix und valuePrefix) - default sollte das Verhalten vom Original sein
- Bei den Werten wird komplett gekürzt, bei den Readings lasse ich aber die Gruppierung vor dem letzen Punkt stehen - also Option.xxxx oder Status.xxxx - damit man zum einen die Events besser filtern kann, zum anderen aber auch um zu verhindern, dass es durch die Kürzung uneindeutig wird
- neue Zeitfunktion "delayFinishAt hh:mm" gibt eine Uhrzeit an, an der das Gerät fertig sein soll, wobei hh:mm in den nächsten 24h liegt - damit möchte ich meine Spülmaschine dann so starten, dass sie in der früh fertig und noch "heiss" ist, so dass nach dem Öffnen alles schneller abtrocknet. Noch nicht im Detail getestet
- neue Funktionen pauseProgram und resumeProgram - getested mit einem aktuellen Wäschetrockner
- Neue readings "state1" und "state2" - diese sind dazu gedacht um einen zweizeiligen Status in FTUI anzuzeigen und beinhalten Informationen über Restzeit, aktuelles Program etc. und werden per default auf Deutsch übersetzt. Lässt sich mit translate=0 unterbinden
- Zeitverzögerung von 60s beim Start von FHEM bevor Werte abgefragt werden, da ich zumindest das Problem hatte, dass obwohl die HomeConnect Verbindung stand, die Abfrage von Settings etc. noch nicht möglich war
- Überhaupt wurden viele Race Conditions behoben, Fehler besser behandelt und eben der ganze Code umgestaltet

Mit meinen 3 Geräten schaut es soweit schon ganz gut aus, wobei ich noch nicht alles getestet habe (einen Trockner startet mal problemlos auch mal leer um was zu testen, bei Waschmaschine und Spülmaschine muss ich da immer abpassen wenn es tatsächlich was zu tun gibt :) )
Grundsätzlich war das Modul ja recht generisch aufgebaut und andere Geräte sollten zumindest soweit funktionieren, dass es zur Anzeige des Status reicht. Welche Optionen dann per FHEM gesetzt werden müssen und welche Aktionen gebraucht werden, wäre dann zu diskutieren.
Ich gehe eher davon aus, dass man alles am Gerät einstellt (nachdem man es beladen hat) und den Fernstart dann nur aktiviert, damit FHEM Optimierungen, insbesondere für den Stromverbrauch (Solar, variable Strompreise), vornehmen kann.

Mein Ziel ist es erstmal, das ganze für meine Anwendungsfälle stabil zu bekommen, wenn aber jemand mittesten/mitmachen will, ist gerne willkommen.
Um das einfacher zu gestalten habe ich einen fork auf Github gemacht und dort meine Version eingecheckt:
https://github.com/bublath/FHEM-HomeConnect

Das "Connection" Modul ist da auch dabei, aber das habe ich bisher nicht anfassen müssen.

Todo:
- Dokumentation
- Settings von Geräten unterstützen (z.B. Schleuderzahl, Trockengrad, Leisemodus.....)
- Testen, testen, testen

Jörg



Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 24 Dezember 2024, 13:28:11
Hmm. Ich hätte es besser gefunden, wenn wir uns dazu im Vorfeld mal austauschen und ein Ziel setzen. Aber gut, zum Modul:

1. Bei der Waschmaschine wird state=idle und state1=Bereit angezeigt, obwohl Status.OperationState=Offline ist.
Bei den Programmen wird zur Auswahl angeboten     
"Super153045Super1530", als SelectedProgram dann aber nur "Super1530" angezeigt.
Die Anzeige des gewählten Programms erfolgt doppelt als "Root.SelectedProgram" und "Status.SelectedProgram"

2. Beim Backofen sind ebenfalls überflüssige halbe Präfixe "Root" enthalten. Sollten entweder entfallen, oder durch "Status" ersetzt werden.
Root.ActiveProgram
Root.SelectedProgram
Bei der Temperaturanzeige für den Backofen gibt es einen Encoding-Fehler, die Anzeige lautet z.B. "71 °C"
Wieso hat den state2 den Wert 0:00, wenn der Kurzzeitwecker noch 10 Minuten läuft?

3. Beim Kochfeld taucht noch ein Reading mit halbem Präfix "Root" auf: Root.ActiveProgram, ist aber leer. Stattdessen wird ein Fehler angezeigt
lastErr = No programs found, wenn das Kochfeld ausgeschaltet ist und
lastErr = No programs selected or active, wenn es eingeschaltet ist, aber nicht warm ist.
Beides sind aber eigentlich keine Fehler.
Wenn das Kochfeld benutzt wird, gibt es noch das Reading Root.SelectedProgram, aber ebenfalls mit dem halben Präfix "Root". Der könnte noch weg, oder durch "Status" ersetzt werden.

4. Bei der Spülmaschine hat das Reading state den Wert off, obwohl die Kiste läuft. Ein Reading Status.OperationState fehlt ebenso Status.DoorState, state1 und state2 sind leer.
Ein Reading mit dem Namen "percent" halte ich für einen Fehler - "Prozent" ist die Einheit, aber von welcher Größe? FHEM-Standard ist "Name Zahl Einheit". 

Allgemein ist ziemlich unklar, was "state2" beinhalten soll.
Ich hatte aus dem Grund die "übersetzten" Status tr_State1...3 eingeführt, die jetzt einfach herausgeflogen sind.

Ich hatte außerdem ganz bewusst die Mehrsprachigkeit für Programme und Statusangaben eingeführt und diese an die Systemsprache gekoppelt. Das hat sich ganz gut bewährt - aber bisher finde ich in der überarbeiteten Version keine Übersetzungen nach den eingebauten Hashtabellen.

Mehr konnte ich heute nicht testen.

LG, Frohes Weihnachtsfest

pah
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 24 Dezember 2024, 14:43:41
Danke fürs anschauen und ebenfalls Frohes Fest. Weihnachtsbaum steht, also hab ich kurz Zeit zu antworten.

Ich hab das jetzt einfach mal gepostet um eben Feedback zu bekommen. Dass einiges - insbesondere mit mir unbekannten Geräten - nicht funktionieren wird war klar.

Die Bedeutung von "Bereit" ist, dass das Gerät bereit zur Verwendung ist - was ja auch bei ausgeschalteten Geräten der Fall ist.

Die "Root" Präfixe sind m.E. so richtig, das "Status.SelectedProgram" wird vom Modul gesetzt - das hatte ich so gelassen, sollte man aber wohl entfernen. Das "Root" Reading kommt so von der API.

Mein FHEM läuft mit encoding=unicode, daher hatte ich die Werte kodiert - muss ich noch abhängig von der Einstellung machen - daher dürften bei dir alle Umlaute etc. aktuell vermüllt sein.

Kurzzeitwecker ist das der Alarm? Da habe ich leider kein Gerät, welches das verwendet.
Ich zeige hier RemainingProgramTimeHHMM - entweder ist das für den Fall falsch oder das wird nicht aktualisiert.
Gerne hier Hinweise/Wünsche wie das darzustellen wäre.

Die Idee vom "percent" reading war etwas ohne Einheit zur Verfügung zu stellen, was einfacher in Bedingungen (DOIF) zu verwenden ist. Idee für einen besseren Namen? Das "time" ist auch so ein Überbleibsel und eigentlich redundant, da es ja genau so in RemainingProgramTimeHHMM steht.

Die Systematik von "state1" und "state2" kann man auch diskutieren. Diese sind rein zu Anzeigezwecken und da der Platz unter einem Icon in FTUI recht schmal ist, spalte ich diese ausführlicheren Infos in zwei Spalten auf.
Customizing sollte hier in z.B. UserReadings unter Verwendung der Originalreadings erfolgen.
Gerne Anregungen, aber hier wird man es niemals jedem Recht machen können.

Übersetzung: Ich fand die Übersetzung von Readingwerten etwas kritisch, da man ja evtl. Abfragen (DOIF, notify...) darauf aufbaut und sich das zerschiesst, wenn man die Sprache ändert oder die Übersetzing ein/ausschaltet.
Grundsätzlich ist das Modul aber so programmiert, dass ich deine Übersetzungstabellen (sind ja noch alle da) ohne Probleme an zentraler Stelle (replaceValue()) einbauen könnte - genau deswegen hab ich das auch überall sonst rausgeworfen. Muss ich mir noch überlegen. Ich würde es bei mir nicht wollen, aber in "state1/2" sehr wohl.
Vielleicht wäre ein Ansatz zu sagen state1/state2 wird immer anhand der locale Einstellung übersetzt - wer auf "DE" schaltet will solche Infos sicher auch Deutsch und das Attribut "translate" schaltet es dann für die Readings auf.

Aktuell schwimme ich bisschen mit den ganzen "Delay...." set-Befehlen.
Kannst du kurz erläutern wie das gedacht war?
Beim meinem Trockner (FinishRelative) macht das aktuell totalen Quatsch.
Außerdem wollte ich mir diese $localoptions näher ansehen. Überlege da einen Hash draus zu machen - dann wirds im "list" auch lesbarer und ist eindeutiger als arrray Indizes

Gruß,
Jörg


 
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: DerTom71 am 24 Dezember 2024, 16:28:56
Hallo Adimarantis,

ich habe 4 Geräte zum testen:
Cooking.Oven
Refrigeration.FridgeFreezer
Cooking.Hob
Dishcare.Dishwasher

Kühlschrank/Spühlmaschine/Bachoffen
Den Wert des Readings doorstate könnten man um den Präfix kürzen. Bei mir:
BSH.Common.Status.DoorState=BSH.Common.EnumType.DoorState.Closed

Kühlschrank:
Der Wert des Readings state=off, obwohl BSH.Common.Setting.PowerState=On ist.
Mein Kühlschrank hat eine automatische Türöffung. Das wäre ein Befehl denn ich gerne hätte.

Schöne Weihnachten.

Gruß
Tom
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 24 Dezember 2024, 17:02:08
Zitat von: Adimarantis am 24 Dezember 2024, 14:43:41Kannst du kurz erläutern wie das gedacht war?
Das ist nötig, weil der "Delayed Start" bei den einzelnen Geräten der BSH-Gruppe unterschiedlich realisiert ist. Wenn man dem Modul eine
DelayStartTime übergibt, fängt das Gerät UM eine bestimmte Uhrzeit an. Mit DelayEndTime sorgt man dafür, dass das Gerät ZU einer bestimmten Zeit fertig ist. DelayRelative bewirkt, dass das Gerät IN einer Zeit von hh:mm Stunden und Minuten startet.
Bitte das unbedingt wieder einbauen, das brauche ich nämlich.

Betreffend die Übersetzungen: Da habe ich durchaus Arbeit hineingesteckt, und möchte nicht, dass das jetzt wieder herausfliegt. Meines Erachtens sollte das jeder selbst festlegen können, dafür gibt es das Systemattribut language (und im Zweifelsfall auch noch das Attribut translate). Und aus genau diesem Grund habe ich die drei State-Angaben als "tr_State1..3" bezeichnet, tr steht für translated.

Betreffend die Präfixe: "Root" sollte in jedem Fall entfernt werden, wenn man den Attributwert namePrefix=0 setzt, sonst ist das inkonsistent.

Betreffend den Kurzzeitwecker: Ja, das ist der Alarm - und z.B. beim Kochfeld das Einzige, was man über FHEM setzen kann.

Betreffend "percent": Es gibt zwar bei vielen FHEM-Devices ein Reading pct - aber nur dann, wenn dieses eindeutig zuzuordnen ist, z.B. bei Rollläden oder Dimmern. Bei einer Waschmaschine könnte das Vieles bedeuten. Um es eindeutig zu machen, müsste man das Reading schon mindestens "pctFinished" nennen

So, Schluss für heute.

LG

pah
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 25 Dezember 2024, 21:20:38
Zitat von: DerTom71 am 24 Dezember 2024, 16:28:56ich habe 4 Geräte zum testen:
Cooking.Oven
Refrigeration.FridgeFreezer
Cooking.Hob
Dishcare.Dishwasher
3 mir unbekannte, hört sich vielversprechend an.

ZitatKühlschrank/Spühlmaschine/Bachoffen
Den Wert des Readings doorstate könnten man um den Präfix kürzen. Bei mir:
BSH.Common.Status.DoorState=BSH.Common.EnumType.DoorState.Closed
Das sollte eigentlich schon passieren in
Status.DoorState=Closed

ZitatKühlschrank:
Der Wert des Readings state=off, obwohl BSH.Common.Setting.PowerState=On ist.
Mein Kühlschrank hat eine automatische Türöffung. Das wäre ein Befehl denn ich gerne hätte.
Ich denke da brauche ich mehr Infos und man müsste wohl auch mal mittracken welche Infos/Events vom Device kommen.
Als nächstes hätte ich dafür die Idee, dass man ein spezielles Logging in ein extra Logfile aktivieren kann, welches alle Aktionen mitprotokolliert.
Das schaltest du dann ein, und machst ein paar typische Aktionen - dann werte ich das File aus.

Gruß,Jörg
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 25 Dezember 2024, 21:37:35
Zitat von: Prof. Dr. Peter Henning am 24 Dezember 2024, 17:02:08Betreffend die Übersetzungen: Da habe ich durchaus Arbeit hineingesteckt, und möchte nicht, dass das jetzt wieder herausfliegt. Meines Erachtens sollte das jeder selbst festlegen können, dafür gibt es das Systemattribut language (und im Zweifelsfall auch noch das Attribut translate). Und aus genau diesem Grund habe ich die drei State-Angaben als "tr_State1..3" bezeichnet, tr steht für translated.
Ich hätte folgenden Vorschlag mal testweise realisiert:
Du definierst im Attribut "translate" eine kommagetrennte Liste von Readings (nur der Kurzname, also z.B. DoorState).
Diese Readings werden dann mit den Tabellen übersetzt und komplett ohne Prefix eingetragen. Das "tr_" hab ich mir mal gespart, da die original Readings den einfachen Prefix behalten und es so eindeutig bleibt. Kommt also raus
"DoorState=geschlossen"
Funktioniert übrigens auch für Programme (z.B. "SelectedProgram")
Bei Readings mit "units" werden diese entfernt um sie besser weiterverarbeiten zu können. (also alles nach Leerzeichen)

Dadurch kann sich jeder aussuchen, was er gerne hätte und sich dann aus diesen Readings individuell eigene Readings bauen.
Als Default bleibt state1 und state2 welches automatisch übersetzt wird wenn global auf "DE" gesetzt ist.

ZitatBetreffend die Präfixe: "Root" sollte in jedem Fall entfernt werden, wenn man den Attributwert namePrefix=0 setzt, sonst ist das inkonsistent.
Insbesondere mit dem o.g. Feature sollte das "Root." m.E. bleiben, damit es keine Namenskonflikte gibt.

Das ganze Zeit und Alarm Thema hab ich mir bisher noch nicht weiter angeschaut.
Viel Zeit ist in den Modulstart gegangen:
Mit 3 Geräten hatte ich beim FHEM Neustart ständig Timeouts bei der initialen Abfrage von Infos und die Devices wären total unvollständig befüllt.
Liegt vielleicht auch daran das mein System viel zu tun hat - insbesondere HMCCU blockiert beim init einiges.

Mein Ansatz ist jetzt mit timer eine zufällige Zeit zu warten bis ich einen Home Connect Request mache und dann noch ein paar Retries vorzusehen.
Aktuell läuft der Fehler bei device=offline noch in die selbe Schiene - das sollte noch gesondert behandelt werden.

Langsam denke ich die Kernfunktionalität wird einigermassen stabil.
Todo:
- Filelog Modus damit Anwender mir unbekannte Geräte mitschneiden können, was die Arbeit diese korrekt zu implementieren vereinfachen sollte
- Zeitfunktionen reparieren
- localsettings in hash umbauen
- Zustandsübergänge testen und ggf korrigieren

Gruß,
Jörg
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 26 Dezember 2024, 11:51:17
Bleiben wir mal bei der Spülmaschine - die wird derzeit am häufigsten benutzt.

Nachdem ich da jetzt einmal DelayRelative 0:01 angegeben haben, kann ich das Ding gar nicht mehr über das Modul starten.
Fehlermeldung "Key BSH.Common.Option.StartInRelative has unexpected type or value false".
Die Werte für den verzögerten Start werde ich auch nicht mehr los, sogar wenn ich das Ding komplett auf PowerOff stelle, mit anderen Worten: Dort ist etwas kaputt gegangen.

Verschwunden ist auch die Option "SilenceOnDemand", die in meiner Version bestens funktioniert hat. Dazu gibt es zwar ein Reading, aber keinen Setzbefehl.

Dann gibt es nach wie vor das (durch die inkonsistente Benennung von BSH verursachte) Problem, dass Ready eben nicht gleich "Bereit" ist. Solange die Kiste nicht "PowerState=On" hat, geht eben gar nichts. Aus dem Grund hatte ich das bei meiner Version als "Inactive" gekennzeichnet, genau wie bei Backofen und Kochfeld. Bei der  Waschmaschine kommt dann noch "Offline" hinzu.

Betreffend die Präfixe für SelectedProgram: Es gibt ein "set <device> SelectedProgram <string>". Wenn kein gleichnamiges Reading (eben _ohne_ Präfix) existiert, gibt das DropDown-Feld nicht den aktuell eingestellten Wert wieder. Darum plädiere ich nach wie vor dafür, statt eines Readings "Root.SelectedProgram" den "Root"-Präfix herauszunehmen. Ob dann noch das doppelte "Status.SelectProgram" drin bleibt, ist Geschmackssache.

Das mit dem Encoding-Problem kann ich nicht ganz nachvollziehen. Normalerweise habe ich mit Unicode-Daten überhaupt kein Problem.

Kann ich stateFormat zwar abfangen, es wundert mich trotzdem.

LG

pah
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 26 Dezember 2024, 12:01:10
Waschmaschine, läuft gerade (manuell gestartet).
Eingestellt (und von der App richtig angezeigt) ist "Cotton". Das Modul behauptet aber, dass SelectedProgram ebenso wie ActiveProgram "Super1530" sei.

SpinSpeed und Temperature werden nicht aktualisiert, sondern stehen auf den (somit falschen) Werten vom letzten Lauf.

LG

pah
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 26 Dezember 2024, 16:40:54
Wenn eine neue Version vom Modul mit "reload" eingespielt wird, wäre wichtig entweder FHEM durchzustarten oder zumindest ein "set <device> init" (aus der Kommandozeile da die Option im Webinterface nicht angeboten wird) auszuführen.
Sonst sind die internen Strukturen, Readings etc. potentiell unvollständig, was insbesondere dazu führt, dass Options nicht gehen.

Spülmaschine: Ich denke ich hab ziemlich die Gleiche. Der Fehler der delayedStart verhindert hat, sollte jetzt behoben sein. Ich habe zumindest meine jetzt erfolgreich um 5 Minuten verzögert gestartet.
SilentMode: das hätte wahrscheinlich nach einem manuellen getProgramOptions funktioniert. Sollte jetzt aber jedesmal automatisch laufen (ungetestet), wenn ein neues Program ausgewählt wird. Ich konnte es zumindest nach einem getProgramOptions bei mir erfolgreich setzen.

Die "delayed" Optionen schauen bei "StartInRelative" Devices soweit gut aus.
Bei "FinishInRelative" stimmt m.E. die Berechnung nicht - ging das schon mal? Damit muss ich noch spielen. Mein Trockner ist so ein Gerät, also kann ich das gut ausprobieren.

Meine alte Waschmaschine lief jetzt auch und hat das Programm eigentlich korrekt angezeigt. Vielleicht lag das am fehlenden "set init"?

Das Logfile Feature ist jetzt eingebaut:
Bitte das Attribut "logfile" mit einem entsprechenden Filenamen setzen, ein "set init" durchführen (oder FHEM neu starten) und dann die entsprechenden Aktionen mitprotokollieren und hier posten. Das logfile enthält alle Events und die JSONs von der API Kommunikation.
Es sollten m.E. keine "privaten" Daten enthalten sein. Die HaId wird mit "XXXX" ersetzt - ich denke das ist einzige das wirklich individuell ist.

Root.SelectedProgram: Jetzt verstehe ich deine Motivation. Persönliche finde ich es nicht so schlimm wenn das aktuelle Programm nicht vorausgewählt ist - man will es ja sowieso ändern und die Liste ist jetzt nicht so lang. Wenn man es nicht kürzt ist es doch genauso. Bin noch nicht überzeugt. Wäre eine Sonderlocke - ich hätte es gerne generisch.

Jörg
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 26 Dezember 2024, 17:46:55
Na, das war schon nach einem Neustart, kein einfaches reload.

Derzeit gehts eher gar nicht.

2024.12.26 17:27:50 1: Downloading https://raw.githubusercontent.com/bublath/FHEM-HomeConnect/master/controls_homeconnect.txt
2024.12.26 17:27:50 1: UPD FHEM/48_HomeConnect.pm
2024.12.26 17:27:50 1: Got 101136 bytes for FHEM/48_HomeConnect.pm, expected 91546

Ich habe das jetzt erstmal manuell wieder eingespielt, alles brav initialisiert.

Unschön dabei: Bei "set .. init" wird ein Icon eingetragen - die habe ich extra herausgeworfen, ich arbeite lieber mit devStateicon

Und nein: Auch wenn alles initialisiert ist, und auch nach manuellem get ProgramOptions wird mir kein "set ... SilenceOnDemand" angeboten.

LG

pah

Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 26 Dezember 2024, 22:02:27
Die Dateigröße anzupassen vergisst man gerne. Ich hab jetzt ein Script geschrieben, das die controls Datei mit anpasst.

Die Verfügbarkeit von Options ist recht tricky. Es kommt drauf an was man manuell und was über FHEM startet und wann man getProgramOptions aufruft (für SilenceOnDemand muss das Programm bereits laufen wenn man das tut).

Daher wäre es echt hilfreich mein logfile Attribut zu nutzen, um den genauen Ablauf mitzuloggen. Jeder machts ein bisschen anders und es dauert sicherzustellen, dass alle Varianten abgedeckt sind.

Die aktuelle Version sollte hoffentlich besser funktionieren.
Wenn mit FHEM ein Programm ausgewählt wird, werden die aktuellen Optionen geholt, womit die "set" Befehle, die VOR dem Programmstart verfügbar sind nach einem Browser Refresh angezeigt werden sollten.
Wird das Programm manuell gewählt, passiert das aber nicht! Hier befürchte ich ans Rate Limit zu kommen, wenn ich bei jedem "Klick" am dem Gerät eine Abfrage mache.

Sobald das Gerät gestartet wird (ActiveProgram wird gesetzt - sollte also sowohl manuell oder per startProgram funktionieren) , wird jetzt getProgramOptions aufgerufen, wodurch Optionen die man dann nicht mehr einstellen kann (z.B. VarioSpeed) verschwinden und SilenceOnDemand auftaucht (wieder: Browser refresh!)

Am Rande: Ich habe theoretisch eingebaut dass man die Farbe vom AmbientLight ändern kann (Dishwasher und Hood), da meiner Frau das Blau zu dunkel war. Anscheinend kann das meine Maschine aber nicht (ich habe "emotionLight" und das kann man wohl nur ein/ausschalten) - aber vielleicht hat jemand ein Gerät dass es kann und möchte das probieren. Jetzt ist nur die Frage wie man verhindert, dass Optionen angeboten werden, die Geräte nicht haben. Daher wäre es interessant ein Logfile von AmbientLight Besitzern zu bekommen - vielleicht wird die Fähigkeit ja irgendwo mitgeliefert - dann weiss ich das ich es deaktivieren muss, wenn das nicht der Fall ist.

Und danke für die Geduld. Wie schon angemerkt ist die API nicht gerade sehr komfortabel und konsistent - da hilft oft nur trial and error - und da man ja nicht ständig die Spülmaschine laufen hat kann das dauern :)


Jörg
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 27 Dezember 2024, 10:27:46
Zitat von: Adimarantis am 26 Dezember 2024, 22:02:27Die Verfügbarkeit von Options ist recht tricky
Amen, Bruder, Amen.

Darum hatte ich ja Standard-Options definiert, die immer verfügbar sein sollten.

Starten der Spülmaschine funktioniert nach wie vor nicht, Fehler liegt hier drin:

Zitat2024.12.27 11:00:52 Request:$VAR1 = {
          'callback' => sub { "DUMMY" },
          'uri' => '/api/homeappliances/XXXX/programs/active',
          'data' => '{"data":{"key":"Dishcare.Dishwasher.Program.Eco50","options":[{"key":"BSH.Common.Option.StartInRelative","value":false}]}}'
        };

2024-12-27_11:00:52 SN55ZS49CE StartProgram
2024.12.27 11:00:52 Response with HC_PS: 1
2024.12.27 11:00:52 Response:$VAR1 = {
          'error' => {
                       'key' => 'SDK.Error.InvalidOptionValue',
                       'description' => 'Key BSH.Common.Option.StartInRelative has unexpected type or value false'
                     }
        };

2024-12-27_11:00:52 SN55ZS49CE lastErr: Key BSH.Common.Option.StartInRelative has unexpected type or value false



LG

pah
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 27 Dezember 2024, 12:57:11
Langsam krieg ich die Krise mit dem Ding. Gerade nochmal delayed start probiert und heute wurde der OperationState nicht auf "DelayedStart" gesetzt (was gestern ging), was meinen Flow wieder ausgehebelt hat  >:(
Und mit getProgramOptions muss man warten, bis die Maschine auf "run" geht - während der "Wartezeit" ist SilenceOnDemand noch nicht verfügbar.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 27 Dezember 2024, 13:13:39
Zitat von: Adimarantis am 27 Dezember 2024, 12:57:11Langsam krieg ich die Krise mit dem Ding
Tja. Hat schon seinen Grund, dass ich damit nur sehr langsam weitergemacht habe. Aber ich denke, dass wir da durchaus gemeinsam die Kurve kriegen können.

Bei mir hat übrigens vorhin der OperationState ganz wunderbar auf DelayedStart gewechselt.

Zum Thema des sofortigen Startens: Bitte in Zeile 1409 einfach setzen
Zitat$value = "0 seconds"
statt nur "0". Das sollte das beheben.

LG

pah

Edit: Habe gerade festgestellt, dass "AlarmEndTime" im Kochfeld (Hob) nicht mehr funktioniert, bei Backofen sehr wohl. Irgendetwas faul an der Berechung der Sekundenzahl. "AlarmRelative" geht aber noch.
EditEdit: Käse, mein Fehler. Hatte die Zeit zu spät gesetzt, und bin in einen "OutofBoundsError [0 - 5940] seconds" gelaufen.

Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 27 Dezember 2024, 13:28:03
Ok "value=0 seconds" erledigt.
Ich hatte anfangs die "geniale" Idee die units rauszuwerfen, was sich als Fehler herausgestellt hat. Die Stelle hab ich wohl übersehen.

Hab den Flow nochmal geändert, so dass er "getProgramOptions" jetzt beim Wechsel in den "run" State aufruft (sofern das klappt). Beim "activeProgram" Event wars ja zu früh. Eventuell gab es da auch eine Race Condition die den Wechsel in "DelayedStart" bei meinem Test verschluckt hat.

Ich muss mir das mit den Callbacks im HomeConnectConnection Modul mal ansehen - besteht die Möglichkeit, dass Callbacks "verschwinden" wenn es Überschneidungen von Requests gibt?

Jetzt aber erstmal das schöne Wetter (zumindest hier ist es endlich mal sonnig) geniessen....
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 27 Dezember 2024, 17:32:50
Zitat von: Adimarantis am 27 Dezember 2024, 13:28:03Ich muss mir das mit den Callbacks im HomeConnectConnection Modul mal ansehen - besteht die Möglichkeit, dass Callbacks "verschwinden" wenn es Überschneidungen von Requests gibt?
Kann sein. Bei der OWX-Modulserie habe ich deshalb eine ziemlich komplizierte interne Queue eingebaut - neue Requests werden in eine solche eingestellt, so lange die Antwort auf den vorherigen Request noch nicht da ist.

Die Abläufe habe ich beim HomeConnect aber über Zeitverzögerungen in DOIFS gelöst. Abgesehen davon, dass das Nachfolgende derzeit nicht funktioniert (wegen der nicht mehr vorhandenen tr_States), hat das Timing damit ganz gut geklappt:
defmod Waschen.N DOIF ## 1. Setze Phase \
([WAV28G43:".*tr_State1.*"] & [Waschen:active] !~ /wait/)\
({fhem("setreading Waschen phase ".ReadingsVal("WAV28G43","tr_State1",""))},\
 {fhem90Cmd("setreading Waschen phase ".ReadingsVal("WAV28G43","tr_State1",""))})\
## 2. Finished\
DOELSEIF\
([WAV28G43:".*Finished.*"] and [07:00-22:30])\
({speak("TText 238386743",":131:")},\
 {speak("TText 355532121",":131:")},\
 {speak('Tab1.EG',":131:")},\
 setreading Waschen event Finished)\
## 3. - 5. Auswahl Programm, Setzen Verzögerung, Start \
DOELSEIF\
( [Waschen:".*RelativeTime.*"] and [Waschen:active] ne "start" and [WAV28G43:state] =~ /Ready/ )\
 ( setreading Waschen event $EVENT,\
   set WAV28G43 SelectedProgram Cotton,\
  {Log 1,"=======> Selecting Cotton on WAV28G43"})\
 ({fhem("set WAV28G43 Temperature GC".ReadingsVal("Waschen","Temperature","30"))})\
 (set WAV28G43 DelayRelative {(my @evt = split(/ /,ReadingsVal("Waschen","event",""));;;;Log 1,"=======> Setting WAV28G43 to relative delay $evt[1]";;;;return $evt[1])} )\
 (set WAV28G43 StartProgram,\
  {Log 1,"=======> Delayed start WAV28G43"},\
  setreading Waschen event DelayedStart,\
  setreading Waschen active no)\
DOELSEIF\
( [Waschen:".*EndTime.*"] and [Waschen:active] ne "start" and [WAV28G43:state] =~ /Ready/ )\
 (setreading Waschen event $EVENT,\
  set WAV28G43 SelectedProgram Cotton,\
  {Log 1,"=======> Selecting Cotton on WAV28G43"})\
 ({fhem("set WAV28G43 Temperature GC".ReadingsVal("Waschen","Temperature","30"))})\
 (set WAV28G43 DelayEndTime {(my @evt = split(/ /,ReadingsVal("Waschen","event",""));;;;Log 1,"=======> Setting WAV28G43 to endtime delay $evt[1]";;;;return $evt[1])} )\
 (set WAV28G43 StartProgram,\
  {Log 1,"=======> Delayed start WAV28G43"},\
  setreading Waschen event DelayedStart,\
  setreading Waschen active no)\
DOELSEIF\
( [Waschen:".*StartTime.*"] and [Waschen:active] ne "start" and [WAV28G43:state] =~ /Ready/ )\
 (setreading Waschen event $EVENT,\
  set WAV28G43 SelectedProgram Cotton,\
  {Log 1,"=======> Selecting Cotton on WAV28G43"})\
 ({fhem("set WAV28G43 Temperature GC".ReadingsVal("Waschen","Temperature","30"))})\
 (set WAV28G43 DelayStartTime {(my @evt = split(/ /,ReadingsVal("Waschen","event",""));;;;Log 1,"=======> Setting WAV28G43 to starttime delay $evt[1]";;;;return $evt[1])} )\
 (set WAV28G43 StartProgram,\
  {Log 1,"=======> Delayed start WAV28G43"},\
  setreading Waschen event DelayedStart,\
  setreading Waschen active no)\

attr Waschen.N cmdpause 10:60:60:60
attr Waschen.N do always
attr Waschen.N group Waschen
attr Waschen.N repeatsame 1,1,1,1,1
attr Waschen.N room Kontrollraum
attr Waschen.N sortby 0
attr Waschen.N stateFormat {ReadingsVal("Waschen","event","")." ==> ".ReadingsVal($name,"state","")."&nbsp;;&nbsp;;&nbsp;;".ReadingsTimestamp($name,"state","")}
attr Waschen.N wait 0:0:0,5,10,5:0,5,10,5:0,5,10,5

LG

pah

ZitatJetzt aber erstmal das schöne Wetter (zumindest hier ist es endlich mal sonnig) geniessen....
Genau deshalb waren wir gestern eine Runde auf dem Golfplatz. Heute ist es zu kalt dafür.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 28 Dezember 2024, 12:22:07
So heute ist an der Donau mal wieder Nebel, also weiter geht's

Ich denke die Race Condition war darin begründet, dass ich während dem Auswerten von Events das getProgramOptions drin hatte, was evtl. noch nicht ausgelesende Events verschluckt hat. Jetzt wo es erst nach Erreichen des "run" State aufgerufen wird scheint es zu klappen.
Zumindest lief mein letzter Spülmaschinenlauf mit
1. Program manuell auswählen
2. RemoteStart manuell aktivieren
3. Maschine schliessen
4. Delay auf 1 Minute setzen
5. set startProgram
wie erwartet nach 1 Minute los und hat den Delay in state1/2 auch korrekt mit "Start um" + "HH:MM" eingezeigt.
Danach war die Option SilenceOnDemand ohne weiteres zutun vorhanden

Für meinen Flow scheint die Spülmaschine jetzt wie erwartet zu funktionieren (weitere Test werden zeigen ob das zuverlässig so ist). Falls bei dir was nicht geht, wäre hilfreich das Logfile mitzuprotokollieren.

Das HomeConnectConnection Modul scheint bereits eine Art queuing zu machen. Daran lag es wahrscheinlich nicht.

Ich habe jetzt die Logik, die "set" Befehle versteckt wenn diese nicht zutreffen wieder teilweise aktiviert. Hier auch bitte Feedback wenn es Fälle gibt, wo das nicht funktioniert.

Für "unsupported settings" habe ich jetzt mal testweise eine Idee implementiert:
Das Modul protokolliert mit, wenn die API "unsupported" zurückmeldet. In dem Fall wird die entsprechende Option in das Attribut "excludeSetting" geschrieben (Komma getrennte Liste). Sofern jetzt dann ein Setting auf diese Liste matched, wird es in der set Liste nicht angezeigt.
Um das zu implementieren musste ich auch eine kleine Änderung im 48_HomeConnectConnection.pm vornehmen, da der Callback sonst nicht weiss, welches Setting die Fehlermeldung verursacht hat.
Warum Attribut? Damit der Anwender die Liste selbst pflegen kann.
z.B. würde SilenceOnDemand in der Liste landen, wenn man versucht das zu setzen, obwohl die Maschine noch gar nicht läuft - dann kann man es zumindest einfach wieder rauslöschen - oder eben manuell Settings hinzufügen, die man sowieso nie braucht (bei mir z.B. ChildLock) um die set Liste klein zu halten.

Jörg






Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 28 Dezember 2024, 13:37:13
Noch ein kleines Update:

Hab jetzt verstanden warum bei mir FinishInRelative seltsame Werte liefert:
Mein Device setzt NUR EstimatedTotalProgramTime und FinishInRelative enthält "irgendwas".
Ich hoffe folgende Änderung funktionieren generisch:
-Update von EstimatedTotalProgramTime als Event, setzt FinishInRelative auf 0
-Wenn EstimatedTotalProgramTime gesetzt ist, hat es Priorität vor FinishInRelative
-Außerdem setze ich StartAtHHMM auch im "finish" Fall, damit der Status "Start um HH:MM" in beiden Fällen funktioniert

Mein Trockner hat zumindest mit DelayRelative 0:1 jetzt brav nach einer Minute losgelegt.

Da das Gerät leer war, hat er die Laufzeit natürlich dann recht schnell auf 1 Minute reduziert.

Dann geht es für mich jetzt in den Langzeittest - alles was ich brauche scheint zu funktionieren.


Offene Punkte:

Geht diese Alarmfunktion eigentlich noch? Mir wäre jetzt nicht bewusst, dass ich den Code angefasst hätte, aber Seiteneffekte sind natürlich nicht ausgeschlossen

Wozu war der Test auf "60 seconds"?
 ($operationState =~ /Delayed/ && $startInRelative =~ /^60 seconds/) )
Das hatte ich entfernt aber soweit kein Problem feststellen können

Meine Waschmaschine hab ich mir noch überhaupt nicht angesehen.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 28 Dezember 2024, 18:23:18
Die Kurzzeitwecker (Aka "Alarm") funktionierten bis gestern wie gehabt.


Bei der Waschmaschine sollte (hat zumindest bis zu meiner Version) das Ausschalten funktioniert. Jetzt gibt es eine Fehlermeldung

Key BSH.Common.Setting.PowerState has unknown enum type or enum member BSH.Common.EnumType.PowerState.Off.

Beim Reading SpinSpeed werden die Anführungszeichen mit angezeigt RPM1400"

Bei den Programmen wird mir eines als "Super153045.Super1530" angeboten.

Ich werde morgen mal mehr damit probieren.

LG

pah
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 28 Dezember 2024, 23:39:29
PowerState:
Ich habe das selbe Problem mit meiner Waschmaschine, während es mit meinem Trockner funktioniert.
Bist du sicher, dass es vorher ging? Ich finde nämlich keinen Unterschied im Code. Laut API ist BSH.Common.EnumType.PowerState.Off ein absolut valider Wert. Alternativ unterstützen manche Maschinen wohl "Standby" aber da kommt die Fehlermeldung "Out of Bounds".
Ich habe jetzt ziemlich viele Variationen probiert und bekomme meine Maschine nicht ausgeschaltet.

Ich habe schon befürchtet, das Programm mit "." drin Probleme machen könnten.
Im Prinzip ist es aber richtig dass es so angeboten wird - denn so heisst es ja auch. Es gibt auch noch "Cotton.CottonEco"
Was wäre die Erwartung? Nur das Wort nach dem Punkt anzeigen? Wird nur etwas tricky, weil man das für "set SelectedProgram" wieder rückführen müsste, denn z.B. "set SelectedProgram CottonEco" versteht er nicht.

Die Anführungszeichen beim SpinSpeed habe ich nicht. Da wäre jetzt das Logfile hilfreich.

Ich habe gerade festgestellt, dass ich immer noch Probleme mit der DelayedStart Logik habe - irgendwie verschwindet bei mir jetzt die Option "StartInRelative", womit er sich weigert einen DelayedStart einzustellen. Hab heute abend aber nicht mehr rausgefunden was da passiert.

In meinen DOIF habe ich auch das Problem, dass ich waits zwischen Select und Start einbauen muss.
Mein Gedanke:
Hidden option (nur per Programm, nicht bei GUI):
set Delay HH:MM start
Mit dem zusätzlichen "start" Parameter setzt das Modul intern ein Flag, dass es nach erfolgreichem erreichen des DelayedStart Zustand automatisch das Programm startet. Vorteile:
1. Nur im Erfolg gestartet wird (ich hatte beim Testen schon versehentliche Sofortstarts, weil eben das Delay nicht angenommen wurde)
2. Verzögerung ist minmiert
3. Logik zuverlässig durch internes Flag (man könnte das mit DOIF auch simulieren, aber da gibt es einiges zu beachten)
4. Vereinfachung der Automatisierung

Morgen mehr....
Jörg
 
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 29 Dezember 2024, 10:27:05
ZitatBist du sicher, dass es vorher ging?
Ja.

Betreffend die Programme: Ich habe

Super153045.Super1530 
Cotton.Eco4060
DownDuvet.Duvet

LG

pah

Edit: Finde gerade bei der Spülmaschine noch einen Log-Eintrag:
2024.12.29 10:49:09 1: readingsUpdate(SN55ZS49CE,state,Offline) missed to call readingsBeginUpdate first.
2024.12.29 10:49:09 1: stacktrace:
2024.12.29 10:49:09 1:     main::readingsBulkUpdate            called by /opt/fhem/FHEM/48_HomeConnect.pm (2630)
2024.12.29 10:49:09 1:     main::HomeConnect_ReadEventChannel  called by /opt/fhem/FHEM/48_HomeConnect.pm (1509)
2024.12.29 10:49:09 1:     main::HomeConnect_Timer             called by fhem.pl (3511)
2024.12.29 10:49:09 1:     main::HandleTimeout                 called by fhem.pl (710)

EditEdit:
Hier muss auch noch etwas geschehen. Alle 15 Sekunden gibt es jetzt einen checkState der Spülmaschine, der aber mehrfach pro Sekunde wiederholt wird und das Log zumüllt:
2024.12.29 10:29:09 1: [HomeConnect_checkState] from s:idle d:Open o:Inactive
2024.12.29 10:29:09 1: [HomeConnect_checkState] to s:idle d:Open 1:Tür offen 2:-
2024.12.29 10:29:09 1: [HomeConnect_checkState] from s:idle d:Open o:Inactive
2024.12.29 10:29:09 1: [HomeConnect_checkState] to s:idle d:Open 1:Tür offen 2:-
2024.12.29 10:29:09 1: [HomeConnect_checkState] from s:idle d:Open o:Inactive
2024.12.29 10:29:09 1: [HomeConnect_checkState] to s:idle d:Open 1:Tür offen 2:-
2024.12.29 10:29:09 1: [HomeConnect_checkState] from s:idle d:Open o:Inactive
2024.12.29 10:29:09 1: [HomeConnect_checkState] to s:idle d:Open 1:Tür offen 2:-
2024.12.29 10:36:24 1: [HomeConnect_checkState] from s:idle d:Open o:Inactive
2024.12.29 10:36:24 1: [HomeConnect_checkState] to s:idle d:Open 1:Tür offen 2:-
2024.12.29 10:36:24 1: [HomeConnect_checkState] from s:idle d:Open o:Inactive
2024.12.29 10:36:24 1: [HomeConnect_checkState] to s:idle d:Open 1:Tür offen 2:-
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 29 Dezember 2024, 10:52:43
Bei meiner Maschine geht Power OFF auch mit deiner Version nicht:
2024.12.29 10:50:35.359 3: [HomeConnect] WM14VL40: set command: PowerOff
2024.12.29 10:50:35.360 1: [HomeConnect_PowerState] WM14VL40: setting PowerState->Off while OperationState=Ready and PowerState=
2024.12.29 10:50:35.360 4: WM14VL40: request /api/homeappliances/SIEMENS-WM14VL40-68A40E37DBDA/settings/BSH.Common.Setting.PowerState
2024.12.29 10:50:35.361 4: WM14VL40: no token refresh needed
2024.12.29 10:50:35.362 4: WM14VL40: requestAfterToken https://api.home-connect.com/api/homeappliances/XXXXXX/settings/BSH.Common.Setting.PowerState
2024.12.29 10:50:37.582 4: WM14VL40: response {
  "error": {
    "description": "Key BSH.Common.Setting.PowerState has unknown enum type or enum member BSH.Common.EnumType.PowerState.Off.",
    "key": "SDK.Error.InvalidSettingValue"
  }
}
2024.12.29 10:50:37.582 1: [HomeConnect_HandleError] WM14VL40: Error "Key BSH.Common.Setting.PowerState has unknown enum type or enum member BSH.Common.EnumType.PowerState.Off."
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 29 Dezember 2024, 14:45:45
Uff. Kann höchstens sein, dass die wieder mal etwas am API geändert haben, denn in der App kann ich die Kiste problemlos ausschalten.

ChildLock off geht jedenfalls mit
Zitat2024.12.29 13:25:58 1: [HomeConnect] WAV28G43: childlock with uri /api/homeappliances/BOSCH-WAV28G43-68A40E7146B5/settings/BSH.Common.Setting.ChildLock and
data {"data":{"key":"BSH.Common.Setting.ChildLock","value":false}}

Bei PowerState habe ich jetzt der Reihe nach probiert
Zitat2024.12.29 13:22:24 1: [HomeConnect] WAV28G43: PowerState with uri /api/homeappliances/BOSCH-WAV28G43-68A40E7146B5/settings/BSH.Common.Setting.PowerState and data
{"data":{"key":"BSH.Common.Setting.PowerState","value":<DATA>}}
<DATA> = \"BSH.Common.EnumType.PowerState.Off" => unknown enum type or enum member BSH.Common.EnumType.PowerState.Off
<DATA> = \"BSH.Common.EnumType.Off" => unknown enum type or enum member BSH.Common.EnumType.Off
<DATA> = \"false\" => unknown enum type or enum member false.
<DATA> = false => unknown enum type or enum member false.
<DATA> = 0 => unknown enum type or enum member 0
<DATA> = \"Off\" => unknown enum type or enum member Off
<DATA> = \"off\" => unknown enum type or enum member off
<DATA> = \"BSH.Common.EnumType.PowerStateOff\" => unknown enum type or enum member BSH.Common.EnumType.PowerStateOff

Sehr seltsam, und ich finde eine Anomalie. Wenn man sich nämlich mit ZZZ_Dump den Hash für die Settings ansieht, steht dort
Zitat'PowerState' => ['BSH.Common.Setting','BSH.Common.EnumType.PowerState.','On',undef]
mit einem zusätzlichen Punkt nach "EnumType.PowerState".

Ich habe noch etwas mit den "Programmen mit Punkt" herumgespielt. Zur Einstellung muss man wirklich den ganzen Schmonzes mitliefern
Zitat2024.12.29 12:18:38 1: [HomeConnect] selecting program Super153045.Super1530 with uri /api/homeappliances/BOSCH-WAV28G43-68A40E7146B5/programs/selected and data {"data":{"key":"LaundryCare.Washer.Program.Super153045.Super1530"}}
Das führt zwar zu
ZitatlastErr Program not supported
- das kann man aber ignorieren, weil das Programm Super1530 ganz korrekt eingestellt wird. Das ist leicht überprüfbar, wenn man die App parallel aufruft, dann wird das sehr schön umgestellt.

Fazit: Es braucht für das Modul wirklich eine Übersetzungstabelle, die in beide Richtungen funktioniert

Key                      Anzeige      Anzeige deutsch
--------------------------------------------------
Super153045.Super1530 <=> Super1530 <=> Kurz1530
Cotton.Eco4060        <=> Eco4060  <=> Eco4060
DownDuvet.Duvet      <=> Duvet    <=> Steppdecken
Mix.NightWash        <=> NightWash <=> Nachtwäsche

Also etwa
$HomeConnect_DeviceTrans_EN{"Washer"} = {
  "Cotton.Eco4060"        => "Eco4060",
  "Super153045.Super1530" => "Super1530",
  "Mix.Nightwash"         => "Nightwash",
  "DownDuvet.Duvet"       => "Duvet"
};
$HomeConnect_DeviceTrans_DE{"Washer"} = {
  "Cotton"                => "Baumwolle",
  "Cotton.Eco4060"        => "Eco4060",
  "Super153045.Super1530" => "Kurz1530",
  "EasyCare"              => "Leichte Pflege",
  "Mix"                   => "Gemischt",
  "DelicateSilk"          => "Feine Seide",
  "Wool"                  => "Wolle",
  "SportFitness"          => "Sportsachen",
  "Sensitive"             => "Empfindliche Wäsche",
  "ShirtsBlouses"         => "Hemden",
  "DarkWash"              => "Dunkle Wäsche",
  "Mix.Nightwash"         => "Nachtwäsche",
  "Towels"                => "Handtücher",
  "DownDuvet.Duvet"       => "Steppdecken",
  "DrumClean"             => "Trommelreinigung"
};
Für die Aufstellung der Set-Liste dann:
WENN eine Übersetzung in der aktuell gültigen Tabelle existiert, wird diese benutzt.
Für das Absenden an HomeConnect dann:
Suche in der aktuell gültigen Übersetzungstabelle, ob zu dem Programmnamen ein Key existiert, wenn ja, nimm diesen.

Alternative, kommt ohne englische Übersetzungstabelle aus:
Für die Aufstellung der Set-Liste
Nimm nur den Anteil des vollen Programmnamens NACH dem Punkt
Für das Absenden an HomeConnect dann:
Nimm den vollen Programmnamen, in welchem der abgekürzte Programmname als substring vorkommt.

LG

pah
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 29 Dezember 2024, 18:47:44
Über die App kann ich meine Waschmaschine auch ausschalten - jetzt müsste man nur wissen was die verwendet, denn ich bin mir sicher dass wir das laut API Doc korrekt machen.

Der "Punkt" ist mir auch schon aufgefallen, fand den soweit aber unschädlich. Das hat an der Stelle keinen Einfluss darauf wie der API Call gemacht wird.

Ich habe jetzt mal eine Version eingecheckt, die die Programme übersetzt. Für die Rückübersetzung wird ein "retrans" hash erzeugt. Grundsätzlich scheint das zu funktionieren.
FHEM mag allerdings keine Leerzeichen in den Pulldown Listen. Ich habe jetzt schon mal einige Tabellen angepasst (auch teilweise die Begriffe so angepasst, dass die dazu passen, was auf meiner Waschmaschine/Trockner stehen).
Sicherheitshalber übersetze ich alle Leerzeichen mal in Unterstriche - allerdings ohne Rückübersetzung - das kann genauso schief gehen. Ich denke da müssen wir uns einigen: Entweder sind Leerzeichen verboten oder sie werden in "_" übersetzt - dann sind "_" aber verboten.

Hab jetzt noch nicht probiert auf Englisch zu stellen, dann sollten aktuell aber einfach die internen Namen verwendet werden.

Bei den korrekten Abläufen fühle ich mich wie auf einem sinkenden Schiff:
Kaum stopft man ein Leck (so dass ein Gerät schön funktioniert), tut sich ein anderes auf (weil das es dann doch irgendwie leicht anders macht) - und jetzt hab ich nur 3 Geräte...

Gruß,
Jörg


Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Shadow3561 am 29 Dezember 2024, 19:06:27
Moin,
ich hänge mal meine verbastelte Version an.
Zumindest bei mir funktioniert das ausschalten vom GS und Waschtrockner damit.

Mit freundlichen Grüßen
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 29 Dezember 2024, 19:16:41
Bei der Spülmaschine geht das auch bei mir, in beide Richtungen, über einen Trockner kann ich nichts aussagen.

Der Witz bei der Waschmaschine ist allerdings, dass sie zwar ausgeschaltet, per Fernbedienung aber nicht wieder eingeschaltet werden kann. Da haben sie jetzt irgendetwas im API verbogen.
ZitatBei den korrekten Abläufen fühle ich mich wie auf einem sinkenden Schiff:
Willkommen im Club.

Die Problematik bei den "gepunkteten" Programmen zeigt ganz deutlich, dass das API Bugs hat. 
LG

pah
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 29 Dezember 2024, 19:33:04
@Shadow:
Danke - wie schon vom Vorredner bemerkt: Trockner und Geschirrspüler funktionieren - die Waschmaschine mag nicht.
Und nach kurzem Überfliegen von deinem Code, sendest du Kommandos ganz generisch und da kommt wahrscheinlich die selbe Nachricht raus.
Da macht die App irgendwas anderes - vielleicht geht das bei der WM nicht über die "settings" Schnittstelle. Hab aber jetzt mal in Blaue versucht was mit Power und PowerState über "commands" abzufeuern - mag er aber auch nicht.

Sehe ich das Richtig, dass du deine Readings mit allen Options befüllst (anstatt die Options in einer internen Struktur zu halten)?
Irgendwelche Erkenntnisse aus deiner Arbeit, die man übernehmen könnte?

Jörg
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Shadow3561 am 29 Dezember 2024, 19:59:12
Zitat von: Adimarantis am 29 Dezember 2024, 19:33:04Sehe ich das Richtig, dass du deine Readings mit allen Options befüllst (anstatt die Options in einer internen Struktur zu halten)?
Irgendwelche Erkenntnisse aus deiner Arbeit, die man übernehmen könnte?


Ich habe eine der ersten Versionen von pah genommen und dann darauf aufgebaut bzw. an meine Geräte angepasst.
Unsere Meinungen bezüglich der Readings/des state gingen dort etwas auseinander.
Ich nutze da doch lieber userReadings um alles anzupassen. Die erspart mir das rumgebastel (mehr ist es bei mir nicht) im Modul.
Den state vom Modul kann ich mit den "show_"-Attributen beeinflussen. Dies fand ich angenehmer und intuitiver für unerfahrene User.
Anbei mal ein list vom GS

nternals:
   DEF        hcconn xxxxx
   FUUID      64d48c39-f33f-d66d-aa1c-b5ede0d0300aec3a
   FVERSION   48_HomeConnect.pm:?/2024-04-10
   NAME       SMV8YCX03E
   NR         1413
   STATE      Bereit
   TYPE       HomeConnect
   aliasname  Geschirrspüler
   brand      Bosch
   eventChannelTimeout 1735498417.55091
   eventCount 47231
   haId       xxxxxx
   hcconn     hcconn
   options    StartInRelative,ExtraDry,HygienePlus,IntensivZone,VarioSpeedPlus
   prefix     Dishcare.Dishwasher
   programs   Intensiv70,Auto2,Eco50,Glas40,PreRinse,NightWash,Kurz60,MachineCare,MixedLoad,Quick45
   retrycounter 0
   type       Dishwasher
   vib        SMV8YCX03E
   READINGS:
     2024-09-25 18:12:35   BSH.Common.Event.ProgramAborted BSH.Common.EnumType.EventPresentState.Present
     2024-12-29 13:43:37   BSH.Common.Event.ProgramFinished BSH.Common.EnumType.EventPresentState.Off
     2024-12-29 13:43:37   BSH.Common.Option.ProgramProgress 0 %
     2024-12-29 13:43:37   BSH.Common.Option.RemainingProgramTime 15120 seconds
     2024-12-19 10:04:03   BSH.Common.Option.StartInRelative 0 seconds
     2024-12-29 13:43:32   BSH.Common.Root.ActiveProgram -
     2024-12-29 13:43:37   BSH.Common.Root.SelectedProgram Eco50
     2024-12-29 13:43:37   BSH.Common.Setting.PowerState BSH.Common.EnumType.PowerState.Off
     2024-12-29 18:33:25   BSH.Common.Status.DoorState BSH.Common.EnumType.DoorState.Closed
     2024-12-29 13:43:37   BSH.Common.Status.OperationState BSH.Common.EnumType.OperationState.Ready
     2024-12-28 12:16:07   BSH.Common.Status.RemoteControlActive 1
     2024-11-30 12:16:16   BSH.Common.Status.RemoteControlStartAllowed 0
     2024-10-22 17:08:19   Dishcare.Dishwasher.Option.ExtraDry 0
     2024-09-23 23:51:59   Dishcare.Dishwasher.Option.IntensivZone 0
     2024-04-19 14:33:15   Dishcare.Dishwasher.Option.SilenceOnDemand 0
     2024-12-07 16:59:04   Dishcare.Dishwasher.Option.VarioSpeedPlus 0
     2024-12-29 13:43:37   SelectedProgram Eco50
     2024-12-29 19:53:37   door-state      closed
     2024-12-29 19:53:37   remaining-time  04:12
     2024-12-29 13:43:37   state           Bereit
   data:
     options:
       ExtraDry:
         Dishcare.Dishwasher.Option
         Boolean
         0
        
         1
         undef
       HygienePlus:
         Dishcare.Dishwasher.Option
         Boolean
         0
        
         1
         undef
       IntensivZone:
         Dishcare.Dishwasher.Option
         Boolean
         0
        
         1
         undef
       StartInRelative:
         BSH.Common.Option
         Int
         undef
         (0,86400)
         undef
         undef
       VarioSpeedPlus:
         Dishcare.Dishwasher.Option
         Boolean
         0
        
         1
         undef
     trans:
       Auto2      Auto 45-65
       Eco50      Eco 50
       Favorite.001 Favorit
       GlassShine Brilliant Shine
       Intensiv70 Intensiv 70
       Kurz60     Speed 60
       MachineCare Maschinenpflege
       NightWash  Leise
       PreRinse   Vorspülen
       Quick45    Speed 45
Attributes:
   alias      Geschirrspüler
   icon       scene_dishwasher
   room       Küche
   show_end   1
   show_end_time 1
   show_progress 1
   type       Dishwasher
   userReadings door-state {ReadingsVal($name,"BSH.Common.Status.DoorState",0) eq "BSH.Common.EnumType.DoorState.Open" ? "open" : "closed"},
remaining-time { strftime('%H:%M', gmtime(ReadingsNum($NAME, "BSH.Common.Option.RemainingProgramTime", 0))) }
   verbose    2
   webCmd     BSH.Common.Root.SelectedProgram:startProgram

Mit meinem Waschtrockner ist es auch so eine Sache.
Diesen kann ich zwar starten, stoppen und bekomme plausible readings, aber es werden keine Programme oder options von der API geladen.
anbei auch hier ein List
Internals:
   DEF        hcconn xxxxx
   FUUID      65d63627-f33f-d66d-8977-001abf58c9f242bf
   FVERSION   48_HomeConnect.pm:?/2024-04-10
   NAME       WNC244070
   NR         1511
   STATE      Ruhezustand
   TYPE       HomeConnect
   aliasname  Waschtrockner
   brand      Bosch
   eventChannelTimeout 1735498632.79754
   eventCount 49394
   haId       xxxxx
   hcconn     hcconn
   prefix     LaundryCare.WasherDryer
   retrycounter 0
   type       WasherDryer
   vib        WNC244070
   READINGS:
     2024-12-10 19:41:10   BSH.Common.Event.ProgramAborted BSH.Common.EnumType.EventPresentState.Off
     2024-12-29 15:22:57   BSH.Common.Event.ProgramFinished BSH.Common.EnumType.EventPresentState.Off
     2024-12-29 17:53:04   BSH.Common.Option.EstimatedTotalProgramTime 60 seconds
     2024-12-29 15:22:57   BSH.Common.Option.FinishInRelative 8940 seconds
     2024-12-29 17:53:05   BSH.Common.Option.ProgramProgress 0 %
     2024-12-29 15:18:46   BSH.Common.Option.RemainingProgramTime 60 seconds
     2024-12-29 15:22:57   BSH.Common.Root.ActiveProgram -
     2024-12-29 17:53:04   BSH.Common.Root.SelectedProgram -
     2024-12-29 09:37:28   BSH.Common.Setting.ChildLock 0
     2024-12-29 17:53:04   BSH.Common.Setting.PowerState BSH.Common.EnumType.PowerState.Off
     2024-12-29 15:22:57   BSH.Common.Status.DoorState BSH.Common.EnumType.DoorState.Open
     2024-12-29 17:53:05   BSH.Common.Status.OperationState BSH.Common.EnumType.OperationState.Inactive
     2024-12-15 08:23:37   BSH.Common.Status.RemoteControlActive 1
     2024-12-29 15:22:57   BSH.Common.Status.RemoteControlStartAllowed 0
     2024-12-29 19:57:12   Endzeit         19:58
     2024-12-29 14:28:48   LaundryCare.Washer.Option.SpinSpeed LaundryCare.Washer.EnumType.SpinSpeed.RPM1200
     2024-12-29 10:32:59   LaundryCare.Washer.Option.Temperature LaundryCare.Washer.EnumType.Temperature.GC40
     2024-12-29 19:57:12   Restlaufzeit_in_minuten 1
     2024-12-29 19:57:12   Schleuderdrehzahl 1200 U/min
     2024-12-29 17:53:04   SelectedProgram -
     2024-12-29 19:57:12   Temperatur      40
     2024-12-29 19:57:12   door-state      open
     2024-12-29 19:57:12   operation-progress 0
     2024-12-29 19:57:12   operation-state Finished
     2024-12-29 15:22:57   program_active  HHSynthetics
     2024-12-29 19:57:12   remaining-time  00:01
     2024-12-29 17:53:05   state           Ruhezustand
   data:
     trans:
       Cotton     Baumwolle
       DarkWash   Dunkle Wäsche
       DelicateSilk Feine Seide
       DelicatesSilk Fein/Seide
       EasyCare   Leichte Pflege
       Mix        Gemischt
       Sensitive  Empfindliche Wäsche
       ShirtsBlouses Hemden
       SportFitness Sportsachen
       Towel      Handtücher
       Wool       Wolle
Attributes:
   alias      Waschtrockner
   icon       scene_washing_machine
   room       Büro
   show_end   1
   show_end_time 1
   show_progress 1
   type       Washer
   userReadings remaining-time { strftime('%H:%M', gmtime(ReadingsNum($NAME, "BSH.Common.Option.RemainingProgramTime", 0))) }, operation-state {ReadingsVal($name,"BSH.Common.Status.OperationState",0) eq "BSH.Common.EnumType.OperationState.Run" ? "Run" : "Finished"}, door-state {ReadingsVal($name,"BSH.Common.Status.DoorState",0) eq "BSH.Common.EnumType.DoorState.Open" ? "open" : "closed"}, program_active {(split( '\.', ReadingsVal($NAME,"BSH.Common.Root.ActiveProgram","")))[4]}, Schleuderdrehzahl {(split( 'RPM', ReadingsVal($NAME,"LaundryCare.Washer.Option.SpinSpeed","")))[1]." U/min"}, Temperatur {(split( '([0-9][0-9]|Auto)', ReadingsVal($NAME,"LaundryCare.Washer.Option.Temperature","")))[1]}, program_selected {(split( '\.', ReadingsVal($NAME,"BSH.Common.Root.SelectedProgram","")))[5]}, operation-progress {ReadingsNum($name,"BSH.Common.Option.ProgramProgress",0)},
Restlaufzeit_in_minuten {
my @TimeParts=split(/:/,ReadingsVal($NAME,"remaining-time","00:00"));
my $minutes=$TimeParts[0]*60 + $TimeParts[1];
return $minutes;
}, Endzeit {POSIX::strftime("%H:%M",localtime(time+(ReadingsNum("WNC244070","Restlaufzeit_in_minuten","0"))*60))}
   verbose    2
   webCmd     startProgram:stopProgram

Mit freundlichen Grüßen

Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 29 Dezember 2024, 22:56:27
Heureka!

Ich hab mal eine APK-Decompiler auf die HomeConnect App losgelassen - hauptsächlich um Strings zu suchen - und dabei im Zusammenhang mit PowerState einen neuen EnumType gefunden: "MainsOff" - und siehe da: Damit kann ich meine WM ausschalten.
Die anderen Geräte mögen das natürlich nicht und jetzt ist die Frage wie man das generisch unterscheidet - zumindest sehe ich bei den "getSettings" Antworten keinen relevanten Unterschied.

Und wahrscheinlich können neuere Waschmaschinen wieder das normale "Off", so dass die Unterscheidung auf type=Washer auch gefährlich ist, aber bis sich jemand mit so einem Gerät meldet, ist das jetzt die Lösung.

Achtung: Ich habe das den set Befehl jetzt aufgeteilt: es heisst jetzt "set ... Power On" , "set Power Off" etc.
Ist in der GUI einfach übersichtlicher.

Jörg

Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 30 Dezember 2024, 11:53:27
Zitat von: Adimarantis am 29 Dezember 2024, 22:56:27zumindest sehe ich bei den "getSettings" Antworten keinen relevanten Unterschied.
Hmm. Kann das der überflüssige Punkt sein?

Auf jeden Fall danke für die Mühe. Ich hatte mir auch schon überlegt, die Strings zu extrahieren - bin aber bisher an akuter Lustlosigkeit gescheitert.

Zur generischen Unterscheidung: Man könnte das jetzt erstmal für type=Washer auf MainsOff lassen. Und ein neues Attribut, sagen wir mal "special_WasherOff" einführen. Defaultwert ist MainsOff, nur wenn das nicht funktioniert, setzt man das Attribut auf Off.

LG

pah



Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 31 Dezember 2024, 13:11:04
Der überflüssige "." macht wirklich nichts (weil nicht verwendet) aber das verschwindet sowieso:

Aktuell warte ich jetzt mal damit eine neue Version einzuchecken, weil ich jetzt die ganze options/settings Speicherung und Logik auf hash umgestellt und überarbeitet habe. Dabei räume ich den Code auch ein wenig auf und entferne einige Sonderfälle und "toten" Code.
Leider ist nicht ausgeschlossen, dass dabei was auf der Strecke geblieben ist, daher lasse ich das jetzt erstmal eine Weile bei mir laufen. Grundsätzlich ist es etwas generischer geworden, so dass ich hoffe das eher mehr als weniger geht - aber wie wir wissen ist die API ja leider nicht immer konsistent.

Desweiteren habe ich die startup Logik noch etwas robuster gemacht und weitere kleine Verbesserung an der Ablaufslogik vorgenommen.

Um sicherzustellen, dass ich keine Geräte "kaputt gemacht" habe, die ich nicht zuhause habe, wäre es hilfreich mit der aktuellen Version auf Github (zur Erinnerung: https://github.com/bublath/FHEM-HomeConnect ) das logfile für alle verfügbaren Geräte zu aktivieren, und dann komplett von vorne (shutdown restart) bei eingeschalteten Geräten mitzuprotokollieren, dann ein paar typische Aktionen zu machen und das Gerät einfach mal laufen zu lassen.

Danke schon mal im voraus für die Logfiles.

Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 31 Dezember 2024, 13:52:31
Zitat von: Adimarantis am 31 Dezember 2024, 13:11:04macht wirklich nichts (weil nicht verwendet)
Na ja, nicht in der Verwendung - aber als Kennzeichen dafür, dass MainsOff verwendet werden soll. Irgendwoher muss das ja auch die App wissen.
Eine solche Verbiegung würde ich den HC-Leuten ohne Weiteres zutrauen.

Könnte man aber nur herausfinden, wenn man ein Gerät testet, dass a.) ebenfalls nur ausgeschaltet und b.) mit einfachem Off bedient werden muss.

Logfiles werde ich produzieren, dauert aber ein paar Tage.

LG

pah
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 01 Januar 2025, 22:53:53
Ich habe noch ein bisschen App Source Code durchforstet und einige Events, Kommandos etc. gefunden die nicht dokumentiert sind.
Versuche irgendwas davon abzusetzen mündeten immer in einer Fehlermeldung.

Zufällig hab ich beim Googlen in dem Forum von Home Assistant den Hinweis gefunden, das wohl die Developer API die wir verwenden eine alte/abgespekte Version der API ist - anders als die von der APP verwendet wird.
Das erklärt warum ich gewisse Events nicht bekomme (z.B. Flusenfilter voll vom Trockner), manche Optionen sehe oder nicht setzen kann (z.B. halbe Beladung beim Trockner) und einiges inkonsistent ist.
Die lassen uns einfach mit einer "Beta" im Regen stehen während die "echte" API fleissig weiterentwickelt wurde.

Update von der Programmierfront: Funktioniert eigentlich nach dem Refactoring der Options/Setting alles wieder recht gut. Wollte jetzt mal die offizielle Simulation anhängen, aber wenn ich mein FHEM da dranhängen will kommt ein "internal error" von der API. Hab mal ein Support Ticket aufgemacht.
Sofern ich das mit der Simulation nicht hinbekomme, werde ich mein Update in 1-2 Tagen mal einchecken - sonst würde ich da erstmal virtuell noch andere Geräte durchtesten.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 02 Januar 2025, 10:50:31
Es ist schon klar, dass die uns eine alte Version anbieten. Die Frage ist, ob das bei den "offiziell unterstützten" Systemen wie IO Broker auch so ist.

Das mit der Simulation habe ich ebenfalls nicht zum Laufen bekommen und irgendwann einfach aufgesteckt.

In meinem Sourcecode findest Du noch ein paar Überbleibsel meines originalen Plans. Nämlich ein Modul zu schreiben, das ähnlich wie die App alle Optionen als echte Buttons zur Verfügung stellt. Ich habe solche interaktiven Oberflächen schon für mehrere Module gebaut, z.B. YAAHM, Alarm und Babble. Immerhin hatte es schon funktioniert, dass nach einem get ProgramOptions diese Options als Buttons in der Detailübersicht eingeblendet wurden.

Erfordert allerdings Etliches an JavaScript.

LG

pah
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 02 Januar 2025, 12:11:05
pihole indentifiziert dass Domains wie
prod.reu.rest.homeconnectegw.com
reu.sdws.homeconnectegw.com
media3.bsh-group.com
pki-ca.home-connect.com
von der App verwendet werden.

Was ich so lese verwendet auch ioBroker das development Interface und weist darauf hin dass nicht der volle Funktionsumfang der App zur Verfügung steht (gleich mit Link auf https://developer.home-connect.com/support/contact wo man requests absetzen kann - also lasst uns die Freunde mit Requests überschütten, wenn was fehlt)

Wenn man sich die Bedingungen für die Veröffentlichung so ansieht, dann ist es auch schlicht unmöglich, dass eine Heimintegration es schafft eine offizielle App zu werden.
Fängt damit an, dass man JEDE Fehlermeldung von der API dem Anwender zeigen muss bis hin zur Geheimhaltung von Tokens, Secrets etc. was in einer Scriptsprache nie 100% geht.

Die Ansätze zur Generierung von HTML habe ich gesehen - und komplett rausgeworfen.
Hatte auch schon überlegt, hier mehr Oberfäche (oder zumindest "get" Funktionen mit Übersichten) zur Verfügung zu stellen, aber ich habe ehrlich gesagt meine Zweifel ob das jemand verwenden würde.
Die Integration ist für Automatisierung - da verwendet man die FHEM Oberfläche zum Ausprobieren bis alles läuft - und da reicht die Standardoberfläche.
Wenn's erstmal läuft dann macht alles DOIF und Co und die Visualisierung läuft z.B. über FTUI (siehe Bild).
ftui.jpg
Wenn es Bedarf für mehr gibt, kann man das natürlich diskutieren.


Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 02 Januar 2025, 16:19:38
Nachdem die Simulationsumgebung nach wie vor nicht geht und ich nicht mehr weiss was ich noch selber testen soll/kann, checke ich jetzt das aktuelle Update ein.
Bitte dran denken 48_HomeConnect.pm und 48_HomeConnectConnection.pm einzuspielen. Quelle: https://github.com/bublath/FHEM-HomeConnect
Die kleine Änderung in HomeConnectConnection ist rückwärtskompatibel, kann man also stehen lassen.
Da sich sehr viel geändert hat, bitte möglichst so vorgehen:
1. Dateien austauschen
2. Alle Readings löschen. Nicht zwingend notwendig macht es aber Übersichtlicher da sich viele Namen geändert haben, z.B, mit
deletereading TYPE=HomeConnect .*   
3. save config & shutdown restart
4. In allen devices das Attribut FileLog setzen
5. Ggf Automatisierungen (DOIF etc.) an die neuen Readings und Kommandos anpassen oder DOIF disablen
6. Alle Geräte einschalten (da viele im Power Off Zustand keine oder eingeschränkte Infos liefern)
7. save config & shutdown restart
   Damit der ganze Start Prozess mit dem Logfile protokolliert wird
8. Alles mögliche ausprobieren, mal manuell ein Programm laufen lassen oder aus FHEM - damit schön viel Infos im Logfile landen
9. Logfile posten - keine Angst, das Logfile sollte keine persönlichen Daten beinhalten. Die HaId wird automatisch entfernt

Änderungen (seit dem letzten Update vom 29.12):
- Einige Übersetzungen/Default korrigiert
- neues Attribut "excludeSettings" - wird automatisiert befüllt wenn Settings/Commands auf Fehler laufen um die Listen individuell zu kürzen. Kann aber auch manuell editiert werden
- neues Attribut "extraOptions" - eher zum Test - damit habe ich versucht ob gewisse Optionen deren Strings ich aus der App extrahiert habe nicht doch funktionieren. Gefunden habe ich aber bislang keine
- neues Command "anyRequest" - rein zum Test - damit habe ich versucht versteckte Kommandos zu finden. Das Textfeld wird als request ohne weiteren Inhalt an die API gesendet (als api/homeappliances/<HaId>/<textfeld>) - bisher kam da aber immer "The requested resource could not be found." zurück.
- Startup: type, prefix und programs werden zusätzlich in einem hidden reading gespeichert (und somit beim "save" abgespeichert). Das hilft um Fehler beim Neustart zu vermeiden, da manche Devices im ausgeschalteten Zustand keine Daten liefern
- Startup: Verschiedene weitere Optimierungen im Ablauf- und Fehlerverhalten
- Refaktoring: Namen der Unterroutinen weitgehend in der Gross/Kleinschreibung vereinheitlich
- Refaktoring: Unnötigen Code entfernt
- Refaktoring: options und settings von Array auf Hash umgestellt. Dadurch sieht man im "list" besser was es wirklich gibt und was die Felder bedeuten und die Routinen die mit options/settings arbeiten können besser Bedingungen prüfen.
- Refaktoring: einige internal readings nach $hash->{helper} verschoben um die Liste klein zu halten
- "set commands": Bedingungen wann Kommandos ausgeblendet werden teilweise korrigiert
- Umbenennung der "Root." Reading: Nachdem das ja schon als störend erwähnt wurde und der volle Pfad der "Root." Readings nirgends benötigt wird, habe ich diese jetzt auf "Setting." umbenannt (Setting.SelectedProgram, Setting.ActiveProgram) - das verwirrt hoffentlich weniger als das völlig aus der Reihe tanzenden "Root."
- DelayedStart: Im FinishInRelative Fall hatte ich das Problem, dass dieses Reading sowohl automatisch befüllt wurde, als auch der Trigger für einen DelayedStart war. Das führte teilweise zu seltsamen Ergebnissen. Die DelayedStart Logik setzt jetzt explizit ein Flag und überträgt StartInRelative or FinishInRelative beim StartProgram nur, wenn vorher per Kommando ein DelayedStart vom Anwender angefordert wurde.
- Dokumentation: Die Inline Dokumentation wurde weitgehend an die Änderungen angepasst (bis auf temporäre Testoptionen)

Ungetestet:
- Wenn ein Event mit "Finished" im Namen erhalten wird, und der operationState "Run" ist, wird dieser auf "Finished" gesetzt, da der Trockner im "WrinkleGuard" noch "Run" bleibt
- Alarms: Events die meiner Ansicht nach Alarme sind (also sowas wie "Salz nachfüllen") werden in dem Reading "alarms" aufgelistet solange sie aktiv sind und in "alarmCount" steht wieviele das sind. Will ich nutzen um in FTUI ein Badge (rote Zahl) anzuzeigen als Hinweis, das da was zu tun ist. Nachdem ich aber seit Implemtierung noch keine Alarm hatte, die Simulationsumgebung von BSH nicht mit mir redet und es nicht ganz so einfach selbst zu simulieren ist, kann das noch Fehler enthalten

Happy Testing & Happy New Year,
Jörg
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 04 Januar 2025, 23:20:19
Und nachmal ein paar Updates:

- neues Attribut: "extraInfo" - wenn auf 1 gesetzt werden zusätzliche "Option"-Readings erzeugt, die Dinge wie Water/EnergyForecast, LoadRecommendation sowie die aktuelle Einstellung von Optionen die nur am Gerät eingestellt werden können (Beschränkung der Developer API - vielleicht kann man die zukünftig auch mal setzen)
- Konsistentere Verwendung von Boolean Values: statt on/off , On/Off und 0/1 wird jetzt überall On/Off verwendet - ich hoffe das passt für alle Booleans...
- weitere Unstimmigkeiten in den komplexeren Abläufen verbessert (z.B. wenn ein DelayedStart nachträglich verändert wird)
- Fehler bei alarmCount und Finished state flow behoben
- Code weiter aufgeräumt
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 05 Januar 2025, 09:58:40
Moin Jörg,
ich habe jetzt auch deine Version eingespielt, nur gestartet und Readings erneuert. Ich habe noch kein Programm etc. gestartet.
Soweit keine FM.

Mir fällt auf:
- Das Logfile liegt im /opt/fhem/ Verzeichnis, der Hyperlink im Log-Device zeigt auf /opt/fhem/log
- Im FHEM Log stehen Meldungen:
2025.01.05 09:25:09 1: [HomeConnect_ResponseInit] SN63E800BE: defined as HomeConnect Dishwasher Siemens SN63E800BE
2025.01.05 09:25:13 1: [HomeConnect_ResponseGetPrograms] EX977NVV6E: no programs found

Es gibt noch die Anzeige im Device:
BSH.Common.Root.SelectedProgramDas kommt womöglich von der alten HC Version. Der dahinterliegende Link führt zur FM.

Ich habe das Device gelöscht und neu angelegt.
Im FHEM Log dann diese Info
2025.01.05 09:52:26 1: [HomeConnect_define] called
2025.01.05 09:52:40 1: PERL WARNING: Use of uninitialized value $type in pattern match (m//) at ./FHEM/48_HomeConnect.pm line 1027.
2025.01.05 09:53:26 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/48_HomeConnect.pm line 2515.
2025.01.05 09:54:51 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/48_HomeConnect.pm line 1676.

Das neue Device bleibt im Status mit den drei Fragezeichen, auch nach  dem Einschalten.
Logfile unten, List vom Device ebenso. Die "S" am Anfang der Zeilen bei den Reading fehlen wirklich!

Viele Grüße, Helmut


Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 05 Januar 2025, 10:11:20
Deswegen braucht man Tester - den "define from scratch" Fall hatte ich noch nie probiert.
Die "use of uninitialized" verstehe ich - da müssen ein paar Tests rein, um festzustellen, dass das Device noch nicht initialisiert ist.
Warum die Intialisierung dann nicht automatisch läuft muss ich mir ansehen.
Habs kurz nachgestellt und nach einem
set <device> init in der Kommandozeile solltest du einen Schritt weiterkommen.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 05 Januar 2025, 10:14:15
Das ging ja flott! Schön, dass die Entwicklung des Moduls weitergeht.

Ein Init zeigt im Web keine Änderungen, hier FHEM Log:
2025.01.05 10:12:45 1: [HomeConnect_Set] init called
2025.01.05 10:12:56 1: [HomeConnect_Init] for EX977NVV6E called
2025.01.05 10:12:56 1: [HomeConnect_ResponseInit] EX977NVV6E: defined as HomeConnect Hob Siemens EX977NVV6E
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 05 Januar 2025, 10:18:36
Hmm.
Ist dein Gerät eingeschaltet? Bei manchen Geräten kriegt man sonst keine/kaum Infos.
Zumindest sollten jetzt mehr internal readings da sein. (wichtig ist "type" und "prefix")
Spiel man mit den "get" Optionen (Settings, Programs, Status) ob das was bringt.
Steht schon was im extra Logfile?
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 05 Januar 2025, 10:23:35
Ja, das Kochfeld ist eingeschaltet.
Es gibt keine neuen Readings, auch ein get..... bringt keine sichtbaren Änderungen
Ein neues Logfile habe ich angefügt.

Mal abwarten
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 05 Januar 2025, 10:26:07
Nach erneutem Einschalten werden jetzt Readings angezeigt!
Sehr schön!

Man sollte wohl die alten Devices besser löschen.
Ich werde das mal probieren oder soll ich abwarten, dass der Autocreate besser durchläuft?
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 05 Januar 2025, 10:29:18
Das define Problem hab ich jetzt (hoffentlich) gefunden und gefixed. Ist bereits in Github eingecheckt.

Kannst schon hier weitermachen, aber besser noch wenn du die neue Version nochmal ganz vom Start testest.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 05 Januar 2025, 10:41:54
Ich habe jetzt den Geschirrspüler gelöscht und neu angelegt. Ich habe den aber noch nicht gestartet.

Das sieht schon mal gut aus.

Zum Vergleich die WEB Ansicht mit neu angelegten Geräten (Geschirrspüler und Kochplatte) und dem noch mit dem alten Modul angelegten Backofen.

Den Backofen lösche ich jetzt auch und lege ihn neu an.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 05 Januar 2025, 10:47:40
So der Backofen ist jetzt auch neu.
Die Geräte sehen jetzt so aus
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 05 Januar 2025, 10:50:25
Im Backofen fällt noch ein Zeichensatzproblem "Â" auf:
Option.SetpointTemperature 180 °C 2025-01-05 10:45:13
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 05 Januar 2025, 10:54:28
Wie startet man eigentlich den Backofen jetzt?
Ein "set irgendwas", so wie bei der Spülmaschine, sehe ich nicht.

Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 05 Januar 2025, 10:59:36
Da ich keinen Backofen habe, kann ich dir das ohne Logfile nicht beantworten  :)

Ich hatte zwar gehofft, dass andere Geräte generisch funktionieren, aber das klappt bei der inkonsitenten API wohl doch nicht immer.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 05 Januar 2025, 11:01:44
Kein Problem, ein List vom Backofen Log und ein List vom Device in der Anlage sofort.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 05 Januar 2025, 11:11:43
Danke. Schau ich mir an.
Hab inzwischen ein Update für die "°C" Darstellung eingespielt.
Mein System läuft unter unicode, deswegen baue ich immer Umwandlungen ein - nur in welche Richtung die benötigt werden ist manchmal nicht offensichtlich :)
Zum Testen reicht die neue Version mit reload einzuspielen und dann müsstest du das Reading irgendwie aktualisiert bekommen (wahrscheinlich GetProgramOptions)
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 05 Januar 2025, 11:33:48
Gerade probiert, neue Version ist geladen.
Leider keine Änderung, immer noch wie vorher. Mein Pi steht auf UTF-8
180 °C
So was steht auch noch im FHEM Log, HB772G1B1 ist der Backofen.
2025.01.05 11:23:28 1: [HomeConnect_HandleError] HB772G1B1: Error "Program not supported"
2025.01.05 11:23:28 1: [HomeConnect_HandleError] HB772G1B1: Error "There is no program selected"
2025.01.05 11:23:59 1: [HomeConnect_HandleError] HB772G1B1: Error "Program not supported"
2025.01.05 11:23:59 1: [HomeConnect_HandleError] HB772G1B1: Error "There is no program selected"
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 05 Januar 2025, 12:05:30
Beim encoding geht es um die "encoding" Einstellung im "global" device von FHEM.
Die "°C" gehen bei mir jetzt in beiden Einstellungen - bist du sicher, dass das Reading neu befüllt wurde - die Anpassung wird beim Schreiben vorgenommen.

Das mit dem Programmen ist beim Ofen etwas unschön, weil da überall unötigerweise ein Prefix dran ist.
Du bekommst ein "set SelectedProgram" angeboten nehme ich an, und dort stehen die deutschen Übersetzungen?
Und beim Setzen auf "Heißluft" kriegt du den Fehler? Oder bei "StartProgram"?
Oder hattest du das Programm am Gerät eingestellt?
Hab noch nicht ganz verstanden woher diese "not supported" Meldung kommt. Irgendwie verschluckt der manche Nachrichten im LogFile.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 05 Januar 2025, 12:16:17
Leider lässt sich mit dem API, auf das FHEM zugreift, der Backofen NICHT einschalten. Auch das Kochfeld nicht - beides ist aber schon seit Jahren bekannt.

Das Einzige, was man über FHEM bei den beiden steuern kann, ist der Kurzzeitwecker (Alarm) und die Kindersicherung.

Angeblich begründet HC das mit "Sicherheit" und "gesetzliche Regelung" - allerdings trifft dies beim Backofen nicht zu.

LG

pah
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 05 Januar 2025, 12:17:00
Nach deletereading und FHEM Neustart erscheint die Temperatur neu:
Status.CurrentCavityTemperature 33 2025-01-05 12:08:57Nur die Zahl, keine Einheit.
Der Wert ändert sich nicht, wenn die Temperatur steigt.

Siehe List vom Device und letztes Log

Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 05 Januar 2025, 12:18:45
Zitat von: Prof. Dr. Peter Henning am 05 Januar 2025, 12:16:17Leider lässt sich mit dem API, auf das FHEM zugreift, der Backofen NICHT einschalten. Auch das Kochfeld nicht - beides ist aber schon seit Jahren bekannt.

Das Einzige, was man über FHEM bei den beiden steuern kann, ist der Kurzzeitwecker (Alarm) und die Kindersicherung.

Angeblich begründet HC das mit "Sicherheit" und "gesetzliche Regelung" - allerdings trifft dies beim Backofen nicht zu.

LG

pah

Ah, OK, dann brauchen wir da auch nicht zu suchen  ;)
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 05 Januar 2025, 12:40:05
Die "no program selected" Meldung kommt allerdings schon beim Holen der ProgramOptions - das sollte doch eigentlich gehen.... Hab da mal eine Kleinigkeit geändert - vielleicht eine Race Condition.

Ich habe in der gerade eingecheckten Version das logging nochmal bisschen nachgebessert.
Außerdem sollte die Einheit jetzt kommen.

Die aktuelle Temperatur scheint nicht als Event zu kommen (wahrscheinlich mal wieder "not supported" in der developer API).
Du kannst schauen, ob sie mit "get Status" zumindest manuell aktualisiert wird.
Dann noch ein Test ob "GetProgramOptions" funktioniert, wenn du sicher ein "SelectedProgram" Reading hast.

Danke,
Jörg
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 05 Januar 2025, 13:16:57
Dank von meiner Seite vor allem!

Also habe ich die neu Version geladen.
Nach Restart FHEM folgende Info im FHEM Log:
2025.01.05 12:59:08 1: [HomeConnect_Init] for HB772G1B1 called
2025.01.05 12:59:08 1: [HomeConnect_ResponseInit] HB772G1B1: defined as HomeConnect Oven Siemens HB772G1B1
2025.01.05 12:59:09 1: [HomeConnect_Init] for EX977NVV6E called
2025.01.05 12:59:09 1: [HomeConnect_ResponseInit] EX977NVV6E: defined as HomeConnect Hob Siemens EX977NVV6E
2025.01.05 12:59:10 3: sduino868/init: get version, retry = 1
2025.01.05 12:59:10 1: [HomeConnect_Init] for SN63E800BE called
2025.01.05 12:59:10 1: [HomeConnect_ResponseInit] SN63E800BE: defined as HomeConnect Dishwasher Siemens SN63E800BE
2025.01.05 12:59:16 1: [HomeConnect_ResponseGetPrograms] EX977NVV6E: no programs found
2025.01.05 12:59:31 1: [HomeConnect_ResponseGetPrograms] EX977NVV6E: no programs found
2025.01.05 12:59:44 1: [HomeConnect_ResponseGetPrograms] EX977NVV6E: no programs found
2025.01.05 12:59:50 3: sduino868/init: get version, retry = 2

"EX" ist das Kochfeld, das hat keinerlei Programme an Board. Das ist also OK, eine Logmeldung diesbezüglich wäre dann unnötig (Kosmetik).

Der Backofen meldet eine Temperatur mit richtiger Einheit. Keine Fehler dort.
Die Temperatur ist mit 33 Grad allerdings (nach dem FHEM Restart) falsch, sie beträgt lt. Display am Ofen 45 Grad.
Es erfolgt auch manuell kein Update. Ich denke, das ging mit dem 3 Jahre alten Modul, bin mir aber nicht sicher.

Beim Status "HotAir (0:00)" ändert sich die Zeit (state2) nicht mehr, das ging, meine ich, in vorherigen Versionen.

GetProgramOptions liefert beim laufendem Backofen Readings mit neuem Zeitstempel, allerdings ohne den Inhalt zu ändern, siehe Logs.

Ich habe das Logfile mal gelöscht und hier neu eingefügt.






Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 05 Januar 2025, 15:29:00
Solange das "no programs found" nur im Log und nicht im lastErr auftaucht sollte es ok sein.
Wenn das Kochfeld nie Programme haben kann, macht es aber wahrscheinlich Sinn den Typ "Hob" aus der Progammlogik rauszunehmen.

Wegen potentieller Updates der Ofentemperatur bitte mal ein Log über eine Zeit mitlaufen lassen. Es geht ja um die ElapsedTime, richtig? Und die sollte dann im "state2" Reading landen.
Ich sehe da in deinem letzen Log seltsame Sachen - da springt dieser Wert zwischen 0 und einer größeren Zahl hin- und her - sind aber nur zwei Einträge dazu im Log.

Das sich state2 jemals geändert haben soll, fände ich seltsam - in deinen Logs ist es entweder "-" oder "0:00", was auch logisch ist, da es fix aus RemainingProgramTimeHHMM kommt - und das hat der Ofen gar nicht. Da muss dann noch eine Logik rein, die Zeit von woanders zu nehmen, wenn das der Fall ist.
Hat der Ofen auch einen Alarm? (das Kochfeld sicher) - das wäre auf jeden Fall etwas zum anzeigen. Ein Test damit wäre nett :)

Das Problem mit den Programmen mit "." sollte jetzt behoben sein. Hatte zum Glück auch eins bei meiner Waschmaschine, konnte das Problem nachvollziehen und bei mir geht es jetzt, die ProgramOptions zu holen.
In SelectedProgram steht das Programm jetzt halt mit Punkt - aber das ist auch ok, damit man mit dem "translate" Attribut eine übersetze Version erstellen kann.

Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 05 Januar 2025, 16:27:13
Ich kann leider im Moment nicht testen, weil ich seit 7 Stunden auf einem Landesparteitag herumhänge...

LG

pah
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 05 Januar 2025, 16:46:26
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.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 05 Januar 2025, 17:11:28
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
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Shadow3561 am 05 Januar 2025, 17:22:54
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
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 05 Januar 2025, 17:29:53
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)
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 05 Januar 2025, 18:04:36
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.



Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 05 Januar 2025, 18:38:31
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....
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 05 Januar 2025, 18:53:01
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.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 05 Januar 2025, 23:33:24
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.
 
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: DerTom71 am 06 Januar 2025, 02:48:44
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?



Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 06 Januar 2025, 10:15:48
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.

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!
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 06 Januar 2025, 12:14:31
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
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 06 Januar 2025, 12:54:59
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.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 06 Januar 2025, 13:39:55
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




Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: tomhead am 06 Januar 2025, 14:18:19
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
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 06 Januar 2025, 14:19:49
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.

Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 06 Januar 2025, 15:19:50
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.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: DerTom71 am 06 Januar 2025, 18:42:06
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.)
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 06 Januar 2025, 20:28:34
"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
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Stonemuc am 06 Januar 2025, 21:58:09
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.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: DerTom71 am 07 Januar 2025, 00:11:53
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
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 07 Januar 2025, 08:08:11
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?
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 07 Januar 2025, 10:45:43
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.

Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 07 Januar 2025, 10:47:45
Zitat:
ZitatHomeConnectConnection hat uralte Defaults für den accessScope.

Sehen wir Anwender die Änderungen vom Post oben irgendwo in FHEM?
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: DerTom71 am 07 Januar 2025, 11:46:07
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          -
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 07 Januar 2025, 16:20:07
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 :)
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Shadow3561 am 07 Januar 2025, 16:52:45
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
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 07 Januar 2025, 17:02:33
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?
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Shadow3561 am 07 Januar 2025, 18:01:01
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
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 07 Januar 2025, 18:35:03
@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.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: DerTom71 am 07 Januar 2025, 18:50:01
Kühlschrank / Unten die Readings für open > alarm > closed => funktioniert  ;D

Kleine Unschönheit:
Im state1 ist '°C' doppelt
Im state2 steht 0 °C (Woher kommt den die 0 ?)

READINGS:
     2025-01-07 09:31:04   Event.DoorAlarmRefrigerator Off
     2025-01-07 18:38:52   Setting.Door.AssistantForceFridge LowForce
     2025-01-07 18:38:52   Setting.Door.AssistantFridge On
     2025-01-07 18:38:52   Setting.PowerState On
     2025-01-07 18:38:52   Setting.SetpointTemperatureRefrigerator 5 °C
     2025-01-07 18:38:52   Setting.SuperModeRefrigerator Off
     2025-01-07 18:40:57   Status.Door.Refrigerator Open
     2025-01-07 18:40:57   Status.DoorState Open
     2025-01-07 09:31:04   alarmCount      0
     2025-01-07 09:31:04   alarms         
     2025-01-07 18:29:04   lastErr         ok
     2025-01-07 18:40:57   state           open
     2025-01-07 18:40:57   state1          5 °C °C
     2025-01-07 18:40:57   state2          0 °C °C

READINGS:
     2025-01-07 18:42:52   Event.DoorAlarmRefrigerator Present
     2025-01-07 18:38:52   Setting.Door.AssistantForceFridge LowForce
     2025-01-07 18:38:52   Setting.Door.AssistantFridge On
     2025-01-07 18:38:52   Setting.PowerState On
     2025-01-07 18:38:52   Setting.SetpointTemperatureRefrigerator 5 °C
     2025-01-07 18:38:52   Setting.SuperModeRefrigerator Off
     2025-01-07 18:40:57   Status.Door.Refrigerator Open
     2025-01-07 18:40:57   Status.DoorState Open
     2025-01-07 18:42:52   alarmCount      1
     2025-01-07 18:42:52   alarms          DoorAlarmRefrigerator
     2025-01-07 18:29:04   lastErr         ok
     2025-01-07 18:42:52   state           alarm
     2025-01-07 18:42:52   state1          5 °C °C
     2025-01-07 18:42:52   state2          0 °C °C

READINGS:
     2025-01-07 18:43:22   Event.DoorAlarmRefrigerator Off
     2025-01-07 18:38:52   Setting.Door.AssistantForceFridge LowForce
     2025-01-07 18:38:52   Setting.Door.AssistantFridge On
     2025-01-07 18:38:52   Setting.PowerState On
     2025-01-07 18:38:52   Setting.SetpointTemperatureRefrigerator 5 °C
     2025-01-07 18:38:52   Setting.SuperModeRefrigerator Off
     2025-01-07 18:43:22   Status.Door.Refrigerator Closed
     2025-01-07 18:43:22   Status.DoorState Closed
     2025-01-07 18:43:22   alarmCount      0
     2025-01-07 18:43:22   alarms         
     2025-01-07 18:29:04   lastErr         ok
     2025-01-07 18:43:22   state           closed
     2025-01-07 18:43:22   state1          5 °C °C
     2025-01-07 18:43:22   state2          0 °C °C
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Shadow3561 am 07 Januar 2025, 18:54:11
Zitat von: Adimarantis am 07 Januar 2025, 18:35:03Folgende Liste ist sowieso schon im Modul hinterlegt - entspricht das dem was dein Gerät kann?
Wenn du die Liste aus dem Modul von pah hast, dann sind alle Programme, die mein Waschtrockner kann, drin.

Ich habe jetzt auch mal ein wenig dienSimulator bemüht. Die Programme werden auch dort nicht geladen. Es kommt nur ein [] zurück. Dann muss ich wohl damit leben bis BSH mal etwas erweitert.

MfG

Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 07 Januar 2025, 23:25:30
Zitat von: Adimarantis am 07 Januar 2025, 17:02:33
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?

Ich sehe keine Änderungen mit der aktuell Version (eben um 2025.01.07 23:17:46 eingespielt und Ofen ein- und ausgeschaltet).
Nach dem Load des Moduls und einem shutdown/restart wird die Temperatur wieder korrekt mit 20 Grad angezeigt.


Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 08 Januar 2025, 07:57:46
Zitat von: isy am 07 Januar 2025, 23:25:30Ich sehe keine Änderungen mit der aktuell Version (eben um 2025.01.07 23:17:46 eingespielt und Ofen ein- und ausgeschaltet).
Nach dem Load des Moduls und einem shutdown/restart wird die Temperatur wieder korrekt mit 20 Grad angezeigt.
GetProgramOptions liefert weiter eine leere Liste. Sehr mystisch, insbesondere da die "Original" Einstellungen den "Oven" gar nicht drin hatten.
Jetzt wo du die Liste im internal Reading von HomeConnectConnection sehen kannst, probier doch mal die Liste ins Attribut zu kopieren und alles mit "Oven" wieder rauszulöschen - vielleicht bringt das was zurück.
Wenn das hilft, ist aber das Rechte System von denen echt kaputt.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 08 Januar 2025, 08:44:08
Aktuelles update:
- Kühlschrank: Doppelte °C sollten weg sein, zweite Temperaturzeile entfernt wenn nur Kühlschrank (FridgeFreezer hat zwei)
- Waschtrocker: Wenn die Programmliste leer ist, wird der "hardcoded" default übernommen. Zum Testen bitte sicherstellen, dass die internal readings ".programs" und "programs" leer sind. Bitte logfile und "list -r" vom device
- Kochfeld (und ggf. andere): Wenn der Anwender das Gerät bedient wird jetzt auf ein LocalHandling=Off Event gewartet. Das sollte kommen, wenn der Anwender fertig ist, Tasten am Gerät zu drücken. Ich weiss aber nicht wie schnell das passiert - eventuell kommt das verzögert. Wenn das Event kommt wird automatisch ein GetStatus aufgerufen, so das entsprechende Readings aktualisiert werden sollten.
- Logging: HaId mit Bindestrich drin, werden jetzt auch entfernt
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 08 Januar 2025, 11:39:31
Zitat von: Adimarantis am 08 Januar 2025, 07:57:46
Zitat von: isy am 07 Januar 2025, 23:25:30Ich sehe keine Änderungen mit der aktuell Version (eben um 2025.01.07 23:17:46 eingespielt und Ofen ein- und ausgeschaltet).
Nach dem Load des Moduls und einem shutdown/restart wird die Temperatur wieder korrekt mit 20 Grad angezeigt.
GetProgramOptions liefert weiter eine leere Liste. Sehr mystisch, insbesondere da die "Original" Einstellungen den "Oven" gar nicht drin hatten.
Jetzt wo du die Liste im internal Reading von HomeConnectConnection sehen kannst, probier doch mal die Liste ins Attribut zu kopieren und alles mit "Oven" wieder rauszulöschen - vielleicht bringt das was zurück.
Wenn das hilft, ist aber das Rechte System von denen echt kaputt.

Moin Adimarantis,
gerade die aktuell Version geladen.
Temp war 49 Grad (falsch, Ofen hatte 20), nach dem Start des Ofens zeigt FHEM jetzt 44 Grad an, der Wert ist aber auch falsch, Ofen zeigt 75 Grad. Also Bewegung ist vorhanden......

Uhrzeit war 11.26 (für Log). Es wurde kein Programm (Heißluft 3D war aktiviert) angezeigt, daher FM:
2025.01.08 11:26:41 1: [HomeConnect_HandleError] HB772G1B1: Error "There is no program selected"

Ich habe jetzt den Ofen nochmals angeschaltet, jetzt mit Ober/Unterhitze. Ausgeschaltet um 11.37 Uhr.
Programm wird angezeigt, Options holen ohne FM im Log.

Mit dem Internal Reading im HomeConnectConnection habe ich u.U. Verständnisprobleme.
Die Liste wird nicht angezeigt.
Muss ich beim list einen besonderen Parameter eingeben?

VG Helmut
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 08 Januar 2025, 12:13:28
Also wenn du folgende Schritte korrekt durchlaufen hast:
- HomeConnectConnection.pm aktualisiert (inkl. reload oder shutdown restart)
- logout
- Neues login
Solltest du unter Internals folgendes Reading finden:
accessScope
IdentifyAppliance Monitor Settings Control Oven Dishwasher Washer Dryer WasherDryer Refrigerator Freezer FridgeFreezer-Control FridgeFreezer-Monitor FridgeFreezer-Settings WineCooler CoffeeMaker Hob Hood CleaningRobot CookProcessor

Wegen Fehlermeldung: Anscheinend setzt der Ofen ActiveProgram nicht zuverlässig. Ich teste jetzt mal zusätzlich auf OperationState=Run - das sollte zumindest in dem von dir geloggten Fehlerfall helfen.

Mit deinen Temperaturen: Wie gesagt, spiel gerne noch mit den Permissions (wenn das wie oben geschrieben klappt) aber da mache ich mir eigentlich keine großen Hoffnungen. Das scheint einfach auf API-Seite kaputt zu sein.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 08 Januar 2025, 12:56:35
Top, das hat funktioniert, die Readings sind exakt so vorhanden.
Die HC Seite sieht nach dem Login vollkommen anders aus, als letzte Woche.

Übernahme der Liste ins Attribut ohne "Oven" geht auch, anschließend Restart FHEM.
Alles wieder zurück.
In Gänze keine Änderung in der Temperaturanzeige. OK, dann ist dass eben so.

Neu: Nach Start des Ofens wird der Status (inkl. der Temperatur) sofort im FHEM Frontend angezeigt, also ohne manuellen Trigger.
Super.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 08 Januar 2025, 13:03:01
Zitat von: isy am 08 Januar 2025, 12:56:35Übernahme der Liste ins Attribut ohne "Oven" geht auch, anschließend Restart FHEM.
Alles wieder zurück.
Vorsicht: Das Reading wird genau einmal: Beim "Login" aktualisiert. Wenn es nach Neustart wieder zurück ist, dann nur weil du kein "Save config" gemacht hast. Die Verbindung mit Home Connect basiert weiter auf den Parametern des letzten Login - wofür ich keinen Weg kenne es abzufragen.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 08 Januar 2025, 15:27:38
OK, ja, save config hatte ich vergessen.
Das Ganze wiederholt, ändert aber nichts.
Access Scope bleibt aber jetzt erhalten.

By the way - meine Spülmaschine läuft perfekt, super Entwicklung Log anbei.
Mal sehen, ob es irgendwann Meldungen gibt bzgl. Mangel an Salz oder Klarspüler.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 08 Januar 2025, 16:10:41
Zitat von: isy am 08 Januar 2025, 15:27:38Das Ganze wiederholt, ändert aber nichts.

Wir hatten doch den mystischen Effekt beim Ofen, dass FastPreHeat als selektierbare Programmoption veschwunden ist.
Zumindest im Logfile vom 6.1. lieferte GetProgramOptions für "HotAir" noch SetpointTemperature und FastPreHeat als setzbare Optionen - seit dem 7.1. ist die Antwort leer obwohl ich keinen Unterschied im Request sehen kann.
Das wäre der Punkt den du mit verschiedenen accessScope testen könntest.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Stonemuc am 09 Januar 2025, 09:06:34
Habe jetzt mal die neue HC von hier installiert....bis auf den Cookit geben eigentlich alle Geräte sinnvolle readings aus.

Internals:
   CFGFN     
   DEF        hcconn 710110514461014727
   FUUID      677f7a64-f33f-37e6-16bf-abe08e97b36365f5
   NAME       MCC9555DWC
   NR         682
   NTFY_ORDER 50-MCC9555DWC
   STATE      state1 (state2)
   TYPE       HomeConnect
   aliasname  Cookit
   brand      Bosch
   eventCount 8
   events     
   haId       710110514461014727
   hcconn     hcconn
   prefix     
   programs   
   settings   PowerState
   type       CookProcessor
   vib        MCC9555DWC
   READINGS:
     2025-01-09 08:28:47   BSH.Common.Setting.PowerState Standby
     2025-01-09 08:34:52   BSH.Common.Status.OperationState Inactive
     2025-01-09 08:34:46   lastErr         No programs found
   data:
     settings:
       PowerState:
         name       BSH.Common.Setting.PowerState
         type       BSH.Common.EnumType.PowerState
         value      Standby
     status:
       OperationState:
         name       BSH.Common.Status.OperationState
         type       BSH.Common.EnumType.OperationState
         value      Inactive
   helper:
     eventChannelTimeout 1736408902.68891
     init       status_done
     init_count 4
     retrycounter 0
     total_count 10
     updatePO   0
Attributes:
   alias      Cookit
   icon       scene_cooking
   room       Home Connect
   stateFormat state1 (state2)
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 09 Januar 2025, 09:16:28
Zitat von: Stonemuc am 09 Januar 2025, 09:06:34Habe jetzt mal die neue HC von hier installiert....bis auf den Cookit geben eigentlich alle Geräte sinnvolle readings aus.
In der API Doku steht:
ZitatCook Processor
Program support is currently not planned to be released. Selected and active program can be already requested.

Wär also höchstens mal interessant das Logfile zu aktivieren und mitzuprotkollieren was passiert, wenn du das Gerät verwendest.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 09 Januar 2025, 09:36:30
Zitat von: Adimarantis am 08 Januar 2025, 16:10:41
Zitat von: isy am 08 Januar 2025, 15:27:38Das Ganze wiederholt, ändert aber nichts.

Wir hatten doch den mystischen Effekt beim Ofen, dass FastPreHeat als selektierbare Programmoption veschwunden ist.
Zumindest im Logfile vom 6.1. lieferte GetProgramOptions für "HotAir" noch SetpointTemperature und FastPreHeat als setzbare Optionen - seit dem 7.1. ist die Antwort leer obwohl ich keinen Unterschied im Request sehen kann.
Das wäre der Punkt den du mit verschiedenen accessScope testen könntest.

Moin,
Das stimmt. In den Readings werden diese setzbaren Optionen angezeigt, aber im Drop Down Menü unter "set" gibt es nur die drei Alarm Settings, Childlock und Power. Diese Settings funktionieren.

Bei manuellem set HB772G1B1 Option.FastPreHeat On wird eine Zeile ins Fhem Log geschrieben, aber der Wert im Readings ändert sich nicht.
2025.01.09 09:31:14 3: [HomeConnect] HB772G1B1: set command: Option.FastPreHeat

Bei jedem Einschalten des Backofens werden diese 2 Zeilen ins Fhem Log geschrieben:
2025.01.09 09:30:38 1: [HomeConnect_HandleError] HB772G1B1: Error "There is no program active"
2025.01.09 09:30:48 1: [HomeConnect_HandleError] HB772G1B1: Error "There is no program active
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 09 Januar 2025, 16:35:41
Das Holen und Verwalten von Programmoptionen ist leider etwas tricky.
Es gibt 3 verschiedene API Calls die sich teilweise überschneiden, oder eben auch nicht.
Desweiteren ist die Verwendung von Options und Settings nicht wirklich konsistent.
Ich gehe jetzt mal davon aus, dass "Common" Options NICHT gesetzt werden können, sondern nur Informationen sind, dagegen die gerätespezifischen Options gesetzt werden können (und m.E. daher eher Settings genannt werden sollten).
Ich merke mir jetzt auch einige Infos die nicht in jedem Call kommen an zentraler Stelle.
Desweiteren muss man aufpassen in welchem Modus (active, selected, available) man abfragt. Ich hoffe das ist jetzt auch besser und "There is no program active" kommt nicht mehr.
Bei "set option"  Befehlen werden Readings jetzt "auf Verdacht" aktualisiert und im Fehlerfall der Status erneut abgefragt, damit es ggf. wieder auf den korrekten Wert zurückfällt.
Grundsätzlich ist es möglich, dass anfangs Optionen angeboten werden, die nicht funktionieren. Hier "lernt" das Modul, indem es im Fehlerfall das Attribut "excludeSettings" mit invaliden Optionen/Settings belegt, wodurch die Liste schnell auf Dinge reduziert wird, die für das spezifische Gerät wirklich funktionieren.


Langer Rede: Die Logik für Abfrage und Speicherung von Programmoptionen wurde nochmal etwas überarbeitet. Bei meinen 3 Geräten schauts vernünftig aus, aber da heisst ja leider nicht unbedingt dass es überall und immer funktioniert.

Ich versuche jetzt übrigens auch eine Modulversion zu pflegen. Die aktuelle hat V1.7 und diese landet regelmäßig an zentraler Stelle im Logfile.
2025.01.09 16:11:57 [HomeConnect_CheckState] V1.7 from s:idle d:Closed o:Ready
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 09 Januar 2025, 17:29:50
Danke für die Info, das ist alles sehr aufwändig.
Ich habe viele Jahre keine SW mehr entwickelt......

Ich teste weiter.

- "set" hat ein neues Layout
- Es wird nur noch "Power" mit "Standby" angeboten, die vorherigen Settings sind nicht mehr aufzurufen.

Bei den Readings werden diese angeboten.
Setting.ActiveProgram
Setting.AlarmClock 0 seconds
Setting.ChildLock Off
Setting.PowerState Standby
Setting.SelectedProgram

Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 09 Januar 2025, 17:42:25
Wenn's nur das Programmieren wär - die komplexen Abhängigkeiten machen einen hier wahnsinnig.

V1.8 eingecheckt - war prompt ein Fehler drin der "StartProgram" verhindert hat: Das Ausfiltern von "Common" hatte einen unerwünschten Nebeneffekt auf StartInRelative/FinishInRelative ...
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 09 Januar 2025, 17:45:23
Ah OK. Ja ich komme aus der Zeit Assembler (IBM, 6502), Fortran, Pascal, Cobol, ABAP.....lange her.
OK, installiere die neue Version und geb einen Update.


Erster Logeintrag  2 Sekunden nach der letzte HC Meldung
2025.01.09 17:47:11 1: PERL WARNING: Use of uninitialized value $text in concatenation (.) or string at fhem.pl line 1026.
Kann die von deinem Modul kommen?
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 09 Januar 2025, 17:49:15
Zitat von: isy am 09 Januar 2025, 17:45:23Ah OK. Ja ich komme aus der Zeit Assembler (IBM, 6502), Fortran, Pascal, Cobo, ABAP.....lange her.
6502 - das waren noch Zeiten - bei meinem C64 kannte ich noch jedes Bit mit Vornamen :)
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 09 Januar 2025, 17:53:35
Gerade noch ein Update im vorherigen Post gemacht. Log und List mit dabei
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 09 Januar 2025, 17:57:27
Zitat von: isy am 09 Januar 2025, 17:45:23Erster Logeintrag  2 Sekunden nach der letzte HC Meldung
2025.01.09 17:47:11 1: PERL WARNING: Use of uninitialized value $text in concatenation (.) or string at fhem.pl line 1026.
Kann die von deinem Modul kommen?
Gut möglich. Setz mal
attr global stacktrace 1Dann spuckt er die call history aus und man weiss wer der Verursacher war - vorallem welche Zeile im Code.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 09 Januar 2025, 18:21:47
Das war das alte GoE Modul, welches nicht mehr gepflegt wird. Werde bei Gelegenheit mal PaH's httpmod testen und dann löschen.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 09 Januar 2025, 20:39:35
In V1.9 habe ich jetzt nochmal was an der Logik verändert mit der ProgramOptions identifiziert werden.
Mein Ziel wäre, dass dir "FastPreHeat" und "SetpointTemperature" als "set" angeboten wird.
Ob du es dann wirklich setzen kannst/darfst ist dann ein anderes Thema, aber wenn es fehlschlägt sollte es im excludeSettings Attribut landen und zukünftig nicht mehr angeboten werden.
Kannst du das Szenario mal testen/loggen?
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 09 Januar 2025, 23:03:22
Here awe are:
Ab 22:27 im Log.

Sieht gut aus. "FastPreHeat" und "SetpointTemperature" sind nicht vorhanden.
Aber: Die Set's für Alarm, Childlock und Power sind eingerichtet und funktionieren.

Mni tnx!
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 09 Januar 2025, 23:08:04
Gerade gesehen. "Option.FastPreHeat" und "SetpointTemperature" werden als "Option" angezeigt, nicht als "Setting".
Hat das was zu sagen?
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 10 Januar 2025, 07:46:57
Zitat von: isy am 09 Januar 2025, 23:03:22Sieht gut aus. "FastPreHeat" und "SetpointTemperature" sind nicht vorhanden.
Ich hab da eine Vermutung: Wahrscheinlich löscht "get Settings" die "set" Befehle versehentlich.
Kannst du kurz folgenden Test machen:
- Programm am Gerät wählen
- get ProgramOptions
- Dann ein "list" und schauen ob die set Befehle da sind
- ggf. die set Befehle testen

Danke.

Edit: Welchen accessScope verwendest du jetzt? Der scheint ja die Options zumindest wieder zu liefern.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 10 Januar 2025, 09:50:36
- Programm am Gerät wählen
- get ProgramOptions
- Dann ein "list" und schauen ob die set Befehle da sind
- ggf. die set Befehle testen

--> Alle set vorhanden und funktionieren. "list" direkt nach get programoptions
--> Nach get settings sind "FastPreHeat" und "SetpointTemperature"  wieder weg

accessScope
IdentifyAppliance Monitor Settings Control Oven Dishwasher Washer Dryer WasherDryer Refrigerator Freezer FridgeFreezer-Control FridgeFreezer-Monitor FridgeFreezer-Settings WineCooler CoffeeMaker Hob Hood CleaningRobot CookProcessor

--> Alles an

VG Helmut
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 10 Januar 2025, 10:26:36
Prima.
Übrigens holt GetSettings bei dir nur ChildLock, AlarmClock und PowerState.
Wenn du die anderen Sachen aktualisieren willst, mach lieber GetStatus - was implizit auch ein GetProgramOptions macht.

In V1.10 sollte das GetSettings jetzt aber keinen Schaden mehr anrichten.

SetpointTemperature: Da kommt vom Gerät auch schön die Rückmeldung das es gesetzt wurde.
FastPreHeat: Hast du am Gerät gesehen, das das angegangen ist? Da kriege ich zwar keine Fehler aber auch keine Rückmeldung. Hier evtl. ein GetStatus und sehen ob das Reading auf dem gesetzen Wert bleibt.

Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 10 Januar 2025, 11:35:36
Die Settings für  "FastPreHeat" und "SetpointTemperature" tauchen erst nach dem Einschalten des Backofens auf.
Vorher bleiben die reduzierten Sets.

FastPreHeat wird nicht an den Ofen übertragen, bzw. ich habe noch keinen Weg gefunden, das zu prüfen.
Eventuell wird der Wert erst gesetzt, wenn das Programm läuft, aber dann ist es ja zu spät.
Im Status FHEM bleib der Wert auf On.

Nach FastPreHeat auf off verschwinden beide Settings wieder.

Stimmt noch was nicht.
Der Ofen steht auf "Pause", Status FHEM ist "Heißluft (Pause)". Korrekt
Programm ist noch aktiv, aber FHEM sagt bei get ProgrammOptions "There is no program selected"

11:27 Ofen Start (am Gerät)
Settings  "FastPreHeat" und "SetpointTemperature" wieder da.

11:29 Ofen auf Pause. Settings bleiben komplett
11:30 Ofen aus. Settings bleiben komplett auch mit get Status oder get ProgramOptions

11:32 Ofen an, Schnellheizen aktiv am Ofen
11:32 Option.FastPreHeat ist On
11:33 Manuell auf Off gesetzt, am Ofen auch Off.

Bleibt die Frage, wann man in Fhem die Option.FastPreHeat auf On setzten kann, damit das ankommt.
--> Geklärt: Wenn das Programm am Ofen läuft.

Bis auf das anfängliche Verhalten bei den Settings sieht das jetzt top aus.




Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 10 Januar 2025, 11:45:16
Nach FHEM Neustart steht im Status "Ready"
Nach Page Reload "Autostart (-)"
Die erweiterten Settings hängen vom Programm ab. Bei "Sanft Heißluft" wird Option.FastPreHeat nicht geladen z.B.

Ein "Save Config" in FHEM getestet
Nach FHEM Neustart steht im Status "Autostart (-)"
"FastPreHeat" und "SetpointTemperature" wieder weg. Haben wir gelernt, hängt am laufenden, nicht am gewähltem Programm im Ofen.

Neues Log anbei.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Stonemuc am 10 Januar 2025, 14:00:33
Hier mal ein Logfile vom Cookit...da müsstest du mal anpassen, dass der Programmfortschritt und eventuell der Operation State im Staus stehen...bei mir steht da nur stage1(state2).


2025-01-10_12:38:02 MCC9555DWC Offline
2025-01-10_12:38:03 MCC9555DWC lastErr: Program not supported
2025-01-10_12:38:03 MCC9555DWC lastErr: HomeAppliance is offline
2025-01-10_12:38:03 MCC9555DWC BSH.Common.Status.OperationState: Offline
2025-01-10_12:38:13 MCC9555DWC lastErr: HomeAppliance is offline
2025-01-10_12:38:13 MCC9555DWC BSH.Common.Status.OperationState: Offline
2025-01-10_12:38:14 MCC9555DWC lastErr: HomeAppliance is offline
2025-01-10_12:38:14 MCC9555DWC BSH.Common.Status.OperationState: Offline
2025-01-10_12:38:16 MCC9555DWC lastErr: HomeAppliance is offline
2025-01-10_12:38:16 MCC9555DWC BSH.Common.Status.OperationState: Offline
2025-01-10_12:38:22 MCC9555DWC BSH.Common.Status.OperationState: Run
2025-01-10_12:44:27 MCC9555DWC BSH.Common.Status.OperationState: ActionRequired
2025-01-10_12:44:37 MCC9555DWC BSH.Common.Option.ProgramProgress: 48 %
2025-01-10_12:44:37 MCC9555DWC BSH.Common.Option.ProgramProgress: 51 %
2025-01-10_12:45:02 MCC9555DWC BSH.Common.Option.ProgramProgress: 53 %
2025-01-10_12:45:57 MCC9555DWC BSH.Common.Option.ProgramProgress: 56 %
2025-01-10_12:46:02 MCC9555DWC BSH.Common.Status.OperationState: Run
2025-01-10_12:46:07 MCC9555DWC BSH.Common.Status.OperationState: ActionRequired
2025-01-10_12:46:12 MCC9555DWC BSH.Common.Status.OperationState: Run
2025-01-10_12:46:17 MCC9555DWC BSH.Common.Option.ProgramProgress: 58 %
2025-01-10_12:46:17 MCC9555DWC BSH.Common.Status.OperationState: ActionRequired
2025-01-10_12:46:27 MCC9555DWC BSH.Common.Option.ProgramProgress: 61 %
2025-01-10_12:46:32 MCC9555DWC BSH.Common.Status.OperationState: Run
2025-01-10_12:46:42 MCC9555DWC BSH.Common.Status.OperationState: ActionRequired
2025-01-10_12:46:47 MCC9555DWC BSH.Common.Option.ProgramProgress: 64 %
2025-01-10_12:46:47 MCC9555DWC BSH.Common.Option.ProgramProgress: 66 %
2025-01-10_12:47:17 MCC9555DWC BSH.Common.Option.ProgramProgress: 69 %
2025-01-10_12:47:22 MCC9555DWC BSH.Common.Option.ProgramProgress: 71 %
2025-01-10_12:47:22 MCC9555DWC BSH.Common.Status.OperationState: Run
2025-01-10_12:47:37 MCC9555DWC BSH.Common.Option.ProgramProgress: 74 %
2025-01-10_12:47:42 MCC9555DWC BSH.Common.Status.OperationState: Run
2025-01-10_12:50:42 MCC9555DWC BSH.Common.Status.OperationState: ActionRequired
2025-01-10_12:50:42 MCC9555DWC BSH.Common.Option.ProgramProgress: 76 %
2025-01-10_12:51:12 MCC9555DWC BSH.Common.Option.ProgramProgress: 79 %
2025-01-10_12:51:17 MCC9555DWC BSH.Common.Status.OperationState: Run
2025-01-10_12:58:23 MCC9555DWC BSH.Common.Status.OperationState: ActionRequired
2025-01-10_12:58:28 MCC9555DWC BSH.Common.Option.ProgramProgress: 82 %
2025-01-10_12:58:28 MCC9555DWC BSH.Common.Option.ProgramProgress: 84 %
2025-01-10_12:59:13 MCC9555DWC BSH.Common.Option.ProgramProgress: 87 %
2025-01-10_12:59:13 MCC9555DWC BSH.Common.Option.ProgramProgress: 84 %
2025-01-10_12:59:18 MCC9555DWC BSH.Common.Status.OperationState: Run
2025-01-10_12:59:38 MCC9555DWC BSH.Common.Status.OperationState: ActionRequired
2025-01-10_12:59:43 MCC9555DWC BSH.Common.Option.ProgramProgress: 87 %
2025-01-10_12:59:43 MCC9555DWC BSH.Common.Option.ProgramProgress: 89 %
2025-01-10_12:59:43 MCC9555DWC BSH.Common.Status.OperationState: Run
2025-01-10_12:59:43 MCC9555DWC BSH.Common.Option.ProgramProgress: 92 %
2025-01-10_12:59:43 MCC9555DWC BSH.Common.Status.OperationState: ActionRequired
2025-01-10_12:59:48 MCC9555DWC BSH.Common.Option.ProgramProgress: 94 %
2025-01-10_12:59:48 MCC9555DWC BSH.Common.Option.ProgramProgress: 97 %
2025-01-10_12:59:48 MCC9555DWC BSH.Common.Option.ProgramProgress: 100 %
2025-01-10_12:59:53 MCC9555DWC BSH.Common.Event.ProgramFinished: Present
2025-01-10_12:59:53 MCC9555DWC BSH.Common.Event.ProgramFinished: Off
2025-01-10_12:59:53 MCC9555DWC BSH.Common.Setting.ActiveProgram:
2025-01-10_12:59:53 MCC9555DWC BSH.Common.Setting.SelectedProgram:
2025-01-10_12:59:53 MCC9555DWC BSH.Common.Status.OperationState: Ready
2025-01-10_12:59:53 MCC9555DWC BSH.Common.Option.ProgramProgress: 0 %
2025-01-10_13:12:34 MCC9555DWC BSH.Common.Status.OperationState: Inactive
2025-01-10_13:12:34 MCC9555DWC BSH.Common.Setting.PowerState: Standby
2025-01-10_13:13:34 MCC9555DWC BSH.Common.Status.OperationState: Ready
2025-01-10_13:13:34 MCC9555DWC BSH.Common.Setting.PowerState: On
2025-01-10_13:13:34 MCC9555DWC BSH.Common.Setting.ChildLock: On
2025-01-10_13:13:59 MCC9555DWC BSH.Common.Setting.ChildLock: Off
2025-01-10_13:13:59 MCC9555DWC BSH.Common.Status.OperationState: Inactive
2025-01-10_13:13:59 MCC9555DWC BSH.Common.Setting.PowerState: Standby



Außerdem nochmal das List vom Device

Internals:
   DEF        hcconn 710110514461014727
   FUUID      677f7a64-f33f-37e6-16bf-abe08e97b36365f5
   NAME       MCC9555DWC
   NR         676
   NTFY_ORDER 50-MCC9555DWC
   STATE      state1 (state2)
   TYPE       HomeConnect
   aliasname  Cookit
   brand      Bosch
   eventCount 113
   events     
   haId       710110514461014727
   hcconn     hcconn
   options   
   prefix     
   programs   
   settings   PowerState
   type       CookProcessor
   vib        MCC9555DWC
   READINGS:
     2025-01-10 12:59:53   BSH.Common.Event.ProgramFinished Off
     2025-01-10 12:59:53   BSH.Common.Option.ProgramProgress 0 %
     2025-01-10 12:59:53   BSH.Common.Setting.ActiveProgram
     2025-01-10 13:13:59   BSH.Common.Setting.ChildLock Off
     2025-01-10 13:13:59   BSH.Common.Setting.PowerState Standby
     2025-01-10 12:59:53   BSH.Common.Setting.SelectedProgram
     2025-01-10 13:13:59   BSH.Common.Status.OperationState Inactive
     2025-01-10 12:38:16   lastErr         HomeAppliance is offline
     2025-01-10 12:38:02   state           Offline
   data:
     options:
     settings:
       PowerState:
         name       BSH.Common.Setting.PowerState
         type       BSH.Common.EnumType.PowerState
         value      On
         values     On,Off
     status:
       OperationState:
         name       BSH.Common.Status.OperationState
         type       BSH.Common.EnumType.OperationState
         value      Run
   helper:
     ActiveProgram GuidedProgram
     eventChannelTimeout 1736513956.77698
     init       status_done
     init_count 1
     retrycounter 0
     total_count 10
     updatePO   0
Attributes:
   alias      Cookit
   icon       scene_cooking
   room       Home Connect
   stateFormat state1 (state2)
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 10 Januar 2025, 14:04:50
Ok, dann muss ich da "Pause" behandeln wie laufendes Programm. Das sollte helfen.
Das FastPreHeat würde theoretisch dann beim "StartProgram" übertragen - aber wir wissen ja, das der Ofen das nicht erlaubt.
Beim "get Status" oder "get Settings" ist FastPreHeat nicht dabei - du solltest am Besten als Test nach dem "set FastPreHeat On" ein "get ProgramOptions" machen - wenn FastPreHeat dann nicht auf den alten Wert zurückspringt, würde ich denke der Ofen hat die Änderung gefressen.
Würde aber auch davon ausgehen, dass der das irgendwo am Gerät anzeigt.
Wenn das Gerät abgeschaltet wird, verbleiben viele Setting im alten Zustand. Auch hier hilft am ehesten "get ProgramOptions" nach dem Einschalten. Wäre zu überlegen das Prinzipiell nach PowerState=On zu machen

Der Status "Autostart" heisst im Prinzip das Gerät ist Bereit (OperationState=Ready) und RemoteControlStartAllowed=On, als es darf von FHEM (oder der App) gesteuert werden.

V1.11: Sollte besser mit Pause umgehen und ich hatte noch ein Problem mit StartProgram, weil er immer noch einige Options in den falschen Topf geschmissen hatte. Vielleicht macht das deine FastPreHeat Setting auch konsistenter. Ich bin da ehrlich gesagt jetzt nicht durch jedes Szenario im Detail durchgestiegen.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 10 Januar 2025, 14:20:12
Zitat von: Stonemuc am 10 Januar 2025, 14:00:33Hier mal ein Logfile vom Cookit...da müsstest du mal anpassen, dass der Programmfortschritt und eventuell der Operation State im Staus stehen...bei mir steht da nur stage1(state2).

Ein großes Problem hier: FHEM hat kaum Infos zu deinem Gerät.
Kannst du mal bitte folgendes machen:

1. Update auf V1.11
2. Setze das Attribut "logfile" - z.B. auf "log/cookit.log" damit die ganze Kommunikation mitgeloggt wird.
3. save config
4. Schalte das Gerät ein (ohne ein Programm zu starten)
5. FHEM restart, es sollte aber auch ein "set <device> init" in der Kommandozeile reichen
6. Jetzt sollten hoffentlich internal readings wie "prefix" und "programs" mit Werten befüllt sein. Wenn du nochmal "save config" machst werden die gespeichert, dann muss das Gerät beim FHEM Start nicht zwingend an sein.
7. Mal ein Programm durchlaufen - eventuell schaut der State jetzt schon besser aus.
8. Das log/cookit.log und ein aktuelles "list" posten - dann sehe ich die ganze Kommunikation zwischen FHEM und Gerät und kann daraus Schlüsse über potentielle Verbesserungen ziehen.

Danke
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Stonemuc am 10 Januar 2025, 14:39:49
Habe auf V1.11 geupdatet...jetzt sind alle devices verschwunden und kommen auch mit einem set ScanDevices nicht mehr zurück....
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 10 Januar 2025, 14:59:29
Zitat2025.01.10 14:57:58 0: syntax error at /opt/fhem/FHEM/48_HomeConnect.pm line 653, near "=~ or"
Execution of /opt/fhem/FHEM/48_HomeConnect.pm aborted due to compilation errors.

Da ist einfach ein "$key =~ or " zuviel.

Außerdem in Zeile 1641 eine Klammer "(" zuviel

LG

pah

Anbei der Quickfix, damit nicht jeder selbst darin suchen muss. Erledigt.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 10 Januar 2025, 15:06:43
Mea Culpa.
Bitte nochmal holen.

Da hab ich wohl dieses eine Mal vergessen eine Änderung zu Testen und prompt waren 2 Stellen nicht korrekt editiert.

Edit: Wenn du kein "save" gemacht hast, sollte nach Dateiaustausch und "shutdown restart" alles wieder da sein
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 10 Januar 2025, 15:15:05
ZitatMea Culpa.
Nicht doch, nur wer nichts macht, macht keine Fehler.

Zum Thema "Programs" beim Kochfeld: Bei mir kommen ganz korrekt   
PowerLevelMode,FryingSensorMode,PowerMoveMode

Zum Thema "Programs" bei der Spülmaschine: Da hatte ich ja mal das Attribut "extraPrograms" eingeführt, in der Hoffnung, damit die Zusatzprogramme starten zu können, die man in der BSH App auf der Spülmaschine installieren kann. Hat aber bisher nicht funktioniert.

LG

pah
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 10 Januar 2025, 15:45:50
Zitat von: Prof. Dr. Peter Henning am 10 Januar 2025, 15:15:05Zum Thema "Programs" bei der Spülmaschine: Da hatte ich ja mal das Attribut "extraPrograms" eingeführt, in der Hoffnung, damit die Zusatzprogramme starten zu können, die man in der BSH App auf der Spülmaschine installieren
Den Parameter gibt es noch.
Wird aber wahrscheinlich nicht benötigt. Ich hab mal spasshalber für meinen Trockner (mit dem experimentiere ich lieber) das ExtraProgram "Jeans" runtergeladen.
In FHEM ein "get Programs" und prompt taucht "Jeans" in der Liste der Programme auf und kann auch "selected" werden.
Spülmaschine kann ich gerade nicht testen.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Stonemuc am 10 Januar 2025, 16:05:05
Da geht nix...

2025-01-10_15:15:52 global ATTR MCC9555DWC logfile log/cookit.log
2025.01.10 15:16:37 Event:$VAR1 = {'haId' => '710110514461014727','items' => [{'level' => 'hint','uri' => '/api/homeappliances/XXXX/settings/BSH.Common.Setting.PowerState','key' => 'BSH.Common.Setting.PowerState','handling' => 'none','value' => 'BSH.Common.EnumType.PowerState.On','timestamp' => 1736518593}]};
2025-01-10_15:16:37 MCC9555DWC BSH.Common.Setting.PowerState: On
2025.01.10 15:16:37 Event:$VAR1 = {'haId' => '710110514461014727','items' => [{'uri' => '/api/homeappliances/XXXX/status/BSH.Common.Status.OperationState','level' => 'hint','handling' => 'none','key' => 'BSH.Common.Status.OperationState','timestamp' => 1736518593,'value' => 'BSH.Common.EnumType.OperationState.Ready'}]};
2025-01-10_15:16:37 MCC9555DWC BSH.Common.Status.OperationState: Ready
2025-01-10_15:16:59 MCC9555DWC init
2025.01.10 15:17:06 Request:$VAR1 = {'uri' => '/api/homeappliances','callback' => sub { "DUMMY" }};
2025.01.10 15:17:06 responseInit:$VAR1 = {'data' => {'homeappliances' => [{'haId' => 'SIEMENS-HN678G4S6-68A40E51CDF1','enumber' => 'HN678G4S6/87','name' => 'Backofen','connected' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ),'brand' => 'Siemens','type' => 'Oven','vib' => 'HN678G4S6'},{'haId' => 'SIEMENS-KG36NHI32-68A40E00C725','enumber' => 'KG36NHI32/01','name' => "K\x{c3}\x{bc}hl-Gefrier-Kombination",'brand' => 'Siemens','connected' => $VAR1->{'data'}{'homeappliances'}[0]{'connected'},'type' => 'FridgeFreezer','vib' => 'KG36NHI32'},{'connected' => $VAR1->{'data'}{'homeappliances'}[0]{'connected'},'brand' => 'Siemens','vib' => 'SX758X06TE','type' => 'Dishwasher','haId' => 'SIEMENS-SX758X06TE-68A40E061F58','name' => "Geschirrsp\x{c3}\x{bc}ler",'enumber' => 'SX758X06TE/29'},{'haId' => '710110514461014727','enumber' => 'MCC9555DWC/01','name' => 'Cookit','brand' => 'Bosch','connected' => $VAR1->{'data'}{'homeappliances'}[0]{'connected'},'type' => 'CookProcessor','vib' => 'MCC9555DWC'},{'brand' => 'Bosch','connected' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),'type' => 'Washer','vib' => 'WAYH2841','haId' => 'BOSCH-WAYH2841-68A40E124827','enumber' => 'WAYH2841/09','name' => 'Waschmaschine'},{'haId' => 'BOSCH-WTWH7591-68A40E10F03D','enumber' => 'WTWH7591/04','name' => 'Trockner','connected' => $VAR1->{'data'}{'homeappliances'}[4]{'connected'},'brand' => 'Bosch','type' => 'Dryer','vib' => 'WTWH7591'}]}};
2025.01.10 15:17:08 Init Watch MCC9555DWC stage init_done count 0

2025.01.10 15:17:08 Request:$VAR1 = {'callback' => sub { "DUMMY" },'uri' => '/api/homeappliances/XXXX/settings'};
2025.01.10 15:17:08 Get_settings:$VAR1 = {'data' => {'settings' => [{'value' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),'key' => 'BSH.Common.Setting.ChildLock'},{'key' => 'BSH.Common.Setting.PowerState','value' => 'BSH.Common.EnumType.PowerState.On'}]}};
2025.01.10 15:17:08 Checking key BSH.Common.Setting.ChildLock settings ChildLock Off

2025.01.10 15:17:08 Checking key BSH.Common.Setting.PowerState settings PowerState On

2025-01-10_15:17:08 MCC9555DWC BSH.Common.Setting.ChildLock: Off
2025-01-10_15:17:08 MCC9555DWC BSH.Common.Setting.PowerState: On
2025.01.10 15:17:10 Init Watch MCC9555DWC stage settings_done count 1

2025.01.10 15:17:10 Request:$VAR1 = {'uri' => '/api/homeappliances/XXXX/programs','callback' => sub { "DUMMY" }};
2025.01.10 15:17:10 ResponseGetPrograms:$VAR1 = {'data' => {'selected' => {'constraints' => {'access' => 'readWrite'}},'active' => {'constraints' => {'access' => 'read'}},'programs' => []}};
2025.01.10 15:17:10 ProgramList:
2025-01-10_15:17:10 MCC9555DWC lastErr: No programs found
2025.01.10 15:17:12 Init Watch MCC9555DWC stage programs count 1

2025.01.10 15:17:17 Init Watch MCC9555DWC stage programs count 2

2025.01.10 15:17:18 Init Watch MCC9555DWC stage programs count 3

2025.01.10 15:17:20 Init Watch MCC9555DWC stage programs count 4

2025.01.10 15:17:20 Request:$VAR1 = {'callback' => sub { "DUMMY" },'uri' => '/api/homeappliances/XXXX/programs'};
2025.01.10 15:17:20 ResponseGetPrograms:$VAR1 = {'data' => {'programs' => [],'active' => {'constraints' => {'access' => 'read'}},'selected' => {'constraints' => {'access' => 'readWrite'}}}};
2025.01.10 15:17:20 ProgramList:
2025-01-10_15:17:20 MCC9555DWC lastErr: No programs found
2025.01.10 15:17:21 Init Watch MCC9555DWC stage programs count 1

2025.01.10 15:17:23 get MCC9555DWC ProgramOptions
2025-01-10_15:17:23 MCC9555DWC lastErr: No programs selected or active
2025.01.10 15:17:25 Init Watch MCC9555DWC stage programs count 2

2025.01.10 15:17:29 get MCC9555DWC Status
2025.01.10 15:17:29 Request:$VAR1 = {'uri' => '/api/homeappliances/XXXX/status','callback' => sub { "DUMMY" }};
2025.01.10 15:17:29 Get_status:$VAR1 = {'data' => {'status' => [{'value' => 'BSH.Common.EnumType.OperationState.Ready','key' => 'BSH.Common.Status.OperationState'}]}};
2025.01.10 15:17:29 Checking key BSH.Common.Status.OperationState status OperationState Ready

2025-01-10_15:17:29 MCC9555DWC BSH.Common.Status.OperationState: Ready
2025.01.10 15:17:30 Init Watch MCC9555DWC stage status_done count 3

2025.01.10 15:17:33 get MCC9555DWC Settings
2025.01.10 15:17:33 Request:$VAR1 = {'uri' => '/api/homeappliances/XXXX/settings','callback' => sub { "DUMMY" }};
2025.01.10 15:17:33 Get_settings:$VAR1 = {'data' => {'settings' => [{'key' => 'BSH.Common.Setting.ChildLock','value' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' )},{'key' => 'BSH.Common.Setting.PowerState','value' => 'BSH.Common.EnumType.PowerState.On'}]}};
2025.01.10 15:17:33 Checking key BSH.Common.Setting.ChildLock settings ChildLock Off

2025.01.10 15:17:33 Checking key BSH.Common.Setting.PowerState settings PowerState On

2025-01-10_15:17:33 MCC9555DWC BSH.Common.Setting.ChildLock: Off
2025-01-10_15:17:33 MCC9555DWC BSH.Common.Setting.PowerState: On
2025.01.10 15:17:39 get MCC9555DWC Programs
2025.01.10 15:17:39 Request:$VAR1 = {'uri' => '/api/homeappliances/XXXX/programs','callback' => sub { "DUMMY" }};
2025.01.10 15:17:39 ResponseGetPrograms:$VAR1 = {'data' => {'programs' => [],'selected' => {'constraints' => {'access' => 'readWrite'}},'active' => {'constraints' => {'access' => 'read'}}}};
2025.01.10 15:17:39 ProgramList:
2025-01-10_15:17:39 MCC9555DWC lastErr: No programs found
2025.01.10 15:17:41 get MCC9555DWC ProgramOptions
2025-01-10_15:17:41 MCC9555DWC lastErr: No programs selected or active
2025-01-10_15:18:23 MCC9555DWC init
2025.01.10 15:18:35 Request:$VAR1 = {'uri' => '/api/homeappliances','callback' => sub { "DUMMY" }};
2025.01.10 15:18:35 responseInit:$VAR1 = {'data' => {'homeappliances' => [{'connected' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ),'brand' => 'Siemens','vib' => 'HN678G4S6','type' => 'Oven','haId' => 'SIEMENS-HN678G4S6-68A40E51CDF1','name' => 'Backofen','enumber' => 'HN678G4S6/87'},{'enumber' => 'KG36NHI32/01','name' => "K\x{c3}\x{bc}hl-Gefrier-Kombination",'haId' => 'SIEMENS-KG36NHI32-68A40E00C725','type' => 'FridgeFreezer','vib' => 'KG36NHI32','connected' => $VAR1->{'data'}{'homeappliances'}[0]{'connected'},'brand' => 'Siemens'},{'name' => "Geschirrsp\x{c3}\x{bc}ler",'enumber' => 'SX758X06TE/29','haId' => 'SIEMENS-SX758X06TE-68A40E061F58','vib' => 'SX758X06TE','type' => 'Dishwasher','brand' => 'Siemens','connected' => $VAR1->{'data'}{'homeappliances'}[0]{'connected'}},{'enumber' => 'MCC9555DWC/01','name' => 'Cookit','haId' => '710110514461014727','type' => 'CookProcessor','vib' => 'MCC9555DWC','connected' => $VAR1->{'data'}{'homeappliances'}[0]{'connected'},'brand' => 'Bosch'},{'enumber' => 'WAYH2841/09','name' => 'Waschmaschine','haId' => 'BOSCH-WAYH2841-68A40E124827','type' => 'Washer','vib' => 'WAYH2841','brand' => 'Bosch','connected' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' )},{'name' => 'Trockner','enumber' => 'WTWH7591/04','haId' => 'BOSCH-WTWH7591-68A40E10F03D','vib' => 'WTWH7591','type' => 'Dryer','brand' => 'Bosch','connected' => $VAR1->{'data'}{'homeappliances'}[4]{'connected'}}]}};
2025.01.10 15:18:36 Init Watch MCC9555DWC stage init_done count 0

2025.01.10 15:18:36 Request:$VAR1 = {'callback' => sub { "DUMMY" },'uri' => '/api/homeappliances/XXXX/settings'};
2025.01.10 15:18:36 Get_settings:$VAR1 = {'data' => {'settings' => [{'value' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),'key' => 'BSH.Common.Setting.ChildLock'},{'value' => 'BSH.Common.EnumType.PowerState.On','key' => 'BSH.Common.Setting.PowerState'}]}};
2025.01.10 15:18:36 Checking key BSH.Common.Setting.ChildLock settings ChildLock Off

2025.01.10 15:18:36 Checking key BSH.Common.Setting.PowerState settings PowerState On

2025-01-10_15:18:36 MCC9555DWC BSH.Common.Setting.ChildLock: Off
2025-01-10_15:18:36 MCC9555DWC BSH.Common.Setting.PowerState: On
2025.01.10 15:18:39 Init Watch MCC9555DWC stage settings_done count 1

2025.01.10 15:18:39 Request:$VAR1 = {'callback' => sub { "DUMMY" },'uri' => '/api/homeappliances/XXXX/programs'};
2025.01.10 15:18:39 ResponseGetPrograms:$VAR1 = {'data' => {'programs' => [],'active' => {'constraints' => {'access' => 'read'}},'selected' => {'constraints' => {'access' => 'readWrite'}}}};
2025.01.10 15:18:39 ProgramList:
2025-01-10_15:18:39 MCC9555DWC lastErr: No programs found
2025.01.10 15:18:42 Init Watch MCC9555DWC stage programs count 1

2025.01.10 15:18:43 Init Watch MCC9555DWC stage programs count 2

2025.01.10 15:18:48 Init Watch MCC9555DWC stage programs count 3

2025-01-10_15:19:02 MCC9555DWC init
2025-01-10_15:19:12 MCC9555DWC init
2025.01.10 15:19:15 Request:$VAR1 = {'callback' => sub { "DUMMY" },'uri' => '/api/homeappliances'};
2025.01.10 15:19:16 responseInit:$VAR1 = {'data' => {'homeappliances' => [{'enumber' => 'HN678G4S6/87','type' => 'Oven','brand' => 'Siemens','haId' => 'SIEMENS-HN678G4S6-68A40E51CDF1','vib' => 'HN678G4S6','connected' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ),'name' => 'Backofen'},{'vib' => 'KG36NHI32','name' => "K\x{c3}\x{bc}hl-Gefrier-Kombination",'connected' => $VAR1->{'data'}{'homeappliances'}[0]{'connected'},'enumber' => 'KG36NHI32/01','type' => 'FridgeFreezer','brand' => 'Siemens','haId' => 'SIEMENS-KG36NHI32-68A40E00C725'},{'type' => 'Dishwasher','enumber' => 'SX758X06TE/29','haId' => 'SIEMENS-SX758X06TE-68A40E061F58','brand' => 'Siemens','vib' => 'SX758X06TE','connected' => $VAR1->{'data'}{'homeappliances'}[0]{'connected'},'name' => "Geschirrsp\x{c3}\x{bc}ler"},{'enumber' => 'MCC9555DWC/01','type' => 'CookProcessor','brand' => 'Bosch','haId' => '710110514461014727','vib' => 'MCC9555DWC','name' => 'Cookit','connected' => $VAR1->{'data'}{'homeappliances'}[0]{'connected'}},{'brand' => 'Bosch','haId' => 'BOSCH-WAYH2841-68A40E124827','enumber' => 'WAYH2841/09','type' => 'Washer','connected' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),'name' => 'Waschmaschine','vib' => 'WAYH2841'},{'haId' => 'BOSCH-WTWH7591-68A40E10F03D','brand' => 'Bosch','type' => 'Dryer','enumber' => 'WTWH7591/04','name' => 'Trockner','connected' => $VAR1->{'data'}{'homeappliances'}[4]{'connected'},'vib' => 'WTWH7591'}]}};
2025.01.10 15:19:19 Init Watch MCC9555DWC stage init_done count 0

2025.01.10 15:19:19 Request:$VAR1 = {'uri' => '/api/homeappliances/XXXX/settings','callback' => sub { "DUMMY" }};
2025.01.10 15:19:20 Get_settings:$VAR1 = {'data' => {'settings' => [{'value' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),'key' => 'BSH.Common.Setting.ChildLock'},{'key' => 'BSH.Common.Setting.PowerState','value' => 'BSH.Common.EnumType.PowerState.On'}]}};
2025.01.10 15:19:20 Checking key BSH.Common.Setting.ChildLock settings ChildLock Off

2025.01.10 15:19:20 Checking key BSH.Common.Setting.PowerState settings PowerState On

2025-01-10_15:19:20 MCC9555DWC BSH.Common.Setting.ChildLock: Off
2025-01-10_15:19:20 MCC9555DWC BSH.Common.Setting.PowerState: On
2025.01.10 15:19:22 Init Watch MCC9555DWC stage settings_done count 1

2025.01.10 15:19:22 Request:$VAR1 = {'callback' => sub { "DUMMY" },'uri' => '/api/homeappliances/XXXX/programs'};
2025.01.10 15:19:23 ResponseGetPrograms:$VAR1 = {'data' => {'programs' => [],'selected' => {'constraints' => {'access' => 'readWrite'}},'active' => {'constraints' => {'access' => 'read'}}}};
2025.01.10 15:19:23 ProgramList:
2025-01-10_15:19:23 MCC9555DWC lastErr: No programs found
2025.01.10 15:19:25 Init Watch MCC9555DWC stage programs count 1

2025.01.10 15:19:28 Init Watch MCC9555DWC stage programs count 2

2025.01.10 15:19:33 Init Watch MCC9555DWC stage programs count 3

2025.01.10 15:19:38 Init Watch MCC9555DWC stage programs count 4

2025.01.10 15:19:38 Request:$VAR1 = {'callback' => sub { "DUMMY" },'uri' => '/api/homeappliances/XXXX/programs'};
2025.01.10 15:19:39 ResponseGetPrograms:$VAR1 = {'data' => {'programs' => [],'selected' => {'constraints' => {'access' => 'readWrite'}},'active' => {'constraints' => {'access' => 'read'}}}};
2025.01.10 15:19:39 ProgramList:
2025-01-10_15:19:39 MCC9555DWC lastErr: No programs found
2025.01.10 15:19:42 Init Watch MCC9555DWC stage programs count 1

2025.01.10 15:19:46 Init Watch MCC9555DWC stage programs count 2

2025.01.10 15:19:47 Init Watch MCC9555DWC stage programs count 3

2025.01.10 15:19:52 Init Watch MCC9555DWC stage programs count 4

2025.01.10 15:19:52 Request:$VAR1 = {'uri' => '/api/homeappliances/XXXX/programs','callback' => sub { "DUMMY" }};
2025.01.10 15:19:53 ResponseGetPrograms:$VAR1 = {'data' => {'active' => {'constraints' => {'access' => 'read'}},'selected' => {'constraints' => {'access' => 'readWrite'}},'programs' => []}};
2025.01.10 15:19:53 ProgramList:
2025-01-10_15:19:53 MCC9555DWC lastErr: No programs found
2025.01.10 15:20:13 get MCC9555DWC Status
2025.01.10 15:20:13 Request:$VAR1 = {'uri' => '/api/homeappliances/XXXX/status','callback' => sub { "DUMMY" }};
2025.01.10 15:20:13 Get_status:$VAR1 = {'data' => {'status' => [{'value' => 'BSH.Common.EnumType.OperationState.Inactive','key' => 'BSH.Common.Status.OperationState'}]}};
2025.01.10 15:20:13 Checking key BSH.Common.Status.OperationState status OperationState Inactive

2025-01-10_15:20:13 MCC9555DWC BSH.Common.Status.OperationState: Inactive
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 10 Januar 2025, 17:00:19
Zitat von: Stonemuc am 10 Januar 2025, 16:05:05Da geht nix...
Ja leider - das Gerät weigert sich eine Liste seiner Programme zu schicken.
Mir ist aufgefallen, dass CookProzessor wohl ein recht neues Gerät ist und dafür im Modul noch gar keine Defaults hinterlegt sind. Ich hab jetzt mal aus der Liste die ich aus der App extrahiert habe welche erstellt.
In dem Fall ist aber wohl ein "shutdown restart" notwendig weil das globale Variablen sind.

Langsam werden diese Defaults zu lang. Werde mir mal anschauen wie HMCCU das macht - zap hat die ausgelagert.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 10 Januar 2025, 17:45:51
Gute Idee mit dem Auslagern.

LG

pah
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Stonemuc am 11 Januar 2025, 17:00:01
Der Cookit liefert jetzt zumindest mal was zurück und zeigt auch den Fortschritt in Prozent an...so wie es zuvor auch war...

Internals:
   DEF        hcconn 710110514461014727
   FUUID      67812a97-f33f-37e6-21b7-fc9f8b2e896e6e26
   NAME       MCC9555DWC
   NR         677
   NTFY_ORDER 50-MCC9555DWC
   STATE      Bereit (-)
   TYPE       HomeConnect
   aliasname  Cookit
   brand      Bosch
   eventCount 7
   events     StepFinished
   haId       710110514461014727
   hcconn     hcconn
   logfile    log/cookit.log
   prefix     ConsumerProducts.CookProcessor
   programs   BuildingBlock.Boiling,BuildingBlock.CookingSugarSirup,BuildingBlock.SimmeringLiquidDishes,BuildingBlock.MixingBatter,BuildingBlock.StewingSensibleDishes,BuildingBlock.Sweating,BuildingBlock.KneadingHeavyDough,BuildingBlock.DoughProving,BuildingBlock.WeighingVolume,Manual,BuildingBlock.Pureeing,BuildingBlock.WarmingMilk,BuildingBlock.HeatingManualMode1,BuildingBlock.SteamingTowerCooking,BuildingBlock.ManualCookingParameter,BuildingBlock.ServingOrKeepWarmHighViscous,BuildingBlock.WaterFastBoiling,BuildingBlock.Beating,BuildingBlock.SteamingLow,BuildingBlock.Stirring,BuildingBlock.SteamingHighReduced,BuildingBlock.SteamingHigh,BuildingBlock.WarmingUpLiquidDishes,BuildingBlock.ColdPreCleaning,BuildingBlock.KeepWarmHighViscous,BuildingBlock.LeaveToCulture,BuildingBlock.SimmeringFruitSpread,BuildingBlock.AutomaticWarmingUpViscousDishes,BuildingBlock.BraisingBigParts,BuildingBlock.Soaking,BuildingBlock.HeatingManualMode3,BuildingBlock.Caramelizing,BuildingBlock.Stewing,BuildingBlock.FryingRoastingSearing,BuildingBlock.Melting
   settings   ChildLock,PowerState
   type       CookProcessor
   version    1.12
   vib        MCC9555DWC
   READINGS:
     2025-01-11 11:58:37   BSH.Common.Event.ProgramAborted Off
     2025-01-11 11:58:37   BSH.Common.Option.ProgramProgress 0 %
     2025-01-11 11:58:37   BSH.Common.Setting.ActiveProgram
     2025-01-10 15:19:20   BSH.Common.Setting.ChildLock Off
     2025-01-11 11:58:37   BSH.Common.Setting.PowerState Standby
     2025-01-11 11:58:37   BSH.Common.Setting.SelectedProgram
     2025-01-11 11:58:37   BSH.Common.Status.OperationState Inactive
     2025-01-11 13:07:30   Setting.ChildLock Off
     2025-01-11 13:07:30   Setting.PowerState Standby
     2025-01-11 13:06:54   Status.OperationState Inactive
     2025-01-11 13:07:02   lastErr         No programs found
     2025-01-11 13:06:54   state           idle
     2025-01-11 13:06:54   state1          Bereit
     2025-01-11 13:06:54   state2          -
   data:
     poweroff   PowerOff
     retrans:
       AutomaticWarmingUpViscousDishes BuildingBlock.AutomaticWarmingUpViscousDishes
       Beating    BuildingBlock.Beating
       Boiling    BuildingBlock.Boiling
       BraisingBigParts BuildingBlock.BraisingBigParts
       Caramelizing BuildingBlock.Caramelizing
       ColdPreCleaning BuildingBlock.ColdPreCleaning
       CookingSugarSirup BuildingBlock.CookingSugarSirup
       DoughProving BuildingBlock.DoughProving
       FryingRoastingSearing BuildingBlock.FryingRoastingSearing
       HeatingManualMode1 BuildingBlock.HeatingManualMode1
       HeatingManualMode3 BuildingBlock.HeatingManualMode3
       KeepWarmHighViscous BuildingBlock.KeepWarmHighViscous
       KneadingHeavyDough BuildingBlock.KneadingHeavyDough
       LeaveToCulture BuildingBlock.LeaveToCulture
       Manual     Manual
       ManualCookingParameter BuildingBlock.ManualCookingParameter
       Melting    BuildingBlock.Melting
       MixingBatter BuildingBlock.MixingBatter
       Pureeing   BuildingBlock.Pureeing
       ServingOrKeepWarmHighViscous BuildingBlock.ServingOrKeepWarmHighViscous
       SimmeringFruitSpread BuildingBlock.SimmeringFruitSpread
       SimmeringLiquidDishes BuildingBlock.SimmeringLiquidDishes
       Soaking    BuildingBlock.Soaking
       SteamingHigh BuildingBlock.SteamingHigh
       SteamingHighReduced BuildingBlock.SteamingHighReduced
       SteamingLow BuildingBlock.SteamingLow
       SteamingTowerCooking BuildingBlock.SteamingTowerCooking
       Stewing    BuildingBlock.Stewing
       StewingSensibleDishes BuildingBlock.StewingSensibleDishes
       Stirring   BuildingBlock.Stirring
       Sweating   BuildingBlock.Sweating
       WarmingMilk BuildingBlock.WarmingMilk
       WarmingUpLiquidDishes BuildingBlock.WarmingUpLiquidDishes
       WaterFastBoiling BuildingBlock.WaterFastBoiling
       WeighingVolume BuildingBlock.WeighingVolume
     settings:
       ChildLock:
         name       BSH.Common.Setting.ChildLock
         value      Off
         values     On,Off
       PowerState:
         name       BSH.Common.Setting.PowerState
         type       BSH.Common.EnumType.PowerState
         value      Standby
     status:
       OperationState:
         name       BSH.Common.Status.OperationState
         type       BSH.Common.EnumType.OperationState
         value      Inactive
     trans:
       BuildingBlock.AutomaticWarmingUpViscousDishes AutomaticWarmingUpViscousDishes
       BuildingBlock.Beating Beating
       BuildingBlock.Boiling Boiling
       BuildingBlock.BraisingBigParts BraisingBigParts
       BuildingBlock.Caramelizing Caramelizing
       BuildingBlock.ColdPreCleaning ColdPreCleaning
       BuildingBlock.CookingSugarSirup CookingSugarSirup
       BuildingBlock.DoughProving DoughProving
       BuildingBlock.FryingRoastingSearing FryingRoastingSearing
       BuildingBlock.HeatingManualMode1 HeatingManualMode1
       BuildingBlock.HeatingManualMode3 HeatingManualMode3
       BuildingBlock.KeepWarmHighViscous KeepWarmHighViscous
       BuildingBlock.KneadingHeavyDough KneadingHeavyDough
       BuildingBlock.LeaveToCulture LeaveToCulture
       BuildingBlock.ManualCookingParameter ManualCookingParameter
       BuildingBlock.Melting Melting
       BuildingBlock.MixingBatter MixingBatter
       BuildingBlock.Pureeing Pureeing
       BuildingBlock.ServingOrKeepWarmHighViscous ServingOrKeepWarmHighViscous
       BuildingBlock.SimmeringFruitSpread SimmeringFruitSpread
       BuildingBlock.SimmeringLiquidDishes SimmeringLiquidDishes
       BuildingBlock.Soaking Soaking
       BuildingBlock.SteamingHigh SteamingHigh
       BuildingBlock.SteamingHighReduced SteamingHighReduced
       BuildingBlock.SteamingLow SteamingLow
       BuildingBlock.SteamingTowerCooking SteamingTowerCooking
       BuildingBlock.Stewing Stewing
       BuildingBlock.StewingSensibleDishes StewingSensibleDishes
       BuildingBlock.Stirring Stirring
       BuildingBlock.Sweating Sweating
       BuildingBlock.WarmingMilk WarmingMilk
       BuildingBlock.WarmingUpLiquidDishes WarmingUpLiquidDishes
       BuildingBlock.WaterFastBoiling WaterFastBoiling
       BuildingBlock.WeighingVolume WeighingVolume
       Manual     Manual
     value:
   helper:
     eventChannelTimeout 1736611080.69315
     init       settings_done
     init_count 4
     key       
     retrycounter 0
     total_count 5
Attributes:
   alias      Cookit
   icon       scene_cooking
   logfile    log/cookit.log
   room       Home Connect
   stateFormat state1 (state2)

Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: DerTom71 am 11 Januar 2025, 20:24:53
Bei 2 meiner Geräte (Backoffen und Geschirrspüler) wird sein 24h "HomeAppliance is offline" angezeigt.
Die 2 anderen Geräte (Kühkschrank und Herd) funktionieren problemlos. In der HomeConnect-App sind alle 4 Geräte online und steuerbar.
Liegt das am neuen Modul oder hat der HomeConnect-Server gerade ein Problem?
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 11 Januar 2025, 20:30:15
Zitat von: DerTom71 am 11 Januar 2025, 20:24:53Bei 2 meiner Geräte (Backoffen und Geschirrspüler) wird sein 24h "HomeAppliance is offline" angezeigt.
Kannst du dazu ein logfile eines "set xxx init" protokollieren und dann ein list machen?
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: DerTom71 am 12 Januar 2025, 00:12:48
In der Anlage die logs für den Geschirrspüler.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: DerTom71 am 12 Januar 2025, 18:18:30
Alle Geräte wieder online. (Ohne etwas gemacht zu haben.)
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 12 Januar 2025, 19:38:23
Zitat von: DerTom71 am 12 Januar 2025, 18:18:30Alle Geräte wieder online. (Ohne etwas gemacht zu haben.)
Gut. Anhand des Logsfiles kann ich recht eindeutig sagen, das das Problem zwischen Gerät und Home Connect Server bestand, denn die zwei Geräte stehen als "connected: false" bereits in der Geräteübersicht. Die Kommunikation von FHEM mit dem Server klappt einwandfrei. Haben die vielleicht ein schlechtes WLAN und gehen manchmal offline?
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: DerTom71 am 13 Januar 2025, 07:53:38
Heute morgen sind die 2 Geräte wieder auf nicht connect. Das Protokoll vom Accesss-Point sagt die Geräte sind alle online.
Die HomeConnect-App behauptet die Geräte sind da, das Geräte sendet aber keine Daten an den Server. ???
Liegt also am Gerät und nicht am Modul.

2025.01.13 07:36:40.012 4: hcconn: response {
  "data": {
    "homeappliances": [
      {
        "brand": "Bosch",
        "connected": false,
        "enumber": "SBT8YC801E/38",
        "haId": "013120536249000332",
        "name": "Geschirrspüler",
        "type": "Dishwasher",
        "vib": "SBT8YC801E"
      },
      {
        "brand": "Bosch",
        "connected": true,
        "enumber": "PXX895D66E/53",
        "haId": "BOSCH-PXX895D66E-68A40EB30144",
        "name": "Kochfeld",
        "type": "Hob",
        "vib": "PXX895D66E"
      },
      {
        "brand": "Bosch",
        "connected": false,
        "enumber": "HBG976MB1/01",
        "haId": "382110532686011955-001",
        "name": "Backofen",
        "type": "Oven",
        "vib": "HBG976MB1"
      },
      {
        "brand": "Bosch",
        "connected": true,
        "enumber": "KIF81HOD0/02",
        "haId": "BOSCH-KIF81HOD0-68A40EBC6EFD",
        "name": "Kühlschrank",
        "type": "Refrigerator",
        "vib": "KIF81HOD0"
      }
    ]
  }
}
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 13 Januar 2025, 08:30:29
Was sagt denn die Home Connect App? Da wäre ein gute Quercheck.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 13 Januar 2025, 08:35:12
Bei mir sind alle 3 Geräte online und reagieren wie immer auf Statusabfrage.
Daher sollten die HC-Server Online sein.

Ich habe die Geräte im 5 GHz Netz.
2.4 ist bei mir durch BLE und Zigbee hoch ausgelastet.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: DerTom71 am 13 Januar 2025, 08:44:41
ZitatWas sagt denn die Home Connect App? Da wäre ein gute Quercheck.
Siehe oben. Die 2 Geräte wo nicht gehen sind im 5Ghz. (Die Geräte im 2.4Ghz gehen.)
Ich habe beide Geräte kurz vom Strom getrennt. Sofort waren beide Geräte wieder online.
Sorry, liegt also bei mir daheim und nicht am Modul.


Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 13 Januar 2025, 10:47:32
Nur mal als Info für Interessierte:
Hier die Liste aller Keys die ich per reverse engineering aus der Android App extrahiert habe.
Man sieht da ist ein Haufen Zeug drin, das wir hier über die "Developer Integration" nicht sehen.
Ich stehe schon im Kontakt mit dem Support um rauszufinden ob man hier etwas verbessern kann. Positiv zu erwähnen, das ich tatsächlich eine Antwort bekommen habe. Allerdings soweit wenig hilfreich.

HC-keys.txt
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 13 Januar 2025, 11:30:44
Zitat von: Adimarantis am 13 Januar 2025, 10:47:32Positiv zu erwähnen, das ich tatsächlich eine Antwort bekommen habe. Allerdings soweit wenig hilfreich.
Danke für das Engagement.

Die Frage ist, wie man diesen Support dazu bewegen kann, wirklich "Support" zu leisten. Ich bin nach wie vor gesundheitlich ziemlich angeschlagen, vielleicht fehlt mir deshalb noch eine kreative Idee daür.

LG

pah

EDit:
2025.01.13 14:27:42 1: [HomeConnect_ParseKeys] WAV28G43: JSON error requesting status: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at /opt/fhem/FHEM/48_HomeConnect.pm line 1818.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 13 Januar 2025, 17:43:02
Zitat von: Prof. Dr. Peter Henning am 13 Januar 2025, 11:30:442025.01.13 14:27:42 1: [HomeConnect_ParseKeys] WAV28G43: JSON error requesting status: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at /opt/fhem/FHEM/48_HomeConnect.pm line 1818.
Das kommt meistens bei einem Timeout im Verbindungaufbau (sollte in der Zeile drüber stehen).
Deswegen habe ich für den Startup eine Retry-Logik eingebaut. Seitens Fehlermeldung vielleicht verbesserungswürdig. Oder man könnte auch mal mit längerem Timeout testen. Den hat der Original Author hardcoded auf 5s gesetzt.
Passiert bei mir eben üblicherweise nur beim Startup. Vermutung: HMCCU nimmt FHEM so in Beschlag dass es zu einer temporären Überlastung kommt.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 13 Januar 2025, 18:23:52
So, nachdem die Änderung bei mir ein paar Tage gelaufen ist, checke ich jetzt die Abtrennung der ganzen Defaults und Konfigurationen in die Datei HomeConnectConf.pm ein.
Es sind jetzt also 3 Dateien zu aktualisieren:
UPD 2025-01-13_00:00:00 23649 FHEM/48_HomeConnectConnection.pm
UPD 2025-01-13_00:00:00 101177 FHEM/48_HomeConnect.pm
UPD 2025-01-13_00:00:00 16424 FHEM/HomeConnectConf.pm
Dadurch wird definitiv ein "shutdown restart" benötigt!

Außerdem kann jetzt in HomeConnectConnection ein timeout Attribut definiert werden, falls einige (wie ich) öfter timeout Fehler bei Startup haben, kann das höher gesetzt werden. Ich scheine mit 10 Sekunden seltener Probleme zu haben, wobei dann ja noch Retries gemacht werden und es am Ende trotzdem funktionieren sollte.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 13 Januar 2025, 18:39:00
Oh, jetzt sind die Geräte weg.
Jede Menge FM im Log.

2025.01.13 18:34:59 1: reload: Error:Modul 48_HomeConnect deactivated:
 Can't locate HomeConnectConf.pm in @INC (you may need to install the HomeConnectConf module) (@INC contains: ./lib ./FHEM . /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.28.1 /usr/local/share/perl/5.28.1 /usr/lib/arm-linux-gnueabihf/perl5/5.28 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.28 /usr/share/perl/5.28 /usr/local/lib/site_perl /usr/lib/arm-linux-gnueabihf/perl-base ./FHEM/lib) at ./FHEM/48_HomeConnect.pm line 44.
BEGIN failed--compilation aborted at ./FHEM/48_HomeConnect.pm line 44.

2025.01.13 18:34:59 0: Can't locate HomeConnectConf.pm in @INC (you may need to install the HomeConnectConf module) (@INC contains: ./lib ./FHEM . /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.28.1 /usr/local/share/perl/5.28.1 /usr/lib/arm-linux-gnueabihf/perl5/5.28 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.28 /usr/share/perl/5.28 /usr/local/lib/site_perl /usr/lib/arm-linux-gnueabihf/perl-base ./FHEM/lib) at ./FHEM/48_HomeConnect.pm line 44.
BEGIN failed--compilation aborted at ./FHEM/48_HomeConnect.pm line 44.

2025.01.13 18:34:59 3: define EX977NVV6E HomeConnect hcconn SIEMENS-EX977NVV6E-68A40EBB7D31 : Cannot load module HomeConnect
2025.01.13 18:35:01 1: reload: Error:Modul 48_HomeConnect deactivated:
 Can't locate HomeConnectConf.pm in @INC (you may need to install the HomeConnectConf module) (@INC contains: ./lib ./FHEM . /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.28.1 /usr/local/share/perl/5.28.1 /usr/lib/arm-linux-gnueabihf/perl5/5.28 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.28 /usr/share/perl/5.28 /usr/local/lib/site_perl /usr/lib/arm-linux-gnueabihf/perl-base ./FHEM/lib) at ./FHEM/48_HomeConnect.pm line 44.
BEGIN failed--compilation aborted at ./FHEM/48_HomeConnect.pm line 44.

2025.01.13 18:35:01 0: Can't locate HomeConnectConf.pm in @INC (you may need to install the HomeConnectConf module) (@INC contains: ./lib ./FHEM . /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.28.1 /usr/local/share/perl/5.28.1 /usr/lib/arm-linux-gnueabihf/perl5/5.28 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.28 /usr/share/perl/5.28 /usr/local/lib/site_perl /usr/lib/arm-linux-gnueabihf/perl-base ./FHEM/lib) at ./FHEM/48_HomeConnect.pm line 44.
BEGIN failed--compilation aborted at ./FHEM/48_HomeConnect.pm line 44.

2025.01.13 18:35:01 3: define HB772G1B1 HomeConnect hcconn 384090390173005938-001 : Cannot load module HomeConnect
2025.01.13 18:35:03 1: reload: Error:Modul 48_HomeConnect deactivated:
 Can't locate HomeConnectConf.pm in @INC (you may need to install the HomeConnectConf module) (@INC contains: ./lib ./FHEM . /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.28.1 /usr/local/share/perl/5.28.1 /usr/lib/arm-linux-gnueabihf/perl5/5.28 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.28 /usr/share/perl/5.28 /usr/local/lib/site_perl /usr/lib/arm-linux-gnueabihf/perl-base ./FHEM/lib) at ./FHEM/48_HomeConnect.pm line 44.
BEGIN failed--compilation aborted at ./FHEM/48_HomeConnect.pm line 44.

2025.01.13 18:35:03 0: Can't locate HomeConnectConf.pm in @INC (you may need to install the HomeConnectConf module) (@INC contains: ./lib ./FHEM . /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.28.1 /usr/local/share/perl/5.28.1 /usr/lib/arm-linux-gnueabihf/perl5/5.28 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.28 /usr/share/perl/5.28 /usr/local/lib/site_perl /usr/lib/arm-linux-gnueabihf/perl-base ./FHEM/lib) at ./FHEM/48_HomeConnect.pm line 44.
BEGIN failed--compilation aborted at ./FHEM/48_HomeConnect.pm line 44.

2025.01.13 18:35:03 3: define SN63E800BE HomeConnect hcconn 012010386957000905 : Cannot load module HomeConnect

Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 13 Januar 2025, 18:40:24
Neuer Update:
2025.01.13 18:39:33 1: homeconnect
2025.01.13 18:39:33 1: UPD FHEM/48_HomeConnectConnection.pm
2025.01.13 18:39:33 1: UPD FHEM/48_HomeConnect.pm
2025.01.13 18:39:33 1: UPD FHEM/HomeConnectConf.pm
2025.01.13 18:39:33 1: Got 14 bytes for FHEM/HomeConnectConf.pm, expected 16424
2025.01.13 18:39:33 1: aborting.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 13 Januar 2025, 19:31:08
git Bedienerfehler.
Probiers nochmal, das neue File hat irgendwie gefehlt
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 13 Januar 2025, 19:38:05
Geräte sind wieder da, prima!
Später mehr.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 13 Januar 2025, 21:07:53
Läuft alles wie bislang.
Der Backofen tut auch, was er so kann  ;D
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Shadow3561 am 14 Januar 2025, 17:25:52
Moin,
ich habe auch mal die neueste Version getestet.
Mir ist aufgefallen, dass die Internals durcheinander geraten.
Mein Waschtrockner hat die "programs" vom Kochfeld bekommen. Habe Fhem neu gestartet und das Kochfeld bekommt die "programs" vom Geschirrspüler. Beim nächsten Neustart wieder etwas anderes. Der Waschtrockner bekommt die "programs" vom Geschirrspüler.
Anbei die logs.
Mit freundlichen Grüßen

Edit:
Die logs zeigen teilweise die hashID in Klartext. Dies habe ich mit XXYYZZ ersetzt.

Edit2:
Der GS läuft gerade. Es fehlen die einige Readings im Gegensatz zur Vorversion.
Übersetzungen weden nicht angezeigt. Z.B. Auto2 statt Auto45-65

Anbei ein list
Internals:
   DEF        hcconn_new XXXX
   FUUID      65ed8f3f-f33f-e62d-a30d-53889986d4fc652d
   NAME       SMV8YCX03E_new
   NR         68
   NTFY_ORDER 50-SMV8YCX03E_new
   STATE       (2:34)
   TYPE       HomeConnect
   aliasname  Geschirrspüler
   brand      Bosch
   eventCount 34
   events     SaltNearlyEmpty,RinseAidNearlyEmpty
   haId       XXXX
   hcconn     hcconn_new
   logfile    log/HC/Dishwasher
   options    ExtraDry,HygienePlus,IntensivZone,VarioSpeedPlus
   prefix     Dishcare.Dishwasher
   programs   Intensiv70,Auto2,Eco50,Glas40,PreRinse,NightWash,Kurz60,MachineCare,Quick45,MixedLoad
   settings   PowerState
   type       Dishwasher
   version    1.13
   vib        SMV8YCX03E
   READINGS:
     2025-01-14 18:47:19   Option.EnergyForecast 70 %
     2025-01-14 18:47:19   Option.ExtraDry Off
     2025-01-14 18:48:25   Option.FinishAtHHMM 21:22
     2025-01-14 18:48:25   Option.FinishInRelativeHHMM 2:34
     2025-01-14 18:47:19   Option.HygienePlus Off
     2025-01-14 18:47:19   Option.IntensivZone Off
     2025-01-14 18:48:25   Option.ProgramProgress 1 %
     2025-01-14 18:48:25   Option.RemainingProgramTime 9240 seconds
     2025-01-14 18:48:25   Option.RemainingProgramTimeHHMM 2:34
     2025-01-14 18:47:19   Option.RemainingProgramTimeIsEstimated On
     2025-01-14 18:47:19   Option.SilenceOnDemand Off
     2025-01-14 18:47:19   Option.StartInRelative 0 seconds
     2025-01-14 18:47:19   Option.VarioSpeedPlus Off
     2025-01-14 18:47:19   Option.WaterForecast 49 %
     2025-01-14 18:47:19   Setting.ActiveProgram
     2025-01-14 18:47:19   Setting.PowerState On
     2025-01-14 18:47:19   Setting.SelectedProgram Auto2
     2025-01-14 18:47:24   Status.DoorState Closed
     2025-01-14 18:47:24   Status.OperationState Run
     2025-01-14 17:57:00   Status.RemoteControlActive On
     2025-01-14 17:57:00   Status.RemoteControlStartAllowed Off
     2025-01-14 18:48:25   state           run
     2025-01-14 18:48:25   state1         
     2025-01-14 18:48:25   state2          2:34
   data:
     poweroff   PowerOff
     options:
       ExtraDry:
         default    Off
         name       Dishcare.Dishwasher.Option.ExtraDry
         type       Boolean
         update     On
         value      Off
         values     On,Off
       HygienePlus:
         default    Off
         name       Dishcare.Dishwasher.Option.HygienePlus
         type       Boolean
         update     On
         value      Off
         values     On,Off
       IntensivZone:
         default    Off
         name       Dishcare.Dishwasher.Option.IntensivZone
         type       Boolean
         update     On
         value      Off
         values     On,Off
       StartInRelative:
         max        86400
         min        0
         name       BSH.Common.Option.StartInRelative
         type       Int
         unit       seconds
         value      0
       VarioSpeedPlus:
         default    Off
         name       Dishcare.Dishwasher.Option.VarioSpeedPlus
         type       Boolean
         update     On
         value      Off
         values     On,Off
     retrans:
       Auto45-65  Auto2
       BrilliantShine GlassShine
       Eco50      Eco50
       Favorit    Favorite.001
       Intensiv70 Intensiv70
       LearningDishwasher LearningDishwasher
       Leise      NightWash
       Maschinenpflege MachineCare
       QuickD     QuickD
       Speed45    Quick45
       Speed60    Kurz60
       Vorspülen PreRinse
     settings:
       PowerState:
         name       BSH.Common.Setting.PowerState
         type       BSH.Common.EnumType.PowerState
         value      Off
         values     On,Off
     status:
       DoorState:
         name       BSH.Common.Status.DoorState
         type       BSH.Common.EnumType.DoorState
         value      Closed
       OperationState:
         name       BSH.Common.Status.OperationState
         type       BSH.Common.EnumType.OperationState
         value      Ready
       RemoteControlActive:
         name       BSH.Common.Status.RemoteControlActive
         value      On
         values     On,Off
       RemoteControlStartAllowed:
         name       BSH.Common.Status.RemoteControlStartAllowed
         value      Off
         values     On,Off
     trans:
       Auto2      Auto45-65
       Eco50      Eco50
       Favorite.001 Favorit
       GlassShine BrilliantShine
       Intensiv70 Intensiv70
       Kurz60     Speed60
       LearningDishwasher LearningDishwasher
       MachineCare Maschinenpflege
       NightWash  Leise
       PreRinse   Vorspülen
       Quick45    Speed45
       QuickD     QuickD
     value:
       ExtraDry   Off
       HygienePlus Off
       IntensivZone Off
       VarioSpeedPlus Off
   helper:
     eventChannelTimeout 1736876960.86551
     init       status_done
     init_count 2
     key        Dishcare.Dishwasher.Program.Auto2
     retrycounter 0
     total_count 4
     updatePO   0
Attributes:
   alias      Geschirrspüler
   extraInfo  1
   icon       scene_dishwasher
   logfile    log/HC/Dishwasher
   room       Bosch
   stateFormat state1 (state2)
   verbose    0
   webCmd     SelectedProgram:startProgram:stopProgram:pauseProgram
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 14 Januar 2025, 19:02:35
Das ist in der Tat sehr seltsam. Bei meinen 3 Geräten gibt es keine Vertauschungen.
Kannst du mal schauen ob bei einem "list -r" die falschen Programme bereits im reading ".programs" stehen?
Dann bitte das Reading löschen (und dann "save") - vielleicht steht von einer älteren/fehlerhaften Modulversion noch Mist drin.
Ich habe eine Sache gefunden, dass die Defaults nach einem "reload" nicht gefunden werden - dann sind sie aber leer.
Der Filter für die haId wurde nochmal verbessert.

Es passiert bei dir zumindest wenn die Geräte keine Programme liefern. Möglicherweise liegt das auch am accessScope - ich hab da seltsame Effekte. z.B. liefert meine Waschmaschine mit einfach "Washer" kein Event über das "ActiveProgram" - nachdem ich jetzt noch "Washer-Control" und "Washer-Monitor" hinzugefügt habe, geht es.
Also eventuell mal den accessScope ändern und schauen ob das einen Unterschied macht.
Logisch ist das alles nicht....

Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Shadow3561 am 14 Januar 2025, 19:32:42
ZitatDas ist in der Tat sehr seltsam. Bei meinen 3 Geräten gibt es keine Vertauschungen.
Kannst du mal schauen ob bei einem "list -r" die falschen Programme bereits im reading ".programs" stehen?

dieses Reading gibt es nicht beim Waschtrockner und Kochfeld. Beim GS ist dieses richtig gefüllt.

ZitatEs passiert bei dir zumindest wenn die Geräte keine Programme liefern. Möglicherweise liegt das auch am accessScope - ich hab da seltsame Effekte. z.B. liefert meine Waschmaschine mit einfach "Washer" kein Event über das "ActiveProgram" - nachdem ich jetzt noch "Washer-Control" und "Washer-Monitor" hinzugefügt habe, geht es.

Bis heute Nachmittag hat es zumindest ohne funktioniert.
Nach hinzufügen der anderen accessScope immer noch Gewusel in den "programs"

Nach download von Github und shutdown restart von FHEM sieht es jetzt gut aus. Allerdings kann ich die Readings des GS nicht prüfen da er gerade läuft. Dies Bezüglich melde ich mich morgen Abend aber sonst noch einmal.

Danke für den schnellen Fix.
Mit freundlichen Grüßen
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Stonemuc am 14 Januar 2025, 23:44:23
Bei mir funktioniert das mit der Aktualisierung der Temperatur vom Backofen irgendwie auch nicht richtig....da stehen meist unrealistische Temperaturen wenn der Ofen aus ist
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 15 Januar 2025, 08:08:59
Dass die Backöfen ihre Temperatur nicht zuverlässig senden scheint ein allgemeines Problem zu ein.
Du könntest auch nochmal mit dem accessScope experimentieren, aber da verspreche ich mir nicht viel von.

Dass gewisse Readings irritieren, wenn das Gerät eigentlich ausgeschaltet ist, ist mir auch schon aufgefallen. Sieht man zwar eigentlich am Zeitstempel, aber wer schaut da schon genau hin.

Daher setze ich inzwischen z.B. "ActiveProgram" zurück wenn ein "PowerState=Off" kommt.
Das könnte man noch für weitere Readings überlegen - Vorschläge? Könnte man dann eine gerätespezifische Liste in der Konfiguration hinterlegen.
Allerdings kriege ich nicht immer zuverlässig mit, wenn das Gerät ausgeschaltet wird, bzw. manche Geräte senden es gar nicht (meine Waschmaschine ist so ein Kandidat - die schaltet sich komplett aus und reagiert dann auch nicht auf "PowerState=On")
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 15 Januar 2025, 12:38:33
Ofen: Ich habe mir mal den Spaß gemacht und eines der eingebauten Programme verwendet.

Ergibt beim Nudelauflauf:

ZitatSetting.ActiveProgram Dish.Automatic.Conv.PastaBake
Allerdings kann ich das natürlich nicht per FHEM wählen. Bei diesen Programmen muss man ein Gewicht eingeben, ich habe noch nicht gesehen, dass ich das mit "set ... weight" machen kann - dafür müsste ich das Programm ja erstmal auswählen können.

Temperaturanzeige ist ok, was leider nirgendwo auftaucht ist die Restdauer. In der App wird das wunderbar angezeigt.

LG

pah


Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 15 Januar 2025, 13:23:30
Bei mir läuft auch gerade Nudelauflauf.
Status:
Heißluftgrill (0:12/20 °C)

Bis auf die Ist Temperatur alles OK.
Die Öfen scheinen untereinander sehr verschiedene Daten zu liefern.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 15 Januar 2025, 14:13:14
Solange wir von BSH keine Hilfe bekommen, die Inhalte der API zu verbessern, sind die Maßstäbe für die Weiterentwicklung des Moduls:
1. Was die APP nicht kann wird FHEM auch nicht können.
2. Wenn die Info nicht im Logfile zu finden ist dann
   a) Stimmt entweder der accessScope nicht -> ein paar Variationen probieren
   b) Liefert die API die Infos einfach nicht

Das Logfile protokolliert alle Infos von API Aufrufen (GetPrograms, GetProgramOption (und CheckProgram implizit), GetStatus) sowie Events welche die API freiwillig schickt. Nur wenn dort die entsprechenden Infos zu finden sind, kann das Modul entsprechend erweitert werden darauf zu reagieren.

Ein paar Dinge stoßen auch an praktische Grenzen. Zum Beispiel schickt meine Waschmaschine beim CheckProgram die aktuelle ProcessPhase (also ob die Maschine z.B. gerade schleudert). Aber eben nicht freiwillig. Man könnte jetzt bei jedem Event, dass die Fortschritt (ProgramProgress) schickt immer so eine Abfrage machen. Das wäre aber dann aber 1x pro Minute - manche Programme laufen schon mal 2h - dann am "Waschtag" vielleicht mehrmals am Tag und man hat vielleicht noch mehrere Geräte -> schon wird es knapp mit dem 1000 API Calls / 24h Rate Limit.
Ist also wahrscheinlich keine Lösung. Sowas muss einfach als Event kommen.

Also gerne weiter Verbesserungvorschläge, aber immer mit Logfile und "list" um zu untermauern, dass diese auch realisierbar sind.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 15 Januar 2025, 15:14:44
Also gerne weiter Verbesserungvorschläge, aber immer mit Logfile und "list" um zu untermauern, dass diese auch realisierbar sind.

--> Wenn mir was auffällt, melde ich mich!
Auf jeden Fall eine ausgezeichnete Weiterentwicklung!
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Shadow3561 am 15 Januar 2025, 16:48:13
Moin,
kurze Rückmeldung zu meinem GS.
Dieser hat eine Favorit-Taste. Diese kann man mit heruntergeladenen Programmen belegen. Bei mir ist Vorfühlen hinterlegt, da dieses als Programmtaste am Gerät nicht existiert.
Leider lässt sich der GS nicht mehr mit FHEM starten wenn das Programm "Favorit" eingestellt ist.
Bekomme folgende Fehlermeldung
[HomeConnect_StartProgram] SMV8YCX03E_new: Cannot start, unknown program Favorite.001, choose one of Intensiv70,Auto2,Eco50,Glas40,PreRinse,NightWash,Kurz60,MachineCare,Quick45,MixedLoad

Hier das list
Internals:
   DEF        hcconn_new XXX
   FUUID      65ed8f3f-f33f-e62d-a30d-53889986d4fc652d
   NAME       SMV8YCX03E_new
   NR         68
   NTFY_ORDER 50-SMV8YCX03E_new
   STATE      Autostart (-)
   TYPE       HomeConnect
   aliasname  Geschirrspüler
   brand      Bosch
   eventCount 232
   events     SaltNearlyEmpty,RinseAidNearlyEmpty
   haId       XXX
   hcconn     hcconn_new
   logfile    log/HC/Dishwasher
   options   
   prefix     Dishcare.Dishwasher
   programs   Intensiv70,Auto2,Eco50,Glas40,PreRinse,NightWash,Kurz60,MachineCare,Quick45,MixedLoad
   settings   PowerState
   type       Dishwasher
   version    1.13
   vib        SMV8YCX03E
   OLDREADINGS:
   READINGS:
     2025-01-15 16:32:56   Option.BaseProgram PreRinse
     2025-01-15 16:32:56   Option.EnergyForecast 2 %
     2025-01-15 16:32:56   Option.FinishAtHHMM 16:48
     2025-01-15 16:32:56   Option.FinishInRelativeHHMM 0:16
     2025-01-15 16:32:56   Option.ProgramName Favorit
     2025-01-15 16:32:56   Option.RemainingProgramTime 960 seconds
     2025-01-15 16:32:56   Option.RemainingProgramTimeHHMM 0:16
     2025-01-15 16:32:56   Option.RemainingProgramTimeIsEstimated On
     2025-01-15 16:32:56   Option.SilenceOnDemand Off
     2025-01-15 16:32:56   Option.StartInRelative 0 seconds
     2025-01-15 16:32:56   Option.WaterForecast 18 %
     2025-01-15 16:32:51   Setting.PowerState On
     2025-01-15 16:32:56   Setting.SelectedProgram Favorite.001
     2025-01-15 16:35:53   Status.DoorState Closed
     2025-01-15 16:35:53   Status.OperationState Ready
     2025-01-15 16:35:53   Status.RemoteControlActive On
     2025-01-15 16:35:53   Status.RemoteControlStartAllowed On
     2025-01-15 16:32:56   lastErr         Program not supported
     2025-01-15 16:35:53   state           auto
     2025-01-15 16:35:53   state1          Autostart
     2025-01-15 16:35:53   state2          -
   data:
     poweroff   PowerOff
     options:
       EnergyForecast:
         name       BSH.Common.Option.EnergyForecast
         unit       %
         value      2
       ExtraDry:
         default    Off
         name       Dishcare.Dishwasher.Option.ExtraDry
         type       Boolean
         update     On
         value      Off
         values     On,Off
       HygienePlus:
         default    Off
         name       Dishcare.Dishwasher.Option.HygienePlus
         type       Boolean
         update     On
         value      Off
         values     On,Off
       IntensivZone:
         default    Off
         name       Dishcare.Dishwasher.Option.IntensivZone
         type       Boolean
         update     On
         value      Off
         values     On,Off
       ProgramProgress:
         name       BSH.Common.Option.ProgramProgress
         unit       %
         value      33
       RemainingProgramTime:
         name       BSH.Common.Option.RemainingProgramTime
         unit       seconds
         value      960
       RemainingProgramTimeIsEstimated:
         name       BSH.Common.Option.RemainingProgramTimeIsEstimated
         value      On
         values     On,Off
       SilenceOnDemand:
         name       Dishcare.Dishwasher.Option.SilenceOnDemand
         value      Off
         values     On,Off
       StartInRelative:
         max        86400
         min        0
         name       BSH.Common.Option.StartInRelative
         type       Int
         unit       seconds
         value      0
       VarioSpeedPlus:
         default    Off
         name       Dishcare.Dishwasher.Option.VarioSpeedPlus
         type       Boolean
         update     On
         value      Off
         values     On,Off
       WaterForecast:
         name       BSH.Common.Option.WaterForecast
         unit       %
         value      18
     retrans:
       Auto45-65  Auto2
       BrilliantShine GlassShine
       Eco50      Eco50
       Favorit    Favorite.001
       Intensiv70 Intensiv70
       LearningDishwasher LearningDishwasher
       Leise      NightWash
       Maschinenpflege MachineCare
       QuickD     QuickD
       Speed45    Quick45
       Speed60    Kurz60
       Vorspülen PreRinse
     settings:
       PowerState:
         name       BSH.Common.Setting.PowerState
         type       BSH.Common.EnumType.PowerState
         value      Off
         values     On,Off
     status:
       DoorState:
         name       BSH.Common.Status.DoorState
         type       BSH.Common.EnumType.DoorState
         value      Closed
       OperationState:
         name       BSH.Common.Status.OperationState
         type       BSH.Common.EnumType.OperationState
         value      Ready
       RemoteControlActive:
         name       BSH.Common.Status.RemoteControlActive
         value      On
         values     On,Off
       RemoteControlStartAllowed:
         name       BSH.Common.Status.RemoteControlStartAllowed
         value      On
         values     On,Off
     trans:
       Auto2      Auto45-65
       Eco50      Eco50
       Favorite.001 Favorit
       GlassShine BrilliantShine
       Intensiv70 Intensiv70
       Kurz60     Speed60
       LearningDishwasher LearningDishwasher
       MachineCare Maschinenpflege
       NightWash  Leise
       PreRinse   Vorspülen
       Quick45    Speed45
       QuickD     QuickD
     value:
       ExtraDry   Off
       HygienePlus Off
       IntensivZone Off
       VarioSpeedPlus Off
   helper:
     autostart  0
     eventChannelTimeout 1736955698.68719
     init       status_done
     init_count 2
     key       
     retrycounter 0
     total_count 4
     updatePO   0
Attributes:
   alias      Geschirrspüler
   excludeSettings AmbientLightCustomColor
   extraInfo  1
   icon       scene_dishwasher
   logfile    log/HC/Dishwasher
   room       Bosch
   stateFormat state1 (state2)
   verbose    0
   webCmd     SelectedProgram:startProgram:stopProgram:pauseProgram

Anbei die LOG-Datei.

Mit freundlichen Grüßen
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 15 Januar 2025, 17:14:51
Nachtrag zum Ofen:

bei dem genannten Nudelauflauf-Programm ergibt ein get ProtgramOptions

Weight,ProgramProgress,ElapsedProgramTime,RemainingProgramTime,CavitySelector

m.E. sollte man dazu auch readings sehen.

Ich würde das ja gerne durch ein Log belegen - allerdings ist irgendwann in den vergangenen Tagen das Logging-Feature etwas ins Nirwana gelaufen. Die Kiste behauptet zwar, etwas zu loggen - die Dateien sind allerdings nicht auffindbar. Ich habe die 4 FileLog-Devices jetzt mal gelöscht.

LG

pah
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 15 Januar 2025, 21:03:57
Zitat von: Shadow3561 am 15 Januar 2025, 16:48:13Leider lässt sich der GS nicht mehr mit FHEM starten wenn das Programm "Favorit" eingestellt ist.
Der Favorit scheint bei GetPrograms mitzukommen, wenn er "selected" ist. Ich teste gerade eine Version die aus dem GetPrograms "selected" und "active" extrahiert, was insbesondere das restart-Szenario verbessern sollte (also FHEM besser wieder mit der Realität synchronisiert).

Leider dürfte das nichts helfen, wenn der Favorit nicht "selected" ist.
Oder kannst du mal probieren an der Maschine z.B. "Eco50" zu selektieren und dann ein "get Programs" auszuführen?
Alternativ müsste man den Favoriten explizit erlauben, was dann eine unschöne hardcoded Sonderlocke ist.
Interessant ist, dass die API den Favoriten bei GetProgramOptions auch nicht mag
2025.01.15 16:32:56 Request:$VAR1 = {'callback' => sub { "DUMMY" },'uri' => '/api/homeappliances/XXXX/programs/available/Dishcare.Dishwasher.Program.Favorite.001'};
2025.01.15 16:32:56 Get_options:$VAR1 = {'error' => {'description' => 'Program not supported','key' => 'SDK.Error.UnsupportedProgram'}};

ZitatwebCmd    SelectedProgram:startProgram:stopProgram:pauseProgram
Achtung, seit der Version von pah werden alle Befehle Gross geschrieben ("StartProgram") - daher sind in deinem Logfile die Klicks auf diese Links ins Leere gelaufen.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 15 Januar 2025, 21:08:19
Zitat von: Prof. Dr. Peter Henning am 15 Januar 2025, 17:14:51Weight,ProgramProgress,ElapsedProgramTime,RemainingProgramTime,CavitySelector
Haben die eventuell alle "Common" im Namen? Die filtere ich nämlich aktuell weg, wenn sie nur bei GetProgramOptions kommen.
Nehme ich aber mal in der nächsten Version wieder raus - die will ich nur noch etwas Testen weil die Eingriff um die Options aus GetPrograms zu holen etwas heikler war.

Logfile ist als temp device definiert und sollte, wenn das Attribut passt (ich bin inzwischen dazu übergegangen es mit "log/trockner-%Y-%m-%d.log" zu definieren) nach dem "shutdown restart" neu angelegt werden. Das würde in dem Fall wirklich helfen - wobei auch ein "list" mit den ganzen internal "data" readings sehr aufschlussreich ist.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 16 Januar 2025, 08:52:30
Zitat von: Adimarantis am 15 Januar 2025, 21:08:19log/trockner-%Y-%m-%d.log" zu definieren
Das hatte ich in der vorigen Version versucht, ergab aber gar nichts. Ich werde das heute mal updaten und endlich sinnvolle Logs liefern. Hatte ja seine Gründe...

LG

pah
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 16 Januar 2025, 08:59:52
@pah: Thema Favorit - hat das mit deiner Version je funktioniert einen Favoriten zu selektieren? Ich habe gesehen, dass du dazu eine Sonderbehandlung drin hast, weil die Spezialisten von BSH dem Favoriten eine andere Prefix spendiert haben.
Wenn ich das allerdings bei mir probiere, dann kann ich auch mit der korrekten Prefix kein SelectedProgram definieren:
2025.01.16 07:23:06 Request:$VAR1 = {'callback' => sub { "DUMMY" },'uri' => '/api/homeappliances/XXXX/programs/selected','data' => '{"data":{"key":"BSH.Common.Program.Favorite.001"}}'};
2025.01.16 07:23:06 Response 4:$VAR1 = {'error' => {'description' => 'Unsupported operation: BSH.Common.Program.Favorite.001','key' => 'SDK.Error.UnsupportedProgram'}};
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 16 Januar 2025, 19:28:14
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
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 16 Januar 2025, 19:38:29
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.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Stonemuc am 17 Januar 2025, 11:42:25
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)
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Shadow3561 am 17 Januar 2025, 18:55:54
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

Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 17 Januar 2025, 19:28:11
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



Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Shadow3561 am 17 Januar 2025, 19:34:18
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.



Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 18 Januar 2025, 11:25:20
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
...

Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 18 Januar 2025, 13:09:36
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
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag 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.
Anbei das Log.
Mit freundlichen Grüßen
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 18 Januar 2025, 17:00:35
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.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 18 Januar 2025, 18:04:53
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
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 18 Januar 2025, 21:50:19
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.



Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 19 Januar 2025, 10:01:02
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?
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 19 Januar 2025, 10:13:14
Ja, das ist jetzt immer aktiv, weil ich die Readings für manche Dinge (z.B. Favorit Spülmaschine) zwingend brauche
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 19 Januar 2025, 10:17:32
Gut motd ist nach dem nä. Restart wieder weg  :)
Modul läuft unverändert gut!
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 19 Januar 2025, 16:18:02
Einige Readings bleiben ja nach Programmende/Ausschalten mit teilweise verwirrenden Werten belegt.
Teilweise lösche ich die schon (z.B. ActiveProgram). Ich würde jetzt in die Config pro Device eine Liste von Readings einbauen, die gelöscht werden sollen, sowie allgemeine Readings generell löschen (= "" Leeerstring) wenn kein Program aktiv ist (=Active,Run,Pause,DelayedStart) oder bei Power Off.
Allgemein: "FinishAtHHMM", "ProcessPhase", "RemainingProgramTime", "RemainingProgamTimeHHMM", "ProgramProgress", "ActiveProgram", "StartAtHHMM", "StartInRelativeHHMM", "StartInRelative", "ElapsedProgramTime"
Dishwasher: "Option.BaseProgram", "Option.ProgramName" (wird nur bei aktivem Favoriten befüllt)
Oven: "Status.CurrentCavityTemperature" (weil bekanntermaßen unsinnige Werte, wenn kein Programm aktiv)

Bedenken? Weitere Readings?
Ich hatte außerdem überlegt das Reading "Event.ProgramAborted" bei PowerOn zu löschen - das bleibt bei mir ewig (mit Wert "Present") stehen.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Shadow3561 am 19 Januar 2025, 16:38:12
Beim GS bleiben
     Option.EnergyForecast 46 %
     Option.ExtraDry Off
     Option.FinishAtHHMM 16:38
     Option.FinishInRelativeHHMM 4:12
     Option.RemainingProgramTime 15120 seconds
     Option.RemainingProgramTimeHHMM 4:12


und beim Kochfeld
     Option.ElapsedProgramTime 16609 seconds
     Option.RemainingProgramTime 10 seconds


befüllt.

Waschtrockner kann ich nicht testen, der läuft gerade.
Mit freundlichen Grüßen
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 19 Januar 2025, 17:35:10
Ich hätte jetzt Werte die bei potentiell gewähltem Program Sinn machen könnten stehengelassen.
Dazu gehören auch relative Laufzeiten (FinishInRelative*, Estimated*), Forecasts und On/Off Options. Mir geht es um Readings die definitiv falsch sind und durch die ganzen "get" Befehle auch nicht korrigiert werden.

Apropos Forecast. Irgendwo kam schon mal die Diskussion über die sinnfreien Prozentangaben auf.
Die App zeigt ja kWh und Liter.
Könnte man das nicht ausrechnen?
z.B. zeigt die App für das Spülmaschinenprogramm "Auto 45-65" 1.4 kWh und 15.0 l - in Prozent in FHEM 65% und 67%
Das würde heissen das 100% Energie = 2.15 kWh und 100% Wasser = 22.39 l sind.
Wenn ich das allerdings über mehrere Programme prüfe, dann bekomme ich eine Schwankungsbreite von 19,2-24,5 kWh und 21-30 Liter
Das erscheint mir doch etwas zuviel Abweichnung für reine Rundungsfehler (kWh scheinen immer auf 0.1 und Liter immer auf 0.5 gerundet zu sein)


Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Shadow3561 am 19 Januar 2025, 18:10:49
Ich habe mal die forecast Angaben bei mir verglichen.
Das stimmt hinten und vorne nicht.
Programm Auto 45-65 Energy 70% Wasser 69%
entspricht App.            1.25kwh.   10.5l
       
Mischbeladung.       Energy 70& Wasser 65%
                              1.45kwh    14.5l

Hier sieht man sehr schön, dass man das nicht in Relation setzen kann.
Ich denke Prozentangaben beziehen sich eher auf die abgebildete Grafik im GS-Display und haben relativ wenig mit den Verbräuche zu tun. Die kWh und Liter rechnet die App entweder selber aus, je nach Programm oder sie werden von der API geliefert die BSH für die App benutzt.
Mit freundlichen Grüßen

         
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 20 Januar 2025, 10:11:29
Ich denke, es braucht für jedes Gerät eine Liste von readings, die beim Programmende zwar nicht gelöscht, aber auf einen neutralen Wert gesetzt werden.

LG

pah
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 20 Januar 2025, 11:16:53
Zitat von: Prof. Dr. Peter Henning am 20 Januar 2025, 10:11:29Ich denke, es braucht für jedes Gerät eine Liste von readings, die beim Programmende zwar nicht gelöscht, aber auf einen neutralen Wert gesetzt werden.
Genau. Da habe ich in meiner Testversion jetzt eine Doppelstrategie:
Die Liste von Readings die ich im vorherigen Post als "allgemein" gekennzeichnet habe, setze ich generell auf Leerstring (natürlich nur wenn es das Readings bereits gibt), und dann gibt es noch eine devicespezifische Liste in der HomeConnectConf.pm . Dafür bräuchte ich noch Vorschläge.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 21 Januar 2025, 08:53:54
Nachdem das jetzt bei mir ohne ersichtliche Nebeneffekte lief, ein kleines Update
- Verbesserte Erkennung von device offline beim FHEM Neustart / init
- Einige Readings werden nach auf Leerstring gesetzt, wenn ein Programm beendet wurde - bitte um Feedback für weitere Readings
- Hat schon jemand das die Berechnung von ElapsedProgramTime/RemainingProgamTime getested (betriff wohl hauptsächlich Öfen)?

Das versteckte "StartX" wurde geändert, dass es ein ResumeProgram schickt. Wollte ich ausprobieren, bin aber noch nicht zu gekommen.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 21 Januar 2025, 10:31:58
Testbericht:
Bei Systeminitialisierung
Zitat2025.01.21 09:55:30 1: [HomeConnect_Init] for PXX895D57E called
2025.01.21 09:55:33 1: [HomeConnect_Init] for WAV28G43 called
2025.01.21 09:55:35 1: [HomeConnect_Init] for HBG4785B6 called
2025.01.21 09:55:36 1: [HomeConnect_Init] for SN55ZS49CE called
2025.01.21 09:55:39 1: [HomeConnect_ResponseGetPrograms] PXX895D57E: no programs found
2025.01.21 09:59:29 1: PERL WARNING: Argument "" isn't numeric in int at /opt/fhem/FHEM/48_HomeConnect.pm line 1828.
2025.01.21 09:59:29 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at /opt/fhem/FHEM/48_HomeConnect.pm line 1829.

Standardprogramm "Nudelauflauf" beim Ofen (Start erfolgt automatisch nach dem Einstellen des Gewichtes 1.25 kg am Backofen)

1. Anzeige Temperatur und Restlaufzeit funktionieren prima.

2. Ein Stopp per "set ... Power standby" geht auch.
Während das Programm gestoppt ist, kann man zwar in FHEM "set ... Weight" eingeben, der Wert wird aber nicht übernommen. Stattdessen wird der Ofen wieder auf den Defaultwert 1 kg zurückgesetzt.
Zitat2025.01.21 10:03:28 1: [HomeConnect_HandleError] HBG4785B6: Error "HomeAppliance reported an error"
2025.01.21 10:03:51 1: PERL WARNING: Use of uninitialized value $values in pattern match (m//) at /opt/fhem/FHEM/48_HomeConnect.pm line 821.
2025.01.21 10:03:51 1: [HomeConnect_HandleError] HBG4785B6: Error "Program option not supported"

3. Ein Neustart mit "set ... StartX" geht nicht, keine Reaktion. Dafür Fehlermeldung im FHEM-Log
Zitat2025.01.21 10:04:55 1: PERL WARNING: Use of uninitialized value $program in concatenation (.) or string at /opt/fhem/FHEM/48_HomeConnect.pm line 1177.
2025.01.21 10:04:55 1: PERL WARNING: Use of uninitialized value $program in concatenation (.) or string at /opt/fhem/FHEM/48_HomeConnect.pm line 1182.
2025.01.21 10:04:55 1: [HomeConnect_HandleError] HBG4785B6: Error "Unknown program feature key: "

4. Neustart mit der App geht problemlos, auch die Veränderung des Gewichts auf 1,5 kg.

Anbei noch das Log.

LG

pah
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 21 Januar 2025, 11:36:17
Zitat von: Prof. Dr. Peter Henning am 21 Januar 2025, 10:31:582025.01.21 09:59:29 1: PERL WARNING: Argument "" isn't numeric in int at /opt/fhem/FHEM/48_HomeConnect.pm line 1828.
2025.01.21 09:59:29 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at /opt/fhem/FHEM/48_HomeConnect.pm line 1829.
Ok. Nebeneffekt vom auf Leerstring setzen. Sollte gefixt sein, aber unkritisch.
ZitatWährend das Programm gestoppt ist, kann man zwar in FHEM "set ... Weight" eingeben, der Wert wird aber nicht übernommen. Stattdessen wird der Ofen wieder auf den Defaultwert 1 kg zurückgesetzt.
Set Weight wird als "Unsupported Option" bemängelt - landet das dann in der Excludeliste und wird zukünftig nicht mehr angeboten?
Ich vermute stark, dass durch das Standby das Gewicht zurückgesetzt wird. FHEM macht hier nichts.
Zitat2025.01.21 10:03:51 1: PERL WARNING: Use of uninitialized value $values in pattern match (m//) at /opt/fhem/FHEM/48_HomeConnect.pm line 821.

Sollte gefixt sein.
Zitat3. Ein Neustart mit "set ... StartX" geht nicht, keine Reaktion. Dafür Fehlermeldung im FHEM-Log
Diese "Spieloption" hat in deiner Version noch eine andere Bedeutung und benötigt einen Programmnamen. Aber egal:
Ich hab jetzt in der gerade eingecheckten Version 1.20 die Befehle PauseProgram und ResumeProgram für den Ofen freigeschaltet. Laut Doku könnte das gehen - das ist dann evtl. "schonender" als auf Standby gehen.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 21 Januar 2025, 13:01:02
Wir tasten uns langsam voran.

- PauseProgram macht gar nichts
- StopProgram stoppt das Programm, geht also
- ResumeProgram wird nicht in der Liste der Befehle angezeigt. Wenn ich es trotzdem absetze, passiert nichts.

LG

pah
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 21 Januar 2025, 13:15:37
Zitat von: Prof. Dr. Peter Henning am 21 Januar 2025, 13:01:02- PauseProgram macht gar nichts
Scheinbar von deinem Modell nicht supported
Zitat- StopProgram stoppt das Programm, geht also
- ResumeProgram wird nicht in der Liste der Befehle angezeigt. Wenn ich es trotzdem absetze, passiert nichts.
Resume wird nur im Status "Paused" angezeigt - außerdem auch von deinem Modell nicht unterstützt. Und Stop beendet ja das Programm, wobei das Start aus bekannten Gründen nicht geht. Somit ist "Resume" leider auch kein Workaround.

Sind wir wieder beim BSH support - der mir auf insgesamt 5 Anfragen bisher nur einmal geantwortet hat.....
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 21 Januar 2025, 15:52:46
Zitat von: Adimarantis am 21 Januar 2025, 08:53:54v
- Hat schon jemand das die Berechnung von ElapsedProgramTime/RemainingProgamTime getested (betriff wohl hauptsächlich Öfen)?

Habe ich heute mal getestet.
Reading nag get status:
    2025-01-21 13:02:05  Option.ElapsedProgramTime 299 seconds
    2025-01-21 13:02:05  Option.RemainingProgramTime 901 seconds
Ofen abgelesen am Display um 13.01:50, also 15 Sekunden eher. Ich müsste das mal besser synchen, bloß wie?
- Abgelaufene Zeit 13:17 (ca 797 Sekunden)
- Restlaufzeit 15:01 (ca 901 Sekunden)

Selbst mit Berücksichtigung der Unschärfe beim Ablesen passen die Zeiten bei mir nicht.

NACHTRAG:
Oder geht es um diese beiden Felder?
    2025-01-21 12:57:59  Status.Cavity.001.ElapsedProgramTime 58 seconds
    2025-01-21 12:57:59  Status.Cavity.001.RemainingProgramTime 1142 seconds

VG Helmut

P.S. Kein Log aktiv.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 21 Januar 2025, 16:05:57
Hmm...

Das mit den Updates der Zeiten ist in der Tat nicht schön. Man könnte aber ein Konstrukt schaffen, bei dem ein interner Timer in FHEM abläuft, der durch die BSH-Server lediglich von Zeit zu Zeit "mitgenommen" wird. Und das ginge sogar ohne Belastung für die FHEM-Hauptschleife, wenn man ein wenig Javascript verwendet.

Das wäre mal ein innovatives Widget, das man an ganz vielen anderen Stellen in FHEM ebenfalls verwenden könnte.

Für die Module Astro und YAAHM habe ich so etwas schon gemacht, ich werde mal darüber nachdenken.

LG

pah
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 21 Januar 2025, 16:11:45
Ok, also die Idee war, das dies ohne get ProgramStatus funktioniert.
Ohne Logs weiss ich jetzt natürlich auch nicht was per Event kam und was intern berechnet wurde.
ElapsedProgamTime schaut auf jeden Fall seltsam aus. Meine Waschmaschine zählt nur "Remaining" und da fehlt die "Elapsed" ganz - da muss ich noch nachbessern.

Eine Abweichung von bis zu 2 Minuten bei interner Berechnung ist möglich, da die Notwendigkeit einer Berechnung aktuell nicht öfter geprüft wird. Vielleicht gehe ich da auf 70s weil die Events von HomeConnect üblicherweise so alle Minute kommen.
Irgendwelche zusätzlichen Timer einzubauen habe ich bisher nicht für notwendig gesehen, da der Event Channel sowieso schon alle 5 Sekunden abgefragt wird.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 21 Januar 2025, 16:12:51
Nächste Runde dann mit Log -:)
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 21 Januar 2025, 17:02:40
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)
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 21 Januar 2025, 20:14:46
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.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 23 Januar 2025, 08:31:50
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?
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 23 Januar 2025, 09:10:33
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
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 23 Januar 2025, 10:27:07
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.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 23 Januar 2025, 15:20:31
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.

Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Shadow3561 am 23 Januar 2025, 18:05:24
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
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 23 Januar 2025, 18:41:52
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.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Shadow3561 am 23 Januar 2025, 19:10:40
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
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 23 Januar 2025, 19:12:52
Nicht "StartProgram" sondern eine der "Delay..." Optionen. Z.B. "DelayRelative" mit Argument 0 - dann müsste es loslaufen
"Gestartet" ist es dann ja schon.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Shadow3561 am 23 Januar 2025, 19:17:13
Ich habe als Set Optionen nur Power, startProgram, childlock und selectProgram
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 23 Januar 2025, 19:20:25
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
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 23 Januar 2025, 19:25:49
Im Logfile finde ich nicht dass er im DelayedStart ist.
Mach auch nochmal ein "get Status"
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Shadow3561 am 23 Januar 2025, 19:30:44
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
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 23 Januar 2025, 20:00:43
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)


Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Shadow3561 am 23 Januar 2025, 20:03:12
probiere ich morgen aus und melde mich dann wieder.
Danke noch einmal für deine Hartnäckigkeit
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 24 Januar 2025, 15:47:12
Hallo Jörg,
hier meine neues Log zum Backofen.
Die Timeranzeige war, soweit ich das sehen konnte, auf ca. 1 Minute genau.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Shadow3561 am 24 Januar 2025, 16:22:34
Moin,
habe es nach deiner Anleitung probiert, leider kein Erfolg. Der Waschtrockner möchte nicht starten.

Internals:
   DEF        hcconn_new XXX
   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 246
   events     
   haId       XXXX
   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.27
   vib        WNC244070
   OLDREADINGS:
   READINGS:
     2025-01-23 17:07:30   Event.ProgramFinished Off
     2025-01-20 17:28:29   LaundryCare.Washer.Option.IntensivePlus Off
     2025-01-24 16:11:04   LaundryCare.Washer.Option.LessIroning Off
     2025-01-24 16:11:34   LaundryCare.Washer.Option.MiniLoad Off
     2025-01-24 16:14:06   LaundryCare.Washer.Option.Prewash Off
     2025-01-24 16:11:04   LaundryCare.Washer.Option.RinseHold Off
     2025-01-24 16:14:06   LaundryCare.Washer.Option.RinsePlus Off
     2025-01-24 16:14:06   LaundryCare.Washer.Option.Soak Off
     2025-01-24 16:14:06   LaundryCare.Washer.Option.SpinSpeed RPM1400
     2025-01-24 16:14:06   LaundryCare.Washer.Option.Stains Off
     2025-01-24 16:14:36   LaundryCare.Washer.Option.Temperature GC60
     2025-01-24 16:14:06   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-24 16:14:36   Option.EstimatedTotalProgramTime 16560 seconds
     2025-01-24 16:15:07   Option.FinishAtHHMM 21:21
     2025-01-24 16:15:07   Option.FinishInRelative 18360 seconds
     2025-01-24 16:15:07   Option.FinishInRelativeHHMM 5:06
     2025-01-24 16:14:06   Option.LoadRecommendation 2500 gram
     2025-01-24 16:11:04   Option.LowTemperatureHygiene Off
     2025-01-23 22:09:16   Option.ProcessPhase
     2025-01-24 16:14:06   Option.ProgramMode WashingAndDrying
     2025-01-23 17:07:30   Option.ProgramProgress 0 %
     2025-01-23 22:09:16   Option.RemainingProgramTime
     2025-01-23 22:09:16   Option.RemainingProgramTimeHHMM
     2025-01-24 16:14:06   Option.RemainingProgramTimeIsEstimated On
     2025-01-24 16:14:06   Option.SilentMode Off
     2025-01-24 16:14:06   Option.SpeedPerfect Off
     2025-01-24 16:15:07   Setting.ActiveProgram EasyCare.HHSynthetics.HHSynthetics
     2025-01-24 16:11:04   Setting.ChildLock Off
     2025-01-24 16:11:04   Setting.PowerState On
     2025-01-24 16:14:06   Setting.SelectedProgram HHSynthetics
     2025-01-24 16:15:35   Status.DoorState Locked
     2025-01-24 16:15:35   Status.LocalControlActive Off
     2025-01-24 16:15:35   Status.OperationState DelayedStart
     2025-01-24 16:15:35   Status.RemoteControlActive On
     2025-01-24 16:15:35   Status.RemoteControlStartAllowed On
     2025-01-24 16:14:06   lastErr         No programs found
     2025-01-24 16:15:07   state           scheduled
     2025-01-24 16:15:07   state1          Start um
     2025-01-24 16:15:07   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 Rinse.Rinse.Rinse
     autostart  0
     clear      0
     details    1
     elapsed    0
     eventChannelTimeout 1737731737.26743
     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
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 24 Januar 2025, 17:08:05
Zitat von: Shadow3561 am 24 Januar 2025, 16:22:34habe es nach deiner Anleitung probiert, leider kein Erfolg. Der Waschtrockner möchte nicht starten.
Wir tasten uns ran. Er hat nach wie vor nicht probiert was er sollte, weil er nicht identifizieren konnte, dass dein Gerät ein "FinishInRelative" Typ ist. Liegt daran dass die Programmliste leer ist.
Die neue Version sollte diese Info aus dem aktuellen "Selected" Programm holen. Mal sehen ob wir damit einen Schritt weiter kommen.
Außerden hoffe ich das die "Start um" Anzeige jetzt was sinnvolles (statt 0:00) anzeigt.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 24 Januar 2025, 17:10:49
Zitat von: isy am 24 Januar 2025, 15:47:12Die Timeranzeige war, soweit ich das sehen konnte, auf ca. 1 Minute genau.
Schön. Dann ist für dein Ofenmodell denke ich alles gemacht - außer es fällt dir noch irgendwo eine Ungereimtheit auf.

@pah: Dein Ofen liefert ja andere Events - da könnten wir auch nochmal draufschauen.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Shadow3561 am 24 Januar 2025, 17:28:01
und hier das nächste log

PS: Ich habe unter API (https://apiclient.home-connect.com/?url=https%3A//apiclient.home-connect.com/hcsdk-production.yaml&api_key=58354B0701146B92978D75FC53D456FF472D5E3F1325C9025A1A413C54EA7603). mal ein wenig rumgespielt. Auch hier ist es nicht möglich ein Programm zu setzen oder die Programme abzurufen.
Ich hänge dir mal 3 weitere Dateien an.

Edit. Evtl magst du die Standardprogramm unter .programs wieder rausnehmen oder zumindest 2x einen Zeilenumbruch (/n in 293) hinzufügen?
Mein FHEM wird im Browser 3 Seiten breit durch die langen Programmnamen
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 24 Januar 2025, 18:00:35
Zitat von: Shadow3561 am 24 Januar 2025, 17:28:01und hier das nächste log
Jetzt hat's "geklappt", leider ziert sich dein Gerät auch hier:
2025.01.24 17:19:53 Response FinishInRelative:$VAR1 = {'error' => {'description' => 'BSH.Common.Option.FinishInRelative currently not available or writable','key' => 'SDK.Error.InvalidOptionState'}};Allerdings behauptet er weiter vorne im Log auch das kein Programm aktiv wäre. Vielleicht zählt das noch zu "selected"?
Bei meinem Trockner funktioniert das anders.
Magst du mal Zeile 1112 testweise ändern?
      uri      => "/api/homeappliances/$haId/programs/active/options/BSH.Common.Option.$option",nach
      uri      => "/api/homeappliances/$haId/programs/selected/options/BSH.Common.Option.$option",und es dann nochmal probieren?
ZitatEdit. Evtl magst du die Standardprogramm unter .programs wieder rausnehmen oder zumindest 2x einen Zeilenumbruch (/n in 293) hinzufügen?
Mein FHEM wird im Browser 3 Seiten breit durch die langen Programmnamen
Hmm.. ja verstehe ich. Muss ich mir mal überlegen
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Shadow3561 am 24 Januar 2025, 18:39:41
schade, ohne Funktion
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 24 Januar 2025, 18:40:32
Zitat von: Shadow3561 am 24 Januar 2025, 17:28:01PS: Ich habe unter API (https://apiclient.home-connect.com/?url=https%3A//apiclient.home-connect.com/hcsdk-production.yaml&api_key=58354B0701146B92978D75FC53D456FF472D5E3F1325C9025A1A413C54EA7603). mal ein wenig rumgespielt. Auch hier ist es nicht möglich ein Programm zu setzen oder die Programme abzurufen.
Ich hänge dir mal 3 weitere Dateien an.
Das ist ja cool. Du hast die Sprache auf Deutsch gesetzt und die Calls liefern deutsche Programmnamen mit. War mir nicht bewusst, das das so geht.
Damit könnte man die ganzen internen Übersetzungen evtl. obsolete machen. Mal sehen...
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 24 Januar 2025, 18:41:39
Zitat von: Shadow3561 am 24 Januar 2025, 18:39:41schade, ohne Funktion
>:( blödes Teil - jetzt bin ich mit den Ideen erstmal am Ende
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Shadow3561 am 24 Januar 2025, 18:48:22
Zitatblödes Teil
Da hast du wohl recht.

Zitatjetzt bin ich mit den Ideen erstmal am Ende
Das ist nicht tragisch. Wahrscheinlich nutzt Bosch für die eigene App eine andere API. Den GS kann ich ja zum Glück steuern und somit wenigstens den starten lassen wenn die PV Überschuss liefert.
Dann muss ich meine Frau zu FHEM machen und ihr eintrichtern, dass sie den WT immer um die Mittagszeit laufen lässt oder ich muss mein PV-Speicher noch etwas aufrüsten.

Alles in Allem trotzdem ein riesen Dankeschön für deine Mühe mit der Modulüberarbeitung.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Shadow3561 am 24 Januar 2025, 19:43:36
Ich noch einmal.
Ich habe jetzt mal alle, in der App angebotenen, Programme durchgeschaltet.
Da sind noch ein paar mehr als am WT selbst. nur zur Erweiterung in der HomeConnectConf.pm

Mit freundlichen Grüßen

  "DryingTime.MyTimeDry.MyTimeDry"            => "MyDryTime",
  "LaundryWarming.LaundryWarming.LaundryWarming"        => "Wäsche erwärmen",
  "ShirtsBlouses.ShirtsBlouses.ShirtsBlouses"           => "Blusen und Hemden",
  "PlushToy.PlushToy.PlushToy"                        => "Kuscheltiere",
  "MoistRemove.DrumDry.DrumDry"                        => "Feuchtigkeit entfernen",
  "DrumCleanDry.DrumCare.DrumCare"                      => "Trommelreinigung & trocknen",
  "HygieneDryLaundry.FastHygiene.FastHygiene"           => "Fast Hygiene"
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 24 Januar 2025, 20:33:51
Zitat von: Shadow3561 am 24 Januar 2025, 19:43:36Ich habe jetzt mal alle, in der App angebotenen, Programme durchgeschaltet.
Danke. Nehme ich auf - auch wenn's derzeit wahrscheinlich nichts bringt.

Hab jetzt mal bei programs und options einen Umbruch nach 80 Zeichen (beim nächsten Komma) eingebaut. Mal beobachten ob das Nebeneffekte hat.
Komischerweise ändert FHEM die Schriftart, wenn ein Umbruch drin ist:
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Shadow3561 am 25 Januar 2025, 10:45:39
Hast du es mal so probiert?
$hash->{programs}=join(",\t",@dp);Dann bleibt die Schriftart gleich  8)
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 25 Januar 2025, 11:11:48
Einfache Leerzeichen tuns auch. Das ist natürlich besser, weil dynamisch entsprechend Fensterbreite.
Baue ich jetzt bei options, programs und settings ein.
Ich hoffe ich habe alle Stellen erwischt an denen ich das Leerzeichen wieder entfernen muss, damit man noch Programme auswählen kann. :)
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 25 Januar 2025, 11:53:10
Ok, ich glaube das mit den Umbruch klappt, desweiteren hole ich jetzt die offiziellen deutschen Bezeichnungen (dazu muss auch HomeConnectConnection aktualisiert werden). Falls es Probleme bei der Auswahl/Start von Programmen gibt, bitte Bescheid geben.
Bei den Programmnamen werden eventuelle Leerzeichen mit Unterstrichen ersetzt, weil sonst die "set" Liste durcheinander kommt. Sonst scheinen Sonderzeichen (z.B. "°" nicht zu stören).

Da es auch für die Options/Settings deutsche Namen über das Interface gibt, könnte man diese z.B. als Readingnamen für die übersetzen Readings (attribute translate) nutzen.
Aus "ChildLock" würde dann z.B. "Kindersicherung" werden oder aus "DoorState" einfach "Tür". Oder verwirrt das eher?

Wer sich die deutschen Bezeichner ansehen möchte, macht ein "list" vom Device und schaut unter data->options/setting. Im Feld "trans" steht jeweils die Übersetzung.
Unter data->trans die komplette Liste der Programmnamen - das ist evtl. mit den Defaults zusammengewürfelt.

Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Shadow3561 am 25 Januar 2025, 17:33:20
Mhhhh,
das attr "stateUpdate" hat bei mir keinen Effekt.
Manuelles Update mit "get device ProgramStatus" funktioniert hingegen.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 25 Januar 2025, 17:48:59
attr xxx stateUpdate 120 sollte dazu führen, dass ca. alle 120 Sekunden ein "get ProgramStatus" ausgeführt wird - natürlich nur im state=run
Bei meiner Waschmaschine funktioniert das gut - ich finde jetzt allerdings in keinem deiner Logs den state "run" - klappt die Erkennung hier nicht?

Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Shadow3561 am 25 Januar 2025, 18:05:07
Ich hänge mal ein list an.
Was mir noch aufgefallen ist, dass die Programmnamen jetzt vor dem letzten Punkt abgeschnitten werden. Statt "Mix.HHMix.HHMix" erscheint in den readings nur noch HHMix. Dadurch funktioniert die Übersetzung nicht mehr.

Internals:
   DEF        hcconn_new XXXXX
   FUUID      65ed8f3f-f33f-e62d-8059-23a39d365322868c
   NAME       WNC244070_new
   NR         70
   NTFY_ORDER 50-WNC244070_new
   STATE      Mode: <span style="color:green">Waschen und Trocknen</span></br>
<span style="color:green">Schnell/Mix </span> 1400 U/min (Fortschritt 33 %) (fertig in 2:29 h) (um 20:28) </br>
Programmschritt: <span style="color:green">trocknen</span>
   TYPE       HomeConnect
   aliasname  Waschtrockner
   brand      Bosch
   eventCount 294
   events     
   haId       XXXXX
   hcconn     hcconn_new
   logfile    log/HC/WasherDryer
   model      WasherDryer
   offline    0
   prefix     LaundryCare.WasherDryer
   programs   ShirtsBlouses.ShirtsBlouses.ShirtsBlouses, PlushToy.PlushToy.PlushToy, HygieneDryLaundry.FastHygiene.FastHygiene, DelicatesSilk.DelicatesSilk.DelicatesSilk, Sensitive.Sensitive.Sensitiv, LabelEU19.LabelEU19.Eco4060, EasyCare.HHSynthetics.HHSynthetics, Spin.Spin.SpinDrain, Wool.Wool.Wool, DryingTime.MyTimeDry.MyTimeDry, HHMix, LaundryWarming.LaundryWarming.LaundryWarming, Cotton.Cotton.Cotton, FastWashDry.WD45.WD45, MoistRemove.DrumDry.DrumDry, RefreshWD.Refresh.Refresh, SportFitness.SportFitness.SportFitness, DrumCleanDry.DrumCare.DrumCare, Rinse.Rinse.Rinse
   settings   ChildLock, PowerState
   type       WasherDryer
   version    1.29
   vib        WNC244070
   READINGS:
     2025-01-25 16:10:24   Endzeit         05:10
     2025-01-25 11:23:08   Event.ProgramFinished Off
     2025-01-25 13:13:34   LaundryCare.Washer.Option.IntensivePlus Off
     2025-01-25 10:42:36   LaundryCare.Washer.Option.LessIroning Off
     2025-01-25 17:31:35   LaundryCare.Washer.Option.MiniLoad Off
     2025-01-25 17:31:35   LaundryCare.Washer.Option.Prewash Off
     2025-01-25 10:59:19   LaundryCare.Washer.Option.RinseHold Off
     2025-01-25 17:31:35   LaundryCare.Washer.Option.RinsePlus Off
     2025-01-25 17:31:35   LaundryCare.Washer.Option.Soak Off
     2025-01-25 17:31:35   LaundryCare.Washer.Option.SpinSpeed RPM1400
     2025-01-25 17:31:35   LaundryCare.Washer.Option.Stains Off
     2025-01-25 13:13:34   LaundryCare.Washer.Option.Temperature GC40
     2025-01-25 17:31:35   LaundryCare.Washer.Option.WaterPlus Off
     2025-01-20 17:26:27   Option.Duration 1200 seconds
     2025-01-25 17:58:26   Option.ElapsedProgramTime 4621 seconds
     2025-01-25 17:58:26   Option.ElapsedProgramTimeHHMM 1:18
     2025-01-25 17:59:27   Option.EstimatedTotalProgramTime 8940 seconds
     2025-01-25 17:59:27   Option.FinishAtHHMM 20:28
     2025-01-25 17:59:27   Option.FinishInRelative 0
     2025-01-25 17:59:27   Option.FinishInRelativeHHMM 2:29
     2025-01-25 17:31:35   Option.LoadRecommendation 2500 gram
     2025-01-25 10:42:36   Option.LowTemperatureHygiene Off
     2025-01-25 17:31:35   Option.ProcessPhase Drying
     2025-01-25 17:31:35   Option.ProgramMode WashingAndDrying
     2025-01-25 17:58:26   Option.ProgramProgress 33 %
     2025-01-25 17:59:27   Option.RemainingProgramTime 8940 seconds
     2025-01-25 17:59:27   Option.RemainingProgramTimeHHMM 2:29
     2025-01-25 17:31:35   Option.RemainingProgramTimeIsEstimated On
     2025-01-25 17:31:35   Option.SilentMode Off
     2025-01-25 17:31:35   Option.SpeedPerfect Off
     2025-01-25 12:04:36   Option.StartAtHHMM
     2025-01-25 17:31:35   ProcessPhase    trocknen
     2025-01-25 17:31:35   ProgramMode     Waschen und Trocknen
     2025-01-25 17:59:27   Schleuderdrehzahl 1400 U/min
     2025-01-25 16:39:54   SelectedProgram Schnell/Mix
     2025-01-25 16:39:54   Setting.ActiveProgram HHMix
     2025-01-25 16:39:49   Setting.ChildLock Off
     2025-01-25 16:39:49   Setting.PowerState On
     2025-01-25 16:39:54   Setting.SelectedProgram HHMix
     2025-01-25 16:39:52   Status.DoorState Locked
     2025-01-25 16:39:52   Status.LocalControlActive Off
     2025-01-25 16:39:52   Status.OperationState Run
     2025-01-25 16:39:52   Status.RemoteControlActive On
     2025-01-25 16:39:52   Status.RemoteControlStartAllowed On
     2025-01-25 17:59:27   Temperatur      40
     2025-01-25 17:40:22   lastErr         ok
     2025-01-25 16:10:24   operation-progress 0
     2025-01-25 17:59:27   state           run
     2025-01-25 17:59:27   state1          Schnell/Mix
     2025-01-25 17:59:27   state2          2:29
   data:
     finished   
     poweroff   PowerOff
     options:
       EstimatedTotalProgramTime:
         name       BSH.Common.Option.EstimatedTotalProgramTime
         trans      Geschätzte Gesamtprogrammlaufzeit
         unit       seconds
         value      7140
       FinishInRelative:
         name       BSH.Common.Option.FinishInRelative
         trans      Endzeit
         unit       seconds
         value      5717
       LoadRecommendation:
         name       LaundryCare.Common.Option.LoadRecommendation
         trans      Beladungsempfehlung
         unit       gram
         value      2500
       MiniLoad:
         name       LaundryCare.Washer.Option.MiniLoad
         trans      Miniload
         value      Off
         values     On,Off
       Prewash:
         name       LaundryCare.Washer.Option.Prewash
         trans      Vorwäsche
         value      Off
         values     On,Off
       ProcessPhase:
         name       LaundryCare.Common.Option.ProcessPhase
         trans      Prozessphase
         type       LaundryCare.Common.EnumType.ProcessPhase
         value      Drying
       ProgramMode:
         name       LaundryCare.WasherDryer.Option.ProgramMode
         trans      Programmtyp
         type       LaundryCare.WasherDryer.EnumType.ProgramMode
         value      WashingAndDrying
       ProgramProgress:
         name       BSH.Common.Option.ProgramProgress
         trans      aktueller Programmfortschritt
         unit       %
         value      47
       RemainingProgramTime:
         name       BSH.Common.Option.RemainingProgramTime
         trans      Verbleibende Programmlaufzeit
         unit       seconds
         value      7112
       RemainingProgramTimeIsEstimated:
         name       BSH.Common.Option.RemainingProgramTimeIsEstimated
         trans      Geschätzte Restprogrammlaufzeit
         value      On
         values     On,Off
       RinsePlus:
         name       LaundryCare.Washer.Option.RinsePlus
         trans      Extra Spülen
         type       LaundryCare.Washer.EnumType.RinsePlus
         value      Off
         values     On,Off
       SilentMode:
         name       LaundryCare.Common.Option.SilentMode
         trans      Leiser waschen
         value      Off
         values     On,Off
       Soak:
         name       LaundryCare.Washer.Option.Soak
         trans      Einweichen
         value      Off
         values     On,Off
       SpeedPerfect:
         name       LaundryCare.Common.Option.SpeedPerfect
         trans      SpeedPerfect
         value      Off
         values     On,Off
       SpinSpeed:
         name       LaundryCare.Washer.Option.SpinSpeed
         trans      Drehzahl
         type       LaundryCare.Washer.EnumType.SpinSpeed
         value      RPM1400
       Stains:
         name       LaundryCare.Washer.Option.Stains
         trans      Flecken Automatik
         type       LaundryCare.Washer.EnumType.Stains
         value      Off
         values     On,Off
       WaterPlus:
         name       LaundryCare.Washer.Option.WaterPlus
         trans      Wasser Plus
         value      Off
         values     On,Off
     retrans:
       Baumwolle  Cotton.Cotton.Cotton
       Blusen/Hemden ShirtsBlouses.ShirtsBlouses.ShirtsBlouses
       Eco40-60   LabelEU19.LabelEU19.Eco4060
       ExtraKurz15/Wash&Dry45 FastWashDry.WD45.WD45
       Fast_Hygiene HygieneDryLaundry.FastHygiene.FastHygiene
       Fein/Seide DelicatesSilk.DelicatesSilk.DelicatesSilk
       Feuchtigkeit_entfernen MoistRemove.DrumDry.DrumDry
       HygienePlus Sensitive.Sensitive.Sensitiv
       IronAssist RefreshWD.Refresh.Refresh
       Kuscheltiere PlushToy.PlushToy.PlushToy
       MyDryTime  DryingTime.MyTimeDry.MyTimeDry
       Pflegeleicht EasyCare.HHSynthetics.HHSynthetics
       Schleudern/Abpumpen Spin.Spin.SpinDrain
       Schnell/Mix HHMix
       Sportswear SportFitness.SportFitness.SportFitness
       Spülen    Rinse.Rinse.Rinse
       Trommelreinigung DrumCleanDry.DrumCare.DrumCare
       Wolle      Wool.Wool.Wool
       Wäsche_erwärmen LaundryWarming.LaundryWarming.LaundryWarming
     sets:
       MiniLoad   1
       Prewash    1
       ProgramMode 1
       RinsePlus  1
       Soak       1
       SpinSpeed  1
       Stains     1
       WaterPlus  1
     settings:
       ChildLock:
         name       BSH.Common.Setting.ChildLock
         trans      Kindersicherung
         value      Off
         values     On,Off
       PowerState:
         name       BSH.Common.Setting.PowerState
         trans      Energiezustand
         type       BSH.Common.EnumType.PowerState
         value      On
         values     On,Off
     status:
       DoorState:
         name       BSH.Common.Status.DoorState
         trans      Tür
         type       BSH.Common.EnumType.DoorState
         value      Locked
       LocalControlActive:
         name       BSH.Common.Status.LocalControlActive
         trans      Lokale Bedienung aktiv
         value      Off
         values     On,Off
       OperationState:
         name       BSH.Common.Status.OperationState
         trans      Betriebsstatus
         type       BSH.Common.EnumType.OperationState
         value      Run
       RemoteControlActive:
         name       BSH.Common.Status.RemoteControlActive
         trans      Fernbedienung
         value      On
         values     On,Off
       RemoteControlStartAllowed:
         name       BSH.Common.Status.RemoteControlStartAllowed
         trans      Fernstart
         value      On
         values     On,Off
     trans:
       Cotton.Cotton.Cotton Baumwolle
       DelicatesSilk.DelicatesSilk.DelicatesSilk Fein/Seide
       DrumCleanDry.DrumCare.DrumCare Trommelreinigung
       DryingTime.MyTimeDry.MyTimeDry MyDryTime
       EasyCare.HHSynthetics.HHSynthetics Pflegeleicht
       FastWashDry.WD45.WD45 ExtraKurz15/Wash&Dry45
       HHMix      Schnell/Mix
       HygieneDryLaundry.FastHygiene.FastHygiene Fast_Hygiene
       LabelEU19.LabelEU19.Eco4060 Eco40-60
       LaundryWarming.LaundryWarming.LaundryWarming Wäsche_erwärmen
       MoistRemove.DrumDry.DrumDry Feuchtigkeit_entfernen
       PlushToy.PlushToy.PlushToy Kuscheltiere
       RefreshWD.Refresh.Refresh IronAssist
       Rinse.Rinse.Rinse Spülen
       Sensitive.Sensitive.Sensitiv HygienePlus
       ShirtsBlouses.ShirtsBlouses.ShirtsBlouses Blusen/Hemden
       Spin.Spin.SpinDrain Schleudern/Abpumpen
       SportFitness.SportFitness.SportFitness Sportswear
       Wool.Wool.Wool Wolle
   helper:
     clear      0
     details    -1
     elapsed    0
     etime      1737819685
     eventChannelTimeout 1737824382.81515
     init       1
     init_count 3
     key        LaundryCare.WasherDryer.Program.Mix.HHMix.HHMix
     options    -1
     programs   0
     remaining  7112
     retrycounter 0
     settings   1
     stateupdate 1737824442
     status     1
Attributes:
   alias      Waschtrockner
   disable    0
   icon       scene_washing_machine
   logfile    log/HC/WasherDryer
   room       Bosch
   stateFormat Mode: <span style="color:green">ProgramMode</span></br>
<span style="color:green">SelectedProgram </span> Schleuderdrehzahl (Fortschritt Option.ProgramProgress) (fertig in Option.RemainingProgramTimeHHMM h) (um Option.FinishAtHHMM) </br>
Programmschritt: <span style="color:green">ProcessPhase</span>
   stateUpdate 100
   translate  ProcessPhase,ProgramMode,SelectedProgram
   updateTimer 5
   userReadings Schleuderdrehzahl {(split( 'RPM', ReadingsVal($NAME,"LaundryCare.Washer.Option.SpinSpeed","")))[1]." U/min"},
Temperatur {(split( '([0-9][0-9]|Auto)', ReadingsVal($NAME,"LaundryCare.Washer.Option.Temperature","")))[1]},
   verbose    0
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 26 Januar 2025, 10:10:31
Wo funktioniert die Übersetzung nicht?
    2025-01-25 16:39:54   SelectedProgram Schnell/Mix
    2025-01-25 16:39:54   Setting.SelectedProgram HHMix

Im übersetzten Reading steht doch die deutsche Version. Aber das klappt eben nur für das aktuelle Programm.
Meinst du im Pulldown für "SelectedProgram"?

Die Kürzung greift analog zum Trockner, der so quatsch wie "Mix.Mix.Mix" zurückliefert, aber problemlos bloß "Mix" beim select/start versteht.
Möglicherweise macht es hier einfach Sinn auch die Defaults auf den letzten String zu kürzen. Beim Washdryer funktioniert ja sowieso nur die Anzeige und dafür ist es egal. Macht auch die List im programs Reading übersichtlicher.
Was meinst du?
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 26 Januar 2025, 11:15:52
So, wie gewünscht noch einmal Test mit meinem Ofen.

Funkioniert wie geplant
- set AlarmEndTime
- set AlarmRelative
- set AlarmCancel
- set ChildLock
- set SabbathMode
- set StopProgram bei voreingestelltem Garprogramm

Keine Funktion
- set SelectedProgram ==> Fehlermeldung "Unknown program feature key: Cooking.Oven.Program"
- set StartProgram bei SelectedProgram (möglicherweise Folgefehler zum obigen)
- set Duration bei voreingestelltem Garprogramm
- set StartProgram bei voreingestelltem Garprogramm
- set PauseProgram

Auffälligkeiten im Modul
- Die Befehle set xxx OpenDoor und set xxx PartlyOpenDoor machen wenig Sinn, das sind ja keine setzbaren Optionen.
- Bei den wählbaren Programmen wird "Sabbateinstellungen" angeboten. Ist m.E. nicht korrekt, dafür gibt es ja den SabbathMode
- Bei voreingestelltem Garprogramm erfolt keine Übersetzung => Dish.Automatic.Conv.PastaBake wird als wählbares Programm angezeigt
- Bei den angebotenen Programmen wird zwar sehr schön die Übersetzung angezeigt, z.B. "Warmhalten". Im state1 allerdings heißt es dann "KeepWarm"

Funktionen der App, die noch nicht mit dem Modul funktionieren
- Garraumbeleuchtung an/aus
- Start des gewählten Programms
- Start des voreingestellten Garprogramms nach einem Stop
- Einstellung des Gewichts bei voreingestelltem Garprogramm

Anbei noch die Logdatei

Und noch ein klares Wort: Danke für den Enthusiasmus und die Arbeit!

LG

pah
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 26 Januar 2025, 12:31:39
Zitat von: Prof. Dr. Peter Henning am 26 Januar 2025, 11:15:52- set SelectedProgram ==> Fehlermeldung "Unknown program feature key: Cooking.Oven.Program"
Da ist definitiv noch ein Problem in der Programbehandlung drin. Insbesondere bei denen mit mehreren Punkten (wie schon bei Shadow mit dem Waschtrockner) - da muss ich wohl doch besser differenzieren - was beim Trockner klappt, klappt woanders wohl nicht so gut.
Hier wäre ein "list" vom device sehr hilfreich, da ich checken müsste, was er in die internen Programmübersetzungstabellen geschrieben hat.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 26 Januar 2025, 14:22:09
Hallo,
heute beim Ofen neue Anzeigen. Ein get Status oder ProgramOptions ändert an den obigen Werten nichts.
- Programm "4D Heißluft, Schnellaufheizen" läuft seit 5 Minuten (als ich diese Info schrieb). List auch von dieser Zeit
- Status FHEM "(20 °C)"
- set "OpenDoor" und set "PartlyOpenDoor" werden angeboten

- Laufzeit wird korrekt angezeigt

In der HC App wird übrigens keine Temperatur angezeigt (!). Die eigene API überträgt also bei diesem Ofen auch keine Temperatur.

Log kommt gleich.

Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 26 Januar 2025, 14:36:33
List anbei
Internals:
   DEF        HomeConnectBridge BOSCH-xx
   FUUID      63079be2-f33f-8771-eb93-b6c0c48ae1631f6f
   NAME       HBG4785B6
   NR         218
   NTFY_ORDER 50-HBG4785B6
   STATE      <p align="left">
Inactive
<br/>Fertig
  </p>
   TYPE       HomeConnect
   aliasname  Backofen
   brand      Bosch
   eventCount 255
   events     
   haId       BOSCH-xx
   hcconn     HomeConnectBridge
   logfile    /home/fhem/fhemlogs/HC_Oven_2025-01-26.log
   model      Oven
   offline    0
   options    SetpointTemperature, HeatupProgress, Duration, ProgramProgress, ElapsedProgramTime, RemainingProgramTime, CavitySelector
   prefix     Cooking.Oven
   programs   HeatingMode.SabbathProgramme, HeatingMode.PreHeating, HeatingMode.BottomHeating, HeatingMode.HotAir, HeatingMode.PizzaSetting, HeatingMode.Defrost, HeatingMode.SlowCook, HeatingMode.TopBottomHeating, HeatingMode.KeepWarm, HeatingMode.HotAirGrilling
   settings   ChildLock, PowerState, SabbathMode, AlarmClock
   type       Oven
   version    1.29
   vib        HBG4785B6
   OLDREADINGS:
   READINGS:
     2025-01-26 10:42:02   Event.AlarmClockElapsed Present
     2025-01-26 09:34:36   Event.PreheatFinished Off
     2025-01-26 11:12:13   Event.ProgramFinished Off
     2025-01-26 10:42:53   Option.AlarmAtHHMM 10:42
     2025-01-26 10:42:53   Option.AlarmClockHHMM 0:00
     2025-01-26 11:10:23   Option.CavitySelector Main
     2025-01-26 11:10:23   Option.Duration 60 seconds
     2025-01-26 11:10:23   Option.ElapsedProgramTime 55 seconds
     2025-01-26 11:10:13   Option.ElapsedProgramTimeHHMM
     2025-01-26 09:28:44   Option.FastPreHeat On
     2025-01-26 11:12:13   Option.ProgramProgress 0 %
     2025-01-26 11:10:23   Option.RemainingProgramTime 5 seconds
     2025-01-26 11:10:13   Option.RemainingProgramTimeHHMM
     2025-01-26 11:10:23   Option.SetpointTemperature 60 °C
     2025-01-26 10:59:28   Option.Weight   1050 gram
     2025-01-26 11:12:13   Setting.ActiveProgram
     2025-01-26 10:42:53   Setting.AlarmClock 0 seconds
     2025-01-26 11:09:13   Setting.ChildLock Off
     2025-01-26 11:12:13   Setting.PowerState Standby
     2025-01-26 11:09:13   Setting.SabbathMode Off
     2025-01-26 11:12:13   Setting.SelectedProgram
     2025-01-26 09:28:34   Status.Cavity.001.CavitySelector Main
     2025-01-26 11:12:13   Status.CurrentCavityTemperature 105 °C
     2025-01-26 11:03:12   Status.DoorState Closed
     2025-01-26 11:03:12   Status.LocalControlActive Off
     2025-01-26 11:12:13   Status.OperationState Inactive
     2025-01-26 11:03:12   Status.RemoteControlActive On
     2025-01-26 11:03:12   Status.RemoteControlStartAllowed On
     2025-01-26 11:06:07   lastErr         Unknown program feature key: Cooking.Oven.Program.
     2025-01-26 11:12:13   state           done
     2025-01-26 11:12:13   state1          Fertig
     2025-01-26 11:12:13   state2          -
   data:
     finished   
     poweroff   PowerStandby
     options:
       CavitySelector:
         name       Cooking.Oven.Option.CavitySelector
         type       Cooking.Oven.EnumType.CavitySelector
         value      Main
       Duration:
         name       BSH.Common.Option.Duration
         trans      Dauer anpassen
         unit       seconds
         value      60
       ElapsedProgramTime:
         name       BSH.Common.Option.ElapsedProgramTime
         trans      Programmlaufzeit
         unit       seconds
         value      55
       HeatupProgress:
         name       Cooking.Oven.Option.HeatupProgress
         trans      Vorheizen Fortschritt
         unit       %
         value      0
       ProgramProgress:
         name       BSH.Common.Option.ProgramProgress
         trans      aktueller Programmfortschritt
         unit       %
         value      100
       RemainingProgramTime:
         name       BSH.Common.Option.RemainingProgramTime
         trans      Verbleibende Programmlaufzeit
         unit       seconds
         value      5
       SetpointTemperature:
         name       Cooking.Oven.Option.SetpointTemperature
         trans      Temperatur
         unit       °C
         value      60
       Weight:
         name       Cooking.Oven.Option.Weight
         trans      Gewicht des Gerichts
         unit       gram
         value      1050
     retrans:
       3D_Heißluft HeatingMode.HotAir
       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
       Ober/Unterhitze HeatingMode.TopBottomHeating
       Pizza      HeatingMode.PizzaSetting
       Pizzastufe HeatingMode.PizzaSetting
       Pyrolyse   Cleaning.Pyrolysis
       Sabbateinstellung HeatingMode.SabbathProgramme
       Sanftgaren HeatingMode.SlowCook
       Umluftgrillen HeatingMode.HotAirGrilling
       Unterhitze HeatingMode.BottomHeating
       Vorheizen  HeatingMode.PreHeating
       Warmhalten HeatingMode.KeepWarm
     sets:
     settings:
       AlarmClock:
         name       BSH.Common.Setting.AlarmClock
         trans      Alarm
         unit       seconds
         value      0
       ChildLock:
         name       BSH.Common.Setting.ChildLock
         trans      Kindersicherung
         value      Off
         values     On,Off
       PowerState:
         name       BSH.Common.Setting.PowerState
         trans      Energiezustand
         type       BSH.Common.EnumType.PowerState
         value      On
         values     On,Off
       SabbathMode:
         name       Cooking.Oven.Setting.SabbathMode
         trans      Sabbat Modus
         value      Off
         values     On,Off
     status:
       CurrentCavityTemperature:
         name       Cooking.Oven.Status.CurrentCavityTemperature
         unit       °C
         value      140
       DoorState:
         name       BSH.Common.Status.DoorState
         trans      Tür
         type       BSH.Common.EnumType.DoorState
         value      Closed
       LocalControlActive:
         name       BSH.Common.Status.LocalControlActive
         trans      Lokale Bedienung aktiv
         value      Off
         values     On,Off
       OperationState:
         name       BSH.Common.Status.OperationState
         trans      Betriebsstatus
         type       BSH.Common.EnumType.OperationState
         value      Inactive
       RemoteControlActive:
         name       BSH.Common.Status.RemoteControlActive
         trans      Fernbedienung
         value      On
         values     On,Off
       RemoteControlStartAllowed:
         name       BSH.Common.Status.RemoteControlStartAllowed
         trans      Fernstart
         value      On
         values     On,Off
     trans:
       Cleaning.Pyrolysis Pyrolyse
       HeatingMode.BottomHeating Unterhitze
       HeatingMode.Defrost Auftauen
       HeatingMode.GrillLargeArea Flächengrill
       HeatingMode.HotAir 3D_Heißluft
       HeatingMode.HotAirGentle HeißluftSchonend
       HeatingMode.HotAirGrilling Umluftgrillen
       HeatingMode.KeepWarm Warmhalten
       HeatingMode.PizzaSetting Pizzastufe
       HeatingMode.PreHeating Vorheizen
       HeatingMode.SabbathProgramme Sabbateinstellung
       HeatingMode.SlowCook Sanftgaren
       HeatingMode.TopBottomHeating Ober-/Unterhitze
   helper:
     ActiveProgram KeepWarm
     autostart  0
     clear      0
     details    1
     elapsed    55
     eventChannelTimeout 1737898381.57934
     init       1
     init_count 3
     key        Cooking.Oven.Program.HeatingMode.KeepWarm
     options    1
     programs   1
     remaining  5
     retrycounter 0
     settings   1
     stateupdate 0
     status     1
Attributes:
   alias      Backofen
   devStateIcon Offline:scene_baking_oven@red Inactive:scene_baking_oven@black Ready:scene_baking_oven@blue Finished:scene_baking_oven@orange Delayed.*:scene_baking_oven_delay@green Run.*:scene_baking_oven@green
   excludeSettings
   group      Kochen
   room       Kontrollraum
   sortby     3
   stateFormat {my $opstate=ReadingsVal("HBG4785B6","Status.OperationState","");
 my $pstate=ReadingsNum("HBG4785B6","Setting.PowerState",0);
 my $open=ReadingsVal("HBG4785B6","Status.DoorState","");
 my $state1=ReadingsVal("HBG4785B6","state1","");
 $state1=~s/\(Fertig\)//;
 my $state2=ReadingsVal("HBG4785B6","state2","");
 if( $pstate eq "Off"){
   $opstate="Inactive";
   $state1="Ruhezustand";
 }
 $state2=(($state2 ne "-")?"<br/>\n".$state2:" ");
 my $temp=ReadingsNum("HBG4785B6","Status.CurrentCavityTemperature",0);
 if( $temp > 25  && $opstate ne "Inactive"){
   $state1.=", $temp °C";
 }
 my $alarm=ReadingsNum("HBG4785B6","Setting.AlarmClock"," ");
 my $astate=(($alarm!=0)?"<br/>\n".ReadingsVal("HBG4785B6","Option.AlarmAtHHMM",""):" ");
 sprintf("<p align=\"left\">\n%s\n<br/>%s\n%s%s</p>",$opstate,$state1,$state2,$astate);
}
   userReadings temperature: Status.CurrentCavityTemperature.*{ReadingsNum("HBG4785B6","Status.CurrentCavityTemperature",0)}
   webCmd     :

Übrigens wurde mir zu keiner Zeit die Option zum Setzen der Temperatur angeboten.

LG

pah
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 26 Januar 2025, 15:29:50
Zitat von: isy am 26 Januar 2025, 14:22:09- Programm "4D Heißluft, Schnellaufheizen" läuft seit 5 Minuten (als ich diese Info schrieb). List auch von dieser Zeit
So heisst das Programm wohl offiziell (in der APP auch?)
Zitat- Status FHEM "(20 °C)"
- set "OpenDoor" und set "PartlyOpenDoor" werden angeboten
Ja, jetzt generell für Öfen. Wenn du das allerdings erfolglos versuchst, müssten die Settings in der excludeSettings Liste landen und zukünftig nicht mehr angeboten werden. Klappt das?

ZitatIn der HC App wird übrigens keine Temperatur angezeigt (!). Die eigene API überträgt also bei diesem Ofen auch keine Temperatur.
Das ist natürlich schwer abzubilden, weil es ja bei anderen Öfen sehr wohl funktioniert.
Eventuell brauchen wir da noch ein Attribut um Readings individuell komplett auszuschließen....
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 26 Januar 2025, 16:15:49
Zitat4D Heißluft

    ,,Der Reiseführer Per Anhalter durch die Galaxis definiert die Marketing-Abteilung der Sirius-Kybernetik-Corporation als »ein Rudel hirnloser Irrer, die als erste an die Wand gestellt werden, wenn die Revolution kommt« [...]. Komischerweise definierte ein Exemplar der Encyclopaedia Galactica, das das große Glück hatte, aus der tausend Jahre entfernten Zukunft herauszufallen, die Marketing-Abteilung der Sirius-Kybernetik-Corporation als »ein Rudel hirnloser Irrer, die als erste an die Wand gestellt wurden, als die Revolution kam«."

LG

pah
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 26 Januar 2025, 16:48:46
Zitat von: Prof. Dr. Peter Henning am 26 Januar 2025, 11:15:52Keine Funktion
- set SelectedProgram ==> Fehlermeldung "Unknown program feature key: Cooking.Oven.Program"
- set StartProgram bei SelectedProgram (möglicherweise Folgefehler zum obigen)
Hier wurden an einer Stelle die Programmnamen noch zu übereifrig gekürzt. Ich kann das jetzt schwer testen - bitte mal probieren ob die aktuelle Version besser ist (und nichts verschlimmbessert)
Zitat- set Duration bei voreingestelltem Garprogramm
Hier stimmte schonmal der Parameter nicht - er erwartet hier Sekunden - und wie das Beispiel zeigt ist das nicht userfreundlich.
Jetzt sollte es bei Zeitangaben möglich sein beliebig
<Zahl in Sekunden>
<HH:MM>
<Zahl> hour(s)
<Zahl> min(utes)
<Zahl> h
einzugeben. Bei Unsinn sollte ein Fehler kommen.
Zitat- set StartProgram bei voreingestelltem Garprogramm
Dürfte auch mit den Programmnamen zusammenhängen. Bitte testen.
Zitat- set PauseProgram
- Die Befehle set xxx OpenDoor und set xxx PartlyOpenDoor machen wenig Sinn, das sind ja keine setzbaren Optionen.
Jetzt sollten auch Unsupported Commands in der Exclude Liste landen und somit nach einmaliger Verwendung nicht mehr angeboten werden. PauseProgram wird von deinem Gerät nicht unterstützt.
Zitat- Bei den wählbaren Programmen wird "Sabbateinstellungen" angeboten. Ist m.E. nicht korrekt, dafür gibt es ja den SabbathMode
Das Programm wird aber tatsächlich von deinem Gerät geliefert - warum auch immer...
Zitat- Bei voreingestelltem Garprogramm erfolt keine Übersetzung => Dish.Automatic.Conv.PastaBake wird als wählbares Programm angezeigt
- Bei den angebotenen Programmen wird zwar sehr schön die Übersetzung angezeigt, z.B. "Warmhalten". Im state1 allerdings heißt es dann "KeepWarm"
Auch eventuell ein Effekt durch die verkürzten Namen - erstmal testen ob das schon geholfen hat.

ZitatFunktionen der App, die noch nicht mit dem Modul funktionieren
- Garraumbeleuchtung an/aus
Dazu habe ich in der API nichts gefunden und in der App gibt es dutzende seltsame Keys mit "light" aber nichts vernünftiges. -> Geht wohl nicht
Zitat- Start des gewählten Programms
- Start des voreingestellten Garprogramms nach einem Stop
Wieder evtl. Thema Programmnamen.
Zitat- Einstellung des Gewichts bei voreingestelltem Garprogramm
Könnte jetzt gehen. Ich hab hier analog zu der Duration etwas komfort eingebaut, so dass auch sowas wie "1.5 kg" geht und Fehleingaben von <20 (Gramm) angemeckert werden.

Danke fürs detaillierte Feedback,
Jörg

P.S Als erster Schnelltest wurde mir schonmal ein "list" nach get Programs und dann Programmwahl am Gerät reichen. Mal sehen was dann in den internen Readings steht.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 26 Januar 2025, 19:13:25
Hallo Jörg, die set für door.... werden nicht herausgenommen.
- lastErr Command: BSH.Common.Command.PartlyOpenDoor not supported
wurde aber gesetzt bei den Readings.

Ja, und in der App nennen die Entwickler das Programm echt 4D Heißluft. Am Ofen heißt es 3D Heißluft.
Sollte wohl eher ein Tippfehler sein, als eine Thematik im Bereich der Relativitätstheorie.... -)
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 26 Januar 2025, 19:17:52
Das mit der Tür excluden geht erst seit der Version von heute nachmittags
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 26 Januar 2025, 19:18:28
Ok.
Neue Version ist geladen.
PartlyOpenDoor geht ins Attribut excludeSettings, OpenDoor bleibt erhalten. Manuell 2 eingetragene Ausschließungen bleiben wirkungslos
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Shadow3561 am 26 Januar 2025, 19:34:16
ZitatJa, und in der App nennen die Entwickler das Programm echt 4D Heißluft

An meinem Ofen heißt es 4D Heißluft
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Stonemuc am 26 Januar 2025, 23:43:05
Hier mal eine kleine Info aus der Kaufberatung von BSH:

ZitatMit 3D Heißluft können auf bis zu 3 Ebenen gleichzeitig und mit 4D Heißluft können auf bis zu 4 Ebenen gleichzeitig Speisen zubereitet werden
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 27 Januar 2025, 08:09:18
Zitat von: Stonemuc am 26 Januar 2025, 23:43:05Hier mal eine kleine Info aus der Kaufberatung von BSH:
Marketingabteilung  :) Da wissen wir ja welches Schicksal denen blüht ...

Was anderes:
Ich habe das Readme auf der Github Seite https://github.com/bublath/FHEM-HomeConnect etwas aufgebohrt um die Unterschiede zum Original Modul aufzulisten. Nachdem meine Änderungen auf denen von pah aufbauen, weiss ich nicht ob da noch was zum ursprünglichen Modul von swhome fehlt.
Schaut ihr mal drüber?

Jörg
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 30 Januar 2025, 15:26:52
@Shadow: Thema Waschtrockner nochmal. Hatte wieder eine Antwort von BSH - der schlägt jetzt sogar tatsächlich vor mal einen Teams Call zu machen. Bin gespannt.
Eine Frage die er hatte: Was kommt wenn wir programs/available abfragen.
Kannst du einfach testen mit:
set <device> anyRequest programs/availableIch denke ja da kommt einfach eine leere Liste - wie schon wenn einfach nur "programs" abgefragt wird, aber mal sehen.

Gerät muss nicht laufen, sollte aber eingeschaltet sein.

Jörg
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Shadow3561 am 30 Januar 2025, 15:32:19
Ich hoffe du hast den Teams Call erst nächste Woche. Komme erst am WE dazu dies zu testen. Melde mich dann mit dem Log
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 30 Januar 2025, 16:56:46
Bisher gibt es noch keinen Termin - und dann hab ich noch genug andere Fragen mit denen ich den Support löchern möchte :)
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Shadow3561 am 30 Januar 2025, 19:34:02
Hab jetzt mal alles über VPN erledigt.
Log anbei

Mit freundlichen Grüßen
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Prof. Dr. Peter Henning am 30 Januar 2025, 20:05:36
Zitat von: Adimarantis am 30 Januar 2025, 16:56:46Bisher gibt es noch keinen Termin - und dann hab ich noch genug andere Fragen mit denen ich den Support löchern möchte
Erst einmal Danke - im Namen Aller - für dieses Engagement.

Wie können wir das unterstützen?
- Fragenkatalog ausarbeiten?

LG

pah
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 31 Januar 2025, 13:14:30
Zitat von: Shadow3561 am 30 Januar 2025, 19:34:02Hab jetzt mal alles über VPN erledigt.
Super - wie ich vermutet hatte, ist die Antwort leer.
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 31 Januar 2025, 13:26:22
Zitat von: Prof. Dr. Peter Henning am 30 Januar 2025, 20:05:36Wie können wir das unterstützen?
- Fragenkatalog ausarbeiten?
Termin ist schon heute 15:00 - also wahrscheinlich zu kurzfristig um was auszuarbeiten.
Ich schreib mal meine Fragen, und wenn noch jemand dazu kommt was zu ergänzen, einfach posten.

Allgemein:
- Unterschiede "Dev API" und "productive API" (App)
- Wie sind die Pläne die "Dev API" besser zu machen/anzugleichen
- Kann die Open Source Community besser unterstützt werden (z.B. Verwendung der API ohne umständliche Registrierung als Developper)
- Kann man davon ausgehen, dass etwas, dass in der App geht, aber nicht in der Dev-API ein Problem der API und nichts des Geräts ist?
Technisch:
- Wie kann man mehr Events bekommen (statt den Status zu pollen) oder überhaupt bekommen (z.B. Flusensieb voll beim Trockner, aktuelle Programmphase Spülmaschine)?
- Wie können mehr Programme unterstützt werden (Favoriten/Downloaded Spülmaschine, Waschtrocker WNC244070 überhaupt, Automatik Programme Ofen HBG4785B6)?
- Wie können mehr Optionen unterstützt werden (z.B. Trockner "half load")
- Konsistentere Status Meldungen (manche Geräte schicken kein Power off/on)
- Wie erkennt man ob eine Option gesetzt werden kann oder es nur eine Info ist?
- Falsche Temperaturangaben Ofen (z.B. HB772G1B1)

Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 31 Januar 2025, 16:17:42
Kurzer Bericht:

Der BSH Kollege (sitzt in Polen) war sehr freundlich und interessiert. Ein paar meiner Anregungen will er definitiv prüfen, z.B. ein "StartProgram" Kommando mit dem wir die ganzen Probleme umgehen könnten, dass "Unknown Program" zurückkommt.
Leider ist die Entwicklung bei BSH sehr dezentral und die internen Richtlinien wie Home Connect zu implementieren ist, lassen wohl zu viele Freiräume. Ich hab hier angeregt ob sie nicht ein Zertifizierungsprogramm auflegen können, um zumindest die grundsätzlichen Dinge konsistent zu halten.
Denn Probleme wie beim Waschtrockner, der gar keine Programme liefert sind definitiv ein Bug. Da schicke ich ihm nochmal Details und er macht intern ein Ticket auf.

Die Dev API und die APP sind definitiv nicht direkt vergleichbar. Teilweise scheint die App sogar direkt (ohne Cloud) an das Gerät zu gehen, wobei sie dieses Verhalten mittelfristig abstellen wollen. Daraus kann man auch ersehen, warum gewisse Dinge nicht funktionieren bzw. gar nicht über API funktionieren können.

Es besteht definitv Bereitschaft sich mehr um die Open Source Community zu kümmern. Wir sind da evtl. gerade der "Pipecleaner" :) , allerdings ist der Mann mehr oder weniger Single Source und hat entsprechend nur begrenzte Kapazität.

Die Registrierung soll mit der Zusammenlegung von normalem Home Connect Account und Developer Account etwas einfacher werden, aber ob man das weiter vereinfachen kann (also z.B. gar keine "Secrets" mehr erzeugen, sondern einfach nur mit dem Account arbeiten) war er skeptisch.

Ich werde ihm jetzt einige Ideen und "Bugs" nochmal zusammenfassen und er adressiert das dann intern. Die Entwicklung läuft in 6-wöchigen Sprints - und der nächste fängt nächste Woche an, somit dürfte es ein wenig dauern, bis sich was tut. Er will mich dann auf jeden Fall auf dem Laufenden halten und ich hab jetzt auch seine direkte Email Adresse. Er ist auch bereit bei Gelegenheit mal wieder zu telefonieren um Updates zu liefern etc.


Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Shadow3561 am 31 Januar 2025, 16:28:41
Das sind doch gute Nachrichten. Dann hoffen wir mal, dass die Sirius Cybernetics Corporation nicht Marvin mit den Sachen betraut.

Auf alle Fälle ein Riesen Dankeschön für deine unerlässliche Arbeit mit dem Modul
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: isy am 31 Januar 2025, 16:37:09
Respekt vor deinem beispiellosem Engagement für FHEM und uns natürlich.
Vielen, vielen Dank dafür!

Deine Infos bestätigen recht gut deine und unsere Erfahrungen mit den diversen Inkonsistenzen.
Auch scheint es keine streng definierte SW-Development Guideline für die API's zu geben, ein großer Fehler seitens Siemens. Dazu habe ich auch Zweifel, ob die Implementierung in den jeweiligen Gerätetypen, also z.B. bei den Geschirrspülern o.ä. bestimmten Regeln folgt, oder ob die Entwickler das Lastenheft auch recht frei realisieren können.

Mit anderen Worten, es fehlt die Standardisierung in den Geräten und den API's.

Um so mehr Wert hat deine tolle Arbeit!

Viele Grüße,
Helmut


Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 06 Februar 2025, 17:49:33
Danke an alle für die Mitarbeit. Ich habe jetzt einen neuen "HomeConnect V2" Thread eröffnet, da ich denke, dass das Modul jetzt einen Reifegrad hat, der über eine Beta hinausgeht.

Jörg
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: 87insane am 13 Februar 2025, 15:22:52
Der Link wäre hier sicher gut :)
Titel: Aw: 48_HomeConnect.pm neue Überarbeitung
Beitrag von: Adimarantis am 13 Februar 2025, 15:42:44
Weiter geht's hier :)
https://forum.fhem.de/index.php?topic=140685.0