Tom,

Thanks for the reply.
The exact error is: CRITICAL __main__:     ****  ValueError: could not 
convert string to float: 'pressure'
and weewx crashes when it encounters that.

I have considered that the value might be Null (or None, rather), which is 
why I chose a variable that's fed from my barometer, so should always 
contain a valid value.
But I have also added a check for that into my code, with the same result:

if 'pressure' != None:
  foo = do arithmetic
else:
  foo = do nothing

FWIW, I'm using the "electricity" service example, and the code in question 
is in the "def new_archive_record(self, event):" section.

But is it correct to refer to the variable as 'pressure'? With the single 
quotes?
Because if I don't, like you have in your example, I get this:

NameError: name 'pressure' is not defined


On Thursday, May 2, 2024 at 7:52:25 PM UTC-5 Tom Keffer wrote:

> When a value comes off the database it's always either a number, or the 
> Python value "None", with very few exceptions. You didn't show us the 
> error, but the issue is likely to be that "pressure" has the value "None", 
> which signals bad or missing data.
>
> Be sure to read the document *Notes for developers 
> <https://www.weewx.com/docs/5.0/devnotes/>*. It includes some information 
> about None.
>
> So, your example becomes,
>
> *foo = pressure * 10 if pressure is not None else None*
>
> Then, of course, you have to remember that "foo" could be None. This is a 
> very common pattern in WeeWX.
>
> Then again, perhaps the error is completely different and it's not due to 
> the value None. If you're still having trouble, show us the error.
>
> -tk
>
>
> On Thu, May 2, 2024 at 5:44 PM Michael Frotscher <[email protected]> 
> wrote:
>
>> All,
>> I'm trying to write a simple service that creates a new derived 
>> measurement based on values already in the weewx database. Ultimately, I 
>> want to get a running total of the rainfall, but I'm not there yet. Also, 
>> not a Python developer by trade, but I'm trying.
>>
>> My issue is: when I try to do arithmetic, the variables have, of course, 
>> to be numbers, be it int or float. I'll take the 'pressure' measurement as 
>> an example. Looking into the database, it seems to be a float, but it could 
>> also be a string.
>> But trying to use it that way, or trying to convert the string into a 
>> float, always gives me errors (could not convert string to float). I've 
>> tried stripping invisible whitespaces from the string (if it is one), but 
>> the error remains.
>> Here's the relevant code, one of the many I've tried.
>>
>> So how do I get a weewx-variable into usable form? I'm probably missing 
>> something pretty basic here.
>> Thanks!
>> BTW, is there a way to test-run a service file? Like have the python code 
>> run in the weewx-environment?
>>
>> foo = (float('pressure') * 10)
>>
>> or
>>
>> pressure_trim = 'pressure'.strip()  
>> foo = (float(pressure_trim) * 10)
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "weewx-development" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected].
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/weewx-development/f08bf769-d2b2-4840-b0a3-2feeef33ea67n%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/weewx-development/f08bf769-d2b2-4840-b0a3-2feeef33ea67n%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"weewx-development" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/weewx-development/09981f6c-0d06-4a4c-b438-91c46cc01c84n%40googlegroups.com.

Reply via email to