Tutorial: How to build a multi-sensor device using a RaspberryPI and Phidgets

Tutorial: How to build a multi-sensor device using a RaspberryPI and Phidgets
Everything wired up

In this tutorial, we will turn a RaspberryPI into a multi-sensor device that connects to Velisphere allowing to track and analyze sensor data. In a later tutorial, we will expand on this setup by adding a relay than can be controlled via Velisphere rules. But let’s concentrate on building the sensor device first.

By the way, I will soon add a few screen shots to make things more intuitive for you!

Find the complete code here: https://github.com/thomeudt/VelisphereClientSDK/tree/master/DemoRaspberryPiSensor

What you need

Skills

You should be reasonably familiar with the JAVA programming language and the Eclipse IDE.

You will find this tutorial easier to follow if you have already managed to get a Raspberry Pi setup, including installing a Linux operating system on the SD card. Some basic Linux skills are helpful, too.

Hardware

1x Raspberry Pi, while either version 1 or version 2 should work, we have tested this tutorial with version 2 only

The RaspberryPi needs to have internet connectivity, either via Ethernet (just plug in the cable) or WiFi (WiFi dongle required).

1x Phidgets Interface Kit 8/8/8
1x Phidgets Precision Light Sensor
1x Phidgets Touch Sensor
1x Phidgets Force Sensor
1x Phidgets Rotation Sensor 360°
1x Powered USB 2.0 hub (sufficient to provide power for both the Raspberry Pi
and the Interface Kit. The USB ports on the Raspberry Pi do not provide
sufficient power for the interface kit!

3x USB cables, one each connecting the Raspberry PI and the interface kit with the USB hub for power supply, and one connecting the interface kit with the Raspberry Pi for connectivity.

Please refer to the manuals provided for the Raspberry Pi, your USB hub, and the interface kit to determine which type of USB cable will be required.

RaspberryPI wired up

Everything wired up

Closeup of the interface kit with 4 sensors connected

Closeup of the interface kit with 4 sensors connected

Software

On your Developer Machine (PC, Mac, etc.):

Eclipse Standard IDE for you to build the JAVA client application that will then be deployed to the Raspberry Pi. The tutorial has been written for Eclipse “Luna” (Version 4.4), but other recent releases such as Mars or Kepler will also work. There might be slight differences to the UI though, therefore the tutorial might not be 100% accurate for these releases.

Eclipse requires a supported Java Runtime Environment (JRE). Please refer to the Eclipse documentation for further details.

On the Raspberry Pi

Your Raspberry Pi should be running a Linux distribution. I am using Arch Linux ARM as it currently is the only distribution that I managed to get Docker to run on the Raspberry Pi and I need this for other purposes.

If you prefer Raspbian or Ubuntu, stick with those, they should work equally well for the purposes of this tutorial.

A working Java Runtime Environment, Oracle Java and OpenJDK will both do the job. Java 7 is tested, newer versions should also work.

If not already installed, on Ubuntu/Debian systems, you may install OpenJDK using the following command:

sudo apt-get install openjdk-8-jre

For other distributions, please refer to the respective documentation.

Physical Setup

Getting the Raspberry Pi to work with the Phidgets Interface Kit and the connected sensors, a bit of pre-work is required. I recommend that you follow the free tutorial provided here:

http://www.instructables.com/id/Getting-Started-with-Phidgets-on-the-Raspberry-Pi/?ALLSTEPS

Make sure you connect the four sensors to the analog ports on your Phidgets Interface Kit, as we will be using these four ports later in the tutorial.
The assignments used in this tutorial are as follows:

Rotation Sensor: Port 1
Force Sensor: Port 5
Light Sensor: Port 6
Touch Sensor: Port 7

Writing the Client Application in Java

Setting up your project in Eclipse

On your developer machine, launch the Eclipse IDE. When asked, you can choose either to create a new workspace for your project, or use an existing one.

When Eclipse is started up, create a new project

FILE > NEW > JAVA PROJECT

In the dialog box, enter

PiDemo

in the PROJECT NAME field, leave all other options in their default settings and hit FINISH. The new project PiDemo should now show up in the package explorer on the left side of your Eclipse window.

Creating the VeliSphere Configuration File

We now need to create the default Velisphere configuration file, which we will later use to store information required to authenticate your RaspberryPi in the Velisphere network as well as to validate messages your RaspberryPi will receive from the network.

To do so, right-click on the newly create “PiDemo” project and select NEW > FILE in the context menu.

In the new file dialog, please enter the following file name in the field “File name:”

velisphere_config.xml

and hit the FINISH button.

An empty file velisphere_config.xml will be created and opened on the right hand side of the screen.

Copy the following XML snippet into the newly created file

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>This file contains Velisphere authentication information. Do not overwrite!</comment>
<entry key="Secret Key"></entry>
<entry key="Endpoint ID"></entry>
<entry key="Endpoint Class ID">33492b88-3626-416c-86c3-90221a849da2</entry>
<entry key="isProvisioned">false</entry>
</properties>

and hit the SAVE (floppy disk) button in Eclipse.

Let’s have a look at this file. In essence, it is an XML file that specifies four different keys:

Secret Key

The secret key that your Raspberry Pi will use for checking the authenticity of an incoming message (i.e. to verify whether the message has truly been sent by the Velisphere system) and which will also be used to allow the Velisphere system to check whether it was truly your device that sent an outgoing message.

The principle used by Velisphere is based on the HMAC (Keyed hash message authentication code) concept:
https://en.wikipedia.org/wiki/Hash-based_message_authentication_code

The secret key will be provided by the Velisphere server during the provisioning process and automatically be stored in the configuration file.

Endpoint ID

The endpoint ID is a unique identifier that identifies your Raspberry Pi, it will also be assigned by the Velisphere server during provisioning.

Endpoint Class ID

The endpoint class ID defines which kind of endpoint your RaspberryPI is, so that the system has a clear description of the capabilities of this device.

Think of it as follows (Germans like car analogies):

Endpoint Class > “Raspberry Pi with Phidgets”
> Car Analogy: “2016 Volkswagen Passat Sedan SE”

Endpoint > “Thorsten’s Raspberry Pi with Phidgets”
> Car Analogy: “VIN WVWZZZZZxyz123456”

Within the Velisphere System, multiple endpoints of the same endpoint class can exist. Any given endpoint is, in other words, the implementation of an endpoint class. The endpoint class describes the characteristics, the “properties” of and endpoint.

For this reason, the endpoint class ID needs to be provided to Velisphere when sending the provisioning request and therefore needs to be provided via the XML file before sending the provisioning request.

The endpoint class for this tutorial is

33492b88-3626-416c-86c3-90221a849da2

IsProvisioned Flag

Before provisioning a device for the first time (or re-provisioning a device that was previously provisioned), the isProvisioned-Flag needs to be set to “false”. We will later read this flag to determine on startup whether to send a provisioning request or continue with regular boot.

Adding the VeliSphere SDK library

Next, we need to download the Velisphere Software Development Kit JAR file and add it to the JAVA build bath of our newly created repository.

To download the file, go to

https://github.com/thomeudt/VelisphereClientSDK/releases

Under the “Downloads” section, you will find a file called VelisphereMilkSDK.jar (In case you wonder about the dairy content – all Velisphere components are codenamed around products you need to produce chai late, and milk certainly qualifies for that…)

Switch back to Eclipse and make a right click on you newly created project “PiDemo”, select Build Path > and Configure Build Path… .

Select the Libraries tab and click on Add external JARs… on the right side of the dialog box

In the JAR selection dialog box, navigate to the location in which you stored the downloaded VelisphereMilkSDK.jar. Select this file and click OK. The JAR selection dialog closes, then hit OK again to close the Java Build Path dialog.

We can now use routines from the SDK JAR file to build our client, which saves a lot of time.

Adding the Phidgets libarary

In order to be able to read data from sensors connected to the Phidgets interface kit, we also need to add the Phidgets Java library file to our build path. Download the respective file phidget21.jar from the phidget web site and add it in the same was as you added VelisphereMilkSDK.jar.

Adding GeoLite for geographical approximation

Velisphere provides you with functionality to track location data of your devices and perform further analysis on this data. As the Raspberry Pi does not include a GPS receiver for precise location data, we will approximate the device position based on its IP address, using GeoLite provided by MaxMind.

The required library geoip-api-1.2.15.jar can be downloaded from www.maxmind.com, and needs to be added to the build path following again steps 9-11.

Creating the Java Package

Next, we will create a new Java package in which we will store the code that we are about to create. For the purpose of this tutorial, we are using the following package name, but you are certainly free to use whatever name you like (we suggest you stick to Java naming conventions):

com.velisphere.demo.rpiSensors

Right click again on the “PiDemo” project and select New > and Package.

In the New Java Package dialog box, leave the default setting for the source folder (should be PiDemo/src) and enter the package name as above:

com.velisphere.demo.rpiSensors

Within the newly created package, which will show up in the Eclipse Package Explorer after expanding the src folder, we need to create four Java classes that contain all of the code we need.

Three classes are the basic requirements for any Velisphere client implementation, but are always to be adapted specifically for the endpoint we are developing for.

In our case these are:

PiSensorsMain.java
Main class that will handle startup:

PiEventListener.java
An implementation of the com.velisphere.milk.interfaces.EventListener which is used to respond to incoming messages

PreDeployment.java
A class to trigger initial deployment of the device:

In addition, we will use two classes that provide additional functionality:

PhidgetMonitoringEngine.java
A class that will listen to sensor value changes on the Interface kit and sends them, via AMQP, to the Velisphere message broker.

In order to create these classes, please repeat the following steps for each class, using the respective class name:

Right click on the package com.velisphere.demo.rpiSensors you created before, and select NEW > CLASS

In the New Java Class dialog box, enter the name of the class you are creating (see above), without the “.java” extension. Leave all other options in heir default settings.

Hit the FINISH button to create the class

Coding the PreDeployment Class

After having created all four empty classes, it is time to create the code. We will start with the most simple class, the pre-deployment class, PreDeployment. In Eclipse file explorer, double click on the class, which will open the (mostly) empty class:

package com.velisphere.demo.rpiSensors;
public class PreDeployment {
}

Add the following code to the PreDeployment class:

package com.velisphere.demo.rpiSensors;

import com.velisphere.milk.restClient.ProvisioningClient;

public class PreDeployment {
	
	public static void initiateDeployment()
	{
		System.setProperty("jsse.enableSNIExtension", "false");
		String provisioningID = ProvisioningClient.macProvisioning();
		System.out.println("[IN] Provisioning request successfully submitted.");
		System.out.println("[IN] Go to www.velisphere.com, log in with your user name and start the provisioning wizard to complete.");
		System.out.println("[IN] Your Device ID is: " + provisioningID);
		
	}

}

This class calls the ProvisioningClient.macProvisioning static method that comes with the Velisphere Client SDK. This class files a provisioning request with Velisphere, using the MAC address of the network interface as the unique identifier.

There are other methods available for filing provisioning requests using the ProvisioningClient class, we will discuss these in later tutorials.

Calling the MAC provisioning method returns a string value that is the MAC address of the device, we print them to the console so that the user can use this identifier to finalize the provisioning, using the provisioning wizard provided by velisphere.com

Hit the “save” button in Eclipse to save your code.

Coding the Event Listener

Next, we will create the code for the PiEventListener class. It will have to look as follows:

package com.velisphere.demo.rpiSensors;

import java.util.HashMap;
import com.velisphere.milk.amqpClient.AmqpClient;
import com.velisphere.milk.configuration.ConfigData;
import com.velisphere.milk.interfaces.EventListener;

public class PiEventListener implements EventListener {

	@Override
	public void requestIsAlive(AmqpClient amqpClient) {
		System.out.println(" [IN] IsAlive Requested...");
		HashMap<String, String> messageHash = new HashMap<String, String>();
		messageHash.put("setState", "REACHABLE");
		try {
			amqpClient.sendHashTable(messageHash, ConfigData.epid, "CTL");
		} catch (Exception e) {
			// TODO Do something meaningful for error handling
			e.printStackTrace();
		}

	}

	@Override
	public void requestAllProperties(AmqpClient amqpClient) {
		System.out.println(" [IN] AllProperties requested and discarded as not supported by PiSensor");

	}

	@Override
	public void newInboundMessage(AmqpClient amqpClient, String message) {
		System.out.println(" [IN] New Inbound Message, but no action implemented yet by PiSensor");
	}
}

As already mentioned, this class implements the EventListener interface of the SDK, which takes care of responding to incoming messages.

The interface describes three methods we need to implement:

requestIsAlive
This method is triggered when the client receives a request asking if it is stil “alive”, similar to the PING command you might be familiar with. We respond with setting the state of the endpoint as “reachable”

requestAllProperties
This method is triggered when the client receives a request asking it to submit the current values of all sensors. We disregard this for the time being and leave the implementation for the next tutorial.

NewInboundMessage

This method is called when a new inbound message (other than the two above) is received. It provides the JSON message as a parameter so that the endpoint can be programmed to respond to it. We disregard this for the time being and leave the implementation for the next tutorial.

Please note the @Override annotation for each of these method, indicating that the method implements the abstract method inherited from the EventListener interface.

Coding the Monitoring Engine

Next, we will create the code for the PhidgetMonitoringEngine class. This is the class that reads data from the sensors connected to the interface kit and submits data to Velisphere on change of a sensor value.

This is the most complex class of our project and requires the import of several classes from the phidget and velisphere SDK libraries, as well as several other libraries provided with the JRE.

package com.velisphere.demo.rpiSensors;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.HashMap;
import com.maxmind.geoip.Location;
import com.maxmind.geoip.LookupService;
import com.maxmind.geoip.regionName;
import com.phidgets.InterfaceKitPhidget;
import com.phidgets.Phidget;
import com.phidgets.PhidgetException;
import com.phidgets.event.AttachEvent;
import com.phidgets.event.AttachListener;
import com.phidgets.event.DetachEvent;
import com.phidgets.event.DetachListener;
import com.phidgets.event.ErrorEvent;
import com.phidgets.event.ErrorListener;
import com.phidgets.event.InputChangeEvent;
import com.phidgets.event.InputChangeListener;
import com.phidgets.event.OutputChangeEvent;
import com.phidgets.event.OutputChangeListener;
import com.phidgets.event.SensorChangeEvent;
import com.phidgets.event.SensorChangeListener;
import com.velisphere.milk.amqpClient.AmqpClient;
import com.velisphere.milk.configuration.ConfigData;

public class PhidgetMonitoringEngine {

	private static final String touchSensorID = "f3b93c91-dee0-4609-ac1c-100dd00e060a";
	private static final String lightSensorID = "67f6edfa-3413-41a7-ab16-e9ed72136696";
	private static final String pressureSensorID = "72d3bbef-1f8e-4d8c-a838-ea119ef98592";
	private static final String dialKnobID = "ac4bd814-3a65-42f8-b5ad-75e71e63640b";
	private static final String locationID = "24c1ea6d-c2c5-420d-9743-f718e221e07d";
	
	private AmqpClient amqpClient;
	
	public PhidgetMonitoringEngine(AmqpClient amqpClient)
	{
		this.amqpClient = amqpClient;
	}
	
	
	public void startMonitoring() throws PhidgetException, IOException
	{
			
		System.out.println(Phidget.getLibraryVersion()); 
		final InterfaceKitPhidget ik = new InterfaceKitPhidget(); 
		ik.addAttachListener(new AttachListener() {
			public void attached(AttachEvent ae) { 
				System.out.println("attachment of " + ae); 
			} 
		}); 
		ik.addDetachListener(new DetachListener() { 
			public void detached(DetachEvent ae) { 
				System.out.println("detachment of " + ae); 
			} 
		}); 
		ik.addErrorListener(new ErrorListener() { 
			public void error(ErrorEvent ee) { 
				System.out.println("error event for " + ee); 
			} 
		}); 
		ik.addInputChangeListener(new InputChangeListener() { 
			public void inputChanged(InputChangeEvent oe) { 
				System.out.println(oe); 
			} 
		}); 
		ik.addOutputChangeListener(new OutputChangeListener() { 
			public void outputChanged(OutputChangeEvent oe) { 
				System.out.println(oe);
							} 
		}); 
		ik.addSensorChangeListener(new SensorChangeListener() { 
			public void sensorChanged(SensorChangeEvent se) { 
				System.out.println(se);
				System.out.println("[IN] Value change triggered on Sensor "+se.getIndex() +". New Value:" + se.getValue());

				try {
					// create HashMap
					HashMap<String, String> messageHash = new HashMap<String, String>();
					
					// Sensor Data
					messageHash.put(touchSensorID, String.valueOf(ik.getSensorValue(6)));
					messageHash.put(lightSensorID, String.valueOf(ik.getSensorValue(7)));
					messageHash.put(pressureSensorID, String.valueOf(ik.getSensorValue(5)));
					messageHash.put(dialKnobID, String.valueOf(ik.getSensorValue(1)));
				
					// Geo Location
					File dbfile = new File("GeoLiteCity.dat");
					LookupService lookupService = new LookupService(dbfile, LookupService.GEOIP_MEMORY_CACHE);
					URL whatismyip = new URL("http://checkip.amazonaws.com");
					BufferedReader in = new BufferedReader(new InputStreamReader(
					                whatismyip.openStream()));
					String ip = in.readLine(); //you get the IP as a String
					Location location = lookupService.getLocation(ip);
					// Populate region. Note that regionName is a MaxMind class, not an instance variable
					if (location != null) {
					    location.region = regionName.regionNameByCode(location.countryCode, location.region);
					}
					messageHash.put(locationID, "{"	+ String.valueOf(location.latitude) + "}" + 
							"[" + String.valueOf(location.longitude) + "]");
					
					
					// Send out
					System.out.println("Message Hash Sent to Controller: " + messageHash);
					amqpClient.sendHashTable(messageHash, ConfigData.epid, "REG");
				} catch (Exception e) {
					// TODO Do something meaningful for error handling
					e.printStackTrace();
				}
			} 
		}); 
		ik.openAny(); 
		System.out.println("waiting for InterfaceKit attachment..."); 
		ik.waitForAttachment(); 
		System.out.println(ik.getDeviceName()); 
		System.in.read(); 
		ik.close(); 
		System.out.println(" ok"); 
	} 
}

Let’s look at some aspects in more detail.

At the beginning of this class, we are defining several constants that contain the property id of the sensors of our device. Every sensor and every actor of each endpoint class carry their own ID.

private static final String touchSensorID = "f3b93c91-dee0-4609-ac1c-100dd00e060a";
private static final String lightSensorID = "67f6edfa-3413-41a7-ab16-e9ed72136696";
private static final String pressureSensorID = "72d3bbef-1f8e-4d8c-a838-ea119ef98592";
private static final String dialKnobID = "ac4bd814-3a65-42f8-b5ad-75e71e63640b";
private static final String locationID = "24c1ea6d-c2c5-420d-9743-f718e221e07d";

The id codes can be found in the endpoint class catalog available on velisphere.com.

We then declare an instance variable for the amqpClient class imported from the velisphereSDK.

private AmqpClient amqpClient;	

This variable is assigned in the following constructor:

public PhidgetMonitoringEngine(AmqpClient amqpClient)
		{
			this.amqpClient = amqpClient;
		}

The following code is largely specific to read sensor values from the phidget interface kit, which we will not elaborate on in this tutorial.

Where things become interesting again is the code which packages our sensor data up in the standard Velisphere JSON format and sends it off to the message broker.

The good thing Is, you don’t have to worry about most of this, as we can use a single method of the amqpClient to take care of this. In our case, it’s the following line:

amqpClient.sendHashTable(messageHash, ConfigData.epid, "REG");

messageHash in this case is a variable of the type HashMap that we have declared earlier:

HashMap<String, String> messageHash = new HashMap<String, String>();

A HashMap is a Java structure that takes stores key/value pairs. This is exactly what we need, as we need to store a sensor value (the value) that is assigned to a property (the key) of our endpoint.

To add these keys and values to the HashMap, we use the following line:

messageHash.put(touchSensorID, String.valueOf(ik.getSensorValue(6)));
messageHash.put(lightSensorID, String.valueOf(ik.getSensorValue(7)));
messageHash.put(pressureSensorID, String.valueOf(ik.getSensorValue(5)));
messageHash.put(dialKnobID, String.valueOf(ik.getSensorValue(1)));

What follows are several lines of code to obtain the geolocation from GeoLite:

// Geo Location
					
File dbfile = new File("GeoLiteCity.dat");
LookupService lookupService = new LookupService(dbfile, LookupService.GEOIP_MEMORY_CACHE);

URL whatismyip = new URL("http://checkip.amazonaws.com");
BufferedReader in = new BufferedReader(new InputStreamReader(
whatismyip.openStream()));

String ip = in.readLine(); //you get the IP as a String
					
Location location = lookupService.getLocation(ip);

// Populate region. Note that regionName is a MaxMind class, not an instance variable
if (location != null) {
    location.region = regionName.regionNameByCode(location.countryCode, location.region);
} 

Specific to VeliSphere is again this line:

messageHash.put(locationID, "{"	+ String.valueOf(location.latitude) + "}" + "[" + String.valueOf(location.longitude) + "]");

Here we are putting the geolocation obtained from GeoLite into our HashMap. Please note that the format for submitting geolocations to Velisphere is a string structured as follows:

{latitude in degree}[longitude in degree]

When we have added the value of the four sensors and the geolocation from GeoLite, we are ready to send our key/value hashmap to Velisphere, using the following call already mentioned above:

amqpClient.sendHashTable(messageHash, ConfigData.epid, "REG");

The more generic way to describe this is

amqpClient.sendHashTable(HashMap, EndpointID, MessageType);

The EndpointID is loaded from the velisphere_config.xml file introduced in step 4, and can be accessed using the static variable ConfigData.epid provided by the SDK.

The message type we are using is “REG”, for regular message.

That’s it – what follows is just a bunch of error handling code which you probably want to turn into somehting more meaningful later on.

Coding the main class

Let’s finally build our main class PiSensorsMain.

package com.velisphere.demo.rpiSensors;

import java.io.IOException;
import com.phidgets.PhidgetException;
import com.velisphere.milk.amqpClient.AmqpClient;
import com.velisphere.milk.configuration.ConfigFileAccess;
import com.velisphere.milk.configuration.Provisioner;

public class PiSensorsMain {

	public static void main(String[] args) throws IOException {

		System.out.println(" ----------------------------------------------------------------------------------------------");
		System.out.println(" VELISPHERE DEMO: RaspberryPI Sensor Device using Phidgets");
		System.out.println(" (C) 2015 Thorsten Meudt");
		System.out.println(" Licensed under the GPLv2 license, http://www.gnu.org/licenses/old-licenses/gpl-2.0.de.html");
		System.out.println(" Learn more about the VeliSphere IoT System at www.connectedthingslab.com");
		System.out.println(" ----------------------------------------------------------------------------------------------");
		System.out.println(" ");

		// Load Configuration Data

		ConfigFileAccess.loadParamChangesAsXML();

		// Check if device is already deployed. If not, trigger pre-deployment
		// cycle

		System.out.println(" [IN] Calling provisioner to determine if device is flagged as provisioned.");

		if (Provisioner.isProvisioned() == false)
			PreDeployment.initiateDeployment();
		else
			regularStartup();

	}

	public static void regularStartup() {

		// Activate Event Responders

		PiEventListener eventListener = new PiEventListener();

		// Start Server and activate listener

		AmqpClient amqpClient = new AmqpClient(eventListener);
			amqpClient.startClient();
			PhidgetMonitoringEngine engine = new PhidgetMonitoringEngine(amqpClient);
		try {
			engine.startMonitoring();
		} catch (PhidgetException e) {
			// TODO Do something meaningful for error handling
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Do something meaningful for error handling
			e.printStackTrace();
		}

	}

}

This class consists of two static methods, main which is called when the Java executable is started, and regularStartup, which is called by main.

Looking at the main method first, the first step is to load the configuration data from the velisphere_config.xml file.

ConfigFileAccess.loadParamChangesAsXML();

Next, we do a simple if/then/else to determine whether the device needs to be provisioned first, or whether this step has already been completed and regular startup can commence:

		if (Provisioner.isProvisioned() == false)
			PreDeployment.initiateDeployment();
		else
			regularStartup();

That’s all.

Now look at the regularStartup method:

First we instantiate an EventListener from (using the class in the SDK).

PiEventListener eventListener = new PiEventListener();

Next we instantiate an amqpClient in which we inject our eventListener and start the amqpClient.

AmqpClient amqpClient = new AmqpClient(eventListener);
amqpClient.startClient();

We finally start the PhidgetMonitoringEngine by calling

PhidgetMonitoringEngine engine = new PhidgetMonitoringEngine(amqpClient);
engine.startMonitoring();

It is important that you do this after creating the amqpClient, as the monitoring engine depends on the amqpClient.

Creating a runnable configuration

Our code is complete! We now need to create a runnable configuration so that we can run it as a stand alone application on our raspberry pi.

To do so, open the RUN menu in the Eclipse main menu bar and select RUN CONFIGURATIONS…

In the following dialog, click select Java Application in the list on the left, make a right click on it and click NEW in the context menu.

A new run configuration is created. On the right side of the dialog, we need to give a name to our configuration, we call it PiDemoConfig. Leave all other values at their defaults and hit APPLY and then CLOSE.

All that is left to do is to export everything into an executable JAR file. To do this, make a final right click on your project PiDemo and click EXPORT.

Expand the Java folder and select Runnable JAR file and hit the NEXT button
In the “Runnable JAR file export” dialog, select the runnable configuration we just created (“PiDemoConfig – PiDemo”) in the “Launch Configurations” dropdown list.

Select a path to which you want to export your file in “Export Destination”. On my computer, I chose “/home/thorsten/Documents/tutorials/PiDemo.jar”, but you are free to chose any path you like. However you need to be able to locate this file later on on your computer.

Make sure you select “Extract required libraries into generated JAR” under “Library handling”.

Hit FINISH

If a warning about referenced libraries shows up, confirm with OK.

Download the GeoLite city database binary from here

GeoLite Legacy Downloadable Databases

and extract the contained GeoLiteCity.dat file to a temporary location.

Now, copy the following files into a directory on your RaspberryPI:

– the created JAR file
– velisphere_config.xml
– GeoLiteCity.dat

You probably will use a tool like WinSCP when using a Windows machine, but I assume you are familiar with how to get a file copied to the RaspberryPi.

Starting the client

Now it’s time to start your client for the first time and provision it with Velisphere.

Make an ssh connection to your RaspberryPi. How you do this depends on the OS you are using on your developer machine (for instance using PUTTY if you’re on windows, or the SSH command on Linux or MacOS).

Navigate to the directory where you stored your files and enter the following command to start your client:

java -jar ./PiDemo.jar

Note that if you used a different file name in the previous steps, you will have to use this filename here instead of PiDemo.jar

If everything goes well (it is important that your RaspberryPi has a working internet connection), the client will execute the PreDeployment routine and return a DeviceID – the MAC address of your Pi.

Go to www.velisphere.com, log in with your user account and click on “Deployment Wizard” on the right side of the screen.

Enter the DeviceID returned in step 2 and the captcha word and hit the SEARCH button

Velisphere should find your device in an unassigned state. In this screen, click on CLAIM OWNERSHIP to complete the provisioning process and add the newly created device to your inventory by giving it a name, like “My First Velisphere Client”.

Go back to your SSH connection to the RaspberryPi and start our client:

java -jar ./PiDemo.jar

As the device is now fully provisioned, the client will connect with the message broker and start sending sensor values to VeliSphere. You can follow this on your screen as the client currently is fairly verbose, providing a lot of debug information.

Congratulations!

Comments ( 3,062 )

  1. myeasyremote.com
    ... [Trackback] [...] Read More here: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  2. mca
    ... [Trackback] [...] Read More: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  3. Shemale.uk - transsexual escorts london
    ... [Trackback] [...] There you will find 79403 more Infos: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  4. Kata Kata Ucapan Lebaran Idul Fitri 2017/2018
    ... [Trackback] [...] There you will find 96047 more Infos: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  5. 123movies
    ... [Trackback] [...] There you will find 9315 more Infos: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  6. sscn.bkn.go.id 2017
    ... [Trackback] [...] Find More Informations here: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  7. roofing contractor
    ... [Trackback] [...] Read More: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  8. cara pendaftaran cpns
    ... [Trackback] [...] Find More Informations here: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  9. glo
    ... [Trackback] [...] Read More here|Read More|Find More Informations here|There you can find 51598 more Informations|Informations on that Topic: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  10. A-League Predictions
    ... [Trackback] [...] Read More here|Read More|Find More Informations here|There you can find 49789 additional Informations|Informations to that Topic: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [..…
  11. best vacation stay in dominican republic
    ... [Trackback] [...] Read More on|Read More|Find More Infos here|There you will find 67384 more Infos|Informations on that Topic: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  12. scn bkn
    ... [Trackback] [...] Read More on|Read More|Read More Infos here|Here you can find 72500 more Infos|Infos on that Topic: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  13. Christ Gospel Church Cult
    ... [Trackback] [...] Find More here|Find More|Read More Informations here|There you can find 72392 more Informations|Infos on that Topic: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  14. Indobookies
    ... [Trackback] [...] Read More here|Read More|Find More Informations here|Here you can find 19049 more Informations|Infos to that Topic: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  15. מיזוג אוויר
    ... [Trackback] [...] Find More here|Find More|Find More Informations here|There you can find 94071 more Informations|Infos on that Topic: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  16. pemandangan
    ... [Trackback] [...] Find More here|Find More|Find More Informations here|Here you will find 91818 more Informations|Infos on that Topic: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  17. view publisher site
    ... [Trackback] [...] Find More here|Find More|Read More Infos here|Here you will find 47369 more Infos|Informations to that Topic: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  18. Software Klinik
    ... [Trackback] [...] Read More here|Read More|Read More Informations here|There you can find 28328 more Informations|Informations to that Topic: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  19. DMPK Services
    ... [Trackback] [...] Read More here|Read More|Read More Infos here|There you can find 14241 more Infos|Infos to that Topic: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  20. juegos de friv
    ... [Trackback] [...] Read More on|Read More|Read More Infos here|Here you will find 98992 more Infos|Informations on that Topic: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  21. teeth implants Boynton
    ... [Trackback] [...] Find More on|Find More|Find More Informations here|Here you will find 78367 more Informations|Infos on that Topic: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  22. continue reading
    ... [Trackback] [...] Find More on|Find More|Read More Infos here|There you will find 47114 more Infos|Infos to that Topic: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  23. SEO company in chandigarh
    ... [Trackback] [...] Find More here|Find More|Read More Infos here|There you can find 9150 more Infos|Informations to that Topic: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  24. MORE READING
    ... [Trackback] [...] Find More on|Find More|Read More Informations here|Here you will find 37517 more Informations|Infos to that Topic: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  25. Festivales
    ... [Trackback] [...] Find More on|Find More|Read More Informations here|There you will find 48017 more Informations|Informations to that Topic: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  26. Play Game at soccerphysics.co/
    ... [Trackback] [...] Find More here|Find More|Read More Infos here|Here you will find 4768 more Infos|Informations to that Topic: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  27. mondo sonoro
    ... [Trackback] [...] Read More on|Read More|Read More Informations here|There you will find 86010 additional Informations|Infos on that Topic: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  28. must watch
    ... [Trackback] [...] Find More on|Find More|Read More Informations here|There you will find 90689 more Informations|Infos on that Topic: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  29. www.office.com/setup
    ... [Trackback] [...] Read More here|Read More|Read More Infos here|Here you can find 44196 additional Infos|Infos to that Topic: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  30. pornhub
    ... [Trackback] [...] Find More on|Find More|Read More Infos here|There you will find 65864 additional Infos|Informations on that Topic: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  31. 3598-6629 黑心僱傭公司是忠誠
    ... [Trackback] [...] Find More here|Find More|Read More Infos here|There you can find 18375 additional Infos|Informations to that Topic: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  32. Replyjuegos de friv
    Somebody necessarily lend a hand to make severely posts I'd state. This is the first time I frequented your web page and so far? I amazed with the research you made to make this actual publish amazing. Great job! Take a look at our website for the best friv games online. Multiple categories of the best friv games and is actually all free.
  33. must watch
    ... [Trackback] [...] Read More here|Read More|Find More Informations here|Here you can find 67669 additional Informations|Infos on that Topic: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  34. agen bola indonesia
    ... [Trackback] [...] Read More on|Read More|Read More Infos here|There you can find 67482 additional Infos|Informations on that Topic: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  35. photography logos
    ... [Trackback] [...] Read More here|Read More|Read More Informations here|There you will find 67071 additional Informations|Informations on that Topic: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [.…
  36. iraq law
    ... [Trackback] [...] Find More on|Find More|Read More Informations here|Here you will find 37765 more Informations|Infos to that Topic: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  37. Viagra cialis levitra
    Cialis 5 mg funziona http://cialisessale.com/ As the YouTube video lessons are posted at this place same like I also embed YouTube video code at my own web site, because it is straightforward to take embedded code.
  38. writeaessay
    write a essay for me http://dekrtyuijg.com/ Kudos! Plenty of info.
  39. Replyminecraft
    This design is incredible! You obviously know how to keep a reader amused. Between your wit and your videos, I was almost moved to start my own blog (well, almost...HaHa!) Great job. I really enjoyed what you had to say, and more than that, how you presented it. Too cool!
  40. Replyminecraft
    I loved as much as you'll receive carried out right here. The sketch is attractive, your authored subject matter stylish. nonetheless, you command get got an impatience over that you wish be delivering the following. unwell unquestionably come more formerly again as exactly the same nearly a lot often inside case you shield this increase.
  41. Replyminecraft
    I'm truly enjoying the design and layout of your website. It's a very easy on the eyes which makes it much more pleasant for me to come here and visit more often. Did you hire out a designer to create your theme? Outstanding work!
  42. Replyminecraft
    Hey There. I found your weblog using msn. That is an extremely smartly written article. I will be sure to bookmark it and come back to learn more of your helpful information. Thank you for the post. I'll certainly comeback.
  43. Replyminecraft free download 2018
    Good blog you've got here.. It's hard to find good quality writing like yours these days. I honestly appreciate people like you! Take care!!
  44. Replyminecraft free download 2018
    I really like what you guys are usually up too. This sort of clever work and exposure! Keep up the very good works guys I've incorporated you guys to blogroll.
  45. ReplyCoconut Oil Benefits
    Saved as a favorite, I like your web site!
  46. ReplyBenefits of Coconut Oil
    Every weekend i used to visit this website, for the reason that i want enjoyment, for the reason that this this website conations in fact pleasant funny stuff too.
  47. ReplyHealth Benefits of Coconut Oil
    My coder is trying to convince me to move to .net from PHP. I have always disliked the idea because of the costs. But he's tryiong none the less. I've been using Movable-type on several websites for about a year and am worried about switching to another platform. I have heard great things about blogengine.net. Is there a way I can transfer all my wordpress posts into it? Any help would be really appreciated!
  48. ReplyCoconut Oil
    Hello! I could have sworn I've been to this blog before but after browsing through some of the post I realized it's new to me. Nonetheless, I'm definitely glad I found it and I'll be bookmarking and checking back frequently!
  49. ReplyCoconut Oil Benefits
    I'm curious to find out what blog platform you're working with? I'm experiencing some small security problems with my latest website and I'd like to find something more secure. Do you have any solutions?
  50. ReplyCoconut Oil Benefits
    Ridiculous quest there. What happened after? Good luck!
  51. ReplyHealth Benefits of Coconut Oil
    Hmm it looks like your blog ate my first comment (it was extremely long) so I guess I'll just sum it up what I submitted and say, I'm thoroughly enjoying your blog. I too am an aspiring blog blogger but I'm still new to everything. Do you have any recommendations for first-time blog writers? I'd genuinely appreciate it.
  52. ReplyHealth Benefits of Coconut Oil
    Marvelous, what a web site it is! This weblog presents valuable data to us, keep it up.
  53. ReplyWhat Equipment is Needed for Sling TV
    Definitely imagine that which you stated. Your favorite reason seemed to be at the internet the easiest thing to bear in mind of. I say to you, I certainly get annoyed even as other folks think about worries that they plainly do not recognize about. You managed to hit the nail upon the highest and outlined out the whole thing without having side-effects , other folks can take a signal. Will likely be again to get more. Thank you
  54. ReplyWhat Equipment is Needed for Sling TV
    Thanks for sharing your thoughts about What Equipment is Needed for Sling TV. Regards
  55. ReplySling TV
    I am truly grateful to the holder of this site who has shared this fantastic post at at this time.
  56. ReplyFitnessWikipedia
    I get pleasure from, cause I discovered exactly what I was having a look for. You have ended my four day lengthy hunt! God Bless you man. Have a great day. Bye
  57. Replysling tv coupons and promo codes for november 2018
    Sling tv coupons and promo codes for november 2018 I know this if off topic but I'm looking into starting my own blog and was wondering what all is needed to get setup? I'm assuming having a blog like yours would cost a pretty penny? I'm not very web smart so I'm not 100% sure. Any suggestions or advice would be greatly appreciated. Thank you sling tv coupons and promo codes for november 2018
  58. ReplyWhat Equipment is Needed for Sling TV
    At this time I am going to do my breakfast, when having my breakfast coming yet again to read additional news.
  59. ReplyWhat Equipment is Needed for Sling TV
    I couldn't resist commenting. Very well written!
  60. ReplyWhat Equipment is Needed for Sling TV
    I don't even understand how I ended up here, but I thought this publish used to be good. I don't understand who you are but certainly you are going to a famous blogger in the event you are not already. Cheers!
  61. Replydescargar facebook
    Its such as you learn my thoughts! You seem to know so much approximately this, such as you wrote the guide in it or something. I feel that you simply could do with a few percent to force the message house a little bit, but instead of that, this is great blog. An excellent read. I'll certainly be back.
  62. ReplyFree Proxy List
    Every 60 minutes there are new public proxies added. You can directly import these into your SEO tools or do it manually. There are proxies for ScrapeBox and all other tools. Let me know if you need free public proxies for other tools. I’ll try to add them if I can.
  63. Replydescargar facebook
    Woah! I'm really enjoying the template/theme of this blog. It's simple, yet effective. A lot of times it's very difficult to get that "perfect balance" between user friendliness and visual appearance. I must say you have done a superb job with this. Additionally, the blog loads super quick for me on Safari. Excellent Blog!
  64. ReplySling TV Save Money Coupon 2018
    After looking at a number of the articles on your site, I truly appreciate your technique of writing a blog. I saved it to my bookmark webpage list and will be checking back in the near future. Please visit my web site as well and tell me how you feel.
  65. website
    ... [Trackback] [...] Read More on|Read More|Read More Infos here|There you can find 88468 additional Infos|Infos on that Topic: connectedthingslab.com/index.php/2015/12/17/how-to-build-a-multi-sensor-device-using-a-raspberrypi-and-phidgets/ [...]
  66. Replyelectromagnetic Energy Storage
    Fossil fuels like coal and oil supplied us while using essential resource to generate our personal electricity using the use of generators in power plants. Some in the drawbacks of these systems is that it is not always dependable. * Dimethylaminoethanol DMAE is related to choline and it is a biochemical precursor on the neurotransmitter acetylcholine.
  67. Replycanadian pharmacy online 24
    It's really a cool and useful piece of info. I'm happy that you just shared this helpful info with us. Please stay us informed like this. Thanks for sharing.
  68. ReplyFunny Picture
    Thank you for every other magnificent article. The place else could anybody get that kind of information in such an ideal method of writing? I've a presentation subsequent week, and I am on the search for such info.
  69. Replytabletky na rast svalovej hmoty
    With havin so much content and articles do you ever run into any problems of plagorism or copyright infringement? My blog has a lot of unique content I've either authored myself or outsourced but it appears a lot of it is popping it up all over the web without my authorization. Do you know any techniques to help reduce content from being stolen? I'd really appreciate it.
  70. ReplyMaxPowerLip
    Download not working dll from http://founddll.com/ntdll-dll/ page. Fix the error now!
  71. Replyhechizos de magia blanca
    What i do not understood is actually how you are no longer really a lot more well-favored than you might be right now. You are very intelligent. You already know thus considerably in the case of this matter, produced me personally imagine it from numerous various angles. Its like men and women don't seem to be involved except it’s one thing to accomplish with Lady gaga! Your personal stuffs excellent. All the time deal with it up!
  72. ReplyOptimismo Y Salud Cardiaca
    What i do not understood is in truth how you're no longer really much more well-preferred than you may be now. You are very intelligent. You understand thus considerably in relation to this topic, made me in my view believe it from a lot of numerous angles. Its like women and men aren't fascinated except it’s one thing to accomplish with Lady gaga! Your individual stuffs nice. All the time maintain it up!
  73. ReplyCricket Betting Tips
    Terrific work! This is the kind of info that are supposed to be shared across the internet. Shaame on Google for not positioning this put uup upper! Come on over and consult with my ite . Thanks =)
  74. ReplyCliffLip
    Joe Bonamassa is a famous country singer, so don't miss the possibility to visit Joe Bonamassa tour tickets
  75. Replyimport herbs to australia
    hi!,I love your writing very much! proportion we keep in touch more about your pos on AOL? I need a specialis in this house to unravel my problem. Maybe that is you! Lookking forward to look you.
  76. Replyleer las cartas del tarot
    Nice post. I be taught one thing more difficult on totally different blogs everyday. It'll always be stimulating to read content from different writers and observe a bit of one thing from their store. I’d prefer to make use of some with the content on my blog whether or not you don’t mind. Natually I’ll give you a hyperlink on your internet blog. Thanks for sharing.
  77. Replycada tipo de eneagrama
    Can I just say what a reduction to search out somebody who actually is aware of what theyre talking about on the internet. You definitely know the way to carry an issue to light and make it important. Extra individuals have to read this and perceive this side of the story. I cant believe youre no more well-liked because you definitely have the gift.
  78. Replytest características del tipo
    wonderful post, very informative. I wonder why the other specialists of this sector do not notice this. You should continue your writing. I'm confident, you've a huge readers' base already!
  79. Replydarse cuenta
    Hi, Neat post. There's a problem with your web site in internet explorer, would check this… IE still is the market leader and a large portion of people will miss your excellent writing due to this problem.
  80. Replyrecycling
    Thiis info is worth everyone's attention. Where can I find out more?
  81. Replyjunk removal
    Hey! Would yyou mind iff I share yoyr blog with my twiktter group? There's a lot off folks that I think would really appreciate your content. Please let mee know. Thanks
  82. hemen tıkla
    nedenmibiz@gmail.com Pretty! This was a really wonderful post. Thank you for your provided information.
  83. clone wordpress site manually
    clone wordpress site manually [...]Every as soon as inside a though we pick out blogs that we study. Listed beneath would be the latest web pages that we select [...]
  84. Amateur Webcams
    Amateur Webcams [...]always a major fan of linking to bloggers that I love but do not get lots of link really like from[...]
  85. get clarity today with live online psychics
    get clarity today with live online psychics [...]although internet websites we backlink to below are considerably not associated to ours, we really feel they may be actually really worth a go through, so have a look[...]
  86. dieting recipes for a more slender body
    dieting recipes for a more slender body [...]Wonderful story, reckoned we could combine a couple of unrelated information, nevertheless definitely really worth taking a search, whoa did a single study about Mid East has got more problerms at the same time [...]
  87. meet with an online astrologer
    meet with an online astrologer [...]that will be the end of this post. Here you’ll find some internet sites that we think you will enjoy, just click the hyperlinks over[...]
  88. US Dollar on the Blockchain
    US Dollar on the Blockchain [...]the time to study or check out the content or internet sites we have linked to beneath the[...]
  89. ReplyKimerbroam
    Interested in HARD ROCK? How about KISS? They are on a tour in 2019 all across USA and Canada. Click on KISS Concert 2019 Noblesville to know more about KISS tour in 2019.
  90. Replyclasificacion de la basura
    It’s laborious to search out educated individuals on this subject, but you sound like you understand what you’re speaking about! Thanks
  91. ReplyMore info
    After study just a few of the weblog posts on your web site now, and I truly like your approach of blogging. I bookmarked it to my bookmark web site list and will likely be checking again soon. Pls try my website as properly and let me know what you think.
  92. Shoulder brace
    Shoulder brace [...]the time to study or go to the content or sites we have linked to below the[...]
  93. backlink list
    Tutorial: How to build a multi-sensor device using a RaspberryPI and Phidgets - Connected Things Lab http://arandir.forumcrea.com/viewtopic.php?id=1
  94. Branding
    Tutorial: How to build a multi-sensor device using a RaspberryPI and Phidgets - Connected Things Lab http://a-brandir.neocities.org
  95. molybdenum wire
    molybdenum wire [...]check below, are some entirely unrelated sites to ours, on the other hand, they may be most trustworthy sources that we use[...]
  96. Replyconnection network
    Wow, incredible weblog structure! How long have you been blogging for? you make blogging look easy. The entire look of your site is wonderful, as neatly as the content material!
  97. Reply바카라사이트추천
    Super-Duper website! I’m loving it!! Will be back later to read more.I’m bookmarking your feeds also.
  98. Reply토토사이트
    Some genuinely quality posts on this web site , saved to my bookmarks.
  99. Reply카지노사이트
    Thanks so much for the post.Really looking forward to read more. Great.thanks for sharing.
  100. Reply하이게이밍
    I was suggested this blog by my cousin. I’m not sure whether this post is written by him as nobody else know such detailed about my difficulty. You are wonderful! Thanks!please click my name above and try to visit guys~
  101. Reply바카라사이트추천
    Well I definitely enjoyed reading it. This article offered by you is very constructive for good planning.visit my webpage.
  102. ReplyAaronclece
    http://cafergot.team/ - cafergot tablets
  103. Boom lift rental miami
    Boom lift rental miami [...]just beneath, are quite a few totally not related web pages to ours, however, they may be certainly worth going over[...]
  104. ReplyAaronclece
    http://biaxin.icu/ - biaxin xl 500mg
  105. ReplyTogel Online
    It's a shame you don't have a donate button! I'd most certainly donate to this superb blog! I suppose for now i'll settle for bookmarking and adding your RSS feed to my Google account. I look forward to new updates and will talk about this blog with my Facebook group. Chat soon!
  106. ReplyAaronclece
    http://cipro.network/ - buy ciprofloraxin online
  107. ReplyAaronclece
    http://albendazole.network/ - albendazole
  108. how to heal yourself
    how to heal yourself [...]one of our visitors not too long ago suggested the following website[...]
  109. travel package holiday deals
    travel package holiday deals [...]please stop by the web-sites we adhere to, including this a single, because it represents our picks from the web[...]
  110. aromatherapy healing
    aromatherapy healing [...]although websites we backlink to below are considerably not associated to ours, we feel they're truly really worth a go through, so possess a look[...]
  111. how to train your pet with pets pride
    how to train your pet with pets pride [...]that may be the end of this report. Here you will locate some web sites that we consider you’ll value, just click the links over[...]
  112. ReplyAaronclece
    http://propecia.network/ - finasteride prescription
  113. ReplyAaronclece
    http://cephalexin.company/ - cephalexin 500 mg capsules
  114. ReplyBennywit
  115. Abzocke
    Abzocke [...]The information talked about inside the post are a number of the ideal readily available [...]
  116. empanadas de queso
    empanadas de queso [...]Here are a few of the web pages we recommend for our visitors[...]
  117. vintage catering
    vintage catering [...]very few sites that occur to become detailed below, from our point of view are undoubtedly properly worth checking out[...]
  118. BOOK NOW YOUR SUMMER VACATIONS at Elia apartments Halkidiki-Nea Triglia
    BOOK NOW YOUR SUMMER VACATIONS at Elia apartments Halkidiki-Nea Triglia [...]Every after inside a even though we select blogs that we read. Listed beneath are the most current internet sites that we decide on [...]
  119. ReplyBest Online Dating
    Wow that was odd. I just wrote an very long comment but after I clicked submit my comment didn't show up. Grrrr... well I'm not writing all that over again. Anyways, just wanted to say superb blog!
  120. ReplyAaronclece
    http://buydiclofenac.us.com/ - info
  121. ReplyAaronclece
    http://colchicine247.us.com/ - buy colchicine
  122. ReplyCharleswef
  123. ReplyEvawef
  124. ReplyAaronclece
    http://sildenafil24h.us.org/ - sildenafil tablet
  125. ReplyAaronclece
    http://genericcelebrex.us.com/ - celebrex cost
  126. ReplyBennywit
  127. ReplyFunny Bird Playing Drum
    Incredible points. Solid arguments. Keep up the amazing work.
  128. ReplyAaronclece
    http://buysildenafil.us.com/ - sildenafil
  129. ReplyMichaelMouct
  130. ReplyCharleswef
  131. ReplyCharleswef
  132. thatstamil
    thatstamil [...]Here is a great Blog You might Discover Interesting that we Encourage You[...]
  133. ReplyAaronclece
    http://albuterol007.com/ - albuterol
  134. ReplyKimwef
  135. receitas low carb
    receitas low carb [...]Wonderful story, reckoned we could combine a couple of unrelated information, nonetheless genuinely worth taking a appear, whoa did 1 master about Mid East has got a lot more problerms also [...]
  136. ReplyAaronclece
    http://buycelebrex.us.com/ - celebrex medication
  137. ReplyCharleswef
  138. ReplyAaronclece
    http://buyprednisolone.us.com/ - prednisolone
  139. ReplyBennywit
  140. ReplyAaronclece
    http://amoxicillin2016.us.com/ - amoxicillin sale
  141. ReplyBennywit
  142. ReplyCharleswef
  143. ReplyBennywit
  144. ReplyAaronclece
    http://zithromaxcheapestoffers.com/ - zithromax capsules
  145. ReplyKiawef
  146. ReplyKimwef
  147. ReplyAaronclece
  148. ReplyAaronclece
    http://canadianpharmacycialis.us.com/ - cialis online
  149. ReplyCharleswef
  150. ReplyBennywit
  151. ReplyAaronclece
    http://buyalbuterol.us.com/ - buy albuterol
  152. ReplyEvawef
  153. ReplyAaronclece
    http://bupropionnorxcost.com/ - bupropion
  154. ReplyKimwef
  155. ReplyKimwef
  156. ReplyBennywit
  157. ReplyAaronclece
    http://amoxicillin24.us.org/ - get more info
  158. ReplyKiawef
  159. ReplyAaronclece
    http://lasix365.us.com/ - lasix
  160. ReplyPasando Del Pesimismo Al Optimismo
    Just desire to say your article is as amazing. The clearness in your publish is just spectacular and i can think you're an expert in this subject. Well together with your permission let me to grab your RSS feed to stay updated with coming near near post. Thanks one million and please carry on the rewarding work. Hi there, I discovered your web site via Google while looking for a similar matter, your website came up, it appears great. I've bookmarked it in my google bookmarks.
  161. ReplyAaronclece
    http://triamterene.us.com/ - triamterene
  162. Reply카지노사이트
    https://www.wac3636.com/ 카지노사이트
  163. Reply바카라사이트
    https://www.mccasino777.com/ 바카라사이트
  164. Reply예스카지노
    https://www.wac3636.com/yescasino11/ 예스카지노
  165. Reply예스카지노
    https://www.mccasino777.com/yes/ 예스카지노 Thank you.
  166. ReplyKiawef
  167. ReplyAaronclece
  168. ReplyHamburguesa de Trucha
    Thanks , I have just been looking for information about this topic for a while and yours is the best I have discovered so far. However, what in regards to the bottom line? Are you sure concerning the source?
  169. ReplyKiawef
  170. ReplyDouglaszek
  171. ReplyCharleswef
  172. ReplyAaronclece
  173. ReplyAaronclece
    http://inderal.us.com/ - buy inderal
  174. text: best marijuana detox ever 2017
    text: best marijuana detox ever 2017 [...]Every after in a even though we pick out blogs that we read. Listed beneath would be the most up-to-date sites that we pick [...]
  175. ReplyAaronclece
    http://valtrex2017.us.org/ - valtrex
  176. Luchthavenvervoer
    Luchthavenvervoer [...]Every the moment inside a although we choose blogs that we study. Listed below would be the most up-to-date web-sites that we select [...]
  177. ReplyAaronclece
    http://sildenafilcheapestprices.com/ - as explained here
  178. ReplyAaronclece
    http://antabuse02.us.com/ - CHEAP ANTABUSE
  179. e-commerce
    e-commerce [...]the time to study or visit the content material or internet sites we have linked to below the[...]
  180. ReplyAaronclece
    http://buycitalopram.us.com/ - citalopram for sleep
  181. ReplyAaronclece
    http://azithromycin365.us.com/ - AZITHROMYCIN
  182. ReplyAaronclece
    http://buypropranolol.us.com/ - propranolol visa
  183. ReplyAaronclece
    http://eurax.us.com/ - eurax
  184. ReplyKiawef
  185. ReplyEvawef
  186. ReplyKimwef
  187. electronic cash register
    electronic cash register [...]check below, are some totally unrelated web sites to ours, nonetheless, they are most trustworthy sources that we use[...]
  188. kona coffee
    kona coffee [...]Sites of interest we've a link to[...]
  189. kona coffee
    kona coffee [...]we came across a cool web page that you could enjoy. Take a look should you want[...]
  190. ReplyBennywit
  191. kona coffee
    kona coffee [...]Wonderful story, reckoned we could combine a handful of unrelated information, nonetheless actually really worth taking a search, whoa did a single discover about Mid East has got additional problerms at the same time [...]
  192. kona coffee
    kona coffee [...]although web sites we backlink to beneath are considerably not associated to ours, we really feel they are basically worth a go by means of, so have a look[...]
  193. ReplyBennywit
  194. kona coffee
    kona coffee [...]we came across a cool internet site that you may delight in. Take a look if you want[...]
  195. kona coffee
    kona coffee [...]Wonderful story, reckoned we could combine a handful of unrelated information, nevertheless genuinely really worth taking a search, whoa did a single discover about Mid East has got much more problerms at the same time [...]
  196. Replyhttps://www.wac3636.com
    https://www.wac3636.com - 카지노사이트
  197. Replyhttps://www.mccasino777.com
    https://www.mccasino777.com - 바카라사이트
  198. Replyhttps://www.wac3636.com/yescasino11
    https://www.wac3636.com/yescasino11 - 예스카지노
  199. Replyhttps://www.wac3636.com/thekingo
    https://www.wac3636.com/thekingo - 더킹카지노
  200. Replyhttps://www.wac3636.com/firstcasino11
    https://www.wac3636.com/firstcasino11 - 퍼스트카지노
  201. Replyhttps://www.mccasino777.com/yes
    https://www.mccasino777.com/yes - 예스카지노
  202. Replyhttps://www.mccasino777.com/theking
    https://www.mccasino777.com/theking - 더킹카지노
  203. Replyhttps://www.mccasino777.com/first
    https://www.mccasino777.com/first - 퍼스트카지노
  204. ReplySquirt Cams
    Hi there, its nice post regarding media print, we all understand media is a fantastic source of information.
  205. ReplyCharleswef
  206. ReplygabsarroB
  207. Replyvendvenue
  208. ReplyNaisseWetty
    play slots for real money united states real money casino
  209. Replysoollofoccums
    free slots games casino games free slots
  210. ReplySarorierm
    casino games slots free play blackjack for free
  211. ReplySopleMipleveing
    no download no registration slots doubledown casino
  212. ReplySiltthito
    play free vegas casino games gsn casino
  213. Replyteexendalepar
  214. ReplyAltentCer
    online slots real money penny slots free online
  215. Replysteernevions
    online slot machines online casino games
  216. ReplyodockyPayotte
    casino slot machine games free slot play no download
  217. Replyvendvenue
    lady luck casino free games casino games no download no registration
  218. ReplyBennywit
  219. Replynitunsund
    buffalo slots all free casino slots
  220. ReplyGymnsypeLes
    free vegas world slots free slot play no download
  221. ReplySarorierm
  222. ReplySopleMipleveing
    free slots 777 free slots vegas world
  223. Replyhalaymnflavymam
    doubledown casino bonus collector 100 most popular free slots
  224. ReplyEnalpcapcrync
    bovada casino free vegas slots
  225. Replyassemeadhethy
    casino vegas world play slots online
  226. Replyvendvenue
    play slots online for money online casino gambling
  227. Replyodoftebtede
    sizzling 777 slots free online my vegas slots
  228. ReplyGymnsypeLes
    200 no deposit bonus usa free online casino
  229. biyougeka
    biyougeka [...]although websites we backlink to beneath are considerably not connected to ours, we really feel they're basically worth a go via, so have a look[...]
  230. ReplySarorierm
  231. Replyhalaymnflavymam
    free online casino games vegas las vegas free penny slots
  232. ReplySopleMipleveing
    hollywood casino free online games free casino slots games
  233. divorce attorney miami free consultation
    divorce attorney miami free consultation [...]Wonderful story, reckoned we could combine a handful of unrelated data, nevertheless actually worth taking a look, whoa did a single learn about Mid East has got far more problerms as well [...]
  234. Replyamermodcamp
    free slots no download no registration needed caesars free slots online
  235. ReplyanambTinoNorm
    online casino gambling all free casino slots
  236. ReplyBennywit
  237. ReplyNaisseWetty
    usa no deposit casino bonus codes house of fun free slots
  238. Replycighethicrorb
    play slots online all free casino slot games
  239. ReplyGymnsypeLes
    prairie meadows casino free casino games vegas world
  240. Replyhalaymnflavymam
    100 most popular free slots vegas world casino games
  241. ReplyEnalpcapcrync
    free casino games slots online slot games
  242. ReplySopleMipleveing
    lady luck online casino msn games zone online casino
  243. Replyodoftebtede
    online gambling for real money high 5 casino
  244. Replysteernevions
  245. ReplyAltentCer
    pechanga casino high 5 casino
  246. Replyassemeadhethy
    free penny slots no download casino games
  247. Replyamermodcamp
    casino slot machine games 300 free slots no download
  248. Replyvendvenue
    slots casino games charlestown races and slots
  249. ReplyEnalpcapcrync
    free online casino slots casino bonus
  250. Replyhalaymnflavymam
    free slot play 888 casino online
  251. ReplyPypeexpegohof
    vegas slots online free caesars slots free casino
  252. Replysoollofoccums
    casinos near me zone online casino slots
  253. Replyodoftebtede
    best casino slot games most popular free casino slots
  254. Replyassemeadhethy
    hearts of vegas free slots las vegas casinos
  255. Replyteexendalepar
    free slots online play lady luck
  256. ReplyKetrotoutriecot
    heart of vegas slots hollywood casino online
  257. ReplyanambTinoNorm
    old version vegas world best place to gamble in vegas
  258. ReplyNaisseWetty
    100 free casino no deposit online slot games
  259. ReplyEnalpcapcrync
    fortune bay casino slots lounge
  260. Replycighethicrorb
    free vegas slots online free casino games slot
  261. ReplyPypeexpegohof
    online casino bonus no deposit win real cash
  262. ReplySopleMipleveing
    online gambling for real money free casino
  263. Replyodoftebtede
    free slots no download no registration needed free online casino
  264. Replyvendvenue
    slot games infinity slots
  265. ReplyCharleswef
  266. ReplyKetrotoutriecot
    online casinos for us players three rivers casino
  267. Replyassemeadhethy
    vegas world slots games
  268. ReplyNaisseWetty
  269. Replysteernevions
    slots for real money free casino slot games
  270. ReplyPypeexpegohof
    real casino games slots free slotomania on facebook
  271. Replynitunsund
    new online casinos accepting usa no deposit games online for real cash
  272. ReplyArrabyUrimb
    100 no deposit bonus codes hollywood casino free slots
  273. ReplyGymnsypeLes
    slots for real money play free slots
  274. Replyassemeadhethy
    caesar casino online slot games slots of vegas
  275. ReplyEnalpcapcrync
    world class casino slots free casino games no download
  276. Replycighethicrorb
    jackpot magic slots free casino for fun only
  277. Replysteernevions
    slots games penny slots
  278. ReplyanambTinoNorm
    50 lions free slots free slots
  279. ReplyArrabyUrimb
    las vegas free slots free casino games vegas world
  280. ReplyAltentCer
    free slots hollywood play slots online
  281. Replynitunsund
    slot machines for home entertainment free games online no download no registration
  282. ReplySarorierm
    free casino games for fun brian christopher slots
  283. Replysoollofoccums
    myvegas slots play slots
  284. ReplyArrabyUrimb
    free slots no registration slot machines
  285. ReplyEnalpcapcrync
    real casino liberty slots
  286. Replyhalaymnflavymam
    50 lions free slots can play zone casino free
  287. Replyodoftebtede
    big fish casino free online new online casinos
  288. ReplyKetrotoutriecot
    real casino slot machine games free casino
  289. ReplyAltentCer
    free full casino games download big fish free slots games
  290. ReplySopleMipleveing
    free slot games 777 slots of vegas casino
  291. ReplyPypeexpegohof
    play casino games for free 200 free slot games
  292. ReplyEnalpcapcrync
    free online slots house of fun slots
  293. Replynitunsund
    rock n cash casino slots plainridge casino
  294. ReplySarorierm
    casino bonus doubledown casino
  295. Replysoollofoccums
    free penny slots stn play online casino
  296. Replyvendvenue
    hollywood casino list of las vegas casinos
  297. ReplyNaisseWetty
    slots of vegas casino play casino
  298. ReplyHorny Girls Cam
    Spot on with this write-up, I absolutely think this website needs a great deal more attention. I'll probably be back again to read through more, thanks for the info!
  299. Replyodoftebtede
    world class casino slots casino online slots
  300. ReplySopleMipleveing
    200 free slot games las vegas casinos
  301. Replynitunsund
    best free slots no download free slots no download no registration
  302. Replysteernevions
    vegas world slots online gambling
  303. ReplySarorierm
    maryland live casino online best free slots no download
  304. Replyhalaymnflavymam
    all free casino slots slots casino games
  305. ReplygabsarroB
  306. ReplyAltentCer
    new no deposit casinos accepting us players brian christopher slots
  307. Replycighethicrorb
    vegas world slots online casino bonus
  308. ReplySopleMipleveing
    hallmark casino online konami free slots
  309. Replyodoftebtede
    all casino games free download all free slots
  310. Replyteexendalepar
    jackpot party casino slots fortune bay casino
  311. ReplyanambTinoNorm
    google free casino slot games online casino no deposit free welcome bonus
  312. Replyvendvenue
    pala casino online online casinos
  313. ReplyConNenlyadadync
    free casino slots no deposit casinos
  314. ReplyAltentCer
  315. ReplyArrabyUrimb
    hollywood casino online slots free free casino games sun moon
  316. ReplyKetrotoutriecot
    free slots just for fun no money msn games zone online casino
  317. ReplySiltthito
  318. Replyassemeadhethy
    new online casinos accepting usa jack online casino
  319. Replynitunsund
    play free casino games online empire casino online
  320. Replycighethicrorb
  321. ReplyPayday
  322. ReplySopleMipleveing
    play free mr cashman slots slots games vegas world
  323. ReplyPypeexpegohof
    free penny slots no download caesars online casino
  324. ReplyEnalpcapcrync
    dakota sioux casino slotomania slot machines
  325. Replyamermodcamp
    hollywood casino play4fun free casino slots no download
  326. ReplyKiawef
  327. ReplyAltentCer
    lady luck casino free games all free casino slots games
  328. ReplyNaisseWetty
    new online casinos stn play online casino
  329. Replynitunsund
    zone casino vegas world newest usa online casinos
  330. Replycighethicrorb
    online slot machines all free casino slots
  331. ReplyEvawef
  332. ReplyEnalpcapcrync
    gambling sites casinos online
  333. ReplySopleMipleveing
    free casino slot games play free vegas casino games
  334. Replyassemeadhethy
    free casino slots free vegas casino games
  335. ReplyodockyPayotte
  336. Replyteexendalepar
    play slots for free win real money vegas casino games slots free
  337. ReplyAltentCer
    free slots with no download or registration free slot games 777
  338. ReplyanambTinoNorm
    free buffalo slots mgm online casino
  339. ReplyNaisseWetty
    hollywood slots big fish casino
  340. ReplySarorierm
  341. ReplyConNenlyadadync
  342. ReplyGymnsypeLes
    free casino slots with bonus free games online slots
  343. ReplySopleMipleveing
    grand falls casino tropicana online casino
  344. ReplyKetrotoutriecot
    high five casino slots play free slots for fun
  345. ReplyodockyPayotte
    real money casinos turning stone online slots
  346. Replyvendvenue
    100 free casino no deposit free slots no download no registration
  347. ReplyNaisseWetty
    bigfish casino online games free slot machines
  348. ReplyEnalpcapcrync
    slots of vegas real money casino
  349. ReplyanambTinoNorm
    real money casino penny slots for free online
  350. Replycighethicrorb
    free buffalo slots best free slots no download
  351. Replynitunsund
    free coins slotomania casinos online
  352. ReplyPypeexpegohof
    free slots casino games pompeii slots
  353. Replyassemeadhethy
    gambling sites online casino bonus
  354. Replyamermodcamp
    free slots online no download no registration casino games free slots
  355. ReplyArrabyUrimb
    bovada casino free slots slotomania
  356. Replyvendvenue
    doubledown casino old vegas slots
  357. ReplyAltentCer
    slot machine free free slot games 777
  358. ReplyodockyPayotte
    free slots no download no registration us online casinos for real money
  359. ReplyJanewef
  360. ReplyEnalpcapcrync
    real money casino casino real money
  361. ReplyNaisseWetty
    caesar casino online slot games online casino
  362. Replycighethicrorb
    jack online casino free casino slot games
  363. Replysteernevions
    online gambling casino free online casino
  364. ReplyanambTinoNorm
    vegas world free games online slots play free vegas casino games
  365. ReplySarorierm
    big slots games for free casino games free slots
  366. Replynitunsund
    las vegas casinos free slots play free slots for fun
  367. ReplyGymnsypeLes
    borgata online casino online gambling for real money
  368. ReplyAltentCer
    free slots casino games online gambling for real money
  369. Replyassemeadhethy
    free online casino games vegas biggest no deposit welcome bonus
  370. ReplySopleMipleveing
    show all free slots games hollywood casino free slot play
  371. Replyhalaymnflavymam
    sizzling 777 slots free online free blackjack games casino style
  372. ReplySarorierm
    stn play online casino play lady luck online
  373. ReplyPypeexpegohof
    pechanga casino vegas world free games
  374. ReplyanambTinoNorm
    hollywood casino online real money casino
  375. ReplyBoopphacy
  376. ReplyGymnsypeLes
    free casino slots borgata online casino
  377. ReplyAltentCer
    no download no registration slots free buffalo slots