🛡 Watchman - keeps track of missing entities and actions in your config files

The version number will be added to the report and, probably, to a watchman sensor, I was thinking about it recently. So far it is presented in the Home Assistant log during startup (make sure you have “info” level settings).

This is FANTASTIC.

One suggestion, it might be a good idea to ignore any /custom_components/package/services.yaml. Since those can reference example entities, I’m getting false positives.

I have excluded the ones giving me the issue, but I don’t think there’s a case where real entities could be in there, are they?

edit: Also may be good to include the full path in the text file, so it can just be C&Pd into the config without having to add /config/ to the path.

When I opened HACS, there was an update button. Worked great.

I didn’t know that you could put so much into a markdown card. Any idea what this means? Is there something missing in my config?

watchman

Another suggestion- would it be possible to add the line number in the markdown card? The line number in the text report helps me zero in on the problem…

1 Like

As it’s mentioned in the docs, card_mod section is optional and requires a custom lovelace card for extra styling. The card can work without it.
So you should either install card_mode lovelace card via HACS or remove card_mod section from your card.

The markdown card code in the documentation is just an example, this is up to you what is shown in your card. To add line numbers just remove .split(':')[0] from the card template.

1 Like

This plugin is perfect and should be standard for HA.
Thanks for sharing!

Can I modify the text for the notification? (e.g translate)

Also, if all is good, can I suppress the notification?

I also have a feature request :slight_smile:

There are many spelling errors or just beginners mistakes, that could be checked for.

  • if a state for covers is closed instead of ‘off’
  • common spelling errors such as 'off ’ or ‘Off’
  • and probably more

This would be extremely helpful and I think it could be done with the way the plugin operates.

1 Like

Hi @davinci, thank you for your feedback!

This will require some improvements to localization support, I will add it to the backlog.

When you call the service, you implicitly ask Watchman to send the report via notification channel (even when zero problems are detected). Nevertheless, using simple automation, one can send a report (notification) only when Watchman sensors have non-zero values.

I like the idea, let me check if this can be implemented without significant changes to Watchman architecture. AFAIK, knowledge about “valid” states for a sensor is encapsulated within its domain and can’t be easily retrieved by an integration. Probably we can introduce some heuristics which will mark some states as “suspicious” without 100% reliability.

That would be a great improvement. Maybe you can also catch this: a numeric_state on covers not having set the attribute to current_position (e.g. field was left blank) or using ‘on’ ‘off’ instead of ‘open’ and ‘closed’ for states.

Which is probably the number one reason why my automations fail :smiley:

I guess there are many such cases.

Is there an integrated way to ignore changes that are only there for e.g. less than 5 minutes?

For example some devices fail intermittently to send variables, but they work fine. Only if the error persists for more than 5 minutes I would consider this an issue that needs action. For now I use a time helper to check after 5 minutes if the issue is still present (missing entities > 0 or missing services > 0) and only then I send a notification.

Like this I will never get a “all ok” though. The reason for that is, otherwise I would get a message after five minutes each time I save an automation (because they are all reloaded, which triggers my time helper twice).

Could you please add support for this code type as well:

states.binary_sensor.motion.last_updated

not only state_attr('binary_sensor.motion','last_updated')

I think you may be lost. This has nothing to do with Watchman. Also your question is back-to-front.

You can’t access the property of the object like this:

state_attr('binary_sensor.motion','last_updated')

last_updated in not an attribute of the entity. It is a property of the state object. It can only be accessed by:

states.binary_sensor.motion.last_updated

See this post by petro for more:

1 Like

Ok, so I have to use states.binary_sensor.motion.last_updated.

This is why I asked to add a check for this kind of code in the plugin. Because right now it doesn’t check for that.

1 Like

Ah, now I understand what you were asking. I don’t know if this sort of yaml parsing is within scope of the project. I’ll let scr answer that.

I have some missing entities in lovelace, but I am not able to find them…is there a other to find them?

I found a few notes when running the report. Not sure if any of this is known (could not find references) or working as intended. Just passing along some info.

HAFloorplan

This integration has a Rules section in its config. Two things are messing with the report.

  1. The integration adds some services that are not identified by the report. Even though this is valid the report has it marked as missing.
action: call-service
service: floorplan.class_set
  1. A feature of this integration is mapping SVG elements to HA entities. It is common to name the SVG elements in the same convention as the HA entities. I have some that are not 1-to-1 mappings but rather several SVG elements map to a single HA element. However those are in the elements section and not the entities section and should not be reported.

Fully Kiosk

This integration allows for controlling a tablet used as a control panel from HA. One of the things it does is creates a media player entity for the tablet. This media player shows up in the configuration entities section and works as intended however the following shows as unknown.

  - service: tts.google_translate_say
    data:
      entity_id: media_player.my_control_panel
      message: "{{ message }}"

Home Assistant

It is possible to create a scene on the fly.

- service: scene.create
  data:
    scene_id: my_new_scene

However the report shows the entity as missing.

 - service: scene.turn_on
   target:
       entity_id: scene.my_new_scene

Hi I learned about this tool today, but I’ve an issue activating it. I installed vs 0.5 via HACS and rebooted HASS (a few times as a matter of fact). It does show in HACS as installed. No entries in any error log.

But, I cannot add the tool to my integrations.

I did remove the tool and reinstalled, but no difference (as I would not ask for help then).

So, what to check and/or do?

Great idea! I was just thinking the other day that over time how do i know I don’t have a bunch of garbage in my installation as it grows.

1 Like

I have been using this for a few days and I appoligize for my naivety in the use of this.
A few questions.
Can this be exported as a cvs file so I can open it in a spread sheet.
I am using VSC to read the file it seems very “squished” is there a way to expand the columns so most lines are as long as possible, like in the developer tools states.

Now my biggest wish for another time and place would be if there was some way that the error was linked to a file on how to fix the problems or more details on what might be wrong.

Thanks

Same problem here. Anyone found a solution?