FHEM Forum

FHEM - Hausautomations-Systeme => Home Connect => Thema gestartet von: Prof. Dr. Peter Henning am 11 September 2022, 09:28:52

Titel: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 11 September 2022, 09:28:52
Ich habe mich über die vollkommen unergonomischen Set-Befehle geärgert.

Anbei eine - vollkommen inoffizielle und nicht autorisierte - Version von 48_HomeConnect.pm, in welcher diese Befehle (zumindest in fast allen Fällen der mir zur Verfügung stehenden BSH-Geräte) solche kryptischen Kommandos wie

set <device> BSH.Common.Setting.ChildLock true

ersetzt durch

set <device> childLock on

Es fehlen noch ein paar Dinge, wie etwa das komfortable Setzen von Alarm- oder Verzögerungszeiten und die Auswahl eines Programms, das kommt noch.

Bitte mal testen und Wünsche  für Erweiterungen der Kommandos (z.B. auch für Kaffeemaschinen) hier posten.

LG

pah

Edit: Ich habe die Version noch einmal aktualisiert - jetzt können sowohl die Optionen gesetzt werden, die nur während des Programmlaufs möglich sind, als auch diejenigen, die nur vor dem Programmstart wählbar sind.
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Det20 am 11 September 2022, 09:35:13
Top!
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Stonemuc am 15 September 2022, 00:38:02
Ich muss mal kurz was zu diesem ganzen unergonomischen Zeug über die BSH Api sagen....es nervt mich total.
Kann man da was bei der Waschmaschine vereinfachen?

Den Geschirrspüler kann ich z.B. mit:
set SX758X06TE startProgram
starten - der läuft dann auch in jeglicher vorher eingestellter Variation der Programme und Zusatzoptionen an.

Bei der Waschmaschine sieht das ganz anders aus, denn mit:
set WAYH2841 startProgram
kommt nur die Fehlermeldung, dass ich ein Program auswählen muss...
Also gebe ich dann:
set WAYH2841 startProgram Mix
ein und die Maschine läuft an. Aber nur wenn auch Mix eingestellt ist am "Handrad" der Maschine.

Wenn ich da etwas automatisieren möchte per DOIF, ist das ein riesen Mist, da man dann die Programmbezeichnung splitten muss und das Programm dann erst starten kann - wenn er es zuvor denn auch richtig abgerufen hat was eingestellt ist, denn die readings aktualisieren sich auch nicht immer.

Gut wäre wenn man die Waschmaschine so wie den Geschirrspüler starten könnte...
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 15 September 2022, 13:05:55
Das ist auch bei meiner Waschmaschine das Ziel....

Ich denke, dass dieses dauernde Abfragen der Optionen, das immer wieder alle Auswahlmöglichkeiten durcheinander wirft, als nächstes herausgeworfen wird.

Das muss einmal geholt und dann dauerhaft als Attribut gespeichert werden.

LG

pah
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Stonemuc am 16 September 2022, 12:05:20
Danke, dass du dich darum kümmerst. Ich werde deine Version mal testen.
Ich bin leider programmiertechnisch eine richtige Niete...hab ich schon damals gemerkt, als ich mal das Vordiplom in Elektrotechnik gemacht habe....
Nen fertigen Code kann ich teilweise umschreiben mit Mühe und viel Zeit, aber was neues implementieren geht nicht.

Ich löse das bei der Waschmaschine aktuell mit dem Splitten des Programms...

Was mir noch einfällt - die Waschmaschine zeigt immer eine Sekunde Restlaufzeit an - warum auch immer. Kann man das noch irgendwie beheben? Oder ist das ein Fehler bei BSH in der API?
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 28 September 2022, 17:27:01
So, ich bin mal wieder etwas weiter. Programmauswahl und das Einstellen von Optionen etc. funktioniert bei der Spülmaschine schon ganz gut. Auch kann ich mit

set <Spülmaschine> selectProgram Quick45
set <Spülmaschine> delayType endtime
set <Spülmaschine> delayTime 06:00
set <Spülmaschine> startProgram

erreichen, dass die Spülmaschine mitten in der Nacht losläuft und um Punkt 06:00 in der Frühe fertig ist (andere Werte für delayType sind "relative" und "absolute". Da kann man raten, was die machen).

Beim Ofen funktioniert das Setzen des Alarms auf diese Weise schon ganz gut, auch progDuration geht zu setzen. Programmauswahl und Temperatur aber nicht :-((

Leider scheitern diese etwas komfortableren Befehle für den Ofen an "Insufficient scope" - also fehlenden Rechten von FHEM. Die 2017 mitgeteilten Ausreden von BSH, dass dieses vom Gesetzgeber nicht zugelassen sei, sind Unsinn - schließlich kann ich über die BSH  App den Ofen aus der Ferne starten.

Ich werde mich also als Nächstes der Waschmaschine widmen.

LG

pah

P.S.: Anbei die aktuelle Bastelversion des Moduls, sowie ein Icon für den verzögerten Start der Spülmaschine

EDIT: Ups, die zuerst angehängte Version hatte einen peinlichen Fehler drin, ist jetzt behoben.

Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Det20 am 28 September 2022, 18:29:09
Wie geil, gerade die Endzeit ist echt sinnvoll.
Danke dir!
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 29 September 2022, 12:37:09
Ein wenig kryptiscch ist das immer noch, weil mir noch die zündende Idee fehlt, das mit den relativ begrenzten Mitteln der normalen Widgets zu realisieren.

Derzeit ist der Ablauf so:

- Zuerst delayType wählen (relative, absolute oder endtime) bzw. alarmType (relative oder absolute).
- Dann delayTime bzw. alarmTime eingeben. Nur Ziffern => Anzahl der Sekunden

-- bei delayTime hh:mm => Stunden und Minuten, sagen wir 6:00
        Wenn delayType = relative => Starte in 6 Stunden
        Wenn delayType = absolute => Starte um 6:00 in der Frühe
        Wenn delayType = endtime => Starte so, dass das gewählte Programm um 6:00 in der Frühe zu Ende ist

-- denn bei alarmTime hh:mm:ss => optional Stunden, Minuten und Sekunden, sagen wir 04:30
        Wenn alarmType = relative => Alarm in 4 Minuten 30 Sekunden
        Wenn alarmType = absolute => Alarm um 4 Minuten und 30 Sekunden nach Mitternacht - nicht um 4:30 in der Frühe, dazu müsste man 04:30:00 eingeben

LG

pah

   
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 29 September 2022, 17:15:19
Die oben angehängte Version hatte noch einen neu eingebauten Fehler, den habe ich jetzt behoben.

LG

pah
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 11 Oktober 2022, 12:20:16
So, ich habe da jetzt noch etwas Arbeit hineingesteckt. Insbesondere hat sich im Betrieb herausgestellt, dass die Angabe "delaytype" und "delayTime" eben nicht sehr komfortabel ist. Stattdessen kann man jetzt eines der drei Kommandos "delayRelative", "delayStartTime", "delayEndTime" oder eines des beiden Kommandos "alarmRelative", "alarmEndTime" verwenden, um den verzögerten Start des Programms oder den Ablauf des Kurzzeitweckers _in_ einer relativen Zeitspanne oder _um_ eine bestimmte Zeit einzustellen.

Dazu gibt es jetzt eine schöns Sprachsteuerung. Meine Chefin muss also nur noch sagen:

"Lass die Spülmaschine bis um 6 Uhr laufen" - und bekommt einen verzögerten Start, der morgen früh um 6:00 abläuft.

LG

pah

P.S.: Waschmaschine ist als nächstes dran. Frage in die Runde: Hat irgendjemand einen Workaround gefunden, einen Backofen doch zu steuern?
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Supadone am 11 Oktober 2022, 13:49:22
Danke erstmal für deine Mühen :)
Falls es dir etwas hilft kann ich dir leider nur weitere Infos zu Kaffeemaschine und Dunstabzug anbieten.

Grüße

Andy
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 13 Oktober 2022, 11:17:56
Die würde ich tatsächlich auch gerne "richtig" steuern mit diesem Modul.

Sehn wir mal. Aktuell bin ich durch eine fette Omikron-Infektion ziemlich geerdet.

LG

pah
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Det20 am 07 November 2022, 11:12:00
Hallo,

leider läuft diese neue Version noch nicht rund. Sobald ich meinen Geschirrspüler mit "set ... startProgram" anschalten will (Fernstart ist aktiv), stürzt FHEM ab. Als Meldung sehe ich im Log nur


2022.11.07 11:09:43 1: [HomeConnect] SN578S06TD: starting program Eco50
Can't use an undefined value as a HASH reference at ./FHEM/48_HomeConnect.pm line 614.


... Obwohl Debug auf 2, Verbose auf 5 ist. Soweit ich mich erinnere, lief das aber schonmal. Glaube ich zumindest.
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 08 November 2022, 14:09:46
Öh, das tut mir leid - aber in meiner aktuell ganz gut laufenden Version ist in Zeile 614 ein Kommentar...

LG

pah
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Det20 am 08 November 2022, 19:16:02
Ok, versuche mal die von dir angehängte
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Det20 am 09 November 2022, 10:28:56
Hat leider nicht funktioniert, habe aber den Fehler gefunden. Folgende Readings habe ich:


BSH.Common.Setting.PowerState - BSH.Common.EnumType.PowerState.Off
BSH.Common.Status.DoorState - BSH.Common.EnumType.DoorState.Closed
BSH.Common.Status.OperationState - BSH.Common.EnumType.OperationState.Ready


Das Modul ist der Meinung, dass "PowerState" off ist (obwohl er an und Ready ist). Nachdem ich die Zeilen 575/576 sowie 714/715 auskommentiert habe, bin ich mit "startProgram" schonmal weitergekommen, allerdings musste ich noch ein Program wählen (obwohl "selectProgram" korrekt gefüllt war). Nachdem ich das mit "set ... selectProgram" gewählt habe, konnte ich den Geschirrspüler mit "startProgram" korrekt starten und es wird auch vom Modul erkannt, dass er läuft.

Wieso das Gerät als "Off" erkannt wird, konnte ich leider nicht prüfen, war dann froh, dass er an ist (bin im Büro).
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 09 November 2022, 11:24:01
OK, schau ich mir mit Priorität an.

LG

pah
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 11 November 2022, 15:50:15
Der Knackpunkt bei selectProgram ist, dass das Gerät das eingestellte Programm beim Abschalten vergisst - aber das Modul (noch nicht).

Einen Grund für den Crash habe ich nicht gefunden.

LG

pah

Edit: Kann es sein, dass das Modul bei Dir nicht in regelmäßigen Abständen beim Gerät anfragt? Attribut updateTimer hat welchen Wert?
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Det20 am 12 November 2022, 16:09:48
Danke. Aber wieso wird das Gerät als 'Power off' erkannt, obwohl es ready ist und sich auch (nach aus kommentieren) starten lässt?
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 12 November 2022, 16:59:23
Das überprüfe ich gerade ...

LG

pah
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Tomhri am 05 Januar 2023, 22:04:31
Hallo,

zur info, hatte für die Waschmaschie in  48_HomeConnect.pm

my @HomeConnect_SettablePgmOptions = (
  "BSH.Common.Option.FinishInRelative", hinzugefügt. Erste Tests waren erfolgversprechend.

Beim Geschirspüler frage ich ab ob BSH.Common.Status.RemoteControlActive gesetzt ist dan mit BSH.Common.Option.StartInRelative 60 seconds starte ich ihn (wenn genug Strom vorhanden ist).

LG
Thomas
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 27 Januar 2023, 05:44:47
So, eine Sache läuft jetzt stabil und mit sehr hohem WAF: Spülmaschine mit einem Tastendruck oder einem Sprachbefehl komplex programmieren.

Erste Komponente: Die oben gepostete "inoffizielle" Version des 48_HomeConnect.pm.

Zweite Komponente: Ein Dummy "Geschirrspuelen" mit Attributen

   defaultProgram Eco50
   readingList active
   setList    EndTime:time StartTime:time RelativeTime:time Program
   userattr   defaultProgram


Dritte Komponente: Ein DOIF mit der Definition
([SNxxx:".*BSH.Common.EnumType.OperationState.Finished.*"])
({speak("TText yyy",":130:")},
{speak("Tab1.EG",":130:")},
setreading SNxxx msgAll derzeit nicht)
DOELSEIF
([Geschirrspuelen:".*Time.*"] and [SNxxx] ne "Ready")
(set SNxxx powerOn,
  {Log 1,"=======> Powering on SNxxx"},
  setreading Geschirrspuelen event $EVENT,
  setreading Geschirrspuelen active wait)
DOELSEIF
( ([Geschirrspuelen:event] =~ /RelativeTime.*/ and [SNxxx:".*Ready.*"]) or ([Geschirrspuelen:".*RelativeTime.*"] and [SNxxx] eq "Ready") )
(set SNxxx selectProgram Eco50,
  {Log 1,"=======> Selecting Eco50 on SNxxx"})
(set SNxxx requestProgramOptions,
  {Log 1,"=======> Requesting options from SNxxx"})
(set SNxxx delayRelative {(my @evt = split(/ /,ReadingsVal("Geschirrspuelen","event",""));;Log 1,"=======> Setting SNxxxto relative delay $evt[1]";;return $evt[1])} )
(setreading Geschirrspuelen active start)
DOELSEIF
(([Geschirrspuelen:event] =~ /EndTime.*/ and [Sxxx:".*Ready.*"]) or ([Geschirrspuelen:".*EndTime.*"] and [SNxxx] eq "Ready"))
(set SNxxx selectProgram Eco50,
  {Log 1,"=======> Selecting Eco50 on SNxxx"})
(set SNxxx requestProgramOptions,
  {Log 1,"=======> Requesting options from SNxxx"})
(set SNxxx delayEndTime {(my @evt = split(/ /,ReadingsVal("Geschirrspuelen","event",""));;Log 1,"=======> Setting SNxxx to endtime delay $evt[1]";;return $evt[1])} )
(setreading Geschirrspuelen active start)
DOELSEIF
(([Geschirrspuelen:event] =~ /StartTime.*/ and [SNxxx:".*Ready.*"]) or ([Geschirrspuelen:".*StartTime.*"] and [SNxxx] eq "Ready"))
(set SNxxx selectProgram Eco50,
  {Log 1,"=======> Selecting Eco50 on SNxxx"})
(set SNxxx requestProgramOptions,
  {Log 1,"=======> Requesting options from SNxxx"})
(set SNxxx delayStartTime {(my @evt = split(/ /,ReadingsVal("Geschirrspuelen","event",""));;Log 1,"=======> Setting SNxxx to starttime delay $evt[1]";;return $evt[1])} )
(setreading Geschirrspuelen active start)
DOELSEIF
([Geschirrspuelen:active] eq "start" and [Sxxx:".*BSH.Common.Option.StartInRelative.*"] )
(set SNxxx startProgram,
{Log 1,"=======> Delayed start SNxxx"})
(setreading Geschirrspuelen event -,
  setreading Geschirrspuelen active no)


und Attributen
do         always
   wait       0:0:5,10,10,2:5,10,10,2:5,10,10,2:0


Mit diesen Komponenten läuft das schon so:

set Geschirrspuelen endTime 06:00 => Spülmaschine wird hochgefahren, Programm ausgewählt und die Startverzögerung so eingestellt, dass die Kiste um 6:00 in der Frühe fertig ist.

set Geschirrspuelen startTime 17:00 => Spülmaschine wird hochgefahren, Programm ausgewählt und die Startverzögerung so eingestellt, dass die Kiste um 17:00 startet

set Geschirrspuelen relativeTime 02:00 => Spülmaschine wird hochgefahren, Programm ausgewählt und die Startverzögerung so eingestellt, dass die Kiste in 2 Stunden startet.

Und sich danach mit einer Sprachausgabe meldet (:130: ist der Code für eine vor-aufgenommene Nachricht "Die Spülmaschine ist fertig"), die einmal über ein wandhängendes Tablet ausgegeben wird und zweitens meiner Chefin auch als Telegram-Nachricht gesendet wird. Der Start wird natürlich meiner Chefin auch in einem Telegram-Keyboard angeboten, so dass das mit _einem_ Knopf auf dem Handy geht.

Vierte Komponente: Ein Eintrag für den entsprechenden Dialog in meinem RiveScript-Chatbot (der Bestandteil des Moduls Babble ist):
//########################################################################################
//# Spülmaschine
//########################################################################################

+ (starte|schalte|mach) die spülmaschine um * uhr [an]
- OK, ich starte die Spülmaschine um <star2> Uhr 
^ <call>startdishwasher <star2></call>

+ (dass|lass|lasse) die spülmaschine laufen (bis|um) [um] * uhr
* <star2> == bis => OK, ich lasse die Spülmaschine laufen bis um <star3> 
^ <call>stopdishwasher <star3></call>
* <star2> != bis => OK, ich lasse die Spülmaschine laufen um <star3> 
^ <call>startdishwasher <star3></call>

+ (dass|lass|lasse) die spülmaschine [laufen] über nacht [laufen]
- OK, ich lasse die Spülmaschine laufen bis um 6 Uhr
^ <call>stopdishwasher 6:00</call>

+ (starte|schalte|mach) die spülmaschine (sofort|jetzt) [an]
- OK, ich starte die Spülmaschine sofort

//object for delayed start of dishwasher
> object startdishwasher perl
  my $rs = shift;
  my $st = join(" ",@_);
  $st =~ s/(\d?\d)\suhr\s(\d?\d)/$1\:$2/;
  $st =~ s/^(\d?\d)$/$1\:00/;
  main::Log 1,"[rive] startdishwasher $st";
  main::fhem("set Geschirrspuelen StartTime $st");
< object

//object for delayed stop of dishwasher
> object stopdishwasher perl
  my $rs = shift;
  my $st = join(" ",@_);
  $st =~ s/(\d?\d)\suhr\s(\d?\d)/$1\:$2/;
  $st =~ s/^(\d?\d)$/$1\:00/;
  main::Log 1,"[rive] stopdishwasher $st";
  main::fhem("set Geschirrspuelen EndTime $st");
< object


Et voilà: Mit den Sprachbefehlen
"Hallo Jeannie" <pling, Tablet wartet auf Spracheingabe>
"Lass die Spülmaschine über Nacht laufen" <Jeannie antwortet mit Sprachausgabe "OK, ich lasse die Spülmaschine laufen bis um 6 Uhr">

wird die Kiste so gestartet, dass sie um 6:00 fertig ist.

LG

pah
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 26 Februar 2023, 17:37:32
So, ich habe in das Modul jetzt eine Menge Arbeit investiert.

Ganz fertig ist das Ding noch nicht, aber immerhin ist es jetzt besser konform mit der API-Dokumentation von BSH.

Das Frontend ist jetzt mehrsprachig (Sprache wird durch die globale Spracheinstellung festgelegt), derzeit sind nur DE und EN implementiert.

All die unmöglichen Prefixes werden automatisch entfernt - es sei denn, dass man das Attribut includePrefixes auf 1 setzt.

- Spülmaschine: Voll bedienbar, alle Features möglich. Es fehlt noch: Im "Set" nur die Optionen anzubieten, die das gewählte Programm ermöglicht.
- Waschmaschine: Noch nicht fernstartbar, bei verzögertem Start mit der App werden zwar alle Daten korrekt angezeigt, mit dem Setzen hapert es aber noch
- Backofen: Wegen der Sperre des API durch BSH ist nur der Kurzzeitwecker ("Alarm") fernbedienbar, aber alle Anzeigen erfolgen korrekt.
- Kochfeld: Wegen generellen Sicherheitsstufe ist nur der Kurzzeitwecker ("Alarm") fernbedienbar, aber alle Anzeigen erfolgen korrekt.

Für alle anderen BSH-Hausgeräte ist das zumindest besser vorbereitet, als die Originalversion des Moduls.

Für jede Art von Feedback wäre ich dankbar.

LG

pah

P.S.: Und noch einmal die Warnung: Es handelt sich um eine vollkommen unoffizielle Alpha-Version des Moduls, nur für Testzwecke.
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 28 Februar 2023, 17:49:53
So, die wesentlichen Defizite sind behoben, auch eine Waschmaschine lässt sich jetzt damit wunderbar steuern :-)
Das Modul generiert immer noch eine Masse von Debug-Ausgaben im Log. Es wäre schöne, wenn jemand das mit anderen Geräten testen könnte:
FridgeFreezer, Coffeemaker.

Und zwar immer in der Sequenz (natürlich nur, sofern das Ding über Programme und/oder verzögerten Start verfügt):

- Get Settings
- Get Programs
- Set selectProgram <program>
- Get ProgramOptions
- Set delayEndTime 08:30
- Set startProgram

Nachdem das alles noch ein wenig versäubert wurde, werde ich mit ein wenig JavaScript dafür sorgen, dass die einstellbaren Optionen in der Detailansicht des Devices eingeblendet werden. So halb funktioniert das schon, siehe Bild

LG

pah
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: olbetec am 01 März 2023, 08:23:29
Ich erhalte mit einem FridgeFreezer noch tr_DoorState mit dem Türstatus auf Deutsch, tr_State1, tr_State2 ohne Inhalt. Bei GetSettings werden die Readings alle noch einmal mit Präfix eingelesen, obwohl ich sie vorher gelöscht habe. (Ja, hatte das Device gelöscht und neu angelegt). Beim ersten Setzen eines Wertes legt er ein neues Reading ohne Präfix brav an. Momentan nimmt er kein set mehr an, weder mit noch ohne Suffix der Einheit, sowohl mit als auch ohne Präfix. Im Log steht nix außer der Updatemeldung bei getSettings.
Ich propiere weiter....
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Supadone am 01 März 2023, 09:21:46
Vielen Dank für deine Mühe :)

Ein List eines Coffeemakers:
Internals:
   CFGFN     
   DEF        hcconn SIEMENS-TI909701HC-68A40E15C2B9
   FUUID      63fdcdfe-f33f-1d25-6da3-4a17987f502e7e5e
   NAME       TI909701HC
   NR         946
   STATE     
   TYPE       HomeConnect
   aliasname  Kaffeevollautomat
   brand      Siemens
   commandPrefix ConsumerProducts.CoffeeMaker.Program.
   eventChannelTimeout 1677659072.02661
   eventCount 390
   events     BeanContainerEmpty,WaterTankEmpty,DripTrayFull
   haId       SIEMENS-TI909701HC-68A40E15C2B9
   hcconn     hcconn
   prefix     ConsumerProducts.CoffeeMaker
   programs   Beverage.Ristretto,Beverage.EspressoDoppio,Beverage.Espresso,Beverage.EspressoMacchiato,Beverage.Coffee,Beverage.Cappuccino,Beverage.LatteMacchiato,Beverage.CaffeLatte,Beverage.MilkFroth,Beverage.WarmMilk,CoffeeWorld.KleinerBrauner,CoffeeWorld.GrosserBrauner,CoffeeWorld.Verlaengerter,CoffeeWorld.VerlaengerterBraun,CoffeeWorld.WienerMelange,CoffeeWorld.FlatWhite,CoffeeWorld.Cortado,CoffeeWorld.CafeCortado,CoffeeWorld.CafeConLeche,CoffeeWorld.CafeAuLait,CoffeeWorld.Kaapi,CoffeeWorld.KoffieVerkeerd,CoffeeWorld.Galao,CoffeeWorld.Garoto,CoffeeWorld.Americano,CoffeeWorld.RedEye,CoffeeWorld.BlackEye,CoffeeWorld.DeadEye
   retrycounter 0
   settings   PowerState,ChildLock,ConsumerProducts.CoffeeMaker.Setting.CupWarmer
   type       CoffeeMaker
   vib        TI909701HC
   READINGS:
     2023-03-01 08:46:56   BSH.Common.Option.ProgramProgress 0 %
     2023-03-01 08:46:51   BSH.Common.Root.ActiveProgram -
     2023-03-01 08:46:51   BSH.Common.Root.SelectedProgram Beverage.Cappuccino
     2023-02-28 17:48:05   BSH.Common.Setting.PowerState BSH.Common.EnumType.PowerState.Standby
     2023-03-01 08:31:32   BSH.Common.Status.DoorState BSH.Common.EnumType.DoorState.Closed
     2023-03-01 08:45:20   BSH.Common.Status.LocalControlActive 0
     2023-03-01 08:46:51   BSH.Common.Status.OperationState BSH.Common.EnumType.OperationState.Ready
     2023-03-01 08:31:32   BSH.Common.Status.RemoteControlStartAllowed 1
     2023-03-01 09:14:33   BeanAmount      ConsumerProducts.CoffeeMaker.EnumType.BeanAmount.VeryStrong
     2023-03-01 09:14:33   BeanContainerSelection ConsumerProducts.CoffeeMaker.EnumType.BeanContainerSelection.Right
     2023-03-01 09:09:19   ChildLock       0
     2023-02-28 13:06:26   ConsumerProducts.CoffeeMaker.Event.DripTrayFull BSH.Common.EnumType.EventPresentState.Off
     2023-03-01 08:31:59   ConsumerProducts.CoffeeMaker.Option.BeanAmount ConsumerProducts.CoffeeMaker.EnumType.BeanAmount.VeryStrongPlus
     2023-03-01 08:31:59   ConsumerProducts.CoffeeMaker.Option.BeanContainerSelection ConsumerProducts.CoffeeMaker.EnumType.BeanContainerSelection.Left
     2023-03-01 08:31:59   ConsumerProducts.CoffeeMaker.Option.CoffeeTemperature ConsumerProducts.CoffeeMaker.EnumType.CoffeeTemperature.94C
     2023-03-01 08:31:59   ConsumerProducts.CoffeeMaker.Option.FillQuantity 160 ml
     2023-03-01 08:31:59   ConsumerProducts.CoffeeMaker.Option.FlowRate ConsumerProducts.CoffeeMaker.EnumType.FlowRate.Intense
     2023-03-01 09:09:19   ConsumerProducts.CoffeeMaker.Setting.CupWarmer 0
     2023-03-01 08:31:32   ConsumerProducts.CoffeeMaker.Status.BeverageCounterCoffee 1724
     2023-03-01 08:46:56   ConsumerProducts.CoffeeMaker.Status.BeverageCounterCoffeeAndMilk 2058
     2023-03-01 08:31:32   ConsumerProducts.CoffeeMaker.Status.BeverageCounterFrothyMilk 103
     2023-03-01 08:31:32   ConsumerProducts.CoffeeMaker.Status.BeverageCounterHotMilk 83
     2023-03-01 08:31:32   ConsumerProducts.CoffeeMaker.Status.BeverageCounterHotWater 45214 ml
     2023-03-01 08:31:32   ConsumerProducts.CoffeeMaker.Status.BeverageCounterPowderCoffee 0
     2023-03-01 08:31:32   ConsumerProducts.CoffeeMaker.Status.BeverageCounterRistrettoEspresso 72
     2023-03-01 09:14:33   FillQuantity    120 ml
     2023-03-01 09:14:33   FlowRate        ConsumerProducts.CoffeeMaker.EnumType.FlowRate.Normal
     2023-03-01 09:09:19   PowerState      On
     2023-03-01 09:14:33   SelectedProgram Beverage.Coffee
     2023-03-01 09:14:33   state           
     2023-03-01 09:14:33   tr_State1       
     2023-03-01 09:14:33   tr_State2       
   helper:
     bm:
       HomeConnect_Define:
         cnt        1
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        28.02. 10:48:46
         max        5.60283660888672e-05
         tot        5.60283660888672e-05
         mAr:
           HASH(0x559a4cf260)
           TI909701HC HomeConnect hcconn SIEMENS-TI909701HC-68A40E15C2B9
       HomeConnect_Get:
         cnt        14
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        01.03. 09:12:53
         max        0.00340008735656738
         tot        0.00759792327880859
         mAr:
           HASH(0x559a4cf260)
           TI909701HC
           Programs
       HomeConnect_Set:
         cnt        51
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        01.03. 09:14:31
         max        0.00254201889038086
         tot        0.0154819488525391
         mAr:
           HASH(0x559a4cf260)
           TI909701HC
           selectProgram
           Beverage.Coffee


Und hier die Logausgaben:

Get Settings:

2023.03.01 09:09:19.700 1: [HomeConnect_ResponseGetSettings] TI909701HC: get settings response {
  "data": {
    "settings": [{
      "key": "BSH.Common.Setting.ChildLock",
      "value": false
    }, {
      "key": "BSH.Common.Setting.PowerState",
      "value": "BSH.Common.EnumType.PowerState.On"
    }, {
      "key": "ConsumerProducts.CoffeeMaker.Setting.CupWarmer",
      "value": false
    }]
  }
}
2023.03.01 09:09:19.702 1: [HomeConnect_ResponseGetSettings] TI909701HC: updating setting PowerState to On
2023.03.01 09:09:19.702 1: [HomeConnect_ResponseGetSettings] TI909701HC: updating setting ChildLock to 0
2023.03.01 09:09:19.703 1: [HomeConnect_ResponseGetSettings] TI909701HC: updating setting ConsumerProducts.CoffeeMaker.Setting.CupWarmer to 0


Get Programs:
2023.03.01 09:12:53.169 1: [HomeConnect_ResponseGetPrograms] TI909701HC: get programs response {
  "data": {
    "programs": [{
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.Beverage.Ristretto"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.Beverage.EspressoDoppio"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.Beverage.Espresso"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.Beverage.EspressoMacchiato"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.Beverage.Coffee"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.Beverage.Cappuccino"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.Beverage.LatteMacchiato"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.Beverage.CaffeLatte"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.Beverage.MilkFroth"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.Beverage.WarmMilk"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.KleinerBrauner"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.GrosserBrauner"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.Verlaengerter"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.VerlaengerterBraun"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.WienerMelange"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.FlatWhite"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.Cortado"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.CafeCortado"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.CafeConLeche"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.CafeAuLait"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.Kaapi"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.KoffieVerkeerd"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.Galao"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.Garoto"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.Americano"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.RedEye"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.BlackEye"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.DeadEye"
    }]
  }
}


Set selectProgram Beverage.Coffee
2023.03.01 09:14:31.370 3: [HomeConnect] TI909701HC: set command: selectProgram
2023.03.01 09:14:31.370 1: [HomeConnect] command to select program Beverage.Coffee
2023.03.01 09:14:33.884 1: [HomeConnect_ReadEventChannel] TI909701HC: SelectedProgram = Beverage.Coffee
2023.03.01 09:14:33.899 1: [HomeConnect_ReadEventChannel] TI909701HC: BeanAmount = ConsumerProducts.CoffeeMaker.EnumType.BeanAmount.VeryStrong
2023.03.01 09:14:33.899 1: [HomeConnect_ReadEventChannel] TI909701HC: FillQuantity = 120
2023.03.01 09:14:33.900 1: [HomeConnect_ReadEventChannel] TI909701HC: FlowRate = ConsumerProducts.CoffeeMaker.EnumType.FlowRate.Normal
2023.03.01 09:14:33.900 1: [HomeConnect_ReadEventChannel] TI909701HC: BeanContainerSelection = ConsumerProducts.CoffeeMaker.EnumType.BeanContainerSelection.Right


GetProgrammOptions
2023.03.01 09:16:37.955 1: [HomeConnect_ResponseGetPrograms] TI909701HC: get programs response {
  "data": {
    "programs": [{
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.Beverage.Ristretto"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.Beverage.EspressoDoppio"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.Beverage.Espresso"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.Beverage.EspressoMacchiato"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.Beverage.Coffee"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.Beverage.Cappuccino"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.Beverage.LatteMacchiato"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.Beverage.CaffeLatte"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.Beverage.MilkFroth"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.Beverage.WarmMilk"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.KleinerBrauner"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.GrosserBrauner"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.Verlaengerter"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.VerlaengerterBraun"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.WienerMelange"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.FlatWhite"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.Cortado"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.CafeCortado"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.CafeConLeche"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.CafeAuLait"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.Kaapi"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.KoffieVerkeerd"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.Galao"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.Garoto"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.Americano"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.RedEye"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.BlackEye"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld.DeadEye"
    }]
  }
}


Was ich jedoch vermisse ist ein Set startProgram. So ist es momentan leider noch nicht möglich über das Modul einen Kaffeebezug nicht nur auszuwählen sondern auch wirklich zu starten.

Grüße

Andy
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 01 März 2023, 09:34:19
@Supadone: Prima, das hilft weiter. Ich habe heute noch etwas Zeit, das sollte also bis heute abend behoben sein.

LG

pah
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Supadone am 01 März 2023, 09:34:50
Eine Dunstabzugshaube habe ich auch noch im Angebot:

List:
Internals:
   CFGFN     
   DEF        hcconn SIEMENS-LC97FMR60-68A40E083938
   FUUID      63fdcdfe-f33f-1d25-0a70-dd0171c1c6c57cef
   NAME       LC97FMR60
   NR         947
   STATE      Idle
   TYPE       HomeConnect
   aliasname  Dunstabzugshaube
   brand      Siemens
   commandPrefix Cooking.Common.Program.Hood.
   eventChannelTimeout 1677659518.03777
   eventCount 31
   events     GreaseFilterMaxSaturationNearlyReached,GreaseFilterMaxSaturationReached
   haId       SIEMENS-LC97FMR60-68A40E083938
   hcconn     hcconn
   prefix     Cooking.Hob
   programs   Cooking.Common.Program.Hood.Automatic,Cooking.Common.Program.Hood.Venting,Cooking.Common.Program.Hood.DelayedShutOff
   retrycounter 0
   settings   Cooking.Common.Setting.LightingBrightness,PowerState,Cooking.Common.Setting.Lighting
   type       Hood
   vib        LC97FMR60
   READINGS:
     2023-02-28 20:04:23   BSH.Common.Status.LocalControlActive 0
     2023-02-28 10:50:42   BSH.Common.Status.OperationState BSH.Common.EnumType.OperationState.Inactive
     2023-02-28 10:50:42   BSH.Common.Status.RemoteControlActive 1
     2023-02-28 10:50:42   BSH.Common.Status.RemoteControlStartAllowed 1
     2023-03-01 09:29:02   Cooking.Common.Setting.Lighting 0
     2023-03-01 09:29:02   Cooking.Common.Setting.LightingBrightness 10 %
     2023-03-01 09:29:02   PowerState      Off
     2023-02-28 14:07:49   state           Idle
   helper:
     bm:
       HomeConnect_Define:
         cnt        1
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        28.02. 10:48:46
         max        3.29017639160156e-05
         tot        3.29017639160156e-05
         mAr:
           HASH(0x559bac2300)
           LC97FMR60 HomeConnect hcconn SIEMENS-LC97FMR60-68A40E083938
       HomeConnect_Get:
         cnt        23
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        01.03. 09:29:02
         max        0.00422811508178711
         tot        0.00843715667724609
         mAr:
           HASH(0x559bac2300)
           LC97FMR60
           Settings
       HomeConnect_Set:
         cnt        70
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        01.03. 09:31:53
         max        0.00573182106018066
         tot        0.0372574329376221
         mAr:
           HASH(0x559bac2300)
           LC97FMR60
           PowerState
           On


Get Programs:
2023.03.01 09:27:58.484 1: [HomeConnect_ResponseGetPrograms] LC97FMR60: get programs response {
  "data": {
    "programs": [{
      "constraints": {
        "execution": "startonly"
      },
      "key": "Cooking.Common.Program.Hood.Automatic"
    }, {
      "constraints": {
        "execution": "startonly"
      },
      "key": "Cooking.Common.Program.Hood.Venting"
    }, {
      "constraints": {
        "execution": "startonly"
      },
      "key": "Cooking.Common.Program.Hood.DelayedShutOff"
    }]
  }
}


get settings
2023.03.01 09:29:02.749 1: [HomeConnect_ResponseGetSettings] LC97FMR60: get settings response {
  "data": {
    "settings": [{
      "key": "BSH.Common.Setting.PowerState",
      "value": "BSH.Common.EnumType.PowerState.Off"
    }, {
      "key": "Cooking.Common.Setting.Lighting",
      "value": false
    }, {
      "key": "Cooking.Common.Setting.LightingBrightness",
      "value": 10,
      "unit": "%"
    }]
  }
}
2023.03.01 09:29:02.750 1: [HomeConnect_ResponseGetSettings] LC97FMR60: new prefix found in Cooking.Common.Setting.LightingBrightness
2023.03.01 09:29:02.750 1: [HomeConnect_ResponseGetSettings] LC97FMR60: updating setting Cooking.Common.Setting.LightingBrightness to 10 %
2023.03.01 09:29:02.750 1: [HomeConnect_ResponseGetSettings] LC97FMR60: updating setting PowerState to Off
2023.03.01 09:29:02.750 1: [HomeConnect_ResponseGetSettings] LC97FMR60: new prefix found in Cooking.Common.Setting.Lighting
2023.03.01 09:29:02.750 1: [HomeConnect_ResponseGetSettings] LC97FMR60: updating setting Cooking.Common.Setting.Lighting to 0


Sämtliche set Befehle haben aktuell leider keine Funktion
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 01 März 2023, 11:25:45
@olbetec:

Mit diesen verbalen Beschreibungen kann ich leider gar nichts anfangen. Bitte so posten, wie Supadone.

LG

pah
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 01 März 2023, 14:17:57
@Supadone:

ZitatSämtliche set Befehle haben aktuell leider keine Funktion
Wundert mich etwas. Mindestens set childLock on/off sollte bei der Kaffeemaschine funktionieren.

LG

pah
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Supadone am 01 März 2023, 15:42:02
Hab die Dunstabzugshaube gelöscht und nochmal neu anlegen lassen, es waren auch ein paar Readings leer. Jetzt sieht alles gleich besser aus:

init:
2023.03.01 15:27:02.188 1: [HomeConnect_ResponseInit] LC97FMR60: defined as HomeConnect Hood Siemens LC97FMR60
2023.03.01 15:27:02.316 1: [HomeConnect_ResponseGetPrograms] LC97FMR60: get programs response {
  "data": {
    "programs": [{
      "constraints": {
        "execution": "startonly"
      },
      "key": "Cooking.Common.Program.Hood.Automatic"
    }, {
      "constraints": {
        "execution": "startonly"
      },
      "key": "Cooking.Common.Program.Hood.Venting"
    }, {
      "constraints": {
        "execution": "startonly"
      },
      "key": "Cooking.Common.Program.Hood.DelayedShutOff"
    }]
  }
}
2023.03.01 15:27:02.323 1: [HomeConnect_ResponseUpdateStatus] LC97FMR60: status response {
  "data": {
    "status": [{
      "key": "BSH.Common.Status.LocalControlActive",
      "value": false
    }, {
      "key": "BSH.Common.Status.OperationState",
      "value": "BSH.Common.EnumType.OperationState.Inactive"
    }, {
      "key": "BSH.Common.Status.RemoteControlActive",
      "value": true
    }, {
      "key": "BSH.Common.Status.RemoteControlStartAllowed",
      "value": true
    }]
  }
}
2023.03.01 15:27:02.324 1: [HomeConnect_ResponseUpdateStatus] LC97FMR60: updating reading LocalControlActive to 0
2023.03.01 15:27:02.324 1: [HomeConnect_ResponseUpdateStatus] LC97FMR60: updating reading RemoteControlStartAllowed to 1
2023.03.01 15:27:02.324 1: [HomeConnect_ResponseUpdateStatus] LC97FMR60: updating reading RemoteControlActive to 1
2023.03.01 15:27:02.324 1: [HomeConnect_ResponseUpdateStatus] LC97FMR60: updating reading OperationState to Inactive


get settings:
2023.03.01 15:27:15.623 1: [HomeConnect_ResponseGetSettings] LC97FMR60: get settings response {
  "data": {
    "settings": [{
      "key": "BSH.Common.Setting.PowerState",
      "value": "BSH.Common.EnumType.PowerState.Off"
    }, {
      "key": "Cooking.Common.Setting.Lighting",
      "value": false
    }, {
      "key": "Cooking.Common.Setting.LightingBrightness",
      "value": 10,
      "unit": "%"
    }]
  }
}
2023.03.01 15:27:15.623 1: [HomeConnect_ResponseGetSettings] LC97FMR60: new prefix found in Cooking.Common.Setting.LightingBrightness
2023.03.01 15:27:15.624 1: [HomeConnect_ResponseGetSettings] LC97FMR60: updating setting Cooking.Common.Setting.LightingBrightness to 10 %
2023.03.01 15:27:15.624 1: [HomeConnect_ResponseGetSettings] LC97FMR60: updating setting PowerState to Off
2023.03.01 15:27:15.624 1: [HomeConnect_ResponseGetSettings] LC97FMR60: new prefix found in Cooking.Common.Setting.Lighting
2023.03.01 15:27:15.624 1: [HomeConnect_ResponseGetSettings] LC97FMR60: updating setting Cooking.Common.Setting.Lighting to 0


get Programs:
2023.03.01 15:30:52.381 1: [HomeConnect_ResponseGetPrograms] LC97FMR60: get programs response {
  "data": {
    "programs": [{
      "constraints": {
        "execution": "startonly"
      },
      "key": "Cooking.Common.Program.Hood.Automatic"
    }, {
      "constraints": {
        "execution": "startonly"
      },
      "key": "Cooking.Common.Program.Hood.Venting"
    }, {
      "constraints": {
        "execution": "startonly"
      },
      "key": "Cooking.Common.Program.Hood.DelayedShutOff"
    }]
  }
}


list
Internals:
   CFGFN     
   DEF        hcconn SIEMENS-LC97FMR60-68A40E083938
   FUUID      63ff609c-f33f-1d25-98aa-4ace1d5dd81dd1e1
   NAME       LC97FMR60
   NR         13499
   STATE      Inactive
   TYPE       HomeConnect
   aliasname  Dunstabzugshaube
   brand      Siemens
   eventChannelTimeout 1677681097.41412
   eventCount 4
   events     GreaseFilterMaxSaturationNearlyReached,GreaseFilterMaxSaturationReached
   haId       SIEMENS-LC97FMR60-68A40E083938
   hcconn     hcconn
   prefix     Cooking.Hob
   programs   Cooking.Common.Program.Hood.Automatic,Cooking.Common.Program.Hood.Venting,Cooking.Common.Program.Hood.DelayedShutOff
   retrycounter 0
   settings   Cooking.Common.Setting.LightingBrightness,PowerState,Cooking.Common.Setting.Lighting
   type       Hood
   vib        LC97FMR60
   READINGS:
     2023-03-01 15:27:15   Cooking.Common.Setting.Lighting 0
     2023-03-01 15:27:15   Cooking.Common.Setting.LightingBrightness 10 %
     2023-03-01 15:27:02   LocalControlActive 0
     2023-03-01 15:27:02   OperationState  Inactive
     2023-03-01 15:27:15   PowerState      Off
     2023-03-01 15:27:02   RemoteControlActive 1
     2023-03-01 15:27:02   RemoteControlStartAllowed 1
     2023-03-01 15:27:02   state           Inactive
     2023-03-01 15:27:02   tr_RemoteControlState Fernstart aktiv
     2023-03-01 15:27:02   tr_State1       Ruhezustand
     2023-03-01 15:27:02   tr_State2       Ruhezustand
   helper:
     bm:
       HomeConnect_Define:
         cnt        1
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        01.03. 15:26:36
         max        4.10079956054688e-05
         tot        4.10079956054688e-05
         mAr:
           HASH(0x5596c42ba0)
           LC97FMR60 HomeConnect hcconn SIEMENS-LC97FMR60-68A40E083938
       HomeConnect_Get:
         cnt        11
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        01.03. 15:27:15
         max        0.00355410575866699
         tot        0.00589942932128906
         mAr:
           HASH(0x5596c42ba0)
           LC97FMR60
           Settings
       HomeConnect_Set:
         cnt        26
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        01.03. 15:27:01
         max        0.00465083122253418
         tot        0.0153396129608154
         mAr:
           HASH(0x5596c42ba0)
           LC97FMR60
           init


Zitat von: Prof. Dr. Peter Henning am 01 März 2023, 14:17:57
@Supadone:
Wundert mich etwas. Mindestens set childLock on/off sollte bei der Kaffeemaschine funktionieren.

Sorry, du hast recht. set childLock on/off ist mir wohl beim ausprobieren durchgerutscht
2023.03.01 15:40:29.090 3: [HomeConnect] TI909701HC: set command: childLock
2023.03.01 15:40:31.106 1: [HomeConnect_ReadEventChannel] TI909701HC: ChildLock = 1
2023.03.01 15:40:34.738 1: [HomeConnect_ReadEventChannel] TI909701HC: ChildLock = 1
2023.03.01 15:40:59.541 3: [HomeConnect] TI909701HC: set command: childLock
2023.03.01 15:41:01.318 1: [HomeConnect_ReadEventChannel] TI909701HC: ChildLock = 0
2023.03.01 15:41:05.061 1: [HomeConnect_ReadEventChannel] TI909701HC: ChildLock = 0
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 01 März 2023, 17:22:27
Das hängt mit der vollkommen unlogischen Struktur des API zusammen: Es gibt Settings und Options, und bei den Options solche, die man separat setzen kann, und solche, die man nur zusammen mit dem Startbefehl loswerden kann. Und die Präfixe sind noch absurder gewählt...

LG

pah
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 02 März 2023, 16:13:43
So, jetzt habe ich nochmal heftig daran gearbeitet.

Das Modul holt sich jetzt - genau wie die App - alle erlaubten Optionen und Settings aus dem Gerät, es wird nichts mehr hart codiert. Das ist übrigens auch die Empfehlung von BSH für das API, die harte Codierung der Optionen in der "offiziellen" Modulversion ignoriert das vollkommen.

Derzeit muss man "Get <device> Settings" noch manuell anstoßen falls das leer ist. Mit einem "Get <device> Programs" werden die Programme befüllt - soweit vorhanden. Mit einem "Set <device> SelectedProgram <Programm>" wird das dann ausgewählt, ferner automatisch alle Optionen dafür geholt.

Derzeit muss man dann noch manuell einmal die Seite reloaden - damit die Dropdown-Liste im "Set" die richtigen Werte bekommt.

Und dann muss man das Programm auch noch mit "StartProgram" manuell starten.

Vorher kann man durchaus mit "Set <device> DelayEndTime <hh:mm>" eine Zeit setzen, zu der das Programm zu Ende sein soll.

Das funktioniert bei Waschmaschine und Spülmaschine schon sehr gut.

Auch der CoffeeMaker und andere Geräte sollten jetzt funktionieren. Achtung: Während die Set-Befehle vorher mit Kleinbuchstaben begannen, beginnen sie jetzt genau wie die Readings mit Großbuchstaben.

Noch nicht ganz ausgetestet ist, was beim Setzen von includePrefixes=1 geschieht. Das liegt daran, dass die BSH-Entwickler aus irgendeinem kühlen Grund sogar bei Programmen unterschiedliche Prefixes verwenden...

LG

pah
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Supadone am 03 März 2023, 10:46:48
Ich habe gerade mal versucht mir einen Kaffee mit dem Modul zu machen, hat leider noch nicht ganz geklappt ;)

Es fehlt leider ein Befehl die Maschine überhaupt einzuschalten.

set SelectedProgramm Beverega.Coffee wird an der Maschine korrekt ausgeführt
2023.03.03 10:11:50.349 3: [HomeConnect] TI909701HC: set command: SelectedProgram
2023.03.03 10:11:52.048 1: [HomeConnect_GetProgramOptionsResponse] TI909701HC: key CoffeeTemperature has current value  and default value 94C
2023.03.03 10:11:52.048 1: [HomeConnect_GetProgramOptionsResponse] TI909701HC: key BeanAmount has current value VeryStrong and default value VeryStrong
2023.03.03 10:11:52.048 1: [HomeConnect_GetProgramOptionsResponse] TI909701HC: key FillQuantity has current value 60 ml and default value 120
2023.03.03 10:11:52.048 1: [HomeConnect_GetProgramOptionsResponse] TI909701HC: key FlowRate has current value Normal and default value Normal
2023.03.03 10:11:52.049 1: [HomeConnect_GetProgramOptionsResponse] TI909701HC: key BeanContainerSelection has current value Right and default value Right
2023.03.03 10:11:54.652 1: [HomeConnect_ReadEventChannel] TI909701HC: SelectedProgram = Beverage.Coffee
2023.03.03 10:11:54.666 1: [HomeConnect_ReadEventChannel] TI909701HC: FillQuantity = 120


eine Veränderung der Parameter ist aber wiederum leider nicht möglich. Die Einstellungen per App werden aber von der Maschine unterstützt.
2023.03.03 10:11:59.357 3: [HomeConnect] TI909701HC: set command: CoffeeTemperature
2023.03.03 10:11:59.544 1: [HomeConnect_HandleError] TI909701HC: Error "Program option not supported"
2023.03.03 10:26:50.675 3: [HomeConnect] TI909701HC: set command: BeanAmount
2023.03.03 10:26:50.833 1: [HomeConnect_HandleError] TI909701HC: Error "Program option not supported"
2023.03.03 10:27:50.662 3: [HomeConnect] TI909701HC: set command: BeanContainerSelection
2023.03.03 10:27:50.817 1: [HomeConnect_HandleError] TI909701HC: Error "Program option not supported"
2023.03.03 10:28:03.069 3: [HomeConnect] TI909701HC: set command: FlowRate
2023.03.03 10:28:03.214 1: [HomeConnect_HandleError] TI909701HC: Error "Program option not supported"


Der Kaffee wird korrekt zubereitet:
2023.03.03 10:22:46.724 3: [HomeConnect] TI909701HC: set command: StartProgram
2023.03.03 10:22:46.724 1: [HomeConnect] TI909701HC: start program Beverage.Coffee with uri /api/homeappliances/SIEMENS-TI909701HC-68A40E15C2B9/programs/active and data {"data":{"key":"ConsumerProducts.CoffeeMaker.Program.Beverage.Coffee","options":[]}}
2023.03.03 10:22:51.725 1: [HomeConnect_ReadEventChannel] TI909701HC: OperationState = ActionRequired
2023.03.03 10:22:51.745 1: [HomeConnect_ReadEventChannel] TI909701HC: OperationState = Run
2023.03.03 10:22:51.753 1: [HomeConnect_ReadEventChannel] TI909701HC: ActiveProgram = Beverage.Coffee
2023.03.03 10:22:51.760 1: [HomeConnect_ReadEventChannel] TI909701HC: key BSH.Common.Root.SelectedProgram has extra prefix for
2023.03.03 10:22:51.760 1: [HomeConnect_ReadEventChannel] TI909701HC: SelectedProgram =
2023.03.03 10:24:07.238 1: [HomeConnect_ReadEventChannel] TI909701HC: OperationState = Finished
2023.03.03 10:24:07.253 1: [HomeConnect_ReadEventChannel] TI909701HC: SelectedProgram = Beverage.Coffee
2023.03.03 10:24:07.268 1: [HomeConnect_ReadEventChannel] TI909701HC: OperationState = Ready
2023.03.03 10:24:07.283 1: [HomeConnect_ReadEventChannel] TI909701HC: key BSH.Common.Root.ActiveProgram has extra prefix for
2023.03.03 10:24:07.283 1: [HomeConnect_ReadEventChannel] TI909701HC: ActiveProgram =
2023.03.03 10:24:07.302 1: [HomeConnect_ReadEventChannel] TI909701HC: BeverageCounterCoffee = 1725



Ein set PowerOff klappt leider auch nicht und führt zu folgender Meldung
2023.03.03 10:10:34.221 3: [HomeConnect] TI909701HC: set command: PowerOff
2023.03.03 10:10:34.455 1: [HomeConnect_HandleError] TI909701HC: Error "Key BSH.Common.Setting.PowerState has unknown enum type or enum member BSH.Common.EnumType.PowerState.Off."


Es gibt noch auch noch ein set ConsumerProducts.CoffeeMaker.Setting.CupWarmer, hier müsste noch der Präfix entfernt werden.

Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Supadone am 03 März 2023, 11:40:51
Bei der Dunstabzughaube klappt leider der Befehl zum starten nicht.

2023.03.03 11:30:20.730 3: [HomeConnect] LC97FMR60: set command: StartProgram
2023.03.03 11:30:20.730 1: [HomeConnect] LC97FMR60: start program Hood.Venting with uri /api/homeappliances/SIEMENS-LC97FMR60-68A40E083938/programs/active and data {"data":{"key":"Cooking.Hob.Program.Hood.Venting","options":[]}}
2023.03.03 11:30:21.274 1: [HomeConnect_HandleError] LC97FMR60: Error "Unknown program feature key: Cooking.Hob.Program.Hood.Venting"


Die set-Befehle Cooking.Common.Setting.Lighting und Cooking.Common.Setting.LightingBrightness haben noch den Präfix und können nicht über ein Dropdown-Feld geschaltet werden. Mit 1/0 bzw on/off wird der Befehl aber ausgeführt
2023.03.03 11:33:22.132 3: [HomeConnect] LC97FMR60: set command: Cooking.Common.Setting.Lighting
2023.03.03 11:33:25.194 1: [HomeConnect_ReadEventChannel] LC97FMR60: Lighting = 1
2023.03.03 11:33:25.195 1: [HomeConnect_ReadEventChannel] LC97FMR60: LightingBrightness = 15
2023.03.03 11:33:25.209 1: [HomeConnect_ReadEventChannel] LC97FMR60: LightingBrightness = 82
2023.03.03 11:33:25.216 1: [HomeConnect_ReadEventChannel] LC97FMR60: LightingBrightness = 100


Grüße

Andy
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 03 März 2023, 15:23:30
ZitatDer Kaffee wird korrekt zubereitet:

Das ist mal das Allerwichtigste. Den Rest bekommen wir auch noch hin, da muss ich noch ein wenig in der Doku für CoffeeMaker wühlen.

Schon mal vorab zur Dunstabzugshaube: In Zeile 137 des Moduls steht
my $HC_HoodPrefix = "Cooking.Hob";
Das ist natürlich falsch, dort muss hin
my $HC_HoodPrefix = "Cooking.Hood";
Dann sollte auch das Schalten klappen und die Settings stimmen.

Edit: Zum Coffeemaker.

PowerOn wird nur angezeigt, wenn die Kiste ausgeschaltet ist. Erschien mir sinnvoll.


Bitte mal im Device das Attribut HC_debug auf 1 setzen. Dann kommt beim Ändern einer Option eine Nachricht im Log wie
Zitat[HomeConnect_Set] changing option with uri .... and data ...

Die bräuchte ich mal.

LG

pah

Anliegend Version 1.0alpha6
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Supadone am 03 März 2023, 17:29:53
Zitat von: Prof. Dr. Peter Henning am 03 März 2023, 15:23:30
PowerOn wird nur angezeigt, wenn die Kiste ausgeschaltet ist. Erschien mir sinnvoll.

Ja, aber leider wird bei der Kaffeemaschine auch im ausgeschaltetem Zustand nur PowerOff angezeigt.

Bei der Dunstabzugshaube funktioniert nun auch das PowerOn und PowerOff.
Hier finde ich es aber nicht so sinnvoll alle weiteren set-Befehle erst nach einem PowerOn zu bekommen. Das PowerOn startet automatisch die Dunstabzugshaube, die Kochfeldbeleuchtung kann somit nicht mehr unabhängig von der Abluftfunktion gesteuert werden (hatte ich zum Beispiel immer mit einem Bewegungsmelder in der Küche gekoppelt)

Zitat von: Prof. Dr. Peter Henning am 03 März 2023, 15:23:30
Bitte mal im Device das Attribut HC_debug auf 1 setzen. Dann kommt beim Ändern einer Option eine Nachricht im Log wie
Die bräuchte ich mal.
2023.03.03 17:26:31.071 1: [HomeConnect_Set] changing setting with uri /api/homeappliances/SIEMENS-LC97FMR60-68A40E083938/settings/Cooking.Common.Setting.Lighting and data {"data":{"key":"Cooking.Common.Setting.Lighting","value":true}}


Grüße

Andy
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 03 März 2023, 20:06:17
ZitatJa, aber leider wird bei der Kaffeemaschine auch im ausgeschaltetem Zustand nur PowerOff angezeigt.
Hmmmm. Verstehe ich noch nicht ganz.

ZitatHier finde ich es aber nicht so sinnvoll alle weiteren set-Befehle erst nach einem PowerOn zu bekommen
Das ist sehr richtig - beim Kochfeld und den Backöfen geht ja der AlarmTimer auch unabhängig vom Betriebszustand. Da werde ich mir also für die "Hood" irgendetwas ausdenken, um das zu vermeiden.

Was ergibt denn der Befehl
{Dumper($defs{"LC97FMR60"}->{data}->{options})}

LG

pah
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Supadone am 03 März 2023, 21:18:04
Zitat von: Prof. Dr. Peter Henning am 03 März 2023, 20:06:17
Hmmmm. Verstehe ich noch nicht ganz.

Es sieht so aus als würde nicht "erkannt werden" dass der Status Inactive ist. Das Reading ist zwar da, aber es sind alle anderen set-Befehle vorhanden wie wenn das Gerät eingeschaltet ist.

Zitat von: Prof. Dr. Peter Henning am 03 März 2023, 20:06:17
Was ergibt denn der Befehl
{Dumper($defs{"LC97FMR60"}->{data}->{options})}

Sorry, ich steh gerade auf dem Schlauch. Wo soll ich das denn eingeben? Einfach in der Eingabezeile? Dann kommt
$VAR1 = {};

Grüße

Andy
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 04 März 2023, 05:54:48
Hmmm. Wieder eine Ungereimtheit im API, denn bisher habe ich die Anzeige davon abhängig gemacht, ob "PowerState" = Off ist. Scheint also beim Coffemaker nicht zu funktionieren, sondern da ist dann "OperationState" das Relevante.

Ich habe jetzt mal die ganzen Restriktionen für die Anzeige der grundlegenden Kommandos herausgenommen, sie werden also in der anliegenden Version immer(!) in der Liste angezeigt. Das ist offenbar für die Entwicklung nötig.

Und zum Thema des Dumper-Kommandos: Ja, genau dort. Und eigentlich sollte dann die Anzeige der ganze mit GetProgramOptions geholte Kram sein, also z.B.

Zitat$VAR1 = {
          'FinishInRelative' => [
                                  'BSH.Common.Option',
                                  'Int',
                                  0,
                                  '(0,86400)',
                                  undef,
                                  undef
                                ],
          'Temperature' => [
                             'LaundryCare.Washer.Option',
                             'LaundryCare.Washer.EnumType.Temperature',
                             'Cold',
                             'Cold,GC20,GC30,GC40,GC50,GC60,GC70,GC80,GC90',
                             bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ),
                             undef
                           ],
          'SpinSpeed' => [
                           'LaundryCare.Washer.Option',
                           'LaundryCare.Washer.EnumType.SpinSpeed',
                           'RPM400',
                           'RPM400,RPM600,RPM800,RPM1000,RPM1200,RPM1400',
                           $VAR1->{'Temperature'}[4],
                           undef
                         ]
        };

LG

pah
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Supadone am 04 März 2023, 11:45:33
Bei der Kaffeemaschine klappts, bei der Dunstabzugshaube leider nicht. Ändert auch nichts daran ob der Status Inactive oder Running ist.

Für die Kaffeemaschine:
$VAR1 = {
          'BeanContainerSelection' => [
                                        'ConsumerProducts.CoffeeMaker.Option',
                                        'ConsumerProducts.CoffeeMaker.EnumType.BeanContainerSelection',
                                        'Right',
                                        'Right,Left',
                                        bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ),
                                        undef
                                      ],
          'CoffeeTemperature' => [
                                   'ConsumerProducts.CoffeeMaker.Option',
                                   'ConsumerProducts.CoffeeMaker.EnumType.CoffeeTemperature',
                                   '94C',
                                   '88C,90C,92C,94C,95C,96C',
                                   $VAR1->{'BeanContainerSelection'}[4],
                                   undef
                                 ],
          'FillQuantity' => [
                              'ConsumerProducts.CoffeeMaker.Option',
                              'Int',
                              120,
                              '(60,260)',
                              $VAR1->{'BeanContainerSelection'}[4],
                              undef
                            ],
          'BeanAmount' => [
                            'ConsumerProducts.CoffeeMaker.Option',
                            'ConsumerProducts.CoffeeMaker.EnumType.BeanAmount',
                            'VeryStrong',
                            'VeryMild,Mild,MildPlus,Normal,NormalPlus,Strong,StrongPlus,VeryStrong,VeryStrongPlus,ExtraStrong,DoubleShot,DoubleShotPlus,DoubleShotPlusPlus,CoffeeGround',
                            $VAR1->{'BeanContainerSelection'}[4],
                            undef
                          ],
          'FlowRate' => [
                          'ConsumerProducts.CoffeeMaker.Option',
                          'ConsumerProducts.CoffeeMaker.EnumType.FlowRate',
                          'Normal',
                          'Normal,Intense,IntensePlus',
                          $VAR1->{'BeanContainerSelection'}[4],
                          undef
                        ]
        };


Zitat von: Prof. Dr. Peter Henning am 04 März 2023, 05:54:48
Ich habe jetzt mal die ganzen Restriktionen für die Anzeige der grundlegenden Kommandos herausgenommen, sie werden also in der anliegenden Version immer(!) in der Liste angezeigt. Das ist offenbar für die Entwicklung nötig.
Jetzt ist auch PowerOn vorhanden und lässt sich problemlos starten :)

Grüße

Andy
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 04 März 2023, 12:01:52
Na, schon einen Schritt weiter...

1. Funktioniert jetzt ALLES bei der Kaffeemaschine? Auch der CupWarmer?

2. Es gibt eine neue Logzeile für Debug-Zwecke:
"[HomeConnect_PowerState] $name: setting PowerState->$target while OperationState=$operationState and PowerState=$powerState";

