Arduphil
Published © CC BY-SA

Arduino, IFTTT and Telegram

Arduino sends a simple command through serial port then the pyscript act as server for services like IFTTT or Telegram.

BeginnerFull instructions provided5,644
Arduino, IFTTT and Telegram

Things used in this project

Story

Read more

Schematics

Circuit

Scheme

Code

Arduino.ino

Arduino
Main file to load on board
// Hey Emacs, this is Arduino, but you can consider as if it were -*-c++-*-
//******
//*Schetch for Arduino to talk with a server
//*which possibly call an API
//*circuit is simply a button to pin A0
//*

#define buttonpin A0

void setup(){
Serial.begin(9600);
}

void loop(){
  Serial.println(0);
  //if button is pressed server is activated
  if(digitalRead(buttonpin)) Serial.println(1);
  //improve stability  
delay(1);
}

pyscript.py

Python
Works as server on your machine
import serial #serial communication
import time
import requests #API requests

trigger='<event_name>'
IFTTTkey='<key>'
url='https://maker.ifttt.com/trigger/'+trigger+'/with/key/'+IFTTTkey+'?value1=running%20python'
response=requests.get(url)

#open serial port
#change this!
try:
    port = serial.Serial('/dev/tty.usbmodem641',9600)
except:
    port = serial.Serial('/dev/tty.usbmodem441',9600)

#wait Arduino to reset
time.sleep(3)

token='bot123:loremipsum'
id='<chat_id>'
message='Hello IoT!'
#useful to get chat_id
response=requests.get('https://api.telegram.org/'+token+'/getUpdates?limit=5')
url='https://api.telegram.org/'+token+'/sendMessage?chat_id='+id+'&text='+message

port.write('begins')

while True:
    read= port.readline() #read Arduino's Serial port
    print type(read)
    print read
    try:
        intread=int(read)
        if intread==1:
            print 'sent'
            response=requests.get(url)
            print response
            break
    except:
        print read

GitHub

Every file's here

Credits

Arduphil

Arduphil

2 projects • 5 followers

Comments