Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - CommunityGate (Wireg...) auf ARM-Plattform, 8-fach 1W-Master, TP-UART, 4x UART,

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    KNX/EIB - √ - CommunityGate (Wireg...) auf ARM-Plattform, 8-fach 1W-Master, TP-UART, 4x UART,

    Hi!

    Es wurde ja mittlerweile gut beschrieben, wie man die Opensource Wiregate-Software auf fremder Hardware installiert (https://knx-user-forum.de/forum/supp...wiregate/17717).

    Ich würde da ganze gerne eine Nummer kleiner für die Hutschiene nachbauen, plus etwas höher integrieren und evtl. nebenbei noch etwas Strom sparen:

    Vorschlag:
    Basis: Beagleboard.org Beaglebone (BeagleBoard.org - bone) - 720 MHz OMAP3 mit 256 MB RAM, SD-Karte, Ethernet und USB-Host onboard

    Das System zieht im Linux IDLE lt. Datenblatt 2,5W, hat aber trotzdem sicher genug Dampf für alle anfallenden Aufgaben.

    Das schöne sind die Schnittstellen: 2x I2C, 2x SPI, 5x UART liegen auf den 2,54mm Steckleisten. Über den I2C und einen Levelshifter (damit auch die vollen 5V für den OW-Bus zur Verfügung stehen) konnte ich bereits einen Maxim DS2482S-800 (8-fach Onewire Master) anbinden. Dazu bräuchte es sonst 2 Hubs und 8!! DS9490R. So kriegt man alles auf einer kompakten Steckleiste unter. Über einen der UARTs werde ich die Tage versuchen einen TP-UART (evtl. Version 2) anzuschließen - auch das geht ohne Umwege über Pegelwandler (MAX232 o.Ä.) oder gar USB. Mit den verbleibenden I/Os kann man bequem noch Sachen z.B. per RS485 oder CAN anbinden (Plugin für die WG-Software vorrausgesetzt).

    Mit einer passenden Huckepack-Platine (eben mit 8-fach OW-Master, TP-UART mit galvanischer Trennung (ADUM1201 oder ADUM1401) und evtl. noch galvanisch getrennten UARTs) passt das ganze problemlos in ein REG-Gehäuse.

    Kosten: 89 US$ für den Beaglebone + ca. 20 Euro für Halbleiter, Hühnerfutter und Platine (die würde ich fertigen lassen) + 5V Netzteil sofern nicht schon vorhanden.

    Warum ich hier Sachen poste die nicht mal zu 10% fertig sind? - Da bei mir diese Woche die Putzer fertig werden und danach der Estrich kommt (und meine Elektrik-Eigenleistung leider noch keinen Schaltschrank und eingezogene Kabel etc hat) ist meine Zeit ziemlich knapp. Gerne würde ich direkt mit der Hardware weitermachen - da würde ich innerhalb von 2 Wochen sicher eine Platine fertig haben, siehe projekt131 | ...mehr als ein Haus - suche ich noch Mitstreiter, die evtl. Interesse haben:
    - Das Pin-Muxing des OMAP zu erweitern (der Angstrom-Kernel hat schon das richtige Muxing, der Ubuntu-Kernel noch nicht - evtl. kann man die auch austauschen)
    - EIBD und owfs crosscompilieren und testen (alle anderen "allgemeinen" Pakete konnte ich per APT installieren bzw. webmin-openvpn konnte ich per webmin-Oberfläche installieren als Modul) - Webmin läuft auf dem Beaglebone mit lighttp sofort.
    - die wiregated.deb evtl. mal zerlegen und gucken ob man da ein bekömmlicheres Paket schnürt

    Vielleicht bastelt ja jemand an dem Gleichen / etwas Ähnlichem und hat Lust zusammen zu arbeiten.

    Grüße
    Robert

    /edit: Wenn man die Tipps aus https://knx-user-forum.de/knx-eib-fo...nap-419-a.html für die configure-Aufrufe für je pthsem und bcusdk berücksichtigt bekommt man den eibd ganz gut auf dem Beaglebone selber (nicht cross-) kompiliert. Funktioniert mit einem Nachbau eines Gira-USB-Interfaces tadellos. Blieben noch die anderen Punkte von oben - Hilfe ist nach wie vor willkommen!
    /edit2: owfs hat zumindest compiliert.


    EIBD (nach bcusdk 0.05)
    apt-get build-essential libxml2 flex-old bison make xsltproc
    wget http://www.auto.tuwien.ac.at/~mkoegler/pth/pthsem_2.0.8.tar.gz
    tar -xzvf pthsem_2.0.8.tar.gz
    cd pthsem-2.0.8
    ./configure --with-mctx-mth=sjlj --with-mctx-dsp=ssjlj --with-mctx-stk=sas CFLAGS=-U_FORTIFY_SOURCE
    make
    sudo make install
    cp /usr/local/lib/pthsem* /usr/lib
    export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib/"
    cd..
    wget http://www.auto.tuwien.ac.at/~mkoegler/eib/bcusdk_0.0.5.tar.gz
    tar -xzvf bcusdk_0.0.5.tar.gz
    cd bcusdk-0.0.5
    ./configure --enable-onlyeibd --enable-tpuarts --enable-usb --enable-groupcache
    make
    make install
    cd ..
    OWFS
    apt-get install libfuse2 libfuse-dev
    wget http://downloads.sourceforge.net/pro...-2.8p14.tar.gz
    tar -xzvf owfs-2.8p14.tar.gz
    cd owfs-2.8p14
    ./configure
    make
    make install
    cd ..

    #2
    Hallo,
    schönes Projekt!
    Makki hat m. W. viele Pakete auch für arm gebaut. Was fehlt ist sonst aber auch leicht nachzurüsten, die da Sourcecode Pakete verfügbar sind.

    Gruß,
    Hendrik

    Kommentar


      #3
      Meine 5ct:
      - Zu teuer/unfertig (verglichen mit: googelt mal nach WR703, MR3020, Raspberry )
      Also wenn man basteln will, geht das mit dem halben Budget..
      - der DS2482-800 ist nicht so prickelnd, der kann kein richtiges Strong-Pullup, die ganze 1-Wire-Hub-Nummer ist im allgemeinen naja und im speziellen (owfs), ein bisschen grmpf.. wenn lieber 8x DS2482-100 und eine Transe dazu
      - in owfs>2.8p2 ist irgendwas ziemlich broken wenn mehrere BM dran sind, nur so am Rande..

      Das war jetzt die kurz-zusammenfassung, nur 5ct.
      -> Wenns am Ende des Tages in einem REG-Gehäuse mit KNX-Klemme ist darfs auch mehr kosten aber bis dahin würde ich mir das mit günstigerer und ausgereifterer HW einfach ohne Crossfrickel per USB zusammenstecken.. (oder eben OpenWRT..)

      Makki
      EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
      -> Bitte KEINE PNs!

      Kommentar


        #4
        Zitat von makki Beitrag anzeigen
        - Zu teuer/unfertig (verglichen mit: googelt mal nach WR703, MR3020,
        Hab mir mal so ein Teil gekauft. Für knapp 30€ ein nettes Gerät.
        Wenn man hier mal so an die Möglichkeiten mit socat und dem USB port denkt....nicht übel.

        Die Plattform erinnert zudem stark an die 1-wire Extender......
        Da gibt es auch wieder Möglichkeiten zum spielen

        Mal sehen was so geht

        Danke für den Hinweis...

        LG

        Martin

        Kommentar


          #5
          Zitat von makki Beitrag anzeigen
          - Zu teuer/unfertig (verglichen mit: googelt mal nach WR703, MR3020, Raspberry)
          Möchte mal sehen wie du an einen Raspberry PI mehrere I2C/SPI/UART-Geräte anschließt. Oder bei den fertigen Routern. Läuft doch auf den gleichen "Bastelkram" wie beim WG hinaus: ein ganzer Weihnachtsbaum aus USB-Hubs und teuren DS9490R USB-Devices. Wenn ich hier lese, dass mancher mittlerweile 4-5 I2C Master + evtl. CUNs + IP/RS232 Wandler + TPUART zusammengestöpselt hat - herrlicher Kabelkram - von Kosten, Platzbedarf und Energieverbrauch fang ich erst gar nicht an.

          Zitat von makki Beitrag anzeigen
          - der DS2482-800 ist nicht so prickelnd, der kann kein richtiges Strong-Pullup
          Ich halte es mit Seite 7 des Datenblatts:
          http://datasheets.maxim-ic.com/en/ds/DS2482-800.pdf

          Grüße
          Robert

          P.S.: momentan komme ich leider nicht dazu weiter zu machen da akut Hausbau-beschäftigt (kurz vor Estrich)

          Kommentar


            #6
            Zitat von Robert Beitrag anzeigen
            Läuft doch auf den gleichen "Bastelkram" wie beim WG hinaus: ein ganzer Weihnachtsbaum aus USB-Hubs und teuren DS9490R USB-Devices.
            hmm, ja, USB-Stecker sind für mich aber weniger Bastelkram als uC's zu flashen und unfertige Platinen zu löten
            Leg mir das Teil für 100€ hin-> kauf ich Dir ne Palette ab..

            Ich halte es mit Seite 7 des Datenblatts:
            Jep, ich kenne den aber real, nicht nur das Datenblatt.
            Machen wir es einfach so: wennste dann mal ein paar Stunden mitm Oszi&LA davor gesessen bist, ein paar viele hundert im Feld hast, dann sprechen wir einfach nochmal darüber, welcher BM was taugt und welcher nicht, Ok ?

            Es reicht übrigens auch die owfs-Mailingliste zum Thema zu durchsuchen..

            Makki
            EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
            -> Bitte KEINE PNs!

            Kommentar


              #7
              Zitat von makki Beitrag anzeigen
              Es reicht übrigens auch die owfs-Mailingliste zum Thema zu durchsuchen..
              Da musste ich nicht lange suchen um solche Beiträge von Dir zu finden: [Owfs-developers] DS2482-800 - darauf gabs aber keine Antwort... ;-)

              Egal - ich bastel langsam weiter...

              Grüße
              Robert

              Kommentar


                #8
                Hmm, da gibts auch 1000 andere Beiträge (nicht von mir) über die Hubs allgemein..
                Ich versuchs ja nur in die richtige Richtung zu schubsen, von dem USB-IF hat man z.B. halt garnichts, weil es im EK zu viel teuer und aufwändig ist.. Eigentlich schade

                Makki
                EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                -> Bitte KEINE PNs!

                Kommentar


                  #9
                  Anleitung zur Installation

                  Hallo,

                  befeuert durch diese https://knx-user-forum.de/knx-eib-fo...ro-kontra.html Diskussion schreibe ich heute schon hier eine extrem wilde Anleitung, wie ihr auf einer beliebigen ARM-Plattform (genauer armhf!) ein "Communigate" aufsetzt. Die Anleitung ist nicht mehr als die Notizen die ich mir beim Zusammenfrickeln gemacht habe, daher keine Garantie auf Zufriedenheit & Erfolg.

                  Hinweis: Die Anleitung basiert in großen Teilen auf dem Lexikon-Eintrag von Lapheus zur Installation eines Communitygates auf x86-Hardware: Communitygate - Sonstiges - Lexikon - KNX-User-Forum
                  Alle Credits, insbesondere für die Hinweise auf Config-Dateien und magische Aufrufe, gehen an ihn!

                  Vorraussetzung ist ein installiertes Debian Squeeze armhf, z.B. gemäß BeagleBoardDebian - eLinux.org.

                  DHCP / Hostname / AVAHI
                  Im Image von Robert Nelson fehlt ein dhcp-Client, der wird installiert. Evtl. muss man vorher mit ifconfig erstmal statisch eine IP zuweisen. Avahi brauchts, damit der Rechner im Netzwerk über DNS gefunden werden kann. Ich benenne meinen Rechner noch um - jedem Tierchen sein Pläsierchen...
                  Code:
                  apt-get install isc-dhcp-client avahi-daemon
                  # in /etc/hostname und /etc/hosts den hostnamen auf "omnigate"
                  sed 's/omap/omnigate/g' /etc/hostname
                  sed 's/omap/omnigate/g' /etc/hosts
                  Lokalisation & Zeit
                  Damit unser Omnigate auch weiß wie viel Uhr wir haben und alles in Deutsch anzeigt.
                  Code:
                   
                  apt-get install locales ntpd
                  dpkg-reconfigure tzdata
                  HTTP-Server
                  Code:
                  apt-get remove apache2
                  apt-get install lighttpd
                  apt-get install php5-cgi php5
                  lighttp config-Datei gemäß Anleitung ändern und aktivieren
                  (portmap und fam werden nicht mitinstalliert) -> apt-get purge unnötig

                  Repos
                  BCUSDK- und WG-Repo entsprechend Anleitung als "deb-src" eintragen und Keys generieren (Communitygate - Sonstiges - Lexikon - KNX-User-Forum)
                  (Ansonsten sind beide Repos nutzlos da kein binary-armhf vorhanden)

                  Onewire
                  Das WG hat etwas eigene Vorstellungen über Paketnamen, Pfade und Konfigurationsdateien, daher ist hier Party angesagt!
                  aus dem Debian-Repo installieren:
                  Code:
                   
                  apt-get install libfuse2 owfs-fuse owhttpd owserver
                  Interface konfigurieren in /etc/owfs.conf bei "server: FAKE [...]" "server: device = i2c-3" (oder entsprechendes) hinschreiben (in meinem Fall ein DS2482S-800 8-fach BM an I2C-3 über 5V-Levelshifter (TXS0102):
                  Code:
                  sed -i 's/server: FAKE.*/server: device = i2c-3/g' /etc/owfs.conf
                  Mountpoint für owfs (oder owfs-fuse in der WG-Welt) erzeugen und in der Konfiguration aktivieren (wird das überhaupt benutzt? - egal)
                  Code:
                  mkdir /mnt/1wire
                  sed -i 's,#.*/mnt/1wire,/mnt/1wire,g' /etc/owfs.conf
                  sonstige Einstellungen für Server und Http-Daemon passen

                  Anpassung an WG-Struktur:
                  in /etc/init.d/owserver und /etc/init.d/owhttpd jeweils $PIDDIR auf /var/run einkürzen (kein owfs-Unterverzeichnis)
                  Code:
                  sed -i 's,PIDDIR=/var/run/owfs,PIDDIR=/var/run,g' /etc/init.d/owserver
                  sed -i 's,PIDDIR=/var/run/owfs,PIDDIR=/var/run,g' /etc/init.d/owhttpd
                  Init-Scripts und Services umbenennen um es dem WG recht zu machen - evtl. reicht es hier auch teilweise die WG-Config im Webmin anzupassen - es sind allerdings auch zahlreiche Verweise hartcodiert!
                  Code:
                  mv /etc/init.d/owserver /etc/init.d/owfs-server
                  sed -i 's/Provides:          owserver/Provides:          owfs-server/g' /etc/init.d/owfs-server
                  update-rc.d owfs-server defaults
                  mv /etc/init.d/owhttpd /etc/init.d/owfs-httpd
                  sed -i 's/Provides:          owhttpd/Provides:          owfs-httpd/g' /etc/init.d/owfs-httpd
                  update-rc.d owfs-httpd defaults
                  Erzeugen eines init.d-Scripts für owfs ("owfs-fuse"), da dieses seltsamerweise nicht bei der Installation von owfs-fuse geschieht:
                  Code:
                  cp /etc/init.d/owfs-server /etc/init.d/owfs-fuse
                  sed -i 's/owserver/owfs/g' /etc/init.d/owfs-fuse
                  sed -i 's/Provides:          owfs/Provides:          owfs-fuse/g' /etc/init.d/owfs-httpd
                  sed -i 's,/usr/bin,/usr/lib/owfs,g' /etc/init.d/owfs-fuse
                  sed -i 's/TCP .erver/FUSE driver/g' /etc/init.d/owfs-fuse
                  update-rc.d owfs-fuse defaults
                  Erzeugen von zwei leeren Config-Dateien damit das WG beim Starten keinen Herzkasper bekommt - kann evtl. später entfallen wenn man das Webmin-Plugin so patcht, dass immer die /etc/owfs.conf angezeigt wird:
                  Code:
                  touch /etc/default/owfs-server
                  touch /etc/default/owfs-httpd
                  RRDTOOL
                  Installation über Debian-Repo
                  Code:
                  apt-get install rrdtool
                  EIBD
                  Installation über vorhandene debs:
                  Code:
                  scp . <user>@<remote-host>:/<bcusdk-debs-dir>/*.deb
                  dpkg -i libpthsem20_2.0.8_armhf.deb libeibclient0_0.0.5_armhf.deb eibd-clients_0.0.5_armhf.deb eibd-server_0.0.5_armhf.deb
                  Installation über Source - QUELLE: bcusdk-repo, NICHT wg-repo!
                  Code:
                   
                  apt-get install debhelper autotools-dev python-dev tcl8.4-dev libperl-dev php5-cli php5-dev automake1.10 autoconf libtool swig libfuse-dev python-central python-support libusb-dev libfuse2 cdbs quilt
                  apt-get source pthsem bcusdk
                  pthsem
                  Man muss debian/rules dem configure noch "--with-mctx-mth=sjlj --with-mctx-dsp=ssjlj --with-mctx-stk=sas" mitgeben, da die armhf-Platform in Kombination mit der glibc falsch verortet wird. Da könnte man nen schönen Patch schreiben...
                  cd pthsem-2.0.8
                  sed -i 's/--enable-compat/--enable-compat --with-mctx-mth=sjlj --with-mctx-dsp=ssjlj --with-mctx-stk=sas /g' debian/rules
                  dpkg-buildpackage -us -ur
                  cd ..
                  dpkg -i libpthsem20_2.0.8_armhf.deb libpthsem-dev.deb
                  bcusdk
                  Wir sparen uns auch noch den M68HC05-GCC zu bauen. Dadurch entfällt die Möglichkeit eigene BCU-Programme zu kompilieren. Wer mag, kann den längeren Weg gehen:
                  cd bcusdk-0.0.5
                  apt-get install bison flex libxml2-dev gcj-jdk fastjar indent
                  Für folgendes sollte es einen Patch geben:
                  In debian/rules muss dem configure noch "--enable-only-eibd" hinzugefügt werden!
                  In debian/control müssen händisch ein paar Anpassungen vorgenommen werden, damit wir um den m68hc05-gcc rumkommen. Zudem muss die Abhängigkeit zum "gcj" auf "gcj-jdk" geändert werden oder "deb-buildpackage" mit "-d" die Dependencies ignorieren:
                  - bei dependencies "m68hc05-gcc" entfernen und "gcj" nach "gcj-jdk" äern
                  - Package "bcusdk-build" komplett entfernen
                  - Verweis auf "bcusdk-build" in Package "bcusdk" entfernen

                  Durch den Einsatz von "-Werror=format-security" kommt es zu einem Fehler wenn printf ohne Formatspecifier aufgerufen wird: In eibd/examples/knxtool.c zeile 212 und 214 je "printf("%s", ...." fixen:
                  sed -i 's/printf (ag/printf ("%s", ag/g' eibd/examples/knxtool.c
                  dpkg-buildpackage -us -ur
                  cd ..
                  dpkg -i libeibclient0_0.0.5_armhf.deb eibd-clients_0.0.5_armhf.deb eibd-server_0.0.5_armhf.deb libeibclient-dev_0.0.5_armhf.deb
                  Default Config & Start-Scripte für den Eibd erstellen/installieren
                  in /etc/default/eibd folgendes eintragen (hier sollte später direkt der TP-UART rein - erstmal so um Fehlermeldungen zu vermeiden):
                  Code:
                   
                  vi /etc/default/eibd
                  ------->
                  EIBD_BACKEND_ADDR = 1.1.241
                  EIBD_BACKEND = ip
                  EIBD_PORT_IP = 224.0.23.12
                  <-------
                  apt-get install setserial
                  wget [URL]http://repo.wiregate.de/wiregate/pool/main/e/eibd-config-wg-0.2-12.deb[/URL]
                  dpkg -i eibd-config-wg-0.2-12.deb
                  update-rc.d eibd defaults
                  Dateien für Gruppenadressen anlegen
                  Entspricht komplett der x86-Anleitung:
                  Code:
                  mkdir /etc/wiregate
                  touch /etc/wiregate/eibga.conf
                  touch /etc/wiregate/eibga_mg.conf
                  touch /etc/wiregate/eibga_hg.conf
                  chmod 555 /etc/wiregate/eibga.conf
                  chmod 555 /etc/wiregate/eibga_hg.conf
                  chmod 555 /etc/wiregate/eibga_mg.conf
                  Monit (Watchdog)
                  Eingriff in /etc/default/monit nicht nötig, da schon START=yes
                  Code:
                   
                  apt-get install monit
                  vi /etc/monit/monitrc
                  ->    include /etc/monit/enable/*
                  weitere Pakete
                  Code:
                  apt-get install ntp beep psmisc python-ownet libownet-php libownet-perl libconfig-general-perl libmath-round-perl libmath-basecalc-perl libconfig-std-perl libproc-daemon-perl libproc-pid-file-perl liblog-log4perl-perl libhtml-parser-perl libxml-simple-perl unzip openvpn
                  Collectd
                  wird momentan nicht im Debian-Repo für armhf vorgehalten (checkt das vorher mit apt-get install collectd!):
                  Code:
                   
                  wget [URL]http://ftp.de.debian.org/debian/pool/main/c/collectd/collectd_4.10.4-1.dsc[/URL]
                  wget [URL]http://ftp.de.debian.org/debian/pool/main/c/collectd/collectd_4.10.4.orig.tar.gz[/URL]
                  wget [URL]http://ftp.de.debian.org/debian/pool/main/c/collectd/collectd_4.10.4-1.diff.gz[/URL]
                  tar -xzvf collectd_4.10.4.orig.tar.gz
                  gzip -d collectd_4.10.4-1.diff
                  cd collectd-4.10.4/
                  patch -p1 < ../collectd_4.10.4-1.diff
                  apt-get install dpatch pkg-config iproute-dev iptables-dev libcurl4-gnutls-dev libdbi0-dev libesmtp-dev libganglia1-dev libgcrypt11-dev libglib2.0-dev libhal-dev libmemcached-dev libmysqlclient-dev libnotify-dev libopenipmi-dev liboping-dev libpcap-dev libpq-dev libprotobuf-c0-dev librrd-dev libsensors4-dev libsnmp-dev libtokyocabinet-dev libtokyotyrant-dev libvirt-dev libyajl-dev openjdk-7-jdk protobuf-c-compiler python-dev
                  In src/netlink.c die zwei "rtnl_dump_filter" einkürzen - nur noch drei Argumente - die beiden NULL-Pointer entfernen (hier bin ich zu blöd um den sed über zwei Zeilen anzuwenden - sorry)
                  In debian/rules "enable-all-plugins" entfernen (er nimmt dann nur die Plugins die funktionieren - scheinbar fehlt aber dem WG nichts...)
                  Code:
                  dpkg-buildpackage -uc -us -d
                  cd ..
                  dpkg -i collectd-core_4.10.4-1_armhf.deb 
                  dpkg -i collectd_4.10.4-1_armhf.deb
                  root-Zugang sichern
                  Ich mache das anders und patche das wg-rootlock-Paket. Ansonsten sei auf die x86-Anleitung verwiesen. Momentan können wir eh nicht automatisch an Updates partizipieren und das Patchen hält das System sauberer.

                  Config Datei für Webmin-Plugin erzeugen
                  hier gibt es geringe Abweichungen zur x86-Anleitung - vergleiche OWFS-Teil:
                  Code:
                  mkdir /etc/webmin/wiregate
                  vi /etc/webmin/wiregate/config
                  ------->
                  owfs_path=/usr/lib/owfs/owfs
                  owfs_pid_file=/var/run/owfs.pid
                  owfs_conf=/etc/owfs.conf
                  owfs_start_cmd=/etc/init.d/owfs-fuse start
                  owfs_stop_cmd=/etc/init.d/owfs-fuse stop
                  owfs_restart_cmd=/etc/init.d/owfs-fuse restart
                  owhttpd_path=/usr/bin/owhttpd
                  owhttpd_pid_file=/var/run/owhttpd.pid
                  owhttpd_conf=/etc/default/owfs-httpd
                  owhttpd_start_cmd=/etc/init.d/owfs-httpd start
                  owhttpd_stop_cmd=/etc/init.d/owfs-httpd stop
                  owhttpd_restart_cmd=/etc/init.d/owfs-httpd restart
                  owserver_path=/usr/bin/owserver
                  owserver_pid_file=/var/run/owserver.pid
                  owserver_conf=/etc/default/owfs-server
                  owserver_start_cmd=/etc/init.d/owfs-server start
                  owserver_stop_cmd=/etc/init.d/owfs-server stop
                  owserver_restart_cmd=/etc/init.d/owfs-server restart
                  eibd_path=/usr/bin/eibd
                  eibd_conf=/etc/default/eibd
                  pid_file=/var/run/eibd.pid
                  eibd_bcuaddrtab_resetcount=/var/log/eibd_bcuaddrtab_resetcount
                  start_cmd=/etc/init.d/eibd start
                  stop_cmd=/etc/init.d/eibd stop
                  restart_cmd=/etc/init.d/eibd restart
                  owsensors_conf=/etc/wiregate/owsensors.conf
                  read_sensors=1
                  <-------
                  WG Baseweb
                  Code:
                  wget [URL]http://repo.wiregate.de/wiregate/pool/main/w/wg-baseweb-0.3-5.deb[/URL]
                  apt-get install libyaml-perl
                  dpkg -i wg-baseweb-0.3-5.deb
                  xplhub
                  - im WG-Package Binaries gegen armhf-Binaries austauschen - mittelfristig: eigenes deb oder WG-source!
                  Code:
                  mkdir xplhub; cd xplhub
                  wget [URL]http://www.xpl4java.org/xPL4Linux/downloads/xPLLib.tgz[/URL]
                  tar -xzvf xPLLib.tgz
                  cd xPLLib; make
                  cd examples; make; cd ../..
                  wget [URL]http://repo.wiregate.de/wiregate/pool/main/x/xplhub-1.31-6.deb[/URL]
                  ar -x xplhub-1.31-6.deb
                  mkdir data; cd data
                  tar -xzvf ../data.tar.gz
                  cp ../xPLLib/examples/xPL_Hub usr/sbin/xplhub
                  cp ../xPLLib/examples/xPL_Hub_static usr/sbin/xplhub_static
                  tar -czvf ../data.tar.gz .
                  cd ..
                  mv xplhub-1.31-6.deb xplhub-1.31-6-armhf.deb
                  ar -r xplhub-1.31-6-armhf.deb data.tar.gz
                  dpkg -i xplhub-1.31-6-armhf.deb
                  libxpl_perl
                  # hier wäre es auch möglich von Sourcen zu bauen - Debian Packages Maintained by Mark Hindess von Mark Hindess
                  - Verwendung einer geringfügig aktuelleren Version als im WG-Repo
                  Code:
                  wget [URL]http://debian.temporalanomaly.com/pool/main/libx/libxpl-perl/libxpl-perl_0.12-1_all.deb[/URL]
                  #wget [URL]http://repo.wiregate.de/wiregate/pool/main/libx/libxpl-perl_0.10-1_all.deb[/URL]
                  apt-get install libyaml-syck-perl
                  dpkg -i libxpl-perl_0.12-1_all.deb
                  cd ..
                  Webmin & Plugins
                  webmin
                  - sollte dauerhaft von webmin.org genommen werden
                  Abhängigkeiten installieren:
                  apt-get install libnet-ssleay-perl libauthen-pam-perl libio-pty-perl
                  wget http://ftp.de.debian.org/debian/pool...2.03-1_all.deb
                  dpkg -i libmd5-perl_2.03-1_all.deb
                  WG-Version des Webmin installieren (geht vielleicht auch anders - Achtung: Pfade sind eigensinnig gewählt!):
                  Code:
                   
                  wget [URL]http://repo.wiregate.de/wiregate/pool/main/w/webmin_1.450-wiregate1_all.deb[/URL]
                  dpkg -i webmin_1.450-wiregate1_all.deb
                  Seltsamerweise wird die /etc/webmin/miniserv.conf nicht angelegt:
                  Code:
                   
                  cd /usr/share/webmin
                  ./setup.sh
                  update-rc verschluckt sich massiv aufgrund fehlender Init-Infos in der /etc/init.d/webmin, also nach der !#-Zeile (shebang) einfügen:
                  Code:
                  ### BEGIN INIT INFO
                  # Provides:          webmin
                  # Required-Start:    $local_fs $network $syslog
                  # Required-Stop:     $local_fs $syslog
                  # Default-Start:     2 3 4 5
                  # Default-Stop:      0 1 6
                  # Short-Description: Start webmin
                  # Description:       Start webmin
                  ### END INIT INFO
                  openvpn-Plugin
                  - von WG installieren, dauerhaft sollte das von webmin.org kommen - kann auch über die Webmin-Oberfläche direkt installiert werden:
                  Code:
                   
                  wget [URL]http://repo.wiregate.de/wiregate/pool/main/w/webmin-openvpn_2.5-wiregate1_all.deb[/URL]
                  dpkg -i webmin-openvpn_2.5-wiregate1_all.deb
                  wiregate-Plugin
                  Code:
                   
                  apt-get install libfilter-perl
                  wget [URL]http://repo.wiregate.de/wiregate/pool/main/libr/librrd-cgi-image-perl_0.03-1_all.deb[/URL]
                  wget [URL]http://repo.wiregate.de/wiregate/pool/main/libs/libspiffy-perl_0.30-1_all.deb[/URL]
                  wget [URL]http://repo.wiregate.de/wiregate/pool/main/w/webmin-wiregate_0.3-41_all.deb[/URL]
                  dpkg -i librrd-cgi-image-perl_0.03-1_all.deb
                  dpkg -i libspiffy-perl_0.30-1_all.deb
                  dpkg -i webmin-wiregate_0.3-41_all.deb
                  wiregated und abh. Pakete
                  Ich patche wg-rootlock um das Ausschalten von ssh und des root-Zugangs zu verhindern
                  Code:
                   
                  mkdir wiregate; cd wiregate
                  apt-get install rungetty ethtool socat liblog-log4perl-perl libproc-pid-file-perl libfile-touch-perl libmath-round-perl librrds-perl libmath-round-perl libconfig-std-perl libproc-daemon-perl
                  apt-get install libxpl-perl xplhub
                  wget [URL]http://repo.wiregate.de/wiregate/pool/main/w/wg-patch-0.0.29.deb[/URL]
                  wget [URL]http://repo.wiregate.de/wiregate/pool/main/w/wiregated-0.9-41.deb[/URL]
                  wget [URL]http://repo.wiregate.de/wiregate/pool/main/w/wg-rootlock-0.2.deb[/URL]
                  mkdir wg-rootlock; cd wg-rootlock
                  ar -x ../wg-rootlock-0.2.deb
                  mkdir control; cd control; tar -xzvf ../control.tar.gz
                  vi postinst
                  Einträge auskommentieren (oder löschen)
                  Code:
                  # update-rc.d -f ssh remove
                  # /etc/init.d/ssh stop
                  # update-rc.d -f linknx remove
                  # /etc/init.d/linknx stop
                  # apt-get -y remove linknx
                  # sed -i -e "s/^root\:x.*/root\:\*LK\*\:0\:\:\:\:\:\:\:\:/" /etc/webmin/miniserv.users
                  # sed -i -e "s/^eib-common/\# eib-common/g" /etc/modules
                  # sed -i -e "s/^eib-8250/\# eib-8250/g" /etc/modules
                  # sed -i -e "s/^eib-pei16/\# eib-pei16/g" /etc/modules
                  wieder Packen:
                  Code:
                  tar -czvf ../control.tar.gz . ; cd ../..
                  cp wg-rootlock-0.2.deb wg-rootlock-0.2-disarmed.deb
                  ar -r wg-rootlock-0.2-disarmed.deb wg-rootlock/control.tar.gz
                  Wir ignorieren die Abhängigkeit owfs-server, da das Paket nun owserver heißt:
                  Code:
                  dpkg -i --ignore-depends=owfs-server,wg-patch wg-rootlock-0.2-disarmed.deb wiregated-0.9-41.deb
                  dpkg -i wg-patch-0.0.29.deb
                  weitere Anpassungen
                  Analog zur x86-Anleitung in der /etc/monit/wg-base auskommentieren:
                  Code:
                  #check device rescue_fs with path /mnt/rescue_fs
                  #if space usage > 98% for 5 times within 15 cycles then alert
                  #if inode usage > 75% then alert
                  bei Bedarf ebenfalls eMail eintragen

                  Das ist alles super-umständlich! Vielleicht gibt es jemanden, der vor allem die Änderungen an den Dateien als Kommandozeilen-Patch schreiben kann? Sicher kann man einige Sachen einfacher machen, insbesondere wenn man fertige Pakete für eibd/pthsem und collectd nimmt und auch Pakete wie xplhub und andere nicht patchen muss. ABER: So kommt jeder zum Ziel!

                  Grüße
                  Robert

                  P.S.: Viel feil ich vorerst nicht mehr daran, sondern werde mir erst einmal die oben angekündigte Hardware bauen: TP-UART (nach Möglichkeit v2) mit galvanische Trennung an einem nativen UART, der bereits vorhandene DS2482S-800 8-fach Busmaster und variable UARTs entweder als RS485 (für mein Hörmann Garagentor) oder als IR-Schnittstelle (für meine Stromzähler).

                  P.P.S.: Bei Bedarf lade ich die erzeugten Pakete für eibd und collectd auf meine Webseite. Das patchen der WG-Pakete sollte aber wohl jeder selber machen.

                  Kommentar


                    #10
                    http://demo.wiregate.de/images/wiregate_logo_big.gif

                    Vorweg ein paar kleine Schönheitskorrekturen:

                    Wie schon in der Original-Anleitung für x86 habe ich den
                    Code:
                    log9:2345:respawn:/usr/bin/vbusmonitor1time local:/tmp/eib >/dev/tty9
                    in der /etc/inittab auskommentiert.
                    Genauso die Zeilen
                    Code:
                    # check VPN-Keys
                    #foreach (qw(ca.crt ta-[URL="http://redaktion.knx-user-forum.de/lexikon/wiregate/"][U][COLOR=#0066cc]wiregate[/COLOR][/U][/URL].key [URL="http://redaktion.knx-user-forum.de/lexikon/wiregate/"][U][COLOR=#0066cc]wiregate[/COLOR][/U][/URL]-central.crt [URL="http://redaktion.knx-user-forum.de/lexikon/wiregate/"][U][COLOR=#0066cc]wiregate[/COLOR][/U][/URL]-central.key)) {
                    #  if (-s "/etc/openvpn/keys/".$_ <10) {
                    #    print "\n<tr><td><font color=red size=3>" .  $text{'contact_support_vpn'}." ($_)  </font></center></td></tr>\n";
                    #  }
                    #}
                    in der /usr/share/webmin/wiregate/index.cgi .

                    Zudem fehlt, wenn man nur über Port 80 auf das Communitygate geht, eine Grafik. Am besten eine eigene Grafik unter /var/www/images mit dem Namen wiregate_logo_big.gif ablegen oder gleich die Grafik raus.

                    DS9490 Quirks / andere Onewire-Master

                    Wenn man sich mit der wiregated.pl beschäftigt findet man ein paar auf den DS9490 ausgerichtete Einträge, die jetzt teilweise stören:

                    Das erste
                    Code:
                     foreach (@ds9490) {
                    [...]
                    tut nicht weh, da die Liste leer ist.

                    Code:
                      if (!@ds9490 and $ds9490_retrys < 10) { # No adapter-Id's in cache -> fill
                      # This is to avoide disconnected adapters owserver looses - not perfect.. 
                        $ds9490_retrys++;
                        my $dummy = `/etc/init.d/owfs-server restart`;
                        sleep (2);
                        INFO("No DS9490 found - owserver restart..");
                        foreach (`owdir -s $owserver_ip | grep '^/81\.'`) {
                            push(@ds9490,$_);
                            DEBUG("found adapter $_");
                            $ds9490_retrys = 0;
                        }
                      }
                    stört allerdings, da hierdurch der owserver bei jedem WG-Start erstmal 10 mal neugestartet wird wenn kein DS9490 dran hängt.
                    Also:
                    Code:
                    sed -i 's/if (!@ds9490/if (0) #(!@ds9490/g' /usr/sbin/wiregated.pl
                    Dauerhaft sollte man hier einfach etwas schreiben, was erkennt dass ein anderer 1W-BM genutzt wird - so reicht es aber erstmal.

                    IPC-Optimierung durch verwenden des shared memory

                    Ohne die /etc/fstab eines originalen WGs zu kennen weiß ich nicht, ob dies nur Nachbauten betrifft:

                    Die IPC bezüglich Plugins (letzte Ausführung, Fehler) zwischen Daemon und Plugin-Webseite im Webmin findet durch die Datenbank "/etc/wiregate/wiregate_plugin.db" statt. Diese wird pro Plugin-Aufruf zweimal geschrieben, was bei schnelleren Aufrufen (hier haben ja manche 2sec "_cycle") ein bisschen nervt und wirklich unnötig auf der SD-Karte rumradiert. Also packen wir die Datei in eine RAM-Disk, die praktischerweise bereits in Form des /run-Verzeichnisses in den meisten Distris (Ubuntu, Debian, Fedora) existiert. Dort in die "shared memory" shm - da passt es genau:
                    Code:
                    sed -i 's;/etc/wiregate/wiregate_plugin.db;/run/shm/wiregate_plugin.db;g' /usr/sbin/wiregated.pl
                    sed -i 's;/etc/wiregate/wiregate_plugin.db;/run/shm/wiregate_plugin.db;g' /usr/share/webmin/wiregate/edit_plugins.cgi
                    Das die alten Laufzeitdaten der Plugins dann nach einem Neustart weg sind ist wohl zu verschmerzen. Zudem kann man natürlich die Datei beim (geordneten) Herunterfahren sichern und beim Starten des Daemon restaurieren.

                    Grüße
                    Robert

                    Kommentar


                      #11
                      Nach längerer Zeit die ich mit einem provisorischen Aufbau verbracht hatte habe ich eine Erweiterungsplatine für das Beaglebone ("Cape") gemacht.

                      Die Platine ist zweilagig, nutzt in dieser ersten Version aber überwiegend die Oberseite, damit bei aufgesteckten Cape alle Signale zugänglich sind.

                      Vorhanden sind:
                      - KNX-Schnittstelle auf Basis des neuen TPUART v2 (QFN36, 3,3V Logikspannung) mit galvanischer Trennung zum zum Rest des Capes
                      - Onewire-Busmaster DS2482-800S mit insgesamt 8 Bussen. Geschützt über DS9503 ESD-Schutzdioden. Angebunden über einen TXS0102 wird der Busmaster mit den maximalen 5V betrieben. Ein DS18B20 onboard für Funktionschecks und Monitoring.
                      - Realtime Clock DS3232 mit integriertem Oszillator und 3V-Pufferbatterie (auf den Bildern mangels Halter noch nicht bestückt).
                      - Bluetooth-Modul "HC05" zur Anbindung eines PV-Wechselrichters (hier Sunnyboy 5000-21TL)
                      - 2x serielle Schnittstelle mit Schutzbeschaltung und Versorgungsspannung zur Anbindung von zwei Schreib-/Leseköpfen für Stromzähler (www.volkszaehler.org oder andere)

                      Bei Interesse gebe ich gerne vier Platinen gegen Unkostenerstattung ab.
                      Wenn die Tage mein RPi kommt gibts dafür vielleicht eine abgespeckte Version (dort ist nur eine serielle Schnittstelle vorhanden).

                      Grüße
                      Robert
                      Angehängte Dateien

                      Kommentar


                        #12
                        Hallo Robert,

                        coole Sache. Und darauf läuft das Communitygate? Hast du mal Perl Plugins für KNX Logiken (z.B. den Logikprozessor von Fry) oder ähnliches probiert? Wegen Performance meine ich.
                        Mit freundlichen Grüßen
                        Niko Will

                        Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                        - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                        Kommentar


                          #13
                          Meine Logiken laufen völlig problemlos. Insbesondere was Logiken angeht hätte ich eher beim Wiregate Sorgen... siehe 7-Zip LZMA Benchmark

                          Kommentar


                            #14
                            Da ich nur einen 1Wire Bus momentan habe ist das für mich jetzt nicht so dringend, aber interessant finde ich deine Projekte schon wenngleich ich zu wenig davon verstehe als das ich es wirklich beurteilen könnte.
                            Mit freundlichen Grüßen
                            Niko Will

                            Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                            - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                            Kommentar


                              #15
                              Hi Robert,

                              ich bin an einer Platine interessiert.
                              Meine Kontaktdaten müsstest Du schon haben.

                              Kommt die Platine fertig bestückt oder darf man selber löten?

                              Gruß
                              Klaus

                              Kommentar

                              Lädt...
                              X