Da wüsste ich doch gerne mal, wie die bei den beiden Geräten lautet.

3. Betreffend die Haube: Unten hieß es ja
Zitat2023.03.03 11:30:20.730 3: [HomeConnect] LC97FMR60: set command: StartProgram
2023.03.03 11:30:20.730 1: [HomeConnect] LC97FMR60: start program Hood.Venting with uri /api/homeappliances/SIEMENS-LC97FMR60-68A40E083938/programs/active and data {"data":{"key":"Cooking.Hob.Program.Hood.Venting","options":[]}}
2023.03.03 11:30:21.274 1: [HomeConnect_HandleError] LC97FMR60: Error "Unknown program feature key: Cooking.Hob.Program.Hood.Venting"

was nicht funktionieren konnte wegen "Hob". Wie bitte lautet die Fehlermeldung jetzt?

Edit 4. Ich habe für Debugzwecke ein neues Kommando eingebaut, das in der "Set"-Liste als "ZZZ_Dump" auftaucht. Damit kann man die umständlichen Dumper-Befehle auf einen Knopfdruck ausführen. Was ergibt dieses ZZZ_Dump bei der Dunstabzugshaube?


LG

pah
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Supadone am 04 März 2023, 12:39:10
1. Der CupWarmer lässt sich mit set TI909701HC ConsumerProducts.CoffeeMaker.Setting.CupWarmer 1 einschalten und mit 0 ausschalten
2023.03.04 12:03:12.262 3: [HomeConnect] TI909701HC: set command: ConsumerProducts.CoffeeMaker.Setting.CupWarmer
2023.03.04 12:03:18.036 1: [HomeConnect_ReadEventChannel] TI909701HC: CupWarmer = 1
2023.03.04 12:03:25.593 3: [HomeConnect] TI909701HC: set command: ConsumerProducts.CoffeeMaker.Setting.CupWarmer
2023.03.04 12:03:30.761 1: [HomeConnect_ReadEventChannel] TI909701HC: CupWarmer = 0


Bei allen anderen gibt es leider wieder Fehlermeldungen
2023.03.04 12:10:05.981 1: [HomeConnect_HandleError] TI909701HC: Error "Program option not supported"
2023.03.04 12:10:31.181 3: [HomeConnect] TI909701HC: set command: FillQuantity
2023.03.04 12:10:31.195 1: [HomeConnect_Set] changing option with uri /api/homeappliances/SIEMENS-TI909701HC-68A40E15C2B9/programs/active/options/FillQuantity and data {"data":{"key":"FillQuantity","value":200,"unit":"ml"}}
2023.03.04 12:10:31.327 1: [HomeConnect_HandleError] TI909701HC: Error "Program option not supported"
2023.03.04 12:10:43.561 3: [HomeConnect] TI909701HC: set command: BeanContainerSelection
2023.03.04 12:10:43.570 1: [HomeConnect_Set] changing option with uri /api/homeappliances/SIEMENS-TI909701HC-68A40E15C2B9/programs/active/options/BeanContainerSelection and data {"data":{"key":"BeanContainerSelection","value":"optval"}}
2023.03.04 12:10:43.864 1: [HomeConnect_HandleError] TI909701HC: Error "Program option not supported"
2023.03.04 12:10:51.849 3: [HomeConnect] TI909701HC: set command: BeanAmount
2023.03.04 12:10:51.862 1: [HomeConnect_Set] changing option with uri /api/homeappliances/SIEMENS-TI909701HC-68A40E15C2B9/programs/active/options/BeanAmount and data {"data":{"key":"BeanAmount","value":"optval"}}
2023.03.04 12:10:51.996 1: [HomeConnect_HandleError] TI909701HC: Error "Program option not supported"
2023.03.04 12:11:09.202 3: [HomeConnect] TI909701HC: set command: FlowRate
2023.03.04 12:11:09.214 1: [HomeConnect_Set] changing option with uri /api/homeappliances/SIEMENS-TI909701HC-68A40E15C2B9/programs/active/options/FlowRate and data {"data":{"key":"FlowRate","value":"optval"}}
2023.03.04 12:11:09.419 1: [HomeConnect_HandleError] TI909701HC: Error "Program option not supported"
2023.03.04 12:11:37.074 3: [HomeConnect] TI909701HC: set command: CoffeeTemperature
2023.03.04 12:11:37.085 1: [HomeConnect_Set] changing option with uri /api/homeappliances/SIEMENS-TI909701HC-68A40E15C2B9/programs/active/options/CoffeeTemperature and data {"data":{"key":"CoffeeTemperature","value":"optval"}}
2023.03.04 12:11:37.211 1: [HomeConnect_HandleError] TI909701HC: Error "Program option not supported"


2. Die Kaffeemaschine lässt sich jetzt mit PowerOff nicht mehr ausschalten. Einschalten geht aber.
2023.03.04 12:27:22.372 3: [HomeConnect] TI909701HC: set command: PowerOff
2023.03.04 12:27:22.376 1: [HomeConnect_PowerState] TI909701HC: setting PowerState->Off while OperationState=Ready and PowerState=On
2023.03.04 12:27:22.627 1: [HomeConnect_HandleError] TI909701HC: Error "Key BSH.Common.Setting.PowerState has unknown enum type or enum member BSH.Common.EnumType.PowerState.Off."

2023.03.04 12:29:04.863 3: [HomeConnect] TI909701HC: set command: PowerOn
2023.03.04 12:29:04.863 1: [HomeConnect_PowerState] TI909701HC: setting PowerState->On while OperationState=Inactive and PowerState=Standby
2023.03.04 12:29:13.931 1: [HomeConnect_ReadEventChannel] TI909701HC: OperationState = Run
2023.03.04 12:29:13.946 1: [HomeConnect_ReadEventChannel] TI909701HC: PowerState = On
2023.03.04 12:29:13.961 1: [HomeConnect_ReadEventChannel] TI909701HC: ActiveProgram = CleaningModes.ApplianceOnRinsing


Ausschalten der Dunstabzugshaube
2023.03.04 12:26:04.455 1: [HomeConnect_PowerState] LC97FMR60: setting PowerState->On while OperationState=Inactive and PowerState=Off


3. PowerOn und PowerOff funktionieren hier problemlos
2023.03.04 12:33:06.765 3: [HomeConnect] LC97FMR60: set command: PowerOn
2023.03.04 12:33:06.765 1: [HomeConnect_PowerState] LC97FMR60: setting PowerState->On while OperationState=Inactive and PowerState=Off
2023.03.04 12:33:12.124 1: [HomeConnect_ReadEventChannel] LC97FMR60: PowerState = On
2023.03.04 12:33:12.125 1: [HomeConnect_ReadEventChannel] LC97FMR60: key BSH.Common.Root.ActiveProgram has extra prefix for Cooking.Common.Program.Hood.Venting
2023.03.04 12:33:12.125 1: [HomeConnect_ReadEventChannel] LC97FMR60: ActiveProgram = Cooking.Common.Program.Hood.Venting
2023.03.04 12:33:12.366 1: [HomeConnect_ReadEventChannel] LC97FMR60: OperationState = Run


Den Modus (automatische Stärke, Timer) wechseln kann man leider nicht, es kommt (bei bereits laufendem Dunstabzug:
2023.03.04 12:32:42.264 3: [HomeConnect] LC97FMR60: set command: StartProgram
2023.03.04 12:32:42.264 1: [HomeConnect] LC97FMR60: start program Hood.DelayedShutOff with uri /api/homeappliances/SIEMENS-LC97FMR60-68A40E083938/programs/active and data {"data":{"key":"Cooking.Hob.Program.Hood.DelayedShutOff","options":[]}}
2023.03.04 12:32:42.518 1: [HomeConnect_HandleError] LC97FMR60: Error "Unknown program feature key: Cooking.Hob.Program.Hood.DelayedShutOff"


Auch nur die Kochfeldbeleuchtung steuern funktioniert:
2023.03.04 12:31:20.961 3: [HomeConnect] LC97FMR60: set command: Cooking.Common.Setting.Lighting
2023.03.04 12:31:20.973 1: [HomeConnect_Set] changing setting with uri /api/homeappliances/SIEMENS-LC97FMR60-68A40E083938/settings/Cooking.Common.Setting.Lighting and data {"data":{"key":"Cooking.Common.Setting.Lighting","value":true}}
2023.03.04 12:31:25.609 1: [HomeConnect_ReadEventChannel] LC97FMR60: Lighting = 1
2023.03.04 12:31:25.609 1: [HomeConnect_ReadEventChannel] LC97FMR60: LightingBrightness = 66
2023.03.04 12:31:25.615 1: [HomeConnect_ReadEventChannel] LC97FMR60: LightingBrightness = 100


Ich vermisse hier nur irgendwie noch die Möglichkeit die Stufe der Absaugung zu ändern.

Edit 4:
Device LC97FMR60 of type Hood has
settings: $VAR1 = undef;

options: $VAR1 = {};


Grüße

Andy
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 06 März 2023, 10:00:59
Zu 1a, CupWarmer: OK, abgehakt - ist also ein Setting, keine Option
Zu 1b: Bitte vorher ausführen: 1. Get Programs, 2. Set SelectedProgram <irgendwas> 3. Get ProgramOptions. Dann reload der Seite, erst dann sieht man, ob diese Options in diesem Programm überhaupt verfügbar sind.

Zu 2: OK, beim Ausschalten muss man ggf. mit Standby arbeiten. Bitte mal in der Kommandozeile eingeben: set TI909701HC PowerStandby

Zu 3: Sonnenklar. Mit "Cooking.Hob.Program.Hood.DelayedShutOff" kann man eine Dunstabzugshaube nicht schalten, da müsste "Cooking.Hood.Program.Hood.DelayedShutOff" stehen. Ich frage mich, wieso da immer noch "Cooking.Hob" steht. Eventuell müsste FHEM mal neu gestartet werden.

Zu 4: Das sollte nicht leer sein. Also auch hier bitte mal 1. Get Programs, 2. Get Settings 3. Set SelectedProgram <irgendwas> 4. Get ProgramOptions.

LG

pah
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Supadone am 06 März 2023, 10:44:56
So, bei der Gelegenheit hab ich gleich mal den ganzen Raspberry neugestartet.

Jetzt ist im Device alles wieder auf Anfang und ich kann nur ein get TI909701HC settings ausführen, ist das noch so gewollt?

get settings führt jetzt nun leider zu einem neustart von Fhem
2023.03.06 10:16:57.960 1: [HomeConnect_Set] TI909701HC: no settings defined, please execute Get TI909701HC Settings
2023.03.06 10:21:32.728 1: [HomeConnect_ResponseGetSettings] TI909701HC: get settings response {
  "data": {
    "settings": [{
      "key": "BSH.Common.Setting.ChildLock",
      "value": false
    }, {
      "key": "BSH.Common.Setting.PowerState",
      "value": "BSH.Common.EnumType.PowerState.Standby"
    }]
  }
}
2023.03.06 10:21:32.728 1: [HomeConnect_ResponseGetSettings] TI909701HC: updating setting ChildLock to 0
Undefined subroutine &main::defind called at ./FHEM/48_HomeConnect.pm line 1376.
2023.03.06 10:21:33.452 1: Including fhem.cfg


Danach ist wieder nur ein get TI909701HC settings verfügbar, bei der Dunstabzugshaube passiert leider das gleiche...

Grüße

Andy
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 06 März 2023, 15:02:59
Ups. Das letzte ist ein Crash und Neustart von FHEM, verursacht durch den Aufruf eines nicht existierenden Programms....

Sorry, da habe ich wohl eine Zwischenversion mit Tippfehler hochgeladen.  :-[

Korrigierte Version kommt heute bis 17:00 19:00 Uhr.

LG

pah

Achtung: Die eben gepostete Version hat immer noch einen Fehler. Ist in Arbeit...
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Supadone am 06 März 2023, 17:54:16
Okay, jetzt bleiben auch alle set-Befehle nach einem Neustart erhalten.

Zitat von: Prof. Dr. Peter Henning am 06 März 2023, 10:00:59
Zu 1b: Bitte vorher ausführen: 1. Get Programs, 2. Set SelectedProgram <irgendwas> 3. Get ProgramOptions. Dann reload der Seite, erst dann sieht man, ob diese Options in diesem Programm überhaupt verfügbar sind.
Auch dann klappt es nicht
2023.03.06 17:39:07.558 3: [HomeConnect] TI909701HC: set command: BeanAmount
2023.03.06 17:39:07.563 1: [HomeConnect_Set] changing option with uri /api/homeappliances/SIEMENS-TI909701HC-68A40E15C2B9/programs/active/options/BeanAmount and data {"data":{"key":"BeanAmount","value":"optval"}}
2023.03.06 17:39:07.685 1: [HomeConnect_HandleError] TI909701HC: Error "Program option not supported"
2023.03.06 17:39:23.731 3: [HomeConnect] TI909701HC: set command: BeanContainerSelection
2023.03.06 17:39:23.744 1: [HomeConnect_Set] changing option with uri /api/homeappliances/SIEMENS-TI909701HC-68A40E15C2B9/programs/active/options/BeanContainerSelection and data {"data":{"key":"BeanContainerSelection","value":"optval"}}
2023.03.06 17:39:23.873 1: [HomeConnect_HandleError] TI909701HC: Error "Program option not supported"



Zitat von: Prof. Dr. Peter Henning am 06 März 2023, 10:00:59
Zu 2: OK, beim Ausschalten muss man ggf. mit Standby arbeiten. Bitte mal in der Kommandozeile eingeben: set TI909701HC PowerStandby
Damit funktioniert es sofort


Zitat von: Prof. Dr. Peter Henning am 06 März 2023, 10:00:59
Zu 3: Sonnenklar. Mit "Cooking.Hob.Program.Hood.DelayedShutOff" kann man eine Dunstabzugshaube nicht schalten, da müsste "Cooking.Hood.Program.Hood.DelayedShutOff" stehen. Ich frage mich, wieso da immer noch "Cooking.Hob" steht. Eventuell müsste FHEM mal neu gestartet werden.
Jetzt stimmt zwar Hood, aber es kommt trotzdem zu einer Fehlermeldung.
2023.03.06 17:46:04.055 3: [HomeConnect] LC97FMR60: set command: SelectedProgram
2023.03.06 17:46:04.055 1: [HomeConnect_Set] command to select program Cooking.Common.Program.Hood.Venting
2023.03.06 17:46:04.060 1: [HomeConnect] selecting program Cooking.Common.Program.Hood.Venting with uri /api/homeappliances/SIEMENS-LC97FMR60-68A40E083938/programs/selected and data {"data":{"key":"Cooking.Hood.Program.Cooking.Common.Program.Hood.Venting"}}
2023.03.06 17:46:04.220 1: [HomeConnect_HandleError] LC97FMR60: Error "Unknown program feature key: Cooking.Hood.Program.Cooking.Common.Program.Hood.Venting"



Zitat von: Prof. Dr. Peter Henning am 06 März 2023, 10:00:59
Zu 4: Das sollte nicht leer sein. Also auch hier bitte mal 1. Get Programs, 2. Get Settings 3. Set SelectedProgram <irgendwas> 4. Get ProgramOptions.
Device LC97FMR60 of type Hood has
settings: $VAR1 = {
          'PowerState' => [
                            'BSH.Common.Setting',
                            'BSH.Common.EnumType.PowerState.',
                            'Off',
                            undef
                          ],
          'LightingBrightness' => [
                                    'Cooking.Common.Setting',
                                    'Cooking.Common.Setting',
                                    10,
                                    '%'
                                  ],
          'Lighting' => [
                          'Cooking.Common.Setting',
                          'Cooking.Common.Setting',
                          bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),
                          undef
                        ]
        };

options: $VAR1 = undef;

transtable: $VAR1 = {};


Grüße Andy
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 06 März 2023, 18:33:20
Nun, wir nähern uns der Sache doch. Anbei jedenfalls die korrigierte Version, die jetzt auch alle setzbaren Options setzen können sollte.

Betreffend "Cooking.Common.Program.Hood.Venting": Ich habe derzeit keine Ahnung, woher der doppelte Präfix kommt - der sollte in der Drop-Down-Liste gar nicht auftauchen.

Vlt. mal über die Kommandozeile ausführen

set <devicename> SelectedProgram Hood.Venting

Das sollte funktionieren. Das mit dem Standby muss ich irgendwie noch abfangen

LG

pah
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 08 März 2023, 09:45:47
So, ich habe das überarbeitete Modul jetzt in ein Beta-Stadium überführt.

Bei meinen Geräten (Kochfeld, Backofen, Spülmaschine und Waschmaschine) funktioniert es fehlerfrei. Ich bekomme sinnvolle Anzeigen, auf Wunsch auch mit deutscher Übersetzung der Zustände (und Programme). Wichtiger als dieser ergonomische Schnickschnack ist aber, dass jetzt - so wie eigentlich vom API vorgesehen - alle Optionen dynamisch vom Gerät geholt werden und nicht statisch im Modul vorcodiert sind.

Verzögerter Start von Spülmaschine und Waschmaschine (relativ oder mit gewünschter Startzeit oder Endzeit) funktioniert problemlos. Für das API verweigert BSH leider die echte Steuerung des Backofens - obwohl dies über die App problemlos geht. Unverständlich.

Beim Backofen und Kochfeld funktioniert auch das Stellen des Kurzzeitweckers (relativ oder mit gewünschter Endzeit) problemlos.

Für andere Geräte kann es noch an der einen oder anderen Stelle haken - das API ist vollkommen unterschiedlich bei den verschiedenen Geräteklassen.

LG

pah
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Supadone am 08 März 2023, 09:52:34
Sorry, bin gestern nicht mehr zum testen gekommen.

Bei einem get Programs bekomme ich aktuell einen timeout
2023.03.08 09:45:25.324 1: [HomeConnect_GetPrograms] LC97FMR60: getting programs with uri /api/homeappliances/SIEMENS-LC97FMR60-68A40E083938/programs/available
2023.03.08 09:45:30.450 2: LC97FMR60: error in requestread from https://api.home-connect.com:443 timed out
2023.03.08 09:45:30.455 1: [HomeConnect_ResponseGetPrograms] LC97FMR60: JSON error requesting programs: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 at ./FHEM/48_HomeConnect.pm line 1530.

2023.03.08 09:45:35.799 1: [HomeConnect_GetProgramOptions] LC97FMR60: getting options with uri /api/homeappliances/SIEMENS-LC97FMR60-68A40E083938/programs/available/Cooking.Hood.Program.Hood.Venting
2023.03.08 09:45:40.881 2: LC97FMR60: error in requestread from https://api.home-connect.com:443 timed out
2023.03.08 09:45:40.885 1: [HomeConnect_ResponseGetProgramOptions] LC97FMR60: program options response
2023.03.08 09:45:40.885 1: [HomeConnect_ResponseGetProgramOptions] LC97FMR60: JSON error requesting options: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 at ./FHEM/48_HomeConnect.pm line 1270.

2023.03.08 09:45:52.085 3: [HomeConnect] LC97FMR60: set command: SelectedProgram
2023.03.08 09:45:52.100 1: [HomeConnect_Set] command to select program Hood.Venting
2023.03.08 09:45:52.293 1: [HomeConnect] selecting program Hood.Venting with uri /api/homeappliances/SIEMENS-LC97FMR60-68A40E083938/programs/selected and data {"data":{"key":"Cooking.Hood.Program.Hood.Venting"}}
2023.03.08 09:45:57.407 2: LC97FMR60: error in requestread from https://api.home-connect.com:443 timed out
2023.03.08 09:45:57.410 1: [HomeConnect_GetProgramOptions] LC97FMR60: getting options with uri /api/homeappliances/SIEMENS-LC97FMR60-68A40E083938/programs/available/Cooking.Hood.Program.Hood.Venting
2023.03.08 09:46:02.486 2: LC97FMR60: error in requestread from https://api.home-connect.com:443 timed out
2023.03.08 09:46:02.492 1: [HomeConnect_ResponseGetProgramOptions] LC97FMR60: program options response
2023.03.08 09:46:02.492 1: [HomeConnect_ResponseGetProgramOptions] LC97FMR60: JSON error requesting options: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 at ./FHEM/48_HomeConnect.pm line 1270.

2023.03.08 09:48:22.409 1: [HomeConnect_GetPrograms] LC97FMR60: getting programs with uri /api/homeappliances/SIEMENS-LC97FMR60-68A40E083938/programs/available

Hast du hier auch etwas geändert?



Zitat von: Prof. Dr. Peter Henning am 06 März 2023, 18:33:20
set <devicename> SelectedProgram Hood.Venting

Das sollte funktionieren. Das mit dem Standby muss ich irgendwie noch abfangen

Leider nicht, auch hier kommt die Fehlermeldung
2023.03.08 09:44:54.441 3: [HomeConnect] LC97FMR60: set command: SelectedProgram
2023.03.08 09:44:54.442 1: [HomeConnect_Set] command to select program Hood.Venting
2023.03.08 09:44:54.446 1: [HomeConnect] selecting program Hood.Venting with uri /api/homeappliances/SIEMENS-LC97FMR60-68A40E083938/programs/selected and data {"data":{"key":"Cooking.Hood.Program.Hood.Venting"}}
2023.03.08 09:44:54.749 1: [HomeConnect_HandleError] LC97FMR60: Error "Unknown program feature key: Cooking.Hood.Program.Hood.Venting"


Grüße

Andy

Edit: Ich hatte die Version vom 6.3.23 verwendet
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 08 März 2023, 12:01:35
Das mit dem Timeout habe ich heute auch dauernd erlebt. Scheinen Serverprobleme bei BSH zu sein, die ich im Moment nicht beheben kann.

Betreffend die Programmsteuerung der Haube: Laut einem der Log-Auszüge verstehe ich das sogar, dort wird nämlich gemeldet:
"Cooking.Common.Program.Hood.Venting". Ich habe also mit meiner Behauptung, es müsse "Cooking.Hood" als Präfix lauten, daneben gelegen. Ich habe das jetzt mal in "Cooking.Common" geändert, siehe anliegende Version.

Für den CoffeeMaker sollte in der Dropdown-Liste jetzt übrigens "PowerStandby" statt PowerOff auftauchen und auch funktionieren.

Sowohl für CoffeeMaker als auch für die Haube fehlt mir noch eine Übersetzungstabelle. Die sieht beispielsweise für den Backofen so aus:
$HomeConnect_DeviceTrans_DE{"Oven"} = {
    "HeatingMode.TopBottomHeating" => "Ober/Unterhitze",
    "HeatingMode.GrillLargeArea" => "Flächengrill",
    "HeatingMode.SlowCook" => "LangsamGaren",
    "HeatingMode.Defrost"  => "Auftauen",
    "HeatingMode.KeepWarm" => "Warmhalten",
    "HeatingMode.PizzaSetting" => "Pizza",
    "HeatingMode.HotAir" => "Heißluft",
    "HeatingMode.HotAirGentle" => "HeißluftSchonend",
    "HeatingMode.HotAirGrilling" => "Heißluftgrill",
    "Cleaning.Pyrolysis" => "Pyrolyse"
};

Für die Funktion ist die zwar nicht nötig, da ich aber die Sprachausgabe nicht in Denglisch ansteuere, wäre es komfortabel, diese Tabelle auch für die anderen Geräte einzubauen.

LG

pah
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Supadone am 09 März 2023, 10:31:48
Zitat von: Prof. Dr. Peter Henning am 08 März 2023, 12:01:35
Für den CoffeeMaker sollte in der Dropdown-Liste jetzt übrigens "PowerStandby" statt PowerOff auftauchen und auch funktionieren.
Super, ist vorhanden und funktioniert :)


ZitatBetreffend die Programmsteuerung der Haube: Laut einem der Log-Auszüge verstehe ich das sogar, dort wird nämlich gemeldet:
"Cooking.Common.Program.Hood.Venting". Ich habe also mit meiner Behauptung, es müsse "Cooking.Hood" als Präfix lauten, daneben gelegen. Ich habe das jetzt mal in "Cooking.Common" geändert, siehe anliegende Version.
Leider kommt es weiterhin zu einem Fehler
2023.03.09 09:51:06.878 1: [HomeConnect_GetPrograms] LC97FMR60: getting programs with uri /api/homeappliances/SIEMENS-LC97FMR60-68A40E083938/programs/available
2023.03.09 09:51:15.403 3: [HomeConnect] LC97FMR60: set command: SelectedProgram
2023.03.09 09:51:15.404 1: [HomeConnect_Set] command to select program Cooking.Common.Program.Hood.Venting
2023.03.09 09:51:15.420 1: [HomeConnect] selecting program Cooking.Common.Program.Hood.Venting with uri /api/homeappliances/SIEMENS-LC97FMR60-68A40E083938/programs/selected and data {"data":{"key":"Cooking.Hood.Program.Cooking.Common.Program.Hood.Venting"}}
2023.03.09 09:51:15.557 1: [HomeConnect_HandleError] LC97FMR60: Error "Unknown program feature key: Cooking.Hood.Program.Cooking.Common.Program.Hood.Venting"
2023.03.09 09:51:21.896 1: [HomeConnect_GetProgramOptions] LC97FMR60: getting options with uri /api/homeappliances/SIEMENS-LC97FMR60-68A40E083938/programs/available/Cooking.Hood.Program.Cooking.Common.Program.Hood.Venting
2023.03.09 09:51:22.042 1: [HomeConnect_HandleError] LC97FMR60: Error "Program not supported"
2023.03.09 09:51:28.800 3: [HomeConnect] LC97FMR60: set command: StartProgram
2023.03.09 09:51:28.800 1: [HomeConnect] LC97FMR60: start program Hood.Venting with uri /api/homeappliances/SIEMENS-LC97FMR60-68A40E083938/programs/active and data {"data":{"key":"Cooking.Hood.Program.Hood.Venting","options":[]}}
2023.03.09 09:51:28.984 1: [HomeConnect_HandleError] LC97FMR60: Error "Unknown program feature key: Cooking.Hood.Program.Hood.Venting"



Was braucht man für die Übersetzungstabelle alles? Nur die möglichen Programme?

Grüße

Andy
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 09 März 2023, 14:22:20
ZitatCooking.Hood.Program.Cooking.Common.Program.Hood.Venting
Irre. Wieso denn doppelt???

Muss ich untersuchen. Edit: Heute nicht mehr, morgen vormittag

Übersetzungstabelle: Ja, vorerst nur deutsche Namen für die Programme. Und eventuell für die Events.

LG

pah
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 10 März 2023, 20:10:57
So, ich habe hier mal eine ganz spezielle Version angehängt, die diesen komischen Fehler hoffentlich abfängt.

Bitte mal das Log posten

LG

pah
Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Supadone am 11 März 2023, 09:48:13
Super, jetzt funktioniert es auch mit der Dunstabzugshaube :)
2023.03.11 08:59:19.053 1: [HomeConnect_GetPrograms] LC97FMR60: getting programs with uri /api/homeappliances/SIEMENS-LC97FMR60-68A40E083938/programs/available
2023.03.11 08:59:34.765 3: [HomeConnect] LC97FMR60: set command: SelectedProgram
2023.03.11 08:59:34.765 1: [HomeConnect_Set] command to select program Hood.Venting
2023.03.11 08:59:34.774 1: [HomeConnect] selecting program Hood.Venting with uri /api/homeappliances/SIEMENS-LC97FMR60-68A40E083938/programs/selected and data {"data":{"key":"Cooking.Common.Program.Hood.Venting"}}
2023.03.11 08:59:34.911 1: [HomeConnect_HandleError] LC97FMR60: Error "Program can currently not be written"
2023.03.11 08:59:40.183 3: [HomeConnect] LC97FMR60: set command: StartProgram
2023.03.11 08:59:40.183 1: [HomeConnect] LC97FMR60: start program Hood.Venting with uri /api/homeappliances/SIEMENS-LC97FMR60-68A40E083938/programs/active and data {"data":{"key":"Cooking.Common.Program.Hood.Venting","options":[]}}
2023.03.11 08:59:40.511 1: [HomeConnect_GetProgramOptions] LC97FMR60: getting options with uri /api/homeappliances/SIEMENS-LC97FMR60-68A40E083938/programs/available/Cooking.Common.Program.Hood.Venting
2023.03.11 08:59:40.637 1: [HomeConnect_ResponseGetProgramOptions] LC97FMR60: key VentingLevel has current value FanOff  and default value FanStage02
2023.03.11 08:59:40.638 1: PERL WARNING: Use of uninitialized value $def in string eq at ./FHEM/48_HomeConnect.pm line 1366.
2023.03.11 08:59:42.966 1: [HomeConnect_ReadEventChannel] LC97FMR60: OperationState = Run
2023.03.11 08:59:43.195 1: [HomeConnect_ReadEventChannel] LC97FMR60: PowerState = On
2023.03.11 08:59:43.196 1: [HomeConnect_ReadEventChannel] LC97FMR60: ActiveProgram = Hood.Venting
2023.03.11 08:59:43.196 1: [HomeConnect_ReadEventChannel] LC97FMR60: VentingLevel = FanStage01
2023.03.11 08:59:47.270 3: [HomeConnect] LC97FMR60: set command: StopProgram
2023.03.11 08:59:48.217 1: [HomeConnect_ReadEventChannel] LC97FMR60: PowerState = Off
2023.03.11 08:59:48.217 1: [HomeConnect_ReadEventChannel] LC97FMR60: ActiveProgram =
2023.03.11 08:59:48.366 1: [HomeConnect_ReadEventChannel] LC97FMR60: OperationState = Inactive


Jetzt wurden auch zwei neue set-Befehle geladen. VentingLevel und IntensiveLevel, leider wieder mit Fehlermeldungen.
2023.03.11 09:15:39.777 3: [HomeConnect] LC97FMR60: set command: VentingLevel
2023.03.11 09:15:39.784 1: [HomeConnect_Set] changing option with uri /api/homeappliances/SIEMENS-LC97FMR60-68A40E083938/programs/selected/options/Cooking.Common.Option.VentingLevel and data {"data":{"key":"Cooking.Common.Option.VentingLevel","value":"Cooking.Hood.EnumType.Stage.FanStage02"}}
2023.03.11 09:15:39.949 1: [HomeConnect_HandleError] LC97FMR60: Error "Program option not supported"

2023.03.11 09:16:55.020 3: [HomeConnect] LC97FMR60: set command: IntensiveLevel
2023.03.11 09:16:55.027 1: [HomeConnect_Set] changing option with uri /api/homeappliances/SIEMENS-LC97FMR60-68A40E083938/programs/selected/options/Cooking.Common.Option.IntensiveLevel and data {"data":{"key":"Cooking.Common.Option.IntensiveLevel","value":"Cooking.Hood.EnumType.IntensiveStage.IntensiveStage1"}}
2023.03.11 09:16:55.148 1: [HomeConnect_HandleError] LC97FMR60: Error "Program option not supported"


