Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

glaucoribeiro

fsockopen() - NOIP

Recommended Posts

Boa noite.

Estou criando uma unidade de controle de luzes e detecção de movimento para minha casa, estou utilizando a função fsockopen() para enviar dados para um Arduino.

 

Estou usando port forwarding e no-ip para acessar a minha central, ao utilizar a fução fsockopen() para o ip do meu roteador o pacote chega perfeitamente a minha central, porem ao enviar com o destino sendo meu endereço do no-ip nao consigo receber dado algum.

 

Não tenho muito experiencia com PHP, gostaria de saber se essa seria a unica forma de enviar um dado para um ip ou se não e possível enviar com o noip.

 

Código de enviar fsockopen:

<?php
$mensagem = "on";
$fp = fsockopen("glaucoribeiro.ddns.net", 8080, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
fwrite($fp, $mensagem);
    while (!feof($fp)) {
        echo fgets($fp, 128);
   }
    fclose($fp);
}

?>

Codigo do Arduino(apenas para mais informaçao.):

void loop(){
  word pos = ether.packetLoop(ether.packetReceive());
    // check if valid tcp data is received
    if (pos) {
        const char* data = (char* ) Ethernet::buffer + pos;
        if (strncmp("GET / ", data, 6) == 0) {
            ether.httpServerReplyAck(); // send ack to the request
            memcpy_P(ether.tcpOffset(), ServerSeg, sizeof ServerSeg); // send first packet and not send the terminate flag
            ether.httpServerReply_with_flags(sizeof ServerSeg - 1,TCP_FLAGS_ACK_V|TCP_FLAGS_FIN_V); }
        else
        {
          if(strcmp(data, "on") == 0){
            digitalWrite(led, HIGH);
            Serial.println("ligado");
          }else{
            digitalWrite(led, LOW);
            Serial.println("desligado");
          }
            //Serial.println(data);
            ether.httpServerReplyAck(); // send ack to the request
            memcpy_P(ether.tcpOffset(), Recebido, sizeof Recebido);//only the first part will sended 
            ether.httpServerReply_with_flags(sizeof Recebido - 1,TCP_FLAGS_ACK_V|TCP_FLAGS_FIN_V);
          }
        Serial.println(data);
      } 
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa sua central é no mesmo ip do dominio que o no-ip redireciona ? se for não vai rolar..

você terá que criar um redirecionamento local..

 

outra verifica se o roteador está redirecionando os pacotes da porta 8080 para a sua central..

 

Aqui no meu servidor eu uso um Mikrotik que faz todos os redirecionamentos e filtragens

que passa pelo meu link.. e varias outras coisas.. seria bom você pesquisar sobre isso é

legal

 

f43720cd30.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa sua central é no mesmo ip do dominio que o no-ip redireciona ? se for não vai rolar..

você terá que criar um redirecionamento local..

 

outra verifica se o roteador está redirecionando os pacotes da porta 8080 para a sua central..

 

Aqui no meu servidor eu uso um Mikrotik que faz todos os redirecionamentos e filtragens

que passa pelo meu link.. e varias outras coisas.. seria bom você pesquisar sobre isso é

legal

 

f43720cd30.png

 

 

Não entendi muito bem, mas deixa eu passar mais info:

 

nao estou usando nenhuma maquina ligada, meu modem que esta se conectando ao no-ip e no meu modem estou redirecionando a porta 8080 para o meu ip local da central 192.168.0.150 onde eu usaria a porta 80.

 

Pelo que parece esta funcionando o redecionamento, ao abrir meu ddns ele esta direcionando para a minha central normalmente.

 

DDns: glaucoribeiro.ddns.net

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz o download do packet sender, ao enviar uma pacote tcp para o IP da wan funciona o meu roteador direciona perfeitamente para o ip da central porem se usar o ip do ddns nao funciona.

 

Crio que nao seja algo no php e sim e algum bloqueio interno do noip.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não.. você não pode acessar localmente seu próprio ip real ou dominio.. terá que acessar de outro local..

 

o que você pode fazer é criar uma regra no seu modem que tal dominio será redirecionado para tal

IP local.. aí você poderá acessar sua central dentro da sua rede e fora normalmente..

 

tipo para eu poder acessar meu dominio eu criei uma regra no dns static para redirecionar para o ip local do meu servidor. isso só afeta a quem está dentro da rede local..

 

no caso terá que fazer isso aí também.. se seu modem tiver essa possibilidade.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.