Essa configuração é usada para alguns concentradores de Lorawan com base em pequenos computadores, como o Raspberry Pi ou outros. Por exemplo, funciona bem com o RAK831 PI Zero Shield
E para o sield IC880A para Raspberry Pi V2 ou V3.
Faça o download da imagem Raspbian Lite e exiba -a no seu cartão SD usando o Etcher.
Uma vez piscado, você precisa fazer algumas alterações na partição de inicialização (usuários do Windows, remover e depois substituir o cartão SD)
Crie um arquivo ssh dummy nesta partição. Por padrão, o SSH agora está desativado, portanto, isso é necessário para ativá -lo. Usuários do Windows, verifique se seu arquivo não possui uma extensão como .txt etc.
Se você precisar usar o OTG (acesso ao console para qualquer computador, contendo o PI para a porta USB do computador), abra o arquivo cmdline.txt . Tenha cuidado com este arquivo, é muito exigente com sua formatação! Cada parâmetro é separado por um único espaço (ele não usa novas linhas). Inserir modules-load=dwc2,g_ether após rootwait quiet .
O novo arquivo cmdline.txt deve se parecer com isso
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, adicione também a parte inferior do arquivo config.txt , em uma nova linha
dtoverlay=dwc2
E como eu não gosto da função SD redimensiona automática (prefiro fazer isso manualmente de raspi-config ), remova também do arquivo cmdline.txt redimensionamento, excluindo o seguinte
init=/usr/lib/raspi-config/init_resize.sh
O novo arquivo cmdline.txt deve se parecer com isso
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
Por fim, na mesma partição (inicialização), para permitir que seu PI se conecte ao seu wifi após a primeira inicialização, crie um arquivo chamado wpa_supplicant.conf para permitir que o PI seja conectado na sua rede WiFi.
country=FR
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="YOUR-WIFI-SSID"
psk="YOUR-WIFI-PASSWORD"
}
É claro que mude o país, o SSID e o PSK com suas próprias configurações de wifi.
É isso, ejete o cartão SD do seu computador, coloque -o no seu Raspberry Pi Zero. Levará até os anos 90 para inicializar (mais curto nas botas subsequentes). Você pode então SSH usando raspberrypi.local como endereço. Se o WiFi não funcionar, conecte -o via USB ao seu computador, ele deve aparecer como um dispositivo Ethernet USB.
Lembre -se de que o login/paswword padrão (SSH ou console serial) é PI/Raspberry.
Portanto , por motivos de segurança, você deve alterar esta senha padrão
passwd Este script 1_pi_config.sh preparará seu ambiente PI, criará e configurará um usuário do LORAGW, adicionará acesso a SPI, i2C, UART. Ele reduzirá a memória de vídeo para 16 MB para permitir a memória máxima para as coisas precisam ser feitas. Ele também permite uma excelente preservação do cartão 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 Faça logon com o usuário loragw e se você mudou o nome do host para Loragw-xxyy, use este comando
git clone https://github.com/ch2i/LoraGW-Setup
cd LoraGW-Setup
Agora você precisa registrar seu novo GW no TTN antes da próxima etapa, consulte o registro do Gateway, o GW_ID e o GW_KEY serão solicitados pelo script
sudo ./2_Setup.shÉ isso, se você estiver usando o Pi Zero Shield, o 2 LED deve estar piscando verde e você poderá ver seu novo gateway no TTN
Verifique também tudo bem na inicialização, reinicie seu gateway.
sudo reboot
O driver WS2812B use o canal DMA e, com a nova versão Raspbian, o uso do DMA 5 corrompe seu cartão SD. Veja esta questão. Agora está resolvido, mas se você tiver GW antigo com scripts antigos, atualize a linha de script /opt/loragw/monitor_ws2812.py de
strip = Adafruit_NeoPixel ( 2 , gpio_led , 800000 , 5 , False , 64 , 0 , ws . WS2811_STRIP_GRB )para (usando o canal DMA 10 em vez 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)
Você pode alterar o comportamento do código LED no final do script /opt/loragw/monitor.py
Você pode pressionar (e deixá -lo pressionar) o botão do interruptor, os LEDs ficam bem vermelhos e depois que os 2s começam a piscar em azul. Se você liberar o botão quando eles piscarem azul, o PI iniciará um desligamento. Portanto, deixe 30 anos antes de remover o poder.
Se você tiver um Raspberry Pi 3 com este escudo IC880A, o arquivo /boot/config.txt foi aprimorado com as seguintes linhas:
# When system if Halted/OFF Light Green LED
dtoverlay=gpio-poweroff,gpiopin=24
O LED verde (GPIO24) permanecerá quando você puder remover a potência do gateway. É realmente um ótimo indicador.
Você também pode selecionar qual LED GPIO é usado para substituir o LED de atividade, se precisar.
# Activity LED
dtoverlay=pi3-act-led,gpio=23
O LED vermelho (GPIO23) piscará na atividade.
Se você tiver um Raspberry Pi Zero com este RAK831, poderá alterar o arquivo /boot/config.txt para escolher um dos dois seguintes recursos:
# When system is Halted/OFF Light Green LED
dtoverlay=gpio-poweroff,gpiopin=26
O LED verde (GPIO26) permanecerá quando você puder remover a potência do gateway. É realmente um ótimo indicador.
Você também pode escolher selecionar este LED para substituir a atividade LED, se precisar.
# Activity LED
dtparam=act_led_gpio=26
O LED Greend (GPIO26) piscará com a atividade.
Você pode selecionar apenas uma das duas opções, não ambas ao mesmo tempo.
O software instalado está localizado em /opt/loragw , mudei esse nome (original era ttn-gateway) apenas porque nem todos os meus gateways estão conectados ao TTN, então eu queria ter uma configuração mais 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.shAs funções de piscar e botão LED são feitas com o serviço Monitor.py (lançado pelo Systemd na inicialização). Existem 2 versões deste serviço (com o Symlink), uma com LED WS2812B e outro para o LED clássico do GPIO, como o desse escudo IC880A. Então, se você quiser mudar, pode fazer assim
sudo systemctl stop monitorNesse caso, você não possui o WS2812B RGB LED no escudo, mas o GPIO Classic One. O gpio do botão para desligar o PI também não está no mesmo GPIO, portanto, você precisa configurar o serviço de monitor correto.
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
Primeiro construa
./build_legacy.sh
Se você deseja usar o pacote legado, precisará alterar o arquivo /opt/loragw/start.sh para substituir a última linha
./mp_pkt_fwd.sh
por
./poly_pkt_fwd.sh
sudo systemctl stop loragw
sudo systemctl start loragwSe você escolheu o log2ram para reduzir a gravação do cartão SD, precisará alterar alguma rotação do arquivo de log para evitar que o disco RAM esteja cheio.
Para isso, você precisa editar cada arquivo em /etc/logrotate.d/ e em cada arquivo:
delaycompress (isso evita o log antigo não compactado)rotate n por girar 12 (este é o histórico do arquivo de log máximo)daily por hourly (gire o log a cada hora)monthly por daily (girar o log a cada dia)Nesse caso, obtivemos o último 12h com 1 arquivo por hora. Claro, você pode ajustar esses parâmetros aos pés de que você precisa, é apenas um exemplo,
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
}
Clique na imagem para ver o vídeo
Aqui estão outro recurso que eu uso em algum momento dos meus gateways: