Well, It seems to work, meaning that I don't get any syntax errors. I'll
have to wait until tomorrow afternoon if it's sunny to see for sure. I
tried to put in a time specific fix -
outTemp = extraTemp1 if outTemp>(extraTemp1 + 4) and
datetime.utcfromtimestamp(dateTime).strftime("&H")>16 and
datetime.utcfromtimestamp(dateTime).strftime("&H")<20 else outTemp
There's a pretty good chance I've screwed up the logic but at least the
syntax works in stdCalibrate
Thanks for your help/
On Wednesday, March 27, 2019 at 6:25:33 PM UTC-7, gjr80 wrote:
>
> Meant to link the relevant section
> <http://weewx.com/docs/usersguide.htm#StdCalibrate> from the Users Guide
> <http://weewx.com/docs/usersguide.htm> but forgot. It does not say it in
> so many words but you can anything that can 'evaluated' in a single line.
> Most folks tend to think of simple formulae involving one or more variables
> but the single line version of the python if..then..else statement lets you
> bring in conditional evaluation as well.
>
> If you are interested in the python behind [StdCalibrate] then anything
> that you can do in the python eval()
> <https://docs.python.org/2/library/functions.html#eval> function can be
> used. The available variables are observation field names in the loop
> packet or archive record being processed, eg: outTemp, outHumidity, rain
> etc
>
> Gary
>
> On Thursday, 28 March 2019 11:15:28 UTC+10, [email protected] wrote:
>>
>> That's exactly what I was looking for.
>>
>> I want to set outTemp, but otherwise exactly what I need. I didn't know
>> that I could put an if statement there. Can I use other python code there
>> to be able to look up the time? Is this in the documentation someplace?
>>
>> I'll try it out now.
>>
>> On Wednesday, March 27, 2019 at 6:03:35 PM UTC-7, gjr80 wrote:
>>>
>>> Hi,
>>>
>>> You could put an entry in [StdCalibrate] in weewx.conf to set outTemp
>>> or extraTemp1 to whatever you want. Something like:
>>>
>>> [StdCalibrate]
>>> [[Corrections]]
>>> extraTemp1 = extraTemp1 if outTemp > extraTemp1 + 6 else outTemp
>>>
>>> or you could flip the equation around and change outTemp. Another
>>> approach would be to put your composite temperature in another field such
>>> as extraTemp2:
>>>
>>> [StdCalibrate]
>>> [[Corrections]]
>>> extraTemp2 = extraTemp1 if outTemp > extraTemp1 + 6 else outTemp
>>>
>>> The 2nd approach will preserve you outTemp or extraTemp1 data and
>>> should see extraTemp2 saved to the database.
>>>
>>> Note that the above is untested and the '6' assumes you are using US
>>> customary units in your database - if not then 6 needs to be converted to C.
>>>
>>> Also, depending on your requirements you could achieve a similar result
>>> with some in line python code in your template. This would work fine for
>>> displaying current data but will not give you the aggregates that you get
>>> from having the composite data in the database. You could easily work in
>>> your time based requirements as well (pseudo code - if 17 < hour < 19
>>> display extraTemp1 else display outTemp). You could even use a combination
>>> of [StdCalibrate] and some python inline code to get the best of both
>>> worlds.
>>>
>>> Gary
>>>
>>> On Thursday, 28 March 2019 10:28:29 UTC+10, [email protected] wrote:
>>>>
>>>> Hi,
>>>>
>>>> I have been using Weewx v3.5.0 for a few years now. I have an Accurite
>>>> weather station with the thermometer, rain gauge and anemometer in a
>>>> single
>>>> unit. In order to get the rain gauge and anemometer to give useful
>>>> readings, I mounted it on the roof where it's away from all the trees.
>>>> It's
>>>> the best location for wind and rain, but it sucks for the temperature much
>>>> of the time. I have a white roof and the temp up there is often 10degF
>>>> warmer than ambient.
>>>>
>>>> To get around that, I built my own wifi thermometer and put it in a
>>>> much better location. Details of the build here
>>>> <https://hackaday.io/project/101680-solar-powered-wifi-temperature-sensor-for-weewx>
>>>> .
>>>>
>>>> The new thermometer gives more accurate readings almost all the time.
>>>> However, a few minutes in the late afternoon, I get direct sunshine on it
>>>> and the temp spikes. It can spike by 20 degrees sometimes and is screwing
>>>> with my long term high temp data. It's worst this time of year, before the
>>>> oak trees leaf out and block the afternoon sun.
>>>>
>>>> I'm recording the Accurite data in extraTemp1 and my thermometer in
>>>> outTemp. I want to write some code to put the extraTemp1 value in outTemp
>>>> if outTemp is more than 6 degF higher than extraTemp1. Ideally I'd only do
>>>> this between 5-7pm local time, but doing it all the time would be ok. The
>>>> problem I'm having is finding a good place to do the comparison. The
>>>> service that reads outTemp doesn't have the extraTemp1 value. The code
>>>> that
>>>> reads the Accurite data and stuffs it into extraTemp1 doesn't have the
>>>> outTemp data. Does anyone have a suggestion on where to do this comparison?
>>>>
>>>> I've tried fixing it up after the fact with a SQL query. It works, but
>>>> I'd like to do it in real time rather than go back and fix the data later.
>>>>
>>>
--
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.