I am running on the recent master branch build (commit d5db101a) and was trying to filter zero coordinates but handle attribute updates properly.
The tracker is using H02 protocol and when woken up from sleep I want to handle alarms immediately even when no GPS fix yet and tracker sends 0,0 GPS location.
Filtering zero coordinates worked well so far. But after adding skipAttributes to the config, the zero coordinates show up again. I was under the impression that in such a case only the attributes are processed, but the (invalid) location is not updated.
The relevant parts from the configuration file:
<entry key='filter.enable'>true</entry>
<entry key='filter.invalid'>true</entry>
<entry key='filter.duplicate'>true</entry>
<entry key='filter.zero'>true</entry>
<entry key='filter.future'>86400</entry>
<entry key='filter.skipAttributes.enable'>true</entry>
<entry key='filter.skipAttributes'>alarm,armed,battery,charge,result</entry>
<entry key='coordinates.filter'>true</entry>
<entry key='coordinates.minError'>5</entry>
Your assumption is incorrect. Filtering doesn't modify anything. It just filters or not each message.
So I would have to modify the code to change this? Is this feasible or does it require a major rewrite?
You can modify code and instead of filtering take last known location.
Had a quick look and it looks pretty straightforward to me. In H02ProtocolDecoder I would call getLastLocation(position, null) if the current location is 0,0. Correct?
Thanks for your help!
I was thinking filter handler, but decoder should work too.
I am running on the recent master branch build (commit d5db101a) and was trying to filter zero coordinates but handle attribute updates properly.
The tracker is using H02 protocol and when woken up from sleep I want to handle alarms immediately even when no GPS fix yet and tracker sends 0,0 GPS location.
Filtering zero coordinates worked well so far. But after adding skipAttributes to the config, the zero coordinates show up again. I was under the impression that in such a case only the attributes are processed, but the (invalid) location is not updated.
The relevant parts from the configuration file:
<entry key='filter.enable'>true</entry> <entry key='filter.invalid'>true</entry> <entry key='filter.duplicate'>true</entry> <entry key='filter.zero'>true</entry> <entry key='filter.future'>86400</entry> <entry key='filter.skipAttributes.enable'>true</entry> <entry key='filter.skipAttributes'>alarm,armed,battery,charge,result</entry> <entry key='coordinates.filter'>true</entry> <entry key='coordinates.minError'>5</entry>