[SOLVED]OH2 beta2 - Location item type unknown

Hi,

Im trying to use item type “location” with OH2b2, but it throws this error:

`23:34:52.193 [ERROR] [el.item.internal.GenericItemProvider] - Binding configuration of type ‘mqtt’ of item ‘GregsLocation’ could not be parsed correctly.
org.eclipse.smarthome.model.item.BindingConfigParseException: cannot process unknown item type Location
at org.openhab.core.binding.internal.BindingConfigReaderDelegate.getOpenHABItem(BindingConfigReaderDelegate.java:75)[157:org.openhab.core.compat1x:2.0.0.201601310204]
at org.openhab.core.binding.internal.BindingConfigReaderDelegate.getOpenHABItem(BindingConfigReaderDelegate.java:58)[157:org.openhab.core.compat1x:2.0.0.201601310204]
at org.openhab.core.binding.internal.BindingConfigReaderDelegate.validateItemType(BindingConfigReaderDelegate.java:39)[157:org.openhab.core.compat1x:2.0.0.201601310204]
at org.eclipse.smarthome.model.item.internal.GenericItemProvider.internalDispatchBindings(GenericItemProvider.java:369)[107:org.eclipse.smarthome.model.item:0.8.0.201601301304]
at org.eclipse.smarthome.model.item.internal.GenericItemProvider.internalDispatchBindings(GenericItemProvider.java:342)[107:org.eclipse.smarthome.model.item:0.8.0.201601301304]
at org.eclipse.smarthome.model.item.internal.GenericItemProvider.processBindingConfigsFromModel(GenericItemProvider.java:168)[107:org.eclipse.smarthome.model.item:0.8.0.201601301304]
at org.eclipse.smarthome.model.item.internal.GenericItemProvider.modelChanged(GenericItemProvider.java:405)[107:org.eclipse.smarthome.model.item:0.8.0.201601301304]
at org.eclipse.smarthome.model.core.internal.ModelRepositoryImpl.notifyListeners(ModelRepositoryImpl.java:200)[106:org.eclipse.smarthome.model.core:0.8.0.201601301304]
at org.eclipse.smarthome.model.core.internal.ModelRepositoryImpl.addOrRefreshModel(ModelRepositoryImpl.java:116)[106:org.eclipse.smarthome.model.core:0.8.0.201601301304]
at org.eclipse.smarthome.model.core.internal.folder.FolderObserver.checkFile(FolderObserver.java:240)[106:org.eclipse.smarthome.model.core:0.8.0.201601301304]
at org.eclipse.smarthome.model.core.internal.folder.FolderObserver.access$1(FolderObserver.java:235)[106:org.eclipse.smarthome.model.core:0.8.0.201601301304]
at org.eclipse.smarthome.model.core.internal.folder.FolderObserver$WatchQueueReader.processWatchEvent(FolderObserver.java:117)[106:org.eclipse.smarthome.model.core:0.8.0.201601301304]
at org.eclipse.smarthome.core.service.AbstractWatchQueueReader.run(AbstractWatchQueueReader.java:95)[88:org.eclipse.smarthome.core:0.8.0.201601301304]
at java.lang.Thread.run(Thread.java:745)[:1.8.0_66]

`

This is the .item entry:

Location GregsLocation “Greg location [%s]” (gWhere) { mqtt="<[MyMQTT:owntracks/greg/nexus5:state:JS(owntracks-coordinates.js)]" }
/

The same config works in OH1.8

Can anyone confirm if this a bug or not?

I can confirm that it is a bug. I hope I fixed it through https://github.com/kaikreuzer/openhab-core/pull/18.
Please try the build #134, which should contain the fix.

Thanks @Kai - working now.

1 Like

Hey Question… had you parse the json provided by owntracks with your “owntracks-coordinates.js”?
If so can you lead on a path for helping me? or maybe sharing your js?
I’m losing my head here to trying to make owntracks working in OH2…

I use a combination of the mqqtitude 1.9 binding, and the mqtt 2.0 binding. The below should be everything, let me know if I missed something.

Items:

Switch        ownTracks_Paul            "Paul - OwnTracks"              <man>        (gPresentPaul, gPresence, gPresent)           {mqttitude="mosquitto:owntracks/paul/Paul/event:home" }
String        location_PaulPhone      "Paul's Location [%s]"                        (gLocations)                                   {mqtt="<[mosquitto:owntracks/paul/Paul:state:JS(mqtt-coordinates.js)]"}
String        ownTracks_PaulRaw        "Paul Raw Data [%s]"                                                                       {mqtt="<[mosquitto:owntracks/paul/Paul:state:default]"}
Number        ownTracks_PaulLat        "Paul's Latitude [%.3f °]"      <latitude>
Number        ownTracks_PaulLon        "Paul's Longitude [%.3f °]"        <longitude>
Number        ownTracks_PaulAcc        "Paul's Accuracy [%d m]"        <accuracy>
Number        ownTracks_PaulBatt        "Paul's Battery [%s %%]"        <battery>

Rules:

val String logNamePresence = "presence"
var Timer presenceTimer = null

// Owntracks Paul Raw data conversion
rule "Mqtt Position - Paul"
  when
    Item ownTracks_PaulRaw changed
  then
  logInfo("MQTT", "OwnTracks Updated for Paul")
    val String json = (ownTracks_PaulRaw.state as StringType).toString
    val String type = transform("JSONPATH", "$._type", json)
    if (type == "location") {
      val String lat  = transform("JSONPATH", "$.lat", json)
      val String lon  = transform("JSONPATH", "$.lon", json)
      val String acc  = transform("JSONPATH", "$.acc", json)
      val String batt = transform("JSONPATH", "$.batt", json)
      ownTracks_PaulLat.postUpdate(new DecimalType(lat)*1)
      ownTracks_PaulLon.postUpdate(new DecimalType(lon)*1)
      ownTracks_PaulAcc.postUpdate(new DecimalType(acc)*1)
      ownTracks_PaulBatt.postUpdate(new PercentType(batt)*1)
    }
end

Sitemap:

Switch item=ownTracks_Paul
Text item=ownTracks_PaulLat
Text item=ownTracks_PaulLon
Text item=ownTracks_PaulAcc
Text item=ownTracks_PaulBatt