[SOLVED] Network UPS Tools binding for openHAB 2 available

Same here.

Similar log (first start after clean-cache):

2019-10-04 19:25:40.542 [DEBUG] [org.openhab.binding.networkupstools ] - BundleEvent INSTALLED - org.openhab.binding.networkupstools
2019-10-04 19:25:43.044 [DEBUG] [org.openhab.binding.networkupstools ] - BundleEvent STARTING - org.openhab.binding.networkupstools
2019-10-04 19:25:43.049 [DEBUG] [org.openhab.binding.networkupstools ] - BundleEvent STARTED - org.openhab.binding.networkupstools
2019-10-04 19:25:44.305 [DEBUG] [org.openhab.binding.networkupstools ] - BundleEvent RESOLVED - org.openhab.binding.networkupstools
2019-10-04 19:25:47.955 [DEBUG] [org.openhab.binding.networkupstools ] - ServiceEvent REGISTERED - {org.openhab.binding.networkupstools.internal.NetworkUPSChannelTypeProvider, org.eclipse.smarthome.core.thing.type.ChannelTypeProvider}={service.id=98, service.bundleid=182, service.scope=bundle, component.name=org.openhab.binding.networkupstools.internal.NetworkUPSChannelTypeProvider, component.id=0} - org.openhab.binding.networkupstools
2019-10-04 19:25:48.039 [DEBUG] [org.openhab.binding.networkupstools ] - ServiceEvent REGISTERED - {org.eclipse.smarthome.core.thing.binding.ThingHandlerFactory}={service.id=99, service.bundleid=182, service.scope=bundle, component.name=org.openhab.binding.networkupstools.internal.NetworkUPSToolsHandlerFactory, component.id=1} - org.openhab.binding.networkupstools
2019-10-04 19:26:21.894 [hingStatusInfoChangedEvent] - 'networkupstools:ups:9e440198' changed from UNINITIALIZED to INITIALIZING
2019-10-04 19:26:22.045 [TRACE] [ools.internal.NetworkUPSToolsHandler] - Get new data from NUT server.
2019-10-04 19:26:22.060 [TRACE] [ools.internal.NetworkUPSToolsHandler] - Get new data from NUT server.
2019-10-04 19:26:22.064 [TRACE] [ools.internal.NetworkUPSToolsHandler] - No data from NUT server received.
2019-10-04 19:26:22.067 [hingStatusInfoChangedEvent] - 'networkupstools:ups:9e440198' changed from INITIALIZING to UNKNOWN
2019-10-04 19:26:22.694 [TRACE] [ools.internal.NetworkUPSToolsHandler] - Get new data from NUT server.
2019-10-04 19:26:22.709 [TRACE] [kupstools.internal.nut.NutListParser] - Reading VAR usv
2019-10-04 19:26:22.715 [TRACE] [kupstools.internal.nut.NutListParser] - Line read:ERR INVALID-ARGUMENT

Thanks for all the testing. I think I found the issue (something with a space). I’ve uploaded a new binding (04/10/2019) that includes a fix and also should be a bit robuster against blocking data.

2 Likes

Yep, seems to work well :slight_smile:


This is an APC Back-UPS CS 350, so there are quite some channels which do not get information at all.

1 Like

whoo wooo !!
nice work Hilbrand!

here too (unfortunately, the usbhid-ups driver just provides some of the available variables for my UPS model):

Nothing alarming in the log so far:

2019-10-05 08:38:23.848 [DEBUG] [org.openhab.binding.networkupstools ] - BundleEvent INSTALLED - org.openhab.binding.networkupstools
2019-10-05 08:38:28.352 [DEBUG] [org.openhab.binding.networkupstools ] - BundleEvent RESOLVED - org.openhab.binding.networkupstools
2019-10-05 08:38:28.701 [DEBUG] [org.openhab.binding.networkupstools ] - BundleEvent STARTING - org.openhab.binding.networkupstools
2019-10-05 08:38:28.715 [DEBUG] [org.openhab.binding.networkupstools ] - BundleEvent STARTED - org.openhab.binding.networkupstools
2019-10-05 08:38:29.001 [DEBUG] [org.openhab.binding.networkupstools ] - ServiceEvent REGISTERED - {org.openhab.binding.networkupstools.internal.NetworkUPSChannelTypeProvider, org.eclipse.smarthome.core.thing.type.ChannelTypeProvider}={service.id=88, service.bundleid=196, service.scope=bundle, component.name=org.openhab.binding.networkupstools.internal.NetworkUPSChannelTypeProvider, component.id=0} - org.openhab.binding.networkupstools
2019-10-05 08:38:29.078 [DEBUG] [org.openhab.binding.networkupstools ] - ServiceEvent REGISTERED - {org.eclipse.smarthome.core.thing.binding.ThingHandlerFactory}={service.id=89, service.bundleid=196, service.scope=bundle, component.name=org.openhab.binding.networkupstools.internal.NetworkUPSToolsHandlerFactory, component.id=1} - org.openhab.binding.networkupstools
2019-10-05 08:38:58.660 [hingStatusInfoChangedEvent] - 'networkupstools:ups:9e440198' changed from UNINITIALIZED to INITIALIZING
2019-10-05 08:38:58.755 [hingStatusInfoChangedEvent] - 'networkupstools:ups:9e440198' changed from INITIALIZING to UNKNOWN
2019-10-05 08:38:58.803 [TRACE] [ools.internal.NetworkUPSToolsHandler] - Get new data from NUT server.
2019-10-05 08:38:58.828 [TRACE] [ools.internal.NetworkUPSToolsHandler] - Get new data from NUT server.
2019-10-05 08:38:58.832 [TRACE] [ools.internal.NetworkUPSToolsHandler] - No data from NUT server received.
2019-10-05 08:38:58.996 [TRACE] [ools.internal.NetworkUPSToolsHandler] - Get new data from NUT server.
2019-10-05 08:38:59.034 [TRACE] [kupstools.internal.nut.NutListReader] - Reading VAR usv
2019-10-05 08:38:59.044 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:BEGIN LIST VAR usv
2019-10-05 08:38:59.051 [TRACE] [kupstools.internal.nut.NutListReader] - Begin of list 'VAR usv' found
2019-10-05 08:38:59.058 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv battery.charge "100"
2019-10-05 08:38:59.068 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'battery.charge':100
2019-10-05 08:38:59.075 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv battery.charge.low "10"
2019-10-05 08:38:59.082 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'battery.charge.low':10
2019-10-05 08:38:59.090 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv battery.charge.warning "50"
2019-10-05 08:38:59.095 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'battery.charge.warning':50
2019-10-05 08:38:59.101 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv battery.runtime "5640"
2019-10-05 08:38:59.106 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'battery.runtime':5640
2019-10-05 08:38:59.113 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv battery.runtime.low "120"
2019-10-05 08:38:59.118 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'battery.runtime.low':120
2019-10-05 08:38:59.124 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv battery.type "PbAc"
2019-10-05 08:38:59.132 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'battery.type':PbAc
2019-10-05 08:38:59.139 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv battery.voltage "27.3"
2019-10-05 08:38:59.146 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'battery.voltage':27.3
2019-10-05 08:38:59.151 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv battery.voltage.nominal "24.0"
2019-10-05 08:38:59.155 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'battery.voltage.nominal':24.0
2019-10-05 08:38:59.164 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv device.mfr "American Power Conversion "
2019-10-05 08:38:59.170 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'device.mfr':American Power Conversion 
2019-10-05 08:38:59.174 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv device.model "Smart-UPS C 1500"
2019-10-05 08:38:59.180 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'device.model':Smart-UPS C 1500
2019-10-05 08:38:59.185 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv device.serial "<cleared>  "
2019-10-05 08:38:59.190 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'device.serial':<cleared>  
2019-10-05 08:38:59.195 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv device.type "ups"
2019-10-05 08:38:59.200 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'device.type':ups
2019-10-05 08:38:59.206 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv driver.name "usbhid-ups"
2019-10-05 08:38:59.212 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'driver.name':usbhid-ups
2019-10-05 08:38:59.219 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv driver.parameter.pollfreq "30"
2019-10-05 08:38:59.225 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'driver.parameter.pollfreq':30
2019-10-05 08:38:59.233 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv driver.parameter.pollinterval "2"
2019-10-05 08:38:59.241 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'driver.parameter.pollinterval':2
2019-10-05 08:38:59.248 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv driver.parameter.port "auto"
2019-10-05 08:38:59.253 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'driver.parameter.port':auto
2019-10-05 08:38:59.259 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv driver.parameter.synchronous "no"
2019-10-05 08:38:59.267 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'driver.parameter.synchronous':no
2019-10-05 08:38:59.272 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv driver.version "2.7.4"
2019-10-05 08:38:59.277 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'driver.version':2.7.4
2019-10-05 08:38:59.284 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv driver.version.data "APC HID 0.96"
2019-10-05 08:38:59.290 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'driver.version.data':APC HID 0.96
2019-10-05 08:38:59.295 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv driver.version.internal "0.41"
2019-10-05 08:38:59.301 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'driver.version.internal':0.41
2019-10-05 08:38:59.306 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv ups.beeper.status "disabled"
2019-10-05 08:38:59.311 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'ups.beeper.status':disabled
2019-10-05 08:38:59.315 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv ups.delay.shutdown "20"
2019-10-05 08:38:59.320 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'ups.delay.shutdown':20
2019-10-05 08:38:59.325 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv ups.firmware "UPS 10.0 / ID=1005"
2019-10-05 08:38:59.330 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'ups.firmware':UPS 10.0 / ID=1005
2019-10-05 08:38:59.336 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv ups.mfr "American Power Conversion "
2019-10-05 08:38:59.341 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'ups.mfr':American Power Conversion 
2019-10-05 08:38:59.346 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv ups.mfr.date "<cleared>"
2019-10-05 08:38:59.352 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'ups.mfr.date':<cleared>
2019-10-05 08:38:59.357 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv ups.model "Smart-UPS C 1500"
2019-10-05 08:38:59.362 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'ups.model':Smart-UPS C 1500
2019-10-05 08:38:59.366 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv ups.productid "0003"
2019-10-05 08:38:59.372 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'ups.productid':0003
2019-10-05 08:38:59.377 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv ups.serial "<cleared>  "
2019-10-05 08:38:59.382 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'ups.serial':<cleared>  
2019-10-05 08:38:59.387 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv ups.status "OL"
2019-10-05 08:38:59.392 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'ups.status':OL
2019-10-05 08:38:59.397 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv ups.timer.reboot "-1"
2019-10-05 08:38:59.402 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'ups.timer.reboot':-1
2019-10-05 08:38:59.407 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv ups.timer.shutdown "-1"
2019-10-05 08:38:59.414 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'ups.timer.shutdown':-1
2019-10-05 08:38:59.421 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv ups.vendorid "051d"
2019-10-05 08:38:59.426 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'ups.vendorid':051d
2019-10-05 08:38:59.432 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:END LIST VAR usv
2019-10-05 08:38:59.437 [DEBUG] [kupstools.internal.nut.NutListReader] - Unrecognized nut results: END LIST VAR usv
2019-10-05 08:38:59.443 [TRACE] [kupstools.internal.nut.NutListReader] - List 'VAR usv' read. 32 variables read
2019-10-05 08:38:59.700 [vent.ItemStateChangedEvent] - networkupstools_ups_9e440198_upsRealpower changed from NULL to UNDEF
2019-10-05 08:38:59.703 [vent.ItemStateChangedEvent] - networkupstools_ups_9e440198_upsTemperature changed from NULL to UNDEF
2019-10-05 08:38:59.707 [vent.ItemStateChangedEvent] - networkupstools_ups_9e440198_inputVoltage changed from NULL to UNDEF
2019-10-05 08:38:59.710 [vent.ItemStateChangedEvent] - networkupstools_ups_9e440198_upsAlarm changed from NULL to UNDEF
2019-10-05 08:38:59.715 [vent.ItemStateChangedEvent] - networkupstools_ups_9e440198_upsStatus changed from NULL to OL
2019-10-05 08:38:59.718 [vent.ItemStateChangedEvent] - networkupstools_ups_9e440198_batteryRuntime changed from NULL to 5640.0 s
2019-10-05 08:38:59.722 [vent.ItemStateChangedEvent] - networkupstools_ups_9e440198_batteryCharge changed from NULL to 100.0 %
2019-10-05 08:38:59.725 [vent.ItemStateChangedEvent] - networkupstools_ups_9e440198_inputLoad changed from NULL to UNDEF
2019-10-05 08:39:58.839 [TRACE] [ools.internal.NetworkUPSToolsHandler] - Get new data from NUT server.
2019-10-05 08:39:58.845 [TRACE] [kupstools.internal.nut.NutListReader] - Reading VAR usv
2019-10-05 08:39:58.849 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:BEGIN LIST VAR usv
2019-10-05 08:39:58.851 [TRACE] [kupstools.internal.nut.NutListReader] - Begin of list 'VAR usv' found
2019-10-05 08:39:58.854 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv battery.charge "100"
2019-10-05 08:39:58.856 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'battery.charge':100
2019-10-05 08:39:58.859 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv battery.charge.low "10"
2019-10-05 08:39:58.861 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'battery.charge.low':10
2019-10-05 08:39:58.864 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv battery.charge.warning "50"
2019-10-05 08:39:58.866 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'battery.charge.warning':50
2019-10-05 08:39:58.869 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv battery.runtime "5640"
2019-10-05 08:39:58.872 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'battery.runtime':5640
2019-10-05 08:39:58.875 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv battery.runtime.low "120"
2019-10-05 08:39:58.878 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'battery.runtime.low':120
2019-10-05 08:39:58.880 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv battery.type "PbAc"
2019-10-05 08:39:58.883 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'battery.type':PbAc
2019-10-05 08:39:58.885 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv battery.voltage "27.3"
2019-10-05 08:39:58.888 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'battery.voltage':27.3
2019-10-05 08:39:58.891 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv battery.voltage.nominal "24.0"
2019-10-05 08:39:58.894 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'battery.voltage.nominal':24.0
2019-10-05 08:39:58.896 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv device.mfr "American Power Conversion "
2019-10-05 08:39:58.899 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'device.mfr':American Power Conversion 
2019-10-05 08:39:58.902 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv device.model "Smart-UPS C 1500"
2019-10-05 08:39:58.904 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'device.model':Smart-UPS C 1500
2019-10-05 08:39:58.907 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv device.serial "<cleared>  "
2019-10-05 08:39:58.909 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'device.serial':<cleared>  
2019-10-05 08:39:58.911 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv device.type "ups"
2019-10-05 08:39:58.914 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'device.type':ups
2019-10-05 08:39:58.916 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv driver.name "usbhid-ups"
2019-10-05 08:39:58.919 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'driver.name':usbhid-ups
2019-10-05 08:39:58.921 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv driver.parameter.pollfreq "30"
2019-10-05 08:39:58.924 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'driver.parameter.pollfreq':30
2019-10-05 08:39:58.926 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv driver.parameter.pollinterval "2"
2019-10-05 08:39:58.929 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'driver.parameter.pollinterval':2
2019-10-05 08:39:58.931 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv driver.parameter.port "auto"
2019-10-05 08:39:58.934 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'driver.parameter.port':auto
2019-10-05 08:39:58.936 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv driver.parameter.synchronous "no"
2019-10-05 08:39:58.939 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'driver.parameter.synchronous':no
2019-10-05 08:39:58.941 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv driver.version "2.7.4"
2019-10-05 08:39:58.943 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'driver.version':2.7.4
2019-10-05 08:39:58.946 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv driver.version.data "APC HID 0.96"
2019-10-05 08:39:58.949 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'driver.version.data':APC HID 0.96
2019-10-05 08:39:58.952 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv driver.version.internal "0.41"
2019-10-05 08:39:58.954 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'driver.version.internal':0.41
2019-10-05 08:39:58.956 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv ups.beeper.status "disabled"
2019-10-05 08:39:58.959 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'ups.beeper.status':disabled
2019-10-05 08:39:58.961 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv ups.delay.shutdown "20"
2019-10-05 08:39:58.964 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'ups.delay.shutdown':20
2019-10-05 08:39:58.966 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv ups.firmware "UPS 10.0 / ID=1005"
2019-10-05 08:39:58.968 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'ups.firmware':UPS 10.0 / ID=1005
2019-10-05 08:39:58.970 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv ups.mfr "American Power Conversion "
2019-10-05 08:39:58.973 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'ups.mfr':American Power Conversion 
2019-10-05 08:39:58.975 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv ups.mfr.date <cleared>
2019-10-05 08:39:58.978 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'ups.mfr.date': <cleared>
2019-10-05 08:39:58.980 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv ups.model "Smart-UPS C 1500"
2019-10-05 08:39:58.982 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'ups.model':Smart-UPS C 1500
2019-10-05 08:39:58.985 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv ups.productid "0003"
2019-10-05 08:39:58.987 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'ups.productid':0003
2019-10-05 08:39:58.989 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv ups.serial "<cleared>  "
2019-10-05 08:39:58.992 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'ups.serial':<cleared>  
2019-10-05 08:39:58.994 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv ups.status "OL"
2019-10-05 08:39:58.997 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'ups.status':OL
2019-10-05 08:39:58.999 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv ups.timer.reboot "-1"
2019-10-05 08:39:59.002 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'ups.timer.reboot':-1
2019-10-05 08:39:59.005 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv ups.timer.shutdown "-1"
2019-10-05 08:39:59.007 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'ups.timer.shutdown':-1
2019-10-05 08:39:59.009 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:VAR usv ups.vendorid "051d"
2019-10-05 08:39:59.012 [TRACE] [kupstools.internal.nut.NutListReader] - Read nut variable 'ups.vendorid':051d
2019-10-05 08:39:59.014 [TRACE] [kupstools.internal.nut.NutListReader] - Line read:END LIST VAR usv
2019-10-05 08:39:59.016 [DEBUG] [kupstools.internal.nut.NutListReader] - Unrecognized nut results: END LIST VAR usv
2019-10-05 08:39:59.018 [TRACE] [kupstools.internal.nut.NutListReader] - List 'VAR usv' read. 32 variables read
2019-10-05 08:39:59.021 [TRACE] [ools.internal.NetworkUPSToolsHandler] - Updating status of linked channels.
2019-10-05 08:39:59.078 [hingStatusInfoChangedEvent] - 'networkupstools:ups:9e440198' changed from UNKNOWN to ONLINE 

