Ankündigung

Einklappen
Keine Ankündigung bisher.

Anbindung Haushaltsgeräte (Waschmaschine)

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

    Anbindung Haushaltsgeräte (Waschmaschine)

    Da bei uns heute gerade die Waschmaschine kaputt gegangen ist, muss kurzfristig eine Neue her. Idealerweise natürlich "Smart". Allerdings habe ich nach kurzer Recherche festgestellt, das es kein SHNG-Plugin für verschiedene Hersteller gibt, sondern über MQTT o.ä. implementiert werden muss. Da ich nur begrenzt Zeit habe, mich mit den diversen OEM-Herstellermethoden und Integrationslösungen zu befassen (Frau will / braucht sofort Ersatz....) wäre ich um etwas Input dankbar, welche Herstellerlösungen sich mit 'Smart Home' im Allgemeinen bzw. SHNG im speziellen gut umsetzen lassen.

    Bei Miele gibt es "WiFiConn@ct"
    Bei Samsung gibt es "WifiSmart"
    Bei LG "Tag On NFC"
    Bei Bosch, Siemens (BSH) "HomeConnect"

    Irgendjemand der hier eine Empfehlung aussprechen kann?

    Gruss
    Marcus

    #2
    Das hängt auch noch von Deinen weiteren Anforderungen ab. Möchtest Du eine Cloud dazwischen haben?

    Bei Miele z.B. habe ich das so verstanden, dass WiFiConn@ct nur das Modul im Haushaltsgerät ist, welches sich über WLAN mit der Miele Cloud verbindet. Die Miele Cloud hat ein API (https://www.miele.com/developer/swagger-ui/index.html), welches man sicherlich (wenn sich jemand findet der das tut) in ein Plugin gießen könnte.

    Prinzipielles Interesse hatte hie im Forum auch schon jemand anders signalisiert. Die Implementierung scheint jedoch nicht gerade simpel zu sein: https://knx-user-forum.de/forum/supp...-home-mit-mqtt

    Ein direkter Zugriff auf die Haushaltsgeräte von Miele ohne deren Cloud ist nach meinem Verständnis nicht möglich (da von Miele nicht dokumentiert).

    Bei Bosch/SIemens handelt es sich auch um einer Cloud Lösung, die in anderen Foren keine Begeisterungsstürme in Bezug auf Integration in Smarthome Lösungen produziert.

    Zitat aus dem Symcon Forum:
    Da bezahlt man Großunternehmen wie Bosch Hunderte von Euro`s mehr! Damit man sich erhofft, dass ganze in eine Haussteuerung einzubauen zu können.
    Und dann stößt man an Grenzen die es einem als Privatem unmöglich machen das ganze Ordentlich umzusetzen.
    Und wir "Die Dummen User" stecken eine Menge Zeit an unseren Wochenenden rein, um etwas hinzubekommen damit es wenigstens ein bisschen funktioniert.
    Für die anderen 2 Hersteller kann ich das im Moment nicht sagen. Das müsste ich recherchieren.
    Viele Grüße
    Martin

    There is no cloud. It's only someone else's computer.

    Kommentar


      #3
      Eine Anbindung ohne Cloud wäre mir lieber, aber anscheinend wird das meist nicht unterstützt. Bisher habe ich nur Cloudlösungen gefunden

      Was ich in den letzten Stunden herausgefunden habe:
      - Bei Miele scheint es eine funktionierende Bridge zu geben https://github.com/oklona/Miele-MQTT
      - Bosch Siemens scheint mit IFTTT zu kommunizieren
      - Für Samsung gibts eine Smartthings-Mqtt-Bridge: https://github.com/stjohnjohnson/sma...gs-mqtt-bridge

      Ich möchte keinen dazu animieren für mich zu recherchieren (Danke Martin für das Angebot!) - ich dachte nur evtl. gibts hier schon Erfahrungswerte innerhalb der SHNG Community mit Waschmaschiene, Trockner & Co....

      Gruss
      Marcus

      Kommentar


        #4
        Zitat von SMarcus Beitrag anzeigen
        - Bei Miele scheint es eine funktionierende Bridge zu geben
        Diese Bridge wird in dem von mir verlinkten Artikel erwähnt/diskutiert. Die Bridge ist jedoch in PHP geschrieben, so dass man einen Rechner bräuchte, der eine PHP Installation hat um Miele -> Bridge -> MQTT -> SmartHomeNG zu realisieren. Das ist eher umständlich und fehleranfällig.

        Prinzipiell wäre es möglich eine Anbindung an die Miele Cloud in Python zu programmieren (da Miele das API veröffentlicht hat). Allerdings hat
        whe das so kommentiert:
        Zitat von whe Beitrag anzeigen
        das habe ich schon vor Monaten durchforstet; um dies umzusetzen benötigt man aber höhere Weihen.
        Ist m.E. nur verständlich für Entwickler und Security Profis.
        Es ist also eher zeitintensiv. Allerdings kann man den PHP Code zum Abgucken/als Vorlage benutzen.

        Für die MQTT Bridge Samsung Anbindung ist als Docker Container implementiert. Du würdest also einen Rechner mit Docker Installation benötigen. Den Code zu "recyclen" ist eher schwierig. (Es sei denn Du beherrschst Groovy).
        Viele Grüße
        Martin

        There is no cloud. It's only someone else's computer.

        Kommentar


          #5
          Das mit dem PHP für Miele ist ein guter Hinweis. Hätte ich übersehen. Fällt damit weg. Ich tendiere dazu Docker auf einem separaten Raspi zu installieren (der ohnehin schon meine Landroid-Worx Bridge beheimatet) und auf diesem dann auch die Samsung MQTT Bridge installieren.

          Ich werde mal berichtet wie das so klappt. Danke erstmal.

          Gruss
          Marcus

          Kommentar


            #6
            Hatte auch früher das Miele Script bei mir laufen aber hatte eher Probleme damit!
            Inzwischen nutze ich einen NodeRed Flow und übergebe es dann an MQTT weiter:
            https://flows.nodered.org/flow/32ab5...86fd40bfa0835a
            Starten geht auch!

            Flow.PNG
            Zuletzt geändert von aleladata; 22.06.2020, 18:37.

            Kommentar


              #7
              Habt ihr von diesem Teil schon mal gehört?
              http://www.eb-systeme.de/?page_id=2872
              Da gibts ein Gateway, so kann man es angeblich ins KNX bringen, habe es aber noch nicht ganz durchblickt, für uns auch intressant da wir im Herbst auch eine neue Küche mit Miele Geräten bekommen.
              Hat da hier jemand schon Erfahrung damit gemacht?
              Lg Lukas

              Kommentar


                #8
                Das Miele Gateway sieht interessant aus, ist aber mit 350 Eur auch schon die halbe Waschmaschine (klar, KNX). Lohnt sich wahrscheinlich erst wenn man eine Komplettausstattung mit Miele hat. Aber sicherlich gut mal zu hören ob es hier Erfahrung mit dem Gateway gibt.

                Wir haben uns für eine Samsung mit WIFI Smart Control entschieden. Die muss aber erst noch geliefert werden (liegt bestimmt an der Wirtschaftskrise....). Die Einbindung sollte über die 'Smart Things' Cloud funktionieren, die eine OAuth abgesicherte REST API bereitstellt: https://github.com/bradymholt/smartthings-rest-api. So wie ich das verstanden habe geht das bei Samsung Grossgeräten auch ohne den 'Smart Hub'. Falls nicht ist der Hub bei 90 Eur.

                Für jemanden der wenig Erfahrung mit dem Thema hat (wie z.B. mich) wird die Einbindung in SHNG sicher nicht einfach, aber ich fange mal an das über eine Logik abzubilden (Plugins sind für mich noch 2 Stufen zu hoch) und vielleicht krieg ich hier im Forum ja etwas Unterstützung wenn ich irgendwo nicht weiterkomm.

                Gruss
                Marcus

                Kommentar


                  #9
                  Zitat von SMarcus Beitrag anzeigen
                  Komplettausstattung mit Miele hat
                  ja eben wir hätten eine Komplettausstattung von Miele, da würde es sich schon lohnen das Gateway XGW3000. Nur habe ich bis Dato wenig im Internet gefunden. Ich bekomme Montag oder Dienstag einen Anruf von Miele, wenn ich mehr weiß kann ich Infos weitergeben.

                  Lg Lukas

                  Kommentar


                    #10
                    Kurzes Update: Das geht einfacher als gedacht bei Samsung (ohne Docker, MQTT oder Groovy), aber wie schon vorher bekannt nur über eine cloud. Die Samsung Waschmaschinen (wie auch andere Geräte) kann man auch ohne einen Smart Things Hub über eine Rest API ansprechen, sofern die Waschmaschine über WiFi an der 'Smart Things' Cloud angemeldet ist.

                    Die API ist vollständig beschrieben:
                    https://smartthings.developer.samsun...ef/st-api.html

                    Da das Ganze über OAuth 2.0 abgesichert ist, wird ein 'Personal access TOKEN' benötigt (https://account.smartthings.com/tokens).
                    Die entsprechende "deviceId" für die Waschmaschine bekommt man über
                    Code:
                    curl -v -H "Authorization: Bearer TOKEN" https://api.smartthings.com/v1/devices
                    Mangels Python Kenntnissen hat es bei mir nur zu einer Logik gereicht, mit der ich die Items in SHNG befülle - aber es klappt zumindest.
                    In der jetzigen Version wird nur der Status abgefragt, theoretisch kann man das auch erweitern um die Waschmaschine zu programmieren und einzustellen.

                    Unbenannt.JPG


















                    Die entsprechende yaml:

                    Code:
                    smartthings:
                        token: "420e80cb-b023-4d1f-bfdc-xxxxxxxxxxxxx"
                        
                        waschmaschine:
                            name: Samsung WW81M642OPW
                            device_id: "655bc73b-885f-7f98-87dd-xxxxxxxxxxxx"
                            
                            status:
                            
                                machineState:
                                    # Options 'machineState: {run: "In Betrieb", pause: "Pause", stop: "Stop"}
                                    # Options 'switch': {on: "Eingeschalten", off: "Ausgeschalten"}
                                    name: Maschinenstatus
                                    type: str
                                    
                                washerJobState:
                                    # Options 'washerJobState: {none: "", weightSensing: "Gewichtserkennung Wäsche", wash: "Waschen", rinse: "Spülen", spin: "Schleudern", finish: "Fertig"}
                                    name: Betriebsstatus
                                    type: str
                                    
                                washerMode:
                                    # Options 'supportedCourses': {D0: "Baumwolle", D1: "Baumwolle (Eco)", D2: "Pflegeleicht", D3: "Feinwäsche", D4: "Spülen + Schleudern", D5: "Abpumpen/Schleudern", D6: "XXL-Wäsche", D7: "Outdoor", D8: "Wolle", D9: "Dunkle Wäsche",DA: "Energiesparen", DB: "Super Speed", DC: "Schnelle Wäsche"}
                                    name: Waschprogramm
                                    type: str
                    
                                washerWaterTemperature:
                                    name: Gewählte Waschtemperatur
                                    type: str
                                    
                                RinseCycles:
                                    name: Gewählte Spülgänge
                                    type: num
                                    
                                WasherSpinLevel:
                                    name: Schleuderdrehzahl
                                    type: str
                    
                                completionTime:
                                    name: Zeitpunkt Ende
                                    type: str
                                    
                                remoteControlEnabled:
                                    name: Fernbedienung Aktiv
                                    type: bool
                                    
                                powerConsumption:
                                    name: Stromverbrauch
                                    type: num
                                    database: true
                                                  
                                washerAddwashAlarm:
                                    name: Addwash Alarm
                                    type: bool
                    
                                error:
                                    name: Fehlermeldung
                                    type: str
                    ... und die Logik (ja, ich weiss - Frankenstein-Style):

                    Code:
                    #!/usr/bin/env python3
                    # washing_machine.py
                    # Cycle: 600
                    # Mission: Logik füllt die 'Smart Things' Items der Samsung Waschmaschine über die json.loads methode.
                    # Note:
                    
                    from datetime import datetime
                    import dateutil.parser
                    import requests
                    import json
                    
                    
                    
                    # Configuration holen aus smartthings.yaml:
                    token = sh.smartthings.conf['token']                                                        # 'Smart Things' Personal Access Token
                    device_id = sh.smartthings.waschmaschine.conf['device_id']                                  # 'Smart Things' Device ID der Waschmaschine
                    
                    
                    # Request zusammenstellen & senden
                    headers = {'Authorization': 'Bearer ' + token}
                    url = 'https://api.smartthings.com/v1/devices/' + device_id + '/status'
                    r = requests.get(url, headers=headers)
                    data = r.json()
                    
                    
                    # JSON items definieren
                    switch = data['components']['main']['switch']['switch']['value']
                    switch_dict = {"on": "Eingeschalten", "off": "Ausgeschalten"}
                    machineState = data['components']['main']['washerOperatingState']['machineState']['value']
                    machineState_dict = {"run": "In Betrieb", "pause": "Pause", "stop": "Stop"}
                    washerJobState = data['components']['main']['washerOperatingState']['washerJobState']['value']
                    washerJobState_dict = {"none": "Bereit", "weightSensing": "Wiegen", "wash": "Waschen", "rinse": "Spülen", "spin": "Schleudern", "finish": "Fertig"}
                    washerMode = data['components']['main']['washerMode']['washerMode']['value']
                    washerMode_dict = {"Table_00_Course_D0": "Baumwolle", "Table_00_Course_D1": "Baumwolle (Eco)", "Table_00_Course_D2": "Pflegeleicht", "Table_00_Course_D3": "Feinwäsche", "Table_00_Course_D4": "Spülen + Schleudern", "Table_00_Course_D5": "Abpumpen/Schleudern", "Table_00_Course_D6": "XXL-Wäsche", "Table_00_Course_D7": "Outdoor", "Table_00_Course_D8": "Wolle", "Table_00_Course_D9": "Dunkle Wäsche","Table_00_Course_DA": "Energiesparen", "Table_00_Course_DB": "Super Speed", "Table_00_Course_DC": "Schnelle Wäsche"}
                    washerWaterTemperature = data['components']['main']['custom.washerWaterTemperature']['washerWaterTemperature']['value']
                    washerWaterTemperature_dict = {"none": "unbekannt", "cold": "Kalt", "20": "20°C", "30": "30°C", "40": "40°C", "60": "60°C", "90": "90°C"}
                    RinseCycles = data['components']['main']['custom.washerRinseCycles']['washerRinseCycles']['value']
                    washerSpinLevel = data['components']['main']['custom.washerSpinLevel']['washerSpinLevel']['value']
                    washerSpinLevel_dict = {"rinseHold": "Spülstopp", "noSpin": "Kein Schleudern", "400": "400", "800": "800", "1000": "1000", "1200": "1200", "1400": "1400"}
                    completionTime = data['components']['main']['washerOperatingState']['completionTime']['value']
                    remoteControlEnabled = data['components']['main']['remoteControlStatus']['remoteControlEnabled']['value']
                    washerJobState = data['components']['main']['washerOperatingState']['washerJobState']['value']
                    powerConsumption = data['components']['main']['powerConsumptionReport']['powerConsumption']['value']['energy']
                    washerAddwashAlarm = data['components']['main']['custom.washerAddwashAlarm']['washerAddwashAlarm']['value']
                    error = data['components']['main']['custom.error']['error']['value']
                    error_dict = {None: "Kein Fehler", "4C": "Es wird kein Wasser zugeführt", "4C2": "Wasserzufuhr", "5C": "Es wird kein Wasser abgelassen", "DC": "Die Waschmaschine wird bei offener Tür betrieben", "DC1": "Das Schließen/Öffnen der Gerätetür funktioniert nicht richtig", "DC3": "Das Schließen/Öffnen der AddWash-Tür funktioniert nicht richtig", "OC": "Es ist Wasser übergelaufen", "LC": "Überprüfen Sie den Ablaufschlauch", "LC1": "Überprüfen Sie den Ablaufschlauch", "UB": "Schleudern funktioniert nicht", "3C": "Überprüfen Sie, ob der Motor funktioniert", "3CP": "Prüfen Sie den Pulsatormotor auf seine Funktion", "UC": "Über- oder Unterspannung erkannt", "HC": "Überprüfung der Hochtemperaturheizung", "1C": "Der Wasserstandssensor funktioniert nicht richtig", "8C": "Der MEMS-Sensor arbeitet nicht ordnungsgemäß", "AC": "Überprüfen Sie die Kommunikation zwischen Haupt- und SubPBAs"}
                    
                    
                    
                    # switch & machineState
                    if switch in switch_dict and machineState in machineState_dict:
                        if switch == "on":
                            machineState_out = machineState_dict[machineState]
                        else:
                            machineState_out = switch_dict[switch]
                        sh.smartthings.waschmaschine.status.machineState(machineState_out)
                    else:
                        logger.info(">>> Waschmaschine hat einen unbekannten Status gemeldet ('switch' code {0}, 'machineState' code {1}).".format(switch, machineState))
                    
                    
                    # washerJobState
                    if washerJobState in washerJobState_dict:
                        washerJobState_out = washerJobState_dict[washerJobState]
                        sh.smartthings.waschmaschine.status.washerJobState(washerJobState_out)
                    else:
                        logger.info(">>> Waschmaschine hat einen unbekannten Status gemeldet ('washerJobState' code {0}).".format(washerJobState))
                    
                        
                    # washerMode
                    if washerMode in washerMode_dict:
                        washerMode_out = washerMode_dict[washerMode]
                        sh.smartthings.waschmaschine.status.washerMode(washerMode_out)
                    else:
                        logger.info(">>> Waschmaschine hat einen unbekannten Status gemeldet ('washerMode' code {0}).".format(washerMode))
                    
                        
                    # RinseCycles
                    sh.smartthings.waschmaschine.status.RinseCycles(RinseCycles)
                    
                    
                    # washerWaterTemperature
                    if washerWaterTemperature in washerWaterTemperature_dict:
                        washerWaterTemperature_out = washerWaterTemperature_dict[washerWaterTemperature]
                        sh.smartthings.waschmaschine.status.washerWaterTemperature(washerWaterTemperature_out)
                    else:
                        logger.info(">>> Waschmaschine hat eine unbekannte Waschwasser-Temperatur gemeldet ('washerWaterTemperature' code {0}).".format(washerWaterTemperature))
                    
                        
                    # washerSpinLevel
                    if washerSpinLevel in washerSpinLevel_dict:
                        washerSpinLevel_out = washerSpinLevel_dict[washerSpinLevel]
                        sh.smartthings.waschmaschine.status.WasherSpinLevel(washerSpinLevel_out)
                    else:
                        logger.info(">>> Waschmaschine hat eine unbekannte Schleudervorwahl gemeldet ('washerSpinLevel' code {0}).".format(washerSpinLevel))
                    
                    
                    # remoteControlEnabled
                    sh.smartthings.waschmaschine.status.remoteControlEnabled(remoteControlEnabled)
                    
                    
                    # completionTime
                    completionTime_conv = dateutil.parser.parse(completionTime)
                    sh.smartthings.waschmaschine.status.completionTime(completionTime_conv.strftime('%H:%M'))
                    
                    
                    # powerConsumption
                    sh.smartthings.waschmaschine.status.powerConsumption(powerConsumption)
                    
                    
                    # washerAddwashAlarm
                    sh.smartthings.waschmaschine.status.washerAddwashAlarm(washerAddwashAlarm)
                    
                    
                    # error
                    if error in error_dict:
                        error_out = error_dict[error]
                        sh.smartthings.waschmaschine.status.error(error_out)
                    else:
                        logger.info(">>> Waschmaschine hat einen unbekannten Fehler gemeldet (Error Code {0}).".format(error))

                    Vielleicht kann´s ja jemand brauchen....



                    Gruss
                    Marcus
                    Zuletzt geändert von SMarcus; 01.07.2020, 09:56.

                    Kommentar


                      #11
                      Danke für die Informationen für andere!

                      Zitat von SMarcus
                      PS - Ich musste die Einrückungen im Code hier von Hand nachträglich hinzufügen. Keine Ahnung warum er das nicht übernommen hat. Ich hoffe ich habe da keinen Bug reingebracht
                      Schau mal diesen oben angepinnten Thread


                      Kommentar


                        #12
                        Danke bmx. Der Code oben hat jetzt die richtigen Einrückungen.

                        Kommentar

                        Lädt...
                        X