Project

General

Profile

Users Guide » History » Version 23

Hammel, 20 Sep 2019 16:29

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 17 Hammel
_*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.
14 1 Hammel
15
|!http://redmine.graphics-muse.org/attachments/download/114!|
16
|={font-size:120%;margin-bottom:15px;background-color:#dff}. *Design Intent of the Ironman Project* |
17
|=. Mark I release is in progress.  Mark II and Mark III are future development plans.|
18
19 17 Hammel
_*Ironman*_ consists of the following components.
20 12 Hammel
21
| *Monitor* | The Nest-like control hub based on a Raspberry Pi 2/3 and the official 7" touchscreen display |
22
| *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 |
23
| *Jarvis*  | A Java application that supports voice control of Monitor managed devices |
24
| *Controllers* | Network enabled control of Monitor managed devices |
25
26 1 Hammel
h3. Security
27
28 17 Hammel
_*Ironman*_ supports AES encrypted communication with IoT sensors and Jarvis interfaces.
29 12 Hammel
30
h3. What it is
31
32 17 Hammel
_*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.  
33 12 Hammel
34
h3. What it is not
35
36 17 Hammel
_*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.
37 12 Hammel
38 17 Hammel
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.
39 10 Hammel
40 1 Hammel
h2. The Ironman Monitor
41 3 Hammel
42 17 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.
43 3 Hammel
44
h3. Installation Prerequisites
45 1 Hammel
46 11 Hammel
* A "Raspberry Pi 2 or 3":https://www.adafruit.com/product/3055
47
* The official "Raspberry Pi 7inch touchscreen display":https://www.sparkfun.com/products/13733
48
* The Pi 2/3 requires a "V / 2A power supply":https://www.adafruit.com/product/1994.  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":https://www.adafruit.com/product/2379.
49 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.
50 16 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 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.
51 5 Hammel
52 1 Hammel
<pre>
53 16 Hammel
                      ___
54
   Config/Pair Mode  |---|  Normal Mode
55
                   --------- 
56
                  |         |
57
                   --------- 
58
connector pins -->  |  |  |  
59
                    |  |   ------ Not connected
60
                    |  |
61
                    |  ----330 Ohm R-----
62
                    |  |                |
63
                    |  |  +-----LED------
64
                    |  |  |
65
          RPi pin   7  9  13     
66
         RPi GPIO   4  G  27
67 6 Hammel
</pre>
68 5 Hammel
69
* You will need to have sudo access for your Linux user id.
70 16 Hammel
71 1 Hammel
h3. Generating the SD Card for the Pi
72 3 Hammel
73 1 Hammel
* Download the RPi 2 Development Platform 
74 4 Hammel
** _wget <url>_
75
** Unpack the archive to a directory called *image*.
76 17 Hammel
* Download the _*Ironman*_ Package Collection
77 4 Hammel
** _wget <url>_
78 1 Hammel
** Unpack the archive to a directory called *package*.
79 18 Hammel
* In a terminal window run: _dmesg -w_
80
* Insert the microSD card and note the device name displayed for the newly added card as displayed in the _dmesg -w_ terminal window.  It should be something like /dev/sdb or /dev/sde.
81
* Kill the _dmesg -w_ command with Ctrl-C.
82 4 Hammel
83
From the *image* directory
84 1 Hammel
* Format the SD card
85
** _sudo ./mksd.sh -d <device name>_
86 18 Hammel
** where <device name> is the name you noted from the output of _dmesg -w_.
87 3 Hammel
* Mount the boot partition from the sd card: 
88 4 Hammel
** _sudo mkdir -p /mnt/boot_
89
** _sudo mount <device name>1 /mnt/boot_
90 18 Hammel
** where <device name> is the name you noted from the output of _dmesg -w_.
91 4 Hammel
* Install the Development Platform to the SD card
92
** _sudo ./mkinstall.sh -b /mnt/boot -d <device name>2_ 
93 18 Hammel
** where <device name> is the name you noted from the output of _dmesg -w_.
94 3 Hammel
95 4 Hammel
From the *package* directory
96 3 Hammel
* Mount the root partition from the sd card: 
97 4 Hammel
** _sudo mkdir -p /mnt/root_
98
** _sudo mount <device name>1 /mnt/root_
99 17 Hammel
* Copy the _*Ironman*_ Package Collection files to /root of the root partition on the SD card
100 4 Hammel
** _sudo cp *.opk /mnt/root/root_
101 3 Hammel
102
Make sure all writes to the SD card have completed
103 4 Hammel
* _sync;sync;sync_
104 3 Hammel
105
Unmount the SD card partitions
106 4 Hammel
* _sudo umount /mnt/boot_
107
* _sudo umount /mnt/root_
108 3 Hammel
109 4 Hammel
Remove the SD card from the host system and insert it into the Raspberry Pi 2.
110 1 Hammel
111
h3. First time boot
112
113 22 Hammel
Power on the Monitor and wait for it to complete installation.  During this time the display may be upside down.  
114
115
Once the display shows two xterm windows it is ready to complete installation.  Type the following command to install the _*Ironman*_ package collection.
116
117
  opkg install *.opk
118
119
Wait for this command to complete, then reboot the system either by power it off and back on or by typing the command 
120
121
  reboot
122
123
The Monitor is now fully installed and ready for use.
124
125
h3. First time configuration
126
127
Turn the power off and set the Mode switch to Config/Pair, then power the Monitor back on.  The LED should light indicating the Monitor is ready to be configured.
128
129
Use a smartphone or laptop with wifi to connect to the "ironman" SSID.  The default password is _ironman1_.  Then use a browser to connect to the Ironman web UI at 
130
131
  http://192.168.36.1:1337
132
133
The display should be as shown in the adjacent photo.
134
135 1 Hammel
h3. Network configuration
136
137 9 Hammel
wlan0
138
139
* This interface is used for configuration of the Monitor.
140
* Configured on the 192.168.36.0 subnet.
141
** See /etc/network/dhcpd.conf.aponly
142
143
uap0
144
145
* This interface is used as an access point for IoT devices.
146
* Configured on the 192.168.3.0 subnet.
147
** See /etc/network/dhcpd.conf.uap and dhcpd.conf.uap.tmpl
148
** The template is used to change the base subnet through the web interface.
149
** The SSID is _ironman_.
150
151
<pre>
152
Pair/Config button is GPIO 4 (RPi pin 7)
153
Pair/Config LED is GPIO 7 (RPi pin 13)
154
	LED should only be lit on boot if button is enabled (in Config mode).
155
		In this case, we're in Config Mode to configure the networks.
156 17 Hammel
		The web server (imwww) is on SSID _ironman_ at 192.168.36.1:1337.
157 9 Hammel
	LED is off on boot if button is disabled (in Pair Mode).
158
	If in Pair Mode
159
		Start hostapd for aponly
160
		Start dhcpd for aponly on wlan0
161
		Start imrest web service on port 8165 for IoT devices and Jarvis interfaces.
162
	If in Config Mode
163
		Start wpa_supplicant on wlan0
164
		Create uap0 device as virtual device on wlan0
165
		Start dhcpd on uap0
166
		Start hostapd on uap0
167
		Start imwww for network configuration of the Monitor.
168
169
/etc/ironman/iot		Registration directory for IoT devices
170
/etc/ironman/jarvis		Registration directgory for Jarvis interfaces
171 14 Hammel
172
Apps
173
imcore					Package that updates a PiBox Development Platform for use with Ironman.
174
						Includes network configuration updates and other config files.
175
imwww					Contains two web servers
176
	imwww				Provides network configuration interface for Monitor
177
	imrest				Provides IoT/Jarvis REST API.  Updates /etc/ironman directories with registrations.
178
imgpio					Command line tool for querying GPIO pins using syfs interface.
179
launcher				Ironman specific launcher that adds clock interface to front panel.
180
pisensors				Provides UI for managing sensors.
181
						Uses inotify to watch for changes to /etc/ironman/iot directory.
182
picam   				Generic console camera interface (same as PiBox media systems)
183
appmgr, piboxd, omxplayer, pmsui, psplash, mjpg-streamer
184
						Same packages as in PiBox, unmodified
185 9 Hammel
</pre>
186
187 1 Hammel
h3. Pairing with IoT Sensors
188
189
h3. Pairing with Jarvis
190
191
h2. IoT Sensor
192
193
h3. Sensor Types
194
195
h4. Light Switch
196
197
h3. Flashing the firmware
198
199
h3. Power On
200
201
h3. Pairing with a Monitor
202
203
h2. Jarvis
204
205
h3. Prerequisites
206
207
h3. Pairing with a Monitor
208
209
h3. Supported Commands
210 15 Hammel
211
h2. Addendums
212
213
h3. Source Code Repositories
214
215
* PiBox
216
** Development Platform
217
** appmgr
218
** mjpg-streamer
219
** omxplayer
220
** piboxd
221
** picam
222
** pmsui
223
** psplash
224
* Ironman
225
** launcher
226
** monitor
227
** pisensor
228
** www
229
* Arduino
230
** Sensor Template (imlightsw)
231
232
h3. Fritzing Models
233
234
* ESP-01 Flasher
235
* Light Switch
236
** Keyes_SRly
237
** Hilink
238
* Monitor Switch