Connessione Arduino Yun con Web server

Ciao a tutti,
sto realizzando un sistema di monitoraggio di temperatura per delle celle frigo.

In pratica Arduino Yun legge i valori dei sensori temperatura e invia ad un web server i valori che li memorizza in un database Mysql.

Dopo una ricerca in internet ho trovato abbastanza semplicemente una serie di siti dove riportano un esempio abbastanza semplice, dove ho modificato i valori "indirizzo server web (locale)", "indirizzo ip dell'Arduino" e "creo l'url utilizzanso una stringa":

#include <SPI.h>
#include <Ethernet.h>
 
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
//indirizzo server web (locale)
IPAddress server(192, 168, 111, 3);
 
//indirizzo ip dell'Arduino
IPAddress ip(192, 168, 111, 6);
 
EthernetClient client;
 
String strURL = "";
float temp = 0;
 
void setup()
{
Serial.begin(9600);
 
if (Ethernet.begin(mac) == 0)
{
Serial.println("Configurazione DHCP fallita!");
Ethernet.begin(mac, ip);
}
 
delay(1000);
 
}
 
void loop()
{
UpdateTemp();
 
while(client.available())
{
char c = client.read();
Serial.print(c);
}
 
if (!client.connected())
{
Serial.println();
Serial.println("Disconnesso.");
client.stop();
}
 
//esegui la richiesta ogni 10 secondi
delay(10000);
}
 
void UpdateTemp()
{
Serial.println("Connessione...");
 
if (client.connect(server, 80))
{
Serial.println("Connesso");
 
//creo l'url utilizzanso una stringa
strURL = "GET /index.php?pagina=inserisci_temperatura&id_frigo=2&temperatura=5 HTTP/1.1";
 
//invio la richiesta al server
client.println(strURL);
client.println("Host: localhost");
client.println("Connection: close");
client.println();
//chiudo la connessione
client.stop();
}
else
{
Serial.println("Errore Connessione");
}
Serial.println("Fine esecuzione");
}

preciso che se con il browser del pc(192.168.111.8) apro la pagina
http://192.168.111.3/index.php?pagina=inserisci_temperatura&id_frigo=2&temperatura=5

il database si aggiorna correttamente, mentre Arduino no e dalla porta seriale riporta:

Impossibile connettersi: riprovo... (1)...
Impossibile connettersi: riprovo... (2)...
Impossibile connettersi: riprovo... (3)...
Impossibile connettersi: riprovo... (4)...
Impossibile connettersi: forse lo sketch sta usando il bridge?

sapete dirmi cosa sbaglio?

Ho provato anche con

/**
* Example: Hello, MySQL!
*
* This code module demonstrates how to create a simple 
* database-enabled sketch.
*/
#include "SPI.h"
#include "Ethernet.h"
#include "sha1.h"
#include "mysql.h"

/* Setup for Ethernet Library */
byte mac_addr[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress server_addr(192, 168, 111, 3);

/* Setup for the Connector/Arduino */
Connector my_conn; // The Connector/Arduino reference

char user[] = "root";
char password[] = "admin";

char INSERT_SQL[] = "INSERT INTO stevanin.temperatura (temperatura_rilevata,id_frigo,time) ('2 , 2, 2016-01-17 18:36:05')";

void setup() {
  Ethernet.begin(mac_addr);
  Serial.begin(115200);
  delay(1000);
  Serial.println("Connecting...");
  if (my_conn.mysql_connect(server_addr, 3306, user, password))
  {
    delay(500);
     /* Write Hello, World to MySQL table test_arduino.hello */
     my_conn.cmd_query(INSERT_SQL);
     Serial.println("Query Success!"); 
  } 
  else
    Serial.println("Connection failed.");
}

void loop() {
}

ma da lo stesso errore!

Non capisco proprio cosa sbaglio

Stai usando un programma con Ethernet shield.

Arduino yun è un altra cosa.

Devi usare i process per comunicare
Con il processore Linux.

Scusa la mia ignoranza ma non conosco ancora bene arduino dato che lo ho da 1 settimana.

Mi puoi fare un esempio di come aggiornare una tabella mysql presente in un webserver da arduino tramite la lan?

Non ne esco, potete aiutarmi?

Ma è possibile connettersi in ssh?

Premetto che questa soluzione non mi sembra poi molto sicura dato che dovrei pubblicare il database all'esterno!(sempre se non mi sbaglio)

Avete qualche idea?

Guarda nella sezione product/arduino Yun.

Ci sono molti esempi.

Se guardi c'è anche il mio cronotermostato che funziona come vuoi fare te.

ora guardo..

per ora ho provato a scrivere questo ma non funziona.. forse non ho ben capito come funzionano i process.

void runMysql() {
  Process p;    
  p.begin("mysql -h 192.168.1.30 -P 3306 -u (utente) --password=(password) "); 
  p.addParameter("CREATE DATABASE prova123");
  p.run();

    while (p.available() > 0) {
    char c = p.read();
    Serial.print(c);
  }

  Serial.flush();
}

speravo di trovare una tabella nuova prova123 ma nulla da fare.

forse è un problema di privilegi ma credo di aver reso accesso al mondo :wink: [non c'è proprio nulla di interessante se non valori inseriti a caso]

Prova in Riga di comando:

Ti colleghi su openwrt in Ssl provi il comando poi scrivi il software nel' Mcu.

Su Windows puoi usare PUTTY.

Ma l'IP dove risiede mysql cos'è?

Se è la Yun devi installare mysql.

Prova a dare un'occhiata qui:

http://forum.arduino.cc/index.php?topic=193567.0

Andata grazie mille;-)

#include <Process.h>
#include <Bridge.h>

void setup() {
  Bridge.begin();  // Initialize Bridge
}
void loop() {
  int temperature =  random(-20, 60);
  char bufferPIN[];
  String temp = itoa(temperature,bufferPIN,10);
  String link = "192.168.1.30/index.php?pagina=inserisci_temperatura&id_frigo=2&temperatura=";

String links = link+temp;

  Process p;               
  p.begin("curl"); 
  p.addParameter(String(links));
  p.run();
  delay(5000);
}

Prego.

Saluti,

Davide