[weewx-user] Weewx 5.01 ReportThread throws KeyError: 'skin'

2024-02-08 Thread Maarten van der Hoeven
Hi,

Nut sure this came up after the Weewx 5 upgrade, and it seems to not 
breaking any functionallity, but I want to find out why this is being 
reported (KeyError: 'skin').

Feb  9 08:44:56 weewx weewxd[1051]: Exception in thread ReportThread:
Feb  9 08:44:56 weewx weewxd[1051]: Traceback (most recent call last):
Feb  9 08:44:56 weewx weewxd[1051]:   File 
"/usr/lib/python3.10/threading.py", line 1016, in _bootstrap_inner
Feb  9 08:44:56 weewx weewxd[1051]: self.run()
Feb  9 08:44:56 weewx weewxd[1051]:   File 
"/usr/share/weewx/weewx/reportengine.py", line 194, in run
Feb  9 08:44:56 weewx weewxd[1051]: skin_dict['skin'])) as cwd:
Feb  9 08:44:56 weewx weewxd[1051]:   File 
"/usr/lib/python3/dist-packages/configobj.py", line 554, in __getitem__
Feb  9 08:44:56 weewx weewxd[1051]: val = dict.__getitem__(self, key)
Feb  9 08:44:56 weewx weewxd[1051]: KeyError: 'skin'


Part of my weewx.conf, debug set to 1:

[StdReport]

# Where the skins reside, relative to WEEWX_ROOT
SKIN_ROOT = /etc/weewx/skins

# Where the generated reports should go, relative to WEEWX_ROOT
HTML_ROOT = /var/www/html/weewx

# The database binding indicates which data should be used in reports.
data_binding = wx_binding

# Whether to log a successful operation
log_success = True

# Whether to log an unsuccessful operation
log_failure = True

# Each of the following subsections defines a report that will be run.
# See the customizing guide to change the units, plot types and line
# colors, modify the fonts, display additional sensor data, and other
# customizations. Many of those changes can be made here by overriding
# parameters, or by modifying templates within the skin itself.

[[SeasonsReport]]
# The SeasonsReport uses the 'Seasons' skin, which contains the
# images, templates and plots for the report.
skin = Seasons
enable = true

[[SmartphoneReport]]
# The SmartphoneReport uses the 'Smartphone' skin, and the images 
and
# files are placed in a dedicated subdirectory.
skin = Smartphone
enable = false
HTML_ROOT = /var/www/html/weewx/smartphone

[[MobileReport]]
# The MobileReport uses the 'Mobile' skin, and the images and files
# are placed in a dedicated subdirectory.
skin = Mobile
enable = false
HTML_ROOT = /var/www/html/weewx/mobile

[[StandardReport]]
# This is the old "Standard" skin. By default, it is not enabled.
skin = Standard
enable = false

-- 
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 weewx-user+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/weewx-user/7833ec5c-fde8-4832-8920-6fc17ed34ad4n%40googlegroups.com.


[weewx-user] Re: Recalculate rainrate values

2023-01-15 Thread Maarten van der Hoeven
Hi, thx for the response.I must be overlooking something, as the rainrate 
becomes zero. I took just one day, January 12, 2023. Below what I did:

1. Stop weewx: /etc/init.d/weewx stop

2. Set rainrate to NULL for 12-01-2023
 SQL: update archive set rainrate = NULL where 
date_format(from_unixtime(dateTime), '%d-%m-%Y') LIKE '12-01-2023';

3. Check for NULL (just a snippet) from 12-01-2023
SQL: select date_format(from_unixtime(dateTime), '%d-%m-%Y %H:%i') as 
datumtijd, round(rain,1) as rain,round(rainrate,1) as rainrate from archive 
where rain > 0 and date_format(from_unixtime(dateTime), '%d-%m-%Y') LIKE 
'12-01
-2023';
+--+--+--+
| datumtijd| rain | rainrate |
+--+--+--+
| 12-01-2023 00:18 |  0.2 | NULL |
| 12-01-2023 11:07 |  0.2 | NULL |
| 12-01-2023 11:58 |  1.0 | NULL |
| 12-01-2023 12:00 |  0.5 | NULL |
| 12-01-2023 12:01 |  0.5 | NULL |
| 12-01-2023 12:02 |  0.5 | NULL |
| 12-01-2023 12:03 |  0.5 | NULL |


4. Run wee_database --calc-missing --date=2023-01-12
Using configuration file /etc/weewx/weewx.conf
Using database binding 'wx_binding', which is bound to database 
'archive_mysql'
Missing derived observations will be calculated from 2023-01-12 00:00:01 
CET (1673478001) through to 2023-01-13 00:00:00 CET (1673564400) inclusive.
Proceed (y/n)? y
Calculating missing derived observations...
Type beaufort has been deprecated. Use unit beaufort instead.
Processing record: 1440; Last record: 2023-01-13 00:00:00 CET (1673564400)
Recalculating daily summaries...
Records processed: 1000; time: 2023-01-12 16:40:00 CET (1673538000)
Finished recalculating daily summaries
Missing derived observations calculated in 1.33 seconds

5. Check for rainrate
SQL: select date_format(from_unixtime(dateTime), '%d-%m-%Y %H:%i') as 
datumtijd, round(rain,1) as rain,round(rainrate,1) as rainrate from archive 
where rain > 0 and date_format(from_unixtime(dateTime), '%d-%m-%Y') LIKE 
'12-01-2023';
+--+--+--+
| datumtijd| rain | rainrate |
+--+--+--+
| 12-01-2023 00:18 |  0.2 |  0.0 |
| 12-01-2023 11:07 |  0.2 |  0.0 |
| 12-01-2023 11:58 |  1.0 |  0.0 |
| 12-01-2023 12:00 |  0.5 |  0.0 |
| 12-01-2023 12:01 |  0.5 |  0.0 |
| 12-01-2023 12:02 |  0.5 |  0.0 |
| 12-01-2023 12:03 |  0.5 |  0.0 |
| 12-01-2023 12:04 |  0.5 |  0.0 |
| 12-01-2023 12:05 |  0.5 |  0.0 |
| 12-01-2023 12:06 |  0.5 |  0.0 |
| 12-01-2023 12:07 |  0.5 |  0.0 |
| 12-01-2023 12:08 |  0.5 |  0.0 |
| 12-01-2023 12:09 |  0.5 |  0.0 |
| 12-01-2023 12:10 |  0.5 |  0.0 |
| 12-01-2023 12:11 |  0.5 |  0.0 |
| 12-01-2023 12:12 |  0.5 |  0.0 |
| 12-01-2023 12:13 |  0.5 |  0.0 |



What am I overlooking/missing?


Op zaterdag 14 januari 2023 om 23:17:09 UTC+1 schreef gjr80:

> You should try using the --calc-missing action 
>  with 
> wee_database. --calc-missing will calculate any missing derived 
> observations in your database, rainRate is a derived observation as far 
> as WeeWX is concerned, you may have prefer_hardware against rainRate in 
> StdWXCalculate but that should not matter in this case (prefer_hardware 
> simply 
> means try to get the observation from the station/driver and if you can't 
> calculate it). wee_database does not interrogate your station/driver for 
> data in any way.
>
> Note that for wee_database to consider an observation to be 'missing' the 
> corresponding database field(s) must be empty or have been set to 
> null/None. Being set to 0 (zero) is not considered empty nor is saving a 
> zero length string (as can happen sometimes when using a graphical frontend 
> to edit your database) and hence will not be re-calculated. Assuming you 
> are dealing with a small segment of your data, you may wish to use the 
> --from and --to command line options when using --calc-missing to limit 
> the date span to be re-calculated.
>
> Gary
> On Sunday, 15 January 2023 at 00:45:54 UTC+10 hoev...@gmail.com wrote:
>
>> Hi. I have a Davis Vantage Pro 2. StdWxCalculate says that rainrate 
>> should be taken from 'prefered hardware'.
>>
>> However, I needed to add some rainticks into the database, to correct 
>> daily rainfall sums (long story, tipping bucket broke down). I want to 
>> recalculate all rainrate values.
>>
>> What is the way to do that?
>>
>> I tried wee_database --drop-daily and --rebuild-daily, but the stored 
>> rainrate values remain the same (which makes sense, as in StdWxCalculate it 
>> should take them from hardware, which Davis provides). But now, I want to 
>> recalculate rainrate values, based on the rain-values that's already in the 
>> database.
>>
>> Can this be done? How?
>>
>

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

[weewx-user] Recalculate rainrate values

2023-01-14 Thread Maarten van der Hoeven
Hi. I have a Davis Vantage Pro 2. StdWxCalculate says that rainrate should 
be taken from 'prefered hardware'.

However, I needed to add some rainticks into the database, to correct daily 
rainfall sums (long story, tipping bucket broke down). I want to 
recalculate all rainrate values.

What is the way to do that?

I tried wee_database --drop-daily and --rebuild-daily, but the stored 
rainrate values remain the same (which makes sense, as in StdWxCalculate it 
should take them from hardware, which Davis provides). But now, I want to 
recalculate rainrate values, based on the rain-values that's already in the 
database.

Can this be done? How?

-- 
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 weewx-user+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/weewx-user/c6911892-2a11-481c-ac6d-dc72861f9e16n%40googlegroups.com.


[weewx-user] Wlink driver not compatible with Python3?

2020-06-20 Thread Maarten van der Hoeven
Hi,

I tried to connect to weatherlink.com, and used the wlink driver 
(https://github.com/weewx/weewx/wiki/wlink). I am running the latest weewx 
4.1.1, Python3.

I got this error. Does this mean the driver is not ready for Python3? I did 
some digging, httplib is not available, and should be replaced by 
http.client. 

Jun 20 19:45:36 weewx weewx[2897] CRITICAL __main__:   engine = 
weewx.engine.StdEngine(config_dict)
Jun 20 19:45:36 weewx weewx[2897] CRITICAL __main__: File 
"/usr/share/weewx/weewx/engine.py", line 69, in __init__
Jun 20 19:45:36 weewx weewx[2897] CRITICAL __main__:   
self.setupStation(config_dict)
Jun 20 19:45:36 weewx weewx[2897] CRITICAL __main__: File 
"/usr/share/weewx/weewx/engine.py", line 92, in setupStation
Jun 20 19:45:36 weewx weewx[2897] CRITICAL __main__:   
__import__(driver)
Jun 20 19:45:36 weewx weewx[2897] CRITICAL __main__: File 
"/usr/share/weewx/user/wlink.py", line 181
Jun 20 19:45:36 weewx weewx[2897] CRITICAL __main__:   
httplib.BadStatusLine, httplib.IncompleteRead), e:
Jun 20 19:45:36 weewx weewx[2897] CRITICAL __main__: 
^
Jun 20 19:45:36 weewx weewx[2897] CRITICAL __main__:   SyntaxError: 
invalid syntax
Jun 20 19:45:36 weewx weewx[2897] CRITICAL __main__:   Exiting.

-- 
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 weewx-user+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/weewx-user/d6c7448f-7389-4f78-8fa8-0cd7a2a32004o%40googlegroups.com.


[weewx-user] Re: Weatherlink IP Discontinued... What are folks using now?

2020-06-20 Thread Maarten van der Hoeven
But -correct me if wrong- WLL is only supplying current records. There is 
not an archive available to pull previous records from. In other words, if 
for some reason WeeWX is not running for a day, and you fire it up again, 
you cannot retrieve the previous records anymore, as was the case with the 
IP-logger.

Unless, of course, a driver is available that retrieves the archived 
records directly from Weathlink.com (CumulusMX has implemented this). As 
far as I know, no such driver is available for weewx (am I right?).

