openHAB 2.2 binding


  • Hardware Contributor

    @gonzalonal I saw it earlier but did not understand it fully. I will take another look at it later.

    @TimO I might have found the error... maybe. I reflashed the motion sensor (with cleared eeprom before) and removed the static id and signing. Now I see that the problem seems to be that the node is unable to get an ID. Any idea what's happening herer? Is there a setting concerning that somewhere?

    Log from the node:

    ...
    102477 TSM:FAIL:RE-INIT
    102479 TSM:INIT
    102488 TSM:INIT:TSP OK
    102490 TSM:FPAR
    102492 TSF:MSG:SEND,255-255-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
    103426 TSF:MSG:READ,0-0-255,s=255,c=3,t=8,pt=1,l=1,sg=0:0
    103432 TSF:MSG:FPAR OK,ID=0,D=1
    104501 TSM:FPAR:OK
    104503 TSM:ID
    104503 TSM:ID:REQ
    104507 TSF:MSG:SEND,255-255-0-0,s=55,c=3,t=3,pt=0,l=0,sg=0,ft=0,st=OK:
    106516 TSM:ID
    106516 TSM:ID:REQ
    106520 TSF:MSG:SEND,255-255-0-0,s=20,c=3,t=3,pt=0,l=0,sg=0,ft=0,st=OK:
    108529 TSM:ID
    108529 TSM:ID:REQ
    108533 TSF:MSG:SEND,255-255-0-0,s=241,c=3,t=3,pt=0,l=0,sg=0,ft=0,st=OK:
    110542 TSM:ID
    110542 TSM:ID:REQ
    110546 TSF:MSG:SEND,255-255-0-0,s=206,c=3,t=3,pt=0,l=0,sg=0,ft=0,st=OK:
    112556 !TSM:ID:FAIL
    112558 TSM:FAIL:CNT=6
    112560 TSM:FAIL:DIS
    112562 TSF:TDI:TSL
    ...
    

    Log from the openhab server:

    15:21:32.127 [DEBUG] [rsAbstractConnection$MySensorsReader] - Message from gateway received: 255;34;3;0;3;
    15:21:34.135 [DEBUG] [rsAbstractConnection$MySensorsReader] - Message from gateway received: 255;0;3;0;3;
    15:21:36.147 [DEBUG] [rsAbstractConnection$MySensorsReader] - Message from gateway received: 255;221;3;0;3;
    ...
    

    and lots more similar requests with different ids.


  • Hero Member

    @LastSamurai Upgrade the binding. You're using the current beta of MySensors and the request for I'd has changed.


  • Hardware Contributor

    @TimO Ahh thank you! I am using version 2.2 linked in the first post of this thread though. Where do I get a newer version? Maybe I overlooked it but I am not seeing any newer releases.


  • Hero Member

    @LastSamurai just replace the jar from the link above. I'm doing small changes from time to time.


  • Hardware Contributor

    @TimO Thank you again for the help. Everything is now back up and running 👍 With the new jar my node could finally get a new id and after also enabling signing again everything worked as expected.
    Can I see anywhere that you updated the jar file? I am using the current beta of mysensors mostly so I would also need to use an updated version of the openhab plugin.



  • @TimO , is this binding supported via mysensors MQTT gateway?
    In previous bending inormation you had some text indicating that you would implement it. But all that is gone.
    So I'm thinking you either implemented it, or aborted that feature 🙂


  • Hero Member

    @Nicklas-Starkel It happens, that MQTT support is sadly still on the to do list. There were some changes in the Smarthome MQTT library and we need to adopt them now.

    Here's the Issue: https://github.com/tobof/openhab2-addons/issues/98

    andreacioni created this issue in tobof/openhab2-addons

    closed MQTT dependency error #98



  • @TimO, cool that you are stil on it, even if it's on the "todo-list".
    Kudos and keep up the great work 🙂



  • @TimO

    Can we use this binding for MQTT once the PR is available in OpenHAB?
    It is a separate mqtt generic binding in ESH for things discovery but I cannot make out if this will solve the dependency issue or not.
    https://github.com/eclipse/smarthome/pull/3876


  • Hardware Contributor

    @TimO My sketches are sending the nodes remaining battery power to the controller via a V_VOLTAGE. Openhab 2 with your binding doesn't seem to be able to read these values. Is this an error (possibly on my side) or does the not yet support this?


  • Hero Member

    @LastSamurai Did you connect a channel / item for V_VOLTAGE? If the sensor is not represented by the sketch you need to connect it manually.


  • Hero Member

    @gahlawathome I'm currently looking into the new MQTT implementation in smartphone. It should work without the PR above. The PR will bring us a new option to connect a MQTT binding with OpenHAB!


  • Hardware Contributor

    @TimO I am not sure what you mean.
    My sketch sends a presentation:

     present(CHILD_ID_BATTERY, S_MULTIMETER);
    

    and in openhab I added these (tried both sensor kinds)

    // things
    customSensor abc [nodeId=26, childId=1]
    multimeter def [nodeId=17, childId=1]
    // and items
    Number 	voltageSensorWZ ... { channel="mysensors:multimeter:gwSerial:def:volt" }
    //...
    

    Is there anything i am missing here?


  • Hero Member

    @LastSamurai

    The channel is not correct:

    channel="mysensors:multimeter:gwSerial:voltageSensorWZ:volt"
    

    It's confusing, but that's the way OpenHAB2 handles channels. 😕


  • Hardware Contributor

    @TimO Thanks for your help though I am afraid you mixed something up there. The channel linking to the item itself doesn't really make sense 😉
    Not 100% sure why it did not work earlier for me but I now got it to work like this:

    // thing
    multimeter		voltTHWohnzimmer	[nodeId=1, childId=2]
    // item
    Number 	voltageSensorWZ 		"Spannung [%3f mV]" 		<poweroutlet_eu> 	(grVolt, grWZ)	{ channel="mysensors:multimeter:gwSerial:voltTHWohnzimmer:volt" }
    

    My error in the code above seems to have been that I defined most as customSensor instead of multimeter.



  • @TimO said in openHAB 2.2 binding:

    @LastSamurai

    The channel is not correct:

    channel="mysensors:multimeter:gwSerial:voltageSensorWZ:volt"
    

    It's confusing, but that's the way OpenHAB2 handles channels. 😕

    Is the pattern:
    <binding name>:<mysensors type>:<gateway id>:<thing name>:<data name> ?



  • Just to let you know that I am very happy with this binding.
    One thing for others to be aware of:
    If you use PaperUI for configuring etc, make sure you leave Simple Mode off if you expect to use Groups later on. Simple mode adds the items (including the VAR1-5 :-() automatically but they are not 'managed'. This means you will get 404 and 405 errors on trying to edit them later on.
    My solution was to let the binding autodiscover and add the Things. Then add 1 Item manually so that the \\192.168.0.123\openHAB-share\openhab2-userdata\jsondb\org.eclipse.smarthome.core.items.Item.json
    file gets created and filled with an example to clone. I then added the various sensors using Name of pattern <binding name><sensorname><nodeid>_<dataname>, e.g. "mysensors_light_level_node4_last_update": { "class": "org.eclipse.smarthome.core.items.ManagedItemProvider$PersistedItem", "value": { "groupNames": [ "gLastUpdated" ], "itemType": "DateTime", "tags": [], "label": "Last", "category": "calendar" } },

    You must stop Openhab before editing the file (else you will lose your edits) but once it starts up again you will see the Items listed in PaperUI (and VSCode if you use that). You can then add the Channel/Item links for each Thing.



  • Thanks for some great work @TimO ! Version 2.2 now works smoothly with my simple OpenHAB setup (2.2 snapshot).

    One thing I noticed is that the gateway thing configuration page says "Disable network sanity check" even though the logic has been reversed in v2.2.
    So the UI needs to be similarly changed to "Enable startup check" instead.

    While I'm at it, could you please also clarify (in the UI) what "Send delay" is? Please also add that timing is in ms. If I understand things correctly it could say "Minimum time between messages sent to the gateway (ms)"

    Also, the comment for "Imperial/Metric selection" could use some clarification. Preferably change the label to "Imperial units" and the explanation to "Use imperial units (default is metric)."

    And finally it would be great to add add that the time is given in "...(minutes)" for the Network sanity check interval.


  • Hardware Contributor

    I have just updated to the stable openHAB 2.2 Version and everything seemed to be working just fine in the beginning but after the next restart I got this error:

    10:31:19.727 [WARN ] [fig.xml.osgi.XmlDocumentBundleTracker] - The XML document '/ESH-INF/binding/binding.xml' in module 'org.openhab.binding.mysensors' could not be parsed: The XmlConfigDescriptionProvider must not be null!
    

    It seems like I can still control my devices just fine but I just wanted to make sure that this doesn't cause errors down the line. So @TimO any idea where this error is coming from?



  • After upgrade OH to 2.2 stable release. (2.2_01). I'm having the same issue that zwave binding not working. After Mysensors binding is installed and gateway configured. There is only one serial port visiable in PaperUI, which is /dev/ttyUSB0 that is configured for the serial gateway. I'm using org.openhab.binding.mysensors-2.2.0-SNAPSHOT-serial-fix.jar.

    Also the old 2.1 snapshot version doesn't work either. anyone else experience this issue?



  • Hi,

    I have issues with MySensors and specifically Energy Sensors where they request latest value.
    See this thread for details: https://forum.mysensors.org/topic/8833/power-sensors-stopped-working

    Any idea how to solve it?



  • Hello,

    iam using "openHAB 2.2.0-1 (Release Build)" as openhabian on a PI3.

    i've installed "org.openhab.binding.mysensors-2.2.0-SNAPSHOT.jar" as explained in the instructions.

    configured the thing "MySensors Serial Gateway" to use "/dev/ttyACM0" with Baudrate "38400" because i'm using a pro micro with 8Mhz which isn't capable of 115200 (as far as i know).

    the Items got discovered fine.

    Atm i have only one item with

    #define CHILD_ID_TEMP 0
    unsigned long SLEEP_TIME = 3 * 1000; // Sleep time between reads (in milliseconds)
    
    MyMessage tempMsg(CHILD_ID_TEMP, S_TEMP);
    

    Presentation:

    void presentation()
    {
      // Send the sketch version information to the gateway and Controller
      sendSketchInfo("Temp/Hum/Pre Sensor", "1.2");
    
      // Register all sensors to gateway (they will be created as child devices)
      present(CHILD_ID_TEMP, S_TEMP);
    }
    

    and Loop:

      unsigned long currentTime = millis();
      temperature++;//bme.readTemperature();
    
    
        lastSend = currentTime;
        send(tempMsg.set(temperature, 2));
        lastTemp = temperature;
    
    
      sleep(SLEEP_TIME);
    

    This is my debug from "openhab-cli showlogs"

    2018-01-07 13:59:17.676 [DEBUG] [rsAbstractConnection$MySensorsReader] - Message from gateway received: 1;0;1;0;6;109.00
    2018-01-07 13:59:17.680 [DEBUG] [rs.internal.gateway.MySensorsGateway] - Node 1 found in gateway
    2018-01-07 13:59:17.683 [DEBUG] [rs.internal.gateway.MySensorsGateway] - Child 0 found in node 1
    2018-01-07 13:59:17.687 [WARN ] [rs.internal.gateway.MySensorsGateway] - Variable V_RAIN not present
    

    And this from Log Viewer

    2018-01-07 14:00:18.836 [DEBUG] [rs.internal.gateway.MySensorsGateway] - Node 1 found in gateway
    2018-01-07 14:00:18.841 [DEBUG] [rs.internal.gateway.MySensorsGateway] - Child 0 found in node 1
    2018-01-07 14:00:18.846 [WARN ] [rs.internal.gateway.MySensorsGateway] - Variable V_RAIN not present
    2018-01-07 14:00:27.561 [DEBUG] [rsAbstractConnection$MySensorsReader] - Message from gateway received: 0;255;3;0;9;TSF:MSG:READ,1-1-0,s=0,c=1,t=6,pt=7,l=5,sg=0:117.00
    2018-01-07 14:00:27.566 [DEBUG] [rsAbstractConnection$MySensorsReader] - Message from gateway received: 1;0;1;0;6;117.00
    2018-01-07 14:00:27.572 [DEBUG] [rs.internal.gateway.MySensorsGateway] - Node 1 found in gateway
    2018-01-07 14:00:27.577 [DEBUG] [rs.internal.gateway.MySensorsGateway] - Child 0 found in node 1
    2018-01-07 14:00:27.582 [WARN ] [rs.internal.gateway.MySensorsGateway] - Variable V_RAIN not present
    2018-01-07 14:00:36.301 [DEBUG] [rsAbstractConnection$MySensorsReader] - Message from gateway received: 0;255;3;0;9;TSF:MSG:READ,1-1-0,s=0,c=1,t=6,pt=7,l=5,sg=0:118.00
    2018-01-07 14:00:36.308 [DEBUG] [rsAbstractConnection$MySensorsReader] - Message from gateway received: 1;0;1;0;6;118.00
    2018-01-07 14:00:36.311 [DEBUG] [rs.internal.gateway.MySensorsGateway] - Node 1 found in gateway
    2018-01-07 14:00:36.315 [DEBUG] [rs.internal.gateway.MySensorsGateway] - Child 0 found in node 1
    2018-01-07 14:00:36.318 [WARN ] [rs.internal.gateway.MySensorsGateway] - Variable V_RAIN not present
    2018-01-07 14:00:45.034 [DEBUG] [rsAbstractConnection$MySensorsReader] - Message from gateway received: 0;255;3;0;9;TSF:MSG:READ,1-1-0,s=0,c=1,t=6,pt=7,l=5,sg=0:119.00
    2018-01-07 14:00:45.037 [DEBUG] [rsAbstractConnection$MySensorsReader] - Message from gateway received: 1;0;1;0;6;119.00
    2018-01-07 14:00:45.039 [DEBUG] [rs.internal.gateway.MySensorsGateway] - Node 1 found in gateway
    2018-01-07 14:00:45.042 [DEBUG] [rs.internal.gateway.MySensorsGateway] - Child 0 found in node 1
    2018-01-07 14:00:45.045 [WARN ] [rs.internal.gateway.MySensorsGateway] - Variable V_RAIN not present
    

    So from log i can see Temp is counting up. but in "Paper Ui"

    i always get "Temperature -NaN °C" or "Temperature 0 °C"

    Please correct me if this is the wrong place for this question.

    Greets Andi



  • @mythbai said in openHAB 2.2 binding:

    After upgrade OH to 2.2 stable release. (2.2_01). I'm having the same issue that zwave binding not working. After Mysensors binding is installed and gateway configured. There is only one serial port visiable in PaperUI, which is /dev/ttyUSB0 that is configured for the serial gateway. I'm using org.openhab.binding.mysensors-2.2.0-SNAPSHOT-serial-fix.jar.

    Also the old 2.1 snapshot version doesn't work either. anyone else experience this issue?

    Up my own post. Not many users are using Zwave dongle and Mysensors at the same time? I feel this forum or trend is dead... This problem is driving me crazy, render all my mysensors useless. I'm trying to build a ethernet gateway now...


  • Hero Member

    Hey @mythbai !

    Could you please download and install the most recent version of the binding? I've not changed anything at the serial code, but while we're trying to figure out the problem, we should be on the same base of code. 🙂

    I too have two serial devices connected to my OpenHAB box, one serial MySensors gateway and one Ebus-Adapter to Ebusd.

    You may need to execute:

    feature:install esh-io-transport-mqtt
    

    Because the most current version of the binding now supports MQTT gateways.


  • Hero Member

    Hello @lesockz !

    Well your node is sending V_RAIN instead of V_TEMP, so OpenHAB is not able to work with that.

    Try:

    MyMessage tempMsg(CHILD_ID_TEMP, V_TEMP);
    

    For presentation S_TEMP (== 6) is used, while for set messages V_TEMP (==0) is used.


  • Hero Member

    @mythbai While the code for the serial connection in the binding was unchanged for a while it definatly issn't working now together with zwave binding.

    Some time ago I've prepared a change of the serial library the binding is using. A few first tests looked promising but I didn't find the time to test it. So lets give it a new try: could you please test this binding: OH2 Binding with Serial Refactoring

    Please remove the old binding with bundle:list, bundle:remove ID before installing the new one.



  • I am moving the topic here as more appropriate 🙂 (old ref)

    I have OH v2.2 and latest MySensors 2.2.0 binding and my power sensors have stopped working.
    After some investigation it seems they cannot receive the old pulse count value and by that cannot start working.
    MySensors GW running 2.1.1 and the one power sensor I am testing also 2.1.1 (the rest 1.5.x)

    The debug (serial monitor) of the sensor shows that

    0 MCO:BGN:INIT NODE,CP=RNNNA--,VER=2.1.1
    3 TSM:INIT
    4 TSF:WUR:MS=0
    11 TSM:INIT:TSP OK
    13 TSM:INIT:STATID=5
    14 TSF:SID:OK,ID=5
    16 TSM:FPAR
    52 TSF:MSG:SEND,5-5-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
    2060 !TSM:FPAR:NO REPLY
    2062 TSM:FPAR
    2098 TSF:MSG:SEND,5-5-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
    2983 TSF:MSG:READ,0-0-5,s=255,c=3,t=8,pt=1,l=1,sg=0:0
    2989 TSF:MSG:FPAR OK,ID=0,D=1
    4106 TSM:FPAR:OK
    4107 TSM:ID
    4108 TSM:ID:OK
    4110 TSM:UPL
    4147 !TSF:MSG:SEND,5-5-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=NACK:1
    6154 TSM:UPL
    6159 TSF:MSG:SEND,5-5-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=1,st=OK:1
    6168 TSF:MSG:READ,0-0-5,s=255,c=3,t=25,pt=1,l=1,sg=0:1
    6173 TSF:MSG:PONG RECV,HP=1
    6175 TSM:UPL:OK
    6177 TSM:READY:ID=5,PAR=0,DIS=1
    6182 TSF:MSG:SEND,5-5-0-0,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=OK:0100
    6189 TSF:MSG:READ,0-0-5,s=255,c=3,t=15,pt=6,l=2,sg=0:0100
    6232 !TSF:MSG:SEND,5-5-0-0,s=255,c=0,t=17,pt=0,l=5,sg=0,ft=0,st=NACK:2.1.1
    6243 TSF:MSG:SEND,5-5-0-0,s=255,c=3,t=6,pt=1,l=1,sg=0,ft=1,st=OK:0
    6259 TSF:MSG:READ,0-0-5,s=255,c=3,t=6,pt=0,l=1,sg=0:M
    6305 !TSF:MSG:SEND,5-5-0-0,s=255,c=3,t=11,pt=0,l=13,sg=0,ft=0,st=NACK:Heater Energy
    6349 !TSF:MSG:SEND,5-5-0-0,s=255,c=3,t=12,pt=0,l=3,sg=0,ft=1,st=NACK:2.0
    6391 !TSF:MSG:SEND,5-5-0-0,s=0,c=0,t=13,pt=0,l=0,sg=0,ft=2,st=NACK:
    6397 MCO:REG:REQ
    6435 !TSF:MSG:SEND,5-5-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=3,st=NACK:2
    8476 !TSF:MSG:SEND,5-5-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=4,st=NACK:2
    10486 TSF:MSG:SEND,5-5-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=5,st=OK:2
    10493 TSF:MSG:READ,0-0-5,s=255,c=3,t=27,pt=1,l=1,sg=0:1
    10499 MCO:PIM:NODE REG=1
    10501 MCO:BGN:STP
    10528 TSF:MSG:SEND,5-5-0-0,s=0,c=2,t=24,pt=0,l=0,sg=0,ft=0,st=OK:
    Got Pulse
    10534 MCO:BGN:INIT OK,TSP=1
    Got Pulse
    Got Pulse
    Got Pulse
    Got Pulse
    Got Pulse
    Got Pulse
    No count received. Try requesting it again
    30570 !TSF:MSG:SEND,5-5-0-0,s=0,c=2,t=24,pt=0,l=0,sg=0,ft=0,st=NACK:
    Got Pulse
    Got Pulse
    Got Pulse
    Got Pulse
    Got Pulse
    Got Pulse
    Got Pulse
    No count received. Try requesting it again
    50546 TSF:MSG:SEND,5-5-0-0,s=0,c=2,t=24,pt=0,l=0,sg=0,ft=1,st=OK:
    Got Pulse
    

    The sketch looks like this:

    /**
     * The MySensors Arduino library handles the wireless radio link and protocol
     * between your home built sensors/actuators and HA controller of choice.
     * The sensors forms a self healing radio network with optional repeaters. Each
     * repeater and gateway builds a routing tables in EEPROM which keeps track of the
     * network topology allowing messages to be routed to nodes.
     *
     * Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
     * Copyright (C) 2013-2015 Sensnology AB
     * Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors
     *
     * Documentation: http://www.mysensors.org
     * Support Forum: http://forum.mysensors.org
     *
     * This program is free software; you can redistribute it and/or
     * modify it under the terms of the GNU General Public License
     * version 2 as published by the Free Software Foundation.
     *
     *******************************
     *
     * REVISION HISTORY
     * Version 1.0 - Henrik EKblad
     *
     * DESCRIPTION
     * This sketch provides an example how to implement a distance sensor using HC-SR04
     * Use this sensor to measure KWH and Watt of your house meeter
     * You need to set the correct pulsefactor of your meeter (blinks per KWH).
     * The sensor starts by fetching current KWH value from gateway.
     * Reports both KWH and Watt back to gateway.
     *
     * Unfortunately millis() won't increment when the Arduino is in
     * sleepmode. So we cannot make this sensor sleep if we also want
     * to calculate/report watt-number.
     * http://www.mysensors.org/build/pulse_power
     */
    
    // Enable debug prints
    #define MY_DEBUG
    
    // Enable and select radio type attached
    #define MY_RADIO_NRF24
    //#define MY_RADIO_RFM69
    
    #define MY_NODE_ID 5
    #include <MySensors.h>
    
    #define DIGITAL_INPUT_SENSOR 3  // The digital input you attached your light sensor.  (Only 2 and 3 generates interrupt!)
    #define PULSE_FACTOR 1000       // Nummber of blinks per KWH of your meeter
    #define MAX_WATT 10000          // Max watt value to report. This filetrs outliers.
    
    #define CHILD_ID 0              // Id of the sensor child
    
    unsigned long SEND_FREQUENCY =
        20000; // Minimum time between send (in milliseconds). We don't wnat to spam the gateway.
    double ppwh = ((double)PULSE_FACTOR)/1000; // Pulses per watt hour
    bool pcReceived = false;
    volatile unsigned long pulseCount = 0;
    volatile unsigned long lastBlink = 0;
    volatile unsigned long watt = 0;
    unsigned long oldPulseCount = 0;
    unsigned long oldWatt = 0;
    double oldKwh;
    unsigned long lastSend;
    MyMessage wattMsg(CHILD_ID,V_WATT);
    MyMessage kwhMsg(CHILD_ID,V_KWH);
    MyMessage pcMsg(CHILD_ID,V_VAR1);
    
    
    void setup()
    {
     
      // Fetch last known pulse count value from gw
      request(CHILD_ID, V_VAR1);
    
      // Use the internal pullup to be able to hook up this sketch directly to an energy meter with S0 output
      // If no pullup is used, the reported usage will be too high because of the floating pin
      pinMode(DIGITAL_INPUT_SENSOR,INPUT_PULLUP);
    
      attachInterrupt(digitalPinToInterrupt(DIGITAL_INPUT_SENSOR), onPulse, RISING);
      lastSend=millis();
    }
    
    void presentation()
    {
      // Send the sketch version information to the gateway and Controller
      sendSketchInfo("Heater Energy", "2.0");
    
      // Register this device as power sensor
      present(CHILD_ID, S_POWER);
    }
    
    void loop()
    {
      unsigned long now = millis();
      // Only send values at a maximum frequency or woken up from sleep
      bool sendTime = now - lastSend > SEND_FREQUENCY;
      if (pcReceived && sendTime) {
        // New watt value has been calculated
        if (watt != oldWatt) {
          // Check that we dont get unresonable large watt value.
          // could hapen when long wraps or false interrupt triggered
          if (watt<((unsigned long)MAX_WATT)) {
            send(wattMsg.set(watt));  // Send watt value to gw
          }
          Serial.print("Watt:");
          Serial.println(watt);
          oldWatt = watt;
        }
    
        // Pulse cout has changed
        if (pulseCount != oldPulseCount) {
          send(pcMsg.set(pulseCount));  // Send pulse count value to gw
          double kwh = ((double)pulseCount/((double)PULSE_FACTOR));
          oldPulseCount = pulseCount;
          if (kwh != oldKwh) {
            send(kwhMsg.set(kwh, 4));  // Send kwh value to gw
            oldKwh = kwh;
          }
        }
        lastSend = now;
      } else if (sendTime && !pcReceived) {
        // No count received. Try requesting it again
        Serial.println("No count received. Try requesting it again");
        request(CHILD_ID, V_VAR1);
        lastSend=now;
      }
    
    }
    
    void receive(const MyMessage &message)
    {
      Serial.print("MessageType:");
      Serial.println(message.type);
      Serial.print("Message:");
      Serial.println(message.getLong());
      if (message.type==V_VAR1) {
        pulseCount = oldPulseCount = message.getLong();
        Serial.print("Received last pulse count from gw:");
        Serial.println(pulseCount);
        pcReceived = true;
      }
    }
    
    void onPulse()
    {
      Serial.println("Got Pulse");
      unsigned long newBlink = micros();
      unsigned long interval = newBlink-lastBlink;
      if (interval<10000L) { // Sometimes we get interrupt on RISING
        return;
      }
      watt = (3600000000.0 /interval) / ppwh;
      lastBlink = newBlink;
      pulseCount++;
    }
    

    Today I realized that I likely need to have item(s) created in OH to save the values - so created Var1 (and then added one after another with no success). Currently it looks like:

    Number CellarAirHeaterSensorWatt   "Airheater Watt" <energy> { channel="mysensors:power:gateway:sensor-air-pump-power:watt", mqtt=">[rabbitmq:/myhouse/airpump/sensor/power:state:*:Power,sensor=${itemName},location=airpump watt=${state} ]" }
    Number CellarAirHeaterSensorKwh    "Airheater Kwh" <energy> { channel="mysensors:power:gateway:sensor-air-pump-power:kwh", mqtt=">[rabbitmq:/myhouse/airpump/sensor/power:state:*:Power,sensor=${itemName},location=airpump kwh=${state} ]" }
    Number CellarAirHeaterSensorVar   "Airheater Var" <energy> { channel="mysensors:power:gateway:sensor-air-pump-power:var" }
    Number CellarAirHeaterSensorVar1   "Airheater Var1" <energy> { channel="mysensors:power:gateway:sensor-air-pump-power:var1" }
    Number CellarAirHeaterSensorVA   "Airheater VA" <energy> { channel="mysensors:power:gateway:sensor-air-pump-power:va" }
    

    Still no success!

    Do you have any idea what's wrong?



  • @timo said in openHAB 2.2 binding:

    Some time ago I've prepared a change of the serial library the binding is using. A few first tests looked promising but I didn't find the time to test it. So lets give it a new try: could you please test this binding: OH2 Binding with Serial Refactoring

    Please remove the old binding with bundle:list, bundle:remove ID before installing the new one.

    @TimO Thank you very much! Here is what I got with the new jar:

    Initial bundle:uninstall, and replace jar works. But after server reboot, the MySensor binding is not loading due to some "Multiexception" on framework level (sorry didn't capture that log).
    I tried to restart binding in console:

    openhab> bundle:restart 233
    Error executing command: Error restarting bundles:
            Unable to start bundle 233: Could not resolve module: org.openhab.binding.mysensors [233]
      Unresolved requirement: Import-Package: org.eclipse.smarthome.io.transport.mqtt
    

    This is an easy fix by "feature:install openhab-transport-mqtt". And after that bundle works! (why do I have to install mqtt transport here .... )

    2). After fix above, did a server reboot. Got MySensors thing discovery related exceptions, but both zwave and mysensors binding loaded, and things got online. The fix actually works!!! just with some minor glitch:

    09:04:38.710 [ERROR] [org.openhab.binding.mysensors        ] - [org.openhab.binding.mysensors.discovery.MySensorsDiscoveryService(221)] Error during instantiation of the implementation object
    java.lang.InstantiationException: org.openhab.binding.mysensors.discovery.MySensorsDiscoveryService
            at java.lang.Class.newInstance(Class.java:427) [?:?]
            at org.apache.felix.scr.impl.manager.SingleComponentManager.createImplementationObject(SingleComponentManager.java:237) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.SingleComponentManager.createComponent(SingleComponentManager.java:109) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:906) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:879) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:823) [42:org.apache.felix.scr:2.0.12]
            at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse$1.run(ServiceFactoryUse.java:212) [?:?]
            at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
            at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:210) [?:?]
            at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.getService(ServiceFactoryUse.java:111) [?:?]
            at org.eclipse.osgi.internal.serviceregistry.ServiceConsumer$2.getService(ServiceConsumer.java:45) [?:?]
            at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:496) [?:?]
            at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:461) [?:?]
            at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:619) [?:?]
            at org.apache.felix.scr.impl.manager.SingleRefPair.getServiceObject(SingleRefPair.java:72) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.inject.BindMethod.getServiceObject(BindMethod.java:651) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.DependencyManager.getServiceObject(DependencyManager.java:2201) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.DependencyManager.doInvokeBindMethod(DependencyManager.java:1714) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.DependencyManager.invokeBindMethod(DependencyManager.java:1699) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.SingleComponentManager.invokeBindMethod(SingleComponentManager.java:372) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:320) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:291) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1215) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1136) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.trackAdding(ServiceTracker.java:945) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.track(ServiceTracker.java:881) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1167) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.BundleComponentActivator$ListenerInfo.serviceChanged(BundleComponentActivator.java:127) [42:org.apache.felix.scr:2.0.12]
            at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:109) [?:?]
            at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:915) [?:?]
            at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [?:?]
            at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) [?:?]
            at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:862) [?:?]
            at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:801) [?:?]
            at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:127) [?:?]
            at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:225) [?:?]
            at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:464) [?:?]
            at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:887) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:874) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:132) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:941) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:741) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:675) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:430) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:657) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:341) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:390) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.Activator.access$200(Activator.java:54) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:265) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.utils.extender.AbstractExtender.createExtension(AbstractExtender.java:254) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.utils.extender.AbstractExtender.modifiedBundle(AbstractExtender.java:227) [42:org.apache.felix.scr:2.0.12]
            at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:482) [?:?]
            at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:415) [?:?]
            at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:232) [?:?]
            at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:444) [?:?]
            at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:903) [?:?]
            at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [?:?]
            at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) [?:?]
            at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:213) [?:?]
            at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:120) [?:?]
            at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:112) [?:?]
            at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:156) [?:?]
            at org.eclipse.osgi.container.Module.publishEvent(Module.java:476) [?:?]
            at org.eclipse.osgi.container.Module.start(Module.java:467) [?:?]
            at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1620) [?:?]
            at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1600) [?:?]
            at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1571) [?:?]
            at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1514) [?:?]
            at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1) [?:?]
            at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [?:?]
            at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340) [?:?]
    Caused by: java.lang.NoSuchMethodException: org.openhab.binding.mysensors.discovery.MySensorsDiscoveryService.<init>()
            at java.lang.Class.getConstructor0(Class.java:3082) ~[?:?]
            at java.lang.Class.newInstance(Class.java:412) ~[?:?]
            ... 70 more
    09:04:39.069 [WARN ] [org.openhab.binding.mysensors        ] - FrameworkEvent WARNING - org.openhab.binding.mysensors
    org.osgi.framework.ServiceException: org.apache.felix.scr.impl.manager.SingleComponentManager.getService() returned a null service object
            at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:232) [?:?]
            at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.getService(ServiceFactoryUse.java:111) [?:?]
            at org.eclipse.osgi.internal.serviceregistry.ServiceConsumer$2.getService(ServiceConsumer.java:45) [?:?]
            at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:496) [?:?]
            at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:461) [?:?]
            at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:619) [?:?]
            at org.apache.felix.scr.impl.manager.SingleRefPair.getServiceObject(SingleRefPair.java:72) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.inject.BindMethod.getServiceObject(BindMethod.java:651) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.DependencyManager.getServiceObject(DependencyManager.java:2201) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.DependencyManager.doInvokeBindMethod(DependencyManager.java:1714) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.DependencyManager.invokeBindMethod(DependencyManager.java:1699) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.SingleComponentManager.invokeBindMethod(SingleComponentManager.java:372) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:320) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:291) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1215) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1136) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.trackAdding(ServiceTracker.java:945) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.track(ServiceTracker.java:881) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1167) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.BundleComponentActivator$ListenerInfo.serviceChanged(BundleComponentActivator.java:127) [42:org.apache.felix.scr:2.0.12]
            at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:109) [?:?]
            at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:915) [?:?]
            at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [?:?]
            at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) [?:?]
            at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:862) [?:?]
            at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:801) [?:?]
            at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:127) [?:?]
            at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:225) [?:?]
            at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:464) [?:?]
            at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:887) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:874) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:132) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:941) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:741) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:675) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:430) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:657) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:341) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:390) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.Activator.access$200(Activator.java:54) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:265) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.utils.extender.AbstractExtender.createExtension(AbstractExtender.java:254) [42:org.apache.felix.scr:2.0.12]
            at org.apache.felix.utils.extender.AbstractExtender.modifiedBundle(AbstractExtender.java:227) [42:org.apache.felix.scr:2.0.12]
            at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:482) [?:?]
            at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:415) [?:?]
            at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:232) [?:?]
            at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:444) [?:?]
            at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:903) [?:?]
            at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [?:?]
            at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) [?:?]
            at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:213) [?:?]
            at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:120) [?:?]
            at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:112) [?:?]
            at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:156) [?:?]
            at org.eclipse.osgi.container.Module.publishEvent(Module.java:476) [?:?]
            at org.eclipse.osgi.container.Module.start(Module.java:467) [?:?]
            at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1620) [?:?]
            at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1600) [?:?]
            at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1571) [?:?]
            at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1514) [?:?]
            at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1) [?:?]
            at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [?:?]
            at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340) [?:?]
    

    It's a good start, I now have all my sensors working now!


  • Hero Member

    @mythbai Thank you for reporting back! I'm glad it is working now.

    The transport-mqtt feature is now needed because the support for MQTT GW is now part of the binding and the fix I've provided to you is based on the current code base.

    The exception is completely unrelated to your problem and will do no harm. It only occures on startup and will soon be fixed!


  • Hero Member

    @jocke4u The request needs to be handled with rules because it is not allowed to access the value of an item via the binding API 😏.

    Please post the request (from the OpenHAB log, enable DEBUG with log:set DEBUG org.openhab.binding.mysensors if not already done in the karaf console) and we'll figure out the rule.



  • @timo regarding the issue with the pulse power node, the same as @jocke4u. I'm using a version of the same sketch and also the latest snapshot jar.

    This is the feedback in my openhab.log while looking att the debug level messages from the binding.

    15:59:15.829 [WARN ] [ors.internal.gateway.MySensorsGateway] - Request received, but variable state is not yet defined
    15:59:15.834 [DEBUG] [orsAbstractConnection$MySensorsReader] - Message from gateway received: 50;1;2;0;24;
    15:59:15.839 [DEBUG] [ors.internal.gateway.MySensorsGateway] - Node 50 found in gateway
    15:59:15.844 [DEBUG] [ors.internal.gateway.MySensorsGateway] - Child 1 found in node 50
    15:59:15.849 [WARN ] [ors.internal.gateway.MySensorsGateway] - Request received, but variable state is not yet defined
    15:59:15.854 [DEBUG] [orsAbstractConnection$MySensorsReader] - Message from gateway received: 50;1;2;0;24;
    15:59:15.859 [DEBUG] [ors.internal.gateway.MySensorsGateway] - Node 50 found in gateway
    15:59:15.864 [DEBUG] [ors.internal.gateway.MySensorsGateway] - Child 1 found in node 50
    15:59:15.869 [WARN ] [ors.internal.gateway.MySensorsGateway] - Request received, but variable state is not yet defined
    15:59:15.874 [DEBUG] [orsAbstractConnection$MySensorsReader] - Message from gateway received: 50;1;2;0;24;
    15:59:15.879 [DEBUG] [ors.internal.gateway.MySensorsGateway] - Node 50 found in gateway
    

    As you can see the messages are quite frequent making it quite tedious for me to extract the relevant log messages. I'm no expert in browsing and searching text files from the command line.

    I guess because I'm using a version of the standard sketch my node does not wait for a response to the request before starting to count. I'm not sure how the node can neglect the response. Anyhow I restarted my node and now it tried to SET a new count instead.

    2018-01-10 16:26:22.341 [DEBUG] [rsAbstractConnection$MySensorsWriter] - Sending to MySensors: 50;1;1;0;24;150
    2018-01-10 16:26:22.571 [DEBUG] [rsAbstractConnection$MySensorsWriter] - Sending to MySensors: 50;1;1;0;24;150
    2018-01-10 16:26:22.791 [DEBUG] [rsAbstractConnection$MySensorsWriter] - Sending to MySensors: 50;1;1;0;24;150
    2018-01-10 16:26:23.011 [DEBUG] [rsAbstractConnection$MySensorsWriter] - Sending to MySensors: 50;1;1;0;24;150
    2018-01-10 16:26:23.230 [DEBUG] [rsAbstractConnection$MySensorsWriter] - Sending to MySensors: 50;1;1;0;24;150
    

    Hopefully this is useful feedback.



  • Hi @timo ,

    Here is the log when restarting the sensor:

    17:27:58.562 [DEBUG] [orsAbstractConnection$MySensorsReader] - Message from gateway received: 5;255;0;0;17;2.1.1
    17:27:58.573 [DEBUG] [ors.internal.gateway.MySensorsGateway] - Presentation Message received
    17:27:58.583 [WARN ] [ors.internal.gateway.MySensorsGateway] - Presented child is alredy present in gateway
    17:27:58.593 [DEBUG] [orsAbstractConnection$MySensorsReader] - Message from gateway received: 5;255;3;0;6;0
    17:27:58.603 [DEBUG] [ors.internal.gateway.MySensorsGateway] - I_CONFIG request received from M, answering: (is imperial?)false
    17:27:58.614 [DEBUG] [orsAbstractConnection$MySensorsWriter] - Sending to MySensors: 5;255;3;0;6;M
    17:27:58.674 [DEBUG] [orsAbstractConnection$MySensorsReader] - Message from gateway received: 5;255;3;0;11;Heater Energy
    17:27:58.682 [DEBUG] [orsAbstractConnection$MySensorsReader] - Message from gateway received: 5;255;3;0;12;2.0
    17:27:58.690 [DEBUG] [orsAbstractConnection$MySensorsReader] - Message from gateway received: 5;0;0;0;13;
    17:27:58.698 [DEBUG] [ors.internal.gateway.MySensorsGateway] - Presentation Message received
    17:27:58.705 [WARN ] [ors.internal.gateway.MySensorsGateway] - Presented child is alredy present in gateway
    17:27:58.719 [DEBUG] [orsAbstractConnection$MySensorsReader] - Message from gateway received: 5;0;2;0;24;
    17:27:58.727 [DEBUG] [ors.internal.gateway.MySensorsGateway] - Node 5 found in gateway
    17:27:58.735 [DEBUG] [ors.internal.gateway.MySensorsGateway] - Child 0 found in node 5
    17:27:58.743 [WARN ] [ors.internal.gateway.MySensorsGateway] - Request received, but variable state is not yet defined
    


  • @nickbuilder Check the code here and there is a SEND_FREQUENCY of 20 sec - would reduce the load quite a lot 🙂


  • Hero Member

    @jocke4u & @NickBuilder :

    Thank you! This will help me to find a solution. For reference, here is the corresponding issue on github: https://github.com/tobof/openhab2-addons/issues/69



  • @timo Ok, so there is a plan to solve it in a better way than using rules?
    Do you have any guidance of using rules until then?


  • Hero Member

    @jocke4u I'll try to document an example for using rules tomorrow. I'm not yet sure about the best final solution. Maybe I'll experiment with persistence within the binding.


  • Hardware Contributor

    @TimO Today I decided to finally read into how Openhab binding development works. And just when I started I saw that you finally fixed some of the problems that I reported via github (thank you very much for that). Had to laugh a little at that coincidence đŸ¤Ŗ

    I just started a pullrequest where I tried to implement pure white colors for RGBW values fixing one of my problems left open. If you find the time please have a look at it. I did not yet write any tests for it or test it on my actual RGBW nodes but I will do that as soon as possible



  • [Solved] I've solved the issue by changing docker base image. The issue described here - https://github.com/openhab/openhab-docker/issues/144

    I'll keep the details for others:

    @TimO, thanks for the great openhab binding. I've used it on openhab 2.0 and it works just great. Now I have totally fresh openhab 2.2 setup and cannot make mysensors binding working. I've tried many things but with no luck. Can you point me into direction how to fix that?

    The gateway works as expected:

    root@machine:/home/kwull# cat /dev/ttyUSB0
    0;1;1;0;0;22.3
    0;0;1;0;1;23.0
    0;255;3;0;14;Gateway startup complete.
    0;255;0;0;18;2.1.1
    0;255;3;0;11;Garage Gateway
    0;255;3;0;12;1.0
    0;0;0;0;7;
    0;1;0;0;6;
    0;1;1;0;0;23.1
    0;0;1;0;1;22.1
    

    Bindings:

    25 │ Active   │  80 │ 3.12.0.OH              │ nrjavaserial
    210 │ Active   │  80 │ 1.0.2                  │ Paho MQTT Client
    211 │ Active   │  80 │ 0.10.0.b1              │ Eclipse SmartHome MQTT Transport Bundle
    214 │ Active   │  80 │ 2.3.0.201801160936     │ MySensors Binding
    

    openhab.log:

    2018-01-21 17:18:33.696 [DEBUG] [nsors.handler.MySensorsBridgeHandler] - Initialization of the MySensors bridge
    2018-01-21 17:18:33.703 [DEBUG] [ensors.factory.MySensorsCacheFactory] - Cache file: given_ids.cached exist.
    2018-01-21 17:18:33.704 [DEBUG] [ensors.factory.MySensorsCacheFactory] - Cache (given_ids) content: []
    2018-01-21 17:18:33.710 [DEBUG] [col.serial.MySensorsSerialConnection] - Enabling connection watchdog
    2018-01-21 17:18:33.712 [DEBUG] [col.serial.MySensorsSerialConnection] - Connecting to /dev/ttyUSB0 [baudRate:115200]
    2018-01-21 17:18:33.715 [DEBUG] [org.openhab.binding.mysensors       ] - ServiceEvent REGISTERED - {org.eclipse.smarthome.config.discovery.DiscoveryService}={service.id=325, service.bundleid=214, service.scope=singleton} - org.openhab.binding.mysensors
    2018-01-21 17:18:33.716 [DEBUG] [.discovery.MySensorsDiscoveryService] - Starting MySensors discovery scan
    2018-01-21 17:18:33.716 [DEBUG] [nsors.handler.MySensorsBridgeHandler] - Initialization of the MySensors bridge DONE!
    2018-01-21 17:18:36.027 [WARN ] [org.jline                           ] - Unable to create a system terminal, creating a dumb terminal (enable debug logging for more information)
    

    Exception log:

    Current thread (0x000055797e792800):  JavaThread "org.openhab.binding.mysensors.internal.protocol.MySensorsAbstractConnection" [_thread_in_native, id=641, stack(0x00007f12eb309000,0x00007f12eb409aa8)]
    
    siginfo: si_signo: 11 (SIGSEGV), si_code: 1 (SEGV_MAPERR), si_addr: 0x00000000000037a6
    
    Registers:
    RAX=0x0000000000000000, RBX=0x00007f12e7403940, RCX=0x00007f13197e3f04, RDX=0x00007f131934828c
    RSP=0x00007f12eb407d48, RBP=0x0000000000000001, RSI=0x0000000000000900, RDI=0x000055797ccb99a0
    R8 =0x000055797ccb99ac, R9 =0x000055797ccb99a0, R10=0x00000006d600e9d0, R11=0x0000000000000206
    R12=0x000055797ccb99a0, R13=0x000055797e7929e0, R14=0x00007f12eb407ec8, R15=0x0000000000000082
    RIP=0x00000000000037a6, EFLAGS=0x0000000000010202, CSGSFS=0x0000000000000033, ERR=0x0000000000000014
      TRAPNO=0x000000000000000e
    
    Top of Stack: (sp=0x00007f12eb407d48)
    0x00007f12eb407d48:   00007f12e64e0965 00007f12eb407de8
    0x00007f12eb407d58:   00007f1300000001 00007f12e7403940
    0x00007f12eb407d68:   000055797e792800 00007f12e7403940
    0x00007f12eb407d78:   d85a256e98c0817f 00007f12eb407de8
    0x00007f12eb407d88:   00007f1318b46afc 00007f12eb407de8
    0x00007f12eb407d98:   00007f12eb407dc8 00007f12eb407de8
    0x00007f12eb407da8:   00007f1318b46b68 000055797e792800
    0x00007f12eb407db8:   00007f1318c99928 0000557981a9a5f0
    0x00007f12eb407dc8:   000055797e792800 000055797e792800
    0x00007f12eb407dd8:   00007f12e7403940 000055797e792800
    0x00007f12eb407de8:   00007f12e7403940 000055797e792800
    0x00007f12eb407df8:   d85a256e98c0817f 00007f12e7403940
    0x00007f12eb407e08:   00007f12e7403940 00007f12eb407ea0
    0x00007f12eb407e18:   0000000000000000 00007f12e7403940
    0x00007f12eb407e28:   00007f12eb407ed0 000055797e792800
    0x00007f12eb407e38:   00007f1308ccd7f4 00007f12eb407ea0
    0x00007f12eb407e48:   00007f1308ccd579 fffffffe00000000
    0x00007f12eb407e58:   00007f1308ccd542 00007f12eb407e60
    0x00007f12eb407e68:   00007f12e7403940 00007f12eb407ed0
    0x00007f12eb407e78:   00007f12e7405c28 0000000000000000
    0x00007f12eb407e88:   00007f12e7403940 0000000000000000
    0x00007f12eb407e98:   00007f12eb407ec0 00007f12eb407f18
    0x00007f12eb407ea8:   00007f1308cbd7d0 0000000000000000
    0x00007f12eb407eb8:   00007f1308cc7260 0000000000000001
    0x00007f12eb407ec8:   00000006d600e9a8 00000006d600b490
    0x00007f12eb407ed8:   00007f12eb407ed8 00007f12e7404122
    0x00007f12eb407ee8:   00007f12eb407f98 00007f12e7405c28
    0x00007f12eb407ef8:   0000000000000000 00007f12e7404270
    0x00007f12eb407f08:   00007f12eb407ec0 00007f12eb407f80
    0x00007f12eb407f18:   00007f12eb407fe0 00007f1308cbdffd
    0x00007f12eb407f28:   0000000000000000 0000000000000000
    0x00007f12eb407f38:   0000000000000000 00000006d600e9a8 
    
    Instructions: (pc=0x00000000000037a6)
    0x0000000000003786:   
    [error occurred during error reporting (printing registers, top of stack, instructions near pc), id 0xb]
    
    Register to memory mapping:
    
    RAX=0x0000000000000000 is an unknown value
    RBX={method} {0x00007f12e7403940} 'testRead' '(Ljava/lang/String;I)Z' in 'gnu/io/RXTXCommDriver'
    RCX=0x00007f13197e3f04: getpid+0x7 in /lib/ld-musl-x86_64.so.1 at 0x00007f131978d000
    RDX=0x00007f131934828c: gHotSpotVMStructs+0x218f4 in /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/server/libjvm.so at 0x00007f1318861000
    RSP=0x00007f12eb407d48 is pointing into the stack for thread: 0x000055797e792800
    RBP=0x0000000000000001 is an unknown value
    RSI=0x0000000000000900 is an unknown value
    RDI=0x000055797ccb99a0 is an unknown value
    R8 =0x000055797ccb99ac is an unknown value
    R9 =0x000055797ccb99a0 is an unknown value
    R10=0x00000006d600e9d0 is pointing into object: 0x00000006d600e9c0
    [C 
     - klass: {type array char}
     - length: 12
    R11=0x0000000000000206 is an unknown value
    R12=0x000055797ccb99a0 is an unknown value
    R13=0x000055797e7929e0 is an unknown value
    R14=0x00007f12eb407ec8 is pointing into the stack for thread: 0x000055797e792800
    R15=0x0000000000000082 is an unknown value
    
    
    Stack: [0x00007f12eb309000,0x00007f12eb409aa8],  sp=0x00007f12eb407d48,  free space=1019k
    Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
    C  0x00000000000037a6
    
    Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
    j  gnu.io.RXTXCommDriver.testRead(Ljava/lang/String;I)Z+0
    j  gnu.io.RXTXCommDriver.registerValidPorts([Ljava/lang/String;[Ljava/lang/String;I)V+202
    j  gnu.io.RXTXCommDriver.registerScannedPorts(I)V+1466
    j  gnu.io.RXTXCommDriver.initialize()V+35
    j  gnu.io.CommPortIdentifier.getPortIdentifiers()Ljava/util/Enumeration;+53
    j  gnu.io.NativeResource.testNativeCode()V+0
    j  gnu.io.NativeResource.inJarLoad(Ljava/lang/String;)V+37
    j  gnu.io.NativeResource.loadLib(Ljava/lang/String;)V+54
    j  gnu.io.NativeResource.load(Ljava/lang/String;)V+138
    j  gnu.io.SerialManager.<init>()V+23
    j  gnu.io.SerialManager.getInstance()Lgnu/io/SerialManager;+10
    j  gnu.io.RXTXCommDriver.<clinit>()V+39
    v  ~StubRoutines::call_stub
    J 1368  java.lang.Class.forName0(Ljava/lang/String;ZLjava/lang/ClassLoader;Ljava/lang/Class;)Ljava/lang/Class; (0 bytes) @ 0x00007f1309151eba [0x00007f1309151e40+0x7a]
    J 3010 C1 java.lang.Class.forName(Ljava/lang/String;)Ljava/lang/Class; (15 bytes) @ 0x00007f13096ee94c [0x00007f13096ee7a0+0x1ac]
    j  gnu.io.CommPortIdentifier.<clinit>()V+12
    v  ~StubRoutines::call_stub
    j  org.openhab.binding.mysensors.internal.protocol.serial.MySensorsSerialConnection.establishConnection()Z+32
    j  org.openhab.binding.mysensors.internal.protocol.MySensorsAbstractConnection.connect()Z+2
    j  org.openhab.binding.mysensors.internal.protocol.MySensorsAbstractConnection.run()V+46
    J 10253 C2 java.util.concurrent.Executors$RunnableAdapter.call()Ljava/lang/Object; (14 bytes) @ 0x00007f1309884cac [0x00007f1309884c60+0x4c]
    J 9236 C1 java.util.concurrent.FutureTask.runAndReset()Z (128 bytes) @ 0x00007f130a4cd17c [0x00007f130a4ccf00+0x27c]
    J 9408 C1 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run()V (59 bytes) @ 0x00007f130a57bb8c [0x00007f130a57b600+0x58c]
    J 8894 C1 java.util.concurrent.ThreadPoolExecutor.runWorker(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V (225 bytes) @ 0x00007f130a3b8e3c [0x00007f130a3b7e00+0x103c]
    j  java.util.concurrent.ThreadPoolExecutor$Worker.run()V+5
    J 11172 C1 java.lang.Thread.run()V (17 bytes) @ 0x00007f1308f58584 [0x00007f1308f58440+0x144]
    v  ~StubRoutines::call_stub
    

    Additional logs:

    2018-01-08 20:55:18.426 [ERROR] [org.openhab.binding.mysensors       ] - [org.openhab.binding.mysensors.discovery.MySensorsDiscoveryService(195)] Error during instantiation of the implementation object
    java.lang.InstantiationException: org.openhab.binding.mysensors.discovery.MySensorsDiscoveryService
    	at java.lang.Class.newInstance(Class.java:427) ~[?:?]
    	at org.apache.felix.scr.impl.manager.SingleComponentManager.createImplementationObject(SingleComponentManager.java:237) ~[?:?]
    	at org.apache.felix.scr.impl.manager.SingleComponentManager.createComponent(SingleComponentManager.java:109) ~[?:?]
    	at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:906) ~[?:?]
    	at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:879) ~[?:?]
    	at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:823) ~[?:?]
    	at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse$1.run(ServiceFactoryUse.java:212) ~[?:?]
    	at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
    	at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:210) ~[?:?]
    	at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.getService(ServiceFactoryUse.java:111) ~[?:?]
    	at org.eclipse.osgi.internal.serviceregistry.ServiceConsumer$2.getService(ServiceConsumer.java:45) ~[?:?]
    	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:496) ~[?:?]
    	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:461) ~[?:?]
    	at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:619) ~[?:?]
    	at com.eclipsesource.jaxrs.publisher.internal.ResourceTracker.addingService(ResourceTracker.java:39) ~[?:?]
    	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:941) ~[?:?]
    	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:870) ~[?:?]
    	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256) ~[?:?]
    	at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229) ~[?:?]
    	at org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:901) ~[?:?]
    	at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:109) ~[?:?]
    	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:915) ~[?:?]
    	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) ~[?:?]
    	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) ~[?:?]
    	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:862) ~[?:?]
    	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:801) ~[?:?]
    	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:127) ~[?:?]
    	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:225) ~[?:?]
    	at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:464) ~[?:?]
    	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:887) ~[?:?]
    	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:874) ~[?:?]
    	at org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:132) ~[?:?]
    	at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:941) ~[?:?]
    	at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:741) ~[?:?]
    	at org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:675) ~[?:?]
    	at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:430) ~[?:?]
    	at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:657) ~[?:?]
    	at org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:341) ~[?:?]
    	at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:390) ~[?:?]
    	at org.apache.felix.scr.impl.Activator.access$200(Activator.java:54) ~[?:?]
    	at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:265) ~[?:?]
    	at org.apache.felix.utils.extender.AbstractExtender.createExtension(AbstractExtender.java:254) ~[?:?]
    	at org.apache.felix.utils.extender.AbstractExtender.modifiedBundle(AbstractExtender.java:227) ~[?:?]
    	at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:482) ~[?:?]
    	at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:415) ~[?:?]
    	at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:232) ~[?:?]
    	at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:444) ~[?:?]
    	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:903) ~[?:?]
    	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) ~[?:?]
    	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) ~[?:?]
    	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:213) ~[?:?]
    	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:120) ~[?:?]
    	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:112) ~[?:?]
    	at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:156) ~[?:?]
    	at org.eclipse.osgi.container.Module.publishEvent(Module.java:476) ~[?:?]
    	at org.eclipse.osgi.container.Module.start(Module.java:467) ~[?:?]
    	at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:383) ~[?:?]
    	at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:402) ~[?:?]
    	at org.eclipse.smarthome.extensionservice.marketplace.internal.BindingExtensionHandler.install(BindingExtensionHandler.java:82) ~[?:?]
    	at org.eclipse.smarthome.extensionservice.marketplace.internal.MarketplaceExtensionService.install(MarketplaceExtensionService.java:222) ~[?:?]
    	at org.eclipse.smarthome.io.rest.core.internal.extensions.ExtensionResource.lambda$0(ExtensionResource.java:157) ~[?:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
    	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
    	at java.lang.Thread.run(Thread.java:748) [?:?]
    Caused by: java.lang.NoSuchMethodException: org.openhab.binding.mysensors.discovery.MySensorsDiscoveryService.<init>()
    	at java.lang.Class.getConstructor0(Class.java:3082) ~[?:?]
    	at java.lang.Class.newInstance(Class.java:412) ~[?:?]
    	... 65 more
    2018-01-08 20:55:18.450 [WARN ] [org.openhab.binding.mysensors       ] - FrameworkEvent WARNING - org.openhab.binding.mysensors
    org.osgi.framework.ServiceException: org.apache.felix.scr.impl.manager.SingleComponentManager.getService() returned a null service object
    	at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:232) ~[?:?]
    	at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.getService(ServiceFactoryUse.java:111) ~[?:?]
    	at org.eclipse.osgi.internal.serviceregistry.ServiceConsumer$2.getService(ServiceConsumer.java:45) ~[?:?]
    	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:496) ~[?:?]
    	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:461) ~[?:?]
    	at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:619) ~[?:?]
    	at com.eclipsesource.jaxrs.publisher.internal.ResourceTracker.addingService(ResourceTracker.java:39) ~[?:?]
    	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:941) ~[?:?]
    	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:870) ~[?:?]
    	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256) ~[?:?]
    	at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229) ~[?:?]
    	at org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:901) ~[?:?]
    	at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:109) ~[?:?]
    	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:915) ~[?:?]
    	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) ~[?:?]
    	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) ~[?:?]
    	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:862) ~[?:?]
    	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:801) ~[?:?]
    	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:127) ~[?:?]
    	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:225) ~[?:?]
    	at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:464) ~[?:?]
    	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:887) ~[?:?]
    	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:874) ~[?:?]
    	at org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:132) ~[?:?]
    	at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:941) ~[?:?]
    	at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:741) ~[?:?]
    	at org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:675) ~[?:?]
    	at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:430) ~[?:?]
    	at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:657) ~[?:?]
    	at org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:341) ~[?:?]
    	at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:390) ~[?:?]
    	at org.apache.felix.scr.impl.Activator.access$200(Activator.java:54) ~[?:?]
    	at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:265) ~[?:?]
    	at org.apache.felix.utils.extender.AbstractExtender.createExtension(AbstractExtender.java:254) ~[?:?]
    	at org.apache.felix.utils.extender.AbstractExtender.modifiedBundle(AbstractExtender.java:227) ~[?:?]
    	at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:482) ~[?:?]
    	at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:415) ~[?:?]
    	at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:232) ~[?:?]
    	at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:444) ~[?:?]
    	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:903) ~[?:?]
    	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) ~[?:?]
    	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) ~[?:?]
    	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:213) ~[?:?]
    	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:120) ~[?:?]
    	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:112) ~[?:?]
    	at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:156) ~[?:?]
    	at org.eclipse.osgi.container.Module.publishEvent(Module.java:476) ~[?:?]
    	at org.eclipse.osgi.container.Module.start(Module.java:467) ~[?:?]
    	at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:383) ~[?:?]
    	at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:402) ~[?:?]
    	at org.eclipse.smarthome.extensionservice.marketplace.internal.BindingExtensionHandler.install(BindingExtensionHandler.java:82) ~[?:?]
    	at org.eclipse.smarthome.extensionservice.marketplace.internal.MarketplaceExtensionService.install(MarketplaceExtensionService.java:222) ~[?:?]
    	at org.eclipse.smarthome.io.rest.core.internal.extensions.ExtensionResource.lambda$0(ExtensionResource.java:157) ~[?:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
    	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
    	at java.lang.Thread.run(Thread.java:748) [?:?] 
    

    Any ideas where to look?



  • @kwull, @TimO - I've solved the issue by changing docker base image. The issue described here - https://github.com/openhab/openhab-docker/issues/144



  • Hi, I'd like to use the expert mode for viewing the raw messages from the serial gateway.
    I've created a new thing and item
    Thing:

     mySensorsMessage mySMsg01   [ nodeId=999, childId=999 ]
    

    Item:

    String mySMsg01  "MySensorsMessage"   { channel="mysensors:mySensorsMessage:gateway:mySMsg01:mySensorsMessage" }
    

    unfortunately i get no item state :
    openhab> smarthome:items list my*
    mySMsg01 (Type=StringItem, State=NULL, Label=MySensorsMessage, Category=null)

    did I do something wrong here?



  • ok, it works after updating to snapshot 2.3
    btw: 2.3 requeres esh-io-transport-mqtt
    Intallation in karaf console:
    feature:install esh-io-transport-mqtt


  • Hero Member

    @seeers yes, I've located a bug in the expert mode an fixed it recently!


  • Hardware Contributor

    @TimO I saw that you fixed some other bugs too in the repo. Will you create a new version 2.3 of the binding soon? Or will there be more changes first?
    As most of the changes (at least also) concern RGBW lighting I would really like to use it but I can't seem to build the binding locally (I postet the error in the git pr).



  • @jocke4u, I really want my power node to work so I was going to try to make my own rule based on the "expert" strategy and the 999 node/child.

    But first I tried an even simpler approach, I added a var1-item from the power thing and now I have communication between node and gateway. Please give it a try yourself and see if it works for you.

    More specifically I defined the following item:
    Number PulseVar "Var1 [%d]" { channel="mysensors:power:gateway:pulseThing:var1" }

    Be sure to also persist the item. I store it in a mapdb dataset:
    PulseVar : strategy = everyChange, restoreOnStartup

    FYI, my thing is defined as follows:
    power pulseThing [ nodeId=50, childId=1 ]

    Please give it a try and come back with the outcome.

    EDIT: this feels like a too simple fix, I suspect that @TimO has made some changes in the 2.3 snapshot...



  • Hi there!

    Maybe someone would like to help me a bit?

    I'm on openHAB 2.2 with mysensors binding 2.3.0.201801160936. I'm using a serial gateway that I reflashed today using MySensors 2.2.0 library. I have turned off debugging in the sketch.

    The problem is that I encounter an exception each time OH starts up.

    2018-02-11 11:05:59.342 [WARN ] [rsAbstractConnection$MySensorsReader] - Exception on reading from connection
    java.io.IOException: Underlying input stream returned zero bytes
            at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:288) [?:?]
            at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326) [?:?]
            at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178) [?:?]
            at java.io.InputStreamReader.read(InputStreamReader.java:184) [?:?]
            at java.io.BufferedReader.fill(BufferedReader.java:161) [?:?]
            at java.io.BufferedReader.readLine(BufferedReader.java:324) [?:?]
            at java.io.BufferedReader.readLine(BufferedReader.java:389) [?:?]
            at org.openhab.binding.mysensors.internal.protocol.MySensorsAbstractConnection$MySensorsReader.run(MySensorsAbstractConnection.java:328) [255:org.openhab.binding.mysensors:2.3.0.201801160936]
            at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
            at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
            at java.lang.Thread.run(Thread.java:748) [?:?]
    

    Thing config:

    Bridge mysensors:bridge-ser:gateway [ serialPort="/dev/ttyUSBmys", baudRate=115200, sendDelay=200, startupCheckEnabled=false ]
    

    Everything seems to work otherwise. The problem is that the warning draws my attention every time and of course I need to check if it's something serious that I'd need to act upon. I'd rather see that I get no exceptions/warnings in case the "problem" can be ignored.

    My question to you guys is if there is anything that I can do about it? Thanks for your kind help.

    Cheers!


  • Hardware Contributor

    @TimO I finally got around to testing my pureWhite RGBW code and at least for me its working like it should be. I saw you already merged this so I guess others can use it too very soon.
    What is still not working is the acknowledgment feature. I have one node that only gets about 90% of the messages without error, so I tried activating it there and on some other nodes too for testing. Result: success rate is down to ~50% for each node and I get messages about some acknowledgment on the console when no message has even been sent (nothing about a message from mysensors on the console and no rx/tx leds on the gateway). When I tested this some months ago I also saw no message at the client so I am pretty sure none gets send.
    So I guess this issue is still unresolved 😉 I have no clue why on a first glance but if I can help just send me a message.



  • Hello, I try to start using OpenHab as a controller and
    need some help, regarding mysensors binding 2.3.0. I get the bindings installed, but in bundle:list it's just installed and i don't get it Active.

    All other instruction for installation are done.
    Did feature:install openhab-transport-serial and feature:install esh-io-transport-mqtt and and "nrjavaserial" is Active.

    But mysensor binding just installed. How can I get it ACTIVE?

    Thank you for your help.


  • Hardware Contributor

    Do you still have an older version of Mysensors installed? Thats the only time I had such behaviour



  • Hello,

    I've been using the binding for a while now!
    must say that i still have some problems with auto discovery, but manually adding the sensors work fine!

    I encountered a bug in 1 for the components.

    The GAS meter should contain a variable for V_VOLUME but in the logs i'm getting errors that the variable does not exist.

    i searched in the code and found out the the class for SGAS is not containing the V_VOLUME variable.
    file: MySensorsChildSGas.java
    github link: https://github.com/tobof/openhab2-addons/blob/MySensors_Binding/addons/binding/org.openhab.binding.mysensors/src/main/java/org/openhab/binding/mysensors/internal/sensors/child/MySensorsChildSGas.java

    as by: https://www.mysensors.org/download/serial_api_20#sensor-types SGAS should also include a V_VOLUME variable as wel as a V_FLOW

    For now i adjusted my sensor to use one of the custom var fields. but it would be nice to use the V_VOLUME variable for this.



  • I have a general question that I can't seem to find an answer to either here, in the openhab docs, or anywhere googling between the two.

    On a Raspberry Pi 3 running openhabian 1.4 (stretch 9.4)
    running openhab 2.2
    Mosquitto 1.4.10
    mysgw 2.2.0 (MQTT)

    And an arduino pro mini 3.3v test sensor node running the door/button sketch at version 2.2.0 also.

    The sensor node can communicate over rf24 just fine and the broker receives and sends messages to it without issue.

    My question is this: Does this openhab 2.2 mysensors binding replace or work in concert with the original openhab 2.2 PaperUI-installed MQTT binding? And same for the MySensors MQTT Gateway that's part of the Mysensors binding and mysgw?

    I ask because when I follow the installation instructions from the github wiki and start everything up, I get a persistence in use error in org.eclipse.smarthome.io.transport.mqtt.MqttService. And it appears that my original broker is running fine, which suggests I'm trying to run two brokers and they're uninterested in cooperating.

    The installation instructions I've seen (a couple places) say to use mqtt.cfg and org.eclipse.smarthome.mqtt.cfg with the same settings.

    Hoping the answer is a simple, "stop mysgw and just run the paperUI MQTT Gateway" or the like.

    Thanks!



  • @fixjunk replying to myself...

    seems like installing esh-io-transport-mqtt in karaf causes the broker problem.
    without it installed the logs show:

    2018-04-16 16:28:35.914 [ERROR] [org.openhab.binding.mysensors       ] - FrameworkEvent ERROR - org.openhab.binding.mysensors
    org.osgi.framework.BundleException: Could not resolve module: org.openhab.binding.mysensors [210]
      Unresolved requirement: Import-Package: org.eclipse.smarthome.io.transport.mqtt
    	at org.eclipse.osgi.container.Module.start(Module.java:444) [?:?]
    	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1620) [?:?]
    	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1600) [?:?]
    	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1571) [?:?]
    	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1514) [?:?]
    	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1) [?:?]
    	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [?:?]
    	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340) [?:?]
    2018-04-16 16:28:36.870 [INFO ] [penhab.io.transport.mqtt.MqttService] - MQTT Service initialization completed.
    2018-04-16 16:28:36.885 [INFO ] [t.mqtt.internal.MqttBrokerConnection] - Starting MQTT broker connection 'habianbroker'
    

    But then after feature:install esh-io-transport-mqtt I get this:

    2018-04-16 16:30:13.506 [INFO ] [penhab.io.transport.mqtt.MqttService] - Stopping broker connection 'habianbroker'
    2018-04-16 16:30:14.135 [INFO ] [.transport.mqtt.MqttBrokerConnection] - Starting MQTT broker connection 'habianbroker' to 'tcp://<MY.IP.GOES.HERE>:1883' with clientid mysensors and file store '/var/lib/openhab2/tmp/habianbroker'
    2018-04-16 16:30:14.208 [WARN ] [rthome.io.transport.mqtt.MqttService] - MqttBroker start failed: Persistence already in use
    org.eclipse.smarthome.io.transport.mqtt.MqttException: Persistence already in use
    	at org.eclipse.smarthome.io.transport.mqtt.MqttBrokerConnection.start(MqttBrokerConnection.java:572) [219:org.eclipse.smarthome.io.transport.mqtt:0.10.0.b1]
    	at org.eclipse.smarthome.io.transport.mqtt.MqttService.modified(MqttService.java:145) [219:org.eclipse.smarthome.io.transport.mqtt:0.10.0.b1]
    	at org.eclipse.smarthome.io.transport.mqtt.MqttService.activate(MqttService.java:157) [219:org.eclipse.smarthome.io.transport.mqtt:0.10.0.b1]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
    	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
    	at org.apache.felix.scr.impl.inject.BaseMethod.invokeMethod(BaseMethod.java:229) [42:org.apache.felix.scr:2.0.12]
    	at org.apache.felix.scr.impl.inject.BaseMethod.access$500(BaseMethod.java:39) [42:org.apache.felix.scr:2.0.12]
    	at org.apache.felix.scr.impl.inject.BaseMethod$Resolved.invoke(BaseMethod.java:650) [42:org.apache.felix.scr:2.0.12]
    	at org.apache.felix.scr.impl.inject.BaseMethod.invoke(BaseMethod.java:506) [42:org.apache.felix.scr:2.0.12]
    	at org.apache.felix.scr.impl.inject.ActivateMethod.invoke(ActivateMethod.java:307) [42:org.apache.felix.scr:2.0.12]
    	at org.apache.felix.scr.impl.inject.ActivateMethod.invoke(ActivateMethod.java:299) [42:org.apache.felix.scr:2.0.12]
    	at org.apache.felix.scr.impl.manager.SingleComponentManager.createImplementationObject(SingleComponentManager.java:298) [42:org.apache.felix.scr:2.0.12]
    	at org.apache.felix.scr.impl.manager.SingleComponentManager.createComponent(SingleComponentManager.java:109) [42:org.apache.felix.scr:2.0.12]
    	at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:906) [42:org.apache.felix.scr:2.0.12]
    	at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:879) [42:org.apache.felix.scr:2.0.12]
    	at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:823) [42:org.apache.felix.scr:2.0.12]
    	at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse$1.run(ServiceFactoryUse.java:212) [?:?]
    	at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
    	at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:210) [?:?]
    	at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.getService(ServiceFactoryUse.java:111) [?:?]
    	at org.eclipse.osgi.internal.serviceregistry.ServiceConsumer$2.getService(ServiceConsumer.java:45) [?:?]
    	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:496) [?:?]
    	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:461) [?:?]
    	at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:619) [?:?]
    	at com.eclipsesource.jaxrs.publisher.internal.ResourceTracker.addingService(ResourceTracker.java:39) [15:com.eclipsesource.jaxrs.publisher:5.3.1.201602281253]
    	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:941) [?:?]
    	at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:870) [?:?]
    	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256) [?:?]
    	at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229) [?:?]
    	at org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:901) [?:?]
    	at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:109) [?:?]
    	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:915) [?:?]
    	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [?:?]
    	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) [?:?]
    	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:862) [?:?]
    	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:801) [?:?]
    	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:127) [?:?]
    	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:225) [?:?]
    	at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:464) [?:?]
    	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:887) [42:org.apache.felix.scr:2.0.12]
    	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:874) [42:org.apache.felix.scr:2.0.12]
    	at org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:132) [42:org.apache.felix.scr:2.0.12]
    	at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:941) [42:org.apache.felix.scr:2.0.12]
    	at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:741) [42:org.apache.felix.scr:2.0.12]
    	at org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:675) [42:org.apache.felix.scr:2.0.12]
    	at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:430) [42:org.apache.felix.scr:2.0.12]
    	at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:657) [42:org.apache.felix.scr:2.0.12]
    	at org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:341) [42:org.apache.felix.scr:2.0.12]
    	at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:390) [42:org.apache.felix.scr:2.0.12]
    	at org.apache.felix.scr.impl.Activator.access$200(Activator.java:54) [42:org.apache.felix.scr:2.0.12]
    	at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:265) [42:org.apache.felix.scr:2.0.12]
    	at org.apache.felix.utils.extender.AbstractExtender.createExtension(AbstractExtender.java:254) [42:org.apache.felix.scr:2.0.12]
    	at org.apache.felix.utils.extender.AbstractExtender.modifiedBundle(AbstractExtender.java:227) [42:org.apache.felix.scr:2.0.12]
    	at org.apache.felix.utils.extender.AbstractExtender.addingBundle(AbstractExtender.java:187) [42:org.apache.felix.scr:2.0.12]
    	at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:469) [?:?]
    	at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:415) [?:?]
    	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256) [?:?]
    	at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229) [?:?]
    	at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:444) [?:?]
    	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:903) [?:?]
    	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [?:?]
    	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) [?:?]
    	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:213) [?:?]
    	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:120) [?:?]
    	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:112) [?:?]
    	at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:156) [?:?]
    	at org.eclipse.osgi.container.Module.publishEvent(Module.java:476) [?:?]
    	at org.eclipse.osgi.container.Module.start(Module.java:467) [?:?]
    	at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:470) [?:?]
    	at org.eclipse.osgi.container.ModuleContainer.start(ModuleContainer.java:736) [?:?]
    	at org.eclipse.osgi.container.ModuleContainer.applyDelta(ModuleContainer.java:727) [?:?]
    	at org.eclipse.osgi.container.ModuleContainer.resolveAndApply(ModuleContainer.java:497) [?:?]
    	at org.eclipse.osgi.container.ModuleContainer.resolve(ModuleContainer.java:443) [?:?]
    	at org.eclipse.osgi.container.ModuleContainer.refresh(ModuleContainer.java:987) [?:?]
    	at org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent(ModuleContainer.java:1368) [?:?]
    	at org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent(ModuleContainer.java:1) [?:?]
    	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [?:?]
    	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340) [?:?]
    Caused by: org.eclipse.paho.client.mqttv3.MqttPersistenceException: Persistence already in use
    	at org.eclipse.paho.client.mqttv3.persist.MqttDefaultFilePersistence.open(MqttDefaultFilePersistence.java:112) ~[?:?]
    	at org.eclipse.paho.client.mqttv3.MqttAsyncClient.<init>(MqttAsyncClient.java:286) ~[?:?]
    	at org.eclipse.paho.client.mqttv3.MqttAsyncClient.<init>(MqttAsyncClient.java:167) ~[?:?]
    	at org.eclipse.smarthome.io.transport.mqtt.MqttBrokerConnection.start(MqttBrokerConnection.java:570) ~[?:?]
    	... 79 more
    2018-04-16 16:30:14.330 [INFO ] [penhab.io.transport.mqtt.MqttService] - MQTT Service initialization completed.
    2018-04-16 16:30:14.335 [INFO ] [t.mqtt.internal.MqttBrokerConnection] - Starting MQTT broker connection 'habianbroker'
    

    It looks like the openhab broker and the eclipse brokers are conflicting?



  • @fixjunk - I'm having the same problem and it's driving me crazy. I don't mind some troubleshooting but OpenHAB is new territory for me and I just can't find the problem.

    I have set up two mqtt broker connections (in two config files) for debugging. For the Eclipse bundle I define the connection "huset_mqtt" with user "openhab". For the legacy OpenHAB binding I define a connection "huset_mqtt_legacy" with user "openhab-legacy. Both connect to the same mosquitto server.

    I don't think there is a conflict between the openHAB MQTT Binding and esh-io-transport-mqtt. To test it I stopped the openHAB MQTT binding and transport bundles. The warning is still there even when only the Eclipse SmartHome MQTT Transport Bundle is running.

    When all bundles are running, I first stop the legacy broker and the log looks as expected. But when I restart the Eclipse bundle the warning "Persistence already in use" is thrown (below):

    2018-05-04 22:10:09.739 [INFO ] [penhab.io.transport.mqtt.MqttService] - Stopping broker connection 'huset_mqtt_legacy'
    2018-05-04 22:17:47.270 [INFO ] [.transport.mqtt.MqttBrokerConnection] - Starting MQTT broker connection 'huset_mqtt' to 'tcp://
    192.168.1.5:1883' with clientid OpenHab and file store '/var/lib/openhab2/tmp/huset_mqtt'
    2018-05-04 22:17:47.349 [WARN ] [rthome.io.transport.mqtt.MqttService] - MqttBroker start failed: Persistence already in use
    org.eclipse.smarthome.io.transport.mqtt.MqttException: Persistence already in use
            at org.eclipse.smarthome.io.transport.mqtt.MqttBrokerConnection.start(MqttBrokerConnection.java:572) [214:org.eclipse.sm
    arthome.io.transport.mqtt:0.10.0.b1]
    

    However, it is clear that the Eclipse broker connection does not fail completely. Mosquitto logs and mqtt-spy confirm that both transports/binding actually connect to the mosquitto server. One at a time or both at the same time.

    Below is the mosquitto log when I restart the OpenHAB MQTT transport, the OpenHAB MQTT binding and last the Eclipse MQTT transport. Clearly the clients disconnect and then reconnects like they should.

    1525466428: Client OpenHab_legacy disconnected.
    1525466428: New connection from 192.168.1.5 on port 1883.
    1525466428: New client connected from 192.168.1.5 as OpenHab_legacy (c1, k60, u'openhab-legacy').
    1525466645: Saving in-memory database to /var/lib/mosquitto/mosquitto.db.
    1525467392: Client OpenHab_legacy disconnected.
    1525467393: New connection from 192.168.1.5 on port 1883.
    1525467393: New client connected from 192.168.1.5 as OpenHab_legacy (c1, k60, u'openhab-legacy').
    1525467446: Client OpenHab disconnected.
    1525467446: New connection from 192.168.1.5 on port 1883.
    1525467446: New client connected from 192.168.1.5 as OpenHab (c1, k60, u'openhab').
    

    To test the two mqtt broker connections I have set up test switches in an .items file:

    Switch MQTT_TEST_legacy "Testing..." { mqtt="<[huset_MQTT_legacy:testing/mqtt/topic:state:default], >[huset_MQTT_legacy:testing/mqtt/back-topic:command:*:default]" }
    Switch MQTT_TEST_new "Testing..." { mqtt="<[huset_MQTT:testing/mqtt/topic:state:default], >[huset_MQTT:testing/mqtt/back-topic:command:*:default]" }
    

    To test them I manually send the message "ON" to the topic "testing/mqtt/topic". The MQTT_TEST_legacy switch state changes to ON. So the legacy OpenHAB binding works fine.
    However, the MQTT_TEST switch that uses the Eclipse mqtt broker/transporrt does not respond at all to my messages.

    To summarize, the Eclipse mqtt feature throws a warning but connects to my mosquitto server,and then wont change items with messages I send.

    Am I missing a component, or what could possibly be the reason?

    It is a basic, fresh install of OpenHAB 2.2 on openhabian. I have cleaned caches and tmp, cleaned up config files in /var/lib/openhab/config and even reinstalled OpenHAB. The Mysensors binding 2.2.0.201710190834 is running.

    Now I don't even have a clue on what to check next.
    OpenHAB gurus out there - please help me!



  • @fredswed Honestly, I've moved on to playing with HASS... but I can still share my thoughts.

    So there is no practical reason you need to run the MySensors MQTT stuff as OpenHAB can handle all the MQTT messages already without MySensors AddOn--it's just not very convenient to decipher a bunch of five level deep numeric topics that aren't intuitive. I guess I thought I was trying to be clever by doing it all in MQTT style instead of using something else (like Serial).

    So what I did when I was switching over to HASS was rebuild the gateway as a serial gateway and avoid the whole conflict. I don't technically need MQTT visibility of the sensors and HASS now autodiscovers the serial sensor gateway sensors just fine. I suspect OpenHAB would do the same.

    It's pretty trivial to rebuild the mysgw using serial as long as you're able to make your own /dev/ttyMySensorsGateway accessible by the openhab system (it might require changing owners or groups or both). For whatever reason, mine was root/root and not dialout or accessible to the automation software username. I just changed everything to the tty group and it all worked fine.

    The end result of using the serial gateway should be identical within OpenHAB--in theory it should auto discover your sensors and populate them in PaperUI. But I haven't tried or tested it.



  • @fixjunk Thanks for responding - I have tried Domoticz and considered HASS but OpenHAB is the only controller that also supports my AllPlay speakers.

    Anyway, I gave up and reinstalled Openhabian. It breaks my heart to admit but it also gave me a chance to fix a few bugs and try some new things on the server.

    Net result: On a clean Openhabian 2.2 install with only the Eclipse MQTT bundle installed, the "Persistence in use" warning is still triggered. (I won't look further into it, it's only a warning.) The MySensors 2.3 binding connects as expected to the MQTT gateway and everything seems to work again.

    Well, not really. I managed to break both of my sensors while experimenting. So I guess I'm back to soldering tomorrow. 🙂



  • Re: Persistence in use error message, by accident (typo in specifying broker.clientId), I've figured out the cause:

    [11:12:04] openhabian@openHABianPi:~$ netstat -a | grep 1883
    tcp 0 0 0.0.0.0:1883 0.0.0.0:* LISTEN
    tcp6 0 0 [::]:1883 [::]:* LISTEN
    feature:install esh-io-transport-mqtt
    [11:12:20] openhabian@openHABianPi:~$ netstat -a | grep 1883
    tcp 0 0 0.0.0.0:1883 0.0.0.0:* LISTEN
    tcp 0 0 localhost:1883 localhost:53256 ESTABLISHED
    tcp 0 0 localhost:1883 localhost:53254 ESTABLISHED
    tcp6 0 0 [::]:1883 [::]:* LISTEN
    tcp6 0 0 localhost:53256 localhost:1883 ESTABLISHED
    tcp6 0 0 localhost:53254 localhost:1883 ESTABLISHED

    esh-io-transport-mqtt opens 2 connections to mosquito (not sure why), but as each connection needs a unique clientId, if you've specified a clientId, it will fail one of the connections with that error message.

    The solution is to remove your <broker>.clientId definition in the config file (also remember to remove the backup file, otherwise it won't have any effect). When you do this a unique clientId is generated on every connection (which you can see in the mosquito log), and the error message goes away.

    See these log files (Note without clientId, 2 connections from localhost are made and are pinging):
    with clientId specified:
    1525969562: Opening ipv4 listen socket on port 1883.
    1525969562: Opening ipv6 listen socket on port 1883.
    1525970154: New connection from 127.0.0.1 on port 1883.
    1525970154: New client connected from 127.0.0.1 as openhab2 (c1, k60, u'openhabian').
    1525970154: Sending CONNACK to openhab2 (0, 0)
    1525970214: Received PINGREQ from openhab2
    1525970214: Sending PINGRESP to openhab2
    1525970274: Received PINGREQ from openhab2
    1525970274: Sending PINGRESP to openhab2
    1525970334: Received PINGREQ from openhab2

    without clientId Specified:
    1525971402: Opening ipv4 listen socket on port 1883.
    1525971402: Opening ipv6 listen socket on port 1883.
    1525971428: New connection from 127.0.0.1 on port 1883.
    1525971428: New connection from 127.0.0.1 on port 1883.
    1525971428: New client connected from 127.0.0.1 as paho31354324154 (c1, k60, u'openhabian').
    1525971428: Sending CONNACK to paho31354324154 (0, 0)
    1525971428: New client connected from 127.0.0.1 as paho31177339570 (c1, k60, u'openhabian').
    1525971428: Sending CONNACK to paho31177339570 (0, 0)
    1525971496: Received PINGREQ from paho31177339570
    1525971496: Sending PINGRESP to paho31177339570
    1525971496: Received PINGREQ from paho31354324154
    1525971496: Sending PINGRESP to paho31354324154
    1525971556: Received PINGREQ from paho31177339570
    1525971556: Sending PINGRESP to paho31177339570
    1525971556: Received PINGREQ from paho31354324154

    and with debugging enabled on esh-io-transport-mqtt (when running feature:install esh-io-transport-mqtt) - again 2 connections:
    11:25:46.778 [INFO ] [o.transport.mqtt.MqttBrokerConnection] - Starting MQTT broker connection 'mosquitto' to 'tcp://localhost:1883' with clientid paho1741848008350 and file store '/var/lib/openhab2/tmp/mosquitto'
    11:25:46.815 [INFO ] [o.transport.mqtt.MqttBrokerConnection] - Starting MQTT broker connection 'mosquitto' to 'tcp://localhost:1883' with clientid paho1741975903334 and file store '/var/lib/openhab2/tmp/mosquitto'

    I'm digging into the code for esh-io-transport-mqtt to see if I can find the root cause, but this openhab stuff is a whole load of bloatware 🙂



  • @jet who knew! ultimately clientid isn't really a critical piece of info to provide, but not knowing that providing it causes the error is unfortunate.

    would this apply to future mqtt bindings using esh-io-transport-mqtt even besides mysensors, essentially rendering the broker.clientid setting useless?



  • This happens before mysensors is even loaded, so yes.

    Here's the code: https://github.com/eclipse/smarthome/blob/master/bundles/io/org.eclipse.smarthome.io.transport.mqtt/src/main/java/org/eclipse/smarthome/io/transport/mqtt/MqttBrokerConnection.java

    But I'm not seeing anything requesting 2 connections, unless openhab is requesting it of something is wrong or not working with the reconnect code



  • Couldn't figure out why it launches 2 instances or how to stop it, it seems to be 2 instances launches from just one module (esh-io-transport-mqtt) if anybody figures out why, please post an update. Otherwise not defining clientId for now is a workaround.



  • @timo Looks like new binding no more support reporting of battery voltage from sensors, or I missed something?


 

426
Online

7.5k
Users

8.4k
Topics

90.3k
Posts