Miele@Home XKM 3100W Protokollanalyse

Hallo Fonzo

Danke nochmals für den Tipp. Funktioniert super!

Alexa Routienen kannte ich nicht, da die App in der Schweiz nahezu nutzlos ist (da wir 3 Landessprachen haben, stellte Amazon viele Dienste nicht zur Verfügung) weshalb Alexa Einstellungen übers den Browser gemacht werden und dort stehen Routienen nicht zur Verfügung.

Nun tut es wie es soll, wenn Programm beendet wird über Sonos (benutze noch den Polly Service) benachrichtigt.

Gruss Daniel

Hallo zusammen,

so ganz verstehe ich das noch nicht mit der Sprachausgabe. Das bedeutet das ich mich per Alexa benachrichtigen lassen kann wenn zB die Waschmaschine fertig ist?
Also Alexa sagt dann „Waschmaschine ist fertig“?
Und wenn ich frage „wie ist der Status der Waschmaschine?“ dann sagt sie mir die Restzeit an?
Kann mir das gar nicht vorstellen wie das gehen soll…

Ja genau
Die Statusvariable (z.B. Waschmaschine) ist ein Integer Wert welcher verschiedene Werte haben kann, z.B.
1= Aus
5 = in Betrieb
7 = Beendet

Ganz einfach ein Ereignis an diese Variable binden und falls 7 (Beendet) übergeben wird, entweder dem dem Modul von Fonzo über Alexa ausgeben oder wie ich über Polly auf einen beliebigen (oder alle) Sonos Speaker

Schau dir mal das angehängte Bild an, ein Gerät hat viele Variablen.
Habe eine Funktion geschrieben (miele_status.php) welche durch eine Alexa Routiene auferufen wird. Da frage ich „Alexa, Status Waschmaschine“ und zurück kommt, dass sie nicht läuft oder halt läuft im Programm xyz und endet um hh:mm).

Gruss Daniel

Hättest du mal ein Beispiel wie das funktioniert das man den Status der Waschmaschine über Alexa abfragen kann? Stehe da etwas auf dem Schlauch…

  1. Skript anlegen das Dir dann den Text ausgiebt, auf dem Gerät auf dem Du das hören willst

Beispiel:


<?php

$washing_program = GetValueFormatted(24577);
$remaining_time = GetValueFormatted(43944);
$end_time = GetValueFormatted(30561);
$format = 'Die Waschmachine läuft mit dem Programm %s, die verbleibende Restlaufzeit ist %s, das Programm ist um %s beendet.'; 
$text = sprintf($format, $washing_program, $remaining_time, $end_time);
ECHOREMOTE_TextToSpeech(24448, $text);

  1. In der Alexa Instanz das Skript als Szene zuweisen und einen Namen für die Szene vergeben, z.B. Waschmaschinen Status

  2. In der Alexa App eine Alexa Routine anlegen.

[ul]
[li]Routinennamen vergeben z.B. Waschmaschinen Status
[/li][li]Wenn Folgendes passiert Stimme auswählen und Redewendung festlegen z.B. wie ist der Status der Waschmaschine
[/li][li]Aktion hinzufügen -> Smart Home -> Szene steuern, hier die Szene aus IP-Symcon auswählen
[/li][/ul]

Wenn Du dann die Redewendung aussprichst solltest Du eine Antwort bekommen. Das geht grundsätzlich mit allen Geräten in IP-Symcon, nicht nur der Waschmaschine. Was Du Dir dann ansagen lässt, ist beliebig und nur Dir individuell überlassen.

Ansonsten müsstet Du mal schreiben an welcher Stelle es bei Dir hängt bzw. wo Du nicht weiter kommst.

  1. ich habe ein einfaches Script erstellt (meine PHP Kenntnisse sind auf Anfängerniveau)
// das Script wird von einer Alexa Routine getriggert. Routinen können nur in der App bearbeitet werden

// Statuswerte
// 1 = Aus
// 5 in Betrieb
// 7 Ende



