And finally, the rules needed to populate the Float items for the Modbus meter.
rule se9km_DID_map
when Item se9km_DID_int received update
then
var String str=“-”
if (se9km_DID_int.state == 201) str = “Einphasig A-N”
if (se9km_DID_int.state == 202) str = “Split single phase A-B-N”
if (se9km_DID_int.state == 203) str = “Dreiphasig Wye (A-B-C-N)”
if (se9km_DID_int.state == 204) str = “Dreiphasig Delta (A-B-C)”
logDebug("Einspeisepunkt Smartmeter Typ: ", str) postUpdate(se9km_DID, str)
end
rule se9km_Amp_add
when Item se9km_Amp_int received update
then
var Double Amp= (se9km_Amp_int.state as DecimalType).doubleValue
if (Amp > 32767) Amp = Amp-(65536).doubleValue
var Double SF = (se9km_AmpSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = Amp * Math::pow(10,SF)
var String value = result.toString logDebug("Einpseisepunkt Strom phasensaldiert gesamt: ", value) postUpdate(se9km_Amp, result)
end
rule se9km_AmpA_add
when Item se9km_AmpA_int received update
then
var Double Amp= (se9km_AmpA_int.state as DecimalType).doubleValue
if (Amp > 32767) Amp = Amp-(65536).doubleValue
var Double SF = (se9km_AmpSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = Amp * Math::pow(10,SF)
var String value = result.toString logDebug("Einspeisepunkt Strom Ph. A: ", value) postUpdate(se9km_AmpA, result)
end
rule se9km_AmpB_add
when Item se9km_AmpB_int received update
then
var String str = “http://192.168.199.41:88/middleware.php/data/”
var String uuid = “212cde50-ef85-11e6-8115-e7892dde135b.json”
var String operation = “?operation=add&value=”
var Double Amp= (se9km_AmpB_int.state as DecimalType).doubleValue
if (Amp > 32767) Amp = Amp-(65536).doubleValue
var Double SF = (se9km_AmpSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = Amp * Math::pow(10,SF)
var String value = result.toString logDebug("Einspeisepunkt Strom Ph. B: ", value) postUpdate(se9km_AmpB, result)
end
rule se9km_AmpC_add
when Item se9km_AmpC_int received update
then
var Double Amp= (se9km_AmpC_int.state as DecimalType).doubleValue
if (Amp > 32767) Amp = Amp-(65536).doubleValue
var Double SF = (se9km_AmpSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = Amp * Math::pow(10,SF)
var String value = result.toString
logDebug("Einspeisepunkt Strom Ph. C: ", value) postUpdate(se9km_AmpC, result)
end
rule se9km_VoltL_add
when Item se9km_VoltL_int received update
then
var Double Volt= (se9km_VoltL_int.state as DecimalType).doubleValue
if (Volt > 32767) Volt = Volt-(65536).doubleValue
var Double SF = (se9km_VoltSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = Volt * Math::pow(10,SF) var String value = result.toString
logDebug("Einpseisepunkt mittlere Spannung: ", value) postUpdate(se9km_VoltL, result)
end
rule se9km_VoltA_add
when Item se9km_VoltA_int received update
then
var Double Volt= (se9km_VoltA_int.state as DecimalType).doubleValue
if (Volt > 32767) Volt = Volt-(65536).doubleValue
var Double SF = (se9km_VoltSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = Volt * Math::pow(10,SF)
var String value = result.toString
logDebug("Einpseisepunkt Spannung Ph.A: ", value) postUpdate(se9km_VoltA, result)
end
rule se9km_VoltB_add
when Item se9km_VoltB_int received update
then
var Double Volt= (se9km_VoltB_int.state as DecimalType).doubleValue
if (Volt > 32767) Volt = Volt-(65536).doubleValue
var Double SF = (se9km_VoltSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = Volt * Math::pow(10,SF)
var String value = result.toString
logDebug("Einpseisepunkt Spannung Ph.B: ", value) postUpdate(se9km_VoltB, result)
end
rule se9km_VoltC_add
when Item se9km_VoltC_int received update
then
var Double Volt= (se9km_VoltC_int.state as DecimalType).doubleValue
if (Volt > 32767) Volt = Volt-(65536).doubleValue
var Double SF = (se9km_VoltSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = Volt * Math::pow(10,SF)
var String value = result.toString logDebug("Einpseisepunkt Spannung Ph.C: ", value) postUpdate(se9km_VoltC, result)
end
rule se9km_Frequenz_add
when Item se9km_Frequenz_int received update
then
var Double Hz= (se9km_Frequenz_int.state as DecimalType).doubleValue
if (Hz > 32767) Hz = Hz-(65536).doubleValue
var Double SF = (se9km_FrequenzSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = Hz * Math::pow(10,SF)
var String value = result.toString logDebug("Einpseisepunkt Netzfrequenz: ", value) postUpdate(se9km_Frequenz, result)
end
rule se9km_Watt_add
when Item se9km_Watt_int received update
thenvar Double Watt= (se9km_Watt_int.state as DecimalType).doubleValue if (Watt > 32767) Watt = Watt-(65536).doubleValue var Double SF = (se9km_WattSF_int.state as DecimalType).doubleValue if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = -1.0 * Watt * Math::pow(10,SF) var Double resultplus = 0.0 var Double resultminus = 0.0 if (result > 0) { resultplus = result } else { resultminus = result } logInfo("[se9km_Watt ]: ", result.toString) logInfo("[se9km_Watt+]: ", resultplus.toString) logInfo("[se9km_Watt-]: ", resultminus.toString) postUpdate(se9km_Watt, result) postUpdate(se9km_Wattp, resultplus) postUpdate(se9km_Wattm, resultminus)
end
rule se9km_WattA_add
when Item se9km_WattA_int received update
then
var Double Watt= (se9km_WattA_int.state as DecimalType).doubleValue
if (Watt > 32767) Watt = Watt-(65536).doubleValue
var Double SF = (se9km_WattSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = -1.0 * Watt * Math::pow(10,SF)
var String value = result.toString logDebug("Einpseisepunkt Wirkleistung Ph.A: ", value) postUpdate(se9km_WattA, result)
end
rule se9km_WattB_add
when Item se9km_WattB_int received update
then
var Double Watt= (se9km_WattB_int.state as DecimalType).doubleValue
if (Watt > 32767) Watt = Watt-(65536).doubleValue
var Double SF = (se9km_WattSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = -1.0 * Watt * Math::pow(10,SF)
var String value = result.toString
logDebug("Einpseisepunkt Wirkleistung Ph.B: ", value) postUpdate(se9km_WattB, result)
end
rule se9km_WattC_add
when Item se9km_WattC_int received update
then
var Double Watt= (se9km_WattC_int.state as DecimalType).doubleValue
if (Watt > 32767) Watt = Watt-(65536).doubleValue
var Double SF = (se9km_WattSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = -1.0 * Watt * Math::pow(10,SF)
var String value = result.toString
logDebug("Einpseisepunkt Wirkleistung Ph.C: ", value) postUpdate(se9km_WattC, result)
end
rule se9km_VA_add
when Item se9km_VA_int received update
then
var Double VA= (se9km_VA_int.state as DecimalType).doubleValue
if (VA > 32767) VA = VA-(65536).doubleValue
var Double SF = (se9km_VASF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = VA * Math::pow(10,SF)
var String value = result.toString logDebug("Einpseisepunkt Scheinleistung Summe: ", value) postUpdate(se9km_VA, result)
end
rule se9km_VAA_add
when Item se9km_VAA_int received update
then
var Double VA= (se9km_VAA_int.state as DecimalType).doubleValue
if (VA > 32767) VA = VA-(65536).doubleValue
var Double SF = (se9km_VASF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = VA * Math::pow(10,SF)
var String value = result.toString logDebug("Einpseisepunkt Scheinleistung Ph.A: ", value) postUpdate(se9km_VAA, result)
end
rule se9km_VAB_add
when Item se9km_VAB_int received update
then
var Double VA= (se9km_VAB_int.state as DecimalType).doubleValue
if (VA > 32767) VA = VA-(65536).doubleValue
var Double SF = (se9km_VASF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = VA * Math::pow(10,SF)
var String value = result.toString logDebug("Einpseisepunkt Scheinleistung Ph.B: ", value) postUpdate(se9km_VAB, result)
end
rule se9km_VAC_add
when Item se9km_VAC_int received update
then
var Double VA= (se9km_VAC_int.state as DecimalType).doubleValue
if (VA > 32767) VA = VA-(65536).doubleValue
var Double SF = (se9km_VASF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = VA * Math::pow(10,SF)
var String value = result.toString logDebug("Einpseisepunkt Scheinleistung Ph.C: ", value) postUpdate(se9km_VAC, result)
end
rule se9km_VAR_add
when Item se9km_VAR_int received update
then
var Double VAR= (se9km_VAR_int.state as DecimalType).doubleValue
if (VAR > 32767) VAR = VAR-(65536).doubleValue
var Double SF = (se9km_VARSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = VAR * Math::pow(10,SF)
var String value = result.toString logDebug("Einpseisepunkt reaktive Leistung (Summe): ", value) postUpdate(se9km_VAR, result)
end
rule se9km_VARA_add
when Item se9km_VARA_int received update
then
var Double VAR= (se9km_VARA_int.state as DecimalType).doubleValue
if (VAR > 32767) VAR = VAR-(65536).doubleValue
var Double SF = (se9km_VARSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = VAR * Math::pow(10,SF)
var String value = result.toString logDebug("Einpseisepunkt reaktive Leistung Ph.A: ", value) postUpdate(se9km_VARA, result)
end
rule se9km_VARB_add
when Item se9km_VARB_int received update
then
var Double VAR= (se9km_VARB_int.state as DecimalType).doubleValue
if (VAR > 32767) VAR = VAR-(65536).doubleValue
var Double SF = (se9km_VARSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = VAR * Math::pow(10,SF)
var String value = result.toString logDebug("Einpseisepunkt reaktive Leistung Ph.B: ", value) postUpdate(se9km_VARB, result)
end
rule se9km_VARC_add
when Item se9km_VARC_int received update
then
var Double VAR= (se9km_VARC_int.state as DecimalType).doubleValue
if (VAR > 32767) VAR = VAR-(65536).doubleValue
var Double SF = (se9km_VARSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = VAR * Math::pow(10,SF)
var String value = result.toString logDebug("Einpseisepunkt reaktive Leistung Ph.C: ", value) postUpdate(se9km_VARC, result)
end
rule se9km_PF_add
when Item se9km_PF_int received update
then
var Double PF= (se9km_PF_int.state as DecimalType).doubleValue
if (PF > 32767) PF = PF-(65536).doubleValue
var Double SF = (se9km_PFSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = PF * Math::pow(10,SF) /100
var String value = result.toString logDebug("Einpseisepunkt Leistungsfaktor MW: ", value) postUpdate(se9km_PF, result)
end
rule se9km_PFA_add
when Item se9km_PFA_int received update
then
var Double PF= (se9km_PFA_int.state as DecimalType).doubleValue
if (PF > 32767) PF = PF-(65536).doubleValue
var Double SF = (se9km_PFSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = PF * Math::pow(10,SF) /100
var String value = result.toString logDebug("Einpseisepunkt Leistungsfaktor Ph.A: ", value) postUpdate(se9km_PFA, result)
end
rule se9km_PFB_add
when Item se9km_PFB_int received update
then
var Double PF= (se9km_PFB_int.state as DecimalType).doubleValue
if (PF > 32767) PF = PF-(65536).doubleValue
var Double SF = (se9km_PFSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = PF * Math::pow(10,SF) /100
var String value = result.toString logDebug("Einpseisepunkt Leistungsfaktor Ph.B: ", value) postUpdate(se9km_PFB, result)
end
rule se9km_PFC_add
when Item se9km_PFC_int received update
then
var Double PF= (se9km_PFC_int.state as DecimalType).doubleValue
if (PF > 32767) PF = PF-(65536).doubleValue
var Double SF = (se9km_PFSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = PF * Math::pow(10,SF) /100
var String value = result.toString logDebug("Einpseisepunkt Leistungsfaktor Ph.C: ", value) postUpdate(se9km_PFC, result)
end
rule se9km_kWh_Exp_add
when Item se9km_Wh2_Exp_int received update
then
var Double SF = (se9km_WhSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double resultWh = ((se9km_Wh1_Exp_int.state as DecimalType * 65536).doubleValue + (se9km_Wh2_Exp_int.state as DecimalType).doubleValue) * Math::pow(10,SF) var Double resultnegWh = 1000000000 - resultWh var Double Offset = (se9km_kWh_Exp_Jahr_Offset.state as DecimalType).doubleValue * 1000.0 var Double Jahr = (resultWh - Offset) / 1000.0 var String valueWh = resultWh.toString var String valuenegWh = resultnegWh.toString var String wrjahr = Jahr.toString
logInfo("[se9km_Exp ] Wh: ",valueWh) logInfo("[se9km_Exp (neg)] Wh: ",valuenegWh) logInfo("[se9km_Exp Jahr ] kWh: ", wrjahr) var Double result = resultWh / 1000.0 var Double resultneg = resultnegWh / 1000.0 postUpdate(se9km_kWh_Exp, result) postUpdate(se9km_kWh_Exp_Jahr, Jahr) postUpdate(se9km_kWh_Exp_neg, resultneg)
end
rule se9km_kWhA_Exp_add
when Item se9km_WhA2_Exp_int received update
then
var Double SF = (se9km_WhSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = ((se9km_WhA1_Exp_int.state as DecimalType *65536).doubleValue + (se9km_WhA2_Exp_int.state as DecimalType).doubleValue) * Math::pow(10,SF) / 1000.0
var String value = result.toString logDebug("Einspeisezaehler Ph.A kWh: ", value) postUpdate(se9km_kWhA_Exp, result)
end
rule se9km_kWhB_Exp_add
when Item se9km_WhB2_Exp_int received update
then
var Double SF = (se9km_WhSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = ((se9km_WhB1_Exp_int.state as DecimalType * 65536).doubleValue + (se9km_WhB2_Exp_int.state as DecimalType).doubleValue) * Math::pow(10,SF) / 1000.0
var String value = result.toString logDebug("Einspeisezaehler Ph.B kWh: ", value) postUpdate(se9km_kWhB_Exp, result)
end
rule se9km_kWhC_Exp_add
when Item se9km_WhC2_Exp_int received update
then
var Double SF = (se9km_WhSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = ((se9km_WhC1_Exp_int.state as DecimalType * 65536).doubleValue + (se9km_WhC2_Exp_int.state as DecimalType).doubleValue) * Math::pow(10,SF) / 1000.0
var String value = result.toString logDebug("Einspeisezaehler Ph.C kWh: ", value) postUpdate(se9km_kWhC_Exp, result)
end
rule se9km_kWh_Imp_add
when Item se9km_Wh2_Imp_int received update
then
var Double SF = (se9km_WhSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double resultWh = ((se9km_Wh1_Imp_int.state as DecimalType * 65536).doubleValue + (se9km_Wh2_Imp_int.state as DecimalType).doubleValue) * Math::pow(10,SF) var Double Offset = (se9km_kWh_Imp_Jahr_Offset.state as DecimalType).doubleValue * 1000.0 var Double Jahr = (resultWh - Offset) / 1000.0 var String valueWh = resultWh.toString var String urlWh = str + uuidWh + operation + valueWh var String wrjahr = Jahr.toString
logInfo("[se9km_Imp] Wh: ", valueWh) logInfo("[se9km_Imp Jahr] kWh: ", wrjahr) var Double result = resultWh / 1000.0 postUpdate(se9km_kWh_Imp, result) postUpdate(se9km_kWh_Imp_Jahr, Jahr)
end
rule se9km_kWhA_Imp_add
when Item se9km_WhA2_Imp_int received update
then
var Double SF = (se9km_WhSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = ((se9km_WhA1_Imp_int.state as DecimalType * 65536).doubleValue + (se9km_WhA2_Imp_int.state as DecimalType).doubleValue) * Math::pow(10,SF) / 1000.0 var String value = result.toString logDebug("Bezugszaehler Ph.A kWh: ", value) postUpdate(se9km_kWhA_Imp, result)
end
rule se9km_kWhB_Imp_add
when Item se9km_WhB2_Imp_int received update
then
var Double SF = (se9km_WhSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = ((se9km_WhB1_Imp_int.state as DecimalType * 65536).doubleValue + (se9km_WhB2_Imp_int.state as DecimalType).doubleValue) * Math::pow(10,SF) / 1000.0 var String value = result.toString logDebug("Bezugszaehler Ph.B kWh: ", value) postUpdate(se9km_kWhB_Imp, result)
end
rule se9km_kWhC_Imp_add
when Item se9km_WhC2_Imp_int received update
then
var Double SF = (se9km_WhSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = ((se9km_WhC1_Imp_int.state as DecimalType * 65536).doubleValue + (se9km_WhC2_Imp_int.state as DecimalType).doubleValue) * Math::pow(10,SF) / 1000.0
var String value = result.toString logDebug("Bezugszaehler Ph.C kWh: ", value) postUpdate(se9km_kWhC_Imp, result)
end
rule se9km_VAh_Exp_add
when Item se9km_VAh2_Exp_int received update
then
var Double SF = (se9km_VAhSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = ((se9km_VAh1_Exp_int.state as DecimalType * 65536).doubleValue + (se9km_VAh2_Exp_int.state as DecimalType).doubleValue) * Math::pow(10,SF) / 1000.0 var String value = result.toString logDebug("Einspeisezaehler Scheinleistung (Summe) kVAh: ", value) postUpdate(se9km_VAh_Exp, result)
end
rule se9km_VAhA_Exp_add
when Item se9km_VAhA2_Exp_int received update
then
var Double SF = (se9km_VAhSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = ((se9km_VAhA1_Exp_int.state as DecimalType * 65536).doubleValue + (se9km_VAhA2_Exp_int.state as DecimalType).doubleValue) * Math::pow(10,SF) / 1000.0 var String value = result.toString logDebug("Einspeisezaehler Scheinleistung Ph.A kVAh: ", value postUpdate(se9km_VAhA_Exp, result)
end
rule se9km_VAhB_Exp_add
when Item se9km_VAhB2_Exp_int received update
then
var Double SF = (se9km_VAhSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = ((se9km_VAhB1_Exp_int.state as DecimalType * 65536).doubleValue + (se9km_VAhB2_Exp_int.state as DecimalType).doubleValue) * Math::pow(10,SF) / 1000.0 var String value = result.toString logDebug("Einspeisezaehler Scheinleistung Ph.B kVAh: ", value postUpdate(se9km_VAhB_Exp, result)
end
rule se9km_VAhC_Exp_add
when Item se9km_VAhC2_Exp_int received update
then
var Double SF = (se9km_VAhSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = ((se9km_VAhC1_Exp_int.state as DecimalType * 65536).doubleValue + (se9km_VAhC2_Exp_int.state as DecimalType).doubleValue) * Math::pow(10,SF) / 1000.0 var String value = result.toString logDebug("Einspeisezaehler Scheinleistung Ph.C kVAh: ", value postUpdate(se9km_VAhC_Exp, result)
end
rule se9km_VAh_Imp_add
when Item se9km_VAh2_Imp_int received update
then
var Double SF = (se9km_VAhSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = ((se9km_VAh1_Imp_int.state as DecimalType * 65536).doubleValue + (se9km_VAh2_Imp_int.state as DecimalType).doubleValue) * Math::pow(10,SF) / 1000.0 var String value = result.toString logDebug("Bezugszaehler Scheinleistung (Summe) kVAh: ", value postUpdate(se9km_VAh_Imp, result)
end
rule se9km_VAhA_Imp_add
when Item se9km_VAhA2_Imp_int received update
then
var Double SF = (se9km_VAhSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = ((se9km_VAhA1_Imp_int.state as DecimalType * 65536).doubleValue + (se9km_VAhA2_Imp_int.state as DecimalType).doubleValue) * Math::pow(10,SF) / 1000.0
var String value = result.toString logDebug("Bezugszaehler Scheinleistung Ph.A kVAh: ", value postUpdate(se9km_VAhA_Imp, result)
end
rule se9km_VAhB_Imp_add
when Item se9km_VAhB2_Imp_int received update
then
var Double SF = (se9km_VAhSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = ((se9km_VAhB1_Imp_int.state as DecimalType * 65536).doubleValue + (se9km_VAhB2_Imp_int.state as DecimalType).doubleValue) * Math::pow(10,SF) / 1000.0
var String value = result.toString logDebug("Bezugszaehler Scheinleistung Ph.B kVAh: ", value) postUpdate(se9km_VAhB_Imp, result)
end
rule se9km_VAhC_Imp_add
when Item se9km_VAhC2_Imp_int received update
then
var Double SF = (se9km_VAhSF_int.state as DecimalType).doubleValue
if (SF > 32767) SF = SF-(65536).doubleValue
var Double result = ((se9km_VAhC1_Imp_int.state as DecimalType * 65536).doubleValue + (se9km_VAhC2_Imp_int.state as DecimalType).doubleValue) * Math::pow(10,SF) / 1000.0
var String value = result.toString logDebug("Bezugszaehler Scheinleistung Ph.C kVAh: ", value postUpdate(se9km_VAhC_Imp, result)
end