Create Equipment from Thing: DanfossAirUnit loading forever

Hi,

I’ve been building a semantic model using the UI (for now). Last missing piece is my Danfoss Air Unit A2. When trying to create equipment from my existing thing (created through PaperUI in 2.5), it keeps displaying “Loading”:

I didn’t experience this with any other existing things, so I’m not sure if this problem could be within the DanfossAirUnit binding or some bug within the UI triggered by some specific conditions.

Did anyone else experience this, or has anyone been able to add this with success?

Best regards,
Jacob Laursen

Cc @pravussum

I tried it just now (also upgraded to OH3 shortly and kept my existing setup created before).
This seems to work…:

My whole setup is configured using files, though (to make it portable).

Could you provide the exact steps you did (e. g. the group you created the equipment in).
Anything in the logs?
Please be so kind to open a github issue here and prefix the title with “[danfossairunit]”. You can cc me there as well.

Sure, I will. Until created, just quickly sharing other strange behaviour.

When opening my existing thing created through PaperUI in 2.5 (no channels):

When trying to create new thing from binding:

Best regards,
Jacob Laursen

Hi @pravussum,

Can I ask one more thing? This might be lack of knowledge from my side, but since I couldn’t reconfigure thing through UI after removing it, I switched to file-based configuration instead, to try to get it back to a working state. This is something I planned to do at some point anyway to have it decoupled from my system and version controlled in Git, now just forced to. :slight_smile: So I added (for starters):

danfoss.things:

Thing danfossairunit:airunit:myairunit "Danfoss HRV" [host="192.168.0.234",
refreshInterval=10,
updateUnchangedValuesEveryMillis=60000]

danfoss.items:

Group DanfossHRV "Danfoss HRV" (House) ["HVAC"]

String DanfossHRV_Main_Mode "Mode" (DanfossHRV) ["Control"] { channel = "danfossairunit:airunit:myairunit:main#mode" }
Switch DanfossHRV_Main_Boost "Boost" (DanfossHRV) ["Control"] { channel = "danfossairunit:airunit:myairunit:main#boost" }

Now these items are updated again, and I can even see them in my semantic model. Problem is that I can’t set value for them:

2021-01-07 21:51:36.600 [INFO ] [openhab.event.ItemCommandEvent ] - Item ‘DanfossHRV_Main_Mode’ received command MANUAL
2021-01-07 21:51:36.606 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item ‘DanfossHRV_Main_Mode’ predicted to become DEMAND
2021-01-07 21:51:37.740 [INFO ] [openhab.event.ItemCommandEvent ] - Item ‘DanfossHRV_Main_Boost’ received command ON
2021-01-07 21:51:37.744 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item ‘DanfossHRV_Main_Boost’ predicted to become OFF

They just immediately switch back to previous value. Again, maybe I’m missing some property in my textual configuration.

/Jacob

Hey @laursen,

the things file looks good, so does the items file. Here are my (corresponding) items for the sake of completeness:

String Lueftung_Mode "Betriebsart Lüftung" (All,Lueftung) {channel = "danfossairunit:airunit:lueftung:main#mode"}
Switch Lueftung_Boost "Stoßlüftung" (All,Lueftung) {channel = "danfossairunit:airunit:lueftung:main#boost"}

Can you do me a favour and download a fresh OH3 distribution zip from here - I assume you are on Windows? Please use the 3.1.0-SNAPSHOT version, since it includes the fix for this issue, which is not yet released.

Extract it, copy your 2 config files to the corresponding config directories and start the instance up locally. Can you reproduce the error? If so, can you zip the whole thing and send it to me? I’ll see, if I can reproduce it here. Otherwise its something with your migrated setup and I’m afraid I’ll need some kind of log output to continue. Did you check both the events.log as well as the openhab.log?

Hi @pravussum,

Tried that for first time (installed Zulu OpenJDK first), but without luck:

