Inhoudsopgave:

Bandbreedtemonitor - Ajarnpa (met afbeeldingen) - Ajarnpa
Bandbreedtemonitor - Ajarnpa (met afbeeldingen) - Ajarnpa

Video: Bandbreedtemonitor - Ajarnpa (met afbeeldingen) - Ajarnpa

Video: Bandbreedtemonitor - Ajarnpa (met afbeeldingen) - Ajarnpa
Video: PsPing Power: The Ultimate Guide to Testing Bandwidth 2024, November
Anonim
Bandbreedtemonitor
Bandbreedtemonitor
Bandbreedtemonitor
Bandbreedtemonitor
Bandbreedtemonitor
Bandbreedtemonitor

Omdat ik mezelf vaak afvroeg welke bandbreedte momenteel wordt geleverd door mijn ISP (ik gebruik een LTE-modem voor de internetverbinding), dacht ik aan een bandbreedtebewakingssysteem. Omdat het systeem compact en energiebesparend moet zijn, heb ik als centrale component gekozen voor een Raspberry Pi Zero. De Raspberry is via WLAN met het modem verbonden, hierdoor kunnen ook WLAN-problemen worden opgespoord.

Benodigdheden

  • Raspberry Pi Zero WH
  • Waveshare e-ink display (2,9 inch-e-paper-module)
  • DC-DC-converter (bijv. DEBO DCDC 20W)
  • RGB LED (uit een oud apparaat gehaald)
  • Druk op de knop
  • Schakelaar
  • Relais module (bijv. 2-weg relais module 2-weg relais module)
  • Mannelijke connector + Vrouwelijke connector (beide passen op de maat van de stekker van uw modemvoeding)
  • 3D geprint hoesje

Stap 1: Functies:

Functies
Functies
Functies
Functies
Functies
Functies
  • De Raspberry Pi Zero is verbonden via WLAN, test de up- en downloadsnelheid en voert elk half uur een ping-meting uit. Als basis voor de metingen wordt een commandoregelversie van speedtest.net gebruikt.
  • Het resultaat van de bandbreedte- en pingmeting wordt weergegeven op een e-ink display. Ook wordt het tijdstip van de meting weergegeven.
  • Als de downloadsnelheid onder een gedefinieerde drempelwaarde komt, schakelt een relais de modem korte tijd uit en weer in. Het modem wordt dus gereset zonder enige wijziging van het apparaat (alleen de stroomtoevoer wordt onderbroken).
  • Een knop aan de voorkant van het apparaat is beschikbaar om de bandbreedtemeting handmatig te activeren.
  • De gemeten waarden worden weergegeven op een Ubidots Dashboard (IOT Portal). In het overzicht ziet u ook de tijdhistorie van de meetwaarden en de redenen voor de laatste resets.
  • In de IOT Portal vind je ook een knop om de modem op afstand te resetten.
  • De Bandbreedte monitor maakt gebruik van de voeding van het modem. Geen extra voeding nodig. Het relais onderbreekt het doorsturen van de voeding naar het modem - de Raspberry blijft ingeschakeld.

Stap 2: Bedrading

Bedrading
Bedrading
Bedrading
Bedrading
Bedrading
Bedrading
Bedrading
Bedrading

In de eerste afbeelding ziet u het interne ontwerp van de bandbreedtemonitor:

De belangrijkste componenten zijn:

    1. Druk op de knop
    2. E-ink-display
    3. Raspberry Pi Zero
    4. Relaismodule
    5. RGB LED + Weerstanden (afhankelijk van de RGB LED die je gebruikt)
    6. Schakelaar
    7. DC-DC-omzetter
    8. Vrouwelijke connector

De tweede foto toont een schema van de bedrading. De pluspool van de voedingsspanning wordt via de schakelaar naar de DC-DC spanningsomvormer gevoerd (die de 12V voedingsspanning van de router omzet naar 5V voor de Raspberry) en via het relais (via de normaal aangesloten pin) terug naar de uitgangsconnector. Zo wordt het modem ook van stroom voorzien als de bandbreedtemonitor is uitgeschakeld.

De bandbreedtemeting kan handmatig worden gestart via een knop. Een RGB-led wordt gebruikt om de verschillende bedrijfstoestanden te visualiseren.

De verbinding tussen Raspberry Pi en e-ink display is niet weergegeven in het schakelschema. Sluit het display aan volgens de tabel en de pin-out hierboven.

Stap 3: 3D-printen en de jacht bouwen

3D-printen en de jacht bouwen
3D-printen en de jacht bouwen
3D-printen en de jacht bouwen
3D-printen en de jacht bouwen
3D-printen en de jacht bouwen
3D-printen en de jacht bouwen
3D-printen en de jacht bouwen
3D-printen en de jacht bouwen

De volgende onderdelen zijn nodig voor de koffer (zie afbeelding hierboven):

    1. onderste deel
    2. bovenste deel
    3. voorkant
    4. rug
    5. 4x montage

