After Eclipse Milo™ 0.1.0 was released a few days back and is available on Maven Central since this week it was time to update my OPC UA component for Apache Camel to use the release version of Milo:
Finally! :-) @Eclipse #Milo 0.1.0 is released and on Maven Central! Super Awesome!! @kevinherron @EclipseIoT https://t.co/nRdSx66B34
Jens Reimann (@ctron) January 10, 2017
This means that there is now a released version of, available on Maven Central as well, of the Apache Camel Milo component which can either be used standalone or dropped in directly to some OSGi container like Apache Karaf.
The basics
The component is available from Maven Central under the group ID de.dentrassi.camel.milo and the source code is available on GitHub: ctron/de.dentrassi.camel.milo
For more details also see: Apache Camel component for OPC UA
If you want to use is as a dependency use:
<dependency>
<groupid>de.dentrassi.camel.milo</groupid>
<artifactid>camel-milo</artifactid>
<version>0.1.0</version>
</dependency>
Or for the Apache Karaf feature:
mvn:de.dentrassi.camel.milo/feature/0.1.0/xml/features
Plain Java
If you want to have a quick example you can clone the GitHub repository and simply compile and run an example using the following commands:
git clone https://github.com/ctron/de.dentrassi.camel.milo
cd de.dentrassi.camel.milo/examples/milo-example1
mvn camel:run
This will compile and run a simple example which transfers all temperate measurements from the iot.eclipse.org
MQTT server from the topic javaonedemo/eclipse-greenhouse-9home/sensors/temperature
to the OPC UA tag item-GreenHouse.Temperature
, namespace urn:org:apache:camel
on the connection opc.tcp://localhost:12685
.
The project is a simple OSGi Blueprint bundle which can be also be run by Apache Camel directly. The only configuration is the blueprint file:
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
<bean id="milo-server" class="org.apache.camel.component.milo.server.MiloServerComponent">
<property name="enableAnonymousAuthentication" value="true"/>
</bean>
<camelContext xmlns="http://camel.apache.org/schema/blueprint">
<route id="milo1">
<from uri="paho:javaonedemo/eclipse-greenhouse-9home/sensors/temperature?brokerUrl=tcp://iot.eclipse.org:1883"/>
<convertBodyTo type="java.lang.String"/>
<log message="iot.eclipse.org - temperature: ${body}"/>
<to uri="milo-server:GreenHouse.Temperature"/>
</route>
</camelContext>
</blueprint>
This configures a Camel Milo server component and routes the data from MQTT to OPC UA.
Apache Karaf
If you compile the previous example using:
mvn package
You can download and start an Apache Karaf instance, add the Camel Milo component as a feature and deploy the bundle:
feature:repo-add mvn:de.dentrassi.camel.milo/feature/0.1.0/xml/features
feature:repo-add mvn:org.apache.camel.karaf/apache-camel/2.18.0/xml/features
feature:install aries-blueprint shell-compat camel camel-blueprint camel-paho camel-milo
The next step will download and install the example bundle. If you did compile this yourself, then use the
path of your locally compiled JAR. Otherwise you can also use a pre-compiled example bundle:
bundle:install -s https://dentrassi.de/download/camel-milo/milo-example1-0.1.0-SNAPSHOT.jar
To check if it works you can cannot using an OPC UA client or peek into the log file of Karaf:
karaf> log:tail
2017-01-11 15:11:45,348 | INFO | -930541343163004 | milo1 | 146 - org.apache.camel.camel-core - 2.18.0 | iot.eclipse.org - temperature: 21.19
2017-01-11 15:11:45,958 | INFO | -930541343163004 | milo1 | 146 - org.apache.camel.camel-core - 2.18.0 | iot.eclipse.org - temperature: 21.09
2017-01-11 15:11:49,648 | INFO | -930541343163004 | milo1 | 146 - org.apache.camel.camel-core - 2.18.0 | iot.eclipse.org - temperature: 21.19
FUSE tooling
If you want some more IDE integration you can quickly install the JBoss FUSE tooling and connect via JMX to either the Maven controlled instance (mvn camel:run
) or the Karaf instance and monitor, debug and trace the active Camel routes:
What is next?
For one this component will hopefully become part of Apache Camel itself. And of course there is always something to improve ;-)
I also did update the Kura Addon for Milo, which provides the Milo Camel component for Eclipse Kura 2.1.0 which was recently released. This component is now also available on Maven Central and can easily be deployed into Kura. See the Kura Addons page for more information.
Then there are a few location where I used SNAPSHOT versions of Milo and for some I did promise an update. So I will try to update as many locations as I can with links to the released version of those components.