Liebe SmartHome for Dummies Gemeinde.
Die phpBB Forum Software gehört nicht wirklich zu den modernsten seiner Art.
Ich habe mich an einer Migration zu Discourse versucht und bin leider kläglich gescheitert.
Möchte aber trotzdem einen Neuanfang auf einer modernen Plattform starten.
Gerne möchte ich Euch animieren das neue Discourse Forum zu benutzen.
Bestehenden Usern bleibt es leider nicht erspart, sich auf der neuen Platform neu anzumelden.
Das Forum hier, bleibt selbstverständlich Online. Ich würde versuchen einiges händisch zu migrieren.
Da fallen mir die Rubriken "Template Sammlungen" oder "Best Practice Automatisierungen" ein.
Betriebsstundenzähler erstellen
- Markus
- Beiträge: 453
- Registriert: Fr 23. Jul 2021, 09:03
- 3
- Wohnort: Österreich
- Has thanked: 24 times
- Been thanked: 8 times
Betriebsstundenzähler erstellen
Das tägliche Rücksetzen wäre mit dem utility meter möglich, nur wie erfasse ich die Tagesstunden? Mit https://www.home-assistant.io/integrations/statistics/ bekomm ich das nicht raus?
Re: Betriebsstundenzähler erstellen
Code: Alles auswählen
sensor:
- platform: history_stats
name: on_time_lg_tv
entity_id: media_player.lg_webos_smart_tv
state: 'on'
type: time
start: '{{ 0 }}'
end: '{{ now() }}'
utility_meter:
daily_on_lg_tv:
source: sensor.on_time_lg_tv
cycle: daily
weekly_on_lg_tv:
source: sensor.on_time_lg_tv
cycle: weekly
monthly_on_lg_tv:
source: sensor.on_time_lg_tv
cycle: monthly
quarterly_on_lg_tv:
source: sensor.on_time_lg_tv
cycle: quarterly
yearly_on_lg_tv:
source: sensor.on_time_lg_tv
cycle: yearly
Re: Betriebsstundenzähler erstellen
Code: Alles auswählen
type: markdown
content: |-
| Spalte rechts | Spalte links | Nochmal rechts | Spalte mittig |
|--------------:|:-------------|----------------:|:-------------:|
|Zeile 1 |Zeile 1 |Zeile 1 |Zeile 1 |
|Zeile 2 |Zeile 2 |Zeile 2 |Zeile 2 |
|Zeile 3 |Zeile 3 |Zeile 3 |Zeile 3 |
title: Beispiel Formartierung als Tabelle links/rechts/mittig
Re: Betriebsstundenzähler erstellen
Ich habe es in einer normalen Entitäts-Karte.
Aber hier dann verschiedene Möglichkeiten in Markdown:
Code: Alles auswählen
type: markdown
content: >-
| Nr. | Wert
|:--------|:------------------------------------------|
|1. |{{ states.sensor.daily_on_lg_tv.state }}
|2. |{{ states.sensor.weekly_on_lg_tv.state }}
|3. |{{ states.sensor.monthly_on_lg_tv.state }}
|4. |{{ states.sensor.quarterly_on_lg_tv.state }}
|5. |{{ states.sensor.yearly_on_lg_tv.state }}
***
| Nr. | Wert
|:--------|------------------------------------------:|
|1) |{{ states.sensor.daily_on_lg_tv.state }} h
|2) |{{ states.sensor.weekly_on_lg_tv.state }} h
|3) |{{ states.sensor.monthly_on_lg_tv.state }} h
|4) |{{ states.sensor.quarterly_on_lg_tv.state }} h
|5) |{{ states.sensor.yearly_on_lg_tv.state }} h
***
| Zeitraum | Wert
|:----------|:------------------------------------------:|
|Tag |{{ states.sensor.daily_on_lg_tv.state }}
|Woche |{{ states.sensor.weekly_on_lg_tv.state }}
|Monat |{{ states.sensor.monthly_on_lg_tv.state }}
|Quartal |{{ states.sensor.quarterly_on_lg_tv.state }}
|Jahr |{{ states.sensor.yearly_on_lg_tv.state }}
***
|Tag
|Woche
|Monat
|Jahr |
|:---------------------------------------:|:---------------------------------------:|:-----------------------------------------|:---------------------------------------:|
|{{ states.sensor.daily_on_lg_tv.state }}|{{
states.sensor.weekly_on_lg_tv.state }}|{{ states.sensor.monthly_on_lg_tv.state
}}|{{ states.sensor.yearly_on_lg_tv.state }}|
title: Links, rechts, mittig oder als Zeile
- Markus
- Beiträge: 453
- Registriert: Fr 23. Jul 2021, 09:03
- 3
- Wohnort: Österreich
- Has thanked: 24 times
- Been thanked: 8 times
Re: Betriebsstundenzähler erstellen
Datum-Gestern: xx h
Datum-Vorgestern: xx h
usw...
Re: Betriebsstundenzähler erstellen
Da ermittele ich aber nur das aktuelle Datum und speichere das.
Code: Alles auswählen
{{ now().strftime('%a %d.%m.%Y %H:%M ') }}
Damit habe ich mich aber auch noch nicht befasst.
Ich verstehe noch nicht, wie das Ganze zum Schluss aussehen soll.
Du willst also nur den daily-Wert und das wie lange zurück?
- Markus
- Beiträge: 453
- Registriert: Fr 23. Jul 2021, 09:03
- 3
- Wohnort: Österreich
- Has thanked: 24 times
- Been thanked: 8 times
- Osorkon
- Administrator
- Beiträge: 2105
- Registriert: Sa 17. Jul 2021, 16:53
- 3
- Wohnort: Langenargen
- Has thanked: 63 times
- Been thanked: 581 times
- Kontaktdaten:
Re: Betriebsstundenzähler erstellen
Oder geht auch ein Balken-Diagramm?
wie sowas hier mit der custom:apexcharts-card
Gruß
Osorkon

- Osorkon
- Administrator
- Beiträge: 2105
- Registriert: Sa 17. Jul 2021, 16:53
- 3
- Wohnort: Langenargen
- Has thanked: 63 times
- Been thanked: 581 times
- Kontaktdaten:
Re: Betriebsstundenzähler erstellen
Müsstest also auf die history bzw. die db zurückgreifen.
Da wäre einmal ein SQL Sensor dann 7 Stück davon mit der entsprechenden query. Voraussetzung Deine history erfasst die 7 Tage.
Eine andere Möglichkeit wäre ein Trigger-based template sensor für jeden Wochentag, der um 23:59 den Wert für eine Woche zwischen speichert. Als Attribut kannst Du z.B. das jeweilige Datum mitgeben.
Hier mal ein Bsp, Auszug aus der template.yaml
Code: Alles auswählen
- trigger:
- platform: template
value_template: >
{{ now().strftime('%w,%H:%M') == "2,23:59" }}
sensor:
- name: "Wert Dienstag"
state: >
{{states('sensor.xyz')}}
attributes:
Datum: >
{{ now().strftime('Dienstag, den %d.%m') }}
Spricht der Sensor wird immer Dienstags um 23:59 aktualisiert.
Und dann eben noch die Sensoren für die anderen Wochentage.
Nach einer Woche hast Du alle 7 Sensoren mit Werten gefüllt.
Jetzt musst Du diese noch Sortieren nach "letzte Aktualisierung" und irgendwie in die Markdown Karte verpacken.
Das einfachste wäre aber immer noch eine custom:apexcharts-card in Tabellen Form, wenn es sowas gäbe.
Gruß
Osorkon

Re: Betriebsstundenzähler erstellen
Gibt bestimmt elegantere Möglichkeiten, aber auf die Schnelle fiel mir bloß dies hier ein.
Habe 7 Sensoren erstellt, für 7 Tage.
Code: Alles auswählen
- platform: history_stats
name: on_time_lg_tv
entity_id: media_player.lg_webos_smart_tv
state: 'on'
type: time
end: "{{ now().replace(hour=0, minute=0, second=0) }}"
duration:
hours: 0
- platform: history_stats
name: on_time_lg_tv_1
entity_id: media_player.lg_webos_smart_tv
state: 'on'
type: time
end: "{{ now().replace(hour=0, minute=0, second=0) }}"
duration:
hours: 24
usw. bis:
hours: 168
Weiß nicht ob man die Zeit auch anders vorgeben kann, so daß immer nur ein Tag ermittelt wird.
Aber so gehts auch.
Code: Alles auswählen
{{states.sensor.on_time_lg_tv.state}}
{{states.sensor.on_time_lg_tv_1.state}}
{{states.sensor.on_time_lg_tv_2.state}}
{{states.sensor.on_time_lg_tv_3.state}}
{{states.sensor.on_time_lg_tv_4.state}}
{{states.sensor.on_time_lg_tv_5.state}}
{{states.sensor.on_time_lg_tv_6.state}}
{{states.sensor.on_time_lg_tv_7.state}}
Code: Alles auswählen
{{ '%0.2f' | format(states('sensor.on_time_lg_tv_7') | float - states('sensor.on_time_lg_tv_6') | float ) }}
{{ '%0.2f' | format(states('sensor.on_time_lg_tv_6') | float - states('sensor.on_time_lg_tv_5') | float ) }}
{{ '%0.2f' | format(states('sensor.on_time_lg_tv_5') | float - states('sensor.on_time_lg_tv_4') | float ) }}
{{ '%0.2f' | format(states('sensor.on_time_lg_tv_4') | float - states('sensor.on_time_lg_tv_3') | float ) }}
{{ '%0.2f' | format(states('sensor.on_time_lg_tv_3') | float - states('sensor.on_time_lg_tv_2') | float ) }}
{{ '%0.2f' | format(states('sensor.on_time_lg_tv_2') | float - states('sensor.on_time_lg_tv_1') | float ) }}
{{ '%0.2f' | format(states('sensor.on_time_lg_tv_1') | float ) }}
Code: Alles auswählen
|Datum | | |Summe | |Tageswerte |
|:----------------------------------------------------------------------------------|:-|:-|:-----------------------------------------:|:-|:---------------------------------------------------------------------------------------------------------------------:|
|{{ now().strftime('%d.%m.%Y')}} | | |{{states.sensor.on_time_lg_tv.state}} | | |
|{{ (as_timestamp(now()) - (24*3600)) | timestamp_custom('%d.%m.%Y', True) }} | | |{{states.sensor.on_time_lg_tv_1.state}} | |{{ '%0.2f' | format(states('sensor.on_time_lg_tv_1') | float ) }} |
|{{ (as_timestamp(now()) - (48*3600)) | timestamp_custom('%d.%m.%Y', True) }} | | |{{states.sensor.on_time_lg_tv_2.state}} | |{{ '%0.2f' | format(states('sensor.on_time_lg_tv_2') | float - states('sensor.on_time_lg_tv_1') | float ) }} |
|{{ (as_timestamp(now()) - (72*3600)) | timestamp_custom('%d.%m.%Y', True) }} | | |{{states.sensor.on_time_lg_tv_3.state}} | |{{ '%0.2f' | format(states('sensor.on_time_lg_tv_3') | float - states('sensor.on_time_lg_tv_2') | float ) }} |
|{{ (as_timestamp(now()) - (96*3600)) | timestamp_custom('%d.%m.%Y', True) }} | | |{{states.sensor.on_time_lg_tv_4.state}} | |{{ '%0.2f' | format(states('sensor.on_time_lg_tv_4') | float - states('sensor.on_time_lg_tv_3') | float ) }} |
|{{ (as_timestamp(now()) - (120*3600)) | timestamp_custom('%d.%m.%Y', True) }} | | |{{states.sensor.on_time_lg_tv_5.state}} | |{{ '%0.2f' | format(states('sensor.on_time_lg_tv_5') | float - states('sensor.on_time_lg_tv_4') | float ) }} |
|{{ (as_timestamp(now()) - (144*3600)) | timestamp_custom('%d.%m.%Y', True) }} | | |{{states.sensor.on_time_lg_tv_6.state}} | |{{ '%0.2f' | format(states('sensor.on_time_lg_tv_6') | float - states('sensor.on_time_lg_tv_5') | float ) }} |
|{{ (as_timestamp(now()) - (168*3600)) | timestamp_custom('%d.%m.%Y', True) }} | | |{{states.sensor.on_time_lg_tv_7.state}} | |{{ '%0.2f' | format(states('sensor.on_time_lg_tv_7') | float - states('sensor.on_time_lg_tv_6') | float ) }} |
|----------------------- | | |----------------------------- | | |
Die Tageswerte muß man dann umrechnen, 0,5 sind dann 30 Minuten.
Hoffentlich meintest du sowas.