diff --git a/doc/Applikationsbeschreibung-FunctionBlocks.md b/doc/Applikationsbeschreibung-FunctionBlocks.md index 9e0c57f..228ed69 100644 --- a/doc/Applikationsbeschreibung-FunctionBlocks.md +++ b/doc/Applikationsbeschreibung-FunctionBlocks.md @@ -14,6 +14,7 @@ Folgende Funktionsblöcke stehen zur Auswahl: * [Wertüberwachung](#wertüberwachtung) * [Count-Down Zeitgeber](#count-down-zeitgeber) * [Blinker](#blinker) + * [Bayes Sensor](#bayes-sensor) * [Text Format](#text-format) @@ -129,6 +130,14 @@ Die jeweilige Ein- bzw. Ausschaltzeit kann in 10/Sekunden, Sekunden, Minuten ode [ETS Konfiguration](#blinker-1) + +## Bayes-Sensor + +Mit einem Bayes-Sensor-Funktionsblock kann auf Basis von Wahrscheinlichkeiten ein binärer Ausgangswert aus mehreren binären Eingangswerten ermittelt werden. + + +[ETS-Konfiguration](#bayes-sensor-1) + ### Text Format ### @@ -192,6 +201,10 @@ Für jeden Kanal kann für einen Funktionsblock konfiguriert werden: Die Anzahl der Blinkintervalle ist konfigurierbar und/oder über ein Gruppenobjekt steuerbar. Die jeweilige Ein- bzw. Ausschaltzeit kann in 10/Sekunden, Sekunden, Minuten oder Stunden festgelegt werden. +- **Bayes Sensor** + Ermittelt einen binären Zustands-Wert aus bis zu 9 Eingangswerten, auf Basis eines Naiven Bayes-Klassifikators. + Der ausgegebene Wert entspricht dem wahrscheinlichsten Zustand bei gleichzeitigem Vorliegen der unabhängigen Eingangswerte. + - **Text Format** Funktionsblock zur Erzeugung von Texten aus verschiedenen Eingangswerten. @@ -206,10 +219,10 @@ Die Bezeichnung wird innerhalb der ETS für die Benennung des Kanals und für di Die Bezeichnung hat keinen Einfluss auf das Verhalten des Funktionsblocks und kann jederzeit auch nachträglich angepasst werden. -### Kanal deaktivieren (zu Testzwecken) +### Suspendiert -Mit dieser Einstellung kann ein Kanal deaktiviert werden, ohne das die Konfigurationswerte und Gruppenadressen an den Kommunikationsobjekten verloren gehen. -Ein deaktivierter Kanal sendet keine Telegramme auf dem KNX-Bus. +Mit dieser Einstellung wird der Kanal wie deaktiviert behandelt, aber die Kommunikationsobjekte und alle Einstellungen bleiben sichtbar. +Dadurch müssen GA-Verknüpfungen nicht entfernt oder erneut hinzugefügt werden beim späteren Reaktivieren. @@ -269,18 +282,13 @@ Wird für die Gruppen-Objektfunktion verwendet und dient zur leichtern Zuordnung ### Initialisierung -Legt den Initialwert für den Eingang fest. -Zur Auswahl stehen: +Legt fest, wie der Eingang nach dem Gerätestart belegt wird: -- **AUS** - Der Eingang wird mit AUS vorbelegt -- **EIN** - Der Eingang wird mit EIN vorbelegt -- **Vom Bus lesen, dann AUS** - Es wird versucht den Eingangswert vom Bus über ein Lesetelegramm zu lesen. +- **AUS** - Der Eingang wird mit AUS vorbelegt +- **EIN** - Der Eingang wird mit EIN vorbelegt +- **Vom Bus lesen, dann AUS** - Es wird versucht den Eingangswert vom Bus über ein Lesetelegramm zu lesen. Wird nach 3 Sekunden keine Antwort empfangen, wird der Eingang mit AUS vorbelegt. -- **Vom Bus lesen, dann EIN** - Es wird versucht den Eingangswert vom Bus über ein Lesetelegramm zu lesen. +- **Vom Bus lesen, dann EIN** - Es wird versucht den Eingangswert vom Bus über ein Lesetelegramm zu lesen. Wird nach 3 Sekunden keine Antwort empfangen, wird der Eingang mit EIN vorbelegt. **Wichtig**: Die Vorbelegung erfolgt vor einer möglichen eingestellten Invertierung des Eingangswertes. @@ -1034,6 +1042,49 @@ Diese Konfiguration ist nur vorhanden, wenn für den Datentype des Ausgangs "5.0 Der Prozentwert der für AUS gesendet wird. + +## Bayes Sensor + +Ermittelt auf Basis von (bedingten) Wahrscheinlichkeiten einen binären Ausgangswert aus mehreren binären Eingangswerten. + + +Dafür müssen für alle Eingangswerte die Wahrscheinlichkeiten für den EIN-Ausgangswert angegeben werden. +Eine Forderung nach stochastischer Unabhängigkeit der Eingänge kann in der Praxis abgeschwächt werden; +solange keine "zu starke" Abhängigkeit besteht, sollen trotzdem nutzbare Ergebnisse geliefert werden. + + +### Prior-Wahrscheinlichkeit P( A ) + +Wahrscheinlichkeit, dass der Zustandswert EIN ist, unabhängig von den Eingangswerten. +Bzw. Zeitanteil. + + +### Schwellwert für binären Ausgang + +Minimale Wahrscheinlichkeit, ab der der Ausgangswert auf EIN gesetzt wird. + + +### Ein-/Ausgangs-Kombination + +Zusätzlich zum binären Ausgangswert kann die zugrunde liegende Wahrscheinlichkeit ausgegeben werden. +Wenn das Wahrscheinlichkeits-KO aktiv ist, dann reduziert die maximale Anzahl der Eingänge auf 8. + + +Optionen: + +* 8 Eingänge + Wahrscheinlichkeits-Ausgang +* 9 Eingänge + + +### P( A | E_i ) + +Wahrscheinlichkeit, dass der Ausgangswert EIN ist, wenn an diesem Eingang der Wert EIN anliegt. + + +### P( A | ~E_i ) + +Wahrscheinlichkeit, dass der Ausgangswert EIN ist, wenn an diesem Eingang der Wert AUS anliegt. + ## Text Format @@ -1043,14 +1094,14 @@ Funktionsblock zur Erzeugung von Texten aus verschiedenen Eingangswerten. ### Format Formatierung der Ausgabe. -Für Parameter werden die Eingänge werden die Platzhalter #1-#9 verwendet. -Um ein '#'-Zeichen darzustellen, müssen ## Rauten eingegeben werden. +Für Parameter werden die Eingänge werden die Platzhalter @1 bis @4 verwendet. +Um ein '@'-Zeichen darzustellen, müssen "@@" eingegeben werden. Beispiele: -- Wind @1km/h........Wind 35km/h -- @1° - @2°............22° - 24° -- @1@@Home...........3@Home +- "Wind @1km/h" → "Wind 35km/h" (mit Eingang1 = 35) +- "@1° - @2°" → "22° - 24°" (mit Eingang1 = 22 und Eingang2 = 24) +- "@1@@Home" → "3@Home" (mit Eingang1 = 3) ### Textbaustein Aus diff --git a/library.json b/library.json index 58b0ea1..02ebbed 100644 --- a/library.json +++ b/library.json @@ -1,6 +1,6 @@ { "name": "OFM-FunctionBlocks", - "version": "0.10.0", + "version": "0.11.0-DEV", "description": "Function Blocks", "homepage": "https://openknx.de", "authors": { diff --git a/release_notes.md b/release_notes.md index d50fcd0..a775902 100644 --- a/release_notes.md +++ b/release_notes.md @@ -1,5 +1,18 @@ # Release Notes +## 0.11.0 +### Breaking Changes +- none + +### Feature +- Neuer Funktionsblock: Bayes-Sensor +- Funktionserweiterung Text-Block: Zeitfunktionen (Uhrzeit, Sonnenauf-/-untergang, Datumsbestandteile) +- OpenKNX-Standardisierung: Anpassung auf neues UI-Pattern für Kanal-Auswahl + +### Bug +- Fix #29: Dauer war durch uint8_t Berechnung auf 255s beschränkt bei "Start mit Zeit" in {"Einheit Minuten", "Einheit Stunden"} +- Verschiedene kleine Korrekturen in UI und Hilfetexten + ## 0.10.0 ### Breaking Changes - none @@ -25,8 +38,8 @@ - none ### Feature -- Neuer Functionsblock "Text Format". -- Startverhalten bei Wertueberwachung konfigurierbar. +- Neuer Funktionsblock "Text Format". +- Startverhalten bei Wertüberwachung konfigurierbar. ### Bug - none @@ -39,32 +52,32 @@ - none ### Bug -- Fix: Bennennung Eingang 9 bei FB-"Anzahl" nicht moeglich. +- Fix: Benennung Eingang 9 bei FB-"Anzahl" nicht möglich. ## 0.7 ### Breaking Changes - none ### Feature -- Count-Down: Konfigurationsparameter fuer maximale Laufzeit bei Erhoehen durch KO. -- Count-Down: Text-Parameter fuer Stopp. +- Count-Down: Konfigurationsparameter für maximale Laufzeit bei Erhöhen durch KO. +- Count-Down: Text-Parameter für Stopp. ### Bug - none ## 0.6.2 ### Breaking Changes -- Verhalten von KO Verringern/Erhoehen fuer Count-Down wurde geaendert. +- Verhalten von KO Verringern/Erhöhen für Count-Down wurde geändert. ### Feature - none ### Bug -- Fix: KO Verringern/Erhoehen fuer Count-Down (0 = Verringern, 1 = Erhoehen). +- Fix: KO Verringern/Erhöhen für Count-Down (0 = Verringern, 1 = Erhöhen). ## 0.6.1 ### Breaking Changes -- Verhalten von KO Pause/Fortsetzen wurde geaendert. +- Verhalten von KO Pause/Fortsetzen wurde geändert. ### Feature - none @@ -77,7 +90,7 @@ - none ### Feature -- Eingaenge koennen benannt werden. +- Eingänge können benannt werden. - Text-Input verwendet ISO-8859-1. ### Bug @@ -88,7 +101,7 @@ - none ### Feature -- Szene-DPT als Prioritaetsschalter-Ausgang. +- Szene-DPT als Prioritätsschalter-Ausgang. ### Bug - none diff --git a/src/Baggages/Help_de/FCB-Bayes-Sensor.md b/src/Baggages/Help_de/FCB-Bayes-Sensor.md index 7b27dfe..5811611 100644 --- a/src/Baggages/Help_de/FCB-Bayes-Sensor.md +++ b/src/Baggages/Help_de/FCB-Bayes-Sensor.md @@ -1,3 +1,4 @@ -### Bayes Sensor +### Bayes-Sensor +Mit einem Bayes-Sensor-Funktionsblock kann auf Basis von Wahrscheinlichkeiten ein binärer Ausgangswert aus mehreren binären Eingangswerten ermittelt werden. diff --git a/src/Baggages/Help_de/FCB-BayesianBinarySensor.md b/src/Baggages/Help_de/FCB-BayesianBinarySensor.md index 3825525..231cccc 100644 --- a/src/Baggages/Help_de/FCB-BayesianBinarySensor.md +++ b/src/Baggages/Help_de/FCB-BayesianBinarySensor.md @@ -1,3 +1,8 @@ -### BayesianBinarySensor +### Bayes Sensor +Ermittelt auf Basis von (bedingten) Wahrscheinlichkeiten einen binären Ausgangswert aus mehreren binären Eingangswerten. + +Dafür müssen für alle Eingangswerte die Wahrscheinlichkeiten für den EIN-Ausgangswert angegeben werden. +Eine Forderung nach stochastischer Unabhängigkeit der Eingänge kann in der Praxis abgeschwächt werden; +solange keine "zu starke" Abhängigkeit besteht, sollen trotzdem nutzbare Ergebnisse geliefert werden. diff --git a/src/Baggages/Help_de/FCB-Datentype.md b/src/Baggages/Help_de/FCB-Datentyp.md similarity index 100% rename from src/Baggages/Help_de/FCB-Datentype.md rename to src/Baggages/Help_de/FCB-Datentyp.md diff --git a/src/Baggages/Help_de/FCB-Ein-Ausgangs-Kombination.md b/src/Baggages/Help_de/FCB-Ein-Ausgangs-Kombination.md new file mode 100644 index 0000000..1dfa5fe --- /dev/null +++ b/src/Baggages/Help_de/FCB-Ein-Ausgangs-Kombination.md @@ -0,0 +1,5 @@ +### Ein-/Ausgangs-Kombination + +Zusätzlich zum binären Ausgangswert kann die zugrunde liegende Wahrscheinlichkeit ausgegeben werden. +Wenn das Wahrscheinlichkeits-KO aktiv ist, dann reduziert die maximale Anzahl der Eingänge auf 8. + diff --git a/src/Baggages/Help_de/FCB-Format.md b/src/Baggages/Help_de/FCB-Format.md index 79bb8b9..6a04183 100644 --- a/src/Baggages/Help_de/FCB-Format.md +++ b/src/Baggages/Help_de/FCB-Format.md @@ -1,12 +1,12 @@ ### Format Formatierung der Ausgabe. -Für Parameter werden die Eingänge werden die Platzhalter #1-#9 verwendet. -Um ein '#'-Zeichen darzustellen, müssen ## Rauten eingegeben werden. +Für Parameter werden die Eingänge werden die Platzhalter @1 bis @4 verwendet. +Um ein '@'-Zeichen darzustellen, müssen "@@" eingegeben werden. Beispiele: -- Wind @1km/h........Wind 35km/h -- @1° - @2°............22° - 24° -- @1@@Home...........3@Home +- "Wind @1km/h" → "Wind 35km/h" (mit Eingang1 = 35) +- "@1° - @2°" → "22° - 24°" (mit Eingang1 = 22 und Eingang2 = 24) +- "@1@@Home" → "3@Home" (mit Eingang1 = 3) diff --git a/src/Baggages/Help_de/FCB-Initialisierung.md b/src/Baggages/Help_de/FCB-Initialisierung.md index d798f8b..7188226 100644 --- a/src/Baggages/Help_de/FCB-Initialisierung.md +++ b/src/Baggages/Help_de/FCB-Initialisierung.md @@ -1,17 +1,12 @@ ### Initialisierung -Legt den Initialwert für den Eingang fest. -Zur Auswahl stehen: +Legt fest, wie der Eingang nach dem Gerätestart belegt wird: -- **AUS** - Der Eingang wird mit AUS vorbelegt -- **EIN** - Der Eingang wird mit EIN vorbelegt -- **Vom Bus lesen, dann AUS** - Es wird versucht den Eingangswert vom Bus über ein Lesetelegramm zu lesen. +- **AUS** - Der Eingang wird mit AUS vorbelegt +- **EIN** - Der Eingang wird mit EIN vorbelegt +- **Vom Bus lesen, dann AUS** - Es wird versucht den Eingangswert vom Bus über ein Lesetelegramm zu lesen. Wird nach 3 Sekunden keine Antwort empfangen, wird der Eingang mit AUS vorbelegt. -- **Vom Bus lesen, dann EIN** - Es wird versucht den Eingangswert vom Bus über ein Lesetelegramm zu lesen. +- **Vom Bus lesen, dann EIN** - Es wird versucht den Eingangswert vom Bus über ein Lesetelegramm zu lesen. Wird nach 3 Sekunden keine Antwort empfangen, wird der Eingang mit EIN vorbelegt. **Wichtig**: Die Vorbelegung erfolgt vor einer möglichen eingestellten Invertierung des Eingangswertes. diff --git a/src/Baggages/Help_de/FCB-Kanal-deaktivieren-zu-Testzwecken.md b/src/Baggages/Help_de/FCB-Kanal-deaktivieren-zu-Testzwecken.md deleted file mode 100644 index f998e39..0000000 --- a/src/Baggages/Help_de/FCB-Kanal-deaktivieren-zu-Testzwecken.md +++ /dev/null @@ -1,6 +0,0 @@ -### Kanal deaktivieren (zu Testzwecken) - -Mit dieser Einstellung kann ein Kanal deaktiviert werden, ohne das die Konfigurationswerte und Gruppenadressen an den Kommunikationsobjekten verloren gehen. -Ein deaktivierter Kanal sendet keine Telegramme auf dem KNX-Bus. - - diff --git a/src/Baggages/Help_de/FCB-Kanalauswahl.md b/src/Baggages/Help_de/FCB-Kanalauswahl.md index 8033f63..ac3583a 100644 --- a/src/Baggages/Help_de/FCB-Kanalauswahl.md +++ b/src/Baggages/Help_de/FCB-Kanalauswahl.md @@ -40,6 +40,10 @@ Für jeden Kanal kann für einen Funktionsblock konfiguriert werden: Die Anzahl der Blinkintervalle ist konfigurierbar und/oder über ein Gruppenobjekt steuerbar. Die jeweilige Ein- bzw. Ausschaltzeit kann in 10/Sekunden, Sekunden, Minuten oder Stunden festgelegt werden. +- **Bayes Sensor** + Ermittelt einen binären Zustands-Wert aus bis zu 9 Eingangswerten, auf Basis eines Naiven Bayes-Klassifikators. + Der ausgegebene Wert entspricht dem wahrscheinlichsten Zustand bei gleichzeitigem Vorliegen der unabhängigen Eingangswerte. + - **Text Format** Funktionsblock zur Erzeugung von Texten aus verschiedenen Eingangswerten. diff --git a/src/Baggages/Help_de/FCB-PSensorTRUE-EreignisFALSE.md b/src/Baggages/Help_de/FCB-PSensorTRUE-EreignisFALSE.md index e785cf9..06b8790 100644 --- a/src/Baggages/Help_de/FCB-PSensorTRUE-EreignisFALSE.md +++ b/src/Baggages/Help_de/FCB-PSensorTRUE-EreignisFALSE.md @@ -1,4 +1,4 @@ -### PSensorTRUE-EreignisFALSE +### P( A | ~E_i ) Wahrscheinlichkeit, dass der Ausgangswert EIN ist, wenn an diesem Eingang der Wert AUS anliegt. diff --git a/src/Baggages/Help_de/FCB-PSensorTRUE-EreignisTRUE.md b/src/Baggages/Help_de/FCB-PSensorTRUE-EreignisTRUE.md index c845d71..a59a749 100644 --- a/src/Baggages/Help_de/FCB-PSensorTRUE-EreignisTRUE.md +++ b/src/Baggages/Help_de/FCB-PSensorTRUE-EreignisTRUE.md @@ -1,4 +1,4 @@ -### PSensorTRUE-EreignisTRUE +### P( A | E_i ) Wahrscheinlichkeit, dass der Ausgangswert EIN ist, wenn an diesem Eingang der Wert EIN anliegt. diff --git a/src/Baggages/Help_de/FCB-Prior-Wahrscheinlichkeit-P-A.md b/src/Baggages/Help_de/FCB-Prior-Wahrscheinlichkeit-P-A.md new file mode 100644 index 0000000..dbc99b2 --- /dev/null +++ b/src/Baggages/Help_de/FCB-Prior-Wahrscheinlichkeit-P-A.md @@ -0,0 +1,5 @@ +### Prior-Wahrscheinlichkeit P( A ) + +Wahrscheinlichkeit, dass der Zustandswert EIN ist, unabhängig von den Eingangswerten. +Bzw. Zeitanteil. + diff --git a/src/Baggages/Help_de/FCB-Prior-Wahrscheinlichkeit.md b/src/Baggages/Help_de/FCB-Prior-Wahrscheinlichkeit.md deleted file mode 100644 index 0062226..0000000 --- a/src/Baggages/Help_de/FCB-Prior-Wahrscheinlichkeit.md +++ /dev/null @@ -1,4 +0,0 @@ -### Prior-Wahrscheinlichkeit - -Wahrscheinlichkeit, dass der Zustandswert EIN ist, unabgängig von den Eingangswerten. Bzw. Zeitanteil. - diff --git a/src/Baggages/Help_de/FCB-Suspendiert.md b/src/Baggages/Help_de/FCB-Suspendiert.md new file mode 100644 index 0000000..89dd756 --- /dev/null +++ b/src/Baggages/Help_de/FCB-Suspendiert.md @@ -0,0 +1,6 @@ +### Suspendiert + +Mit dieser Einstellung wird der Kanal wie deaktiviert behandelt, aber die Kommunikationsobjekte und alle Einstellungen bleiben sichtbar. +Dadurch müssen GA-Verknüpfungen nicht entfernt oder erneut hinzugefügt werden beim späteren Reaktivieren. + + diff --git a/src/Format.Parameter.part.xml b/src/Format.Parameter.part.xml new file mode 100644 index 0000000..d1c2a32 --- /dev/null +++ b/src/Format.Parameter.part.xml @@ -0,0 +1,270 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/FunctionBlocks.script.js b/src/FunctionBlocks.script.js deleted file mode 100644 index d352ad5..0000000 --- a/src/FunctionBlocks.script.js +++ /dev/null @@ -1,20 +0,0 @@ -// OFM-FunctionBlocks -- -// SPDX-License-Identifier: AGPL-3.0-only - -function fcbAddChannel(device, online, progress, context) { - var numberOfChannelds = device.getParameterByName('FCB_VisibleChannels'); - var newNumberOfChannels = numberOfChannelds.value + 1; - var channelType = device.getParameterByName('FCB_CH' + newNumberOfChannels + 'ChannelType'); - var notAllowed = device.getParameterByName('FCB_AddNotAllowed'); - if (channelType == 0) - { - notAllowed.value = 1; - } - else - { - notAllowed.value = 0; - numberOfChannelds.value = newNumberOfChannels; - } -} - -// -- OFM-FunctionBlocks // diff --git a/src/FunctionBlocks.share.xml b/src/FunctionBlocks.share.xml index ff1fb2a..c73dba1 100644 --- a/src/FunctionBlocks.share.xml +++ b/src/FunctionBlocks.share.xml @@ -2,7 +2,6 @@ - @@ -33,7 +32,7 @@ - + @@ -55,21 +54,22 @@ - + - - - - - - - - - - - - + + + + + + + + + + + + + @@ -540,38 +540,74 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + --> - + - + --> - @@ -582,41 +618,27 @@ - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - -