after spending a few hours ive updated the Python script to read in everything from the Envrio+ Hat board. Attached below. Ive also included a screenshot to show how this is configured.
#this python script works with Pimoroni Envrio+ Air Hat and the additional particle sensor
#shop.pimoroni.com
#this script reads in the BME280 weather sesonor, LTR-559 light and proximity sensor
#MICS6814 Gas sensor which detects 3 types of gases
#PMS5003 particulate matter sensor, reading in PM1, PM2.5 and PM10 particulates
#Triggers can be created within Cayenne dashboard as needed
#!/usr/bin/env python
import cayenne.client
import time
import logging
from pms5003 import PMS5003, ReadTimeoutError
from enviroplus import gas
import requests
import ST7735
#import ltr559
from ltr559 import LTR559
ltr559 = LTR559()
from bme280 import BME280
try:
from smbus2 import SMBus
except ImportError:
from smbus import SMBus
# Cayenne authentication info. This should be obtained from the Cayenne Dashboard.
MQTT_USERNAME = "axxxxxxxxeb2"
MQTT_PASSWORD = "17xxxxxxx2e3"
MQTT_CLIENT_ID = "39xxxxxxxx1e6c"
client = cayenne.client.CayenneMQTTClient()
client.begin(MQTT_USERNAME, MQTT_PASSWORD, MQTT_CLIENT_ID, loglevel=logging.INFO)
# For a secure connection use port 8883 when calling client.begin:
# client.begin(MQTT_USERNAME, MQTT_PASSWORD, MQTT_CLIENT_ID, port=8883, loglevel=logging.INFO)
i=0
timestamp = 0
# our code from Enviroplus weather.py ----
logging.basicConfig(
format='%(asctime)s.%(msecs)03d %(levelname)-8s %(message)s',
level=logging.INFO,
datefmt='%Y-%m-%d %H:%M:%S')
logging.info("""weather.py - Print readings from the BME280 weather sensor.
Press Ctrl+C to exit!
""")
bus = SMBus(1)
bme280 = BME280(i2c_dev=bus)
# ----------------------------------
# Create PMS5003 instance
pms5003 = PMS5003()
pms5003.reset()
print ('resetting our pms')
time.sleep(5)
while True:
client.loop()
if (time.time() > timestamp + 10):
#client.celsiusWrite(1, i)
#client.luxWrite(2, i*10)
#client.hectoPascalWrite(3, i+800)
#grab values from Enviro+ monitor. Grab code from Enviro examples
#Temperature, humidity,pressure etc
temperature = bme280.get_temperature()
#print ('Temperature ', temperature)
pressure = bme280.get_pressure()
#print ('Pressure hPa ', pressure)
humidity = bme280.get_humidity()
#read our values in from our particle sensor
pm_values = pms5003.read()
#grab our individual particles
#P2 - p2.5 combustion particles, organic compounds etc)
P2 = pm_values.pm_ug_per_m3(2.5)
#P10 - Dust, pollen, mould spores
P10 = pm_values.pm_ug_per_m3(10)
#P1 = ultrafine particles
P1 = pm_values.pm_ug_per_m3(1)
#print ('P2 ', P2)
#print ('P1 ', P1)
#grab our gases (reducing, oxidising, and NH3)
readings = gas.read_all()
reduce = readings.reducing
oxidise = readings.oxidising
nhthree = readings.nh3
#print ('Gas Reducing',readings.reducing)
#oxidising = gasreadings.oxidising()
#nh3 = gasreadings.nh3
#grab our light level in Lux
lightlevel = ltr559.get_lux()
#grab proximity - set a trigger in Cayenne if someone walks in front of it
distance = ltr559.get_proximity()
#send values to Cayenne
client.virtualWrite(1, temperature, "temp", "c")
client.virtualWrite(2, pressure, "bp", "hPa")
client.virtualWrite(3, humidity, "rel_hum", "%")
client.virtualWrite(4, P1, "pm", "micrograms")
client.virtualWrite(5, P2, "pm", "micrograms")
client.virtualWrite(6, P10, "pm", "micrograms")
client.virtualWrite(7, reduce, "null")
client.virtualWrite(8, oxidise, "null")
client.virtualWrite(9, nhthree, "null")
client.virtualWrite(10, lightlevel, "lum", "%")
client.virtualWrite(11, distance, "prox", "Centimeter")
timestamp = time.time()
i = i+1
print (timestamp)