Wetteranzeige in Xibo

[ACHTUNG: Alle Xibo-Skripte befinden sich jetzt bei GitHub]
Dritter und wahrscheinlich vorerst letzter Teil der Xibo-Artikel. Heute habe ich das neue Wetter-Skript fertiggestellt, nachdem Google vor ein paar Wochen durch das Einstellen der Weather API eine Neuentwicklung nötig gemacht hatte.

Neuer Datenlieferant ist die Yahoo Weather API in der Hoffnung, dass der Dienst auch dauerhaft in dieser Form angeboten wird. Yahoos API ist inhaltlich etwas anders: Anders als Google gibt Yahoo nur Informationen über die aktuellen Wetterdaten und die Vorhersage für „heute“ und „morgen“ raus.

OK, hier nun das Skript. Dazu ist zu sagen, dass man in den Zeilen 4 und 5 Konfigurationsmöglichkeiten hat. Zum einen muss man die $ort_id an den gewünschten Ort anpassen. Das geschieht über die Yahoo-Weather-Website. Dort sucht man seinen Ort und läßt sich das Wetter anzeigen. Oben in der Adressleiste kopiert man sich dann ID aus der URL. Beispiel: das Wetter von Weener findet man unter
http://de.wetter.yahoo.com/deutschland/niedersachsen/weener-704283/
Die ID ist dem nach die 704283.

Die Variable $icon_url in Zeile 5 gibt an, woher die Wettericons kommen sollen. Wer kein eigenes Iconset hat, läßt die Variable so wie sie ist, dann werden die Standard-Icons von Yahoo geladen.

 

