Skip to content
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

RM-bcu1: Summierung der RM-Werte immer Null nach Busspannungsausfall #13

Open
Doumanix opened this issue Jun 8, 2019 · 8 comments
Open

Comments

@Doumanix
Copy link
Member

Doumanix commented Jun 8, 2019

Wie im Forum und in #12 von clown angesprochen: die Werte wie Anzahl Alarme, Anzahl Testalarme, etc. werden auf 0 gesetzt, wenn man den Rauchmelder vom Sockel abzieht oder die Busspannung vom RM- Modul trennt.

Nach Stefan Sveriges und oldcoolmans Ausführungen würde ich das aktuell als Feature (enhancement) einstufen, welches man durchaus mit dem ARM umsetzen könnte.

@clown-m
Copy link

clown-m commented Jun 8, 2019

Die Werte bleiben so lange erhalten wie die Busspannung anliegt, ein Trennen vom Sockel (Melder power off) hat keinen Einfluß. Busspannung weg = Werte weg !

@StefanSverige
Copy link
Member

StefanSverige commented Jun 15, 2019 via email

@Doumanix
Copy link
Member Author

Doumanix commented Jun 15, 2019

Hi Stefan,
danke für die Info! Der entscheidende Punkt ist, dass in der Lpc Version dann irgendwann doch der Summenwert vom RM kommt und auch auf den bis gegeben wird. Das scheint nach Michaels Aussage aktuell in der ARM Version noch nicht so zu sein. Da beginnt immer alles komplett von vorne.
Ich habs aber selbst nicht analysieren können bis jetzt.

@StefanSverige
Copy link
Member

StefanSverige commented Jun 15, 2019 via email

@olterion
Copy link
Contributor

olterion commented Nov 8, 2020

Hier habe ich etwas zu dem Fehler geschrieben und (hoffentlich) behoben:
https://selfbus.org/forum/viewtopic.php?p=4736#p4736

Bitte testen!

Olli

@dallmair dallmair changed the title Summierung der RM-Werte immer Null nach Busspannungsausfall RM-bcu1: Summierung der RM-Werte immer Null nach Busspannungsausfall May 1, 2023
@dallmair
Copy link
Member

dallmair commented Oct 22, 2023

Wie im RocketChat besprochen sind die Werte in der Rauchmelder-MCU flüchtig: sobald der Melder von der Bodenplatte genommen wird UND keine Stützspannung vom RM-Modul mehr anliegt, werden die Werte zurückgesetzt.

Drei Use Cases sollten unterstützt werden:

  1. Wenn man das RM-Modul neu startet, z.B. nach einer Programmierung aus der ETS, wird weitergezählt.
  2. Wenn man einen Melder mal runterbaut, z.B. um zu weißeln, dann werden die Werte gespeichert und nach Wiederinbetriebnahme wird weitergezählt statt die Werte zurückzusetzen und bei 0 zu beginnen.
  3. Wenn man nach 10 Jahren den Melder tauscht und das Modul in den neuen Melder umbaut, dann werden die Werte zurückgesetzt.

Zur Implementierung dieser Erweiterung muss man sich die Seriennummer des Rauchmelders speichern und für jeden zu merkenden Zähler zwei Werte wegspeichern, ich nenne sie hier mal lastBaseValue und lastValue, dazu noch zwei weitere Werte im RAM halten, baseValue und currentValue. Die Umsetzung besteht dann aus folgenden Teilen:

  1. Nach dem Start des RM-Moduls werden nach Ablauf des Startup Delays alle Werte aus dem Melder abgerufen. Dann wird verglichen, ob die Seriennummer mit der gespeicherten Seriennummer übereinstimmt.
    1. Nein => Modul in neuen Melder umgebaut und daher baseValue = 0.
    2. Ja => Zwei Möglichkeiten: Nur das RM-Modul wurde neu gestartet (z.B. nach Programmierung aus der ETS) oder der ganze Melder wurde neu gestartet. Zur Unterscheidung dieser beiden Fälle vergleicht man die vom Melder gelieferte Betriebszeit mit der gespeicherten lastValue-Betriebszeit.
      • Gemeldet > gespeichert => Melder ist weitergelaufen, nur das RM-Modul wurde neu gestartet und daher baseValue = lastBaseValue.
      • Sonst => Melder wurde neu gestartet und daher baseValue = lastBaseValue + lastValue.
  2. Beim Schreiben der Werte in die jeweiligen Gruppenobjekte wird nicht nur der vom Melder gelieferte currentValue geschrieben, sondern baseValue + currentValue.
  3. Bei Busspannungsabfall: wegspeichern von baseValue und currentValue als lastBaseValue und lastValue.

Solange wir keine Busspannungserkennung in der Lib haben, könnte man Punkt 3 alternativ implementieren, indem man die Werte wegschreibt wenn der Melder von der Bodenplatte genommen wurde.

@Darthyson
Copy link
Member

  1. Beim Brownout: wegspeichern...

Ins eeprom speichern dauert 104-110ms. Die Brown-Out-Detection kommt dafür zu spät. Da kommt man um Busspannungserkennung nicht drumrum.

Werte wegschreibt wenn der Melder von der Bodenplatte genommen wurde.

Geht leider so nicht, der Bodenplattenkontakt ist nach erstmaliger Betätigung ein ODER für Batteriespannung vorhanden oder 12V Betriebsspannung vorhanden. Löst also nicht mehr aus, wenn die Busspannung vorhanden ist und man den Rauchmelder von der Bodenplatte abnimmt.

@dallmair
Copy link
Member

Danke für das Feedback, habe ich in den obigen Kommentar eingearbeitet.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Development

No branches or pull requests

6 participants