Alle onderdelen kunnen worden bedrukt zonder steunen. Je kunt de bestanden en enkele van mijn andere ontwerpen ook vinden op Thingiverse:

Het display kan met de beugels en een dubbelzijdige tape aan het frontpaneel worden bevestigd. Knopschakelaar en vrouwelijke connector zijn op het achter- en achterpaneel geschroefd. Ik gebruikte 3x20mm schroeven om de twee helften van de behuizing te verbinden. De toleranties op de groeven voor de voor- en achterpanelen zijn relatief krap. Indien nodig moeten de voor- en achterpanelen aan de rand worden geschuurd (aan de binnenkant om het oppervlak niet te beschadigen).

Stap 4: Het instellen van de Raspberry PI

De Raspberry PI instellen
De Raspberry PI instellen
De Raspberry PI instellen
De Raspberry PI instellen

Deze installatiegids is gebaseerd op het samenstellen van verschillende installatie-instructies van verschillende bronnen (fabrikanten van e-Ink-displays, …). Voor mij hebben de instructies geleid tot het gewenste resultaat. Aangezien ik geen Linux-expert ben, zijn er geen optimalisaties of iets dergelijks gedaan. Ik ben me ervan bewust dat er zeker betere en efficiëntere oplossingen zijn.

Laten we aannemen dat je Raspbian al op je Pi hebt geïnstalleerd (er zijn veel tutorials over het installeren van het basisbesturingssysteem) en je hebt een beeldscherm (via miniHDMI), muis en toetsenbord aangesloten. Er wordt ook uitgegaan van een correct ingestelde WLAN-verbinding met de router of internet. Tenzij anders vermeld, worden alle installatieprocedures uitgevoerd in de terminal.

Installeer Extern bureaublad (om vanaf uw computer toegang te krijgen tot de PI):

sudo apt-get update

sudo apt-get

xrdp installeren

