Project

General

Profile

Actions

Users Guide » History » Revision 16

« Previous | Revision 16/67 (diff) | Next »
Hammel, 20 Sep 2019 15:07


Ironman Users Guide

This document is under development and is likely not accurate at this time.

In this document the term host system refers to a Linux desktop or laptop that will be used to download and install software
onto an SD card.

Overview

Ironman is a home automation project based on the PiBox build system. It supports a Nest-like monitor for controlling Arduino based sensors, cameras and remote voice control.

Design Intent of the Ironman Project
Mark I release is in progress. Mark II and Mark III are future development plans.

Ironman consists of the following components.

Monitor The Nest-like control hub based on a Raspberry Pi 2/3 and the official 7" touchscreen display
Sensors Arduino based devices, such as door alarms and cameras, running code based on a sensor and camera templates for pairing and secure communication with the Monitor
Jarvis A Java application that supports voice control of Monitor managed devices
Controllers Network enabled control of Monitor managed devices

Security

Ironman supports AES encrypted communication with IoT sensors and Jarvis interfaces.

What it is

Ironman is a do-it-yourself system, where you buy the parts and assemble them as described, modifying the provided code to suit your needs and handling flashing and maintenence. Ironman is designed to allow you to build your own home automation system where you specify the devices you want to control and how you want to control them.

What it is not

Ironman is not a product. It is not intended for anyone other than Makers (aka DIY'ers) who like to tinker and see not just how to assemble things but why they actually work.

While the Users Guide is intended to bring up a currently working version of Ironman with limited sensor and camera support, if you aren't prepared to deal with writing code or flashing devices and dealing with electrical circuits then Ironman is not for you.

The Ironman Monitor

The Ironman Monitor runs on a Raspberry Pi 2 or 3 and provides a central hub for management of home automation devices. It uses a 7" touch screen display and a mechanical switch to manage pairing with IoT devices and Jarvis interfaces.

Installation Prerequisites

  • A Raspberry Pi 2 or 3
  • The official Raspberry Pi 7inch touchscreen display
  • The Pi 2/3 requires a V / 2A power supply. For best results, use a power supply rated to at least 5.25V to avoid under voltage conditions. For ease of use the power supply cable should include an on/off switch.
  • The Pi 2/3 requires a microSD card that is at least 4GB. A mechanism for using the SD card on your host system is needed, such as an SD card USB adapter or an SD port on your laptop.
  • A mechanical switch, such as a SPDT, should be connected to the Pi GPIOs to allow for pairing the Monitor with IoT Sensors and Jarvis interfaces. The ASCII diagram below describes the setup. The LED is off in normal mode, lit in Config Mode, and off in Pair Mode until something tries to pair with the Pi which then turns on the LED for 3 seconds. Config and Pair mode operations ared discussed in later sections.
                      ___
   Config/Pair Mode  |---|  Normal Mode
                   --------- 
                  |         |
                   --------- 
connector pins -->  |  |  |  
                    |  |   ------ Not connected
                    |  |
                    |  ----330 Ohm R-----
                    |  |                |
                    |  |  +-----LED------
                    |  |  |
          RPi pin   7  9  13     
         RPi GPIO   4  G  27
  • You will need to have sudo access for your Linux user id.

Generating the SD Card for the Pi

  • Download the RPi 2 Development Platform
    • wget <url>
    • Unpack the archive to a directory called image.
  • Download the Ironman Package Collection
    • wget <url>
    • Unpack the archive to a directory called package.

In a terminal window run: dmesg -w
Insert the microSD card and look for the device name for the newly added card. It should be something like /dev/sdb or /dev/sde.
Kill the dmesg -w command with Ctrl-C.

From the image directory
  • Format the SD card
    • sudo ./mksd.sh -d <device name>
    • where <device name> is the name you noted from the output of dmesg -w.
  • Mount the boot partition from the sd card:
    • sudo mkdir -p /mnt/boot
    • sudo mount <device name>1 /mnt/boot
    • where <device name> is the name you noted from the output of dmesg -w.
  • Install the Development Platform to the SD card
    • sudo ./mkinstall.sh -b /mnt/boot -d <device name>2
    • where <device name> is the name you noted from the output of dmesg -w.
From the package directory
  • Mount the root partition from the sd card:
    • sudo mkdir -p /mnt/root
    • sudo mount <device name>1 /mnt/root
  • Copy the Ironman Package Collection files to /root of the root partition on the SD card
    • sudo cp *.opk /mnt/root/root
Make sure all writes to the SD card have completed
  • sync;sync;sync
Unmount the SD card partitions
  • sudo umount /mnt/boot
  • sudo umount /mnt/root

Remove the SD card from the host system and insert it into the Raspberry Pi 2.

First time boot

Network configuration

wlan0

  • This interface is used for configuration of the Monitor.
  • Configured on the 192.168.36.0 subnet.
    • See /etc/network/dhcpd.conf.aponly

uap0

  • This interface is used as an access point for IoT devices.
  • Configured on the 192.168.3.0 subnet.
    • See /etc/network/dhcpd.conf.uap and dhcpd.conf.uap.tmpl
    • The template is used to change the base subnet through the web interface.
    • The SSID is ironman.
Pair/Config button is GPIO 4 (RPi pin 7)
Pair/Config LED is GPIO 7 (RPi pin 13)
    LED should only be lit on boot if button is enabled (in Config mode).
        In this case, we're in Config Mode to configure the networks.
        The web server (imwww) is on SSID "ironman" at 192.168.36.1:1337.
    LED is off on boot if button is disabled (in Pair Mode).
    If in Pair Mode
        Start hostapd for aponly
        Start dhcpd for aponly on wlan0
        Start imrest web service on port 8165 for IoT devices and Jarvis interfaces.
    If in Config Mode
        Start wpa_supplicant on wlan0
        Create uap0 device as virtual device on wlan0
        Start dhcpd on uap0
        Start hostapd on uap0
        Start imwww for network configuration of the Monitor.

/etc/ironman/iot        Registration directory for IoT devices
/etc/ironman/jarvis        Registration directgory for Jarvis interfaces

Apps
imcore                    Package that updates a PiBox Development Platform for use with Ironman.
                        Includes network configuration updates and other config files.
imwww                    Contains two web servers
    imwww                Provides network configuration interface for Monitor
    imrest                Provides IoT/Jarvis REST API.  Updates /etc/ironman directories with registrations.
imgpio                    Command line tool for querying GPIO pins using syfs interface.
launcher                Ironman specific launcher that adds clock interface to front panel.
pisensors                Provides UI for managing sensors.
                        Uses inotify to watch for changes to /etc/ironman/iot directory.
picam                   Generic console camera interface (same as PiBox media systems)
appmgr, piboxd, omxplayer, pmsui, psplash, mjpg-streamer
                        Same packages as in PiBox, unmodified

Pairing with IoT Sensors

Pairing with Jarvis

IoT Sensor

Sensor Types

Light Switch

Flashing the firmware

Power On

Pairing with a Monitor

Jarvis

Prerequisites

Pairing with a Monitor

Supported Commands

Addendums

Source Code Repositories

  • PiBox
    • Development Platform
    • appmgr
    • mjpg-streamer
    • omxplayer
    • piboxd
    • picam
    • pmsui
    • psplash
  • Ironman
    • launcher
    • monitor
    • pisensor
    • www
  • Arduino
    • Sensor Template (imlightsw)

Fritzing Models

  • ESP-01 Flasher
  • Light Switch
    • Keyes_SRly
    • Hilink
  • Monitor Switch

Updated by Hammel about 5 years ago · 16 revisions