USB PC thermometer

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

Аватара пользователя
Amarok
Сообщения: 1425
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Благодарил (а): 460 раз
Поблагодарили: 126 раз
Контактная информация:

USB PC thermometer

Сообщение Amarok » Пн сен 30, 2013 11:28 am

Приехала вот такая штучка - http://www.pcsensor.com/index.php?_a=vi ... oductId=41
Может быть, её к Алисе кто прикручивал уже?
Алиска живёт на Ubuntu Server 14.04.3 LTS
connect, группа в Telegram, Яндекс.Деньги для благодарностей за помощь: 41001355945165
MaksMS82
Сообщения: 422
Зарегистрирован: Ср сен 05, 2012 7:30 am
Откуда: Киров
Благодарил (а): 0
Поблагодарили: 70 раз
Контактная информация:

Re: USB PC thermometer

Сообщение MaksMS82 » Пн сен 30, 2013 11:46 am

Если есть возможность запуска из командной строки c выводом текущей температуры,то можно..
Похоже программа ,идущая в комплекте создает какую-то базу ,возможно в виде текстового файла - из его тоже можно читать.
Проще конечно использовать ds18b20 - к нему хоть подводить 2 провода,а не шину USB.Можно так же подключить через USB.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: USB PC thermometer

Сообщение sergejey » Пн сен 30, 2013 5:48 pm

Читать из текстового файла базы программы тоже вариант, да. Если будет пример файла, то сможем накидать сценарий чтения данных и сохранение их в свойство какого-нибудь объекта.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
Amarok
Сообщения: 1425
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Благодарил (а): 460 раз
Поблагодарили: 126 раз
Контактная информация:

Re: USB PC thermometer

Сообщение Amarok » Вт окт 01, 2013 5:59 am

sergejey писал(а):Читать из текстового файла базы программы тоже вариант, да. Если будет пример файла, то сможем накидать сценарий чтения данных и сохранение их в свойство какого-нибудь объекта.
Вот пример файла:

Код: Выделить всё

2,26,00,2013-10-01 06:47:20
Файлы генерируются в папке. Имена разные, но по логике:
2013-9-30 14h58m11s.txt
2013-9-30 15h0m35s.txt
2013-9-30 15h1m35s.txt
2013-9-30 15h2m35s.txt
2013-9-30 15h3m35s.txt
2013-9-30 15h4m35s.txt
2013-9-30 15h5m35s.txt
2013-9-30 15h6m35s.txt
2013-9-30 15h7m35s.txt
2013-9-30 15h8m35s.txt
2013-9-30 15h9m35s.txt
2013-9-30 15h10m35s.txt
2013-9-30 15h11m35s.txt
2013-9-30 15h12m35s.txt
2013-9-30 15h13m35s.txt
2013-9-30 15h14m35s.txt
2013-9-30 15h15m35s.txt
2013-9-30 15h16m35s.txt
2013-9-30 15h17m35s.txt
Алиска живёт на Ubuntu Server 14.04.3 LTS
connect, группа в Telegram, Яндекс.Деньги для благодарностей за помощь: 41001355945165
Аватара пользователя
Amarok
Сообщения: 1425
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Благодарил (а): 460 раз
Поблагодарили: 126 раз
Контактная информация:

Re: USB PC thermometer

Сообщение Amarok » Чт окт 03, 2013 10:27 am

Накидайте пример, пожалуйста?
Алиска живёт на Ubuntu Server 14.04.3 LTS
connect, группа в Telegram, Яндекс.Деньги для благодарностей за помощь: 41001355945165
LutsenkoDenis
Сообщения: 521
Зарегистрирован: Вс апр 07, 2013 9:30 pm
Откуда: Moscow
Благодарил (а): 2 раза
Поблагодарили: 58 раз
Контактная информация:

Re: USB PC thermometer

Сообщение LutsenkoDenis » Пт окт 04, 2013 10:26 am

BlackWarrior писал(а):Накидайте пример, пожалуйста?
Пожалуйста. Будут вопросы, обращайтесь :-)

Код: Выделить всё

<?php

// набор данных который нужно прочесть:
//2,26,00,2013-10-01 06:47:20

$dataPath  = "D:\Temp\USB_PC_thermometer"; // Директория с данными 
$separator = ",";                          // Разделитель данных в файле

