ich möchte über den Controller “io.openems.edge.controller.io.heatingelement” mehrere Heizelemente ansteuern.
So wie ich die Logik verstehe, wäre es so, dass erst alle drei Phasen des ersten Elements und dann alle drei Phasen des zweiten Elements geschaltet werden, oder?
Gibt es eine Möglichkeit, dass nach folgender Logik geschaltet wird?
dazu müsstest du dir den Controller Heating Element so anpassen, dass er statt 3 Relays eben 6 Relays steuert
Dann sollte das kein Problem darstellen.
Ich könnte mir vorstellen, die Config so zu bearbeiten:
package io.openems.edge.controller.io.heatingelement;
import org.osgi.service.metatype.annotations.AttributeDefinition;
import org.osgi.service.metatype.annotations.ObjectClassDefinition;
import io.openems.edge.controller.io.heatingelement.enums.Level;
import io.openems.edge.controller.io.heatingelement.enums.Mode;
import io.openems.edge.controller.io.heatingelement.enums.WorkMode;
@ObjectClassDefinition(//
name = "Controller IO Heating Element", //
description = "Controls a three-phase heating element via Relays, according to grid active power")
@interface Config {
@AttributeDefinition(name = "Component-ID", description = "Unique ID of this Component")
String id() default "ctrlIoHeatingElement0";
@AttributeDefinition(name = "Alias", description = "Human-readable name of this Component; defaults to Component-ID")
String alias() default "";
@AttributeDefinition(name = "Is enabled?", description = "Is this Component enabled?")
boolean enabled() default true;
@AttributeDefinition(name = "Mode", description = "Set the type of mode.")
Mode mode() default Mode.AUTOMATIC;
@AttributeDefinition(name = "Output Channel Phase L1", description = "Channel address of the Digital Output for Phase L1")
String outputChannelPhaseL1() default "io0/Relay1";
@AttributeDefinition(name = "Output Channel Phase L2", description = "Channel address of the Digital Output for Phase L2")
String outputChannelPhaseL2() default "io0/Relay2";
@AttributeDefinition(name = "Output Channel Phase L3", description = "Channel address of the Digital Output for Phase L3")
String outputChannelPhaseL3() default "io0/Relay3";
@AttributeDefinition(name = "Output Channel Phase L4", description = "Channel-Adresse für Phase L4")
String outputChannelPhaseL4() default "io0/Relay4";
@AttributeDefinition(name = "Output Channel Phase L5", description = "Channel-Adresse für Phase L5")
String outputChannelPhaseL5() default "io0/Relay5";
@AttributeDefinition(name = "Output Channel Phase L6", description = "Channel-Adresse für Phase L6")
String outputChannelPhaseL6() default "io0/Relay6";
@AttributeDefinition(name = "Phasenreihenfolge", description = "Kommagetrennte Liste der Phasen in der gewünschten Aktivierungsreihenfolge")
String phaseOrder() default "L1,L2,L3,L4,L5,L6";
@AttributeDefinition(name = "Default Level", description = "Default-Level in manuellen Modi und als Mindestwert in AUTOMATIC")
Level defaultLevel() default Level.LEVEL_1;
@AttributeDefinition(name = "End Time", description = "End time for minimum run time")
String endTime() default "17:00";
@AttributeDefinition(name = "Work-Mode Time or None", description = "Sets the Work-Mode to Time (= run at least Minimum Time) or None (only run on excess power)")
WorkMode workMode() default WorkMode.TIME;
@AttributeDefinition(name = "Minimum Time [h]", description = "For Work-Mode 'Time': Minimum Time in hours for activating 'Levels'")
int minTime() default 1;
@AttributeDefinition(name = "Power per Phase", description = "Power of one single phase of the heating element in [W]")
int powerPerPhase() default 2000;
@AttributeDefinition(name = "Minimum switching time between two states", description = "Minimum time (Seconds) is applied to avoid continuous switching on threshold")
int minimumSwitchingTime() default 60;
String webconsole_configurationFactory_nameHint() default "Controller IO Heating Element [{id}]";
}