Raspberry Pi OLED Internet bandbredd Display (3 / 3 steg)
Steg 3: Skriva ett Python-skript för att Visa bandbredd displayen
Du behöver ett program som heter git för att ladda ner Python skript för att köra den här.
Om du inte har git installerad kan du installera det på Pi med "sudo lämplig-få installera git"
Gå till en katalog där du vill installera den här skriften. Jag använde /home/osmc/python/bandwidth / - du kan placera den var du vill.
Skriv i "git clone https://github.com/DarrenBeck/rpi-oled-bandwidth" att klona projektet i din katalog.
Du bör ha en fil i din katalog som heter "net.py". Detta är Python skript som, om allt går väl, visar nätverkets bandbredd på displayen. Du kommer förmodligen behöva ändra åtminstone router IP-adressen, maximal överföringshastighet och eventuellt oid är används för att extrahera bandbredd data från routern.
Om du vill redigera filen använda "nano net.py". Använd Ctrl-x för att lämna editorn.
Om du vill köra filen använda "sudo python net.py". Programmet kommer att Visa bandbredden på kommandoraden och om det fungerar alla visar också den grafiska bandbredden på OLED skärmen.
Att förklara lite om hur programmet fungerar... Denna fil ändras från Adafruit exempel OLED kod. De flesta av den första sidan är bara initiering för skärmen och bild bufferten.
Nästa är ett antal funktioner som getSnmpInt och dragstång som hjälpare för programmet. Observera att getSnmpInt konverterar text som SNMP-svar till ett heltal som vi kan använda. Den gör genom att använda data.split() som standard kommer att dela upp texten på varje blanksteg i en lista. data.pop() kommer tillbaka den sista punkten i listan som skapades av split och detta är äntligen tillbaka som en int typ.
Nästa är några definierar (det finns inget sådant som en definiera i Python så vi bara använda variabler).
Nästa blir det totala antalet byte som skickats via varje gränssnitt. Det gör detta från början så att när det blir nya totalt det kan räkna ut hur många byte som har skickats eller tagits emot sedan den senaste gången dessa lästes. Det blir också tiden så att den kan räkna ut hur mycket tid har gått mellan varje Läs och konvertera summorna i datahastigheter som kbit /.
maxRateIn och maxRateOut är definierar som är specifika för vår nätverksanslutning och som förmodligen kommer att behöva justeras för nätverksanslutningen. Jag gjorde detta genom att köra programmet från kommandoraden och se vad är de högsta priserna för in och ut trafik att LAN port kommer någonsin få. Detta är viktigt eftersom de sätter det högsta värde som stolpdiagram kan stiga till. Om detta inte är rätt din stolpdiagram antingen är för kort eller förlänga utanför skärmen. Jag plockade siffror något högre än det högsta jag någonsin sett.
Adafruit koden för att rita en rektangel hade mig illa ett tag. Jag brukade en rektangel Rita funktion som draw.rectangle (x, y, bredd, höjd) men här använder en draw.rectangle (x, y, sinande x, slutar y).
Slutligen finns det en oändlig medan slinga som kommer att beräkna datahastigheterna och visa dem på skärmen varje gång. Det finns en fördröjning på en halv sekund i varje slinga men det tar också lite för programmet för att skicka den nya skärmbuffert över i2c bussen varje gång så programmet slutar uppdatera om en gång per sekund. Det spelar egentligen ingen roll hur lång tid det tar eftersom vi också timing slingan.
Jag hade helst velat använda cron att starta detta program när Pi startar men hittills använda osmc det inte fungerar. Men jag har en annan lösning som fungerar nästan lika bra och Tricket är att använda ett program som heter skärmen.
Jag använda skärmen hela tiden när ssh'ing till enheter. Det är värt den lilla mängden tid det tar för att lära sig att använda den. Du kan installera det med "sudo lämplig-få installera skärmen". I princip kan du köra ett antal terminalen skärmar från ett fönster. Huvudsakligen är kan du köra en terminal session på PI och sedan koppla från den och det kommer att hålla igång på Pi när du har avslutat din terminal anslutning.
De grundläggande instruktionerna för skärmen är: "screen" för att starta skärmen. "ctl-en c" att skapa en ny skärm. "ctl-en utrymme" växla mellan skärmar. 'ctl-en d' bort från alla dina skärmar och screen - r att återuppta skärmar du har tidigare fristående från.
Skärmen kan också användas för att kommunicera via en seriell eller USB-ström, men det skulle vara en helt annan instructable.
Så att köra detta skript och hålla den igång stegen är;
skärmen
(navigera till mappen där skript) sudo python net.py
CTL-en d (lossna - skriptet kommer att hålla igång)
Det borde vara allt du behöver för att få en användbar liten bandbredd monitorn igång. Jag hoppas detta fungerar för dig och ser fram emot alla kommentarer :)
Detta instructable kan också anpassas till bandbredd data visas på andra sätt. Två rader med lysdioder eller en annan skärmtyp kan vara ett alternativ om det krävs en större skärm.