Skip to content

dandroid88/webmote

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

83 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

More Screenshots

The original project is located at https://github.com/azylman/webmote and was written by Daniel Myers, Alex Wilson, and Alex Zylman. This rewrite serves to improve extensibility by using a plugin architecture with a minimal core and plugins for features or protocols.

High Level Concept:

This project aims to allow any type of device to be controlled by a common web interface (IR, X10, etc.).

How It Works:

  • Devices - these are things like your TV, Stereo, Light, etc.
  • Actions - these are things you do to your devices like, turning them on/off, changing channels, etc.
  • Transcievers - for the devices that need them (so far IR and X10), these are pieces of hardware that transmit/recieve data between the server running Webmote and your devices.
    • These are built with arduinos connected to the server via USB that then have additional circuitry for IR, X10, etc.
  • Remotes - there are both custom (user defined) and default (all available actions for a device) remotes that allow a user to trigger actions.
    • For custom remotes, users can pick where buttons should be placed, what actions they should trigger, what they should look like etc.
    • One motivation for this project was the numerous remotes I had to control my entertainment system. With custom remotes a user can make a remote that has actions from any device or macros. In other words, a remote might be named "Watch TV". That remote might have a button like "Watch Cable" that turns on the TV, cable box, and stereo and also changes them to the correct inputs. There might also be a button called "ESPN" or "CNN" which will automatically navigate you to the channels without having to remember channel numbers (phew...).
  • There are already a few different plugins for example XBMC control and Scheduling which allows you to schedule things like your lights to go on or off at a given time throughout the week.

Goals:

  • Extensible - plugins for new protocols and functionality
  • Mobile web interface - works on any browser on any platform
  • Simple enough for my parents (old) to setup
  • (eventually) Serve media connected to the server, upload to, download to, etc (this is more of a long term goal...)

Core:

A set of abstract base classes (and associated methods) for the plugins to expand on.

Plugins:

A set of subclasses, files and routines that expand the functionality of webmote.
The format is as follows:

A top level directory containing at least:

  • templates (directory)
    • html files containing pages specific to the plugin
  • static (directory)
    • images, javascript, etc.
  • models.py
  • urls.py
  • views.py
  • __init__.py
  • info.json
    • authors
    • version
    • name
    • url

Tasks:

  • Need to implement a method for installing plugin dependencies
  • Need to implement a method or plugin for managing USB port changes manually, or better yet automatically
  • Secondary:
    • Remote/Local Media player
    • In browser file browser
    • Mobile playback
    • Local playback

Setup Server:

#install virtualenv, pip
sudo apt-get install python-virtualenv python-pip
cd webmote
./install

Setup Transceivers:

X10

  • Basics can be found here: http://www.arduino.cc/en/Tutorial/x10
  • Pins in sketch:
    • Zero Crossing - 12
    • Data TX - 13
    • Data RX - 1 (rx isn't actually used at the moment)
  • Download the X10 library and put it in the arduino libraries folder
    • on ubuntu 12.10 - /usr/share/arduino/libraries
    • will probably need to be root to copy to this directory
  • Flash Sketch
    • Open X10_transceiver.pde via arduino (found in webmote/modules/X10/X10_tranceiver)
    • Click 'upload' - circle with right arrow

IR

  • One thing to note is that by default, arduinos are reset when a serial connection is initiated (which webmote does from time to time...) which can cause problems with commands being lost while the arduino is in its reset sequence.
    • You are experiencing this if:
      • When sending a command your tx/rx lights are active (you are talking to the device correctly) AND
      • The console or logfile does not have a message saying "Failed to play" AND
      • When sending a command nothing happens
    • The simplest fix is placing a small capacitor (2.2 uF works for me) between "reset" and "3v3"

Run (development server):

./run

githalytics.com alpha