Nee-vo Command Line Sensor Broken?

Has anyone using the Nee-vo command line sensor experienced it breaking recently?

command_line:
  - sensor:
      command: "curl -u <user>:<password> https://telematics.otodatanetwork.com:4432/v1.5/DataService.svc/GetAllDisplayPropaneDevices --header Content-Type:application/json"
      name: "Propane Tank Neevo 371"
      unique_id: propane_tank_371
      value_template: "{{ value_json[0].Level|float(0) * 2.4 if value_json[0].Level is defined else this.state }}"
      scan_interval: 14400
      state_class: measurement
      unit_of_measurement: "Gallons"

It was working fine for a long time but I just noticed that it is now returning “entity is non numeric.” Nothing is showing up in logs. Manually browsing to the site prompts for a login but returns HTTP 500 - which this may entirely be their server side or something needs to be changed in the curl argument. Speaking of which, I get nothing back on cml curl or even pings.

Anyone ran across this yet?

Add -v to the curl command, and show the output

Thanks for the reply. Please take a look.

*   Trying 204.9.81.6:4432...
* TCP_NODELAY set
* Connected to telematics.otodatanetwork.com (204.9.81.6) port 4432 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN, server accepted to use h2
* Server certificate:
*  subject: CN=*.otodatanetwork.com
*  start date: Jan 15 17:51:03 2024 GMT
*  expire date: Feb 15 17:51:02 2025 GMT
*  subjectAltName: host "telematics.otodatanetwork.com" matched cert's "*.otodatanetwork.com"
*  issuer: C=BE; O=GlobalSign nv-sa; CN=AlphaSSL CA - SHA256 - G4
*  SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Server auth using Basic with user 'xxx'
* Using Stream ID: 1 (easy handle 0x5606e59567c0)
> GET /v1.5/DataService.svc/GetAllDisplayPropaneDevices HTTP/2
> Host: telematics.otodatanetwork.com:4432
> authorization: Basic xxxxxx
> user-agent: curl/7.68.0
> accept: */*
> content-type: application/json
>
* Connection state changed (MAX_CONCURRENT_STREAMS == 100)!
< HTTP/2 500
< cache-control: private
< server: Microsoft-IIS/10.0
< x-aspnet-version: 4.0.30319
< x-powered-by: ASP.NET
< date: Thu, 03 Oct 2024 14:24:13 GMT
< content-length: 0
<
* Connection #0 to host telematics.otodatanetwork.com left intact

Getting error 500 in my case as well

I am also getting error 500. It doesn’t look like the API has changed from what I can tell: https://telematics.otodatanetwork.com:4432/v1.5/DataService.svc/help

Same here. Stopped working a couple of days ago, and some playing around with Postman didn’t reveal anything more than the 500 errors. The help URL does say all the services updated “2024-10-04T21:56:31Z”. My Nee-Vo app on the phone is still working, but not really sure if it is updating because I only use my propane for supplemental heating and haven’t had to use it this season yet.

I was able to analyze the HTTP traffic of the iOS app and noticed the URL changed.

New URL: https://ws.otodatanetwork.com/neevoapp/v1/DataService.svc/GetAllDisplayPropaneDevices

2 Likes

Awesome job! That fixed it. Thanks for looking into this and figuring it out. How’d you figure it out in case this happens again? Wireshark?

1 Like

Sorry for the delayed reply! Yeah, I used WireShark to capture the request.

Not exactly related to the URL change, but posting to help others that may stumble upon this. I have two propane tanks monitored with the Nee-Vo (otodata) app. Since the JSON response is an array, I used the RESTful sensor to add both tanks to HA. This should work with other multi-tank accounts using the array ([0], [1], etc…) values for each tank.

Some notes… Each tank is a different size (500 & 250 gallons) but I only care about the percent full, so that’s the only value I am using (saves me from doing math). Adding the unique_id lets you change settings in the GUI. Device Class is battery because it accepts % as a unit of measure. I was too lazy to calc gallons and use the volume_storage device class, but you can do it if you like doing extra math.

So, I added this code to my YAML config:

# Propane Tanks
rest:
  - authentication: basic
    username: "USERNAME"
    password: "PASSWORD"
    scan_interval: 28800
    resource: https://ws.otodatanetwork.com/neevoapp/v1/DataService.svc/GetAllDisplayPropaneDevices
    sensor:
      - name: "Propane - Main House Tank Level"
        unique_id: propane_tank_main_house
        value_template: "{{ value_json[0].Level }}"
        unit_of_measurement: "%"
        device_class: "battery"
      - name: "Propane - Pool Tank Level"
        unique_id: propane_tank_pool
        value_template: "{{ value_json[1].Level }}"
        unit_of_measurement: "%"
        device_class: "battery"

If anybody’s still watching this thread… Where would I put this?

I’m relatively new to Home Assistant, and haven’t done anything YAML yet, but would LOVE to have this on my dashboard to see the status of my tanks.

If it’s a matter of adding it to a text / config file I should be able to do that.
So where would I find the ‘YAML config’, and how (and where) would I add this to it?

Thanks!