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

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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.01.2015, 22:14   #1
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 вне форума   Ответить с цитированием
Старый 30.01.2015, 00:33   #2
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   #3
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   #4
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 код Выкл.

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


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


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