Ich habe mal alles andere getestet, Lighting geht ebenfalls nicht mehr. Wenn ich set LC97FMR60 Lighting on eingebe kommt folgende Meldung, das set Lightning-Eingabefeld ist danach sofort mit "Cooking.Common.Setting.on" vorausgefüllt.
2023.03.11 09:41:01.695 1: [HomeConnect_HandleError] LC97FMR60: Error "The request content was malformed:
Unexpected character 'C' at input index 59 (line 1, position 60), expected '}':
{"data":{"key":"Lighting","value":"Cooking.Common.Setting."Cooking.Common.Setting.on""}}
                                                           ^
"


Ein set LC97FMR60 Lighting 1 wird sofort in ein true geändert und bringt folgende Fehlermeldung:
2023.03.11 09:44:39.695 3: [HomeConnect] LC97FMR60: set command: Lighting
2023.03.11 09:44:39.733 1: [HomeConnect_Set] changing setting with uri /api/homeappliances/SIEMENS-LC97FMR60-68A40E083938/settings/Lighting and data {"data":{"key":"Lighting","value":true}}
2023.03.11 09:44:39.940 1: [HomeConnect_HandleError] LC97FMR60: Error "Setting is not supported"


Ein PowerOff finde ich auch nicht mehr in der Liste, war das nicht auch bei der Dunstabzugshaube mal da?

Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 11 März 2023, 13:37:55
OK, zunächst zum Problem
ZitatJetzt wurden auch zwei neue set-Befehle geladen. VentingLevel und IntensiveLevel, leider wieder mit Fehlermeldungen.
Bitte hierzu ausführen ZZZ_Dump, ich brauche die genaue Parametrierung der Level settings.

Zum Problem
Zitat2023.03.11 09:41:01.695 1: [HomeConnect_HandleError] LC97FMR60: Error "The request content was malformed:
Das muss ich überprüfen.

LG

pah

Titel: Antw:Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Supadone am 11 März 2023, 17:13:41
Zitat von: Prof. Dr. Peter Henning am 11 März 2023, 13:37:55
OK, zunächst zum Problem Bitte hierzu ausführen ZZZ_Dump, ich brauche die genaue Parametrierung der Level settings.
Device LC97FMR60 of type Hood has
settings: $VAR1 = {
          'PowerState' => [
                            'BSH.Common.Setting',
                            'BSH.Common.EnumType.PowerState.',
                            'Off',
                            undef
                          ],
          'Lighting' => [
                          'Cooking.Common.Setting',
                          'Cooking.Common.Setting',
                          bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),
                          undef
                        ],
          'LightingBrightness' => [
                                    'Cooking.Common.Setting',
                                    'Cooking.Common.Setting',
                                    10,
                                    '%'
                                  ]
        };

options: $VAR1 = {
          'IntensiveLevel' => [
                                'Cooking.Common.Option.Hood',
                                'Cooking.Hood.EnumType.IntensiveStage',
                                undef,
                                'IntensiveStage1,IntensiveStage2',
                                undef,
                                undef
                              ],
          'VentingLevel' => [
                              'Cooking.Common.Option.Hood',
                              'Cooking.Hood.EnumType.Stage',
                              'FanStage02',
                              'FanStage01,FanStage02,FanStage03',
                              undef,
                              undef
                            ]
        };

transtable: $VAR1 = {};

poweroff: $VAR1 = undef;


Bezüglich der Übersetzungstabelle, die liefere ich noch nach. Hab nur momentan einen zu zahnen beginnenden Sprößling zu Hause und dementsprechend nicht so viel Zeit... ;)
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 19 März 2023, 20:01:03
Ich habe jetzt mal ein paar Tage pausieren müssen - und diskutiere mit den Leuten von HomeConnect über deren Simulatoren. Wäre nämlich schön, wenn ich solche Dinge wie den Coffeemaker auch etwas direkter zum Testen verwenden könnte.

LG

pah
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Supadone am 19 April 2023, 11:53:08
Habe heute eine neue Spülmaschine bekommen, nach einem scan wird das Gerät normal angelegt.
Nach einem get settings im Device bleibt aber leider alles leer:

2023.04.19 11:44:23.689 1: [HomeConnect_Set] S257EAX36E: no settings defined, please execute Get S257EAX36E Settings
2023.04.19 11:44:23.690 1: [HomeConnect_Set] S257EAX36E: no settings defined, please execute Get S257EAX36E Settings
2023.04.19 11:44:36.616 1: [HomeConnect_Set] S257EAX36E: no settings defined, please execute Get S257EAX36E Settings
2023.04.19 11:44:36.862 1: [HomeConnect_Set] S257EAX36E: no settings defined, please execute Get S257EAX36E Settings
2023.04.19 11:44:36.862 1: [HomeConnect_Set] S257EAX36E: no settings defined, please execute Get S257EAX36E Settings
2023.04.19 11:44:44.926 1: [HomeConnect_DDtoHash] S257EAX36E: setting device dependent things
2023.04.19 11:44:44.927 1: PERL WARNING: Use of uninitialized value $type in hash element at ./FHEM/48_HomeConnect.pm line 451.
2023.04.19 11:44:44.927 1: PERL WARNING: Use of uninitialized value $type in hash element at ./FHEM/48_HomeConnect.pm line 453.
2023.04.19 11:44:44.927 1: PERL WARNING: Use of uninitialized value $type in hash element at ./FHEM/48_HomeConnect.pm line 460.
2023.04.19 11:44:44.927 1: PERL WARNING: Use of uninitialized value $type in hash element at ./FHEM/48_HomeConnect.pm line 463.
2023.04.19 11:44:44.927 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/48_HomeConnect.pm line 1454.
2023.04.19 11:44:44.928 1: [HomeConnect_ResponseGetSettings] S257EAX36E: no settings found

EDIT:
Mittlerweile wurden einige Readings angelegt, ein get settings führt weiterhin zu
2023.04.22 14:51:52.951 1: [HomeConnect_Set] S257EAX36E: no settings defined, please execute Get S257EAX36E Settings
2023.04.22 14:51:52.957 1: [HomeConnect_Set] TI909701HC: no settings defined, please execute Get TI909701HC Settings
2023.04.22 14:51:55.219 1: [HomeConnect_Set] S257EAX36E: no settings defined, please execute Get S257EAX36E Settings
2023.04.22 14:51:55.221 1: [HomeConnect_Set] S257EAX36E: no settings defined, please execute Get S257EAX36E Settings
2023.04.22 14:52:09.348 1: [HomeConnect_DDtoHash] S257EAX36E: setting device dependent things
2023.04.22 14:52:09.348 1: [HomeConnect_ResponseGetSettings] S257EAX36E: no settings found
2023.04.22 14:52:10.297 1: [HomeConnect_Set] S257EAX36E: no settings defined, please execute Get S257EAX36E Settings
2023.04.22 14:52:10.298 1: [HomeConnect_Set] S257EAX36E: no settings defined, please execute Get S257EAX36E Settings
2023.04.22 14:52:10.474 1: [HomeConnect_Set] S257EAX36E: no settings defined, please execute Get S257EAX36E Settings

TI909701HC ist meine Kaffeemaschine, wieso taucht die denn da mit auf?

EDIT 2:
Hab gerade gesehen dass auch bei meinen anderen Geräten nur ein get settings verfügbar ist.
Das hcconn Device steht aber auf connected. Das einzige was ich in letzter Zeit verändert habe ist dass ich dem Genörgel in der App nachgegeben habe und eine Single-ID erstellt habe. Ich dachte aber irgendwo gelesen zu haben dass das aber keinen Einfluss auf Fhem haben sollte...

Grüße

Andy
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 03 Mai 2023, 21:35:30
Bei mir taucht das mit den fehlenden Settings neuerdings auch auf. Ich muss sehen, dass ich das irgendwie abfange und dort einen default eintrage. Ist etwas nervig.

LG

pah
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: 87insane am 04 Mai 2023, 12:10:49
Hey zusammen,

den Fehler habe ich bei meiner Spülmaschine auch.

Anbei aber mal ein devStateIcon für eine Spülmaschine:
{
my $ownstate = ReadingsVal($name,'state','ERR');
my $program = ReadingsVal($name,'tr_State2','ERR');
my $propercent = ReadingsVal($name,'ProgramProgress','ERR');
my $doorstate = ReadingsVal($name,'tr_DoorState','ERR');
my $pic = $ownstate =~ m,Run,
? 'scene_dishwasher@red'
: 'scene_dishwasher';
my $text = $ownstate =~ m,Run,
? "($propercent)"
: $doorstate eq "Tür offen"
? "$doorstate"
: "$ownstate";
my $text2 = $ownstate =~ m,Run,
? "$program"
: "";
"<div><a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\"></a>".FW_makeImage($pic)."
$text $text2
</div>"
}

Ich persönlich finde die kleine Übersicht innerhalb von FHEM ganz angenehm.


Was mir noch aufgefallen ist, ich habe einen Kochfeld, eine Spülmaschine und einen Backofen der Homeconnect kann.
Normal konnte ich alles schalten. In der hier gebotenen Version kann ich das nicht mehr. Ich habe weiter oben gelesen, dass die Befehle "verworfen" werden. Ggf kann ich etwas testen oder unterstützen? Wenn ja, bitte kurz melden und Info, was ich machen soll/testen soll.

Da ich diese Version vorhin erst aktiviert habe, habe ich bisher nur ein devStateIcon. Würde aber bei Bedarf, für die bei mir vorhandenen Geräte, noch welche nachliefern.

Gruß,
87Insane
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 04 Mai 2023, 13:07:02
Die "kleine Übersicht" habe ich auch. Für die Spülmaschine sieht das so aus:

1. Attribut stateFormat setzen auf {my $open=ReadingsVal("SN55ZS49CE","tr_DoorState","");
sprintf("<p align=\"left\">\n%s\n<br/>%s\n%s</p>",
ReadingsVal("SN55ZS49CE","state",""),ReadingsVal("SN55ZS49CE","tr_State1",""),
(($open=~/offen/)?"<br/>".$open:""))}

2. Attribut devStateIcon setzen auf Offline:scene_dishwasher@red Aborting:scene_dishwasher@yellow Inactive:scene_dishwasher@black Ready:scene_dishwasher@blue Delayed.*:scene_dishwasher_delay@green Run.*:scene_dishwasher@green
Das resultiert in einer komfortablen zwei- bis dreizeiligen Anzeige, in welcher die erste Zeile ein eingefärbtes Icon ist, die zweite Zeile den Zustand darstellt. Und die dritte Zeile erscheint, wenn die Tür offen ist.

Dem entsprechend für die Waschmaschine:
1. {my $open=ReadingsVal("WAV28G43","tr_DoorState","");
sprintf("<p align=\"left\">\n%s\n<br/>%s\n%s</p>",
ReadingsVal("WAV28G43","state",""),ReadingsVal("WAV28G43","tr_State1",""),
(($open=~/offen/)?"<br/>".$open:""))}

2.Offline:scene_washing_machine@red Aborting:scene_washing_machine@yellow
Inactive:scene_washing_machine@black Finished:scene_washing_machine@orange
Ready:scene_washing_machine@blue Delayed.*:scene_washing_machine_delay@green
Run.*:scene_washing_machine@green

So, aber jetzt zur interessanten Frage: Schalten von Kochfeld und Backofen ? Den Backofen kann ich zwar mit dieser unsäglichen werbeverseuchten App einschalten, wenn der Schalter am Backofen entsprechend steht - aber nicht mit dem HomeConnect-Modul (übrigens auch nicht mit der Originalversion). Mit dem Modul funktioniert lediglich das Setzen das Setzen des Alarmtimers.

Und das Kochfeld kann ich auch mit der App nicht aus der Ferne steuern, das ist laut Angaben von BSH auch nicht vorgesehen - nachvollziehbare Sicherheitsbedenken. Und da wir in Deutschland leben, wo man gerne andere Menschen erzieht: Nein, das dürfte ich auch dann nicht, wenn ich BSH von allen Haftungsgründen befreien würde. Was aber immerhin funktioniert (und das auch mit dem Modul), ist das setzen des Alarmtimers.

Also, ganz ernsthafte Frage: Du konnest wirklich Backofen und Kochfeld steuern???

LG

pah
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: 87insane am 04 Mai 2023, 13:36:35
Füge doch bitte ein Bild deines devStateIcons an, das macht die Wahl einfacher für den Benutzer.

Also um das mal aufzudröseln:
Backofen: Hier kann ich alles über die App steuern und das geht über die leider hässlichen setter auch mit dem normalen Modul für Homeconnect.
Kochfeld: Ein fernstarte ist in DE nicht erlaubt und ging auch nicht. Danach geht aber alles. Also z.B. Zone xy hoch/runter regeln oder Bratsensor aktivieren usw. Am Kochfeld meine ich aber dies bestätigen zu müssen bei einigen Optionen.

Wie gesagt, teste ich auch gerne. Ich muss nur Instruktionen haben :)

Ggf. ist das auch eine Herstellerfrage. Meine Geräte sind alle von NEFF.
PS: Ich nutze die original App auf einem Android Gerät und bei mir ist die Werbung nur im unteren Teil auf der Startseite. Danach ist da keine Werbung.

Gruß,
87Insane
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 04 Mai 2023, 13:51:18
Screenshot_20230505_044439.png
Werbung: Nicht nur auf der Startseite, sondern auch im Menü unten

