rtl_433/examples/rtl_433_http_stream.php

85 lines
1.9 KiB
PHP

#!/usr/bin/php
<?php
/*
Short example of an TCP client written in PHP for rtl_433.
You need to have `php_cli` installed.
To run this as service use these systemd service files for
ubuntu, lubuntu, xubuntu, debian, ubuntu core and so on.
## Service file to start the rtl_433 process
[Unit]
Description=rtl433 tcp service
After=network.target
[Service]
Restart=always
RestartSec=5
RemainAfterExit=no
User=root
ExecStart=/bin/sh -c "/usr/bin/rtl_433 -f 433.92M -F http:127.0.0.1:8433"
[Install]
WantedBy=multi-user.target
## Service file to start the php udp server
[Unit]
Description=http 433 tcp service
After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always
RestartSec=1
User=root
ExecStart=/usr/bin/php /home/user/rtl_433/examples/rtl_433_http_stream.php
[Install]
WantedBy=multi-user.target
*/
//Function to check $haystack if
//$needle in $haystack
function str__contains($haystack,$needle)
{
return (strpos($haystack, $needle) !== false);
}
//main
$addr = "127.0.0.1";
$port = "8433";
$url = $addr . ":" . $port . "/stream";
$fp = stream_socket_client("tcp://" . $url , $errno, $errstr, 70);
if (!$fp) {
//optional error output
//echo "$errstr ($errno)<br />\n";
} else {
fwrite($fp, "GET / HTTP/1.0\r\nHost: " . $addr . "\r\nAccept: */*\r\n\r\n");
while (!feof($fp)) {
$line = fgets($fp, 1024);
//time is available in all received records, that is the filter word
//for sensor data
if(str__contains($line,"time"))
{
//raw output of json
print_r($line);
/*
do something with content of $line
for example decode $line into an array
$arr = json_decode($line,true);
do something with that array and
output into a file as json
file_put_contents('test.json', json_encode($arr, JSON_PRETTY_PRINT);
*/
}
}
fclose($fp);
}
?>