Looks quite good. Thanks a lot Hilbrand!
Anything we should test more in detail?

1 Like

BTW: The refresh interval just applies to the readings of measurements - right?
Is the change of the status (eg. OL to OB) recognized/propagated immediately or is it noticed at next polling too?

EDIT: Maybe I can answer myself :wink:

Everytime the binding refreshes the channels, it opens a new TCP connection to the NUT server (see the changing client port 127.0.0.1:<-port-> in TIME_WAIT state below).
And: There is no permanent TCP connection to get used for immediate alarming:

[09:16:19] root@openHAB4-USV# netstat -an | grep 3493
tcp        0      0 127.0.0.1:3493          0.0.0.0:*               LISTEN
tcp6       0      0 127.0.0.1:33858         127.0.0.1:3493          TIME_WAIT
[09:16:21] root@openHAB4-USV# netstat -an | grep 3493
tcp        0      0 127.0.0.1:3493          0.0.0.0:*               LISTEN
tcp6       0      0 127.0.0.1:33890         127.0.0.1:3493          TIME_WAIT
[09:17:35] root@openHAB4-USV:# netstat -an | grep 3493
tcp        0      0 127.0.0.1:3493          0.0.0.0:*               LISTEN
tcp6       0      0 127.0.0.1:33926         127.0.0.1:3493          TIME_WAIT

