Alle Readings eines Devices abrufen

Begonnen von yanniks, 15 Januar 2019, 19:59:43

Vorheriges Thema - Nächstes Thema

yanniks

Hallo,

ich versuche aktuell, alle Readings eines Devices dynamisch im FTUI zu laden. Bei dem Gerät handelt es sich um ein HTTPMOD-Gerät, welches von einem Webdienst Aktienkurse abruft. Zurückgeliefert wird dort ein JSON im folgenden Format:

{
    "stocks": {
        "US0378331005": {
            "name": "Apple",
            "change_absolute": 3.67,
            "change_percent": 2.8086,
            "price": 134.34
        },
        "DE0007100000": {
            "name": "Daimler",
            "change_absolute": 0.26,
            "change_percent": 0.5266,
            "price": 49.635
        }
    }
}


HTTPMOD legt dann dementsprechend Readings nach dem Format stocks_ISIN_key an, was ja auch okay ist. Mein Problem ist jetzt, dass die Menge der zurückgelieferten Aktien variiert, weswegen ich gern ein FTUI-Modul entwickeln würde, was auf Basis aller Readings eine Tabelle baut. Im Widget-Tutorial ( https://wiki.fhem.de/wiki/FTUI_eigene_Widgets_-_Beispiel ) habe ich allerdings nur gesehen, wie ich ein bestimmtes Reading abonnieren kann, nicht wie ich alle abonnieren kann. ".*" hat bei mir leider nicht funktioniert. Gibt es für mein Problem eine Lösung?


Beste Grüße
Yannik

Thorsten Pferdekaemper

Hi,
zumindest geht das, wenn die Seite neu geladen wird (inoffiziell auch zwischendurch, siehe https://forum.fhem.de/index.php/topic,95801.0.html).
Also in init_attr holst Du Dir aus FHEM alle Readings des Device. Das geht z.B. mit einem entsprechenden jsonlist2-Aufruf. Die Readings packst Du dann in ein Javascript-Array (getArray im coding) und machst dann sowas:

elem.data('get',getArray);
me.addReading(elem,'get');

Die Methode addReading kann mit Arrays umgehen.
Gruß,
   Thorsten
FUIP