[Neues Modul] Miele@Home

Begonnen von choenig, 14 Juni 2020, 11:08:17

Vorheriges Thema - Nächstes Thema

tdyne

Hallo zusammen

Ich hatte auch das Problem, dass password und clientSecret nicht mehr in die uniqueID geschrieben wurden.
Nachdem ich aus lauter Verzweiflung meinen Developer Account bei Miele erneuert hatte, war der Weg die uniqueID aus dem Backup zu holen auch versperrt (ja, vorher Nachdenken hätte geholfen).

Also ein bisschen geforscht und gefunden, dass die Funktion encode_base64 an das Ende immer ein newline hängt.
Das war bis zum 05. Februar 2024 kein Problem, aber dann hat Rudi in der Subroutine setKeyValue eine zusätzliche Prüfung eingebaut und damit newline Zeichen verboten.
D.h. das newline Zeichen muss vor dem Aufruf von setKeyValue weg (in anderen Modulen wird das auch gemacht).
Also einfach nach dem Aufruf der Funktion encode_base64 in Zeile 2183, die folgende Zeile einfügen:

$value =~ s/\n$//g;

Modul neu laden und es läuft wieder wie vorher.
Allerdings nur bis zum nächsten Update, es sei denn das Modul wird vom Update ausgeschlossen.

@choenig
Könntest Du diese Korrektur noch einfügen?


Viele Grüße
Thomas

juemuc

Hallo Thomas,

da Christian nur noch sehr selten hier im Forum ist und dringend ein Nachfolger für das Miele-Modul gesucht wird, wäre es super wenn Du Dir das überlegen könntest  O:-) Ich habe leider nicht die Programmierkenntnisse, die dazu nötig wären.

Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

betateilchen

Zitat von: tdyne am 27 Mai 2024, 16:43:59D.h. das newline Zeichen muss vor dem Aufruf von setKeyValue weg (in anderen Modulen wird das auch gemacht).
Also einfach nach dem Aufruf der Funktion encode_base64 in Zeile 2183, die folgende Zeile einfügen:

Man könnte auch einfach den Aufruf von encode_base64 so gestalten, dass erst gar kein newline eingefügt wird.
Ein Blick in die Doku hilft weiter:

Zitatencode_base64($str, $eol);
Encode data by calling the encode_base64() function. The first argument is the string to encode. The second argument is the line-ending sequence to use. It is optional and defaults to "\n". The returned encoded string is broken into lines of no more than 76 characters each and it will end with $eol unless it is empty. Pass an empty string as second argument if you do not want the encoded string to be broken into lines.

Also die genannte Zeile 2183

$value = encode_base64($value) if ($MAH_hasMimeBase64);
ändern in

$value = encode_base64($value,'') if ($MAH_hasMimeBase64);
und der Spuk ist vorbei.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: juemuc am 27 Mai 2024, 16:49:22da Christian nur noch sehr selten hier im Forum ist

Zuletzt aktiv am: 20 Mai 2024, 19:44:53
So lange ist das nicht her.
Vielleicht sollte ihn einfach mal jemand anschreiben und auf das Problem hinweisen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

juemuc

3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

betateilchen

#365
Solange das Modul noch in der offiziellen Verteilung von FHEM ist (und nicht nach ./contrib verschoben) und er keinen Nachfolger gefunden hat, steht der Modulautor in der Verantwortung, solche Fehler zu beheben.

Das ist auch der Grund, warum ich diese minimale Änderung zur Fehlerbehebung nicht einchecken werde.
Dazu gibt es klare Regeln hier.



Nachtrag:

In meinem ./contrib Bereich habe ich eine Modulversion abgelegt, in der die Änderung enthalten ist.
Die Datei kann man direkt vom SVN Server laden und in den Ordner ./FHEM kopieren.

http://svn.fhem.de/trac/export/HEAD/trunk/fhem/contrib/betateilchen/48_MieleAtHome.pm

Betrachtet das einfach als kurzfristige Hilfe, nicht als dauerhafte Lösung.
Die Pflege des Moduls werde ich auf keinen Fall übernehmen.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

tdyne

Zitat von: juemuc am 27 Mai 2024, 16:49:22Hallo Thomas,

da Christian nur noch sehr selten hier im Forum ist und dringend ein Nachfolger für das Miele-Modul gesucht wird, wäre es super wenn Du Dir das überlegen könntest  O:-) Ich habe leider nicht die Programmierkenntnisse, die dazu nötig wären.

Viele Grüße
Jürgen

Hallo Jürgen

Danke für das Angebot, aber nach 25 Jahren ABAP bin ich einfach zu verwöhnt um mich ernsthaft mit Perl zu beschäftigen.
Besser das Modul wird von jemand betreut der so sicher unterwegs ist wie z.B. Betateilchen.

Viele Grüße
Thomas

Kohle77

Hallo,
habe jetzt die Änderung:
$value = encode_base64($value,'') if ($MAH_hasMimeBase64);eigepflegt.
Jetzt muss ich erstmal wieder die login daten suchen.
Melde mich wenn es funktioniert.

Gruß
Christian

