Or I could just add .raw at the end of the call to RecordBinder...

last_cum_energy = rb.latest().cumEnergy.*raw*


Thanks, Tom - as always.  I did not really want to do the calculations in
the template because I want to store the incremental energy use in the
database so I can make hourly bar style graphs like weewx does for rain.
Reading through your response made the light go on - adding .raw at the end
returns a number and that all I needed



On 11 January 2017 at 15:32, Thomas Keffer <[email protected]> wrote:

> Hello, Louis,
>
> The role of ValueHelper is explained in the Customization Manual
> <http://weewx.com/docs/customizing.htm#how_tags_work>. It's the
> ValueHelper that carries the information you specified in skin.conf about
> what units and formats you want. It's what makes sure the output is always
> in the chosen units, using the chosen formatting. Perhaps it would help to
> look at its implementation
> <https://github.com/weewx/weewx/blob/master/bin/weewx/units.py#L843>.
>
> If Cheetah needs to convert a ValueHelper to a string, it calls __str__,
> which is when the default formatting functions are invoked. But, notice it
> also has member functions like format, nolabel, raw, etc. These are the 
> formatting
> option <http://weewx.com/docs/customizing.htm#formatting_options> listed
> in the Customizing Manual, that allow you to override the defaults. It is
> these functions that get invoked if you write something like
> $current.outTemp.nolabel(".2f")
>
> Back to your problem with calculating the differences. There are two ways
> you can approach this.
>
> 1. Do the calculation in the templates. This is probably the simplest. Get
> the current value, and subtract from it the value, say, one hour ago (NOT
> TESTED):
>
> #set diff = $current.cumEnergy.raw - $hours_ago($hours_ago=1).
> cumEnergy.last.raw
>
> <p>The energy consumed over the last hour was: $diff</p>
>
>
> Note the use of the .raw suffix. This returns a *number* instead of a
> ValueHelper, allowing you to do arithmetic on it. Of course, after the
> subtraction, you are left with a new number, not a ValueHelper, so it's
> up to you to make sure it's in the right units and uses the right
> formatting.
>
> 2. Define a search list extension (SLE). This is described in the manual
> <http://weewx.com/docs/customizing.htm#defining_new_tags>.
>
> Hope this helps.
>
> -tk
>
>
>
> On Wed, Jan 11, 2017 at 2:55 PM, Louis De Lange <[email protected]>
> wrote:
>
>> This question is more related to python programming than using weewx, but
>> I cant find a solution - so I hope that Tom and the other gurus can point
>> me in the right direction.
>>
>> I am writing a function to capture power consumption from the utility
>> meter.  As part of that I am storing the cumulative energy reading for each
>> archive period in the archive.
>>
>> To get the incremental energy reading between archive periods I read the
>> last archive record of the cumulative energy with the "latest" function in
>> weewx.tags.  Reading and printing the latest archive record of cumulative
>> energy works fine - here is a snippet of the code to do that (thanks to
>> Tom's answers to previous threads)
>>
>>       # Create a RecordBinder, bound to the database and timestamp
>>       rb = weewx.tags.RecordBinder(db_lookup, timestamp)
>>       print "The last cumulative electrical energy record =",
>> rb.latest().cumEnergy
>>
>> When I try to subtract the value for rb.latest().cumEnergy from the
>> current cumulative energy reading just obtained from the meter, I get a
>> type error.
>>
>> Then I added the following code to try and figure out what the out type
>> of rb.latest().cumEnergy is
>>
>>       last_cum_energy = rb.latest().cumEnergy
>>       print type(last_cum_energy)
>>
>> This does not help because the output of the last print command is
>>
>> <class 'weewx.units.ValueHelper'>
>>
>>
>> I tried doing a float modification, but that does not work.
>>
>> Any help to turn the output of the function into something I can do
>> arithmetic with will be appreciated.
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "weewx-user" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> For more options, visit https://groups.google.com/d/optout.
>>
>
> --
> You received this message because you are subscribed to the Google Groups
> "weewx-user" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"weewx-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to