Op zaterdag 20 juni 2020 15:42:54 UTC+2 schreef galfert:
>
> You could also ge the Davis WeatherLink Live and use that with WeeWX. 
> You need the WLL driver:
> https://github.com/jonotaegi/weewx-wll
>
> One nice thing about the WLL is that you can then also run other software 
> simultaneously on the same or different system as WeeWX. In case you also 
> wanted to check out Weather-Display or Cumulus MX for example. 
>

-- 
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 weewx-user+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/weewx-user/7b9e457f-e3fe-4294-9fc6-269f96f463c3o%40googlegroups.com.


[weewx-user] Using Weatherlink Live for loops and Weatherlink.com for archived records

2020-06-16 Thread Maarten van der Hoeven
Hi,

If I understood correctly, WeatherLink Live is only capable of delivering 
loop-records (besides uploads to Weatherlink.com of course). So, Weewx will 
only get loop-records, if connected to a WeatherLink Live. Am I correct?

If that's the situation, what is the way to retrieve archived records from 
Weatherlink.com? Is that possible, to use a combination of drivers:

* WLL for loop-records
* Weatherlink.com (with a Device ID and API key/secret) for archived records

Or are you stuck with only loop records when using a WLL?

-- 
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 weewx-user+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/weewx-user/f04de88d-5fe5-477d-945d-6594c733e6a9o%40googlegroups.com.


[weewx-user] Re: Weewx tag to show last time it rained

2020-06-08 Thread Maarten van der Hoeven
Thanks Gary, for the pointer. This makes sense. In fact, it is working now! 
Adding user.lastrain.getRainTags to the existing search_list_extentions in 
the skin.conf of Belchertown.

Now moving it to the weewx.conf, to make it less vulnerable to skin-changes 
of Belchertown.



Op maandag 8 juni 2020 10:59:17 UTC+2 schreef gjr80:
>
> When you extend the search list using a search list extension it is done 
> on a skin-by-skin basis. Have a look in the skin config file for the skin 
> that does work with the search list extension, under [CheetahGenerator] you 
> should find a setting search_list_extensions that is set to a comma 
> separated list of items (there may only be one item), something like:
>
> search_list_extensions = user.apple.a_search_list, 
> user.orange.another_search_list
>
> One of the items will be for your last rain extension (hint the search 
> list name (eg a_search_list) is the same as the class name for the search 
> list extension in the search list .py file (eg user/apple.py)).
>
> To use a search list extension in another skin you need to add the 
> search_list_extensions setting (if not already there) under 
> [CheetahGenerator] in the skin config file for the other skin and set it to 
> use search list extension concerned. If there are already entries against 
> search_list_extensions just add you search list to the list with a commma. 
> For example to use the a_search_list search list extension you would simply 
> add the following line:
>
> search_list_extensions = user.apple.a_search_list
>
> No need to restart WeeWX.
>
> Gary
>
>

-- 
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 weewx-user+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/weewx-user/2668f16d-175b-4e46-b1e9-f90c0ac700c1o%40googlegroups.com.


[weewx-user] Re: Weewx tag to show last time it rained

2020-06-08 Thread Maarten van der Hoeven
Well, speaking for me, I would like to show this information (last time it 
rained) using a tag, and put it in index_hook_after_station_info.inc The 
tag is $time_since_last_rain.

Having done that (putting the tag in that inc-file), it throws an error 
NameMapper.NotFound while the generator is doing its thing. Looking at the 
html the skin lastrain produces, it shows the correct last datetime it 
rained. I guess (in my own words) it's the case that calculated variables 
in one skin can not be used in another skin? Is this true?

Jun  8 08:53:18 weewx weewx[99172] INFO weewx.cheetahgenerator: Generated 8 
files for report SeasonsReport in 1.24 seconds
Jun  8 08:53:19 weewx weewx[99172] INFO weewx.imagegenerator: Generated 15 
images for report SeasonsReport in 0.41 seconds
Jun  8 08:53:19 weewx weewx[99172] INFO weewx.reportengine: Copied 5 files 
to /var/www/html/weewx
Jun  8 08:53:19 weewx weewx[99172] INFO weewx.restx: MQTT: Published record 
2020-06-08 08:53:19 CEST (1591599199)
Jun  8 08:53:19 weewx weewx[99172] message repeated 2 times: [ INFO 
weewx.restx: MQTT: Published record 2020-06-08 08:53:19 CEST (1591599199)]
Jun  8 08:53:20 weewx weewx[99172] ERROR weewx.cheetahgenerator: Generate 
failed with exception ''
Jun  8 08:53:20 weewx weewx[99172] ERROR weewx.cheetahgenerator:  
Ignoring template /etc/weewx/skins/Belchertown/index.html.tmpl
Jun  8 08:53:20 weewx weewx[99172] ERROR weewx.cheetahgenerator:  
Reason: cannot find 'time_since_last_rain'
Jun  8 08:53:20 weewx weewx[99172] ERROR weewx.cheetahgenerator:   
Traceback (most recent call last):
Jun  8 08:53:20 weewx weewx[99172] ERROR weewx.cheetahgenerator: 
File "/usr/share/weewx/weewx/cheetahgenerator.py", line 322, in generate
Jun  8 08:53:20 weewx weewx[99172] ERROR weewx.cheetahgenerator:   
unicode_string = compiled_template.respond()
Jun  8 08:53:20 weewx weewx[99172] ERROR weewx.cheetahgenerator: 
File "_etc_weewx_skins_Belchertown_index_html_tmpl.py", line 1261, in 
respond
Jun  8 08:53:20 weewx weewx[99172] ERROR weewx.cheetahgenerator: 
File "/usr/lib/python3/dist-packages/Cheetah/Template.py", line 1708, in 
_handleCheetahInclude
Jun  8 08:53:20 weewx weewx[99172] ERROR weewx.cheetahgenerator:   
self._CHEETAH__cheetahIncludes[_includeID].respond(trans)
Jun  8 08:53:20 weewx weewx[99172] ERROR weewx.cheetahgenerator: 
File 
"cheetah__etc_weewx_skins_Belchertown_index_hook_after_station_info_inc_1591599200_376662_26334.py",
 
line 90, in respond
Jun  8 08:53:20 weewx weewx[99172] ERROR weewx.cheetahgenerator:   
NameMapper.NotFound: cannot find 'time_since_last_rain'
Jun  8 08:53:20 weewx weewx[99172] INFO weewx.restx: MQTT: Published record 
2020-06-08 08:53:21 CEST (1591599201)
Jun  8 08:53:21 weewx weewx[99172] INFO weewx.cheetahgenerator: Generated 
10 files for report Belchertown in 1.86 seconds


Op woensdag 3 juni 2020 14:11:27 UTC+2 schreef Pat:
>
> Where on the skin would you display this info? Just curious
>
> On Wednesday, June 3, 2020 at 6:59:13 AM UTC-4, NanoG5Kite wrote:
>>
>> Got this installed and working too - many thanks for the hint.
>>
>>
>> As Weewx beginner - is there any way to get the two Last Rain Values 
>> displayed in the Belchertown Homeskin?
>>
>> last rain N/A 
>> time since last rain: N/A 
>>
>> Thanks,
>>
>> Matthias
>>
>> Am Mittwoch, 3. Juni 2020 12:38:05 UTC+2 schrieb Remy Lavabre:
>>>
>>> Yes !
>>> And it is working perfectly !
>>
>>

-- 
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 weewx-user+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/weewx-user/5e44195c-3fd9-4f21-8ff2-c3461e34f162o%40googlegroups.com.


[weewx-user] Re: Weewx tag to show last time it rained

2020-06-03 Thread Maarten van der Hoeven
Thanks. Are we talking about this extension to install?

https://github.com/vinceskahan/vds-weewx-lastrain-extension



Op woensdag 3 juni 2020 11:11:52 UTC+2 schreef Remy Lavabre:
>
> Hi,
>
> Just do that (simple) :
>
> -1/  git clone wee_extension --install=/tmp/extensions/lastrain 
> /tmp/extensions/lastrain
> -2/ sudo wee_extension --install=/tmp/extensions/lastrain
> -3/ sudo /etc/init.d/weewx stop
> -4/ sudo /etc/init.d/weewx start
> -5/ Enjoy ! ;-)
>
>
> Le mercredi 3 juin 2020 10:14:29 UTC+2, Maarten van der Hoeven a écrit :
>>
>> Hi,
>>
>> What would be the weewx tag to show the date the last time is has 
>> rained?
>>
>> I have a feeling I need to do some scripting/programming to retrieve 
>> this. Or am I overlooking a nifty tag?
>>
>

-- 
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 weewx-user+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/weewx-user/2a967db3-bb7b-473d-9c45-750e0ff8e604%40googlegroups.com.


[weewx-user] Weewx tag to show last time it rained

2020-06-03 Thread Maarten van der Hoeven
Hi,

What would be the weewx tag to show the date the last time is has 
rained?

I have a feeling I need to do some scripting/programming to retrieve this. 
Or am I overlooking a nifty tag?

-- 
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 weewx-user+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/weewx-user/fa064e76-bf93-45e2-9afe-b7117673640a%40googlegroups.com.


Re: [weewx-user] Plotting an extended variable with Belchertown graphs just like rainTotal

2020-05-30 Thread Maarten van der Hoeven
Perfect Tom, thanks!



