rule "high kwh"
when
Item TibberLiveAveragePower changed //snittforbruk
then
// If the avarage is above 4800 kWh we need to bring the current usage below 3500w
if ((TibberLiveAveragePower.state as Number) > 3500) {
var current_w = TibberLivePower.state as Number //liveforbruk
// Turn off Stue
if (current_w > 3500 && ZWave13ThermostatStueThermostatMode.state == 1) {
ZWave13ThermostatStueThermostatMode.sendCommand(0)
current_w -= ZWave13ThermostatStueMeterWatts.state as Number
}
// Turn off bad oppe
if (current_w > 3500 && (ZWave14ThermostatBadOEtgThermostatMode.state as Number) == 1) {
ZWave14ThermostatBadOEtgThermostatMode.sendCommand(0)
current_w -= ZWave14ThermostatBadOEtgMeterWatts.state as Number
}
// Turn off barnerom oppe
if (current_w > 3500 && (ZWave15TermostatBarneromOEtgThermostatMode.state as Number) == 1) {
ZWave15TermostatBarneromOEtgThermostatMode.sendCommand(0)
current_w -= ZWave15TermostatBarneromOEtgMeterWatts.state as Number
}
// Turn off Entre
if (current_w > 3500 && ZWave17ThermostatGangUEtgSone1ThermostatMode.state == 1) {
ZWave17ThermostatGangUEtgSone1ThermostatMode.sendCommand(0)
current_w -= ZWave17ThermostatGangUEtgSone1MeterWatts.state as Number
}
// Turn off kjellergang
if (current_w > 3500 && (ZWave16ThermostatGangUEtgSone2ThermostatMode.state as Number) == 1) {
ZWave16ThermostatGangUEtgSone2ThermostatMode.sendCommand(0)
current_w -= ZWave16ThermostatGangUEtgSone2MeterWatts.state as Number
}
// Turn off bad nede
if (current_w > 3500 && (ZWave22BadUEtgThermostatMode.state as Number) == 1) {
ZWave22BadUEtgThermostatMode.sendCommand(0)
current_w -= ZWave22BadUEtgMeterWatts.state as Number
}
// Turn off vaskerom
if (current_w > 3500 && (ZWave19ThermostatVaskeromThermostatMode.state as Number) == 1) {
ZWave19ThermostatVaskeromThermostatMode.sendCommand(0)
current_w -= ZWave19ThermostatVaskeromMeterWatts.state as Number
}
// Turn off Soverom1
if (current_w > 3500 && (ZWave21ThermostatSoverom1ThermostatMode.state as Number) == 1) {
ZWave21ThermostatSoverom1ThermostatMode.sendCommand(0)
current_w -= ZWave21ThermostatSoverom1MeterWatts.state as Number
}
// Turn off Soverom2
if (current_w > 3500 && (ZWave20ThermostatSoverom2ThermostatMode.state as Number) == 1) {
ZWave20ThermostatSoverom2ThermostatMode.sendCommand(0)
current_w -= ZWave20ThermostatSoverom2MeterWatts.state as Number
}
// Turn off Soverom3
if (current_w > 3500 && (ZWave18ThermostatSoverom3ThermostatMode.state as Number) == 1) {
ZWave18ThermostatSoverom3ThermostatMode.sendCommand(0)
current_w -= ZWave18ThermostatSoverom3MeterWatts.state as Number
}
// Turn off Varmtvannsbereder
if (current_w > 3500 && (ZWave23PowerVVTSwitchBinary.state as Number) == ON) {
ZWave23PowerVVTSwitchBinary.sendCommand(OFF)
current_w -= ZWave23PowerVVTMeterWatts.state as Number
}
}
end
rule "low kwh"
when
Item TibberLiveAveragePower changed
then
//logDebug("ams", "LOW KWH START")
// If the avarage is below 4600 kWh we can start to bring the current usage up to (max) 6000w
if ((TibberLiveAveragePower.state as Number) < 4600) {
var current_w = TibberLivePower.state as Number
// Turn on stue
if (current_w < 6000 && ZWave13ThermostatStueThermostatMode.state == 0) {
ZWave13ThermostatStueThermostatMode.sendCommand(1)
current_w += 2470 // Estimate 2470w for now
}
// Turn on bad oppe
if (current_w < 6000 && (ZWave14ThermostatBadOEtgThermostatMode.state as Number) == 0) {
ZWave14ThermostatBadOEtgThermostatMode.sendCommand(1)
current_w += 925
}
// Turn on barnerom oppe
if (current_w < 6000 && (ZWave15TermostatBarneromOEtgThermostatMode.state as Number) == 0) {
ZWave15TermostatBarneromOEtgThermostatMode.sendCommand(1)
current_w += 489
}
// Turn on entre
if (current_w < 6000 && ZWave17ThermostatGangUEtgSone1ThermostatMode.state == 0) {
ZWave17ThermostatGangUEtgSone1ThermostatMode.sendCommand(1)
current_w += 605
}
// Turn on kjellergang
if (current_w < 6000 && ZWave16ThermostatGangUEtgSone2ThermostatMode.state == 0) {
ZWave16ThermostatGangUEtgSone2ThermostatMode.sendCommand(1)
current_w += 1327
}
// Turn on bad nede
if (current_w < 6000 && ZWave22BadUEtgThermostatMode.state == 0) {
ZWave22BadUEtgThermostatMode.sendCommand(1)
current_w += 526
}
// Turn on vaskerom
if (current_w < 6000 && ZWave19ThermostatVaskeromThermostatMode.state == 0) {
ZWave19ThermostatVaskeromThermostatMode.sendCommand(1)
current_w += 561
}
// Turn on soverom1
if (current_w < 6000 && ZWave21ThermostatSoverom1ThermostatMode.state == 0) {
ZWave21ThermostatSoverom1ThermostatMode.sendCommand(1)
current_w += 741
}
// Turn on soverom2
if (current_w < 6000 && ZWave20ThermostatSoverom2ThermostatMode.state == 0) {
ZWave20ThermostatSoverom2ThermostatMode.sendCommand(1)
current_w += 737
}
// Turn on soverom3
if (current_w < 6000 && ZWave18ThermostatSoverom3ThermostatMode.state == 0) {
ZWave18ThermostatSoverom3ThermostatMode.sendCommand(1)
current_w += 822
}
// Turn on Varmtvannsbereder
if (current_w < 6000 && ZWave23PowerVVTSwitchBinary.state == OFF) {
ZWave23PowerVVTSwitchBinary.sendCommand(ON)
current_w += 3000
}
}
end
For example current_w -= ZWave13ThermostatStueMeterWatts.state as Number (number has decimals in it, therefore current_w=null
Type mismatch: cannot convert from BigDecimal to Number(org.eclipse.xtext.xbase.validation.IssueCodes.incompatible_types)
sitemap formatting is ok, but how to do it in the item.txt file itself so the rule stop complaining about decimals. I think that is the problem
For example current_w -= ZWave13ThermostatStueMeterWatts.state as Number (number has decimals in it, therefore current_w=null
Type mismatch: cannot convert from BigDecimal to Number(org.eclipse.xtext.xbase.validation.IssueCodes.incompatible_types)
sitemap formatting is ok, but how to do it in the item.txt file itself so the rule stop complaining about decimals. I think that is the problem
Having decimals is not the problem. A BigDecimal is a Number.
When Rules DSL cannot convert between types it will often complain about something being NULL.
What is the type of Item? If it’s more than just a Number, for example Number:Power, you have to handle it differently.
Hello thanks for the answer, the items involved are:
Number:Power TibberLivePower "Power consumption/production" (persist) {channel="tibber:tibberapi:tibber:live_power"}
Number:Power TibberLiveAveragePower "Snitt idag [%s] " (persist) {channel=“tibber:tibberapi:tibber:live_averagePower”}
Number ZWave13ThermostatStueMeterWatts “Electric meter [%.0f]” (Stromforbrukvarme) {channel=“zwave:device:16954503:node13:meter_watts1”}
maybe put :power on the last one? or remove :power from the other ones?
Tried removing :power frim items, still same result.
You can’t just remove the :Power. You will have to work with the Units for that Item.
I’m not where I can write it out right now but if you look at the docs for Units of Measurement and search the forum for Quantity type you will see lots of examples.
Don’t do that, do this
`if (TibberLiveAveragePower.state > 3500 | W)
see
This topic was automatically closed 41 days after the last reply. New replies are no longer allowed.