Zitat von gaert
Beitrag anzeigen
Ankündigung
Einklappen
Keine Ankündigung bisher.
Frage zum Werks-LBS 17000210 - Virtuelle Leuchte
Einklappen
X
-
So in etwa. Ich verwende es schon, aber tatsächlich nur zu anzeigezwecken (Visu, etc.).EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)
Kommentar
-
Zitat von gaert Beitrag anzeigenSo in etwa. Ich verwende es schon, aber tatsächlich nur zu anzeigezwecken (Visu, etc.).
EDIT: Weitere Frage: Wie wird die virtuelle Leuchte bei EDOMI Start idealerweise initialisiert? E1-E5 als remanent definieren? Oder den Status der Leuchte per InitScan vom KNX abfragen und auf E2 senden?Zuletzt geändert von jonofe; 27.07.2016, 21:19.
Kommentar
-
Sowohl als auchIch nutze die Statusausgänge für LEDs an den Tastern und das Status-KO wird in der Visu genutzt. Ist eigentlich Quatsch - ich setze gerade alles komplett neu auf und werde vermutlich nur die Statusausgänge nutzen. Ist zwar theoretisch etwas unsicher, da ein Telegramm prinzipiell verloren gehen könnte oder so - aber was soll's
Beim Start nutze ich die Status-KOs (Initscan), um die virtuellen KOs zu initialisieren: Die Logik arbeitet nach dem Motto "IF (KO==leer) {KO=Status-KO}". Natürlich könnte man die virtuellen KOs auch einfach remanent konfigurieren, da ich ja ohnehin alle Lampen ausschließlich via EDOMI schalte. Aber so ist's flexibler, falls sich in Zukunft doch mal etwas anderes ergeben sollte.EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)
Kommentar
-
Zitat von gaert Beitrag anzeigenSowohl als auchIch nutze die Statusausgänge für LEDs an den Tastern und das Status-KO wird in der Visu genutzt. Ist eigentlich Quatsch - ich setze gerade alles komplett neu auf und werde vermutlich nur die Statusausgänge nutzen. Ist zwar theoretisch etwas unsicher, da ein Telegramm prinzipiell verloren gehen könnte oder so - aber was soll's
Zitat von gaert Beitrag anzeigenBeim Start nutze ich die Status-KOs (Initscan), um die virtuellen KOs zu initialisieren: Die Logik arbeitet nach dem Motto "IF (KO==leer) {KO=Status-KO}". Natürlich könnte man die virtuellen KOs auch einfach remanent konfigurieren, da ich ja ohnehin alle Lampen ausschließlich via EDOMI schalte. Aber so ist's flexibler, falls sich in Zukunft doch mal etwas anderes ergeben sollte.Die Logikarbeitet nach dem Motto "IF (KO==leer) {KO=Status-KO}"
Ich würde ein Read auf den KNX Status des Schaltkanals machen und dann diesen Wert per Ausgangsbox in das interne KO schreiben, welches auf E2 der virtuellen Leuchte liegt.
Könnte dadurch ein kurzen Aus- und wieder Einschalten beim Start von EDOMI passieren, je nach dem in welcher Reihenfolge die LBS abgearbeitet werden? Wenn zuerst die virtuelle Leuchte abgearbeitet wird geht die Leuchte aus, danach wird dann das Mapping der KNX Status GA auf das interne KO gemacht und die Leuchte geht wieder an.
Kommentar
-
Ganz einfach: Ich habe hierfür einen LBS (spezielle Ausgangsbox) erstellt - der ist aber noch nicht öffentlichKommt im nächsten Update.
Hier der Code (12000014):
PHP-Code:###[DEF]###
[name =Ausgangsbox: Initialisierung ]
[e#1 =Wert ≠[leer] ]
[e#2 =Vergleichswert [leer] ]
###[/DEF]###
###[HELP]###
Dieser Baustein führt beliebige Befehle aus, dient jedoch vorrangig zur Initialisierung von (leeren) Kommunikationsobjekten.
Getriggert wird der Baustein durch ein beliebiges Telegramm ≠[leer] an E1: Die Befehle werden jedoch nur ausgeführt, wenn E2=[leer] ist.
An E2 sollte typischer Weise ein KO anliegen, das mit dem Befehl "KO: Eingangswert (E1 oder E2) zuweisen" ggf. auf den Wert an E1 gesetzt werden soll.
<b>Anwendungsbeispiel:</b>
Ein interes KO soll beim Start einmalig(!) auf den Wert einer KNX-GA (z.B. Status-GA) gesetzt werden, um diese KO-Werte abzugleichen. An E1 liegt die KNX-GA an, an E2 das interne KO (das zunächst leer ist).
Als Befehl wird "KO: Eingangswert (E1 oder E2) zuweisen" hinzugefügt und mit dem internen KO verknüpft.
Beim Start wird nun die Status-GA per Initscan abgefragt (sofern konfiguriert) und der Baustein wird getriggert. Da das interne KO noch leer ist, ist die Bedingung erfüllt und der Befehl wird ausgeführt: Das interne KO erhält nun den Wert der Status-GA.
<b>Hinweis:</b>
Bei diesem Baustein wird nur der Wert an E1 an die entsprechenden Befehle übergeben. Bei einigen Befehlen wird jedoch "E1 oder E2" erwähnt - dies ist für diesen Baustein gleichbedeutend mit "E1" und entsprechend zu ignorieren.
E1: Wert: jedes Telegramm ≠[leer] triggert den Baustein und führt zur Ausführung der zugewiesenen Befehle, sofern der Wert an E2 =[leer] ist
E2: Vergleichswert: die Befehle werden nur ausgeführt, wenn der Vergleichswert an E2 =[leer] ist (i.d.R. ein leeres KO)
###[/HELP]###
###[LBS]###
<?
function LB_LBSID($id) {
if ($E=logic_getInputs($id)) {
if (!isEmpty($E[1]['value']) && $E[1]['refresh']==1 && isEmpty($E[2]['value'])) {
executeLogicCmdList($id,$E[1]['value']);
}
}
}
?>
###[/LBS]###
###[EXEC]###
<?
?>
###[/EXEC]###EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)
Kommentar
-
Zur Erläuterung:
E1 = Status-KO (wird per Initscan abgefragt beim Start)
E2 = virtuelles KO
Befehl: "KO: Eingangswert zuweisen" - hier natürlich das virtuelle KO angeben
Beim Start wird nun das Status-KO abgefragt und antwortet irgendwann in der Initphase. Nach(!) dem Initscan werden die LBS initialisiert und somit auch diese Ausgangsbox: Jetzt erst wird das virtuelle KO auf den Wert des Status-KOs gesetzt - das virtuelle KO muss jedoch leer sein (also nicht remanent oder sonstwie "gefüllt").EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)
Kommentar
-
Cool. Das macht es deutlich einfacher.
Kann man denn sicherstellen, dass dieser Initialisierungs-LBS vor der virtuellen Leuchte ausgeführt wird? Ansonsten könnte doch ein kurzes Blinken der Leuchte entstehen, wenn diese bei EDOMI Neustart eingeschaltet war, oder?
EDIT: Denn Hauptschalter=1 triggert doch A1, oder? Bei mird zumindest die Leuchte bei nicht remanentem E2 beim Neustart von EDOMI ausgeschaltet. (hier ohne irgendein INITSCAN)Zuletzt geändert von jonofe; 27.07.2016, 22:09.
Kommentar
-
Bevor Du jetzt den LBS 1000 mal einsetzt: Ich arbeite zur Zeit an einem ähnlichen LBS, der ausschließlich diesen Zweck erfüllt und den Umweg über die "Befehle" nicht erfordert. Also bitte erstmal abwarten
Der Hauptschalter=1 führt zu einer Neuberechnung, d.h. A1 wird entsprechend gesetzt (also ggf. wird die Lampe ausgeschaltet, falls keine EIN-Werte irgendwo anliegen).
In der Tat könnte ein kurzes Aus/Ein (oder umgekehrt) beim Start erfolgen, denn die Reihenfolge ist quasi nicht vorhersehbar. Ich bin selbst noch in der Experimentierphase in dieser AngelegenheitEDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)
Kommentar
-
So - dies ist der neue LBS (die Ausgangsbox 12000014 werde ich wieder löschen - oder zusätzlich mal "drin" lassen...):
PHP-Code:###[DEF]###
[name =KO-Initialisierung ]
[e#1 =Wert≠[leer] ]
[e#2 =KO ]
###[/DEF]###
###[HELP]###
Dieser Baustein dient der Initialisierung eines (leeren) Kommunikationsobjekts.
Getriggert wird der Baustein durch ein beliebiges Telegramm ≠[leer] an E1.
Sofern an E2 ein Kommunikationsobjekt anliegt, wird dieses KO auf den Wert an E1 gesetzt - das KO muss jedoch [leer] sein. Ist das KO nicht [leer] wird es nicht verändert.
<b>Anwendungsbeispiel:</b>
Ein interes KO soll beim Start einmalig(!) auf den Wert einer KNX-GA (z.B. Status-GA) gesetzt werden, um diese KO-Werte abzugleichen. An E1 liegt die KNX-GA an, an E2 das interne KO (das zunächst leer ist).
Beim Start wird nun die Status-GA per Initscan abgefragt (sofern konfiguriert) und der Baustein wird getriggert. Da das interne KO noch leer ist, ist die Bedingung erfüllt und das interne KO erhält nun den Wert der Status-GA.
<b>Wichtig:</b>
Dieser Baustein verfügt über keinerlei Ausgänge, jedoch wird das Kommunikationsobjekt an E2 ggf. auf einen Wert gesetzt!
E1: Wert: jedes Telegramm ≠[leer] triggert den Baustein und setzt das KO an E2 auf diesen Wert, sofern das KO an E2 [leer] ist
E2: KO: dieses Kommunikationsobjekt wird auf den Wert an E1 gesetzt, sofern das KO [leer] ist
###[/HELP]###
###[LBS]###
<?
function LB_LBSID($id) {
if ($E=logic_getInputs($id)) {
if (!isEmpty($E[1]['value']) && $E[1]['refresh']==1 && isEmpty($E[2]['value'])) {
//KO-ID an E2 ermitteln und KO setzen:
$ss1=sql_call("SELECT linkid FROM edomiLive.RAMlogicLink WHERE (elementid=".$id." AND eingang=2 AND linktyp=0 AND linkid>0)");
if ($n=sql_result($ss1)) {
executeCmd(1,$n['linkid'],null,$E[1]['value']);
}
sql_close($ss1);
}
}
}
?>
###[/LBS]###
###[EXEC]###
<?
?>
###[/EXEC]###EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)
Kommentar
-
Zitat von gaert Beitrag anzeigenSo - dies ist der neue LBS (die Ausgangsbox 12000014 werde ich wieder löschen - oder zusätzlich mal "drin" lassen...):
Kommentar
-
12000100 wird's wohl werden.
Mit dieser Ausgangsbox (12000014) könnte man noch ganz andere Dinge anstellen, daher lasse ich die wohl mal drin. Schadet ja nichtEDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)
Kommentar
-
Zitat von gaert Beitrag anzeigen
In der Tat könnte ein kurzes Aus/Ein (oder umgekehrt) beim Start erfolgen, denn die Reihenfolge ist quasi nicht vorhersehbar.
Kommentar
-
Schon, aber der Init-LBS (12000100) setzt das KO ja nur, wenn es leer istSonst gäbe es ja u.U. eine Schleife... (das Status-KO wird ja ständig vom Aktor gesetzt und würde somit auch das interne KO jedesmal setzen - dieses wiederum würde den Licht-LBS triggern und dieser ggf. den Aktor...)
Oder meinst Du gänzlich ohne den Init-LBS? Das geht natürlich! Nur dann wird das reale Status-KO natürlich vollkommen ignoriert.
Den Init-LBS bevorzugt zu behandeln während der Initialisierung ist zwar prinzipiell möglich, aber nicht konsistent: Der LBS könnte ja auch irgendwo in einer Logik integriert sein (macht zwar in diesem Fall wenig Sinn, aber möglich wäre es).EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)
Kommentar
-
Zitat von gaert Beitrag anzeigenSchon, aber der Init-LBS (12000100) setzt das KO ja nur, wenn es leer istSonst gäbe es ja u.U. eine Schleife... (das Status-KO wird ja ständig vom Aktor gesetzt und würde somit auch das interne KO jedesmal setzen - dieses wiederum würde den Licht-LBS triggern und dieser ggf. den Aktor...)
Ohne Remantes KO gehts bei mir immer aus und dann wieder an.
Könnte man das AUS/EIN Blinken ggf damit beheben, dass der "Virtuelle Leuchte LBS" bei Hauptschalter=1 den Ausgang nur dann setzt, wenn der Ausgang schon einen Wert ungleich leer enthält?
Kommentar
Kommentar