Das mit dem Steuern scheint tatsächlich eine Frage des Herstellers zu sein  >:(

OK, muss jetzt in die Vorlesung, ich bleibe dran.


LG

pah
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: 87insane am 05 Mai 2023, 12:15:55
Kann ich etwas beisteuern? Die o.g. Geräte stehen mir zur Verfügung und ich könnte das ein oder andere testen...

PS: Woher kommen bei dir die Icons für .*_delay?
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 05 Mai 2023, 16:01:16
Icons: Selbst gemacht. Habe ich weiter unten auch gepostet.

Edit: So, ich habe mal versucht, das Thema mit den fehlenden Settings in den Griff zu bekommen. BSH möchte ja, dass man die Fähigkeiten jedes Gerätes erst abfragt, bevor man etwas steuert. OK, prima - aber ein paar Defaults sollten in jedem Falle da sein. Teste das gerade noch, wird dann hier publiziert.

LG

pah
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: RockFan am 14 Mai 2023, 14:44:45
Hallo pah,

Danke für die Mühen für die vielen Änderungen hier!

Nachdem ich endlich mein Problem mit dem Login lösen konnte (Kein set LoginNecessary nach Logout (https://forum.fhem.de/index.php?topic=132867.0)) bin ich jetzt auch dabei unseren Siemens Wäschetrockner umzustellen.

Leider bekomme ich einige Fehlermeldungen im Log:

2023.05.14 14:12:17 4: myHomeConnectConnection: request /api/homeappliances
2023.05.14 14:12:17 4: myHomeConnectConnection: no token refresh needed
2023.05.14 14:12:17 4: myHomeConnectConnection: requestAfterToken https://api.home-connect.com/api/homeappliances
2023.05.14 14:12:18 4: myHomeConnectConnection: response {
  "data": {
    "homeappliances": [{
      "brand": "Siemens",
      "connected": true,
      "enumber": "WT7YH701/02",
      "haId": "SIEMENS-WT7YH701-68A40E11A618",
      "name": "Trockner",
      "type": "Dryer",
      "vib": "WT7YH701"
    }]
  }
}
Use of uninitialized value in concatenation (.) or string at ./FHEM/48_HomeConnect.pm line 529.
Use of uninitialized value in concatenation (.) or string at ./FHEM/48_HomeConnect.pm line 530.
Use of uninitialized value $type in pattern match (m//) at ./FHEM/48_HomeConnect.pm line 556.
Use of uninitialized value in pattern match (m//) at ./FHEM/48_HomeConnect.pm line 574.
2023.05.14 14:12:43 1: [HomeConnect_Set] WT7YH701: no settings defined, please execute Get WT7YH701 Settings

Use of uninitialized value in concatenation (.) or string at ./FHEM/48_HomeConnect.pm line 529.
Use of uninitialized value in concatenation (.) or string at ./FHEM/48_HomeConnect.pm line 530.
Use of uninitialized value $type in pattern match (m//) at ./FHEM/48_HomeConnect.pm line 556.
Use of uninitialized value in pattern match (m//) at ./FHEM/48_HomeConnect.pm line 574.
2023.05.14 14:12:53 1: [HomeConnect_Set] WT7YH701: no settings defined, please execute Get WT7YH701 Settings
Use of uninitialized value in concatenation (.) or string at ./FHEM/48_HomeConnect.pm line 529.
Use of uninitialized value in concatenation (.) or string at ./FHEM/48_HomeConnect.pm line 530.
Use of uninitialized value $type in pattern match (m//) at ./FHEM/48_HomeConnect.pm line 556.
Use of uninitialized value in pattern match (m//) at ./FHEM/48_HomeConnect.pm line 574.
2023.05.14 14:12:53 1: [HomeConnect_Set] WT7YH701: no settings defined, please execute Get WT7YH701 Settings
Use of uninitialized value in concatenation (.) or string at ./FHEM/48_HomeConnect.pm line 529.
Use of uninitialized value in concatenation (.) or string at ./FHEM/48_HomeConnect.pm line 530.
Use of uninitialized value $type in pattern match (m//) at ./FHEM/48_HomeConnect.pm line 556.
Use of uninitialized value in pattern match (m//) at ./FHEM/48_HomeConnect.pm line 574.
2023.05.14 14:13:02 1: [HomeConnect_Set] WT7YH701: no settings defined, please execute Get WT7YH701 Settings
Use of uninitialized value in concatenation (.) or string at ./FHEM/48_HomeConnect.pm line 529.
Use of uninitialized value in concatenation (.) or string at ./FHEM/48_HomeConnect.pm line 530.
Use of uninitialized value $type in pattern match (m//) at ./FHEM/48_HomeConnect.pm line 556.
Use of uninitialized value in pattern match (m//) at ./FHEM/48_HomeConnect.pm line 574.
2023.05.14 14:13:02 1: [HomeConnect_Set] WT7YH701: no settings defined, please execute Get WT7YH701 Settings
Use of uninitialized value in concatenation (.) or string at ./FHEM/48_HomeConnect.pm line 529.
Use of uninitialized value in concatenation (.) or string at ./FHEM/48_HomeConnect.pm line 530.
Use of uninitialized value $type in pattern match (m//) at ./FHEM/48_HomeConnect.pm line 556.
Use of uninitialized value in pattern match (m//) at ./FHEM/48_HomeConnect.pm line 574.
2023.05.14 14:13:02 1: [HomeConnect_Set] WT7YH701: no settings defined, please execute Get WT7YH701 Settings
Use of uninitialized value in concatenation (.) or string at ./FHEM/48_HomeConnect.pm line 529.
Use of uninitialized value in concatenation (.) or string at ./FHEM/48_HomeConnect.pm line 530.
Use of uninitialized value $type in pattern match (m//) at ./FHEM/48_HomeConnect.pm line 556.
Use of uninitialized value in pattern match (m//) at ./FHEM/48_HomeConnect.pm line 574.
2023.05.14 14:13:02 1: [HomeConnect_Set] WT7YH701: no settings defined, please execute Get WT7YH701 Settings

Wenn ich get Settings aufrufe, bringt das leider wenig.

Weitere etwas abweichende Logeinträge:

2023.05.14 14:14:40 1: [HomeConnect_DDtoHash] WT7YH701: setting device dependent things
Use of uninitialized value $type in hash element at ./FHEM/48_HomeConnect.pm line 451.
Use of uninitialized value $type in hash element at ./FHEM/48_HomeConnect.pm line 453.
Use of uninitialized value $type in hash element at ./FHEM/48_HomeConnect.pm line 460.
Use of uninitialized value $type in hash element at ./FHEM/48_HomeConnect.pm line 463.
Use of uninitialized value in concatenation (.) or string at ./FHEM/48_HomeConnect.pm line 1454.

Ich verwende Version 1.0beta2. Das sollte die aktuellste Version sein oder liege ich falsch?

Was läuft bei mir anders/verkehrt?


Viele Grüße
Dieter

Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 14 Mai 2023, 16:31:23
Nun, einen Wäschetrockner hatten wir bisher noch nicht im Test...

OK, die Sache mit den Settings habe ich inzwischen im Griff - wenn gar keine vorhanden sind, werden Defaults genommen.Es ist zwar von BSH nett gedacht, dass man alle Daten immer erst vom gerät holen soll - aber deren Cloud ist so instabil, dass man sich darauf eben nicht verlassen kann.

Ich kann derzeit noch nicht sagen, ob ich noch in der kommenden Woche eine neue Beta-Version schaffe. Wenn nicht, sieht es für die beiden folgenden Wochen düster aus: Erst LEARNTEC, dann 1 Woche Urlaub.

Also drückt die Daumen, dass ich in dieser Woche nicht zu viele nervige Termine wahrnehmen muss...

LG

pah
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: RockFan am 14 Mai 2023, 16:57:34
Danke für die schnelle Antwort.
Keine Hektik :)

Viele Grüße
Dieter
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Kuehnhackel am 19 Juni 2023, 17:04:19
Hallo zusammen, ich würde die Beta-Version auch einmal testen wollen.

Kann mir jemand kurz eine Erklärung geben, ob es parallel funktioniert oder wie ich vorgehen muss.

Danke vorab und

LG
Ralf
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 20 Juni 2023, 11:38:38
Parallel geht es nicht. Und wie gesagt: Alles noch etwas Beta. Da ich schwerwiegende gesundheitliche Probleme hatte, ist das auch noch nicht weiter entwickelt, als es im Februar war.

Anleitung: Das Original 48_HomeConnect.pm irgendwo sichern und mit der angehängten Datei überschreiben. Und schauen, was passiert.

LG

pah
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Kuehnhackel am 20 Juni 2023, 11:42:13
Zitat von: Prof. Dr. Peter Henning am 20 Juni 2023, 11:38:38Da ich schwerwiegende gesundheitliche Probleme hatte, ist das auch noch nicht weiter entwickelt, als es im Februar war.
LG
pah

Danke für die Antwort, ich werde es versuchen.

Dann wünsche ich auf jeden Fall, dass die gesundheitlichen Probleme überwunden sind, ansonsten weiterhin gute Genesung.

LG
Ralf
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Shadow3561 am 04 August 2023, 19:09:34
Moin,

ich habe heute meinen neuen Geschirrspüler montiert und das Modul geladen.

Leider funktioniert beim Bosch SMV8YCX03E das get Settings nicht.
Readings werden geschrieben und aktualisiert aber ich habe keine Set-Befehle und kann somit den Spüler nicht steuern.

Mit dem Modul von der 1.Seite funktioniert es, auch wenn ein paar Spülprogramme fehlen aber da stören mich die kryptischen readings.

Was kann ich tun um zu helfen damit wir das Modul ans laufen bekommen?

Mit freundlichen Grüßen

##
EDIT:
jetzt funktioniert alles.
Habe das device gelöscht und neu angelegt, jetzt läuft alles.

Mit freundlichen Grüßen
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 09 August 2023, 19:52:47
Prima. Ich habe - gesundheitlich bedingt - einige Monate lang an dem Modul nichts gemacht, werde das demnächst wieder aufnehmen. Es wackeln noch zu viele Dinge darin.

LG

pah
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: 87insane am 15 August 2023, 09:42:25
Guten Morgen zusammen,

mir ist bei der Spülmaschine noch aufgefallen, dass Daten wie "Klarspüler fast leer" usw nicht angezeigt werden in FHEM. Ggf. kann man das noch mit rein nehmen.

[code]define S155EB800E HomeConnect homeconnect_server 012120425398000825
attr S155EB800E alias Spülmaschine
attr S155EB800E devStateIcon { \
my $ownstate = ReadingsVal($name,'state','ERR');;\
my $program = ReadingsVal($name,'tr_State2','ERR');;\
my $propercent = ReadingsVal($name,'ProgramProgress','ERR');;\
my $doorstate = ReadingsVal($name,'tr_DoorState','ERR');;\
\
my $pic = $ownstate =~ m,Run,\
? 'scene_dishwasher@red'\
: $ownstate =~ m,Offline,\
? 'scene_dishwasher@brown'\
: $ownstate =~ m,Aborting,\
? 'scene_dishwasher@orange'\
: $ownstate =~ m,Inactive,\
? 'scene_dishwasher@black'\
: $ownstate =~ m,Finished,\
? 'scene_dishwasher@blue'\
: $ownstate =~ m,Ready,\
? 'scene_dishwasher'\
: 'scene_dishwasher_delay';;\
\
my $text = $ownstate =~ m,Run,\
? "($propercent)"\
: $doorstate eq "Tür offen"\
? "$doorstate"\
: "$program";; \
\
my $text2 = $ownstate =~ m,Run,\
? "$program"\
: "";;\
\
\
"<div><a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\"></a>".FW_makeImage($pic)." \
$text $text2\
</div>" \
}
attr S155EB800E event-on-change-reading .*
attr S155EB800E room EG Küche
#   DEF        homeconnect_server 012120425398000825
#   FUUID      64535c96-f33f-33ef-902f-b70e6ec173b62217
#   NAME       S155EB800E
#   NR         211
#   STATE      Ready
#   TYPE       HomeConnect
#   aliasname  Spülmaschine
#   brand      Neff
#   eventChannelTimeout 1692085419.30926
#   eventCount 539
#   events     SaltNearlyEmpty,RinseAidNearlyEmpty
#   haId       012120425398000825
#   hcconn     homeconnect_server
#   prefix     Dishcare.Dishwasher
#   programs   Auto2,Eco50,Glas40,PreRinse,IntensivPower,Kurz60,MachineCare,NightWash
#   retrycounter 0
#   type       Dishwasher
#   vib        S155EB800E
#   READINGS:
#     2023-08-14 00:31:14   ActiveProgram   
#     2023-08-14 22:55:29   DoorState       Closed
#     2023-05-15 23:04:18   ExtraDry        0
#     2023-05-15 23:04:18   IntensivZone    0
#     2023-08-14 00:31:14   OperationState  Ready
#     2023-08-14 00:31:14   PowerState      Off
#     2023-05-10 22:46:57   ProgramAborted  Present
#     2023-08-14 00:31:14   ProgramFinished Off
#     2023-08-14 00:31:14   ProgramProgress 0 %
#     2023-08-14 00:31:14   RemainingProgramTime 9000 seconds
#     2023-08-14 00:31:14   RemainingProgramTimeHHMM 02:30
#     2023-08-09 11:06:02   RemoteControlActive 1
#     2023-08-09 11:06:02   RemoteControlStartAllowed 1
#     2023-08-05 10:00:09   RinseAidNearlyEmpty Present
#     2023-08-05 16:58:41   SelectedProgram Auto2
#     2023-05-15 23:04:18   SilenceOnDemand 0
#     2023-05-15 23:04:18   StartAtHHMM     23:04
#     2023-05-15 23:04:18   StartInRelative 0 seconds
#     2023-05-15 23:04:18   StartInRelativeHHMM 00:00
#     2023-05-15 23:04:18   StartToHHMM     1:34
#     2023-08-14 22:55:29   state           Ready
#     2023-08-14 22:55:29   tr_DoorState    Tür geschlossen
#     2023-08-09 11:06:02   tr_RemoteControlState Fernstart aktiv
#     2023-08-14 22:55:29   tr_State1       Bereit
#     2023-08-14 22:55:29   tr_State2       Bereit
#   data:
#     poweroff   PowerOff
#     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
#
setstate S155EB800E Ready
setstate S155EB800E 2023-08-14 00:31:14 ActiveProgram 
setstate S155EB800E 2023-08-14 22:55:29 DoorState Closed
setstate S155EB800E 2023-05-15 23:04:18 ExtraDry 0
setstate S155EB800E 2023-05-15 23:04:18 IntensivZone 0
setstate S155EB800E 2023-08-14 00:31:14 OperationState Ready
setstate S155EB800E 2023-08-14 00:31:14 PowerState Off
setstate S155EB800E 2023-05-10 22:46:57 ProgramAborted Present
setstate S155EB800E 2023-08-14 00:31:14 ProgramFinished Off
setstate S155EB800E 2023-08-14 00:31:14 ProgramProgress 0 %
setstate S155EB800E 2023-08-14 00:31:14 RemainingProgramTime 9000 seconds
setstate S155EB800E 2023-08-14 00:31:14 RemainingProgramTimeHHMM 02:30
setstate S155EB800E 2023-08-09 11:06:02 RemoteControlActive 1
setstate S155EB800E 2023-08-09 11:06:02 RemoteControlStartAllowed 1
setstate S155EB800E 2023-08-05 10:00:09 RinseAidNearlyEmpty Present
setstate S155EB800E 2023-08-05 16:58:41 SelectedProgram Auto2
setstate S155EB800E 2023-05-15 23:04:18 SilenceOnDemand 0
setstate S155EB800E 2023-05-15 23:04:18 StartAtHHMM 23:04
setstate S155EB800E 2023-05-15 23:04:18 StartInRelative 0 seconds
setstate S155EB800E 2023-05-15 23:04:18 StartInRelativeHHMM 00:00
setstate S155EB800E 2023-05-15 23:04:18 StartToHHMM 1:34
setstate S155EB800E 2023-08-14 22:55:29 state Ready
setstate S155EB800E 2023-08-14 22:55:29 tr_DoorState Tür geschlossen
setstate S155EB800E 2023-08-09 11:06:02 tr_RemoteControlState Fernstart aktiv
setstate S155EB800E 2023-08-14 22:55:29 tr_State1 Bereit
setstate S155EB800E 2023-08-14 22:55:29 tr_State2 Bereit

[/code]



Gruß,
87Insane
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 18 August 2023, 09:30:23
Werde ich irgendwie berücksichtigen.

LG

pah
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: doman75 am 29 August 2023, 09:53:05
Hallo,

bei mir meckert FHEM die Umlaute in dem Modul an, bsp:
Unrecognized character \xC3; marked by <-- HERE after  => "Vorsp<-- HERE near column 23 at ./FHEM/48_HomeConnect.pm line 129.

Habs gefunden

da ist in dem Bereich Zeile 109-115 was verrutscht
    "door"              =>  "Tür",
    "alarm"             =>  "Kurzzeitwecker um"
);

  "
  "Inactive" => "Inaktiv",
  "Run" => "Läuft",
  "Ready" => "Bereit",
  "Finished" => "Fertig"



Ich habe das Modul mit meinem Windows Rechner gedownloaded und per WINSCP übertragen, also eigentlich wie immer. Hat jemand eine Idee woran es liegen könnte?

Danke
Swen
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: 87insane am 29 August 2023, 15:32:21
UTF-8 / ANSI 1252 ggf....
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Shadow3561 am 30 August 2023, 17:57:00
Zitat von: doman75 am 29 August 2023, 09:53:05Hallo,

bei mir meckert FHEM die Umlaute in dem Modul an, bsp:
Unrecognized character \xC3; marked by <-- HERE after  => "Vorsp<-- HERE near column 23 at ./FHEM/48_HomeConnect.pm line 129.

Habs gefunden

da ist in dem Bereich Zeile 109-115 was verrutscht
    "door"              =>  "Tür",
    "alarm"             =>  "Kurzzeitwecker um"
);

  "
  "Inactive" => "Inaktiv",
  "Run" => "Läuft",
  "Ready" => "Bereit",
  "Finished" => "Fertig"



Ich habe das Modul mit meinem Windows Rechner gedownloaded und per WINSCP übertragen, also eigentlich wie immer. Hat jemand eine Idee woran es liegen könnte?

Danke
Swen

Das Problem habe ich leider auch.
Habe einfach die Umlaute im Modul ersetzt. Ist zwar quick and dirty aber funktioniert.

@Prof. Dr. Peter Henning

Ich habe den state noch ein wenig nach meinen Wünschen angepasst, vielleicht magst du es mit ins Modul aufnehmen.

Mit freundlichen Grüßen

                        # define new device state
                        my $state;
                        my $operationState = ReadingsVal($hash->{NAME},"BSH.Common.Status.OperationState","");
                        my $program = ReadingsVal($hash->{NAME},"BSH.Common.Root.ActiveProgram","");
                        if (defined($program) && defined($hash->{commandPrefix}) && length($program) > length($hash->{commandPrefix}) ) {
                            my $prefixLen = length $hash->{commandPrefix};
                            $program = substr($program, $prefixLen);
                        }
                        if ($operationState eq "BSH.Common.EnumType.OperationState.Active" ||
                            $operationState eq "BSH.Common.EnumType.OperationState.Run") {

                            $state = "$program";
                            my $optSpeed = ReadingsVal($hash->{NAME},"Dishcare.Dishwasher.Option.VarioSpeedPlus","0");
                            $state .= " Speed+" if ($optSpeed eq "1");
                            my $optHyg = ReadingsVal($hash->{NAME},"Dishcare.Dishwasher.Option.HygienePlus","0");
                            $state .= " Hygiene+" if ($optHyg eq "1");
                            my $pct = ReadingsVal($hash->{NAME},"BSH.Common.Option.ProgramProgress",undef);
                            $state .= " (Fortschritt $pct)" if (defined $pct);
                            my $tme = ReadingsVal($hash->{NAME},"remaining-time",undef);
                            $state .= " (fertig in $tme h)" if (defined $tme);
                        } elsif ($operationState eq "BSH.Common.EnumType.OperationState.DelayedStart") {
                            $state = "Delayed start of program $program";
                        } else {
                            $state = "Idle";
                        }
                        readingsBulkUpdate($hash, "state", $state) if ($hash->{STATE} ne $state);
                    } elsif (index($_,"event:DISCONNECTED") == 0) { # disconnected event Morluktom 10.05.2020
                        my $state = "Offline";
                        readingsBulkUpdate($hash, "state", $state) if ($hash->{STATE} ne $state);
                    } elsif (index($_,"event:CONNECTED") == 0) { # connected event Morluktom 10.05.2020
                        HomeConnect_UpdateStatus($hash);
                    } else {
            #Log3 $hash->{NAME}, 5, "$hash->{NAME}: event channel unknown: $_";
          }
                }
                readingsEndUpdate($hash, 1);
            } else {
                Log3 $hash->{NAME}, 5, "$hash->{NAME}: event channel read failed, len:\"$len\", received:\"$inputbuf\"";
                HomeConnect_CloseEventChannel($hash);
                return undef;
            }
        }
        Log3 $hash->{NAME}, 5, "$hash->{NAME}: event channel received no more data";
    } else {
        Log3 $hash->{NAME}, 5, "$hash->{NAME}: event channel is not connected";
    }
}
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: sky64 am 16 Februar 2024, 13:22:06
Hallo

Leider bekomme ich das Modul nicht wirklich zum laufen.
Ich habe seit gestern eine Bosch Geschirrspüler. Mit dem Original 48_HomeConnect.pm funktioniert es.
Eben nur mit den Einschränkungen der langen Namen usw.
Mit dem Modul hier aus dem Thread komme ich leider nicht klar.
Ich habe das Modul von Seite 5 geladen. Das ist ja ein klein wengie fehlerhaft und lässt sich nicht laden.
Das habe ich so korrigiert:

    "standby"           =>  "Standby",
    "childlock"         =>  "Kindersicherung",
    "door"              =>  "Tür",
    "alarm"             =>  "Kurzzeitwecker um",
  "Inactive" => "Inaktiv",
  "Run" => "Läuft",
  "Ready" => "Bereit",
  "Finished" => "Fertig"
);

Damit lässt es sich laden.
Allerdings funktioniert nur sehr wenig. Es ist nur ein "get SMV6ZCX16E Settings" vorhanden. Keinerlei "set".
Ich hatte einfach das 48_HomeConnect.pm ausgetauscht und neu gestartet.
Damit waren dann ein paar Reading verfügbar (auf englisch).
Aber mehr auch nicht. Deshalb habe ich das Gerät gelöscht und im HomeConnectConnector ein "ScanDevices" ausgeführt.
Das erzeugt das Gerät erwartungsgemäß neu.
Leider ist nun praktisch nichts brauchbares mehr da.
list SMV6ZCX16E
Internals:
   CFGFN     
   DEF        hccon 013120542060006224
   FUUID      65cf4f7b-f33f-5588-83ec-faeb6d74e20cc958
   NAME       SMV6ZCX16E
   NR         2141
   STATE      ???
   TYPE       HomeConnect
   events    
   haId       013120542060006224
   hcconn     hccon
   prefix    
   READINGS:
   data:
   hmccu:
Attributes:
   DbLogExclude .*
   debug      2
   verbose    5

Im Log steht das :
          'DELETED SMV6ZCX16E'
          'DEFINED SMV6ZCX16E'
2024.02.16 13:05:27 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:05:27 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:05:28 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:05:28 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:05:34 1: PERL WARNING: Use of uninitialized value $type in hash element at ./FHEM/48_HomeConnect.pm line 1484.
2024.02.16 13:05:34 1: PERL WARNING: Use of uninitialized value $type in hash element at ./FHEM/48_HomeConnect.pm line 1486.
2024.02.16 13:05:34 1: PERL WARNING: Use of uninitialized value $type in hash element at ./FHEM/48_HomeConnect.pm line 1493.
2024.02.16 13:05:34 1: PERL WARNING: Use of uninitialized value $type in hash element at ./FHEM/48_HomeConnect.pm line 1496.
2024.02.16 13:05:34 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/48_HomeConnect.pm line 1500.
2024.02.16 13:05:34 1: [HomeConnect_ResponseGetSettings] SMV6ZCX16E: no settings found
2024.02.16 13:05:47 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:05:47 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:05:47 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:05:47 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:06:04 1: [HomeConnect_ResponseGetSettings] SMV6ZCX16E: no settings found
          'ATTR SMV6ZCX16E debug 1'
2024.02.16 13:06:23 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:06:23 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:06:23 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:06:23 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:06:23 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:06:23 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:06:23 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:06:28 1: [HomeConnect_ResponseGetSettings] SMV6ZCX16E: no settings found
2024.02.16 13:06:48 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:06:48 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:06:48 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:06:48 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
          'ATTR SMV6ZCX16E debug 2'
2024.02.16 13:07:05 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:07:05 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:07:05 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:07:05 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:07:05 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:07:05 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:07:05 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
          'ATTR SMV6ZCX16E verbose 5'
2024.02.16 13:07:15 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:07:15 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:07:15 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:07:15 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:07:15 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:07:16 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:07:16 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:07:17 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel searching for data, fileno:"168", nfound:"0", loopCounter:"1"
2024.02.16 13:07:17 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel received no more data
2024.02.16 13:07:19 4: SMV6ZCX16E: request /api/homeappliances/013120542060006224/settings
2024.02.16 13:07:19 4: SMV6ZCX16E: no token refresh needed
2024.02.16 13:07:19 4: SMV6ZCX16E: requestAfterToken https://api.home-connect.com/api/homeappliances/013120542060006224/settings
2024.02.16 13:07:19 4: SMV6ZCX16E: response {
2024.02.16 13:07:19 5: [HomeConnect_ResponseGetSettings] SMV6ZCX16E: get settings response {
2024.02.16 13:07:19 1: [HomeConnect_ResponseGetSettings] SMV6ZCX16E: no settings found
2024.02.16 13:07:22 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel searching for data, fileno:"168", nfound:"1", loopCounter:"1"
2024.02.16 13:07:22 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel len:"52", received:"2e
2024.02.16 13:07:22 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel unknown: 2e
2024.02.16 13:07:22 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel unknown: event:KEEP-ALIVE
2024.02.16 13:07:22 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel unknown: id:013120542060006224
2024.02.16 13:07:22 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel unknown:
2024.02.16 13:07:22 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel unknown:
2024.02.16 13:07:22 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel searching for data, fileno:"168", nfound:"0", loopCounter:"2"
2024.02.16 13:07:22 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel received no more data
2024.02.16 13:07:27 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel searching for data, fileno:"168", nfound:"0", loopCounter:"1"
2024.02.16 13:07:27 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel received no more data
2024.02.16 13:07:32 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel searching for data, fileno:"168", nfound:"1", loopCounter:"1"
2024.02.16 13:07:32 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel len:"52", received:"2e
2024.02.16 13:07:32 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel unknown: 2e
2024.02.16 13:07:32 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel unknown: event:KEEP-ALIVE
2024.02.16 13:07:32 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel unknown: id:013120542060006224
2024.02.16 13:07:32 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel unknown:
2024.02.16 13:07:32 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel unknown:
2024.02.16 13:07:32 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel searching for data, fileno:"168", nfound:"0", loopCounter:"2"
2024.02.16 13:07:32 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel received no more data
2024.02.16 13:07:37 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel searching for data, fileno:"168", nfound:"0", loopCounter:"1"
2024.02.16 13:07:37 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel received no more data
2024.02.16 13:07:42 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel searching for data, fileno:"168", nfound:"0", loopCounter:"1"
2024.02.16 13:07:42 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel received no more data
2024.02.16 13:07:46 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:07:46 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:07:46 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:07:46 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.16 13:07:47 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel searching for data, fileno:"168", nfound:"0", loopCounter:"1"


Hat einer eine Idee was ich falsch mache?

Gruß Ron
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: 87insane am 16 Februar 2024, 15:58:21
Ich weiß nicht mehr was ich geändert hatte, aber die Stelle, die du erwähnt hast war mit dabei. Teste mal die Version...
Hatte anfangs auch ewig rum probiert und ein paar Syntax Themen waren es am Ende nur.

Bei mir laufen damit:
Backofen, Spülmaschine, Induktionskochfeld, Trockner, Waschmaschine - ohne Thema. Mich nerven nur diese ganzen LOG Ausgaben aber dafür bin ich zu wenig Programmierer.

Gruß,
87Insane
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 16 Februar 2024, 19:08:26
Ich habe das Problem, das inzwischen 35 "inoffizielle" Versionen des Moduls kursieren. Es ist zwar nett, dass andere sich dann versuchen - aber wenn es danach heißt, man wisse nicht mehr, was man geändert hat und sei auch kein "Programmierer" (ich übrigens auch nicht...), kann ich nicht weiter helfen.

Ich habe die Arbeit an dem Ding lange Zeit liegen lassen, muss das demnächst vielleicht wieder aufnehmen und in ein echtes Modul überführen, das nicht gegen 48_HomeConnect.pm "ausgetauscht" werden muss.

LG

pah
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: 87insane am 16 Februar 2024, 20:27:36
Ich hab nur die ganzen Syntax Geschichten rauß genommen, die FHEM auch anmeckerte. Man könnte es  ja gegen das normale comparen. Ggf macht es auch Sinn mal eine saubere zu haben. Ich hab mich genau wie @sky64 durch tausende Seiten durch gewühlt und habe es dann irgendwann hinbekommen. Gleiches gilt z.B. auch für das UniFi Modul. Hier muss mal gewaltig aufgeräumt werden.
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: sky64 am 17 Februar 2024, 11:21:07
@87insane, vielen dank für die Version.

Leider bringt es bei mit keinen echten Effekt.
Hier das list nach dem einfachen Austausch und Neustart:
Internals:
   DEF        hccon 013120542060006224
   FUUID      65ce3c9f-f33f-5588-28b4-aabb7b9d3b8f3318
   NAME       SMV6ZCX16E
   NR         547
   STATE      Ready
   TYPE       HomeConnect
   aliasname  Geschirrspüler
   brand      Bosch
   eventChannelTimeout 1708162611.3602
   eventCount 12
   events     SaltNearlyEmpty,RinseAidNearlyEmpty
   haId       013120542060006224
   hcconn     hccon
   prefix     Dishcare.Dishwasher
   programs   Intensiv70,Auto2,Eco50,Glas40,PreRinse,NightWash,Kurz60,MachineCare
   retrycounter 0
   type       Dishwasher
   vib        SMV6ZCX16E
   READINGS:
     2024-02-16 14:04:59   BSH.Common.Event.ProgramAborted BSH.Common.EnumType.EventPresentState.Off
     2024-02-16 14:48:22   BSH.Common.Option.RemainingProgramTime 8100 seconds
     2024-02-16 16:53:15   BSH.Common.Root.SelectedProgram Auto2
     2024-02-16 13:49:17   BSH.Common.Setting.PowerState BSH.Common.EnumType.PowerState.Off
     2024-02-17 10:05:14   BSH.Common.Status.DoorState BSH.Common.EnumType.DoorState.Closed
     2024-02-16 13:47:33   BSH.Common.Status.OperationState BSH.Common.EnumType.OperationState.Ready
     2024-02-16 13:47:33   BSH.Common.Status.RemoteControlActive 1
     2024-02-16 13:47:33   BSH.Common.Status.RemoteControlStartAllowed 1
     2024-02-16 13:51:48   Dishcare.Dishwasher.Option.VarioSpeedPlus 0
     2024-02-17 10:34:04   DoorState       Closed
     2024-02-17 10:37:03   Laufzeit        02:15:00
     2024-02-17 10:34:04   OperationState  Ready
     2024-02-17 10:34:04   RemoteControlActive 1
     2024-02-17 10:34:04   RemoteControlStartAllowed 1
     2024-02-17 10:34:04   state           Ready
     2024-02-17 10:34:04   tr_DoorState    door closed
     2024-02-17 10:34:04   tr_RemoteControlState remote start active
     2024-02-17 10:34:04   tr_State1       ready
     2024-02-17 10:34:04   tr_State2       ready
   data:
     poweroff   PowerOff
Attributes:
   DbLogExclude .*
   alias      Geschirrspüler
   icon       scene_dishwasher
   room       Geräte
   userReadings Laufzeit { strftime('%H:%M:%S', gmtime(ReadingsNum($NAME, "BSH.Common.Option.RemainingProgramTime", 0))) }
   verbose    1
   webCmd     BSH.Common.Root.SelectedProgram:startProgram:stopProgram

Die Readings von "2024-02-17 10:34:04" sind nach dem Neustart.
Im Log ist das zu sehen:
2024.02.17 10:33:47 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/48_HomeConnect.pm line 555.
2024.02.17 10:33:47 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/48_HomeConnect.pm line 556.
2024.02.17 10:33:47 1: PERL WARNING: Use of uninitialized value $type in pattern match (m//) at ./FHEM/48_HomeConnect.pm line 582.
2024.02.17 10:33:47 1: PERL WARNING: Use of uninitialized value in pattern match (m//) at ./FHEM/48_HomeConnect.pm line 600.
2024.02.17 10:33:47 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.17 10:33:47 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.17 10:33:47 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.17 10:34:01 1: [HomeConnect_ResponseInit] SMV6ZCX16E: defined as HomeConnect Dishwasher Bosch SMV6ZCX16E
2024.02.17 10:34:04 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.17 10:34:04 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.17 10:34:04 1: [HomeConnect_ResponseGetSettings] SMV6ZCX16E: no settings found
2024.02.17 10:34:04 1: [HomeConnect_ResponseUpdateStatus] SMV6ZCX16E: updating reading DoorState to Closed
2024.02.17 10:34:04 1: [HomeConnect_ResponseUpdateStatus] SMV6ZCX16E: updating reading RemoteControlStartAllowed to 1
2024.02.17 10:34:04 1: [HomeConnect_ResponseUpdateStatus] SMV6ZCX16E: updating reading OperationState to Ready
2024.02.17 10:34:04 1: [HomeConnect_ResponseUpdateStatus] SMV6ZCX16E: updating reading RemoteControlActive to 1
2024.02.17 10:34:04 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.17 10:34:04 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.17 10:34:04 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.17 10:34:04 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.17 10:34:06 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.17 10:34:06 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.17 10:34:32 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.17 10:34:32 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.17 10:34:41 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.17 10:34:41 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.17 10:34:41 1: [HomeConnect_ResponseGetSettings] SMV6ZCX16E: no settings found
2024.02.17 10:34:57 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.17 10:34:57 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.17 10:35:01 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.17 10:35:16 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.17 10:35:16 1: [HomeConnect_ResponseGetSettings] SMV6ZCX16E: no settings found
2024.02.17 10:35:56 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.17 10:36:51 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.17 10:36:52 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.17 10:36:52 1: [HomeConnect_ResponseGetSettings] SMV6ZCX16E: no settings found

Er bekommt es also irgendwas nicht nicht hin.

Ich habe nun auch mal ein Update des fhem gemacht ;) (mal sehen wo ich noch nacharbeiten muss) Aber auch ohne Erfolg :(

Nach dem Löschen und und "ScanDevices" kommen auch die neuen Readings nicht wieder ...
Internals:
   CFGFN     
   DEF        hccon 013120542060006224
   FUUID      65d08485-f33f-5588-479d-f304d1e5211a5276
   NAME       SMV6ZCX16E
   NR         1007
   STATE      ???
   TYPE       HomeConnect
   events    
   haId       013120542060006224
   hcconn     hccon
   prefix    
   READINGS:
   data:
Attributes:
   DbLogExclude .*


Wenn ich noch irgendwas liefern oder testen kann ?

Gruß Ron

Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 17 Februar 2024, 11:44:21
Ich schreibe das ja nur sehr ungerne.

In der von 87insane verbreiteten Version wurden gegenüber meiner Arbeit lediglich Umlaute gegen "ae" etc. ausgetauscht - substanzielle Änderungen gibt es sonst nicht (lediglich eine unsinnige Verdopplung von Einträgen "ready/Ready" "finished/Finished" in der Übersetzungstabelle). Trotzdem steht nach wie vor mein Name oben drin - und nicht der Name desjenigen, der diesen Austausch vorgenommen hat. Das ist mit den Lizenzbedingungen nicht vereinbar und muss bitte umgehend abgestellt werden.

Denjenigen, die mit Umlauten Probleme haben, kann ich nur empfehlen, das Encoding auf ihren Kisten sauber einzustellen - denn ich behalte diese Umlaute drin.

pah
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 17 Februar 2024, 11:47:22
@sky64: Und warum nicht einfach mal ein "get ... settings" ausführen?

Es ist darüber hinaus die schlechteste aller Möglichkeiten, Devices einfach komplett zu löschen und öfter einen Neustart mit neuer Initialisierung der HomeConnect-Devices auszuführen. FHEM ist mit dieser Vorgehensweise eventuell in einem nicht definierten Zustand. Sieht man übrigens hier sehr gut: Im Device sind die Readings "type" und "prefix" mit den richtigen Werten besetzt - und werden trotzdem (das sind die Warnungsmeldungen in den Zeilen 555,556 und 582) als leer angemeckert.

Und natürlich muss man das manuell eingespielte Modul 48_HomeConnect.pm vor dem Überschreiben durch das offiziell verteilte Modul schützen (excludeFromUpdate).

LG

pah
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: sky64 am 17 Februar 2024, 13:46:38
Zitat von: Prof. Dr. Peter Henning am 17 Februar 2024, 11:47:22@sky64: Und warum nicht einfach mal ein "get ... settings" ausführen?
Tja das habe schon mehrfach versucht. Es passiert aber nichts.
Im Log erscheinen dann diese 3 Zeilen:
2024.02.17 13:37:24 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.17 13:37:24 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.17 13:37:24 1: [HomeConnect_ResponseGetSettings] SMV6ZCX16E: no settings found
Das sieht für mich so aus, dass dass HomeConnect-Modul nicht die richtigen Daten zurück bekommt um das "set" zu bauen.

Zitat von: Prof. Dr. Peter Henning am 17 Februar 2024, 11:47:22Es ist darüber hinaus die schlechteste aller Möglichkeiten, Devices einfach komplett zu löschen und öfter einen Neustart mit neuer Initialisierung der HomeConnect-Devices auszuführen. FHEM ist mit dieser Vorgehensweise eventuell in einem nicht definierten Zustand. Sieht man übrigens hier sehr gut: Im Device sind die Readings "type" und "prefix" mit den richtigen Werten besetzt - und werden trotzdem (das sind die Warnungsmeldungen in den Zeilen 555,556 und 582) als leer angemeckert.

Was wäre die richtige Vorgehensweise?

Gruß Ron

Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: 87insane am 17 Februar 2024, 13:51:04
@Prof. Dr. Peter Henning: Das Modul ging bei mir nicht. Die Verdopplung bzw. Anpassung war notwendig weil irgendwas fehlte.
Du bist einer derjenigen, die das hier wohl noch am meisten verstehen. Ich weiß, dass deine Zeit sicher knapp ist aber ggf. hast du ja mal Lust das Modul an sich etwas zu verschönern. Ich habe auch x Meldungen im LOG die nicht sein müssten, denke ich.

Beispiel:
2024.02.17 11:10:33 1: [HomeConnect_ReadEventChannel] S155EB800E: DoorState = Open
2024.02.17 11:10:33 1: [HomeConnect_Set] S155EB800E: no settings defined, should no longer occur !!
2024.02.17 11:10:38 1: [HomeConnect_ReadEventChannel] S155EB800E: DoorState = Closed
2024.02.17 11:10:38 1: [HomeConnect_Set] S155EB800E: no settings defined, should no longer occur !!
2024.02.17 11:42:24 1: [HomeConnect_ReadEventChannel] S155EB800E: DoorState = Open
2024.02.17 11:42:24 1: [HomeConnect_Set] S155EB800E: no settings defined, should no longer occur !!
2024.02.17 11:42:34 1: [HomeConnect_ReadEventChannel] S155EB800E: DoorState = Closed
2024.02.17 11:42:34 1: [HomeConnect_Set] S155EB800E: no settings defined, should no longer occur !!
2024.02.17 11:51:05 1: [HomeConnect_ReadEventChannel] S155EB800E: DoorState = Open
2024.02.17 11:51:05 1: [HomeConnect_Set] S155EB800E: no settings defined, should no longer occur !!
2024.02.17 11:51:25 1: [HomeConnect_ReadEventChannel] S155EB800E: DoorState = Closed
2024.02.17 11:51:25 1: [HomeConnect_Set] S155EB800E: no settings defined, should no longer occur !!

PS: Ich kann die Datei auch wieder rauß nehmen. Ich selber habe aber auch kein Problem mit den Umlauten. Man sollte es eben korrekt einstellen in seinem BS.
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: 87insane am 17 Februar 2024, 13:52:22
Zitat von: sky64 am 17 Februar 2024, 13:46:38
Zitat von: Prof. Dr. Peter Henning am 17 Februar 2024, 11:47:22@sky64: Und warum nicht einfach mal ein "get ... settings" ausführen?
Tja das habe schon mehrfach versucht. Es passiert aber nichts.
Im Log erscheinen dann diese 3 Zeilen:
2024.02.17 13:37:24 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.17 13:37:24 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, should no longer occur !!
2024.02.17 13:37:24 1: [HomeConnect_ResponseGetSettings] SMV6ZCX16E: no settings found
Das sieht für mich so aus, dass dass HomeConnect-Modul nicht die richtigen Daten zurück bekommt um das "set" zu bauen.

Zitat von: Prof. Dr. Peter Henning am 17 Februar 2024, 11:47:22Es ist darüber hinaus die schlechteste aller Möglichkeiten, Devices einfach komplett zu löschen und öfter einen Neustart mit neuer Initialisierung der HomeConnect-Devices auszuführen. FHEM ist mit dieser Vorgehensweise eventuell in einem nicht definierten Zustand. Sieht man übrigens hier sehr gut: Im Device sind die Readings "type" und "prefix" mit den richtigen Werten besetzt - und werden trotzdem (das sind die Warnungsmeldungen in den Zeilen 555,556 und 582) als leer angemeckert.

Was wäre die richtige Vorgehensweise?

Gruß Ron



Lass dein Gerät einfach mal komplett durch laufen. Bei z.B. meiner Waschmaschine musste ich es erst anlegen in FHEM und danach einmal komplett waschen und danach war auch alles vorhanden.
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 17 Februar 2024, 17:24:57
ZitatIch kann die Datei auch wieder rauß nehmen

Es ist mir vollkommen egal, was jemand postet - so lange nicht mein Name als letzter Bearbeiter darin steht.Darum geht es.

Das mit den fehlenden Settings kann ich nicht nachvollziehen, weil es bei mir nicht auftritt. Die Settings (also die programm-unabhängigen Einstellungen der Maschine) werden mit dem Unterprogramm HomeConnect_GetSettings geholt, und die Antwort mit HomeConnect_ResponseGetSettings ausgewertet. Wenn mit dem zurückgelieferten JSON etwas nicht stimmt, gibt es eine Fehlermeldung im Log. Wenn man verbose=5 setzt, wird die gesamte erhaltene Antwort im Log gezeigt. Welche Settings, Programs und ProgramOptions bekannt sind, kann man jederzeit mit dem Befehl set ... ZZZ_Dump abfragen.

Anbei meine aktuelle Version - und bitte nicht verändern, ohne dies im Kopf der Datei klar und mit dem eigenen Namen zu markieren

LG

pah
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: sky64 am 17 Februar 2024, 20:16:11
So, das Programm ist mal durchgelaufen.
Diverse Readading, auch wenn man lokal oder in der App Optionen auswählt werden erstellt und aktualisiert.
Eine set-Auswahl gibt es weiterhin nicht.
Muss man selbst etwas definieren?

Ich habe mal das "set SMV6ZCX16E ZZZ_Dump" aufgerufen:
Device SMV6ZCX16E of type Dishwasher has
settings: $VAR1 = undef;

options: $VAR1 = undef;

transtable: $VAR1 = {
          'Quick45' => 'Speed 45',
          'Intensiv70' => 'Intensiv 70',
          'Kurz60' => 'Speed 60',
          'Favorite.001' => 'Favorit',
          'Auto2' => 'Auto 45-65',
          'MachineCare' => 'Maschinenpflege',
          'Eco50' => 'Eco 50',
          'GlassShine' => 'Brilliant Shine',
          'PreRinse' => 'Vorspuelen',
          'NightWash' => 'Leise'
        };

poweroff: $VAR1 = 'PowerOff';


Was sagt das aus?

Das war bevor ist das Modul noch mal gegen das letze hier getauscht habe.
Das vorgehen (ich weiß nicht wie es richtig/besser gemacht wird)
- Device gelöscht
- save config (damit gibt es auch keinen Verweise in der fhem.save mehr, richtig?)
- shutdown restart
Damit sollte fhem in einem Zustand sein, wo das Device usw. unbekannt ist.
Dann im hcconn ein scanDevices ausgelöst.
Es wird das Device neu angelegt.
Im Device ein get ... Settings hat keinen Effekt.
Verbose auf 5 gesetzt.
Ein set ... ZZZ_Dump liefert jetzt das  :(
Device SMV6ZCX16E of type  has
settings: $VAR1 = undef;

options: $VAR1 = undef;

transtable: $VAR1 = undef;

poweroff: $VAR1 = undef;

Meine Version von HomeConnectConnector ist V1.1.

Die Log-Ausgabe kommt gleich im Edit, da ich das auf dem Tablet nicht sauber kopieren kann.

So hier das Log mit Verbose 5.
--
2024.02.17 19:54:33 4: hccon: response {
  "data": {
    "homeappliances": [{
      "brand": "Bosch",
      "connected": true,
      "enumber": "SMV6ZCX16E/39",
      "haId": "013120542060006224",
      "name": "Geschirrspüler",
      "type": "Dishwasher",
      "vib": "SMV6ZCX16E"
    }]
  }
}
2024.02.17 19:54:33 1: PERL WARNING: "my" variable $HC_tt masks earlier declaration in same scope at ./FHEM/48_HomeConnect.pm line 297.
2024.02.17 19:54:33 1: PERL WARNING: "my" variable $HC_delayed_PS masks earlier declaration in same scope at ./FHEM/48_HomeConnect.pm line 298.
2024.02.17 19:54:33 1: PERL WARNING: "my" variable $pct masks earlier declaration in same scope at ./FHEM/48_HomeConnect.pm line 1715.
2024.02.17 19:54:33 1: PERL WARNING: "my" variable $tim masks earlier declaration in same scope at ./FHEM/48_HomeConnect.pm line 1721.
2024.02.17 19:55:00 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/48_HomeConnect.pm line 557.
2024.02.17 19:55:00 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/48_HomeConnect.pm line 558.
2024.02.17 19:55:00 1: PERL WARNING: Use of uninitialized value $type in pattern match (m//) at ./FHEM/48_HomeConnect.pm line 584.
2024.02.17 19:55:00 1: PERL WARNING: Use of uninitialized value in pattern match (m//) at ./FHEM/48_HomeConnect.pm line 602.
2024.02.17 19:55:00 1: PERL WARNING: Use of uninitialized value $type in concatenation (.) or string at ./FHEM/48_HomeConnect.pm line 614.
2024.02.17 19:55:00 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, replacing by default settings for type
2024.02.17 19:55:00 1: PERL WARNING: Use of uninitialized value $type in hash element at ./FHEM/48_HomeConnect.pm line 615.
2024.02.17 19:55:00 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, replacing by default settings for type
2024.02.17 19:55:11 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, replacing by default settings for type
2024.02.17 19:55:11 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, replacing by default settings for type
2024.02.17 19:55:11 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, replacing by default settings for type
2024.02.17 19:55:11 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, replacing by default settings for type
2024.02.17 19:55:20 4: SMV6ZCX16E: request /api/homeappliances/013120542060006224/settings
2024.02.17 19:55:20 4: SMV6ZCX16E: no token refresh needed
2024.02.17 19:55:20 4: SMV6ZCX16E: requestAfterToken https://api.home-connect.com/api/homeappliances/013120542060006224/settings
2024.02.17 19:55:22 4: SMV6ZCX16E: response {
--
      "key": "BSH.Common.Setting.PowerState",
      "value": "BSH.Common.EnumType.PowerState.Off"
    }]
  }
}
2024.02.17 19:55:22 5: [HomeConnect_ResponseGetSettings] SMV6ZCX16E: get settings response {
--
      "key": "BSH.Common.Setting.PowerState",
      "value": "BSH.Common.EnumType.PowerState.Off"
    }]
  }
}
2024.02.17 19:55:22 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/48_HomeConnect.pm line 1503.
2024.02.17 19:55:22 1: [HomeConnect_ResponseGetSettings] SMV6ZCX16E: no settings found
2024.02.17 19:55:41 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, replacing by default settings for type
2024.02.17 19:55:41 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, replacing by default settings for type
2024.02.17 19:56:43 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, replacing by default settings for type
2024.02.17 19:56:43 1: PERL WARNING: Use of uninitialized value $availableSets in string ne at ./FHEM/48_HomeConnect.pm line 674.
2024.02.17 19:56:43 3: [HomeConnect] SMV6ZCX16E: set command: ZZZ_Dump
2024.02.17 19:56:43 1: PERL WARNING: Use of uninitialized value $type in concatenation (.) or string at ./FHEM/48_HomeConnect.pm line 687.
2024.02.17 19:57:16 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, replacing by default settings for type
--
2024.02.17 19:57:17 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, replacing by default settings for type
2024.02.17 19:57:56 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, replacing by default settings for type
2024.02.17 19:57:56 3: [HomeConnect] SMV6ZCX16E: set command: ZZZ_Dump
--
2024.02.17 20:04:11 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, replacing by default settings for type
2024.02.17 20:04:11 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, replacing by default settings for type
--
2024.02.17 20:06:37 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, replacing by default settings for type
2024.02.17 20:06:37 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, replacing by default settings for type
2024.02.17 20:07:04 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, replacing by default settings for type
2024.02.17 20:07:04 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, replacing by default settings for type
2024.02.17 20:07:22 4: SMV6ZCX16E: request /api/homeappliances/013120542060006224/settings
2024.02.17 20:07:22 4: SMV6ZCX16E: no token refresh needed
2024.02.17 20:07:22 4: SMV6ZCX16E: requestAfterToken https://api.home-connect.com/api/homeappliances/013120542060006224/settings
2024.02.17 20:07:24 4: SMV6ZCX16E: response {
--
      "key": "BSH.Common.Setting.PowerState",
      "value": "BSH.Common.EnumType.PowerState.On"
    }]
  }
}
2024.02.17 20:07:24 5: [HomeConnect_ResponseGetSettings] SMV6ZCX16E: get settings response {
--
      "key": "BSH.Common.Setting.PowerState",
      "value": "BSH.Common.EnumType.PowerState.On"
    }]
  }
}
2024.02.17 20:07:24 1: [HomeConnect_ResponseGetSettings] SMV6ZCX16E: no settings found
2024.02.17 20:07:43 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, replacing by default settings for type
2024.02.17 20:07:43 3: [HomeConnect] SMV6ZCX16E: set command: ZZZ_Dump
2024.02.17 20:08:36 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, replacing by default settings for type
2024.02.17 20:08:36 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, replacing by default settings for type
2024.02.17 20:08:38 4: SMV6ZCX16E: request /api/homeappliances/013120542060006224/settings
2024.02.17 20:08:38 4: SMV6ZCX16E: no token refresh needed
2024.02.17 20:08:38 4: SMV6ZCX16E: requestAfterToken https://api.home-connect.com/api/homeappliances/013120542060006224/settings
2024.02.17 20:08:39 4: SMV6ZCX16E: response {
--
      "key": "BSH.Common.Setting.PowerState",
      "value": "BSH.Common.EnumType.PowerState.Off"
    }]
  }
}
2024.02.17 20:08:39 5: [HomeConnect_ResponseGetSettings] SMV6ZCX16E: get settings response {
--
      "key": "BSH.Common.Setting.PowerState",
      "value": "BSH.Common.EnumType.PowerState.Off"
    }]
  }
}
2024.02.17 20:08:39 1: [HomeConnect_ResponseGetSettings] SMV6ZCX16E: no settings found

Die PowerState.On / Off-Meldungen kommen wenn ich get ... Settings ausführe.
Ich hatte die Maschine  mal ein geschaltet um zu sehen ob wie vorher die Readings wieder kommen, tun sie nicht  :(
Ohne das ich das Device mit dem originalen HomeConnect-Modul anlege und dann das File austausche kommen keine Readings...

Es ist bestimmt nur eine Kleinigkeit die bei mir nicht stimmt, aber wenn man es woanders nicht reproduzieren kann ist die Fehlersuche schwer.

 
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 18 Februar 2024, 04:16:20
ZitatDas vorgehen (ich weiß nicht wie es richtig/besser gemacht wird)

Nein, bitte nicht so ! Einfach nur - nach dem Neueinspielen - reload 48_HomeConnect.pm ausführen.

An dieser Installation ist irgendetwas oberfaul, weil die richtigen Antworten vom BSH-Server kommen (das Ergebnis von get settings). Aber dann nicht im Device-Hash landen.

Ich vermute, dass bei der automatischen Erzeugung der Devices irgendetwas schief geht. Also bitte MANUELL ausführen (und zwar ohne irgendeinen Neustart

defmod SMV6ZCX16E HomeConnect <hier der Name des HomeConnectBridge-Devices> 013120542060006224

oder, falls das kein Ergebnis liefert: Device löschen, und dann manuell das oben genannte Kommando ausführen.

LG

pah
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: sky64 am 18 Februar 2024, 13:59:54
Vielen Dank für die Hilfe.

Ich war eigentlich schon dabei das ganze aufzugeben.
Weder ein Austausch des Files mit reload noch eine manuelle Defnition mit defmod brachten eine Änderung am Verhalten.

Ich habe dann einfach mal blind ein "set SMV6ZCX16E SelectedProgram Eco50" abgsetzt und endlich mal eine Reaktion gesehen.
Es wurden das Program gesetzt und außerdem die Programmoptionen abgerufen!

Ich kann auch ein "get SMV6ZCX16E programs" absetzten.
Das sieht im Log dann so aus:
2024.02.18 13:52:27 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel searching for data, fileno:"169", nfound:"1", loopCounter:"1"
2024.02.18 13:52:27 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel len:"52", received:"2e
event:KEEP-ALIVE
data:
id:013120542060006224


"
2024.02.18 13:52:27 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel unknown: 2e

2024.02.18 13:52:27 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel unknown: event:KEEP-ALIVE

2024.02.18 13:52:27 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel unknown: id:013120542060006224

2024.02.18 13:52:27 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel unknown:

2024.02.18 13:52:27 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel unknown:

2024.02.18 13:52:27 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel searching for data, fileno:"169", nfound:"0", loopCounter:"2"
2024.02.18 13:52:27 5: [HomeConnect_ReadEventChannel] SMV6ZCX16E: event channel received no more data
2024.02.18 13:52:31 4: SMV6ZCX16E: request /api/homeappliances/013120542060006224/programs/available
2024.02.18 13:52:31 4: SMV6ZCX16E: no token refresh needed
2024.02.18 13:52:31 4: SMV6ZCX16E: requestAfterToken https://api.home-connect.com/api/homeappliances/013120542060006224/programs/available
2024.02.18 13:52:31 4: SMV6ZCX16E: response {
  "data": {
    "active": {
      "constraints": {
        "access": "readWrite"
      }
    },
    "programs": [{
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "Dishcare.Dishwasher.Program.Intensiv70"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "Dishcare.Dishwasher.Program.Auto2"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "Dishcare.Dishwasher.Program.Eco50"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "Dishcare.Dishwasher.Program.Glas40"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "Dishcare.Dishwasher.Program.PreRinse"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "Dishcare.Dishwasher.Program.NightWash"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "Dishcare.Dishwasher.Program.Kurz60"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "Dishcare.Dishwasher.Program.MachineCare"
    }],
    "selected": {
      "constraints": {
        "access": "readWrite"
      },
      "key": "Dishcare.Dishwasher.Program.Auto2",
      "options": [{
        "key": "BSH.Common.Option.StartInRelative",
        "value": 0,
        "unit": "seconds"
      }, {
        "key": "Dishcare.Dishwasher.Option.ExtraDry",
        "value": false
      }, {
        "key": "Dishcare.Dishwasher.Option.HygienePlus",
        "value": false
      }, {
        "key": "Dishcare.Dishwasher.Option.IntensivZone",
        "value": false
      }, {
        "key": "Dishcare.Dishwasher.Option.VarioSpeedPlus",
        "value": false
      }, {
        "key": "Dishcare.Dishwasher.Option.SilenceOnDemand",
        "value": false
      }, {
        "key": "BSH.Common.Option.RemainingProgramTime",
        "value": 8100,
        "unit": "seconds"
      }, {
        "key": "BSH.Common.Option.RemainingProgramTimeIsEstimated",
        "value": true
      }, {
        "key": "BSH.Common.Option.EnergyForecast",
        "value": 37,
        "unit": "%"
      }, {
        "key": "BSH.Common.Option.WaterForecast",
        "value": 49,
        "unit": "%"
      }]
    }
  }
}
2024.02.18 13:52:31 5: [HomeConnect_ResponseGetPrograms] SMV6ZCX16E: get programs response {
  "data": {
    "active": {
      "constraints": {
        "access": "readWrite"
      }
    },
    "programs": [{
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "Dishcare.Dishwasher.Program.Intensiv70"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "Dishcare.Dishwasher.Program.Auto2"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "Dishcare.Dishwasher.Program.Eco50"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "Dishcare.Dishwasher.Program.Glas40"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "Dishcare.Dishwasher.Program.PreRinse"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "Dishcare.Dishwasher.Program.NightWash"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "Dishcare.Dishwasher.Program.Kurz60"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "Dishcare.Dishwasher.Program.MachineCare"
    }],
    "selected": {
      "constraints": {
        "access": "readWrite"
      },
      "key": "Dishcare.Dishwasher.Program.Auto2",
      "options": [{
        "key": "BSH.Common.Option.StartInRelative",
        "value": 0,
        "unit": "seconds"
      }, {
        "key": "Dishcare.Dishwasher.Option.ExtraDry",
        "value": false
      }, {
        "key": "Dishcare.Dishwasher.Option.HygienePlus",
        "value": false
      }, {
        "key": "Dishcare.Dishwasher.Option.IntensivZone",
        "value": false
      }, {
        "key": "Dishcare.Dishwasher.Option.VarioSpeedPlus",
        "value": false
      }, {
        "key": "Dishcare.Dishwasher.Option.SilenceOnDemand",
        "value": false
      }, {
        "key": "BSH.Common.Option.RemainingProgramTime",
        "value": 8100,
        "unit": "seconds"
      }, {
        "key": "BSH.Common.Option.RemainingProgramTimeIsEstimated",
        "value": true
      }, {
        "key": "BSH.Common.Option.EnergyForecast",
        "value": 37,
        "unit": "%"
      }, {
        "key": "BSH.Common.Option.WaterForecast",
        "value": 49,
        "unit": "%"
      }]
    }
  }
}
2024.02.18 13:52:32 1: [HomeConnect_Set] SMV6ZCX16E: no settings defined, replacing by default settings for type Dishwasher

Auffällig finde ich die "event channel unknown".

Im ZZZ_Dump sieht das nun so aus:
Device SMV6ZCX16E of type Dishwasher has
settings: $VAR1 = undef;

options: $VAR1 = {
          'ExtraDry' => [
                          'Dishcare.Dishwasher.Option',
                          'Boolean',
                          bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),
                          '',
                          bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ),
                          undef
                        ],
          'HygienePlus' => [
                             'Dishcare.Dishwasher.Option',
                             'Boolean',
                             $VAR1->{'ExtraDry'}[2],
                             '',
                             $VAR1->{'ExtraDry'}[4],
                             undef
                           ],
          'IntensivZone' => [
                              'Dishcare.Dishwasher.Option',
                              'Boolean',
                              $VAR1->{'ExtraDry'}[2],
                              '',
                              $VAR1->{'ExtraDry'}[4],
                              undef
                            ],
          'StartInRelative' => [
                                 'BSH.Common.Option',
                                 'Int',
                                 undef,
                                 '(0,86400)',
                                 undef,
                                 undef
                               ],
          'VarioSpeedPlus' => [
                                'Dishcare.Dishwasher.Option',
                                'Boolean',
                                $VAR1->{'ExtraDry'}[2],
                                '',
                                $VAR1->{'ExtraDry'}[4],
                                undef
                              ]
        };

transtable: $VAR1 = {
          'Favorite.001' => 'Favorit',
          'Kurz60' => 'Speed 60',
          'PreRinse' => 'Vorspülen',
          'MachineCare' => 'Maschinenpflege',
          'Intensiv70' => 'Intensiv 70',
          'Quick45' => 'Speed 45',
          'Auto2' => 'Auto 45-65',
          'Eco50' => 'Eco 50',
          'NightWash' => 'Leise',
          'GlassShine' => 'Brilliant Shine'
        };

poweroff: $VAR1 = 'PowerOff';

Ich kann die Programme und Optionen alle setzten wenn ich das in die CLI-Zeile eingeben.

Aber eine komfortable Dropdown-Bedienung (wie in im Beitrag #23) ist nicht vorhanden. Muss man die sich selbst bauen, wie?
Vermutlich müsste das settings-Array gefüllt sein. Gibt es noch einen Trick?
Eigentlich schreibt er ja "no settings defined, replacing by default settings for type Dishwasher"

Das list sieht nun so aus:
Internals:
   CFGFN     
   DEF        hccon 013120542060006224
   FUUID      65d100e9-f33f-5588-a1a2-6bd1d78622ae5034
   NAME       SMV6ZCX16E
   NR         670
   STATE      <p align="left">
Ready
<br/>Bereit
</p>
   TYPE       HomeConnect
   aliasname  Geschirrspüler
   brand      Bosch
   commandPrefix Dishcare.Dishwasher.Program.
   eventChannelTimeout 1708260467.07585
   eventCount 140
   events     SaltNearlyEmpty,RinseAidNearlyEmpty
   haId       013120542060006224
   hcconn     hccon
   options    StartInRelative,ExtraDry,HygienePlus,IntensivZone,VarioSpeedPlus
   optlist    <br/><div id="optionlist"><table>
<tr><td>StartInRelative</td><td><input type="text" id="opt0" size="4" maxlength="120" value="Int (0,86400)"/></td></tr>
<tr><td>ExtraDry</td><td><input type="checkbox" id="opt1" size="4" value="unchecked"/></td></tr>
<tr><td>HygienePlus</td><td><input type="checkbox" id="opt2" size="4" value="unchecked"/></td></tr>
<tr><td>IntensivZone</td><td><input type="checkbox" id="opt3" size="4" value="unchecked"/></td></tr>
<tr><td>VarioSpeedPlus</td><td><input type="checkbox" id="opt4" size="4" value="unchecked"/></td></tr></table></div>
   prefix     Dishcare.Dishwasher
   programs   Intensiv70,Auto2,Eco50,Glas40,PreRinse,NightWash,Kurz60,MachineCare
   retrycounter 0
   type       Dishwasher
   vib        SMV6ZCX16E
   OLDREADINGS:
   READINGS:
     2024-02-18 12:49:52   Dishcare.Dishwasher.Option.HygienePlus true
     2024-02-18 12:49:12   Dishcare.Dishwasher.Option.VarioSpeedPlus true
     2024-02-18 13:35:26   DoorState       Closed
     2024-02-18 11:35:19   ExtraDry        0
     2024-02-18 12:50:44   HygienePlus     0
     2024-02-18 11:35:29   IntensivZone    0
     2024-02-18 11:36:49   Laufzeit        02:15:00
     2024-02-18 11:25:42   OperationState  Ready
     2024-02-18 12:57:44   PowerState      Off
     2024-02-18 12:50:44   RemainingProgramTime 8100 seconds
     2024-02-18 12:50:44   RemainingProgramTimeHHMM 02:15
     2024-02-18 11:25:42   RemoteControlActive 1
     2024-02-18 11:25:42   RemoteControlStartAllowed 1
     2024-02-18 12:22:53   SelectedProgram Auto2
     2024-02-18 12:50:34   VarioSpeedPlus  0
     2024-02-18 13:35:26   state           Ready
     2024-02-18 13:35:26   tr_DoorState    Tür geschlossen
     2024-02-18 13:35:26   tr_State1       Bereit
     2024-02-18 13:35:26   tr_State2       Bereit
     2024-02-18 13:35:26   tr_State3       Bereit
   data:
     poweroff   PowerOff
     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
   hmccu:
Attributes:
   DbLogExclude .*
   alias      Geschirrspüler
   devStateIcon Offline:scene_dishwasher@red Aborting:scene_dishwasher@yellow Inactive:scene_dishwasher@black Ready:scene_dishwasher@blue Delayed.*:scene_dishwasher_delay@green Run.*:scene_dishwasher@green
   icon       scene_dishwasher
   room       Geräte,Verbrauch
   stateFormat {my $open=ReadingsVal("$name","tr_DoorState","");
sprintf("<p align=\"left\">\n%s\n<br/>%s\n%s</p>",
ReadingsVal("$name","state",""),ReadingsVal("$name","tr_State1",""),
(($open=~/offen/)?"<br/>".$open:""))}
   updateTimer 10
   verbose    5


Für die Zeitverzögerungen: wird das in den Readings irgendwo angezeigt? Ich sehe da aktuell keine Reaktion.
Auch wenn ich eine Verzögerung an der Maschine einstelle gibt es keine Reading wo das drin steht.

Wird die Maschine automatisch eingeschaltet wenn man ein Program startet oder muss man erst ein "set ... PowerOn" absetzten?
Ich habe es noch nicht getestet.

Gruß Ron
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 18 Februar 2024, 15:44:45
Zitatmanuelle Defnition mit defmod brachten eine Änderung am Verhalten.

Ich habe auch nichts von "Verhaltensänderung" geschrieben. Sondern nur nach einer Möglichkeit gesucht, die offenbar beim autocreate der Devices auftretenden Fehler zu umgehen.

Betreffend die Meldungen im EventChannel: Ignorieren bitte, und verbose wieder zurücksetzen...

Betreffend die Startroutinen: Nein, noch viel kryptischer.
- Wenn die Kiste nicht "Ready" ist, muss sie mit PowerOn angeschaltet werden
- Erst wenn die Kiste "Ready" ist, kann man mit SelectedProgram ein Programm wählen
- Danach erst kann - wenn man das will - eine Verzögerung eingebaut werden. Dafür gibt es im Modul drei Möglichkeiten
-- DelayRelative - Starte in einer bestimmten Zeitspanne von jetzt an
-- DelayStartTime - Starte zu einem bestimmten Zeitpunkt ab jetzt
-- DelayEndTime - Starte so, dass die Maschine zu einem bestimmten Zeitpunkt fertig ist. Das Modul berechnet dann an Hand der bekannten Programmdauer den nötig Startzeitpunkt.
- Der Programmstart erfolgt erst mit dem Befehl StartProgram.

Um diese komplexe Sequenz, bei der man immer auch noch warten muss, bis der doofe BSH-Server das an die Maschine gemeldet hat, zu automatisieren, habe ich ein DOIF und ein dummy.

defmod Geschirrspuelen.N DOIF ## 1. Setze Phase \
([SN55ZS49CE:".*tr_State11111.*"])\
({fhem("setreading Geschirrspuelen phase ".ReadingsVal("SN55ZS49CE","tr_State1",""))},\
 {fhem90Cmd("setreading Geschirrspuelen phase ".ReadingsVal("SN55ZS49CE","tr_State1",""))})\
## 2. Finished\
DOELSEIF\
([SN55ZS49CE:".*Finished.*"] and [07:00-22:30])\
({speak("TText 238386743",":130:")},\
 {speak("Tab1.EG",":130:")},\
 setreading Geschirrspuelen event Finished,\
 {fhem90Cmd("setreading Geschirrspuelen event Finished")})\
## 3. und 4. Klarspüler\
DOELSEIF\
([SN55ZS49CE:".*RinseAidNearlyEmpty.*Present.*"])\
(set Geschirrspuelen event RinseAidNearlyEmpty,\
 {fhem90Cmd("set Geschirrspuelen event RinseAidNearlyEmpty")},\
 {fhem90Cmd("setreading Device.warn Appliance.nok Spülmaschine benötigt Klarspüler")})\
DOELSEIF\
([SN55ZS49CE:".*RinseAidNearlyEmpty.*Off.*"])\
({fhem90Cmd("setreading Device.warn Appliance.nok none")})\
## 5. und 6. Spülmaschinensalz\
DOELSEIF\
([SN55ZS49CE:".*SaltNearlyEmpty.*Present.*"])\
(set Geschirrspuelen event SaltNearlyEmpty,\
 {fhem90Cmd("set Geschirrspuelen event SaltNearlyEmpty")},\
 {fhem90Cmd("setreading Device.warn Appliance.nok Spülmaschine benötigt Salz")})\
DOELSEIF\
([SN55ZS49CE:".*SaltNearlyEmpty.*Off.*"])\
({fhem90Cmd("setreading Device.warn Appliance.nok none")})\
## 7. Anschalten\
DOELSEIF\
([Geschirrspuelen:".*Time.*"] and [SN55ZS49CE:state] ne "Ready")\
 (set SN55ZS49CE PowerOn,\
  {Log 1,"=======> Powering on SN55ZS49CE"},\
  setreading Geschirrspuelen event $EVENT,\
  setreading Geschirrspuelen active wait)\
DOELSEIF\
( ([Geschirrspuelen:event] =~ /RelativeTime.*/ and [Geschirrspuelen:active] ne "start" and [SN55ZS49CE:".*Ready.*"]) or ([Geschirrspuelen:".*RelativeTime.*"] and [Geschirrspuelen:active] ne "start" and [SN55ZS49CE] eq "Ready") )\
 (set SN55ZS49CE SelectedProgram Eco50,\
  {Log 1,"=======> Selecting Eco50 on SN55ZS49CE"})\
 (set SN55ZS49CE DelayRelative {(my @evt = split(/ /,ReadingsVal("Geschirrspuelen","event",""));;;;Log 1,"=======> Setting SN55ZS49CE to relative delay $evt[1]";;;;return $evt[1])} )\
 (setreading Geschirrspuelen active start)\
DOELSEIF\
(([Geschirrspuelen:event] =~ /EndTime.*/ and [Geschirrspuelen:active] ne "start" and [SN55ZS49CE:".*Ready.*"]) or ([Geschirrspuelen:".*EndTime.*"] and [Geschirrspuelen:active] ne "start" and [SN55ZS49CE] eq "Ready"))\
 (set SN55ZS49CE SelectedProgram Eco50,\
  {Log 1,"=======> Selecting Eco50 on SN55ZS49CE"})\
 (set SN55ZS49CE DelayEndTime {(my @evt = split(/ /,ReadingsVal("Geschirrspuelen","event",""));;;;Log 1,"=======> Setting SN55ZS49CE to endtime delay $evt[1]";;;;return $evt[1])} )\
 (setreading Geschirrspuelen active start)\
DOELSEIF\
(([Geschirrspuelen:event] =~ /StartTime.*/ and [Geschirrspuelen:active] ne "start" and [SN55ZS49CE:".*Ready.*"]) or ([Geschirrspuelen:".*StartTime.*"] and [Geschirrspuelen:active] ne "start" and [SN55ZS49CE] eq "Ready"))\
 (set SN55ZS49CE SelectedProgram Eco50,\
  {Log 1,"=======> Selecting Eco50 on SN55ZS49CE"})\
 (set SN55ZS49CE DelayStartTime {(my @evt = split(/ /,ReadingsVal("Geschirrspuelen","event",""));;;;Log 1,"=======> Setting SN55ZS49CE to starttime delay $evt[1]";;;;return $evt[1])} )\
 (setreading Geschirrspuelen active start)\
DOELSEIF\
([Geschirrspuelen:active] eq "start" and [SN55ZS49CE:".*StartInRelative.*"] )\
 (set SN55ZS49CE StartProgram,\
 {Log 1,"=======> Delayed start SN55ZS49CE"})\
 (setreading Geschirrspuelen event WaitForStart,\
  setreading Geschirrspuelen active no)\

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

sowie

defmod Geschirrspuelen dummy
attr Geschirrspuelen group Waschen
attr Geschirrspuelen readingList active event phase
attr Geschirrspuelen room Kontrollraum
attr Geschirrspuelen setList EndTime:time StartTime:time RelativeTime:time

Ich muss also nur noch den Befehl absetzen
Zitatset Geschirrspuelen EndTime 06:00
und die Spülmaschine wird so eingeschaltet, dass sie um 6:00 morgens fertig ist.

Übrigens kann man den komplexen mehrzeiligen Zustand der Spülmaschine mit den entsprechenden Attributen auch sehr schöne anzeigen lassen. Bei mir sieht das so aus:
defmod SN55ZS49CE HomeConnect HomeConnectBridge xxxxxxxxxxxxxxxxxxxxxx
attr SN55ZS49CE alias Spülmaschine
attr SN55ZS49CE babbleName Spülmaschine
attr SN55ZS49CE debug 1
attr SN55ZS49CE devStateIcon Offline:scene_dishwasher@red Aborting:scene_dishwasher@yellow Inactive:scene_dishwasher@black Ready:scene_dishwasher@blue Delayed.*:scene_dishwasher_delay@green Run.*:scene_dishwasher@green
attr SN55ZS49CE group Waschen
attr SN55ZS49CE room Kontrollraum :-*
attr SN55ZS49CE stateFormat {my $open=ReadingsVal("SN55ZS49CE","tr_DoorState","");; \
sprintf("<p align=\"left\">\n%s\n<br/>%s\n%s</p>",\
ReadingsVal("SN55ZS49CE","state",""),ReadingsVal("SN55ZS49CE","tr_State1",""),\
(($open=~/offen/)?"<br/>".$open:""))}
attr SN55ZS49CE updateTimer 15

Das Attribut babbleName bezieht sich auf meine Sprach-KI mit dem Babble-Modul und einem RiveScript-ChatBot. Meine Frau tippt also auf einen Button und sagt: "Lass die Spülmaschine über Nacht laufen". Die Antwort ist "OK, ich lasse die Spülmaschine laufen bis um 6 Uhr", und natürlich erfolgt das dann auch. Oder "Lass die Spülmaschine jetzt laufen". Oder weitere Varianten.

LG

pah

Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 18 Februar 2024, 15:58:08
Ups. Katastrophe: Ich bekomme vom BSH-Server neuerdings eine Fehlermeldung
Zitat2024.02.18 15:49:44 1: [HomeConnect_HandleError] SN55ZS49CE: Error "Option BSH.Common.Option.StartInRelative is not selectable"

Ich habe das jetzt im Modul geändert, die Startverzögerung wird nicht unmittelbar, sondern direkt beim Startbefehl übermittelt.

Tut wieder.


LG

pah
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: sky64 am 22 Februar 2024, 23:07:44
Vielen Dank für die Korrektur und für das DoIf.

Hier habe ich aber noch ein paar Fragen.
Das ist der Inhalt von "fhem90Cmd"?

Das "Device.warn" ist vermutlich eine Device für Mitteilungen?
Eine Auswahl des Waschprogramms gibt es nicht.
(Das DoIf nimmt immer Eco50, aber das kann man ja ändern und das aktuelle Programm auslesen bzw. das set weglassen.)

Wie könnte man das Waschprogramm und die Optionen auswählbar machen?
Würde ja im eigentlichen Geschirrspüler-Device reichen.

Alternativ im Dummy, sinnvollerweise müsste man die internen Variablen "options" und "programms" auslesen können.
Da weiß ich aber nicht wie das geht.
Auch wofür man das optlist mit seiner HTML-Formatierung gebrauchen kann.

Gruß Ron
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 23 Februar 2024, 05:23:17
ZitatDas ist der Inhalt von "fhem90Cmd"?
Ich habe mehrere FHEM-Server, die über FHEM2FHEM miteinander gekoppelt sind. An dem xx.xx.xx.90 hängt die Low-Level-Hardware, also z.B. HomeMatic, Zigbee etc., die FHEM-Schleife muss also möglicht schnell und ohne Verzögerungen abgearbeitet werden. Dieser Befehl führt einfach ein FHEM-Kommando auf dem anderen Server aus - in diesem Fall setzt er eine Warnungsmeldung.
ZitatDas "Device.warn" ist vermutlich eine Device für Mitteilungen?
Ja, in etwa. Siehe oben.
ZitatEine Auswahl des Waschprogramms gibt es nicht.

Das liegt daran, dass wir hauptsächlich dieses Programm nutzen. Und bei einem Sprachbefehl will meine Frau nicht erst mit der KI diskutieren, welches Programm gestartet werden soll.
ZitatWie könnte man das Waschprogramm und die Optionen auswählbar machen?
Würde ja im eigentlichen Geschirrspüler-Device reichen.
Das geht doch mit set SelectedProgram xxx, danach erst kann man die Options setzen (z.B. set BrillianceDry 1). Diese Reihenfolge ist leider von BSH so vorgesehen... ::)

ZitatAlternativ im Dummy, sinnvollerweise müsste man die internen Variablen "options" und "programms" auslesen können.
{InternalVal('SN55ZS49CE','programs','')}

ZitatAuch wofür man das optlist mit seiner HTML-Formatierung gebrauchen kann.
Noch gar nicht. Das ist experimentell, weil ich die Bedienung so machen möchte, dass man dies einfach per Checkbox in der Weboberfläche machen kann. Dafür braucht es eine ganze Menge JavaScript in einer Datei homeconnect.js. Bei mir läuft das schon...

LG

pah
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Kuehnhackel am 04 März 2024, 08:40:34
Zitat von: sky64 am 22 Februar 2024, 23:07:44Vielen Dank für die Korrektur und für das DoIf.

Hier habe ich aber noch ein paar Fragen.
Das ist der Inhalt von "fhem90Cmd"?

Das "Device.warn" ist vermutlich eine Device für Mitteilungen?
Eine Auswahl des Waschprogramms gibt es nicht.
(Das DoIf nimmt immer Eco50, aber das kann man ja ändern und das aktuelle Programm auslesen bzw. das set weglassen.)

Wie könnte man das Waschprogramm und die Optionen auswählbar machen?
Würde ja im eigentlichen Geschirrspüler-Device reichen.

Alternativ im Dummy, sinnvollerweise müsste man die internen Variablen "options" und "programms" auslesen können.
Da weiß ich aber nicht wie das geht.
Auch wofür man das optlist mit seiner HTML-Formatierung gebrauchen kann.

Gruß Ron

In der HomeConnectApp, kannst du dein Startprogramm wählen. Ich denke deswegen starte das DoIf immer mit diesem Programm, wenn nichts anderes angegeben wurde/ausgewählt wurde.
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 05 März 2024, 17:36:28
OK, neue Version mit ein paar Fixes. Langsam wirds.

LG

pah
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Kuehnhackel am 06 März 2024, 10:47:09
Zitat von: Prof. Dr. Peter Henning am 05 März 2024, 17:36:28OK, neue Version mit ein paar Fixes. Langsam wirds.

LG

pah
Hi PAH,

die heutige Version, funktioniert bei mir nicht.

Bei der Kaffeemaschine gibt es ein zwar ein "get", aber es kommt dann kein "set", wie bei der "deiner alten" Version

