Zurück   KNX-User-Forum > Öffentlicher Bereich > KNX EIB Forum > DIY - do it yourself
knx-user-forum - International KNX Award Winner 2010


Links
Kalender
Spende

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 16.01.2012, 22:15
Benutzer
 
Registriert seit: 29.11.2010
Ort: Dortmund
Beiträge: 387
Robert sorgt für eine eindrucksvolle AtmosphäreRobert sorgt für eine eindrucksvolle Atmosphäre
Standard - √ - 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 (http://knx-user-forum.de/wiregate/17...unitygate.html).

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 - √ - Probleme mit eibd auf Qnap 419 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 ..

Geändert von Robert (17.01.2012 um 02:29 Uhr) Grund: Ergänzungen
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #2  
Alt 27.01.2012, 20:54
Erfahrener Benutzer
 
Registriert seit: 07.05.2010
Ort: Bremen
Beiträge: 2.455
henfri befindet sich auf einem aufstrebenden Ast
Standard

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
__________________
Aus Bremen und Umgebung?
Komm zum Stammtisch!
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #3  
Alt 30.01.2012, 20:50
Benutzerbild von makki
Erfahrener Benutzer
 
Registriert seit: 07.07.2007
Beiträge: 11.779
makki sorgt für eine eindrucksvolle Atmosphäremakki sorgt für eine eindrucksvolle Atmosphäremakki sorgt für eine eindrucksvolle Atmosphäremakki sorgt für eine eindrucksvolle Atmosphäremakki sorgt für eine eindrucksvolle Atmosphäremakki sorgt für eine eindrucksvolle Atmosphäre
Standard

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 & HS3(+Lüfter+picoPSU80), Multiroom-AV mit Russound,mpd,vdr,DM8000, Profilux II+, N141 DALI, DMX, dez. Lüfter (RS485), Wärmepumpe (RS422), 30+ 1-Wire Temp,Luft&Bodenfeuchte,IRTrans
WireGate - Supportforum - bitte keine PN's!
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #4  
Alt 06.02.2012, 19:59
Benutzer
 
Registriert seit: 02.06.2007
Beiträge: 198
Martin J. wird schon bald berühmt werden
Standard

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
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #5  
Alt 06.02.2012, 22:24
Benutzer
 
Registriert seit: 29.11.2010
Ort: Dortmund
Beiträge: 387
Robert sorgt für eine eindrucksvolle AtmosphäreRobert sorgt für eine eindrucksvolle Atmosphäre
Standard

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)
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #6  
Alt 18.02.2012, 03:06
Benutzerbild von makki
Erfahrener Benutzer
 
Registriert seit: 07.07.2007
Beiträge: 11.779
makki sorgt für eine eindrucksvolle Atmosphäremakki sorgt für eine eindrucksvolle Atmosphäremakki sorgt für eine eindrucksvolle Atmosphäremakki sorgt für eine eindrucksvolle Atmosphäremakki sorgt für eine eindrucksvolle Atmosphäremakki sorgt für eine eindrucksvolle Atmosphäre
Standard

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 & HS3(+Lüfter+picoPSU80), Multiroom-AV mit Russound,mpd,vdr,DM8000, Profilux II+, N141 DALI, DMX, dez. Lüfter (RS485), Wärmepumpe (RS422), 30+ 1-Wire Temp,Luft&Bodenfeuchte,IRTrans
WireGate - Supportforum - bitte keine PN's!
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #7  
Alt 18.02.2012, 07:39
Benutzer
 
Registriert seit: 29.11.2010
Ort: Dortmund
Beiträge: 387
Robert sorgt für eine eindrucksvolle AtmosphäreRobert sorgt für eine eindrucksvolle Atmosphäre
Standard

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
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #8  
Alt 19.02.2012, 23:13
Benutzerbild von makki
Erfahrener Benutzer
 
Registriert seit: 07.07.2007
Beiträge: 11.779
makki sorgt für eine eindrucksvolle Atmosphäremakki sorgt für eine eindrucksvolle Atmosphäremakki sorgt für eine eindrucksvolle Atmosphäremakki sorgt für eine eindrucksvolle Atmosphäremakki sorgt für eine eindrucksvolle Atmosphäremakki sorgt für eine eindrucksvolle Atmosphäre
Standard

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 & HS3(+Lüfter+picoPSU80), Multiroom-AV mit Russound,mpd,vdr,DM8000, Profilux II+, N141 DALI, DMX, dez. Lüfter (RS485), Wärmepumpe (RS422), 30+ 1-Wire Temp,Luft&Bodenfeuchte,IRTrans
WireGate - Supportforum - bitte keine PN's!
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #9  
Alt 09.03.2012, 11:46
Benutzer
 
Registriert seit: 29.11.2010
Ort: Dortmund
Beiträge: 387
Robert sorgt für eine eindrucksvolle AtmosphäreRobert sorgt für eine eindrucksvolle Atmosphäre
Beitrag Anleitung zur Installation

Hallo,

befeuert durch diese ARM-Server: pro/kontra? 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 http://repo.wiregate.de/wiregate/poo...-wg-0.2-12.deb
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 http://ftp.de.debian.org/debian/pool...d_4.10.4-1.dsc
wget http://ftp.de.debian.org/debian/pool....4.orig.tar.gz
wget http://ftp.de.debian.org/debian/pool...10.4-1.diff.gz
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 http://repo.wiregate.de/wiregate/poo...eweb-0.3-5.deb
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 http://www.xpl4java.org/xPL4Linux/downloads/xPLLib.tgz
tar -xzvf xPLLib.tgz
cd xPLLib; make
cd examples; make; cd ../..
wget http://repo.wiregate.de/wiregate/poo...hub-1.31-6.deb
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 http://debian.temporalanomaly.com/po...0.12-1_all.deb
#wget http://repo.wiregate.de/wiregate/poo...0.10-1_all.deb
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 http://repo.wiregate.de/wiregate/poo...egate1_all.deb
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 http://repo.wiregate.de/wiregate/poo...egate1_all.deb
dpkg -i webmin-openvpn_2.5-wiregate1_all.deb
wiregate-Plugin
Code:
 
apt-get install libfilter-perl
wget http://repo.wiregate.de/wiregate/poo...0.03-1_all.deb
wget http://repo.wiregate.de/wiregate/poo...0.30-1_all.deb
wget http://repo.wiregate.de/wiregate/poo...0.3-41_all.deb
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 http://repo.wiregate.de/wiregate/poo...tch-0.0.29.deb
wget http://repo.wiregate.de/wiregate/poo...ted-0.9-41.deb
wget http://repo.wiregate.de/wiregate/poo...otlock-0.2.deb
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.
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
  #10  
Alt 21.03.2012, 09:26
Benutzer
 
Registriert seit: 29.11.2010
Ort: Dortmund
Beiträge: 387
Robert sorgt für eine eindrucksvolle AtmosphäreRobert sorgt für eine eindrucksvolle Atmosphäre
Standard 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-wiregate.key wiregate-central.crt wiregate-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
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Antwort

Stichworte
communitygate, knx, linux, onewire, tpuart

Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus



Alle Zeitangaben in WEZ +2. Es ist jetzt 19:17 Uhr.



SEO by vBSEO