Архив метки: проект

Хозяйке на заметку:

Температурные датчики (DS18B20, которые по технологии 1-wire) я проложил двумя типами проводов:

  • от щедрости – витой парой (2 датчика, в совокупности около 20 метров),
  • от жадности — 4х-жильным телефонным проводом (3 датчика, в совокупности около 40 метров).

Датчики, которые висят на витой паре (используя три провода из 8) – глючат – т.е. с некоторой регулярностью выдают ошибку (тот провод, который подлинее, выдает глючный результат в в ~20% замеров, тот который покороче – редко, но тоже бывает). Те датчики, которые висят на в разы более длинном телефонном проводе, работают, т-т-т, корректно и аккуратно.

Замена датчика на новый ни к чему не привела, при этом на стендовых испытаниях, когда датчики подключены напрямую к Raspberry (через макетную плату), все работает предельно правильно. Стало быть, собака порылась в проводе.

Попробую заменить все провода на телефонный провод, благо это недорохо (300 руб за 100 метров против 1000 руб. за 100 метров витой пары), да и осталось его вроде бы еще.

Если не поможет, стану подозревать, что на показания датчиков влияет электропроводка, которая в одном месте проходит рядом с витой парой и, возможно, наводит там невовремя некое ненужное напряжение. Тогда придется подумать в сторону экранированной витой пары, которая в моей округе меньше, чем бухтой по 300 м. не продается.

Маленькие Муки самообразования или как вывести демона на свет

Некоторое время назад я был свято уверен, что образование, в его текущем виде, отжило мвой срок. Технически, вся информация сейчас есть в интернете – начиная от фундаментальных трудов по любому вопросу, заканчивая практическими случаями. Знай себе, мучай Яндекс с Гуглом и образовывайся.

Однако жеж, не все так феерично получается на практике.

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

Так вот, нашел в интернетах кучу примеров, как прописать эту программку в автозагрузку Линукса. Не с первого раза, но вроде получилось – прописал   ее в rc.local, перезагрузился, скомандовал «ps –eF» – и вот она, работает среди других процессов. И даже мейлы отправляет согласно заложенному алгоритму.

Одна незадача – работает она в фоне, не отображая положенную информацию в терминале. Чую что собака порылась в том, что надо каким то образом указать чтобы программа отображалась в нужном tty, а как это сделать – не знаю. Поиск ничего не дает, такое впечатление, что все нужны демоны, а явно работающие программы не нужны.

Ок, пошел с другого боку. Прописал автозагрузку в etc/xdg/autostart. В «ярлыке» указал, что запускать в Lxterminal. Не с первого раза, но опять таки все заработало. Но образовалась другая засада — во первых, в этом случае программа запускается, только если запущен vncserver, чего на самом деле не хочется, а во вторых – этот самый vnserver не получается вкорячить в автозагрузку, хучь то, как это делается, прописано в сети аж в нескольких вариантах. Но вот не работает и все.

И вот тут бы старший товарищ посмотрел бы опытным взглядом и указал бы на глупую ошибку неопытного программиста , но нету его, все сам по материалам из инету.

В общем, чувствую, еще придется помучаться.

З.Ы. параллельно с упоением читаю что ни попадя про Big Data.  И прям  зреет во мне уверенность, что как закончу с  робосмотрителем, так напишу прогарммулину, которая будет шерстить интернет и на основе этого информационного мусора выдавиать нужные и ненужные прогнозы.

Не программисты мы, но кое-что мОгем…

… или о блок-схеме рефлекторных механизмов полоумного дома:

Как только добился от программы управления отоплением работоспособности, так сразу понял, что можно сделать лучше и принялся ее переделывать. В результате запутался, как Макар, который потерял телят в трех соснах.

Чтобы привести   мысли в порядок — таки нарисовал схему программы (я понимаю, что с этого, по-хорошему, надо было начать, но я же не настоящий сварщик J)

Может, кому будет интересно посмотреть, покритиковать, дополнить. Каждый пункт – отдельно прописанная функция. То что курсивом – пока еще не написал.

Позже выложу код к кажной функции.

Запуск программы:

  • Определение времени старта
  • Чтение конфигурации из ini файла (целевые значения температуры, критические значения температуры, периодичность проверки, часы формирования email-отчета, список рассылки, etc)
  • Чтение температуры с датчиков
  • Чтение датчика наличия тока (датчика тока пока в наличии нет, планирую найти UPS, который может делится этой инфой с Raspberry)
  • Расчет времени следующего отчета
  • Отчет о запуске системы в консоль
  • Отчет о запуске системы на email
  • Запись показателей температуры в лог

Основной цикл (раз в минуту):

  • Чтение конфигурации из ini файла (чтобы можно было скармливать программе новые установки температуры без перезапуска программы)
  • Чтение температуры с датчиков
  • Чтение датчика наличия тока в сети
    • Если ток отсутствует => отправка email
  • Сравнение температур с критическими показателями
    • Если t < tcrit => отправка сообщения на email, отчет в консоль
  • Сравнение температур с показателями прошлой проверки
    • Если t > tlast +0.2, отчет в консоль, запись температуры в лог
    • Если t< tlast -0.2, отчет в консоль, запись температуры в лог
  • Сравнение температур с целевыми показателями
    • Если t < tnorm -1 and насос выключен => запуск соответствующего насоса, отчет в консоль, смена статуса насоса, определение времени старта насоса
    • Если t > tnorm +1 and насос включен => выключение соответствующего насоса, отчет в консоль, расчет времени работы насоса, запись времени работы насоса в лог
  • Сравнение текущего времени с временем следующего отчета
    • Если текущее время >времени отчета:
      • Отправка email
      • Отчет в консоль
      • Запись температуры в лог
      • Расчет времени следующего отчета

Новости с полей:

1. Прокатил детей на байдарке. Ответственно заявляю – сплавляться по Малой Истре в июле – глупое и бесперспективное занятие. Воды мало, много завалов. Попозже составлю отчетЪ

2. Проложил   часть сети по дому. С розетками для интернету вопросов вроде не возникло, все обжалось и коннектится. А вот с проводами для термодатчиков не все гладко.

Контрольное подключение   двух размещенных в нужных местах термодатчиков к распберри обнаружило необнаружение одного из них. Термодатчики подключались по трем проводкам из витой пары. На стенде все работало, а вот в боевых условиях — нетЪ. Печалька.

Есть подозрение, что не хватило 3.3 вольтового напряжения (датчик требует мин 3 Вольта), которое просело из-за длины провода, а также из-за наличия цепи двух датчиков. Вчера уже в ночи было недосуг проверять, но в след. выходные   попробую запитать их от 5 В. Если это не спасет отца русского Скайнета, буду прозванивать цепь.

Параллельно возникли сомнения в работоспособности управляющего контура. Предполагается, что 3.3 В сигнал с распберри будет переключать реле, которое, в свою очередь будет подавать 220 на насосы. На стенде все работало (я к настоящий пацан уже мигал не светодиодами, а нормальными 60-Ваттными лампочками, имитирующими насосы), но вот откроется ли реле от 3,3В сигнала с учетами потерь в 15 метрах витой пары – баальшой вопрос. Пока изучаю что такое транзистор и как с его помощью увеличить напряжение сигнала. Идет туго.

З.Ы. С работы пока не могу ответить всем поздравившим меня с ДР, но очень благодарен за поздравления всем к то поздравил и всем, кто хотел поздравить, но постеснялся.