On Sunday, 28 April 2019 05:23:37 UTC+2, mwall wrote:
>
>
> it is really not that difficult.  if you are starting from scratch, just 
> extend the wview schema:
>
> 1 copy the wview schema definition to a new file
>
> cp bin/schemas/wview.py bin/user/wview_extended.py
>
> 2 add as many temperature and humidity fields as you need by modifying the 
> new schema file.  see this for an example of what 8 temperature/humidity 
> sensors and signals looks like:
>
> https://github.com/weewx/weewx/blob/schema/bin/schemas/wview_extended.py
>

Thanks for the details.

Added he following sensors:

[root@weather ~]# cd /usr/share/weewx/schemas/
[root@weather schemas]# diff wview.py wview_extra.py
22a23,34
>           ('extraBarometer1',            'REAL'),
>           ('extraBarometer2',            'REAL'),
>           ('extraBarometer3',            'REAL'),
>           ('extraBarometer4',            'REAL'),
>           ('extraBarometer5',            'REAL'),
>           ('extraBarometer6',            'REAL'),
>           ('extraBarometer7',            'REAL'),
>           ('extraBarometer8',            'REAL'),
>           ('extraBarometer9',            'REAL'),
>           ('extraBarometer10',            'REAL'),
>           ('extraBarometer11',            'REAL'),
>           ('extraBarometer12',            'REAL'),
43a56,64
>           ('extraTemp4',           'REAL'),
>           ('extraTemp5',           'REAL'),
>           ('extraTemp6',           'REAL'),
>           ('extraTemp7',           'REAL'),
>           ('extraTemp8',           'REAL'),
>           ('extraTemp9',           'REAL'),
>           ('extraTemp10',           'REAL'),
>           ('extraTemp11',           'REAL'),
>           ('extraTemp12',           'REAL'),
51a73,82
>           ('extraHumid3',          'REAL'),
>           ('extraHumid4',          'REAL'),
>           ('extraHumid5',          'REAL'),
>           ('extraHumid6',          'REAL'),
>           ('extraHumid7',          'REAL'),
>           ('extraHumid8',          'REAL'),
>           ('extraHumid9',          'REAL'),
>           ('extraHumid10',          'REAL'),
>           ('extraHumid11',          'REAL'),
>           ('extraHumid12',          'REAL'),
58a90,101
>           ('extraSigPercent1',       'REAL'),
>           ('extraSigPercent2',       'REAL'),
>           ('extraSigPercent3',       'REAL'),
>           ('extraSigPercent4',       'REAL'),
>           ('extraSigPercent5',       'REAL'),
>           ('extraSigPercent6',       'REAL'),
>           ('extraSigPercent7',       'REAL'),
>           ('extraSigPercent8',       'REAL'),
>           ('extraSigPercent9',       'REAL'),
>           ('extraSigPercent10',       'REAL'),
>           ('extraSigPercent11',       'REAL'),
>           ('extraSigPercent12',       'REAL'),
70c113,125
<           ('inTempBatteryStatus',  'REAL')]
---
>           ('inTempBatteryStatus',  'REAL'),
>           ('extraTempBatteryStatus1',  'REAL'),
>           ('extraTempBatteryStatus2',  'REAL'),
>           ('extraTempBatteryStatus3',  'REAL'),
>           ('extraTempBatteryStatus4',  'REAL'),
>           ('extraTempBatteryStatus5',  'REAL'),
>           ('extraTempBatteryStatus6',  'REAL'),
>           ('extraTempBatteryStatus7',  'REAL'),
>           ('extraTempBatteryStatus8',  'REAL'),
>           ('extraTempBatteryStatus9',  'REAL'),
>           ('extraTempBatteryStatus10',  'REAL'),
>           ('extraTempBatteryStatus11',  'REAL'),
>           ('extraTempBatteryStatus12',  'REAL')]


> 3 add the units for each new field.  in the file bin/user/extensions.py 
> add something like this:
>
> import weewx.units
> weewx.units.obs_group_dict['extraTemp4'] = 'group_temperature'
> weewx.units.obs_group_dict['extraTemp5'] = 'group_temperature'
> weewx.units.obs_group_dict['extraTemp6'] = 'group_temperature'
> weewx.units.obs_group_dict['extraTemp7'] = 'group_temperature'
> weewx.units.obs_group_dict['extraHumid4'] = 'group_percent'
> weewx.units.obs_group_dict['extraHumid5'] = 'group_percent'
> weewx.units.obs_group_dict['extraHumid6'] = 'group_percent'
> weewx.units.obs_group_dict['extraHumid7'] = 'group_percent'
>

