HACS Integration "Watchman"

Wollte hier mal kurz die HACS-Integration "Watchman" vorstellen.

Watchman checkt automatisch oder über DIENSTE die komplette YAML auf fehlende Entitäten oder Services. Das Ergebnis wird als Text in der YAML ausgegeben. Über die Entitäten von Watchman kann man auch eine automatische Benachrichtigung bauen, wenn etwas nicht stimmt.

Besonders hilfreich ist diese Funktion, wenn eine Integration nicht sauber geladen wurde oder Entitäten umbenannt wurden um alle Stellen zu finden, wo noch der alte Name steht.

Bin begeistert von dem Tool.

6 „Gefällt mir“

Wenn das mit euch so weitergeht, muss ich bald keine Videos mehr machen 😂

Danke @harryp 🙌🙏

Das Video dazu erscheint im März :laughing:

Habe das ganze jetzt noch so erweitert, dass ich über Telegram die generierte Textdatei mit den fehlenden Entitäten/Services geschickt bekomme. Echt cool!!

Sieht dann so aus:

Klingt ja interessant, nur bekomme ich es nicht ans Laufen :thinking:
Vielleicht gibt es einen Tip?

Gerne, wo ist denn das Problem?

Also, ich habe die Integration über HACS heruntergeladen. Danach Neustart, klar. Nun sollte es doch wohl bei Einstellungen/Integrationen auftauchen, oder? Bein Entwicklerwerkzeuge/Dienste ist es auch nicht zu finden.
Was mache ich falsch?

Dann bei Integrationen: neue Integration “Watchman” hinzufügen. Dann sollte es so aussehen:
image

Probier es dann hier:

1 „Gefällt mir“

Supi, ich danke Dir!

-== Watchman Report ==-

-== Congratulations, all 2 services from your config are available!

-== Congratulations, all 2 entities from your config are available!

-== Report created on 08 Mar 2023 08:37:33
-== Parsed 14 files in 0.36s., ignored 0 files
-== Generated in: 0.43s. Validated in: 0.00s.

Ich hab es sogar gestartet bekommen :wink:
Nur sind das ja längst nicht alle, die geprüft wurden. Ich schau mal, was ich da noch verbessern kann.

Vielen Dank zunächst

1 „Gefällt mir“

Hier ein kleines Update zu Watchman:

  1. gibt es dazu ein Video auf einem befreundeten YT-Kanal : KLICK
  2. gibt es bei GitHub einen Request bzw. eine Petition, dass Watchman auch die json-files von Node-Red durchsucht, damit man nicht den Umweg aus Tristan’s-Video gehen muss => KLICK
    Es wäre super, wenn möglichst viele von Euch diesen Request unterstützen würdet. Danke!
1 „Gefällt mir“

Update:

Ein User, der den Request auch gelesen hat, hat dazu einen Node-Red-Flow geschrieben, der automatisch die Node-Red-json-Datei in eine YAML-Datei umwandelt und in einer Datei in der configuration.yaml speichert und somit vom Watchman kontrollierbar macht.

Hier der Code

[{"id":"8b2eb5ef87a33a42","type":"file in","z":"23e9b7f2.4a3b38","name":"","filename":"/config/node-red/flows.json","filenameType":"str","format":"utf8","chunk":false,"sendError":false,"encoding":"none","allProps":false,"x":400,"y":740,"wires":[["ecc3c6466cacdc5d"]]},{"id":"ecc3c6466cacdc5d","type":"json","z":"23e9b7f2.4a3b38","name":"","property":"payload","action":"","pretty":false,"x":610,"y":740,"wires":[["8143e12a9a16383b"]]},{"id":"8143e12a9a16383b","type":"yaml","z":"23e9b7f2.4a3b38","property":"payload","name":"","x":750,"y":740,"wires":[["960214bb667c5ba1"]]},{"id":"960214bb667c5ba1","type":"file","z":"23e9b7f2.4a3b38","name":"","filename":"/config/node-red/flows-for-watchman.yaml","filenameType":"str","appendNewline":true,"createDir":false,"overwriteFile":"true","encoding":"none","x":1000,"y":740,"wires":[[]]},{"id":"879be01db70658c0","type":"inject","z":"23e9b7f2.4a3b38","name":"Output on connect","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":"5","topic":"output on connect","payload":"true","payloadType":"str","x":150,"y":740,"wires":[["8b2eb5ef87a33a42"]]}]

bzw.
der Node-Red-Flow:


