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