ethersex auf Pollin Net-IO mit RFM12


Wo fange ich hier an? Ich denke bei der Idee. Für ein Projekt wollte ich ein paar Rechner dezentral laufen lassen, aber volle Kontrolle darüber haben. Klar kann man per Teamviewer, VNV über VPN oder RDP von der Ferne zugreifen, aber das geht nur so lange die Kiste auch erreichbar ist und nicht eingefroren ist. Man benötigt also etwas, um die Rechner aus der Ferne neu zu starten und das möglichst, indem man den Rechner stromlos schaltet.
Nach ein wenig googeln hab ich auch ein paar nette Steckdosen mit IP Anschluss gefunden, die aber nicht in meiner Preisklasse liegen. Außerdem wäre es doch cool, wenn man die Verbraucher in einem gewissen Abstand betreiben könnte. Stichwort: Funksteckdosen über einen RFM12 Modul direkt schalten.

Bei pollin habe ich ein nettes AVR Board gefunden, wo schon der Netzwerkstack implementiert wurde und sich über diverse Erweiterungen aufbohren lässt. Dazu aber in einem späteren Beitrag mehr. Heute möchte ich die Softwareseite etwas mehr beleuchten.  Als für mich optimal hat sich eine alternative Firmware namens ethersex  herauskristallisiert.
Es gibt noch eine ganze Menge mehr, aber hier ist vieles schon on-the-box.
Wenn Ihr die Firmware lokal habt, so wie im WIKI beschrieben, geht’s los an die Konfiguration.
Mit

sudo make menuconfig

kommt man über das Terminal in die Konfiguration des Paketes.
Die einzelnen Menüs habe ich so eingestellt.
General Setup
[*] Prompt for experimental code │ │
│ │ [ ] Prompt all possible options (expert mode) │ │
│ │ (AVR) Target Architecture │ │
│ │ (ATmega32) Target MCU │ │
│ │ (16000000) MCU frequency │ │
│ │ (Netio) Hardware/Periphery Class │ │
│ │ [ ] Use CPU sleep (EXPERIMENTAL) │ │
│ │ [ ] External SRAM support —> │ │
│ │ [-] Build a bootloader │ │
│ │ — CRC padding and VFS inlining currently incompatible │ │
│ │ [ ] Teensy build │ │
│ │ [ ] Use SPI Timeout │ │
│ │ [ ] Use Usart in SPI Mode │ │
│ │ [ ] Use Software-SPI │ │
│ │ (Release-Version) Version String │ │
│ │ [ ] Debug: Discard some packets │ │
│ │ [ ] Enable Debugging —> │ │
│ │ [*] Status LEDs —> │ │
│ │ [ ] Cryptographic functionality —> │ │
│ │ [*] VFS (Virtual File System) support —>
[ ] Status LED (Power) │ │
│ │ [ ] Status LED (Booted) │ │
│ │ [ ] Status LED (Net link) │ │
│ │ [*] Status LED (Transmitted) │ │
│ │ [*] RFM12 TX │ │
│ │ [-] ZBUS TX │ │
│ │ [-] IRMP TX │ │
│ │ [ ] Status LED (Received) │ │
│ │ [-] RFM12 RX │ │
│ │ [-] ZBUS RX │ │
│ │ [-] IRMP RX │ │
│ │ [ ] Heartbeat / Activity LED │ │
│ │ [-] Heartbeat │ │
│ │ [-] RFM12 TX Activity │ │
│ │ [-] RFM12 RX Activity │ │
│ │ [-] ZBUS TX Activity │ │
│ │ [-] ZBUS RX Activity │ │
│ │ [-] ECMD Activity
[ ] Atmel SPI Dataflash │ │
│ │ [*] VFS File Inlining —> │ │
│ │ [ ] Host Filesystem │ │
│ │ [ ] SD/MMC-Card Access —> │ │
│ │ [-] EEPROM (24cxx) Filesystem │ │
│ │ [-] EEPROM (24cxx) Raw Access │ │
│ │ [-] DC3840 Camera │ │
│ │ — Debugging Flags │ │
│ │ [-] Dataflash File System │ │
│ │ [-] Inode Table │ │
│ │ [-] Mark │ │
│ │ [-] VFS EEPROM │ │
│ │ [-] SD-Reader
 