I added the units (excluding battery status, as I couldn't find an example):

[root@weather schemas]# cd ../user/
[root@weather user]# more extensions.py
#
#    Copyright (c) 2009-2015 Tom Keffer <[email protected]>
#
#    See the file LICENSE.txt for your full rights.
#

"""User extensions module

This module is imported from the main executable, so anything put here will 
be
executed before anything else happens. This makes it a good place to put 
user
extensions.
"""

import locale
# This will use the locale specified by the environment variable 'LANG'
# Other options are possible. See:
# http://docs.python.org/2/library/locale.html#locale.setlocale
locale.setlocale(locale.LC_ALL, '')

import weewx.units
weewx.units.obs_group_dict['extraTemp4'] = 'group_temperature'
weewx.units.obs_group_dict['extraTemp5'] = 'group_temperature'
weewx.units.obs_group_dict['extraTemp6'] = 'group_temperature'
weewx.units.obs_group_dict['extraTemp7'] = 'group_temperature'
weewx.units.obs_group_dict['extraTemp8'] = 'group_temperature'
weewx.units.obs_group_dict['extraTemp9'] = 'group_temperature'
weewx.units.obs_group_dict['extraTemp10'] = 'group_temperature'
weewx.units.obs_group_dict['extraTemp11'] = 'group_temperature'
weewx.units.obs_group_dict['extraTemp12'] = 'group_temperature'
weewx.units.obs_group_dict['extraHumid1'] = 'group_percent'
weewx.units.obs_group_dict['extraHumid2'] = 'group_percent'
weewx.units.obs_group_dict['extraHumid3'] = 'group_percent'
weewx.units.obs_group_dict['extraHumid4'] = 'group_percent'
weewx.units.obs_group_dict['extraHumid5'] = 'group_percent'
weewx.units.obs_group_dict['extraHumid6'] = 'group_percent'
weewx.units.obs_group_dict['extraHumid7'] = 'group_percent'
weewx.units.obs_group_dict['extraHumid8'] = 'group_percent'
weewx.units.obs_group_dict['extraHumid9'] = 'group_percent'
weewx.units.obs_group_dict['extraHumid10'] = 'group_percent'
weewx.units.obs_group_dict['extraHumid11'] = 'group_percent'
weewx.units.obs_group_dict['extraHumid12'] = 'group_percent'
weewx.units.obs_group_dict['extraBarometer1'] = 'group_pressure'
weewx.units.obs_group_dict['extraBarometer2'] = 'group_pressure'
weewx.units.obs_group_dict['extraBarometer3'] = 'group_pressure'
weewx.units.obs_group_dict['extraBarometer4'] = 'group_pressure'
weewx.units.obs_group_dict['extraBarometer5'] = 'group_pressure'
weewx.units.obs_group_dict['extraBarometer6'] = 'group_pressure'
weewx.units.obs_group_dict['extraBarometer7'] = 'group_pressure'
weewx.units.obs_group_dict['extraBarometer8'] = 'group_pressure'
weewx.units.obs_group_dict['extraBarometer9'] = 'group_pressure'
weewx.units.obs_group_dict['extraBarometer10'] = 'group_pressure'
weewx.units.obs_group_dict['extraBarometer11'] = 'group_pressure'
weewx.units.obs_group_dict['extraBarometer12'] = 'group_pressure'
weewx.units.obs_group_dict['extraSigPercent1'] = 'group_percent'
weewx.units.obs_group_dict['extraSigPercent2'] = 'group_percent'
weewx.units.obs_group_dict['extraSigPercent3'] = 'group_percent'
weewx.units.obs_group_dict['extraSigPercent4'] = 'group_percent'
weewx.units.obs_group_dict['extraSigPercent5'] = 'group_percent'
weewx.units.obs_group_dict['extraSigPercent6'] = 'group_percent'
weewx.units.obs_group_dict['extraSigPercent7'] = 'group_percent'
weewx.units.obs_group_dict['extraSigPercent8'] = 'group_percent'
weewx.units.obs_group_dict['extraSigPercent9'] = 'group_percent'
weewx.units.obs_group_dict['extraSigPercent10'] = 'group_percent'
weewx.units.obs_group_dict['extraSigPercent11'] = 'group_percent'
weewx.units.obs_group_dict['extraSigPercent12'] = 'group_percent'
 

> 4 tell weewx to use the new schema.  in the weewx configuration file do 
> this:
>
> [DataBindings]
>     [[wx_binding]]
>         ...
>         schema = user.wview_extended.schema
>

Added sensors and bindings to weewx.conf:

[root@weather user]# more /etc/weewx/weewx.conf
...
[Interceptor]
    # This section is for the network traffic interceptor driver.
    
    # The driver to use:
    driver = user.interceptor
    
    # Specify the hardware device to capture.  Options include:
    #   acurite-bridge - acurite internet bridge, smarthub, or access
    #   observer - fine offset WH2600/HP1000/HP1003, ambient WS2902
    #   lw30x - oregon scientific LW301/LW302
    #   lacrosse-bridge - lacrosse GW1000U/C84612 internet bridge
    #   wu-client - any hardware that uses the weather underground protocol
    device_type = acurite-bridge
    mode = listen
    iface = ens3
    pcap_filter = src 192.168.180.0/22 and dst port 80
    [[sensor_map]]
        extraTemp1 = temperature.12387.*
        extraHumid1 = humidity.12387.*
        extraBarometer1 = barometer.12387.*
        extraSigPercent1 = rxCheckPercent.12387.*
        extraTempBatteryStatus1 = txBatteryStatus.12387.*
        extraTemp2 = temperature.15283.*
        extraHumid2 = humidity.15283.*
        extraBarometer2 = barometer.15283.*
        extraSigPercent2 = rxCheckPercent.15283.*
        extraTempBatteryStatus2 = txBatteryStatus.15283.*
        extraTemp3 = temperature.5422.*
        extraHumid3 = humidity.5422.*
        extraBarometer3 = barometer.5422.*
        extraSigPercent3 = rxCheckPercent.5422.*
        extraTempBatteryStatus3 = txBatteryStatus.5422.*
        extraTemp4 = temperature.2266.*
        extraHumid4 = humidity.2266.*
        extraBarometer4 = barometer.2266.*
        extraSigPercent4 = rxCheckPercent.2266.*
        extraTempBatteryStatus4 = txBatteryStatus.2266.*
        #extraTemp5 = temperature.XXXXX.*
        #extraHumid5 = humidity.XXXXX.*
        #extraBarometer5 = barometer.XXXXX.*
        #extraSigPercent5 = rxCheckPercent.XXXXX.*
        #extraTempBatteryStatus5 = txBatteryStatus.XXXXX.*
        extraTemp7 = temperature.8565.*
        extraHumid7 = humidity.8565.*
        extraBarometer7 = barometer.8565.*
        extraSigPercent7 = rxCheckPercent.8565.*
        extraTempBatteryStatus7 = txBatteryStatus.8565.*
        extraTemp8 = temperature.12520.*
        extraHumid8 = humidity.12520.*
        extraBarometer8 = barometer.12520.*
        extraSigPercent8 = rxCheckPercent.12520.*
        extraTempBatteryStatus8 = txBatteryStatus.12520.*
        extraTemp9 = temperature.2190.*
        extraHumid9 = humidity.2190.*
        extraBarometer9 = barometer.2190.*
        extraSigPercent9 = rxCheckPercent.2190.*
        extraTempBatteryStatus9 = txBatteryStatus.2190.*
        #extraTemp10 = temperature.XXXXX.*
        #extraHumid10 = humidity.XXXXX.*
        #extraBarometer10 = barometer.XXXXX.*
        #extraSigPercent10 = rxCheckPercent.XXXXX.*
        #extraTempBatteryStatus10 = txBatteryStatus.XXXXX.*
        #extraTemp11 = temperature.XXXXX.*
        #extraHumid11 = humidity.XXXXX.*
        #extraBarometer11 = barometer.XXXXX.*
        #extraSigPercent11 = rxCheckPercent.XXXXX.*
        #extraTempBatteryStatus11 = txBatteryStatus.XXXXX.*
        #extraTemp12 = temperature.XXXXX.*
        #extraHumid12 = humidity.XXXXX.*
        #extraBarometer12 = barometer.XXXXX.*
        #extraSigPercent12 = rxCheckPercent.XXXXX.*
        #extraTempBatteryStatus12 = txBatteryStatus.XXXXX.*
...
[DataBindings]
    
    [[wx_binding]]
        # The database must match one of the sections in [Databases].
        # This is likely to be the only option you would want to change.
        database = archive_sqlite
        # The name of the table within the database
        table_name = archive
        # The manager handles aggregation of data for historical summaries
        manager = weewx.wxmanager.WXDaySummaryManager
        # The schema defines the structure of the database.
        # It is *only* used when the database is created.
        schema = schemas.wview_extra.schema
 

> 5 delete or move aside any existing weewx database
>
> 6 start weewx
>

I can now see all the columns in the database:

[root@weather ~]# sqlite3 -readonly /var/lib/weewx/weewx.sdb .schema 
archive | head -1 | tr ',' '\n' | grep -i extra
Error: near "archive": syntax error
 `extraBarometer1` REAL
 `extraBarometer2` REAL
 `extraBarometer3` REAL
 `extraBarometer4` REAL
 `extraBarometer5` REAL
 `extraBarometer6` REAL
 `extraBarometer7` REAL
 `extraBarometer8` REAL
 `extraBarometer9` REAL
 `extraBarometer10` REAL
 `extraBarometer11` REAL
 `extraBarometer12` REAL
 `extraTemp1` REAL
 `extraTemp2` REAL
 `extraTemp3` REAL
 `extraTemp4` REAL
 `extraTemp5` REAL
 `extraTemp6` REAL
 `extraTemp7` REAL
 `extraTemp8` REAL
 `extraTemp9` REAL
 `extraTemp10` REAL
 `extraTemp11` REAL
 `extraTemp12` REAL
 `extraHumid1` REAL
 `extraHumid2` REAL
 `extraHumid3` REAL
 `extraHumid4` REAL
 `extraHumid5` REAL
 `extraHumid6` REAL
 `extraHumid7` REAL
 `extraHumid8` REAL
 `extraHumid9` REAL
 `extraHumid10` REAL
 `extraHumid11` REAL
 `extraHumid12` REAL
 `extraSigPercent1` REAL
 `extraSigPercent2` REAL
 `extraSigPercent3` REAL
 `extraSigPercent4` REAL
 `extraSigPercent5` REAL
 `extraSigPercent6` REAL
 `extraSigPercent7` REAL
 `extraSigPercent8` REAL
 `extraSigPercent9` REAL
 `extraSigPercent10` REAL
 `extraSigPercent11` REAL
 `extraSigPercent12` REAL
 `extraTempBatteryStatus1` REAL
 `extraTempBatteryStatus2` REAL
 `extraTempBatteryStatus3` REAL
 `extraTempBatteryStatus4` REAL
 `extraTempBatteryStatus5` REAL
 `extraTempBatteryStatus6` REAL
 `extraTempBatteryStatus7` REAL
 `extraTempBatteryStatus8` REAL
 `extraTempBatteryStatus9` REAL
 `extraTempBatteryStatus10` REAL
 `extraTempBatteryStatus11` REAL
 `extraTempBatteryStatus12` REAL);

