Posts by Ryker

Wir haben aktuell ein Problem mit dem Board und arbeiten an der Lösung...


-> Aktuell bereiten wir das Upgrade auf die aktuelle Version 6 von Woltlab vor.

    Also, es ist eigentlich gar nicht so schwer, das Plugin ans Laufen zu bekommen.
    Hier nochmal die Anleitung, die ich jemand per PM zuschickt hatte und danach hat er das problemlos hinbekommen.
    -------

    1) du meldest dich mit deinem Netatmo-Account an dev.netatmo.com an.


    2) dann klickst du rechts oben in der Ecke auf dein Profile. Dort öffnet sich ein Drop-Down-Menu und du wählst "my apps"


    3) Auf der Apps-Seite wählst du "create":

    AppName: der Name dieser App - also z.b. "Dreambox-xyz"

    Description: irgendeinen Beschreibung z.b. "Netatmo Plugin auf Dreambox"

    data protection officer name: Dein Name

    data protection officer email: deine email-adresse

    --> dann "I agree..." anhaken und "save" klicken.


    4) nach dem speichern bekommst du schonmal eine "client_id und ein "client_secret" -> die Werte brauchst du für das Plugin nachher.


    5) in der App beim "Token generator" wählst du als scope "read_station" und "read_thermostat" aus. und klickst auf "generate token"

    Dann sieht es kurz aus, als ob nichts passiert, aber nach ein paar sekunden wird man auf eine Seite weitergeleitet, wo man die scopes bestätigt.


    6) nun sollte man Werte für "access_token" und "refresh_token" angezeigt bekommen


    7) refresh_token, client_id und client_secret dann wie von cmikula beschrieben in die netatmo.txt eintragen

    8 ) Enigma2 restarten

    ...

    zudem wir das Bottleneck der CPU sein, dass du nicht wirklich schneller bist... daher lohnt es hier nicht wirklich.

    Ja, die CPU-Auslastung geht ziemlich hoch, wenn ich irgendwas per NFS auf die QNAP kopiere. Ich bekomme nur max. 520MBit/s übers Netz von der DM920 aus.
    Ich denke auch der 2.5GBit/s Adapter wird nichts bringen.


    Ich werde demnächst mich noch damit beschäftigen, wie man clientid und clientsecret in die E2-config oder textfile auslagern kann. Dauert nur etwas, weil python ist für mich völlig neu, aber es wird immer besser.

    Ach sorry - hatte das verkehrt aufgefasst. :upside_down_face:

    Also ImPrinzip ist alles schon im Plugin soweit funktionsfähig drin.
    Man muss nur wie im vorhergehenden Post beschrieben

    1) min die 4 Parameter in der E2-settings drin haben
    2) in der netatmoAPI.py in der Function "checkTokenExpired" statisch seine eigene client_id und client_secret eintragen.
    Dann E2 restarten und alles geht wunderbar.

    cmikula Falls du doch nochmal Zeit und Lust haben solltest, dann könntest du die client_id und client_secret auch in die E2-Settings verlagern und das in der checkTokenExpired von dort wieder laden. Da würde alles wieder per Standard funktionieren. :)

    Ach ja, genau. Da hätte ich ja auch selber drauf kommen können ins crashlog zu schauen. :fearful_face:
    Es fehlte noch "enigma2-plugin-systemplugins-weathercomponenthandler" und evtl auch "enigma2-plugin-skincomponents-weathercomponent".
    Hab nun beides installiert und nun klappt es wunderbar.
    Danke für den Tipp :thumbs_up:

    Jogi29 Ich hab bei mir gerade an der Dm920 das netatmo-plugin in betrieb genommen und wollte nun im DisplaySkin für den Idle-Screen den StandbySummary_Netatmo.xml benutzen. Aber der sorgt dafür dass das E2 einen Grünen bringt und restartet, sobald die DM920 in den StandbyMode geschickt wird.
    Da schein irgendwo was nicht zu stimmen in dem screen.
    Nur falls du mal Zeit und Lust hast das anzuschauen.

    Gruß
    Ryker

    Dre
    Was hast du geändert ? - Weil ich sehe aktuell keine Änderung im Code.
    Denn es müsste folgendes geändert werden, damit es im Plugin funktioniert.
    client_id und client_secret müsste in die E2-Settings ausgelagert werden.
    Dann müsste in NetatmoAPI.py in "checkTokenExpired" dafür gesorgt werden, dass "client_id" und "client_secret" die entsprechenden Werte aus den E2-Settings bekommen.

    Bis das drin ist, muss man sich auf jeden schon mal fall folgendes in die E2-Settings aufnehmen:
    config.Netatmo.user=

    config.Netatmo.password=

    config.Netatmo.refresh_token=<refresh Token aus der entsprechenden App von dev.netatmo.com>

    config.Netatmo.access_token=<access Token aus der entsprechenden App von dev.netatmo.com>

    Die client_id und client_secret aus seiner eigenen App von dev.netatmo.com derweil statisch in die NetatmoAPI.py eintragen



    Damit habe ich nun geschafft das netatmo-plugin in Betrieb zu nehmen.

    Das mit dem ablaufenden Access-Token nach 3h schein doch nicht so schlimm zu sein, wie erst vermutet.
    Hab heue nochmal mit meinem Code von gestern probiert und das funktiomiert nach wie vor, auch nach einem Tag.
    Es ist ja so, dass man sich mit dem Token aus der definieren App authentifiziert. Die Authentifiziereung liefert einen neuen Token, der dann 3h gültig ist und mit dem frägt man dann die Daten ab. D.h. man kann 3h lang Daten abfragen und muss sich erst nach 3h wieder neu authentifizieren, aber mit den alten Tokens.
    Gibts irgendwo den Code vom netatmo-plugin in irgendeinem Git, dass man sich das mal genaue anschauen kann - um zu sehen welchen Aufwand das bedeutet?

    ...

    Das einzige wo ich mich evtl. mal ran setze, ist die netatmo-daten übers API in Python mit der neuen Auth auszulesen.
    Wollte schon lange mal Python lernen und das wäre halt ein sehr kleines überschaubares Projekt. Muss halt nur Zeit finden dafür.

    So, ich bin jetzt mal dazu gekommen ein Python-script zu schreiben, was die Daten der Wetterstation über die API ausließt und in der Shell anzeigt. Dabei wird die neue Auth benutzt.
    Also man muss unter dev.netatmo.com sich für die Dreambox eine eigene App anlegen. Dann den scope auf "read_station" setzen, dann hat man alle daten die man braucht, um das in das script open einzutragen.
    Für diese Token-Auth wird auch kein Username oder Passwort benötigt.
    Ich denke mal das Plugin entsprechend anzupassen dürfte nicht so schwierig sein. Man muss nur die alte Auth gegen die neue austauschen und dann die Werte, die für access_token und refresh_token zurückkommen, dann immer wieder in die e2-settings zurückschreiben.
    Die Dreambox muss dann natürlich immer laufen, damit der refresh funktionieren kann. Nach Urlaub oder sonstiger längerer Downtime muss man dann einmal wieder die werte für access_token und refresh_token von dev.netatmo.com holen und wieder in der dream eintragen.

    Lange Zeit war bei mir die DM7080 und dann die DM920 ein richtig gutes Gerät zum TV schauen, weil es recht easy war alles aufzunehmen und dann zu schauen, wenn man Zeit hat.
    Aber, Streaming hat als disruptive Technologie das Lineare-TV weitestgehend abgelöst, bis auf einige wenige Ausnahmen, wo man doch noch lineares TV schaut.
    Die Boxen von Dream können zwar auch in gewisser weise Streaming und InternetTV+Internetradio, aber im allgemeinen sind die für DVB-Empfang ausgelegt.

    Ich hatte mal vor einigen Jahren bei den Dream-Entwicklern schon angeregt eine kleine StreamingBox rauszubringen auf Android-Basis, wo man auch Tuner Stecken kann, aber die E2-Oberfläche eine echte AndroidApp ist, die als Launcher läuft. Vielleicht hätte man sogar ein Widevine-Zertifikat bekommen. Somit hätte ich alles, also Netflix &Co, mit auf der Box gehabt. Das wäre mir lieber gewesen, als eine FireTV, die ich jetzt nutze.
    Bei mir läuft sei Jan'24 alles über die FireTV. Lineares-TV und Internetradio im KODI auf der FireTV.
    Die DM920 brauche ich aktuell gar nicht mehr. Familie ist mit der Lösung bei mir sehr zufrieden und froh dass es nur noch die eine FireTV-Fernbedienung gibt, die auch TV und AVReceiver mit steuern kann. Im Kodi hab ich für das LiveTV eine ähnliches Tastenmapping erstellt, wie es auf der DM920 war. Somit ist dort die Bedienung auch so wir auf der Dream. Seien es StreamingApps oder Kodi oder sonstwas - alles ist schön übersichtlich nebeneinander als App.
    Falls Dream Property in irgendeiner Art wieder auferstehen sollte, dann könnten sie mich nur mit einer StreamingBox catchen.

    Nachdem das ja alles ungewiss ist (auch Kabel-TV), nutze ich meine Dreambox eigentlich nicht mehr.

    Bin jetzt TV-technisch mit Kodi unterwegs und hab dort meine eigene iptv-liste/epg-xml eingebunden.
    Für Wetter habe ich das netatmo widget aufm Handy. Das recht mir völlig.

    Die Idee von oben die Daten über FHEM auszulesen, war nur, weil es sonst schade wäre für das Plugin, wenn das nicht mehr genutzt werden kann. Es gibt ja scheinbar doch einige, die das nutzen.
    Das einzige wo ich mich evtl. mal ran setze, ist die netatmo-daten übers API in Python mit der neuen Auth auszulesen.
    Wollte schon lange mal Python lernen und das wäre halt ein sehr kleines überschaubares Projekt. Muss halt nur Zeit finden dafür.

    Könnte man nicht das Netatmo-Plugin so umbauen, dass er sich die Daten von z.b. einem FHEM-Server im Heimnetz abholt? Also zumindest als AlternativWeg.
    Weil, ich kann hier auf der Dream problemlos darüber alle Werte abholen. Hier in dem Beispiel z.b. die Außentemperatur und Luftfeuchtigkeit:


    root@dm920:~# echo '{ReadingsVal ("netatmo_M02_00_00_xx_xx_xx", "temperature", "")}' | nc raspi.fritz.box 7072

    10.1

    root@dm920:~# echo '{ReadingsVal ("netatmo_M02_00_00_xx_xx_x", "humidity", "")}' | nc raspi.fritz.box 7072

    81


    Man kann auch dauerhaft mit telnet verunden bleiben und auf Änderungen lauschen, sofern man einmal das Kommando "info timer" gesendet hat. Dann spart man sich die zyklische Abfrage.
    Hier z.b. die Ausgabe im telnet von meinem Innensensor, als er die Werte aktualisiert hat:
    2024-03-20 11:07:49 netatmo netatmo_D70_ee_50_xx_xx_xx temperature: 23.3

    2024-03-20 11:07:49 netatmo netatmo_D70_ee_50_xx_xx_xx co2: 591

    2024-03-20 11:07:49 netatmo netatmo_D70_ee_50_xx_xx_xx noise: 46



    Den FHEM könnte man sicherlich auch auf der Dreambox laufen lassen. Der braucht nur Perl (das ist ja schon drauf) und für zusätzliche Perl-Module gibt es ja cpan auf der dream.
    Laut Entwickler des FHEM-netatmo-Modul ist die kommende Änderung bereits im Modul implementiert. Das FHEM aufsetzen und das Modul dort rein zu holen ist recht einfach und der FHEM-Server an sich recht leichtgewichtig.

    Bist du dir sicher, dass nicht der Endpoint genutzt wird, welcher als deprecated gekennzeichnet ist?

    Deprecated ist ja der "client credential grant type" und der ist seit Oct'22 nicht mehr nutzbar - laut API-Doku.
    Schaut einfach in den Code vom Netatmo-FHEM-Modul . Dort könnt ihr euch das alles raus-klauen :winking_face:
    So wie ich das sehe, benutzt das Modul den von Netatmo bevorzugten Weg über "Authorization code grant Type"
    Meiner Meinung nach braucht man nur den Auth-Code aus dem FHEM-Modul von Perl in Python übersetzen und schon geht das genauso auf der Dream.
    Aber - ich schätze - die Dream muss dann immer am Netz sein für den Token-Refresh. Also, war die Dream mal wegen Urlaub länger down, dann muss man wieder die Tokens manuell kopieren.

    Dre Nein, dass ist hier aber anders. Man braucht definitiv keinen Webbrowser-Redirect. Alle Werte, die man braucht, hat man ja schon da. Deswegen muss man ja eine entsprechende App für die Dream auf dev.netatmo.com anlegen. Das ist ja gerade der clou.
    Hier bei dem FHEM-Modul - hab ich es gerade nochmal ausprobiert.
    Z.b. logge ich mich mit dem PC auf der dev.netatmo.com Seite an. Lese dort die Werte aus der von mir für FHEM definierten App aus.
    Dann gehe ich in eine SSH-Shell auf meinem FHEM-Server und kopiere dort nur folgende Werte in die Netatmo-Definition rein:
    "<username> <password> <client_id> <client_secret> <refresh_token>".
    Und die Berechtigung erteilt man ja auf der dev.netatmo.com Seite ja schon beim Zuordnen des Scopes.

    Dadurch, dass man die Werte auf der netatmo-Webseite angezeigt bekommt und diese einfach kopieren kann, braucht man dann keinen Webbrowser-Redirect, so wie man das sonst von z.b OpenID oder SAML kennt.