1
This repository has been archived on 2021-11-25. You can view files and clone it, but cannot push or open issues or pull requests.
Project_Steam_Tracker/README.md

132 lines
6.3 KiB
Markdown
Raw Normal View History

2020-11-17 13:35:49 +01:00
# Project_Steam_Tracker
2020-11-30 20:14:09 +01:00
Het doel van dit project is om een concept te ontwikkelen waarbij je een grafishe weergrave wat inzicht geeft op de game
activiteiten van je vrienden op Steam. Een raspberypi wordt ook gebruikt om hardwarematig lapjes en sensoren aan te sturen.
## Casus
2021-01-12 15:38:56 +01:00
Steam wil haar klanten beter bedienen door meer grafische weergaves te maken van gaming gedrag naar verschillende
klantsegmenten. Hiervoor heeft ze een consultancybedrijf ingehuurd.
De hoofdopdracht luidt: maak een grafische weergave die inzicht geeft in het gaming gedrag van jouw vrienden op
het platform Steam, ondersteund door een netwerk waarbij gebruik gemaakt wordt van een RaspberryPi.
2020-11-30 20:14:09 +01:00
Voorbeeldvragen die Steam beantwoord wil zien voor haar klanten:
Welke games spelen mijn vrienden?
Welke spellen worden het meest gespeeld?
Wanneer zijn jouw vrienden online?
Wanneer heb je gepland om te gaan spelen?
Welke aanbevelingen kunnen er gemaakt worden om te spelen?
## Uitvoeren applicatie
Deze applicatie maakt gebruik van de volgende python libraries, zorg ervoor dat deze zijn geinstalleerd.
2021-01-07 18:58:42 +01:00
- [Flask](https://github.com/pallets/flask/)
- [~~steam~~](https://github.com/ValvePython/steam)
- ~~gevent~~
- ~~eventemitter~~
- [~~matplotlib~~](https://pypi.org/project/matplotlib/)
- [requests](https://pypi.org/project/requests/)
2021-01-18 13:47:28 +01:00
- [apa102-pi](https://github.com/tinue/apa102-pi)
2021-01-12 15:31:53 +01:00
Om de dependencies te installeren voer het onderste commando uit.
2021-01-18 13:47:28 +01:00
pip install flask requests apa102-pi
2020-11-30 20:14:09 +01:00
2021-01-18 21:02:15 +01:00
Als je op een RaspberryPI draait en de hardware wil aansturen moet je in run.py aangeven dat de software draait op een
2021-01-19 15:01:52 +01:00
RaspberryPI, en in hardware.py kan je de default pinnen aanpassen. De APA102 library gebruikt SPI, dus zorg ervoor dat
je via ```sudo raspi-config``` spi aan hebt gezet.
2021-01-18 21:02:15 +01:00
In run.py kan je aangeven dat je op een RaspberryPI draait zodat de hardware
pagina werkt. Default werkt de hardware **niet** omdat de software libraries oproept die alleen op een RaspberryPI
werken.
2021-01-12 15:38:56 +01:00
De applicatie is simpel uit te voeren door de python script uit te voeren. En via de browser naar de gegeven
2021-01-19 15:37:55 +01:00
url te gaan. Let op! Gebruik python 3!
2020-11-30 20:14:09 +01:00
2021-01-19 15:37:55 +01:00
python3 run.py of python run.py
2020-11-30 20:14:09 +01:00
## Data formaat geheugen tabel
Om het sorteren makkelijker te maken gaan we de json in een tuple/list opslaan in het geheugen. Het formaat is een tabel
achtige structuur. Als voorbeeld de eerste json entry in een tuple.
{
"appid":10,
"name":"Counter-Strike",
"release_date":"2000-11-01",
"english":1,
"developer":"Valve",
"publisher":"Valve",
"platforms":"windows;mac;linux",
"required_age":0,
"categories":"Multi-player;Online Multi-Player;Local Multi-Player;Valve Anti-Cheat enabled",
"genres":"Action",
"steamspy_tags":"Action;FPS;Multiplayer",
"achievements":0,
"positive_ratings":124534,
"negative_ratings":3339,
"average_playtime":17612,
"median_playtime":317,
"owners":"10000000-20000000",
"price":7.19
}
(10, "Counter-Strike", "2000-11-01", 1, "Valve", "windows;mac;linux", 0,
"Multi-player;Online Multi-Player;Local Multi-Player;Valve Anti-Cheat enabled", "Action", "Action;FPS;Multiplayer",
0, 124534, 3339, 17612, 317, "10000000-20000000", 7.19)
En om meerdere entries op te slaan maken we het genest zoals alsvolgd.
(
(10, "Counter-Strike", "2000-11-01", 1, "Valve", "windows;mac;linux", 0, "Multi-player;Online Multi-Player;Local Multi-Player;Valve Anti-Cheat enabled", "Action", "Action;FPS;Multiplayer", 0, 124534, 3339, 17612, 317, "10000000-20000000", 7.19),
(20, "Team Fortress Classic", "1999-04-01", 1, "Valve", "Valve", "windows;mac;linux", 0, "Multi-player;Online Multi-Player;Local Multi-Player;Valve Anti-Cheat enabled", "Action", "Action;FPS;Multiplayer", 0, 3318, 633, 277, 62, "5000000-10000000", 3.99)
)
## Uitleg functies
2021-01-12 15:38:56 +01:00
### sorting.py
#### ```nest-qsort(tpl, colnum. reverse=False)```
Deze recursieve functie kan de bovenstaande geneste tuple formaat sorteren. Als eerste argument geef je de geneste tuple
2021-01-12 15:38:56 +01:00
, tweede argument is de kolom nummer vanaf 0 waarop je wilt sorteren. En de derde argument is een bool, als true dan
sorteerd de functie van hoog naar laag.
#### ```qsort(tpl, reverse=False)```
Deze recursieve functie is de standaard sorteer functie die wij gaan gebruiken. Als eerste argument neemt de functie een
lijst of tuple met waardes, deze mogen ints of strings zijn. De tweede argument is een bool, als true dan sorteerd de
2021-01-12 15:38:56 +01:00
functie van hoog naar laag.
### stats.py
#### ```mediaan(lst)```
Deze functie geeft de mediaan in de mee gegeven lijst.
#### ```freq(lst)```
Deze functie geeft een dict terug met de frequentie van alle waardes in een lijst. Als voorbeeld met [1, 4, 6, 4]
meegegeven wordt {1: 1, 4: 2, 6: 1} terug gegeven
#### ```gmld(lst)```
Geeft de gemiddelde van een lijst terug in een float
2021-01-18 13:00:20 +01:00
### steam_api.py
#### ```getappdata(appid)```
Deze functie vraagt de gegeven appid op via de http steam api en retourneert het als json. Een voorbeeld van de json is
te vinden in steam_api.py
2021-01-18 21:02:15 +01:00
### hardware.py
#### ```set_strip(value)```
Deze functie stuurt de ledstrip met 8 APA102 led's aan zodat de hele strip in 1 kleur oplicht. Value moet in HEX RGB
gegeven worden. Bijvoorbeeld set_strip('FFAABB')
#### ```set_register(value)```
Deze functie accepteerd waardes in machten van 2 tot 128. Waarde 1 zet de eerste pinout van het register op ON. Waarde 2
zet de 2e pinout op ON en de rest op OFF. Waarde 4 zet de 3e pin op ON enz... Tot waarde 128(pin 8). Accepteerd ook
waarde 0 dat alles op OFF zet.
#### ```poll_sensor()```
Een simpele functie die de afstandsensor aanstuurt. Wanneer de functie wordt aangeroepen retourneert het een tuple met
als eerste waarde de afstand gemeten in cm van de sensor tot object. En waarde 2 weergeeft de afstand in tijd.
#### ```set_servo(degree)```
Deze functie accepteert waardes van 0 tot en met 180. Deze waardes corresponderen met de gradens vanaf het meest linkse
positie van de servo([voorbeeld](https://files.ventilaar.net/files/2021-01/servo.jpg)).
#### ````poll_button()````
Dit is de meest simpele functie geschreven in dit programme. Wanneer de knop is ingedrukt returnt de functie True,
anders False
2021-01-12 15:38:56 +01:00
### graphs.py
De functie van dit bestand is om grafieken te maken van lijsten met waardes, deze grafieken worden als svg terug gegeven
om door flask geserveerd te worden.
2021-01-18 13:00:20 +01:00
#### WIP verdere uitleg komt nog