Op zaterdag 30 mei 2020 14:46:48 UTC+2 schreef Tom Keffer:
>
> Hello, Maarten
>
> I am not familiar with Belchertown, but wanted to note that there is a 
> 'cumulative' aggregation type. Belchertown may have a different way of 
> doing things, but for a normal WeeWX plot
>
> [[[monthdroughtcum]]]
> plot_type = bar
> drought
> aggregate_type = cumulative
> label = Drought (cumulative)
>
> would give you a plot of accumulated 'drought' for the month.
>
> -tk
>
> On Sat, May 30, 2020 at 3:39 AM Maarten van der Hoeven  > wrote:
>
>> Hi,
>>
>> I wrote an extension to weewx, that calculates the amount of drought 
>> (evapotranspiration minus rain). Basilcally, drought is a 'bucket'-type. 
>> Every time a rain-tick of an evaotranspiration (ET)-calculation (on top 
>> every hour), drought is calculated as ET minus rain. I am talking about a 
>> Davis Vantage Pro. It's an extension on schema_extended
>>
>> I saw that the Belchertown skin calculates rainTotal, to use that 
>> variable to draw an accumulated (growing when rain occurs during the year) 
>> rain graph.
>>
>> I also want to plot the drought-variable as an accumulated value, just 
>> like rainTotal. Is this possible in the graph.conf file, to achieve this? 
>> Or do I need an calculation by myself, and store that accumulated value in 
>> another column (for example, droughtyear)?
>>
>> I have added a column 'drought' to the archive table, also a table is 
>> created 'archive_day_drought'. All is populated using the weewx-services; 
>> this is working very well. Only question is: how to plot the accumulated 
>> drought as a graph.
>>
>> Archive table (see at the end, *drought*):
>> | dateTime   | usUnits | interval | altimeter  | 
>> appTemp | appTemp1 | barometer  | batteryStatus1 | 
>> batteryStatus2 | batteryStatus3 | batteryStatus4 | batteryStatus5 | 
>> batteryStatus6 | batteryStatus7 | batteryStatus8 | cloudbase  | 
>> co   | co2  | consBatteryVoltage | dewpoint| dewpoint1 | ET   | 
>> extraHumid1 | extraHumid2 | extraHumid3 | extraHumid4 | extraHumid5 | 
>> extraHumid6 | extraHumid7 | extraHumid8 | extraTemp1 | extraTemp2 | 
>> extraTemp3 | extraTemp4 | extraTemp5 | extraTemp6 | extraTemp7 | extraTemp8 
>> | forecast | hail | hailBatteryStatus | hailRate | heatindex   | 
>> heatindex1 | heatingTemp | heatingVoltage | humidex | 
>> humidex1 | inDewpoint  | inHumidity | inTemp| 
>> inTempBatteryStatus | leafTemp1 | leafTemp2 | leafWet1 | leafWet2 | 
>> lightning_distance | lightning_disturber_count | lightning_energy | 
>> lightning_noise_count | lightning_strike_count | luminosity | maxSolarRad | 
>> nh3  | no2  | noise | o3   | outHumidity   | outTemp | 
>> outTempBatteryStatus | pb   | pm10_0 | pm1_0 | pm2_5 | pressure   | 
>> radiation | rain | rainBatteryStatus | rainRate | 
>> referenceVoltage   | rxCheckPercent| signal1 | signal2 | signal3 | 
>> signal4 | signal5 | signal6 | signal7 | signal8 | snow | snowBatteryStatus 
>> | snowDepth | snowMoisture | snowRate | so2  | soilMoist1 | soilMoist2 | 
>> soilMoist3 | soilMoist4 | soilTemp1 | soilTemp2 | soilTemp3 | soilTemp4 | 
>> supplyVoltage  | txBatteryStatus | UV | uvBatteryStatus 
>> | windBatteryStatus | windchill   | windDir| 
>> windGust  | windGustDir   | windrun
>> | windSpeed | *drought* |
>>
>> Live data:
>> +-+-++--+
>> | from_unixtime(dateTime) | drought | ET | rain |
>> +-+-++--+
>>
>> | 2020-05-30 12:05:00 |   0 |  0 |0 |
>> | 2020-05-30 12:04:00 |   0 |  0 |0 |
>> | 2020-05-30 12:03:00 |   0 |  0 |0 |
>> | 2020-05-30 12:02:00 |   0 |  0 |0 |
>> | 2020-05-30 12:01:00 |   0 |  0 |0 |
>> | 2020-05-30 12:00:00 |  0.4826 | 0.4826 |0 |
>> | 2020-05-30 11:59:00 |   0 |  0 |0 |
>> | 2020-05-30 11:58:00 |   0 |  0 |0 |
>> | 2020-05-30 11:57:00 |   0 |  0 |0 |
>> +-+-++--+
>>
>>
>> Archive table archive_day_drought, live dat

[weewx-user] Plotting an extended variable with Belchertown graphs just like rainTotal

2020-05-30 Thread Maarten van der Hoeven
Hi,

I wrote an extension to weewx, that calculates the amount of drought 
(evapotranspiration minus rain). Basilcally, drought is a 'bucket'-type. 
Every time a rain-tick of an evaotranspiration (ET)-calculation (on top 
every hour), drought is calculated as ET minus rain. I am talking about a 
Davis Vantage Pro. It's an extension on schema_extended

I saw that the Belchertown skin calculates rainTotal, to use that variable 
to draw an accumulated (growing when rain occurs during the year) rain 
graph.

I also want to plot the drought-variable as an accumulated value, just like 
rainTotal. Is this possible in the graph.conf file, to achieve this? Or do 
I need an calculation by myself, and store that accumulated value in 
another column (for example, droughtyear)?

I have added a column 'drought' to the archive table, also a table is 
created 'archive_day_drought'. All is populated using the weewx-services; 
this is working very well. Only question is: how to plot the accumulated 
drought as a graph.

Archive table (see at the end, *drought*):
| dateTime   | usUnits | interval | altimeter  | 
appTemp | appTemp1 | barometer  | batteryStatus1 | 
batteryStatus2 | batteryStatus3 | batteryStatus4 | batteryStatus5 | 
batteryStatus6 | batteryStatus7 | batteryStatus8 | cloudbase  | 
co   | co2  | consBatteryVoltage | dewpoint| dewpoint1 | ET   | 
extraHumid1 | extraHumid2 | extraHumid3 | extraHumid4 | extraHumid5 | 
extraHumid6 | extraHumid7 | extraHumid8 | extraTemp1 | extraTemp2 | 
extraTemp3 | extraTemp4 | extraTemp5 | extraTemp6 | extraTemp7 | extraTemp8 
| forecast | hail | hailBatteryStatus | hailRate | heatindex   | 
heatindex1 | heatingTemp | heatingVoltage | humidex | 
humidex1 | inDewpoint  | inHumidity | inTemp| 
inTempBatteryStatus | leafTemp1 | leafTemp2 | leafWet1 | leafWet2 | 
lightning_distance | lightning_disturber_count | lightning_energy | 
lightning_noise_count | lightning_strike_count | luminosity | maxSolarRad | 
nh3  | no2  | noise | o3   | outHumidity   | outTemp | 
outTempBatteryStatus | pb   | pm10_0 | pm1_0 | pm2_5 | pressure   | 
radiation | rain | rainBatteryStatus | rainRate | 
referenceVoltage   | rxCheckPercent| signal1 | signal2 | signal3 | 
signal4 | signal5 | signal6 | signal7 | signal8 | snow | snowBatteryStatus 
| snowDepth | snowMoisture | snowRate | so2  | soilMoist1 | soilMoist2 | 
soilMoist3 | soilMoist4 | soilTemp1 | soilTemp2 | soilTemp3 | soilTemp4 | 
supplyVoltage  | txBatteryStatus | UV | uvBatteryStatus 
| windBatteryStatus | windchill   | windDir| 
windGust  | windGustDir   | windrun
| windSpeed | *drought* |

Live data:
+-+-++--+
| from_unixtime(dateTime) | drought | ET | rain |
+-+-++--+

| 2020-05-30 12:05:00 |   0 |  0 |0 |
| 2020-05-30 12:04:00 |   0 |  0 |0 |
| 2020-05-30 12:03:00 |   0 |  0 |0 |
| 2020-05-30 12:02:00 |   0 |  0 |0 |
| 2020-05-30 12:01:00 |   0 |  0 |0 |
| 2020-05-30 12:00:00 |  0.4826 | 0.4826 |0 |
| 2020-05-30 11:59:00 |   0 |  0 |0 |
| 2020-05-30 11:58:00 |   0 |  0 |0 |
| 2020-05-30 11:57:00 |   0 |  0 |0 |
+-+-++--+


Archive table archive_day_drought, live data:

mysql> select 
from_unixtime(datetime),min,mintime,max,maxtime,sum,count,wsum,sumtime from 
archive_day_drought order by datetime desc limit 10;
+-+++-+++---+-+-+
| from_unixtime(datetime) | min| mintime| max | 
maxtime| sum| count | wsum| sumtime |
+-+++-+++---+-+-+
| 2020-05-30 00:00:00 |  0 | 1590789660 |  0.4826 | 
1590832800 | 1.6256 |   756 |  97.536 |   45360 |
| 2020-05-29 00:00:00 |  0 | 1590703260 |  0.5334 | 
1590757200 |  5.206 |  1440 |  312.42 |   86400 |
| 2020-05-28 00:00:00 |  0 | 1590616860 |  0.5588 | 
1590670800 |  5.0292001 |  1435 | 301.752 |   86100 |
| 2020-05-27 00:00:00 |  0 | 1590530460 |  0.4826 | 
1590577200 | 4.4196 |  1437 |  265.176004 |   86220 |
| 2020-05-26 00:00:00 |  0 | 1590444060 |   0.508 | 
1590498000 |  4.572 |  1440 |  274.319994 |   86400 |
| 2020-05-25 00:00:00 | -0.254 | 1590388620 |  0.3302 | 
1590415200 | 

Re: [weewx-user] Re: event.record['ET'] throws me a KeyError. Why?

2020-05-27 Thread Maarten van der Hoeven
Thanks Tom! I've put suggestion 1 and 2 in place.

About 3, yeah, you are right. Picking up and using some working code doesnt 
mean it should remain called AddElectricity. CalcDrought should be more in 
place.

Again, thank you both!