but they're not getting populated with values:

[root@weather ~]# sqlite3  -readonly /var/lib/weewx/weewx.sdb 'select * 
from archive;'
1556557800|1|5||||||||||||||||||||||||0.0||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1556558100|1|5||||||||||||||||||||||||0.0||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1556558400|1|5||||||||||||||||||||||||0.0||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1556558700|1|5||||||||||||||||||||||||0.0||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

and there is data being received still:

[root@weather ~]# tcpdump -w /tmp/snoopy -c 1600000 port 80
tcpdump: listening on ens3, link-type EN10MB (Ethernet), capture size 
262144 bytes
^C300 packets captured
300 packets received by filter
0 packets dropped by kernel
[root@weather ~]# strings /tmp/snoopy | egrep 'temp|rssi|barom|sensor'
&id=24C86E090EC1&mt=tower&sensor=00002190
&humidity=30&tempf=71.4
&baromin=30.30&battery=low&rssi=3
&id=24C86E090A48&mt=tower&sensor=00005422
&humidity=56&tempf=69.9
&baromin=29.63&battery=normal&rssi=3
&id=24C86E090EC1&mt=tower&sensor=00008565
&humidity=34&tempf=73.5
&baromin=30.30&battery=low&rssi=3
&id=24C86E090A48&mt=tower&sensor=00015283
&humidity=58&tempf=68.7
&baromin=29.63&battery=normal&rssi=3
&id=24C86E090EC1&mt=tower&sensor=00002190
&humidity=30&tempf=71.4
&baromin=30.30&battery=low&rssi=3
&id=24C86E090A48&mt=tower&sensor=00005422
&humidity=56&tempf=69.9
&baromin=29.63&battery=normal&rssi=3
&id=24C86E090EC1&mt=tower&sensor=00008565
&humidity=34&tempf=73.5
&baromin=30.30&battery=low&rssi=3
&id=24C86E090A48&mt=tower&sensor=00015283
&humidity=58&tempf=68.7
&baromin=29.63&battery=normal&rssi=3
&id=24C86E090EC1&mt=tower&sensor=00002190
&humidity=30&tempf=71.4
&baromin=30.30&battery=low&rssi=3
&id=24C86E090A48&mt=tower&sensor=00005422
&humidity=56&tempf=69.9
&baromin=29.63&battery=normal&rssi=3
&id=24C86E090EC1&mt=tower&sensor=00008565
&humidity=34&tempf=73.5
&baromin=30.30&battery=low&rssi=3
&id=24C86E090A48&mt=tower&sensor=00015283
&humidity=58&tempf=68.7
&baromin=29.63&battery=normal&rssi=3


any ideas?

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