Use a Raspberry Pi and Google Calander to set an alarm

Use Google Calendar to set an alarm on the Raspberry Pi.

http://raspberrypi-hacks.com/45/smart-alarm-clock-with-google-calendar-and-raspberry-pi/

 

 

import gdata.calendar.service
import gdata.service
import atom.service
import gdata.calendar
import gdata.calendar
import atom
import getopt
import sys
import string
import time

import xe #for the time comparator
from feed.date.rfc3339 import tf_from_timestamp #also for the comparator
from datetime import datetime #for the time on the rpi end
from apscheduler.scheduler import Scheduler #this will let us check the calender on a regular interval
import os, random #to play the mp3 later

#this is more stuff google told me to do, but essentially it handles the login credentials
calendar_service = gdata.calendar.service.CalendarService()
calendar_service.email = 'youremail@yourdomain' #your email
calendar_service.password = 'yourgcalpassword' #your password
calendar_service.source = 'Google-Calendar_Python_Sample-1.0'
calendar_service.ProgrammaticLogin()

def FullTextQuery(calendar_service, text_query='wake'):
print 'Full text query for events on Primary Calendar: \'%s\'' % ( text_query,)
query = gdata.calendar.service.CalendarEventQuery('default', 'private', 'full', text_query)
feed = calendar_service.CalendarQuery(query)
for i, an_event in enumerate(feed.entry):
for a_when in an_event.when:
print "---"
print an_event.title.text ,"Number:",i,"Event Time:",time.strftime('%d-%m-%Y %H:%M',time.localtime(tf_from_timestamp(a_when.start_time))),"Current Time:",time.strftime('%d-%m-%Y %H:%M')

if time.strftime('%d-%m-%Y %H:%M',time.localtime(tf_from_timestamp(a_when.start_time))) == time.strftime('%d-%m-%Y %H:%M'):
print "Comparison: Pass"
print "---"

songfile = random.choice(os.listdir("/home/pi/alarmclock/test_MP3s/")) #chooses the .mp3 file
print "File Selected:", songfile
command ="mpg321" + " " + "/home/pi/alarmclock/test_MP3s/" + "'"+songfile+"'"+ " -g 100" #plays the MP3 in it's entierty. As long as the song is longer than a minute then will only trigger once in the minute that start of the "wake" event

print command
os.system(command) #runs the bash command
else:
print "Comparison:Fail" #the "wake" event's start time != the system's current time

def callable_func():
os.system("clear") #this is more for my benefit and is in no way necesarry
print "------------start-----------"
FullTextQuery(calendar_service)
print "-------------end------------"

scheduler = Scheduler(standalone=True)
scheduler.add_interval_job(callable_func,seconds=5)
scheduler.start() #runs the program indefinatly on an interval of 5 seconds

 

Issues with soldering – I recomend Multicore Savbit Alloy Solder

Multicore Alloy SolderI recently purchased Maplins leadfree solder and had lots of issues with it.  I thought it might have something to do with the soldering iron not getting hot enough so bought a new Antex iron.  The old one was over 20 years old.

Unfortunatly the bit on the new iron became very black very quickly and again refused to melt the solder, so I bought new tips for the iron.

After doing some research I found other similar complaints about Maplins own brand solder, so ordered up some Multicore Savbit Aloy Solder from ebay.

What a difference it makes.  It melts quickly and flows easilly.

Vintage Ersin Multicore Solder Alloy SN 60 21 swg 616 54
Vintage Ersin Multicore Solder Alloy SN 60 21 swg 616 54 $10.99
End Date: Friday Mar-9-2018 11:59:04 PST
Buy It Now for only: $10.99
Size 5 Multicore Tube Savbit Alloy Electrical Solder
Size 5 Multicore Tube Savbit Alloy Electrical Solder $22.06
End Date: Friday Mar-9-2018 22:20:11 PST
Buy It Now for only: $22.06
Old car tool 5 core savbit alloy ersin multicore solder size 5 made Hemel London
Old car tool 5 core savbit alloy ersin multicore solder size 5 made Hemel London $10.11
End Date: Wednesday Feb-28-2018 12:27:39 PST
Multicore Size 5 Tube Savbit Alloy Solder
Multicore Size 5 Tube Savbit Alloy Solder $11.01
End Date: Sunday Mar-4-2018 3:18:57 PST
Buy It Now for only: $11.01

My Current Pi Projects

Featured

Update 19 December 2017

Raspberry Pi's

  • Raspberry Pi 1 - OSMC Media Centre (B rev 1)
  • Raspberry Pi 2 - Weather Logging Rear / USB memory stick/ DNS Server (B+)
  • Raspberry Pi 3 - Weather Logging Front (B+)
  • Raspberry Pi 4 - DNS Server with Ad Blocking 433mhz receiver / Energenie Remote Plug controller (B rev 1)
  • Raspberry Pi 5 - Weather Display Board (A)
  • Raspberry Pi 6 - Gardening Pi connected to 8 way relay board (A+)
  • Raspberry Pi 7 - Connected to a cross trainer to track RPM / time (Zero rev 1.2)
  • Raspberry Pi 8 - Monitoring Station connected to 22" monitor (2)
  • Raspberry Pi 9 - Electricity Monitor connected to multiple SCT-013-000 Current Sensors (A+)
  • Raspberry Pi 21 - Pi Camera and USB Camera running motioneyeos (Front left) (B rev 2)
  • Raspberry pi 22 - Pi Camera and USB Camera running motioneyeos (Front right) (B rev 2)
  • Raspberry pi 22 - Pi Camera and USB Camera running motioneyeos (Rear) (B rev 2)

Broken - 1 x B+ (water), 2 x B rev 3 (ebay arrived broken)
TinyTX3 - Wireless Sensors - http://nathan.chantrell.net/tinytx-wireless-sensor/

  • Bathroom - DHT22 Humidity Sensor (Node 11)
  • Kitchen - DHT22 Humidity Sensor (12)
  • Hallway - DHT22 Humidity Sensor (14)
  • Extractor Fan Pipe - DHT22 Humidity Sensor (15)
  • Freezer- DS18B20 1-Wire Temperature Sensor (23)
  • Fridge - DS18B20 1-Wire Temperature Sensor (24)
  • Spare - DS18B20 1-Wire Temperature Sensor (26)
  • PC Case - DS18B20 1-Wire Temperature Sensor (27)
  • Air Con Fan - dual DS18B20 1-Wire Temperature Probes (29)
  • Door Switch (5)
  • Window Switch (6)

Wemos Devices

  • Wemos 1 - Weather sensing attached to 3 AA rechargeable batteries
  • Wemos 2 - Weather sensing attached to 4 AA rechargeable batteries
  • Wemos 3 - Weather sensing attached to 5 x 18650 batteries
  • Wemos 4 - Electricity Usage monitor attached to a SCT-006-000 current sensor

 

This site is a collection of notes, documentation and web links for my Pi's.

Retired Pi Uses

I mainly buy parts from CPC, ModMyPi, Pimoroni and eBay