Probably we have to lower the refresh interval to get OB sooner (if needed) :thinking:

Question to some beeing more familiar with NUT:
Is there a mechanism to get the state change immediately?

1 Like

Hi Hilbrand,
I’ve started digging into the NUT documentation and did some tests with “native” NUT client upsmon.
This one keeps it’s tcp connection open. This means, it can be updated immediatly when some values or the online status are changing. It seems to not rely on polling. The netstat shows the permanent tcp connection of upsmon:

[14:55:10] root@openHAB4-USV:/etc/nut# netstat -an | grep 3493
tcp        0      0 127.0.0.1:3493          0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:3493          127.0.0.1:46310         VERBUNDEN >>> "outgoing" upsd -> upsmon
tcp        0      0 127.0.0.1:46310         127.0.0.1:3493          VERBUNDEN <<< "incoming" upsd <- upsmon
tcp6       0      0 127.0.0.1:46332         127.0.0.1:3493          TIME_WAIT <<< former upsd <- nut-binding refresh

Assuming that you have “ported” the program logic as it was in NUT1-binding into the new NUT2-binding.

Since the “old” binding is relying on polling, we now have the same behaviour with the NUT2 binding too.(which is good, I’m far from starting to complain about it :wink: )

But now having noticed the upsmon's behaviour, I’m curious to know, if we can get rid of the polling (and it’s drawbacks) and use a permanent tcp connection similar to upsmon?