Bei der Spülmaschine gibt es "get und set", aber keine Reaktion bei "set Spülmaschine on"

Habe die vorherige Version eingespielt und nun ist alles wieder erreich- und steuerbar.

LG Ralf
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 06 März 2024, 11:05:30
Uff, das verblüfft mich etwas. OK, muss ich mal versuchen zu verstehen, denn ich habe nur etwas an einer kryptischen Präfix-Setzung geändert.

FHEM mal neu gestartet?

LG

pah

Edit: Bei mir funktioniert alles wie gewünscht: Kochfeld, Spülmaschine, Backofen, Waschmaschine.
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Kuehnhackel am 06 März 2024, 11:06:31
Zitat von: Prof. Dr. Peter Henning am 06 März 2024, 11:05:30Uff, das verblüfft mich etwas. OK, muss ich mal versuchen zu verstehen, den ich habe nur etwas an einer kryptischen Präfix-Setzung geändert.

FHEM mal neu gestartet?

LG

pah

Ja, klar  8)
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 06 März 2024, 11:19:51
Also, "set Spülmaschine on" gibt es sowieso nicht (sollte es auch nicht). Zunächst muss mit "set Spülmaschine PowerOn" das Ding angeschaltet werden. Dann ein Programm gewählt, und dann mit "set Spülmaschine StartProgram" dieses gestartet werden. Das ist der von BSH vorgegebene Ablauf. Denn vor dem "StartProgram" können auch noch eine Verzögerungszeit und Optionen gesetzt werden.

Wenn bei der Kaffeemaschine kein "set" erscheint: Schon mal "get ... settings" ausgeführt?

LG

pah
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Kuehnhackel am 06 März 2024, 11:50:21
Zitat von: Prof. Dr. Peter Henning am 06 März 2024, 11:19:51Also, "set Spülmaschine on" gibt es sowieso nicht (sollte es auch nicht). Zunächst muss mit "set Spülmaschine PowerOn" das Ding angeschaltet werden. Dann ein Programm gewählt, und dann mit "set Spülmaschine StartProgram" dieses gestartet werden. Das ist der von BSH vorgegebene Ablauf. Denn vor dem "StartProgram" können auch noch eine Verzögerungszeit und Optionen gesetzt werden.

Wenn bei der Kaffeemaschine kein "set" erscheint: Schon mal "get ... settings" ausgeführt?

LG

pah

Bei der Spülmschine falsch ausgedrückt, es geht kein Power on

Kaffeemaschine "get settings" keine Reaktion.

Habe es gerade noch einmal die aktuelle Version eingespielt.

Veränderungen werden "registriert", wenn ich die Kaffeemaschine per HomeConnect APP bediene.
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 06 März 2024, 14:58:22
OK, ich denke, das war ein Fix zuviel - Fehler liegt auf meiner Seite.

Anbei die bereinigte Version, damit sollten auch diese beiden Geräte wieder laufen.

LG

pah

Edit: Unsere verehrten Freunde von BSH haben wieder mal etwas geändert. Meine Spülmaschine meldet sich jetzt auch mit "Ready", wenn sie ausgeschaltet ist. Jedenfalls habe ich jetzt noch diverse weitere Änderungen eingebaut, die kommen aber erst nach ausführlichem Testen mit meinen vier Geräten zum Download.
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 08 März 2024, 11:19:12
So, ich habe jetzt noch einmal ordentlich nachgelegt, verschiedene kleinere Sachen behoben.

Alle Features habe ich mit meinen 4 Geräten durchgetestet.

Die Waschmaschine und die Spülmaschine steuer ich über je ein Dummy und ein DOIF so, dass ich mit einem einzigen Befehl alles starten kann und nicht fünfmal klicken muss. Nachfolgend zunächst diese Hilfsdevices:

defmod Geschirrspuelen dummy
attr Geschirrspuelen group Waschen
attr Geschirrspuelen readingList active event phase
attr Geschirrspuelen room Kontrollraum
attr Geschirrspuelen setList EndTime:time StartTime:time RelativeTime:time

defmod Geschirrspuelen.N DOIF ## 1. Setze Phase \
([SN55ZS49CE:".*tr_State1.*"] & [Geschirrspuelen:active] !~ /wait/)\
({fhem("setreading Geschirrspuelen phase ".ReadingsVal("SN55ZS49CE","tr_State1",""))},\
 {fhem90Cmd("setreading Geschirrspuelen phase ".ReadingsVal("SN55ZS49CE","tr_State1",""))})\
## 2. Finished\
DOELSEIF\
([SN55ZS49CE:".*Finished.*"] and [07:00-22:30])\
({speak("TText xxxx",":130:")},\
 {speak("Tab1.EG",":130:")},\
 setreading Geschirrspuelen event Finished,\
 {fhem90Cmd("setreading Geschirrspuelen event Finished")})\
## 3. und 4. Klarspüler\
DOELSEIF\
([SN55ZS49CE:".*RinseAidNearlyEmpty.*Present.*"])\
(set Geschirrspuelen event RinseAidNearlyEmpty,\
 {fhem90Cmd("set Geschirrspuelen event RinseAidNearlyEmpty")},\
 {fhem90Cmd("setreading Device.warn Appliance.nok Spülmaschine benötigt Klarspüler")})\
DOELSEIF\
([SN55ZS49CE:".*RinseAidNearlyEmpty.*Off.*"])\
({fhem90Cmd("setreading Device.warn Appliance.nok none")})\
## 5. und 6. Spülmaschinensalz\
DOELSEIF\
([SN55ZS49CE:".*SaltNearlyEmpty.*Present.*"])\
(set Geschirrspuelen event SaltNearlyEmpty,\
 {fhem90Cmd("set Geschirrspuelen event SaltNearlyEmpty")},\
 {fhem90Cmd("setreading Device.warn Appliance.nok Spülmaschine benötigt Salz")})\
DOELSEIF\
([SN55ZS49CE:".*SaltNearlyEmpty.*Off.*"])\
({fhem90Cmd("setreading Device.warn Appliance.nok none")})\
## 7. Anschalten\
DOELSEIF\
([Geschirrspuelen:".*Time.*"] and ([SN55ZS49CE:state] !~ /Ready/))\
 (set SN55ZS49CE PowerOn,\
  {Log 1,"=======> Powering on SN55ZS49CE"},\
  setreading Geschirrspuelen event $EVENT,\
  setreading Geschirrspuelen active wait)\
## 8. - 10. Auswahl Programm, Setzen Verzögerung, Start \
DOELSEIF\
( ([Geschirrspuelen:event] =~ /RelativeTime.*/ and [Geschirrspuelen:active] ne "start" and [SN55ZS49CE:".*Ready.*"]) or ([Geschirrspuelen:".*RelativeTime.*"] and [Geschirrspuelen:active] ne "start" and [SN55ZS49CE] =~ /Ready/) )\
 (set SN55ZS49CE SelectedProgram Eco50,\
  {Log 1,"=======> Selecting Eco50 on SN55ZS49CE"})\
 (set SN55ZS49CE DelayRelative {(my @evt = split(/ /,ReadingsVal("Geschirrspuelen","event",""));;;;Log 1,"=======> Setting SN55ZS49CE to relative delay $evt[1]";;;;return $evt[1])} )\
 (set SN55ZS49CE StartProgram,\
  {Log 1,"=======> Delayed start SN55ZS49CE"},\
  setreading Geschirrspuelen event DelayedStart,\
  setreading Geschirrspuelen active no)\
DOELSEIF\
(([Geschirrspuelen:event] =~ /EndTime.*/ and [Geschirrspuelen:active] ne "start" and [SN55ZS49CE:".*Ready.*"]) or ([Geschirrspuelen:".*EndTime.*"] and [Geschirrspuelen:active] ne "start" and [SN55ZS49CE] =~ /Ready/))\
 (set SN55ZS49CE SelectedProgram Eco50,\
  {Log 1,"=======> Selecting Eco50 on SN55ZS49CE"})\
 (set SN55ZS49CE DelayEndTime {(my @evt = split(/ /,ReadingsVal("Geschirrspuelen","event",""));;;;Log 1,"=======> Setting SN55ZS49CE to endtime delay $evt[1]";;;;return $evt[1])} )\
 (set SN55ZS49CE StartProgram,\
  {Log 1,"=======> Delayed start SN55ZS49CE"},\
  setreading Geschirrspuelen event DelayedStart,\
  setreading Geschirrspuelen active no)\
DOELSEIF\
(([Geschirrspuelen:event] =~ /StartTime.*/ and [Geschirrspuelen:active] ne "start" and [SN55ZS49CE:".*Ready.*"]) or ([Geschirrspuelen:".*StartTime.*"] and [Geschirrspuelen:active] ne "start" and [SN55ZS49CE] =~ /Ready/))\
 (set SN55ZS49CE SelectedProgram Eco50,\
  {Log 1,"=======> Selecting Eco50 on SN55ZS49CE"})\
 (set SN55ZS49CE DelayStartTime {(my @evt = split(/ /,ReadingsVal("Geschirrspuelen","event",""));;;;Log 1,"=======> Setting SN55ZS49CE to starttime delay $evt[1]";;;;return $evt[1])} )\
 (set SN55ZS49CE StartProgram,\
  {Log 1,"=======> Delayed start SN55ZS49CE"},\
  setreading Geschirrspuelen event DelayedStart,\
  setreading Geschirrspuelen active no)
attr Geschirrspuelen.N cmdpause 0:0:0:0:0:0:0:5:5:5
attr Geschirrspuelen.N comment [HomeConnect_ReadEventChannel] SN55ZS49CE: RinseAidNearlyEmpty = Present
attr Geschirrspuelen.N do always
attr Geschirrspuelen.N group Waschen
attr Geschirrspuelen.N repeatsame 0:1:1:1:1:1:3:1:1:1
attr Geschirrspuelen.N room Kontrollraum
attr Geschirrspuelen.N sortby 0
attr Geschirrspuelen.N stateFormat {ReadingsVal("Geschirrspuelen","event","")." ==> ".ReadingsVal($name,"state","")."&nbsp;;&nbsp;;&nbsp;;".ReadingsTimestamp($name,"state","")}
attr Geschirrspuelen.N wait 0:0:0:0:0:0:0:5,10,2:5,10,2:5,10,2

Mit den Zeiten im wait-Attribut muss man ggf. noch spielen, bei mir funktioniert es so.

defmod Waschen dummy
attr Waschen userattr defaultProgram
attr Waschen defaultProgram Cotton
attr Waschen group Waschen
attr Waschen readingList active Temperature
attr Waschen room Kontrollraum
attr Waschen setList Temperature:30,60 EndTime:time StartTime:time RelativeTime:time Program

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 xxxx",":131:")},\
 {speak("TText xxxx",":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 comment 2022-09-06 18:54:31 HomeConnect HBG4785B6 Cooking.Oven.Event.PreheatFinished: BSH.Common.EnumType.EventPresentState.Present
attr Waschen.N do always
attr Waschen.N group Waschen
attr Waschen.N repeatsame 1,1,1,1,1
attr Waschen.N room Kontrollraum
attr Waschen.N sortby 0
attr Waschen.N stateFormat {ReadingsVal("Waschen","event","")." ==> ".ReadingsVal($name,"state","")."&nbsp;;&nbsp;;&nbsp;;".ReadingsTimestamp($name,"state","")}
attr Waschen.N wait 0:0:0,5,10,5:0,5,10,5:0,5,10,5

Hier gilt dasselbe für die wait-Zeiten.

Natürlich kann man dies beliebig anpassen. Im Moment habe ich in den Waschen-Dummy nur das Setzen der Temperatur eingebaut, man könnte da noch 35 andere Dinge hineinsetzen.

Die in dem DOIF verwendete Routine "speak" ist mein persönliches Messaging-System (Sprachausgabe und weiteres).

Und zum Schluss jetzt das Modul, langsam kann ich von einem Beta-Stadium sprechen. Die Fehler in den letzten paar Versionen sind darauf zurückzuführen, dass ich über viele Monate hinweg nicht die Muße hatte, das wirklich anzupacken.

LG

pah
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Kuehnhackel am 11 März 2024, 08:37:08
Guten Morgen PAH,

vielen Dank, nun läuft es wieder.

Besteht die Möglichkeit, die Favoriten der Kaffeemaschiene noch "auszulesen"?

In den Readings erscheint es, wenn ich dass entsprechende Programm in der App auswähle unter:
SelectedProgram BSH.Common.Program.Favorite.001
Aber über:
set  TP707D06  SelectedProgram ...erscheint keiner meiner 5 Favoriten in der Auflistung, sondern nur die "Standard" Kaffeesorten

Internals:
programs Beverage.Espresso,Beverage.EspressoDoppio,Beverage.Coffee,Beverage.CaffeGrande,Beverage.XLCoffee,Beverage.Cappuccino,Beverage.LatteMacchiato,Beverage.CaffeLatte,Beverage.MilkFroth,Beverage.WarmMilk,Beverage.HotWater,Beverage.Ristretto,Beverage.EspressoMacchiato,CoffeeWorld.Verlaengerter,CoffeeWorld.KleinerBrauner,CoffeeWorld.WienerMelange,CoffeeWorld.FlatWhite,CoffeeWorld.CafeConLeche,CoffeeWorld.CafeAuLait,CoffeeWorld.KoffieVerkeerd,CoffeeWorld.Americano,CoffeeWorld.GrosserBrauner,CoffeeWorld.VerlaengerterBraun,CoffeeWorld.Cortado,CoffeeWorld.Doppio,CoffeeWorld.CafeCortado,CoffeeWorld.Kaapi,CoffeeWorld.Galao,CoffeeWorld.Garoto,CoffeeWorld.RedEye,CoffeeWorld.BlackEye,CoffeeWorld.DeadEye

Das kommt beim ZZZ-Dump raus:
Device TP707D06 of type CoffeeMaker has
settings: $VAR1 = {
          'CupWarmer' => [
                           'ConsumerProducts.CoffeeMaker.Setting',
                           'ConsumerProducts.CoffeeMaker.Setting',
                           bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ),
                           undef
                         ],
          'ChildLock' => [
                           'BSH.Common.Setting',
                           'BSH.Common.Setting',
                           bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),
                           undef
                         ],
          'PowerState' => [
                            'BSH.Common.Setting',
                            'BSH.Common.EnumType.PowerState.',
                            'Standby',
                            undef
                          ]
        };

options: $VAR1 = undef;

transtable: $VAR1 = {
          'Beverage.EspressoDoppio ' => ' Espresso doppio',
          'CoffeeWorld.VerlaengerterBraun' => 'Verlängerter Braun',
          'CoffeeWorld.Cortado' => 'Cortado',
          'CoffeeWorld.RedEye' => 'Red Eye',
          'CoffeeWorld.DeadEye' => 'Dead Eye',
          'CoffeeWorld.CafeConLeche' => 'Café con leche',
          'Beverage.LatteMacchiato' => 'Latte Macchiato',
          'CoffeeWorld.Americano' => 'Americano',
          'CoffeeWorld.Galao' => 'Galão',
          'Beverage.Espresso' => 'Espresso',
          'Beverage.Coffee' => 'Caffè crema',
          'CoffeeWorld.Verlaengerter' => 'Verlängerter',
          'CoffeeWorld.WienerMelange' => 'Wiener Melange',
          'Beverage.WarmMilk' => 'Warme Milch',
          'CoffeeWorld.GrosserBrauner' => 'Großer Brauner',
          'CoffeeWorld.Garoto' => 'Garoto',
          'CoffeeWorld.CafeAuLait' => 'Café au lait',
          'CoffeeWorld.Kaapi' => 'Kaapi',
          'Beverage.EspressoMacchiato' => 'Espresso Macchiato',
          'CoffeeWorld.CafeCortado' => 'Café cortado',
          'CoffeeWorld.KleinerBrauner' => 'Kleiner Brauner',
          'CoffeeWorld.FlatWhite' => 'Flat White',
          'CoffeeWorld.BlackEye' => 'Black Eye',
          'Beverage.CaffeeLatte ' => 'Milchkaffee',
          'Beverage.Ristretto' => 'Ristretto',
          'Beverage.Cappuccino' => 'Cappuccino',
          'Beverage.MilkFroth' => 'Milchschaum',
          'CoffeeWorld.KoffieVerkeerd' => 'Koffie verkeerd'
        };

poweroff: $VAR1 = 'PowerStandby';

LG Ralf
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 11 März 2024, 09:33:05
Hm... ich habe mal eine einfach Änderung vorgenommen, vielleicht reicht die schon aus. Bitte mal die anhängende Version einspielen.

Zum Thema Kaffemaschine noch etwas, irgendjemand hatte mal geschrieben
ZitatWas ich noch komisch finde: In der App und an der Maschine kann ich noch die Programme "Heißwasser" und "Kaffeekanne" auswählen, in Fhem gibts die aber nicht

Was steht denn in den Readings des Moduls, wenn man diese Programme in der App auswählt?

LG

pah
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Kuehnhackel am 11 März 2024, 09:45:55
Zitat von: Prof. Dr. Peter Henning am 11 März 2024, 09:33:05Hm... ich habe mal eine einfach Änderung vorgenommen, vielleicht reicht die schon aus. Bitte mal die anhängende Version einspielen.

Zum Thema Kaffemaschine noch etwas, irgendjemand hatte mal geschrieben
ZitatWas ich noch komisch finde: In der App und an der Maschine kann ich noch die Programme "Heißwasser" und "Kaffeekanne" auswählen, in Fhem gibts die aber nicht

Was steht denn in den Readings des Moduls, wenn man diese Programme in der App auswählt?

LG

pah

Ich kann Milchschaum, Warme Milch und Heisses Wasser auswählen, auch über dein Modul. Aber keine "Kanne Kaffee", dass geht auch bei mir über die App nicht.
In den Readings steht folgendes:
Internals:
programs Beverage.Espresso,Beverage.EspressoDoppio,Beverage.Coffee,Beverage.CaffeGrande,Beverage.XLCoffee,Beverage.Cappuccino,Beverage.LatteMacchiato,Beverage.CaffeLatte,[b]Beverage.MilkFroth[/b],[b]Beverage.WarmMilk[/b],[b]Beverage.HotWater[/b],Beverage.Ristretto,Beverage.EspressoMacchiato,CoffeeWorld.Verlaengerter,CoffeeWorld.KleinerBrauner,CoffeeWorld.WienerMelange,CoffeeWorld.FlatWhite,CoffeeWorld.CafeConLeche,CoffeeWorld.CafeAuLait,CoffeeWorld.KoffieVerkeerd,CoffeeWorld.Americano,CoffeeWorld.GrosserBrauner,CoffeeWorld.VerlaengerterBraun,CoffeeWorld.Cortado,CoffeeWorld.Doppio,CoffeeWorld.CafeCortado,CoffeeWorld.Kaapi,CoffeeWorld.Galao,CoffeeWorld.Garoto,CoffeeWorld.RedEye,CoffeeWorld.BlackEye,CoffeeWorld.DeadEye

Ich teste jetzt mal die letzte Version, von gerade.

LG Ralf
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Kuehnhackel am 11 März 2024, 10:06:17
Leider keine Änderung, zu den Favoriten.

Hier die Readings:
ActiveProgram   
BSH.Common.Option.ProgramProgress    0%
BSH.Common.Root.ActiveProgram    -
BSH.Common.Root.SelectedProgram    BSH.Common.Program.Favorite.001
BSH.Common.Setting.PowerState    BSH.Common.EnumType.PowerState.Standby
BSH.Common.Status.LocalControlActive    0
BSH.Common.Status.OperationState    BSH.Common.EnumType.OperationState.Inactive
BSH.Common.Status.RemoteControlStartAllowed    1
BeanAmount    Strong
BeverageCounterCoffee    880
BeverageCounterCoffeeAndMilk    41
BeverageCounterHotWater    0 ml
BeverageCounterHotWaterCups    0
BeverageCounterMilk    0
ChildLock    0
CoffeeMilkRatio    75Percent
ConsumerProducts.CoffeeMaker.Event.DripTrayFull    BSH.Common.EnumType.EventPresentState.Off
ConsumerProducts.CoffeeMaker.Option.BeanAmount    "ConsumerProducts.CoffeeMaker.EnumType.BeanAmount.Mild"
ConsumerProducts.CoffeeMaker.Option.FillQuantity    200 ml
ConsumerProducts.CoffeeMaker.Option.MultipleBeverages    true
ConsumerProducts.CoffeeMaker.Status.BeverageCounterCoffee    155
ConsumerProducts.CoffeeMaker.Status.BeverageCounterCoffeeAndMilk    11
ConsumerProducts.CoffeeMaker.Status.BeverageCounterHotWater    0 ml
ConsumerProducts.CoffeeMaker.Status.BeverageCounterHotWaterCups    0
ConsumerProducts.CoffeeMaker.Status.BeverageCounterMilk    0
ConsumerProducts.CoffeeMakerBeverageCounterCoffee    880
ConsumerProducts.CoffeeMakerBeverageCounterCoffeeAndMilk    41
ConsumerProducts.CoffeeMakerBeverageCounterHotWater    0 ml
ConsumerProducts.CoffeeMakerBeverageCounterHotWaterCups    0
ConsumerProducts.CoffeeMakerBeverageCounterMilk    0
CupWarmer    0
DescalingIn15Cups    Off
DescalingIn20Cups    Off
DeviceShouldBeCleaned    Off
DripTrayFull    Off
EstimatedTotalProgramTime    180 seconds
FillQuantity    50 ml
HotWaterTemperature    90C
LocalControlActive    0
MultipleBeverages    0
OperationState    Ready
PowerState    On
ProgramFinished    Off
ProgramProgress    0%
RemoteControlStartAllowed    1
SelectedProgram    CoffeeWorld.KleinerBrauner
WaterTankEmpty    Off
state    Ready
tr_RemoteControlState    Fernstart aktiv
tr_State1    Bereit
tr_State2    Bereit
tr_State3    Bereit

LG Ralf
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Rainer H. am 11 März 2024, 10:51:20
Guten Tag,

ich habe seit kurzer Zeit einen Siemens Geschirrspüler. Ich habe diesen laut WIKI in Fhem eingebunden was auch gut funktionierte.

Danach hatte ich die 48:HomeConnect getauscht und mit reload aktiviert.

So nun zu meiner Frage: Das dropdown mit den Programmen ist jetzt weg - ist das so gewollt? oder anders - ist das normal und ist nur noch als INFO gedacht?

Ich habe dann alles gelöscht neu angelegt - dabei ist mir aufgefallen das das webcmd BSH.Common.Root.SelectedProgram:startProgram:stopProgram nicht mehr angelegt wurde.
Wenn ich es manuell wieder einfüge kommt BSH.Common.Root.SelectedProgram an dieser Stelle. Wenn ich den Text anklicke kommt[HomeConnect_Set] SN65YX00AE: unknown program , choose one of Intensiv70,Auto2,Eco50,Quick45,PreRinse,Kurz60,MachineCare,NightWash,MixedLoad,Super60
Hat jemand einen Tip?  unten habe ich ein list und ZZZ_Dump angefügt.

Schon mal Danke für eine Rückmeldung

Rainer

Internals:
   DEF        hcconn 013100394784009311
   FUUID      65edda73-f33f-1d6a-36e9-2ff7450b06d4b3fe
   NAME       SN65YX00AE
   NR         1331
   STATE      Ready
   TYPE       HomeConnect
   aliasname  Geschirrspüler
   brand      Siemens
   eventChannelTimeout 1710150973.60862
   eventCount 13
   events     SaltNearlyEmpty,RinseAidNearlyEmpty
   haId       013100394784009311
   hcconn     hcconn
   options    StartInRelative,HygienePlus,HalfLoad,VarioSpeedPlus,BrillianceDry
   prefix     Dishcare.Dishwasher
   programs   Intensiv70,Auto2,Eco50,Quick45,PreRinse,Kurz60,MachineCare,NightWash,MixedLoad,Super60
   retrycounter 0
   type       Dishwasher
   vib        SN65YX00AE
   READINGS:
     2024-03-11 10:55:14   DoorState       Open
     2024-03-11 10:55:14   OperationState  Ready
     2024-03-11 10:52:57   PowerState      On
     2024-03-11 10:52:57   RemainingProgramTime 17700 seconds
     2024-03-11 10:52:57   RemainingProgramTimeHHMM 04:55
     2024-03-11 10:55:14   RemoteControlActive 1
     2024-03-11 10:55:14   RemoteControlStartAllowed 0
     2024-03-11 10:56:16   SelectedProgram Eco50
     2024-03-11 10:55:14   state           Ready
     2024-03-11 10:55:14   tr_DoorState    Tür offen
     2024-03-11 10:55:14   tr_RemoteControlState Fernstart inaktiv
     2024-03-11 10:55:14   tr_State1       Bereit
     2024-03-11 10:55:14   tr_State2       Bereit
     2024-03-11 10:55:14   tr_State3       Bereit
   data:
     poweroff   PowerOff
     options:
       BrillianceDry:
         Dishcare.Dishwasher.Option
         Boolean
         0
         
         1
         undef
       HalfLoad:
         Dishcare.Dishwasher.Option
         Boolean
         0
         
         1
         undef
       HygienePlus:
         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
   hmccu:
Attributes:
   alias      Geschirrspüler
   room       Home conect
   webCmd     BSH.Common.Root.SelectedProgram:startProgram:stopProgram

ZZZ_Dump

Device SN65YX00AE of type Dishwasher has
settings: $VAR1 = undef;

options: $VAR1 = {
          'HalfLoad' => [
                          'Dishcare.Dishwasher.Option',
                          'Boolean',
                          bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),
                          '',
                          bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ),
                          undef
                        ],
          'StartInRelative' => [
                                 'BSH.Common.Option',
                                 'Int',
                                 undef,
                                 '(0,86400)',
                                 undef,
                                 undef
                               ],
          'HygienePlus' => [
                             'Dishcare.Dishwasher.Option',
                             'Boolean',
                             $VAR1->{'HalfLoad'}[2],
                             '',
                             $VAR1->{'HalfLoad'}[4],
                             undef
                           ],
          'BrillianceDry' => [
                               'Dishcare.Dishwasher.Option',
                               'Boolean',
                               $VAR1->{'HalfLoad'}[2],
                               '',
                               $VAR1->{'HalfLoad'}[4],
                               undef
                             ],
          'VarioSpeedPlus' => [
                                'Dishcare.Dishwasher.Option',
                                'Boolean',
                                $VAR1->{'HalfLoad'}[2],
                                '',
                                $VAR1->{'HalfLoad'}[4],
                                undef
                              ]
        };

transtable: $VAR1 = {
          'NightWash' => 'Leise',
          'MachineCare' => 'Maschinenpflege',
          'Favorite.001' => 'Favorit',
          'PreRinse' => 'Vorspülen',
          'Eco50' => 'Eco 50',
          'Kurz60' => 'Speed 60',
          'GlassShine' => 'Brilliant Shine',
          'Auto2' => 'Auto 45-65',
          'Intensiv70' => 'Intensiv 70',
          'Quick45' => 'Speed 45'
        };

poweroff: $VAR1 = 'PowerOff';
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 11 März 2024, 19:58:53
@Kuehnhackel:

Die Readings mit Präfix sind wohl ein Überbleibsel der defekten Zwischenversion des Moduls. Einfach mal mit deletereading <Device> .*alle Readings löschen und dann mit get settings, get programs etc. neu anlegen.

Das mit den Favoriten ist schwierig, weil für mich kaum zu testen. Ich muss mal sehen, irgendwie gibt es bei der Spülmaschine auch die Möglichkeit, einen Favoriten zu definieren.

@Rainer H.:

Ich verstehe nicht was hier gemeint ist. Was ist "das Dropdpown mit den Programmen", wo soll das denn stehen?

Was bedeutet "Wenn ich es manuell wieder einfüge kommt BSH.Common.Root.SelectedProgram an dieser Stelle"? Das Attribut webcmd wird nicht vom Modul gesetzt. Und nein, bitte nicht den typischen Anfängerfehler machen und "einfach alles löschen". Wir sind hier nicht bei Windows.

LG

pah

Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Rainer H. am 12 März 2024, 08:58:14
Hallo pah,

zuerst Danke für dir schnelle Antwort. Ich bin leider unterwegs versuche es mit einem Bild vom Mobile vielleicht reicht das schon.

Screenshot_20240312_083330_Chrome.jpg

 
Das meine ich - wo BSH.Common.Root.SelectedProgram steht war das Menü mit den möglichen Programmen. Wenn ich den Text anklicke kommt dann  die Meldung  [HomeConnect_Set] SN65YX00AE: unknown program , choose one of Intensiv70,Auto2,Eco50,Quick45,PreRinse,Kurz60,MachineCare,NightWash,MixedLoad,Super60

Manuell meinte ich das webcmd erstellen


Wenn das nicht als Erklärung reicht mache ich es am Freitag ausführlicher am Mobile ist das recht "popelig"

....  ;) und ja löschen ist wirklich nicht so toll - gelobe Besserung

Grüße
Rainer
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 12 März 2024, 09:18:26
Noch einmal: Das Modul legt im Attribut webcmd _gar nichts_ an. Das muss man bitte selbst machen.

LG

pah
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Rainer H. am 12 März 2024, 09:34:53
Hmmm.... warum wird es dann angezeigt wenn ich die Originale Version einspiele?

Ich bin kein Programmierer aber wenn ich das Modul tausch muss da irgendwas noch passieren - frage is nur was?
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 12 März 2024, 09:49:54
Zitatmuss da irgendwas noch passieren
Ganz sicher nicht.

pah
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Rainer H. am 12 März 2024, 09:52:40
Ich versuch es am WE nochmal und mache ggf. ein Video
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Shadow3561 am 12 März 2024, 11:51:10
Ich denke, dass ihr beide aneinander vorbei redet.
Er meint nicht das WebCmd.

Ich habe das gleiche Problem bei meinem Testsystem.
Es ist nur ein ,,get settings" vorhanden. Jedoch tut sich nichts wenn man es absetzt.
Meiner Meinung nach vermisst er die ,,Set Befehle", im Bild rot markiert.
Anbei ein Bild von meinem Produktivsystem zur Verdeutlichung.

LG
Daniel
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 12 März 2024, 11:59:35
Ich glaube nicht, dass wir da aneinander vorbeireden. Er hat ein Bild der Kurzdarstellung gepostet, und die zeigt nicht die get /set-Befehle, sondern nur das webcmd.

LG

pah
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Rainer H. am 12 März 2024, 12:26:17
Ich meine schon das was Daniel schreibt.

Danke Daniel

Im Bild ist halt die Auswirkung auf das System.
Gut hätte auch das device noch aufrufen können

Sorry wenn ich da missverstanden wurde

Screenshot_20240312_184548_Chrome.jpg

 Also ich vermisse die set Befehle und bei get settings tut sich nichts wie Daniel geschrieben hat.
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Shadow3561 am 12 März 2024, 17:51:39
@  Prof. Dr. Peter Henning

