hey tom,
for some reason i am seeing heaps of loop packets, but only a few archive
records are created from them. the loop packets are partial packets - each
loop packet contains data for a single solar panel, while the database has
columns for all solar panels. for exampler, panel 1 emits a loop packet
with p1_current, p1_voltage, p1_rssi, panel 2 emits a loop packet
p2_current, p2_voltage, p2_rssi, etc. the database has columns for 50 solar
panels (p1_voltage, p2_voltage, etc). i am currently collecting data from
40 panels.
when i run weewxd directly, i see loop data for every panel, but i see only
sporadic REC data. i would have expected to see each archive record
populated with data from all of the panels, aggregated from all of the
(partial) loop packets.
this is using the weewx-tigo driver:
https://github.com/matthewwall/weewx-tigo
operating system is debian 12
weewx 5.1 installed from debian package
configuration file 'tigo.conf' is attached
log output 'tigo.log' is attached
this is one of 9 weewx instances running on a home monitor, feeding data
into influx and mqtt, where they are used by home assistant and grafana.
the other instances monitor per-circuit power consumption, water
consumption, propane consumption, weather stations, solar production, and
battery status.
gory details: so taking it from the bottom up, we have the following:
1) i am pulling data from a TIGO CCA (cloud connect advanced) monitor using
the taptap binary to decode RS485 data from a RS485-to-usb device wired
into the 'gateway' port of the CCA (a read-only tap). the taptap
application works great - it is sending JSON data as fast as it is coming
off the wire. for example, this is output from taptap:
{"gateway":{"id":4610},"node":{"id":37},"timestamp":"2025-10-08T10:38:01.942422696-04:00","voltage_in":31.7,"voltage_out":31.4,"current":0.645,"dc_dc_duty_cycle":1.0,"temperature":15.3,"rssi":126}
2) the weewx-tigo driver captures the JSON from taptap and converts it to
weewx packets. for example, this is output from running the driver
directly. it maps the TIGO gateway/node identifiers of the form xxxx.yy to
weewx schema identifiers of the form p1, p2, p3, etc.
$ PYTHONPATH=/usr/share/weewx python3 /etc/weewx/bin/user/tigo.py --app
/opt/taptap/bin/taptap --tap /dev/ttyUSB0 --config /etc/weewx/tigo.conf
'dateTime': '1760016266.812686', 'identifier': '4610.19', 'p19_current':
'7.16', 'p19_dc_dc_duty_cycle': '1.0', 'p19_rssi': '123.0',
'p19_temperature': '21.9', 'p19_voltage_in': '33.45', 'p19_voltage_out':
'33.1', 'usUnits': '16'
'dateTime': '1760016268.812686', 'identifier': '4610.19', 'p19_current':
'7.075', 'p19_dc_dc_duty_cycle': '1.0', 'p19_rssi': '123.0',
'p19_temperature': '21.9', 'p19_voltage_in': '33.9', 'p19_voltage_out':
'33.5', 'usUnits': '16'
'dateTime': '1760016268.742698', 'identifier': '4609.4', 'p4_current':
'6.56', 'p4_dc_dc_duty_cycle': '1.0', 'p4_rssi': '216.0', 'p4_temperature':
'14.1', 'p4_voltage_in': '38.5', 'p4_voltage_out': '38.2', 'usUnits': '16'
'dateTime': '1760016270.742698', 'identifier': '4609.4', 'p4_current':
'6.635', 'p4_dc_dc_duty_cycle': '1.0', 'p4_rssi': '216.0',
'p4_temperature': '14.1', 'p4_voltage_in': '38.15', 'p4_voltage_out':
'37.8', 'usUnits': '16'
'dateTime': '1760016270.742698', 'identifier': '4609.15', 'p15_current':
'6.62', 'p15_dc_dc_duty_cycle': '1.0', 'p15_rssi': '192.0',
'p15_temperature': '19.1', 'p15_voltage_in': '37.9', 'p15_voltage_out':
'37.5', 'usUnits': '16'
3) when i run weewxd directly with the driver, i see the loop packets:
$ weewxd /etc/weewx/tigo.conf
Using configuration file /etc/weewx/tigo.conf
LOOP: 2025-10-09 09:29:17 EDT (1760016557) 'dateTime': '1760016557.181576',
'identifier': '4610.22', 'p22_current': '7.435', 'p22_dc_dc_duty_cycle':
'1.0', 'p22_rssi': '216.0', 'p22_temperature': '18.1', 'p22_voltage_in':
'33.5', 'p22_voltage_out': '33.1', 'usUnits': '1'
LOOP: 2025-10-09 09:29:19 EDT (1760016559) 'dateTime': '1760016559.181576',
'identifier': '4610.22', 'p22_current': '7.39', 'p22_dc_dc_duty_cycle':
'1.0', 'p22_rssi': '216.0', 'p22_temperature': '18.1', 'p22_voltage_in':
'33.75', 'p22_voltage_out': '33.4', 'usUnits': '1'
LOOP: 2025-10-09 09:29:17 EDT (1760016557) 'dateTime': '1760016557.181576',
'identifier': '4610.40', 'p40_current': '7.32', 'p40_dc_dc_duty_cycle':
'1.0', 'p40_rssi': '99.0', 'p40_temperature': '22.2', 'p40_voltage_in':
'33.8', 'p40_voltage_out': '33.5', 'usUnits': '1'
LOOP: 2025-10-09 09:29:19 EDT (1760016559) 'dateTime': '1760016559.181576',
'identifier': '4610.40', 'p40_current': '7.425', 'p40_dc_dc_duty_cycle':
'1.0', 'p40_rssi': '99.0', 'p40_temperature': '22.2', 'p40_voltage_in':
'33.4', 'p40_voltage_out': '33.0', 'usUnits': '1'
LOOP: 2025-10-09 09:29:17 EDT (1760016557) 'dateTime': '1760016557.107579',
'identifier': '4609.8', 'p8_current': '4.155', 'p8_dc_dc_duty_cycle':
'0.6078431372549019', 'p8_rssi': '198.0', 'p8_temperature': '19.6',
'p8_voltage_in': '41.0', 'p8_voltage_out': '24.2', 'usUnits': '1'
but you can see that a typical archive record does not include all of the
data from loop packets:
$ weewxd /etc/weewx/tigo.conf | grep REC
REC: 2025-10-09 09:35:00 EDT (1760016900) 'dateTime': '1760016900',
'identifier': '4610.302000000001', 'interval': '5.0', 'p21_current':
'7.67', 'p21_dc_dc_duty_cycle': '1.0', 'p21_rssi': '159.0',
'p21_temperature': '21.1', 'p21_voltage_in': '33.2', 'p21_voltage_out':
'32.9', 'p31_current': '7.58', 'p31_dc_dc_duty_cycle': '1.0', 'p31_rssi':
'105.0', 'p31_temperature': '19.2', 'p31_voltage_in': '33.775',
'p31_voltage_out': '33.349999999999994', 'p34_current':
'7.577500000000001', 'p34_dc_dc_duty_cycle': '1.0', 'p34_rssi': '135.0',
'p34_temperature': '18.7', 'p34_voltage_in': '33.5', 'p34_voltage_out':
'33.150000000000006', 'usUnits': '1'
REC: 2025-10-09 09:40:00 EDT (1760017200) 'dateTime': '1760017200',
'identifier': '4610.302000000001', 'interval': '5.0', 'p21_current':
'7.845', 'p21_dc_dc_duty_cycle': '1.0', 'p21_rssi': '159.0',
'p21_temperature': '22.6', 'p21_voltage_in': '33.5', 'p21_voltage_out':
'33.2', 'p31_current': '7.9025', 'p31_dc_dc_duty_cycle': '1.0', 'p31_rssi':
'102.0', 'p31_temperature': '20.7', 'p31_voltage_in': '33.35',
'p31_voltage_out': '33.0', 'p34_current': '7.890000000000001',
'p34_dc_dc_duty_cycle': '1.0', 'p34_rssi': '135.0', 'p34_temperature':
'20.2', 'p34_voltage_in': '33.05', 'p34_voltage_out': '32.6', 'usUnits': '1'
--
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].
To view this discussion visit
https://groups.google.com/d/msgid/weewx-user/faa1332c-8cb3-4826-8116-5a539975c549n%40googlegroups.com.
2025-10-09T08:15:10.455293-04:00 wisink weewxd-tigo[123396]: INFO __main__:
Initializing weewxd-tigo version 5.1.0
2025-10-09T08:15:10.455481-04:00 wisink weewxd-tigo[123396]: INFO __main__:
Command line: /usr/share/weewx/weewxd.py --log-label weewxd-tigo
/etc/weewx/tigo.conf
2025-10-09T08:15:10.455743-04:00 wisink weewxd-tigo[123396]: INFO __main__:
Using Python: 3.11.2 (main, Apr 28 2025, 14:11:48) [GCC 12.2.0]
2025-10-09T08:15:10.455815-04:00 wisink weewxd-tigo[123396]: INFO __main__:
Located at: /usr/bin/python3
2025-10-09T08:15:10.458642-04:00 wisink weewxd-tigo[123396]: INFO __main__:
Platform: Linux-6.1.0-38-amd64-x86_64-with-glibc2.36
2025-10-09T08:15:10.458763-04:00 wisink weewxd-tigo[123396]: INFO __main__:
Locale: 'en_US.UTF-8'
2025-10-09T08:15:10.458832-04:00 wisink weewxd-tigo[123396]: INFO __main__:
Entry path: /usr/share/weewx/weewxd.py
2025-10-09T08:15:10.458910-04:00 wisink weewxd-tigo[123396]: INFO __main__:
WEEWX_ROOT: /etc/weewx
2025-10-09T08:15:10.458974-04:00 wisink weewxd-tigo[123396]: INFO __main__:
Config file: /etc/weewx/tigo.conf
2025-10-09T08:15:10.459045-04:00 wisink weewxd-tigo[123396]: INFO __main__:
User module: /etc/weewx/bin/user
2025-10-09T08:15:10.459106-04:00 wisink weewxd-tigo[123396]: INFO __main__:
Debug: 0
2025-10-09T08:15:10.459255-04:00 wisink weewxd-tigo[123396]: INFO __main__:
User: weewx
2025-10-09T08:15:10.459451-04:00 wisink weewxd-tigo[123396]: INFO __main__:
Group: weewx
2025-10-09T08:15:10.459578-04:00 wisink weewxd-tigo[123396]: INFO __main__:
Groups: dialout plugdev weewx
2025-10-09T08:15:10.459769-04:00 wisink weewxd-tigo[123396]: INFO weewx.engine:
Loading station type TIGO (user.tigo)
2025-10-09T08:15:10.466870-04:00 wisink weewxd-tigo[123396]: INFO user.tigo:
driver version is 0.1
2025-10-09T08:15:10.467002-04:00 wisink weewxd-tigo[123396]: INFO user.tigo:
tap=/dev/ttyUSB0
2025-10-09T08:15:10.467070-04:00 wisink weewxd-tigo[123396]: INFO user.tigo:
cmd='/opt/taptap/bin/taptap observe --serial /dev/ttyUSB0'
2025-10-09T08:15:10.467139-04:00 wisink weewxd-tigo[123396]: INFO user.tigo:
panel_map={'p2': '4609.2', 'p3': '4609.3', 'p4': '4609.4', 'p5': '4609.5',
'p6': '4609.6', 'p7': '4609.7', 'p8': '4609.8', 'p9': '4609.9', 'p10':
'4609.10', 'p11': '4609.11', 'p12': '4609.12', 'p13': '4609.13', 'p14':
'4609.14', 'p15': '4609.15', 'p16': '4609.16', 'p17': '4609.17', 'p18':
'4610.18', 'p19': '4610.19', 'p20': '4610.20', 'p21': '4610.21', 'p22':
'4610.22', 'p23': '4610.23', 'p24': '4610.24', 'p25': '4610.25', 'p26':
'4610.26', 'p27': '4610.27', 'p28': '4610.28', 'p29': '4610.29', 'p30':
'4610.30', 'p31': '4610.31', 'p32': '4610.32', 'p33': '4610.33', 'p34':
'4610.34', 'p35': '4610.35', 'p36': '4610.36', 'p37': '4610.37', 'p38':
'4610.38', 'p39': '4610.39', 'p40': '4610.40', 'p41': '4610.41'}
2025-10-09T08:15:10.467297-04:00 wisink weewxd-tigo[123396]: INFO user.tigo:
startup process '/opt/taptap/bin/taptap observe --serial /dev/ttyUSB0'
2025-10-09T08:15:10.468414-04:00 wisink weewxd-tigo[123396]: INFO weewx.engine:
StdConvert target unit is 0x1
2025-10-09T08:15:10.468549-04:00 wisink weewxd-tigo[123396]: INFO weewx.engine:
Archive will use data binding wx_binding
2025-10-09T08:15:10.468621-04:00 wisink weewxd-tigo[123396]: INFO weewx.engine:
Record generation will be attempted in 'hardware'
2025-10-09T08:15:10.468685-04:00 wisink weewxd-tigo[123396]: INFO weewx.engine:
Using archive interval of 300 seconds (specified in weewx configuration)
2025-10-09T08:15:10.495033-04:00 wisink weewxd-tigo[123396]: INFO weewx.restx:
StationRegistry: Registration not requested.
2025-10-09T08:15:10.496654-04:00 wisink weewxd-tigo[123396]: INFO user.influx:
service version is 0.17
2025-10-09T08:15:10.496844-04:00 wisink weewxd-tigo[123396]: INFO user.influx:
database: data
2025-10-09T08:15:10.496927-04:00 wisink weewxd-tigo[123396]: INFO user.influx:
destination: http://localhost:8086
2025-10-09T08:15:10.497003-04:00 wisink weewxd-tigo[123396]: INFO user.influx:
line_format: multi-line-dotted
2025-10-09T08:15:10.497064-04:00 wisink weewxd-tigo[123396]: INFO user.influx:
measurement: collector.tigo
2025-10-09T08:15:10.497202-04:00 wisink weewxd-tigo[123396]: INFO user.influx:
tags: host=sink,driver=tigo
2025-10-09T08:15:10.497270-04:00 wisink weewxd-tigo[123396]: INFO user.influx:
binding: archive
2025-10-09T08:15:10.501796-04:00 wisink weewxd-tigo[123396]: INFO user.influx:
Data will be uploaded to http://localhost:8086
2025-10-09T08:15:10.511057-04:00 wisink weewxd-tigo[123396]: INFO user.mqtt:
service version is 0.24
2025-10-09T08:15:10.511204-04:00 wisink weewxd-tigo[123396]: INFO user.mqtt:
binding to archive
2025-10-09T08:15:10.511279-04:00 wisink weewxd-tigo[123396]: INFO user.mqtt:
data_binding is wx_binding
2025-10-09T08:15:10.511879-04:00 wisink weewxd-tigo[123396]: INFO user.mqtt:
topic is tigo
2025-10-09T08:15:10.511961-04:00 wisink weewxd-tigo[123396]: INFO user.mqtt:
desired unit system is US
2025-10-09T08:15:10.512029-04:00 wisink weewxd-tigo[123396]: INFO user.mqtt:
data will be uploaded to mqtt://localhost:1883/
2025-10-09T08:15:10.516536-04:00 wisink weewxd-tigo[123396]: INFO weewx.engine:
'pyephem' detected, extended almanac data is available
2025-10-09T08:15:10.516694-04:00 wisink weewxd-tigo[123396]: INFO __main__:
Starting up weewx version 5.1.0
2025-10-09T08:15:10.535130-04:00 wisink weewxd-tigo[123396]: INFO weewx.engine:
Using binding 'wx_binding' to database 'tigo.sdb'
2025-10-09T08:15:10.535293-04:00 wisink weewxd-tigo[123396]: INFO
weewx.manager: Starting backfill of daily summaries
2025-10-09T08:15:10.535358-04:00 wisink weewxd-tigo[123396]: INFO
weewx.manager: Empty database
2025-10-09T08:15:10.535418-04:00 wisink weewxd-tigo[123396]: INFO weewx.engine:
Starting main packet loop.
2025-10-09T08:20:16.209844-04:00 wisink weewxd-tigo[123396]: INFO user.mqtt:
client established for mqtt://localhost:1883/
debug = 0
WEEWX_ROOT = /
log_success = False
log_failure = True
loop_on_init = True
version = 5.1
[Station]
location = xxx
latitude = 0
longitude = 0
altitude = 15, meter
station_type = TIGO
rain_year_start = 1
week_start = 0
[TIGO]
driver = user.tigo
tap = /dev/ttyUSB0
app = /opt/taptap/bin/taptap
[[panel_map]]
p2 = 4609.2
p3 = 4609.3
p4 = 4609.4
p5 = 4609.5
p6 = 4609.6
p7 = 4609.7
p8 = 4609.8
p9 = 4609.9
p10 = 4609.10
p11 = 4609.11
p12 = 4609.12
p13 = 4609.13
p14 = 4609.14
p15 = 4609.15
p16 = 4609.16
p17 = 4609.17
p18 = 4610.18
p19 = 4610.19
p20 = 4610.20
p21 = 4610.21
p22 = 4610.22
p23 = 4610.23
p24 = 4610.24
p25 = 4610.25
p26 = 4610.26
p27 = 4610.27
p28 = 4610.28
p29 = 4610.29
p30 = 4610.30
p31 = 4610.31
p32 = 4610.32
p33 = 4610.33
p34 = 4610.34
p35 = 4610.35
p36 = 4610.36
p37 = 4610.37
p38 = 4610.38
p39 = 4610.39
p40 = 4610.40
p41 = 4610.41
[StdRESTful]
[[StationRegistry]]
register_this_station = false
[[Influx]]
server_url = http://localhost:8086
database = data
measurement = collector.tigo
line_format = multi-line-dotted
binding = archive
tags = host=sink, driver=tigo
[[MQTT]]
server_url = mqtt://localhost:1883/
topic = tigo
unit_system = US
[StdReport]
SKIN_ROOT = /etc/weewx/skins
HTML_ROOT = /var/www/html/tigo
data_binding = wx_binding
[[Seasons]]
skin = Seasons
enable = true
[StdConvert]
target_unit = US
[StdCalibrate]
[[Corrections]]
foo = foo + 0.2
[StdQC]
[[MinMax]]
foo = 0, 0, inch
[StdArchive]
archive_interval = 300
record_generation = hardware
loop_hilo = True
data_binding = wx_binding
[DataBindings]
[[wx_binding]]
database = archive_sqlite
table_name = archive
manager = weewx.manager.DaySummaryManager
schema = user.tigo.schema
[Databases]
[[archive_sqlite]]
database_name = tigo.sdb
database_type = SQLite
[DatabaseTypes]
[[SQLite]]
driver = weedb.sqlite
SQLITE_ROOT = /var/lib/weewx
[Engine]
[[Services]]
prep_services =
data_services =
process_services = weewx.engine.StdConvert, weewx.engine.StdCalibrate,
weewx.engine.StdQC
xtype_services =
archive_services = weewx.engine.StdArchive
restful_services = weewx.restx.StdStationRegistry, user.influx.Influx,
user.mqtt.MQTT
report_services = weewx.engine.StdPrint, weewx.engine.StdReport