HTTP устройство статус

Данный раздел предназначен для русскоязычных пользователей. Если вы владеете английским, рекомендуем также просмотреть общую ветку обсуждений на английском.
ilya1
Posts: 22
Joined: 11 Sep 2016 09:45

HTTP устройство статус

Post by ilya1 »

Создал HTTP устройство, работает с вот такими командами:
вкл - http://192.168.0.101/cmd.cgi?cmd=REL,1,1
выкл - http://192.168.0.101/cmd.cgi?cmd=REL,1,0
статус - http://192.168.0.101/state.xml

Включение-выключение работает, но проблема в статусе
в ответ на http://192.168.0.101/state.xml
выдается:
<response>
<systime>23761</systime>
<rele>0000</rele>
<in>000000</in>
<out>000000000000</out>
<adc1>0.000</adc1>
<adc2>0.000</adc2>
<temp>26.250</temp>
<count1>5145</count1>
<count2>207</count2>
<count3>262</count3>
<count4>31</count4>
<pwm>0</pwm>
</response>

я совершенно не понимаю как как выбрать и работать с нужной строчкой
статус одного реле выглядит так: <rele>1000</rele>

я понимаю что надо писать в - JavaScript код для преобразования полученного значения в строки 'on' или 'off'
но я не разбираюсь в JavaScript, поиски в интернете ничего не дали, хоть пример какой бы найти

Да, если интересно это реле Лоран2.
ilya1
Posts: 22
Joined: 11 Sep 2016 09:45

Re: HTTP устройство статус

Post by ilya1 »

Поле может быть пустым, если использовать полученную строку без изменений. Пример преобразования: $$.split(':')[1] или $$.data.metrics.level или $$ === 'ON' ? 'on' : 'off'

т.е насколько я понимаю должно быть что-то вроде этого:
$$ === '1000' ? 'on' : 'off'

с другим реле так работает, но там в ответ приходит одно значение 0:0; и 0:1;

но как забрать значение?
<rele>0000</rele>
User avatar
PoltoS
Posts: 7565
Joined: 26 Jan 2011 19:36

Re: HTTP устройство статус

Post by PoltoS »

Тут немного экспериментов нужно. Но примерно так:

$$.findOne('//rele/text()') == "1000" ? "on" : "off"

Напишите, пожалуйста, рабочий вариант потом для истории.
ilya1
Posts: 22
Joined: 11 Sep 2016 09:45

Re: HTTP устройство статус

Post by ilya1 »

PoltoS - БОЛЬШОЕ СПАСИБО

собственно прям так и заработало....
ilya1
Posts: 22
Joined: 11 Sep 2016 09:45

Re: HTTP устройство статус

Post by ilya1 »

а температура так?? правильно???
$$.findOne('//temp/text()')
User avatar
PoltoS
Posts: 7565
Joined: 26 Jan 2011 19:36

Re: HTTP устройство статус

Post by PoltoS »

parseFloat($$.findOne('//temp/text()')) скорее всего, а то не число, а строка будет
ilya1
Posts: 22
Joined: 11 Sep 2016 09:45

Re: HTTP устройство статус

Post by ilya1 »

спасибо

совершенно неожиданно для себя уперся в другую проблему
если все четыре реле включены то строчка выглядит так - <rele>1111</rele>
и соответственно когда включено больше одного реле - статус не показывает
полез искать знак "любого символа" нашел - \d и . (точка)
но при подстановки не работает...

попробовал 1\d\d\d и 1[\d][\d][\d]
.1.. и [.]1[.][.]

вот засада то ....
User avatar
PoltoS
Posts: 7565
Joined: 26 Jan 2011 19:36

Re: HTTP устройство статус

Post by PoltoS »

Ну проще первый символ строки взять и сравнить с 1. Или в число бинарное преобразовать и маску взять. Ну, на худой конец regexp с вашими \d.
ilya1
Posts: 22
Joined: 11 Sep 2016 09:45

Re: HTTP устройство статус

Post by ilya1 »

все.... я потерялся...
я так понял проще использовать - regexp с \d
но ни в каком виде не работает....

пишут
Например, /.n/ найдет 'an' и 'on' в "nay, an apple is on the tree", но не 'nay'.
но /./ не работает

пишут
\d находит цифру из любого алфавита (у нас же юникод). Используйте [0-9], чтобы найти только обычные цифры. Например, /\d/ или /[0-9]/ найдет '2' в "B2 is the suite number."
/[0-9]/ - тоже нет
/\d/ - нет

ниче не понимаю...
должно же быть просто...
gsaw
Posts: 78
Joined: 22 Aug 2016 00:26

Re: HTTP устройство статус

Post by gsaw »

если строка 1000 или 1111 и надо на первую однерку реагировать, то регулярное выражение будет
"1…" цифра 1 и три любых знака
или "1.+" что значит однерка и минимум один любой знак
или "1[01]{3}" что значит 1 и три цифры 0 или 1
Post Reply