bitte um Hilfe bei PoolSolarsteuerung

helmi55

Member
Schönen Sonntag
ich schaffe es nicht in Automation meine Solardifferenzsteuerung anzulegen.
Ich möchte, wenn der Solarsensor 5 Grad über dem Poolsensor ist die Solarpumpe einschalten
und wenn beide Sensoren die selbe Temperatur haben die Pumpe ausschalten.
Um bei der Differenz (Hysterese) flexibel zu sein habe ich mir einen numerischen Helfer erstellt (counter.hysterese) Hier kann ich die Differenz zwischen 3 und 10 Grad einstellen.

Ich dachte mir wenn ich in der Automation als Auslöser den numerischen Zustand nehme funktioniert das? Aber hier kann ich nicht vergleichen.

Wie kann ich das bitte anstellen?
Oder funktioniert das nicht über Automation und muss als YAML erstellt werden?

Danke für eure Unterstützung
Helmut
 
Zähler? Ich würde einen number helper nehmen.
Vergleichen musst du in der Bedingung oder in einem extra Template Sensor. Im Trigger geht nur über/unter Wert einer anderen Entität
 
Servus
@u5zzug Danke für den Hinweis bezüglich Number Helper.
Sorry für die dumme Frage, wie kann ich das in der Bedingung vergleichen? Sorry bin noch ein Anfänger bezüglich Automation....
Danke
Helmut
 
Ok Danke für den Hinweis
Wie bekomme ich aber jetzt noch meinen Numerische Helfer (Hysterie) in spiel?
YAML:
alias: Solarsteuerung
description: ""
trigger: []
condition:
  - condition: numeric_state
    entity_id: sensor.esp_test1
    above: sensor.1_wire_hub_temperature
action:
  - service: switch.turn_on
    data: {}
    target:
      entity_id: switch.solar_pumpe
mode: single

Bzw. zum Ausschalten, wenn die Temperaturen gleich sind?

Danke
Helmut
 
Für eine Bedingung mit dem Helfer als Bedingung "Template" wählen und dann sowas eintragen:
YAML:
{% if (states('sensor.forecast0') | int + states('input_number.xyz') | int > states('sensor.forecast1') | int) %}
True
{% else %}
False
{% endif %}
Halt die Bezeichnungen ersetzen durch Solarsensor + Helfer > Poolsensor.

Wenn die Temperatursensoren feiner differenzieren als 1 Grad noch nach | float konvertieren anstelle von int.
 
Servus @Nival
Ich bin zwar 68 und kein Neuling mit Computer, aber hier in HA bin ich ein Neugeborenes - besonders mit der/die/das yaml

Mein HA ist schon ganz schön groß und habe auch schon einfache Steuerungen realisiert. Bin sehr froh das ich alles von FHEM hier her umziehen habe können.

Nur mit dem Template stehe ich noch auf Kriegsfuß.

wo muß ich diese Template an meine bestehende "Solarsteuerung"! anhängen

Danke für deine Geduld und Hilfe

LG
Helmut
 
Habs jetzt so versucht - ohne Erfolg:
YAML:
alias: Solarsteuerung
description: ""
trigger: []
condition:
  - condition: numeric_state
    entity_id: sensor.esp_test1
    above: sensor.1_wire_hub_temperature
template:
  {% if (states('sensor.esp_test1') | int + states('input_number.hysterese') | int > states('sensor.1_wire_hub_temperature') | int) %}
  True
  {% else %}
  False
  {% endif %}
action:
  - service: switch.turn_on
    data: {}
    target:
      entity_id: switch.solar_pumpe
mode: single
 
Einfach als (weitere) Bedingung hinzufügen, wenn Du die Automatisierung über Einstellungen => Automatisierungen und Szenen bearbeitest:
1683476397588.png1683476490730.png1683476563838.png


Wenn Du es direkt als Code einfügen möchtest sollte das in etwa so sein:
YAML:
condition:
  - condition: numeric_state
    entity_id: sensor.esp_test1
    above: sensor.1_wire_hub_temperature
  - condition: template
    value_template: >-
      {% if (states('sensor.esp_test1') | int + states('input_number.hysterese') | int > states('sensor.1_wire_hub_temperature') | int) %}
      True
      {% else %}
      False
      {% endif %}
 
Ok danke - danke, jetzt habe ich es verstanden (hoffe ich?)
YAML:
alias: Solarsteuerung
description: ""
trigger: []
condition:
  - condition: numeric_state
    entity_id: sensor.esp_test1
    above: sensor.1_wire_hub_temperature
  - condition: template
    value_template: >-
      {% if (states('sensor.esp_test1') | int + states('input_number.hysterese')
      | int > states('sensor.1_wire_hub_temperature') | int) %}

      True

      {% else %}

      False

      {% endif %}
