Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > CyberWrt

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.01.2015, 14:02   #41
Shadow Wizard
Junior Member
 
Регистрация: 23.01.2015
Сообщений: 5
Вес репутации: 0
Shadow Wizard is an unknown quantity at this point
По умолчанию Re: Отваливается ttyUSB

Именно так оно и было сделано: модуль установлен, настроен и роутер перезагружен. После чего первая порция данных даже ушла на народный монитор... а вот вторая и все последующие уже шли пустыми - т.е. без показаний термодатчиков.

Попутно выяснилась еще одна интересная вещь: USB-3G модемы что OpenWRT, что CyberWRT при загрузке определяются только при их подключении через хаб параллельно с USB/UART переходником на 2303. Если же подключать в одиночку или напрямую - хрен, после холодного старта модем хоть и видится как USB-устройство, но как usbTTYx не определяется. Зато воткнешь "на горячую" - и вот они, родные, тут же вылезают в dmesg. Пробовались Huawei E173 и Alcatel 410D. Думал, питания не хватает, поменял БП на двухамперный, подвел к хабу собственное питание - ан нет, эффект тот же.
Похоже, что usb-mode (экс-usb-modeswitch) торопится и не успевает отработать, когда модем стоит в одиночестве. Зато при установке рядышком USB/UART возникает некая задержка - которая позволяет переключателю при загрузке нормально отработать и перевести модем в нужный режим.

Но знаний на то, чтобы это отловить и, тем более, пофиксить у меня не хватает
Shadow Wizard вне форума   Ответить с цитированием
Старый 26.01.2015, 15:37   #42
stD
Senior Member
 
Аватар для stD
 
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1311
stD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant future
По умолчанию Re: Отваливается ttyUSB

Хаб пробовали менять?
stD вне форума   Ответить с цитированием
Старый 26.01.2015, 17:56   #43
Shadow Wizard
Junior Member
 
Регистрация: 23.01.2015
Сообщений: 5
Вес репутации: 0
Shadow Wizard is an unknown quantity at this point
По умолчанию Re: Отваливается ttyUSB

Чего не пробовал, того не пробовал... а вот напрямую, без хаба - пробовал.
Эффект тот же самый - первый запрос к термодатчикам проходит, на чем все и заканчивается. И не спасает даже авторезет... коли он работает, в чем есть некие сомнения.
Shadow Wizard вне форума   Ответить с цитированием
Старый 26.01.2015, 22:14   #44
Shadow Wizard
Junior Member
 
Регистрация: 23.01.2015
Сообщений: 5
Вес репутации: 0
Shadow Wizard is an unknown quantity at this point
По умолчанию Re: Отваливается ttyUSB

Цитата:
Сообщение от mebitek Посмотреть сообщение
А если перешить роутер и установить (например) только модем, что будет?
На родной прошивке все нормально - соединение с холодного старта поднимается автоматом. А вот CyberWRT и OpenWRT видят интерфейсы модема только в паре с pl2303 или при втыкании на горячую. С холодного старта он видится только как USB-устройство в /sys/kernel/debug/usb/devices, без usbTTYx
Описанное в wiki по OpenWRT шаманство с echo '<vid> <pid> ff' > /sys/bus/usb-serial/drivers/option1/new_id и insmod /lib/modules/`uname -r`/usbserial.ko vendor=0x<vid> product=0x<pid> не помогло. Беглое гугление нашло какого-то буржуя, у которого были те же проблемы с 3020, OpenWRT и E173 (он как раз жаловался, что с E220 все было нормально, а E173 заводится или на горячую, или после ~5 минут ожидания), но решения я там не узрел. Разве что попробовать ту прошивку, что ему рекомендовали (ofmodemsandmen)?

P.S.
Тесты проводились как на CyberWRT, так и на обеих доступных stable OpenWRT, AA и BB.
Shadow Wizard вне форума   Ответить с цитированием
Старый 27.01.2015, 07:44   #45
solalex
Senior Member
 
Регистрация: 20.01.2015
Сообщений: 312
Вес репутации: 443
solalex has much to be proud ofsolalex has much to be proud ofsolalex has much to be proud ofsolalex has much to be proud ofsolalex has much to be proud ofsolalex has much to be proud ofsolalex has much to be proud ofsolalex has much to be proud ofsolalex has much to be proud of
По умолчанию Re: Отваливается ttyUSB

Могу посоветовать только костыль после загрузки роутера, на 3020 можно же управлять питанием USB.
типа такого
Код:
echo 0 > /sys/class/gpio/gpio8/value #отключаем питание usb
pause 20
echo 1 > /sys/class/gpio/gpio8/value #включаем питание usb
Это будет эквивалентом горячего подключения
solalex вне форума   Ответить с цитированием
Старый 28.01.2015, 08:03   #46
Shadow Wizard
Junior Member
 
Регистрация: 23.01.2015
Сообщений: 5
Вес репутации: 0
Shadow Wizard is an unknown quantity at this point
По умолчанию Re: Отваливается ttyUSB

Спасибо!
Но... не помогло, увы.

Первым делом отредактировал /etc/usb-mode.json, добавив в конец параметр wait по аналогии с другими подобными строками
Код:
"12d1:1446": {
"*": {
   "t_vendor": 4817,
   "t_product": [ 4097, 5126, 5131, 5132, 5138, 5147, 5170, 5171, 5174, 5292, 5382, 5388, 5393 ],
   "mode": "HuaweiNew",
   "msg": [  ],
   "wait": 9
   }
},
Потом холодный рестарт - и...
Код:
root@:~# dmesg | grep usb
[    4.090000] usbcore: registered new interface driver usbfs
[    4.090000] usbcore: registered new interface driver hub
[    4.100000] usbcore: registered new device driver usb
[    4.490000] usb 1-1: new high-speed USB device number 2 using ehci-platform
[   11.510000] usbcore: registered new interface driver usbserial
[   11.530000] usbcore: registered new interface driver usbserial_generic
[   11.530000] usbserial: USB Serial support registered for generic
[   11.850000] usbcore: registered new interface driver option
[   11.870000] usbserial: USB Serial support registered for GSM modem (1-port)

root@:~#
Причем, что характерно, модем usbmode прекрасно видит:
Код:
root@:~# usbmode -l -v
Found device: 12d1:1446 (Manufacturer: "HUAWEI Technology", Product: "HUAWEI Mobile", Serial: "")
root@:~#
и даже отрабатывает при ручном запуске:
Код:
root@:~# usbmode -s -v

root@:~# dmesg | grep usb
[    4.090000] usbcore: registered new interface driver usbfs
[    4.090000] usbcore: registered new interface driver hub
[    4.100000] usbcore: registered new device driver usb
[    4.490000] usb 1-1: new high-speed USB device number 2 using ehci-platform
[   11.510000] usbcore: registered new interface driver usbserial
[   11.530000] usbcore: registered new interface driver usbserial_generic
[   11.530000] usbserial: USB Serial support registered for generic
[   11.850000] usbcore: registered new interface driver option
[   11.870000] usbserial: USB Serial support registered for GSM modem (1-port)
[22606.410000] usb 1-1: USB disconnect, device number 2
[22610.580000] usb 1-1: new high-speed USB device number 3 using ehci-platform
[22610.750000] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB0
[22610.770000] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB1
[22610.790000] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB2
root@:~#
Но при запуске по питанию не хочет ни в какую.
Пробовал поиграться со значением wait (эх, где б еще мануал по синтаксису этого usb-mode.json нарыть) - если поставить его больше 10, роутер после рестарта переставал отзываться по ssh, приходилось выдергивать модем и перезагружать еще раз. А установка значения меньше 11 ровным счетом никакого эффекта не давала.

Почитал форумы по OpenWRT и usb-modeswitch - судя по всему, подобные проблемы с некоторыми модемами у людей всплывают давно и регулярно... но толкового фикса по-прежнему нет: разработчики валят все на железо, их кое-как пытаются убеждать в обратном, придумывают разные костыли (как правило - sleep в тех или иных скриптах) и на этом все кончается.
Как выразился некто в багтрекере openwrt (как раз в обсуждении аналогичной проблемы):
Цитата:
This is, what I like on Linux development: Once one found a solution to a problem, someone wants to improve things and f* it up all over again... *sigh*.
Обидно, блин...
Shadow Wizard вне форума   Ответить с цитированием
Старый 29.01.2015, 14:01   #47
avgaz
Senior Member
 
Регистрация: 05.10.2014
Сообщений: 190
Вес репутации: 0
avgaz is an unknown quantity at this point
По умолчанию Re: Отваливается ttyUSB

Мне помогло замена хаба уже неделю без сбоев работает
avgaz вне форума   Ответить с цитированием
Старый 30.01.2015, 00:33   #48
avgaz
Senior Member
 
Регистрация: 05.10.2014
Сообщений: 190
Вес репутации: 0
avgaz is an unknown quantity at this point
По умолчанию Re: Отваливается ttyUSB

Цитата:
Сообщение от mebitek Посмотреть сообщение
Как организовали опрос датчиков и обмен данными?
При замене хаба я решил заменить и флеху, а то стояла на 16г как то глупо было её использовать когда нужно максимум 1-2г))) ну при замене флехи все переставлять пришлось, в общем скинул всё и поставил заново. Из вариантов опроса датчиков остановился на варианте через Ser2Net он мне показался более удобным да и sleep(); не нужен при нём, но при опросе иногда вываливается ошибка не помню точно какая вроде "bad gateway" вроде.
avgaz вне форума   Ответить с цитированием
Старый 30.01.2015, 15:41   #49
avgaz
Senior Member
 
