Skip to content

Instantly share code, notes, and snippets.

@lludlow
Last active December 30, 2021 18:07
Show Gist options
  • Select an option

  • Save lludlow/35d10847eb5577e4e696cc7ddd3647c7 to your computer and use it in GitHub Desktop.

Select an option

Save lludlow/35d10847eb5577e4e696cc7ddd3647c7 to your computer and use it in GitHub Desktop.

Revisions

  1. lludlow revised this gist Dec 30, 2021. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions pmsa0003i.py
    Original file line number Diff line number Diff line change
    @@ -50,8 +50,8 @@ def messageFunction (client, userdata, message):
    "PM 1.0: %d\tPM2.5: %d\tPM10: %d"
    % (aqdata["pm10 env"], aqdata["pm25 env"], aqdata["pm100 env"])
    )
    # pm10 = pm25.read["pm10 standard"]
    # client.publish("basement-airquality/PM1.0", pm10)
    pm10 = aqdata["pm10 standard"]
    client.publish("basement-airquality/PM1.0", pm10)
    # pm25 = aqdata["pm25 standard"]
    # client.publish("basement-airquality/PM2.5", pm25)
    # pm10 = aqdata["pm100 standard"]
  2. lludlow created this gist Dec 30, 2021.
    58 changes: 58 additions & 0 deletions pmsa0003i.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,58 @@
    import time
    import board
    import busio
    from digitalio import DigitalInOut, Direction, Pull
    from adafruit_pm25.i2c import PM25_I2C
    import paho.mqtt.client as mqtt
    from secrets import secrets

    reset_pin = None

    # Create library object, use 'slow' 100KHz frequency!
    i2c = busio.I2C(board.SCL, board.SDA, frequency=100000)
    # Connect to a PM2.5 sensor over I2C
    pm25 = PM25_I2C(i2c, reset_pin)

    # Setup- MQTT
    def messageFunction (client, userdata, message):
    topic = str(message.topic)
    message = str(message.payload.decode("utf-8"))
    print(topic + message)

    client = mqtt.Client("basement_piPM25") # Create a MQTT client object
    client.username_pw_set(username=secrets["user"],password=secrets["pass"])
    client.connect("192.168.10.70", 1883)
    client.subscribe("basement-airquality")
    client.on_message = messageFunction # Attach the messageFunction to subscription
    client.loop_start() # Start the MQTT client

    # Publish all values to MQTT
    while True:
    time.sleep(10)

    try:
    aqdata = pm25.read()
    print(aqdata)
    except RuntimeError:
    print("Unable to read from sensor, retrying...")
    continue

    print()
    print("Concentration Units (standard)")
    print("---------------------------------------")
    print(
    "PM 1.0: %d\tPM2.5: %d\tPM10: %d"
    % (aqdata["pm10 standard"], aqdata["pm25 standard"], aqdata["pm100 standard"])
    )
    print("Concentration Units (environmental)")
    print("---------------------------------------")
    print(
    "PM 1.0: %d\tPM2.5: %d\tPM10: %d"
    % (aqdata["pm10 env"], aqdata["pm25 env"], aqdata["pm100 env"])
    )
    # pm10 = pm25.read["pm10 standard"]
    # client.publish("basement-airquality/PM1.0", pm10)
    # pm25 = aqdata["pm25 standard"]
    # client.publish("basement-airquality/PM2.5", pm25)
    # pm10 = aqdata["pm100 standard"]
    # client.publish("basement-airquality/PM10.0", pm10)