Support série NUT sur OpenWrt

Mon onduleur Eaton 5P possède de connexion double: USB et série. Comme la plupart des routeurs micro-entreprise (SOHO) compatibles OpenWrt possèdent d'un port USB plutôt qu'un port série, il est simple de connaitre l'onduleur au routeur par USB.

D'après mon expérience, si l'onduleur Eaton 5P bascule vers la batterie et revient à la secteur assez souvent, la connexion USB peut être interrumpue. La connexion série semble être plus fiable.

Configuration matérielle

Tu as besoin:

  1. Ondouleur compatible NUT avec port série.
  2. Adaptateur/cable USB-série de bonne qualité (FTDI ou CP210X puces sont recommandées).
  3. Routeur OpenWrt avec connexion USB.
  4. Cables.

Ma configuration: Onduleur Eaton 5P, adaptateur FTDI USB-série et un vieux routeur Asus WL-500G Premium V2. En fait tu peux utiliser ton router OpenWrt avec port USB et ton adaptateur USB-série.

|..................... Ma configuration.....................|
|                                                           |
| OpenWrt <---- USB ----> USB-serial <---- serial ----> UPS |
| router                   adapter                          |


|......................... USB seul ........................|
|                                                           |
| OpenWrt <------------------ USB --------------------> UPS |
| router                     cable                          |

IMPORTANT! N'utilise pas le port série et USB de ton onduleur Eaton 5P dans le même temps.

Configuration logiciel

NUT propose usbhid-ups pilote pour la connexion USB et la pilote mge-shut pour la connexion série.

Par défaut, la version packagée de NUT dans OpenWrt 18.06 ne contient pas le support série et il faut recompiler. Après cela, les packages NUT peuvent être televerser vers le routeur OpenWrt et peut être installer manuellement.

Télécharger les sources. Choix la branche selon ta version OpenWrt/Lede.

git clone -b openwrt-18.06 https://github.com/openwrt/openwrt.git
cd openwrt

Télécharger et preparer les feeds.

scripts/feeds update -a
scripts/feeds install -a

Trouves les variables LEDE_BOARD et LEDE_ARCH dans le fichier /etc/os-release. Ce sont le target et subtarget de ton OpenWrt.

...
LEDE_BOARD="brcm47xx/legacy" # Example board.
LEDE_ARCH="mipsel_mips32"    # Example arch.
...

Lancer OpenWrt Configurator.

make menuconfig

Sélectionnes les réglage appropriés à ta configuration OpenWrt. Choix target, subtarget et target profile selon ton routeur.

Target System -> Broadcom BCM47xx/53xx (MIPS) # Choix le target.
Subtarget -> Legacy (BMIPS3300)               # Choix le subtarget.
Target Profile -> Asus WL-500gP v2            # Choix le target profile.
...
[*] Advanced configuration options (for developers)
...
[*] Build the OpenWrt SDK
...
Kernel modules --->
 USB Support --->
  <M> kmod-usb-serial
...
Libraries --->
 ...
 <M> libusb-1.0
 <M> libusb-compat
...
Network --->
 ...
 <M> nut --->
  ...
  [*]   Build with support for USB drivers
  ...
  [*]   Build with support for serial drivers
  ...
  <M> nut-driver-mge-shut
  ...
  <M> nut-driver-usbhid-ups
  ...
  <M> nut-server
  <M> nut-upsc
  <M> nut-upscmd
  <M> nut-upslog
  ...
  <M> nut-upsrw
  <M> nut-upssched
Notes que les target, subtarget et target profile sont just des exemples.

Compiler la système de base. Cela dure longtemps.

make

Compiler les packages NUT.

make package/nut/download V=99
make package/nut/prepare V=99
make package/nut/compile V=99
make package/index

Les packages sont compiler sous la répertoire bin/packages/<ARCH>/packages/.

Copier les packages vers ton router avec scp.

Installer les modules de noyeau por les adaptateur USB-série. FTDI, CP210X, PL2303 sont des puces d'adaptateur USB-série assez common.

opkg install kmod-usb-serial-<ftdi|pl2303|cp210x>.

Installe les components de NUT.

opkg install nut_2.7.4-7_mipsel_mips32.ipk
opkg install nut-common_2.7.4-7_mipsel_mips32.ipk
opkg install nut-driver-mge-shut_2.7.4-7_mipsel_mips32.ipk
opkg install nut-driver-usbhid-ups_2.7.4-7_mipsel_mips32.ipk
opkg install nut-server_2.7.4-7_mipsel_mips32.ipk
opkg install nut-upsc_2.7.4-7_mipsel_mips32.ipk
opkg install nut-upscmd_2.7.4-7_mipsel_mips32.ipk
opkg install nut-upslog_2.7.4-7_mipsel_mips32.ipk
opkg install nut-upsmon_2.7.4-7_mipsel_mips32.ipk

Maintenant, NUT peut être configuré d'utiliser la port série à l'aide de /dev/ttyUSBX.