Protokolle und wo sind die Fehler ?

RudiP

Well-known member
Ich gehe gerade mal meine Protokolle durch, wo schon länger diverse Fehlermeldungen auftauchen. Vermutlich auch wegen längst gelöschter Dinge.
Was mir aber Schwierigkeiten bereitet, WO finde ich eigentlich den Fehler ?
Beispiel:
1751205287050.png

Klick ich drauf, kommt
1751205308986.png
Ich vermute mal, das es irgendwas mit einem Helfer zu tun hat. Aber welcher den ?
Gibt es da einen Trick, wie man rausfinden kann, wo genau der Fehler ist ?
 
"Template variable error" läßt darauf schließen dass der Fehler in der Template Datei ist.
Magst Du die mal posten? Persönliche Eintragungen (IP's etc.) bitte unkenntlich machen.
 
Gibt es da einen Trick, wie man rausfinden kann, wo genau der Fehler ist ?
Eventuell so:
Unter "Entwicklerwerkzeuge" alle yaml Konfigurationen neu laden. Dabei wird alles geprüft und normalerweise werden fehlerhafte Zeilennummern gemeldet. Vorher erst einmal die Benachrichtigungen löschen. Bei Fehler poppt eine Benachrichtigung auf mit genaueren Hinweisen.
 
"Template variable error" läßt darauf schließen dass der Fehler in der Template Datei ist.
Nur ist die keine 2982 Zeilen lang.
Magst Du die mal posten? Persönliche Eintragungen (IP's etc.) bitte unkenntlich machen.
Nein, eher nicht. Ich versuche ja zu Verstehen, wie man anhand dieser Fehlermeldungen an den eigentlichen Fehler kommt.
Neustart bringt da rein gar nichts, weil die Fehler sind ja da und das nicht erst seit gestern.
 
such dir z.B. das genannte entity und geh in den Eigenschafter auf zugehörig oder wo sonst man zugehörige Dinge sehen kann.
Oder durchsuche den config Ordner nach dem genannten Text.
 
such dir z.B. das genannte entity
  • Error parsing value: 'dict object' has no attribute 'states' (value: {"slave":{"memberId":0,"flags":9,"type":0,"appVersion":0,"protocolVersion":0,"connected":true,"flame":false,"cooling":false,"modulation":{"min":43,"max":100},"power":{"min":12.04,"max":28},"heating":{"active":false,"minTemp":20,"maxTemp":80},"dhw":{"active":false,"minTemp":40,"maxTemp":70},"fault":{"active":false,"code":0},"diag":{"active":false,"code":0}},"master":{"heating":{"enabled":false,"blocking":false,"indoorTempControl":false,"setpointTemp":50,"targetTemp":50,"currentTemp":43,"returnTemp":36,"indoorTemp":21,"outdoorTemp":28,"minTemp":20,"maxTemp":80},"dhw":{"enabled":true,"targetTemp":50,"currentTemp":51,"returnTemp":0,"minTemp":40,"maxTemp":70},"network":{"connected":true,"rssi":-52},"mqtt":{"connected":true},"emergency":{"state":false},"externalPump":{"state":false},"cascadeControl":{"input":true,"output":false},"uptime":3738010}}, template: {{ iif(value_json.states.otStatus, 'online', 'offline') }})
Und das wäre z.B. in diesem Fall ?
Ja, bei dem ein oder anderen kann ich mir Vorstellen, um welches Gerät es sich handelt, aber immer noch nicht, wo der Fehler aufgetreten ist.
und geh in den Eigenschafter auf zugehörig oder wo sonst man zugehörige Dinge sehen kann.
Ja, und dann ? Sehe ich im obigen Fall 4 Automationen. Wenn ich aber nicht weiß, was überhaupt das Problem ist, wie soll ich dann den Fehler finden ?
Er hat ein "parsing" Problem, weil es kein attribut "states" gibt.
Oder durchsuche den config Ordner nach dem genannten Text.
Schon versucht, der findet gar nichts.

Versteh mich nicht falsch. Man kann schon, wenn man sein System in und auswendig kennt, erraten, welche Entität den Fehler verursacht. Aber leider überhaupt nicht, wo er den aufgetreten ist. Automatisierung, Skript, Template oder was weis ich wo.
Da suchst Du dir nen Wolf.

Aber bleiben wir mal bei dem einfachen Beispiel:
Logger: homeassistant.helpers.template
Quelle: helpers/template.py:2982
Erstmals aufgetreten: 01:59:03 (65815 Vorkommnisse)
Zuletzt protokolliert: 11:31:30

  • Template variable error: 'dict object' has no attribute 'parameters' when rendering '{{ value_json.parameters.dhwMinTemp|int(0) }}'
  • Template variable error: 'dict object' has no attribute 'sensors' when rendering '{{ value_json.sensors.modulation|float(0)|round(0) }}'
  • Template variable error: 'dict object' has no attribute 'parameters' when rendering '{{ value_json.parameters.heatingMinTemp|int(0) }}'
  • Template variable error: 'dict object' has no attribute 'parameters' when rendering '{{ value_json.parameters.dhwMaxTemp|int(0) }}'
  • Template variable error: 'dict object' has no attribute 'parameters' when rendering '{{ value_json.parameters.heatingMaxTemp|int(0) }}'
Ich weiß, das "dhw" und "modulation" was mit meiner Gasheizung zu tun haben. Die ist mittels openTherm und MQTT an HA angebunden. Dazu gibt es drei Automatisierungen, wovon nicht eine irgendwas mit "dhwmin", "modulation", "heatingmin" usw. macht.
 
Hast Du mal versucht die yaml Dateien neu zu laden und damit auch zu testen?
Was noch geht wäre folgendes:
Unter Entwicklerwerkzeuge gibt es einen Template Editor. Da kannst Du den (verdächtigen) Code hinkopieren. Dort erfolgt auch eine Prüfung.
 
Er hat ein "parsing" Problem, weil es kein attribut "states" gibt.
"states" gibt es schon aber das könnte ein Syntaxfehler sein. yaml ist sehr zickig, eine Einrückung falsch, eine Klammer fehlt und dann suchst Du Dir einen Wolf weil die Meldung etwas gänzlich anderes sagt und den Fehler nicht spezifiziert.
 
bei mir sind das gerne nicht verfügbare Sachen, die dann keinen state, attribute o.ä. haben. Vielleicht kannst du was zeitgleiches in MQTT finden?
 
Hast Du mal versucht die yaml Dateien neu zu laden und damit auch zu testen?
ca. 500 mal in den letzten 3 Monaten. Dazu zig Neustarts. Es liegt nicht an irgendeinem Fehler in einer .yaml.
Unter Entwicklerwerkzeuge gibt es einen Template Editor. Da kannst Du den (verdächtigen) Code hinkopieren. Dort erfolgt auch eine Prüfung.
Welchen verdächtigen Code den. Darum gehts doch gerade. WIE Identifiziere ich den Teil, wo das Protokoll motzt.

bei mir sind das gerne nicht verfügbare Sachen, die dann keinen state, attribute o.ä. haben. Vielleicht kannst du was zeitgleiches in MQTT finden?
Ja, die Vermutung habe ich ja auch. Einige von den Fehlermeldungen scheinen von Geräten zu kommen, die via MQTT angebunden sind.
Eine der Meldungen
1751319387669.png
deutet ja an, das etwas mit "set_climate_oben_links" zu tun hat. oben links ist ein Heizungsthermostat von AVM.
Dazu gibt es auch einen Script, der die ECO Temperatur setzen soll.
Code:
alias: Zieltemperatur oben Links ECO
sequence:
  - data:
      temperature: "{{ states('input_number.temp_oben_links_eco')|float }}"
    target:
      entity_id:
        - climate.oben_links
    action: climate.set_temperature
variables:
  target_entity: climate.oben_links
mode: single
icon: mdi:air-filter
sieht mir soweit nicht nach einem Fehler aus.
Ich habe aber eben gesehen, das andere dieser Thermostate, die ebenfalls per Script angesteuert werden, einen leicht anderen Code haben. Keine Ahnung, warum es da Unterschiede gibt, eigentlich war das damals COPY & PASTE.
Code:
alias: Zieltemperatur oben Links ECO
sequence:
  - target:
      entity_id:
        - climate.oben_links
    data:
      temperature: "{{ states('input_number.temp_oben_links_eco')|float }}"
    action: climate.set_temperature
mode: single
So sieht der Code jetzt aus. Mal sehen, ob der Fehler dann weg ist.

Na zumindest kommt jetzt mal eine andere Fehlermeldung:
Script with alias 'Setze Temperatur oben Links' has invalid object id and has been disabled: invalid slug set_climate_oben_Links (try set_climate_oben_links). Got 'set_climate_oben_Links'
Da steht wenigstens, das es um einen ganz bestimmten Script geht.
Es gibt noch 5 weitere Skripte, die auch alle die ECO Temperatur in einem dieser AVM Thermostate setzen.
Code:
alias: Zieltemperatur Badezimmer ECO
sequence:
  - target:
      entity_id:
        - climate.badezimmer
    data:
      temperature: "{{ states('input_number.temp_badezimmer_eco')|float }}"
    action: climate.set_temperature
mode: single
Alle genau so aufgebaut. Aber wieso motzt er bei dem einen und bei den anderen nicht ?
 
Was ist ein slug Name ?
Ich kann bei mir auch nirgend ein großes L erkennen, wo ein kleines stehen sollte, außer in der Fehlermeldung. Keine Ahnung, wie die da drauf kommt.
 
Und auch im nächsten Codeblock float(0). Das wären die Meldungen Variable Error.
Geh mal alles durch. Die Änderung in float(0) schadet nicht. Kannst ja mal die Anzahl der Fehler vor und nach einer Änderung prüfen, dann weist Du sofort was Sache ist.
 
Sorry, das ist Unsinn. Natürlich sendet MEIN Sensor bei DIR ein "unknown", was ich natürlich mit einem float(0) in eine permanente null verwandeln kann. Aber das ist nicht der Fehler bei mir, weil mein Sensor permanent Werte schickt, weil "input_number"
 
Gemäß yaml Syntax:

jinja-filters.float(value: Any, default: float = 0.0) → float
Convert the value into a floating point number. If the conversion doesn’t work it will return 0.0. You canoverride this default using the first parameter.

macht er sowieso den Wert 0 wenn die Umwandlung nicht klappt. Schadet also nichts es mal zu versuchen.
Auch ist es wohl ein Funktionsaufruf der einen Parameter erwartet. Aber da kann ich mich auch täuschen, so gut kenne ich yaml nicht.
 
Zuletzt bearbeitet:
Ich frage mich gerade, ob man irgendwo sehen kann, ob ein Skript überhaupt noch gebraucht wird.
Ich weis, das ich damals, als ich meine Heizungssteuerung programmiert habe, es auch mal mit Skripten gemacht hatte, meine aber, es nachher doch alles anders gelöst zu haben.
Ich würde jetzt aber ungern Skripte löschen, nur um im Winter dann fest zu stellen "Mist, das hättest Du doch noch gebraucht"
Und deaktivieren, wie Automatisierungen, kann man die leider nicht.

Ja, ich habe jetzt mal die scripts.yaml gesichert und lösche dann mal "vermutlich" nicht mehr benötigte Scripte. Mal sehen, ob dann ein paar Fehler verschwinden.

Neustart ist durch, Protokolle gelöscht. Bin mal gespannt. Normalerweise dauerte es nur wenige Sekunden, bis der Fehler auftauchte.

Ok. Hat leider nicht geholfen. Fehler kommt immer noch.
Schade, das die Fehlermeldungen nicht Aussagekräftiger sind.
 

Zurzeit aktive Besucher

Neueste Beiträge

Letzte Anleitungen

Statistik des Forums

Themen
6.834
Beiträge
66.042
Mitglieder
7.150
Neuestes Mitglied
Donald
Zurück
Oben