Сначало устанавливаем программу Open Hardware Monitor.
Скачать можно везде и на русском тоже.
Запускаем программу и получаем монитор нашего компьютера , примерно такое (это мой монитор)
Далее выбираем параметр который хотим вытянуть, допустим это скорость вентилятора
CPU Fan #2
Далее создаем скрипт с таким содержанием:
$ch = curl_init('http://192.168.1.35:8085/data.json');//здесь заменить IP на свой http://*:8085/data.json
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$ohm = curl_exec($ch);
$json = json_decode($ohm);
//----------------------- Вытягиваем данные
$Fan = $json -> {'Children'}[0] -> {'Children'}[0] -> {'Children'}[0] ->{'Children'}[2] -> {'Children'}[0] -> {'Value'};
$cpu_tip = $json -> {'Children'}[0] ->{'Children'}[1] -> {'Text'};
//----------------------- Просматриваем данные
echo "<br \>";
echo "скорость вентилятора";echo "  ";print_r("$Fan");
echo "<br \>";
echo "Тип процессора";echo "  ";print_r("$cpu_tip");
//----------------------- Присваеваем данные
setGlobal('serverFAN2.value', $Fan);
setGlobal('serverCPUtip.value', $cpu_tip);
Теперь обьясню как собираются выражения
$Fan = $json -> {'Children'}[0] ->{'Children'}[0] -> {'Children'}[0] ->{'Children'}[2] -> {'Children'}[0] -> {'Value'};
$cpu_tip = $json -> {'Children'}[0] ->{'Children'}[1] -> {'Text'};
Давайте разобьем эту строку на части
$Fan = - это название переменной которую мы создаем
$json -> - это входим в json
{'Children'}[0] -> - это входим в свой компьютер, смотри по фото монитора данных(у меня это в HOME-E78C34B9F1)
Второй гилдрен
$Fan = $json -> {'Children'}[0] ->{'Children'}[0] - это входим в :
В зависимости куда нужно зайти ту цифру и ставите после {'Children'}[ 0или1или2или3или4или5 ]
В нашем случае стоит 0 - значит входим в материнскую плату, а если допустим поставить 4 то попадем в винчестер (смотри по картинке моего монитора)
Теперь после этого выражения
$Fan = $json -> {'Children'}[0] ->{'Children'}[0] -> {'Children'}[0]
мы попадаем сюда в Winbond W83627EHF
Дальше добавляем еще один {'Children'} и попадаем $Fan = $json -> {'Children'}[0] ->{'Children'}[0] -> {'Children'}[0] ->{'Children'}[2] сюда:
здесь нам нужно поставить 2 , если хотим попасть в Fan
Дальше при добавлении попадаем в :
$Fan = $json -> {'Children'}[0] ->{'Children'}[0] -> {'Children'}[0] ->{'Children'}[2] -> {'Children'}[0]
Далее дописываем переменную value или maх или min, в зависимости от необходимости
Если нужно вытянуть название блока а не его переменную то пишем {'Text'};
Например пишем это $cpu_tip = $json -> {'Children'}[0] ->{'Children'}[1] -> {'Text'};
и получаем это
Короче получилось так:
Буду рад если кому поможет а то сам потерял день на это понимание.
Пособие или как считать данные с json
Модератор: immortal
- adzam
- Сообщения: 607
- Зарегистрирован: Сб дек 08, 2012 10:28 pm
- Откуда: Кишинев
- Благодарил (а): 20 раз
- Поблагодарили: 138 раз
Пособие или как считать данные с json
- За это сообщение автора adzam поблагодарили (всего 2):
- Amarok (Вт авг 26, 2014 6:45 am) • ErmolenkoM (Сб ноя 01, 2014 11:23 am)
- Рейтинг: 2.33%
Мои проекты здесь...https://connect.smartliving.ru/profile/41/blog213.htm
Если вам помогло какое-либо мое сообщение - не ленитесь пользоваться кнопкой СПАСИБО.
Если вам помогло какое-либо мое сообщение - не ленитесь пользоваться кнопкой СПАСИБО.
-
- Сообщения: 560
- Зарегистрирован: Ср сен 04, 2013 10:31 am
- Откуда: Самара
- Благодарил (а): 99 раз
- Поблагодарили: 140 раз
- Контактная информация:
-
- Сообщения: 560
- Зарегистрирован: Ср сен 04, 2013 10:31 am
- Откуда: Самара
- Благодарил (а): 99 раз
- Поблагодарили: 140 раз
- Контактная информация:
Re: Пособие или как считать данные с json
Помогите, туплю я что-то:
Есть JSON:
пытаюсь обратится:
Результат пустой. Что я делаю не так?
Ответ
(ну может кому поможет...)
А теперь объясните мне что происходит? Чего я не понимаю?
Есть JSON:
Код: Выделить всё
$content="{"summary":[{"date":"2014-10-16","points":1909.2,"steps":14490,"calories":2179.5632,"activityCalories":496.4,"distance":6.179},{"date":"2014-10-17","points":2249.6,"steps":14514,"calories":2286.5632,"activityCalories":584.9,"distance":6.7564},{"date":"2014-10-18","points":676.4,"steps":6592,"calories":1792.2632,"activityCalories":175.9,"distance":2.4256}]}"
Код: Выделить всё
$data=(array)json_decode($content);
echo $data->summary[0]->date;
// или так
echo $data['summary '][0]['date'];
Ответ