Kohle77

Hi,
geht leider nicht bekomme die Meldung das die Anmeldung fehlschlägt. Ich habe mal noch eine Frage zu:
ZitatBy the way, der Miele App Benutzer (meine Frau) kann ein anderer sein als die Email auf die der Developer account läuft (das ist meine Mail). Das funktioniert ohne Probleme.

Ich musste mich dort nicht registrieren mit einem passwort sondern nur eine Mailadresse eingeben und einen Application name. Ist das richtig so?
Das würde zumindest erklären warum der Login fehlschlägt. Jemand eine Idee?

Gruß
Christian

tomcat.x

Hallo Christian,

mit "dort" meinst Du vermutlich die Developer-Registrierung zur Nutzung der API auf https://www.miele.com/f/com/en/register_api.aspx? Aber auf https://www.miele.de musst Du Dich als Benutzer mit E-Mail und Kennwort registrieren. Dort legt man auch die Geräte an.

Viele Grüße
Thomas
FHEM: 6.3 auf Raspi 3B+, Raspbian (Buster), Perl v5.28.1
Sender/Empfänger: 2 x CULv3, Duofern Stick, HM-MOD-RPI-PCB
Gateways: FRITZ!Box 6591 (OS: 8.00), Trädfri, ConBee 2,  piVCCU, OpenMQTTGateway
Sensoren/Aktoren: FRITZ!DECT, FS20, FHT, HMS, HomeMatic, Trädfri, DuoFern, NetAtmo

Kohle77

Hallo,
wenn ich auf diesen Link gehe muss ich nur die Mailadresse und die Application Name angeben.
Siehe Bild Du darfst diesen Dateianhang nicht ansehen. .
 Als Antwort darauf erhalte ich nach mehreren Minuten eine Mail von Miele bei der ich die Bedingungen akzeptiere und bekomme dann die Client ID und das Client Secret.
Da habe ich also keine Login mit user und passwort.

Gruß
Christian

ch.eick

Moin zusammen,
geht es hier jetzt gerade um diese Meldungen, oder ist das etwas anderes, was noch nicht behoben ist?
2024.07.02 11:48:50.954 2: Miele_Connection (MieleAtHome::MAH_onOauthLoginReply:1031) Error: Bearer code not found, giving up
2024.07.02 11:49:51.107 2: Miele_Connection (MieleAtHome::MAH_onOauthLoginReply:1031) Error: Bearer code not found, giving up
Ansonsten funktioniert meine Kopplung zu Miele.
VG  Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

tomcat.x

Zitat von: Kohle77 am 02 Juli 2024, 11:48:08wenn ich auf diesen Link gehe muss ich nur die Mailadresse und die Application Name angeben

Ja, das ist beim ersten Link so. Aber beim zweiten (https://www.miele.de) kann man auf das Benutzer-Symbol klicken und sich registreiren.
FHEM: 6.3 auf Raspi 3B+, Raspbian (Buster), Perl v5.28.1
Sender/Empfänger: 2 x CULv3, Duofern Stick, HM-MOD-RPI-PCB
Gateways: FRITZ!Box 6591 (OS: 8.00), Trädfri, ConBee 2,  piVCCU, OpenMQTTGateway
Sensoren/Aktoren: FRITZ!DECT, FS20, FHT, HMS, HomeMatic, Trädfri, DuoFern, NetAtmo

Kohle77

Hi,
also ich kann mich meiner mailadresse und dem passwort auf Miele.de einloggen aber im FHEM log sehe ich:
<meta charset="utf-8"><0a></head><0a><body id="mieleLoginSite"><0a><div class="container"><0a>    <div class="row"><0a>        <div class="col s12 m8 offset-m2 offset-l2 l8 center"><0a>            <div><0a>                <img class="responsive-img"<0a>                     src="/assets/images/miele_logo.svg" width="150" alt="miele.com"/><0a>            </div><0a>            <h1 class="mediumFont">Authentication failed!</h1><0a>            <p>Please check your login details.</p><0a>            <p>invalid_client: Client credentials are not valid, clientId: [/code

was je nicht sein kann weil ich mich mit den gleichen Daten auf Miele.de einloggen kann.
Diese Einträge mit dem [quote](MieleAtHome::MAH_onOauthLoginReply:1031) Error: Bearer code not found, giving up[/quote]
hab ich auch.

Gruß
Christian

tomcat.x

So ganz die gleichen Daten gibt man da nicht an, nur E-Mail und Password. Im Gerät gibt es zusätzlich das Attribut clientId. Hast Du das richtig gesetzt? Sieht ja so aus, als ob das fehlt.
FHEM: 6.3 auf Raspi 3B+, Raspbian (Buster), Perl v5.28.1
Sender/Empfänger: 2 x CULv3, Duofern Stick, HM-MOD-RPI-PCB
Gateways: FRITZ!Box 6591 (OS: 8.00), Trädfri, ConBee 2,  piVCCU, OpenMQTTGateway
Sensoren/Aktoren: FRITZ!DECT, FS20, FHT, HMS, HomeMatic, Trädfri, DuoFern, NetAtmo