When looking at the NUT developer guide (https://networkupstools.org/docs/developer-guide.pdf) I found a remark, that the Java support has been externalized:

8.4 Java
The NUT Java support has been externalized. It is available at https://github.com/networkupstools/jnut

Does the binding already make use the jnut lib?
If not, do you see a chance to give it a try?

But does it send status information to the client without specifically being asked for it? And/or how to enable it? I know how to get a single value, but not if a push mechanism is available.
I’m making changes to get status information at a higher refresh rate (3 seconds) with configurable refresh rate of other values and keeping connection open.

No. But the OH1 binding does. But for the OH2 binding I didn’t use it due to license issues.

I think so. I’ve assumed this is the reason for the permanent tcp connection. But this is just guess work :frowning:
Unfortunately, I can’t test (remove line power) with the real UPS to not risk all the systems running here :wink:

Maybe I could setup some tests with dummy-ups to check… but running out of time for today :frowning:

:+1: … sounds reasonable and sufficient to get an almost immediate state change. Thank you.

Ah. Good to know.

Btw.: Let me say a big THANK YOU for your current work and the progress in NUT2 in the past days in addition to all your other contributions to this project and the community!

New version of binding (05/10/2019). Changed to poll every 3 seconds for the status of the ups. This would make it more useful to write rules that trigger on status change of the ups.
If the status changes the other variables are queried. The other variables are also queried on the user configured refresh time (this is as it was with the previous version).

One thing to additional check: open the thing in PaperUI. It should show some properties it collected.

1 Like

Another thing: when the nut server is down (e.g. because the computer is switched off) the binding is throwing an error No route to host (Host unreachable). This is also true for nut1, and the only option to get rid of very frequent exceptions is, to switch off the logging. Maybe this error can be catched? Would be sufficient to set the thing offline :wink:

This error is only logged under debug logging, if I’m correct. I would guess that would be ok? If you see it somewhere else can you post the stacktrace?

1 Like

Yes, you’re right, forgot to switch back from Trace to Info… :smiley:

Just dropped jar file in addons directory and got some error messages. Jar file is from today. Thing remains uninitialized in Paper UI. Here is log entries

14:42:36.789 [ERROR] [org.openhab.binding.networkupstools  ] - bundle org.openhab.binding.networkupstools:2.5.0.201910051821 (268)[org.openhab.binding.networkupstools.internal.NetworkUPSToolsHandlerFactory(339)] :  Error during instantiation of the implementation object
java.lang.NoSuchMethodError: tec.uom.se.format.SimpleUnitFormat.getInstance()Ltec/uom/se/format/SimpleUnitFormat$FinalDefaultFormat;
	at org.openhab.binding.networkupstools.internal.NetworkUPSToolsBindingConstants.<clinit>(NetworkUPSToolsBindingConstants.java:38) ~[?:?]
	at org.openhab.binding.networkupstools.internal.NetworkUPSToolsHandlerFactory.<clinit>(NetworkUPSToolsHandlerFactory.java:41) ~[?:?]
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:?]
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?]
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:?]
	at org.apache.felix.scr.impl.inject.ComponentConstructor.newInstance(ComponentConstructor.java:305) ~[39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.createImplementationObject(SingleComponentManager.java:271) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.createComponent(SingleComponentManager.java:114) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:947) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:919) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:863) [39:org.apache.felix.scr:2.1.2]
	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:508) [?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:461) [?:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:624) [?:?]
	at org.apache.felix.scr.impl.manager.SingleRefPair.getServiceObject(SingleRefPair.java:73) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.inject.BindParameters.getServiceObject(BindParameters.java:47) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.inject.methods.BindMethod.getServiceObject(BindMethod.java:662) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.DependencyManager.getServiceObject(DependencyManager.java:2304) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.DependencyManager.doInvokeBindMethod(DependencyManager.java:1801) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.DependencyManager.invokeBindMethod(DependencyManager.java:1784) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.invokeBindMethod(SingleComponentManager.java:409) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:333) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:302) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1216) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1137) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.trackAdding(ServiceTracker.java:944) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.track(ServiceTracker.java:880) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1168) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.BundleComponentActivator$ListenerInfo.serviceChanged(BundleComponentActivator.java:125) [39:org.apache.felix.scr:2.1.2]
	at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:109) [?:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:920) [?:?]
	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$1.run(ServiceRegistry.java:805) [?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$1.run(ServiceRegistry.java:1) [?:?]
	at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:803) [?:?]
	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:469) [?:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:891) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:877) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:128) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:944) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:727) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:661) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:427) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:665) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:339) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:381) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.Activator.access$200(Activator.java:49) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:263) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.AbstractExtender.createExtension(AbstractExtender.java:196) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:169) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:49) [39:org.apache.felix.scr:2.1.2]
	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:908) [?:?]
	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$1.run(EquinoxEventPublisher.java:124) [?:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher$1.run(EquinoxEventPublisher.java:1) [?:?]
	at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:122) [?:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:112) [?:?]
	at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:168) [?:?]
	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.apache.felix.fileinstall.internal.DirectoryWatcher.startBundle(DirectoryWatcher.java:1260) [10:org.apache.felix.fileinstall:3.6.4]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundles(DirectoryWatcher.java:1233) [10:org.apache.felix.fileinstall:3.6.4]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.doProcess(DirectoryWatcher.java:520) [10:org.apache.felix.fileinstall:3.6.4]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:365) [10:org.apache.felix.fileinstall:3.6.4]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:316) [10:org.apache.felix.fileinstall:3.6.4]
14:42:36.825 [WARN ] [org.openhab.binding.networkupstools  ] - FrameworkEvent WARNING - org.openhab.binding.networkupstools
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:508) ~[?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:461) ~[?:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:624) ~[?:?]
	at org.apache.felix.scr.impl.manager.SingleRefPair.getServiceObject(SingleRefPair.java:73) ~[?:?]
	at org.apache.felix.scr.impl.inject.BindParameters.getServiceObject(BindParameters.java:47) ~[?:?]
	at org.apache.felix.scr.impl.inject.methods.BindMethod.getServiceObject(BindMethod.java:662) ~[?:?]
	at org.apache.felix.scr.impl.manager.DependencyManager.getServiceObject(DependencyManager.java:2304) ~[?:?]
	at org.apache.felix.scr.impl.manager.DependencyManager.doInvokeBindMethod(DependencyManager.java:1801) ~[?:?]
	at org.apache.felix.scr.impl.manager.DependencyManager.invokeBindMethod(DependencyManager.java:1784) ~[?:?]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.invokeBindMethod(SingleComponentManager.java:409) ~[?:?]
	at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:333) ~[?:?]
	at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:302) ~[?:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1216) ~[?:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1137) ~[?:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.trackAdding(ServiceTracker.java:944) ~[?:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.track(ServiceTracker.java:880) ~[?:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1168) ~[?:?]
	at org.apache.felix.scr.impl.BundleComponentActivator$ListenerInfo.serviceChanged(BundleComponentActivator.java:125) ~[?:?]
	at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:109) ~[?:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:920) ~[?:?]
	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$1.run(ServiceRegistry.java:805) ~[?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$1.run(ServiceRegistry.java:1) ~[?:?]
	at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:803) ~[?:?]
	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:469) ~[?:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:891) ~[?:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:877) ~[?:?]
	at org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:128) ~[?:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:944) ~[?:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:727) ~[?:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:661) ~[?:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:427) ~[?:?]
	at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:665) ~[?:?]
	at org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:339) ~[?:?]
	at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:381) ~[?:?]
	at org.apache.felix.scr.impl.Activator.access$200(Activator.java:49) ~[?:?]
	at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:263) ~[?:?]
	at org.apache.felix.scr.impl.AbstractExtender.createExtension(AbstractExtender.java:196) ~[?:?]
	at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:169) ~[?:?]
	at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:49) ~[?:?]
	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:908) ~[?:?]
	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$1.run(EquinoxEventPublisher.java:124) ~[?:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher$1.run(EquinoxEventPublisher.java:1) ~[?:?]
	at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:122) ~[?:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:112) ~[?:?]
	at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:168) ~[?:?]
	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.apache.felix.fileinstall.internal.DirectoryWatcher.startBundle(DirectoryWatcher.java:1260) ~[?:?]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundles(DirectoryWatcher.java:1233) ~[?:?]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.doProcess(DirectoryWatcher.java:520) ~[?:?]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:365) ~[?:?]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:316) ~[?:?]
