FHEM Forum

FHEM => Automatisierung => Thema gestartet von: sash.sc am 01 Januar 2023, 13:11:07

Titel: [gelöst] [JSONMOD] Währungsabfrage über eine API
Beitrag von: sash.sc am 01 Januar 2023, 13:11:07
Hallo zusammen.

Ich möchte über eine API eine Währung abfragen. EUR/USD

Über die Abstract API sieht es so aus.

https://exchange-rates.abstractapi.com/v1/live/?api_key=xxxxxxxxx&base=EUR&target=USD

Wenn ich auf der abstract api seite den String absetze,bekomme ich folgendes geliefert.

{
    "base": "EUR",
    "last_updated": 1672406100,
    "exchange_rates": {
        "USD": 1.0666
    }
}


Ich habe mir folgendes definiert. Weiß aber nicht wo ich die Anfrage an die API (&base.......) unterbringen soll.


Internals:
   API_LAST_MSG 200
   API_LAST_RES 1672574400.626
   CFGFN     
   DEF        https://exchange-rates.abstractapi.com/v1/
   FUUID      63b173b7-f33f-852e-ed78-13d82507b91a3f07
   NAME       EUR
   NEXT       2023-01-01 13:30:00
   NR         39257
   SOURCE     https://exchange-rates.abstractapi.com/v1/ (200)
   STATE      ???
   SVN        24783 2021-07-21 22:37:12 UTC
   TYPE       JsonMod
   eventCount 8
   CONFIG:
     IN_REQUEST 0
     SOURCE     https://exchange-rates.abstractapi.com/v1/
     SECRET:
   READINGS:
     2023-01-01 13:00:00   EUR_USD         N/A
Attributes:
   interval   */30 * * * *
   readingList single(jsonPath('$.data[0]'), 'EUR_USD', 'N/A');
   room       JSONMOD


Jemand einen Hinweis ?!?!

Danke schonmal.

Gruß Sascha
Titel: Antw:[JSONMOD] Währungsabfrage über eine API
Beitrag von: betateilchen am 01 Januar 2023, 15:02:27
Ehrlich gesagt, habe ich Deine Frage jetzt 5 Mal gelesen, aber ich verstehe sie immer noch nicht.

Du hast doch eine URL gepostet, in der apikey, base und target enthalten sind. Warum verwendest Du diese URL nicht im DEF Deines JsonMod devices?
Titel: Antw:[JSONMOD] Währungsabfrage über eine API
Beitrag von: betateilchen am 01 Januar 2023, 15:15:05
Gerade getestet, funktioniert völlig stressfrei


defmod testJM JsonMod https://exchange-rates.abstractapi.com/v1/live/?api_key=...ef&base=USD&target=EUR
attr testJM readingList complete()

setstate testJM 2023-01-01 15:10:46 .computedReadings last_updated,exchange_rates.EUR,base
setstate testJM 2023-01-01 15:10:46 base USD
setstate testJM 2023-01-01 15:10:46 exchange_rates.EUR 0.937559
setstate testJM 2023-01-01 15:10:46 last_updated 1672406100


Titel: Antw:[JSONMOD] Währungsabfrage über eine API
Beitrag von: sash.sc am 01 Januar 2023, 17:26:35
Habe es durch ein wenig testen hinbekommen. Bin nur über eine andere Seite/Anbiter gegangen, wegen den Requests.


API_LAST_MSG 200
   API_LAST_RES 1672590178.10879
   CFGFN     
   DEF        https://www.alphavantage.co/query?function=CURRENCY_EXCHANGE_RATE&from_currency=EUR&to_currency=USD&apikey=X
   FUUID      63b173b7-f33f-852e-ed78-13d82507b91a3f07
   NAME       EUR
   NEXT       2023-01-01 17:30:00
   NR         39257
   SOURCE     https://www.alphavantage.co/query?function=CURRENCY_EXCHANGE_RATE&from_currency=EUR&to_currency=USD&apikey=X
   STATE      EUR: 1.0712 $/€
   SVN        24783 2021-07-21 22:37:12 UTC
   TYPE       JsonMod
   eventCount 56
   CONFIG:
     IN_REQUEST 0
     SOURCE     https://www.alphavantage.co/query?function=CURRENCY_EXCHANGE_RATE&from_currency=EUR&to_currency=USD&apikey=X
     SECRET:
   OLDREADINGS:
   READINGS:
     2023-01-01 17:22:58   Preis           1.0712
Attributes:
   comment    # https://exchange-rates.abstractapi.com/v1/live
   interval   */15 * * * *
   readingList single(jsonPathf("\$['Realtime Currency Exchange Rate']['5. Exchange Rate']", '%0.4f'), 'Preis', 0);
   room       JSONMOD
   stateFormat EUR: Preis $/€



Danke für dein testen.

Gruß
Sascha
Titel: Antw:[gelöst] [JSONMOD] Währungsabfrage über eine API
Beitrag von: betateilchen am 01 Januar 2023, 18:50:28
Das löst jetzt zwar meine Unverständnis über Deine Frage nicht,
aber schön, dass Du es irgendwie gelöst hast.
Titel: Antw:[gelöst] [JSONMOD] Währungsabfrage über eine API
Beitrag von: sash.sc am 01 Januar 2023, 19:55:35
Habe alles in die URL der Definition gepackt. Anders ging es bis jetzt nicht. Finde es zwar nicht elegant den API key da mit rein zu packen, aber nun gut.

Hauptsache funktioniert.
Titel: Antw:[gelöst] [JSONMOD] Währungsabfrage über eine API
Beitrag von: betateilchen am 01 Januar 2023, 21:05:52
Zitat von: sash.sc am 01 Januar 2023, 19:55:35
Cover es zwar nicht elegant den Spikes da mit rein zu packen

???

Wahrscheinlich bin ich nach 7 Stunden Fahrt jetzt einfach zu müde, um das zu verstehen.
Egal.
Titel: Antw:[gelöst] [JSONMOD] Währungsabfrage über eine API
Beitrag von: sash.sc am 01 Januar 2023, 21:39:38
Hab's oben geändert. :-))
Titel: Antw:[gelöst] [JSONMOD] Währungsabfrage über eine API
Beitrag von: betateilchen am 01 Januar 2023, 21:51:55
Zitat von: sash.sc am 01 Januar 2023, 19:55:35
Finde es zwar nicht elegant den API key da mit rein zu packen,

musst du gar nicht, schau mal in die commandref zu JsonMod,
da gibt es einen Befehl "set <device> secret <identifier> <value>"

Bei mir sieht das tatsächlich so aus:


defmod exchange JsonMod https://exchange-rates.abstractapi.com/v1/live/?api_key=[apikey]&base=EUR&target=USD
attr exchange readingList complete()


und der apikey ist entsprechend als secret definiert.