Wetterdaten vom Spielort

Ich habe einen Blog Artikel verfasst - Wie benutze ich die Suche richtig - Bitte diesen beachten und auch umsetzen bevor Ihr ein Neues Thema eröffnet!

  • Die fehlenden Einträge zum Wetter in der Spielstatistik haben mich gestört. Leider hat der Dienst OpenWeatherMap im letzten Jahr sein Angebot geändert und der Dienst ist ohne einen gültigen API-Key nicht mehr nutzbar. Einen solchen 32-stelligen Key bekommt man dort auch als Freeuser - es ist also lediglich eine Registrierung nötig. Diesen Key kann man später am Ende der Konfigurationsseite eingeben. Wird dort kein Key eingegeben, dann entfallen die Wetterdaten in der Spielstatistik. Wie immer gilt: Vor dem Überschreiben von Dateien die bestehenden sichern und da Änderungen an der DB gemacht werden, kann ein Backup der Datenbank auch nicht schaden!


    Zur Verwaltung des Keys ist eine Erweiterung der Tabelle {prefix}config um das Feld owapi nötig:

    SQL
    1. ALTER TABLE emtipp_config ADD owapi VARCHAR(32) NOT NULL DEFAULT '';


    Außerdem werden einige der Spielort über den Namen nicht eindeutig gefunden. OpenWeatherMap bietet neben der Suche nach einem Ort als Text auch sog. City IDs an. Diese Abfragen sind eindeutig. Dazu muss die Tabelle {prefix}stadien um ein Feld "owid" erweitert werden. Die folgenden SQL-Zeilen erweitern die Tabelle und füllen das neue Feld mit Daten:

    SQL
    1. ALTER TABLE emtipp_stadien ADD owid VARCHAR(7) NOT NULL DEFAULT '' ;UPDATE emtipp_stadien SET owid = '2980916' WHERE id = 1;UPDATE emtipp_stadien SET owid = '2995469' WHERE id = 2;UPDATE emtipp_stadien SET owid = '6441821' WHERE id = 3;UPDATE emtipp_stadien SET owid = '2988507' WHERE id = 4;UPDATE emtipp_stadien SET owid = '2998324' WHERE id = 5;UPDATE emtipp_stadien SET owid = '3003093' WHERE id = 6;UPDATE emtipp_stadien SET owid = '3031582' WHERE id = 7;UPDATE emtipp_stadien SET owid = '2980291' WHERE id = 8;UPDATE emtipp_stadien SET owid = '2972315' WHERE id = 9;UPDATE emtipp_stadien SET owid = '2990440' WHERE id = 10;


    In der Datei include/inc.config.php ist eine Zeile für den API-Key hinzuzufügen. Ich habe es nach der Zeile 40 ("$CONFIG['SPIEL']['COMMENTS'] = $row["co"];") eingefügt:


    PHP: include/inc.config.php
    1. $CONFIG['SPIEL']['OWAPIKEY'] = $row["owapi"];


    Nun noch die beiden Dateien content/admin.config.php und content/statistik.spiel.php austauschen, API-Key eingeben und das sollte es gewesen sein. Wer einfach nur die Striche bei den Wetterdaten weg haben will, der kann auch nur die content/statistik.spiel.php austauschen.


    Viel Spaß beim Ausprobieren - ich hoffe, dass ich nichts vergessen habe...

    Dateien

    • upload.zip

      (16,7 kB, 96 Mal heruntergeladen, zuletzt: )
    • wetter.jpg

      (19,92 kB, 24 Mal heruntergeladen, zuletzt: )

    Einmal editiert, zuletzt von ingoh ()

  • wer die Wetterdaten braucht muss das selber einbauen im Update ende Mai wird es nicht enthalten sein
    da sonst wieder vergessen wird die Config neu auszufüllen und es wieder kommen wird "mein Tippspiel geht nicht mehr "
    zumal es in meinen Test´s keine anzeige der Wetterdaten brachte die sind dann nur verschwunden

    Dateien

    • wetter.png

      (17,61 kB, 21 Mal heruntergeladen, zuletzt: )

    Zufrieden mit dem Script und dem Support?
    Möchtest du uns unterstützen?
    Dann könntest du etwas

              Spenden


  • Hallo,
    ich habe mir einen Schlüssel generieren lassen und hab ihn im Adminbereich eingetragen.


    Wenn ich jetzt bei einem Spiel nachschaue steht einfach nur:


    Wetter: 0 °C - - Luftfeuchtigkeit: %


    wenn ich den Schlüssel rauslösche, ändert sich an der Anzeige nichts.


    Was mache ich denn hier falsch?


    Vielen Dank im Voraus.


    Compoundbow83

  • Hallo oldi,
    ohne, dass ich vorher etwas geändert habe, war in der Datenbank das Feld bei der config und in der include/inc.config.php der Eintrag vorhanden.


    Aber ich hatte dann das Feld bei den Stadien nicht mehr geprüft.


    Das Feld in Stadien habe ich nun ergänzt und die Daten eingetragen.


    Jetzt passt alles vielen Dank.

  • Meinst du mit "Feld in den Stadien" die MySQL Updates?
    Die habe ich eingespielt, bekomme aber dennoch keine Wetterdaten...

    The definition of open: mkdir android ; cd android ; repo init -u git://android.git.kernel.org/platform/ manifest.git ; repo sync ; make

  • Ich schaue nachher mal. Erstmal Mittagspause. :)


    Edit: Läuft. Danke für den Hinweis, @oldie.


    Gesendet von meinem SM-G935F mit Tapatalk

    The definition of open: mkdir android ; cd android ; repo init -u git://android.git.kernel.org/platform/ manifest.git ; repo sync ; make

    Einmal editiert, zuletzt von viruz ()

  • Wenn man Wetterdaten NACH Komplettpaket + Update haben will, müsst ihr folgendes tun:
    Aus Post 1 ist nicht alles notwendig, da in der DB schon etwas eingebracht wurde.


    1. Den API-Key muss man anfordern, wie oben beschrieben.
    2. Dann muss der Key über die Admin-Konfigurationsseite des Tippspieles eingetragen werden.
    3. Den ersten SQL-Befehl aus Post 1 muss man nicht machen, da die Tabelle {prefix}config das Feld "owapi" bereits enthält.
    4. Die 2. SQL-Abfrage muss gemacht werden, da die Tabelle {prefix}Stadien das Feld "owid" noch nicht enthält und damit auch keine IDs.
    5. In den Dateien include/inc.config.php und content/admin.config.php muss auch nichts getan werden, da die Änderungen auch schon drin sind.
    6. in der Datei include/statistik.spiel.php aus

    PHP
    1. $url="http://api.openweathermap.org/data/2.5/weather?q=".getStadium($row['stadium'],"ort")."&units=metric&lang=de";


    das machen:

    PHP
    1. $url="http://api.openweathermap.org/data/2.5/weather?id=".getStadium($row['stadium'],"owid")."&units=metric&lang=de&appid=".$CONFIG["SPIEL"]["OWAPIKEY"];


    (oder aus Post 1 die Dateien nehmen)


    @ingoh: du könntests das in deinem Post oben anmerken. Eventuell musstest du das oben noch machen, bevor das Komplettpaket und das Update fertig war...


    Dann klappt es auch mit den Wetterdaten sofort.


    Was müsste noch beachtet werden:
    1. Die Anzahl der Wetterdatenabrufe sind für Freeuser stark limitiert!
    Damit ist es abhängig von der Anzahl der User und deren aufgerufener Seiten, ob Wetterdaten angezeigt werden.
    Normalerweise können Wetterdaten nur alle 10min aufgerufen werden.
    Das könnte dann in einer Nichtanzeige der Wetterdaten enden.
    2. Die Wetterdaten werden momentan nicht in der DB gespeichert, um Punkt 1 aus dem Weg zu gehen
    Da könnte man die Werte in die emtipp_stadien mit Aktualisierungsdatum/zeit schreiben. Wenn dann mit einem Aufruf keine 10min um sind, dann brauchen nur die Werte aus der DB geholt werden
    --> Ich komme leider nicht dazu, das eben zu programmieren...

    XCRIPT.DE - Home of BuLitipp, the original!

    Zufrieden mit dem Skript und dem Support? Möchtest du uns unterstützen?

    Dann könntest du etwas

    SPENDEN

  • Cache für die Wetterdaten war noch auf meiner ToDo-Liste. Dazu die Tabelle {PREFIX}stadien um die Felder temp, humidity, descr und lastupdate erweitern:

    SQL
    1. ALTER TABLE emtipp_stadien ADD temp integer ;
    2. ALTER TABLE emtipp_stadien ADD humidity integer ;
    3. ALTER TABLE emtipp_stadien ADD descr varchar(80) not NULL default '' ;
    4. ALTER TABLE emtipp_stadien ADD lastupdate timestamp not NULL default '0000-00-00 00:00:00' ;

    Nun die Datei content/statistik.spiel.php mit der aus dem Anhang austauschen. Nun sollten die Daten alle 10 Minuten für das jeweilige Stadion neu aus dem Netz geholt und ansonsten die Version im "Cache" genutzt werden. Die Anweisungen aus meinem 1. Posting sind zusätzlich nötig bzw. bei Verwendung der "Finalen Version" sollte man die Hinweise von @Kassi beachten!

  • @ingoh
    Funktioniert super.


    Ich hatte zwar geschrieben, dass ich nicht dazu komme, aber der Ehrgeiz hatte mich nun doch gepackt.
    Du warst schneller ABER genau so sah es bei mir auch aus!


    Das hast du super gemacht DANKE!

    XCRIPT.DE - Home of BuLitipp, the original!

    Zufrieden mit dem Skript und dem Support? Möchtest du uns unterstützen?

    Dann könntest du etwas

    SPENDEN

  • Schade, dass wir die Arbeit doppelt gemacht haben. Da ich damit angefangen hatte, wollte ich es dann auch zu Ende bringen. Meine Art von Ehrgeiz ;-)


    Ist Dir aufgefallen, dass die statistik.spiel.php scheinbar "doppelt" aufgerufen wird? Zumindest ist das aus der Gruppenübersicht so - bei den Finalspielen aus dem Finalbaum nicht. Hat mich bei der Überprüfung ob die Daten aus dem Cache kommen etwas verwirrt, habe aber nicht weiter nachgeforscht.

  • doppelter Aufruf:
    ist mir nicht aufgefallen.
    Wie hast du das festgestellt?
    Brauchst du nur zu schreiben, wenn es keinen großen Aufwand macht. Ich will hier keine Arbeit generieren...

    XCRIPT.DE - Home of BuLitipp, the original!

    Zufrieden mit dem Skript und dem Support? Möchtest du uns unterstützen?

    Dann könntest du etwas

    SPENDEN

  • doppelter Aufruf:
    ist mir nicht aufgefallen.
    Wie hast du das festgestellt?
    Brauchst du nur zu schreiben, wenn es keinen großen Aufwand macht. Ich will hier keine Arbeit generieren...

    Ich hatte jeweils ein error_log() in den Cache- und Nicht-Cache-Zweig vom if eingebaut. Kamen immer beide debugs und ich habe zuerst dort nach einem Fehler gesucht. Aufgerufen von "finale/turnierbaum/" ist es Ok.