Wetter

Alle Fragen zur Netzwerkkommunikation
Antworten
pascalts
Beiträge: 61
Registriert: Fr 10. Okt 2014, 13:16

Wetter

Beitrag von pascalts »

Moin!

Ich möchte in einem Mini-Programm mit ein paar simplen Icons das Wetter darstellen. Da meine Lazarus Programme noch nie in irgend einer Form auf auf das Internet zugegriffen haben, stehe ich am Anfang. Soweit vorweg. Ich suche also nach einer Möglichkeit, Wetter-Infos von einer Wetterwebsite auszuwerten. Hat das irgendwer schon einmal gemacht? Oder könnt ihr mir allgemeine Tipps dazu geben? Spontan fällt mir HTTP POST / GET ein. Allerdings weis ich nicht wie so etwas in Lazarus geht... Und mir fehlt noch eine Website, die Wetter in Plain-Text ausliefert...

Grüße!

//EDIT

Ich möchte das Ganze etwas präzisieren: Meine Wetterdaten würden so aussehen: http://weather.tuxnet24.de/?id=GMXX0007 bzw so: http://weather.tuxnet24.de/?mode=xml&id=GMXX0007
Zuletzt geändert von pascalts am Do 9. Jul 2015, 10:56, insgesamt 1-mal geändert.

baumina
Beiträge: 152
Registriert: Mo 3. Feb 2014, 14:07
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Wetter

Beitrag von baumina »

Meist ist ein automatisiertes Auslesen von Webinhalten von den Betreibern untersagt, da musst du also als erstes drauf achten. Oft werden Internetseiten umgestaltet, deswegen bietet sich das direkte aufrufen sowieso nicht an. Du solltest dich auf die Suche nach einer Wetterseite machen, die dir eine API anbietet, über die du zugreifen darfst.
.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Wetter

Beitrag von m.fuchs »

Ich habe mal eine Unit geschrieben, die Daten von der API auf http://www.wetter.com/ abrufen kann. Die könnte ich dir gerne zur Verfügung stellen. Du musst dich dann bloß beim Developer-Programm auf der wetter.com anmelden und einen API-Key für deine Anwendung beantragen. Kostet auch nix.
Allerdings habe ich noch keine Dokumentation für die Unit geschrieben, so kompliziert ist es aber nicht.

Soweit ich mich erinnere gibt es hier im Forum auch noch jemanden, der etwas Ähnliches für eine andere Datenquelle geschrieben hat.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

pascalts
Beiträge: 61
Registriert: Fr 10. Okt 2014, 13:16

Re: Wetter

Beitrag von pascalts »

m.fuchs hat geschrieben:Ich habe mal eine Unit geschrieben, die Daten von der API auf http://www.wetter.com/ abrufen kann. Die könnte ich dir gerne zur Verfügung stellen. Du musst dich dann bloß beim Developer-Programm auf der wetter.com anmelden und einen API-Key für deine Anwendung beantragen. Kostet auch nix.
Allerdings habe ich noch keine Dokumentation für die Unit geschrieben, so kompliziert ist es aber nicht.

Soweit ich mich erinnere gibt es hier im Forum auch noch jemanden, der etwas Ähnliches für eine andere Datenquelle geschrieben hat.


Ja, das wäre super. Ich habe mich mit der API von yahoo.com befasst, da läuft das ähnlich, die liefern wohl eine xml aus. Vielleicht kann ich deins soweit anpassen, das es mit yahoo läuft. Mail Adresse gebe ich gern per PN raus.

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Wetter

Beitrag von Socke »

Alternativ gibt es noch openweathermap.org. Die wichtigen Units aus dem Paket https://github.com/SAmeis/fpowm sind:
  • owmurloptions - Query-String für die JSON-API erstellen
  • owmdata - Datenmodell inklusive Hilfsfunktionen um die JSON-Antwort zu übernehmen
Die Datenbeschaffung muss jedoch selbst erfolgen z.B. mit der Klasse TFPSimpleHTTPClient (wird von FPC mit ausgeliefert).

Die Klassen lehnen sich direkt an die API an, siehe http://openweathermap.org/current
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

pascalts
Beiträge: 61
Registriert: Fr 10. Okt 2014, 13:16

Re: Wetter

Beitrag von pascalts »

So... ich habe mich jetzt etwas anders orientiert. Meine Prozedur sieht so aus:

Code: Alles auswählen

procedure TfMAIN.FormCreate(Sender: TObject);
 
var
  weathertext:String;
begin
   weathertext:=TFPCustomHTTPClient.SimpleGet('http://weather.tuxnet24.de/?id=GMXX0051'); //Greift sich die Daten uns scheibt sie in einein String
   ShowMessage(weathertext);                                                                                                   //Gibt diesen probeweise aus... (klappt!)
   if pos(weathertext,'humidity')>0 then luftfeuchte:=copy(weathertext,pos(weathertext,'humidity')+11,pos(weathertext,'humidity')+14); //Sollte eigentlich die Zahl reinschreiben... (weil pos null ist natürlich nicht)
   ShowMessage(inttostr(pos(weathertext,'humidity'))); //ABER DAS GIBT IMMER 0 ZURÜCK
end;


Ich könnte heulen... Wo liege ich falsch?

//Okay, Fehler gefunden. Fehler in meiner Pos Funktion... peinlich. Seiten verdreht.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Wetter

Beitrag von pluto »

Es gibt noch openweathermap.

Die Nutzung der API ist soweit ich weiß Kostenlos und ist recht einfach.... ich habe damit aber noch nie was gemacht nur kurz ausprobiert.
MFG
Michael Springwald

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Wetter

Beitrag von Socke »

pluto hat geschrieben:Es gibt noch openweathermap.

siehe oben
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

pascalts
Beiträge: 61
Registriert: Fr 10. Okt 2014, 13:16

Re: Wetter

Beitrag von pascalts »

So, das System läuft soweit. Die Quelle Yahoo gefällt mir im Momentan noch nicht (sehr ungenau) aber darum kümmere ich mich später. Was jetzt fehlt, ist eine automatische Aktualisierung. Kann ich eine Prozedur oder Funktion zeitgesteuert ablaufen lassen, also alle 30min oder so? Sowas habe ich bisher nur in C / C++ gemacht. Geht das überhaupt in lazarus?

PS: Ich bin auf Debian Jessie auf einem RaspberryPi mit einem SPI TFT.

baumina
Beiträge: 152
Registriert: Mo 3. Feb 2014, 14:07
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Wetter

Beitrag von baumina »

Stichwort: TTimer
.

Antworten