Регистрация: 05.10.2014
Сообщений: 190
Вес репутации: 0
avgaz is an unknown quantity at this point
По умолчанию Re: Отваливается ttyUSB

Цитата:
Сообщение от mebitek Посмотреть сообщение
Где вываливается?
...
Код ардуины покажите. И пхп.
Код ардуины уже выкладывал, его не менял, ошибка вываливается вместо показаний датчиков то есть php страница её отдает, не часто может 1-3 раза в сутки, с учётом того что опрашивается ардуина каждые 90сек
php вот
PHP код:
 <?php
   
    
if($fp fsockopen("localhost"3002$errno$errstr1))  
 
        { 
           
fwrite($fp'3'); 
           
$bufft fgets($fp); 
           
fclose($fp); 
        }  
$exp explode(","$bufft);
$data0 substr($exp[0], 05);// котел
$data1 substr($exp[1], 05);// подача в котел
$data2 substr($exp[2], 05);// 
$data3 substr($exp[3], 05); //подача в дом
$data4 substr($exp[4], 05); // ТА
$data5 substr($exp[5], 05); // Улица
avgaz вне форума   Ответить с цитированием
Старый 30.01.2015, 19:39   #50
stD
Senior Member
 
Аватар для stD
 
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1311
stD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant future
По умолчанию Re: Отваливается ttyUSB

PHP код:
sensors.setResolution(Thermometer112);
sensors.setResolution(Thermometer210); 
У Вас стоит разная точность датчиков - это так задумано?

Цитата:
Serial.begin(9600);
Сделайте 57600.

PHP код:
float tempC 
Если десятые доли градуса не очень важны, то float я бы поменял на uint8_t.

И можно сделать так:
PHP код:
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 9
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress Thermometer1 = {0x280xFF0x450xF70x4C0x040x000x35 }; // Котел
DeviceAddress Thermometer2 = {0x280xFF0x160x500x730x040x000x40 }; // подача в котел
DeviceAddress Thermometer3 = {0x280xFF0xAF0x550x780x040x000xBC }; // ТА
DeviceAddress Thermometer4 = {0x280xFF0x1A0x190x630x140x030x56 };  // подача в дом
DeviceAddress Thermometer5 = {0x280xFF0xD60x330x630x140x030x3E };
DeviceAddress Thermometer6 = {0x280xFF0xCF0x410x630x140x030x1E }; // Улица
uint8_t tempC1=200
uint8_t tempC2=200;
uint8_t tempC3=200;
uint8_t tempC4=200;
uint8_t tempC5=200;
uint8_t tempC6=200;
uint8_t server[5];
 
void setup() 
{
  
sensors.begin();
  
sensors.setResolution(Thermometer112);
  
sensors.setResolution(Thermometer210);
  
sensors.setResolution(Thermometer312);
  
sensors.setResolution(Thermometer410);
  
sensors.setResolution(Thermometer510);
  
sensors.setResolution(Thermometer612);
  
Serial.begin(57600);
  
getemp();
}

void loop() 
{
  if(
Serial.available()>4)
   {
     if(
Serial.read()=='a')
      {
        for (
uint8_t i=05i++)
          {
            
server[i] = Serial.read();    
          } 
 
        if((
server[0] =='v') && (server[1] =='g') && (server[2] =='a') && (server[3] =='z')) // deskriptor
          
{
            
Serial.print(tempC1);
            
Serial.print(",");
            
Serial.print(tempC2);
            
Serial.print(",");
            
Serial.print(tempC3);
            
Serial.print(",");
            
Serial.print(tempC4);
            
Serial.print(",");
            
Serial.print(tempC5);
            
Serial.print(",");
            
Serial.println(tempC6);
            
getemp();
          }
          
      else
       {
         for(
uint8_t i=0255i++)
           {
             
server[i] = Serial.read();    
           }
       }
     }
   }
   
}  
  
void getemp()
{
  
sensors.requestTemperatures(); 
  
tempC1 sensors.getTempC(Thermometer1);
  
tempC2 sensors.getTempC(Thermometer2); 
  
tempC3 sensors.getTempC(Thermometer3);
  
tempC4 sensors.getTempC(Thermometer4);
  
tempC5 sensors.getTempC(Thermometer5);
  
tempC6 sensors.getTempC(Thermometer6);

И в пхп-файле:
fwrite($fp, 'avgaz');

Данные будут устаревшие (на время интервала запросов), но зато отвечать будет мгновенно (без задержки на чтение датчиков). Ошибочные символы будут отсекаться.
stD вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 14:44. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика