[FEMS] Auto per Wallbox nicht aus Speicher laden

Was bedeutet denn für dich “auf evcs power einstelle” ?

Grüße

Hei,

habe den controller so angepasst:

protected static int calculateRequiredPower(int essPower, int gridPower, int evcsPower) {
		return gridPower + essPower - evcsPower;
	}

Und in der “run methode” gebe ich hier einfach das evcs mit und fertig.

/*
		 * Calculates required charge/discharge power
		 */
		var calculatedPower = calculateRequiredPower(//
				this.ess.getActivePower().getOrError(), //
				this.meter.getActivePower().getOrError(), //
				this.evcs.getActivePower().getOrError());

Vermutlich muss man hier noch diverse Anpassungen vornehmen, damit PV überschuss auch berücksichtigt wird, aber sonst entspricht das genau der Anforderung des Threads :smiley:

Beste Grüße
Beton

Und was ist, wenn keine evcsPower vorhanden ist?

Servus,

guter Einwand!

So sollts gehen:

if(this.evcs.getStatus().getName() == "Charging") {
			/*
			 * Calculates required charge/discharge power
			 */
			var calculatedPower = calculateRequiredPower(
					this.ess.getActivePower().getOrError(),
					this.meter.getActivePower().getOrError(),
					this.evcs.getActivePower().getOrError());

			/*
			 * set result
			 */
			this.ess.setActivePowerEqualsWithPid(calculatedPower);
			this.ess.setReactivePowerEquals(0);
		}
		else {
			/*
			 * Calculates required charge/discharge power
			 */
			var calculatedPower = calculateRequiredPower(
					this.ess.getActivePower().getOrError(),
					this.meter.getActivePower().getOrError(),
					0);

			/*
			 * set result
			 */
			this.ess.setActivePowerEqualsWithPid(calculatedPower);
			this.ess.setReactivePowerEquals(0);
		}

Beste Grüße
Beton

so is es schöner oder?

evcsPower = 0;
		
		if(this.evcs.getStatus().getName() == "Charging") {
			evcsPower = this.evcs.getActivePower().getOrError();
		}
			/*
			 * Calculates required charge/discharge power
			 */
			var calculatedPower = calculateRequiredPower(
					this.ess.getActivePower().getOrError(),
					this.meter.getActivePower().getOrError(),
					evcsPower);

			/*
			 * set result
			 */
			this.ess.setActivePowerEqualsWithPid(calculatedPower);
			this.ess.setReactivePowerEquals(0);

Ich habe diese Logik mittels der ha_openems Integration und 2er Automatisierungen in Home Assistant wie folgt realisiert:

  1. Reserve aktiv solange Auto lädt
alias: "[ctrlEvcs]: Reserve aktiv solange Auto lädt"
description: Reserve aktiv solange Auto lädt
triggers:
  - trigger: state
    entity_id:
      - sensor.fems12345_evcs0_status
actions:
  - if:
      - condition: state
        entity_id: sensor.fems12345_evcs0_status
        state: Charging
    then:
      - action: switch.turn_on
        target:
          entity_id: switch.fems12345_ctrlemergencycapacityreserve0_isreservesocenabled
    else:
      - action: switch.turn_off
        target:
          entity_id: switch.fems12345_ctrlemergencycapacityreserve0_isreservesocenabled
  1. Während Auto lädt Speicher Reserve auf Ladestand setzen
alias: "[ctrlEvcs]: Während Auto lädt Speicher Reserve auf Ladestand setzen"
description: Während Auto lädt Speicher Reserve auf Ladestand setzen
triggers:
  - trigger: time_pattern
    minutes: "*"
conditions:
  - condition: state
    entity_id: sensor.fems12345_evcs0_status
    state: Charging
actions:
  - action: number.set_value
    data_template:
      value: "{{ states('sensor.fems12345_sum_esssoc') }}"
    target:
      entity_id: number.fems12345_ctrlemergencycapacityreserve0_reservesoc