adityatandon

NodeMCU THV Adafruit IO

Dec 4th, 2019
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.49 KB | None | 0 0
  1. from machine import Pin
  2. import network
  3. import time
  4. from umqtt.robust import MQTTClient
  5. import sys
  6. import dht
  7. import os
  8.  
  9. ADAFRUIT_IO_URL = b'io.adafruit.com'
  10. ADAFRUIT_USERNAME = b'aditya194'
  11. ADAFRUIT_IO_KEY = b'9045541ac29446369887c82e6595d79c'
  12. ADAFRUIT_IO_FEEDNAME1 = b'temperature'
  13. ADAFRUIT_IO_FEEDNAME2 = b'humidity'
  14. ADAFRUIT_IO_FEEDNAME3 = b'vibration'
  15. MEASUREMENT_INTERVAL = 2
  16.  
  17. # create a random MQTT clientID
  18. random_num = int.from_bytes(os.urandom(3), 'little')
  19. mqtt_client_id = bytes('client_'+str(random_num), 'utf-8')
  20.  
  21.  
  22. client = MQTTClient(client_id=mqtt_client_id,
  23. server=ADAFRUIT_IO_URL,
  24. user=ADAFRUIT_USERNAME,
  25. password=ADAFRUIT_IO_KEY,
  26. ssl=False)
  27.  
  28. #ADAFRUIT_USERNAME/feeds/ADAFRUIT_IO_FEEDNAME1
  29. mqtt_feedname1 = bytes('{:s}/feeds/{:s}'.format(ADAFRUIT_USERNAME, ADAFRUIT_IO_FEEDNAME1), 'utf-8')
  30. mqtt_feedname2 = bytes('{:s}/feeds/{:s}'.format(ADAFRUIT_USERNAME, ADAFRUIT_IO_FEEDNAME2), 'utf-8')
  31. mqtt_feedname3 = bytes('{:s}/feeds/{:s}'.format(ADAFRUIT_USERNAME, ADAFRUIT_IO_FEEDNAME3), 'utf-8')
  32.  
  33.  
  34.  
  35. def do_connect():
  36. wlan = network.WLAN(network.STA_IF)
  37. wlan.active(True)
  38. if not wlan.isconnected():
  39. print('connecting to network...')
  40. wlan.connect('Hare Krishna', 'aditya88')
  41. while not wlan.isconnected():
  42. pass
  43. print('network config:', wlan.ifconfig())
  44. try:
  45. client.connect()
  46. except Exception as e:
  47. print('could not connect to MQTT server {}{}'.format(type(e).__name__, e))
  48. sys.exit()
  49.  
  50.  
  51. def Send_Data(tVstat,tTemp,tHumid) :
  52. client.publish(mqtt_feedname1,bytes(str(tTemp), 'utf-8'), qos=0)
  53. client.publish(mqtt_feedname2,bytes(str(tHumid), 'utf-8'),qos=0)
  54. client.publish(mqtt_feedname3,bytes(str(tVstat), 'utf-8'),qos=0)
  55.  
  56. def main():
  57. do_connect()
  58. p5 = Pin(5, Pin.IN) # Vibration Data
  59. d = dht.DHT11(Pin(13)) # Temp and Humidity
  60. last_measurement_time = 0
  61. Vstat =0
  62. while True:
  63. if p5.value() == 1:
  64. Vstat += 1
  65. current_time = time.time()
  66. d.measure()
  67. temp = d.temperature() # eg. 23 (°C)
  68. humid = d.humidity() # eg. 41 (% RH)
  69.  
  70. if current_time - last_measurement_time > MEASUREMENT_INTERVAL:
  71. print('Temperature:',temp,'Humidity',humid,'Vib Stat',Vstat)
  72. Send_Data(Vstat,temp,humid)
  73. last_measurement_time = current_time
  74. Vstat = 0
  75.  
  76.  
  77. if __name__ == '__main__':
  78. main()
Add Comment
Please, Sign In to add comment