Pages: [1]   Go Down
Author Topic: Problema invio/ricezione dati ad un server  (Read 539 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve,dopo aver avuto un paio di problemi con il database del server e anche con quest'ultimo ho dovuto risistemare un po' le cose ed ora Arduino non riesce più a comunicare col sito o meglio:si collega,invia il dato,ma esso non compare.
Ho provato a copiare il link che ho nel codice arduino e a aggiungere un dato nel browser e tutto viene correttamente inserito nelle tabelle e non riesco quindi a capire dove risiede il problema...
Codice arduino:
Code:
#include <SPI.h>
#include <String.h>
#include <Ethernet.h>
#include <Client.h>


byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x42, 0x0F };
byte ip[] = { 192, 168, 0, 9 };
byte gw[] = { 192, 168, 0, 1};
byte serverip[] = { 69, 175, 122, 178};
byte subnet[] = { 255, 255, 255, 0 };

float tempc=0;
float tdata = 0;
float tdataf = 0;
int tempPin = 1;  // In This case the temperature is taken from pin 1




Client client(serverip,80);

void setup()
{

  Ethernet.begin(mac, ip);
 
  pinMode(tempPin, INPUT);
  Serial.begin(9600);
 
  delay(1000);
}

void loop()
{

  Serial.println("Programma avviato...");
  delay(120000);
  Serial.println("Ottengo valore");
  tdata=analogRead(tempPin);
  tdata=(5.0 * tdata * 100.0)/1024.0;
  Serial.println("Valore ottenuto:");
  senddata();    

}

void senddata()
{
 
  if (client.connect()){
    Serial.println(tdata);
    Serial.println("Connesso, scrivendo...");
    client.print("GET farebury.exofire.net/addtem.php?tempar=");
    client.print(tdata);
    client.println();
    Serial.println("Dato Inviato");
    Serial.println();
  }

  else
  {
    Serial.println("Connessione Fallita");
  }
 
  client.flush();
  client.stop();
  while(client.status() != 0)
  {
    delay(5);
  }
}

Codice php per inserire dato:
Code:
<?php
$temp 
$_GET['tempar'];
$temp floatval($temp);

include 
'vaerdi.php';

date_default_timezone_set('Europe/Rome');

$file=fopen("prob.txt","a+");
fwrite($file"Prova aggiunta file      ");
fclose($file);

if(
$temp<=60){
define ("DB_HOST""localhost:3306"); // set database host
define ("DB_USER""pippo_pippo"); // set database user
define ("DB_PASS","pippo"); // set database password
define ("DB_NAME","pippo"); // set database name

$link mysql_connect(DB_HOSTDB_USERDB_PASS) or die("Couldn't make connection.");
$db mysql_select_db(DB_NAME$link) or die("Couldn't select database");

$anndate("Y-m-d H:i:s");

mysql_query("INSERT INTO `tempreg` (`valore`,`datav`)VALUES('$temp','$ann')");
mysql_close($link);
}
else
{
$message="At ghe quel ca quadra mia...la temperatura è di: $temp °";
$signature="Arduino Meteo";
pushMeTo($message$signature);
}
  
?>

Spero che qualcuno possa aiutarmi.
Grazie
Logged

0
Offline Offline
Shannon Member
****
Karma: 132
Posts: 10498
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

non usare il client.flush, e prima del client.close metti un delay
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho provato,ma il problema persiste...
Logged

0
Offline Offline
Shannon Member
****
Karma: 132
Posts: 10498
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

dopo client.print(tdata); dovresti scrivere client.println(" HTML/1.0");
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho capito il problema:arduino non riesce più a connettere al sito tramite ip...esiste un altro modo?
Questo script puo aiutare?
Code:
client.println("GET /Pelletta/test.php HTTP/1.0");
 client.println("Host: www.nomeSito.it");
 client.println();
 //Ora riceveremo una risposta dal file test.php che sta nell'URL www.nomeSito.it/Pelletta/test.php

Una volta inviata la richiesta, bisogna mettersi in attesa della risposta con:

 while client.available() {
  char c = client.read();
    // Legge risposta server carattere per carattere
    if (readString.length() < 30)
      {
        // Memorizza caratteri in una stringa
        readString.concat(c);
      }
        // Stampa outout a video
        Serial.print(c);
        //Dati terminati
        if (c == '\n') {
        // Codice da eseguire dopo aver ricevuto tutti i dati dal server.
        }

}
Logged

Milan, Italy
Offline Offline
Sr. Member
****
Karma: 0
Posts: 349
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

dopo client.print(tdata); dovresti scrivere client.println(" HTTP/1.0");
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok,ho aggiunto al codice,ma il problema non è quello(ho sentito anche il provider del server):l'ip che ottengo dal ping del mio sito non mi manda al mio sito,ma al server in generale che lo ospita,quindi mi interessa sapere se esite un altro modo per collegarsi,oltre a
server [000,000,000,000];
client(server,port);
Logged

0
Offline Offline
Shannon Member
****
Karma: 132
Posts: 10498
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

semplice, non devi ottenere l'IP dal ping, ma tramite il DNS!

in oltre se utilizzi un url di 2° o 3° livello mi pare che devi includerlo completo nella get, per esempio


GET asd.dsa.it/pagina?v=10 HTTP/1.0
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Pages: [1]   Go Up
Jump to: