[ Raspberry Pi ] ทวีตอุณหภูมิกับความชื้นจากเซ็นเซอร์ AM2302
บทความนี้เป็นตอนต่อจากตอนที่แล้วคือ Raspberry Pi วัดอุณหภูมิและความชื้นด้วยเซ็นเซอร์ AM2302 หลังจากแสดงค่าจากเซ็นเซอร์เรามาต่อด้วยการทวีตขึ้นทวิตเตอร์กัน
สมัคร Twitter App
ถ้าเราจะทวิตเราก็ต้องมีบัญชีทวิตเตอร์ของเราก่อน
- สมัครบัญชีของตัวเองหรือถ้ามีแล้ว ไปสมัครสร้าง app ที่ https://apps.twitter.com ทำการ “Create New App”
- กรอกข้อมูล อย่างของเราในรูปกรอกแค่นี้ อย่าลืมติ๊กใน Developer Agreement ด้วยนะ เสร็จแล้วกด “Create your Twitter application” ดังรูป
- จะได้ Consumer Key (API Key) กับ Consumer Secret (API Secret) เราต้องใช้ Access Token ด้วยโดย “Create my access token”
- ทีนี้เราจะได้ Consumer Key (API Key), Consumer Secret (API Secret), Access Token, Access Token Secret ครบแล้ว
ติดตั้ง Tweepy
เพื่อให้สามารถส่งค่าไปให้ทวิตเตอร์ได้เราต้องทำการติดตั้ง tweepy ก่อน (อีกตัวก็มี twython แต่เรายังไม่ได้ลอง) ด้วยคำสั่งดังนี้
1 2 | sudo apt-get install python-pip sudo pip install tweepy |
การเขียนโปรแกรม
จากไฟล์ AdafruitDHT.py ใน Adafruit_Python_DHT/examples เมื่อตอนที่แล้ว
เพิ่มโค้ดดังนี้
1 2 3 4 5 6 7 8 9 10 11 | import tweepy CONSUMER_KEY = '1234abcd...' #ในโควตแทนที่ด้วย consumer key ที่ได้มาก่อนหน้านี้ CONSUMER_SECRET = '1234abcd...' #ในโควตแทนที่ด้วย consumer secret key ACCESS_KEY = '1234abcd...' #ในโควตแทนที่ด้วย access token ACCESS_SECRET = '1234abcd...'# ในโควตแทนที่ด้วย access token secret auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) auth.set_access_token(ACCESS_KEY, ACCESS_SECRET) api = tweepy.API(auth) api.update_status(ข้อความที่ต้องการทวีตออกทวิตเตอร์) |
ตัวอย่างที่เราเพิ่มในไฟล์ AdafruitDHT.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #!/usr/bin/python import sys import Adafruit_DHT import tweepy CONSUMER_KEY = 'bzmA2uSBZUBO4PxSAVMduHV4e' CONSUMER_SECRET = 'C70INk0V78RYZ4lc0fMjUcUmsZuuZxD3RbNahdQiKUPbrpBjbb' ACCESS_KEY = '4123765408-oN5aEF5l0x3ekOYvXNYH9DhpCSlnakRFSnFuAKj' ACCESS_SECRET = 'NUjhpJiMlvHVpSyQ0gFlqYopYuO3tSZab1Hv7LBsYojKy' auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) auth.set_access_token(ACCESS_KEY, ACCESS_SECRET) api = tweepy.API(auth) sensor_args = { '11': Adafruit_DHT.DHT11, '22': Adafruit_DHT.DHT22, '2302': Adafruit_DHT.AM2302 } if len(sys.argv) == 3 and sys.argv[1] in sensor_args: sensor = sensor_args[sys.argv[1]] pin = sys.argv[2] else: print 'usage: sudo ./Adafruit_DHT.py [11|22|2302] GPIOpin#' print 'example: sudo ./Adafruit_DHT.py 2302 4 - Read from an AM2302 connected to GPIO #4' sys.exit(1) while True: humidity, temperature = Adafruit_DHT.read_retry(sensor, pin) if humidity is not None and temperature is not None: print('Temp={0:0.1f}* Humidity={1:0.1f}%'.format(temperature, humidity)) api.update_status('Temp={0:0.1f}* Humidity={1:0.1f}%'.format(temperature, humidity)) else: print 'Failed to get reading. Try again!' sys.exit(1) |
รันด้วยคำสั่ง sudo ./AdafruitDHT.py 2302 4
(ดูการใช้คำสั่งในตอนที่แล้ว) ก็จะทวิตได้แล้ว
References
- https://github.com/adafruit/Adafruit_Python_DHT
- http://akizukidenshi.com/download/ds/aosong/AM2302.pdf
- https://apps.twitter.com