Op woensdag 27 mei 2020 22:27:33 UTC+2 schreef Tom Keffer:
>
> 1. The ordering of your services is still not quite right. The group 
> "data_services" is run before "process_services." You want
>
> data_services = ,
> process_services = weewx.engine.StdConvert, weewx.engine.StdCalibrate, 
> weewx.engine.StdQC, 
> weewx.wxservices.StdWXCalculate, user.electricity.AddElectricity
>
> 2. In the interest of realism, the simulator occasionally emits a None 
> value for a datum. This is what is causing your ET to be None. You need to 
> get in the habit of checking for None. Something like:
>
> ET = event.record.get('ET')
> if ET is not None:
>   event.record['neerslagtekort'] = ...
>
> 3. Incidentally, you really should change the names to something more 
> meaningful than "electricity.py" and "AddElectricity".
>
> -tk
>
> On Wed, May 27, 2020 at 1:20 PM Maarten van der Hoeven  > wrote:
>
>> Hmmm, maybe adding ET to Simulator is not such a bad idea... Just adding 
>> the ET-observation to this code:
>>
>> self.observations = {
>> 'outTemp': Observation(magnitude=20.0,  average= 50.0, 
>> period=24.0, phase_lag=14.0, start=start_ts),
>> 'inTemp' : Observation(magnitude=5.0,   average= 68.0, 
>> period=24.0, phase_lag=12.0, start=start_ts),
>> 'barometer'  : Observation(magnitude=1.0,   average= 30.1, 
>> period=48.0, phase_lag= 0.0, start=start_ts),
>> 'pressure'   : Observation(magnitude=1.0,   average= 30.1, 
>> period=48.0, phase_lag= 0.0, start=start_ts),
>> 'windSpeed'  : Observation(magnitude=5.0,   average=  5.0, 
>> period=48.0, phase_lag=24.0, start=start_ts),
>> 'windDir': Observation(magnitude=180.0, average=180.0, 
>> period=48.0, phase_lag= 0.0, start=start_ts),
>> 'windGust'   : Observation(magnitude=6.0,   average=  6.0, 
>> period=48.0, phase_lag=24.0, start=start_ts),
>> 'windGustDir': Observation(magnitude=180.0, average=180.0, 
>> period=48.0, phase_lag= 0.0, start=start_ts),
>> 'outHumidity': Observation(magnitude=30.0,  average= 50.0, 
>> period=48.0, phase_lag= 0.0, start=start_ts),
>> 'inHumidity' : Observation(magnitude=10.0,  average= 20.0, 
>> period=24.0, phase_lag= 0.0, start=start_ts),
>> 'radiation'  : Solar(magnitude=1000, solar_start=6, 
>> solar_length=12),
>> 'UV' : Solar(magnitude=14,   solar_start=6, 
>> solar_length=12),
>> 'rain'   : Rain(rain_start=0, rain_length=3, 
>> total_rain=0.2, loop_interval=self.loop_interval),
>> 'txBatteryStatus': BatteryStatus(),
>> 'windBatteryStatus': BatteryStatus(),
>> 'rainBatteryStatus': BatteryStatus(),
>> 'outTempBatteryStatus': BatteryStatus(),
>> 'inTempBatteryStatus': BatteryStatus(),
>> 'consBatteryVoltage': BatteryVoltage(),
>>
>>
>> Op dinsdag 26 mei 2020 23:38:26 UTC+2 schreef Maarten van der Hoeven:
>>>
>>> Hi group,
>>>
>>> Having programming experience, but new to python. Want to write some 
>>> piece of code, that calculates the amount of precipitation shortage (rain 
>>> minus evaotranspiration). It's a measure of drought.
>>>
>>> Using some example coding, and extended those.
>>>
>>>
>>> See the piece of code below. event.record['barometer'] and 
>>> event.record['outTemp'] is working (used as an example, no drought-relation 
>>> ship); they give real values.
>>>
>>> However, event.record['ET'] gives me a KeyError. I dont understand it. 
>>> It is in my wview_extended schema (which I extended), its also populated in 
>>> my database.
>>>
>>> Why the KeyError?
>>>
>>>
>>> import schemas.wview_extended
>>> schema = {
>>> 'table': schemas.wview_extended.table + [('neerslagtekort', 'REAL')],
>>> 'day_summaries' : schemas.wview_extended.day_summaries + 
>>> [('neerslagtekort', 'SCALAR')]
>>> }
>>>
>>> import weewx.units
>>> weewx.units.obs_group_dict['neerslagtekort'] = 'group_rain'
>>>
>>>
>>> neerslag = 0
>>> verdamping = 0
>>> neerslagtekort = 0
>>>
>>> class AddE

[weewx-user] Re: event.record['ET'] throws me a KeyError. Why?

2020-05-27 Thread Maarten van der Hoeven
Yes, the simulator doesnt provide ET, whereas the Vantage driver does 
provide ET.

But, bingo, your suggestion did the trick. Now I've placed my service just 
after StdWxCalculate, and now there is an ET popping up

Thanks!

Op woensdag 27 mei 2020 22:26:49 UTC+2 schreef gjr80:
>
> As you say the use of simulator/VP2 explains it, the simulator driver does 
> not emit ET so it must rely on StdWXCalculate when using the vantage driver 
> it does (in your case) emit ET so it is there for your service.
>
> Regards the order I apologise, I mislead you, you do indeed need to change 
> the order but not by changing the order of the service lines (it will have 
> no effect by itself) but rather moving your service to another service line 
> such that it is processed after StdWXCalculate but before the record is 
> saved to archive by StdArchive, something like this should work (untested):
>
> [Engine]
>
> [[Services]]
> # This section specifies the services that should be run. They are
> # grouped by type, and the order of services within each group
> # determines the order in which the services will be run.
> prep_services = weewx.engine.StdTimeSynch
> data_services = ,
> process_services = weewx.engine.StdConvert, 
> weewx.engine.StdCalibrate, weewx.engine.StdQC, 
> weewx.wxservices.StdWXCalculate, user.electricity.AddElectricity
> archive_services = weewx.engine.StdArchive
> restful_services = weewx.restx.StdStationRegistry, 
> weewx.restx.StdWunderground, weewx.restx.StdPWSweather, 
> weewx.restx.StdCWOP, weewx.restx.StdWOW, weewx.restx.StdAWEKAS
> report_services = weewx.engine.StdPrint, weewx.engine.StdReport
>
> Equally you could add it to the archive_services line before StdArchive, 
> but that is a little misleading in terms of what your service does.
>
>

-- 
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 weewx-user+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/weewx-user/6a2de8d1-4a12-4ad1-8c79-95bf36ff86c3%40googlegroups.com.


[weewx-user] Re: event.record['ET'] throws me a KeyError. Why?

2020-05-27 Thread Maarten van der Hoeven
Hmmm, maybe adding ET to Simulator is not such a bad idea... Just adding 
the ET-observation to this code:

self.observations = {
'outTemp': Observation(magnitude=20.0,  average= 50.0, 
period=24.0, phase_lag=14.0, start=start_ts),
'inTemp' : Observation(magnitude=5.0,   average= 68.0, 
period=24.0, phase_lag=12.0, start=start_ts),
'barometer'  : Observation(magnitude=1.0,   average= 30.1, 
period=48.0, phase_lag= 0.0, start=start_ts),
'pressure'   : Observation(magnitude=1.0,   average= 30.1, 
period=48.0, phase_lag= 0.0, start=start_ts),
'windSpeed'  : Observation(magnitude=5.0,   average=  5.0, 
period=48.0, phase_lag=24.0, start=start_ts),
'windDir': Observation(magnitude=180.0, average=180.0, 
period=48.0, phase_lag= 0.0, start=start_ts),
'windGust'   : Observation(magnitude=6.0,   average=  6.0, 
period=48.0, phase_lag=24.0, start=start_ts),
'windGustDir': Observation(magnitude=180.0, average=180.0, 
period=48.0, phase_lag= 0.0, start=start_ts),
'outHumidity': Observation(magnitude=30.0,  average= 50.0, 
period=48.0, phase_lag= 0.0, start=start_ts),
'inHumidity' : Observation(magnitude=10.0,  average= 20.0, 
period=24.0, phase_lag= 0.0, start=start_ts),
'radiation'  : Solar(magnitude=1000, solar_start=6, 
solar_length=12),
'UV' : Solar(magnitude=14,   solar_start=6, 
solar_length=12),
'rain'   : Rain(rain_start=0, rain_length=3, 
total_rain=0.2, loop_interval=self.loop_interval),
'txBatteryStatus': BatteryStatus(),
'windBatteryStatus': BatteryStatus(),
'rainBatteryStatus': BatteryStatus(),
'outTempBatteryStatus': BatteryStatus(),
'inTempBatteryStatus': BatteryStatus(),
'consBatteryVoltage': BatteryVoltage(),


Op dinsdag 26 mei 2020 23:38:26 UTC+2 schreef Maarten van der Hoeven:
>
> Hi group,
>
> Having programming experience, but new to python. Want to write some piece 
> of code, that calculates the amount of precipitation shortage (rain minus 
> evaotranspiration). It's a measure of drought.
>
> Using some example coding, and extended those.
>
>
> See the piece of code below. event.record['barometer'] and 
> event.record['outTemp'] is working (used as an example, no drought-relation 
> ship); they give real values.
>
> However, event.record['ET'] gives me a KeyError. I dont understand it. It 
> is in my wview_extended schema (which I extended), its also populated in my 
> database.
>
> Why the KeyError?
>
>
> import schemas.wview_extended
> schema = {
> 'table': schemas.wview_extended.table + [('neerslagtekort', 'REAL')],
> 'day_summaries' : schemas.wview_extended.day_summaries + 
> [('neerslagtekort', 'SCALAR')]
> }
>
> import weewx.units
> weewx.units.obs_group_dict['neerslagtekort'] = 'group_rain'
>
>
> neerslag = 0
> verdamping = 0
> neerslagtekort = 0
>
> class AddElectricity(StdService):
>
> def __init__(self, engine, config_dict):
>
>   # Initialize my superclass first:
>   super(AddElectricity, self).__init__(engine, config_dict)
>
>   # Bind to any new archive record events:
>   self.bind(weewx.NEW_ARCHIVE_RECORD, self.new_archive_record)
>
>   self.last_total = None
>
> def new_archive_record(self, event):
>
>
>barometer = event.record['barometer']
>outTemp = event.record['outTemp']
>ET = event.record['ET']
>shortage = precipitation - evaporation
>
>if self.last_total:
>   event.record['neerslagtekort'] = shortage
>
>self.last_total = shortage
>print(" NEERSLAGTEKORT  ")
>print(shortage)
>
>
>
> Traceback (most recent call last):
>   File "/usr/share/weewx/weewxd", line 261, in 
> main()
>   File "/usr/share/weewx/weewxd", line 154, in main
> engine.run()
>   File "/usr/share/weewx/weewx/engine.py", line 202, in run
> self.dispatchEvent(weewx.Event(weewx.POST_LOOP))
>   File "/usr/share/weewx/weewx/engine.py", line 224, in dispatchEvent
> callback(event)
>   File "/usr/share/weewx/weewx/engine.py", line 596, in post_loop
> self._software_catchup()
>   File "/usr/share/weewx/weewx/engine.py", line 656, in _software_catchup
> self.engine.dispatchEvent(weewx.Event(weewx.NEW_ARCHIVE_RECORD,
>   File "/usr/share/weewx/weewx/engine.py", line 224, in dispatchEvent
> callback(event)
>   File "/usr/share/weewx/user/electricity.py", line 64, in 
> new_archive_record
> ET = event.record['ET']
> KeyError: 'ET'
>
>
> mysql> select from_unixtime(datetim

[weewx-user] Re: event.record['ET'] throws me a KeyError. Why?

2020-05-27 Thread Maarten van der Hoeven
Hi,

thanks for the pointer. While coding and testing, I use the Simulator to 
generate loops and archive records. When I connect my real Vantage Pro to 
WeeWX, the error disappears. The station is now providing all the value, 
including ET. Simulator is not providing ET, thats for sure now.

When hooking up the Simulator again, I followed your suggestion, and moved 
my service completely to the bottom (to be sure), see below. Still no 
success, ET is still a KeyError when using the Simulator.

Is there a way to enhance the Simulator with the ET-field (so to speak), 
that you know of?


[Engine]

[[Services]]
# This section specifies the services that should be run. They are
# grouped by type, and the order of services within each group
# determines the order in which the services will be run.
prep_services = weewx.engine.StdTimeSynch
process_services = weewx.engine.StdConvert, 
weewx.engine.StdCalibrate, weewx.engine.StdQC, 
weewx.wxservices.StdWXCalculate
archive_services = weewx.engine.StdArchive
restful_services = weewx.restx.StdStationRegistry, 
weewx.restx.StdWunderground, weewx.restx.StdPWSweather, 
weewx.restx.StdCWOP, weewx.restx.StdWOW, weewx.restx.StdAWEKAS, 
user.mqtt.MQTT
report_services = weewx.engine.StdPrint, weewx.engine.StdReport
data_services = user.electricity.AddElectricity


Op woensdag 27 mei 2020 14:33:08 UTC+2 schreef gjr80:
>
> Hi,
>
> Where does your service sit in the service order in relation to 
> StdWXCalculate in weewx.conf under [Engine] [[Services]]? One possible 
> reason is that if your station does not provide field ET (not many (any?) 
> provide a numeric value in every archive record) and the StdWXCalculate 
> service then calculate ET if it can. If your service that references ET is 
> executed before StdWXCalculate then field ET will not (yet) exist in the 
> archive record. In this case the solution is put your service after 
> StdWXCalculate.
>
> Gary
>
>

-- 
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 weewx-user+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/weewx-user/f3c0bc2b-68dd-48fb-afc3-abaf3447c860%40googlegroups.com.


[weewx-user] event.record['ET'] throws me a KeyError. Why?

2020-05-26 Thread Maarten van der Hoeven
Hi group,

Having programming experience, but new to python. Want to write some piece 
of code, that calculates the amount of precipitation shortage (rain minus 
evaotranspiration). It's a measure of drought.

Using some example coding, and extended those.


See the piece of code below. event.record['barometer'] and 
event.record['outTemp'] is working (used as an example, no drought-relation 
ship); they give real values.

However, event.record['ET'] gives me a KeyError. I dont understand it. It 
is in my wview_extended schema (which I extended), its also populated in my 
database.

Why the KeyError?


import schemas.wview_extended
schema = {
'table': schemas.wview_extended.table + [('neerslagtekort', 'REAL')],
'day_summaries' : schemas.wview_extended.day_summaries + 
[('neerslagtekort', 'SCALAR')]
}

import weewx.units
weewx.units.obs_group_dict['neerslagtekort'] = 'group_rain'


neerslag = 0
verdamping = 0
neerslagtekort = 0

class AddElectricity(StdService):

def __init__(self, engine, config_dict):

  # Initialize my superclass first:
  super(AddElectricity, self).__init__(engine, config_dict)

  # Bind to any new archive record events:
  self.bind(weewx.NEW_ARCHIVE_RECORD, self.new_archive_record)

  self.last_total = None

def new_archive_record(self, event):


   barometer = event.record['barometer']
   outTemp = event.record['outTemp']
   ET = event.record['ET']
   shortage = precipitation - evaporation

   if self.last_total:
  event.record['neerslagtekort'] = shortage

   self.last_total = shortage
   print(" NEERSLAGTEKORT  ")
   print(shortage)



Traceback (most recent call last):
  File "/usr/share/weewx/weewxd", line 261, in 
main()
  File "/usr/share/weewx/weewxd", line 154, in main
engine.run()
  File "/usr/share/weewx/weewx/engine.py", line 202, in run
self.dispatchEvent(weewx.Event(weewx.POST_LOOP))
  File "/usr/share/weewx/weewx/engine.py", line 224, in dispatchEvent
callback(event)
  File "/usr/share/weewx/weewx/engine.py", line 596, in post_loop
self._software_catchup()
  File "/usr/share/weewx/weewx/engine.py", line 656, in _software_catchup
self.engine.dispatchEvent(weewx.Event(weewx.NEW_ARCHIVE_RECORD,
  File "/usr/share/weewx/weewx/engine.py", line 224, in dispatchEvent
callback(event)
  File "/usr/share/weewx/user/electricity.py", line 64, in 
new_archive_record
ET = event.record['ET']
KeyError: 'ET'


mysql> select from_unixtime(datetime), neerslagtekort,ET,rain from archive 
order by datetime desc limit 5;
+-+-+--+--+
| from_unixtime(datetime) | neerslagtekort  | ET  
 | rain |
+-+-+--+--+
| 2020-05-26 23:26:00 | -1.5559202862588535 |  0.0515329020092 
|0 |
| 2020-05-26 23:25:00 |NULL |  0.05156477243511403 
|0 |
| 2020-05-26 23:24:00 |  20 |  0.05159745765396156 
|0 |
| 2020-05-26 23:23:00 |  20 | 0.051629007161015734 
|0 |
| 2020-05-26 23:22:00 |NULL |  0.05165840624070325 
|0 |
+-+-+--+--+
5 rows in set (0.00 sec)


-- 
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 weewx-user+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/weewx-user/901f6de4-762e-4dae-8604-427b4168b25c%40googlegroups.com.


Re: [weewx-user] How to calculate, process and store a derived variable

2020-05-23 Thread Maarten van der Hoeven
Thanks Tom for the pointer. Already busy implementing

Op zaterdag 23 mei 2020 02:52:39 UTC+2 schreef Tom Keffer:
>
> Sounds like a perfect job for the xtypes system. See this wiki article: 
> *WeeWX 
> V4 user defined types (xtypes)* 
> <https://github.com/weewx/weewx/wiki/WeeWX-V4-user-defined-types>. See if 
> it answers your question.
>
> If you define a derived variable using xtypes, it becomes a first-class 
> type and can be used in plots, or tagged expressions. If it appears in your 
> database schema, it will also be put in the database.
>
> -tk
>
> On Fri, May 22, 2020 at 7:14 AM Maarten van der Hoeven  > wrote:
>
>> Hi group,
>>
>> Running weewx 4, Python 3, Mysql-database, Vantage Pro 2 with solar, UV.
>>
>> Within Weewx, I want to calculate a derived value from two existing 
>> values that's provided by my weather station. To be more specific, in the 
>> Netherlands, the shortage of precipitation is calculated by the amount of 
>> rainfall minus the amount of evapotransipration (sum of max ET-values every 
>> day). During the period of april till september, it;'s a drought indicator.
>>
>> My SQL-query to do show is, where 'tekort'  (Dutch) stands for 
>> 'shortage'. 
>>
>> select abs(round(sum(archive_day_rain.sum)-sum(archive_day_ET.sum),0)) as 
>> tekort from archive_day_ET,archive_day_rain where 
>> from_unixtime(archive_day_rain.datetime,'%Y')=year(curdate()) and 
>> month(from_unixtime(archive_day_rain.datetime)) >= 4 and 
>> month(from_unixtime(archive_day_rain.datetime)) <= 9 and 
>> archive_day_rain.datetime=archive_day_ET.datetime;
>>
>> What I am doing right now, is running a crontab job, and start my 
>> PHP-script every minute to calculate the outcome of the SQL-script above 
>> and writes the outcome to a plan txt-file. Next step is to grab this value 
>> from the txt-file and show it (javascript) on my website. See 
>> http://www.weerinwelsum.nl, below the webcam. It says ' Doorlopend 
>> neerslagtekort', [amount of millimeters]. This is the value I am talking 
>> about.
>>
>> What I really want to achieve, is that I calculate this derived valu by 
>> WeeWX itself, and make this derived value available for everything that's 
>> wants to use is. For example, store this derived value in a database-field 
>> I am not using (for example, soilTemp4) and make this derived value 
>> available for whatever skin (in my case, Belchertown). In other words, 
>> Weewx calculates this new value and makes it available for the complete 
>> WeeWX-ecosystem (if you understand what I mean).
>>
>> Am I clear in what I want to achieve? And is this possible, and what are 
>> the pointers 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 weewx...@googlegroups.com .
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/weewx-user/d48cfc39-5e17-4795-a75f-ac4c266e73b0%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/weewx-user/d48cfc39-5e17-4795-a75f-ac4c266e73b0%40googlegroups.com?utm_medium=email_source=footer>
>> .
>>
>

-- 
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 weewx-user+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/weewx-user/550c4e0a-fad5-4169-bb3a-cc530f383a55%40googlegroups.com.


[weewx-user] How to calculate, process and store a derived variable

2020-05-22 Thread Maarten van der Hoeven
Hi group,

Running weewx 4, Python 3, Mysql-database, Vantage Pro 2 with solar, UV.

Within Weewx, I want to calculate a derived value from two existing values 
that's provided by my weather station. To be more specific, in the 
Netherlands, the shortage of precipitation is calculated by the amount of 
rainfall minus the amount of evapotransipration (sum of max ET-values every 
day). During the period of april till september, it;'s a drought indicator.

My SQL-query to do show is, where 'tekort'  (Dutch) stands for 'shortage'. 

select abs(round(sum(archive_day_rain.sum)-sum(archive_day_ET.sum),0)) as 
tekort from archive_day_ET,archive_day_rain where 
from_unixtime(archive_day_rain.datetime,'%Y')=year(curdate()) and 
month(from_unixtime(archive_day_rain.datetime)) >= 4 and 
month(from_unixtime(archive_day_rain.datetime)) <= 9 and 
archive_day_rain.datetime=archive_day_ET.datetime;

What I am doing right now, is running a crontab job, and start my 
PHP-script every minute to calculate the outcome of the SQL-script above 
and writes the outcome to a plan txt-file. Next step is to grab this value 
from the txt-file and show it (javascript) on my website. See 
http://www.weerinwelsum.nl, below the webcam. It says ' Doorlopend 
neerslagtekort', [amount of millimeters]. This is the value I am talking 
about.

What I really want to achieve, is that I calculate this derived valu by 
WeeWX itself, and make this derived value available for everything that's 
wants to use is. For example, store this derived value in a database-field 
I am not using (for example, soilTemp4) and make this derived value 
available for whatever skin (in my case, Belchertown). In other words, 
Weewx calculates this new value and makes it available for the complete 
WeeWX-ecosystem (if you understand what I mean).

Am I clear in what I want to achieve? And is this possible, and what are 
the pointers 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 weewx-user+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/weewx-user/d48cfc39-5e17-4795-a75f-ac4c266e73b0%40googlegroups.com.


[weewx-user] Re: Question about Belchertown script (index_hook_after_station_info.inc)

2020-05-22 Thread Maarten van der Hoeven
Sorry, it is Keimpe

Op vrijdag 22 mei 2020 14:37:39 UTC+2 schreef Maarten van der Hoeven:
>
> Thanks for testing, guys. I have restarted Weewx 1 day and 14 minutes ago, 
> so that's not the point. All that time (since restart), it showed okay on 
> my website, and never on my mobile phone (Edge). Strangely, it shows at 
> Safari.
>
> Anyway, I am now sure and convinced that nothing is wrong with the skin or 
> the inc-file. It must be something on my side, as it is working without 
> problems at Manfred and Keimpke. Thanks again, I'll dig into it.
>
> Op vrijdag 22 mei 2020 12:55:26 UTC+2 schreef Keimpe Bleeker:
>>
>> Aand now it's there: Doorlopend neerslagtekort (apr t/m sept) 
>> 149mm Laatste keer geregend op 03:45, 04-05-2020 Laagste 
>> grasminimum vandaag 8.3℃ om 03:55 uur
>> :)
>>
>> Op vrijdag 22 mei 2020 12:52:11 UTC+2 schreef Keimpe Bleeker:
>>>
>>> Hoi Maarten,
>>>
>>> Both on PC (Chrome) and mobiel (Huawei, ANdroid, Chrome) there is no 
>>> index_hook_after_station_info.inc text. In my case <http://oentsjerk.eu> 
>>> it works perfectly from the first minute. Have you restarted Weewx after 
>>> making the changes? 
>>>
>>> Regards, Keimpe
>>>
>>>
>>>
>>> Op vrijdag 22 mei 2020 10:58:12 UTC+2 schreef Maarten van der Hoeven:
>>>>
>>>> I know, it not really the place to ask something about Belchertown in 
>>>> this weewx-group. My apologies...
>>>>
>>>> Fairly easy question, I've added custom text at my website using 
>>>> index-Hook_after_station.inc. Working okay when watching the website on my 
>>>> computer. However, the custom text is not shown using a mobile phone. 
>>>>
>>>> Is this by design, that index_hook_after_station_info.inc is only 
>>>> working on a PC/desktop/laptop/whatever, and not working on a browser on a 
>>>> mobile phone?
>>>>
>>>> See http://www.weerinwelsum.nl, added text just below the station 
>>>> info. It's in Dutch, showing the lack of rain this year, datetime of last 
>>>> rain and lowest grass temperature today with timestamp.
>>>>
>>>>
>>>>

-- 
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 weewx-user+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/weewx-user/acadeff4-1139-48b3-baf8-f18acd015e27%40googlegroups.com.


[weewx-user] Re: Question about Belchertown script (index_hook_after_station_info.inc)

2020-05-22 Thread Maarten van der Hoeven
Thanks for testing, guys. I have restarted Weewx 1 day and 14 minutes ago, 
so that's not the point. All that time (since restart), it showed okay on 
my website, and never on my mobile phone (Edge). Strangely, it shows at 
Safari.

Anyway, I am now sure and convinced that nothing is wrong with the skin or 
the inc-file. It must be something on my side, as it is working without 
problems at Manfred and Keimpke. Thanks again, I'll dig into it.

Op vrijdag 22 mei 2020 12:55:26 UTC+2 schreef Keimpe Bleeker:
>
> Aand now it's there: Doorlopend neerslagtekort (apr t/m sept) 
> 149mm Laatste keer geregend op 03:45, 04-05-2020 Laagste 
> grasminimum vandaag 8.3℃ om 03:55 uur
> :)
>
> Op vrijdag 22 mei 2020 12:52:11 UTC+2 schreef Keimpe Bleeker:
>>
>> Hoi Maarten,
>>
>> Both on PC (Chrome) and mobiel (Huawei, ANdroid, Chrome) there is no 
>> index_hook_after_station_info.inc text. In my case <http://oentsjerk.eu> 
>> it works perfectly from the first minute. Have you restarted Weewx after 
>> making the changes? 
>>
>> Regards, Keimpe
>>
>>
>>
>> Op vrijdag 22 mei 2020 10:58:12 UTC+2 schreef Maarten van der Hoeven:
>>>
>>> I know, it not really the place to ask something about Belchertown in 
>>> this weewx-group. My apologies...
>>>
>>> Fairly easy question, I've added custom text at my website using 
>>> index-Hook_after_station.inc. Working okay when watching the website on my 
>>> computer. However, the custom text is not shown using a mobile phone. 
>>>
>>> Is this by design, that index_hook_after_station_info.inc is only 
>>> working on a PC/desktop/laptop/whatever, and not working on a browser on a 
>>> mobile phone?
>>>
>>> See http://www.weerinwelsum.nl, added text just below the station info. 
>>> It's in Dutch, showing the lack of rain this year, datetime of last rain 
>>> and lowest grass temperature today with timestamp.
>>>
>>>
>>>

-- 
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 weewx-user+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/weewx-user/d778038d-aec1-471a-8b55-2da77a5f0b4c%40googlegroups.com.


[weewx-user] Re: Question about Belchertown script (index_hook_after_station_info.inc)

2020-05-22 Thread Maarten van der Hoeven
Thanks Manfred. I also have an iPhone, but am using the webbrowser Edge. 
Doesnt show up there. Never occured to me to test with safari, there it 
shows. Thanks for letting me know, it's a browser thing and not something 
with the Belchertown skin.

Op vrijdag 22 mei 2020 11:56:37 UTC+2 schreef Manfred Maier:
>
> On my phone (iPhone) the text is visible. 
> It's located beneath your webcam picture.
>
> Manfred 
>
>
> Am Freitag, 22. Mai 2020 10:58:12 UTC+2 schrieb Maarten van der Hoeven:
>>
>> I know, it not really the place to ask something about Belchertown in 
>> this weewx-group. My apologies...
>>
>> Fairly easy question, I've added custom text at my website using 
>> index-Hook_after_station.inc. Working okay when watching the website on my 
>> computer. However, the custom text is not shown using a mobile phone. 
>>
>> Is this by design, that index_hook_after_station_info.inc is only working 
>> on a PC/desktop/laptop/whatever, and not working on a browser on a mobile 
>> phone?
>>
>> See http://www.weerinwelsum.nl, added text just below the station info. 
>> It's in Dutch, showing the lack of rain this year, datetime of last rain 
>> and lowest grass temperature today with timestamp.
>>
>>
>>

-- 
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 weewx-user+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/weewx-user/dc84d54a-7ac4-42f9-aa46-e5186400dc2b%40googlegroups.com.


[weewx-user] Question about Belchertown script (index_hook_after_station_info.inc)

2020-05-22 Thread Maarten van der Hoeven
I know, it not really the place to ask something about Belchertown in this 
weewx-group. My apologies...

Fairly easy question, I've added custom text at my website using 
index-Hook_after_station.inc. Working okay when watching the website on my 
computer. However, the custom text is not shown using a mobile phone. 

Is this by design, that index_hook_after_station_info.inc is only working 
on a PC/desktop/laptop/whatever, and not working on a browser on a mobile 
phone?

See http://www.weerinwelsum.nl, added text just below the station info. 
It's in Dutch, showing the lack of rain this year, datetime of last rain 
and lowest grass temperature today with timestamp.


-- 
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 weewx-user+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/weewx-user/95ea68a1-f1fb-4b25-b81a-fe928e2bb3c8%40googlegroups.com.


[weewx-user] Re: Monitoring WeeWX with Nagios

2020-05-22 Thread Maarten van der Hoeven
What I am doing now, is checking how 'old'  the latest records are in the 
MySQL-database. If the last 10 minutes no records are found, then there 
must be something wrong. perl-script:

#!/usr/bin/perl  -w

use strict;

use DBI;

#definition of variables

my $db="weewx";

my $host="x.x.x.x";

my $user="username";

my $password=”password";

my $interval = 10;

my $max_minutes_behind_now = 5;

my $time = localtime time;

my $pretime = localtime (time - $interval * 60);

 

my $state = "OK";

 

my %ERRORS=('OK'=>0,'WARNING'=>1,'CRITICAL'=>2,'UNKNOWN'=>3,'DEPENDENT'=>4);

 

#connect to MySQL database

my $dbh = DBI->connect 
("DBI:mysql:database=$db:host=$host",$user,$password, {PrintError => 0});

 

if (!$dbh) {

print "CRITICAL ERROR - Unable to connect to database $db with user 
$user - $DBI::errstr";

exit $ERRORS{"CRITICAL"};

}

 

my $stmt = "SELECT datetime

FROM archive

WHERE from_unixtime(dateTime) < localtime

   && from_unixtime(dateTime) > DATE_SUB(NOW(), INTERVAL 
$interval MINUTE) ORDER BY dateTime desc LIMIT 20";

 

#prepare the query

my $sth = $dbh->prepare($stmt);

 

#execute the query

if (!$sth->execute()) {

print "CRITICAL ERROR - Unable to execute query on $db";

exit $ERRORS{"CRITICAL"};

}

 

my $results = $sth->rows;

 

if ($sth->err()) {

print "CRITICAL ERROR - Error in retrieving results on $db";

exit $ERRORS{"CRITICAL"};

}

 

#Check for new entry count

if ($results >= $max_minutes_behind_now) {

print "OK - $results records within last $interval minutes";

$state = "OK";

} else {

print "CRITICAL - only $results records within last $interval 
minutes";

$state = "CRITICAL";

}

 

$sth->finish();

$dbh->disconnect();

 

Op donderdag 21 mei 2020 23:11:59 UTC+2 schreef vince:
>
> On Thursday, May 21, 2020 at 1:58:31 PM UTC-7, Xant wrote:
>
>> but get error of DBI not installed (perl DBI::Sqlite3 module), and I can 
>> not figured-out.
>>
>>
>>
> The perl code requires a CPAN module so it can talk to the sqlite3 db
>
> Look at the bottom of the comment block at the top of check_wview for 
> instructions
>

-- 
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 weewx-user+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/weewx-user/cca57599-e8f9-40b0-8f83-4778cbfb410a%40googlegroups.com.


[weewx-user] Re: Belchertown skin 1.1 released!

2020-05-09 Thread Maarten van der Hoeven
Hi,

I have a general question about the skin. I calculate myself (using a 
php-script that reads mysql-data and write the output to a txt-file) the 
amount of lack of rain. It's a sum of daily Evapotranspìration (ET) minus 
the amounted precipitation. 

So I have this value inside a single TXT-file. What is the best way to 
display this value on the main belchertown-page? I can hack around, and I 
am sure I will succeeed :), but I want to do it the belchertown-skin-way, 
not to break it with future updates.

Anyone?

Op woensdag 8 april 2020 20:26:33 UTC+2 schreef Pat:
>
> As mentioned in this thread 
> , I've 
> released Belchertown skin 1.1. This will be the last skin that uses the 
> DarkSky API for weather conditions and forecasts. I'm going to begin 
> working on 1.2 soon to migrate to OpenWeatherMap. 
>
> Read the entire release details here 
> 
>  which 
> outline the breaking changes, new changes, items removed, etc. 
>
> Always have a backup before you upgrade!
>
> Download:
>
> wget 
> https://github.com/poblabs/weewx-belchertown/releases/download/weewx-belchertown-1.1/weewx-belchertown-release-1.1.tar.gz
>
> Then run:
>
> sudo wee_extension --install weewx-belchertown-release-1.1.tar.gz
>
>
> Restart weewx when finished configuring. 
>
>
> Thanks!
>

-- 
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 weewx-user+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/weewx-user/ecacebed-41d9-4306-a57f-cb83fa776702%40googlegroups.com.


[weewx-user] Re: Installing Weewx 4, Belchertown 1.1 and MQTT from scratch. Almost fully succesful (fails on python-cjson)

2020-05-06 Thread Maarten van der Hoeven
Update by myself. In stead of trying to install python-cjson, I succeeded 
with installing

sudo pip3 install ujson

All set now, data published live on my webpage.



Op woensdag 6 mei 2020 22:27:37 UTC+2 schreef Maarten van der Hoeven:
>
> Hi,
>
> hard disc crashed, rebuilding the complete environment. Backup was sound, 
> no data lost.
>
> Running Ubuntu 20.04, installed Weewx4 with python 3, Belchertown 1.1 skin 
> succesfully implemented. Got mosquitto running okay.
>
> Now busy implementing weewx-mqtt. Instuctions:
>
> sudo pip3 install paho-mqtt, succesful
> sudo pip3 install python-cjson. Package is found, but when trying to build 
> it, it fails. What can I do? I dont want to mess with python2, and risk 
> breaking dependencies. Error log from failure python-cjson:
>
> maarten@weewx:~$ sudo pip3 install python-cjson
> Collecting python-cjson
>   Downloading python-cjson-1.2.2.tar.gz (12 kB)
> Building wheels for collected packages: python-cjson
>   Building wheel for python-cjson (setup.py) ... error
>   ERROR: Command errored out with exit status 1:
>command: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; 
> sys.argv[0] = '"'"'/tmp/pip-install-zu4cgg1n/python-cjson/setup.py'"'"'; 
> __file__='"'"'/tmp/pip-install-zu4cgg1n/python-cjson/setup.py'"'"';f=getattr(tokenize,
>  
> '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', 
> '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' 
> bdist_wheel -d /tmp/pip-wheel-3y0kj1p4
>cwd: /tmp/pip-install-zu4cgg1n/python-cjson/
>   Complete output (243 lines):
>   running bdist_wheel
>   running build
>   running build_ext
>   building 'cjson' extension
>   creating build
>   creating build/temp.linux-x86_64-3.8
>   x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG 
> -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat 
> -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat 
> -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC 
> -DMODULE_VERSION=1.2.2 -I/usr/include/python3.8 -c cjson.c -o 
> build/temp.linux-x86_64-3.8/cjson.o
>   cjson.c: In function ‘decode_string’:
>   cjson.c:167:18: warning: implicit declaration of function 
> ‘PyString_DecodeEscape’; did you mean ‘PyBytes_DecodeEscape’? 
> [-Wimplicit-function-declaration]
> 167 | object = PyString_DecodeEscape(jsondata->ptr+1, len, 
> NULL, 0, NULL);
> |  ^
> |  PyBytes_DecodeEscape
>   cjson.c:167:16: warning: assignment to ‘PyObject *’ {aka ‘struct _object 
> *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
> 167 | object = PyString_DecodeEscape(jsondata->ptr+1, len, 
> NULL, 0, NULL);
> |^
>   cjson.c:169:18: warning: implicit declaration of function 
> ‘PyString_FromStringAndSize’; did you mean ‘PyBytes_FromStringAndSize’? 
> [-Wimplicit-function-declaration]
> 169 | object = PyString_FromStringAndSize(jsondata->ptr+1, 
> len);
> |  ^~
> |  PyBytes_FromStringAndSize
>   cjson.c:169:16: warning: assignment to ‘PyObject *’ {aka ‘struct _object 
> *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
> 169 | object = PyString_FromStringAndSize(jsondata->ptr+1, 
> len);
> |^
>   cjson.c:185:39: warning: implicit declaration of function 
> ‘PyString_AsString’ [-Wimplicit-function-declaration]
> 185 |  reason ? PyString_AsString(reason) 
> : "bad format");
> |   ^
>   cjson.c:185:65: warning: pointer/integer type mismatch in conditional 
> expression
> 185 |  reason ? PyString_AsString(reason) 
> : "bad format");
> | ^
>   cjson.c: In function ‘decode_number’:
>   cjson.c:295:9: warning: assignment to ‘PyObject *’ {aka ‘struct _object 
> *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
> 295 | str = PyString_FromStringAndSize(jsondata->ptr, ptr - 
> jsondata->ptr);
> | ^
>   cjson.c:300:18: error: too many arguments to function 
> ‘PyFloat_FromString’
> 300 | object = PyFloat_FromString(str, NULL);
> |  ^~
>   In file included from /usr/include/python3.8/Python.h:101,
>

[weewx-user] Installing Weewx 4, Belchertown 1.1 and MQTT from scratch. Almost fully succesful (fails on python-cjson)

2020-05-06 Thread Maarten van der Hoeven
Hi,

hard disc crashed, rebuilding the complete environment. Backup was sound, 
no data lost.

Running Ubuntu 20.04, installed Weewx4 with python 3, Belchertown 1.1 skin 
succesfully implemented. Got mosquitto running okay.

Now busy implementing weewx-mqtt. Instuctions:

sudo pip3 install paho-mqtt, succesful
sudo pip3 install python-cjson. Package is found, but when trying to build 
it, it fails. What can I do? I dont want to mess with python2, and risk 
breaking dependencies. Error log from failure python-cjson:

maarten@weewx:~$ sudo pip3 install python-cjson
Collecting python-cjson
  Downloading python-cjson-1.2.2.tar.gz (12 kB)
Building wheels for collected packages: python-cjson
  Building wheel for python-cjson (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; 
sys.argv[0] = '"'"'/tmp/pip-install-zu4cgg1n/python-cjson/setup.py'"'"'; 
__file__='"'"'/tmp/pip-install-zu4cgg1n/python-cjson/setup.py'"'"';f=getattr(tokenize,
 
'"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', 
'"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' 
bdist_wheel -d /tmp/pip-wheel-3y0kj1p4
   cwd: /tmp/pip-install-zu4cgg1n/python-cjson/
  Complete output (243 lines):
  running bdist_wheel
  running build
  running build_ext
  building 'cjson' extension
  creating build
  creating build/temp.linux-x86_64-3.8
  x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG 
-g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat 
-Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat 
-Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC 
-DMODULE_VERSION=1.2.2 -I/usr/include/python3.8 -c cjson.c -o 
build/temp.linux-x86_64-3.8/cjson.o
  cjson.c: In function ‘decode_string’:
  cjson.c:167:18: warning: implicit declaration of function 
‘PyString_DecodeEscape’; did you mean ‘PyBytes_DecodeEscape’? 
[-Wimplicit-function-declaration]
167 | object = PyString_DecodeEscape(jsondata->ptr+1, len, 
NULL, 0, NULL);
|  ^
|  PyBytes_DecodeEscape
  cjson.c:167:16: warning: assignment to ‘PyObject *’ {aka ‘struct _object 
*’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
167 | object = PyString_DecodeEscape(jsondata->ptr+1, len, 
NULL, 0, NULL);
|^
  cjson.c:169:18: warning: implicit declaration of function 
‘PyString_FromStringAndSize’; did you mean ‘PyBytes_FromStringAndSize’? 
[-Wimplicit-function-declaration]
169 | object = PyString_FromStringAndSize(jsondata->ptr+1, len);
|  ^~
|  PyBytes_FromStringAndSize
  cjson.c:169:16: warning: assignment to ‘PyObject *’ {aka ‘struct _object 
*’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
169 | object = PyString_FromStringAndSize(jsondata->ptr+1, len);
|^
  cjson.c:185:39: warning: implicit declaration of function 
‘PyString_AsString’ [-Wimplicit-function-declaration]
185 |  reason ? PyString_AsString(reason) : 
"bad format");
|   ^
  cjson.c:185:65: warning: pointer/integer type mismatch in conditional 
expression
185 |  reason ? PyString_AsString(reason) : 
"bad format");
| ^
  cjson.c: In function ‘decode_number’:
  cjson.c:295:9: warning: assignment to ‘PyObject *’ {aka ‘struct _object 
*’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
295 | str = PyString_FromStringAndSize(jsondata->ptr, ptr - 
jsondata->ptr);
| ^
  cjson.c:300:18: error: too many arguments to function ‘PyFloat_FromString’
300 | object = PyFloat_FromString(str, NULL);
|  ^~
  In file included from /usr/include/python3.8/Python.h:101,
   from cjson.c:5:
  /usr/include/python3.8/floatobject.h:42:24: note: declared here
 42 | PyAPI_FUNC(PyObject *) PyFloat_FromString(PyObject*);
|^~
  cjson.c:302:18: warning: implicit declaration of function 
‘PyInt_FromString’; did you mean ‘PyLong_FromString’? 
[-Wimplicit-function-declaration]
302 | object = PyInt_FromString(PyString_AS_STRING(str), NULL, 
10);
|  ^~~~
|  PyLong_FromString
  cjson.c:302:35: warning: implicit declaration of function 
‘PyString_AS_STRING’; did you mean ‘PyBytes_AS_STRING’? 
[-Wimplicit-function-declaration]
302 | object = PyInt_FromString(PyString_AS_STRING(str), NULL, 
10);
|   ^~
| 

[weewx-user] Monitoring WeeWX with Nagios

2019-06-19 Thread Maarten van der Hoeven
I want to monitor the WeeWX-process, whether that process is alive or not. 
To monitor things (such as http-servers, mysql-database, down-/uplink 
internet-connection, etc), I am using Nagios.

I am wondering if someone already has written a Nagios-plugin to monitor 
the WeeWX-process, and is willing to share that plugin.

-- 
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 weewx-user+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/weewx-user/3151022f-392e-4825-95ac-1ff4c7af8908%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [weewx-user] Re: Belchertown skin 1.0 released!

2019-06-14 Thread Maarten van der Hoeven
Back home, and now with full focus. All is working now! I have put 
everything in weewx.conf, nothing left in skin.conf

Very cool

Op vrijdag 14 juni 2019 11:03:11 UTC+2 schreef Colin Larsen:
>
> I did a test on my system and that label definitely works :)
>
> On Fri, Jun 14, 2019 at 8:19 PM Colin Larsen  > wrote:
>
>> I think it would need a Weewx restart, again hopefully Pat can confirm I 
>> have the right spot. 
>>
>> On Fri, 14 Jun 2019, 20:17 Maarten van der Hoeven, > > wrote:
>>
>>> Thanks again Colin! I did a quick change, but didnt see the label being 
>>> changed at the website. Must have been doing something wrong, as being in a 
>>> hurry, work is calling. Will check this evening, and will also read the 
>>> wiki... As I understand correctly, there's pretty much howto's written down 
>>> how about howto's :)  Will follow up later today.
>>>
>>> Op vrijdag 14 juni 2019 09:36:28 UTC+2 schreef Colin Larsen:
>>>>
>>>> Probably just extraTemp1 = Grass Temperature or whatever you need
>>>>
>>>> On Fri, Jun 14, 2019 at 7:33 PM Colin Larsen  
>>>> wrote:
>>>>
>>>>> This is it I think, add your desired label in here
>>>>>
>>>>> [Labels]
>>>>> # Labels used in this skin
>>>>> [[Generic]]
>>>>> # Generic labels, keyed by an observation type.
>>>>> # To change a label or translate it to your language 
>>>>> # change the text after the equal sign.
>>>>> # Extra Observation labels
>>>>> appTemp = Apparent Temperature
>>>>> cloudbase = Cloud Base
>>>>> visibility = Visibility
>>>>> windrun = Wind Run
>>>>>  
>>>>>
>>>>> On Fri, Jun 14, 2019 at 7:30 PM Colin Larsen  
>>>>> wrote:
>>>>>
>>>>>> Excellent! And yes I'm 99% sure that Temperature1 can be changed in 
>>>>>> either skin.conf or Weewx.conf. Don't forget to get all of your config 
>>>>>> settings into weewx.conf so they don't get overwritten by an update to 
>>>>>> skin.conf. Again it's in the Wiki. Let me go and look for that setting 
>>>>>> to 
>>>>>> change :)
>>>>>>
>>>>>> On Fri, Jun 14, 2019 at 7:15 PM Maarten van der Hoeven <
>>>>>> hoev...@gmail.com> wrote:
>>>>>>
>>>>>>> How cool is that! This is all too easy 
>>>>>>>
>>>>>>>  
>>>>>>>
>>>>>>> Adding “extraTemp1” at the end of the mentioned line (in skin.conf) 
>>>>>>> did already the trick.
>>>>>>>
>>>>>>>  
>>>>>>>
>>>>>>> Barometer  1014.2 mbar 
>>>>>>>
>>>>>>> Dew Point   13.8 °C
>>>>>>>
>>>>>>> Humidity 88%
>>>>>>>
>>>>>>> Rain   0.0 mm  0.0 mm/hr
>>>>>>>
>>>>>>> Temperature116.1 °C
>>>>>>>
>>>>>>>  
>>>>>>>
>>>>>>> Amazing  Now to find out where to change the label Temperature1 
>>>>>>> into something else (Temp grass or something alike).
>>>>>>>
>>>>>>>  
>>>>>>> Thanks for your help Colin.Op vrijdag 14 juni 2019 09:00:04 UTC+2 
>>>>>>> schreef Colin Larsen:
>>>>>>>>
>>>>>>>> Sorry, that formatted horribly I think - it's actually just on 2 
>>>>>>>> lines of code
>>>>>>>>
>>>>>>>> On Fri, Jun 14, 2019 at 6:59 PM Colin Larsen  
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Maarten
>>>>>>>>>
>>>>>>>>> I think you may be able to add your extraTemp1 into this section 
>>>>>>>>> below in skin.conf/weewx.conf (depending on where you have the 
>>>>>>>>> [Extras] 
>>>>>>>>> stanza). Give it a try, I'm sure Pat will jump in and correct me if 
>>>>>>>>> I'm 
>>>>>>>>> wrong. Otherwise you may need to use one of the custom content areas 
>>>>>>

Re: [weewx-user] Re: Belchertown skin 1.0 released!

2019-06-14 Thread Maarten van der Hoeven
Thanks again Colin! I did a quick change, but didnt see the label being 
changed at the website. Must have been doing something wrong, as being in a 
hurry, work is calling. Will check this evening, and will also read the 
wiki... As I understand correctly, there's pretty much howto's written down 
how about howto's :)  Will follow up later today.

Op vrijdag 14 juni 2019 09:36:28 UTC+2 schreef Colin Larsen:
>
> Probably just extraTemp1 = Grass Temperature or whatever you need
>
> On Fri, Jun 14, 2019 at 7:33 PM Colin Larsen  > wrote:
>
>> This is it I think, add your desired label in here
>>
>> [Labels]
>> # Labels used in this skin
>> [[Generic]]
>> # Generic labels, keyed by an observation type.
>> # To change a label or translate it to your language 
>> # change the text after the equal sign.
>> # Extra Observation labels
>> appTemp = Apparent Temperature
>> cloudbase = Cloud Base
>> visibility = Visibility
>> windrun = Wind Run
>>  
>>
>> On Fri, Jun 14, 2019 at 7:30 PM Colin Larsen > > wrote:
>>
>>> Excellent! And yes I'm 99% sure that Temperature1 can be changed in 
>>> either skin.conf or Weewx.conf. Don't forget to get all of your config 
>>> settings into weewx.conf so they don't get overwritten by an update to 
>>> skin.conf. Again it's in the Wiki. Let me go and look for that setting to 
>>> change :)
>>>
>>> On Fri, Jun 14, 2019 at 7:15 PM Maarten van der Hoeven <
>>> hoev...@gmail.com > wrote:
>>>
>>>> How cool is that! This is all too easy 
>>>>
>>>>  
>>>>
>>>> Adding “extraTemp1” at the end of the mentioned line (in skin.conf) did 
>>>> already the trick.
>>>>
>>>>  
>>>>
>>>> Barometer  1014.2 mbar 
>>>>
>>>> Dew Point   13.8 °C
>>>>
>>>> Humidity 88%
>>>>
>>>> Rain   0.0 mm  0.0 mm/hr
>>>>
>>>> Temperature116.1 °C
>>>>
>>>>  
>>>>
>>>> Amazing  Now to find out where to change the label Temperature1 into 
>>>> something else (Temp grass or something alike).
>>>>
>>>>  
>>>> Thanks for your help Colin.Op vrijdag 14 juni 2019 09:00:04 UTC+2 
>>>> schreef Colin Larsen:
>>>>>
>>>>> Sorry, that formatted horribly I think - it's actually just on 2 lines 
>>>>> of code
>>>>>
>>>>> On Fri, Jun 14, 2019 at 6:59 PM Colin Larsen  
>>>>> wrote:
>>>>>
>>>>>> Maarten
>>>>>>
>>>>>> I think you may be able to add your extraTemp1 into this section 
>>>>>> below in skin.conf/weewx.conf (depending on where you have the [Extras] 
>>>>>> stanza). Give it a try, I'm sure Pat will jump in and correct me if I'm 
>>>>>> wrong. Otherwise you may need to use one of the custom content areas as 
>>>>>> described in the Wiki. Let us know how you get on :)
>>>>>>
>>>>>> # Station Observations. Special observation rainWithRainRate combines 
>>>>>> Daily Rain with Rain Rate in 1 line station_observations = "barometer", 
>>>>>> "dewpoint", "outHumidity", "rainWithRainRate 
>>>>>>
>>>>>>
>>>>>> On Fri, Jun 14, 2019 at 6:46 PM Maarten van der Hoeven <
>>>>>> hoev...@gmail.com> wrote:
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> Thanks for the skin 1.0. Running without a flaw, and looking nice :)
>>>>>>>
>>>>>>> One question... I am using a second temperature sensor (temperature 
>>>>>>> on the grass, 10cm above the surface), data is stored in the database 
>>>>>>> as 
>>>>>>> extraTemp1. What I understood from the wiki-chart, it should not be a 
>>>>>>> problem to plot this value (simply mention the database-field to plot). 
>>>>>>> However, I also want to show he value of this field on the webpage.
>>>>>>>
>>>>>>> What would be the correct and logical way to get this done? Although 
>>>>>>> I can hack around a bit and get it done, I  am wondering if there is a 
>>>>>>> more 
>>>>>>> sophisticated approach to hook 

Re: [weewx-user] Re: Belchertown skin 1.0 released!

2019-06-14 Thread Maarten van der Hoeven


How cool is that! This is all too easy 

 

Adding “extraTemp1” at the end of the mentioned line (in skin.conf) did 
already the trick.

 

Barometer  1014.2 mbar 

Dew Point   13.8 °C

Humidity 88%

Rain   0.0 mm  0.0 mm/hr

Temperature116.1 °C

 

Amazing  Now to find out where to change the label Temperature1 into 
something else (Temp grass or something alike).

 
Thanks for your help Colin.Op vrijdag 14 juni 2019 09:00:04 UTC+2 schreef 
Colin Larsen:
>
> Sorry, that formatted horribly I think - it's actually just on 2 lines of 
> code
>
> On Fri, Jun 14, 2019 at 6:59 PM Colin Larsen  > wrote:
>
>> Maarten
>>
>> I think you may be able to add your extraTemp1 into this section below in 
>> skin.conf/weewx.conf (depending on where you have the [Extras] stanza). 
>> Give it a try, I'm sure Pat will jump in and correct me if I'm wrong. 
>> Otherwise you may need to use one of the custom content areas as described 
>> in the Wiki. Let us know how you get on :)
>>
>> # Station Observations. Special observation rainWithRainRate combines 
>> Daily Rain with Rain Rate in 1 line station_observations = "barometer", 
>> "dewpoint", "outHumidity", "rainWithRainRate 
>>
>>
>> On Fri, Jun 14, 2019 at 6:46 PM Maarten van der Hoeven > > wrote:
>>
>>> Hi,
>>>
>>> Thanks for the skin 1.0. Running without a flaw, and looking nice :)
>>>
>>> One question... I am using a second temperature sensor (temperature on 
>>> the grass, 10cm above the surface), data is stored in the database as 
>>> extraTemp1. What I understood from the wiki-chart, it should not be a 
>>> problem to plot this value (simply mention the database-field to plot). 
>>> However, I also want to show he value of this field on the webpage.
>>>
>>> What would be the correct and logical way to get this done? Although I 
>>> can hack around a bit and get it done, I  am wondering if there is a more 
>>> sophisticated approach to hook up this sensor-data in the data-stream and 
>>> to show it on the webpage. Or is all data already available in the 
>>> data-stream (MQTT), and is the question only how to show this value at the 
>>> website...
>>>
>>> Thanks. 
>>>
>>> Op zaterdag 1 juni 2019 18:57:56 UTC+2 schreef Pat:
>>>>
>>>> Belchertown skin 1.0 is released!
>>>>
>>>> This update contains a lot of updates and changes including *an entire 
>>>> rewrite of the Highcharts system* which allows you to make almost any 
>>>> graph you want for almost any time span you want. You can see some 
>>>> examples 
>>>> of the charts you can make on the BelchertownWeather.com website 
>>>> graphs page <https://belchertownweather.com/graphs/?graph=all>.
>>>>
>>>> You can add/remove/change/reorder any chart, change colors, add 
>>>> observation plots, categorize for all time. Almost anything you want to do 
>>>> is available! The skin comes with the standard 4 charts ready to go, but 
>>>> there's extensive Belchertown Charts Documentation 
>>>> <https://github.com/poblabs/weewx-belchertown/wiki/Belchertown-Charts-Documentation>
>>>>  
>>>> which can help you get started. 
>>>>
>>>> In addition to the Charts there's now a dark mode (which has an 
>>>> auto-switching mode based on sunset/sunrise), more flexibility for 
>>>> translations, user customized station observation table which is updated 
>>>> in 
>>>> real time if the MQTT Websockets are enabled, and a lot more. Check the 
>>>> release notes for all the details! 
>>>>
>>>> You can download the latest release here 
>>>> <https://github.com/poblabs/weewx-belchertown/releases/download/weewx-belchertown-1.0/weewx-belchertown-release-1.0.tar.gz>,
>>>>  
>>>> and read all of the details on the changes here: 
>>>> https://github.com/poblabs/weewx-belchertown/releases
>>>>
>>>> *Note: You cannot upgrade from Belchertown 0.9 and older*. You must 
>>>> uninstall everything and reinstall new. This is due to the Chart system 
>>>> being fully rewritten and the potential for conflicts. Please read 
>>>> this upgrade guide if you are upgrading from an older version of 
>>>> Belchertown skin 
>>>> <https://github.com/poblabs/weewx-belchertown/wiki/Upgrading-to-Belchertown-skin-1.0>
&

[weewx-user] Re: Belchertown skin 1.0 released!

2019-06-14 Thread Maarten van der Hoeven
Hi,

Thanks for the skin 1.0. Running without a flaw, and looking nice :)

One question... I am using a second temperature sensor (temperature on the 
grass, 10cm above the surface), data is stored in the database as 
extraTemp1. What I understood from the wiki-chart, it should not be a 
problem to plot this value (simply mention the database-field to plot). 
However, I also want to show he value of this field on the webpage.

What would be the correct and logical way to get this done? Although I can 
hack around a bit and get it done, I  am wondering if there is a more 
sophisticated approach to hook up this sensor-data in the data-stream and 
to show it on the webpage. Or is all data already available in the 
data-stream (MQTT), and is the question only how to show this value at the 
website...

Thanks. 

Op zaterdag 1 juni 2019 18:57:56 UTC+2 schreef Pat:
>
> Belchertown skin 1.0 is released!
>
> This update contains a lot of updates and changes including *an entire 
> rewrite of the Highcharts system* which allows you to make almost any 
> graph you want for almost any time span you want. You can see some examples 
> of the charts you can make on the BelchertownWeather.com website graphs 
> page .
>
> You can add/remove/change/reorder any chart, change colors, add 
> observation plots, categorize for all time. Almost anything you want to do 
> is available! The skin comes with the standard 4 charts ready to go, but 
> there's extensive Belchertown Charts Documentation 
> 
>  
> which can help you get started. 
>
> In addition to the Charts there's now a dark mode (which has an 
> auto-switching mode based on sunset/sunrise), more flexibility for 
> translations, user customized station observation table which is updated in 
> real time if the MQTT Websockets are enabled, and a lot more. Check the 
> release notes for all the details! 
>
> You can download the latest release here 
> ,
>  
> and read all of the details on the changes here: 
> https://github.com/poblabs/weewx-belchertown/releases
>
> *Note: You cannot upgrade from Belchertown 0.9 and older*. You must 
> uninstall everything and reinstall new. This is due to the Chart system 
> being fully rewritten and the potential for conflicts. Please read this 
> upgrade guide if you are upgrading from an older version of Belchertown skin 
> 
> . 
>
> Thanks to all the beta testers and translators over the last couple of 
> months help me iron out all the kinks and shape the skin in a way that can 
> be translated a little easier! 
>
> Attached are some examples of the charts that can be made. If you find any 
> issues, you can reply here or open an issue on the Belchertown skin 
> GitHub page . 
>