14:42:36.826 [ERROR] [org.openhab.binding.networkupstools  ] - bundle org.openhab.binding.networkupstools:2.5.0.201910051821 (268)[org.openhab.binding.networkupstools.internal.NetworkUPSToolsHandlerFactory(339)] :  Error during instantiation of the implementation object
java.lang.NoClassDefFoundError: Could not initialize class org.openhab.binding.networkupstools.internal.NetworkUPSToolsHandlerFactory
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:?]
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?]
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:?]
	at org.apache.felix.scr.impl.inject.ComponentConstructor.newInstance(ComponentConstructor.java:305) ~[39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.createImplementationObject(SingleComponentManager.java:271) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.createComponent(SingleComponentManager.java:114) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:947) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:919) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:863) [39:org.apache.felix.scr:2.1.2]
	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:508) [?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:461) [?:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:624) [?:?]
	at org.apache.felix.scr.impl.manager.SingleRefPair.getServiceObject(SingleRefPair.java:73) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.inject.BindParameters.getServiceObject(BindParameters.java:47) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.inject.methods.BindMethod.getServiceObject(BindMethod.java:662) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.DependencyManager.getServiceObject(DependencyManager.java:2304) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.DependencyManager.doInvokeBindMethod(DependencyManager.java:1801) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.DependencyManager.invokeBindMethod(DependencyManager.java:1784) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.invokeBindMethod(SingleComponentManager.java:409) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:333) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:302) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1216) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1137) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.trackAdding(ServiceTracker.java:944) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.track(ServiceTracker.java:880) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1168) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.BundleComponentActivator$ListenerInfo.serviceChanged(BundleComponentActivator.java:125) [39:org.apache.felix.scr:2.1.2]
	at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:109) [?:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:920) [?:?]
	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$1.run(ServiceRegistry.java:805) [?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$1.run(ServiceRegistry.java:1) [?:?]
	at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:803) [?:?]
	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:469) [?:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:891) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:877) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:128) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:944) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:727) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:661) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:427) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:665) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:339) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:381) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.Activator.access$200(Activator.java:49) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:263) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.AbstractExtender.createExtension(AbstractExtender.java:196) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:169) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:49) [39:org.apache.felix.scr:2.1.2]
	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:908) [?:?]
	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$1.run(EquinoxEventPublisher.java:124) [?:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher$1.run(EquinoxEventPublisher.java:1) [?:?]
	at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:122) [?:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:112) [?:?]
	at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:168) [?:?]
	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.apache.felix.fileinstall.internal.DirectoryWatcher.startBundle(DirectoryWatcher.java:1260) [10:org.apache.felix.fileinstall:3.6.4]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundles(DirectoryWatcher.java:1233) [10:org.apache.felix.fileinstall:3.6.4]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.doProcess(DirectoryWatcher.java:520) [10:org.apache.felix.fileinstall:3.6.4]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:365) [10:org.apache.felix.fileinstall:3.6.4]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:316) [10:org.apache.felix.fileinstall:3.6.4]
14:42:36.837 [WARN ] [org.openhab.binding.networkupstools  ] - FrameworkEvent WARNING - org.openhab.binding.networkupstools
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:508) ~[?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:461) ~[?:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:624) ~[?:?]
	at org.apache.felix.scr.impl.manager.SingleRefPair.getServiceObject(SingleRefPair.java:73) ~[?:?]
	at org.apache.felix.scr.impl.inject.BindParameters.getServiceObject(BindParameters.java:47) ~[?:?]
	at org.apache.felix.scr.impl.inject.methods.BindMethod.getServiceObject(BindMethod.java:662) ~[?:?]
	at org.apache.felix.scr.impl.manager.DependencyManager.getServiceObject(DependencyManager.java:2304) ~[?:?]
	at org.apache.felix.scr.impl.manager.DependencyManager.doInvokeBindMethod(DependencyManager.java:1801) ~[?:?]
	at org.apache.felix.scr.impl.manager.DependencyManager.invokeBindMethod(DependencyManager.java:1784) ~[?:?]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.invokeBindMethod(SingleComponentManager.java:409) ~[?:?]
	at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:333) ~[?:?]
	at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:302) ~[?:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1216) ~[?:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1137) ~[?:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.trackAdding(ServiceTracker.java:944) ~[?:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.track(ServiceTracker.java:880) ~[?:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1168) ~[?:?]
	at org.apache.felix.scr.impl.BundleComponentActivator$ListenerInfo.serviceChanged(BundleComponentActivator.java:125) ~[?:?]
	at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:109) ~[?:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:920) ~[?:?]
	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$1.run(ServiceRegistry.java:805) ~[?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$1.run(ServiceRegistry.java:1) ~[?:?]
	at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:803) ~[?:?]
	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:469) ~[?:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:891) ~[?:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:877) ~[?:?]
	at org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:128) ~[?:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:944) ~[?:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:727) ~[?:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:661) ~[?:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:427) ~[?:?]
	at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:665) ~[?:?]
	at org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:339) ~[?:?]
	at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:381) ~[?:?]
	at org.apache.felix.scr.impl.Activator.access$200(Activator.java:49) ~[?:?]
	at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:263) ~[?:?]
	at org.apache.felix.scr.impl.AbstractExtender.createExtension(AbstractExtender.java:196) ~[?:?]
	at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:169) ~[?:?]
	at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:49) ~[?:?]
	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:908) ~[?:?]
	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$1.run(EquinoxEventPublisher.java:124) ~[?:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher$1.run(EquinoxEventPublisher.java:1) ~[?:?]
	at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:122) ~[?:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:112) ~[?:?]
	at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:168) ~[?:?]
	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.apache.felix.fileinstall.internal.DirectoryWatcher.startBundle(DirectoryWatcher.java:1260) ~[?:?]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundles(DirectoryWatcher.java:1233) ~[?:?]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.doProcess(DirectoryWatcher.java:520) ~[?:?]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:365) ~[?:?]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:316) ~[?:?]
