Netatmo externes Display zB. Kindle

  • Hey Leute,


    ich habe mir letzte Woche im Rahmen der Cyber Week eine Netatmo Weather Station gegönnt. Ich habe sie mit dem Netatmo Plugin in die Homebridge eingebunden. Leider funktioniert Eveatmo nicht aber ich bin mir auch nicht sicher ob ich Vorteile auch in Home oder nur in Eve hätte, und Eve nutze ich in der Regel nicht.


    Zu meinem eigentlichen Anliegen:

    Meine Frau ist nur bedingt happy denn die Netatmo hat kein Display, sie möchte nicht zwangsläufig mehr Funktionen und auch keine weiteren Stationen bevor sie kein eigenständiges Display hat. Ihr Handy ist Ihr nicht ausreichend...

    Ich habe ein bisschen recherchiert und bin auf diese Seite gestoßen: http://www.stephank383.de/tutorials/netatmo-kindle/

    Das klingt super, einen alten Kindle hätte ich sogar, ich bin nur nicht sicher ob ich genug Skills habe das wirklich umzusetzen.

    Alternativ hätte ich ein altes IPhone welches die Netatmo App laufen lassen könnte oder auch ein altes Tablett...

    Irgendwie möchte ich aber kein leuchtendes Display und finde den Kindle Gedanken ziemlich cool. Wäre auch Stromsparender.


    Habt Ihr ähnliche Ideen, Probleme und vielleicht auch Lösungen? Was ist Eure Meinung, ist es einen Versuch Wert?


    Beste Grüsse

    Hank

  • Hey, hat keiner Interesse an so einer Idee? Ich würde mich am WE vielleicht daran probieren. Ich habe einen alten Kindle hier... Ich bin nicht ganz sicher ob ich es hinbekomme, die Anleitung ist zwar gut aber ich habe das Gefühl dass sie ein paar Kenntnisse voraussetzt sie mir fehlen...

    Eure Meinung?

  • grundsätzlich keine schlechte Idee. ich finde es auch nicht 100% toll das die Netatmo Wetter Station so gar kein Bild hat.


    aber ehrlich gesagt sieht so ein Kindle jetzt auch nicht sooo doll aus.

    wenn ich sowas stationäres machen würde dann wohl mit einem iPad. ich weiß ist etwas dekadenter aber man kann es ja auch zur homekit Steuerung an einen zentralen platz hängen ;)

  • Maz , das mit dem iPad oder einem ausrangierten iPhone habe ich mir auch gedacht...

    Insbesondere weil es super simpel wäre die Natatmo App laufen zu lassen und fertig...

    Allerdings mag ich nicht die ganze Zeit ein leuchtendes Display rumstehen haben.

    Das E-Ink Display des Kindle wäre für mich perfekt geeignet weil es die wichtigen Daten wie z.B. Temperatur ohne jeglichen Schnickschnack anzeigt.

    Alles in allem wahrscheinlich auch noch ziemlich energiesparend...

    Ist im Wesentlichen eine Frage des guten alten WAV, ich kann mir die Daten auf dem Handy anschauen, meine Frau möchte ein Display...

    Der Kindle an sich sieht nicht so dolle aus, ich würde ihn in einen Bilderrahmen packen...


    Naja, ich habe mich daran gemacht das Projekt umzusetzen und bin bisher gescheitert...

    Ich wollte den Raspberry als Webserver verwenden, in der Anleitung stehet es sei PHP5 zu verwenden, das gibt es aber nicht mehr? Zumindest lässt es sich nicht installieren. Ich habe es also mit PHP7 probiert...

    Das PHP Script habe ich kopiert, ich verstehe auch ungefähr was da passiert.

    Was mir Probleme bereitet ist

    1) Das Thema Schriftart, ich habe keine Ahnung ob ich das richtig definiert habe

    2) Die Bennenung der Devices / Module von Netatmo im Skript, ich verstehe nicht welche Daten ich da eintragen müsste.


    Naja, letztlich passiert nichts. Wenn ich das Script starte indem ich die Homepage auf dem Webserver aufrufe wird eine weiße Safari Seite angezeigt... Das wars... Ich finde auch die Output Datei die auf dem Pi erscheinen sollte nicht... Ich versuche jetzt mal Kontakt zum Entwickler aufzunehmen, mal sehen ob er mir helfen kann...


    Ich halte Euch auf dem laufenden...

  • hab mich auch schon damit beschäftigt. Bei PI-Strech einfach die "5" von php überall weglassen, dann wird alles richtig mit PHP7 installiert.

    ein ein Bild schaff ich schon, aber beim Kindle häng ich noch( jailbreak hab ich schon, aber ich bring die Kiste nicht ins netz ...)

  • Blacky, warum brauche ich PI Stretch?

    Mein Pi läuft mit Jessie, denke ich...

    Ich habe erst Apache2 installiert und dann PHP7.0 und die anderen Apps...

    ich hab am PI Raspbian Stretch drauf, da gibts kein php5, musste kurz googeln um die Lösung zu finden. Wollte das nur zur (veralteten) Anleitung hinzufügen. Funktioniert aber auch mit php7 tadellos

  • Ich habe auch PHP7.0 installiert weil PHP5 nicht verfügbar war. Scheint keinen Unterschied zu machen...

    Update zum aktuellen Status:

    Ich habe das Script fertig und es scheint durch zu laufen...

    Die PNG Datei wird erstellt und abgelegt

    Ich kann die PNG Datei über einen Browser aufrufen, in dem Fall Safari


    Jetzt mein Problem:

    Es wird nur eine schwarze Seite angezeigt, bzw. eine weiße Seite mit einem schwarzen Rechteck im Format des Kindle darauf...

    Entweder habe ich ein Problem mit der Schriftart, oder was ich eher glaube, die Umwandlung in Graustufen funktioniert nicht...


    Blacky, wie sieht das bei Dir aus?

  • bei mir kommt ein Bildchen raus ... ev. hilft dir das?

    Schrift hab ich eine bei google geholt (TTF) und in Schrift.ttf umbenannt (wollte das script nicht nochmal ändern ;) )

    liegt alles im Dir wo das script auch liegt

    app_id und app_secret hast Du ja von Netatmo?



    <?php

    // Zugangsdaten Netatmo

    $username = "[email protected]";

    $password = "password";

    $app_id = "xxxxxxxxxxxxxxxxxxxxxxxxx";

    $app_secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxx";

    // Token anfordern

    $postdata = array(

    'grant_type' => "password",

    'client_id' => $app_id,

    'client_secret' => $app_secret,

    'username' => $username,

    'password' => $password,

    'scope' => 'read_station'

    );

    $url = "https://api.netatmo.net/oauth2/token";

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $url);

    curl_setopt($ch, CURLOPT_POST, 1);

    curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);

    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

    curl_setopt($ch, CURLOPT_HEADER, 0);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    curl_setopt($ch, CURLOPT_TIMEOUT, 30);

    $response = curl_exec($ch);

    curl_close($ch);

    // Anfrage mit Token

    $params = null;

    $params = json_decode($response, true);

    $api_url = "https://api.netatmo.net/api/devicelist?access_token=" . $params['access_token'];

    // Daten abrufen

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $api_url);

    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

    curl_setopt($ch, CURLOPT_HEADER, 0);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    curl_setopt($ch, CURLOPT_TIMEOUT, 30);

    $array = curl_exec($ch);

    curl_close($ch);

    // Messwerte bereitstellen

    $netatmo = json_decode($array,true);

    $indoor_temp = $netatmo["body"]["devices"]["0"]["dashboard_data"]["Temperature"];

    $outdoor_temp = $netatmo["body"]["modules"]["0"]["dashboard_data"]["Temperature"];

    // $rain_last_hour = $netatmo["body"]["modules"]["1"]["dashboard_data"]["sum_rain_1"];

    // Messwerte formatieren

    $indoor_temp = number_format($indoor_temp, 1, ".", "") .' °C';

    $outdoor_temp = number_format($outdoor_temp, 1, ".", "") .' °C';

    // $rain_last_hour = number_format($rain_last_hour, 1, ".", "") .' mm';

    // Variablen

    $filename = "/home/blacky/wetter/weather-script-output.png";

    $font = "/home/blacky/wetter/schrift.ttf";

    // Leere PNG-Datei mit weißem Hintergrund erstellen

    $image = ImageCreateTrueColor(600, 800);

    $background = ImageColorAllocate($image, 255, 255, 255);

    ImageFilledRectangle($image, 0, 0, 600, 800, $background);

    // Farbe für Schrift und Hilfslinien festlegen

    $color = ImageColorAllocate($image, 0, 0, 0);

    // Text einfügen

    ImageTTFText($image, 15, 0, 15, 30, $color, $font, "Temperatur innen:");

    ImageTTFText($image, 30, 0, 15, 75, $color, $font, $indoor_temp);

    ImageTTFText($image, 15, 0, 15, 126, $color, $font, "Temperatur außen:");

    ImageTTFText($image, 30, 0, 15, 171, $color, $font, $outdoor_temp);

    ImageTTFText($image, 15, 0, 15, 217, $color, $font, "Niederschlag letzte Stunde:");

    // ImageTTFText($image, 30, 0, 15, 262, $color, $font, $rain_last_hour);

    // Hilfslinien einfügen

    ImageFilledRectangle($image, 15, 95, 585, 96, $color);

    ImageFilledRectangle($image, 15, 186, 585, 187, $color);

    // PNG-erstellen und temporäre Daten löschen

    ImagePNG($image, $filename);

    ImageDestroy($image);

    // Farbraum in Graustufen ändern

    $im = new Imagick();

    $im->readImage($filename);

    $im->setImageType(Imagick::IMGTYPE_GRAYSCALE);

    $im->writeImage($filename);

    ?>



  • Update:


    Ich habe es soweit hinbekommen...

    Ich schaffe die Abfrage der Daten aus der Netatmo API und ich bekomme sie auf meinem Webserver dargestellt!!!

    Bzgl. der Umwandlung in Graustufen bin ich etwas unsicher, ich habe die entsprechenden Codezeilen auskommentiert, seitdem kann ich was im Browser erkennen... Wie das dann letztlich im Kindle landet, keine Ahnung, vielleicht muss ich dann wieder einkommentieren...

    Nachdem ich das Prinzip aber jetzt verstanden habe, werde ich mich erstmal daran machen eine schöne Ansicht zu basteln...

    Wenn die fertig ist, geht es in die nächste Phase...


    Maz , vielleicht ist das Thema für Dich interessant wenn Du nur über den Webserver nachdenkst, Du kannst Dir quasi jede Form von Wetterstation als Webpage bauen und nachher über einen beliebigen Browser (z.b. im Tablet) aufrufen. Ist etwas freier als die Netatmo APP.



  • Wenn ich irgendwann Langeweile habe kann ich mich evtl sowas widmen.

    Zur Zeit gibt es genug Baustellen ;)


  • So, ich bin ein bisschen weiter, ich habe die Feiertage genutzt...

    Mein Regensensor liefert keine Daten (keine Verbindung zur Station)...

    Als nächstes folgt dann der Jailbreak des Kindle und zu guter letzt der optische Umbau des Kindle...

    Jetzt müsste ich nur noch Daten anderer Sensoren abfragen und in das Script einfügen können, das wäre der Hammer...

  • Das ist ja Mega, machst du noch eine Anleitung fertig?

  • xMAIKx

    Leider entspring das nicht meinem eigenen Hirn, daher schwierig mit der Anleitung... :/

    Ich habe mich aber exakt an die Anleitung gehalten die ich im ersten Post genannt habe. :)

    Es gibt nur eine Änderung, php 5 konnte ich nicht installieren, ich habe also alles mit php 7 umgesetzt, hat aber keinen Unterschied gemacht...

    Zwischenzeitlich hatte ich den ganzen Spaß auf meinem MacBook laufen, das war irgendwie einfacher... Das Script zu schreiben und im Browser zu checken... Den Pi betreibe ich nur mit SSH und der Nano Editor ist mir manchmal zu kompliziert...

  • Sehr cooles Projekt. SmartHome Hank : Vielleicht kannst du mal dein PHP veröffentlichen, dann hat man einige Anhaltspunkte. Natürlich ohne deine Daten.
    Bin leider nicht so PHP bewandert aber ich beisse mich dort gerade durch.

    Die Idee ist auf jedenfall SEHR SEHR COOL !
    Danke dafür !

  • Hier kommt der Code, wie ich ihn mir angepasst habe....

    XXX oder Pfad/XXX musst Du entsprechend anpassen.

    Die Schriftart, die ich hinterlegt habe auch...


    Ich habe mich mit der Anleitung von Schritt zu Schritt gehangelt und letztlich nur kopiert. Wer genau aufpasst, sieht sogar dass ich das Layout dem der Homepage mit Anleitung angepasst habe...

  • Danke nochmal.... bin ein wenig weiter. Hab alle Pfade angelegt und mit Daten befüllt. Aber scheinbar stimmt bei mir was nicht.
    Die Daten liegen auf dem Webserver der Synology Diskstation.

    Das bekomme ich als DEBUG angezeigt :


    Warning: imagecreatefrompng(/volume2/web/icon/.png): failed to open stream: No such file or directory in /volume2/web/weather-script.php on line 257 Call Stack: 0.0043 354880 1



    Hier der Teil des Skript auf das sich die DEBUG Meldung bezieht :

    // Wettersymbol einfügen


    $icon = '/volume2/web/icon/'. $icon . '.png';

    $icon = ImageCreateFromPNG($icon);

    ImageCopy($image, $icon , 250, 65, 0, 0, 100, 100);



    // PNG-erstellen und temporäre Daten löschen


    ImagePNG($image, $filename);

    ImageDestroy($image);


    UPDATE : Es war der API Key von Wunderground. Einmal richtig dann läuft es ;)