Presence with Fing

Just thought I’d let you know that the official Fingbox IFTTT integration is now in beta testing. As an earlier adopter of the Fingbox I’ve been successfully chosen to test and so far early signs are very positive. I’ll check to see if there is an NDA and if not will post with updates of my findings.

1 Like

Fing has new community. Please vote for integration Fingbox with Home Assistant request:

2 Likes

Someone tell me that I am wrong …
I just looked at their Premium subscription plan here:
https://app.fing.com/internet/account/subscribe/choose
And integration with Home Assistant and even the local API will be by subscription only for $7/month
I would think that a local API could be a free feature … Pretty disappointed in the Fing team.

1 Like

agreed
paid for the HW, now they want more $ for local API - not impressed

Fing is still a small startup, they might actually change things if we make enough noise. Any ideas?

A while ago I took part in a Fing consumer video interview. They’re hardly a startup now. I believe they were bought by Netgear if I remember correctly.

All the same, I’m not too impressed with the subscription.

Hi All,

I can share that as of now, if you pay for a subscription, there is a API option if using Fingbox or the Fing Desktop app. The exposed URL for the local API gives results in JSON format like this.

{
    "devices":
    [
        {
            "mac": "XX:XX:XX:XX:XX:XX",
            "ip":
            [
                "192.168.1.XX"
            ],
            "state": "UP",
            "name": "cctv-dvr",
            "type": "COMPUTER",
            "first_seen": "2019-09-25T05:55:59.336Z",
            "last_changed": "2020-12-01T08:29:47.999Z"
        },
        {
            "mac": "XX:XX:XX:XX:XX:XX",
            "ip":
            [
                "192.168.1.XX"
            ],
            "state": "UP",
            "name": "NetSurveillance Camera",
            "first_seen": "2019-09-21T03:32:31.138Z",
            "last_changed": "2020-09-08T04:03:40.039Z"
        },

Does anyone else use a fingbox that might have the neccessary skills to work on an integration to use this data for presense. Of if somone could recommend a place to start looking for idea on how to get something like that working? Maybe someone knows of an existing custom integration that takes data in this format that i could try to learn from.

Cheers
Nick

1 Like

I would like to see this too…

OK, so some time ago there was Fing promotion for their subscription that was ~$20/year, so i decided tto try it. Now I finally got some time to play also with trying to somehow integrate the API into HA… not real integration, set of script or rest sensors, but it basically does the job. So here it is, if soeone would like to try.

For start shell comand that writes discovery results to file:

shell_command:
  get_fing_discovery: curl -o fing.json 'http://192.168.xxx.yyy:49090/1/devices?auth=_your_API_key_goes_here_'

It is useful if you want to check the response format or use other JSON parsing technique.

Next actual presence sensor goes:

sensor:
  - platform: rest
    resource: http://192.168.xxx.yyy:49090/1/devices?auth=_your_API_key_goes_here_
    name: fing_presence_monitored_device_name
    value_template: >-
      {% for device in value_json.devices %}
        {% if device.name == 'Monitored Device Name' %}
          {{ device.state }}
        {% endif %}
      {% endfor %}

Monitored Device Name is name of the device given in Fing Web interface or in application. Only named devices can be tracked using this method. It is case sensoitive. This sensor returns device state which is always UP or DOWN, devices that are In Range are reported by API as UP.

If you want to use this as device tracker, here is the automation that updates status:

automation:
  - id: track_monitored_device_name
    alias: Track Monitored Device Name
    trigger:
      - platform: state
        entity_id: sensor.fing_presence_monitored_device_name
    action:
      - service: device_tracker.see
        data:
          dev_id: tracker_monitored_device_name
          location_name: >
            {% if trigger.to_state.state == 'UP' %}
              home
            {% elif trigger.to_state.state == 'DOWN' %}
              not_home
            {% else %}
              unknown
            {% endif %}
          source_type: router

This needs to be accompanied with device tracked definition in known_devices.yaml file:

tracker_monitored_device_name:
  hide_if_away: false
  icon:
  mac:
  name: monitored device name
  picture:
  track: true

For curious people, who like to know what is happening in the network here is bonus sensor, that couts all devices UP:

sensor:
  - platform: rest
    resource: http://192.168.xxx.yyy:49090/1/devices?auth=_your_API_key_goes_here_
    name: fing_count_devices_up
    value_template: >-
      {% set count_up = namespace(count=0) %}
      {% for device in value_json.devices %}
        {% if device.state == 'UP' %}
          {% set count_up.count = count_up.count + 1 %}
        {% endif %}
      {% endfor %}
      {{ count_up.count }}

Enjoy!

5 Likes

hum… excuse my ignorance. But I put the sensors in my sensor yaml and automation in my automation. Where do i run the shell and what do i do with/ where does the known_devices.yaml file: come into place.

Shell command could be placed in confirguarion.yaml (or anywhere else in fact). It is suplementary function, no real need to use it. The only purpose is to dump output of fing API to file, so you can have it on hand for playing with additional sensors or checking how the devices names are reported by fing. It can be involved by service call - some documentation how to use it can be found here: Shell Command - Home Assistant (home-assistant.io)
Regarding known_devices.yaml - officially it is deprecated function, but I found it still working. File shoul dbe placed in same folder and your configuration.yaml.
And one addition to the set; I found that device_trackers gets proper status only after the first change. So after the restart of HA they do not retain values. To get this fixed I added one more automation, that runs just after HA startup is complete and populate device_tracker values from sensors.

# Setting proper states after HA restart
  - id: 'device_trackers_setup'
    alias: Device Trackers SetUp
    initial_state: true
    trigger:
      platform: homeassistant
      event: start
    action:
# section below needs to be repeated for each device_tracker in configuration
      - service: device_tracker.see
        data:
          dev_id: your_device_name
          location_name: >
            {% if states('sensor.fing_presence_your_device_name') == 'UP' %}
              home
            {% else %}
              not_home
            {% endif %}
          source_type: router
4 Likes

I’ve noticed recently (I haven’t played with my fingbox in quite awhile) that the local api option is available without having to go through one of their pay walls. Does this scripting still work with home assistant? The Asus Router Integration in Home Assistant just isn’t refined enough to be reliable. This would be a great replacement!

INteresting finding. I checked Fing web and indeed seems that local HTTP API is now also available in free tier!
Fing Premium features comparison – Fing

4 Likes

So if anyone knows how to do a real integration with Home Assistant, that would be great!

2 Likes