FritzBox Python Class Fritz OS 6.30+ syncing Google Calendar

This project allows to interact with your FritzBox above the new FritzOS 6.30 to 6.60 (tested with Fritzbox 7490 and 7390) by using a self written FritzBox Python Class. It furthermore uses the Google Calendar API to enter phonecalls and online devices status into your google calendar. To use the Google Services you will need to generate your own client api credentials including a valid calendar json. For the expected format see the provided default files.

Of course the FritzBox Python Script also works stand alone, an provides following functionality:

  • read out last 400 phone calls
  • list current network devices

Of course I plan to increase that functionality:

  • add a config.json
  • implement CalDav Support for non google solutions
  • add pictures of google calendar entries
  • enable gant charts of devices (d3js?)
  • get FritzBox phone book(s)
  • sync phone books to Google Contacts
  • sync phone books to CardDav

I’ve you are interested to use or join me developing:

https://github.com/PaulPetring/FritzBox

General Usage FritzBox python class

#constructors
box = FritzBox()
box = FritzBox("password") # should be default constructor
box = FritzBox("password", "username")
box = FritzBox("password", "username", "http://fritz.box")
box = FritzBox("password", "username", "http://fritz.box",false)

# getting a list of active devices as objects of FritzBoxDevice
devices = box.get_devices(self,"active")

# getting a list of passive devices as objects of FritzBoxDevice
devices = box.get_devices(self,"passive")

# getting a list of objects of FritzBoxCall
calls = box.get_foncalls()

# getting a list of objects of FritzBoxFonBookEntry
fon_book = box.get_fonbook()

General Usage Google Calendar Wrapper

For phone calls:

fon_calendar = GoogleCalendarWrapper("YOUR_CALENDAR_ID@group.calendar.google.com")
fon_events = fon_calendar.get_events()
handleFonEntriesToGoogleCalendar(fon_calendar,fon_events,calls)

For active devices tracking:

devices_calendar = GoogleCalendarWrapper("YOUR_CALENDAR_ID@group.calendar.google.com")
device_events = devices_calendar.get_events()
handleDeviceEntriesToGoogleCalendar(devices_calendar,device_events,devices)

 

This also works for multiple FritzBoxes, here you see all phone calls of a week:

FritzBox Python Class - calendar view

FritzBox Python Class – calendar view

It’s pretty easy to add this script to a raspberry pi located in the network of the router. You’ll also can setup an vpnc connection between the box and an server or use a dynamic ip and a custom port.