Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
wiki:ems:net_io [2015/01/15 22:14] karlmw [NetIO] |
— (aktuell) | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== EMS <> Adapter <> NetIO <> Raspi ====== | ||
- | Wer zu den bedauernswerten Menschen gehört, die von IngoF kein Gateway abbekommen haben, muss dennoch nicht verzweifeln. ;-) \\ | ||
- | Mit Hilfe von Pollins AVR NetIO lässt sich für kleines Geld eine passable Schnittstelle zwischen EMS und Ethernet erstellen. Was im Einzelnen zu tun ist, soll hier kurz vorgestellt werden. \\ | ||
- | \\ | ||
- | N.b.: Selbst Ingos EMS-GW kann mit der [[wiki: | ||
- | |||
- | ===== Schema ===== | ||
- | Vorab eine Schemazeichnung zum besseren Verständnis: | ||
- | < | ||
- | | ||
- | | Buderus |---EMS-RC-(2pol)---| Adapter |---(10pol)---| NetIO |---LAN--> | ||
- | | ||
- | |||
- | | ||
- | | ||
- | | ||
- | </ | ||
- | |||
- | ===== Adapter ===== | ||
- | ==== Hardware ==== | ||
- | Wie oben bereits angedeutet, braucht es zunächst einen Adapter, der die EMS-Signale für den UART des NetIO aufbereitet. Wir bedienen uns hier [[http:// | ||
- | Alle Verbindungen zwischen Adapter und NetIO (Ext) verlaufen über die 2x 5 poligen Pfostenbuchsen. Außerdem wurde die 1-Wire-Schnittstelle des NetIO herausgeführt. Bei diskretem (through hole) Aufbau können die vier parallelen Widerstände im Sendeteil mit jeweils 910R problemlos gegen einen 1-Watt Widerstand mit 220R getauscht werden. Wer Strom sparen will, wählt höhere Vorwiderstände für die Leds. \\ | ||
- | Eine Eagle-Schaltplanvorlage gibt es {{: | ||
- | Hier die Vorder- und Rückseite (nicht gespiegelt!) der Lochrasterplatine: | ||
- | \\ | ||
- | {{: | ||
- | \\ | ||
- | \\ | ||
- | \\ | ||
- | (Achtung Fehlerteufel: | ||
- | {{: | ||
- | \\ | ||
- | \\ | ||
- | \\ | ||
- | So, oder so ähnlich sieht die {{: | ||
- | \\ | ||
- | \\ | ||
- | Maciej Piliński hat sich die Mühe gemacht und eine Eagle-Vorlage entworfen. Näheres samt Download findet Ihr im Thread unter: [[http:// | ||
- | ===== NetIO ===== | ||
- | ==== Hardware ==== | ||
- | Den NetIO gibt es bei [[http:// | ||
- | ==== Software ==== | ||
- | Als Software dient [[http:// | ||
- | |||
- | |||
- | Nach Aufruf des Konfigurationsmenüs // | ||
- | < | ||
- | General Setup ---> | ||
- | (AVR) Target Architecture | ||
- | (ATmega644p) Target MCU | ||
- | (16000000) MCU frequency | ||
- | (Netio) Hardware/ | ||
- | [*] Status LEDs ---> | ||
- | [*] Status LED (Transmitted) | ||
- | [*] EMS TX | ||
- | [*] Status LED (Received) | ||
- | [*] EMS RX OK | ||
- | [*] Status LED (Error) | ||
- | [*] EMS RX Failure | ||
- | [*] VFS (Virtual File System) support | ||
- | [*] VFS File Inlining | ||
- | [*] Inline IO | ||
- | [*] Inline ADC | ||
- | [*] Inline OneWire | ||
- | [*] Support Inline SVG | ||
- | </ | ||
- | < | ||
- | Network | ||
- | Hostname: " | ||
- | (500) Network Buffer Size | ||
- | [*] Ethernet (ENC28J60) support | ||
- | MAC address: "hier die MAC-Adresse vom Aufkleber des ATmega32 eintragen" | ||
- | --- Static IPv4 configuration | ||
- | - IP address: " | ||
- | - Netmask: " | ||
- | [*] TCP support | ||
- | [*] ICMP support | ||
- | </ | ||
- | < | ||
- | I/O ---> | ||
- | (Simple) I/O abstraction model (Port I/O) | ||
- | [*] Onewire support | ||
- | [*] Onewire device detection support | ||
- | </ | ||
- | < | ||
- | Protocols | ||
- | [*] ECMD (Ethersex Command) support | ||
- | [*] TCP/Telnet | ||
- | (2701) | ||
- | [*] EMS Support | ||
- | (64) EMS Buffer Length | ||
- | (7950) EMS TCP Port | ||
- | [*] Statistics ECMD | ||
- | </ | ||
- | < | ||
- | Applications | ||
- | [*] System clock support | ||
- | [*] Date and Time support | ||
- | Timezone | ||
- | (60) Local time offset to UTC (minutes) | ||
- | --- Daylight saving | ||
- | (60) Time offset (minutes) | ||
- | --- Begin of daylight saving | ||
- | (3) Month (1-12) | ||
- | (5) Week (1-5) | ||
- | (0) Day of week (0-6) | ||
- | (2) Hour (0-23) | ||
- | --- End of daylight saving | ||
- | (10) Month (1-12) | ||
- | (5) Week (1-5) | ||
- | (0) Day of week (0-6) | ||
- | (3) Hour (0-23) | ||
- | [*] HTTP Server | ||
- | (80) HTTP port (default 80) | ||
- | (8000) HTTP alternative port (default 8000) | ||
- | </ | ||
- | < | ||
- | AVRDUDE configuration | ||
- | Falls Ihr mit AVRDUDE arbeitet: | ||
- | Euren Programmer auswählen. | ||
- | | ||
- | Die Fuses werden wie folgt belegt: | ||
- | (e7) Fuse Low Byte (FLB) | ||
- | (dc) Fuse High Byte (FHB) | ||
- | (ff) Extended Fuse Byte (EFB) | ||
- | </ | ||
- | Achtung: Die " | ||
- | \\ | ||
- | \\ | ||
- | Nach Abschluß der Konfiguration sollte ein // | ||
- | |||
- | < | ||
- | MCU: atmega644p | ||
- | Hardware: netio | ||
- | |||
- | These modules are currently enabled: | ||
- | ====================================== | ||
- | * ADC * ADC_INLINE * CLOCK * CLOCK_DATETIME * ECMD_PARSER * ECMD_TCP * EMS * ENC28J60 * ETHERNET | ||
- | * HTTPD * ICMP * IPV4 * NET * ONEWIRE * ONEWIRE_DETECT * ONEWIRE_DETECT_ECMD * ONEWIRE_INLINE | ||
- | * PORTIO_SIMPLE * STATUSLED_EMS_RX_FAIL * STATUSLED_EMS_RX_OK * STATUSLED_EMS_TX * STATUSLED_ERROR | ||
- | * STATUSLED_RX * STATUSLED_TX * TCP * UIP * VFS * VFS_INLINE * VFS_INLINE_INLINESVG * VFS_IO_INLINE | ||
- | </ | ||
- | |||
- | Selbstverständlich können weitere Module hinzukonfiguriert werden. ADC, der Webserver (HTTPD), OneWire und VFS sind für EMS nicht erforderlich und können abgewählt werden. Alles ganz nach Belieben. | ||
- | |||
- | Vor dem Kompilieren sind noch folgende Änderungen in **" | ||
- | < | ||
- | ifdef(`conf_ONEWIRE', | ||
- | /* onewire port range */ | ||
- | ONEWIRE_PORT_RANGE(PD5, | ||
- | ')dnl | ||
- | |||
- | ifdef(`conf_EMS', | ||
- | pin(EMS_UART_TX, | ||
- | ') | ||
- | ifdef(`conf_STATUSLED_EMS_TX', | ||
- | pin(STATUSLED_EMS_TX, | ||
- | ') | ||
- | ifdef(`conf_STATUSLED_EMS_RX_OK', | ||
- | pin(STATUSLED_EMS_RX_OK, | ||
- | ') | ||
- | ifdef(`conf_STATUSLED_EMS_RX_FAIL', | ||
- | pin(STATUSLED_EMS_RX_FAIL, | ||
- | ') | ||
- | </ | ||
- | |||
- | Die Portbelegung des ATmega644p stellt sich jetzt wie folgt dar: \\ | ||
- | PD2 = RX \\ | ||
- | PD3 = TX \\ | ||
- | PD4 = Led TX \\ | ||
- | PD5 = 1-Wire \\ | ||
- | PD6 = Led RX ok \\ | ||
- | PD7 = frei \\ | ||
- | PB0 = Led RX fail \\ | ||
- | |||
- | Jetzt noch ein // | ||
- | |||
- | ==== HexFile ==== | ||
- | |||
- | Einen fertigen Hexfile gibt es {{: | ||
- | |||
- | **Bitte beachten!** | ||
- | Die einkompilierte IP-Adresse ist 192.168.0.0, | ||
- | |||
- | Das solltet Ihr entsprechend ändern! Bei laufendem NetIO geht das per Browser wie folgt:\\ | ||
- | * http:// | ||
- | * http:// | ||
- | * http:// | ||
- | |||
- | Ein " | ||
- | |||
- | Abschließend bitte noch mal die " | ||
- | Fuse Low Byte (FLB) = e7, Fuse High Byte (FHB) = dc, Extended Fuse Byte (EFB) = ff. | ||
- | |||
- | |||
- | ===== Raspberry Pi ===== | ||
- | |||
- | ==== Hardware ==== | ||
- | |||
- | Ja klar, es muss nicht unbedingt ein Raspberry sein. Aber, der ist klein, stromsparend und bringt alles mit, was man für einen HomeServer so braucht. Wie man den Raspi auf Touren bringt, das findet sich im Netz, z.B. | ||
- | [[http:// | ||
- | |||
- | ==== Software ==== | ||
- | |||
- | Hier werkelt ein **Raspbian**. Das hat den Vorteil, dass nicht viel konfiguriert und gebastelt werden muss und man sich aus den Wheezy-Quellen bedienen kann. Den Download gibt's [[http:// | ||
- | |||
- | Wenn der Raspi mit der Standardsoftware läuft, holen wir uns noch folgende Bibliotheken: | ||
- | < | ||
- | root> apt-get update | ||
- | root> apt-get upgrade | ||
- | root> apt-get install build-essential libboost1.50-all mysql-server mysql-client libmysql++ php5-mysql | ||
- | root> apt-get install git telnet php5 php5-cgi gnuplot | ||
- | </ | ||
- | |||
- | (Anm.: Bei einigen läuft es nur mit der libboost1.49-all. Fragt mich nicht warum. :?:) | ||
- | |||
- | Als Webserver empfehle ich [[http:// | ||
- | Die Einrichtung von lighttpd ist in [[http:// | ||
- | |||
- | Zum Einsatz für EMS kommt wieder mal Dannys Software, die gibt es per git bei [[http:// | ||
- | |||
- | Im Verzeichnis " | ||
- | |||
- | Im Ordner " | ||
- | |||
- | Falls alles ordnungsgemäß geklappt hat, könnt Ihr auf der Konsole mit einem **//" | ||
- | Für einen ersten Test starten wir den ems-collector mit **//" | ||
- | " | ||
- | " | ||
- | Auf der Konsole tanzen jetzt die EMS-Telegramme und eventuelle Debug-Meldungen. | ||
- | |||
- | === Hinweis: Die mysql-Datenbank findet sich im Verzeichnis "/ | ||
- | |||
- | Zur Konfiguration des ems-collector kopieren wir die Datei " | ||
- | < | ||
- | # Defaults file for EMS collector daemon | ||
- | # This is a POSIX shell fragment | ||
- | |||
- | # if you need further configuration | ||
- | # config file location | ||
- | # CONFIGFILE="/ | ||
- | |||
- | # Serial device file | ||
- | # SERIALDEVICE="/ | ||
- | |||
- | # Where to put the PID file | ||
- | PIDFILE="/ | ||
- | |||
- | # Other options -- command-port, | ||
- | # For debugging purposes insert "-d all=/ | ||
- | OPTIONS=" | ||
- | </ | ||
- | |||
- | Damit der ems-collector nach einem Neustart des Raspberry auch anläuft oder auf Befehle hört, wie: \\ | ||
- | **//" | ||
- | müssen wir noch die Datei " | ||
- | |||
- | Jetzt noch die Dateien aus dem Webpage-Ordner in den Server-Ordner " | ||
- | |||
- | Alternativ könnt Ihr Euch auch mit telnet auf den Port 7777 des Rechners, auf dem der Collector läuft, verbinden **//" | ||
- | |||
- | ===== Tipps ===== | ||
- | ==== Neues Frontend ==== | ||
- | Inzwischen, Mitte März 2014, hat Michael Moosbauer (moosy) Dannys collector " | ||
- | |||
- | ==== MySql Benutzer anlegen ==== | ||
- | pi> sudo mysql -u root -p | ||
- | mysql> select password(' | ||
- | +-------------------------------------------+ | ||
- | | password(' | ||
- | +-------------------------------------------+ | ||
- | | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 | | ||
- | +-------------------------------------------+ | ||
- | 1 row in set (0.00 sec) | ||
- | |||
- | mysql> create user ems identified by password ' | ||
- | mysql> GRANT ALL ON ems_data.* TO ' | ||
- | | ||
- | Nachdem der collectord einmalig erfolgreich gestartet ist, wurden die nötigen Tabellen | ||
- | ===== Finito ===== | ||
- | |||
- | Fragen, Anregungen, Ergänzungen und Korrekturen bitte im [[http:// |