action:
  - service: switch.turn_on
    data: {}
    target:
      entity_id: switch.solar_pumpe
mode: single

Jetzt muss ich noch herausfinden, wie ich die Pumpe bei == abschalte
 
Ja, das sieht richtig aus - bis auf einen Punkt, an den ich eben auch nicht gedacht habe (ich nutze HA selber nicht und bastel sowas auch nur bei Anfragen zusammen) - die | int sollten noch Defaultwerte bekommen, damit die Automatisierung nicht direkt streikt, wenn mal ein Sensor nicht verfügbar ist. Dafür aus jedem | int ein | int(0) machen (oder einen anderen Wert eintragen, der Dir sinnvoller erscheint).

Jetzt muss ich noch herausfinden, wie ich die Pumpe bei == abschalte
Ich fürchte, das lässt sich nur über eine weitere Automatisierung lösen :)
 
Ich habe statt "int" gerade eben auf "float" geändert?

Ja das mit der zweiten Automation habe ich auch gerade gedacht
Nur wie sage ich sensor 1 == sensor 2 turn off?
 
Ich habe statt "int" gerade eben auf "float" geändert?
Auch gut, trotzdem Defaultwerte eintragen :)

Nur wie sage ich sensor 1 == sensor 2 turn off?
Das "turn off" kann ich Dir nicht sagen, sollte sich aber eigentlich von den Angeboten her ergeben, wenn Du eine neue Automatisierung zusammenklickst.

Ansonsten ggf. auf die gleiche Art und Weise, und mit "==" liegst Du auch schon vollkommen richtig - den einen Wert mit dem anderen vergleichen als Bedingung und gut ists:
YAML:
      {% if (states('sensor.esp_test1') | float(0) == states('sensor.1_wire_hub_temperature') | float(0)) %}
      True
      {% else %}
      False
      {% endif %}
 
Nochmals herzlichen Dank
ich habs jetzt mal so gelöst. Werde aber auch noch das mit == versuchen. Mal schauen was die bessere Lösung ist?
YAML:
alias: Solarsteuerung
description: ""
trigger: []
condition:
  - condition: numeric_state
    entity_id: sensor.esp_test1
    above: sensor.1_wire_hub_temperature
  - condition: template
    value_template: >-
      {% if (states('sensor.esp_test1') | float(0) +
      states('input_number.hysterese') | float(0) >
      states('sensor.1_wire_hub_temperature') | float(0)) %}

      True

      {% else %}

      False

      {% endif %}
action:
  - service: switch.turn_on
    data: {}
    target:
      entity_id: switch.solar_pumpe
  - delay:
      hours: 0
      minutes: 5
      seconds: 0
      milliseconds: 0
  - service: switch.turn_off
    data: {}
    target:
      entity_id: switch.solar_pumpe
mode: single

Schönen Tag
 
Hallo nochmals @Nival
habe jetzt zum Testen die Hysterese (input_number.hysterese) auf 1 gesetzt aber die Pumpe springt nicht an
Obwohl Solartemperatur 17,4 ist und der Pool nur 15,3 Grad hat?
Muss man da noch so was ähnliches wie do always setzten oder muss ich nach der Änderung der Hysterese noch etwas ausführen?
Auf aktualisieren habe ich gedrückt!
Wenn ich in der Automation auf "ausführen" klicke - startet die Pumpe

Danke
Helmut
 
Ein Trigger löst nur aus, wenn sich der Auslöser ändert, nicht wenn er auf einem Wert ist.
 
Löst die Automatisierung denn irgendwann aus, wenn Du sie nicht manuell startest? Könnte mir vorstellen, dass da schlicht noch ein Trigger fehlt, z.B. alle x Minuten prüfen.
 
YAML:
alias: Solarsteuerung
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.esp_test1
condition:
action:
  - service: >-
      {% set hysterese = states('input_number.hysterese') %}
      {% set solar = states('sensor.esp_test1')|float(0) %}
      {% set pool = states('sensor.1_wire_hub_temperature')|float(0) %}
      {% if solar == pool %}
      switch.turn_off
      {% elif hysterese + solar > pool %}
      switch.turn_on
      {% endif %}
    data: {}
    target:
      entity_id: switch.solar_pumpe
mode: single

Kann man auch mit ganz wenig Code realisieren :cool:
Da ist An- und Ausschalten mit drin
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
4.657
Beiträge
47.583
Mitglieder
4.300
Neuestes Mitglied
R2B2-123
Zurück
Oben