nachdem ich nun einige Monate OH3 parallel zu OH2.5 genutzt habe um mich erstmal vertraut zu machen, habe ich heute den Pi mit OH2.5 abgeschaltet... Im Grunde funktioniert jetzt alles so wie vorher. Nur mit der Umstellung auf JavaTime hapert es noch in einer rule...
Okay, so ganz richtig lief die eh nie, aber ich habe zumindest Werte bekommen... Zur Zeit bekomme ich gar nichts

Hier mal die alte rule unter 2.5:
Code: Alles auswählen
import org.joda.time.LocalTime
import java.util.ArrayList
import java.util.Map
import java.util.HashMap
import java.util.concurrent.locks.ReentrantLock
import java.util.concurrent.locks.Lock
var Map <String, Double> FuelPricesMap = new HashMap<String, Double>() // Stationsnamen und Preise für den Kraftstoff
var ArrayList <StringItem> FuelPriceItems = new ArrayList<StringItem>()
val telegramAction = getActions("telegram","telegram:telegramBot:openHAB")
rule "Benzinpreise Info"
when
Item FuelPricesMap received update
then
val LocalTime afternoon = new LocalTime(15, 0) //Jeden Nachmittag um 15:00 Uhr
val LocalTime evening = new LocalTime(19, 0) //Jeden Abend um 19:00 Uhr
if (now.toLocalTime().isAfter(afternoon) && now.toLocalTime().isBefore(evening)) { //zwischen 15 und 19 Uhr
telegramAction.sendTelegram("Günstigster Sprit: " + TK_Tankstelle_1) //Erste Tankstelle im Array = günstigste Tankstelle
}
else if (TK_Tankstelle_1.state.toString.contains ("0,00")) {
postUpdate(TK_Tankstelle_1, "Geschlossen")
}
end
rule "Benzinpreise Update"
when
Item TK_Stat1_E10 received update or
Item TK_Stat2_E10 received update or
Item TK_Stat3_E10 received update or
Item TK_Stat4_E10 received update
then
var Lock lock = new ReentrantLock()
var i = 0
lock.lock()
logInfo("Tankerkönig", "Benzinpreise -> Update der Werte")
// Zuweisung der Display Items in das Array
FuelPriceItems.add(0, TK_Tankstelle_1)
FuelPriceItems.add(1, TK_Tankstelle_2)
// aktuelle Preise aus den Items in die Map übernehmen
FuelPricesMap.put("HEM", (TK_Stat1_E10.state as DecimalType).doubleValue())
FuelPricesMap.put("ESSO", (TK_Stat2_E10.state as DecimalType).doubleValue())
FuelPricesMap.put("ARAL", (TK_Stat3_E10.state as DecimalType).doubleValue())
FuelPricesMap.put("ESSO Köln", (TK_Stat4_E10.state as DecimalType).doubleValue())
// Map nach Preisen sortieren und die Werte dann dem Anzeigearray zuweisen
for (PriceEntry : FuelPricesMap.entrySet.sortBy[value]) {
FuelPriceItems.get(i).postUpdate(String::format("%s: %.3f €", PriceEntry.getKey(), PriceEntry.getValue()))
i = i+1
}
lock.unlock()
end
Code: Alles auswählen
import java.time.LocalDateTime
import java.util.ArrayList
import java.util.Map
import java.util.HashMap
import java.util.concurrent.locks.ReentrantLock
import java.util.concurrent.locks.Lock
var Map <String, Double> FuelPricesMap = new HashMap<String, Double>() // Stationsnamen und Preise für den Kraftstoff
var ArrayList <StringItem> FuelPriceItems = new ArrayList<StringItem>()
rule "Benzinpreise Info"
when
Item FuelPricesMap received update
then
val telegramAction = getActions("telegram","telegram:telegramBot:openHAB")
val LocalDateTime afternoon = new LocalDateTime(15, 0) //Jeden Nachmittag um 15:00 Uhr
val LocalDateTime evening = new LocalDateTime(19, 0) //Jeden Abend um 19:00 Uhr
if (now.toLocalDateTime().isAfter(afternoon) && now.toLocalDateTime().isBefore(evening)) { //zwischen 15 und 19 Uhr
telegramAction.sendTelegram("Günstigster Sprit: " + TK_Tankstelle_1) //Erste Tankstelle im Array = günstigste Tankstelle
}
else if (TK_Tankstelle_1.state.toString.contains ("0,00")) {
postUpdate(TK_Tankstelle_1, "Geschlossen")
}
end
rule "Benzinpreise Update"
when
Item TK_Stat1_E10 received update or
Item TK_Stat2_E10 received update or
Item TK_Stat3_E10 received update or
Item TK_Stat4_E10 received update
then
var Lock lock = new ReentrantLock()
var i = 0
lock.lock()
logInfo("Tankerkönig", "Benzinpreise -> Update der Werte")
// Zuweisung der Display Items in das Array
FuelPriceItems.add(0, TK_Tankstelle_1)
FuelPriceItems.add(1, TK_Tankstelle_2)
// aktuelle Preise aus den Items in die Map übernehmen
FuelPricesMap.put("HEM", (TK_Stat1_E10.state as DecimalType).doubleValue())
FuelPricesMap.put("ESSO", (TK_Stat2_E10.state as DecimalType).doubleValue())
FuelPricesMap.put("ARAL", (TK_Stat3_E10.state as DecimalType).doubleValue())
FuelPricesMap.put("ESSO Köln", (TK_Stat4_E10.state as DecimalType).doubleValue())
// Map nach Preisen sortieren und die Werte dann dem Anzeigearray zuweisen
for (PriceEntry : FuelPricesMap.entrySet.sortBy[value]) {
FuelPriceItems.get(i).postUpdate(String::format("%s: %.3f €", PriceEntry.getKey(), PriceEntry.getValue()))
i = i+1
}
lock.unlock()
end
Kann mir jemand auf die Sprünge helfen?
Danke und Gute Nacht
Oliver