// бежим по директории
if ($handle = opendir($dataPath))          
{
   // Читаем файлы
   while (false !== ($entry = readdir($handle))) 
   {
      // путь к файлу
      $filePath = $dataPath . "/" . $entry;
      // если файл есть и является обычным файлом а не директорией то читаем содержимое
      if (file_exists($filePath) && is_file($filePath)) 
      {
         echo "Файл: " . $filePath . "<br />"; // для отладки выводим название файла в браузер.
         // открываем файл на чтение
         $file = @fopen($filePath, "r"); 
         // читаем файл до канца построчно
         while (!feof($file))
         {
            // читаем строку 
            $currentLine = fgets($file);
            echo $currentLine . "<br />";
            // разбиваем строку на переменные с данными
            list($DataNumber, $TempInteger, $TempRatio, $TempDate) = explode($separator, $currentLine);
            // склеиваем целую и дробную часть температуры 
            $Temp = $TempInteger . "." . $TempRatio;
            // удаляем лишние пробелы в начале и в конце
            $Date = trim($TempDate);
            //Выводим данные в браузер    
            echo "№: " . $DataNumber . " Температура: " . $Temp . " Дата снятия показаний: " . $Date . "<br />";
            echo "<br />";
         } 
         //закрываем файл
         fclose($file);
       }
       
       echo "<br />";
    }
    // закрываем директорию
    closedir($handle);
}
else
{
    echo "Немогу открыть директорию";
}

?>
Как-то так.
Что делать дальше с этими данными я не знаю.
Можно например засунуть в массив и потом с ним работать.
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: USB PC thermometer

Сообщение sergejey » Пт окт 04, 2013 11:32 am

Денис опередил :)
добавлю только, что по идее если после

Код: Выделить всё

 closedir($handle);
поставить

Код: Выделить всё

 setGlobal('myObject.myProperty',$Temp);
то в свойство объекта будет записана последняя температура, но нужно проверить. если так, то всё можно оформить в отдельный сценарий и запускать по таймеру. можно даже будет убрать эти строчки, т.к. вывод всё равно не увидит никто

Код: Выделить всё

            echo "№: " . $DataNumber . " Температура: " . $Temp . " Дата снятия показаний: " . $Date . "<br />";
            echo "<br />";

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
LutsenkoDenis
Сообщения: 521
Зарегистрирован: Вс апр 07, 2013 9:30 pm
Откуда: Moscow
Благодарил (а): 2 раза
Поблагодарили: 58 раз
Контактная информация:

Re: USB PC thermometer

Сообщение LutsenkoDenis » Пт окт 04, 2013 11:47 am

Согласен, но не полностью.
1. В конце цикла в переменной $Temp будет температура из последней строки последнего файла в директории.
Если нужна только эта температура, то можно сразу читать последний файл, а не все подряд.
2. Все строки с echo естественно нужно удалить, написал для примера. Ну, чтобы запустить и посмотреть как работает и что выводит.
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
Аватара пользователя
Amarok
Сообщения: 1425
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Благодарил (а): 460 раз
Поблагодарили: 126 раз
Контактная информация:

Re: USB PC thermometer

Сообщение Amarok » Сб окт 05, 2013 8:06 am

А как считать сразу последний файл в папке?
Алиска живёт на Ubuntu Server 14.04.3 LTS
connect, группа в Telegram, Яндекс.Деньги для благодарностей за помощь: 41001355945165
LutsenkoDenis
Сообщения: 521
Зарегистрирован: Вс апр 07, 2013 9:30 pm
Откуда: Moscow
Благодарил (а): 2 раза
Поблагодарили: 58 раз
Контактная информация:

Re: USB PC thermometer

Сообщение LutsenkoDenis » Сб окт 05, 2013 9:55 am

ну как самый простой вариант на вскидку это сделать пару изменений в моём коде(см. выше)

Код: Выделить всё

<?php

// набор данных который нужно прочесть:
//2,26,00,2013-10-01 06:47:20

$dataPath  = "D:\Temp\USB_PC_thermometer"; // Директория с данными 
$separator = ",";                          // Разделитель данных в файле
$file      = "";                           // имя файла

// бежим по директории
if ($handle = opendir($dataPath))          
{
   // Читаем файлы
   while (false !== ($entry = readdir($handle))) 
   {
      // путь к файлу
      $filePath = $dataPath . "/" . $entry;
      // если файл есть и является обычным файлом а не директорией то читаем содержимое
      if (file_exists($filePath) && is_file($filePath)) 
      {
         $file = $filePath; // файл.
       }
    }

    // закрываем директорию
    closedir($handle);

    // открываем файл на чтение
    $file = @fopen($file, "r"); 
    // читаем файл до конца построчно
    while (!feof($file))
    {
       // читаем строку 
       $currentLine = fgets($file);
       // разбиваем строку на переменные с данными
       list($DataNumber, $TempInteger, $TempRatio, $TempDate) = explode($separator, $currentLine);
       // склеиваем целую и дробную часть температуры 
       $Temp = $TempInteger . "." . $TempRatio;
       // удаляем лишние пробелы в начале и в конце
       $Date = trim($TempDate);
    } 
    //закрываем файл
    fclose($file);
}
else
{
    echo "Немогу открыть директорию";
}

?>
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
Ответить