-
Notifications
You must be signed in to change notification settings - Fork 34
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fehler bei MS-Erkennung #102
Comments
Das ist ja sehr dubios. |
Das ist die Stelle im Code. Da ist eigentlich nichts ungewöhnliches zu finden. https://github.com/RFD- |
Hallo @sidey79, keine Ahnung ob du die Entwicklung von den Atlantic und Focus Security China Devices https://forum.fhem.de/index.php/topic,95346.0.html mitbekommen hast. (oder beginnend ab hier: https://forum.fhem.de/index.php/topic,58397.msg876097.html#msg876097 und folgende. Da haben wir wieder das Problem, das MU und MS Nachrichten von einem Device gemischt werden. Mit einer guten MU Nachricht siehst du wie dies sein müsste:
angebliche MS Nachricht welche nur eine Wiederholung aus der langen Nachricht ist. Da wir bei diesen Devices eine XOR Checksumme bilden kommt es auf das letzte Bit drauf an. Da die richtige Verarbeitung für die Auswerung des Modules ist, so möchte ich diese Problematik erneut ansprechen weil ich gern das Modul SD_UT updaten würde und zusätzlich ich der Meinung bin, solche Problematiken bzw. Bug haben eine hörere Priorität als unsere Schalter ;-) Schließlich tragen wir diese immer wiederkehrende Problematik mit uns schon lange mit. Ist eine Behebung möglich oder mit diesem Workaround panndingbit leben? MfG |
Ich habe kein Fall gefunden bei dem das mit dem auffüllen per padding nicht richtig funktioniert. Es gibt 2 Fälle:
Hier wird als MS erkannt, wenn das letzte Bit 1 ist.
|
@HomeAutoUser |
@sidey79 die Problematik ist ja auch nicht leicht zu lösen. Ich entnehme der Aussage wir betrachten das ganze als erledigt oder vertagen wir es? ;-) Wie denkst du über die Lösung von Ralf mit dem paddingbit? Wäre es akzeptabel von deiner Seite so oder hast du dafür eine andere Lösung bzw. Umsetzungsvorstellung? Ich möchte einfach nur verhindern, etwas nun einzubauen und dann nehmen wir es wieder raus bzw. wird von vornherein abgelehnt. |
@sidey79 im Beitrag #102 (comment) hatte ich die Anfrage gestellt ob die von @Ralf9 ´s Lösung für dich in Ordnung geht oder ob du auf eine andere Variante zurück greifen würdest? Das steht noch auf meiner ToDo, da es ja zur Erkennung der Atlantic Security Sensoren wichtig ist. |
@HomeAutoUser
Mit paddingbit =1 wird dann eine 1 angehangen und paddingbit =0 (default) hängt eine 0 in Abhängigkeit von paddingbits an ? Anstelle von paddingbit sollte man es vielleicht Im Forum gab es auch noch eine andere Idee Ich bin aber selbst unsicher was ich davon halte. |
Ich würde paddingbits.value passender finden |
Egal wie es benannt wird, ich denke die Variante im Forum ist vermutlich „unsicher“ weil wir nicht Wissen wie es auf bestehende Protokolle wirkt. Wenn wir das einzeln in der Definition ergänzen ist es bestimmt besser den überblick zu behalten wo es zutrifft. Entweder paddingbits oder paddingbits.value ist optimal. |
Meinetwegen auch value, wobei wir damit die Wertigkeit des Bits festlegen und den Wert den die Bits repräsentieren. Richtig? |
Ich finde die Idee aus dem Forum https://forum.fhem.de/index.php?topic=58397.msg885786#msg885786 eigentlich für universeller: Wie wird dann eigentlich bei Ralfs Variante das restliche Nibble aufgefüllt, wenn wir nicht zufällig eine durch 4 teilbare Anzahl an Bits haben? Bei paddingbit=1 nur eine 1 und der Rest Nullen, oder alles Einsen? Oder soll diese Variable jetzt nur speziell für dieses Protokoll sein? |
Es gibt einige IDs wo dies nicht funktioniert, daß bei one und zero das erste halbe Bit gleich ist, kommt recht häufig vor, z.B. bei der ID 0 oder 65.
Mit einer neuen Definition
|
@elektron-bbs paddingbit würde die Anzahl vorgeben Eventuell könnte man beide Vorschläge auch kombinieren. Also immer wenn die 1. Pulselänge unterschiedlich ist, wird des Bit "automatisch" bestimmt. Ist es nicht eindeutig müsste paddingbits.value gesetzt sein, damit überhaupt Bits hinzugefügt werden. |
Bis jetzt konnte mir noch keiner einen Fall nennen wo meine Variante nicht funktioniert. |
Du meinst, weil wenn der Letzte Pegel ein high ist, dann sorgt die nachfolgende lange Pause dafür dass es auch ausgewertet werden kann? |
hier habe ich es beschrieben |
Was du dort beschreibst, bezieht sich aber nur auf diesen einen speziellen Fall. Dieser Fall würde sich aber auch mit der Lösung von Harst korrigieren lassen. Diese hat den Vorteil, das sie universeller ist und nicht nur den einen Fall abdeckt. |
Sie ist nur aktiv wenn
Sind Dir außer bei FS20 auch noch andere Protokoll IDs bekannt wo es nur ein EOT-Puls gibt? |
Ich meine natürlich die Variante, das das letzte (halbe) Bit automatisch ergänzt werden sollte. |
Bei MU-Nachrichten müsste es eigentlich funktionieren, wenn man hinter
die folgenden paar Zeilen einträgt:
|
Ich hab mal die MU-Nachrichten Protokolle durchgeschaut, die folgenden ID sind evtl auch betroffen: |
Protokoll 73 ist wie 74 - ein EOT-Puls am Ende - braucht also kein "zusätzliches" Bit. |
Gehört das noch in dieses Issue? Habt ihr den PR /RFD-FHEM/RFFHEM/pull/491 gesehen? |
Passt dort nicht dazu, hier geht es um ergänzung des letzten Bits bei MU-Nachrichten, dort sind es nur MS-Nachrichten |
Ich habe gerade einen Pull-Request für das generieren des korrekten Padbits erzeugt. Bei mir läuft das so. Es wird einfach bei der letzten Lücke im Decoder nachgesehen, ob die Situation eindeutig ist. Vielleicht passt es ja hier rein. Horst |
@sidey79 |
Ich kann aus dem Codeschnipsel nicht erkennen durch was $1 definiert wird. |
In Wieso Du allerdings substr vom 1. und 2. Zeichen machst habe ich noch nicht verstanden. Ist nicht eher das letzte Interessant? |
Hier ist mal als Beispiel ein MU-Nachricht der ID 74 (FS20) Ich brauche nun das Zeichen nach dem letzten 23 oder 56, hier also die 2
nicht weiter, in $1 steht nun alles bis |
Ich würde die Regex erweitert: https://regex101.com/r/heOs8a/1 PS: Die von dir angegebene Regex hat einen Fehler. |
Ja, mit der regex müsste es funktionieren, ich werde es mal damit testen |
Ich betreibe 3 Sensoren vom Typ "Conrad S522". Bisher funktionierten diese problemlos. Heute habe ich bemerkt, das alle 3 Sensoren seit gestern Mittag nicht mehr empfangen werden. Auf einem 2. System funktioniert der Empfang allerdings noch.
Also auf dem gestörten System "verbose" auf 4 und die Logs angesehen. Die Nachrichten werden noch empfangen, aber nicht ausgewertet:
Ein "set reset" des SIGNALduino hat nichts gebracht. Erst ein Hard-Reset durch Abschaltung führte wieder zm Empfang der 3 Sensoren. Im Log eines Sensors erscheinen jetzt wieder die RAWMSG wie folgend:
2018-11-25_11:12:56 SD_WS_33_T_1 RAWMSG: MS;P1=-8043;P2=502;P3=-2039;P4=-3996;D=21232324232324232423242323232324232424242424242324232423232323232323232323232324232423;CP=2;SP=1;R=41;O;m2;
Ich vermute, das die Aussetzer an dieser Ausgabe liegen: C=??
Die Firmware-Version ist: V 3.3.1-RC9 SIGNALduino cc1101 - compiled at Nov 14 2018 23:01:23
Anbei noch das komplette Log:
fhem_2018-11-25.log
The text was updated successfully, but these errors were encountered: