Archiv des Autors: dka

Do you like to have an Arduino KNX shield?

Some friends and I are currently thinking about designing and producing a first batch of Arduino KNX shields (including a matching Arduino library) as an update to the first development version.

First draft of Arduino KNX shield

First draft of Arduino KNX shield

If you are interested in getting an Arduino KNX shield, please sign up below (without any obligations). Based on the number of subscribers we will decide on how to proceed.

We won’t spam you. Period.

If you have any questions or suggestions please let us know by commenting on this post.

Update 12.01.2016: We just got the 100th subscriber on this list. This was our absolute minimum to pursue this project. Stay tuned for updates and thanks for your support.

JIRA DVCS Connector – GitLab Support

Have you ever searched for a way to integrate JIRA with GitLab? Atlassian has a very good connector for GitHub and BitBucket – the JIRA DVCS Connector plugin. This plugin is Open Source (hosted on BitBucket) and can therefore be extended.

Recently I have been extending the JIRA DVCS connector with GitLab support. For now, sync of repositories and all their commits is working for JIRA 6.3.x. The code can be found here:

https://bitbucket.org/dka/jira-dvcs-connector/branch/jira6.3.x

The addition is using the Gitlab Java API Wrapper by Tim Olshansky.

The next steps are (Pull Requests welcome!):

  1. Cleanup and create a pull request to integrate back into the official Atlassian Repo
  2. Port the code for JIRA 6.4.x and newer versions

Prototype PCBs of the Arduino TPUART Interface

Finally the first Arduino TPUART interface on a nice PCB is done:

After figuring out how to solder the surface-mounted TP-UART chip the rest was really easy and the Arduino is working with EIB / KNX as before. If you want to get some PCBs made for yourself, feel free to use this layout from the repository.

EIB/KNX Telegram Structure Quick Reference

I’ve always found it very difficult to get a quick overview of the KNX telegram structure. I also don’t know any good source who has such an overview. That’s why I created a quick reference sheet of my own:

Telegram Structure

Feel free to download and use the PDF version: Telegram Structure.

Here is a source that I found particularly useful (besides some books): http://www.knx.org/fileadmin/template/documents/downloads_support_menu/KNX_tutor_seminar_page/tutor_documentation/05_Serial%20Data%20Transmission_E0808f.pdf

Please let me know if you’re missing some information or if you know of any good sources.

Securing the embedded ActiveMQ in ServiceMix

As soon as you investigate possibilities to let other software connect to the ActiveMQ that comes packaged with ServiceMix you might want to secure those connections. An important step is to authenticate and authorize the clients. This post is based on ServiceMix 4.4.2 and especially highlights the configuration that is required on the ServiceMix side to be able to connect flawlessly to ActiveMQ as it does without authentication.

The first step is to configure the ActiveMQ broker with authentication in $SMX_HOME/etc/activemq-broker.xml. Details can be found on the ActiveMQ homepage.

<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
 xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0"
 xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0"
 xmlns:amq="http://activemq.apache.org/schema/core">
 
...
 <broker xmlns="http://activemq.apache.org/schema/core" brokerName="default" dataDirectory="${karaf.data}/activemq/default" useShutdownHook="false">
...
  <plugins>
   <simpleAuthenticationPlugin>
    <users>
     <authenticationUser username="user1" password="mypw" groups="group1" />
     <authenticationUser username="user2" password="mypw" groups="group2" />
    </users>
   </simpleAuthenticationPlugin>
   <authorizationPlugin>
    <map>
     <authorizationMap>
      <authorizationEntries>
       <!-- Basis permissions applicable to all queues and topics -->
       <authorizationEntry queue=">" read="group1" write="group1" admin="group1" />
       <authorizationEntry topic=">" read="group1" write="group1" admin="group1" />

       <!-- Especially important - everyone needs access here, otherwise clients cannot connect -->
       <authorizationEntry topic="ActiveMQ.Advisory.>" read="group1,group2" write="group1,group2" admin="group1,group2"/>

       <!-- Special access rule for queue "myqueue" -->
       <authorizationEntry queue="myqueue" read="group1,group2" write="group1,group2" admin="group1,group2" />
      </authorizationEntries>
     </authorizationMap>
    </map>
   </authorizationPlugin>
  </plugins>
...
 </broker>
 
 <!-- This configures a connection factory that can be used from your camel rules -->
 <bean id="activemqConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
  <property name="brokerURL" value="vm://default?create=false&amp;waitForStart=10000" />
  <property name="userName" value="user1" />
  <property name="password" value="mypw" />
 </bean>
...
</blueprint>

But now – if you’re using the ActiveMQ webconsole, you will notice it can’t browse queues anymore. To reenable it to do this, just add the following to $SMX_HOME/etc/system.properties:

webconsole.jms.user=user1
webconsole.jms.password=mypw

The webconsole will use this data to connect to ActiveMQ. To enable all functionality I would recommend to create a „servicemix“ user with all privileges that you use for the webconsole as well as the default connection pool for your Camel routes.

Last but not least you can reference the default connection pool in your camel routes like this (using the Spring bean syntax). This avoids having to configure a separate connection pool for each route (along with username and password).

<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:camel="http://camel.apache.org/schema/spring"
 xmlns:osgi="http://www.springframework.org/schema/osgi"
 xsi:schemaLocation="
  http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
  http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring-2.8.5.xsd
  http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd">
 
 <osgi:reference id="pooledConnectionFactory" interface="javax.jms.ConnectionFactory" />
 
 <camelContext xmlns="http://camel.apache.org/schema/spring">
...
 </camelContext>
</beans>

That’s it. After you restart ServiceMix it will have a (very basically) secured ActiveMQ. For a more sophisticated security configuration of ActiveMQ, I once again point you to the ActiveMQ homepage.