C:\openhab-3.1.0-SNAPSHOT>.\start.bat
Launching the openHAB runtime...
ERROR: The system was unable to find the specified registry key or value.
ERROR: The system was unable to find the specified registry key or value.

                           _   _     _     ____
   ___   ___   ___   ___  | | | |   / \   | __ )
  / _ \ / _ \ / _ \ / _ \ | |_| |  / _ \  |  _ \
 | (_) | (_) |  __/| | | ||  _  | / ___ \ | |_) )
  \___/|  __/ \___/|_| |_||_| |_|/_/   \_\|____/
       |_|       3.1.0-SNAPSHOT - Build #2122

Use '<tab>' for a list of available commands
and '[cmd] --help' for help on a specific command.
To exit, use '<ctrl-d>' or 'logout'.

openhab> org.apache.felix.resolver.reason.ReasonException: Unable to resolve root: missing requirement [root] osgi.identity; osgi.identity=openhab-runtime-base; type=karaf.feature; version="[3.1.0.SNAPSHOT,3.1.0.SNAPSHOT]"; filter:="(&(osgi.identity=openhab-runtime-base)(type=karaf.feature)(version>=3.1.0.SNAPSHOT)(version<=3.1.0.SNAPSHOT))" [caused by: Unable to resolve openhab-runtime-base/3.1.0.SNAPSHOT: missing requirement [openhab-runtime-base/3.1.0.SNAPSHOT] osgi.identity; osgi.identity=openhab-core-model-rule; type=karaf.feature [caused by: Unable to resolve openhab-core-model-rule/3.1.0.SNAPSHOT: missing requirement [openhab-core-model-rule/3.1.0.SNAPSHOT] osgi.identity; osgi.identity=org.openhab.core.model.rule; type=osgi.bundle; version="[3.1.0.202101061352,3.1.0.202101061352]"; resolution:=mandatory [caused by: Unable to resolve org.openhab.core.model.rule/3.1.0.202101061352: missing requirement [org.openhab.core.model.rule/3.1.0.202101061352] osgi.wiring.package; filter:="(&(osgi.wiring.package=org.openhab.core.common)(version>=3.1.0)(!(version>=4.0.0)))" [caused by: Unable to resolve org.openhab.core/3.1.0.202101061333: missing requirement [org.openhab.core/3.1.0.202101061333] osgi.ee; filter:="(&(osgi.ee=JavaSE)(version=11))"]]]]
        at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1343)
        at org.apache.felix.resolver.ResolverImpl.doResolve(ResolverImpl.java:392)
        at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:378)
        at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:332)
        at org.apache.karaf.features.internal.region.SubsystemResolver.resolve(SubsystemResolver.java:257)
        at org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:393)
        at org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1062)
        at org.apache.karaf.features.internal.service.FeaturesServiceImpl.lambda$doProvisionInThread$13(FeaturesServiceImpl.java:998)
        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: org.apache.felix.resolver.reason.ReasonException: Unable to resolve openhab-runtime-base/3.1.0.SNAPSHOT: missing requirement [openhab-runtime-base/3.1.0.SNAPSHOT] osgi.identity; osgi.identity=openhab-core-model-rule; type=karaf.feature [caused by: Unable to resolve openhab-core-model-rule/3.1.0.SNAPSHOT: missing requirement [openhab-core-model-rule/3.1.0.SNAPSHOT] osgi.identity; osgi.identity=org.openhab.core.model.rule; type=osgi.bundle; version="[3.1.0.202101061352,3.1.0.202101061352]"; resolution:=mandatory [caused by: Unable to resolve org.openhab.core.model.rule/3.1.0.202101061352: missing requirement [org.openhab.core.model.rule/3.1.0.202101061352] osgi.wiring.package; filter:="(&(osgi.wiring.package=org.openhab.core.common)(version>=3.1.0)(!(version>=4.0.0)))" [caused by: Unable to resolve org.openhab.core/3.1.0.202101061333: missing requirement [org.openhab.core/3.1.0.202101061333] osgi.ee; filter:="(&(osgi.ee=JavaSE)(version=11))"]]]
        at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1343)
        ... 12 more
Caused by: org.apache.felix.resolver.reason.ReasonException: Unable to resolve openhab-core-model-rule/3.1.0.SNAPSHOT: missing requirement [openhab-core-model-rule/3.1.0.SNAPSHOT] osgi.identity; osgi.identity=org.openhab.core.model.rule; type=osgi.bundle; version="[3.1.0.202101061352,3.1.0.202101061352]"; resolution:=mandatory [caused by: Unable to resolve org.openhab.core.model.rule/3.1.0.202101061352: missing requirement [org.openhab.core.model.rule/3.1.0.202101061352] osgi.wiring.package; filter:="(&(osgi.wiring.package=org.openhab.core.common)(version>=3.1.0)(!(version>=4.0.0)))" [caused by: Unable to resolve org.openhab.core/3.1.0.202101061333: missing requirement [org.openhab.core/3.1.0.202101061333] osgi.ee; filter:="(&(osgi.ee=JavaSE)(version=11))"]]
        at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1343)
        ... 13 more
Caused by: org.apache.felix.resolver.reason.ReasonException: Unable to resolve org.openhab.core.model.rule/3.1.0.202101061352: missing requirement [org.openhab.core.model.rule/3.1.0.202101061352] osgi.wiring.package; filter:="(&(osgi.wiring.package=org.openhab.core.common)(version>=3.1.0)(!(version>=4.0.0)))" [caused by: Unable to resolve org.openhab.core/3.1.0.202101061333: missing requirement [org.openhab.core/3.1.0.202101061333] osgi.ee; filter:="(&(osgi.ee=JavaSE)(version=11))"]
        at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1343)
        ... 14 more
Caused by: org.apache.felix.resolver.reason.ReasonException: Unable to resolve org.openhab.core/3.1.0.202101061333: missing requirement [org.openhab.core/3.1.0.202101061333] osgi.ee; filter:="(&(osgi.ee=JavaSE)(version=11))"
        at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1343)
        ... 15 more

Also noticed that lack of control is only part of the problem - they are not updated either. Now tried to restart the binding again after more migrated items, and saw this, which seems to match the bug you already fixed?

2021-01-07 22:44:20.079 [WARN ] [ig.xml.osgi.XmlDocumentBundleTracker] - The XML document '/OH-INF/thing/thing-types.xml' in module 'org.openhab.binding.danfossairunit' could not be parsed: The attribute 'advanced' of the node 'channel-group-type' is not supported or exists multiple times!
---- Debugging information ----
message             : The attribute 'advanced' of the node 'channel-group-type' is not supported or exists multiple times!
class               : org.openhab.core.thing.xml.internal.ChannelGroupTypeXmlResult
required-type       : org.openhab.core.thing.xml.internal.ChannelGroupTypeXmlResult
converter-type      : org.openhab.core.thing.xml.internal.ChannelGroupTypeConverter
path                : /thing-descriptions/channel-group-type[4]
line number         : 91
class[1]            : java.util.ArrayList
required-type[1]    : java.util.ArrayList
converter-type[1]   : com.thoughtworks.xstream.converters.collections.CollectionConverter
class[2]            : org.openhab.core.thing.xml.internal.ThingDescriptionList
required-type[2]    : org.openhab.core.thing.xml.internal.ThingDescriptionList
converter-type[2]   : org.openhab.core.thing.xml.internal.ThingDescriptionConverter
version             : 1.4.13
-------------------------------
com.thoughtworks.xstream.converters.ConversionException: The attribute 'advanced' of the node 'channel-group-type' is not supported or exists multiple times!
---- Debugging information ----
message             : The attribute 'advanced' of the node 'channel-group-type' is not supported or exists multiple times!
class               : org.openhab.core.thing.xml.internal.ChannelGroupTypeXmlResult
required-type       : org.openhab.core.thing.xml.internal.ChannelGroupTypeXmlResult
converter-type      : org.openhab.core.thing.xml.internal.ChannelGroupTypeConverter
path                : /thing-descriptions/channel-group-type[4]
line number         : 91
class[1]            : java.util.ArrayList
required-type[1]    : java.util.ArrayList
converter-type[1]   : com.thoughtworks.xstream.converters.collections.CollectionConverter
class[2]            : org.openhab.core.thing.xml.internal.ThingDescriptionList
required-type[2]    : org.openhab.core.thing.xml.internal.ThingDescriptionList
converter-type[2]   : org.openhab.core.thing.xml.internal.ThingDescriptionConverter
version             : 1.4.13
-------------------------------
	at org.openhab.core.config.xml.util.ConverterAttributeMapValidator.readValidatedAttributes(ConverterAttributeMapValidator.java:117) ~[?:?]
	at org.openhab.core.config.xml.util.ConverterAttributeMapValidator.readValidatedAttributes(ConverterAttributeMapValidator.java:82) ~[?:?]
	at org.openhab.core.thing.xml.internal.AbstractDescriptionTypeConverter.unmarshal(AbstractDescriptionTypeConverter.java:184) ~[?:?]
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72) ~[bundleFile:1.4.13]
	at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:72) ~[bundleFile:1.4.13]
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66) ~[bundleFile:1.4.13]
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50) ~[bundleFile:1.4.13]
	at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readBareItem(AbstractCollectionConverter.java:132) ~[bundleFile:1.4.13]
	at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:117) ~[bundleFile:1.4.13]
	at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:98) ~[bundleFile:1.4.13]
	at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:91) ~[bundleFile:1.4.13]
	at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:85) ~[bundleFile:1.4.13]
	at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:80) ~[bundleFile:1.4.13]
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72) ~[bundleFile:1.4.13]
	at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:72) ~[bundleFile:1.4.13]
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66) ~[bundleFile:1.4.13]
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50) ~[bundleFile:1.4.13]
	at org.openhab.core.thing.xml.internal.ThingDescriptionConverter.unmarshal(ThingDescriptionConverter.java:53) ~[?:?]
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72) ~[bundleFile:1.4.13]
	at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:72) ~[bundleFile:1.4.13]
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66) ~[bundleFile:1.4.13]
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50) ~[bundleFile:1.4.13]
	at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134) ~[bundleFile:1.4.13]
	at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32) ~[bundleFile:1.4.13]
	at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1404) ~[bundleFile:1.4.13]
	at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1383) ~[bundleFile:1.4.13]
	at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1334) ~[bundleFile:1.4.13]
	at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1288) ~[bundleFile:1.4.13]
	at org.openhab.core.config.xml.util.XmlDocumentReader.readFromXML(XmlDocumentReader.java:106) ~[bundleFile:?]
	at org.openhab.core.config.xml.osgi.XmlDocumentBundleTracker.parseDocuments(XmlDocumentBundleTracker.java:396) [bundleFile:?]
	at org.openhab.core.config.xml.osgi.XmlDocumentBundleTracker.processBundle(XmlDocumentBundleTracker.java:382) [bundleFile:?]
	at org.openhab.core.config.xml.osgi.XmlDocumentBundleTracker$2.run(XmlDocumentBundleTracker.java:347) [bundleFile:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:834) [?:?]

Could this explain these problems? If not, I’ll try to dig some more…

Would it be possible to get .jar with new version? That would make it possible to test on my production system.

/Jacob

Yeah, this is the exact issue I was referring to. Seems the 3.1.0-SNAPSHOT version still pulls the addons from the “stable” repository which does not include the latest fixes.
Here is a current build:

Oh, and which JDK version are you using? It has to be 11.

@pravussum - thanks a lot! After installing this version of the binding, I started receiving channel updates again, and I can also set values. So - everything seems to work. Exception is not logged anymore either, after uninstalling bundled 3.0 version.

I disabled my text configuration to test from UI again. It was possible to add thing, and UI started to look normal again. I didn’t try to create semantic model from UI yet, but would expect that to also work now.

Thanks for the help!

/Jacob

1 Like