Hi Luc,
Here also the same problem last night, the Main engine shut down, casued by:
accum: ScalarStats.addHiLo expected float or int, got 308902
I have adapted line 463 of cmon.py. After this patch, the problem has been
solved.
Thanks for your advise!
Sef (PA3SK)
Echt (NL)
Op donderdag 14 februari 2019 17:41:19 UTC+1 schreef Luc Heijst:
>
> cmon v0.16 crashes in weewx version 3.9.1
>
> See crashlog:
> Feb 14 11:10:15 pi21 vpro[28175]: manager: Added record 2019-02-14
> 11:10:15 -03 (1550153415) to database 'cmon21'
> Feb 14 11:10:15 pi21 vpro[28175]: engine: Main loop exiting. Shutting
> engine down.
> Feb 14 11:10:15 pi21 vpro[28175]: engine: Shutting down StdReport thread
> Feb 14 11:10:15 pi21 vpro[28175]: engine: StdReport thread has been
> terminated
> Feb 14 11:10:15 pi21 vpro[28175]: engine: Caught unrecoverable exception
> in engine:
> Feb 14 11:10:15 pi21 vpro[28175]: **** accum: ScalarStats.addHiLo
> expected float or int, got 3809297
> Feb 14 11:10:15 pi21 vpro[28175]: **** Traceback (most recent call
> last):
> Feb 14 11:10:15 pi21 vpro[28175]: **** File
> "/home/weewx/bin/weewx/engine.py", line 890, in main
> Feb 14 11:10:15 pi21 vpro[28175]: **** engine.run()
> Feb 14 11:10:15 pi21 vpro[28175]: **** File
> "/home/weewx/bin/weewx/engine.py", line 202, in run
> Feb 14 11:10:15 pi21 vpro[28175]: ****
> self.dispatchEvent(weewx.Event(weewx.POST_LOOP))
> Feb 14 11:10:15 pi21 vpro[28175]: **** File
> "/home/weewx/bin/weewx/engine.py", line 224, in dispatchEvent
> Feb 14 11:10:15 pi21 vpro[28175]: **** callback(event)
> Feb 14 11:10:15 pi21 vpro[28175]: **** File
> "/home/weewx/bin/weewx/engine.py", line 580, in post_loop
> Feb 14 11:10:15 pi21 vpro[28175]: ****
> self._catchup(self.engine.console.genArchiveRecords)
> Feb 14 11:10:15 pi21 vpro[28175]: **** File
> "/home/weewx/bin/weewx/engine.py", line 635, in _catchup
> Feb 14 11:10:15 pi21 vpro[28175]: **** origin='hardware'))
> Feb 14 11:10:15 pi21 vpro[28175]: **** File
> "/home/weewx/bin/weewx/engine.py", line 224, in dispatchEvent
> Feb 14 11:10:15 pi21 vpro[28175]: **** callback(event)
> Feb 14 11:10:15 pi21 vpro[28175]: **** File
> "/home/weewx/bin/user/cmon.py", line 714, in new_archive_record
> Feb 14 11:10:15 pi21 vpro[28175]: ****
> self.save_data(self.get_data(now, self.last_ts))
> Feb 14 11:10:15 pi21 vpro[28175]: **** File
> "/home/weewx/bin/user/cmon.py", line 721, in save_data
> Feb 14 11:10:15 pi21 vpro[28175]: **** self.dbm.addRecord(record)
> Feb 14 11:10:15 pi21 vpro[28175]: **** File
> "/home/weewx/bin/weewx/manager.py", line 246, in addRecord
> Feb 14 11:10:15 pi21 vpro[28175]: ****
> self._addSingleRecord(record, cursor, log_level)
> Feb 14 11:10:15 pi21 vpro[28175]: **** File
> "/home/weewx/bin/weewx/manager.py", line 1216, in _addSingleRecord
> Feb 14 11:10:15 pi21 vpro[28175]: ****
> _day_summary.addRecord(record, weight=_weight)
> Feb 14 11:10:15 pi21 vpro[28175]: **** File
> "/home/weewx/bin/weewx/accum.py", line 256, in addRecord
> Feb 14 11:10:15 pi21 vpro[28175]: **** func(self, record,
> obs_type, add_hilo, weight)
> Feb 14 11:10:15 pi21 vpro[28175]: **** File
> "/home/weewx/bin/weewx/accum.py", line 314, in add_value
> Feb 14 11:10:15 pi21 vpro[28175]: ****
> self[obs_type].addHiLo(val, record['dateTime'])
> Feb 14 11:10:15 pi21 vpro[28175]: **** File
> "/home/weewx/bin/weewx/accum.py", line 77, in addHiLo
> Feb 14 11:10:15 pi21 vpro[28175]: **** raise ValueError("accum:
> ScalarStats.addHiLo expected float or int, got %s" % val)
> Feb 14 11:10:15 pi21 vpro[28175]: **** ValueError: accum:
> ScalarStats.addHiLo expected float or int, got 3809297
> Feb 14 11:10:15 pi21 vpro[28175]: **** Exiting.
>
> The problem is caused by the net_eth0_tbytes calculation in cmon.py, see
> below.
> # get network usage
> fn = '/proc/net/dev'
> try:
> netinfo = self._readproc_dict(fn)
> if netinfo:
> for iface in netinfo:
> values = netinfo[iface].split()
> for i, k in enumerate(self._NET_KEYS):
> if iface not in self.last_net:
> self.last_net[iface] = {}
> if k in self.last_net[iface]:
> x = int(values[i]) - self.last_net[iface][k]
> if x < 0:
> maxcnt = 0x100000000 # 32-bit counter
> if x + maxcnt < 0:
> maxcnt = 0x10000000000000000 # 64-bit
> counter
> x += maxcnt
> record['net_' + iface + '_' + k] = *x*
> self.last_net[iface][k] = int(values[i])
> except Exception, e:
> logdbg("read failed for %s: %s" % (fn, e))
>
> The value of net_eth0_tbytes is a long integer ('net_eth0_tbytes':
> *108233L*,) and accum.py (of version 3.9.1) expects a float or an
> integer, but NOT a long.
>
> To solve this, the cmon value must be converted to an integer in line 463
> of cmon.py
> record['net_' + iface + '_' + k] = *int(x)*
>
> Luc
>
--
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.