Страница 1 из 1

Обработка строк. Нужна помощь.

Добавлено: Вс апр 02, 2017 7:26 pm
djleon
Доброго времени суток!

Есть реле sonoffTH, к нему подключён датчик температуры и влажности
по MQTT в топике "tele/sonoffTH10/SENSOR"
получаю строку "{"Time":"2017-04-02T15:11:41", "AM2301":{"Temperature":27.7, "Humidity":28.4}}"
это значение присваиваю свойству (Sensors->Объект: sonoffH10-> свойство: sonoffH1.string) это сырые данные.
Задача: вытащить из строки значения температуры и влажности и рассовать по свойствам "HumSensor01.value (H)" и "TempSensor01.value (H)" (дабы эти данные появились в графике и на странице климата.

Вероятно нужно в метод "onChange" вписать код обработки свойства объекта "sonoffH10".
мои познания в PHP менее чем скромные, работал с делфи и С++ (С ООП не дружу с института)...
Сильно не пинайте, я доктор, а программистом подрабатывал пару лет, пока зарабатывал репутацию хорошего специалиста в медицине.

По тому прошу помощи. Если всё заработает, сделаю резюме по подключению этого реле с датчиком и подробную инструкцию... (дабы грабли были обезврежены)

Re: Обработка строк. Нужна помощь.

Добавлено: Вс апр 02, 2017 7:54 pm
nick7zmail
Что ж вы так поиском то не любите пользоваться....
Строка эта называется json...вот готовое решение viewtopic.php?p=37549#p37549
(читайте конец, про сценарий на стороне МД)

Re: Обработка строк. Нужна помощь.

Добавлено: Пн апр 03, 2017 5:47 pm
djleon
nick7zmail писал(а):Что ж вы так поиском то не любите пользоваться....
Строка эта называется json...вот готовое решение viewtopic.php?p=37549#p37549
(читайте конец, про сценарий на стороне МД)
Спасибо, но не совсем понял:
Строку json загнал в свойство объекта sonoffDHT1.RawData;
в методе он чейндж нужно написать разбор строки.

$content=sonoffDHT1.RawData; // переменной присвоил значение свойства объекта {"Time":"2017-04-02T21:55:24", "AM2301":{"Temperature":26.7, "Humidity":31.1}}
//
в объекте sonoffDHT1 есть свойства Time Temp Humi
как туда закинуть значания?

Re: Обработка строк. Нужна помощь.

Добавлено: Пн апр 03, 2017 7:21 pm
nick7zmail
Ну для начала не присвоили вы значение переменной....
Присваивается оно примерно так

Код: Выделить всё

$content=gg('sonoffDHT1.RawData');
А далее - парсите её декодером и разбираете по свойствам

Код: Выделить всё

$data=json_decode($content);
sg('sonoffDHT1.Time', $data->Time);
sg('sonoffDHT1.Hum', $data->AM2301->Humidity);
sg('sonoffDHT1.Temp', $data->AM2301->Temperature);
Не уверен конечно что сработает...но попробуйте (да, проверять мне лень)))

Re: Обработка строк. Нужна помощь.

Добавлено: Вт апр 04, 2017 12:02 am
djleon
И так Спасибо!

Создал сценарий:
DHT10jsondecode
в него вписал код:
$content=gg('sonoffDT10DHT22.value ');
$data=json_decode($content);
sg('sonoffDHT1.Time', $data->Time);
sg('HumSensor01.value', $data->AM2301->Humidity);
sg('TempSensor01.value', $data->AM2301->Temperature);


sonoffDT10DHT22.value это объект.свойство получающий строку из топика сенсора
По изменению свойства включается сценарий.
Итог данные пошли, всё работает.
Грабли обезврежены рукастыми и очень отзывчивыми форумчанами: nick7zmail.
Спасибо!(уже нажимал)...

Re: Обработка строк. Нужна помощь.

Добавлено: Вт апр 04, 2017 8:15 am
nick7zmail
Да пожалуйста)) Если что - пишите.