[Geklaert] Majority Voting

Begonnen von Hackstall, 14 Juni 2022, 19:34:30

Vorheriges Thema - Nächstes Thema

Hackstall

Hi ich haette da eine Frage:
Ich habe 3 gleiche Signale die  signalbedingt einzelne Ausresser hab3n werden.
Alle  Signale werden mit eigenen HW Komponenten gemessen.

Frage waere ob schon jemand in Fhem einen majority Algorithmus
entwickelt hat der zum Beispiel Deltas zwischen allem 3 Messwerten
ermittelt und dann das pärchen mit dem geringsten Abstand nimmt und
hier den Mittelwert als Messwert weitergibt.

Danke Andreas




Damian

Zitat von: Hackstall am 14 Juni 2022, 19:34:30
Hi ich haette da eine Frage:
Ich habe 3 gleiche Signale die  signalbedingt einzelne Ausresser hab3n werden.
Alle  Signale werden mit eigenen HW Komponenten gemessen.

Frage waere ob schon jemand in Fhem einen majority Algorithmus
entwickelt hat der zum Beispiel Deltas zwischen allem 3 Messwerten
ermittelt und dann das pärchen mit dem geringsten Abstand nimmt und
hier den Mittelwert als Messwert weitergibt.

Danke Andreas

Um Ausreißer zu eliminieren bietet sich der Median an. So etwas findest du in der Commandref.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Hackstall

Hallo danke für die Antwort aber das möchte ich ja gerade nicht. Ich möchte mich nicht auf ein Sugnal verlassen. Daher habe ich ja auch 3 Sensoren. Im meinem Fall sogar 4.
Ich möchte keine Ausreißer filtern sondern verlassenste Werte ermitteln.
Daher die Fesge nach majority voting Algorithmus

Prof. Dr. Peter Henning

Ich halte den Ansatz für falsch. Es geht nämlich nicht um Ja-Nein-Entscheidungen, sondern um Messwerte. Und je nach statistischer Verteilung der Fehler kann dieser "Majority-Ansatz" beliebig falsch sein.

LG

pah

Hackstall

Hallo aber das hilft mir nicht weiter. Ich bin industriell im Raumfahrtsektor und da ist es Gang ung gebe Wichtige Sensoren über majority voting abzusichern. Gerade Auch wg single failure tolerance.
Ich weiß zwar nicht woher Du Deine durch sehr pauschale Aussage nimmst oder begründest aber industriell wie gesagt keine bessere Lösung. Ich würde mich auch nicht auf einen Computer im Flugzeug verlassen. Schon mal was von lock step Überwachung gehört.

Na ja wie dem auch sei, Dein Kommentar hilft mir leider nicht weiter.

Meine Frage ist einfach: Haben wir hier bei fhem einem Majority Voting Algorithmus?

Prof. Dr. Peter Henning

Meine Aussage ist keinesweg "pauschal", sondern bezieht sich - sehr differenziert - auf die statistische Verteilung der Fehler in den Einzelsensoren. Und ergibt sich danach aus der Mathematik.

LG

pah


Jamo

#6
Hallo Andreas,
hast Du für deine Anwendung eine bestimmte Regel/Formel für das majority voting, für deine 3 oder 4 Messwerte? Warum nicht einfach eine Perl-sub routine daraus machen? Dann hast Du genau, was Du haben willst. Für 3 Messwerte würde ich es fast hart hinschreiben, für 4 oder mehr eher eine generische sub mit loops oder so machen.
Ansonsten ist mir majority voting hier im Forum noch nicht untergekommen.
Grüsse
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/Conbee III, FB7690, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack, Sonos, ESPresence

Hackstall

Ok danke für Eure Antworten. Das hilft mir weiter da ich mich länger weitersuchen muss.
Danke nochmals.

Zu dem Hrn Professor nochmal:
Es geht nicht um statistische Verteilung von Einzelsebsoren,
Es geht auch um Ausfallsicherheit zur Kompensation von
Kommunikationsproblemen und daraus resultierenden Falschmessungen.
Danke Euch.

Prof. Dr. Peter Henning

Bitte einfach mal lesen, was ich geschrieben habe - das hat mit der "statistischen Verteilung von Einzelsensoren" nicht die Bohne zu tun. Sondern mit der statistischen Verteilung von Fehlern und Abweichungen bei einem bestimmten Sensortyp.

Und "Kommunikationsprobleme" lassen sich nicht durch "Majority Voting" abfangen, dafür benutzt man fehleranzeigende oder fehlerkorrigierende Codes.

LG

pah

Hackstall

Danke, sehe ich anders.

bartman121

Um was für eine komplexe und hochbrisante Steuerung geht es hier überhaupt, das man da offenbar "Raumfahrt-Algorithmen" verwenden muss?

Insbesondere wenn man diese Algorithmen noch dazu auf einem System laufen lassen will, das nach meinem Kenntnisstand von Freiwilligen entwickelt wird und keinerlei Garantien und Support-Ansprüche bietet.

Grüße

Andreas

Damian

Der Algorithmus sieht nach deiner Beschreibung nicht besonders kompliziert aus. Den würde ich mir an deiner Stelle selbst programmieren.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Der_Tom

Zitat von: Hackstall am 14 Juni 2022, 19:34:30
Hi ich haette da eine Frage:
Ich habe 3 gleiche Signale die  signalbedingt einzelne Ausresser hab3n werden.
Alle  Signale werden mit eigenen HW Komponenten gemessen.

Frage waere ob schon jemand in Fhem einen majority Algorithmus
entwickelt hat der zum Beispiel Deltas zwischen allem 3 Messwerten
ermittelt und dann das pärchen mit dem geringsten Abstand nimmt und
hier den Mittelwert als Messwert weitergibt.

Danke Andreas

Hi Andreas,

Könntest du deine Anforderung denn mittlerweile umsetzen ?

Ansonsten hätte ich dir die Tage eine PM geschickt, keine Ahnung ob du sie bekommen hast.

Gruss Thomas

Hackstall

HinTom,

habe fhem erst heute wieder geöffnet. Ja ich habe Deine Mail bekommen. ich antworte Dir die nächste Woche. Danke schon mal.

Zu dem anderen Vorredner:
In der Raumfahrt sind Temperaturen für das Überleben der Systemkomponenten sehr wichtig.
Somit werden Thermistoren immer tripple voted.
LockStep Überwachungen sind bei nicht radiation hard Components auch üblich.
Weiterhin führen EDAC Effekte zu Bitflips, die gerade bei statischen Konfig-Daten auch
ein tripple voting von Daten erzwingen.
Zu aller letzt kennt man und nutzt man in der Luftfahrt auch die Kombination von
tripple voting und lockstep.

Hoffe das hilft ein wenig.

In meinem Fall habe ich beim Zwave und auch im Garten bei Wlan  immer wieder Ausfälle einzelner Sensoren die ich so nicht verarbeiten will, da das einfrieren von Daten meine Regelung derartig verfälscht.
ich suche die Ursache der Ausfälle bin aber noch nicht fündig geworden. Ich denke es sind Störungen.
ich möchte halt nicht immer den timestamp der Readings mit auswerten und dann extrapolieren oder statistische Algorithmen anwenden.

Hoffe das hilft und klärt meinen Anspruch etwas.

wie gesagt ich fragte lediglich nach der Verfügbarkeit eines solchen Algos und war dann doch über die eine oder andere Meinung doch sehr verwundert. Ich denke wir sollten sachlich bleiben ohne Sclüsse zu ziehen bevor man das Problem des einzelnen nicht verstanden hat.
Gruss Andreas


Prof. Dr. Peter Henning

Nur abgesehen davon, dass es "Triple Voting" heißt, gibt es einen wesentlichen Unterschied zwischen sicherheitskritischen Anwendungen in der Luft- und Raumfahrtindustrie und diesem Smarthome: Kein klar denkender Mensch würde in einem Raumfahrzeug Temperatursensoren über Funk ankoppeln. Weiterhin:

- ZWave ist ein bidirektionales Protokoll mit Prüfdaten, so etwas wie "Ausreißer" von Daten sollte es also gar nicht geben, und "Störungen" sorgen nur für das Ausbleiben eines Messwertes
- Auch bei WLAN-basierten Temperatursensoren erfolgt in der Regel keine Übertragung von fehlerhaften Daten, sondern es fehlt einfach ein Datenwert.

Gerade bei Temperatursensoren ist dann das Fortschreiben der bisherigen Temperatur für eine gewisse Zeit der sinnvolle Weg. Erst wenn für längere Zeit, sagen wir eine Minute, keine neuen Daten eingelaufen sind, sollte man über eine Lösung nachdenken (und natürlich beim Ausbleiben eines Messwertes immer sofort einen zweiten Request absenden). 

Weiterhin: Eine Regelung, die dadurch verfälscht wird,  dass ein Sensor für begrenzte Zeit keine Daten liefert, ist ihr Geld nicht wert und sollte dringend ersetzt werden.

Weiterhin: Ein kurzer Programmschnipsel, mit dem aus drei Eingangsdatenwerten bestimmt wird, dass der Mittelwert der beiden Eingangsdatenwerte mit dem geringsten Abstand zueinander als Ausgangsdatenwert weitergegeben wird, ist bei mir genau 7 Zeilen lang.

Und last, but not least: Für den gegebenen Anwendungsfall ist diese Ausgangsdatenwertbildung vollkommener Unsinn, weil die Eingangsdatenwerte zu unterschiedlichen Zeiten eintreffen. Stattdessen sollte bei mehreren gleichwertigen Sensoren einfach der jüngste Datenwert verwendet werden.

LG

pah