glennji.com

Because breaking things is much more fun

Wiki

It's not a wiki! It's just some random interlinked pages!

Homebrew always-on server

Required: A small, low-current-draw server to act as file-storage, database, version control, asterisk controller, security-system ...

== Hardware ==

For me, the hardware requirements are that the server be small enough to fit on my bookshelf, and low-powered so I can leave it on all the time. This points to: a mini-ITX motherboard and case, as the nano ones are still too expensive, and; an AMD Sempron CPU, as it has the lowest power requirements.

Add to this some RAM (1GB should be enough for now) and hard-drives such as the 500GB from Samsung - reputably quiet and cool, and often used in media centres. So something like the Biostar IDEQ AMD Sempron 3300+, with capacity for 2 SATA drives and up to 2GB PC3200 RAM, looks ideal!

== Software ==
For the operating system, I've chosen Ubuntu 7.10 Server, a [[Linux]] distribution. You could just as easily use Debian or another Linux distro, or OS X Server. The good thing about Ubuntu and Debian is the APT installation system - installing many of the software packages listed below is as easy as typing "sudo apt-get install {package}" on the command line.

There's no point having an always-on server if it's not doing anything. Before anything else, install:
* [[Webmin]] Administration - A nice [[web-based GUI]] for administration of the server.

Some other ideas are:
* [[Amanda]] backup.
* [[Asterisk]] VOIP Server.
* [[Azureus]] Bittorrent Downloader - A [[Java]] app, but can be run "headless".
* [[BIND]] DNS server - resolve local names (because the ADSL router can't).
* [[Cfengine]] configuration engine.
* [[FreeSwan]] VPN.
* [[Icecast]] Streaming Server - MP3 streaming audio which can work with MPD.
* [[Mediatomb]] UPnP - With 1TB of file storage, this will be an ideal repository for video, and [[UPnP]] is a standard protocol for streaming video and audio content.
* [[MPD]] Music Player Daemon - remote control music playback.
* [[MySQL]] Database - many other services need or benefit from a "real" database (as opposed to the file-based SQLite), and it may be useful for making your own data-centric apps.
* [[Nagios]] system monitoring
* [[Samba]] Windows File Sharing - if you have Windows clients.
* [[Subversion]] Version Control - always handy for developers.
* [[Shorewall]] network firewall.
* [[Zoneminder]] Security System.

Hardware

== HA-systems ==
* [[X10]]
* [[Insteon]]
* [[UPB]]
* [[Zigbee]]
* [[Z-Wave]]

== Media ==
* Microsoft [[XBox]] (and [[XBMC]])
* [[Squeezebox]]
* [[AppleTV]]
* Nintendo [[Wii]]
* [[Homebrew Wireless Music Player]]

== Other ==
* [[Digital Photo Frames]]
* [[homebrew-always-server|Homebrew always-on server]]
* [[HomeLink]] - remote garage opener
* [[LCD]] - "liquid crystal display"
* [[NabazTag]] - robotic bunny
* [[Roomba]] - robotic floor cleaner
* [[Scooba]] - robotic floor mopper
* [[Stompbox]] - mobile [[WiFi]]-[[EVDO]] gateway
* [[TuxDroid]] - robotic penguin

== Power ==
* [[Smart Power Strip]]

== Remote-control ==
* [[WiFi]]
* [[Bluetooth]]
* [[IR]] (infra-red remote controls)
* [[RF]] (radio-frequency remote controls)
* [[Web-based GUI]]

== Sensors ==
* [[Sensor interface]]
* [[Temperature Sensor]]
* [[Electronics Sensor]]
* [[Touch Sensor]]
* [[Motion Detector]]

== Servers ==
* [[NSLU2]] - network storage device
* [[Buffalo Linkstation]] - network storage device

== User interface devices ==
* [[3Com Audrey]]
* [[Chumby]]
* [[Games console]]s
* Microsoft [[XBox]]
* [[Nokia 770]] and [[Nokia N800]]
* [[PocketPC]] handheld
* [[Palm]] handheld
* Nintendo [[Wii]]
* [[X10 Wall Switch]]

Software

== Control Software and User Interfaces ==
* [http://perceptiveautomation.com Perceptive Automation] [[Indigo]]
* [[Instant Messaging]]
* [[MisterHouse]]
* [[Voice recognition]] and [[text to speech]]
* [[VOIP]]
* [[Web-based GUI]]s
* [[xPL]]
* [[XTension]]

== Additional Software ==

* [[Dashboard]] widgets ([[Mac OS X]])
* [[DBUS]] and [[HAL]]
* [[Gadgets]] ([[Microsoft Windows]])
* [[Java]] (standard and micro editions)
* [[Nagios]] service monitor
* [[Ovolab Phlink]]
* [[Salling Clicker]]
* [[Screenlets]] ([[Linux]])
* [[Unison]] file synchronisation
* [[Webmin]] administration
* [[ZoneMinder]] surveillance

== Media Software ==
* [[Elisa]], the Ubuntu Media Center
* [http://freevo.sourceforge.net/ Freevo]
* [[Icecast]] media streaming server
* [[iTunes]]
* [[LinuxMCE]] for Kubuntu
* [[mpd]] (music player daemon) and [[Pitchfork]]
* [[MythTV]]
* [[PulseAudio]] (audio subsystem)
* [[Rhythmbox]] media player
* [[SlimServer]]
* [[WinAmp]] and [[Songbird]]
* [[Windows Media Center]]

== Operating Systems ==
* [[Mac OS X]]
* [[Linux]]
* [[Microsoft Windows]]

Unison

http://www.cis.upenn.edu/~bcpierce/unison/ Unison File Synchronizer is a tool for synchronizing files and directories on [[Microsoft Windows|Windows]], [[Mac OS X]] and [[Linux]]. Unison works on both local and remote (SSH) filesystems, and handles "merges" in both directions (i.e. files can be updated on both the local and remote filesystem, and Unison will ensure that after synch both filesystems contain only the latest versions). It also handles deletes.

Unison also runs on the [[Nokia 770]] (and probably the [[Nokia N800]]).

[[Category:Linux]]
[[Category:Mac OS X]]
[[Category:Microsoft Windows]]

Stompbox

Take a hackable wifi router and add an EVDO card and you have a http://www.stompboxnetworks.com/ Stompbox - a mobile wifi hotspot to carry in your car or backpack.

TuxDroid

http://www.tuxisalive.com Tuxdroid by http://www.kysoh.com KYSOH is a remote-controlled robotic penguin that resembles 'Tux', the [[Linux]] mascot. A transceiver connects to your PC via USB and allows wireless ([[RF]]) communications with Tuxdroid, allowing you to script actions and responses in [[Python]].

Tuxdroid can, for example:
* announce news, emails and/or status of home-automation devices
* recognise when you turn the lights on in the room
* flap his wings when the home-automation system detects someone approaching outside
* act as a VOIP microphone and loudspeaker
* ... and so on

Evolution new mail notification

    #!/usr/bin/env python
    import dbus
    import dbus.glib
    import gobject

    bus = dbus.SessionBus()
    bus.get_object("org.freedesktop.DBus","/org/freedesktop/DBus")
    notify_service = bus.get_object('org.freedesktop.Notifications', '/org/freedesktop/Notifications')
    notify_interface = dbus.Interface(notify_service, 'org.freedesktop.Notifications')

    def newmail_handler(msg, msg2):
        notify_interface.Notify("evo-notify", 0, '', "New Email", msg, [], {}, -1)
    
    bus.add_signal_receiver(newmail_handler, dbus_interface = "org.gnome.evolution.mail.dbus.Signal", signal_name = "Newmail")
    
    loop = gobject.MainLoop()
    loop.run()

Python

[[Image:Python-logo.jpg|right]]Python is a flexible programming language which can run as an interpreted script or precompiled for speed. It is dynamically-typed and automatically memory-managed. Python is used largely on [[Linux]], although it is available on other operating systems too, and integration with various subsystems and libraries makes it ideal for some home automation tasks.

== Example scripts ==
* [[Evolution-new-mail-notification]]
* [[XBMC]] can run Python scripts
* A [http://rory.netsoc.ucd.ie/linux/notify-more/ command line client] to libnotify
* [[Controlling-Rhythmbox-with-Python]]

== Libraries and APIs ==
* [http://xmpppy.sourceforge.net/ xmpppy] - [[Jabber]]

* gps.py and geo.py - [[gpsd]] and geocoding

* mpdclient - [[mpd]]

* xPL toolkit for Python

* [http://lightblue.sourceforge.net/ Lightblue] API - [[Bluetooth]]

* [http://opensource.nokia.com/projects/pythonfors60/ Python for Nokia Series 60] mobile phones

* (Controlling Ekiga - VOIP softphone)

* (Controlling Pidgin - IM client)

* (Controlling VLC - Video player)

Nokia 770

[[Image:Nokia_770.jpg|right]]The [http://www.nokiausa.com/770 Nokia 770] (and the latest incarnation, the [[Nokia N800]]) are "internet tablets": small, portable devices specifically for accessing the Internet, including web-browsing, email, instant messaging and [[VOIP]]. The Nokia 770 has a large touchscreen, a small directional keypad and some other function buttons. It can connect to the Internet via [[Wifi]] (IEEE802.11b/g) or [[Bluetooth]] (i.e. connecting through your phone to use dial-up or a data plan).

The 770 is based on [[Linux]] and a [[Gnome]]-derivative user interface called "[[Maemo]]". As both Maemo and Linux are open source, there is an active developer and hacker community writing different applications and software for all sorts of things -- e-book readers, intrusion (detection) tools, integrated media browsers and players, automotive telemetry, GPS and even aeronautical displays for experimental aeroplane designs.

For home automation, the 770 supports application programming in a number of languages, including [[Python]]. Also, the default browser (a version of Opera) can do [[AJAX]], which opens the way for dynamic web-based interfaces.

== Resources ==
* [http://maemo.org/maemowiki/ApplicationCatalog Application Catalog]

=== Developer ===
* [http://maemo.org Maemo] - Programming environment
* [http://maemo.org/maemowiki/HowTo Nokia 770 HowTo]

== Tips ==
* [http://wiki.slimdevices.com/index.cgi?SlimserverAndNokia770 SlimServer Wiki on Nokia 770]
* [http://benklaas.com/slimserver/ Controlling SlimServer with the Nokia 770] ([[SlimServer]], [[Squeezebox]])

I just watched Rise of the Silver Surfer. That's a Nokia 770 that Reed Richards is obsessed with! I hadn't thought of hooking the tablet into a world-wide satellite network, I must admit ...
--[[User:GlennjiAtWork|glennji]] 03:58, 4 October 2007 (PDT)

Wifi

"Wifi" refers to a family of wireless ([[RF]]) networking protocols under the IEEE standard 802.11a/b/g. Wifi is common in home networking, and also the various locations that offer a "wifi hotspot".

The name is a play on the word "hi-fi", a contraction of "high fidelity" which refers to the quality of sound produced by audio equipment.

== Security ==

There are a couple of different security schemes for wifi, largely due to the evolutionary nature of the technology (i.e. new standards replacing old). Most wifi access-points will support one or more of the following:

* Open - no encryption scheme. An open access point can be used by anyone, and any traffic through it should be considered unsafe i.e. don't do anything which requires a password through an open access point, even if it's one you control!

* WEP - wired-equivalent protection. WEP was introduced with 802.11b, an early wifi standard. It has since been proven to be fairly easy to crack, and probably shouldn't be used.

* WPA/WPA2 - "wifi protected access" - A secure encryption scheme designed to replace WEP. WPA can be run with an authentication server or using preshared keys (PSK), and can use different encryption algorithms including AES.

Some people think that locking down an access point based on MAC address is also secure, but with the right software it is trivial to change your apparent MAC address to look however you like. MAC address limiting is less secure than (the already extremely insecure) WEP.