node-mozilla-iot-gateway: add README.md 7483/head
authorMarko Ratkaj <marko.ratkaj@sartura.hr>
Tue, 20 Nov 2018 13:23:03 +0000 (14:23 +0100)
committerMarko Ratkaj <marko.ratkaj@sartura.hr>
Tue, 20 Nov 2018 13:24:36 +0000 (14:24 +0100)
Signed-off-by: Marko Ratkaj <marko.ratkaj@sartura.hr>
lang/node-mozilla-iot-gateway/README.md [new file with mode: 0644]

diff --git a/lang/node-mozilla-iot-gateway/README.md b/lang/node-mozilla-iot-gateway/README.md
new file mode 100644 (file)
index 0000000..b1d1afd
--- /dev/null
@@ -0,0 +1,150 @@
+# Things Gateway by Mozilla
+
+Build Your Own Web of Things Gateway. The "Web of Things" (WoT) is the idea of
+taking the lessons learned from the World Wide Web and applying them to IoT.
+It's about creating a decentralized Internet of Things by giving Things URLs on
+the web to make them linkable and discoverable, and defining a standard data
+model and APIs to make them interoperable.
+
+### Getting Started
+
+These instructions will get you a copy of OpenWrt's build system on your local
+machine for development and testing purposes. To check the prerequisites for
+your system check out this
+[link](https://openwrt.org/docs/guide-developer/build-system/install-buildsystem).
+
+```
+git clone https://github.com/openwrt/openwrt
+cd openwrt
+```
+
+### Configure the build system
+
+We need to configure the build system and select the Things Gateway package.
+This process is no different from selecting other OpenWrt packages. For this
+example we will be using build configuration for Raspberry Pi 2/3.
+
+Update feeds and open menuconfig interface:
+
+```
+make package/symlinks
+make menuconfig
+```
+
+Select your target:
+
+```
+Target System (Broadcom BCM27xx)  --->
+Subtarget (BCM2709/BCM2710 32 bit based boards)  --->
+Target Profile (Raspberry Pi 2B/3B/3B+/3CM)  --->
+```
+
+Things Gateway package is a bit beefy. In order to fit the image, extend the
+filesystem size from 256 to 1024 MB:
+
+```
+Target Images  --->
+       (1024) Root filesystem partition size (in MB)
+```
+
+Select Things Gateway package:
+
+```
+Languages  --->
+       Node.js  --->
+               <*> node-mozilla-iot-gateway
+```
+
+Save and exit.
+
+
+### Building the image
+
+Run the build process and substitute <N> with the number of your CPU cores:
+
+```
+make -j<N>
+```
+
+
+### Flashing on the SD card
+
+Process of flashing the image will depend on which device you have.
+Instructions below are for Raspberry Pi 2/3. For other devices consult OpenWrt
+wiki pages. Be careful to replace the X in the third command with the drive
+letter of your SD card.
+
+```
+cd bin/targets/brcm2708/bcm2709
+gunzip openwrt-brcm2708-bcm2709-rpi-2-ext4-factory.img.gz
+sudo dd if=openwrt-brcm2708-bcm2709-rpi-2-ext4-factory.img  of=/dev/sdX conv=fsync
+```
+
+## Running Things Gateway from USB flash drive
+
+In case the device doesn't have enough internal storage space, it is possible
+to run Things Gateway of a USB flash drive. This requires USB flash drive with
+ext4 filesystem plugged in the device.
+
+### Configuration
+
+Do all steps from "Configure the build system" above, and after that change
+node-mozilla-iot-gateway selection from "\*" to "M". This will build the
+package and all of it's dependencies but it will not install Things Gateway.
+
+```
+Languages  --->
+       Node.js  --->
+               <M> node-mozilla-iot-gateway
+```
+
+### Prepare the device
+
+We need to auto mount the USB flash drive in order for the gateway to start at
+boot. To do so, open a console on your embedded device and create a /etc/fstab
+file with the following contents. This assumes your USB flash drive is
+/dev/sda1:
+
+```
+/dev/sda1      /opt    ext4    rw,relatime,data=ordered        0 1
+/opt/root      /root   none    defaults,bind                   0 0
+```
+
+Add "mount -a" to the end of the "boot" function in /etc/init.d/boot
+
+```
+boot() {
+       .
+       .
+       .
+       /bin/config_generate
+       uci_apply_defaults
+
+       # temporary hack until configd exists
+       /sbin/reload_config
+
+       # Added by us
+       mount -a
+}
+```
+
+### Install Things Gateway package
+
+After successfully mounting the USB drive, transfer the .ipk file from your
+local machine to the device and install it. Note that your package version
+might defer. Also note that location of .ipk file depends on the selected
+target, but it will be within ./bin/packages directory. We need to use
+"--force-space" or else opkg might complain about insufficient space.
+
+On your local machine:
+```
+cd bin/packages/arm_cortex-a9_vfpv3/packages/
+scp node-mozilla-iot-gateway_0.6.0-1_arm_cortex-a9_vfpv3.ipk root@192.168.1.1:/tmp
+```
+
+On the device:
+```
+opkg --force-space install /tmp/node-mozilla-iot-gateway_0.6.0-1_arm_cortex-a9_vfpv3.ipk
+```
+
+Things Gateway should now start at every boot.