FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: wollibn am 24 Januar 2017, 22:24:46

Titel: ReadingName bei der Tankerkönig API
Beitrag von: wollibn am 24 Januar 2017, 22:24:46
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
Titel: Antw:ReadingName bei der Tankerkönig API
Beitrag von: DeeSPe am 24 Januar 2017, 23:23:15
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
Titel: Antw:ReadingName bei der Tankerkönig API
Beitrag von: wollibn am 26 Januar 2017, 10:35:35
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
Titel: Antw:ReadingName bei der Tankerkönig API
Beitrag von: Amenophis86 am 26 Januar 2017, 11:45:50
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.
Titel: Antw:ReadingName bei der Tankerkönig API
Beitrag von: regii am 30 September 2017, 13:22:29
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'\
}