Go Down

Topic: Problema invio/ricezione dati ad un server (Read 570 times) previous topic - next topic

Razorphyn

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: [Select]

#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: [Select]

<?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

lesto

non usare il client.flush, e prima del client.close metti un delay
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie


lesto

dopo client.print(tdata); dovresti scrivere client.println(" HTML/1.0");
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Razorphyn

Ho capito il problema:arduino non riesce più a connettere al sito tramite ip...esiste un altro modo?
Questo script puo aiutare?
Code: [Select]

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.
        }

}

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

Razorphyn

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);

lesto

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
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy