Ankündigung

Einklappen
Keine Ankündigung bisher.

Miele @Home mit MQTT

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

  • AndreK
    antwortet
    Hallo jonny7792,

    die korrekte Python-Syntax für if ... then ... else sieht so aus - die Doppelpunkte hinter dem Vergleich sind der Schlüssel. Für solche Tests kann ich Dir das Executor-Plugin empfehlen. Da bekommst Du die Rückgabe und Fehler direkt geliefert. (Erklärungen zur pyhton-Syntax allerdings nicht). Die musst Du dir im Web zusammen suchen.

    Code:
    #!/usr/bin/env python3
    # wmtr.py
    if sh.MieleDevices.Washer.state.status.value_raw() == 7:
       sh.Sonos.Wohnen.play_tts('Die Wäsche ist fertig')
       sh.Sonos.Kueche.play_tts('Die Wäsche ist fertig')
    else:
      pass
    if sh.MieleDevices.Dryer.state.status.value_raw() == 7:
       sh.Sonos.Wohnen.play_tts('Der Trockner ist fertig')
       sh.Sonos.Kueche.play_tts('Der Trockner ist fertig')
    else:
      pass​
    Wobe Du den "else"-Teil auch weglassen kannst.

    Viele Grüße
    Andre

    Nachtrag : Hat sich mit dem letzten Post überschnitten
    Zuletzt geändert von AndreK; 03.04.2023, 13:24. Grund: siehe Nachtrag

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Die Dauerschleife dürfte daher rühren, dass das Item MieleDevices.Washer.state.status.value_localized in der struct mit enforce_updates: True definiert ist. Dadurch wird die Logik bei jedem Update des Items getriggert und nicht nur wenn sich der Wert des Items ändert.

    Weshalb das Item in der struct so definiert ist, müsstest Du den Autor der struct fragen.

    Du kannst das erstmal durch ein Hilfsitem umgehen, welches nicht mit enforce_updates: True​ definiert ist:
    Code:
    MieleDevices:
        Washer:
            type: str
            miele_deviceid: '0001498346xx'
            struct: mieleathome.child​​
            hilfsitem:
                type: str
                eval: sh.MieleDevices.Washer.state.status.value_localized()
                eval_trigger: MieleDevices.Washer.state.status.value_localized
    ​
    und die Logik so formulieren:
    Code:
    if sh.MieleDevices.Washer.hilfsitem() == 'Aus':
        sh.Sonos.Wohnen.play_tts('Die Wäsche ist fertig')

    Einen Kommentar schreiben:


  • jonny7792
    antwortet
    Zitat von Sipple Beitrag anzeigen
    Der Doppelpunkt am Ende der if Zeile fehlt.
    Ja , habe es ergänzt

    Zitat von Sipple Beitrag anzeigen
    ​Das ist der Knackpunkt. Das musst du probieren. Bei mir klappt das nicht, aber ich verwende auch multimedia.audio in der smartVISU.





    Ich habe es nun mal am Laufen und Schaue wie es sich verhält
    DIE Ansage kommt jedoch in Dauerschleife , muss mir das dann mal in Ruhe ansehen
    Zuletzt geändert von jonny7792; 03.04.2023, 11:56.

    Einen Kommentar schreiben:


  • Sipple
    antwortet
    Zitat von jonny7792 Beitrag anzeigen

    Bekomme mit deinem Beispiel einen Syntax Fehler
    Der Doppelpunkt am Ende der if Zeile fehlt.

    Zitat von jonny7792 Beitrag anzeigen
    Msinn

    Was nutzt mir der Autotimer im vorliegenden Fall?

    Der Status wird ja nur bei Programmende durch das Plugin getriggert - dementsprechend sollte keine Dauerschleife zuhören sein oder sehe ich das Falsch?

    ​Das ist der Knackpunkt. Das musst du probieren. Bei mir klappt das nicht, aber ich verwende auch multimedia.audio in der smartVISU.

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Zitat von jonny7792 Beitrag anzeigen
    Was nutzt mir der Autotimer im vorliegenden Fall?
    Das weiss ich nicht. Du hattest nur geschieben, Du wüsstest nicht was autotimer ist/sind.

    Übrigens: if-Statements ohne Doppelpunkt werden IMMER einen Syntax Fehler schmeissen.
    Wenn Du Logiken nutzen willst, musst Du kein Python Guru sein, aber mit dem grundlegenden Python Syntax wirst Du Dich schon auseinander setzen müssen.

    Einen Kommentar schreiben:


  • jonny7792
    antwortet
    Zitat von Sipple Beitrag anzeigen
    An der Endemeldung bastele ich schon ewig immer mal wieder rum, aber es gelingt mir nicht, dass die Meldung EXAKT einmal bei Programmende kommt und dann erst wieder, wenn die Maschine neu durchgelaufen ist.

    Ich bin ja kein SHNG Guru - aber könnte man dort etwas machen mit on change ?

    Sprich erst wenn sie von Status 5 auf 7 springt

    Einen Kommentar schreiben:


  • jonny7792
    antwortet
    Zitat von Sipple Beitrag anzeigen
    Hast du das RAW item im Item Tree drin?
    Ja Das ist vorhanden

    Einen Kommentar schreiben:


  • Sipple
    antwortet
    Hast du das RAW item im Item Tree drin?
    Ich glaube, den hab ich in der plugin.yaml damals selber noch ergänzt, geht aber ganz einfach.

    grafik.png

    plugin.yaml im mieleathome Verzeichnis:

    Code:
    item_structs:
        # Definition of item-structure templates for this plugin (enter 'item_structs: NONE', if section should be empty)
        child:
            name: Vorlage Struktur Miele Geräte
            ident:
                device_type:
                    value_raw:
                       type: num
                       cache: 'on'
                    value_localized:
                        type: str
                        cache: 'on'
                deviceName:
                    type: str
                    cache: 'on'
                deviceIdentLabel:
                    fabNumber:
                        type: str
                        cache: 'on'
                    fabIndex:
                        type: str
                        cache: 'on'
                    techType:
                        type: str
                        cache: 'on'
                    matNumber:
                        type: str
                        cache: 'on'                  
                xkmIdentLabel:
                    techType:
                        type: str
                        cache: 'on'
                    releaseVersion:
                        type: str
                        cache: 'on'
            state:
                ProgramID:
                    value_localized:
                        type: str
                        cache: 'on'
                status:
                    value_localized:
                        type: str
                        cache: 'on'
                        enforce_updates: yes                    
                    value_raw:
                        type: num
                        cache: 'on'                
                        enforce_updates: yes
    Leider funktionieren die Fettdruck und Farbattribute im Code Block nicht. Ganz unten, die letzten vier Zeilen an genau der Stelle einfügen, falls nicht vorhanden. Wobei man streiten kann, ob enforce_updates: yes da nötig oder sogar kontraproduktiv ist. An der Endemeldung bastele ich schon ewig immer mal wieder rum, aber es gelingt mir nicht, dass die Meldung EXAKT einmal bei Programmende kommt und dann erst wieder, wenn die Maschine neu durchgelaufen ist.
    Zuletzt geändert von Sipple; 03.04.2023, 11:32.

    Einen Kommentar schreiben:


  • jonny7792
    antwortet
    Zitat von Sipple Beitrag anzeigen
    if sh.MieleDevices.Washer.state.status.value_raw() == 1 sh.Sonos.Wohnen.play_tts('Die Wäsche ist fertig')

    Code:
    2023-04-03 12:18:59 ERROR lib.logic Exception: invalid syntax (wmtr.py, line 3)
    > Traceback (most recent call last):
    > File "/usr/local/smarthome/lib/logic.py", line 1034, in _generate_bytecode
    > self.bytecode = compile(code, self.pathname, 'exec')
    > File "/usr/local/smarthome/logics/wmtr.py", line 3
    > if sh.MieleDevices.Washer.state.status.value_raw() == 7
    > ^
    > SyntaxError: invalid syntax
    Bekomme mit deinem Beispiel einen Syntax Fehler

    Code:
    #!/usr/bin/env python3
    # wmtr.py
    if sh.MieleDevices.Washer.state.status.value_raw() == 7
       sh.Sonos.Wohnen.play_tts('Die Wäsche ist fertig')
       sh.Sonos.Kueche.play_tts('Die Wäsche ist fertig')
    if sh.MieleDevices.Dryer.state.status.value_raw() == 7
       sh.Sonos.Wohnen.play_tts('Der Trockner ist fertig')
       sh.Sonos.Kueche.play_tts('Der Trockner ist fertig')



    Msinn

    Was nutzt mir der Autotimer im vorliegenden Fall?

    Der Status wird ja nur bei Programmende durch das Plugin getriggert - dementsprechend sollte keine Dauerschleife zuhören sein oder sehe ich das Falsch?

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Schau mal in die Doku. autotimer ist eines der Standard-Attribute von Items.

    Die Doku Suche ist hier Dein Freund: https://smarthomeng.github.io/smarthome/search.html?q=autotimer

    Einen Kommentar schreiben:


  • jonny7792
    antwortet
    Hallo Sipple

    Was meinst du mit autotimer , stehe gerade etwas auf dem Schlauch

    Teste es nachher die kiddies schlafen

    Einen Kommentar schreiben:


  • Sipple
    antwortet
    Du wirst außerdem die Logik erweitern müssen, um z.B. ein Hilfsitem mit einem Autotimer, damit du die Meldung über dein Sonos nicht ununterbrochen bekommst oder zumindest jedesmal, wenn du in der Visu eine Seite wechselst.

    Einen Kommentar schreiben:


  • Sipple
    antwortet
    Guten Morgen

    Versuche mal das

    Code:
    if sh.MieleDevices.Washer.state.status.value_localized() == 'Aus'
       sh.Sonos.Wohnen.play_tts('Die Wäsche ist fertig')
    Oder du verwendest gleich die Raw Values anstatt den Strings.

    Code:
    if sh.MieleDevices.Washer.state.status.value_raw() == 1
       sh.Sonos.Wohnen.play_tts('Die Wäsche ist fertig')


    Wobei der 'Aus' Status vielleicht eh nicht genau das ist, was du willst, weil die Waschmaschine sich ja nicht von selbst ausschaltet (und falls doch, dann mit SEHR großer Verzögerung). Der 'Ende' Status mit Raw Value 7 ist wohl eher das, was du suchst.

    Ich hab mir damals mal die ganzen Status Werte aufgeschrieben. Ohne Anspruch auf Vollständigkeit:

    Code:
    MieleDevices.Dryer.state.status.value_localized
    MieleDevices.Dryer.state.status.value_raw
    
    MieleDevices.Washer.state.status.value_localized
    MieleDevices.Washer.state.status.value_raw
    
    1 = OFF
    2 = ON
    3 = PROGRAMMED
    4 = PROGRAMMED WAITING TO START
    5 = RUNNING
    6 = PAUSE
    7 = END PROGRAMMED
    8 = FAILURE
    9 = PROGRAMME INTERRUPTED
    10 = IDLE
    11 = RINSE HOLD
    12 = SERVICE
    13 = SUPERFREEZING
    14 = SUPERCOOLING
    15 = SUPERHEATING
    146 = SUPERCOOLING_SUPERFREEZING
    255 = NOT_CONNECTED
    
    MieleDevices.Dryer.state.programPhase.value_localized
    MieleDevices.Dryer.state.programPhase.value_raw
    
    512 = <NULL>
    514 = Trocknen
    515 = Mangelfeucht
    516 = Bügelfeucht 2
    517 = Schranktrocken
    518 = Schranktrocken+
    520 = Bügelfeucht 1
    522 = Ende (Programmende)
    531 = KOMFORTKÜHLEN
    535 = <NULL>
    538 = Leichttrocken
    
    MieleDevices.Washer.state.programPhase.value_localized
    MieleDevices.Washer.state.programPhase.value_raw
    
    256 = <NULL>
    260 = Waschen
    261 = Spülen
    265 = Pumpen
    266 = Schleudern
    267 = KNITTERSCHUTZ
    268 = Ende (Programmende)

    Einen Kommentar schreiben:


  • jonny7792
    antwortet
    Hallo zusammen

    Das Plugin läuft wirklich super danke an Sipple und AndreK

    Wäre es möglich den Status der Waschmaschine oder des Trockners - Insbesondere das Fertig bzw ENDE in einer Logik an Sonos zu übergeben?

    Leider habe ich sehr wenig Erfahrung mit Python Logiken welche einen Text als Wert enthalten.

    Aktuell sieht der Ansatz so aus ist aber nicht lauffähig:


    HTML-Code:
    if sh.MieleDevices.Washer.state.status.value_localized() =Aus
       sh.Sonos.Wohnen.play_tts('Die Wäsche ist fertig')
    Ich habe bereits diverse Formatierungen sei es mit Doppelpunkt u.ä probiert - Jedoch ohne erfolg



    Das Ergebnis der Ausgabe ist folgende:

    HTML-Code:
       Ergebnis der Berechnung des Ausdrucks:   Problem evaluating if (sh.MieleDevices.Washer.state.status.value_localized() =Aus) sh.Sonos.Wohnen.play_tts('Die Wäsche ist fertig'): invalid syntax (<string>, line 1) Datentyp des berechneten Ausdrucks:   str  ​

    Einen Kommentar schreiben:


  • jonny7792
    antwortet
    Zitat von Sipple Beitrag anzeigen
    Ich bin grad etwas geflasht von der Tatsache, dass es ne Standard-Miele-Waschmaschine mit Drehstromversorgung gibt.
    Das letzte mal wo ich so geschaut habe, war, als wir den Haushalt meines Onkles in den USA aufgelöst haben und der Trockner dort - Achtung - GAS betrieben war.
    Das habe ich ja noch nie gehört ein Trockner mit Gas

    Ja hier gibt es auch noch die sogenannte Spitzensperrung - dies Bedeutet der Versorger schaltet Waschmaschine, Trockner und diverse Geräte zum effizienten Netzbetrieb zeitweise ab.

    Zuletzt geändert von jonny7792; 03.04.2023, 10:14.

    Einen Kommentar schreiben:

Lädt...
X