Код: Выделить всё
//вместо
$data=(array)json_decode($content);
//надо
$data=json_decode($content);
-
- Сообщения: 535
- Зарегистрирован: Чт авг 20, 2015 11:32 am
- Откуда: Ярославль
- Благодарил (а): 61 раз
- Поблагодарили: 75 раз
- Контактная информация:
Re: Пособие или как считать данные с json
помогите пожалуйста, вытягиваю данные, в свойствах прописывается все хорошо, но не могу построить графики, нужно либо чтоб данные без символов вытягивались типа %, либо пните меня в ветку форума где описано как данные с % и градусами прикрутить к графику, весь форум уже второй день лопачу(((
-
- Сообщения: 535
- Зарегистрирован: Чт авг 20, 2015 11:32 am
- Откуда: Ярославль
- Благодарил (а): 61 раз
- Поблагодарили: 75 раз
- Контактная информация:
Re: Пособие или как считать данные с json
все, разобрался сам
]
нужно добавить intval($CpuLoad)
СпойлерПоказать
Код: Выделить всё
$ch = curl_init('http://192.168.1.2:8085/data.json');//здесь заменить IP на свой http://*:8085/data.json
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$ohm = curl_exec($ch);
$json = json_decode($ohm);
//----------------------- Вытягиваем данные
$CpuLoad = $json -> {'Children'}[0] -> {'Children'}[1] -> {'Children'}[2] ->{'Children'}[0] -> {'Value'};
$CpuTemp = $json -> {'Children'}[0] -> {'Children'}[1] -> {'Children'}[1] ->{'Children'}[0] -> {'Value'};
$Memory = $json -> {'Children'}[0] -> {'Children'}[2] -> {'Children'}[0] ->{'Children'}[0] -> {'Value'};
//----------------------- Просматриваем данные
echo "<br \>";
echo "Загрузка процессора";echo "  ";print_r("$CpuLoad");
echo "<br \>";
echo "температура процессора";echo "  ";print_r("$CpuTemp");
echo "<br \>";
echo "Занято оперативки";echo "  ";print_r("$Memory");
//----------------------- Присваеваем данные
setGlobal('ThisComputer.CpuLoad',intval($CpuLoad));
setGlobal('ThisComputer.CpuTemp',intval($CpuTemp));
setGlobal('ThisComputer.Memory',intval($Memory));
нужно добавить intval($CpuLoad)