I am building a simple website which should update a text file when the host receives data from another device connected to the same network. The device in question is a small weather station which measures temperature. The temperature is sent by the station in a PHP GET command through Wifi from an ESP8266 chip. The signal is received by the home router and redirected to a laptop on the network which is hosting the website.
I am having issues because the ESP8266 chip seems to send the data/PHP GET command correctly. Yet the website never updates itself.
In order to simplify the system for troubleshooting, the weather station is replaced by the laptop. The laptop is connected directly to the ESP8266 chip through a USB-to-Serial(UART) cable. All the AT commands to communicate with the ESP8266 chip are typed in the Arduino IDE Serial Monitor.
The website is very simple. Whenever it receives data from the ESP8266 chip, it writes it in a text file.
The website is stored on a laptop whose IP is 192.168.1.2.
[email protected]:~$ ifconfig
wlp2s0 Link encap:Ethernet HWaddr 18:cf:5e:ee:3f:10
inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0
The website is a php file hosted on an apache2 server. When executed, the php file stores the temperature in file data.txt. The files are stored at /var/www/html.
[email protected]:~$ ls -la /var/www/html
-rwxrwxrwx 1 root root 0 Jul 31 22:41 data.txt
-rwxr-xr-x 1 root root 127 Jul 31 21:40 index.php
Any GET request sent to the PHP file should contain the temperature so the PHP file can store the temperature in data.txt.
[email protected]:~$ cat /var/www/html/index.php
$a = $_GET['temp'];
$dataSaved = file_put_contents("data.txt",$a . "\n",FILE_APPEND);
echo "Temperature is " . $a . " oC.";
When I type manually the following line in Firefox:
The following text gets displayed in the browser & number "28" gets saved in data.txt.
Temperature is 28 oC.
The ESP8266 Chip
As explained above, in the final system the ESP8266 chip will receive serial instructions from a small weather station. But in order to simplify debugging, the chip is now connected to the laptop with a USB-to-Serial (UART) cable. Serial commands are sent to the chip by using the Arduino IDE Serial Monitor. Here are the commands sent.
WIFI GOT IP
> GET /index.php?temp=10 HTTP/1.1\r\nHost: 192.168.1.2\r\n\r\n
Recv 56 bytes
So at this point, message "Temperature is 10 oC." should appear in the Serial Monitor and the number "10" should get appended to file "data.txt". But nothing happens...
1) The PHP and AT code I am using is very similar to what is presented in this post: https://www.youtube.com/watch?v=q02f4sPghSo .
2) As was pointed in some comments below, the GET command might be less conventional. POST or PUT might be more appropriate. Yet at the moment I am only trying to understand why the website is not responding to the chip.