Realmente bubulindo meu conhecimento nessa parte de web é pouco..hehe
Pela resposta sua paciência não parece estar boa, mas vou te incomodar de novo.
Fui modificando o código e já virou foi bagunça.
Vou passar o código que peguei no engenheirando.com.
Exatamente o que ele faz ai que pretendo alcançar, com a diferença de receber o valor dos sensores que vou usar.
Coloquei o código que me passou, deu erro, mas já vi que foi por falta de conhecimento meu dessa comunicação por socket.
Se puder me mostrar como faço isso fico grato.
PHP
<html>
<head></head>
<body>
<?php
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
// Se conecta ao IP e Porta:
socket_connect($sock,"192.168.0.250", 8080);
// Executa a ação correspondente ao botão apertado.
if(isset($_POST['bits'])) {
$msg = $_POST['bits'];
if(isset($_POST['Fora' ])){ if($msg[0]=='1') { $msg[0]='0'; } else { $msg[0]='1'; }}
if(isset($_POST['Quarto1'])){ if($msg[1]=='1') { $msg[1]='0'; } else { $msg[1]='1'; }}
if(isset($_POST['Quarto2'])){ if($msg[2]=='1') { $msg[2]='0'; } else { $msg[2]='1'; }}
if(isset($_POST['Sala' ])){ if($msg[3]=='1') { $msg[3]='0'; } else { $msg[3]='1'; }}
if(isset($_POST['Pequeno'])){ $msg = 'P#'; }
if(isset($_POST['Grande' ])){ $msg = 'G#'; }
socket_write($sock,$msg,strlen($msg));
}
socket_write($sock,'R#',2); //Requisita o status do sistema.
// Espera e lê o status e define a cor dos botões de acordo.
$status = socket_read($sock,6);
if (($status[4]=='L')&&($status[5]=='#')) {
if ($status[0]=='0') $cor1 = 'lightcoral';
else $cor1 = 'lightgreen';
if ($status[1]=='0') $cor2 = 'lightcoral';
else $cor2 = 'lightgreen';
if ($status[2]=='0') $cor3 = 'lightcoral';
else $cor3 = 'lightgreen';
if ($status[3]=='0') $cor4 = 'lightcoral';
else $cor4 = 'lightgreen';
echo "<form method =\"post\" action=\"PaginaPHP.php\">";
echo "<input type=\"hidden\" name=\"bits\" value=\"$status\">";
echo "<button style=\"width:70; background-color: $cor1 ;font: bold 14px Arial\" type = \"Submit\" Name = \"Fora\">Fora</button>
";
echo "<button style=\"width:70; background-color: $cor2 ;font: bold 14px Arial\" type = \"Submit\" Name = \"Quarto1\">Quarto1</button>
";
echo "<button style=\"width:70; background-color: $cor3 ;font: bold 14px Arial\" type = \"Submit\" Name = \"Quarto2\">Quarto2</button>
";
echo "<button style=\"width:70; background-color: $cor4 ;font: bold 14px Arial\" type = \"Submit\" Name = \"Sala\">Sala</button>
";
echo "<button style=\"width:90;font: bold 14px Arial\" type = \"Submit\" Name = \"Pequeno\">Portao Pequeno</button>
";
echo "<button style=\"width:90;font: bold 14px Arial\" type = \"Submit\" Name = \"Grande\">Portao Grande</button>
";
echo "</form>";
}
// Caso ele não receba o status corretamente, avisa erro.
else { echo "Falha ao receber status da casa."; }
socket_close($sock);
// /*--- Aqui está a parte do codigo que me passou. Não sei se tem que encerrar o socket aberto acima que envia para depois abrir outro que recebe..
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($sock,"192.168.0.120", 8080);
$sensor = socket_read($sock);
echo $sensor;
socket_close($sock);
// ---*/
?>
Codigo Arduino
// Maurício Féo
// www.engenheirando.com
#include <SPI.h>
#include <Ethernet.h>
//Configurações do Ethernet Shield
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,0, 250 }; // ip que o arduino assumirá
byte gateway[] = { 192,168,0, 2 }; // ip do roteador
byte subnet[] = { 255, 255, 255, 0 };
int canalAnalogico=0;
int sensor;
// String que representa o estado dos dispositivos
char Luz[7] = "0000L#";
EthernetServer server(8080); // Cria o servidor na porta 8081
// String onde é guardada as msgs recebidas
char msg[7] = "0000L#";
void setup() {
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
pinMode(0,OUTPUT);
pinMode(1,OUTPUT);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
}
void loop() {
EthernetClient client = server.available();
// SE receber um caracter...
if (client) {
// guarda o caracter na string 'msg'
msg[1]=msg[2]; msg[2]=msg[3]; msg[3]=msg[4]; msg[4]=msg[5]; msg[5]=msg[6];
msg[6] = client.read();
if (msg[6]=='#') {
switch(msg[5]) {
case 'R':
// Se receber o comando 'R#' envia de volta o status dos
// dispositivos. (Que é a string 'Luz')
client.write(Luz);
break;
case 'P':
// Caso P#, aciona o pino do portão pequeno por 1s.
digitalWrite(4,HIGH);
delay(1000);
digitalWrite(4,LOW);
break;
case 'G':
// Caso G#, aciona o pino do portão pequeno por 1s.
digitalWrite(5,HIGH);
delay(1000);
digitalWrite(5,LOW);
break;
case 'L':
// Caso L#, ele copia os 4 bytes anteriores p/ a
// string 'Luz' e cada byte representa um
// dispositivo, onde '1'=ON e '0'=OFF
Luz[0]=msg[1];
Luz[1]=msg[2];
Luz[2]=msg[3];
Luz[3]=msg[4];
if (Luz[0]=='1') digitalWrite(0,HIGH); else digitalWrite(0,LOW);
if (Luz[1]=='1') digitalWrite(1,HIGH); else digitalWrite(1,LOW);
if (Luz[2]=='1') digitalWrite(2,HIGH); else digitalWrite(2,LOW);
if (Luz[3]=='1') digitalWrite(3,HIGH); else digitalWrite(3,LOW);
break;
}
}
//ESTOU ENVIANDO AQUI, SÓ QUE ESTÁ COM ERRO.
sensor = analogRead(canalAnalogico);
client.print(sensor);
}
}