Programos adaptavimas iš Android į Raspbery

Manau čia bus ką veikti. Teks papildomai suinstaliuoti gcc bibliotekas ir MySQL dev paketą. Vienas iš skirtumų – duomenų neberašysime į kortelę, o rašysime į MySQL DB. Taigi. Patogumo dėlei suinstaliuotas mc (midnight commander) leidžia jungtis per ftp. Kopijuoju seną studentui rašytą programą finger.c ir emIII programą, kuri dirbo su Android.

Pradžiai ‘riešutėlis’ – komandinė eilutė ‘gcc test.c test.o’ užsispiria – rašo no such file, galvoju gal nebus C kompiliatoriaus, tačiau klaida kur kas žemiškesnė: komandinėje eilutėje nurodomas rezultato failas turi būti lydimas ‘-o’ rakto. Tenka žiūrėti ankstesnį savo pasidarytą instrukciją, kaip paruošti Raspberry.

Pirma kompiliacijos pastebėjimas #include komanda tokia pat, Android ir Raspberry. Juk čia ta pati C. Komentuoju visus includus, žiūrėsim, kai kokių nors reiks, suksimės. Dar iškyla klausimas? Kaip Raspberry atsimena laiką? Sinchronizuojasi, kai atsiranda inetas? turi savo RTC chipą? ar yra RTC baterija Raspberyje? Atsakymų paieškosime vėliau.

Kompiliavimo eilutė ‘gcc test.c -o test.o’. Rašo, kad trūksta failo mysql.h. Aha, pridedame papildomą modulį:

apt-get install libmysqlclient-dev

Dar viena klaida:

fatal error: pigpio.h: No such file or directory
 #include 

The gpio utilitė yra wiringPi bibliotekoje. Ją instaliuojame sekančiai:

sudo apt-get install wiringpi

Tačiau tai nepadeda išvengti klaidos. išmetu -lpigpio kompiliavimo raktą ir deklaravimo eilutę „#include pigpio.h” ir pradinio teksto. matomai tai pytono biblioteka ir ji dabar nereikalinga.

Dabar trūksta mysql_init reference. Tikriausia reikia paruošti MySQL DB ir lenteles. DB pavadinkime ‘vejojegaines’. Ideologija tokia: nenaudokime didžiųjų raidžių lentelių ir laukų pavadinimuose. Priėjimą prie DB suteikime vartotojui ‘vejojegaines’ su tokiu pat slaptažodžiu.

#mysql -u root

mysql>grant all on vejojegaines.* to vejojegaines identified by ‘vejojegaines’;

Pastaba: mysql root vartotojas be slaptažodžio! Antros kortelės instaliavime root vartotojui suteiktas ‘root’ slaptažodis.

Laikas pagalvoti apie DB lentelių struktūrą. Vieną iš jų pavadinkime ‘duomenys’. Į šią lentelę rašysime duomenis, analogiškus Arduino programos rašomiems į SD kortelę. Patogumo dėlei, koreguojame /etc/mysql/my.cnf failą užkomentuodami eilutę ‘bind address’, tuo leisdami prisijungti prie MySQL serverio iš bet kurio adreso. Dabar jungiamės iš darbinio kompiuterio su programa ‘MySQL query browser’ adresu 192.168.2.177 (tokį nustatėme kaip statinį adresą /etc/networks/interfaces faile – -pasenęs metodas. Antros kortelės instaliavime statinis tinklo adtesas aprašomas /etc/dhcpd.conf faile).

Lentelėje ‘duomenys’ rašysime jėgainių darbo parametrus kaip: laikas, srovė, įtampa, temperatūra, vėjo greitis. Kiekviena jėgainė turi savo ‘vid’ identifikatorių, kuris įrašomas kartu su kitais duomenimis. vid ir gid – grupės identifikatorius apibrėžia grupę, kuriai priklauso jėgainė. Ši priklausomybė įrašoma į lentelę ‘grupes’. Dar viena lentelė jegaine aprašo jėgainės pavadinimą. Čia galimi ir kiti parametrai, kaip adresas, galingumas ir kiti nekintantys parametrai. Lentelių struktūra aprašyta atskirame straipsnyje:

MySQL, Apache, PHP instaliavimas

Pasileidžiu termilnalą pasitiktinti, gal yra PHP?
#sudo su –
#find / -name php.ini
Nieko nerado. Tada einu į Menu->Preferences->Add/Remove Software.Randu Apache HTTP Server (apache2-2.4.10-10+deb8u4), pažymiu varnele ir spaudžiu OK. Prašo autorizacijos, pasirinkimui useris: pi arba root. Šiaip sistemoje root nesuteiktas slaptažodis, tačiau čia root be slaptažodžio netinka. Pakeičiu root slaptažodį į ‘root’ komanda ‘passwd root’ tame pačiame, kaip ir failo paieškos terminaliniame lange. Toliau ieškau php5 paketo. Randu server-side, HTML-embeded scripting language(metapackage). Instaliuojam. Sekantis paketas MySQL database server. Papildomai suinstaliuojame mc paketą.

