This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
et:examples:storage:network [2015/02/26 14:44] – raivo.sell | et:examples:storage:network [2020/07/20 09:00] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ~~PB~~ | ||
====== Andmesalvestus pilve ====== | ====== Andmesalvestus pilve ====== | ||
//Vajalikud teadmised: | //Vajalikud teadmised: | ||
Line 13: | Line 12: | ||
{{ : | {{ : | ||
===== Praktika ===== | ===== Praktika ===== | ||
- | Andmete salvestamiseks pilve on vaja esiteks valida sobiv pilveteenus või seadistada ise pilveserver. Lihtsam on kasutada olemasolevaid suurfirmade teenused. Samas on küllalt lihtne teha ka ise vastav funktsionaalsus, | + | Andmete salvestamiseks pilve on vaja esiteks valida sobiv pilveteenus või seadistada ise pilveserver. Lihtsam on kasutada olemasolevaid suurfirmade teenused. Samas on küllalt lihtne teha ka ise vastav funktsionaalsus, |
- | Kuna pilveteenuste pakkujate nimekiri pidevalt muutub ja samuti muutuvad nende hinnapoliitika ning funktsionaalsus on järgnev näide tehtud minimalistliku lahendusena, | + | Kuna pilveteenuste pakkujate nimekiri pidevalt muutub ja samuti muutuvad nende hinnapoliitika ning funktsionaalsus on järgnev näide tehtud minimalistliku lahendusena, |
Näiterakenduses on kasutusel lihtne temperatuuriandur, | Näiterakenduses on kasutusel lihtne temperatuuriandur, | ||
- | Esmalt seadistatakse veebi- ja andmebaasi server, luues tühi andmebaas | + | Esmalt seadistatakse veebi- ja andmebaasi server, luues tühja andmebaasi |
<code sql> | <code sql> | ||
Line 52: | Line 51: | ||
FROM monitor ORDER BY id ASC"); | FROM monitor ORDER BY id ASC"); | ||
- | while( $row = mysql_fetch_array($result) ) { | + | while ($row = mysql_fetch_array($result)) { |
- | // Tabeli koostamine | + | |
| | ||
| | ||
Line 122: | Line 121: | ||
</ | </ | ||
+ | < | ||
Mikrokontrolleri kood peab ühilduma serveri koodiga ja seda just andmete formaadi ning URL-i osas. | Mikrokontrolleri kood peab ühilduma serveri koodiga ja seda just andmete formaadi ning URL-i osas. | ||
Line 127: | Line 127: | ||
parameeter s on anduri ID ja parameeter v on anduri lugem. Ajatempel pannakse igale sisestusele automaatselt andmete saabumise järgi. | parameeter s on anduri ID ja parameeter v on anduri lugem. Ajatempel pannakse igale sisestusele automaatselt andmete saabumise järgi. | ||
- | Alljärgnev kood on Kodulabori näitekood, mis vastab eelpool kirjeldatud serveri ja andmebaasi konfiguratsioonile. Kodulabor III puhul tuleb kasutada eraldi Ethernet moodulit, mis on Robootika Kodulabori lisakomplektis. | + | Alljärgnev kood on Kodulabori näitekood, mis vastab eelpool kirjeldatud serveri ja andmebaasi konfiguratsioonile. Kodulabor III puhul tuleb kasutada eraldi Ethernet moodulit, mis on Robootika Kodulabori lisakomplektis. |
+ | ^ Signaal ^ Viik ^ | ||
+ | | SI | PF3 | | ||
+ | | SO | PF2 | | ||
+ | | SCK | PF1 | | ||
+ | | CS | PF0 | | ||
+ | | VCC | +3.3V | | ||
+ | | GND | GND | | ||
<code c> | <code c> | ||
// Kodulabori temperatuuri lugemi pilve salvestamise näidisprogramm | // Kodulabori temperatuuri lugemi pilve salvestamise näidisprogramm | ||
- | // Lugem võetakse kord päevas | + | // Lugem võetakse kord iga 5 sekundi järel |
#include < | #include < | ||
#include < | #include < | ||
#include < | #include < | ||
#include < | #include < | ||
- | #include < | ||
#include < | #include < | ||
#include < | #include < | ||
+ | #include < | ||
- | // Defineeri serveri aadress | + | // Serveri aadressi defineerimine |
#ifdef WEBSERVER_VHOST | #ifdef WEBSERVER_VHOST | ||
#undef WEBSERVER_VHOST | #undef WEBSERVER_VHOST | ||
Line 146: | Line 153: | ||
#define WEBSERVER_VHOST " | #define WEBSERVER_VHOST " | ||
- | // Robootika | + | // Kodulabor II |
- | #define ADC_CHANNEL 2 | + | //#define ADC_CHANNEL 2 |
+ | // Kodulabor III | ||
+ | #define ADC_CHANNEL 14 | ||
- | // Robootika Kodulabor III | + | // Paketi |
- | //#define ADC_CHANNEL 14 | + | |
- | + | ||
- | volatile int gsec = 0; | + | |
- | // Taimeri katkestus | + | |
- | ISR(TIMER1_COMPA_vect) | + | |
- | { | + | |
- | gsec++; | + | |
- | } | + | |
- | + | ||
- | // Taimeri seadistamine looma katkestust igal sekundil | + | |
- | void timer_init(void) | + | |
- | { | + | |
- | TCNT1=0; | + | |
- | + | ||
- | TCCR1A=(0<< | + | |
- | TCCR1B=(1<< | + | |
- | + | ||
- | // Seadista taimeri väärtus 14.7456MHz: 14400 | + | |
- | OCR1A = 14400; | + | |
- | TIMSK1 = (1 << OCIE1A); | + | |
- | } | + | |
- | + | ||
- | // Paketi | + | |
#define BUFFER_SIZE 650 | #define BUFFER_SIZE 650 | ||
uint8_t buf[BUFFER_SIZE+1]; | uint8_t buf[BUFFER_SIZE+1]; | ||
+ | // Põhiprogramm | ||
int main(void) | int main(void) | ||
{ | { | ||
- | | + | |
- | timer_init(); | + | |
- | sei(); // Luba katkestused | + | |
- | // Etherneti kontrolleri käivitamine | + | // Etherneti kontrolleri käivitamine, IP hankimine |
ethernet_init_client(); | ethernet_init_client(); | ||
- | // IP aadressi hankimine | ||
ethernet_getDNSIP(); | ethernet_getDNSIP(); | ||
- | // Serviga ühenduse loomine | ||
ethernet_get_server(); | ethernet_get_server(); | ||
Line 192: | Line 175: | ||
adc_init(ADC_REF_AVCC, | adc_init(ADC_REF_AVCC, | ||
- | while(1) | + | |
+ | | ||
{ | { | ||
uint16_t dat_p,plen; | uint16_t dat_p,plen; | ||
Line 203: | Line 187: | ||
if(plen == 0) | if(plen == 0) | ||
{ | { | ||
- | // Iga 5 sekundi tagant | + | // Iga 5 sekundi tagant serverisse |
- | if(gsec >= 5) | + | if(time >= 5000) |
{ | { | ||
- | itoa(thermistor_calculate_celsius( | + | itoa(thermistor_calculate_celsius(adc_get_average_value( |
- | adc_get_average_value(ADC_CHANNEL, | + | ADC_CHANNEL, |
+ | |||
client_browse_url(PSTR("/ | client_browse_url(PSTR("/ | ||
- | PSTR(WEBSERVER_VHOST),& | + | |
- | otherside_www_gwmac); | + | |
- | | + | |
+ | | ||
} | } | ||
+ | _delay_ms(1); | ||
+ | time++; | ||
continue; | continue; | ||
} | } | ||
| | ||
- | | + | if(dat_p==0) |
- | | + | |
- | { | + | |
- | | + | |
- | continue; | + | |
- | } | + | |
} | } | ||
} | } | ||
</ | </ |