Show Posts
Pages: [1] 2 3
1  International / Generale / Arduino YUN passare dati tra arduino e codice php on: February 18, 2014, 03:17:47 pm
Salve, non so se qualcuno ha già usato questo metodo, ma io non avendolo trovato ho pensato di condividerlo con voi, magari a qualcuno è utile!

Inizio ricapitolando le procedure per il passaggio di un valore ad un pin e la sua ricezione che ho imparato dal forum,  poi vi scrivo il metodo che ho usato.

Per passare una valore al pin 2 da php(linux ) ad arduino YUN tramite la classe Bridge bisogna usare un indirizzo del genere http://iparduino/arduino/digital/2/1
per evitare di ricaricare una pagina si può usare questo script jquery:
Code:
<script type="text/javascript" src="js/jquery-1.10.2.min.js"></script>
<script type=\"text/javascript\">
$.get(\"/arduino/digital/2/1\");
 return false; </script>

Invece se vogliamo recuperare il valore del pin 2
Code:
<script type="text/javascript" src="js/zepto.min.js"></script>
<script type="text/javascript">
        function refresh() {         
$('#div').load('/arduino/digital/2');
}

Con il metodo sopra posso prendere il valore e inserirlo dentro un div o un input text, ma siccome avevo necessità di usare il valore per fare delle operazioni sul codice in php ho trovato questa soluzione:

Code:
$variabile= shell_exec('curl localhost/arduino/digital/2');

in questo modo riesco ad avere dentro la variabile il valore che mi comunica arduino YUN

sullo YUN avevo caricato questo esempio: http://arduino.cc/en/Tutorial/Bridge#.UwPBFvl5OSo

spero che possa esservi utile!
2  International / Software / Re: Caricare una riga alla volta da un txt YUN on: September 29, 2013, 01:27:53 pm
quindi diciamo che all'interno metto un if con la verifica che caratteredacontrollare=="\n" or "\r"

però prima l'assegnazione al carattere da controllare non la faccio così:

Code:
caratteredacontrollare=(char)dataFiles.read();

ma

Code:
caratteredacontrollare=dataFiles.read();

giusto?


3  International / Software / Caricare una riga alla volta da un txt YUN on: September 29, 2013, 11:33:23 am
ho questo codice (su YUN), che carica il contenuto di un txt composto da 6 righe

Code:
  String path="/mnt/sd/Arduino/www/Innaffiaduino/txt/prog_" + valorezon + i +".txt";
  File dataFiles = FileSystem.open(path.c_str());
  valorezona="";
  while (dataFiles.available()) {
        valorezona=valorezona + (char)dataFiles.read();
        Console.println("ciclo");
                                  }

come posso modificarlo per caricare una riga alla volta o capire quando sono a fine riga?
4  Products / Arduino Yún / load one line at a time from txt on: September 29, 2013, 11:28:40 am
I have this code, which loads the contents of a txt composed of 6 lines

Code:
  String path="/mnt/sd/Arduino/www/Innaffiaduino/txt/prog_" + valorezon + i +".txt";
  File dataFiles = FileSystem.open(path.c_str());
  valorezona="";
  while (dataFiles.available()) {
        valorezona=valorezona + (char)dataFiles.read();
        Console.println("ciclo");
                                  }

how can I modify it to load one line at a time or to understand when they are at end of line?
5  International / Generale / Re: Arduino Yún on: September 23, 2013, 05:33:05 am
come faccio per leggere fino a fine riga? non avevo trovato un comando di questo tipo
6  International / Generale / Re: Arduino Yún on: September 22, 2013, 01:56:20 pm
dopo aver spostato il carico di scrittura dei dati sul php pensavo di aver risolto, ma il programma si sblocca dalla console mi esce;
"Connection closed by foreign host"

il codice che esegue è questo di seguito (a volte si blocca dopo aver scritto "inizio" altre volte, molto rare, si blocca dentro al "ciclo" scrivendo varie volte ciclo, ma non arrivando a "fine")
Code:
void caricaparametri()  {
  Console.println("carico parametri");
  //questa funzione ricarica i parametri, deve essere chiamata in void setup e quando poi occorre
  for(int i=0;i<5;i++){ //(spegnere tutte le eventuali zone aperte)
                           active[i]=true;
                           digitalWrite(zona_[i], LOW);
                                           }
  //carica progamma attivo
  File dataFile = FileSystem.open("/mnt/sd/Arduino/www/Innaffiaduino/txt/programma_attivo.txt");
  String valorezon="";
  while (dataFile.available()) {
        valorezon=valorezon + (char)dataFile.read();
                                  }
    dataFile.close();
    int i=valorezon.toInt(); //indice programma attivo
    if(i==1) valorezon="primavera";
    if(i==2) valorezon="estate";
    if(i==3) valorezon="autunno";
    if(i==4) valorezon="inverno";
    if(i==5) valorezon="disable";
      
  //carica orari zona 1
  for(i=1;i<6;i++){
  Console.println("inizio");
  String path="/mnt/sd/Arduino/www/Innaffiaduino/txt/prog_" + valorezon + i +".txt";
  File dataFiles = FileSystem.open(path.c_str());
  valorezona="";
  while (dataFiles.available()) {
        valorezona=valorezona + (char)dataFiles.read();
        Console.println("ciclo");
                                  }
    Console.println("fine");
.....

il primo file txt che legge ha un solo carattere all'interno

l'altro è così composto (è una sorta di calendario settimanale con orario di inizio e fine):
Code:
true-05-01-05-05-
true-00-02-01-11-
true-00-00-00-00-
true-00-00-12-30-
true-10-09-10-10-
false-00-00-00-00-
false-00-00-00-00-

non mi sembra eccessivo di dimensioni da poter bloccare il programma
7  Products / Arduino Yún / Re: GetYahooWeatherReport Example doesn't work on: September 22, 2013, 01:46:30 pm
use Console.begin() instead Serial.begin(9600);
and Console.print
8  Products / Arduino Yún / Re: Some questions for arduino YUN on: September 22, 2013, 01:26:16 pm
i have installed php

search here
Code:
http://forum.arduino.cc/index.php?topic=187386.msg1398639#msg1398639
9  Products / Arduino Yún / Re: File handling examples on: September 21, 2013, 02:15:50 pm
for Read
Code:
  File dataFile = FileSystem.open("/mnt/sd/Arduino/www/sample/file.txt");
  text="";
  while (dataFile.available()) {
        text=text + (char)dataFile.read();
                                  }
    dataFile.close();

for write
Code:
File dataFile = FileSystem.open("/mnt/sd/Arduino/www/Sample/file.txt", FILE_WRITE);
                           dataFile.seek(0);          //only to write from the beginning of file
                           dataFile.print("Hello!");
                           dataFile.close();

if you have to pass a string as the file path use this code
Code:
String path="/mnt/sd/Arduino/www/Sample/" + STRING +".txt";
  File dataFiles = FileSystem.open(path.c_str());
10  International / Generale / Re: Arduino Yún on: September 21, 2013, 03:52:53 am
ho tagliato il problema alla radice, i dati ora li prendo direttamente dal lato php, chè è il modo più semplice e veloce, passare da arduino era inutile

comunque le richieste venivano effettuate correttamente solo che i dati di arrivo variavano tipo se dovevo prendere dentro al file la parola tra i : e il - a volte usciva correttamente altre volte completamente errava mi veniva restituita, forse troppo lavoro per la parte arduino? (era molto lento a mandarmi i dati)
11  International / Generale / Re: Arduino Yún on: September 20, 2013, 01:54:19 pm
questo è il codice che si occupa di ricevere o inviare i valori a secondo del comando ricevuto

Code:
void ricevimessaggiozona () {
  //*********Read new message from the client**************
  YunClient client = server.accept(); //check new clients
   
if(client) {
    String command = client.readStringUntil('/');  //read the incoming data
   
   
if (command == "msgzona") {     
    zonaaa = client.readStringUntil('/');
    zonabb = client.readStringUntil('/');
    zonacc = client.readStringUntil('/');
    zonadd = client.readStringUntil('/');
    zonaee = client.readStringUntil('/');
    scrivizone(zonaaa, zonabb, zonacc, zonadd, zonaee);
 }
 
if(command == "leggizona") {
     int n= client.readString().toInt();
     valorezona="";
     File dataFile = FileSystem.open("/mnt/sd/Arduino/www/Innaffiaduino/valori_zona.txt");
     while (dataFile.available()) {
        valorezona=valorezona + (char)dataFile.read();
                                  }
    dataFile.close();
    int primaColon = valorezona.indexOf("-");
    int secondaColon= valorezona.lastIndexOf("-");
    int terzaColon = valorezona.indexOf(":");
    int quartaColon= valorezona.lastIndexOf(":");
    //client.println(valorezona);
    //Console.println(valorezona);
    String zona="";
    switch (n) {
    case 1:
      //Console.println("caso 1 ");
      client.println(valorezona.substring(0, primaColon));
      break;
    case 2:
    //Console.println("caso 2 ");
      client.println(valorezona.substring(primaColon+1, secondaColon));     
      break;
    case 3:
    //Console.println("caso 3 ");
      client.println(valorezona.substring(secondaColon+1, terzaColon)); 
      break;
    case 4:
    //Console.println("caso 4 ");
      client.println(valorezona.substring(terzaColon+1, quartaColon));   
      break;
    case 5:
    //Console.println("caso 5 ");
      client.println(valorezona.substring(quartaColon+1));     
     break;
    default:
     zona= "Errore";
      // if nothing else matches, do the default
      // default is optional
 }
 
     
   }
if(command == "msgmail"){
                           String campo= client.readString();
                           FileSystem.remove("/mnt/sd/Arduino/www/Innaffiaduino/valori_mail.txt");
                           File dataFile = FileSystem.open("/mnt/sd/Arduino/www/Innaffiaduino/valori_mail.txt", FILE_APPEND);
                           dataFile.print(campo);
                           dataFile.close();
                          }

if(command == "msgsensor"){
                           String campo= client.readString();
                           FileSystem.remove("/mnt/sd/Arduino/www/Innaffiaduino/valori_sensor.txt");
                           File dataFile = FileSystem.open("/mnt/sd/Arduino/www/Innaffiaduino/valori_sensor.txt", FILE_APPEND);
                           dataFile.print(campo);
                           dataFile.close();
                         
                          }
if(command == "legmail"){
                               
                               valorezona="";
                               File dataFile = FileSystem.open("/mnt/sd/Arduino/www/Innaffiaduino/valori_mail.txt");
                               while (dataFile.available()) {
                               valorezona=valorezona + (char)dataFile.read();
                                  }
                              dataFile.close();
                              client.print(valorezona);
                           
                          }
if(command == "legsensor"){
                               valorezona="";
                               File dataFile = FileSystem.open("/mnt/sd/Arduino/www/Innaffiaduino/valori_sensor.txt");
                               while (dataFile.available()) {
                               valorezona=valorezona + (char)dataFile.read();
                                  }
                              dataFile.close();
                              client.print(valorezona);

                          }
               

                          }

   client.stop();
 
  } 
 
   
   
}



ho dovuto togliere parte del codice perchè non me lo faceva postare per la lunghezza... quindi potrebbe esserci qualche graffa di chiusura in meno o in più!
12  International / Generale / Re: Arduino Yún on: September 20, 2013, 01:51:40 pm
Sketch uses 24.912 bytes (86%) of program storage space. Maximum is 28.672 bytes.
Global variables use 1.343 bytes (52%) of dynamic memory, leaving 1.217 bytes for local variables. Maximum is 2.560 bytes.


la mia impressione è che i dati sono troppi e non riesce a gestirli, magari domani ricontrollo tutto il codice per sicurezza!
uso chrome, ha anche lui la console javascript e non mi da errori, quelli che mi dava li ho corretti.

comunque vi lascio qualche riga del mio esperimento:

con questa funzione di jquery dalla pagina web richiedo ad arduino di restituirmi dentro ad un input text con id "zona1" un valore
Code:
<script type="text/javascript" src="js/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
function refresh() {
$.get( "/arduino/leggizona/1", function( data ) {
$(zona1).val( data );
});
}
</script>

con questo altro script invece invio il value di "zona1" dalla pagina web per farlo memorizzare ad arduino

Code:
<script type="text/javascript">  
function sendMsg() {    
$.get("/arduino/msgzona/" + document.msgzona.zona1.value + "/",
    function(){
        alert("Zone Modificate!");
    }
);
return false;
}
</script>

13  International / Generale / Re: Arduino Yún on: September 20, 2013, 12:49:52 pm
tramite zepto.js o jquery mi restituiva i dati

comunque il problema non era php, da zepto.js sono passato a jquery e tutto andava bene

ora ho implementato il programma (87% dello spazio) e sono tornati i problemi, non vorrei che magari non riesce a gestire i dati che deve restituirmi
14  International / Generale / Re: Arduino Yún on: September 20, 2013, 09:21:38 am
prima di istallare php avevo un file in html che riceveva da aruino tramite le rest api dei valori presi da un file di testo sulla sd, è possibile che ora installando il php non riesca più a mandarmi i risultati? mi ritornato pagine vuote o a volte dei dati del file ma non quelli che voglio io...
15  Products / Arduino Yún / Re: web server on: September 20, 2013, 07:32:21 am
I installed php

A minimal php5 installation includes

php5
php5-cgi
In /etc/php.ini ensure that the doc_root is empty if you are using multiple uhttpd instances (each on its own port). This enables the uhttpd 'home' variable to work for you.

Ensure that you uncomment the extension interpreter line for PHP in the main section of the uHTTPd config file:

 list interpreter ".php=/usr/bin/php-cgi"


http://wiki.openwrt.org/doc/uci/uhttpd
Pages: [1] 2 3