LogicMachine Forum
Calculate Daily, Monthly, and Yearly Energy from Trend - Printable Version

+- LogicMachine Forum (https://forum.logicmachine.net)
+-- Forum: LogicMachine eco-system (https://forum.logicmachine.net/forumdisplay.php?fid=1)
+--- Forum: Scripting (https://forum.logicmachine.net/forumdisplay.php?fid=8)
+--- Thread: Calculate Daily, Monthly, and Yearly Energy from Trend (/showthread.php?tid=6346)



Calculate Daily, Monthly, and Yearly Energy from Trend - Fahd - 12.03.2026

Hi guys,
I need your help with calculating today’s, weekly, monthly, and yearly energy values.

I was not able to manage it using the Trends library:
https://kb.logicmachine.net/libraries/trends/

Your help would be greatly appreciated.
What I need is:
  • One script that runs every hour, calculates today’s energy consumption, and writes it to an object.
  • Another script that calculates the monthly energy consumption and write it into object . It should sum the daily energy values, run 1 per day, and reset at the beginning of each new month.
  • Another script that calculates the yearly energy consumption. It should accumulate the values over the year and reset at the beginning of each new year.
I already have a trend for the total consumed active energy in kWh.

I would really appreciate your help in advance.


RE: Calculate Daily, Monthly, and Yearly Energy from Trend - admin - 12.03.2026

Create scheduled scripts that run at required intervals. For monthly/yearly mode the current day data won't be included into calculation because the data has not been aggregated yet.

Daily:
Code:
require('trends')
name = 'energy'

dates = {}
dates['start'] = os.date('*t')
dates['end'] = os.date('*t')
dates['end'].day = dates['end'].day + 1

sum = 0
values = trends.fetch(name, dates)

for _, value in ipairs(values) do
  sum = sum + (value or 0)
end

grp.checkupdate('0/0/1', sum)

Monthly:
Code:
require('trends')
name = 'energy'

dates = {}
dates['start'] = os.date('*t')
dates['start'].day = 1
dates['end'] = os.date('*t')

sum = 0
values = trends.fetch(name, dates, 86400)

for _, value in ipairs(values) do
  sum = sum + (value or 0)
end

grp.checkupdate('0/0/2', sum)

Yearly:
Code:
require('trends')
name = 'energy'

dates = {}
dates['start'] = os.date('*t')
dates['start'].month = 1
dates['start'].day = 1
dates['end'] = os.date('*t')

sum = 0
values = trends.fetch(name, dates, 86400)

for _, value in ipairs(values) do
  sum = sum + (value or 0)
end

grp.checkupdate('0/0/3', sum)



RE: Calculate Daily, Monthly, and Yearly Energy from Trend - Fahd - 12.03.2026

Thank you for the great support and the clear solution. As always, very helpful!