Skip to main content

GetFeed StatusData doesn't return DiagnosticEngineHoursAdjustmentId

FAPI-8332
Original Poster

Does the GetFeed StatusData return DiagnosticEngineHoursAdjustmentId? Looks like it didn't return for me.

Join the conversation

You need to be logged in to reply to this post and participate in the Geotab Community discussions.

9 Replies

Hey @FAPI-8332​,

 

Search isn't supported on StatusData for GetFeed so you'll need to do your filtering after getting results.

 

You can look at the API reference here to see what is and isn't supported for each object: https://developers.geotab.com/myGeotab/apiReference/methods/GetFeed/index.html

 

Thanks,

Tucker

FAPI-8332
Original Poster

I didn't do search for GetFeed. I check result return and I don't see it is there. Geotab's measurement returned the data, GET method also return data, but the GetFeed did not. The only missing is DiagnosticEngineHoursAdjustmentId. I wonder if the Adjustment diagnostic won't return from the GetFeed?

EDIT: Take a look at Tucker's reply to this, it may not be quite as simple as I'm making it out to be.

 

If I'm not mistaken, the "adjustment" IDs like DiagnosticEngineHoursAdjustmentId are purely interpolated values, meaning that they're calculated and generated only at the time of a specific query by interpolating between the closest two known diagnostic data points. Because they're only generated in response to queries (for example, making a Get call for the engine hours at a point that falls between two raw engine hour reads from a given engine), I wouldn't expect those to come through the Feed. I would expect to see the DiagnosticEngineHoursIds, which are the "raw" reads from the engine, but not the adjustments.

I don't know the specifics around EngineHours, but for Odometer, I don't think the AdjustmentId is interpolated necessarily (it can be), but it's more of a calculated value based on multiple factors like odometer offset, factor, adjustment, and raw. I haven't tested it, but I would've assumed the AdjustmentIds would come through a GetFeed based on this (but I'm not 100% sure). Here are some articles that explain the odometer values:

 

https://community.geotab.com/s/article/What-are-the-definitions-of-Odometer-Odometer-Factor-Adjustment-Offset-and-Raw-Odometer-and-how-do-they-work?language=en_US

 

https://community.geotab.com/s/article/How-to-find-Odometer-Offset-through-the-SDK

 

I have a meeting that's about to start but I can run some tests later today and see what I find.

 

One thing I found is that when I search for Engine Hours in the MyGeotab UI, it uses the DiagnosticEngineHoursAdjustmentId diagnostic but returns Engine Operational time, which if you use that in the filter, it comes back with DiagnosticEngineHoursId instead, which makes me wonder what DiagnosticEngineHoursAdjustmentId actually is vs just using DiagnosticEngineHoursId. We might need clarification from someone at Geotab on this.

 

When I did a StatusData feed I only got DiagnosticEngineHoursId results for that device too. Now maybe it's because that device hasn't had an adjustment, but I just made one and it takes time to go through, so I won't be able to finish testing this until tomorrow. I'll let you guys know what I find.

@DarenPorter-1148​ @FAPI-8332​ It actually went through pretty quickly, and I reran the feed, and it showed up. So it looks like the adjustment comes through once you make an adjustment in the UI. Now I need to wait for the next reading which will be tomorrow to see if all future readings will come through as the adjustment ID or the regular one. I'll check tomorrow and let you guys know

@FAPI-8332​  There was a delay in the data being sent from our feed for this, but it finally came through last night. The AdjustmentId for Engine hours was only for the manual adjustment made and only showed up on the data at the time I made the manual adjustment. From there, DiagnosticRawEngineHoursId was the raw value without the adjustment and DiagnosticEngineHoursId was the value with the adjustment (so DiagnosticRawEngineHoursId + the adjustment I made). Just to give a real example to hopefully make it clear:

 

  • DiagnosticRawEngineHoursId 2 days ago was equal to DiagnosticEngineHoursId at 6178.2 hours
  • I manually adjusted the engine hours in the MyGeotab UI increasing it 2 hours and when I did that, I saw a StatusData of 6180.2 (converted from seconds) for DiagnosticEngineHoursAdjustmentId.
  • When the next set of values came through from the vehicle, I didn't receive a DiagnosticEngineHoursAdjustmentId, but instead, the DiagnosticRawEngineHoursId was still 6178.2 and now DiagnosticEngineHoursId was 6180.2

 

I hope that helps explain how that works, let me know if you have any other questions.

 

Thanks,

Tucker

Really appreciate the investigation and legwork on this @TuckerBA-1087​. Just to make sure I understand, it seems like your investigation concludes that:

 

  • AdjustmentIds (at least the two you tested) do not populate naturally in the feed.
  • Once an AdjustmentId is created (by querying for interpolated data), that single instance will be available in the feed.
  • After that point, the calculated Ids like DiagnosticEngineHoursId (not the "raw" diagnostics like DiagnosticRawEngineHoursId) will incorporate the Adjusted value where appropriate, but will not generate additional AdjustmentIds. Those remain a diagnostic type that are only created on-demand.

 

Did I get that right? If so, this might be a decent summary for @FAPI-8332​. Thanks again for running it down!

Almost right, the only corrections would be:

 

  • On the 1st bullet point, I only looked at EngineHours for this, Odometer is the other with an Adjustment ID that I'm aware of and it functions differently than EngineHours.
  • 2nd bullet point, the AdjustmentId was created when I actually made an adjustment on the actual engine hours value on the asset I was looking at in MyGeotab. So I changed the value from 6178.2 hours to 6180.2 hours in Geotab and that caused a StatusData with the AdjustmentId to be created. Afterwards, the regular DiagnosticEngineHoursId held the value of the Raw ID plus the 2 hour adjustment I made when we pushed the next set of data (we only push the Raw data for this, so the DiagnosticEngineHoursId was created after we pushed the raw data).

 

And I think you might have been on the same page as me the whole time based on the 3rd bullet point which is exactly right, but I just wanted to clarify the first 2 points just since it was slightly different.

Still have questions?