-- 
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 weewx-user+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/weewx-user/e84dcbf2-2174-4032-83a7-93c738e6c4ec%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[weewx-user] Re: Twitter feed on top of the hour

2017-05-31 Thread Maarten van der Hoeven
 

Hi,

 

Thanks for the suggestion, most useful. I’ve followed it, and it is working 
nicely now on top of the hour (crontab). I use twidge to post the created 
datafile to twitter (#welsum).

 

Thanks!


Op dinsdag 30 mei 2017 13:50:10 UTC+2 schreef mwall:
>
>
>
> On Sunday, May 14, 2017 at 3:34:47 PM UTC-4, Maarten van der Hoeven wrote:
>>
>> Hi,
>>
>> I've configured a Twiiter-feed in Weewx, working perfectly. With 
>> post_interval=3600, I told weewx to send the twitter feed every hour. 
>> Working okay.
>>
>> But, this hourly feed is initiated when weewx is started. For example, if 
>> I start weewx at 08:17, immediately a twitter feed is send, the next one to 
>> follow at 09:17. However, I want the twitter feed to be send at the top of 
>> every hour. 08:00, 09:00, 10:00, regardless the time I start weewx.
>>
>> Is this possible? How?
>>
>
> hi maarten,
>
> the weewx uploaders are designed to send data as soon as there is 
> something new to send, i.e., when there is a change to the data.  they are 
> not designed operate based on the clock.
>
> so there is no explicit way to do what you want with the weewx-twitter 
> extension.
>
> one way to do what you want is to make a new skin with a template that 
> spits out to file the data you want to tweet.  then write a shell script 
> that tweets that file.  then make a crontab that invokes the script at the 
> top of each hour.
>
> m
>
>
>
>

-- 
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 weewx-user+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[weewx-user] Twitter feed on top of the hour

2017-05-14 Thread Maarten van der Hoeven
Hi,

I've configured a Twiiter-feed in Weewx, working perfectly. With 
post_interval=3600, I told weewx to send the twitter feed every hour. 
Working okay.

But, this hourly feed is initiated when weewx is started. For example, if I 
start weewx at 08:17, immediately a twitter feed is send, the next one to 
follow at 09:17. However, I want the twitter feed to be send at the top of 
every hour. 08:00, 09:00, 10:00, regardless the time I start weewx.

Is this possible? How?

-- 
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 weewx-user+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.