// läuft die Waschmaschine?
if (GetValue(58001) == 5) 
    {
        $programm = GetValue(47234);
        $time = Date( 'H:i', GetValue(23916));
        sleep(2);
        SNS_PlayFiles(18073 , json_encode(array(POLLY_saveMP3(54228,"Die Waschmaschine läuft im Programm " . $programm . " und endet um " . $time . " Uhr"))),25);
    }
else
    {
        sleep(2);
        SNS_PlayFiles(18073 , json_encode(array(POLLY_saveMP3(54228,"Die Waschmaschine läuft nicht"))),25);
    }

  1. unter der IPS ALexa Instanz eine neue Szene erstellen

  2. mit der Alexa Mobile App eine neue Routine erstellen:
    Ich habe die „Status Waschmaschine“ genannt. Wenn „Sprachbefehl“ dann…über Smarthome die soeben erstellte Szene auswählen

Voilà

Wie gesagt, ich habe Alexa nur über Sonos und nutze das SONOS Modul kombiniert mit dem Polly Modul (Polly ist die hübesche Schwester von Alexa bei Amazon) für die Sprachausgabe (ersichtlich im Script oben).
Den „sleep(2)“ habe ins Script eingebaut weil Alexa nach dem Sprachbefehl noch 1-2 Sekunden sehr leise ist. Somit höre ich den Anfang der Meldung „die Waschmaschine läuft im Programm xxx und endet um hh:mm“ nur sehr leise.

Wenn du Sprachausgabe direkt an einen Echo senden willst, musst du meines Erachtens das AEcho Modul von Fonzo verwenden. Habe es nicht installiert aber Fonzo beschreibt die einzelnen Schritte sehr gut. Damit ist das Polly Modul nicht mehr nötig.

Hilft dir das?

Vielen Dank für Eure Beispiele! Ich werde mal versuchen mich da durchzukämpfen und das bei mir zu realisieren.

Hallo Demel,
ich bekomme im Webfront fast ausschließlich folgende Warnungen angezeigt - kannst Du damit etwas anfangen? Was bedeutet das?

LG Dennis.

Hallo Demel
leider nicht, Error 203 bei MIele habe ich bei Google nicht gefunden.

Hast du den Miele@home Account erstellt (z.B. über dein Smarthome) und hast du dann Benutzername/Passwort korrekt im Modul eingetragen (siehe Beilage).

Nach Eingabe der NUtzerdaten prüfen, ob die funktionieren. Das kann in der Instanz sehr gut gemacht werden. Falls die Werte stimmen, wird dir angezeigt, dass es x Geräte gefunden hat.

Gruss Daniel

Hallo,

ich habe gerade erst den Post gesehen. Besteht das Problem noch?
ich sehe. das in der UrL nach dem Parameter „language“ nichts steht. Hast Du die Sprache korrekt eingestellt?

Gruß
demel

Guten Morgen Demel,
ich habe gerade in der I/O-Instanz, in der Konfigurator-Instanz sowie auch in der Instanz-Waschmaschiene gesucht, aber nicht gefnunden wo ich die Sprache einstellen kann.

Zu Deiner Frage: Ja, das Problem liegt noch vor.

LG Dennis

Ja, DU hast recht, die Sprache kann man bei OUath-Anmeldung gar nicht einstellen.

War auch nur ein Verdacht bei mir.

Mach man folgendes: IO-Instanz auf Entwicklerschlüssel umstellen, speichern, unter Eingangsdaten das Land auswählen, speichern, auf Symcon-Connect -zurückstellen, speichern, erneut bei Miele anmelden.

Bei den nächsten Aufrufen sollte dann language=de drin stehen.

Wichtig ist, das das richtige Land ausgewählt wird (auch in der Anmeldung bei Miele)

Ist nur ein Versuch, denn die Meldung „Server-Error“ des Miele-Servers ist ja nicht sehr spezifisch.

demel

Guten Morgen Demel,
danke für Deinen Tipp - ich habe mal wie Du beschrieben hast auf Deutsch umgestellt.
Die Fehlermeldungen sehen jetzt folgendermaßen aus:

Liebe Grüße

das ist wirklich merkwürdig, die URL sieht richtig aus.

Bei der anmeldung bei Miele hast Du auch das korrekte Land angegeben, da wo die Maschine gekauft wurde (so sit mein Verständnis im Anmelde Dialog).

in Swagger UI gibt es die Möglichkeit, die einzelnen Abrufe selbst zu testen. Ist ein bisschen Schritt für Schritt, aber so kann an das einzeln kontrollieren. Ers mit Authorize (und dann OAujth);den Token holen und merken, den braucht man bei den weiteren Abfrage.

Wie ist denn der Aufruf / Debug im Miele-Konfigurator? da erfolgt ja auch ein URL-Aufruf.

Sonst würde ich an deine Stelle mal versuchen, von OAuth auf Entwickler-Login umzustellen. Das musst Du nur bei Miele (developer@miele.com ) formlos Client-ID unc Client-Secret beantragen.

gruss
demel

Hallo, bei mir kommt aktuell auch immer eine Fehlermeldung:

20.09.2020, 17:10:34 | MieleAtHomeIO        | url=https://api.mcs3.miele.com/v1/devices/000101977327/state/?language=de => statuscode=204, err=got http-code 404
20.09.2020, 17:10:34 | MieleAtHomeDevice    | has no active parent instance

Ich kann den I/O aktivieren, das wird auch mit einem OK quittiert, dann kommt es aber sofort wieder zu dieser Fehlermeldung und die Instanz ist deaktiviert.

Was kann ich da machen?

LG Tom

Hallo,

das bedeutet, das die IO-Instanz nicht aktiv ist bzw. sofort wieder inaktiv wird.

Ich habe bei verschiedenen Modulen eingebaut, das auf aktive Parent überprüft wird und ein entsprechende Status gesetzt wird.
Der Status der Geräte-Instanz setzt sich ja ggfs. selbst auf „Aktiv“, wenn die IO-Instanz wieder bereit ist.

Was sagt denn die IO-Instanz, welche Status hat die?

Gruß
demel

Sorry, gerade das Log erst richtig angesehen. Miele meldet einen HTTP-Error 404, das heisst „Page not found“. Bei mir gibt’s zur Zeit kein Problem, aber manchmal hat Miele ja ein paar Server-Problem.

Eventuell abwarten? Ansonsten könnten Du dich neu bei Miele anmelden bzw den Zugang prüfen (in der IO-Instanz).

demel

Abgewartet habe ich schon, ist seit einigen Tagen so. Wenn ich in der I/O-Instanz auf „Anmeldung Entwickler-Schlüssel“ gehe, wird die Instanz für einige Sekunden als „Aktiv“ angezeigt, dann kommt der Fehler. Gleiches verhalten bei Anmeldung über den Connect-Dienst.

Zugang prüfen geht -> gültige Zugangsdaten + gefundene Geräte

Anmeldung habe ich auch nochmal versucht. Geht auch ohne Fehler durch

Tom

Hallo,

das ist sehr merkwürdig, denn die Prüfung auf activ parent macht zum einen ja nix amderes, als zuvor implizit passiert es - es wurde keine nachricht rihctjng Geräte-Instanz geschickt; durch die Prüfung wird das nur klar gemacht, das es keine gültige IO-Instanz gibt.
Zudem luegt das darin begründet, das Miele einen HTtP 404 liefert.
Ich werden morgen mal den Code zu der letzen Version vergleichen … heute abend schaffe ich das zeitlich nicht mehr
Noch zwei Fragen
a) die in der URL angegebenen Geräte-Id gibt es?
b) und du bist aus Deutschland?

ich kann es leider bei mir nicht reproduzieren, das funktioniert mit 4 Geräten.

tiut mir leid, das ich keine spontane Lösung habe
demel

Ich habe gerade noch eine Idee, bisher habe ich die URL’s immer (unnötigerweise) mit einem ‚/‘ beendet. Das entspricht nicht 100% der API - aber darf eigentlich (und hat bisher) keinen Unterschied machen.

Egal, die Änderung steht im Beta zur Verfügung

demel