läuft wunderbar (habe gleich 6 fehlende Entitäten gefunden.
.
Viel Spaß beim Testen!

Meine Frage mag ja “einfach” erscheinen… bin halt noch Neuling.
Kann man den Watchman-Dienst auch regelmäßig per Automation starten (z.B. alle 2 Tage)?

@Giesser einfach in der Automation bei der Aktion den Dienst aufrufen.

1 „Gefällt mir“

Ich hab mal einen Test gestartet, dank Dir.

Guten Morgen,
@Giesser
ich habe ein type: markdown im Dashboard der zeigt mir immer direkt einen Fehler an ohne irgendetwas zu aktivieren. Find ich für mich ne richtig gute Lösung. Mein Code + Bild habe ich dir mal angehängt.

Dashboard für entities:

type: markdown
content: >-
  <h2> <ha-icon icon='mdi:shield-half-full'></ha-icon> Watchman report</h2>
  <h3>Missing Entities: {{ states.sensor.watchman_missing_entities.state }}
  </h3> {%- for item in state_attr("sensor.watchman_missing_entities",
  "entities") %} <hr> <table><tr> <td> <ha-icon icon='mdi: {%- if
  item.state=="missing"-%}cloud-alert' {%- elif item.state=="unavail"
  -%}cloud-off-outline' {%- else-%}cloud-question' {%- endif -%} ></ha-icon> {{
  item.id }} [{{item.state}}] <a title="{{item.occurrences}}">
  {{item.occurrences.split('/')[-1]}}</a> </td></tr></table> {%- endfor %}
title: Entities
card_mod:
  style:
    ha-markdown:
      $: |
        ha-markdown-element:first-of-type hr{
          border-color: #303030;
        }

und für services:

type: markdown
content: >-
  <h2 class="some"> <ha-icon icon='mdi:shield-half-full'></ha-icon> Watchman
  report</h2> <h3> Missing Services: {{
  states.sensor.watchman_missing_services.state }} </h3> {%- for item in
  state_attr("sensor.watchman_missing_services", "services") %} <hr><table><tr>
  <td>  <ha-icon icon='mdi:cloud-alert'></ha-icon> {{ item.id }} <a
  title="{{item.occurrences}}">{{item.occurrences.split('/')[-1].split(':')[0]}}</a>
  </td></tr></table> {%- endfor %}
title: services
card_mod:
  style:
    ha-markdown:
      $: |
        ha-markdown-element:first-of-type hr{
          border-color: #303030;
        }

1 „Gefällt mir“

Klar, kann man, ist aber gar nicht notwendig.
Du musst einfach die Anzahl der gefundenen Probleme überwachen und dann über die gewünschte Anzahl und ggf. eine kurze Zeitverzögerung die Benachrichtigung triggern.
Watchman selber wird bei jeder “Veränderung” einer Entität getriggert.
Ich habe das ganze in Node-Red realisiert:

und lasse mir des “Ergebnis” (watchman.txt) zusätzlich noch über den Telegram-Dienst auf mein Handy schicken.

@Robin und @harryp :grinning: momentan überfordert ihr mich! Aber ich danke für die Anregungen. Nodered ist für mich quasi neu und auch noch nicht bei mir in HA integriert (kommt sicher noch).
@Robin den Code kann ich in irgendein Dashboard einfügen? Eingerückt oder einfach bei einem bestehende hintendran?

@Giesser
Geh zu einem Dashboard drücke Karte hinzufügen - Karten Suchen - Markdown suchen - dann unter code einfach z.B entities code Kopieren/einfügen. Ahja vllt noch diesen blöden Text der schon im code fenster drin ist löschen :slight_smile:
Ob genau mein Code bei dir geht, weiß ich nicht, ich hab aber alles nach Standard gemacht also müsste er gehen. :slight_smile:

Bei Integrationen ist es immer empfehlenswert, in die “Dokumentation” auf GitHub zu schauen, da ist übrigens auch der Code für die Karte hinterlegt: KLICK

die Karte sieht dann so aus:
image

(bei mir ist gerade alles i.O., aber falls nicht werden die fehlenden Entitäten/Services dann hier angezeigt. Wie in der Doku steht, kannst Du auch noch die Zeilennummer aus der config.yaml ein-/ausblenden, wenn Du das möchtest).

1 „Gefällt mir“

Das sieht nun so bei mir aus:

Ich habe zwar keine Fehler (warum auch immer), aber der untere Absatz beginnend mit “title: Entities” gehört da ja wohl nicht hin. Ich habe Deinen Code kopiert und eingefügt… :thinking:

@harryp ich les das ja wohl auch, nur verstehe ich nicht alles, was dort steht. Ich stecke halt noch ziemlich am Anfang…

:crayon:by HarryP: Zusammenführung Doppelpost.
*@Giesser *
Bitte für Ergänzungen/Korrekturen oder Ansprache an mehrere User, bitte die “bearbeiten” Funktion verwenden. Danke!

Schon klar und einfach hier fragen, da wird ihnen geholfen! :grinning:

1 „Gefällt mir“