Autor Thema: [JsonMod] Variable Pfade möglich?  (Gelesen 311 mal)

Offline Gernott

  • Sr. Member
  • ****
  • Beiträge: 516
[JsonMod] Variable Pfade möglich?
« am: 17 August 2022, 00:16:46 »
Nachdem alphavantage Realtime-Abfragen nur noch per Premium-Abo zuläßt, muß ich notgedrungen auf die Abfrage von Zeitreihen ausweichen.
Die Daten sehen so aus:
{
    "Meta Data": {
        "1. Information": "Forex Daily Prices (open, high, low, close)",
        "2. From Symbol": "EUR",
        "3. To Symbol": "CHF",
        "4. Output Size": "Compact",
        "5. Last Refreshed": "2022-08-16 20:30:00",
        "6. Time Zone": "UTC"
    },
    "Time Series FX (Daily)": {
        "2022-08-16": {
            "1. open": "0.96131",
            "2. high": "0.96795",
            "3. low": "0.96000",
            "4. close": "0.96581"
        },
        "2022-08-15": {
            "1. open": "0.96559",
            "2. high": "0.96640",
            "3. low": "0.96018",
            "4. close": "0.96103"
        },
        "2022-08-12": {
            "1. open": "0.97150",
            "2. high": "0.97220",
            "3. low": "0.96500",
            "4. close": "0.96549"
        },
        "2022-08-11": {
            "1. open": "0.97080",
            "2. high": "0.97317",
            "3. low": "0.96920",
            "4. close": "0.97128"
        },
...(Rest gekürzt)

Ich benötige nur den Wert "4. close" mit dem aktuellen Datum, also heute "2022-08-16".

Die Abfrage mit ReadingsList single funktioniert dann so:
single(jsonPathf("\$['Time Series FX (Daily)'].2022-08-16['4. close']", '%0.5f'), 'EURCHF', 0);

Nun müßte sich jeden Tag die Abfrage ändern. Leider habe ich bisher keine Möglichlkeit gefunden, dynamisch im Pfad das aktuelle Datum einzusetzen, wie z.B. mit
POSIX::strftime('%Y-%m-%d', localtime())
Das scheint in-line nicht zu gehen, zumindest habe ich nichts finden können.
Kann man einen vorher erzeugten Pfad-String per Variable einbinden oder ist noch ein anderer Ansatz notwendig?

Gruß
G.


Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18513
Antw:[JsonMod] Variable Pfade möglich?
« Antwort #1 am: 17 August 2022, 09:31:53 »
oder ist noch ein anderer Ansatz notwendig?

Vielleicht hilft schon der Ansatz, einfach mal die Forumsuche zu benutzen. Das Thema "variable URL in JsonMod" wurde bereits in mehreren Threads diskutiert, der letzte Thread war vor wenigen Tagen.
-----------------------
Möchte man beruflich "etwas mit Menschen" machen, ohne etwas mit deren Dummheit zu tun haben zu müssen,
bleibt eigentlich nur der Beruf des Bestatters übrig.
-----------------------
Lesen gefährdet die Unwissenheit!
Zustimmung Zustimmung x 1 Liste anzeigen

Offline yersinia

  • Hero Member
  • *****
  • Beiträge: 1510
    • Cyanide & Happiness
Antw:[JsonMod] Variable Pfade möglich?
« Antwort #2 am: 17 August 2022, 11:25:14 »
Vielleicht hilft schon der Ansatz, einfach mal die Forumsuche zu benutzen. Das Thema "variable URL in JsonMod" wurde bereits in mehreren Threads diskutiert, der letzte Thread war vor wenigen Tagen.
sigh, ja, vor allem weil eine ähnliche Fragestellung in diesem Board ein paar Zeilen weiter unten besteht. Dazu auch die Antwort bezgl des secrets als potentieller Lösungsvorschlag.

Wenn ich allerdings das readingList:
Die Abfrage mit ReadingsList single funktioniert dann so:single(jsonPathf("\$['Time Series FX (Daily)'].2022-08-16['4. close']", '%0.5f'), 'EURCHF', 0);
sehe, könnte man noch, anstatt die url zu manipulieren, auch gezielt nach dem Datum suchen.

Dafür bräuchte man eine kleine Perl-Funktion in der myUtils, die einem das aktuelle Datum zusammenstellt und setzt dies in readingList ein. Ich nutze das zB für die Intensivbettenbelegung (oder als Vorschlag für myMüll Termine).

Ungetestet müsste das dann irgendwie so gehen:
single(jsonPathf("\$['Time Series FX (Daily)'].['".mydividate()."'].['4. close']", '%0.5f'), 'EURCHF', 0);ggf auch mit multi anstelle mit single.
viele Grüße, yersinia
----
FHEM 6.1 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl