Hi group members,
as described in weewx-user topic "add external sensors on remote computer
to a main weewx installation?"
I now set up a test enviroment to get MQTT running.
Moquitto server is running:
● mosquitto.service - LSB: mosquitto MQTT v3.1 message broker
Loaded: loaded (/etc/init.d/mosquitto)
Active: active (running) since Sun 2017-09-24 11:50:53 CEST; 12s ago
Process: 2193 ExecStart=/etc/init.d/mosquitto start (code=exited,
status=0/SUCCESS)
CGroup: /system.slice/mosquitto.service
└─2197 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
I installed wxMesh.py (didn’t work per wee_extension so I copied the the
file to /usr/share/weewx/user).
My weewx.conf:
….
# Set to type of station hardware. There must be a corresponding stanza
# in this file with a 'driver' parameter indicating the driver to be
used.
station_type = wxMesh
# If you have a website, you may specify an URL
#station_url = http://www.example.com
# The start of the rain year (1=January; 10=October, etc.). This is
# downloaded from the station if the hardware supports it.
rain_year_start = 1
# Start of week (0=Monday, 6=Sunday)
week_start = 6
##############################################################################
[Simulator]
# This section is for the weewx weather station simulator
# The time (in seconds) between LOOP packets.
loop_interval = 2.5
# The simulator mode can be either 'simulator' or 'generator'.
# Real-time simulator. Sleep between each LOOP packet.
#mode = simulator
# Generator. Emit LOOP packets as fast as possible (useful for
testing).
mode = generator
# The start time. If not specified, the default is to use the present
time.
#start = 2011-01-01 00:00
# The driver to use:
driver = weewx.drivers.simulator
[wxMesh]
host = 192.168.2.143 # MQTT broker hostname
topic = weather # topic
driver = user.wxMesh
poll_interval = 5
[[label_map]]
temp = outTemp
humi = outHumidity
in_temp = inTemp
in_humid = inHumidity
.....
I’m not sure which format wxMesh will expect?
I published a test data per:
mosquitto_pub -h 192.168.2.143 -t weather/temp -m "59"
Is this the right way?
If I subscribe to the mosquitto server with:
mosquitto_sub -h 192.168.2.143 -v -t weather/#
I got:
weather/temp 59
So all is well I think.
I started weewx with wxMesh driver:
here is the log (debug=1):
Sep 24 11:25:47 debian systemd[1]: Starting LSB: weewx weather system...
Sep 24 11:25:47 debian weewx[1414]: engine: Initializing weewx version 3.7.1
Sep 24 11:25:47 debian weewx[1414]: engine: Using Python 2.7.13 (default,
Jan 19 2017, 14:48:08) #012[GCC 6.3.0 20170118]
Sep 24 11:25:47 debian weewx[1414]: engine: Platform
Linux-4.9.0-3-amd64-x86_64-with-debian-9.1
Sep 24 11:25:47 debian weewx[1414]: engine: Locale is 'en_US.UTF-8'
Sep 24 11:25:47 debian weewx[1414]: engine: pid file is /var/run/weewx.pid
Sep 24 11:25:47 debian weewx[1418]: engine: Using configuration file
/etc/weewx/weewx.conf
Sep 24 11:25:47 debian weewx[1418]: engine: debug is 1
Sep 24 11:25:47 debian weewx[1418]: engine: Initializing engine
Sep 24 11:25:47 debian weewx[1418]: engine: Loading station type wxMesh
(user.wxMesh)
Sep 24 11:25:47 debian weewx[1404]: Starting weewx weather system: weewx.
Sep 24 11:25:47 debian systemd[1]: Started LSB: weewx weather system.
Sep 24 11:25:47 debian weewx[1418]: wxMesh: host is 192.168.2.143
Sep 24 11:25:47 debian weewx[1418]: wxMesh: topic is weather
Sep 24 11:25:47 debian weewx[1418]: wxMesh: polling interval is 5.0
Sep 24 11:25:47 debian weewx[1418]: wxMesh: label map is {'temp':
'outTemp', 'humi': 'outHumidity', 'in_temp': 'inTemp', 'in_humid':
'inHumidity'}
Sep 24 11:25:47 debian weewx[1418]: engine: Loading service
weewx.engine.StdTimeSynch
Sep 24 11:25:47 debian weewx[1418]: engine: Finished loading service
weewx.engine.StdTimeSynch
Sep 24 11:25:47 debian weewx[1418]: engine: Loading service
weewx.engine.StdConvert
Sep 24 11:25:47 debian weewx[1418]: engine: StdConvert target unit is 0x1
Sep 24 11:25:47 debian weewx[1418]: engine: Finished loading service
weewx.engine.StdConvert
Sep 24 11:25:47 debian weewx[1418]: engine: Loading service
weewx.engine.StdCalibrate
Sep 24 11:25:47 debian weewx[1418]: engine: Finished loading service
weewx.engine.StdCalibrate
Sep 24 11:25:47 debian weewx[1418]: engine: Loading service
weewx.engine.StdQC
Sep 24 11:25:47 debian weewx[1418]: engine: Finished loading service
weewx.engine.StdQC
Sep 24 11:25:47 debian weewx[1418]: engine: Loading service
weewx.wxservices.StdWXCalculate
Sep 24 11:25:47 debian weewx[1418]: 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
Sep 24 11:25:47 debian weewx[1418]: wxcalculate: The following algorithms
will be used for calculations: altimeter=aaNOAA, maxSolarRad=RS
Sep 24 11:25:47 debian weewx[1418]: engine: Finished loading service
weewx.wxservices.StdWXCalculate
Sep 24 11:25:47 debian weewx[1418]: engine: Loading service
weewx.engine.StdArchive
Sep 24 11:25:47 debian weewx[1418]: engine: Archive will use data binding
wx_binding
Sep 24 11:25:47 debian weewx[1418]: engine: Record generation will be
attempted in 'software'
Sep 24 11:25:47 debian weewx[1418]: engine: Using archive interval of 60
seconds (specified in weewx configuration)
Sep 24 11:25:47 debian weewx[1418]: engine: Use LOOP data in hi/low
calculations: 1
Sep 24 11:25:47 debian weewx[1418]: manager: Daily summary version is 2.0
Sep 24 11:25:47 debian weewx[1418]: engine: Using binding 'wx_binding' to
database 'weewx.sdb'
Sep 24 11:25:47 debian weewx[1418]: manager: Starting backfill of daily
summaries
Sep 24 11:25:47 debian weewx[1418]: engine: Finished loading service
weewx.engine.StdArchive
Sep 24 11:25:47 debian weewx[1418]: engine: Loading service
weewx.restx.StdStationRegistry
Sep 24 11:25:47 debian weewx[1418]: restx: StationRegistry: Registration
not requested.
Sep 24 11:25:47 debian weewx[1418]: engine: Finished loading service
weewx.restx.StdStationRegistry
Sep 24 11:25:47 debian weewx[1418]: engine: Loading service
weewx.restx.StdPWSweather
Sep 24 11:25:47 debian weewx[1418]: restx: PWSweather: Posting not enabled.
Sep 24 11:25:47 debian weewx[1418]: engine: Finished loading service
weewx.restx.StdPWSweather
Sep 24 11:25:47 debian weewx[1418]: engine: Loading service
weewx.restx.StdCWOP
Sep 24 11:25:47 debian weewx[1418]: restx: CWOP: Posting not enabled.
Sep 24 11:25:47 debian weewx[1418]: engine: Finished loading service
weewx.restx.StdCWOP
Sep 24 11:25:47 debian weewx[1418]: engine: Loading service
weewx.restx.StdWOW
Sep 24 11:25:47 debian weewx[1418]: restx: WOW: Posting not enabled.
Sep 24 11:25:47 debian weewx[1418]: engine: Finished loading service
weewx.restx.StdWOW
Sep 24 11:25:47 debian weewx[1418]: engine: Loading service
weewx.restx.StdAWEKAS
Sep 24 11:25:47 debian weewx[1418]: restx: AWEKAS: Posting not enabled.
Sep 24 11:25:47 debian weewx[1418]: engine: Finished loading service
weewx.restx.StdAWEKAS
Sep 24 11:25:47 debian weewx[1418]: engine: Loading service
weewx.engine.StdPrint
Sep 24 11:25:47 debian weewx[1418]: engine: Finished loading service
weewx.engine.StdPrint
Sep 24 11:25:47 debian weewx[1418]: engine: Loading service
weewx.engine.StdReport
Sep 24 11:25:47 debian weewx[1418]: engine: Finished loading service
weewx.engine.StdReport
Sep 24 11:25:47 debian weewx[1418]: engine: Starting up weewx version 3.7.1
Sep 24 11:25:47 debian weewx[1418]: engine: Station does not support
reading the time
Sep 24 11:25:47 debian weewx[1418]: engine: Starting main packet loop.
Sep 24 11:25:47 debian weewx[1418]: wxMesh: Working on payload : Empty
Sep 24 11:25:47 debian weewx[1418]: wxMesh: Sleeping for 5
Sep 24 11:25:52 debian weewx[1418]: wxMesh: Working on payload : Empty
Sep 24 11:25:52 debian weewx[1418]: wxMesh: Sleeping for 5
Sep 24 11:25:58 debian weewx[1418]: wxMesh: Working on payload : Empty
Sep 24 11:25:58 debian weewx[1418]: wxMesh: Sleeping for 5
Sep 24 11:26:04 debian weewx[1418]: wxMesh: Working on payload : Empty
I didn’t get any data in?
I checked with this little demo python script (subscriber.py):
import paho.mqtt.client as mqtt
def on_connect(client, userdata, flags, rc):
print("Connected with result code " + str(rc))
client.subscribe("weather/#")
def on_message(client, userdata, msg):
print(msg.topic + " " + str(msg.payload))
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("192.168.2.143", 1883, 60)
client.loop_forever()
and get data:
python subscriber.py
Connected with result code 0
weather/temp 59
Do I something wrong? Does anyone got the driver working and data into
weewx!?
Any idea what will do the trick….?
Thanks in advance!
Regards,
Christian