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.

Reply via email to