Отправка данных в файл PHP на сервере

Я работаю над проектом по отправке данных на свой веб-сайт. С помощью Arduino и SIM900 я только что сделал AT-код для отправки данных на веб-сайт и использования с ним PHP, но мой файл PHP, похоже, не получает значение, отправленное из AT-команд SIM900, почему? Еще один вопрос, который у меня есть, безопасна ли AT-команда для отправки данных на сайт? Спасибо за помощь и хорошего дня. Это код, который у меня сейчас есть:

Вот что у меня есть сейчас для sim900:

void setup(){
  //Inicialize Serial and SIM
  Serial.begin(19200);
  SIM900.begin(19200);

  delay(7000);

  // See if the SIM900 is ready
  SIM900.println("AT");
  ReceberEFim();                                 
  delay(4000);

  // SIM card inserted and unlocked?
  SIM900.println("AT+CPIN?");
  ReceberEFim();
  delay(500);              

  // Is the SIM card registered?
  SIM900.println("AT+CREG?");
  ReceberEFim();                            
  delay(500);

  // Is GPRS attached?
  SIM900.println("AT+CGATT?");
  ReceberEFim();                           
  delay(500);

  // Check signal strength - should be 9 or higher
  SIM900.println("AT+CSQ");
  ReceberEFim();                              
  delay(500);

  // Set connection type to GPRS
  SIM900.println("AT+SAPBR=3,1,\"Contype\",\"GPRS\"");
  ReceberEFim();      
  delay(1000);

  // Set the APN - this will depend on your network/service provider
  SIM900.println("AT+SAPBR=3,1,\"APN\",\"claro.com.br\"");
  ReceberEFim();      
  delay(1000);

  // Enable GPRS - this will take a moment or two
  SIM900.println("AT+SAPBR=1,1");
  ReceberEFim();                      
  delay(3000);

  // Check to see if connection is correct and get your IP address
  SIM900.println("AT+SAPBR=2,1");
  ReceberEFim();                        
  delay(500);

  // Enable HTTP mode
  SIM900.println("AT+HTTPINIT");
  ReceberEFim();                        
  delay(2000);

  SIM900.println("AT+HTTPPARA=\"URL\",\"http://mywebsite.com/teste.php?s1=50\"");
  ReceberEFim();
  delay(2000);                               

  SIM900.println("AT+HTTPPARA=\"CID\",1");
  ReceberEFim();             
  delay(500);

  SIM900.println("AT+HTTPACTION=0");
  ReceberEFim();                   
  delay(500);

  // Close the HTTP connection
  SIM900.println("AT+HTTPTERM");
  ReceberEFim();

  // Disconnect the GPRS
  SIM900.println("AT+SAPBR=0,1");
  ReceberEFim();
}

Это файл PHP:

   <?php 
    $sensor1 = $_GET["s1"];
    $sensor2 = $_GET["s2"];
    $sensor3 = $_GET["s3"];

    echo "Sensor 1 = $sensor1";
    echo "</br>Sensor 2 = $sensor2";
    echo "</br>Sensor 3 = $sensor3";

  ?>

Я ожидаю, что смогу отправлять несколько данных через SIM900 в мой файл PHP.


person Nilton Sf    schedule 30.09.2019    source источник
comment
Вы должны никогда, никогда, никогда не использовать такую ​​задержку. Вам необходимо читать и анализировать ответы, которые модем отправляет обратно.   -  person hlovdal    schedule 01.10.2019


Ответы (1)


Вы не передали s2 и s3 в своем URL-адресе, поэтому вы не можете получить к нему доступ, и это приведет к ошибке.

Вы можете определить переменную s{n} динамически или попробовать isset, чтобы проверить, существует ли переменная.

Я думаю, что будет лучше использовать https по соображениям безопасности и сеансы или токен, чтобы быть уверенным, что это не кто-то другой, кто пытается отправить случайные значения на ваш сайт.

Я желаю, чтобы это помогло вам,

person Donnay Adrien    schedule 30.09.2019
comment
Эй, я попытался передать 2 других параметра (s2 и s3), но я получаю эту странную ошибку, из-за которой мой URL-адрес может закончить печать, я добавил задержку, но это не имеет значения. Вот что я реализовал: SIM900.print(AT+HTTPPARA=\URL\,\mywebsite.com.br/teste.php?s1=72&s2=32&s3=8\); и это ошибка, которую я получаю AT+HTTPPARA=URL,mywebsite.com.br/ - person Nilton Sf; 30.09.2019