-
Notifications
You must be signed in to change notification settings - Fork 0
Mjukvaruarkitektur
Crosstag är en mjukvara som från början är skapad av Johan Lundström som vi i vår projektgrupp har fått som uppdrag att bygga vidare på. När vi började arbetet så var grunden satt, det fanns ett server script (Crosstag_server) som hanterar allt som har med den lokala databasen att göra, allt som rör admin interfacet och den tar emot requests från de andra scripten genom GET/POST metoder. Det fanns ett reader script (Crosstag_reader) som tog emot tag events och läste av en RFID läsare som sedan skickade tageventet vidare till servern och det fanns en viewer (crosstag_viewer) som lyssnade efter tagevents och visade genom ett terminalfönster tageventet och dess ägare, i detta fall en medlem. Vår uppgift är att bygga vidare på denna grund och tillämpa baskraven vi fått från vår kund.
- Arkitekturellt signifikanta krav
- Vi vill ha ett snyggt admin och lätthanterligt admin interface. Vi kommer få lägga mycket tid på att få till det bra och kolla med kunden ofta. Vi kommer att använda bootstrap för att underlätta designen iallafall.
- Vi vill presentera statistik med diagram. För att kunden ska kunna snabbt och enkelt kunna se statistiken.Vi kommer använda oss av ett javascript bibliotek som heter "Charts"
- För att underlätta hantering av medlemmar skall vi skapa en lokal databas till kunden. Denna databas kommer syncas mot deras fortnox databas där deras betalningar hanteras. Ligger fortnox nere skall de ändå kunna se sina medlemmar från den lokala databasen. I nuläget sitter kunderna med en excelfil istället för en databas.
- En tagg skall kunna bindas mot en medlem, när denne kommer till gymmet skall de tagga in. Tageventet lagras i databasen och skall ge information till medlemmen hur ofta de tränar men även ge statistik till ägarna hur mycket folk tränar och när.
Vi kommer använda oss av python3 med en del bibliotek som vi importera vid behov. Databasen kommer vara en lokal databas som vi fyller med användare som vi hämtar från kundens fortnox konto. Databasen är en webserver i form av Flask som är ett bibliotek i python. För att kunna prata med fortnox behöver vi anropa deras api. Genom att anropa apiet kan vi få ner alla användare och lägga dem i databasen. För installation av api:er och bibliotek, se orginal-repots readme.
* Bibliotek: Charts, Flask, SQLAlchemy, Json
* API:er: Fortnox (developer.fortnox.se)
Som beskrivit i arkitektur modellen så renderar crosstag_server ut admin interfacet till admins. Kunden integrerar med servern genom olika inputs på sidan. Vid de olika inputsen av admins så visas olika information så som statistik och alla medlemmar.
När en medlem kommer till gymmet så taggar de in. Crosstag_reader får ett tageventet som skickas till servern där det lagras i databasen så att hantering kan ske senare. Crosstag_viewern läser av databasen efter nya tagevents med jämna mellanrum och vid en ny taggning renderas en vy ut i terminalen för medlemmen som sedan ser att de taggat in.
Anropen mellan readern och viewern till servern sker genom GET/POST. Ett anrop sker mot en speciell URL, och i crosstag_server finns metoder som är kopplade till URLen genom AppRoute. AppRoute kommer med biblioteket Flask som tillhör databasen. Ett exempel kan vara:
- Crosstag_reader:
res = requests.get("http://%s:%d/crosstag/v1.0/tagevent/%s" % (server, port, tag_nbr), timeout=3) - Crosstag_server:
AppRoute("http://localhost:80/crosstag/v1.0/tagevent/<tag_id>")
def exampel_method(tag_id) Do something with tag_id
I exemplet ovan skickar readern ett tagevent med ett id till en URL. I crosstag servern får man anropet och tar emot ID:et som sedan hanteras, till exempel lagra det i databasen.
#####Hårdvaruarkitektur

