[gelöst] [JSONMOD] Währungsabfrage über eine API

Begonnen von sash.sc, 01 Januar 2023, 13:11:07

Vorheriges Thema - Nächstes Thema

sash.sc

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
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

betateilchen

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?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

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


-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

sash.sc

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
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

betateilchen

Das löst jetzt zwar meine Unverständnis über Deine Frage nicht,
aber schön, dass Du es irgendwie gelöst hast.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

sash.sc

#5
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.
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

sash.sc

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!