Mysensors sketch (i think this is the one i am using)
Ok, so that should be the sketch i am using,
so as for the rules :-
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
import org.openhab.core.library.types.*
import org.openhab.core.persistence.*
import org.openhab.model.script.actions.*
import org.joda.time.*
var long LastUpdate = 0 //// â At the top of the file
//////////////////////////////////////////////////////////////////////////////////////////////////
rule âEnergy consumption calculationâ
////////////////////////////////////////////////////////////////////////////////////////////////
when
Item Node_garage1 received update
then
var long currentTime = now.millis
if (LastUpdate != 0) {
var long timeElapsed = currentTime - LastUpdate
if (timeElapsed > 0) {
var Number power = Node_garage1.state as DecimalType
var Number energyConsumption = (power * timeElapsed) / 3600000 / 1000 // kWh
postUpdate(CumulativeEnergyConsumption, CumulativeEnergyConsumption.state as DecimalType + energyConsumption) //increment
postUpdate(DailyEnergyConsumption, DailyEnergyConsumption.state as DecimalType + energyConsumption)
}
}
LastUpdate = currentTime
end
//////////////////////////////////////////////////////////////////////////////////////////////////
rule âClear daily consumptionâ
//////////////////////////////////////////////////////////////////////////////////////////////////
when
Time cron â0 0 0 * * ?â // every day
then
postUpdate(DailyEnergyConsumption, 0)
end
//////////////////////////////////////////////////////////////////////////////////////////////////
rule âEnergy in past hourâ
when
Time cron â0 0 0/1 1/1 * ? *â // every hour
then
postUpdate(HoursEnergyConsumption, (CumulativeEnergyConsumption.state as DecimalType - CumulativeEnergyConsumption.historicState(now.minusHours(1)).state as DecimalType))
end
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Items
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// //////////////////-------------ENERGY AND POWER input----------\\\\\\\\\
Number Node_garage1 âCurrent Energy [%d W]â (Power_Chart) { mqtt=â<[mysensor:MyMQTT/22/0/V_WATT:state:default]â }
//////////////------------VARIABLES_ENERGY-------------\\\\\\\\\\
Number CumulativeEnergyConsumption âtotal energy [%.2f kWh]â { mqtt=â>[mysensor:MyMQTT/55/0/info:state:*:default]â }
Number DailyEnergyConsumption âtodays energy [%.8f kWh]â
Number HoursEnergyConsumption âhour energy [%.8f kWh]â (Power_Chart2)
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Sitemap (or just the relavant part of it.)
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Frame {
Group item=Node_garage1 { //Current Energy/////
Text item=Node_garage1
Text item=DailyEnergyConsumption
Text item=CumulativeEnergyConsumption
Text item=HoursEnergyConsumption
Chart item=Power_Chart2 period=3D refresh=30000
Chart item=Power_Chart period=2h refresh=30000
Chart item=Power_Chart period=4h refresh=30000
Chart item=Power_Chart period=3D refresh=30000
}
}
Hope this makes sense.