Eine Sache: die Adresstabelle ist ein EEPROM mit relativ "endlichen" Schreibzyklen.
Möglicherweise ist es also keine so gute Idee, die bcuaddrtab blind reinzuschreiben..
(wir denken z.B. an einen kleinen Fehler irgendwo, ein Monitoring-Tool o.ä. das den eibd alle 60s restartet, dann ist das EEPROM in einer Woche platt)
Mein Ansatz (das komplette Init-script ist etwas "speziell"):
Makki
Möglicherweise ist es also keine so gute Idee, die bcuaddrtab blind reinzuschreiben..
(wir denken z.B. an einen kleinen Fehler irgendwo, ein Monitoring-Tool o.ä. das den eibd alle 60s restartet, dann ist das EEPROM in einer Woche platt)
Mein Ansatz (das komplette Init-script ist etwas "speziell"):
Code:
# check/write bcuaddrtab if [ "$EIBD_BACKEND" = "usb" -o "$EIBD_BACKEND" = "ft12" -o "$EIBD_BACKEND" = "bcu1" -a -n "$EIBD_URL" ]; then EIBD_BCUADDRTAB=`bcuaddrtab -T 10 $EIBD_URL | cut -d ' ' -f 2` if [ "$EIBD_BCUADDRTAB" = "expected" -o "$EIBD_BCUADDRTAB" = "failed" -o "$EIBD_BCUADDRTAB" = "timed" ]; then # retry 1 echo -n "Unable to read BCU address table - retrying 1" sleep 2 EIBD_BCUADDRTAB=`bcuaddrtab -T 10 $EIBD_URL | cut -d ' ' -f 2` if [ "$EIBD_BCUADDRTAB" = "expected" -o "$EIBD_BCUADDRTAB" = "failed" -o "$EIBD_BCUADDRTAB" = "timed" ]; then # retry 2 echo -n " - retrying 2 .." sleep 2 EIBD_BCUADDRTAB=`bcuaddrtab -T 10 $EIBD_URL | cut -d ' ' -f 2` if [ "$EIBD_BCUADDRTAB" = "expected" -o "$EIBD_BCUADDRTAB" = "failed" -o "$EIBD_BCUADDRTAB" = "timed" ]; then echo -n " - FAILED on $EIBD_BACKEND (url $EIBD_URL) (size $EIBD_BCUADDRTAB) ! " # only fail on usb/FT12 as bcu1 might still be ok if [ "$EIBD_BACKEND" = "bcu1" ]; then EIBD_BCUADDRTAB=0 else log_end_msg 2 exit 2 fi fi fi fi if [ "$EIBD_BCUADDRTAB" -gt 0 ]; then echo "Resetting BCU address table length! Old value $EIBD_BCUADDRTAB" bcuaddrtab -T 30 -w 0 $EIBD_URL fi # fix for broken ABB/BJ USB-If USBNAME=`findknxusb | grep ^device | cut -d '(' -f 2,3` if [ "$EIBD_BACKEND" = "usb" -a "$USBNAME" = "ABB STOTZ-KONTAKT GmbH:KNX-USB Interface (MDRC))" ]; then echo "ABB-fix: Resetting BCU address table length! Old value $EIBD_BCUADDRTAB" bcuaddrtab -T 30 -w 0 $EIBD_URL fi fi
Kommentar