Verbrauch berechnen über Laufzeit

regda

New member
Hey Leute,

vielleicht könnt ihr mir ein wenig auf die Sprünge helfen.

Ich habe eine Dosieranlage die Chlor in den Pool abgibt. Geschaltet wird die Chlor Pumpe über einen Shelly 2PM.
Das Chlor ist in einem 25kg Kanister. Ich würde nun gerne den Verbrauch des Kanisters anhand der Laufzeit des Shellys Ausgangs berechnen. Ich weiß das ca. 30mg Chlor je Minute Laufzeit entnommen werden.

Idealerweise brauche ich dann auch noch die Möglichkeit den Sensor wieder zu resetten wenn ich einen neuen Kanister anschließe... 🫢

Ich habe schon überlegt wie ich das über einen Template Sensor erreiche - aber irgendwie reichen dafür meine Kenntnisse nicht aus.

Kann mir hier jemand weiterhelfen?

Danke und Grüße,
Martin
 
Hallo @regda und willkommen im Forum

ich würde gerne helfen, hab nur davon keine Ahnung. Es sind hier aber auch Leute vertreten, welche sich in dem Thema echt auskennen.
Viel Erfolg. :)
 
Keine Ahnung, ob das so funktioniert. Aber wäre mal ein Ansatz:

YAML:
sensor:
  - platform: history_stats
    name: Poolpumpe_Laufzeit_Sekunden_Gesamt
    entity_id: binary_sensor.poolpumpe
    state: "on"
    type: time
    start: "{{ now().replace(hour=0, minute=0, second=0) }}"
    end: "{{ now() }}"

template:
  - sensor:
    - name: "Clorverbrauch"
      unit_of_measurement: "mg"
      state: >
        {% set Laufzeit_sec = states('sensor.Poolpumpe_Laufzeit_Sekunden_Gesamt') | int %}
        {% set Verbrauch_min = 30 | int %}
        {{ Laufzeit_sec / 60 * Verbrauch_min }}
 
Zuletzt bearbeitet:
@regda, du berichtest über deine Versuche?!
Hab das heute morgen vor der Arbeit mal schnell aus dem Kopf hier eingetippt, ohne HA. Evtl. muss man auch * 60 nehmen und nicht /60 , um von Sekunden in Minuten umzurechnen.
 
Das ganze hat den ein oder anderen Schönheitsfehler. ;)

Mit
YAML:
    start: "{{ now().replace(hour=0, minute=0, second=0) }}"
    end: "{{ now() }}"

Erstellst Du einen Tageszähler. Der von 0 Uhr bist jetzt die Einschaltdauer ermittelt und jeden Tag um 0 Uhr auf 0 zurückgesetzt wird.
Die Aufgabenstellung war, wenn ich mich nicht überlesen habe. Manuell zurück zusetzen, wenn der Kanister getauscht wurde.

Des Weiteren ermitteln meine history_stats Sensoren die Einschaltdauer in Stunden und nicht in Sekunden.

Ich würde das ganze so angehen:

Der history_stats Sensor, ermittelt die Gesamte Einschaltdauer bis jetzt. Wird also nicht automatisch zurück gesetzt, sondern zählt fortlaufend hoch.

YAML:
#sensor.yaml
- platform: history_stats
  name: "Chlorpumpe Laufzeit Gesamt"
  entity_id: switch.chlorpumpe
  unique_id: 9e04a7c0-24e5-11ee-b804-8be11b949659
  state: "on"
  type: time
  start: "{{ 0 }}"
  end: "{{ now() }}"

Dann einen input_button als Helfer erstellen, zum zurücksetzen des Zählers z.B. input_button.reset_chlorpumpe_laufzeit

Einen Trigger template Sensor, welcher den aktuellen Wert vom history_stats sensor zum Zeitung des Zurücksetzen übernimmt

YAML:
#template.yaml
- trigger:
    - platform: state
      entity_id:
        - input_button.reset_chlorpumpe_laufzeit
  sensor:
    - name: Chlorpumpe laufzeit ab reset
      state: |
        {{ states('sensor.chlorpumpe_laufzeit_gesamt') | float(0) }}
      unique_id: 10868cd0-24e8-11ee-b804-8be11b949659
      unit_of_measurement: "h"
      state_class: measurement

Dann einen Template Sensor der die Laufzeit der Chlorpumpe ab Zeitpunk reset bis jetzt ermittelt.

YAML:
#template.yaml
- sensor:
    - name: Chlorpumpe Dauer
      state: |
        {{ states('sensor.chlorpumpe_laufzeit_gesamt') | float(0) - states('sensor.chlorpumpe_dauer_ab_reset') | float(0) }}
      unique_id: 8eb2f1a0-2599-11ee-b804-8be11b949659
      unit_of_measurement: "h"
      state_class: measurement

Und zum Schluss ein Template sensor, der die Menge an Chlor in Liter ab Zeitpunkt Reset berechnet

YAML:
#template.yaml
- sensor:
  - name: Chlorverbrauch ab reset
    state: |
      {% set dauer = states('sensor.chlorpumpe_dauer') | float(0) %}
      {{ (dauer * 60 *30/1000) | float(0) | round(3) }}
    unique_id: 52ee8500-24e8-11ee-b804-8be11b949659
    unit_of_measurement: "l"
    state_class: measurement

Die zwei letzen template Sensoren lassen sich auch zum einem Zusammenfassen.
Aber vielleicht möchtest Du die Dauer und die Menge als separate Sensoren abbilden. Außerdem kann man vielleicht so leichter den Ausführungen folgen.

Den Füllgrad des Kanisters kannst Du, wenn Du magst auch ermitteln.

YAML:
- sensor:
    - name: Chlorkanister Füllgrad
      state: |
        {{ 100 - (states('sensor.chlorverbrauch_ab_reset') | float(0) / 25 * 100) | int }}
      unique_id: 812de340-259f-11ee-b804-8be11b949659
      unit_of_measurement: "%"
      state_class: measurement

Bildschirmfoto 2023-07-18 um 21.23.37.png
 

Zurzeit aktive Besucher

Keine Mitglieder online.

Letzte Anleitungen

Statistik des Forums

Themen
6.115
Beiträge
59.425
Mitglieder
6.160
Neuestes Mitglied
gonzo12345
Zurück
Oben