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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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.
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....
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","")." ; ; ;".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.
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
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.
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
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
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:-
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."
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
Ü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
Moin,
ich hänge mal meine verbastelte Version an.
Zumindest bei mir funktioniert das ausschalten vom GS und Waschtrockner damit.
Mit freundlichen Grüßen
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
@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
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
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
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
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.
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
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.
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
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.
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
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
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.SelectedProgram
Das 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
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.
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
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?
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
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?
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.
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.
So der Backofen ist jetzt auch neu.
Die Geräte sehen jetzt so aus
Im Backofen fällt noch ein Zeichensatzproblem "Â" auf:
Option.SetpointTemperature 180 °C 2025-01-05 10:45:13
Wie startet man eigentlich den Backofen jetzt?
Ein "set irgendwas", so wie bei der Spülmaschine, sehe ich nicht.
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.
Kein Problem, ein List vom Backofen Log und ein List vom Device in der Anlage sofort.
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)
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"
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.
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
Nach deletereading und FHEM Neustart erscheint die Temperatur neu:
Status.CurrentCavityTemperature 33 2025-01-05 12:08:57
Nur die Zahl, keine Einheit.
Der Wert ändert sich nicht, wenn die Temperatur steigt.
Siehe List vom Device und letztes Log
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 ;)
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
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.
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.
Ich kann leider im Moment nicht testen, weil ich seit 7 Stunden auf einem Landesparteitag herumhänge...
LG
pah
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.
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
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
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)
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.
Ich noch ein bisschen in den offiziellen Dokumenten gewühlt und dabei ist mir aufgefallen, dass wir ein
api/homeappliances/$hash->{haId}/programs/available
machen 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}/programs
und das schaut zumindest bei allen meinen Geräten weiterhin vernünftig aus.
Vielleicht hilfts....
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.
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.
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?
Zitat von: Adimarantis am 05 Januar 2025, 23:33:24.......aber immerhin denke ich das ich ein paar kleinere Bugs gefunden habe und für die Geräte Ofen, Coffeemaker und Kühlschrank die Statusmeldungen angepasst habe.
Moin!
Ich habe heute morgen die neue Version eingespielt und den Backofen getestet.
- Es wird nach "get status" das laufende Programm angezeigt, die IST-Temperatur und die aktuelle Laufzeit. Die Werte werde nicht automatisch aktualisiert.
- Programme werden sauber geladen.
Gerade getestet:
Das Reading Status.CurrentCavityTemperature zeigt die aktuelle Temp an, wie gesagt, nach manuellem get status ging sie auch 1 mal runter von 51 Grad auf 47.
Ich habe die Tür geöffnet und schaue, ob die Anzeige weiter runter geht.
--> Der Wert bleibt allerdings auch nach 60 Minuten bei 47 Grad konstant. Der Ofen zeigt 31 Grad.
--> Ich habe ein neues Programm gestartet. Statusanzeige: Ober/Unterhitze (0:01/47 °C)
--> Temp lt. Ofen jetzt 50 Grad, angezeigte Temp bleibt bei 47
--> Es gibt also zu bestimmten Zeiten neue Temp-Werte, unklar wann oder unter welchen Konditionen.
Ich werde die Daten noch länger beobachten, aber die aktuelle Entwicklung sieht gut aus! Super!
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
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.
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
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
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.
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.
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.)
"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
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.
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
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?
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.
Zitat:
ZitatHomeConnectConnection hat uralte Defaults für den accessScope.
Sehen wir Anwender die Änderungen vom Post oben irgendwo in FHEM?
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 -
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 :)
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
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?
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
@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.
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
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
Zitat von: Adimarantis am 07 Januar 2025, 17:02:33Zitat 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.
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.
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
Zitat von: Adimarantis am 08 Januar 2025, 07:57:46Zitat 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
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.
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.
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.
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.
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.
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)
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.
Zitat von: Adimarantis am 08 Januar 2025, 16:10:41Zitat 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
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
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
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 ...
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?
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 :)
Gerade noch ein Update im vorherigen Post gemacht. Log und List mit dabei
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 1
Dann spuckt er die call history aus und man weiss wer der Verursacher war - vorallem welche Zeile im Code.
Das war das alte GoE Modul, welches nicht mehr gepflegt wird. Werde bei Gelegenheit mal PaH's httpmod testen und dann löschen.
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?
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!
Gerade gesehen. "Option.FastPreHeat" und "SetpointTemperature" werden als "Option" angezeigt, nicht als "Setting".
Hat das was zu sagen?
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.
- 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
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.
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.
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.
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)
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.
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
Habe auf V1.11 geupdatet...jetzt sind alle devices verschwunden und kommen auch mit einem set ScanDevices nicht mehr zurück....
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.
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
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
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.
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
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.
Gute Idee mit dem Auslagern.
LG
pah
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)
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?
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?
In der Anlage die logs für den Geschirrspüler.
Alle Geräte wieder online. (Ohne etwas gemacht zu haben.)
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?
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"
}
]
}
}
Was sagt denn die Home Connect App? Da wäre ein gute Quercheck.
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.
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.
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
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.
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.
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.
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
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.
git Bedienerfehler.
Probiers nochmal, das neue File hat irgendwie gefehlt
Geräte sind wieder da, prima!
Später mehr.
Läuft alles wie bislang.
Der Backofen tut auch, was er so kann ;D
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
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....
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
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
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")
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
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.
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.
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!
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
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
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.
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.
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
@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'}};
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
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.
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)
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
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
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.
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
...
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
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
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.
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
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.
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?
Ja, das ist jetzt immer aktiv, weil ich die Readings für manche Dinge (z.B. Favorit Spülmaschine) zwingend brauche
Gut motd ist nach dem nä. Restart wieder weg :)
Modul läuft unverändert gut!
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.
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
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)
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
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
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.
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.
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
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.
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
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.....
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.
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
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.
Nächste Runde dann mit Log -:)
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)
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.
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?
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
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.
Zitat von: Shadow3561 am 18 Januar 2025, 14:47:40ZitatKannst 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.
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
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.
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
Nicht "StartProgram" sondern eine der "Delay..." Optionen. Z.B. "DelayRelative" mit Argument 0 - dann müsste es loslaufen
"Gestartet" ist es dann ja schon.
Ich habe als Set Optionen nur Power, startProgram, childlock und selectProgram
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
Im Logfile finde ich nicht dass er im DelayedStart ist.
Mach auch nochmal ein "get Status"
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
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)
probiere ich morgen aus und melde mich dann wieder.
Danke noch einmal für deine Hartnäckigkeit
Hallo Jörg,
hier meine neues Log zum Backofen.
Die Timeranzeige war, soweit ich das sehen konnte, auf ca. 1 Minute genau.
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
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.
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.
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
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
schade, ohne Funktion
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...
Zitat von: Shadow3561 am 24 Januar 2025, 18:39:41schade, ohne Funktion
>:( blödes Teil - jetzt bin ich mit den Ideen erstmal am Ende
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.
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"
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:
Hast du es mal so probiert?
$hash->{programs}=join(",\t",@dp);
Dann bleibt die Schriftart gleich 8)
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. :)
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.
Mhhhh,
das attr "stateUpdate" hat bei mir keinen Effekt.
Manuelles Update mit "get device ProgramStatus" funktioniert hingegen.
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?
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
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?
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
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.
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.
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
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....
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
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.
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.... -)
Das mit der Tür excluden geht erst seit der Version von heute nachmittags
Ok.
Neue Version ist geladen.
PartlyOpenDoor geht ins Attribut excludeSettings, OpenDoor bleibt erhalten. Manuell 2 eingetragene Ausschließungen bleiben wirkungslos
ZitatJa, und in der App nennen die Entwickler das Programm echt 4D Heißluft
An meinem Ofen heißt es 4D Heißluft
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
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
@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/available
Ich 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
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
Bisher gibt es noch keinen Termin - und dann hab ich noch genug andere Fragen mit denen ich den Support löchern möchte :)
Hab jetzt mal alles über VPN erledigt.
Log anbei
Mit freundlichen Grüßen
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
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.
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)
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.
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
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
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
Der Link wäre hier sicher gut :)
Weiter geht's hier :)
https://forum.fhem.de/index.php?topic=140685.0