Wenn ich in Zeile 1637 das
  if($settings ne ""){ in

  if($settings eq ""){ändere, dann funktioniert ein "get Settings" und es erscheinen die "set - Befehle" wie PowerOn usw.


EDIT:
Hier noch die transtable für den einen Waschtrockner (Typ: WNC244070)

#-- WasherDryer
#  known settings ChildLock, PowerState
#  known programs Eco4060,Cotton,EasyCare,Mix,DelicatesSilk,Wool,FastWashDry45,SportFitness,Synthetics,Refresh,SpinDrain,Rinse
#  known problems: program contains "."
#  special types (LaundryCare.WasherDryer.EnumType.) SpinSpeed, Temperature
$HomeConnect_DeviceSettings{"WasherDryer"} = ["ChildLock","PowerState"];
$HomeConnect_DevicePrefix{"WasherDryer"}   = "LaundryCare.WasherDryer";
$HomeConnect_DevicePowerOff{"WasherDryer"} = "PowerOff";
$HomeConnect_DeviceEvents{"WasherDryer"}   = [];
$HomeConnect_DeviceTrans_DE{"WasherDryer"} = {
    "Mix.HHMix.HHMix" => "Schnell/Mix",
    "EasyCare.HHSynthetics.HHSynthetics" => "Pflegeleicht",
    "DelicatesSilk.DelicatesSilk.DelicatesSilk" => "Fein/Seide",
    "Sensitive.Sensitive.Sensitiv" => "Hygiene Plus",
    "RefreshWD.Refresh.Refresh" => "Iron Assist",
    "FastWashDry.WD45.WD45" => "Extra Kurz 15/Wash & Dry 45",
    "SportFitness.SportFitness.SportFitness" => "Sportswear",
    "Wool.Wool.Wool" => "Wolle",
    "Cotton.Cotton.Cotton" => "Baumwolle",
    "LabelEU19.LabelEU19.Eco4060" => "Eco 40-60",
    "Rinse.Rinse.Rinse" => "Spülen",
    "Spin.Spin.SpinDrain" => "Schleudern/Abpumpen"

};

Dann hatte ich einmalig folgende Readings in meinem Modul.
Diese sind letzte Woche einmalig erschienen und wurden seither nicht mehr aktualisiert.
Ich vermute es wurde kurzzeitig etwas von Seiten Bosch verändert.

LaundryCare.WasherDryer.Option.ProgramMode
LaundryCare.WasherDryer.EnumType.ProgramMode.WashingAndDrying

LaundryCare.Common.Option.ProcessPhase
LaundryCare.Common.EnumType.ProcessPhase.RinsingSoftener

LG
Daniel
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Rainer H. am 12 März 2024, 18:42:31
@Shadow3561 es kann nicht sein  8) aber ich habe es trotzdem wie Du oben geschrieben hast geändert.

Geht! Wie im Orginal Modul

Dankeschön!
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Shadow3561 am 12 März 2024, 19:01:41
Zitat von: Rainer H. am 12 März 2024, 18:42:31@Shadow3561 es kann nicht sein  8) aber ich habe es trotzdem wie Du oben geschrieben hast geändert.

Geht! Wie im Orginal Modul

Dankeschön!
Auf Grund meiner mangelnden Kenntnisse solltest du lieber warten bis Pah sich das angesehen hat und evtl. Änderungen vornimmt.  Ich benutze sein Modul nur zu Testzwecken und habe somit nicht alles getestet. Des Weiteren gibt es mehrere Geräte von mehreren Herstellern die HomeConnect-fähig sind. Soll heißen, kann sein, dass andere Geräte durch diese Änderung nicht mehr funktionieren.
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Rainer H. am 12 März 2024, 19:08:22
Zitat von: Shadow3561 am 12 März 2024, 19:01:41
Zitat von: Rainer H. am 12 März 2024, 18:42:31@Shadow3561 es kann nicht sein  8) aber ich habe es trotzdem wie Du oben geschrieben hast geändert.

Geht! Wie im Orginal Modul

Dankeschön!
Auf Grund meiner mangelnden Kenntnisse solltest du lieber warten bis Pah sich das angesehen hat und evtl. Änderungen vornimmt.  Ich benutze sein Modul nur zu Testzwecken und habe somit nicht alles getestet. Des Weiteren gibt es mehrere Geräte von mehreren Herstellern die HomeConnect-fähig sind. Soll heißen, kann sein, dass andere Geräte durch diese Änderung nicht mehr funktionieren.

Trotzdem vielen Dank!

Bin auf alle Fälle einen Riesenschritt weiter.

Das es erstmal geht ist schon mal was und @pah hat da sicher mehr Ahnung und kann es sicher beurteilen.
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 12 März 2024, 19:40:02
@RainerH:
ZitatIm Bild ist halt die Auswirkung auf das System.
Falsch.
ZitatSorry wenn ich da missverstanden wurde
Das war kein Missverständnis, sondern schlicht eine fehlerhafte Nachricht  >:(

pah
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Rainer H. am 12 März 2024, 19:52:33
Zitat von: Prof. Dr. Peter Henning am 12 März 2024, 19:40:02@RainerH:
ZitatIm Bild ist halt die Auswirkung auf das System.
Falsch.
ZitatSorry wenn ich da missverstanden wurde
Das war kein Missverständnis, sondern schlicht eine fehlerhafte Nachricht  >:(

pah

Ich bin weder Dr. noch Professor Sorry dafür hats nicht gereicht.

Ich hab geschrieben wo ich eine Auswirkung gesehen hab nichts weiter!

Ausserdem hab ich die Fehlermeldung mit gepostet - was hätte ich denn sonst noch machen sollen?

Ein Forum sollte weiterhelfen! und nicht Schuldzuweisungen machen wenn einer mal nicht den Background hat. Zumindest es versuchen und nicht...... lassen wir es. Ich bin der Depp passt scho.
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 12 März 2024, 19:54:59
@Shadow3561: Ah, OK, das ist in der Tat ein Fehler. Danke fürs testen, der ist mir irgendwie reingerutscht.

Korrigierte Version anbei.

Ich habe die transtable jetzt auch mal so übernommen. Ist das wirklich so, dass die Kiste ein "DelicatesSilk.DelicatesSilk.DelicatesSilk" als Programm meldet? Würde mich bei der Inkonsistenz, mit der BSH diese Sachen angeht, ehrlich gesagt nicht wundern. Und auch die relativ häufigen undokumentierten Änderungen sind mir schon an anderer Stelle negativ aufgefallen.

LG

pah

@RainerH: Nein, es ist _eben nicht_ die "Auswirkung auf das System". In der Device-Übersicht werden _niemals_ get/set-Befehle angezeigt, wenn diese nicht _explizit_ als webcmd definiert wurden. Tipp: Einfach mal das hier lesen: https://forum.fhem.de/index.php?topic=71806.0
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Rainer H. am 12 März 2024, 20:14:05
Zitat von: Prof. Dr. Peter Henning am 12 März 2024, 19:54:59@Shadow3561: Ah, OK, das ist in der Tat ein Fehler. Danke fürs testen, der ist mir irgendwie reingerutscht.

Korrigierte Version anbei.

Ich habe die transtable jetzt auch mal so übernommen. Ist das wirklich so, dass die Kiste ein "DelicatesSilk.DelicatesSilk.DelicatesSilk" als Programm meldet? Würde mich bei der Inkonsistenz, mit der BSH diese Sachen angeht, ehrlich gesagt nicht wundern.

LG

pah

@RainerH: Nein, es ist _eben_nicht die "Auswirkung auf das System". In der Device-Übersicht werden _niemals_ get/set-Befehle angezeigt, wenn diese nicht _explizit_ als webcmd definiert wurden.


Wie gesagt ich habe es meinem Wissensstand wiedergegeben. Ich habe das webcmd nach meinem wissen definiert und auch die Meldung dazu gepostet sowie das Bild. Aber wie gesagt einfache user sind scheinbar nicht so willkommen. User wie mich gibts zu tausenden.
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 12 März 2024, 20:29:01
1. Bitte nicht jedesmal die vorigen Posts zitieren. Das ist nicht sinnvoll und verstopft nur den Thread.
2. Bitte das hier lesen: https://forum.fhem.de/index.php?topic=71806.0

pah
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 12 März 2024, 20:51:37
@Kuehnhackel:

Betreffend die Favoriten bei der Kaffeemaschine: Bitte mal für kurze Zeit in dem Device verbose=5 setzen und get programs ausführen. Und hier einen Logauszug posten.

LG

pah
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Rainer H. am 12 März 2024, 21:10:47
Zitat von: Prof. Dr. Peter Henning am 12 März 2024, 20:29:011. Bitte nicht jedesmal die vorigen Posts zitieren. Das ist nicht sinnvoll und verstopft nur den Thread.
2. Bitte das hier lesen: https://forum.fhem.de/index.php?topic=71806.0

pah

Zu1 ja ok
Zu2 welchen Teil hab ich nicht gemacht?
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 15 März 2024, 04:22:16
Obwohl der Thread inzwischen ziemlich zugemüllt ist, werde ich ihn weiterführen.

Um was geht es hier: Das offiziell verteilte Modul 48_HomeConnect.pm greift auf das API von BSH zu und erlaubt zwar eine eingeschränke Bedienung der Geräte. Hat aber ziemlich absurde und schwer verständliche Reading-Namen und -Werte. Mit dem hier angehängten Modul, das vorerst einfach als Ersatz des offiziell verteilten dienen kann, soll das bereinigt werden.

Das Modul ist inzwischen auf einem relativ guten Beta-Stand. Aktuell offene Probleme:

1. Bei Kaffeemaschinen: Wie kann man auf die Favoriten zugreifen?
==> Bitte mal für kurze Zeit in dem Device verbose=5 setzen und get programs ausführen. Und hier einen Logauszug posten.

2. Bei Wäschtrocknern: Die im Modul so genannte transtable übersetzt die vollkommen absurden Programmbezeichnungen von BSH in lesbare Ausdrücke, die an die Bezeichnungen in der BSH-App angeglichen sind. Dazu hatte mir Shadow3561 einen Vorschlag geschickt, den ich leider nicht testen kann (unser Wäschetrockner ist ein paar Jährchen älter, tut aber noch astrein. War noch deutsche Wertarbeit...) Unter anderem sind dort solche Übersetzungen drin wie
Zitat"EasyCare.HHSynthetics.HHSynthetics" => "Pflegeleicht",
==> Die Frage an alle Besitzer von BSH-Wäschtrocknern ist, ob die von der Maschine gelieferten Bezeichnungen wirklich so sind, dass sie die Strings doppelt und dreifach enthalten.

LG

pah
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Shadow3561 am 15 März 2024, 05:32:50
Zitat von: Prof. Dr. Peter Henning am 15 März 2024, 04:22:16==> Die Frage an alle Besitzer von BSH-Wäschtrocknern ist, ob die von der Maschine gelieferten Bezeichnungen wirklich so sind, dass sie die Strings doppelt und dreifach enthalten.

LG

pah
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 15 März 2024, 08:26:07
Dir glaub ichs ja - aber das ist so pervers, dass ich eigentlich eine Bestätigung von einem anderen Besitzer eines _anderen_ Wäschetrockners haben wollte. Wenn die Geräte nämlich noch unterschiedlich melden, muss ich mir da einen Weg zur Umgehung ausdenken.

LG

pah

Edit: Es ist nicht nur bei den Wäschetrocknern so, sondern auch die anderen Geräte haben teilweise neue Programme mit absurden Namen bekommen. Beispielsweise behauptet unsere Waschmaschine inzwischen, sie würde auch Programme wie "DownDuvet.Duvet" kennen - übersetzt als "Daunenbettdecke.Bettdecke". Da in der Regel "Duvet" sich schon auf Daunen bezieht, müsste man korrekterweise sagen "DaunenDaunenbettdecke.Daunenbettdecke".

Wer um Himmels Willen entwickelt bei BSH solchen Kram?

Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Shadow3561 am 16 März 2024, 12:36:56
Bei mir laufen leider noch ein paar Sachen nicht.
Ein "get <device> ProgramOptions" liefert den Fehler "device not powered on, cannot determine options"

Device ist aber an.

Im Modul ab Zeile 1309 folgendes

   my $programPrefix  = $hash->{prefix}.".Program.";
  my $rootPrefix     = (AttrVal($name,"includePrefixes",0))?"BSH.Common.Root.":"";
 
  #-- check for conditions
  my $powerState = ReadingsVal($name,$rootPrefix."PowerState","Inactive");
  my $program    = ReadingsVal($name,$rootPrefix."SelectedProgram",undef);
  if( $powerState =~ /(Inactive)|(Offline)/){
    $msg = "[HomeConnect_GetProgramOptions] $name: device not powered on, cannot determine options";
    Log3 $name,1,$msg;
    return $msg;
my $rootPrefix ist zumindest für meine 3 Geräte falsch.
Das PowerState steht in BSH.Common.Setting.PowerState

Habe es wie folgt geändert

  my $programPrefix  = $hash->{prefix}.".Program.";
  my $powerPrefix     = (AttrVal($name,"includePrefixes",0))?"BSH.Common.Setting.":"";
  my $rootPrefix     = (AttrVal($name,"includePrefixes",0))?"BSH.Common.Root.":"";
 
  #-- check for conditions
  my $powerState = ReadingsVal($name,$powerPrefix."PowerState","Off");
  my $program    = ReadingsVal($name,$rootPrefix."SelectedProgram",undef);
  if( $powerState =~ /(Inactive)|(Offline)/){
    $msg = "[HomeConnect_GetProgramOptions] $name: device not powered on, cannot determine options";
    Log3 $name,1,$msg;
    return $msg;

Damit bekomme ich dann auch die ProgramOptions wie IntensivZone usw.


Grüsse,
Daniel

Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: RockFan am 16 März 2024, 12:57:59
Hallo pah,
Danke für das Weiterentwickeln :)

Ich musste unseren Trockner erstmal wieder ins WLAN bringen, da er sich gerne immer wieder mal daraus verabschiedet. Vor knapp einem Jahr hatte ich mit der damaligen Version Deiner Neuentwicklung ja nicht hinbekommen (siehe Post 66 (https://forum.fhem.de/index.php?msg=1275793))
Das sieht jetzt besser aus.
Wenn ich die Programme mit verbose=5 abrufe (get Programs) bekomme ich:
2024.03.16 12:39:35 5: [HomeConnect_ResponseGetPrograms] WT7YH701: get programs response {
  "data": {
    "active": {
      "constraints": {
        "access": "readWrite"
      }
    },
    "programs": [{
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "LaundryCare.Dryer.Program.Cotton"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "LaundryCare.Dryer.Program.Synthetic"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "LaundryCare.Dryer.Program.Mix"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "LaundryCare.Dryer.Program.Dessous"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "LaundryCare.Dryer.Program.TimeCold"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "LaundryCare.Dryer.Program.TimeWarm"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "LaundryCare.Dryer.Program.Hygiene"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "LaundryCare.Dryer.Program.Super40"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "LaundryCare.Dryer.Program.Towels"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "LaundryCare.Dryer.Program.Outdoor"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "LaundryCare.Dryer.Program.Pillow"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "LaundryCare.Dryer.Program.Blankets"
    }, {
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "LaundryCare.Dryer.Program.BusinessShirts"
    }],
    "selected": {
      "constraints": {
        "access": "readWrite"
      },
      "key": "LaundryCare.Dryer.Program.Cotton",
      "options": [{
        "key": "BSH.Common.Option.FinishInRelative",
        "value": 6720,
        "unit": "seconds"
      }, {
        "key": "LaundryCare.Dryer.Option.DryingTarget",
        "value": "LaundryCare.Dryer.EnumType.DryingTarget.CupboardDry"
      }, {
        "key": "LaundryCare.Dryer.Option.Gentle",
        "value": false
      }, {
        "key": "LaundryCare.Dryer.Option.WrinkleGuard",
        "value": "LaundryCare.Dryer.EnumType.WrinkleGuard.Min60"
      }, {
        "key": "BSH.Common.Option.EstimatedTotalProgramTime",
        "value": 6720,
        "unit": "seconds"
      }, {
        "key": "BSH.Common.Option.RemainingProgramTime",
        "value": 6720,
        "unit": "seconds"
      }, {
        "key": "BSH.Common.Option.RemainingProgramTimeIsEstimated",
        "value": true
      }]
    }
  }
}
Use of uninitialized value in concatenation (.) or string at ./FHEM/48_HomeConnect.pm line 1735.
2024.03.16 12:39:35 5: [HomeConnect_ReadEventChannel] WT7YH701: event channel searching for data, fileno:"76", nfound:"0", loopCounter:"1"
2024.03.16 12:39:35 5: [HomeConnect_ReadEventChannel] WT7YH701: event channel received no more data
2024.03.16 12:39:40 5: [HomeConnect_ReadEventChannel] WT7YH701: event channel searching for data, fileno:"76", nfound:"0", loopCounter:"1"
2024.03.16 12:39:40 5: [HomeConnect_ReadEventChannel] WT7YH701: event channel received no more data
Use of uninitialized value in concatenation (.) or string at ./FHEM/48_HomeConnect.pm line 1305.


Mir fällt noch auf, dass state immer offline anzeigt. Änderungen am Trockner, wie z.B das Schließen der Tür werden im Device aber aktualisiert.

Edit:
get ProgramOptions geht bei mir analog zu Daniel im vorigen Post auch nicht.

Viele Grüße
Dieter
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 16 März 2024, 18:16:15
@Shadow3561: Hmm. Ging bei mir vor kurzem noch mit dem rootPrefix??? Habe ich jetzt mal geändert, das ist aber kein separater powerPrefix, sondern der "normale" optionPrefix.

@RockFan: Ah, sieh an, endlich mal ein paar Daten zum Dryer (ohne Washer...) Interessieren würde mich hierzu noch ein get ZZZ_Dump.

Ich habe diese Änderungen mal eingebaut, anbei die nächste Testversion. Die sollte jetzt sowohl settings, als auch programs und programOptions für Eure Geräte holen können.


LG

pah
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Shadow3561 am 16 März 2024, 19:12:41
EDIT:
Mein GS holt die settings wieder nicht.
Zeile 1677
   if($settings eq ""){

Was hälst du von ein paar Änderungen das state betreffend?
Ich habe bei mir noch ein paar Dinge in die {AttrList} eingebaut um das "state" an die unterschiedlichen Bedürfnisse von Usern an zu passen.

                       "show_end_time:0,1 " .           #fertig in
                       "show_end:0,1 " .                #fertig um
                       "show_progress:0,1 " .            #Fortschritt in %
                       "type:Washer,Dishwasher " .        #beeinflusst program

Anbei ein Bild vom Waschtrockner.
Wenn type = Dischwascher dann steht nur das Programm ohne Temp und U/min

Ich denke, dass es die Benutzerfreundlichkeit erhöht. Man kann sein state je nach device und gusto anpassen ohne mit userReadings oder stateFormat arbeiten zu müssen.

Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 16 März 2024, 19:37:12
Dafür gibt es doch die drei Readings tr_State1, tr_State2, tr_State3.

Wenn meine Chefin fragt "Wie lange braucht die Waschmaschine", wird tr_State2 abgespielt.
Wenn sie fragt "Wie ist der Status der Waschmaschine", wird tr_State3 abgespielt.

Die Skripte zum automatischen Einschalten habe ich unten schon veröffentlicht. Die komfortable Sprachsteuerung (auch der obigen Befehle) macht bei mir das Modul Babble, an dem "hinten" ein Rivescript-Chatbo dranhängt. Die Rivescript-Konfiguration stelle ich auch gerne zur Verfügung, wenn jemand das implementieren will.

LG

pah
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Shadow3561 am 16 März 2024, 19:59:42
Noch einmal zu Verhalten des "get Settings"

Lasse ich Zeile 1677 wie sie ist dann werden die settings vom Kochfeld und vom Waschtrockner abgerufen,
jedoch nicht die vom Geschirrspüler.
Hier das Log vom Geschirrspüler.

2024.03.16 19:42:20 5: [HomeConnect_ReadEventChannel] SMV8YCX03E_new: event channel searching for data, fileno:"19", nfound:"0", loopCounter:"1"
2024.03.16 19:42:20 5: [HomeConnect_ReadEventChannel] SMV8YCX03E_new: event channel received no more data
2024.03.16 19:42:25 5: [HomeConnect_ReadEventChannel] SMV8YCX03E_new: event channel searching for data, fileno:"19", nfound:"1", loopCounter:"1"
2024.03.16 19:42:25 5: [HomeConnect_ReadEventChannel] SMV8YCX03E_new: event channel len:"52", received:"2e
event:KEEP-ALIVE
data:
id:013080530166000676


"
2024.03.16 19:42:25 5: [HomeConnect_ReadEventChannel] SMV8YCX03E_new: event channel unknown: 2e

2024.03.16 19:42:25 5: [HomeConnect_ReadEventChannel] SMV8YCX03E_new: event channel unknown: event:KEEP-ALIVE

2024.03.16 19:42:25 5: [HomeConnect_ReadEventChannel] SMV8YCX03E_new: event channel unknown: id:013080530166000676

2024.03.16 19:42:25 5: [HomeConnect_ReadEventChannel] SMV8YCX03E_new: event channel unknown:

2024.03.16 19:42:25 5: [HomeConnect_ReadEventChannel] SMV8YCX03E_new: event channel unknown:

2024.03.16 19:42:25 5: [HomeConnect_ReadEventChannel] SMV8YCX03E_new: event channel searching for data, fileno:"19", nfound:"0", loopCounter:"2"
2024.03.16 19:42:25 5: [HomeConnect_ReadEventChannel] SMV8YCX03E_new: event channel received no more data

Ändere ich Zeile 1677 ne->eq
dann wird das "get settings" vom Geschirrspüler ausgeführt jedoch nicht Kochfeld und Waschtrockner.


ZitatDafür gibt es doch die drei Readings tr_State1, tr_State2, tr_State3.

Wenn meine Chefin fragt "Wie lange braucht die Waschmaschine", wird tr_State2 abgespielt.
Wenn sie fragt "Wie ist der Status der Waschmaschine", wird tr_State3 abgespielt.

Nicht jeder lässt sich die Zeiten mittels Sprachansage vorlesen.
Es war ja auch nur eine Anregung

EDIT:
Habe es jetzt erst mal so gelöst
  if($settings ne ""){
    $hash->{data}->{settings} = \%localsettings;
    $hash->{settings}         = $settings;
    #$hash->{setlist}          = $setshtml;
  }elsif($settings eq ""){
    $hash->{data}->{settings} = \%localsettings;
    $hash->{settings}         = $settings;
    #$hash->{setlist}          = $setshtml;
  }else

Damit lassen sich jetzt für alle 3 Geräte das "get Settings" ausführen und läuft durch.

Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 16 März 2024, 21:10:38
Hmmmm. Muss ich mir morgen ansehen, heute zu müde.

Und die drei States sind ja nicht nur zum Vorlesen. Sondern auch für die Anzeige via Telegram.

LG

pah
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: RockFan am 16 März 2024, 21:36:07
Zitat von: Prof. Dr. Peter Henning am 16 März 2024, 18:16:15@Shadow3561: Hmm. Ging bei mir vor kurzem noch mit dem rootPrefix??? Habe ich jetzt mal geändert, das ist aber kein separater powerPrefix, sondern der "normale" optionPrefix.

@RockFan: Ah, sieh an, endlich mal ein paar Daten zum Dryer (ohne Washer...) Interessieren würde mich hierzu noch ein get ZZZ_Dump.

Ich habe diese Änderungen mal eingebaut, anbei die nächste Testversion. Die sollte jetzt sowohl settings, als auch programs und programOptions für Eure Geräte holen können.


LG

pah

Ich finde nur ein set ZZZ_Dump (kein get) und bekomme damit folgendes:
Device WT7YH701 of type Dryer has
settings: $VAR1 = {
          'PowerState' => [
                            'BSH.Common.Setting',
                            'BSH.Common.EnumType.PowerState.',
                            'On',
                            undef
                          ]
        };

options: $VAR1 = undef;

transtable: $VAR1 = {};

poweroff: $VAR1 = 'PowerOff';

Das Resultat von get programOptions ist nach wie vor eine Fehlermeldung, die auch im Log steht:
Use of uninitialized value in concatenation (.) or string at ./FHEM/48_HomeConnect.pm line 1329.
2024.03.16 21:33:09 1: [HomeConnect_GetProgramOptions] WT7YH701: device not powered on, cannot determine options

Update:
get Programs liefert nun weniger:
2024.03.16 21:36:42 5: [HomeConnect_ResponseGetPrograms] WT7YH701: get programs response {
  "data": {
    "active": {
      "constraints": {
        "access": "read"
      },
      "key": "LaundryCare.Dryer.Program.Cotton",
      "options": [{
        "key": "LaundryCare.Dryer.Option.DryingTarget",
        "value": "LaundryCare.Dryer.EnumType.DryingTarget.CupboardDry"
      }, {
        "key": "LaundryCare.Dryer.Option.Gentle",
        "value": false
      }, {
        "key": "LaundryCare.Dryer.Option.WrinkleGuard",
        "value": "LaundryCare.Dryer.EnumType.WrinkleGuard.Min60"
      }, {
        "key": "BSH.Common.Option.ProgramProgress",
        "value": 100,
        "unit": "%"
      }, {
        "key": "LaundryCare.Dryer.Option.ProcessPhase",
        "value": "LaundryCare.Dryer.EnumType.ProcessPhase.FinishedAntiCrease"
      }, {
        "key": "BSH.Common.Option.RemainingProgramTimeIsEstimated",
        "value": true
      }]
    },
    "programs": [{
      "constraints": {
        "execution": "selectandstart"
      },
      "key": "LaundryCare.Dryer.Program.Cotton"
    }],
    "selected": {
      "constraints": {
        "access": "read"
      },
      "key": "LaundryCare.Dryer.Program.Cotton",
      "options": [{
        "key": "LaundryCare.Dryer.Option.DryingTarget",
        "value": "LaundryCare.Dryer.EnumType.DryingTarget.CupboardDry"
      }, {
        "key": "LaundryCare.Dryer.Option.Gentle",
        "value": false
      }, {
        "key": "LaundryCare.Dryer.Option.WrinkleGuard",
        "value": "LaundryCare.Dryer.EnumType.WrinkleGuard.Min60"
      }, {
        "key": "BSH.Common.Option.RemainingProgramTimeIsEstimated",
        "value": true
      }]
    }
  }
}

Und get Settings:
2024.03.16 21:37:16 4: WT7YH701: response {
  "data": {
    "settings": [{
      "key": "BSH.Common.Setting.PowerState",
      "value": "BSH.Common.EnumType.PowerState.On"
    }]
  }
}
2024.03.16 21:37:16 5: [HomeConnect_ResponseGetSettings] WT7YH701: get settings response {
  "data": {
    "settings": [{
      "key": "BSH.Common.Setting.PowerState",
      "value": "BSH.Common.EnumType.PowerState.On"
    }]
  }
}
2024.03.16 21:37:16 1: [HomeConnect_ResponseGetSettings] WT7YH701: no settings found


Viele Grüße
Dieter
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 17 März 2024, 10:40:49
@RockFan: klar, set ZZZ_Dump. Wie schon geschrieben, war es etwas zu spät...

Ergebnis: Leider falsche Reihenfolge, die Sachen waren alle noch leer. Außerdem war, den Daten nach zu schließen, noch ein Programm aktiv und die Wäsche noch drin. Das ist auch so eine nette Eigenschaft der Schnittstelle: Wenn ein Programm aktiv ist, kann man nicht abfragen, welche Programme die Kiste kennt.

Wie wirr dieses ganze BSH Interface ist, sieht man in den Daten unter anderem daran, dass der "ProgramProgress", also der Prozentsatz des durchgelaufenen Programms, als "Option" auftaucht.

Es muss (derzeit noch) zuerst get settings ausgeführt werden, dann get programs. Und erst wenn ein Programm ausgewählt wurde, kann man dessen Options abfragen.


@Shadow3561: Ich habe jetzt endlich verstanden, woran das lag - die settings sind nämlich korrekterweise leer, wenn nur "Power Off" erlaubt ist... Sollte jetzt endgültig behoben sein.

LG

pah
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Shadow3561 am 17 März 2024, 11:58:44
Funktioniert.

Leider habe ich ein neues Problem.
Der GS hat eine Taste Favorit. Diese kann man individuell in der App mit Programmen belegen. Bei mir ist dort vorspülen drauf, da es bei uns öfter nötig ist.
Im Modul wird dann auch fein $hash->{programs} mit PreRinse belegt.
Jetzt starte ich den GS per Fernstart wenn die PV genug Leistung bringt mit "set GV startProgram".
Das klappt mit allen Programmen ausser Favorit, da dieses als PreRinse im hash hinterlegt ist.
Bis vor kurzem wurde es noch als Favorit.001 hinterlegt und es gab kein PreRinse.
Ich denke BSH hat dort was verändert.

Nur leider steht es in den readings incl. Prefix.

EDIT:
seit heute ist im tr_DoorState ein Fehler in den Umlauten.
Habe noch einmal die Version von gestern eingespielt, da passt es.
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 20 März 2024, 10:41:37
So, es gibt eine neue Version. Erstens beseitigt diese die ärgerliche Fehlermeldung, falls ein Gerät sofort und ohne vorherige Auswahl einer Verzögerung gestartet werden soll.

Zweitens kann man, wenn man ein User-Attribut extraPrograms mit "attr <device> userattr extraPrograms" anlegt und dieses mit experimentellen Programmnamen wie z.B. "att <device> extraPrograms Favorite.001" belegt, testweise den Aufruf weiterer (eventuell heruntergeladener) Programme ausprobieren.

Allerdings sieht es bisher so aus, dass Favoriten ebenso wie heruntergeladene Programme NUR über die App oder eventuell direkt am Gerät gestartet werden können - nicht über das API.

LG

pah

Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Shadow3561 am 20 März 2024, 11:52:47
ZitatAllerdings sieht es bisher so aus, dass Favoriten ebenso wie heruntergeladene Programme NUR über die App oder eventuell direkt am Gerät gestartet werden können - nicht über das API.

Das trifft so zumindest nicht auf meine Maschine zu.
Die heruntergeladenen Programme lassen sich problemlos über FHEM starten. Nur die Favorit-Taste kann man nicht ansteuern.
Zu Erklärung:
Ist auf die Favorit-Taste ,,PreRinse" gelegt, kann man das Program PreRinse nur starten wenn man selectedProgram PreRinse ausführt.
Über selectedProgram Favorit.001 ist das starten jedoch nicht möglich.

Grüße,
Daniel
Titel: Aw: Ergonomische Version von 48_HomeConnect.pm
Beitrag von: Prof. Dr. Peter Henning am 20 März 2024, 12:42:03
Stimmt, hattest du ja im anderen Thread geschrieben.

LG

pah