Träningsdagbok (1)

FunBeat lägger ner. Dags att bygga en egen träningsdagbok.

Min tanke är att göra en personlig blogg som passar mig, inte något allmänt tillgängligt.

Jag har redan två RaspberryPi som snurrar där hemma, en med en MySQL-databas och en med en webbserver. Detta får bli grunden i min träningsdagbok.

Jag har beställt hem min data från FunBeat på denna adress:
https://funbeat-export.azurewebsites.net/

Det jag fick hem var följande filer:
• basic_info.json
• blog_postings.json
• equipment.json
• trainings.json
• trainings.xlsx

Det var också med en mapp ”details” med ett stort antal json och fit-filer.

Idag: import av data.

Första steget får bli att importera trainings.json till min MySQL-databas.
Det får bli tre tabeller:
• trainings – en tabell med alla träningsaktiviteter samlade
• exercises – alla övningar, med referens till träningsaktiviteten
• intervals – alla intervaller, med referens till träningsaktiviteten

Det här är de nycklar som jag hittade i min jsonfil, och som får bli kolumner i databasen. Jag namnger efter FunBeat för enkelhets skull.

Tabell: trainings
startDateTime
trainingTypeName
numberOfSeconds
creationDateTime
distance
description
pulse
pulseMax
kCal
routeId
importedDataFormat
importedDataId
hasTime
te
importedDataLocation
ascent
descent
intervals
exercises
pointsLocation
cadAvg
repetitions
isCompetition
equipment

Tabell: intervals
numberOfSeconds
distance
comment

Tabell: exercises
trainingExerciseTypeName
reps
weight
comment

Senare tänker jag mig att göra en import av csv-filer från Garmin, och då lär jag lägga till än del kolumner i intervals-tabellen, men det får komma sen.
Nu är det dags att gå in i MySql

Jag vill ha en egen databas för dagboken.
mysql> create database Diary;
mysql> show databases;
mysql> use Diary;

CREATE TABLE trainings
(id int NOT NULL,
startDateTime datetime NOT NULL DEFAULT ‘0000-00-00 00:00:00’,
trainingTypeName varchar(24) NOT NULL DEFAULT ”,
numberOfSeconds int NOT NULL DEFAULT ‘0’,
creationDateTime datetime NOT NULL DEFAULT ‘0000-00-00 00:00:00’,
distance float NOT NULL DEFAULT ‘0.0’,
description varchar(1200) DEFAULT ”,
pulse int NOT NULL DEFAULT ‘0’,
pulseMax int NOT NULL DEFAULT ‘0’,
kCal int NOT NULL DEFAULT ‘0’,
routeId int NOT NULL DEFAULT ‘0’,
importedDataFormat varchar(24) NOT NULL DEFAULT ”,
importedDataId varchar(24) NOT NULL DEFAULT ”,
hasTime int NOT NULL DEFAULT ‘0’,
te float NOT NULL DEFAULT ‘0.0’,
importedDataLocation int NOT NULL DEFAULT ‘0’,
ascent int NOT NULL DEFAULT ‘0’,
descent int NOT NULL DEFAULT ‘0’,
intervals int NOT NULL DEFAULT ‘0’,
exercises int NOT NULL DEFAULT ‘0’,
pointsLocation int NOT NULL DEFAULT ‘0’,
cadAvg int NOT NULL DEFAULT ‘0’,
repetitions int NOT NULL DEFAULT ‘0’,
isCompetition int NOT NULL DEFAULT ‘0’,
equipment varchar(240) DEFAULT ”,
PRIMARY KEY (id));

CREATE TABLE intervals
(id int NOT NULL,
number int NOT NULL,
numberOfSeconds int NOT NULL DEFAULT ‘0’,
distance float NOT NULL DEFAULT ‘0.0’,
comment varchar(240) DEFAULT ”,
PRIMARY KEY (id,number));

CREATE TABLE exercises
(id int NOT NULL,
number int NOT NULL,
trainingExerciseTypeName varchar(24) DEFAULT ”,
reps int NOT NULL DEFAULT ‘0’,
weight int NOT NULL DEFAULT ‘0’,
comment varchar(240) DEFAULT ”,
PRIMARY KEY (id,number));

mysql> show tables;

Så. Nu finns de tomma tabellerna på plats.

Dags att importera. Skrev ihop den här php-filen som gör tricket:

importjson.php

Nästa steg: att visa passen på ett enkelt sätt.

EDIT 2019-11-25:
Rättat create-satsen för exercises.

Leave a Reply

Your email address will not be published. Required fields are marked *