Esta configuración se utiliza para algunos concentradores de Lorawan basados en computadoras pequeñas como Raspberry Pi u otros. Por ejemplo, funciona bien con el escudo cero RAK831 PI
Y para el Sield IC880A para Raspberry Pi V2 o V3.
Descargue la imagen de Raspbian Lite y flóular a su tarjeta SD usando Etcher.
Una vez flotado, debe hacer algunos cambios en la partición de arranque (usuarios de Windows, eliminar y luego repluir la tarjeta SD)
Cree un archivo ssh ficticio en esta partición. Por defecto, SSH ahora está deshabilitado, por lo que se requiere para habilitarlo. Usuarios de Windows, asegúrese de que su archivo no tenga una extensión como .txt, etc.
Si necesita poder usar OTG (acceso a la consola para cualquier computadora conectando el puerto USB PI a la computadora) abra el archivo cmdline.txt . Tenga cuidado con este archivo, ¡es muy exigente con su formato! Cada parámetro se separa por un solo espacio (no usa nuevas líneas). Insertar modules-load=dwc2,g_ether después de rootwait quiet .
El nuevo archivo cmdline.txt debería verse así
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=37665771-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet modules-load=dwc2,g_ether init=/usr/lib/raspi-config/init_resize.sh
Para OTG, agregue también la parte inferior del archivo config.txt , en una nueva línea
dtoverlay=dwc2
Y dado que no me gusta la función SD de tamaño automático (prefiero hacerlo manualmente desde raspi-config ), elimine también del archivo cmdline.txt Auto reingreso eliminando lo siguiente
init=/usr/lib/raspi-config/init_resize.sh
El nuevo archivo cmdline.txt debería verse así
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=37665771-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet modules-load=dwc2,g_ether
Finalmente, en la misma partición (arranque), para permitir que su Pi se conecte a su wifi después del primer arranque, cree un archivo llamado wpa_supplicant.conf para permitir que el PI se conecte en su red WiFi.
country=FR
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="YOUR-WIFI-SSID"
psk="YOUR-WIFI-PASSWORD"
}
Por supuesto, cambie el país, SSID y PSK con su propia configuración WiFi.
Eso es todo, expulse la tarjeta SD de su computadora, colóquela en su Raspberry Pi Zero. Se necesitará hasta los 90 para arrancar (más corto en las botas posteriores). Luego puede SSH en él usando raspberrypi.local como dirección. Si WiFi no funciona, conéctelo a través de USB a su computadora, debe aparecer como un dispositivo Ethernet USB.
Recuerde que el inicio de sesión/Paswword predeterminado (SSH o consola serie) es PI/Raspberry.
Entonces, por razones de seguridad, debe cambiar esta contraseña predeterminada
passwd Este script 1_pi_config.sh preparará su entorno PI, creará y configurará un usuario de Loragw, agregue acceso a SPI, I2C, UART. Reducirá la memoria de video a 16 MB para permitir la memoria máxima para las cosas que deben hacerse. También habilita una excelente preservación de la tarjeta SD LOG2RAM.
wget https://raw.githubusercontent.com/ch2i/LoraGW-Setup/master/1_Pi_Config.sh
chmod ug+x 1_Pi_Config.sh
sudo ./1_Pi_Config.sh Iniciar sesión con el usuario loragw y si cambió el nombre de host a Loragw-xxyy, use este comando
git clone https://github.com/ch2i/LoraGW-Setup
cd LoraGW-Setup
Ahora necesita registrar su nuevo GW en TTN antes del siguiente paso, consulte el registro de la puerta de enlace, el script le preguntará el GW_ID y GW_KEY
sudo ./2_Setup.shEso es todo, si está utilizando Pi Zero Shield, el LED 2 debe estar parpadeando de color verde y debería poder ver su nueva puerta de enlace en TTN
Verifique que todo esté bien también en el inicio, reinicie su puerta de enlace.
sudo reboot
El controlador WS2812B usa el canal DMA, y con la nueva versión Raspbian, el uso de DMA 5 corromperá su tarjeta SD. ver este problema. Ahora está resuelto, pero si tiene GW antiguo con scripts antiguos, asegúrese de actualizar la línea de script /opt/loragw/monitor_ws2812.py desde
strip = Adafruit_NeoPixel ( 2 , gpio_led , 800000 , 5 , False , 64 , 0 , ws . WS2811_STRIP_GRB )a (usando el canal 10 de DMA en lugar de 5)
strip = Adafruit_NeoPixel ( 2 , gpio_led , 800000 , 10 , False , 64 , 0 , ws . WS2811_STRIP_GRB ) - GPIO 4 (Blue) Blink => Internet access OK
- GPIO 18 (Yellow) Blink => local web server up & running
- GPIO 24 (Green)
- Blink => packet forwarder is running
- Fixed => Shutdown OK, can remove power
- GPIO 23 (Red)
- Blink every second, one of the previous service down (local web, internet, )
- Middle bink on every bad LoRaWAN packet received
- Lot of short blink => Activity on SD Card (seen a boot for example)
Puede cambiar el comportamiento del código LED al final del script /opt/loragw/monitor.py
Puede presionar (y dejar que presione) el botón Push Switch, los LED se vuelven rojos y después de que 2S comience a parpadear en azul. Si suelta el botón cuando parpadean azul, el PI iniciará un apagado. Así que déjalo 30 antes de eliminar el poder.
Si tiene una Raspberry Pi 3 con este escudo IC880A, entonces el archivo /boot/config.txt se ha mejorado con las siguientes líneas:
# When system if Halted/OFF Light Green LED
dtoverlay=gpio-poweroff,gpiopin=24
El LED verde (GPIO24) permanecerá encendido cuando pueda eliminar la potencia de la puerta de enlace. Es realmente un gran indicador.
También puede seleccionar qué LED GPIO se usa para reemplazar el LED de actividad si lo necesita.
# Activity LED
dtoverlay=pi3-act-led,gpio=23
El LED rojo (GPIO23) parpadeará en la actividad.
Si tiene un Raspberry Pi Zero con este RAK831, puede cambiar el archivo /boot/config.txt para elegir una de las dos características siguientes:
# When system is Halted/OFF Light Green LED
dtoverlay=gpio-poweroff,gpiopin=26
El LED verde (GPIO26) permanecerá encendido cuando pueda eliminar la potencia de la puerta de enlace. Es realmente un gran indicador.
También puede elegir seleccionar este LED para reemplazar el LED de actividad si lo necesita.
# Activity LED
dtparam=act_led_gpio=26
El LED de Greend (GPIO26) parpadeará en la actividad.
Puede seleccionar solo una de las 2 opciones, no ambas al mismo tiempo.
El software instalado está ubicado en /opt/loragw , cambié este nombre (el original era TTN-Gateway) solo porque no todas mis puertas de enlace están conectadas a TTN, por lo que quería tener una configuración más genérica.
ls -al /opt/loragw/
total 344
drwxr-xr-x 3 root root 4096 Jan 21 03:15 .
drwxr-xr-x 5 root root 4096 Jan 21 01:01 ..
drwxr-xr-x 9 root root 4096 Jan 21 01:03 dev
-rw-r--r-- 1 root root 6568 Jan 21 01:15 global_conf.json
-rwxr-xr-- 1 root root 3974 Jan 21 01:15 monitor-gpio.py
-rwxr-xr-- 1 root root 3508 Jan 21 03:15 monitor.py
-rwxr-xr-- 1 root root 4327 Jan 21 01:15 monitor-ws2812.py
-rwxr-xr-x 1 root root 307680 Jan 21 01:14 mp_pkt_fwd
-rwxr-xr-- 1 root root 642 Jan 21 01:36 start.shLas funciones del botón LED parpadeantes y Push se realizan con el servicio Monitor.py (lanzado por Systemd al inicio). Hay 2 versiones de este servicio (con Symlink), una con LED WS2812B y otra para LED clásico de GPIO, como el de este escudo IC880A. Entonces, si quieres cambiar, puedes hacerlo así
sudo systemctl stop monitorEn este caso, no tiene LED RGB WS2812B en el escudo, sino GPIO Classic One. El botón Push GPIO para apagar el PI tampoco está en el mismo GPIO, por lo que debe configurar el servicio de monitor correcto.
sudo rm /opt/loragw/monitor.py
sudo ln -s /opt/loragw/monitor-gpio.py /opt/loragw/monitor.pysudo systemctl start monitorsudo journalctl -f -u loragw -- Logs begin at Sun 2018-01-21 14:57:08 CET. --
Jan 22 01:00:41 loragw loragw[240]: ### GPS IS DISABLED!
Jan 22 01:00:41 loragw loragw[240]: ### [PERFORMANCE] ###
Jan 22 01:00:41 loragw loragw[240]: # Upstream radio packet quality: 100.00%.
Jan 22 01:00:41 loragw loragw[240]: # Semtech status report send.
Jan 22 01:00:41 loragw loragw[240]: ##### END #####
Jan 22 01:00:41 loragw loragw[240]: 01:00:41 INFO: [TTN] bridge.eu.thethings.network RTT 52
Jan 22 01:00:41 loragw loragw[240]: 01:00:41 INFO: [TTN] send status success for bridge.eu.thethings.network
Jan 22 01:00:53 loragw loragw[240]: 01:00:53 INFO: Disabling GPS mode for concentrator's counter...
Jan 22 01:00:53 loragw loragw[240]: 01:00:53 INFO: host/sx1301 time offset=(1516578208s:159048µs) - drift=-55µs
Jan 22 01:00:53 loragw loragw[240]: 01:00:53 INFO: Enabling GPS mode for concentrator's counter.
Jan 22 01:01:11 loragw loragw[240]: ##### 2018-01-22 00:01:11 GMT #####
Jan 22 01:01:11 loragw loragw[240]: ### [UPSTREAM] ###
Jan 22 01:01:11 loragw loragw[240]: # RF packets received by concentrator: 0
Jan 22 01:01:11 loragw loragw[240]: # CRC_OK: 0.00%, CRC_FAIL: 0.00%, NO_CRC: 0.00%
Jan 22 01:01:11 loragw loragw[240]: # RF packets forwarded: 0 (0 bytes)
Jan 22 01:01:11 loragw loragw[240]: # PUSH_DATA datagrams sent: 0 (0 bytes)
Jan 22 01:01:11 loragw loragw[240]: # PUSH_DATA acknowledged: 0.00%
Jan 22 01:01:11 loragw loragw[240]: ### [DOWNSTREAM] ###
Jan 22 01:01:11 loragw loragw[240]: # PULL_DATA sent: 0 (0.00% acknowledged)
Jan 22 01:01:11 loragw loragw[240]: # PULL_RESP(onse) datagrams received: 0 (0 bytes)
Jan 22 01:01:11 loragw loragw[240]: # RF packets sent to concentrator: 0 (0 bytes)
Jan 22 01:01:11 loragw loragw[240]: # TX errors: 0
Jan 22 01:01:11 loragw loragw[240]: ### BEACON IS DISABLED!
Jan 22 01:01:11 loragw loragw[240]: ### [JIT] ###
Jan 22 01:01:11 loragw loragw[240]: # INFO: JIT queue contains 0 packets.
Jan 22 01:01:11 loragw loragw[240]: # INFO: JIT queue contains 0 beacons.
Jan 22 01:01:11 loragw loragw[240]: ### GPS IS DISABLED!
Jan 22 01:01:11 loragw loragw[240]: ### [PERFORMANCE] ###
Jan 22 01:01:11 loragw loragw[240]: # Upstream radio packet quality: 0.00%.
Jan 22 01:01:11 loragw loragw[240]: # Semtech status report send.
Jan 22 01:01:11 loragw loragw[240]: ##### END #####
Jan 22 01:01:11 loragw loragw[240]: 01:01:11 INFO: [TTN] bridge.eu.thethings.network RTT 53
Jan 22 01:01:11 loragw loragw[240]: 01:01:11 INFO: [TTN] send status success for bridge.eu.thethings.network
Primero construirlo
./build_legacy.sh
Si desea utilizar el reenvío de paquetes heredados, deberá cambiar el archivo /opt/loragw/start.sh para reemplazar la última línea
./mp_pkt_fwd.sh
por
./poly_pkt_fwd.sh
sudo systemctl stop loragw
sudo systemctl start loragwSi elige LOG2RAM para reducir la escritura de la tarjeta SD, debe cambiar la rotación del archivo de registro para evitar que el disco RAM esté lleno.
Para esto, debe editar cada archivo en /etc/logrotate.d/ , y en cada archivo:
delaycompress (esto evite el registro antiguo sin comprimir)rotate n por rotación 12 (Este es el historial de archivos de registro máximo)daily por hourly (gire el registro cada hora)monthly por daily (gire el registro todos los días)En este caso obtuvimos las últimas 12h con 1 archivo por hora. Por supuesto, puede ajustar estos parámetros a los pies que necesita, es solo un ejemplo,
file /etc/logrotate.d/rsyslog
/var/log/syslog
{
rotate 12
hourly
missingok
notifempty
compress
postrotate
invoke-rc.d rsyslog rotate > /dev/null
endscript
}
/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
{
rotate 12
hourly
missingok
notifempty
compress
sharedscripts
postrotate
invoke-rc.d rsyslog rotate > /dev/null
endscript
}
Haga clic en la imagen para ver el video
Aquí hay otra característica que uso en algún momento en mis puertas de enlace: