Raspberry Pi IoT Status¶
On each Pi, get:
- ndnx (just compile locally, doesn't take long)
- libcec (only needed on HDMI-CEC node)
- NDN-PI-HDMI-CEC-1: 18.104.22.168 (WAN), 192.168.1.1 (LAN)
- NDN-PI-OCCUPANCY-1: 192.168.1.2 (LAN)
- NDN-PI-OCCUPANCY-2: 192.168.1.3 (LAN)
In order to ssh into gateway pi (HDMI-CEC), must be on CS dept network. ssh into CS dept server first or be physically there.
Run the following in order.
Window 1 (Occupancy Node 1)
ssh firstname.lastname@example.org ssh 192.168.1.2 nfd-start nfdc register /home 2 sudo python app/occupancy_node_1.py
Window 2 (Occupancy Node 2)
ssh email@example.com ssh 192.168.1.3 nfd-start nfdc register /home 2 sudo python app/occupancy_node_1.py
Window 3 (HDMI-CEC Node)
ssh firstname.lastname@example.org nfd-start nfdc register /home 3 python app/hdmi_cec_node.py
Window 4 (Consumer Node, physically, same node as HDMI-CEC Node)
ssh email@example.com # don't start nfd here since already started python app/consumer.py
Ask Jeff for prioritization
Fix CEC wrapper¶
CEC TV bindings are currently very inefficient. It uses Pulse Eight's libcec's cec-client. It's also in single command mode, where it does a bunch of setup before sending the command. If there were just 1 cec-client subprocess running in a separate thread, then each command could be sent almost instantaneous. See app/cec_tv.py
Enable ethernet faces in NFD¶
NFD supports ethernet faces and we want to move away from IP dependency. Enable ethernet faces in NFD, cross-compile, and install on pi. Change nfdc register /home 2|3 command to use ethernet face. You might want to back up the current working NFD on the pi (in /usr/local) in case anything goes wrong in the cross-compile/install.
Web interface gateway¶
Use ndn-js and Node-JS. Display sensor data in an organized fashion and expose control of networked devices remotely. Connect gateway to ndn testbed listen for names /ndn//home/... and translate /home/...
Leverage NDN-RTC code to capture and publish video as data. Consume this with the HDMI-CEC node and display on the TV.
Integrate bootstrapping into application¶
app/bootstrap.py and app/gateway.py have pseudocode that can be combined with Wentao's key distribution ideas