Ankündigung

Einklappen
Keine Ankündigung bisher.

LBS (Logikbausteine): Updates und Changelogs

Einklappen
Das ist ein wichtiges Thema.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • gaert
    antwortet
    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.

    Einen Kommentar schreiben:


  • panzaeron
    antwortet
    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

    Einen Kommentar schreiben:


  • panzaeron
    antwortet
    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.

    Einen Kommentar schreiben:


  • gaert
    antwortet
    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 &ne;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 &ne;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 &ne;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.

    Einen Kommentar schreiben:


  • wintermute
    antwortet
    19000153, Zeitformatierung/Addition, Version 0.5:
    -Locale und Zeitzonen Einstellungen entfernt
    -Log-Ausgaben eingedeutscht

    https://service.knx-user-forum.de/?c...ad&id=19000153

    Einen Kommentar schreiben:


  • wintermute
    antwortet
    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

    Einen Kommentar schreiben:


  • wintermute
    antwortet
    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

    Einen Kommentar schreiben:


  • Winni
    antwortet
    LBS19000335 v0.1beta Codeschloss *NEU* (nur ab 1.32 wegen LOG-Files)
    LBS19000336 v0.1 DPT5.001 Hilfe 0...100% von 0...255 *NEU* für die, die nicht alles in der VISU umschlüsseln wollen
    LBS19000337 v0.1 Betriebsstundenzähler *NEU*

    Einen Kommentar schreiben:


  • wintermute
    antwortet
    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

    Einen Kommentar schreiben:


  • panzaeron
    antwortet
    LBS19000120 v1.2 Fensterstatus erweitert auf zwei Flügel

    Einen Kommentar schreiben:


  • wintermute
    antwortet
    Zitat von vento66 Beitrag anzeigen
    Dann schau Dir doch mal wunderground.com an.
    Sieht auch nett aus o\
    Ist das nicht dieselbe Quelle die auch von KODI benutzt wird? Zwecks Parallelisierung der Linienfuehrung wuerde ich es naemlich begruessen wenn nicht alle verfuegbaren Informationsquellen im Haus eine andere Vorstellung vom Wetter haetten. Man kennt das ja:
    Ein Mann mit einer Uhr weiss, wie spaet es ist. Ein Mann mit zwei Uhren ist dauernd im Zweifel

    EDIT: tolle Quelle, werde darauf umsteigen, thx!
    Zuletzt geändert von wintermute; 25.04.2016, 16:53.

    Einen Kommentar schreiben:


  • Winni
    antwortet
    LBS19000334 v0.1 Rolladenposition extern *NEU* für alle deren Aktoren keine Position zurückgeben. (nur ab 1.32 wegen LOG-Files)
    LBS19000332 v0.15 Min/Max Funktion mit Zeitstempel einige Korrekturen, ich hoffe es funktioniert nun besser
    LBS19000330 v0.2 Alarm (mit Ausgabe der verbleibenden Zeit) einige neue Optionen, wer ihn schon benutzt sollte die Init-Werte anpassen, damit das Verhalten gleich bleibt

    Einen Kommentar schreiben:


  • vento66
    antwortet
    Dann schau Dir doch mal wunderground.com an. dort gibt es auch eine API https://www.wunderground.com/weather/api/d/docs. Die nutze ich für die HS-Webabfragen.

    Einen Kommentar schreiben:


  • wintermute
    antwortet
    Zitat von coliflower Beitrag anzeigen
    Was sind aus deiner Sicht die Vorteile ggü. wetter.com ?
    Mehr und IMHO genauere Werte, keine Werbung, kein Logozwang... allerdings fehlt mir da die Regenwahrscheinlichkeit, also muss ich vermutlich eh beide benutzen

    Einen Kommentar schreiben:


  • coliflower
    antwortet
    Zitat von wintermute Beitrag anzeigen
    … (BTW: Ich weiss nicht genau ob ich diese Bausteine-"Serie", also wetter.com bezogene Bausteine, weiter pflegen werde, da ich mich momentan mit OpenWeatherMap beschaeftige und mir das eher zusagt)
    Was sind aus deiner Sicht die Vorteile ggü. wetter.com ?

    Einen Kommentar schreiben:

Lädt...
X