Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. Controllers
  3. OpenHAB
  4. openHAB binding

openHAB binding

Scheduled Pinned Locked Moved OpenHAB
89 Posts 30 Posters 55.6k Views 33 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • skatunS Offline
    skatunS Offline
    skatun
    wrote on last edited by
    #47

    Hi all,
    can we please document this binding and add it to github of openhab in similiar way to all other bindings? I can help with doing so:)

    1 Reply Last reply
    1
    • bklB bkl

      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"}
      
      AffordableTechA Offline
      AffordableTechA Offline
      AffordableTech
      wrote on last edited by
      #48

      @bkl
      Just wanted to say thanks for making my wish come true!

      My Experience Setting up OpenHab
      If it helps others, I tried OpenHab a year ago but gave it away simply because of the instabilities associated with using MQTT, i.e. needing a server, a broker, a client and the gateway. Far too many modules to configure, making it so easy to get it wrong.

      Thanks to this MySensors/OpenHab binding, the Arduino gateway talks direct to OpenHab without all the middleware, making it easier to configure and more reliable.

      It took only a few minutes to install OpenHab 1.8 and this binding. Pasted the items and sitemap examples and presto - it was working! A very pleasant change from nearly three days wasted trying to get the (alternate) OpenHab2 binding working.

      I'll upgrade to OpenHab2 when I'm confident it is stable and the matching binding is sorted out.

      Paul

      1 Reply Last reply
      0
      • mark_vennM Offline
        mark_vennM Offline
        mark_venn
        wrote on last edited by
        #49

        Hi
        I have setup openhab on my pi 2 and I can see the gateway and a motion sensor with the following output in the openhab log:

        2016-05-28 16:13:05.519 [INFO ] [.o.core.internal.CoreActivator] - openHAB runtime has been started (v1.8.3).
        2016-05-28 16:13:23.624 [INFO ] [o.o.i.s.i.DiscoveryServiceImpl] - mDNS service has been started
        2016-05-28 16:13:24.471 [INFO ] [o.o.i.s.i.DiscoveryServiceImpl] - Service Discovery initialization completed.
        2016-05-28 16:13:29.131 [INFO ] [c.internal.ModelRepositoryImpl] - Loading model 'test.items'
        2016-05-28 16:13:56.064 [INFO ] [penhab.io.rest.RESTApplication] - Started REST API at /rest
        2016-05-28 16:14:02.165 [INFO ] [.o.u.w.i.servlet.WebAppServlet] - Started Classic UI at /classicui/openhab.app
        2016-05-28 16:14:09.952 [DEBUG] [ySensorsGenericBindingProvider] - New Item "Motion (Type=SwitchItem, State=Uninitialized)" based on configuration "3; 2;V_TRIPPED"
        2016-05-28 16:14:10.139 [DEBUG] [.b.m.internal.MySensorsBinding] - activate
        2016-05-28 16:14:10.456 [DEBUG] [.o.b.m.internal.gateway.Serial] - Serial port '/dev/ttyUSB0' has been found.
        2016-05-28 16:14:10.530 [INFO ] [.service.AbstractActiveService] - MySensors Refresh Service has been started
        2016-05-28 16:14:12.181 [DEBUG] [.b.m.internal.MySensorsBinding] - I_LOG_MESSAGE: gateway started, id=0, parent=0, distance=0
        2016-05-28 16:14:12.194 [INFO ] [.b.m.internal.MySensorsBinding] - Gateway Ready
        2016-05-28 16:14:35.120 [DEBUG] [.b.m.internal.MySensorsBinding] - I_LOG_MESSAGE: read: 1-1-0 s=1,c=1,t=16,pt=0,l=1,sg=0:1
        2016-05-28 16:14:35.136 [INFO ] [.b.m.internal.MySensorsBinding] - No item configured for "1;1;V_TRIPPED"
        2016-05-28 16:14:49.747 [DEBUG] [.b.m.internal.MySensorsBinding] - I_LOG_MESSAGE: read: 1-1-0 s=255,c=3,t=15,pt=2,l=2,sg=0:0
        2016-05-28 16:14:49.760 [INFO ] [.b.m.internal.MySensorsBinding] - No item configured for "1;255;I_REQUEST_SIGNING"
        2016-05-28 16:14:49.771 [DEBUG] [.b.m.internal.MySensorsBinding] - I_LOG_MESSAGE: read: 1-1-0 s=255,c=0,t=18,pt=0,l=5,sg=0:1.5.4
        2016-05-28 16:14:49.836 [INFO ] [.b.m.internal.MySensorsBinding] - New MySensor node found: node-id=1 ( REPEATER )

        • Example item: 1;255;I_BATTERY_LEVEL - Use this to report the battery level 0-100 (%)
        • Example item: 1;255;I_SKETCH_NAME - Sketch name that can be used to identify sensor
        • Example item: 1;255;I_SKETCH_VERSION - Sketch version that can be reported to keep track of the version of sensor
          2016-05-28 16:14:49.851 [DEBUG] [.b.m.internal.MySensorsBinding] - I_LOG_MESSAGE: read: 1-1-0 s=255,c=3,t=6,pt=1,l=1,sg=0:0
          2016-05-28 16:14:50.016 [DEBUG] [.b.m.internal.MySensorsBinding] - I_LOG_MESSAGE: send: 0-0-1-1 s=255,c=3,t=6,pt=0,l=1,sg=0,st=ok:M
          2016-05-28 16:14:51.780 [DEBUG] [.b.m.internal.MySensorsBinding] - I_LOG_MESSAGE: read: 1-1-0 s=255,c=3,t=11,pt=0,l=13,sg=0:Motion Sensor
          2016-05-28 16:14:51.792 [INFO ] [.b.m.internal.MySensorsBinding] - No item configured for "1;255;I_SKETCH_NAME"
          2016-05-28 16:14:51.806 [DEBUG] [.b.m.internal.MySensorsBinding] - I_LOG_MESSAGE: read: 1-1-0 s=255,c=3,t=12,pt=0,l=3,sg=0:1.0
          2016-05-28 16:14:51.821 [INFO ] [.b.m.internal.MySensorsBinding] - No item configured for "1;255;I_SKETCH_VERSION"
          2016-05-28 16:14:51.832 [DEBUG] [.b.m.internal.MySensorsBinding] - I_LOG_MESSAGE: read: 1-1-0 s=1,c=0,t=1,pt=0,l=0,sg=0:
          2016-05-28 16:14:51.847 [INFO ] [.b.m.internal.MySensorsBinding] - New MySensor sensor found (Motion sensor): node-id=1, sensor-id=1 with type S_MOTION
        • Example item: 1;1;V_TRIPPED - Tripped status of a security sensor. (Tripped/Untripped)
        • Example item: 1;1;V_ARMED - Armed status of a security sensor. (Armed/Bypassed)
          2016-05-28 16:14:51.861 [DEBUG] [.b.m.internal.MySensorsBinding] - I_LOG_MESSAGE: read: 1-1-0 s=1,c=1,t=16,pt=0,l=1,sg=0:1
          2016-05-28 16:14:51.868 [INFO ] [.b.m.internal.MySensorsBinding] - No item configured for "1;1;V_TRIPPED"
          2016-05-28 16:15:10.721 [DEBUG] [.b.m.internal.MySensorsBinding] - Gateway Version: 1.5.4
          2016-05-28 16:15:43.284 [DEBUG] [.b.m.internal.MySensorsBinding] - I_LOG_MESSAGE: read: 1-1-0 s=1,c=1,t=16,pt=0,l=1,sg=0:0
          2016-05-28 16:15:43.298 [INFO ] [.b.m.internal.MySensorsBinding] - No item configured for "1;1;V_TRIPPED"

        "no item configured fo "1;1;V_TRIPPED" seems to be confusing me. I have entered the motion sensor into the items file as in the example so can you point me in the direction to correct this please?
        I am very impressed so far, easier to get to this stage than it was using insteon!

        1 Reply Last reply
        0
        • mark_vennM Offline
          mark_vennM Offline
          mark_venn
          wrote on last edited by
          #50

          Found it! I had the .items entries wrong and if I had read things properly I would have worked it out before :disappointed_relieved:

          2016-05-28 18:22:35.565 [INFO ] [c.internal.ModelRepositoryImpl] - Refreshing model 'test.items'
          2016-05-28 18:22:35.649 [DEBUG] [ySensorsGenericBindingProvider] - New Item "Motion (Type=SwitchItem, State=Uninitialized)" based on configuration "1;1;V_TRIPPED"
          2016-05-28 18:22:46.463 [DEBUG] [.b.m.internal.MySensorsBinding] - I_LOG_MESSAGE: read: 1-1-0 s=1,c=1,t=16,pt=0,l=1,sg=0:0
          2016-05-28 18:22:46.488 [DEBUG] [.b.m.internal.MySensorsBinding] - Motion = OFF
          2016-05-28 18:22:46.504 [DEBUG] [.b.m.internal.MySensorsBinding] - internalReceiveUpdate(Motion,OFF) is called!
          2016-05-28 18:22:52.541 [DEBUG] [.b.m.internal.MySensorsBinding] - I_LOG_MESSAGE: read: 1-1-0 s=1,c=1,t=16,pt=0,l=1,sg=0:1
          2016-05-28 18:22:52.552 [DEBUG] [.b.m.internal.MySensorsBinding] - internalReceiveUpdate(Motion,ON) is called!
          2016-05-28 18:22:52.562 [DEBUG] [.b.m.internal.MySensorsBinding] - Motion = ON
          2016-05-28 18:23:11.590 [DEBUG] [.b.m.internal.MySensorsBinding] - Gateway Version: 1.5.4
          2016-05-28 18:23:58.676 [DEBUG] [.b.m.internal.MySensorsBinding] - I_LOG_MESSAGE: read: 1-1-0 s=1,c=1,t=16,pt=0,l=1,sg=0:0
          2016-05-28 18:23:58.688 [DEBUG] [.b.m.internal.MySensorsBinding] - internalReceiveUpdate(Motion,OFF) is called!
          2016-05-28 18:23:58.698 [DEBUG] [.b.m.internal.MySensorsBinding] - Motion = OFF
          2016-05-28 18:24:05.045 [DEBUG] [.b.m.internal.MySensorsBinding] - I_LOG_MESSAGE: read: 1-1-0 s=1,c=1,t=16,pt=0,l=1,sg=0:1
          2016-05-28 18:24:05.058 [DEBUG] [.b.m.internal.MySensorsBinding] - internalReceiveUpdate(Motion,ON) is called!
          2016-05-28 18:24:05.067 [DEBUG] [.b.m.internal.MySensorsBinding] - Motion = ON
          2016-05-28 18:24:08.746 [DEBUG] [.b.m.internal.MySensorsBinding] - I_LOG_MESSAGE: read and forward: 4-4-255 s=255,c=3,t=7,pt=0,l=0,sg=0:
          2016-05-28 18:24:09.134 [DEBUG] [.b.m.internal.MySensorsBinding] - I_LOG_MESSAGE: send: 0-0-4-4 s=255,c=3,t=8,pt=1,l=1,sg=0,st=fail:0
          2016-05-28 18:24:11.594 [DEBUG] [.b.m.internal.MySensorsBinding] - Gateway Version: 1.5.4
          2016-05-28 18:25:11.141 [DEBUG] [.b.m.internal.MySensorsBinding] - I_LOG_MESSAGE: read: 1-1-0 s=1,c=1,t=16,pt=0,l=1,sg=0:0
          2016-05-28 18:25:11.155 [DEBUG] [.b.m.internal.MySensorsBinding] - internalReceiveUpdate(Motion,OFF) is called!
          2016-05-28 18:25:11.165 [DEBUG] [.b.m.internal.MySensorsBinding] - Motion = OFF

          1 Reply Last reply
          0
          • mark_vennM Offline
            mark_vennM Offline
            mark_venn
            wrote on last edited by
            #51

            @hek @bkl
            Just want to say a REAL BIG THANKS for this binding and for the whole mysensors system.

            I have been trying to use openhab 1.8 for my PhD project and I initially setup insteon and had so many headaches I gave up in disgust. I was pointed in the direction of mysensors as a possibility and I thought I had nothing to lose.
            Not only is the binding a success, I have two motion sensors running, one on a pro mini with 2xAA batteries running it as a test and one on a uno, I have persistence running and successfully logging the status of my devices on each and every update! I am using mongodb for the persistence methods as I love nosql, even though I have to teach relational databases at the moment, (trying to turn the Uni onto the light side).

            Anyway, for those interested, here is a log from the db:
            {
            "_id" : ObjectId("574acbe1e4b0cd9ed18ada26"),
            "item" : "DiningRoom",
            "realName" : "DiningRoom",
            "timestamp" : ISODate("2016-05-29T11:00:49.761Z"),
            "value" : "ON"
            }
            {
            "_id" : ObjectId("574acbe3e4b0cd9ed18ada27"),
            "item" : "DiningRoom",
            "realName" : "DiningRoom",
            "timestamp" : ISODate("2016-05-29T11:00:51.136Z"),
            "value" : "OFF"
            }
            {
            "_id" : ObjectId("574acc25e4b0cd9ed18ada2a"),
            "item" : "DiningRoom",
            "realName" : "DiningRoom",
            "timestamp" : ISODate("2016-05-29T11:01:57.823Z"),
            "value" : "ON"
            }

            the .items file looks like this, (so you can see the naming strategy)

            Switch DiningRoom "DiningSensor [%s]" <motion> (GF_Dining) {mysensors="1;1;V_TRIPPED"}
            Switch LivingRoom "LivingSensor [%s]" <motion> (GF_Living) {mysensors="2;1;V_TRIPPED"}

            .All in a brilliant success. Now to play with the rules and add lots of new sensors.
            THANKS AGAIN!!!!!

            1 Reply Last reply
            1
            • AffordableTechA Offline
              AffordableTechA Offline
              AffordableTech
              wrote on last edited by
              #52

              A Short Followup

              I've had this binding running 24x7 for a week or more and it has been faultless! - Thank You!

              For the newbie attempting to get OpenHab up and running, this is the answer, the only answer! It's so clean and simple, download OpenHab (1.8) and this binding and run.

              Cheers,

              Paul

              1 Reply Last reply
              0
              • skatunS Offline
                skatunS Offline
                skatun
                wrote on last edited by
                #53

                I am amazed by your work @bkl !
                I have a few question for you:
                Can I use your binding somehow to integrate RGB light in openhab with the color wheel? I have some programmable rgb ledstrip that I was thinking about integrating into openhab, but I am unsure how to do this. I was thinking about using the color widget in the sitemap together with a DMX syntax:

                if my led strip has 56 diodes

                Color rgb_strip_living_room "RGB Ledstrip Living Room" {dmx="CHANNEL[0-56]"}.
                

                But then i could also use the same ledstrip in 2 by setting two different color like

                Color rgb_strip_living_room2 "RGB Ledstrip Living Room" {dmx="CHANNEL0-23]"}
                Color rgb_strip_living_room3 "RGB Ledstrip Living Room" {dmx="CHANNEL24-56]"}
                

                Then I would also like to send IR commands from OH to mysensor, have any of you done that?

                Keep up the great work, and let me know if I somehow can help with expanding/documenting the binding.

                bklB 1 Reply Last reply
                0
                • skatunS skatun

                  I am amazed by your work @bkl !
                  I have a few question for you:
                  Can I use your binding somehow to integrate RGB light in openhab with the color wheel? I have some programmable rgb ledstrip that I was thinking about integrating into openhab, but I am unsure how to do this. I was thinking about using the color widget in the sitemap together with a DMX syntax:

                  if my led strip has 56 diodes

                  Color rgb_strip_living_room "RGB Ledstrip Living Room" {dmx="CHANNEL[0-56]"}.
                  

                  But then i could also use the same ledstrip in 2 by setting two different color like

                  Color rgb_strip_living_room2 "RGB Ledstrip Living Room" {dmx="CHANNEL0-23]"}
                  Color rgb_strip_living_room3 "RGB Ledstrip Living Room" {dmx="CHANNEL24-56]"}
                  

                  Then I would also like to send IR commands from OH to mysensor, have any of you done that?

                  Keep up the great work, and let me know if I somehow can help with expanding/documenting the binding.

                  bklB Offline
                  bklB Offline
                  bkl
                  wrote on last edited by
                  #54

                  Hi @skatun

                  I have some RGB lights, using mysensors and openhab

                  Item configuration

                  Color	Light_6_0		"Light Left"						(gBio,gLights)		{mysensors="6;0;V_RGB"}
                  

                  Sketch

                  #include <MySensor.h>
                  #include <ChainableLED.h>
                  #include <SPI.h>
                  
                  #define NODE_ID 6
                  
                  #define NUM_LEDS 1
                  
                  int counter[NUM_LEDS];
                  
                  int current[NUM_LEDS][3];
                  int step[NUM_LEDS][3];
                  
                  unsigned long SLEEP_TIME = 10;
                  
                  MySensor gw;
                  //ChainableLED leds(7, 8, 1);
                  ChainableLED leds(5, 6, NUM_LEDS);  // CLK, DATA, LEDS
                  
                  void setup() {   
                    leds.init();
                    for(byte childId = 0; childId < NUM_LEDS; childId++) {
                      counter[childId] = 0;
                      current[childId][0] = 0;
                      current[childId][1] = 0;
                      current[childId][2] = 0;
                      step[childId][0] = 0;
                      step[childId][1] = 0;
                      step[childId][2] = 0;
                      leds.setColorRGB(childId, current[childId][0], current[childId][1], current[childId][2]); // Turn of on startup
                    }
                    
                    // Initialize library and add callback for incoming messages
                    gw.begin(incomingMessage, NODE_ID, true);
                    // Send the sketch version information to the gateway and Controller
                    gw.sendSketchInfo("RGB Led", "1.2");
                    for(byte childId = 0; childId < NUM_LEDS; childId++) {
                     gw.present(childId, S_RGB_LIGHT);
                    }
                  }
                  
                  
                  void loop()  {
                    // Alway process incoming messages whenever possible
                    gw.process();
                  
                    for(byte childId = 0; childId < NUM_LEDS; childId++) {
                      if(counter[childId] >= 0) {
                        counter[childId]--;
                        int i = 1020 - counter[childId];
                        current[childId][0] = calculateVal(step[childId][0], current[childId][0], i);
                        current[childId][1] = calculateVal(step[childId][1], current[childId][1], i);
                        current[childId][2] = calculateVal(step[childId][2], current[childId][2], i);
                        
                        leds.setColorRGB(childId, current[childId][0], current[childId][1], current[childId][2]);
                      }
                    }
                    
                    gw.wait(SLEEP_TIME);
                  }
                  
                  void incomingMessage(const MyMessage &message) {
                    // We only expect one type of message from controller. But we better check anyway.
                    if (message.type==V_RGB) {
                      String hexstring = message.getString();
                      long number = (long) strtol( &hexstring[0], NULL, 16);
                      int colorR = number >> 16;
                      int colorG = number >> 8 & 0xFF;
                      int colorB = number & 0xFF;
                      
                       // Write some debug info
                       Serial.print("Incoming change for sensor:");
                       Serial.print(message.sensor);
                       Serial.print(", Red: ");
                       Serial.print(colorR);
                       Serial.print(", Green: ");
                       Serial.print(colorG);
                       Serial.print(", Blue: ");
                       Serial.print(colorB);
                       Serial.print(", New status: ");
                       Serial.println(message.getString());
                  
                        setColor(message.sensor, colorR, colorG, colorB);
                       //leds.setColorRGB(message.sensor, colorR, colorG, colorB);
                     } 
                  }
                  
                  void setColor(byte led, int R, int G, int B) {
                    step[led][0] = calculateStep(current[led][0], R);
                    step[led][1] = calculateStep(current[led][1], G);
                    step[led][2] = calculateStep(current[led][2], B);
                  
                    counter[led] = 255;
                  }
                  
                  int calculateStep(int prevValue, int endValue) {
                    int step = endValue - prevValue; // What's the overall gap?
                    if (step) {                      // If its non-zero, 
                      step = 255/step;              //   divide by 1020
                    } 
                    return step;
                  }
                  
                  int calculateVal(int step, int val, int i) {
                  
                    if ((step) && i % step == 0) { // If step is non-zero and its time to change a value,
                      if (step > 0) {              //   increment the value if step is positive...
                        val += 1;           
                      } 
                      else if (step < 0) {         //   ...or decrement it if step is negative
                        val -= 1;
                      } 
                    }
                    // Defensive driving: make sure val stays in the range 0-255
                    if (val > 255) {
                      val = 255;
                    } 
                    else if (val < 0) {
                      val = 0;
                    }
                    return val;
                  }
                  

                  The sketch may be a bit over complicated, but the important part is the incomingMessage, all the rest is because I like to fade between the colors.

                  Hope it help you.

                  skatunS 1 Reply Last reply
                  0
                  • bklB bkl

                    Hi @skatun

                    I have some RGB lights, using mysensors and openhab

                    Item configuration

                    Color	Light_6_0		"Light Left"						(gBio,gLights)		{mysensors="6;0;V_RGB"}
                    

                    Sketch

                    #include <MySensor.h>
                    #include <ChainableLED.h>
                    #include <SPI.h>
                    
                    #define NODE_ID 6
                    
                    #define NUM_LEDS 1
                    
                    int counter[NUM_LEDS];
                    
                    int current[NUM_LEDS][3];
                    int step[NUM_LEDS][3];
                    
                    unsigned long SLEEP_TIME = 10;
                    
                    MySensor gw;
                    //ChainableLED leds(7, 8, 1);
                    ChainableLED leds(5, 6, NUM_LEDS);  // CLK, DATA, LEDS
                    
                    void setup() {   
                      leds.init();
                      for(byte childId = 0; childId < NUM_LEDS; childId++) {
                        counter[childId] = 0;
                        current[childId][0] = 0;
                        current[childId][1] = 0;
                        current[childId][2] = 0;
                        step[childId][0] = 0;
                        step[childId][1] = 0;
                        step[childId][2] = 0;
                        leds.setColorRGB(childId, current[childId][0], current[childId][1], current[childId][2]); // Turn of on startup
                      }
                      
                      // Initialize library and add callback for incoming messages
                      gw.begin(incomingMessage, NODE_ID, true);
                      // Send the sketch version information to the gateway and Controller
                      gw.sendSketchInfo("RGB Led", "1.2");
                      for(byte childId = 0; childId < NUM_LEDS; childId++) {
                       gw.present(childId, S_RGB_LIGHT);
                      }
                    }
                    
                    
                    void loop()  {
                      // Alway process incoming messages whenever possible
                      gw.process();
                    
                      for(byte childId = 0; childId < NUM_LEDS; childId++) {
                        if(counter[childId] >= 0) {
                          counter[childId]--;
                          int i = 1020 - counter[childId];
                          current[childId][0] = calculateVal(step[childId][0], current[childId][0], i);
                          current[childId][1] = calculateVal(step[childId][1], current[childId][1], i);
                          current[childId][2] = calculateVal(step[childId][2], current[childId][2], i);
                          
                          leds.setColorRGB(childId, current[childId][0], current[childId][1], current[childId][2]);
                        }
                      }
                      
                      gw.wait(SLEEP_TIME);
                    }
                    
                    void incomingMessage(const MyMessage &message) {
                      // We only expect one type of message from controller. But we better check anyway.
                      if (message.type==V_RGB) {
                        String hexstring = message.getString();
                        long number = (long) strtol( &hexstring[0], NULL, 16);
                        int colorR = number >> 16;
                        int colorG = number >> 8 & 0xFF;
                        int colorB = number & 0xFF;
                        
                         // Write some debug info
                         Serial.print("Incoming change for sensor:");
                         Serial.print(message.sensor);
                         Serial.print(", Red: ");
                         Serial.print(colorR);
                         Serial.print(", Green: ");
                         Serial.print(colorG);
                         Serial.print(", Blue: ");
                         Serial.print(colorB);
                         Serial.print(", New status: ");
                         Serial.println(message.getString());
                    
                          setColor(message.sensor, colorR, colorG, colorB);
                         //leds.setColorRGB(message.sensor, colorR, colorG, colorB);
                       } 
                    }
                    
                    void setColor(byte led, int R, int G, int B) {
                      step[led][0] = calculateStep(current[led][0], R);
                      step[led][1] = calculateStep(current[led][1], G);
                      step[led][2] = calculateStep(current[led][2], B);
                    
                      counter[led] = 255;
                    }
                    
                    int calculateStep(int prevValue, int endValue) {
                      int step = endValue - prevValue; // What's the overall gap?
                      if (step) {                      // If its non-zero, 
                        step = 255/step;              //   divide by 1020
                      } 
                      return step;
                    }
                    
                    int calculateVal(int step, int val, int i) {
                    
                      if ((step) && i % step == 0) { // If step is non-zero and its time to change a value,
                        if (step > 0) {              //   increment the value if step is positive...
                          val += 1;           
                        } 
                        else if (step < 0) {         //   ...or decrement it if step is negative
                          val -= 1;
                        } 
                      }
                      // Defensive driving: make sure val stays in the range 0-255
                      if (val > 255) {
                        val = 255;
                      } 
                      else if (val < 0) {
                        val = 0;
                      }
                      return val;
                    }
                    

                    The sketch may be a bit over complicated, but the important part is the incomingMessage, all the rest is because I like to fade between the colors.

                    Hope it help you.

                    skatunS Offline
                    skatunS Offline
                    skatun
                    wrote on last edited by
                    #55

                    @bkl Thanks for your code, just to be sure, you only have 1 LED in your LED strip? NUM_LEDS = 1 or does that define child ID? In mine I have 38, 52,43,78,23,67 leds in my ledstrips. How can I modify your code to be used as locally attached sensor on the gateway? Also I have 6 ledstrip connected to my gateway.

                    Copyright 2015 Sensnology | Forum Guidelines | Privacy Policy | Terms of Service

                    bklB 1 Reply Last reply
                    0
                    • skatunS skatun

                      @bkl Thanks for your code, just to be sure, you only have 1 LED in your LED strip? NUM_LEDS = 1 or does that define child ID? In mine I have 38, 52,43,78,23,67 leds in my ledstrips. How can I modify your code to be used as locally attached sensor on the gateway? Also I have 6 ledstrip connected to my gateway.

                      Copyright 2015 Sensnology | Forum Guidelines | Privacy Policy | Terms of Service

                      bklB Offline
                      bklB Offline
                      bkl
                      wrote on last edited by
                      #56

                      @skatun

                      My code was just to show how the integration between openhab and mysensors is working.
                      And correct my led strip is controlled by a single P9813 chip,

                      You could try and change NUM_LEDS but this will also increase the number of Sensors in openhab/mysensors
                      Or you could group them togetter in the sketch.

                      1 Reply Last reply
                      0
                      • NickBuilderN Offline
                        NickBuilderN Offline
                        NickBuilder
                        wrote on last edited by
                        #57

                        Is it possible to change de default baud rate for the 1.8.0 binding? As I'm using a 8 MHz mini for my serial gateway I would like to set the baudrate to 38.4 kbps.

                        I read that this would be possible for the Openhab 2.0 binding but I'm reluctant to move to Openhab 2.0 as its only a beta at the moment.

                        Is it possible otherwise to compile a new jar with this lower baud rate? I guess two versions would be enough, 38.4 and 115.2.

                        Thanks!

                        bklB 1 Reply Last reply
                        0
                        • jerseyguy1996J Offline
                          jerseyguy1996J Offline
                          jerseyguy1996
                          wrote on last edited by jerseyguy1996
                          #58

                          I've been trying to get a mysensors node which is using an nRF24L01+ to transmit to a directly connected nRF24L01+ on a Raspberry Pi 3 running PiGatewaySerial. When I start the gateway I get

                          Starting PiGatewaySerial...
                          Protocol version - 1.4
                          Created PTY '/dev/pts/0'
                          Gateway tty: /dev/ttyMySensorsGateway
                          

                          Following some other instruction I created a link to /dev/ttyUSB20 so that openhab could recognize it. I have Openhab with your serial binding in the addons folder. I am having difficulty with the binding. I feel like I have made a tiny bit of headway but it doesn't seem to be able to bind with it. In the openhab debug log I get:

                          2016-07-16 14:39:15.537 [ERROR] [.service.AbstractActiveService] - Error while executing background thread MySensors Refresh Service
                          java.lang.NullPointerException: null
                          	at org.openhab.binding.mysensors.internal.gateway.Serial.write(Serial.java:82) ~[na:na]
                          	at org.openhab.binding.mysensors.internal.MySensorsBinding.execute(MySensorsBinding.java:178) ~[na:na]
                          	at org.openhab.core.binding.AbstractActiveBinding$BindingActiveService.execute(AbstractActiveBinding.java:156) ~[na:na]
                          	at org.openhab.core.service.AbstractActiveService$RefreshThread.run(AbstractActiveService.java:173) ~[na:na]
                          

                          What other information would you need to know to help me trouble shoot this?

                          EDIT: This has been solved. See here:
                          https://forum.mysensors.org/topic/4315/attempt-to-bind-ttymygatewayserial-to-openhab-failing-miserably

                          1 Reply Last reply
                          0
                          • NickBuilderN NickBuilder

                            Is it possible to change de default baud rate for the 1.8.0 binding? As I'm using a 8 MHz mini for my serial gateway I would like to set the baudrate to 38.4 kbps.

                            I read that this would be possible for the Openhab 2.0 binding but I'm reluctant to move to Openhab 2.0 as its only a beta at the moment.

                            Is it possible otherwise to compile a new jar with this lower baud rate? I guess two versions would be enough, 38.4 and 115.2.

                            Thanks!

                            bklB Offline
                            bklB Offline
                            bkl
                            wrote on last edited by
                            #59

                            @NickBuilder

                            Hi

                            No need for a new version, baudrate is configurable

                            just set.
                            mysensors:baudrate=38400

                            NickBuilderN 2 Replies Last reply
                            1
                            • bklB bkl

                              @NickBuilder

                              Hi

                              No need for a new version, baudrate is configurable

                              just set.
                              mysensors:baudrate=38400

                              NickBuilderN Offline
                              NickBuilderN Offline
                              NickBuilder
                              wrote on last edited by
                              #60

                              @bkl

                              Thank you @bkl! That is the best answer I could have wished for. :)

                              I've actually tried some similar prefixes to the port definition, such as "...:38400" and "...@38400" etc. I haven't found any documentation describing the available binding settings more than the port definition that you mention here at the top. I guess the documentation will be more complete for the Openhab 2.0 binding description.

                              Thank you for your great work here!

                              1 Reply Last reply
                              1
                              • Peter ŠuľajP Offline
                                Peter ŠuľajP Offline
                                Peter Šuľaj
                                wrote on last edited by
                                #61

                                Hello I have a trouble with binding.
                                My gateway 1.5.4 still only show
                                [DEBUG] [.b.m.internal.MySensorsBinding] - Gateway Version: 1.5.4
                                2016-07-20 15:30:58.044 [DEBUG] [.b.m.internal.MySensorsBinding] - I_LOG_MESSAGE: read: 255-255-0 s=255,c=3,t=3,pt=0,l=0,sg=0:
                                2016-07-20 15:31:00.060 [DEBUG] [.b.m.internal.MySensorsBinding] - I_LOG_MESSAGE: read: 255-255-0 s=255,c=3,t=3,pt=0,l=0,sg=0:
                                2016-07-20 15:31:02.067 [DEBUG] [.b.m.internal.MySensorsBinding] - I_LOG_MESSAGE: read: 255-255-0 s=255,c=3,t=3,pt=0,l=0,sg=0:
                                2016-07-20 15:31:04.074 [DEBUG] [.b.m.internal.MySensorsBinding] - I_LOG_MESSAGE: read: 255-255-0 s=255,c=3,t=3,pt=0,l=0,sg=0:
                                but nothing else .
                                I tested lot of sensor but still same error.
                                Have you any idea ?
                                Thanks

                                jerseyguy1996J 1 Reply Last reply
                                0
                                • Peter ŠuľajP Peter Šuľaj

                                  Hello I have a trouble with binding.
                                  My gateway 1.5.4 still only show
                                  [DEBUG] [.b.m.internal.MySensorsBinding] - Gateway Version: 1.5.4
                                  2016-07-20 15:30:58.044 [DEBUG] [.b.m.internal.MySensorsBinding] - I_LOG_MESSAGE: read: 255-255-0 s=255,c=3,t=3,pt=0,l=0,sg=0:
                                  2016-07-20 15:31:00.060 [DEBUG] [.b.m.internal.MySensorsBinding] - I_LOG_MESSAGE: read: 255-255-0 s=255,c=3,t=3,pt=0,l=0,sg=0:
                                  2016-07-20 15:31:02.067 [DEBUG] [.b.m.internal.MySensorsBinding] - I_LOG_MESSAGE: read: 255-255-0 s=255,c=3,t=3,pt=0,l=0,sg=0:
                                  2016-07-20 15:31:04.074 [DEBUG] [.b.m.internal.MySensorsBinding] - I_LOG_MESSAGE: read: 255-255-0 s=255,c=3,t=3,pt=0,l=0,sg=0:
                                  but nothing else .
                                  I tested lot of sensor but still same error.
                                  Have you any idea ?
                                  Thanks

                                  jerseyguy1996J Offline
                                  jerseyguy1996J Offline
                                  jerseyguy1996
                                  wrote on last edited by
                                  #62

                                  @Peter-Šuľaj I'm fairly new to this stuff, but curious if you are trying to auto-assign node ID? I don't believe the MySensorsBinding supports auto-assign so you have to define it as static and use:

                                  #define NODEID  3 //or whatever
                                  
                                  //and then call this in your setup instead of Sensor.begin();
                                  Sensor.begin(NULL, NODEID);
                                  

                                  in your script. Again, not sure if this is your problem but I figured I would chime in.

                                  1 Reply Last reply
                                  0
                                  • bklB bkl

                                    @NickBuilder

                                    Hi

                                    No need for a new version, baudrate is configurable

                                    just set.
                                    mysensors:baudrate=38400

                                    NickBuilderN Offline
                                    NickBuilderN Offline
                                    NickBuilder
                                    wrote on last edited by
                                    #63

                                    @bkl
                                    Hello again!

                                    Is there also support for sending the ack bit from the gw in some way? I saw that this is actually possible in the 2.0 binding. If it's possible how is a "not ack" handled? This would be very useful for e.g. a relay sensor.

                                    I also noticed that you're not the author of the 2.0 binding, I'm sorry for making that assumption.

                                    Thanks!

                                    1 Reply Last reply
                                    0
                                    • jerseyguy1996J Offline
                                      jerseyguy1996J Offline
                                      jerseyguy1996
                                      wrote on last edited by
                                      #64

                                      This binding works perfectly! Thanks for putting it together!

                                      1 Reply Last reply
                                      0
                                      • HenryWhiteH Offline
                                        HenryWhiteH Offline
                                        HenryWhite
                                        wrote on last edited by
                                        #65

                                        Thanks for the Binding! It would be very nice if you could implement SmartSleep, so that the node sends a heartbeat message to the Controller when waking up.

                                        1 Reply Last reply
                                        0
                                        • Alex SchickA Offline
                                          Alex SchickA Offline
                                          Alex Schick
                                          wrote on last edited by
                                          #66

                                          Hi,
                                          I had a working serial Gateway and one temp sensor setup.
                                          I now updated to 2.0 version for both but I can't see the gateway working with openhap while the sensor can send it's data fine it looks.
                                          Any idea what could be the problem?

                                          Sensor Serial log:

                                          Starting sensor (RNNNA-, 2.0.0)
                                          TSM:INIT
                                          TSM:RADIO:OK
                                          TSP:ASSIGNID:OK (ID=1)
                                          TSM:FPAR
                                          TSP:MSG:SEND 1-1-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc:
                                          TSP:MSG:READ 0-0-1 s=255,c=3,t=8,pt=1,l=1,sg=0:0
                                          TSP:MSG:FPAR RES (ID=0, dist=0)
                                          TSP:MSG:PAR OK (ID=0, dist=1)
                                          TSM:FPAR:OK
                                          TSM:ID
                                          TSM:CHKID:OK (ID=1)
                                          TSM:UPL
                                          TSP:PING:SEND (dest=0)
                                          TSP:MSG:SEND 1-1-0-0 s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=ok:1
                                          TSP:MSG:READ 0-0-1 s=255,c=3,t=25,pt=1,l=1,sg=0:1
                                          TSP:MSG:PONG RECV (hops=1)
                                          TSP:CHKUPL:OK
                                          TSM:UPL:OK
                                          TSM:READY
                                          TSP:MSG:SEND 1-1-0-0 s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=ok:0100
                                          !TSP:MSG:SEND 1-1-0-0 s=255,c=0,t=17,pt=0,l=5,sg=0,ft=0,st=fail:2.0.0
                                          TSP:MSG:SEND 1-1-0-0 s=255,c=3,t=6,pt=1,l=1,sg=0,ft=1,st=ok:0
                                          TSP:MSG:SEND 1-1-0-0 s=255,c=3,t=11,pt=0,l=18,sg=0,ft=0,st=ok:Temperature Sensor
                                          TSP:MSG:SEND 1-1-0-0 s=255,c=3,t=12,pt=0,l=3,sg=0,ft=0,st=ok:1.1
                                          TSP:MSG:SEND 1-1-0-0 s=0,c=0,t=6,pt=0,l=0,sg=0,ft=0,st=ok:
                                          Request registration...
                                          TSP:MSG:SEND 1-1-0-0 s=255,c=3,t=26,pt=1,l=1,sg=0,ft=0,st=ok:2
                                          TSP:MSG:READ 0-0-1 s=255,c=3,t=27,pt=1,l=1,sg=0:1
                                          Node registration=1
                                          Init complete, id=1, parent=0, distance=1, registration=1
                                          TSP:MSG:SEND 1-1-0-0 s=0,c=1,t=0,pt=7,l=5,sg=0,ft=0,st=ok:24.7
                                          

                                          Openhab:

                                          2016-08-22 10:23:43.295 [DEBUG] [ySensorsGenericBindingProvider] - New Item "tempWhz1 (Type=NumberItem, State=Uninitialized)" based on configuration "1;0;V_TEMP"
                                          2016-08-22 10:23:43.331 [DEBUG] [.b.m.internal.MySensorsBinding] - activate
                                          2016-08-22 10:23:43.342 [DEBUG] [.o.b.m.internal.gateway.Serial] - Serial port '/dev/ttyAMA0' has been found.
                                          2016-08-22 10:23:43.353 [INFO ] [.service.AbstractActiveService] - MySensors Refresh Service has been started
                                          

                                          And nothing else more on the openhab.log even I restart the sensor node.

                                          Alex SchickA 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          14

                                          Online

                                          11.7k

                                          Users

                                          11.2k

                                          Topics

                                          113.0k

                                          Posts


                                          Copyright 2019 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • MySensors
                                          • OpenHardware.io
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular