Страница 1 из 1
Обработка ответа от устройства в PHP
Добавлено: Пн фев 11, 2019 1:47 pm
Kalm45
Есть устройство реле, URL запрос на проверку состояния выхода :
http://192.168.17.120/control?cmd=Status,GPIO,12 проверка статуса, ответ будет такого типа :
{
"log": "",
"plugin": 1,
"pin": 12,
"mode": "output",
"state": 1
}
Какую команду использовать в РНР чтобы получить значение "slate" ? для контроля состояния выхода.
Пытался через file_get_contents , но не получилось, не слишком силен в програмировании,т.ч не пинайте сильно )
Re: Обработка ответа от устройства в PHP
Добавлено: Пн фев 11, 2019 2:43 pm
Chainik
Видно, что вам нужен последний символ ответа (если, конечно, им не является "}"). Последний символ можно получить так:
Код: Выделить всё
$state = file_get_contents("http://192.168.17.120/control?cmd=Status,GPIO,12");
$state = substr($state,-1);
Ну а, например, третий символ с конца, так:
А еще надежней, думаю, так:
Код: Выделить всё
$state = substr($state,strpos($state,'"state": ')+9,1);
Re: Обработка ответа от устройства в PHP
Добавлено: Пн фев 11, 2019 3:09 pm
skysilver
Это JSON.
Код: Выделить всё
$res = json_decode(file_get_contents("http://192.168.17.120/control?cmd=Status,GPIO,12"));
echo $res->pin;
echo $res->mode;
echo $res->state;
Re: Обработка ответа от устройства в PHP
Добавлено: Вс мар 31, 2019 11:12 pm
woow
если запрашивать сервер
http://192.168.1.61, он вываливает состояние всех реле:
Код: Выделить всё
{"Relay_0":1 ,"Relay_1":0 ,"Relay_2":0 ,"Relay_3":0 ,"Relay_4":0 ,"Relay_5":0 ,"Relay_6":0 ,"Relay_7":0 }
для свойства первого реле мне надо расшифровать эту строку:
создаю метод decode:
Код: Выделить всё
$res = json_decode(file_get_contents("http://192.168.1.61"));
echo $res->Relay_0;
создаю свойство status для Реле1 и в нём отмечаю запускать метод decode при изменении
но не чего не происходит
При тесте метода, Метод даёт такую осечку:
Код: Выделить всё
Warning: file_get_contents(http://192.168.1.61): failed to open stream: HTTP request failed! {"Relay_0":0 ,"Relay_1":0 ,"Relay_2":0 ,"Relay_3":0 ,"Relay_4":0 ,"Relay_5":0 ,"Relay_6":0 ,"Relay_7":0 } in /var/www/html/modules/objects/objects.class.php(570) : eval()'d code on line 1
Re: Обработка ответа от устройства в PHP
Добавлено: Пн апр 01, 2019 5:31 pm
xor
woow писал(а):если запрашивать сервер
http://192.168.1.61, он вываливает состояние всех реле:
Код: Выделить всё
{"Relay_0":1 ,"Relay_1":0 ,"Relay_2":0 ,"Relay_3":0 ,"Relay_4":0 ,"Relay_5":0 ,"Relay_6":0 ,"Relay_7":0 }
для свойства первого реле мне надо расшифровать эту строку:
создаю метод decode:
Код: Выделить всё
$res = json_decode(file_get_contents("http://192.168.1.61"));
echo $res->Relay_0;
создаю свойство status для Реле1 и в нём отмечаю запускать метод decode при изменении
но не чего не происходит
При тесте метода, Метод даёт такую осечку:
Код: Выделить всё
Warning: file_get_contents(http://192.168.1.61): failed to open stream: HTTP request failed! {"Relay_0":0 ,"Relay_1":0 ,"Relay_2":0 ,"Relay_3":0 ,"Relay_4":0 ,"Relay_5":0 ,"Relay_6":0 ,"Relay_7":0 } in /var/www/html/modules/objects/objects.class.php(570) : eval()'d code on line 1
Есть Реле 1, у него есть статус, при изменении статуса вызывается метод, который должен узнать, какой у реле статус и напечатать статус реле0?
Кто меняет статус Реле1, чтобы запустился метод декоде?
Отправлено с моего Redmi 4X через Tapatalk
Re: Обработка ответа от устройства в PHP
Добавлено: Пн апр 01, 2019 9:46 pm
woow
xor писал(а): Пн апр 01, 2019 5:31 pm
Кто меняет статус Реле1, чтобы запустился метод декоде?
для начала как-то нужно вытащить контент