Skip to content

Instantly share code, notes, and snippets.

@amusarra
Last active August 3, 2019 17:29
Show Gist options
  • Select an option

  • Save amusarra/645c34b5dab4e3b18eb50529d2ba76a2 to your computer and use it in GitHub Desktop.

Select an option

Save amusarra/645c34b5dab4e3b18eb50529d2ba76a2 to your computer and use it in GitHub Desktop.

Revisions

  1. amusarra revised this gist Aug 3, 2019. 1 changed file with 122 additions and 0 deletions.
    122 changes: 122 additions & 0 deletions publish_sense_hat_telemetry.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,122 @@
    #!/usr/bin/python
    # -*- coding: utf-8 -*-

    try:
    from sense_hat import SenseHat
    except ImportError:
    from sense_emu import SenseHat

    import paho.mqtt.client as paho
    import time
    import datetime
    import json
    import socket
    import signal
    import sys
    import uuid

    __author__ = "Antonio Musarra <antonio.musarra@gmail.com>"
    __copyright__ = "Copyright 2018 Antonio Musarra's Blog"
    __version__ = "1.0.0"
    __license__ = "MIT"

    sleepTime = 5
    deviceId = socket.gethostname() + "-" + str(uuid.uuid4())

    sense = SenseHat()
    sense.set_rotation(180)

    red = (255, 0, 0)


    # Return Sense temperature
    def get_sense_temperature():
    return sense.temp


    # Return Sens Pressure
    def get_sense_pressure():
    return sense.pressure


    # Return Sense Humidity
    def get_sense_humidity():
    return sense.humidity


    # Callback methods
    def on_publish(client, userdata, mid):
    print("Data published (Mid: %s)" % mid)
    sense.show_message("Data published", text_colour=red)


    def on_log(client, userdata, level, buf):
    print(buf)


    def on_connect(client, userdata, flags, rc):
    if rc == 0:
    print("Connected to MQTT broker (RC: %s)" % rc)
    else:
    print("Connection to MQTT broker failed (RC: %s)" % rc)


    def on_disconnect(client, userdata, rc):
    if rc != 0:
    print("Unexpected disconnect")
    else:
    print("Disconnected from MQTT broker")


    def disconnect(signum, frame):
    """
    Signal handler to ensure we disconnect cleanly
    in the event of a SIGTERM or SIGINT.
    """
    client.loop_stop()
    client.disconnect()

    print("Exiting on signal %s" % signum)
    sys.exit(signum)


    client = paho.Client(deviceId)
    client.username_pw_set(
    "mygcwrqi:mygcwrqi",
    password="qd2vevNTwprtOj_fwyb5LnL90nDxNmw3")

    # Register callbacks
    client.on_connect = on_connect
    client.on_disconnect = on_disconnect
    client.on_log = on_log
    client.on_publish = on_publish

    # Connect to MQTT broker
    client.connect("whale.rmq.cloudamqp.com", 1883)
    client.loop_start()

    # use the signal module to handle signals
    signal.signal(signal.SIGTERM, disconnect)
    signal.signal(signal.SIGINT, disconnect)

    # Collect telemetry information from Sense HAT and publish to
    # MQTT broker in JSON format
    while True:
    temperature = get_sense_temperature()
    pressure = get_sense_pressure()
    humidity = get_sense_humidity()

    telemetryData = dict(DeviceId=deviceId,
    Timestamp=datetime.datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3],
    Temperature=str(temperature),
    Pressure=str(pressure),
    Humidity=str(humidity)
    )

    telemetryDataJson = json.dumps(telemetryData)

    (rc, mid) = client.publish(
    "RPi.Data",
    telemetryDataJson, qos=1)

    time.sleep(sleepTime)
  2. amusarra revised this gist Aug 3, 2019. 2 changed files with 13 additions and 14 deletions.
    8 changes: 1 addition & 7 deletions sense_hat_display.py
    Original file line number Diff line number Diff line change
    @@ -7,10 +7,4 @@
    from sense_emu import SenseHat

    sense = SenseHat()

    while True:
    temperature = sense.get_temperature()
    pressure = sense.get_pressure()
    humidity = sense.get_humidity()
    sense.show_message(
    "The temperaturen is %d, the pressure is %d, and the humidity is %d." % (temperature, pressure, humidity))
    sense.show_message("Benvenuto su https://www.dontesta.it")
    19 changes: 12 additions & 7 deletions sense_hat_read_sensors_data.py
    Original file line number Diff line number Diff line change
    @@ -1,11 +1,16 @@
    #!/usr/bin/env python
    from sense_hat import SenseHat
    #!/usr/bin/python
    # -*- coding: utf-8 -*-

    try:
    from sense_hat import SenseHat
    except ImportError:
    from sense_emu import SenseHat

    sense = SenseHat()

    while True:
    temperature = sense.get_temperature()
    pressure = sense.get_pressure()
    humidity = sense.get_humidity()
    sense.show_message("The temperaturen is %d, the pressure
    is %d, and the humidity is %d." % (temperature, pressure, humidity)
    temperature = sense.get_temperature()
    pressure = sense.get_pressure()
    humidity = sense.get_humidity()
    sense.show_message(
    "The temperaturen is %d, the pressure is %d, and the humidity is %d." % (temperature, pressure, humidity))
  3. amusarra revised this gist Aug 3, 2019. No changes.
  4. amusarra revised this gist Aug 3, 2019. 1 changed file with 7 additions and 1 deletion.
    8 changes: 7 additions & 1 deletion sense_hat_display.py
    Original file line number Diff line number Diff line change
    @@ -7,4 +7,10 @@
    from sense_emu import SenseHat

    sense = SenseHat()
    sense.show_message("Benvenuto su https://www.dontesta.it")

    while True:
    temperature = sense.get_temperature()
    pressure = sense.get_pressure()
    humidity = sense.get_humidity()
    sense.show_message(
    "The temperaturen is %d, the pressure is %d, and the humidity is %d." % (temperature, pressure, humidity))
  5. amusarra revised this gist Aug 3, 2019. 1 changed file with 7 additions and 2 deletions.
    9 changes: 7 additions & 2 deletions sense_hat_display.py
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,10 @@
    #!/usr/bin/env python
    from sense_hat import SensHat
    #!/usr/bin/python
    # -*- coding: utf-8 -*-

    try:
    from sense_hat import SenseHat
    except ImportError:
    from sense_emu import SenseHat

    sense = SenseHat()
    sense.show_message("Benvenuto su https://www.dontesta.it")
  6. amusarra revised this gist Aug 3, 2019. 1 changed file with 11 additions and 0 deletions.
    11 changes: 11 additions & 0 deletions sense_hat_read_sensors_data.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,11 @@
    #!/usr/bin/env python
    from sense_hat import SenseHat

    sense = SenseHat()

    while True:
    temperature = sense.get_temperature()
    pressure = sense.get_pressure()
    humidity = sense.get_humidity()
    sense.show_message("The temperaturen is %d, the pressure
    is %d, and the humidity is %d." % (temperature, pressure, humidity)
  7. amusarra created this gist Aug 3, 2019.
    5 changes: 5 additions & 0 deletions sense_hat_display.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,5 @@
    #!/usr/bin/env python
    from sense_hat import SensHat

    sense = SenseHat()
    sense.show_message("Benvenuto su https://www.dontesta.it")