Brauche Hilfe bei einer Kleinigkeit...

wunderhe

New member
Ich habe ein Problem, das wahrscheinlich nur durch eine falsche Schreibweise oder einen Syntaxfehler zustande kommt. Für einen YAML-Kenner ist das vermutlich nur eine Kleinigkeit, aber mich bringt es zur völligen Verzweiflung, weil ich den Fehler nicht finde...
Wenn der Schalter "pv-laden" eingeschaltet wird, dann soll die Ladeleistung (in Ampere) bei meinem Elektroauto entsprechend der PV-Leistung vom Dach eingestellt werden:

YAML:
- id: 'xxxxxxxxxxxxx'
  alias: Neue Automatisierung
  description: ''
  trigger:
  - platform: state
    entity_id:
    - input_boolean.pv_laden
    from: 'off'
    to: 'on'
  condition: []
  action:
  - device_id: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    domain: number
    entity_id: number.hermanns_tesla_charging_amps
    type: set_value
    value: >-
      {{ ((float(states('sensor.senec_solar_generated_power'))) * 0.0014) | round(0) }}
  mode: single

(der Faktor 0.0014 kommt von 1KW/(230*3)=0.0014 - wegen dem dreiphasigen Laden)

Leider bin ich völlig am verzweifeln, denn dieser Wert wird einfach nicht an das Auto gesendet - ich probiere schon mehrere Stunden daran herum und bekomme es einfach nicht hin.

Der Fehler liegt meines Erachtens ganz unten, denn wenn ich anstelle von
YAML:
    value: >-
      {{ ((float(states('sensor.senec_solar_generated_power'))) * 0.0014) | round(0) }}
zum Beispiel einfach
YAML:
    value: 3
schreibe, dann wird der Wert 3 richtig eingestellt und das Auto lädt brav mit 3 Ampere weiter.

Wenn ich unter "Templates" die {{ ((float(states('sensor.senec_solar_generated_power'))) * 0.0014) | round(0) }} eingebe, dann kommt auch der richtige Wert (z.B. 4).

Wie stelle ich es aber an, dass der Wert hier richtig übernommen und an das Auto gesendet wird???
 
probier mal so:

YAML:
value: >-
  {{ states('sensor.senec_solar_generated_power')|float(0) * 0.0014 | round(0) }}
 
Zuletzt bearbeitet:
Es hat leider nicht funktioniert:cry:. Zuerst dachte ich, dass es an einer fehlenden Klammer liegt. So wie von Steevee geschrieben lieferte der Wert unter Template nämlich immer 0.0. Ich habe es dann um eine Klammer ergänzt:
YAML:
    value: >-
      {{ ( states('sensor.senec_solar_generated_power') | float(0) * 0.0014 ) | round(0) }}
So zeigt es unter Template den richtigen ganzzahligen Wert an, bei der Automatisierung tut sich aber leider gar nichts... 😭

Woran könnte es denn noch liegen? Wenn ich als value einfach 3 eingebe, dann funktioniert es einwandfrei - aber sobald ich das variabel haben will, dann passiert nix.
 
Ich verstehe deine Rechnung nicht ganz, es müssen pro Phase 2400Watt kommen bis deine Berechnung auf 3 A kommen würde

