Ankündigung

Einklappen
Keine Ankündigung bisher.

Home-Connect | 2nd

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Ich habe übrigens auch noch einen bislang unveröffentlichten Home Connect LBS bei mir am Start, welcher generisch funktioniert, d.h. grundsätzlich alle Gerätetypen unterstützt und für jedes Gerät einen Ausgang hat, an dem ein JSON ausgegeben wird, welches den aktuelles Status des Geräts repräsentiert inkl. der Daten des Event Streams, den Homeconnect für jedes Gerät bereitstellt. Über 2 Eingänge, können auch Settings und Programme geändert/gestartet werden. Das ganze läuft bei mir seit ca.1,5 Jahren bei mir ganz stabil, allerdings nur mit Waschmaschine und Kaffeemaschine. Hatte das aufgrund des anderen HomeConnect LBS nicht veröffentlicht, aber falls jetzt die Diskussion neu aufgerollt wird, kann ich hier gerne etwas beitragen. Vielleicht kann man ja auch aus den 3 Ansätzen EINE Lösung machen.

    Kommentar


      Bei mir wären ein Backofen und ein Wäschetrockner am Start.

      Kommentar


        jonofe wir sollten uns mal unterhalten.... Ich hab da einen ähnlichen Ansatz wie Dariusz, also einen connect LBS mit SSE Ausgang. Dann für jeden Gerätetyp einen LBS der die SSE vom "Haupt LBS" empfängt. Senden der Werte macht jeder LBS für sich, auch die erste initialisierung aller Werte macht jeder Geräte LBS einzeln. Kann ja doch mal sein, das einer 2 Saugroboter hat


        Unbenannt.png
        Angehängte Dateien
        Zuletzt geändert von vento66; 27.12.2021, 22:38.

        Kommentar


          Bei meiner Lösung ist die Anzahl und Art der Geräte egal. Der LBS macht die Kommunikation (API + SSE) für alle Geräte. Und gibt auch alle Daten in je ein JSON pro Gerät aus (hier für max 10 Geräte):

          edomi.png
          A7 ist die Kaffeemaschine
          A8 ist die Waschmaschine

          und ein Beispiel-JSON der Kaffeemaschine sieht so aus:
          Code:
          {
          "name": "Kaffeevollautomat",
          "brand": "Siemens",
          "vib": "TI9575X1DE",
          "connected": true,
          "type": "CoffeeMaker",
          "enumber": "TI9575X1DE/10",
          "haId": "SIEMENS-TI9575X1DE-68A40E2B01A1",
          "states": {
          "BSH.Common.Status.OperationState": {
          "name": "Betriebsstatus",
          "value": "BSH.Common.EnumType.OperationState.Inactive",
          "displayvalue": "Inaktiv"
          },
          "BSH.Common.Status.RemoteControlStartAllowed": {
          "name": "Fernstart",
          "value": true
          },
          "BSH.Common.Status.LocalControlActive": {
          "name": "Lokale Bedienung aktiv",
          "value": false
          },
          "ConsumerProducts.CoffeeMaker.Status.BeverageCount erRistrettoEspresso": {
          "name": "Anzahl Ristretto & Espresso",
          "value": 261
          },
          "ConsumerProducts.CoffeeMaker.Status.BeverageCount erCoffee": {
          "name": "Anzahl Kaffeegetränke",
          "value": 11
          },
          "ConsumerProducts.CoffeeMaker.Status.BeverageCount erCoffeeAndMilk": {
          "name": "Anzahl Kaffee-Milch-Spezialitäten",
          "value": 2656
          },
          "ConsumerProducts.CoffeeMaker.Status.BeverageCount erFrothyMilk": {
          "name": "Anzahl Milchschaum",
          "value": 79
          },
          "ConsumerProducts.CoffeeMaker.Status.BeverageCount erHotMilk": {
          "name": "Anzahl warme Milch",
          "value": 10
          },
          "ConsumerProducts.CoffeeMaker.Status.BeverageCount erHotWater": {
          "name": "Menge Heißwasser",
          "value": 13993
          },
          "ConsumerProducts.CoffeeMaker.Status.BeverageCount erPowderCoffee": {
          "name": "Anzahl Getränke mit Kaffeepulver",
          "value": 1
          },
          "BSH.Common.Status.DoorState": {
          "name": "Tür",
          "value": "BSH.Common.EnumType.DoorState.Closed",
          "displayvalue": "Geschlossen"
          }
          },
          "settings": {
          "BSH.Common.Setting.ChildLock": {
          "name": "Kindersicherung",
          "value": false
          },
          "BSH.Common.Setting.PowerState": {
          "name": "Energiezustand",
          "value": "BSH.Common.EnumType.PowerState.Standby",
          "displayvalue": "Standby"
          }
          },
          "availablePrograms": {
          "ConsumerProducts.CoffeeMaker.Program.Beverage.Ris tretto": {
          "name": "Ristretto"
          },
          "ConsumerProducts.CoffeeMaker.Program.Beverage.Esp ressoDoppio": {
          "name": "Espresso doppio"
          },
          "ConsumerProducts.CoffeeMaker.Program.Beverage.Esp resso": {
          "name": "Espresso"
          },
          "ConsumerProducts.CoffeeMaker.Program.Beverage.Esp ressoMacchiato": {
          "name": "Espresso Macchiato"
          },
          "ConsumerProducts.CoffeeMaker.Program.Beverage.Cof fee": {
          "name": "Caffè Crema"
          },
          "ConsumerProducts.CoffeeMaker.Program.Beverage.Cap puccino": {
          "name": "Cappuccino"
          },
          "ConsumerProducts.CoffeeMaker.Program.Beverage.Lat teMacchiato": {
          "name": "Latte Macchiato"
          },
          "ConsumerProducts.CoffeeMaker.Program.Beverage.Caf feLatte": {
          "name": "Milchkaffee"
          },
          "ConsumerProducts.CoffeeMaker.Program.Beverage.Mil kFroth": {
          "name": "Milchschaum"
          },
          "ConsumerProducts.CoffeeMaker.Program.Beverage.War mMilk": {
          "name": "Warme Milch"
          },
          "ConsumerProducts.CoffeeMaker.Program.Beverage.XLC offee": {
          "name": "Kaffee XL"
          },
          "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld. CafeCortado": {
          "name": "Café cortado"
          },
          "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld. FlatWhite": {
          "name": "Flat White"
          },
          "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld. Americano": {
          "name": "Americano"
          },
          "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld. KleinerBrauner": {
          "name": "Kleiner Brauner"
          },
          "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld. GrosserBrauner": {
          "name": "Großer Brauner"
          },
          "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld. Verlaengerter": {
          "name": "Verlängerter"
          },
          "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld. VerlaengerterBraun": {
          "name": "Verlängerter braun"
          },
          "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld. WienerMelange": {
          "name": "Wiener Melange"
          },
          "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld. Cortado": {
          "name": "Cortado"
          },
          "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld. CafeConLeche": {
          "name": "Café con leche"
          },
          "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld. CafeAuLait": {
          "name": "Café au lait"
          },
          "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld. Kaapi": {
          "name": "Kaapi"
          },
          "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld. KoffieVerkeerd": {
          "name": "Koffie verkeerd"
          },
          "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld. Galao": {
          "name": "Galão"
          },
          "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld. Garoto": {
          "name": "Garoto"
          },
          "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld. RedEye": {
          "name": "Red Eye"
          },
          "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld. BlackEye": {
          "name": "Black Eye"
          },
          "ConsumerProducts.CoffeeMaker.Program.CoffeeWorld. DeadEye": {
          "name": "Dead Eye"
          }
          },
          "lastError": {
          "key": "SDK.Error.UnsupportedOperation",
          "error": "Operation not supported for HomeAppliance type CoffeeMaker",
          "timestamp": "27.12.2021 - 23:10:28"
          }
          }
          Damit kommt man relativ einfach per JSON Extractor an alle Daten ran. Man kann sich vorstellen Gerätespezifische LBS zu haben, welche auf der Inputseite das JSON annehmen und auf Gerätespezifische Ausgänge geben und zusätzliche Ausgänge haben, welche wieder den zentralen LBS mit gerätespezifischen Commands und Settings versorgen. Da ich bislang aber nicht viele Anwendungsfälle habe, habe ich da noch nichts gemacht.

          Kommentar


            Und wie initialisierst du die Geräte? Sind ja je nach Gerätetyp bis zu 6 Anfragen x14 Gerätetypen… Keine Ahnung, aber Du bist da mehr der json Fan, ich kann dem Befehle senden mittels Json im Moment nicht viel abgewinnen, da brauchts ja doch wieder einen LBS, der das Gerätespezifisch zusammenbaut. Bei mir greift jeder LBS, auf den Token zu, und kümmert sich selbstständig asynchron zum SSE und anderen parallel laufenden LBS. Find das irgendwie sympathischer.
            Zuletzt geändert von vento66; 27.12.2021, 23:41.

            Kommentar


              Aber wir können das eigentlich auch ganz einfach machen: Lad den LBS hoch, und ich spar mir den restlichen Aufwand. Ist ja nicht so, das ich nicht noch andere Baustellen hätte

              Kommentar


                Zitat von vento66 Beitrag anzeigen
                Und wie initialisierst du die Geräte? Sind ja je nach Gerätetyp bis zu 6 Anfragen x16 Gerätetypen
                Stimmt. Zuerst wird die Liste der Geräte abgerufen und dann je Gerät die 6 API Calls wie in den "Best practices" der API Doku beschrieben. Die wenigsten werden ja 16 Geräte haben

                Zitat von vento66 Beitrag anzeigen
                da brauchts ja doch wieder einen LBS
                Nicht zwangsläufig. Ich hole mir nur wenige Infos raus und ehrlich gesagt wird ja kaum einer die Geräte wirklich via EDOMI bedienen, den Hauptanwendungsfall würde ich bei der Statusüberwachung/Visualisierung sehen.

                Zitat von vento66 Beitrag anzeigen
                kann dem Befehle senden mittels Json
                bei mir wird nur der Status in ein JSON ausgegeben. Befehle sind im Format haid|command|option1|option2.

                Ich denke insgesamt sind das zwei komplett unterschiedliche Konzepte.

                Kommentar


                  Ja beim Kühlschrank etc sicher, beim Saugroboter mag es anders ausschauen, aber wie gesagt, stell deinen in den DL, und fertig. Da wissen wir wenigstens das er funktioniert…

                  Kommentar


                    Zitat von vento66 Beitrag anzeigen
                    Aber wir können das eigentlich auch ganz einfach machen: Lad den LBS hoch, und ich spar mir den restlichen Aufwand.
                    Ich könnte mir vorstellen, dass die meisten hier spezifische LBSe für Einzelgeräte bevorzugen würden, da man dort die Daten direkt mundgerecht serviert bekommt.

                    Zitat von vento66 Beitrag anzeigen
                    Ist ja nicht so, das ich nicht noch andere Baustellen hätte
                    da bist du nicht der einzige

                    Aber ich denke die Diskussion macht schon Sinn ... vielleicht gibt es ja noch Feedback von den potentiellen Nutzern.

                    Kommentar


                      Ich habe hier WaMa und Geschirrspüler mit HomeConnect im Einsatz. Wenn ich es mir aussuchen könnte fände ich einen separaten LBS pro Gerät am besten - käme aber auch mit einem generischen LBS und diversen Status-Jsons zurecht. Für mich wäre ohnehin nur der Status interessant. Das funktioniert zwar aktuell auch mit der HomeConnect-App recht zuverlässig, aber schöner wäre es schon alles via Telegram selbst zu implementieren. Würde der LBS dann z.B. beim Fertigstellen des WaMa-Programms getriggert oder müsste der Status regelmäßig gepullt werden?

                      Danke euch für eure Engagement!
                      Gruß,
                      Matthias

                      Kommentar


                        Die Werte kommen in Echtzeit, ist die gleiche Schnittstelle wie deine App. Geht ohne pullen.

                        Kommentar


                          gelöscht
                          Zuletzt geändert von luck789; 28.12.2021, 18:10.

                          Kommentar


                            Also ich für meinen Teil werd da jetzt mal nicht weiter machen, bis sich hier eine Richtung aufzeigt.....
                            Ich finds nur interessant, wo jetzt auf einmal die ganzen LBS aus der Versenkung auftauchen.... Vielleicht sollte ich auch mehr LBS für mich behalten!
                            Daran das es schon einen fast funktionierenden LBS gab, kann es eigentlich nicht liegen, für andere Funktionen werden ohne Skrupel gefühlte 100 LBS veröffentlicht


                            Man hätte ja auch mal mit dariusz in Kontakt treten können... Ich werde auf alle Fälle aus diesem LBS nichts übernehmen, da er Dariusz sein Werk ist, auch wenn Du da drinn rumgefummelt hast.

                            Ausserdem, komm ich mit 600 zeilen und ohne diese extra Klasse aus.
                            Zuletzt geändert von vento66; 28.12.2021, 11:41.

                            Kommentar


                              Übrigens hatte ich gerade ein Telefonat mit Dariusz. Er ist auch an einer funktionierenden Version eines LBS interessiert. Leider ist er gerade etwas verhindert, um sich selber darum zu kümmern. Was habe ich dabei festgestellt? Fernzugriff auf andere Geräte funktioniert nicht so wie ich es mir gedacht habe. Wenn der andere User eine Applikation einrichtet, und mich als Testuser einträgt, sehe ich genau "Trommelwirbel" meine Geräte . Hat es schon mal jemand geschaft auf die Simulatoren in seinem Account zuzugreifen?

                              Kommentar


                                vento66
                                ​​​​​​​Ich hab mich vielleicht missverständlich ausgedrückt, aber es ging mir nur um den Status-LBS.
                                Egal, ich find deine Reaktion nicht nett, auch wenn ich nachvollziehen kann wieso und das durchaus respektiere.
                                Bist du bitte so nett und löscht die VSE 1006 und VSE 1009 aus dem Download Portal, da hab ich die Idee und das Grundgerüst von jemand anderem verwendet.

                                Danke

                                Kommentar

                                Lädt...
                                X