VFS File Inlining
— — You can enable various html pages for various features │ │
│ │ [ ] Inline configuration page │ │
│ │ [-] Inline the .config │ │
│ │ [-] Inline message of the day │ │
│ │ [*] Inline RFM12 │ │
│ │ [-] Inline I2C │ │
│ │ [*] Inline IO │ │
│ │ [-] Inline KTY │ │
│ │ [-] Inline ADC │ │
│ │ [-] Inline OneWire │ │
│ │ [-] Inline Camera │ │
│ │ [-] Inline Named Pin │ │
│ │ [-] Inline StellaLight │ │
│ │ [-] Inline MotorCurtain │ │
│ │ [-] Inline Dachs MSR1 │ │
│ │ [-] Inline Tecos TO-1
[*] Ethernet (ENC28J60) support —> │ │
│ │ [-] Ethernet (Linux TAP) support —> │ │
│ │ [ ] IP over RFM12 (FSK transmitter) support —> │ │
│ │ [-] RFM12 raw │ │
│ │ [ ] USB (Softwarestack) Support —> │ │
│ │ [ ] ZBus Support —> │ │
│ │ [-] ZBUS raw │ │
│ │ — IP configuration │ │
│ │ [ ] IPv6 support │ │
│ │ [-] Enable IP forwarding │ │
│ │ [ ] Enable TCP inactivity timeout │ │
│ │ Default gateway: “192.168.0.1” │ │
│ │ [ ] IPchair (firewalling) (EXPERIMENTAL) │ │
│ │ [-] IPchair: Masquerading (UNTESTED) │ │
│ │ [*] TCP support │ │
│ │ [ ] UDP support │ │
│ │ [-] UDP broadcast support │ │
│ │ [*] ICMP support │ │
│ │ [-] DNS support —>
MAC address: “00:22:f9:01:0c:65” │ │
│ │ Randomize MAC address │ │
│ │ [-] Static IPv6 configuration │ │
│ │ — Static IPv4 configuration │ │
│ │ IP address: “192.168.0.90” │ │
│ │ Netmask: “255.255.255.0” │ │
│ │ [ ] 802.1q Support (EXPERIMENTAL) │ │
│ │ — Debugging Flags │ │
│ │ [-] ENC28J60 │ │
│ │ [-] Interrupt │ │
│ │ [-] Rev. 4 Workaround │ │
│ │
│ [ ] Buttons Input —> │ │
│ │ [*] RFM12 ASK —> │ │
│ │ [ ] SHT 1x/7x humidity & temp sensors —> │ │
│ │ [ ] ZACwire for TSic sensors —>
│ │ [*] 433MHz │ │
│ │ (0) RFM12 select │ │
│ │ [*] Pollin/Kangtai Powerswitch (IC 2272) │ │
│ │ [*] Pollin Powerswitch buried (IC 1527) │ │
│ │ [*] Tevion Powerswitch │ │
│ │ [*] Intertechno ITS-150 │ │
│ │ [*] External filter │ │
│ │ [*] Sensing │ │
│ │ — │ │
│ │ [ ] 868MHz │ │
│ │ [-] FS20 │ │
│ │ [-] FHT │ │
│ │ — Debugging Flags │ │
│ │ [-] Sensing │ │
│ │ │ │
│ │
[-] Art-Net Node —> │ │
│ │ [ ] DALI light control —> │ │
│ │ [-] DMX Support —> │ │
│ │ [*] ECMD (Ethersex Command) support —> │ │
│ │ [ ] Fnordlicht —> │ │
│ │ [-] httplog client (EXPERIMENTAL) —> │ │
│ │ [ ] IRC client (EXPERIMENTAL) —> │ │
│ │ [-] MDNS service announcement (Avahi) │ │
│ │ [ ] Modbus Support │ │
│ │ [-] MySQL client (EXPERIMENTAL) —> │ │
│ │ [-] netStat client (EXPERIMENTAL) —> │ │
│ │ [ ] SOAP (XML RPC) (EXPERIMENTAL) │ │
│ │ [-] Simple Network Managment Protocol support (snmp) —> │ │
│ │ [ ] Sendmail support (DEPRECATED) —> │ │
│ │ [-] SMS77 client (EXPERIMENTAL) —>
│ [ ] Application Sample (EXPERIMENTAL) —> │ │
│ │ [-] Bulbdial Clock (EXPERIMENTAL) —> │ │
│ │ [ ] System clock support —> │ │
│ │ [-] Cron daemon (Dynamic) —> │ │
│ │ [-] Cron daemon (Static) │ │
│ │ [ ] DynDNS support —> │ │
│ │ [ ] DMX Storage (EXPERIMENTAL) —> │ │
│ │ [-] DMX FXslots for effects and animations —> │ │
│ │ [-] UDP Echo │ │
│ │ [-] Wake on Lan (WOL) │ │
│ │ [ ] Message of the day (MOTD) —> │ │
│ │ [*] HTTP Server —> │ │
│ │ [ ] Jabber Client —> │ │
│ │ [-] Moodlight —> │ │
│ │ [ ] StellaLight: Multichannel pwm —> │ │
│ │ [-] Starburst: Multichannel pwm (EXPERIMENTAL) —> │ │
│ │ [-] Motor Curtain —> │ │
│ │ [-] TFTP support │ │
│ │ [-] uPnP (EXPERIMENTAL) —> │ │
│ │ [-] Watch IO changes (and react) —>
Weiterhin muss noch in der
ethersex/pinning/hardware   die Statusleuchte angepasst werden. (wenn vorhanden)
ifdef(`conf_RFM12', `dnl
/* port the rfm12 module CS is attached to */
pin(SPI_CS_RFM12_0, PD5, OUTPUT)
pin(STATUSLED_RFM12_TX, PB0, OUTPUT)
RFM12_USE_INT(1)RFM12_ASK_SENSE_USE_INT(1)
‘)
mit

sudo make

wird dann compaliert, und mit

sudo avrdude -v -p m32 -c usbtiny -U flash:w:ethersex.hex

kann man die Datei auf den AVR übertragen (bitte den Schalter -c auf den eigenen Adapter anpassen)
Das .hex File kann natürlich auch mit jedem anderen tool gebrannt werden.
Den Schaltplan könnt Ihr hier recht schnell zum Nachbau nutzen. Noch ein paar Infos zum Modul selbst. Wer dann doch lieber einen Atmel nutzen möchte, der ist hier gut aufgehoben.
Schon jemand nachgebaut?