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

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

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

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

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

Так вот, нашел в интернетах кучу примеров, как прописать эту программку в автозагрузку Линукса. Не с первого раза, но вроде получилось – прописал   ее в 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
      • Отчет в консоль
      • Запись температуры в лог
      • Расчет времени следующего отчета

Выходные IT-любителя или о расплате за недальновидность

Пытался на выходных сделать сетевой диск в домашней сети. Т.е. воткнуть в USB разъем роутера внешний диск с кино и фото и смотреть кино со всех компов из одного места. Ну чтобы не перевтыкать его из одного компа в другой.

Сначала долго колдовал, чтобы увидеть этот диск на компах. В настройках маршрутизатора он появлялся без проблем, но подключиться по ай-пи адресу никак не получалось, ни из под Линукса, ни из под Виндов.

В итоге посмотрел инструкцию к роутеру, из которой узнал, что качестве адреса сервера нужно вбивать не интуитивно понятный айпишник внешнего диска, а интуитивно непонятный tplinklogin.net. После этого все заработало (правда еще пришлось обновить прошивку роутера). Диск подключился и стал доступен и в Виндах, и в Убунте, и в Минте

Но дальше, как всегда, вылезли нюансы.

Сеть у меня устроена очень просто. Интернет приходит в роутер-маршрутизатор. Стационарный комп соединен с маршрутизатором по езернету, все остальное   подключается к нему по вай-фай.

Основной потребитель медиафайлов – ноутбук, подключенный к телевизору и домашнему кинотеатру – находится в другой комнате. Вай-фай соединение на уровне 35-45% (не знаю, процентов чего, но эти циферки возникают при наведении на значок вай-фай в трее).

Видео на стационарном компе, который подключен к роутеру шнурком, воспроизводится без проблем. А вот вай-фай, судя по всему, не тянет. Видео, даже то, которое avi, а не mkv, регулярно теряет звук и слегка подтормаживает. При воспроизведении напрямую с диска такой заразы, конечно, не наблюдается.

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

Но самая печалька не в этом. Я по наивности рассчитывал на вай-фай, как на основу сетки в свежедостроеннном доме на даче. Чтобы и сетевой диск и кино где угодно по вай-фай и интернет, и все такое все такое. Поэтому не заморочился тем, чтобы загодя протянуть витую пару.

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