Skip to content

Commit

Permalink
Adds MQTT example
Browse files Browse the repository at this point in the history
  • Loading branch information
robmarkcole committed Dec 15, 2017
1 parent 4225489 commit c3f8237
Show file tree
Hide file tree
Showing 4 changed files with 89 additions and 2 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# bme680-mqtt-micropython
Publish data from the bme680 sensor over MQTT using micropython. Makes use of https://github.com/gkluoe/bme680/blob/master/library/bme680/i2c.py
and https://github.com/pimoroni/bme680.
and https://github.com/pimoroni/bme680. Note that I init my wifi connection in a boot.py.

<img src="https://github.com/robmarkcole/bme680-mqtt-micropython/blob/master/BME680-wipy.JPG">
40 changes: 40 additions & 0 deletions lib/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#!/usr/bin/env python
import bme680
from i2c import I2CAdapter
from mqtt import MQTTClient
import time

def settimeout(duration):
pass

client = MQTTClient("wipy", "192.168.0.30", port=1883)
client.settimeout = settimeout
client.connect()

i2c_dev = I2CAdapter()
sensor = bme680.BME680(i2c_device=i2c_dev)

# These oversampling settings can be tweaked to
# change the balance between accuracy and noise in
# the data.
sensor.set_humidity_oversample(bme680.OS_2X)
sensor.set_pressure_oversample(bme680.OS_4X)
sensor.set_temperature_oversample(bme680.OS_8X)
sensor.set_filter(bme680.FILTER_SIZE_3)

print("Polling:")
try:
while True:
if sensor.get_sensor_data():

output = "{} C, {} hPa, {} RH, {} RES,".format(
sensor.data.temperature,
sensor.data.pressure,
sensor.data.humidity,
sensor.data.gas_resistance)

print(output)
client.publish("test", output)
time.sleep(1)
except KeyboardInterrupt:
pass
18 changes: 17 additions & 1 deletion main.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,17 @@
#!/usr/bin/env python
import bme680
from i2c import I2CAdapter
from mqtt import MQTTClient
import time

def settimeout(duration):
pass

client = MQTTClient("wipy", "192.168.0.30", port=1883)
client.settimeout = settimeout
client.connect()
mqtt_topic = "bme680"

i2c_dev = I2CAdapter()
sensor = bme680.BME680(i2c_device=i2c_dev)

Expand All @@ -26,6 +35,13 @@
sensor.data.gas_resistance)

print(output)
time.sleep(1)
client.publish(mqtt_topic, output)
# Publish on individual topics for consistency with rpi repo.
client.publish('bme680-humidity', str(sensor.data.humidity))
client.publish('bme680-temperature', str(sensor.data.temperature))
client.publish('bme680-pressure', str(sensor.data.pressure))
client.publish('bme680-air_qual', str(sensor.data.gas_resistance))
time.sleep(5)

except KeyboardInterrupt:
pass
31 changes: 31 additions & 0 deletions simple-readout/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#!/usr/bin/env python
import bme680
from i2c import I2CAdapter
import time

i2c_dev = I2CAdapter()
sensor = bme680.BME680(i2c_device=i2c_dev)

# These oversampling settings can be tweaked to
# change the balance between accuracy and noise in
# the data.
sensor.set_humidity_oversample(bme680.OS_2X)
sensor.set_pressure_oversample(bme680.OS_4X)
sensor.set_temperature_oversample(bme680.OS_8X)
sensor.set_filter(bme680.FILTER_SIZE_3)

print("Polling:")
try:
while True:
if sensor.get_sensor_data():

output = "{} C, {} hPa, {} RH, {} RES,".format(
sensor.data.temperature,
sensor.data.pressure,
sensor.data.humidity,
sensor.data.gas_resistance)

print(output)
time.sleep(1)
except KeyboardInterrupt:
pass

0 comments on commit c3f8237

Please sign in to comment.