Teko perinstaliuoti visą SD kortelę, taigi pakartoti visas komandas. Čia pateiksiu santrauką, ką reikia instaliuoti
Radau rekomenduotiną eiliškumą su papildomais paketais:

apt-get install mysql-server mysql-client
apt-get install apache2 (apt-get install apache2 -y - ką reiškia raktas -y?)
apt-get install php5 libapache2-mod-php5 
(
paskutinėje Rpi versijoje jau php7 instaliuojamas 
apt-get install php libapache2-mod-php -y 
pataisyti short_open_tag=on faile /etc/php/7.0/apache2/php.ini
Kad veiktų apache su mysql:sudo apt-get install php-mysqli.
kad išvedinėtų klaidas pataisom: display_errors=on nustatymą php.ini faile. 
Be jo error_reporting() funksija neveikia
)
apt-get install proftpd 
apt-get install libmysqlclient-dev 
apt-get install wiringpi 
apt-get install iptraf

Po to perstartuojame apache servisą:
Jei reikia kitų paketų:

apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Enable Remote Access (Grant) Home / Tutorials / Mysql / Enable Remote Access (Grant) If you try to connect to your mysql server from remote machine, and run into error like below, this article is for you.

Change mysql config
Start with editing mysql config file

vim /etc/mysql/my.cnf

Comment out following lines.

#bind-address           =127.0.0.1
#skip-networking

If you do not find skip-networking line, add it and comment out it.

Restart mysql server.

~/etc/init.d/mysql restart

Change GRANT privilege

Raspbery OS instaliavimas

Iš svetainės https://www.raspberrypi.org/downloads/noobs/ asisiunčiame NOOBS_lite_v1_9. Iš svetainės  https://www.sdcard.org/downloads/formatter_4/eula_windows/index.html atsisiunčiame SD Formatter for Windows.

Suinstaliuojame Formater’į, paleidžiame jį, atliekame kortelės formatavimą, sumetame išzipuotus NOOBS_lite_v1_9 failus į kortelę.

Kortelę įdedam į Raspberį, prijungiam tinklo (LAN) kabelį, USB klaviatūrą, ‘pelę’.  Displėjus pajungtas per HDMI kabelį. Per micro USB jungtį paduodame maitinimą.

IMG03075-20160414-0509

Ekrane atsiranda instaliavimo instrukcija, siūloma prisijungti prie LAN, kad būtų pradėtas tinklinis instaliavimas:

IMG03077-20160414-0511

Pasirenkame Raspbian OS, spaudžiame ‘install’.

IMG03078-20160414-0513

Po geroko laiko (yra progreso juosta apačioje) gauname pranešimą apie sėkmingą sistemos instaliavimą. Paspaudus ‘OK’ Raspbery  persikrauna ir matome tipišką ‘Linux’ OS užsikrovimą. Jis baigiamas grafinės terpės pasikrovimu.

IMG03079-20160414-0552IMG03080-20160414-0553

Sekantis žingsnis MySQL, Apache, PHP instaliavimas.

p.s. geras metas nustatyti laikrodį. date komanda shel’e rodo dviejų valandų nukrypimą. Matomai nenustatyta laiko juosta. Rekomendacijos lokalės ir laiko zonos nustatymui (TY mwd27):

  1. sudo raspi-config
  2. Select Internationalisation Options
  3. Select I2 Change Timezone
  4. Select your Geographical Area
  5. Select your nearest City
  6. Select Finish
  7. Select Yes to reboot now

 

  1. prieš šią operaciją:root@raspberrypi:/home/pi# date
    Thu 17 Nov 07:20:25 UTC 2016
    root@raspberrypi:/home/pi# raspi-config
  2. Current default time zone: ‘Europe/Vilnius’
    Local time is now:      Thu Nov 17 09:21:11 EET 2016.
    Universal Time is now:  Thu Nov 17 07:21:11 UTC 2016.Po jos:
  3. root@raspberrypi:/home/pi# date
    Thu 17 Nov 09:21:23 EET 2016
    root@raspberrypi:/home/pi#

Statinio adreso nustatymui naudojame /etc/dhcpd.conf failą:

by ben2202
I have maybe a solution by editing your /etc/dhcpcd.conf and add the resevation at this end like this :

Code: Select all
    interface eth0
    static ip_address=192.168.2.177
    static routers=192.168.2.1
    static domain_name_servers=192.168.2.1
    static domain_search =

and reboot

rc.local servisas duoda klaidą: failed to start /etc/rc.local Compatibility

Statinio adreso suteikimas: į failą /etc/dhcpcd.conf įrašome eilutes:

interface eth0
static ip_address=192.168.2.177
static routers=192.168.2.1
static domain_name_servers=192.168.2.1
static domain_search=

Leidžiam dirbti su SSH (nutylint uždrausta):

raspi-config

Interfacing options->P2 SSH->Yes

Patogu dirbti suinstaliavus mc paketą:

sudo apt-get install mc