ReadingName bei der Tankerkönig API

Begonnen von wollibn, 24 Januar 2017, 22:24:46

Vorheriges Thema - Nächstes Thema

wollibn

Moin Moin,

Ich hoffe meine Frage wurde nicht schon beantwortet aber ich kam mit den Suchbegriffen die mir dazu eingefallen sind nicht weiter.

Wie von Tankerkönig bevorzugt rufe ich die prices.php auf um Spritpreise abzufragen.

Die Readings bekommen dann Namen die die TankstellenID von Tankerkönig enthalten wie z.B. prices_0ca1d02e-9ad1-47a4-fcb6-cfea288fa593_diesel. Ich hätte aber viel lieber sprechende Namen wie ScoreTankstelleJever_diesel. Wie muss ich das anstellen?

Meine Definition sieht so aus:
define Spritpreise HTTPMOD https://creativecommons.tankerkoenig.de/json/prices.php?ids=49164e7b-24bc-424d-7122-eed448b4b80c,0ca1d02e-9ad1-47a4-fcb6-cfea288fa593,1ffb14eb-b964-42f4-b1cb-1ec5970f96d0,f038aeb0-03ec-41d0-a686-baa1a981b7d2&apikey=###APIKEY### 910

attr Spritpreise userattr getHeader1 getHeader2 reading1Name reading1Regex reading2Name reading2Regex reading3Name reading3Regex reading4Name reading4Regex replacement01Mode:reading,internal,text,expression,key replacement01Regex replacement01Value
attr Spritpreise enableControlSet 1
attr Spritpreise extractAllJSON 1
attr Spritpreise getHeader1 Content-Type: application/json
attr Spritpreise getHeader2 Accept: */*
attr Spritpreise icon car
attr Spritpreise reading1Name Super
attr Spritpreise reading1Regex e5":([\d\.]+)
attr Spritpreise reading2Name SuperE10
attr Spritpreise reading2Regex e10":([\d\.]+)
attr Spritpreise reading3Name Diesel
attr Spritpreise reading3Regex diesel":([\d\.]+)
attr Spritpreise reading4Name Status
attr Spritpreise reading4Regex status":"*"
attr Spritpreise room 7.4_Spritpreise


Die JSON-Rückgabe von Tankerkönig sieht so aus:
{"ok":true,"license":"CC BY 4.0 -  https:\/\/creativecommons.tankerkoenig.de","data":"MTS-K","prices":{"f038aeb0-03ec-41d0-a686-baa1a981b7d2":{"status":"open","e5":1.349,"e10":1.329,"diesel":1.129},"0ca1d02e-9ad1-47a4-fcb6-cfea288fa593":{"status":"closed"},"49164e7b-24bc-424d-7122-eed448b4b80c":{"status":"open","e5":1.339,"e10":1.319,"diesel":1.129},"1ffb14eb-b964-42f4-b1cb-1ec5970f96d0":{"status":"closed"}}}

Vielen Dank im Vorraus für eure Hilfe!

Gruß aus Friesland
Wolfgang

DeeSPe

Mit HTTPMOD kann ich Dir leider nicht helfen, aber ich meine im Forum was von einem Modul für Tankerkönig gelesen zu haben.

Eine kurze Forumsuche (übrigens oben rechts zu finden ;) ) hat dieses Thema zu Tage gefördert:
https://forum.fhem.de/index.php/topic,64610

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

wollibn

Danke für deine Antwort DeeSPe!  :)

Wo die Suchfunktion ist weiß ich (es lag wie geschrieben an den passenden Suchbegriffen) und den von dir verlinkten Artikel habe ich auch gefunden.

Ich wollte das gerne grundsätzlich wissen und zudem liefert das von pjakobs geschriebene Modul alle Tankstellen in einem Umkreis zu einer Koordinate zurück. Diese lassen sich aber nicht gezielt ansprechen weil die Readings auch hier nur durchnummeriert sind und sich durchaus ändern könnten. Ich möchte aber die Preise von bestimmten Tankstellen im Tablet UI anzeigen.

Vielleicht hat ja noch jemand eine Erklärung?

Gruß
Wolfgang

Amenophis86

Eine Möglichkeit wäre mit setreading und einem notify zu arbeiten. Alternativ kannst du auch mit stateformat arbeiten, wenn du es ins State schreiben willst.

Da es dir aber wohl primär um die Anzeige im FTUI geht, verstehe ich nicht, wieso du die Readings umbenennen willst. Die Anzeige im UI ist ja nicht der Readingsname.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

regii

die einfachere Möglichkeit ist, sich eine Readingsgroup anzulegen in dann einfach die Namen manuell zu setzen.

defmod Tanken readingsGroup Spritpreise:*diesel
attr Tanken mapping {\
'Spritpreise.prices_<ID der Tankstelle 1>_diesel' => 'AVIA',\
'Spritpreise.prices_<ID der Tankstelle 2>_diesel' => 'SHELL',\
'Spritpreise.prices_<ID der Tankstelle 3>_diesel' => 'JET'\
}