I finally came to the realization that everything I wanted to do could be 
done with the Cheetah engine, and even learned a tiny bit of Python in the 
process. The following code, added to index,html.tmpl (or some other 
template) generates a crude compass rose with up to two directional vanes, 
one (in red) for gust direction and one (in blue) for wind direction. The 
length of the vanes is proportional to the corresponding speed value, on a 
logarithmic scale.

#import math
       <svg version="1.1" baseProfile="full" width="200" height="200" 
xmlns="http://www.w3.org/2000/svg";>
       <!-- draw outer ring, then 10-degree tickmarks, 2 gray inner circles 
and 3 scale labels (1, 10, 100)  -->
        <circle cx="90" cy="85" r="75" stroke="black" stroke-width="5" 
stroke-dasharray="1,12.08" fill="transparent" />
        <circle cx="90" cy="85" r="80" stroke="lightgray" stroke-width="10" 
fill="transparent" />
        <circle cx="90" cy="85" r="38" stroke="lightgray" 
fill="transparent" />
        <circle cx="90" cy="85" r="56" stroke="lightgray" 
fill="transparent" />
        <text x="120" y="26" font-size="8" text-anchor="middle" 
fill="gray">100</text>
        <text x="112" y="42" font-size="8" text-anchor="middle" 
fill="gray">10</text>
        <text x="103" y="58" font-size="8" text-anchor="middle" 
fill="gray">1</text>
       <!-- draw compass rose background (2 polygons) then 4 directional 
letters and innermost circle  -->
        <polygon points="90 35, 100 75, 140 85, 100 95, 90 135, 80 95, 40 
85, 80 75" fill="lightgray" transform="rotate(45 90 85)" />
        <polygon points="90 25, 100 75, 150 85, 100 95, 90 145, 80 95, 30 
85, 80 75" fill="lightgray" />
        <text x="90" y="22" font-size="16" text-anchor="middle" 
fill="gray">N</text>
        <text x="90" y="159" font-size="16" text-anchor="middle" 
fill="gray">S</text>
        <text x="22" y="91" font-size="16" text-anchor="middle" 
fill="gray">W</text>
        <text x="158" y="91" font-size="16" text-anchor="middle" 
fill="gray">E</text>
        <circle cx="90" cy="85" r="20" stroke="black" fill="white" />
       <!-- put current values for gust and wind speed in inner circle, 
then calculate and draw vanes if direction given and speed > 0   -->
        <text x="90" y="83" font-size="12" text-anchor="middle" 
fill="orangered">$current.windGust.formatted</text>
        <text x="90" y="97" font-size="12" text-anchor="middle" 
fill="dodgerblue">$current.windSpeed.formatted</text>
       #if $current.windGustDir.formatted != "   N/A" and 
float($current.windGust.formatted) > 0
       #set $wg = 65 - 18 * (1 + 
math.log(float($current.windGust.formatted), 10))
        <polygon points="90 $wg, 100 65, 80 65" fill="orangered" 
transform="rotate($current.windGustDir.formatted 90 85)" />
       #end if
        #if $current.windDir.formatted != "   N/A" and 
float($current.windSpeed.formatted) > 0
       #set $ws = 65 - 18 * (1 + 
math.log(float($current.windSpeed.formatted), 10))
        <polygon points="90 $ws, 95 65, 85 65" fill="dodgerblue" 
transform="rotate($current.windDir.formatted 90 85)" />
       #end if
       </svg>


This is set up to work with speeds measured in miles per hour. Some 
modification would be needed to make it work with other units. I hope 
someone will find it useful. Improvements welcome.


On Monday, April 2, 2018 at 8:21:51 PM UTC-4, RobbH wrote:
>
> Very nice! That's not exactly what I'm attempting right now, but I'll keep 
> in mind for the future.
>
> I hope you'll add it to the weewx wiki, so it'll be easy to find in the 
> future.
>
> I didn't find the realtime gauge data extension in the wiki, either, but 
> found it here:
>
> https://github.com/gjr80/weewx-realtime_gauge-data
>
>
>
> On Sunday, April 1, 2018 at 10:32:53 PM UTC-4, Alec Bennett wrote:
>>
>> > On the other hand, it may be possible to do all I need with javascript, 
>> and I'll probably try that first.
>>
>> If you want to use javascript, you might be interested in this project of 
>> mine:
>>
>> github.com/wrybread/Weather-Underground-Style-Real-Time-Gauge
>>
>> Personally I think javascript is a good method for current wind 
>> conditions, since it makes it easy to update a graphic continually. This 
>> live demo should update every 2 seconds or so (every time the wind 
>> indicator turns green is an update):
>>
>> sinkingsensation.com/wu_gauge/
>>
>> I should really update that though, since it's very small on my screen. A 
>> CSS issue. Or here (css optimized for mobile):
>>
>> sinkingsensation.com/wind
>>
>> Note that this requires enabling the RTC ("real time gauge") extension in 
>> weewx. And fyi the effect is achieved by rotating the circle to the current 
>> wind direction. 
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>  
>>
>>> A crude version, without making the wind directional pointer 
>>> proportional to wind speed, can be done with svg graphics and no outside 
>>> help. I've posted that to the old thread that I linked in the first post.
>>>
>>>
>>> On Friday, March 30, 2018 at 8:27:41 PM UTC-4, RobbH wrote:
>>>>
>>>> Maybe, at long last, I'm going to have to buckle down and learn enough 
>>>> of Python to do this!
>>>>
>>>>
>>>> On Friday, March 30, 2018 at 6:51:49 PM UTC-4, vince wrote:
>>>>>
>>>>> On Friday, March 30, 2018 at 1:54:30 PM UTC-7, RobbH wrote:
>>>>>>
>>>>>> Still pursuing this, and I have learned how to generate the sort of 
>>>>>> image I want, but not within Weewx. Is it possible call an external 
>>>>>> program 
>>>>>> (shell script) during each report cycle?
>>>>>>
>>>>>>
>>>>> It is possible to do darn near anything if you write an extension to 
>>>>> do so.....assuming the account weewx runs as has privileges to do so.
>>>>>  
>>>>>
>>>>

-- 
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