This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm that you accept these cookies being set.

Change Unit/Suffix automatic
#1
Hi.



Is it possible to change this Unit/Suffix automatic it the value is over a specific number?
I run this script in resident and have it to calculate the number thats presented, but then I also need to change Unit/Suffix from kWh to MWh so theres no confusion : )

Is this possible to implement in my script or can´t this be done?

Code:
-- Total power year
r1, r2, r3, r4 = mb:readregisters(505, 4)
if r1 then
  value = r1 * 0x1000000000000 + r2 * 0x100000000 + r3 * 0x10000 + r4
  currentvalue = grp.getvalue('32/1/54')
  if tonumber(currentvalue) ~= value then
    if value >999
      then
      grp.update('32/1/54', value /1000000)
      else
        grp.update('32/1/54', value /1000)
    end
  end
end

Attached Files Thumbnail(s)
   
Reply
#2
Use this https://openrb.com/docs/lua.htm#grp.create
------------------------------
Ctrl+F5
Reply
#3
Changing units via grp.create will require UI reload for new units to appear.
You can use string data type instead of floating point for value display:
Code:
value = r1 * 0x1000000000000 + r2 * 0x100000000 + r3 * 0x10000 + r4

if value > 999 then
  units = 'MWh'
  value = value / 1000000
else
  units = 'KWh'
  value = value / 1000
end

value = string.format('%.3f', value) .. units
grp.checkupdate('32/1/54', value)
Reply
#4
(09.08.2022, 07:49)Daniel Wrote: Use this https://openrb.com/docs/lua.htm#grp.create

Nice thanks.
Do I have to make a new object by using grp.create for me to be able to change the units? Or can I somehow just change the units in my already created object thats not created by grp.create?
Reply
#5
grp.create can also update existing objects' properties. But as I've said you won't see this changes in the visualization unless you do a full reload.
Reply
#6
(09.08.2022, 08:33)admin Wrote: grp.create can also update existing objects' properties. But as I've said you won't see this changes in the visualization unless you do a full reload.

Oh did´nt see your reply.
I implemented your script, and it work nice. thanks for the help.

(09.08.2022, 08:14)admin Wrote: Changing units via grp.create will require UI reload for new units to appear.
You can use string data type instead of floating point for value display:
Code:
value = r1 * 0x1000000000000 + r2 * 0x100000000 + r3 * 0x10000 + r4

if value > 999 then
  units = 'MWh'
  value = value / 1000000
else
  units = 'KWh'
  value = value / 1000
end

value = string.format('%.3f', value) .. units
grp.checkupdate('32/1/54', value)
I use this one and gets the string presented with  4.564MWh.

I can change the presentation to 4.56MWh by change '%.3f' to '%.2f'
But how do I change this presentation as the number gets bigger?
So when the number gets bigger it also gets lesser decimals.
Reply


Forum Jump: