Создал 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.
HTTP устройство статус
Re: HTTP устройство статус
Поле может быть пустым, если использовать полученную строку без изменений. Пример преобразования: $$.split(':')[1] или $$.data.metrics.level или $$ === 'ON' ? 'on' : 'off'
т.е насколько я понимаю должно быть что-то вроде этого:
$$ === '1000' ? 'on' : 'off'
с другим реле так работает, но там в ответ приходит одно значение 0:0; и 0:1;
но как забрать значение?
<rele>0000</rele>
т.е насколько я понимаю должно быть что-то вроде этого:
$$ === '1000' ? 'on' : 'off'
с другим реле так работает, но там в ответ приходит одно значение 0:0; и 0:1;
но как забрать значение?
<rele>0000</rele>
Re: HTTP устройство статус
Тут немного экспериментов нужно. Но примерно так:
$$.findOne('//rele/text()') == "1000" ? "on" : "off"
Напишите, пожалуйста, рабочий вариант потом для истории.
$$.findOne('//rele/text()') == "1000" ? "on" : "off"
Напишите, пожалуйста, рабочий вариант потом для истории.
Re: HTTP устройство статус
PoltoS - БОЛЬШОЕ СПАСИБО
собственно прям так и заработало....
собственно прям так и заработало....
Re: HTTP устройство статус
а температура так?? правильно???
$$.findOne('//temp/text()')
$$.findOne('//temp/text()')
Re: HTTP устройство статус
parseFloat($$.findOne('//temp/text()')) скорее всего, а то не число, а строка будет
Re: HTTP устройство статус
спасибо
совершенно неожиданно для себя уперся в другую проблему
если все четыре реле включены то строчка выглядит так - <rele>1111</rele>
и соответственно когда включено больше одного реле - статус не показывает
полез искать знак "любого символа" нашел - \d и . (точка)
но при подстановки не работает...
попробовал 1\d\d\d и 1[\d][\d][\d]
.1.. и [.]1[.][.]
вот засада то ....
совершенно неожиданно для себя уперся в другую проблему
если все четыре реле включены то строчка выглядит так - <rele>1111</rele>
и соответственно когда включено больше одного реле - статус не показывает
полез искать знак "любого символа" нашел - \d и . (точка)
но при подстановки не работает...
попробовал 1\d\d\d и 1[\d][\d][\d]
.1.. и [.]1[.][.]
вот засада то ....
Re: HTTP устройство статус
Ну проще первый символ строки взять и сравнить с 1. Или в число бинарное преобразовать и маску взять. Ну, на худой конец regexp с вашими \d.
Re: HTTP устройство статус
все.... я потерялся...
я так понял проще использовать - 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/ - нет
ниче не понимаю...
должно же быть просто...
я так понял проще использовать - 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/ - нет
ниче не понимаю...
должно же быть просто...
Re: HTTP устройство статус
если строка 1000 или 1111 и надо на первую однерку реагировать, то регулярное выражение будет
"1…" цифра 1 и три любых знака
или "1.+" что значит однерка и минимум один любой знак
или "1[01]{3}" что значит 1 и три цифры 0 или 1
"1…" цифра 1 и три любых знака
или "1.+" что значит однерка и минимум один любой знак
или "1[01]{3}" что значит 1 и три цифры 0 или 1