This my rule:
import org.openhab.core.library.types.*
var String Tankstelle1_ID=""
var String Tankstelle2_ID=""
var String Tankstelle3_ID=""
var String API_Key=""
var String Status
var Number E10
var Number E5
var Number Diesel
rule "Benzinpreise"
when
Time cron "0 0/5 * * * ?"
then
var String URL= "https://creativecommons.tankerkoenig.de/json/prices.php?ids=" + Tankstelle1_ID + "\," +Tankstelle2_ID + "\," + Tankstelle3_ID + "&apikey=" + API_Key
//logInfo ("Benzinpreise", "URL = {}", URL)
var String json = sendHttpGetRequest(URL)
//logInfo("Benzinpreise","JSON-String = {}", json)
var String OK = transform("JSONPATH", "$.ok", json)
//logInfo("Benzinpreise", "OK = {}", OK)
if (OK=="true") {
Status = transform("JSONPATH", "$.prices." + Tankstelle1_ID + ".status", json)
//logInfo("Benzinpreise", "Status = {}", Status)
if (Status=="open") {
E10 = transform("JSONPATH", "$.prices." + Tankstelle1_ID + ".e10", json)
E5 = transform("JSONPATH", "$.prices." + Tankstelle1_ID + ".e5", json)
Diesel = transform("JSONPATH", "$.prices." + Tankstelle1_ID + ".diesel", json)
E10_1.postUpdate(E10.toString)
E5_1.postUpdate(E5.toString)
Diesel_1.postUpdate(Diesel.toString)
//logInfo("Benzinpreise", "E10 = {}", E10)
//logInfo("Benzinpreise", "E5 = {}", E5)
//logInfo("Benzinpreise", "Diesel = {}", Diesel)
}
else {
logInfo("Benzinpreis", "Status = {}", Status)
}
Status = transform("JSONPATH", "$.prices." + Tankstelle2_ID + ".status", json)
//logInfo("Benzinpreise", "Status = {}", Status)
if (Status=="open") {
E10 = transform("JSONPATH", "$.prices." + Tankstelle2_ID + ".e10", json)
E5 = transform("JSONPATH", "$.prices." + Tankstelle2_ID + ".e5", json)
Diesel = transform("JSONPATH", "$.prices." + Tankstelle2_ID + ".diesel", json)
E10_2.postUpdate(E10.toString)
E5_2.postUpdate(E5.toString)
Diesel_2.postUpdate(Diesel.toString)
//logInfo("Benzinpreise", "E10 = {}", E10)
//logInfo("Benzinpreise", "E5 = {}", E5)
//logInfo("Benzinpreise", "Diesel = {}", Diesel)
}
else {
logInfo("Benzinpreis", "Status = {}", Status)
}
Status = transform("JSONPATH", "$.prices." + Tankstelle3_ID + ".status", json)
//logInfo("Benzinpreise", "Status = {}", Status)
if(Status=="open") {
E10 = transform("JSONPATH", "$.prices." + Tankstelle3_ID + ".e10", json)
E5 = transform("JSONPATH", "$.prices." + Tankstelle3_ID + ".e5", json)
Diesel = transform("JSONPATH", "$.prices." + Tankstelle3_ID + ".diesel", json)
E10_3.postUpdate(E10.toString)
E5_3.postUpdate(E5.toString)
Diesel_3.postUpdate(Diesel.toString)
//logInfo("Benzinpreise", "E10 = {}", E10)
//logInfo("Benzinpreise", "E5 = {}", E5)
//logInfo("Benzinpreise", "Diesel = {}", Diesel)
}
else {
logInfo("Benzinpreis", "Status = {}", Status)
}
}
else {
var String HttpError = transform("JSONPATH", "$.message", json)
logInfo("Benzinpreis", "HttpError = {}", HttpError)
}
end
I’m commented out all loggins if the request runs normal.
E10_1, E10_2, E10_3, … are items on the sitemap, they are persitet in a rrd4j database.
You need to set the strings for API_Key and the 3 gas-station IDs