of je kunt ook headless werken via ssh (zie bijv.

Verander wachtwoord:

www.raspberrypi.org/forums/viewtopic.php?t=193620

Speedtest installeren:

sudo

apt-get install python-pip

sudo pip install speedtest-cli

om te testen of de installatie succesvol was, voer Speedtest uit in de terminal:

speedtest-klik

als alles correct is, zou je iets moeten krijgen zoals in de eerste afbeelding hierboven.

Installeren bedradingPI

sudo apt-get install git-core

git kloon git://git.drogon.net/wiringPi

cd bedradingPi

./bouwen

(zie ook

alternatief:

sudo apt-get install bedradingpi

(zie

Installeer BCM2835

(zie

Download bcm2835-1.60.tar.gz (of een nieuwere versie indien beschikbaar)

tar zxvf bcm2835-1.60.tar.gz

cd bcm2835-1.60

./configureren

maken

sudo check

sudo make install

Installeer de Python-beeldverwerkingsbibliotheek

sudo apt-get install python-imaging

alternatief:

sudo apt-get install python-pil

Schakel de I2C-functie in.

Voer de volgende opdracht uit om uw Raspberry Pi-bord te configureren:

sudo raspi-config

Selecteer Interface-opties-> I2C -> ja, om het I2C-kernstuurprogramma op te starten. Dan moet u ook het configuratiebestand wijzigen. Voer de volgende opdracht uit om het configuratiebestand te openen:

sudo nano /etc/modules

Voeg de volgende twee regels toe aan het configuratiebestand:

i2c-bcm2708

i2c-dev

Zie ook

De SPI-functie inschakelen

Voer de volgende opdracht uit om uw Raspberry Pi-bord te configureren:

sudo raspi-config

Selecteer Interface-opties-> SPI -> ja, om het SPI-kernstuurprogramma op te starten.

Installeer extra lettertypen:

sudo apt-get install ttf-mscorefonts-installer

Download en installeer lettertypen (Roboto + Droid)

gksudo

pcmanfm

Bestandsbeheer starten met root-privileges en truetype-lettertypen kopiëren naar map /usr/share/fonts/truetype

alternatief:

Kopieer de lettertypen naar de map Downloads met WinSCP (ssh moet zijn ingeschakeld om WinSCP te gebruiken)

sudo cp -r /home/pi/Downloads/droid /usr/share/fonts/truetype

sudo cp -r /home/pi/Downloads/roboto /usr/share/fonts/truetype

U hebt root-privileges nodig om toegang te krijgen tot de lettertypemap. Misschien zijn er betere manieren om dit te doen (zoals al gezegd ben ik geen Linux-expert) maar beide manieren werkten voor mij.

Python-bestanden:

Gebruik de filemanger om een nieuwe map "bandwidth_monitor" aan te maken

Kopieer alle bestanden naar de directory bandbreedte_monitor

Python-bestanden en script uitvoerbaar maken

chmod +x *.py

chmod +x speedtest-cron.sh

Crontab configureren

crontab -e

Crontab wordt gebruikt om programma-uitvoering te plannen, b.v. speedtest elke 30 min. Voeg de volgende regels toe aan je crontab (zie ook tweede figuur):

@reboot /usr/bin/python /home/pi/bandwidth_monitor/post_restart_message.py &

@reboot sleep 30 && /usr/bin/python /home/pi/bandwidth_monitor/poll_test_now_button.py */30 * * * * /home/pi/bandwidth_monitor/speedtest-cron.sh */3 * * * * /usr/ bin/python /home/pi/bandwidth_monitor/poll_killswitch.py 13 03 * * * /usr/bin/python /home/pi/bandwidth_monitor/refresh_display.py

Beschrijving van de geplande taken:

  • bij het opnieuw opstarten wordt het herstartbericht naar het IOT-dashboard geschreven
  • bij het opnieuw opstarten wordt de poll test_now_button gestart
  • elke 30 minuten wordt een bandbreedtemeting uitgevoerd
  • elke 3 minuten wordt de status van de resetknop op afstand (op het IOT-dashboard) gecontroleerd
  • eenmaal per dag wordt een display-verversingscyclus gestart.

Zie de softwaresectie voor een korte beschrijving van de programma's.

Stap 5: Software

Software
Software

De software is opgesplitst in verschillende bestanden / programma's:

bandbreedte_monitor_0_4.py is het hoofdprogramma dat elk half uur door Crontab wordt aangeroepen. Het voert een bandbreedtetest uit (via de opdrachtregelversie van speedtest.net). Tijdens de test is de RGB-led blauw. Als de bandbreedte boven de geselecteerde drempel ligt, wordt de waarde weergegeven op het e-ink-display (samen met een tijdstempel) en geëxporteerd naar het Ubidots-dashboard. Als de bandbreedte onder de drempel ligt, wordt de LED rood en wordt de meting na een korte vertraging herhaald. Na 3 negatieve pogingen wordt het relais geactiveerd en wordt de voeding van het modem onderbroken. Resetcode (waarde=2) wordt naar de logsectie geschreven.

poll_killswitch.py leest de status van een booleaanse variabele op het dashboard. Als killswitch_state waar is, wordt het relais geactiveerd en wordt de voeding van het modem onderbroken. De RGB LED wordt groen tijdens het pollen van de killswitch. Na de reset wordt de killswitch_state ingesteld op false en wordt een vermelding in de logsectie van het dashboard gegenereerd (waarde=1).

poll_test_now_button.py wacht op het indrukken van de drukknop op het voorpaneel van de behuizing. Door de knop te activeren wordt handmatig een bandbreedtemeting getriggerd. Bij het starten van het programma (bij het herstarten van de Raspberry Pi) knippert de RGB LED rood.

post_restart_message.py schrijft de resetcode (value=3) naar de logsectie van het dashboard. Dit geeft aan dat de bandbreedtemonitor opnieuw is opgestart. Tijdens de programmastart knippert de RGB-led blauw.

test_LED.py en test_relay.py zijn eenvoudige scripts die kunnen worden gebruikt om de hardwarefunctie van de RGB-led en het relais te testen.

epdconfig.py en epd2in9.py zijn apparaatstuurprogramma's voor het e-inktscherm dat door Waveshare wordt geleverd.

Om de programma's toegang te geven tot het Ubidots-dashboard, moet u uw individuele tokens en apparaat- of variabelenamen toevoegen (als u verschillende notaties gebruikt). Zoek naar een sectie zoals in de afbeelding hierboven (vervang XXXXXXXX door uw token).

Uitgebreide tutorials over het bouwen van het dashboard en het integreren van het dashboard in een Python-programma zijn direct te vinden op de Ubidots-pagina (https://help.ubidots.com/en/) of via Google.

Stap 6: IOT-dashboard

IOT-dashboard
IOT-dashboard

Het door Ubidots gehoste dashboard (zie https://ubidots.com) bevat verschillende onderdelen die hieronder kort worden beschreven.

    1. Tijdsvolgorde van up- en downloadsnelheid. Elk half uur wordt een nieuwe waarde in het diagram ingevoegd.
    2. Tijdsverloop van de gemeten pingtijd. Elk half uur wordt een nieuwe waarde in het diagram ingevoegd.
    3. Tijdsvolgorde van de gemiddelde downloadsnelheid. De gemiddelde waarde over 24 uur wordt berekend en in het diagram geschreven.
    4. Spreadsheetweergave van de huidige meetwaarden inclusief tijdstempel.
    5. Afstandsbedieningsknop voor het resetten van de modem via internet. Query vindt elke 3 minuten plaats, d.w.z. het kan even duren voordat de actie is uitgevoerd.
    6. Registratie van de laatste resets inclusief de reden van de reset (remote triggering, uitschakelen of spanningsverlies, onder de minimale bandbreedte vallen)

Uitgebreide tutorials over het bouwen van het dashboard en het integreren van het dashboard in een Python-programma zijn direct te vinden op de Ubidots-pagina (https://help.ubidots.com/en/) of via Google.

Aanbevolen: