Tweetswitch
From
Aim:
To tweet a message on twitter if a switch is turned on of (in our case the space is open/closed).
Bonus : switch on/of external device, in our case our public access point in our space.
PS: We use now the DoorAccess system with extra functions to control the according twiiter/irc/etc.
Contents
Materials
- Server where the software runs
- Com port on server
For the bonus part
- Any access point on 12V (if different change relais)
- Eletronics parts
- Serial D9 female
- R1 = 1K resistor
- T1 = BC547 Transistor
- K1 = Relais 12V (depending on external device)
- D1 = Diode 4101
Software
- python
- oauth2
- python-twitter
- codes for the twitter API
- Script to tweet
- GetSerialSignal command line
Steps
Build the hardware, for testing you can connect a switch on the comport pin 9 to 4 (closed) or 9 to 3 (open) like this:
Photo of simple version
Schematic & photo of build of bonus part
Er zit een klein foutje in het schema, waar pin 3 van de COM-poort staat moet pin 5 zijn.
Sofware
get code and compile setSerial
create script monserial
Serial monitor script - monserial.
#!/bin/sh getstatus() { oldstatus=$status status=`/root/setserial /dev/ttyS0 RI` } statuschange() { if [ "$status" = 0 ] # if test "$status" == "0" then echo opened python tweet.py "We are open" curl "http://pagetoupdatestatus" else echo closed python tweet.py "We are closed" curl "http://pagetoupdatestatus" fi } getstatus statuschange while : do getstatus if [ "$status" != "$oldstatus" ] then statuschange fi sleep 2 done
Do the steps of twitter API to get the autorisation codes. (4 codes in total)
get the python packages oauth2 and python-twitter
build and install these
copy/create the script below
Twitter Script - tweet.py
import twitter import sys import datetime twit = twitter.Api(consumer_key='key_from_twitter', consumer_secret='from_twitter', access_token_key='from_aouth_script', access_token_secret='from_aouth_script') now = datetime.datetime.now() timestamp = now.strftime("%d-%m-%Y %H:%M") text = sys.argv[1] +' '+ timestamp status = twit.PostUpdate(text)
You can now start the monserial script that wil tweet if the switch is used.
Good luck with building.
This project has been build by
Millibit for the bash script
Bigred for compiling SetSerial and all the hardware
Zeno for the twitter python script