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

Offline Gernott

  • Sr. Member
  • ****
  • Beiträge: 515
[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: 18232
  • Stoppt den Unicode-Irrsinn!
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.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!
Zustimmung Zustimmung x 1 Liste anzeigen

Offline yersinia

  • Hero Member
  • *****
  • Beiträge: 1417
    • 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