14:42:36.837 [ERROR] [org.openhab.binding.networkupstools  ] - bundle org.openhab.binding.networkupstools:2.5.0.201910051821 (268)[org.openhab.binding.networkupstools.internal.NetworkUPSToolsHandlerFactory(339)] :  Error during instantiation of the implementation object
java.lang.NoClassDefFoundError: Could not initialize class org.openhab.binding.networkupstools.internal.NetworkUPSToolsHandlerFactory
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:?]
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?]
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:?]
	at org.apache.felix.scr.impl.inject.ComponentConstructor.newInstance(ComponentConstructor.java:305) ~[39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.createImplementationObject(SingleComponentManager.java:271) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.createComponent(SingleComponentManager.java:114) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:947) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:919) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:863) [39:org.apache.felix.scr:2.1.2]
	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:508) [?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:461) [?:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:624) [?:?]
	at org.apache.felix.scr.impl.manager.SingleRefPair.getServiceObject(SingleRefPair.java:73) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.inject.BindParameters.getServiceObject(BindParameters.java:47) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.inject.methods.BindMethod.getServiceObject(BindMethod.java:662) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.DependencyManager.getServiceObject(DependencyManager.java:2304) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.DependencyManager.doInvokeBindMethod(DependencyManager.java:1801) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.DependencyManager.invokeBindMethod(DependencyManager.java:1784) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.invokeBindMethod(SingleComponentManager.java:409) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:333) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:302) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1216) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1137) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.trackAdding(ServiceTracker.java:944) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.track(ServiceTracker.java:880) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1168) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.BundleComponentActivator$ListenerInfo.serviceChanged(BundleComponentActivator.java:125) [39:org.apache.felix.scr:2.1.2]
	at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:109) [?:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:920) [?:?]
	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$1.run(ServiceRegistry.java:805) [?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$1.run(ServiceRegistry.java:1) [?:?]
	at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:803) [?:?]
	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:469) [?:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:891) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:877) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:128) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:944) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:727) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:661) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:427) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:665) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:339) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:381) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.Activator.access$200(Activator.java:49) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:263) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.AbstractExtender.createExtension(AbstractExtender.java:196) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:169) [39:org.apache.felix.scr:2.1.2]
	at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:49) [39:org.apache.felix.scr:2.1.2]
	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:908) [?:?]
	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$1.run(EquinoxEventPublisher.java:124) [?:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher$1.run(EquinoxEventPublisher.java:1) [?:?]
	at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:122) [?:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:112) [?:?]
	at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:168) [?:?]
	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.apache.felix.fileinstall.internal.DirectoryWatcher.startBundle(DirectoryWatcher.java:1260) [10:org.apache.felix.fileinstall:3.6.4]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundles(DirectoryWatcher.java:1233) [10:org.apache.felix.fileinstall:3.6.4]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.doProcess(DirectoryWatcher.java:520) [10:org.apache.felix.fileinstall:3.6.4]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:365) [10:org.apache.felix.fileinstall:3.6.4]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:316) [10:org.apache.felix.fileinstall:3.6.4]

there is more, it won’t fit in post but anyhow did I do something wrong
Can post whole log if needed

Did you try earlier versions of the binding? Maybe something with the openHAB version? What version do you run?

oh… that might be really important I am using 2.4 stable
won’t work?

I think it uses some QuantityType units not yet in openHAB 2.4

Ah.

Yet another point… I had to restart openHAB once I had moved the addon to the addons folder, since supported things remained empty, and also, when trying to add a thing, there was no option Network UPS Tool Thing

Hello,

Thanks for making this binding !!
unfortunately I can’t try this as I’m still running OH 2.4 at this moment.
But it looks good.

For me it would be nice if I can control the sockets of my UPS. I have a Eaton that support this.
With this I can make a sequence of powering off devices after a grid failure and let more critical devices run as long as possible. And do the opposite when grid power is restored.

Thanks for all the effort you put into this !!

Olaf,

1 Like