We gaan ervan uit dat je je Pi al ingericht hebt vwb OS. Het is ook handig als je een SSH-server installeert op de Pi. Je kunt dan je Pi in de meterkast laten liggen, aangesloten op het netwerk en de Slimme Meter met de speciale kabel (hier kom ik nog op terug). Als cliënt voor de SSH-server kun je als gratis terminal emulator Putty ( https://www.chiark.greenend.org.uk/~sgtatham/putty/ ) installeren op je PC. Zelf gebruik ik Mobaxterm (https://mobaxterm.mobatek.net/), een “gratis” X-server en SSH-cliënt, deze biedt veel meer mogelijkheden, o.a. X-server functionaliteit, Sftp etc.
Allereerst gaan we de Pi bijwerken met de laatste updates. Log in op de Pi (terminal!) en geef in :
$ sudo apt update && sudo apt upgrade -y
Daarna
$ sudo apt install mysql-server
Om te controleren of MySQL goed geïnstalleerd is kun je het command geven :
$ mysql --version
Mysql zal zelf starten. Ook dit kun je controleren door
$ sudo systemctl status mysql
Tijd voor configuratie en beveiligen van MySQL. MySQL komt met een script om MySQL extra te beveiligen. Tijdens de uitvoering van het script wordt je een aantal dingen gevraagd, waaronder hoe sterk je wachtwoord moet zijn. Geef in :
$ sudo mysql_secure_installation
Voor de programmatuur van de Slimme Meter willen we een aparte gebruiker aanmaken. Daartoe openen we een interactieve MySQL shell.
$ sudo mysql
Belangrijk is (veiligheid) dat deze gebruiker alleen vanaf de localhost bij de database kan. Omdat alle scripts, programma’s etc draaien op de Pi is dit een extra goede beveiliging. De gebruiker moet alle rechten hebben om de database te kunnen bewerken. Deze gebruiker wordt gebruikt in de aparte scripts die later nog besproken worden.
$ GRANT ALL PRIVILEGES ON *. * TO slimmerd@'localhost';
Vergeet het FLUSH commando niet om de wijzigingen te bewaren!
Voor Grafana hebben we een gebruiker nodig die alleen het recht heeft om de tabellen te lezen (veiligheid!).
Start de MySQL shell.
$sudo mysql
Voeg toe aan /etc/mysql/mysql.conf.d/mysqld.cnf als laatste regel onder [mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
Dit is nodig voor sommige queries. Herstart mysql door
sudo systemctl restart mysql