Bluetooth propane tank monitor: ESPhome, Otodata, Nee-vo, Ferrellgas, BLE

Can you post your command and the output, with bogus credentials of course?

The verbose output is showing an authentication problem. If I run my curl command and change either my username or password to an invalid value, I get the same result as you where nothing comes back.

Is it possible you have special characters in your password that need to be escaped?

Looks like that worked with using the ’

Thank you for the help!!!

Hi All,

I am new to HA, and am trying to get some propane monitors working. I have several tanks, and have one Mopeka unit (working!!) and another Neevo unit, that I want to get into my HA dashboard.

To get Mopeka working, I had to add a Bluetooth proxy, using an M5 esp32 unit, so I have the ability to read a bluetooth sensor in HA.

I have the Neevo unit installed on my tank, and can see its level, as per some earlier posts in this thread, I’m using an iPhone app to see that. I can see the various messages the Neevo Unit advertises. (I have a Nee-Vo branded version of the Otodata TM6030).

I am lost as to what I need to do next to connect to the Neevo unit and get it to present its data on my dashboard. Can anyone direct me toward what to do next, or where to find some learning materials to do this? I have no idea where to start with the YAML that I am reading about here…

Thx! J

Hi,

I am trying to get this same idea to work, but am having trouble getting started. I have HA running on a NUC, ESPhome installed, and have an M5 Atom Lite running BT Proxy, so far so good, and I am getting data from a Mopeka sensor successfully. Yay!

Now I want to get the data from a Nee-vo(OtoData) sensor, and I can see it broadcasting the sentences:
Name: ‘TM6030 2034XXXX’
Name: ‘level: 68.2 % horiz’
Name: ‘unit sleeping’

This is seen over a mobile app.

How do I add the ESPhome code to get this data? I think I need to add a new device, but there really isn’t a new device if I am using the existing BTProxy to receive the data.
Is that what I should be doing? Do I need to add a new ESP device or can I use the existing one which is already getting me data from another BT sensor?

BTW, I won’t be able to scrape the data from the Nee-Vo website, as the installation is outside of cellular range, so nothing gets to the cloud from the Nee-vo(Otodata) device.

Here is the curl method, but using the native “rest” platform in Home assistant. It’s working for me! Thanks for the help everyone in this thread.

sensor:
  - platform: rest
    authentication: basic
    username: !secret neevo_username
    password: !secret neevo_password
    scan_interval: 86400
    resource: https://telematics.otodatanetwork.com:4432/v1.5/DataService.svc/GetAllDisplayPropaneDevices
    headers:
      Content-Type: application/json
    name: propane_tank
    value_template: "{{ value_json[0].Level }}"
    unit_of_measurement: '%'

@tinker_ha what is the easiest way to find the mac address of the otodata, using iPhone or Windows?

Is this still working for you? Mine seems to have stopped in the last few days. I’m not sure if it’s an update, an issue on the provider end or just me.

It has stopped working for me. I get a 500 error when I run curl -v -u [email protected]:mypassword https://telematics.otodatanetwork.com:4432/v1.5/DataService.svc/GetAllDisplayPropaneDevices --header Content-Type:application/json so it’s nothing to do with Home Assistant.

Either something’s wrong on Otodata’s side or they retired this API. I haven’t yet found any info on a new or different way to do this.

I agree with @apointek - this is something on otodata’s side as the API now returns a 500 response :frowning:

Looking at my sensor history, the issue started around Oct 2nd - it briefly came online again (yellow bar shows good reading) and has been unavailable since.

After intercepting network traffic for the “Nee-Vo” app on iphone, I have found a new way to query the data.

To start, for these curl calls, we need the Basic auth value, which is the base64 of the account username and password. On MacOS this can be computed like this:

echo -n "your_neevo_username:your_neevo_password" | base64

Take a note of this value to use in the curl calls.

First we need to get the id of the tank, this is a one time thing to get (replace XXX with the value from the previous step)

curl -H "Authorization: Basic XXX" "https://ws.otodatanetwork.com/neevoapp/v1/DataService.svc/GetAllDisplayPropaneDevices"

Somewhere in the json response should be a value called “Id”, use this in the next curl (where it says ZZZ):

curl -H "Authorization: Basic XXX" "https://ws.otodatanetwork.com/neevoapp/v1/DataService.svc/GetPropaneLevels/ZZZ"

The current propane percent level, should be in the json at “CurrentLevel”

1 Like

Genius! Thank you. My setup worked with the first command without specifying the ID. Also, I had to remove the space before Basic XXX.

Perfect! Thanks for posting the solution.

I just replaced the old CURL command with the new address and authentication mode and it sprang back to life.

Replace XXX with your base64 value of course but this is working for me:

command_line:
  - sensor:
      command: 'curl -H "Authorization:Basic XXX" https://ws.otodatanetwork.com/neevoapp/v1/DataService.svc/GetAllDisplayPropaneDevices --header Content-Type:application/json'
      name: "Propane Tank"
      unique_id: propane_tank
      value_template: "{{ value_json[0].Level }}"
      scan_interval: 86400

@Geoff_Blachstein @imadunatic you are right, looks like the “Level” value is available in the first call - great.

I changed my sensor to use the RESTful Sensor - Home Assistant form instead of curl. This does allow you to easily move the authentication value entirely to your secrets file: (note the value will have to include the "Basic " in front of it as you are passing it as the value of the entire Authorization header.

sensor:
  - platform: rest
    name: Propane Tank
    resource: https://ws.otodatanetwork.com/neevoapp/v1/DataService.svc/GetAllDisplayPropaneDevices
    headers:
      Authorization: !secret neevo_auth
    value_template: "{{ value_json[0].Level }}"

Thanks for the update on this guys. Mine broke as well. The updated command line sensor works great for me. Unfortunately, I cannot seem to get the REST sensor to work. I’d prefer that method, but I’m just happy to have a working sensor again!

@mkjr75 - anything in the homeassistant logs for the rest calls? It could be unrelated (as I would expect it to impact curls calls as well) but I recently noticed an increase in timeouts for the huum api. I’ve set a longer timeout option and am monitoring how that goes.

@diffhome - nothing I’ve been able to find. I just recently turned on REST debug, but I’m not finding any entries in the log, unless I’m in the wrong area (I don’t typically do a ton of debugging, most things just work!)

I’m trying to set this up for my house.

I also have a TM6030

I can see the iBeacon in nrf Connect for Mobile.

I tried to sign into the Nee-Vo account, but got a message that the device was already registered (probably by the previous owners)

I’m totally new to ESP and have hit a bit of a wall.

I got my ESP32 set up and in ESPHome, but can’t figure out how to get information from the beacon.