49 Kommentare

  • Ich habe das Script als embedded HTML in eine Region eingefügt.
    Leider bekomme ich nur ein Fenster mit den statischen Werten (z.B. Heute °C) angezeigt,
    die Daten und Wettericons fehlen. Woran kann das liegen?

  • Als Embedded HTML funktioniert es nicht, weil das Skript PHP-Code enthält, den der Xibo-Client nicht interpretiert, da es sich nur um eine lokale HTML-Datei handelt.
    Das Skript muss auf einen Webserver, am besten auf den Xibo-Server in ein Parallel-Verzeichnis von „xibo“. Bei mir heißt das Verzeichnis „xibodata“ und dort liegen die PHP-Dateien.
    In Xibo erfolgt die Einbindung dann als „Webpage“ mit der Adresse http://ip-des-xibo-servers/xibodata/wetter.php . Dann sollte es klappen…

  • Hat geklappt. Vielen Dank.

  • Ich bin gerade dabei, erste Schritte mit Xibo zu unternehmen und dabei auf Ihren Blog gestoßen.

    Ich würde auch ganz gerne das Wetter in meine Präsentation einbinden, habe die php-Datei wie oben beschrieben auf einem Webserver abgelegt, bei Aufruf bekomme ich jedoch folgende Fehlermeldung: 

    Fatal error: Call to a member function attributes() on a non-object  on line 133  .

    Vielleicht haben Sie ja eine Idee, wie ich den Fehler beheben kann.

    mfg

    Jürgen

     

  • Hallo Jürgen,

    evtl. klappt der Download der XML-Daten nicht. Füge mal bitte in Zeile 131 folgendes ein:

    echo $xml;

    Was wird dort ausgegeben?

  • Vielen Dank für die schnelle Antwort,

    ich habe es in die Zeile 131 eingefügt, leider kommt immer noch die gleiche

    Fehlermeldung 🙁

  • Hallo Michael,

    die Fehlermeldung macht mir immer noch Kopfzerbrechen… vor allem, weil ja das selbe Skript bei Ihnen tatellos zu funktionieren scheint.

    Kann es daran liegen, dass ich die .php-Datei auf einem kostenlosen Webserver gelegt habe?

    mfg

    Jürgen

  • Hallo Jürgen,

    versuch mal bitte folgenden Code als „wetter_debug.php“ auf dem Server auszuführen und poste das Ergebnis hier (mit dem „<>„-Icon) oder bei pastebin.com

    Wird die XML-Datei überhaupt von Yahoo geladen?

  • Du hast recht mit deiner Vermutung. Die XML-Daten werden gar nicht erst geladen:

    Warning: file_get_contents() [function.file-get-contents]: http:// wrapper is disabled in the server configuration by allow_url_fopen=0 in …/Wetter/wetter_debug.phpon line 19

    Warning: file_get_contents(http://weather.yahooapis.com/forecastrss?w=545766&u=c) [function.file-get-contents]: failed to open stream: no suitable wrapper could be found in …/Wetter/wetter_debug.php on line 19
    Folgende XML-Daten wurden geladen:

  • Eine bei Providern weit verbreitete Konfiguration, dass man externe Datei per fopen() nicht laden darf. Die Einstellung ist auch auf öffentlichen Servern sinnvoll, da sie häufig als Sicherheitslücke ausgenutzt werden kann. Es gibt aber eine Alternative, die du mal probieren kannst:

    Was im ersten Testskript in Zeile 19 einfach per „file_get_contents(..)“ gemacht wurde, wird jetzt über eine cURL-Session gemacht. Dazu ist das PHP-Modul „cURL“ von Nöten, welches aber von vielen Providern freigeschaltet ist.

    Bitte probier‘ es noch einmal damit und lass mich das Ergebnis wissen…

  •  was muss ich da beim ursprünglichen skript ändern?

    sieht gleich viel, viel besser aus:

     

  • Na, Bingo!

    Dann setzen wir das Puzzle mal zusammen. Bitte ersetze im „Original“-Wetterskript die Zeile 127

    durch die Zeilen 17-22 des zweiten Testskripts.

    Damit sollte alles laufen.

     

  • So, jetzt hat er ein Problem im der Zeile 138 (ehemals im Original 133), das hatte er vorher auch schon:

    Fatal error: Call to a member function attributes() on a non-object in …Wetter/Wetter.php on line 138

  • OK, hatte ich am Anfang als Folgefehler eingestuft. Evtl. ist bei dir (bzw. auf dem Server deines Providers) das SimpleXML-Modul nicht freigeschaltet.

    Erstell‘ mal bitte eine Datei phpinfo.php mit folgendem Inhalt:

    Gibt es dort einen Abschnitt „SimpleXML“?

    simplexml

  • Ja, gibt es:

    Revision:   $Revision: 302715$

    Schema support: enabled

     

  • Welche PHP-Version hast bzw. unter welcher URL kann ich mir die phpinfo.php mal ansehen?

  • http://leonding0620.funpic.de/Wetter/phpinfo.php

    …ich bin auch für einen alternativen Server-Anbieter offen, falls dieser das nicht kann…

  • Wieso läßt du das eigentlich nicht direkt auf deinem Xibo-Server laufen? Dort hast du dann ja die „Macht“ über die PHP-Einstellungen…

  • Naja, ich habe keinen eigenen webserver, nutze deshalb den xibo-server von http://www.xibo-de.com

  • Ah, ok. Verstehe. Also, ich sehe zwei Möglichkeiten: entweder du fragst bei VI, ob du auf deren Server zusätzliche Skripte hosten darfst oder du suchst dir unabhängig einen eigenen Server bzw. Webspace. An der Stelle möchte ich dir meinen Webhoster Webhostone empfehlen, wo ich seit Jahren zufriedener Kunde bin.

  • Hallo Michael

    Ich habe  gleiche Problem wie Jürgen

    So, jetzt hat er ein Problem im der Zeile 138 (ehemals im Original 133), das hatte er vorher auch schon:

    Fatal error: Call to a member function attributes() on a non-object in …Wetter/Wetter.php on line 138

    Ich habe meinen eigenen Apache Server auf CentOS. Kann das an Proxy/Firewall liegen? Xibo Server wird intern benutzt und liegt nicht in DMZ

  • Hallo Rostom,

    lade auf deinem Apache Server mal mit folgendem Befehl die eigentliche XML-Datei herunter, die verwendet werden soll.

    Bitte ändere die Orts-ID 704283 in die ID, die du für deinen Ort verwendest.

    Poste den Inhalt der Datei /tmp/weather.xml dann hier mal.

  • Hier ist inhalt von wether.xml

     

     

  • Das sind Fehlermeldungen aus /var/log/httpd/error_log:

    [Wed Feb 26 14:50:55 2014] [error] [client 198.168.25.7] PHP Notice:  Trying to get              property of non-object in /var/www/html/xibo/xibo_wetter_at/wetter2.php on line 138
    [Wed Feb 26 14:50:55 2014] [error] [client 198.168.25.7] PHP Notice:  Trying to get property of non-object in /var/www/html/xibo/xibo_wetter_at/wetter2.php on line 138
    [Wed Feb 26 14:50:55 2014] [error] [client 198.168.25.7] PHP Notice:  Trying to get property of non-object in /var/www/html/xibo/xibo_wetter_at/wetter2.php on line 138
    [Wed Feb 26 14:50:55 2014] [error] [client 198.168.25.7] PHP Fatal error:  Call to a member function attributes() on a non-object in /var/www/html/xibo/xibo_wetter_at/wetter2.php on line 138

  • und das sind lines von Fehlermeldung

    Danke

     

  •  

     

  •  

  • Also, irgendwas muss da mit der XML-Datei nicht funktionieren, auch wenn die Ausgabe deines wget’s gut aussieht.

    Hast du diese Testseite schon mal ausprobiert? 

  • Ja, das habe ich schon ausprobiert. Ich habe genau gleiche Fall wie Jürgen 🙁

  • Hi, Nice work,, i;m running Xibo on a Andriod device and this is the first time i get a

    nice weather forecast.  One thing i like to know how do i get this in English ore even better

    in Dutch.  My be you have eny idea..

    Kind regards Frank Verdonk

  • Hi,

     

    erstmal vielen Dank für die Super-Scripts, die zudem noch kostenfrei und gut dokumentiert hier vorgestellt.

     

    Ich habe heute mal xibo auf einem Android-Device installiert und mit meiner/einer Präsentation (mit drei Regionen) „gefüttert“.

    Während auf einem Linux- und Windows-Client Deine Scripts Wetter und Kurse angepasst in einer schmalen hochkantigen Region dargestellt werden, wird beim Android-Client die Breite der Region quasi als Gesamtbreite der Webpage interpretiert. Somit erscheint das Ergebnis des Scripts im Seitenverhältnis 16:9 ganz oben in der Region. Ich habe noch keine Ahnung, wie ich das anpassen soll.

    Gruß

    Klaus

  • „Sorry“. Erst einmal für die späte Antwort und für die Tatsache, dass ich leider keinerlei Erfahrungen mit dem Android-Client habe. Da kann ich dir nicht weiterhelfen 🙁

  • Hi, sorry ich bin ein absoluter Neuling, was PHP und MySQL angeht.

     

    Ich habe das Problem, dass bei deinem Script die Umlaute nicht angezeigt werden, sondern nur ein Kasten mit einem Fragezeichen drin.

    PHP läuft mit UTF-8

    Woran könnte es noch liegen?

     

    Sorry, wenn das eine dumme Frage ist!

     

     

  • Du könntest versuchen im <head></head>-Bereich folgendes einzufügen:

     

  • Michael K aus B

    Hallo,

    vielen Dank für deinen genialen Script. Die Anzeige ist genauso, wie ich das brauche und deshalb habe ich das jetzt schon seit über einem Jahr bei uns in der Firma im Einsatz.

    Doch seit letzter Woche kommt folgender Fehler, wenn ich den Script aufrufe:

    „Please provide valid credentials. OAuth oauth_problem=“OST_OAUTH_PARAMETER_ABSENT_ERROR“, realm=“yahooapis.com““

    Hab schon eine Erklärung gefunden. => https://www.igorkromin.net/index.php/2016/03/27/yahoo-effectively-shut-down-its-weather-api-by-forcing-oauth-10-and-crippling-it/

    Hast du eine Idee, was man da machen könnte? Welchen anderen Wetterprovider „unterstützt“ du zukünftig?

  • OK, war alles einfacher als gedacht. Hier geht es weiter: https://noltenet.de/2016/03/30/neue-datenquelle-fuer-wetter-skript/

  • Michael K aus B

    SUPPPPPPEEEEERRRR!!!!!!

  • Christian Voit

    Hi, super Arbeit!

    Leider bekomme ich bei tuxnet nun auch :“Forbidden – You don’t have permission to access on this server.“

    Werden wir auf eine blacklist gesetzt, weil das Abholintervall zu kurz ist?

    Als URL für Marbella (Deutsche Schule) verwenden wir: http://weather.tuxnet24.de/?id=SPXX0054

    Ich kann in Xibo auch keine Möglichkeit finden, für das Wetterskript ein eigenes Abholintervall (1h) einzustellen.

    Danke und Gruß,

    Christian

     

  • Hallo Christian. Danke für den Hinweis. Nach Rücksprache mit dem Betreiber der API dürfen pro IP-Adresse maximal 400 Abrufe pro Tag erfolgen.

    Ich habe deshalb dem Skript einen Caching-Mechanismus verpasst. Standardmäßig werden die Daten nur noch alle 15 Minuten von der API geladen, egal wie oft das Wetter-Skript in Xibo aufgerufen wird. Innerhalb der 15 Minuten werden die Daten aus einer lokalen XML-Datei geladen, die beim Abruf der API auf dem Server gespeichert wird. Bitte lade die neueste Version von GitHub…

    Michael 🙂

  • Hi, das „alte“ Script nutze ich schon seit Jahren. Immer noch vielen Dank dafür!!!

    leider bekomme ich beim Aufruf des neuen Scripts folgenden Fehlerhinweis:
    Die Seite exxx.mxxxx.de funktioniert nicht
    exxx.mxxxx.de kann diese Anfrage momentan nicht verarbeiten.
    500

    Das Kurse-Script z.B. läuft einwandfrei. Ich habe Dein Script aus Github kopiert und GMXX0007 für meinen Ort eingetragen.

    Hüüülfe…

  • Hallo Klaus. Funktioniert das Skript nicht, seit dem ich das Caching einbebaut habe oder vorher auch schon nicht? Hast du Zugriff auf die phperror.log? Was steht da drin?

  • Hallo Michael, danke fürs kümmern. Den Fehler gab es aber schon vorm caching. Die error.log meldet einen parse-Fehler: „PHP Parse error:  syntax error, unexpected ‚[‚ in /var/www/vhosts/xxxx/wetter.php on line 156“

    line 156: $wetter[0][‚temperatur‘] = split(“ „,$api->current_temp)[0];

    Das scheint mir aber an der verwendeten PHP-Version zu liegen. Der „fehlerhafte“ Server hat 5.3.3, während es auf einer anderen Domain mit 5.4.45 (gerade mal ausprobiert) super läuft.

    Also Entwarnung, ich lasse das Wetter-Script für Xibo eben einfach auf dem anderen Server laufen. Vielen Dank für Deine Arbeit!!!

    Klaus

  • Schade, jetzt hat es seit mehr als einer Woche funktioniert. Jetzt bekomme ich für meinen Ort keine Wetterinformationen mehr. Ich kann auf der Seite http://weather.tuxnet24.de/?action=citycode&lang=de nicht mal mehr nach meiner Stadt suchen. Die Suchfunktion findet im Moment (weltweit) nichts mehr.

     

  • Michael K aus B

    Leider muss auch ich darüber berichten, das das ganze sehr „fehleranfällig“ ist.

    So kann ich zwar den Code für die Stadt Ulm finden (GMXX0131) – aber ein Aufruf im Browser mit http://weather.tuxnet24.de/?id=GMXX0131  bringt gar nichts als Ergebniss. Dann das selbe mit Stuttgart (GMXX0128) bringt zwar Daten – aber wenn ich dann noch die benötigte „&unit=c&mode=xml“ hinzufüge, dann war gestern keine Rückgabe möglich (heute geht es grad)

    Gibt es einen alternativen Dienst für die Werte? Oder was kann man machen, damit die Abfrage auch zuverlässig Werte übermittelt?

    Danke für die Mühe!!!

  • Christian Voit

    Auch hier bei mir geht nichts.
    Wäre das vielleicht eine Quelle:

    Weather Underground: https://www.wunderground.com/weather/api/

  • Ich würde gerne abwarten, ob sich die aktuelle API wieder „erholt“. Technische Probleme kann es ja immer mal geben. Ein Umstieg auf eine weitere API, z.B. Weather Underground oder OpenWeatherMap würde bedeuten, dass jeder einen API-Key dort haben muss. Das wollte ich eigentlich vermeiden, da es so schön einfach ist…

  • Hallo erst mal und vielen Dank für das Wetterscript!

    Leider habe ich ein Problem damit, in der Vorschau werden alle Symbole schön dargestellt, jedoch am Xibo-Client fehlen diese. Ich habe die wetter.php als Webpage eingebunden, wie oben beschrieben, trotzdem klappt es leider nicht. Was mache ich noch falsch?

  • Hallo nochmals,

    ich konnte mein Problem selbst lösen. Mir war nicht klar, dass der Client Internet-zugriff benötigt, um die Icons herunterzuladen. Ich habe die Icons nun manuell geladen und auf dem Server abgelegt.  Mit dem lokalen Zugriff funktioniert es.

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.