Guest User

Untitled

a guest
May 23rd, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.42 KB | None | 0 0
  1. from umqtt.simple import MQTTClient
  2. from machine import Pin, I2C
  3. from bme280 import *
  4. import ujson
  5. import time
  6.  
  7. class DataCollector:
  8. def __init__(self, topic, server, scl, sda):
  9. self.topic = topic
  10. self.server = server
  11. self.scl = scl
  12. self.sda = sda
  13. self.__i2c = I2C(scl=Pin(self.scl), sda=Pin(self.sda))
  14. self.__address = self.__i2c.scan()[0]
  15. self.bme = BME280(i2c=self.__i2c, address=self.__address)
  16. self.led = self.initialize_led()
  17.  
  18. def read_sensor(self):
  19. raw_data = dict(zip(["temperature", "pressure", "humidity"], self.bme.raw_values))
  20. return raw_data
  21.  
  22. def publish_data(self, client_name, interval=10):
  23. c = MQTTClient(client_name, self.server)
  24. c.connect()
  25. while True:
  26. data = self.read_sensor()
  27. data["client"] = client_name
  28. c.publish(self.topic, ujson.dumps(data))
  29. self.blink()
  30. time.sleep(interval)
  31.  
  32. def initialize_led(self):
  33. led = Pin(2 ,Pin.OUT)
  34. for i in range(3):
  35. led.on()
  36. time.sleep(0.1)
  37. led.off()
  38. time.sleep(0.1)
  39. led.on()
  40. return led
  41.  
  42. def blink(self):
  43. self.led.off()
  44. time.sleep(0.1)
  45. self.led.on()
  46.  
  47.  
  48.  
  49. if __name__ == "__main__":
  50. data_collector = DataCollector("environment", "rpi-z0", 5, 4)
  51. data_collector.publish_data(client_name="esp8266", interval=1)
Add Comment
Please, Sign In to add comment