Project

General

Profile

Users Guide » History » Version 10

Hammel, 20 Sep 2019 09:59

1 10 Hammel
h1. Ironman Users Guide
2 1 Hammel
3 7 Hammel
table{border-collapse;width:100%}.
4 8 Hammel
|={font-size:140%;margin-bottom:15px;background-color:#fdd}. This document is under development and is likely not accurate at this time. |
5 7 Hammel
6 2 Hammel
{{>toc}}
7
8 3 Hammel
In this document the term _host system_ refers to a Linux desktop or laptop that will be used to download and install software
9
onto an SD card.
10 1 Hammel
11 10 Hammel
h2. Overview
12
13
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.  Ironman consists of the following components.
14
15
| *Monitor* | The Nest-like control hub based on a Raspberry Pi 2/3 and the official 7" touchscreen display |
16
| *Sensors* | Arduino based devices running code based on a sensor template for pairing and secure communication with the Monitor |
17
| *Jarvis*  | A Java application that supports voice control of Monitor managed devices |
18
19
|!http://redmine.graphics-muse.org/attachments/download/114!|
20
|={font-size:120%;margin-bottom:15px;background-color:#dff}. *Design Intent of the Ironman Project* |
21
|=. Mark I release is in progress.  Mark II and Mark III are future development plans.|
22
23
h3. Security
24
25
Ironman supports AES encrypted communication with IoT sensors and Jarvis interfaces.
26
27 1 Hammel
h2. The Ironman Monitor
28 3 Hammel
29 10 Hammel
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.
30 3 Hammel
31
h3. Installation Prerequisites
32 1 Hammel
33 4 Hammel
* The Pi 2/3 requires a 5V / 2A power supply.  For best results, use a power supply rated to at least 5.25V to avoid under voltage conditions.
34 3 Hammel
* 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.
35 10 Hammel
* A mechanical switch, such as a "SPDT":https://www.electronicshub.org/switches/#Single_Pole_Double_Throw_Switch_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 lit in normal mode and off in Pair Mode until something tries to pair with the Pi.
36 5 Hammel
37
<pre>
38
                    ___
39
           Normal  |---|  Pair Mode
40
                 --------- 
41
                |         |
42
                 --------- 
43
        pins -->  |  |  |  
44
45
       RPi GPIO   4  G  27
46 6 Hammel
        RPi pin   7  9  13     
47
                     |  |
48
                     |  +---LED---+
49
                     |            |
50
                     +---330 R----+
51 5 Hammel
</pre>
52
53
* You will need to have sudo access for your Linux user id.
54 6 Hammel
55 3 Hammel
56 1 Hammel
h3. Generating the SD Card for the Pi
57 3 Hammel
58 1 Hammel
* Download the RPi 2 Development Platform 
59 4 Hammel
** _wget <url>_
60
** Unpack the archive to a directory called *image*.
61 1 Hammel
* Download the Ironman Package Collection
62 4 Hammel
** _wget <url>_
63
** Unpack the archive to a directory called *package*.
64 3 Hammel
65 4 Hammel
In a terminal window run: _dmesg -w_
66 1 Hammel
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.
67 4 Hammel
Kill the _dmesg -w_ command with Ctrl-C.
68 3 Hammel
69 4 Hammel
From the *image* directory
70 1 Hammel
* Format the SD card
71 4 Hammel
** _sudo ./mksd.sh -d <device name>_
72 3 Hammel
** where <device name> is the name you noted from the output of dmesg -w.
73 1 Hammel
* Mount the boot partition from the sd card: 
74 4 Hammel
** _sudo mkdir -p /mnt/boot_
75
** _sudo mount <device name>1 /mnt/boot_
76 1 Hammel
** where <device name> is the name you noted from the output of dmesg -w.
77 4 Hammel
* Install the Development Platform to the SD card
78
** _sudo ./mkinstall.sh -b /mnt/boot -d <device name>2_ 
79 3 Hammel
** where <device name> is the name you noted from the output of dmesg -w.
80
81 4 Hammel
From the *package* directory
82 3 Hammel
* Mount the root partition from the sd card: 
83 4 Hammel
** _sudo mkdir -p /mnt/root_
84
** _sudo mount <device name>1 /mnt/root_
85 3 Hammel
* Copy the Ironman Package Collection files to /root of the root partition on the SD card
86 4 Hammel
** _sudo cp *.opk /mnt/root/root_
87 3 Hammel
88
Make sure all writes to the SD card have completed
89 4 Hammel
* _sync;sync;sync_
90 3 Hammel
91
Unmount the SD card partitions
92 4 Hammel
* _sudo umount /mnt/boot_
93
* _sudo umount /mnt/root_
94 3 Hammel
95 4 Hammel
Remove the SD card from the host system and insert it into the Raspberry Pi 2.
96 1 Hammel
97
h3. First time boot
98
99
h3. Network configuration
100
101 9 Hammel
wlan0
102
103
* This interface is used for configuration of the Monitor.
104
* Configured on the 192.168.36.0 subnet.
105
** See /etc/network/dhcpd.conf.aponly
106
107
uap0
108
109
* This interface is used as an access point for IoT devices.
110
* Configured on the 192.168.3.0 subnet.
111
** See /etc/network/dhcpd.conf.uap and dhcpd.conf.uap.tmpl
112
** The template is used to change the base subnet through the web interface.
113
** The SSID is _ironman_.
114
115
<pre>
116
Pair/Config button is GPIO 4 (RPi pin 7)
117
Pair/Config LED is GPIO 7 (RPi pin 13)
118
	LED should only be lit on boot if button is enabled (in Config mode).
119
		In this case, we're in Config Mode to configure the networks.
120
		The web server (imwww) is on SSID "ironman" at 192.168.36.1:1337.
121
	LED is off on boot if button is disabled (in Pair Mode).
122
	If in Pair Mode
123
		Start hostapd for aponly
124
		Start dhcpd for aponly on wlan0
125
		Start imrest web service on port 8165 for IoT devices and Jarvis interfaces.
126
	If in Config Mode
127
		Start wpa_supplicant on wlan0
128
		Create uap0 device as virtual device on wlan0
129
		Start dhcpd on uap0
130
		Start hostapd on uap0
131
		Start imwww for network configuration of the Monitor.
132
133
/etc/ironman/iot		Registration directory for IoT devices
134
/etc/ironman/jarvis		Registration directgory for Jarvis interfaces
135
</pre>
136
137
138 1 Hammel
h3. Pairing with IoT Sensors
139
140
h3. Pairing with Jarvis
141
142
h2. IoT Sensor
143
144
h3. Sensor Types
145
146
h4. Light Switch
147
148
h3. Flashing the firmware
149
150
h3. Power On
151
152
h3. Pairing with a Monitor
153
154
h2. Jarvis
155
156
h3. Prerequisites
157
158
h3. Pairing with a Monitor
159
160
h3. Supported Commands