FHEM Forum

FHEM => Frontends => TabletUI => Thema gestartet von: yanniks am 15 Januar 2019, 19:59:43

Titel: Alle Readings eines Devices abrufen
Beitrag von: yanniks am 15 Januar 2019, 19:59:43
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
Titel: Antw:Alle Readings eines Devices abrufen
Beitrag von: Thorsten Pferdekaemper am 15 Januar 2019, 20:57:04
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