Kategorien
Home Assistant Smart Home

Home Assistant: state (in Templates) abfragen

Da ich mir immer wieder zusammensuche, wie ich States in Home Assistant abfrage, fasse ich das jetzt einfach mal zusammen. Ich beschränke mich auf mir bis jetzt ausreichende Möglichkeiten.

state vergleichen

Um einen state zu vergleichen oder zu prüfen, kann state_attr in Kombination mit if oder elif oder is_state genutzt werden.

state_attr:

{% if state_attr('media_player.receiver_yamaha', 'source') == 'Fire TV' %}
  Fire TV
{% elif state_attr('media_player.receiver_yamaha', 'source') == 'Spotify' %}
  {{ state_attr('media_player.receiver_yamaha', 'media_artist') }} - {{ state_attr('media_player.receiver_yamaha', 'media_title')}}
{% endif %}

is_state:

{% if is_state('sensor.offene_fenster', '0') %}
  mdi:window-closed
{% else %}
  mdi:window-open
{% endif %}

Kurzschreibweise:

{{ 'mdi:window-closed' if is_state('sensor.offene_fenster', '0') else 'mdi:window-open' }}

multiple Abfrage mit in:

{% if states('sensor.mein_toller_sensor') in ("unavailable", "unknown") %}
  yada yada
{% endif %}

Was ich mir dahingehend ansehen sollte (beim flüchtigen Blick über die Templating-Doku):

select('is_state', 'on')

Kategorien
Contao

Eigene Layoutbereiche in Contao mit eigenen Templates bestücken

contao-layoutbereich-template

Seit Contao 3.3 können die eigenen Layoutbereich mit einem eigenen Template ausgegeben werden. Dafür muss der jeweilige Bereich in der fe_page.html5 bzw. fe_page.xhtml folgendermaßen aufgerufen werden:

$this->section('meinlayoutbereich', 'block_section_meinlayoutbereich-template');

meinlayoutbereich ersetzt ihr mit dem Namen eures Layoutbereichs, block_section_meinlayoutbereich-template mit dem Namen eures Templates. Easy, mh?

Was muss im Template des Layoutbereich stehen? Mindestens das:

echo $this->content;

Siehe auch GitHub-Issue #6531. Außerdem kommt in 3.5 (jedenfalls als Milestone angegeben) ein wenig Komfort in die Layoutbereiche, wie man in Issue #6630 sieht.

(Aus irgendwelchen Gründen schmeißt – mein – WordPress < ? php am Anfang von HTML-Code-Elementen heraus, daher habe ich den Beispielen darauf verzichtet und musste es hier mit Leerzeichen schreiben. Mh.)