Angenommen es würden 600Watt kommen wurde dann * 0,0014 nehmen kommt mit round 0 einfach 0,0 dabei raus, vielleicht solltest du das Ganze ein wenig genauer beschreiben was für eine Anlage (bzw was liefert der Sensor "sensor.senec_solar_generated_power" für einen Wert, und was für eine Aufgabe soll deine Automatisierung genau übernehmen.

zudem ist 1000/(230*3) = 1,4492 und nicht 0,0014 da in Watt und nicht in KW gerechnet wird.
 
Wenn ich im Template {{ states('sensor.senec_solar_generated_power') }} eingebe, dann kommen jetzt gerade 5654.44 heraus. So viel Watt produziert meine PV-Anlage im Moment und meine Wallbox kann die gesamte Leistung auf die drei Phasen verteilen und zum Auto schicken. Jede Phase kann pro Ampere mit 1A*230V=230W laden - dreiphasig macht das insgesamt 3A*230V=690W für jedes Ampere. Der Ladevorgang des Tesla kann über die bereitgestellte API mit Wechselspannung von 1A bis 16A eingestellt werden. Für die obigen 5654.44 Watt müsste ich also 8 Ampere einstellen (8A*3*230V=5520W), der Faktor von 0.0014 (=1/690) müsste also schon stimmen, denn die 5654.44*0.0014=7,9.
Wenn ich unter Template
YAML:
    value: >-
      {{ ( states('sensor.senec_solar_generated_power') | float(0) * 0.0014 ) | round(0) }}
eingebe, dann kommt auch der richtige Wert in ganzzahligen Ampere heraus - nur wird er (warum auch immer) nicht als Wert an den Tesla geschickt. Wenn ich einfach eine Zahl stattdessen eingebe, dann funktioniert es - aber dann kann ich es gleich manuell in der Tesla-App steuern...
 
Das Problem ist nicht die Rechnung - denn die liefert ja das richtige Ergebnis von z.B. "8" in obigem Beispiel. Das Problem ist, dass die "8" nur dann beim Auto ankommt, wenn ich sie manuell eingebe.
Auch dann, wenn {{ ( states('sensor.senec_solar_generated_power') | float(0) * 0.0014 ) | round(0) }} den Wert "8" hat, dann wird er nicht ans Auto geschickt.
Vielleicht sollte ich es mal mit einem Helfer probieren (so wie u5zzug gemeint hat) - aber ich hab leider keine Ahnung, wie...
 
Probier das mal mit dem Service number.set_value

YAML:
  action:
    service: number.set_value
    target:
      entity_id: number.hermanns_tesla_charging_amps
    value: >-
      {{ ((float(states('sensor.senec_solar_generated_power'))) * 0.0014) | round(0) }}
 
Das klappt leider auch nicht.:mad::mad::mad:
Ich bin jetzt schon so weit, dass ich Folgendes Überlege:
Ich erstelle für die 16 verschiedenen Ampere-Möglichkeiten jeweils eine passende Bedingung.
Also
1. Wenn 0W<PV-Überschuss<690W, dann setze Ladestärke auf 1 Ampere.
2. Wenn 690W<=PV-Überschuss<1380W, dann setze Ladestärke auf 2 Ampere.
3. Wenn 1380W<=PV-Überschuss<2070W, dann setze Ladestärke auf 3 Ampere.
...
... in 690er-Schritten weiter bis ...
...
16. Wenn 10350W<=PV-Überschuss, dann setze Ladestärke auf 16 Ampere.

Das ist dann zwar IT-technisch nicht wirklich elegant, aber es sollte funktionieren - das manuelle setzten einer Ampere-Ladestärke funktioniert ja...
 
So langsam bin ich von HomeAssistant echt genervt!!!!!
Jetzt wollte ich mir einen Helfer erstellen, der quasi den Stromüberschuss darstellt als "Zustand mehrerer Sensoren" und durch einen einfachen Term definiert wird so in der Art:
"Übriger Strom in W" = "PV-Produktion in W" - ("Hausverbrauch in W" + "Speicherbeladung in W" + "Teslabeladung in W")
Beim "Zustand mehrerer Sensoren" kann man aber keine Differenz geschweige denn einfach Terme angeben - was soll das denn??? So etwas ging ja schon in Basic am C64...

Irgendwie ist die ganze Sache ZIEMLICH UNFLEXIBEL wenn selbst das Übergeben von Integerwerten eine eigene Wissenschaft für sich ist!!!🤮
 
HA ist nicht unflexibel, sondern in einigen Punkten nicht zwangsläufig einfach für Einsteiger.
Was du vorhast benötigt einen selbstgeschriebenen Template-Sensor. Das passiert auf YAML-Ebene, nicht via GUI.
 
Ich habe es jetzt so gelöst, dass ich 16 Bereiche für die überschüssige PV-Leistung festgelegt habe und für jeden Bereich eine eigene Automatisierung angelegt habe. Jede Minute wird geprüft, ob sich die PV-Leistung innerhalb der jeweiligen Bereiche befindet - wenn ja, dann wird die passende Ampere-Leistung (von 1 bis 16) im Tesla eingestellt. Das ist natürlich programmiertechnisch nicht gerade eine elegante Lösung, aber sie funktioniert.
 
Ich habe es jetzt so gelöst, dass ich 16 Bereiche für die überschüssige PV-Leistung festgelegt habe und für jeden Bereich eine eigene Automatisierung angelegt habe. Jede Minute wird geprüft, ob sich die PV-Leistung innerhalb der jeweiligen Bereiche befindet - wenn ja, dann wird die passende Ampere-Leistung (von 1 bis 16) im Tesla eingestellt. Das ist natürlich programmiertechnisch nicht gerade eine elegante Lösung, aber sie funktioniert.
Würdest du dein Code hier teilen, zum einen hätten andere auch etwas davon, zum zweiten könnte man mal drüber schauen und eventuell optimieren.
 
Klar kann ich den Code teilen - auch wenn es mir ein bisschen peinlich ist, dass ich es so umständlich umgesetzt habe:
YAML:
sensor:
  - platform: template
    sensors:
      pv_ueberschuss_tesla_ladend:
        unit_of_measurement: W
        value_template: >-
          {{ ((states('sensor.senec_solar_generated_power')|float(0))|round(0)) - ((states('sensor.senec_house_power')|float(0))|round(0)) + (((states('number.hermanns_tesla_charging_amps')|float(0))|round(0))*690) }}
### die abgegebene Leistung der Wallbox wird beim normalen Hausverbrauch mitgezählt, deshalb ziehe ich die im Tesla errechnete Ladeleistung ab
YAML:
- id: '1682446544128'
  alias: Tesla-PV-Laden-06A  ## das ist die Automatisierung für Laden mit 6Ampere
  description: ''
  trigger:
  - platform: time_pattern
    minutes: /1                   ## minütige Kontrolle
  condition:
  - condition: state
    entity_id: input_boolean.pv_laden   
    state: 'on'                            ## Schalter PV-Laden muss an sein
  - condition: numeric_state
    entity_id: sensor.senec_battery_charge_percent
    below: 80                                         ## Hausspeicher muss unter 80% sein
  - condition: state
    entity_id: device_tracker.hermanns_tesla_location_tracker
    state: home              ## Auto muss daheim sein
  - condition: numeric_state
    entity_id: sensor.pv_ueberschuss_tesla_ladend       
    below: 5640          ## Bereich, in dem der PV-Überschuss sein muss
    above: 4949
  action:
  - device_id: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    domain: number
    entity_id: number.hermanns_tesla_charging_amps
    type: set_value
    value: 6                                  ## setze im Auto manuell 6 Ampere Ladeleistung
  mode: single

Der Bereich zwischen 5640W und 4949W ist so gewählt, dass bei 6 Ampere dreiphasigem Laden noch etwas mehr als 1000W übrig bleiben, die dann automatisch in den Hausspeicher gehen.
So bald der Ladestand des Hausspeichers >= 80% ist, dann wird nur noch ins Auto geladen.

Insgesamt sind es 16 solche Automatisierungen, die alle gleich sind nur die Bereiche für die PV-Überschussleistung und die gesetzte Ampere-Ladeleistung sind jeweils angepasst.
Wie gesagt - nicht schön aber funktioniert.
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
4.666
Beiträge
47.656
Mitglieder
4.312
Neuestes Mitglied
Harway2007
Zurück
Oben