לאחר התקנת מס' רכיבי Shelly למדידת צריכת החשמל, ולקראת התקנת Shelly3EM בארון, התחלתי להתנסות במדידת צריכת החשמל של המוצרים השונים.
נכון להיום יש לי יכולת למדוד שני מפזרי חום במקלחות, מזגן באחד החדרים ואת הדוד (דרך סוויצ'ר).
משום מה זה לא היה טריוויאלי להבין את הדרך לחישוב סך הצריכה ב- Wh מתוך נתוני הצריכה הרגעיים ב- W.
אשמח לשתף בדרך שלי כרגע, ולשמוע מאחרים איך ניגשו לנושא הזה.
הדוגמא היא לחישוב צריכת החשמל של הדוד אבל זה זהה לשאר המוצרים.
ה- items הרלוונטיים:
קוד: בחירת הכל
Number BR_Dude_PowerConsumption "Dude Power Consumption [%.0f W]" <plug> (gDude,gChartMinute,gChartChange) ["Status"]
Number BR_Dude_TotalConsumption "Dude Total Power Consumption This Month [%.0f Wh]" <meter> (gDude,gChartMinute,gChartChange) ["Status"]
Number BR_Dude_MonthlyTotalConsumption "Dude Total Power Consumption Last Month [%.0f Wh]" <monthly> (gDude,gChartChange) ["Status"]
קוד: בחירת הכל
rule "Calculate Dude Consumption"
when
Item BR_Dude_PowerConsumption changed
then
logInfo(myLogger, "Dude Conusmption Changed to: " + BR_Dude_PowerConsumption.state)
val timeDelta = Duration.between(BR_Dude_PowerConsumption.lastUpdate("influxdb") , now).toMillis()/1000
val consumption = ((previousState as Number).doubleValue + (newState as Number).doubleValue) * timeDelta /2/3600
logInfo(myLogger, "Dude Conusmption Data- timeDelta=" + timeDelta + " previousState=" + previousState + " newState=" + newState + " Consumption=" + consumption)
BR_Dude_TotalConsumption.postUpdate((BR_Dude_TotalConsumption.state as DecimalType) + consumption)
logInfo(myLogger, "Current Dude Total Conusmption is: " + BR_Dude_TotalConsumption.state)
end
אולי כדאי שאסביר את החישוב...
זה נוסחת אינטגרציה בין שתי נקודות הצריכה האחרונות כפול הזמן שעבר.
ה 2 זה חלק מהנוסחה כי זה למעשה שטח של טרפז.
חוק נוסף לתיעוד צריכה כוללת חודשית:
קוד: בחירת הכל
rule "Update Monthly Consumptions Measurements"
when
Time cron "0 0 2 1 * ? *" // on 1st of every month at 2:00am
then
logInfo(myLogger, "Updating Monthly Power Consumptions")
// Dude
BR_Dude_MonthlyTotalConsumption.postUpdate(BR_Dude_TotalConsumption.state as Number)
BR_Dude_TotalConsumption.postUpdate(0)
end
לגבי רכיבי Shelly- יש להם ערוץ של צריכה כוללת אבל בתיעוד של ה- binding רשום שזה ערך מצטבר מרגע הפעלת הרכיב ומתאפס רק בהפעלה מחדש של הרכיב. העדפתי לא להשתמש בזה כדי להיות מסוגל לשלוט על הזמנים של איפוס המונה ומדידת צריכה מצטברת חדשה.
כאמור אשמח ללמוד על גישות נוספות לנושא.
תודה מראש.