Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
et:examples:storage:network [2015/02/26 14:44] raivo.sellet: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:
 {{ :et:examples:storage:temp_logi_veebileht.png?500|Veebileht andmete kuvamiseks ja visualiseerimiseks }} {{ :et:examples:storage:temp_logi_veebileht.png?500|Veebileht andmete kuvamiseks ja visualiseerimiseks }}
 ===== 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, eriti kui mingi server on juba olemas ja on eelnevad kokkupuuted veebilehetede loomise ning andmebaassüsteemidega. +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, eriti kui mingi server on juba olemas ja on eelnevad kokkupuuted veebilehtede loomise ning andmebaassüsteemidega. 
-Kuna pilveteenuste pakkujate nimekiri pidevalt muutub ja samuti muutuvad nende hinnapoliitika ning funktsionaalsus on järgnev näide tehtud minimalistliku lahendusena, kus serveriks on kasutatud olemasolevat veebiserverit, kus jookseb Apache2, PHP5 ja MySQL andmebaasimootor. Antud näite järgi on alati võimalik lahendust keerukamaks ja täiuslikumaks teha, juhendeid kuidas andmebaasipõhiseid veebilehti teha ja andmeid visualiseerida on Internetis väga palju.+Kuna pilveteenuste pakkujate nimekiri pidevalt muutub ja samuti muutuvad nende hinnapoliitika ning funktsionaalsus on järgnev näide tehtud minimalistliku lahendusena, kus serveriks on kasutatud olemasolevat veebiserverit, kus jookseb Apache2, PHP5 ja MySQL andmebaasimootor. Antud näite järgi on alati võimalik lahendust keerukamaks ja täiuslikumaks teha, juhendeid kuidas andmebaasipõhiseid veebilehti teha ja andmeid visualiseerida on internetis väga palju.
  
 Näiterakenduses on kasutusel lihtne temperatuuriandur, mis salvestab teatud ajaintervalli järel temperatuuri ja edastab selle pilveserverile. Kommunikatsiooniks on kasutusel juhtmega Etherneti liides. Lahendus koosneb kahest osast: mikrokontrolleri tarkvara ja veebiserveri tarkvara. Näiterakenduses on kasutusel lihtne temperatuuriandur, mis salvestab teatud ajaintervalli järel temperatuuri ja edastab selle pilveserverile. Kommunikatsiooniks on kasutusel juhtmega Etherneti liides. Lahendus koosneb kahest osast: mikrokontrolleri tarkvara ja veebiserveri tarkvara.
  
-Esmalt seadistatakse veebi- ja andmebaasi server, luues tühi andmebaas ja vastav veebileht, mis võtab kontrollerilt vastu andmeid ja näitab neid kasutajale tabeli ning graafiku kujul. Graafiku genereerimiseks on kasutatud //Google Visualization// API-t. Andmebaasi loomiseks võib kasutada serveri veebiliidest phpMyadmin või lihtsalt mysql kliendiprogrammi. Antud näites on loodud andmebaas //pilvedemo// ja sinna tabel nimega //monitor//.+Esmalt seadistatakse veebi- ja andmebaasi server, luues tühja andmebaasi ja vastava veebilehe, mis võtab kontrollerilt vastu andmeid ja näitab neid kasutajale tabeli ning graafiku kujul. Graafiku genereerimiseks on kasutatud //Google Visualization// API-t. Andmebaasi loomiseks võib kasutada serveri veebiliidest phpMyadmin või lihtsalt mysql kliendiprogrammi. Antud näites on loodud andmebaas //pilvedemo// ja sinna tabel nimega //monitor//.
  
 <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+   // Tabeli koostamine
    $tabel .= '<tr><td>'.$row["aeg"].'</td>'."\n";    $tabel .= '<tr><td>'.$row["aeg"].'</td>'."\n";
    $tabel .= '<td>'.$row["sensor"].'</td>'."\n";    $tabel .= '<td>'.$row["sensor"].'</td>'."\n";
Line 122: Line 121:
  
 </code> </code>
 +<pagebreak>
  
 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. Kodulabor III ühenduse skeem: 
 +^ 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 ja salvesatatakse pilveserveri andmebaasi+// Lugem võetakse kord iga 5 sekundi järel ja salvestatakse pilveserveri baasi
 #include <avr/io.h> #include <avr/io.h>
 #include <avr/interrupt.h> #include <avr/interrupt.h>
 #include <util/delay.h> #include <util/delay.h>
 #include <stdlib.h> #include <stdlib.h>
-#include <module/ethernet.h> 
 #include <adc.h> #include <adc.h>
 #include <module/sensors.h> #include <module/sensors.h>
 +#include <module/ethernet.h>
  
-// 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 "robolabor.ee" #define WEBSERVER_VHOST "robolabor.ee"
  
-// Robootika Kodulabor II +// Kodulabor II 
-#define ADC_CHANNEL 2+//#define ADC_CHANNEL 2 
 +// Kodulabor III 
 +#define ADC_CHANNEL 14
  
-// Robootika Kodulabor III +// Paketi puhvri suurus
-//#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<<COM1B1)|(0<<COM1B0)|(0<<WGM11); +
-    TCCR1B=(1<<CS12)|(1<<CS10)|(1<<WGM12)|(0<<WGM13); // crystal clock/1024 +
- +
-    // Seadista taimeri väärtus 14.7456MHz: 14400 +
-    OCR1A = 14400; +
-    TIMSK1 = (1 << OCIE1A); +
-+
- +
-// Paketi buffer+
 #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)
 { {
-    // Käivita taimer +    uint16_t time = 0;
-    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_PRESCALE_8);     adc_init(ADC_REF_AVCC, ADC_PRESCALE_8);
  
-    while(1)+    // Lõputu tsükkel 
 +    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 saada serverisse uued andmed +            // Iga 5 sekundi tagant serverisse uute andmete saatmine 
-            if(gsec >= 5)+            if(time >= 5000)
             {             {
-                itoa(thermistor_calculate_celsius( +                itoa(thermistor_calculate_celsius(adc_get_average_value( 
-                   adc_get_average_value(ADC_CHANNEL, 4)),urlvarstr,10);+                                                 ADC_CHANNEL, 4)),urlvarstr,10); 
 +                                                 
                 client_browse_url(PSTR("/pilvedemo/?s=1&v="),urlvarstr,                 client_browse_url(PSTR("/pilvedemo/?s=1&v="),urlvarstr,
-                   PSTR(WEBSERVER_VHOST),&browserresult_callback,otherside_www_ip, +                      PSTR(WEBSERVER_VHOST),&browserresult_callback, 
-                   otherside_www_gwmac); +                      otherside_www_ip,otherside_www_gwmac); 
-                gsec = 0;+                       
 +                time = 0;
             }             }
 +            _delay_ms(1);
 +            time++;
             continue;             continue;
         }         }
                  
-        // Kommentaar +        if(dat_p==0)   udp_client_check_for_dns_answer(buf,plen); // plen!=0
-        if(dat_p==0)  // plen!=0 +
-        { +
-            udp_client_check_for_dns_answer(buf,plen); +
-            continue; +
-        }+
     }     }
 } }
 </code> </code>
et/examples/storage/network.1424961894.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0