Ankündigung
Einklappen
Keine Ankündigung bisher.
LBS (Logikbausteine): Updates und Changelogs
Einklappen
Das ist ein wichtiges Thema.
X
X
-
19000153, Zeitformatierung/Addition, Version 0.4:
-Möglichkeit zum Addieren/Subtrahieren von Werten
-Umstellung auf Custom Logging (es wird eine Edomi Version >= 1.32 benötigt)
https://service.knx-user-forum.de/?c...ad&id=19000153
Kommentar
-
19000151, Sonnenstand, Version 0.4:
-auf Custom-Logs umgestellt (daher wird eine Edomi Version >=1.32 benötigt)
-Zeitzonen-Eingang entfernt
-Log-Level Eingang zugefügt
https://service.knx-user-forum.de/?c...ad&id=19000151
Kommentar
-
19000152, Zeitvergleich, Version 0.3:
-auf Custom-Logs umgestellt (daher wird eine Edomi Version >=1.32 benötigt)
-Zeitzonen-Eingang entfernt
-Log-Level Eingang zugefügt
https://service.knx-user-forum.de/?c...ad&id=19000152
Kommentar
-
19000153, Zeitformatierung/Addition, Version 0.5:
-Locale und Zeitzonen Einstellungen entfernt
-Log-Ausgaben eingedeutscht
https://service.knx-user-forum.de/?c...ad&id=19000153
Kommentar
-
Passt hier zwar nicht so wirklich hin, aber ich habe einen "Schaltfolge"-LBS entwickelt. Dieser wird als 13000026 im nächsten Update verfügbar sein - wer ihn schon jetzt testen möchte...
Anwendung z.B. zum Toggeln von 2 Szenen (per Tastsensor: Drücken=Szene "Ein", nochmal drücken=Szene "Aus").
EDIT:
E3 und E4 hinzugefügt
PHP-Code:###[DEF]###
[name =Schaltfolge 1..10-fach ]
[e#1 =Trigger ≠0 ]
[e#2 =Ausgänge 1..10 #init=1 ]
[e#3 =Wert Aus #init=0 ]
[e#4 =Wert Ein #init=1 ]
[a#1 =A1 ]
[a#2 =A2 ]
[a#3 =A3 ]
[a#4 =A4 ]
[a#5 =A5 ]
[a#6 =A6 ]
[a#7 =A7 ]
[a#8 =A8 ]
[a#9 =A9 ]
[a#10 =A10 ]
[v#1 =0 ]
###[/DEF]###
###[HELP]###
Bei jedem Triggern des Bausteins wird ein Ausgang auf den Wert an E4 und der vorherige Ausgang auf den Wert an E3 gesetzt.
Jedes neue Telegramm ≠0 an E1 triggert den Baustein. An E2 muss die Anzahl der gewünschten Ausgänge im Bereich von 1..10 angegeben werden.
Beispiel:
Die Anzahl der Ausgänge beträgt 3 (E2=3). E3 ist 0, E4 ist 1.
Bei ersten Triggern des Bausteins (E1) wird A1=1 gesetzt. Bei nächsten Triggern wird A1=0 und A2=1 gesetzt. Beim nächsten Triggern wird A2=0 und A3=1 gesetzt.
Erfolgt nun ein weiteres Triggern, wird A3=0 und A1=1 gesetzt - der Zyklus beginnt also von vorn.
Die Schaltfolge ist demnach:
1. Trigger: A1=1
2. Trigger: A2=1, A1=0
3. Trigger: A3=1, A2=0
4. Trigger: A1=1, A3=0 (der Zyklus beginnt von vorn)
...
Sonderfall: Die Anzahl der Ausgänge beträgt 1 (E2=1). E3 ist 0, E4 ist 1.
In diesem Fall wird A1 "getoggelt", d.h. A1 wechselt bei jedem Triggern des Bausteins zwischen 1 und 0:
1. Trigger: A1=1
2. Trigger: A1=0
3. Trigger: A1=1
...
Wenn die Anzahl der Ausgänge (E2) mit einen ungültigen Wert definiert ist, ignoriert der Baustein jeden Trigger und belässt alle Ausgänge unverändert.
E1: Trigger (jedes neue Telegramm ≠0 triggert den Baustein)
E2: Anzahl der Ausgänge (1..10)
E3: Wert für "Aus": Der vorherige Ausgang wird auf diesen Wert gesetzt. Ist E3=[leer] wird der Ausgang nicht verändert.
E4: Wert für "Ein": Der aktuelle Ausgang wird auf diesen Wert gesetzt. Ist E4=[leer] wird der Ausgang nicht verändert.
A1..A10: Ausgänge (wechseln zwischen Wert an E3 und Wert an E4)
###[/HELP]###
###[LBS]###
<?
function LB_LBSID($id) {
if ($E=getLogicEingangDataAll($id)) {
if ($E[1]['value']!=0 && $E[1]['refresh']==1 && $E[2]['value']>=1 && $E[2]['value']<=10) {
$V1=getLogicElementVar($id,1);
if ($E[2]['value']==1) {
//Sonderfall: Nur A1 toggeln
if ($V1==0) {
$V1=1;
if (!isEmpty($E[4]['value'])) {setLogicLinkAusgang($id,1,$E[4]['value']);}
} else {
$V1=0;
if (!isEmpty($E[3]['value'])) {setLogicLinkAusgang($id,1,$E[3]['value']);}
}
} else {
if ($V1>0 && !isEmpty($E[3]['value'])) {setLogicLinkAusgang($id,$V1,$E[3]['value']);}
if ($V1<$E[2]['value']) {$V1++;} else {$V1=1;}
if (!isEmpty($E[4]['value'])) {setLogicLinkAusgang($id,$V1,$E[4]['value']);}
}
setLogicElementVar($id,1,$V1);
}
}
}
?>
###[/LBS]###
###[EXEC]###
<?
?>
###[/EXEC]###Zuletzt geändert von gaert; 29.04.2016, 08:10.EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)
Kommentar
-
LBS19000122 v1.7 Steuerung von VLC- Fehler bei Talk Over behoben, unter manchen (seltenen) Bedingungen wurde die Talk Over URL nicht wieder aus der Playlist entfernt.
- Wenn die Wiedergabe nicht läuft, wird bei Talk Over die Wiedergabe der URL erst nach 4s gestartet, damit eine Verstärker ggf. eingeschaltet werden kann.
- Es kann jetzt eine Default-Lautstärke für Talk Over Meldungen vorgegeben werden, dadurch verschieben sich die ersten Eingänge und müssen angepasst werden.
- Die Lautstärke wird mit 1s Verzögerung auf den Bus gegeben, vorher wurden alle Werte weitergegeben was eine kontrollierte Einstellung sehr schwierig machte, da VLC zu träge reagiert. Jetzt wird nur der letzte Wert nach 1s an VLC gesendet, die vorherigen werden verworfen.
- Log-Datei auf das neue CustomLog überführt, normalerweise aus (0).
- Beispiel Startscript (/etc/init.d/vlc) überarbeitet, aus der VLC-Konfigurationsdatei werden jetzt die Start-Playlist und PID-Datei ausgelesen und verwendet.
Kommentar
-
LBS19000121 V1.1 Steuerung eines Rollladens in Abhängigkeit verschiedener Bedingungen- Eine Ansteuerung des Rollladens/Jalousie bei Änderung der Fensterposition erfolgt erst nach 1s, da ein Wechsel von geschlossen, über gekippt nach drehgeöffnet zu kurzen Bewegungen des Behangs führte
- Sperrzeit bei manueller Bedienung der Rollläden/Jalousie kann jetzt angegeben werden, während der Sperre haben Automatik-Befehle keine Auswirkung, Alarm-Befehle werden aber immer ausgeführt
- Verschiedene weitere Optimierungen
Kommentar
-
Und noch einer - wird als LBS 15000100 demnächst Einzug halten: Der LBS ermittelt quasi die "Unruhe" eines Signals, d.h. ähnlich einem Watchdog-Baustein wird ein (gewichteter) Wert aufaddiert und zyklisch reduziert. Das Ergebnis ist ein Maß der "Unruhe/Entropie" eines Ereignisses, z.B. eines BWMs.
EDIT: Neue Version
PHP-Code:###[DEF]###
[name =Entropie (Unruhe) ]
[e#1 =Signal >0 ]
[e#2 =Intervall (s) #init=30 ]
[e#3 =Reduktion #init=1 ]
[e#4 =Reset ]
[a#1 =Entropie ]
[v#1 =0 ] Timer
[v#2 =0 ] Zählerstand
[v#3 =0 ] SBC
###[/DEF]###
###[HELP]###
Dieser Baustein ermittelt ein Maß für die "Unruhe" (Entropie) eines Signals.
Jedes neues Telegramm >0 an E1 startet den Baustein, bzw. triggert den Baustein erneut.
Der Wert an E1 gibt dabei die Gewichtung an: Je größer der Wert, desto "unruhiger" wird das Ergebnis sein.
Nach Ablauf des Intervalls an E2 wird die Summe aller bislang aufgelaufenen Werte um E3 reduziert, d.h. das Ergebnis (A1) wird im Laufe der Zeit immer kleiner ("ruhiger").
Erreicht das Ergebnis den Wert 0, wird der Baustein gestoppt (wird jedoch bei einem erneuten Trigger automatisch wieder gestartet).
Während der Baustein arbeitet, kann über E4 ein Reset ausgelöst werden: Der Baustein stoppt unmittelbar und setzt das Ergbnis auf 0.
Anwendungsbeispiel:
Ein (oder mehrere) Bewegungsmelder triggert E1 bei jeder Bewegung und erhöht somit das Maß der Unruhe. Wird für einen definierten Zeitraum keine Bewegung mehr registriert, erreicht die "Unruhe" den Wert 0. Dies kann z.B. als "Abwesenheit" interpretiert werden.
Hinweis:
Mehrere Trigger (z.B. Bewegungsmelder) mit unterschiedlichen Gewichtungen können z.B. mit einem Baustein "Multiplikation" (Gewichtung) über einen Baustein "Klemme" mit E1 verbunden werden.
E1: Jedes neue Telegramm >0 triggert den LBS. Der Wert an E1 bestimmt zudem die Gewichtung.
E2: Intervall (s): Nach Ablauf dieses Intervalls wird das Ergebnis ("Unruhe") um 1 reduziert
E3: Dieser Wert wird zu jedem Intervall (E2) vom internen Zählerstand abgezogen
E4: Ein neues Telegramm ≠0 setzt den (laufenden) Baustein zurück (A1=0)
A1: Ergebnis 0..oo als Maß der "Unruhe": Je größer der Wert, desto "unruhiger". Achtung: A1 wird nur bei Änderung gesetzt (SBC)!
###[/HELP]###
###[LBS]###
<?
function LB_LBSID($id) {
if (($E=getLogicEingangDataAll($id)) && ($V=getLogicElementVarAll($id))) {
if ($E[1]['value']>0 && $E[1]['refresh']==1) {
$V[2]+=$E[1]['value'];
if ($V[2]!=$V[3]) {setLogicLinkAusgang($id,1,$V[2]);}
$V[3]=$V[2];
if (getLogicElementStatus($id)==0) {
$V[1]=getMicrotime()+$E[2]['value'];
setLogicElementStatus($id,1,$E[2]['value']*1000);
}
}
if (getLogicElementStatus($id)!=0) {
if ($E[4]['value']!=0 && $E[4]['refresh']==1) {
$V[1]=0;
$V[2]=0;
}
if (getMicrotime()>=$V[1]) {
$V[1]=getMicrotime()+$E[2]['value'];
$V[2]-=$E[3]['value'];
if ($V[2]>0) {
setLogicElementStatus($id,1,$E[2]['value']*1000);
} else {
$V[2]=0;
setLogicElementStatus($id,0);
}
if ($V[2]!=$V[3]) {setLogicLinkAusgang($id,1,$V[2]);}
$V[3]=$V[2];
}
setLogicElementVar($id,1,$V[1]);
setLogicElementVar($id,2,$V[2]);
setLogicElementVar($id,3,$V[3]);
}
}
}
?>
###[/LBS]###
###[EXEC]###
<?
?>
###[/EXEC]###Zuletzt geändert von gaert; 30.04.2016, 20:25.EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)
Kommentar
-
Update:
- LBS19000304 - Telegram Receiver v0.1.1: Neuer Eingang E6 zum Reset des Bausteins
New:
- LBS19000306 - SSH2 Baustein v0.1: Ausführen von Befehlen auf remote systemen via SSH2 public key authentication
- LBS19000307 - LG TV RS232C: Steuerung eines LG TV mit RS232C Schnittstelle via TCP/IP-RS232-Konverter
Kommentar
-
Vier neue LBS die die Min- und Max-Funktion nachbilden:
- LBS19000125 - Max 4fach 0.1: Ermittelt aus vier Eingangswerten die größte Zahl und gibt diese aus
- LBS19000126 - Max 8fach 0.1: Ermittelt aus acht Eingangswerten die größte Zahl und gibt diese aus
- LBS19000127 - Min 4fach 0.1: Ermittelt aus vier Eingangswerten die kleinste Zahl und gibt diese aus
- LBS19000128 - Min 8fach 0.1: Ermittelt aus acht Eingangswerten die kleinste Zahl und gibt diese aus
Kommentar
-
Neu:
LBS19000370: Asterisk Command
Zur Ausführung von Befehlen auf einem Asterisk Server (VOIP/SIP/ISDN/etc.) via Asterisk Call Manager API
Kommentar
-
Vier neue LBS die grundlegende Berechnungen durchführen. Bei allen vier können einfache Bedingungen angegeben werden, z. B: ">=10", "!=1" oder "<4".
- LBS19000390 - Anzahl 4fach 0.1: Zählt die anliegenden Werte an vier Eingängen.
- LBS19000391 - Anzahl 8fach 0.1: Zählt die anliegenden Werte an acht Eingängen.
- LBS19000392 - Mittelwert 4fach 0.1: Berechnet den Mittelwert aus den anliegenden Werte an vier Eingängen.
- LBS19000393 - Mittelwert 8fach 0.1: Berechnet den Mittelwert aus den anliegenden Werten an acht Eingängen.
Kommentar
Kommentar