Where can I find developer? I need a Binding

I want to associate my smart home system with OpenHab.
I have several devices “Smart Bus HDL”.
I have a protocol description.
Communication takes place via UDP.
Needed:
When the OH starts - program to poll the status of devices.
When SmartBus sends that state has changed.
Manage devices from the OH.
Protocol: https://drive.google.com/drive/folders/0B4jqteaVA5tcT0RfMTh4aTV6eDA?usp=sharing

My friend did a program on Java.
I understand the protocol and the system.
You will be with me easily.

For example.
If sending UDP command c0a801FA48444C4D495241434C45AAAA1001040079003101070600000003f806 lamp in hall is off. c0a801FA48444C4D495241434C45 - header (in ASCII it is HDLMIRACLE). Then follows a command

maraySendUDPBuf[0]:=mbytIPPart1;{eg. IP: 192.168.18.5, so mbytIPPart1=192}
maraySendUDPBuf[1]:=mbytIPPart2;( instead of the second local IP, here is 168)
maraySendUDPBuf[2]:=mbytIPPart3; (instead of the third local IP, here is 18 )
maraySendUDPBuf[3]:=mbytIPPart4; (instead of the fourth local IP, here is 5 )
maraySendUDPBuf[4]:=$48;{H}
maraySendUDPBuf[5]:=$44;{D}
maraySendUDPBuf[6]:=$4C;{L}
maraySendUDPBuf[7]:=$4D;{M}
maraySendUDPBuf[8]:=$49;{I}
maraySendUDPBuf[9]:=$52;{R}
maraySendUDPBuf[10]:=$41;{A}
maraySendUDPBuf[11]:=$43;{C}
maraySendUDPBuf[12]:=$4C;{L}
maraySendUDPBuf[13]:=$45;{E}

maraySendUDPBuf[14]=$AA; { leading code }
maraySendUDPBuf[15]=$AA; { leading code}
maraySendUDPBuf[16]=$0F; {data package length}
maraySendUDPBuf[17]=$01; {original subnet ID}
maraySendUDPBuf[18]=$FA; {original device ID}
maraySendUDPBuf[19]=$FF; {original device type: higher then 8 }
maraySendUDPBuf[20]=$FE; { original device type: lower then 8 }
maraySendUDPBuf[21]=$00; { operate code: higher then 8 }
maraySendUDPBuf[22]=$31; { operate code: lower then 8}
maraySendUDPBuf[23]=$01; {subnet ID of targeted device }
maraySendUDPBuf[24]=$44 { device ID of targeted device }
maraySendUDPBuf[25]=$01; { additional, channel No }
maraySendUDPBuf[26]=$46; { additional, intensity }
maraySendUDPBuf[27]=$00 { additional, channel running time, higher then 8 }
maraySendUDPBuf[28]=$00; { additional, channel running time, lower then 8 }

How much is it? Who how many it will take to do so?
In advance thank you very much.
Please Help!

1 Like

Don’t want to take any money away from contractors out there, but have you thought of modifying your system to talk to the REST endpoints in openHab?

I dont understand you. My English is not so good. Can you reformulate?
You want to help me do it myself?
I have an engineering mindset.
And I PHP programmer, but I dont understand system OpenHab

Sure… if you enable the REST ui, you should be able to go to http://:8080/doc/index.html and find the swagger documentation for the exposed endpoints.

