openHAB binding



  • Hi

    I have been playing a bit with creating a binding for openHAB.
    And it is now in a state where i think it is ready for some more testing.

    Links
    GitHub (https://github.com/bloft/openhab)
    Download (http://bkl.linux.dk/org.openhab.binding.mysensors-1.8.0-SNAPSHOT.jar)

    Features

    • Serial Gateway supported Only
    • Supported all sensors (1.6)
    • Discovery of devices (sort of)
    • Support requesting values from openhab

    Experimental / Not Tested

    • Ethernet Gateway
    • Error handling of Gateway (restart of connection)
    • I_CONFIG support add mysensors:metric=true to mysensors:metric=false to openhab.cfg

    Not Working

    • Auto assign of Node ID

    Howto Use

    1. Add jar to addons dir
    2. Modify openhab.cfg add "mysensors:port=/dev/ttyUSB0"
    3. Add items

    Configure ethernet gateway
    Modify openhab.cfg set

    mysensors:type=ethernet
    mysensors:host=<host ip>
    mysensors:port=5003
    

    This is still untested so please report if it is working or not.

    Auto discovery
    Every time a Presentation is detected, example of usage is printed to the openhab.log on INFO

    Example of items:

    Number  Humidity              "Hjemmebio [%s %%Rh]"   <water>         (gBio,gHumidity)        {mysensors="3;0;V_HUM"}
    Number  Temperature           "Hjemmebio [%s °C]"     <temperature>   (gBio,gTemperature)     {mysensors="3;1;V_TEMP"}
    Switch  Motion                "Hjemmebio [%s]"        <motion>        (gBio,gMotion)          {mysensors="3;2;V_TRIPPED"}
    Number  Light                 "Hjemmebio [%s]"        <slider>        (gBio,gLightLevel)      {mysensors="3;3;V_LIGHT_LEVEL"}
    


  • Hi,

    I've tried out you binding on OpenHAB 1.8.1.
    It appears OpenHAB can connect to my serial gateway and receives the messages from my node, but doesn't know what to do with it.

    This is en excerpt of my log:

    2016-02-13 15:05:52.548 [INFO ] [.b.m.internal.MySensorsBinding] - New MySensor node found: node-id=20
     * Example item: 20;255;I_BATTERY_LEVEL      - Use this to report the battery level 0-100 (%)
     * Example item: 20;255;I_SKETCH_NAME        - Sketch name that can be used to identify sensor
     * Example item: 20;255;I_SKETCH_VERSION     - Sketch version that can be reported to keep track of the version of sensor
    2016-02-13 15:05:54.479 [INFO ] [.b.m.internal.MySensorsBinding] - Unknown: MySensors message: node-id=20, child-sensor-id=255, message-type=internal, ack=false, sub-type=I_SKETCH_NAME, payload=Temp/Hum/Motion
    2016-02-13 15:05:54.486 [INFO ] [.b.m.internal.MySensorsBinding] - Unknown: MySensors message: node-id=20, child-sensor-id=255, message-type=internal, ack=false, sub-type=I_SKETCH_VERSION, payload=1.0
    2016-02-13 15:05:54.498 [INFO ] [.b.m.internal.MySensorsBinding] - New MySensor sensor found (Humidity sensor): node-id=20, sensor-id=0 with type S_HUM
     * Example item: 20;0;V_HUM                - Humidity
    2016-02-13 15:05:54.521 [INFO ] [.b.m.internal.MySensorsBinding] - New MySensor sensor found (Temperature sensor): node-id=20, sensor-id=1 with type S_TEMP
     * Example item: 20;1;V_TEMP               - Temperature
     * Example item: 20;1;V_ID                 - Optional unique sensor id (e.g. OneWire DS1820b ids)
    2016-02-13 15:05:54.545 [INFO ] [.b.m.internal.MySensorsBinding] - New MySensor sensor found (Motion sensor): node-id=20, sensor-id=2 with type S_MOTION
     * Example item: 20;2;V_TRIPPED            - Tripped status of a security sensor. (Tripped/Untripped)
     * Example item: 20;2;V_ARMED              - Armed status of a security sensor. (Armed/Bypassed)
    2016-02-13 15:05:54.567 [INFO ] [.b.m.internal.MySensorsBinding] - Unknown: MySensors message: node-id=20, child-sensor-id=2, message-type=set, ack=false, sub-type=V_TRIPPED, payload=1
    2016-02-13 15:05:55.537 [INFO ] [.b.m.internal.MySensorsBinding] - Unknown: MySensors message: node-id=20, child-sensor-id=1, message-type=set, ack=false, sub-type=V_TEMP, payload=19.0
    2016-02-13 15:05:55.551 [INFO ] [.b.m.internal.MySensorsBinding] - Unknown: MySensors message: node-id=20, child-sensor-id=0, message-type=set, ack=false, sub-type=V_HUM, payload=48.0
    

    All the sensors get declared and recognized as their type, but the messages are not being interpreted correctly.

    This is my .items-file:

    Number Humidity "Livingsensor [%s %%Rh]" <water> (GF_Living) {mysensors="20;0;V_HUM"}
    Number Temperature "Livingsensor [%s °C]" <temperature> (GF_Living) {mysensors="20;1;V_TEMP"}
    Switch Motion "Livingsensor [%s]" <motion> (GF_Living) {mysensors="20;2;V_TRIPPED"}
    

    And the sitemap (which of course doesn't update anything yet):

    sitemap default label="Main Menu"
    {
    	Frame label="Systeem"{
    	Group item=System	label="Systeeminfo"	icon="computer" {
    				Text	item=uptime	icon="computer"
    				Text	item=Raspi_CPU	icon="computer"
    				Switch	item=wakingup
    	}
    	}
    	Frame label="MySensors" {
    	Switch item=Motion
    	Text item=Humidity
    	Text item=Temperature
    }
    }
    

    It's been a while since I used OpenHAB and went looking for something more lightweight that had better integration for MySensors, but with your binding, I could revert to include everything I've built for OpenHAB in the past.

    Thanks for your initial work and I hope you can help me out.



  • @BastienVH

    Hi.

    The "Unknown: MySensors message:" log, should only appear if there is not item configured to the nessage sensor and type.
    I will change this message to some thing more meaningful

    So the problem is that your items is not configured or not configured correctly.

    Try add this to you logback.xml

    <logger name="org.openhab.binding.mysensors" level="DEBUG" />
    

    After editing the items file, you should see something like.

    19:59:48.085 DEBUG o.o.b.m.i.MySensorsGenericBindingProvider[:85]- New Item "Humidity_skur (Type=NumberItem, State=Uninitialized)" based on configuration "1;0;V_HUM"
    19:59:48.087 DEBUG o.o.b.m.i.MySensorsGenericBindingProvider[:85]- New Item "Temperature_skur (Type=NumberItem, State=Uninitialized)" based on configuration "1;1;V_TEMP"
    19:59:48.088 DEBUG o.o.b.m.i.MySensorsGenericBindingProvider[:85]- New Item "Light (Type=ColorItem, State=Uninitialized)" based on configuration "2;0;V_RGB"
    19:59:48.090 DEBUG o.o.b.m.i.MySensorsGenericBindingProvider[:85]- New Item "Humidity_3 (Type=NumberItem, State=Uninitialized)" based on configuration "3;0;V_HUM"
    19:59:48.091 DEBUG o.o.b.m.i.MySensorsGenericBindingProvider[:85]- New Item "Motion_3 (Type=SwitchItem, State=Uninitialized)" based on configuration "3;2;V_TRIPPED" 
    19:59:48.094 DEBUG o.o.b.m.i.MySensorsGenericBindingProvider[:85]- New Item "Light_3 (Type=NumberItem, State=Uninitialized)" based on configuration "3;3;V_LIGHT_LEVEL"
    19:59:48.095 DEBUG o.o.b.m.i.MySensorsGenericBindingProvider[:85]- New Item "Watt_4 (Type=NumberItem, State=Uninitialized)" based on configuration "4;1;V_WATT"
    19:59:48.097 DEBUG o.o.b.m.i.MySensorsGenericBindingProvider[:85]- New Item "Kwh_4 (Type=NumberItem, State=Uninitialized)" based on configuration "4;1;V_KWH"
    19:59:48.098 DEBUG o.o.b.m.i.MySensorsGenericBindingProvider[:85]- New Item "PulseCount_4 (Type=NumberItem, State=Uninitialized)" based on configuration "4;1;V_VAR1"
    

    This is from my setup where it works.
    Or an error saying

    Unable to parse "..." need to be in the format <number>;<number>;<type>
    


  • @bkl
    Thanks for your response.
    After adding the line of code to the logback, my debug output remains the same.
    No message that new items have been added based on the configuration, nor parse-errors.

    It's just the same as before: the messages are received, but not interpreted correctly, just the raw data like below:
    2016-02-13 15:05:55.551 [INFO ] [.b.m.internal.MySensorsBinding] - Unknown: MySensors message: node-id=20, child-sensor-id=0, message-type=set, ack=false, sub-type=V_HUM, payload=48.0

    I will start over again from scratch tomorrow, reinstall openhab and your binding to see if it helped.



  • @bkl Awesome! Thank you for this binding. Helps to minimise rules in OH.



  • After reinstalling OpenHAB, the binding works fine, thank you!
    Just a question, don't know if you can help.

    I mapped my serial gateway to /dev/MSgw because ttyUSBx tends to change when unplugging / replugging multiple USB devices into the computer (raspberry pi in my case).
    I've also got a 433MHz gateway attached and when debugging have to unplug it sometimes.
    When trying to start OpenHAB with /dev/MSgw as gateway address I get this:

    2016-02-14 10:58:33.418 [DEBUG] [.b.m.internal.MySensorsBinding] - activate
    RXTX Warning:  Removing stale lock file. /var/lock/LCK..ttyUSB1
    2016-02-14 10:58:34.048 [ERROR] [.o.b.m.internal.gateway.Serial] - Unable to find Serial port '/dev/MSgw'
    

    Do you know how/if I can still you my own custom paths to the gateway?
    Now I changed it to ttyUSB1, but that port might change after rebooting.



  • @BastienVH

    https://github.com/openhab/openhab/wiki/Serial-Binding

    Note2: If you are using non standard serial ports you have to adapt start.sh to have the serial port included. the java command line should then include the following parameters:

    -Dgnu.io.rxtx.SerialPorts=/dev/ttyAMA0
    whereas ttyAMA0 is the path to your serial port. Please be aware to change all scripts you might use for startup (debug, automatic start in linux,...)



  • @bkl Great work, much better than using rules. For me it worked on the first try. I will be very happy to test what I can.

    Just one question, can we only read sensors, or can we interact, as in a relay switch? I tried to use V_LIGHT to add a light switch and got this log "Binding configuration of type 'mysensors' of item ‘Relay‘ could not be parsed correctly.
    org.openhab.model.item.binding.BindingConfigParseException: Invalid Type: V_LIGHT"

    Thanks



  • @andredts said:

    @bkl Great work, much better than using rules. For me it worked on the first try. I will be very happy to test what I can.

    Just one question, can we only read sensors, or can we interact, as in a relay switch? I tried to use V_LIGHT to add a light switch and got this log "Binding configuration of type 'mysensors' of item ‘Relay‘ could not be parsed correctly.
    org.openhab.model.item.binding.BindingConfigParseException: Invalid Type: V_LIGHT"

    Thanks

    Hi, made some more test, and saw that bidding suggests that I use V_STATUS, so I did. Now I can see the change in the relay status and I can even turn it OFF by the OH inteface, but I can´t turn it ON. Maybe I can´t turn it on because I use inverted logic, where High is OFF, does any off that makes sense?

    Thanks



  • Tested on openhab 1.8. works very well. Thanks!



  • @andredts
    Can you try and post the sketch you are using? Or are you using the RelayWithButtonActuator Example?

    I don't thing that the inverted logic should have anything to do with it.



  • @bkl
    Hi, I´m using the MultiRelayButton 0.9b sketch, that I found here in the forum:

    0_1456141716367_Bot_es_relays.ino

    If you like I can try RelayWithButtonActuator Example, but I like the other better because it works when the server is down, no aka from server to make the state change.



  • @andredts
    It was a bug in the code. If you download the new jar then it should be fixed.



  • @bkl
    Thanks, I will give it a try and return to you with feedback.



  • @bkl
    Working beautifully. I have three relay and three switches on the arduino, and no matter how fast I press them I got no miss command. Thanks

    I got one bug, but I think it is Openhab's, when I changed the item file with Openhab running and the switch in the user interface got inverted ON-OFF and OFF-ON.



  • Hi,

    Today I was testing Motion and Door sensors. Motion worked as expected, but the door sensor only works if it's set in OH as a "switch" item(on and off feedback), if you set it as a "contact"(open/closed) item you get the log: " No item configured for "5;1;V_TRIPPED". I have used the example sketch for the sensor



  • @andredts I also notice this with the door sensors. Normal the item must be contact and not switch.



  • @andredts
    Thanks for the feedback, this is now fixed.



  • @bkl
    Thank you for your great work. Happy to help with what I can.

    Already tested and fully abandoned rules for setting up OpenHab with Mysensors.

    Next I will try a analogic read, based on the dust sensor.



  • @andredts
    Using this bidding for 15 days, with 3 relay, a Micro Sensebender, Humidity, Motion and Water level (base on dust sensor). And everything is working great.

    Thanks again.


Log in to reply
 

Looks like your connection to MySensors Forum was lost, please wait while we try to reconnect.