AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Wetterstation Daten auslesen/speichern
Thema durchsuchen
Ansicht
Themen-Optionen

Wetterstation Daten auslesen/speichern

Ein Thema von harfes · begonnen am 10. Jul 2023 · letzter Beitrag vom 11. Jul 2023
Antwort Antwort
Seite 1 von 2  1 2      
harfes

Registriert seit: 25. Jun 2006
Ort: Rand der Scheibe
180 Beiträge
 
Delphi 11 Alexandria
 
#1

Wetterstation Daten auslesen/speichern

  Alt 10. Jul 2023, 07:03
Ich habe eine neue Wetterstation (Hersteller Davis "WeatherlinkLive") im lokalen Netzwerk und möchte die Datenverarbeitung automatisieren. Dazu ist es möglich, die Daten der Station via IP-Adresse auszulesen (http://192.168.1.91/v1/current_conditions) - im Browser ergeben sich dann folgende Möglichkeiten bzw Darstellungen:

1. als Jason-Format

ODER

2. als Text-Format

Das kann ich dann natürlich speichern und dort die Weiterverarbeitung via Delphi starten. Das würde aber heissen, das jedesmal von Hand durchzuführen, was natürlich Unsinn ist. Meine Frage also, da ich sowas noch nie gemacht habe: wie kann ich die Daten ohne Browser auslesen (evtl. Indy-Komponenten? oder andere Komponenten?) und für die Weiterverarbeitung entweder direkt in eine DB (evtl. in Firebid-DB) oder eine Datei speichern?

Hartmut
Miniaturansicht angehängter Grafiken
davis01.jpg   davis02.jpg  
Hartmut
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
646 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Wetterstation Daten auslesen/speichern

  Alt 10. Jul 2023, 07:48
ich benutze das hier in ibexpert für aus auslesen von stromverbrauchswerten auf shelly, technisch macht der da
genau das was du auch brauchst, setzt aber wegen ibeblock die ibexpert vollversion voraus, liesse sich aber
in delphi direkt auch machen

uses urlmon; UrlDownloadToFile (gab es zumindest mal so)


Code:
execute ibeblock
as
begin
  DB = ibec_CreateConnection(__ctInterBase,
                             'DBName="127.0.0.1:C:\db\db.fdb";
                             ClientLib=C:\Program Files (x86)\HK-Software\IBExpert\firebird3\fbclient.dll;
                             User=SYSDBA; Password=masterkey; Names=UTF8; SqlDialect=3;');
  use db;
  ibec_url_DownloadToVar('http://192.168.0.123/rpc/Switch.GetStatus?id=0',dat,'');
  insert into SHELLY (CH, DAT) values ('p1', :DAT);
  commit;
end
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
650 Beiträge
 
Delphi 12 Athens
 
#3

AW: Wetterstation Daten auslesen/speichern

  Alt 10. Jul 2023, 08:25
Das kann ich dann natürlich speichern und dort die Weiterverarbeitung via Delphi starten. Das würde aber heissen, das jedesmal von Hand durchzuführen, was natürlich Unsinn ist. Meine Frage also, da ich sowas noch nie gemacht habe: wie kann ich die Daten ohne Browser auslesen (evtl. Indy-Komponenten? oder andere Komponenten?) und für die Weiterverarbeitung entweder direkt in eine DB (evtl. in Firebid-DB) oder eine Datei speichern?
Viele Wege führen zum Ziel. Du kannst das mit den Indy-Komponenten machen, du kannst das selber mit den eingebauten HTTP-Komponenten von Delphi machen, mit den REST-Komponenten von Delphi und vielen anderen Komponenten.

Hier der Einstieg wie das mit dem mitgelieferten REST-Client geht.
  Mit Zitat antworten Zitat
hans65

Registriert seit: 1. Feb 2007
Ort: Sachsen
23 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Wetterstation Daten auslesen/speichern

  Alt 10. Jul 2023, 09:16
oder Download per Batch und lokale Datei verarbeiten:
wget URL
curl URL
  Mit Zitat antworten Zitat
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
526 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Wetterstation Daten auslesen/speichern

  Alt 10. Jul 2023, 10:30
Benutze die Weatherlink REST API
Auch hier
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.

Geändert von taveuni (10. Jul 2023 um 10:34 Uhr) Grund: Link zu local Api hinzugefügt
  Mit Zitat antworten Zitat
harfes

Registriert seit: 25. Jun 2006
Ort: Rand der Scheibe
180 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Wetterstation Daten auslesen/speichern

  Alt 10. Jul 2023, 10:38
Danke an euch für die Infos! Ich werde es mal mit den mitgelieferten Delphi-Komponenten versuchen...und hier nachfragen, falls ich irgendwo stecken bleibe.

Hartmut
Hartmut
  Mit Zitat antworten Zitat
Pfaffe

Registriert seit: 29. Jan 2009
294 Beiträge
 
Delphi 12 Athens
 
#7

AW: Wetterstation Daten auslesen/speichern

  Alt 10. Jul 2023, 12:23
Sollte so gehen:
Delphi-Quellcode:
unit uDMHTTP;

interface

uses
  System.SysUtils, System.Classes, System.Net.URLClient, System.Net.HttpClient, System.Net.HttpClientComponent;

type
  TDMHTTP = class(TDataModule)
    NetHTTPRequest1: TNetHTTPRequest;
    NetHTTPClient1: TNetHTTPClient;
  private
    { Private declarations }
  public
    function GetRespString(const aURL: string): string;
  end;

var
  DMHTTP: TDMHTTP;

implementation

{$R *.dfm}

{ TDMHTTP }

function TDMHTTP.GetRespString(const aURL: string): string;
var
  strstr: TStringStream;
begin
  strstr := nil;
  try
    strstr := TStringStream.Create;
    NetHTTPRequest1.Get(aURL, strstr);
    // strstr.SaveToFile('c:\temp\_a.json')
    Result := strstr.DataString;
  finally
    strstr.Free;
  end;
end;

end.

Also:
jsonstr:= DMHTTP.GetRespString('http://192.168.1.91/v1/current_conditions/xxxx.json');
Dann den jsonstr mit TJSONObject bzw. TJSONArray, unit System.JSON, auswerten.
  Mit Zitat antworten Zitat
harfes

Registriert seit: 25. Jun 2006
Ort: Rand der Scheibe
180 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Wetterstation Daten auslesen/speichern

  Alt 10. Jul 2023, 12:28
@Pfaffe: vielen Dank für den Sourcecode!!!!

Hartmut
Hartmut
  Mit Zitat antworten Zitat
mytbo

Registriert seit: 8. Jan 2007
461 Beiträge
 
#9

AW: Wetterstation Daten auslesen/speichern

  Alt 10. Jul 2023, 16:37
Bei Davis kannst du die Daten über die REST API wie folgt mit mORMot1 laden.
Delphi-Quellcode:
// USERNAME = '...';
// PASSWORD = '...';
// APITOKEN = '...';
procedure TDWSRestServer.DownloadDWData(pmSender: TSynBackgroundTimer; pmEvent: TWaitResult; const pmcMsg: RawUTF8);
const
  URL_TEMPLATE = 'https://api.weatherlink.com/v1/NoaaExt.json?user=%&pass=%&apiToken=%';
var
  log: ISynLog;
  url: SockString;
  content: SockString;
begin
  log := LogClass.Enter(Self, 'DownloadDWData');
  with FRestServiceSettings do
    url := StringToAnsi7(FormatString(URL_TEMPLATE, [DWUserName, DWUserPassword, DWUserAPIToken]));

  content := HttpGet(url);
  InitializeWeatherDataFields(content);
  ...
end;
Zum Bezug der Daten benötigst du nur die Funktion HttpGet. Wir laden im 60 Sekunden Rhythmus und blenden die Daten im Vereinsflieger ein. Die Flugleitung hat dann die aktuellen Werte unserer Wetterstation immer im Sichtfeld.

Bis bald...
Thomas

Geändert von mytbo (10. Jul 2023 um 16:41 Uhr)
  Mit Zitat antworten Zitat
harfes

Registriert seit: 25. Jun 2006
Ort: Rand der Scheibe
180 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Wetterstation Daten auslesen/speichern

  Alt 11. Jul 2023, 16:28
Hallo Thomas,

auch einen Dank an Dich für den Code. Ich meine aber gelesen zu haben, dass das Auslesen in so kurzen Abständen direkt von Davis nur möglich ist, mit einem bezahlten Vertrag - sonst wohl nur alle 15 Minuten (aber vielleicht hat sich da ja was geändert). Daher bevorzuge ich, die Daten direkt von meiner WeatherLink Live Box auszulesen und werde es erstmal mit dem Code von Pfaffe versuchen.

Hartmut
Hartmut
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz