После обновления адаптера MQTT до версии 1.1.1 (2016-09-12)
в логе появились ошибки:
warn Client [...] has invalid password(....) or username(....)
...
После обновления адаптера MQTT до версии 1.1.1 (2016-09-12)
в логе появились ошибки:
warn Client [...] has invalid password(....) or username(....)
...
На гите:
0.3.3 (2016-08-25)
(bluefox) custom poll interval for every sensor
(bluefox) fix list of sensors over ethernet more than 5 `
custom poll interval for every sensor - отличная возможность реально разгрузить проц,
датчики движения можно опрашивать в 2 сек, а например, температуру раз в минуту.
Нагрузка от OWFS уменьшилась с 20% до 4% по CPU!
P.S. Bluefox уже всё сделал 0.3.4 `
Обновился до 0.3.4 - находит все датчики
(перешел на формат f.i который по умолчанию)
Большое спасибо Bluefox!
После чистой установки owfs сколько не менял настройки драйвера появление дубликатов замечено не было `
у меня были проблемы только на слейве - при перезапуске iobroker на мастере или рестарта мастер сервера.
А так, как у меня там свой экземпляр javascript адаптера - при дубликате его - он перестает работать.
! Необходимость в двух серверах в том, что другой установлен на входной двери
! и обрабатывает информацию от датчиков тока возле щитка, ИК освещении перед дверью,
! герконов в двери и замке, RFID ключа, камеры в глазке и т.п.
! Делать связь через WiFi не стал - так как вор бы включил глушилку на частоте WiFi и открывай дверь,
! никакой сигнализации не будет. Поэтому протянул к слейву витую пару и завел все через нее.
Но при этом запустился ещё один owsf.0 `
временно, как workaround, я установил на слейве скрипт, который отслеживает и при появлении дубликатов драйверов, запущенных мастером перезапускает iobroker на слейве:
root@art1:~# cat /usr/local/bin/iobroker_duplicate_checker.sh
#!/bin/bash
count=`ps ax | grep 'io[.b]' | grep -v bash | awk -F" " '{print $5}' | uniq -d | wc -l`
if [ "$count" -gt "0" ]
then
systemctl restart iobroker
fi
exit 0
И добавил в /etc/crontab
# Check Duplicate instances of iobroker and restart iobroker on a slave
* * * * * root /usr/local/bin/iobroker_duplicate_checker.sh
За формат отвечает ключ -f
Из man owfs
-f --format="f[.]i[[.]c]"
Display format for the 1-wire devices. Each device has a 8byte address, consisting of:
f family code, 1 byte
i ID number, 6 bytes
c CRC checksum, 1 byte
Possible formats are f.i (default, 01.A1B2C3D4E5F6), fi fic f.ic f.i.c and fi.c
All formats are accepted as input, but the output will be in the specified format.
The address elements can be retrieved from a device entry in owfs by the family, id and crc8 properties, and as a whole with
address. The reversed id and address can be retrieved as r_id and r_address.
По умолчанию - формат f.i
Я когда-то, для экспериментов установил format = fic
Сейчас для меня некритично и я вернул format = f.i чтоб было как у всех
! root@art4:~# ls -l /mnt/1wire/
! drwxrwxrwx 1 root root 4096 сер 28 08:39 26.1DE491010000
! drwxrwxrwx 1 root root 4096 сер 28 08:39 26.8725A4010000
! drwxrwxrwx 1 root root 4096 сер 28 08:39 26.A9CA91010000
! drwxrwxrwx 1 root root 4096 сер 28 08:39 26.ECEA91010000
! drwxrwxrwx 1 root root 4096 сер 28 08:39 26.F1EA91010000
! drwxrwxrwx 1 root root 4096 сер 28 08:39 28.0D1C2A050000
! drwxrwxrwx 1 root root 4096 сер 28 08:39 28.34C848040000
! drwxrwxrwx 1 root root 4096 сер 28 08:39 28.3B42D8050000
! drwxrwxrwx 1 root root 4096 сер 28 08:39 28.799F74040000
! drwxrwxrwx 1 root root 4096 сер 28 08:39 28.864975040000
! drwxrwxrwx 1 root root 4096 сер 28 08:39 28.B0A92A050000
! drwxrwxrwx 1 root root 4096 сер 28 08:39 28.E5BC2A050000
! drwxrwxrwx 1 root root 4096 сер 28 08:39 29.191D16000000
! drwxrwxrwx 1 root root 4096 сер 28 08:39 29.276E0C000000
! drwxrwxrwx 1 root root 4096 сер 28 08:39 29.45B70C000000
! drwxr-xr-x 1 root root 4096 сер 28 08:38 alarm
! drwxr-xr-x 1 root root 4096 сер 28 08:38 bus.1
! drwxr-xr-x 1 root root 4096 сер 28 08:38 bus.2
! drwxr-xr-x 1 root root 4096 сер 28 08:38 bus.3
! drwxr-xr-x 1 root root 4096 сер 28 08:38 bus.4
! drwxr-xr-x 1 root root 4096 сер 28 08:38 bus.5
! drwxr-xr-x 1 root root 4096 сер 28 08:38 bus.6
! drwxr-xr-x 1 root root 4096 сер 28 08:38 bus.7
! drwxr-xr-x 1 root root 4096 сер 28 08:38 bus.8
! drwxr-xr-x 1 root root 4096 сер 28 08:38 settings
! drwxrwxrwx 1 root root 4096 сер 28 08:39 simultaneous
! drwxr-xr-x 1 root root 4096 сер 28 08:38 statistics
! drwxr-xr-x 1 root root 4096 сер 28 08:38 structure
! drwxr-xr-x 1 root root 4096 сер 28 08:38 system
! drwxr-xr-x 1 root root 4096 сер 28 08:38 uncached
@jeorgep:`
А у меня например все начинаются с 02, а ещё есть "-" или "." в имени. Вот я и отфильтровал все сенсоры с точкой.Надо найти правило, как можно распознать сенсоры. А пока я просто уберу любые фильтры. `
Вот у конкурентов в коде, я так понимаю папки которые всегда присутствуют отбрасывают. Я у себя вернул фильтр и драйвер находит на один больше, это оказывается папка /simultaneous.! function scanDevices() {
! if (!defined('ONEWIRE_SERVER')) {
! return 0;
! }
! $ow=new OWNet(ONEWIRE_SERVER);
! $tmp=$ow->get("/",OWNET_MSG_DIR,false);
! if (!$tmp) {
! return 0;
! }
! $devices=explode(',', $tmp);
! $total=count($devices);
! for($i=0;$i<$total;$i++) {
! if (
! $devices[$i]=='/alarm' ||
! $devices[$i]=='/structure' ||
! $devices[$i]=='/system' ||
! $devices[$i]=='/settings' ||
! $devices[$i]=='/uncached' ||
! $devices[$i]=='/simultaneous' ||
! $devices[$i]=='/statistics' ||
! preg_match('/bus.\d+$/', $devices[$i]) ||
! 0
! ) {
! continue;
! }
! $udid=preg_replace('/^//', '', $devices[$i]);
! $rec=SQLSelectOne("SELECT * FROM owdevices WHERE UDID='".$udid."'");
! if (!$rec['ID']) {
! $rec['UDID']=$udid;
! $rec['TITLE']=$rec['UDID'];
! $rec['STATUS']=1;
! $rec['ONLINE_INTERVAL']=60*60;
! $rec['LOG']=date('Y-m-d H:i:s').' Added';
! $rec['ID']=SQLInsert('owdevices', $rec);
! }
! $this->updateDevice($rec['ID']);
! }
! }! if ($parse_php_type && $get_type!=OWNET_MSG_DIR_ALL){
! $tmp =explode('/',$path);$c=count($tmp)-1;
! if ($c>0){ // must be something like '/dir/file' array('dir', 'file'), count()-1 = 1 > 0
! $variavel =$tmp[$c]; // get last two uri args
! $ow =$tmp[$c-1];
! unset($tmp);
! if (preg_match('/([0-9A-F]{2})[.]{0,1}[0-9A-F]{12}/',$ow,$tmp)){ // check if ow is an OW id ("XX.ZZZZZZZZZZZZ $
! $tmp=$tmp[1];
! if (!isset($OWNET_GLOBAL_CACHE_STRUCTURE[$tmp.'/'.$variavel])){ // check if we have structure information
! $tmp_v=@$this->get("/structure/$tmp/$variavel",OWNET_MSG_READ,false,false); // get estrutucture i$
! if ($tmp_v!==NULL){
! $tmp_v=explode(',',$tmp_v); // ok we will get $
! $OWNET_GLOBAL_CACHE_STRUCTURE[$tmp.'/'.$variavel]=$tmp_v;
! $type=$tmp_v;
! }
! }else
! $type=$OWNET_GLOBAL_CACHE_STRUCTURE[$tmp.'/'.$variavel];
! }
! }
! unset($tmp,$tmp_v,$variavel,$ow,$c);
! } `
строка:
if (preg_match('/([0-9A-F]{2})[.]{0,1}[0-9A-F]{12}/',$ow,$tmp)){
Не будет находить моих датчиков.
Необходимо как я писал выше:
if (preg_match('/([0-9A-F]{2})[.\dA-F]{0,1}[0-9A-F]{12}/',$ow,$tmp)){
это оказывается папка /simultaneous.
Странно, она не совпадает с данным регулярным выражением
ls -l /mnt/1wire
! root@Server1:~# ls -l /mnt/1wire
! итого 0
! drwxrwxrwx 1 root root 4096 авг 26 09:05 10.DB1979020800
! drwxrwxrwx 1 root root 4096 авг 26 09:05 28.1C8D2D050000
! drwxrwxrwx 1 root root 4096 авг 26 09:05 28.3C3B63040000
! drwxrwxrwx 1 root root 4096 авг 26 09:05 28.3E0764040000
! drwxrwxrwx 1 root root 4096 авг 26 09:05 28.6659CE040000
! drwxrwxrwx 1 root root 4096 авг 26 09:05 28.ECB1CD040000
! drwxrwxrwx 1 root root 4096 авг 26 09:05 28.FF1C154A0400
! drwxrwxrwx 1 root root 4096 авг 26 09:05 28.FF3E484E0400
! drwxrwxrwx 1 root root 4096 авг 26 09:05 28.FF76034B0400
! drwxrwxrwx 1 root root 4096 авг 26 09:05 28.FF7B414E0400
! drwxrwxrwx 1 root root 4096 авг 26 09:05 28.FFC1674E0400
! drwxrwxrwx 1 root root 4096 авг 26 09:05 28.FFE6574E0400
! drwxrwxrwx 1 root root 4096 авг 26 09:05 28.FFF2054A0400
! drwxrwxrwx 1 root root 4096 авг 26 09:05 3A.483B1E000000
! drwxrwxrwx 1 root root 4096 авг 26 09:05 3A.DB481E000000
! drwxrwxrwx 1 root root 4096 авг 26 09:05 3A.E6331E000000
! drwxr-xr-x 1 root root 4096 авг 26 02:10 alarm
! drwxr-xr-x 1 root root 4096 авг 26 02:10 bus.1
! drwxr-xr-x 1 root root 4096 авг 26 02:10 settings
! drwxrwxrwx 1 root root 4096 авг 26 09:05 simultaneous
! drwxr-xr-x 1 root root 4096 авг 26 02:10 statistics
! drwxr-xr-x 1 root root 4096 авг 26 02:10 structure
! drwxr-xr-x 1 root root 4096 авг 26 02:10 system
! drwxr-xr-x 1 root root 4096 авг 26 02:10 uncached
! root@Server1:~#
ls -l /mnt/1wire/bus.1! root@Server1:~# ls -l /mnt/1wire/bus.1
! итого 0
! drwxrwxrwx 1 root root 4096 авг 26 09:09 10.DB1979020800
! drwxrwxrwx 1 root root 4096 авг 26 09:09 28.1C8D2D050000
! drwxrwxrwx 1 root root 4096 авг 26 09:09 28.3C3B63040000
! drwxrwxrwx 1 root root 4096 авг 26 09:09 28.3E0764040000
! drwxrwxrwx 1 root root 4096 авг 26 09:09 28.6659CE040000
! drwxrwxrwx 1 root root 4096 авг 26 09:09 28.ECB1CD040000
! drwxrwxrwx 1 root root 4096 авг 26 09:09 28.FF1C154A0400
! drwxrwxrwx 1 root root 4096 авг 26 09:09 28.FF3E484E0400
! drwxrwxrwx 1 root root 4096 авг 26 09:09 28.FF76034B0400
! drwxrwxrwx 1 root root 4096 авг 26 09:09 28.FF7B414E0400
! drwxrwxrwx 1 root root 4096 авг 26 09:09 28.FFC1674E0400
! drwxrwxrwx 1 root root 4096 авг 26 09:09 28.FFE6574E0400
! drwxrwxrwx 1 root root 4096 авг 26 09:09 28.FFF2054A0400
! drwxrwxrwx 1 root root 4096 авг 26 09:09 3A.483B1E000000
! drwxrwxrwx 1 root root 4096 авг 26 09:09 3A.DB481E000000
! drwxrwxrwx 1 root root 4096 авг 26 09:09 3A.E6331E000000
! drwxr-xr-x 1 root root 4096 авг 26 02:10 alarm
! drwxr-xr-x 1 root root 4096 авг 26 02:10 interface
! drwxrwxrwx 1 root root 4096 авг 26 09:09 simultaneous `Можна, например, так:
(здесь мои и Haus'a находятся. Тире не ставил, ибо не знаю в каком месте оно может быть) `
drwxr-xr-x 1 root root 4096 Aug 24 11:36 ./ drwxr-xr-x 4 root root 4096 Aug 23 15:49 ../ drwxrwxrwx 1 root root 4096 Aug 24 11:36 05.3158A35A255D/ drwxrwxrwx 1 root root 4096 Aug 24 11:36 05.4AEC29CDBAAB/ drwxrwxrwx 1 root root 4096 Aug 24 11:36 05.765A2E63339F/ drwxrwxrwx 1 root root 4096 Aug 24 11:36 05.C99A66320DB7/ drwxrwxrwx 1 root root 4096 Aug 24 11:36 10.051758E95ED4/ drwxrwxrwx 1 root root 4096 Aug 24 11:36 10.213DDC8770E9/ drwxrwxrwx 1 root root 4096 Aug 24 11:36 10.54110E827441/ drwxrwxrwx 1 root root 4096 Aug 24 11:36 10.67C6697351FF/ drwxrwxrwx 1 root root 4096 Aug 24 11:36 10.ABB2CDC69BB4/ drwxrwxrwx 1 root root 4096 Aug 24 11:36 3A.F2FBE3467CC2/ drwxr-xr-x 1 root root 4096 Aug 24 11:36 alarm/ drwxr-xr-x 1 root root 4096 Aug 24 11:36 bus.0/ drwxrwxrwx 1 root root 4096 Aug 24 11:36 ED.54F81BE8E78D/ drwxr-xr-x 1 root root 4096 Aug 24 11:36 settings/ drwxrwxrwx 1 root root 4096 Aug 24 11:36 simultaneous/ drwxr-xr-x 1 root root 4096 Aug 24 11:36 statistics/ drwxr-xr-x 1 root root 4096 Aug 24 11:36 structure/ drwxr-xr-x 1 root root 4096 Aug 24 11:36 system/ drwxr-xr-x 1 root root 4096 Aug 24 11:36 uncached/ ```` `
эти тоже находятся верно правилом: ([\dA-F]){2,}[.\dA-F]{1,}([\dA-F]){12,}
1397_regexp2.png
@jeorgep:`
А у меня например все начинаются с 02, а ещё есть "-" или "." в имени. Вот я и отфильтровал все сенсоры с точкой.Надо найти правило, как можно распознать сенсоры. А пока я просто уберу любые фильтры. `
ls -l /mnt/1wire! root@Server1:~# ls -l /mnt/1wire
! итого 0
! drwxrwxrwx 1 root root 4096 авг 26 09:05 10.DB1979020800
! drwxrwxrwx 1 root root 4096 авг 26 09:05 28.1C8D2D050000
! drwxrwxrwx 1 root root 4096 авг 26 09:05 28.3C3B63040000
! drwxrwxrwx 1 root root 4096 авг 26 09:05 28.3E0764040000
! drwxrwxrwx 1 root root 4096 авг 26 09:05 28.6659CE040000
! drwxrwxrwx 1 root root 4096 авг 26 09:05 28.ECB1CD040000
! drwxrwxrwx 1 root root 4096 авг 26 09:05 28.FF1C154A0400
! drwxrwxrwx 1 root root 4096 авг 26 09:05 28.FF3E484E0400
! drwxrwxrwx 1 root root 4096 авг 26 09:05 28.FF76034B0400
! drwxrwxrwx 1 root root 4096 авг 26 09:05 28.FF7B414E0400
! drwxrwxrwx 1 root root 4096 авг 26 09:05 28.FFC1674E0400
! drwxrwxrwx 1 root root 4096 авг 26 09:05 28.FFE6574E0400
! drwxrwxrwx 1 root root 4096 авг 26 09:05 28.FFF2054A0400
! drwxrwxrwx 1 root root 4096 авг 26 09:05 3A.483B1E000000
! drwxrwxrwx 1 root root 4096 авг 26 09:05 3A.DB481E000000
! drwxrwxrwx 1 root root 4096 авг 26 09:05 3A.E6331E000000
! drwxr-xr-x 1 root root 4096 авг 26 02:10 alarm
! drwxr-xr-x 1 root root 4096 авг 26 02:10 bus.1
! drwxr-xr-x 1 root root 4096 авг 26 02:10 settings
! drwxrwxrwx 1 root root 4096 авг 26 09:05 simultaneous
! drwxr-xr-x 1 root root 4096 авг 26 02:10 statistics
! drwxr-xr-x 1 root root 4096 авг 26 02:10 structure
! drwxr-xr-x 1 root root 4096 авг 26 02:10 system
! drwxr-xr-x 1 root root 4096 авг 26 02:10 uncached
! root@Server1:~#
ls -l /mnt/1wire/bus.1! root@Server1:~# ls -l /mnt/1wire/bus.1
! итого 0
! drwxrwxrwx 1 root root 4096 авг 26 09:09 10.DB1979020800
! drwxrwxrwx 1 root root 4096 авг 26 09:09 28.1C8D2D050000
! drwxrwxrwx 1 root root 4096 авг 26 09:09 28.3C3B63040000
! drwxrwxrwx 1 root root 4096 авг 26 09:09 28.3E0764040000
! drwxrwxrwx 1 root root 4096 авг 26 09:09 28.6659CE040000
! drwxrwxrwx 1 root root 4096 авг 26 09:09 28.ECB1CD040000
! drwxrwxrwx 1 root root 4096 авг 26 09:09 28.FF1C154A0400
! drwxrwxrwx 1 root root 4096 авг 26 09:09 28.FF3E484E0400
! drwxrwxrwx 1 root root 4096 авг 26 09:09 28.FF76034B0400
! drwxrwxrwx 1 root root 4096 авг 26 09:09 28.FF7B414E0400
! drwxrwxrwx 1 root root 4096 авг 26 09:09 28.FFC1674E0400
! drwxrwxrwx 1 root root 4096 авг 26 09:09 28.FFE6574E0400
! drwxrwxrwx 1 root root 4096 авг 26 09:09 28.FFF2054A0400
! drwxrwxrwx 1 root root 4096 авг 26 09:09 3A.483B1E000000
! drwxrwxrwx 1 root root 4096 авг 26 09:09 3A.DB481E000000
! drwxrwxrwx 1 root root 4096 авг 26 09:09 3A.E6331E000000
! drwxr-xr-x 1 root root 4096 авг 26 02:10 alarm
! drwxr-xr-x 1 root root 4096 авг 26 02:10 interface
! drwxrwxrwx 1 root root 4096 авг 26 09:09 simultaneous `
Можна, например, так:
(здесь мои и Haus'a находятся. Тире не ставил, ибо не знаю в каком месте оно может быть)
1397_regexp1.png
` > Из замечаний - некорректно работает поиск.
Нашло 8 устройств - реально 15.
Как выглядит папка /mnt/1wire ? Или где там у тебя замонтировано.
!
root@art4:/opt/iobroker# ls -l /mnt/1wire drwxrwxrwx 1 root root 4096 сер 26 06:33 261DE49101000070 drwxrwxrwx 1 root root 4096 сер 26 06:33 268725A401000028 drwxrwxrwx 1 root root 4096 сер 26 06:33 26A9CA91010000F1 drwxrwxrwx 1 root root 4096 сер 26 06:33 26ECEA9101000097 drwxrwxrwx 1 root root 4096 сер 26 06:33 26F1EA9101000086 drwxrwxrwx 1 root root 4096 сер 26 06:33 280D1C2A05000057 drwxrwxrwx 1 root root 4096 сер 26 06:33 2834C84804000051 drwxrwxrwx 1 root root 4096 сер 26 06:33 283B42D805000049 drwxrwxrwx 1 root root 4096 сер 26 06:33 28799F74040000F0 drwxrwxrwx 1 root root 4096 сер 26 06:33 28864975040000EB drwxrwxrwx 1 root root 4096 сер 26 06:33 28B0A92A05000087 drwxrwxrwx 1 root root 4096 сер 26 06:33 28E5BC2A050000EC drwxrwxrwx 1 root root 4096 сер 26 06:33 29191D160000004F drwxrwxrwx 1 root root 4096 сер 26 06:33 29276E0C000000B1 drwxrwxrwx 1 root root 4096 сер 26 06:33 2945B70C000000B1 drwxr-xr-x 1 root root 4096 сер 22 08:12 alarm drwxr-xr-x 1 root root 4096 сер 22 08:12 bus.1 drwxr-xr-x 1 root root 4096 сер 22 08:12 bus.2 drwxr-xr-x 1 root root 4096 сер 22 08:12 bus.3 drwxr-xr-x 1 root root 4096 сер 22 08:12 bus.4 drwxr-xr-x 1 root root 4096 сер 22 08:12 bus.5 drwxr-xr-x 1 root root 4096 сер 22 08:12 bus.6 drwxr-xr-x 1 root root 4096 сер 22 08:12 bus.7 drwxr-xr-x 1 root root 4096 сер 22 08:12 bus.8 drwxr-xr-x 1 root root 4096 сер 22 08:12 settings drwxrwxrwx 1 root root 4096 сер 26 06:33 simultaneous drwxr-xr-x 1 root root 4096 сер 22 08:12 statistics drwxr-xr-x 1 root root 4096 сер 22 08:12 structure drwxr-xr-x 1 root root 4096 сер 22 08:12 system drwxr-xr-x 1 root root 4096 сер 22 08:12 uncached !
"version": "0.3.3"
Found 8 sensors
У меня восьмиканальный мастер DS2482-800
Похоже оно посчитало каналы
Внутри канальной папки:
root@art4:/opt/iobroker# ls -l /mnt/1wire/bus.5
drwxrwxrwx 1 root root 4096 сер 26 06:38 2834C84804000051
drwxrwxrwx 1 root root 4096 сер 26 06:38 28B0A92A05000087
drwxrwxrwx 1 root root 4096 сер 26 06:38 28E5BC2A050000EC
drwxr-xr-x 1 root root 4096 сер 22 08:12 alarm
drwxr-xr-x 1 root root 4096 сер 22 08:12 interface
drwxrwxrwx 1 root root 4096 сер 26 06:38 simultaneous
Наверное есть смысл считать лишь файлы, которые начинаются с двойки.
Типа:
!
root@art4:/opt/iobroker# ls /mnt/1wire | grep '^2' 261DE49101000070 268725A401000028 26A9CA91010000F1 26ECEA9101000097 26F1EA9101000086 280D1C2A05000057 2834C84804000051 283B42D805000049 28799F74040000F0 28864975040000EB 28B0A92A05000087 28E5BC2A050000EC 29191D160000004F 29276E0C000000B1 2945B70C000000B1 !