I found some goof info on the development group and got closer to a working
setup. I purchased an Adafruit HTU21 sensor board and using Bill Morrows
code example I now get MQTT output like this:
TIME:0,INTE:19.36,INHU:59.75
TIME:0,INTE:19.35,INHU:59.74
TIME:0,INTE:19.35,INHU:59.88
TIME:0,INTE:19.32,INHU:59.83
*WeeWx still is not happy as I get this after starting WeeWX:*
Apr 7 18:59:33 ru-pi systemd[1]: Starting LSB: weewx weather system...
Apr 7 18:59:33 ru-pi weewx[19707]: engine: Initializing weewx version 3.8.0
Apr 7 18:59:33 ru-pi weewx[19707]: engine: Using Python 2.7.9 (default,
Sep 17 2016, 20:26:04) #012[GCC 4.9.2]
Apr 7 18:59:33 ru-pi weewx[19707]: engine: Platform
Linux-4.9.35-v7+-armv7l-with-debian-8.0
Apr 7 18:59:33 ru-pi weewx[19707]: engine: Locale is 'en_US.UTF-8'
Apr 7 18:59:33 ru-pi weewx[19707]: engine: pid file is /var/run/weewx.pid
Apr 7 18:59:33 ru-pi weewx[19697]: Starting weewx weather system: weewx.
Apr 7 18:59:33 ru-pi systemd[1]: Started LSB: weewx weather system.
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Using configuration file
/etc/weewx/weewx.conf
Apr 7 18:59:33 ru-pi weewx[19737]: engine: debug is 1
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Initializing engine
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Loading station type wxMesh
(user.wxMesh)
Apr 7 18:59:33 ru-pi weewx[19737]: wxMesh: MQTT host is localhost
Apr 7 18:59:33 ru-pi weewx[19737]: wxMesh: MQTT topic is weather
Apr 7 18:59:33 ru-pi weewx[19737]: wxMesh: MQTT client is wxclient
Apr 7 18:59:33 ru-pi weewx[19737]: wxMesh: polling interval is 5.0
Apr 7 18:59:33 ru-pi weewx[19737]: wxMesh: label map is {'INTE':
'outTemp', 'INHU': 'inHumidity'}
Apr 7 18:59:33 ru-pi weewx[19737]: wxMesh: Connected
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Loading service
weewx.engine.StdTimeSynch
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Finished loading service
weewx.engine.StdTimeSynch
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Loading service
user.owfs.OWFSService
Apr 7 18:59:33 ru-pi weewx[19737]: owfs: service version is 0.21
Apr 7 18:59:33 ru-pi weewx[19737]: owfs: binding is archive
Apr 7 18:59:33 ru-pi weewx[19737]: owfs: interface is u
Apr 7 18:59:33 ru-pi weewx[19737]: owfs: sensor map is {'extraTemp':
'/uncached/28.70000A060000/temperature', 'inTemp':
'/uncached/28.03CF08060000/temperature'}
Apr 7 18:59:33 ru-pi weewx[19737]: owfs: sensor type map is {}
Apr 7 18:59:33 ru-pi weewx[19737]: owfs: sensor unit system is metric
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Finished loading service
user.owfs.OWFSService
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Loading service
weewx.engine.StdConvert
Apr 7 18:59:33 ru-pi weewx[19737]: engine: StdConvert target unit is 0x1
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Finished loading service
weewx.engine.StdConvert
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Loading service
weewx.engine.StdCalibrate
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Finished loading service
weewx.engine.StdCalibrate
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Loading service
weewx.engine.StdQC
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Finished loading service
weewx.engine.StdQC
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Loading service
weewx.wxservices.StdWXCalculate
Apr 7 18:59:33 ru-pi weewx[19737]: wxcalculate: The following values will
be calculated: barometer=prefer_hardware, windchill=prefer_hardware,
dewpoint=prefer_hardware, appTemp=prefer_hardware,
rainRate=prefer_hardware, windrun=prefer_hardware,
heatindex=prefer_hardware, maxSolarRad=prefer_hardware,
humidex=prefer_hardware, pressure=prefer_hardware,
inDewpoint=prefer_hardware, ET=prefer_hardware, altimeter=prefer_hardware,
cloudbase=prefer_hardware
Apr 7 18:59:33 ru-pi weewx[19737]: wxcalculate: The following algorithms
will be used for calculations: altimeter=aaNOAA, maxSolarRad=RS
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Finished loading service
weewx.wxservices.StdWXCalculate
Apr 7 18:59:33 ru-pi weewx[19737]: wxMesh: Added to queue of 1 message
temperature
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Loading service
weewx.engine.StdArchive
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Archive will use data binding
wx_binding
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Record generation will be
attempted in 'hardware'
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Using archive interval of 300
seconds (specified in weewx configuration)
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Use LOOP data in hi/low
calculations: 1
Apr 7 18:59:33 ru-pi weewx[19737]: manager: Daily summary version is 2.0
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Using binding 'wx_binding' to
database 'weewx.sdb'
Apr 7 18:59:33 ru-pi weewx[19737]: manager: Starting backfill of daily
summaries
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Finished loading service
weewx.engine.StdArchive
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Loading service
weewx.restx.StdStationRegistry
Apr 7 18:59:33 ru-pi weewx[19737]: restx: StationRegistry: Registration
not requested.
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Finished loading service
weewx.restx.StdStationRegistry
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Loading service
weewx.restx.StdWunderground
Apr 7 18:59:33 ru-pi weewx[19737]: restx: Wunderground: Posting not
enabled.
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Finished loading service
weewx.restx.StdWunderground
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Loading service
weewx.restx.StdPWSweather
Apr 7 18:59:33 ru-pi weewx[19737]: restx: PWSweather: Posting not enabled.
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Finished loading service
weewx.restx.StdPWSweather
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Loading service
weewx.restx.StdCWOP
Apr 7 18:59:33 ru-pi weewx[19737]: restx: CWOP: Posting not enabled.
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Finished loading service
weewx.restx.StdCWOP
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Loading service
weewx.restx.StdWOW
Apr 7 18:59:33 ru-pi weewx[19737]: restx: WOW: Posting not enabled.
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Finished loading service
weewx.restx.StdWOW
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Loading service
weewx.restx.StdAWEKAS
Apr 7 18:59:33 ru-pi weewx[19737]: restx: AWEKAS: Posting not enabled.
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Finished loading service
weewx.restx.StdAWEKAS
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Loading service
weewx.engine.StdPrint
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Finished loading service
weewx.engine.StdPrint
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Loading service
weewx.engine.StdReport
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Finished loading service
weewx.engine.StdReport
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Starting up weewx version 3.8.0
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Station does not support
reading the time
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Starting main packet loop.
Apr 7 18:59:33 ru-pi weewx[19737]: wxMesh: Working on queue of 1
Apr 7 18:59:33 ru-pi weewx[19737]: wxMesh: Working on queue 0 payload :
temperature
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Main loop exiting. Shutting
engine down.
Apr 7 18:59:33 ru-pi weewx[19737]: engine: Caught unrecoverable exception
in engine:
Apr 7 18:59:33 ru-pi weewx[19737]: **** need more than 1 value to
unpack
Apr 7 18:59:33 ru-pi weewx[19737]: **** Traceback (most recent call
last):
Apr 7 18:59:33 ru-pi weewx[19737]: **** File
"/usr/share/weewx/weewx/engine.py", line 871, in main
Apr 7 18:59:33 ru-pi weewx[19737]: **** engine.run()
Apr 7 18:59:33 ru-pi weewx[19737]: **** File
"/usr/share/weewx/weewx/engine.py", line 187, in run
Apr 7 18:59:33 ru-pi weewx[19737]: **** for packet in
self.console.genLoopPackets():
Apr 7 18:59:33 ru-pi weewx[19737]: **** File
"/usr/share/weewx/user/wxMesh.py", line 139, in genLoopPackets
Apr 7 18:59:33 ru-pi weewx[19737]: **** (key,value) =
datum.split(":")
Apr 7 18:59:33 ru-pi weewx[19737]: **** ValueError: need more than 1
value to unpack
Apr 7 18:59:33 ru-pi weewx[19737]: **** Exiting.
Part of the wxMesh.py with line 139 in *BOLD:*
def genLoopPackets(self):
while True:
# read whatever values we can get from the MQTT broker
logdbg("Working on queue of %d " % self.payload.qsize())
while not self.payload.empty():
msg = str(self.payload.get())
if msg != "Empty" :
logdbg("Working on queue %d payload : %s" % (self.payload.qsize(), msg))
data = {}
row = msg.split(",")
for datum in row:
* (key,value) = datum.split(":")*
data[key] = value
if( key=="TIME" and data[key] == "0"):
data[key] = str(int(time.time())) # time from station is not yet reliable -
replace it
logdbg("key: "+key+" value: "+data[key])
# map the data into a weewx loop packet
_packet = {'usUnits': weewx.METRIC}
for vname in data:
_packet[self.label_map.get(vname, vname)] = _get_as_float(data, vname)
yield _packet
logdbg("Sleeping for %d" % self.poll_interval)
time.sleep(self.poll_interval)
self.client.disconnect()
self.client.loop_stop()
I see *: *between keywords and values when I view the MQTT messages in a
terminal with mosquito_sub -t weather/#
Stumped again.
--
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.