Fronius Binding is crashing

I am running Openhab 2.4.0 #build 1310 with the latest Fronius Binding. At least once a day the Fronius binding crashes and I need to restart the openhab.service to get it working again.

That is what I found in the log files so far:

	2018-07-11 09:02:35.530 [WARN ] [mmon.WrappedScheduledExecutorService] - Scheduled runnable ended with an exception
java.lang.NullPointerException: null
	at org.openhab.binding.fronius.handler.FroniusSymoInverterHandler.getValue(FroniusSymoInverterHandler.java:86) ~[?:?]
	at org.openhab.binding.fronius.handler.FroniusBaseThingHandler.updateChannel(FroniusBaseThingHandler.java:99) ~[?:?]
	at org.openhab.binding.fronius.handler.FroniusBaseThingHandler.updateChannels(FroniusBaseThingHandler.java:85) ~[?:?]
	at org.openhab.binding.fronius.handler.FroniusSymoInverterHandler.refresh(FroniusSymoInverterHandler.java:58) ~[?:?]
	at org.openhab.binding.fronius.handler.FroniusBridgeHandler.lambda$0(FroniusBridgeHandler.java:109) ~[?:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:?]
	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 what is going wrong?

It appears that this method call is failing.

    ValueUnit day = inverterRealtimeResponse.getBody().getData().getDayEnergy();
    day.setUnit("kWh");
    return day;

We could eliminate the NullPointerException easily enough, but you should try to determine if you have a configuration problem that’s causing it.

For comparison, it’d be good to have a TRACE log that shows both a successful update round and a failed update round.

Sorry for the delay. Haven’t had the time before to set everything up proper. I tried to remove every fronius thing (binding, things, items, links) and started over again but still the same outcome.
It works for an hour or something and than it throws that exception and it is not working any more.

I added the log of a successfull run and of the exception itsself.

2018-07-17 23:21:56.238 [DEBUG] [nius.handler.FroniusBaseThingHandler] - Value retrieved for channel 'inverterdatachannelpac' was null. Can't update.
2018-07-17 23:21:56.245 [DEBUG] [nius.handler.FroniusBaseThingHandler] - Update channel inverterdatachanneldayenergy with state 10.233 (ValueUnit)
2018-07-17 23:21:56.253 [DEBUG] [nius.handler.FroniusBaseThingHandler] - Update channel inverterdatachanneltotal with state 1.54788 (ValueUnit)
2018-07-17 23:21:56.268 [DEBUG] [nius.handler.FroniusBaseThingHandler] - Update channel inverterdatachannelyear with state 1.54788075 (ValueUnit)
2018-07-17 23:21:56.280 [DEBUG] [nius.handler.FroniusBaseThingHandler] - Update channel powerflowchannelpload with state -347.7999922260642 (Double)
2018-07-17 23:22:01.291 [DEBUG] [s.handler.FroniusSymoInverterHandler] - URL = http://192.168.1.110/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DeviceId=1&DataCollection=CommonInverterData
2018-07-17 23:22:05.737 [DEBUG] [s.handler.FroniusSymoInverterHandler] - aqiResponse = {
   "Body" : {
      "Data" : {}
   },
   "Head" : {
      "RequestArguments" : {
         "DataCollection" : "CommonInverterData",
         "DeviceClass" : "Inverter",
         "DeviceId" : "1",
         "Scope" : "Device"
      },
      "Status" : {
         "Code" : 8,
         "Reason" : "Transfer timeout.",
         "UserMessage" : ""
      },
      "Timestamp" : "2018-07-17T23:22:05+02:00"
   }
}

2018-07-17 23:22:05.742 [DEBUG] [s.handler.FroniusSymoInverterHandler] - URL = http://192.168.1.110/solar_api/v1/GetPowerFlowRealtimeData.fcgi
2018-07-17 23:22:05.766 [DEBUG] [s.handler.FroniusSymoInverterHandler] - aqiResponse = {
   "Body" : {
      "Data" : {
         "Inverters" : {
            "1" : {
               "DT" : 112,
               "E_Day" : 10233,
               "E_Total" : 1547880,
               "E_Year" : 1547880.75,
               "P" : 0
            }
         },
         "Site" : {
            "E_Day" : 10233,
            "E_Total" : 1547880,
            "E_Year" : 1547880.75,
            "Meter_Location" : "grid",
            "Mode" : "meter",
            "P_Akku" : null,
            "P_Grid" : 347.94999222271144,
            "P_Load" : -347.94999222271144,
            "P_PV" : null,
            "rel_Autonomy" : 0,
            "rel_SelfConsumption" : null
         },
         "Version" : "10"
      }
   },
   "Head" : {
      "RequestArguments" : {},
      "Status" : {
         "Code" : 0,
         "Reason" : "",
         "UserMessage" : ""
      },
      "Timestamp" : "2018-07-17T23:22:05+02:00"
   }
}

2018-07-17 23:22:05.771 [DEBUG] [nius.handler.FroniusBaseThingHandler] - Value retrieved for channel 'inverterdatachannelpac' was null. Can't update.
2018-07-17 23:22:05.776 [WARN ] [mmon.WrappedScheduledExecutorService] - Scheduled runnable ended with an exception
java.lang.NullPointerException: null
	at org.openhab.binding.fronius.handler.FroniusSymoInverterHandler.getValue(FroniusSymoInverterHandler.java:86) ~[?:?]
	at org.openhab.binding.fronius.handler.FroniusBaseThingHandler.updateChannel(FroniusBaseThingHandler.java:99) ~[?:?]
	at org.openhab.binding.fronius.handler.FroniusBaseThingHandler.updateChannels(FroniusBaseThingHandler.java:85) ~[?:?]
	at org.openhab.binding.fronius.handler.FroniusSymoInverterHandler.refresh(FroniusSymoInverterHandler.java:58) ~[?:?]
	at org.openhab.binding.fronius.handler.FroniusBridgeHandler.lambda$0(FroniusBridgeHandler.java:109) ~[?:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:?]
	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) [?:?]

Thanks!

I suggest logging this defect in the OH2 issue tracker.
Never mind. I see a whole slew of NPEs have already been logged here.

I could quash the null pointer exception, but the code isn’t doing any of the bounds checking it should. It’d be good to see if the original author can get engaged.

i am on latest snapshot
same NPE happens

Same for me! I replied on github -> https://github.com/openhab/openhab2-addons/issues/3741