If you want to map “X” in your system to “Y”, you will need to create an item to contain that state, and there are many examples here. After that, you should be able to submit a simple REST request to one of the items REST interfaces (the PUT one for /item//state I believe) and set the states from your implementation.

does that help?

Nope :slight_smile:
Now I trying send UDP request c0a801FA48444C4D495241434C45AAAA1001040079003101070600000003f806.
And all example https://community.openhab.org/search?q=udp not working on me.
In examples saying about openhab.cfg.
But on my file directory not isset this file.
Google dont answer me “where is openhab.cfg on windows packet” :frowning:
I dont understand where is i should put file mymap.map for commands like “ON=AC01 OFF=B1C0”.
I dont understand how enable debug mode.
start_debug.bat - is silent in all my attempts.

And do I need to restart the server after making changes in demo.items, demo.rules, demo.sitemap?

I don’t mean to be rude, but perhaps it is a good idea to get a better understanding of the basic fundamentals of openHAB first, read the documentation and browse this community? Once you are familiar with those, feel free to raise questions for specific issues you are experiencing?

A good example how to write a Binding to send UDP messages will be the MiLight Binding. You can have a look at the sources on GitHub
https://github.com/openhab/openhab2-addons/tree/master/addons/binding/org.openhab.binding.milight

Reading documentation on not native language - did not bring success.
No examples. Only pieces of code.
For beginners it is not clear how codes should be in the end.
In internet I dont find pages with full examples for OH2.

Can you explain How to install the MiLight Binding?
Thing Configuration - where is i must put this code?

Your questions show me that you haven’t read the documentation for openHAB and therefore do not understand what it is about.

Before diving deeper into this, I would strongly suggest to read the docs, where you can find examples for

How to install a binding with PaperUI

How to define a milight thing in /conf/things/*.things

(or use PaperUI for thing creation)

1 Like

What several people propose:
Instead of writing a binding for yet another smarthome protocol (invented by yourself) for OpenHAB it would be better, if you adopt one of the many protocols already implemented.

Candidates are:

  • REST (JSON over HTTP, which means TCP instead of UDP)
  • MiLight (proprietary UDP protocol)
    There may be others based on UDP which I’m not aware of if you prefer UDP

REST is designed so you don’t have to learn and understand Java at all. You can stay with for example PHP and use JSON und TCP.

UDP has the advantage of having less protocol overhead, so it needs not as much compute power, code and language/ syntax learning.

1 Like

Where can I find developer?
Is there a separate section in the forum?

If you are looking for someone developing a binding to suite your needs, there is no special section in the forum.
You just have to wait until someone speaks up as a reaction to your post and be willing to develop “your” binding.
If nobody speaks up, then there might be nobody volunteering for this, as it is a to special need.

Hi,

There is already a binding here:

https://github.com/andrey-desman/openhab-hdl

Look under bundles/binding/org.openhab.binding.hdl

I had to compile and export the binding JAR by myself. Look up on the Wiki how to set up IDE.

You can declare dimmer as switch if on/off is all you want (only dimmer/relay is supported).

I got it to work, tested with 1.x.

For testing you can have a tcpdump running on UDP/6000, so you can see which commands are actually sent by h/w switches/panels.

The gateway address must be specified in configurations/openhab.cfg It can be exact gateway, address, broadcast address of the lan or generic broadcast address (not recommended, doesn’t work on Windows).
E.g.:

hdl:gateway=192.168.1.13
or
hdl:gateway=192.168.1.255
or
hdl:gateway=255.255.255.255

The items are declared using following syntax:

hdl=“subnet.address:channel”

Example:
Switch a21 {hdl=“1.2:1”}
Switch a22 {hdl=“1.2:2”}
Dimmer a34 {hdl=“1.3:4”}

First two items bind channels 1 and 2 of HDL relay whose address is 1.2
Third items refers to channel 4 of HDL dimmer whose address is 1.3.

Typical Openhab config:

hdl:gateway=192.168.1.140

This is from my item config:

Dimmer Office “Dimmer [%d %%]” {hdl=“1.103:6”}

Sitemap config:

Frame label="Test HDL_" {
	Slider item=Office	switchSupport
}
1 Like

:heart_eyes::heart_eyes::heart_eyes::+1::+1::+1::muscle::muscle::muscle:
But now we have OpenHab version 2 : (

You can stil try to run it with openHAB 2.x

I can’t install it.
Can come one tell me? How to install GitHub - andrey-desman/openhab-hdl: HDL binding for OpenHAB?

Please tell us how you tried to install it and post your binding and item config.

cd /usr/share/openhab2/addons
wget https://github.com/stigli/openhab2-addons/blob/master/addons/binding/org.openhab.binding.hdl/releases/org.openhab.binding.hdl-2.5.0-SNAPSHOT.jar
chown openhab:openhab org.openhab.binding.hdl-2.5.0-SNAPSHOT.jar
reboot

What is “binding and item config”?
It is just installed OH on RPI.
There is no HDL binding in PapperUI.

@Bagunda

As you can read in readme, there is NO configuration in PaperUI.

.

Discovery has not been added yet, so all Things and Items need to be defined in things and items files.