This example code illustrates how higher-level protocols can be tunneled over Mist. The example consists of two parts
- switch, which simulates an on/off switch, and that also has an endpoint for receiving tunneled protocol data unit
- omiNode, which simulates a peer capable of sending and receiving protocol data units from the switch
If you are running on Linux x64 everything should work out of the box according to the instructions below. For OSX see section OSX workaround. Windows is not supported yet.
Download and install node.js v6.x: https://nodejs.org/dist/latest-v6.x/. You may use Node Version Manager nvm (https://github.com/creationix/nvm).
You will need to have an appropriate wish-core (the peer-to-peer identity based communication layer mist is based on). Binaries are available from https://mist.controlthings.fi/dist.
Download and run a wish-core:
wget http://mist.controlthings.fi/dist/wish-core-v0.8.0-beta-2-x64-linux
chmod u+x wish-core-v0.8.0-beta-2-x64-linux
./wish-core-v0.8.0-beta-2-x64-linuxInstall command line tools for Mist and Wish:
npm install -g mist-cli@latest wish-cli@latestCreate an identity.
wish-cli
identity.create('Demo Identity')In the examples root directory run:
npm installA simplistic switch implementation.
node switch/run.jsA parking service.
node parking/run.js# run the command line tool
mist-cli
# shows help
help()
# shows list of peers available
list()
# show model
mist.control.model(peers[x])
# write to relay endpoint of switch
mist.control.write(peers[x], 'relay', true)There is currently a problem with running on OSX, but it can be worked around as follows.
Run this one-liner in the terminal, or download it to see what it does.
curl -s https://mist.controlthings.fi/dist/osx-gcc48-runtime.sh | sudo /bin/bash -sInstall brew:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"Install gcc:
brew install gcc48 --enable-cxxNow you should have everything you need.