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
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?
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
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
Das löst jetzt zwar meine Unverständnis über Deine Frage nicht,
aber schön, dass Du es irgendwie gelöst hast.
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.
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.
Hab's oben geändert. :-))
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.