Как использовать ssh для удаленного оповещения системы Ubuntu 16.04 о звуковых оповещениях без использования incron

Краткое описание: Вопрос в том, должен ли я модифицировать свою систему Ubuntu 16.04 для выполнения задачи, или есть более простой способ.


Это сложная система компьютеров, включающая в себя сочетание языков и операционных систем.

После настройки первичной системы Ubuntu 16.04 для солнечной станции, чтобы говорить, согласно:

16.04 LTS Как заставить систему объявить время в верхней части часа с eSpeak

EXCERPT: используйте espeak

sudo apt-get update
sudo apt-get install espeak

, следующим шагом будет поиск пути для систем удаленной регистрации данных (8 экранов, сгенерированных в основном Ubuntu 16.04 рабочие столы и Rpi3B), чтобы дать команду основной системе управления Ubuntu 16.04 устно высказывать предупреждения.

Все они работают на программах Python для ведения журнала и отправки данных в систему управления Prime Ubuntu для архивирования, обработки изображений и загрузки в службу веб-хостинга.

Текущие графики данных создаются в системе Prime Ubuntu 16.04 с использованием montage в Imagemagick для форматирования графиков, которые можно увидеть здесь: https://www.SDsolarBlog.com/montage


Чтобы получить голосовые оповещения, первой попыткой было, чтобы они просто использовали scp для обновления файла в каталоге и чтобы система Ubuntu обнаружила изменение в файле и Ответьте, запустив скрипт, который использует espeak, чтобы объявить, например, что существует условие низкого напряжения. Все системы используют RSA-вход без пароля, поэтому копирование просто.

Инструментом для отслеживания изменений файлов и каталогов является incron - который аналогичен cron за исключением того, что он запускается на основе событий файловой системы вместо часов.

Вот информация об использовании incron:

Мониторинг активности файлов и каталогов с помощью incron

ВЫПОЛНЕНИЕ:

Запуск с установкой incron и inotify-tools в системе управления Ubuntu 16.04. **

sudo apt-get update
sudo apt-get install incron
sudo apt-get install inotify-tools
sudo apt-get autoremove

затем используйте incrontab -e для настройки простой записи, например:

/home/me/alarms IN_CREATE /home/me/alarms/saylow24

где содержимое /home/me/scripts/saylow24 равно

#!/bin/bash
espeak "Low Voltage on 24"
sleep 10
espeak "Low Voltage on 24"

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


Затем я начал устанавливать аналогичный скрипт для внешнего регистратора данных для системы позиционирования солнечной панели, которая имеет свою отдельную фотоэлектрическую панель и батарею. Облачные дни убивают его.


В этот момент я остановился и спросил себя, действительно ли я хочу добавить дополнительную сложность использования демона incron на консоли Ubuntu 16.04. Я предпочитаю, чтобы все было просто.

Вопрос: Есть ли более простой способ сделать это, не внося серьезных изменений в Ubuntu?

-2
задан 22 November 2017 в 18:25

1 ответ

incron хорошо работает - это обнаруживает scp или даже a touch из файла и триггеров bash сценарий. Все же нет никакой потребности использовать преданного демона только для обнаружения редко используемого сигнала. Используя incron похож на вынимание кувалды для ударения мухи, даже при том, что это - "Ubuntu путь". Другим, возможно, понадобится он, но я не делаю.


Спойлер: Все это взятия добавляет одну одну строку кода Python:

os.system("ssh me@prime ' ( /home/me/alarms/saylow12 ) ' &")

Остальная часть этого ответа объясняет, как это используется и может быть TL; DR, если Вы не системный инженер.

Регистраторы данных запускают программы Python для поднимания входа с USB Нано единицы / последовательные Нано единицы, которые делают показания температуры и напряжения.

Большинство находится на Рабочих столах Ubuntu, и одна внешняя сторона является низкой мощностью Rpi3, который работает от отдельной меньшей солнечной панели и 12-вольтовой батареи, которая совместно используется с системой позиционирования солнечной панели.

Они все используют программы Python для чтения последовательных данных с Нано микроконтроллеров, которые читают температуры и напряжения, добавляют дату и время к каждой точке данных, затем сохраняют их в ежедневные файлы данных в системах Linux.


Программы входа похожи так (выборка):

import os
import serial
import datetime
import time

ser = serial.Serial("/dev/ttyUSB0",9600)
ser.flushInput()

while True :
    linein = ser.readline()
    if linein[:5]=="LOW V" :
        print
        os.system('echo "SUBJECT:  ALERT LOW VOLTAGE OUTSIDE" | ssmtp myemail4@gmail.com')
    etc to add date/time stamp then save in CSV file

Они затем производят графики, которые отображены как live plots на самых современных мониторах. gnuplot программы очень просты:

set title "OUTSIDE 12V Battery"
set xlabel "Time"
set ylabel "Volts"
set yrange [11.5:15.5]
set grid
unset mouse
unset log
set key top left
set timestamp
set xdata time
set timefmt '%H:%M:%S'
set xtics format '%H:%M'
set style fill solid 1.0
set terminal x11
plot  15.5 lw 2 lc rgb 'navy' notitle, \
      14.5 lw 1 lc rgb 'black' t "Charger off", \
      14.4 lw 2 lc rgb 'blue' t "14.4V Charge", \
      12.7 lw 2 lc rgb 'green' t "12.7 Full", \
      12.45 lw 1 lc rgb 'black' t "Charger on", \
      12.1 lw 2 lc rgb 'black' t "12.1 V Alert", \
      "today.dat" using 2:15 skip 2 with boxes lw 1 lc rgb 'gray' t "Charger", \
      "today.dat" using 2:8 skip 2 with lines lw 1 lc rgb 'red' t "Battery"
pause 15
reread

Обратите внимание что reread команда в gnuplot вызывает график обновить так, они отображены в режиме реального времени на экране, когда к системе регистрации получает доступ Windows RDP через WiFi.
6 графиков соответствуют на единственном большом экране. Затем два других на другом экране.

enter image description here

Каждые 15 минут Главная система Ubuntu 16.04 собирает все графики, применяет некоторый Imagemagic Fu и отправляет их до https://www. SDsolarBlog.com/montage


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

os.system("echo 'SUBJECT:  ALERT - Low Voltage on 24' >>temp")
os.system("cat temp | ssmtp myaddress@gmail.com")
  • Gmail настраивается для применения аварийной маркировки к любому сообщению с ПРЕДУПРЕЖДЕНИЕМ в строке темы

  • Мой смартфон имеет специальный тональный сигнал уведомления для входящих сообщений Gmail с той маркировкой

  • Но при работе около системы Ubuntu телефон не может быть в пределах слышимости.


Все, что требуется для управления системой Ubuntu, говорит его прямо, с помощью звукового сигнала должен добавить одну строку после того, как электронное письмо послано, как так:

os.system("echo 'SUBJECT:  ALERT - Low Voltage on 24' >>temp")
os.system("cat temp | ssmtp myaddress@gmail.com")

os.system("ssh me@prime ' ( /home/me/alarms/saylow24 ) ' &")

где файл saylow24 совпадает с в вопросе.

Обратите внимание, что метки кавычки являются нормальными апострофами.

Амперсанд используется так, эта команда сигнала не блокирует сценарий Python, в то время как это выполняется в фоновом режиме на Ubuntu mothership.

Еще лучше у меня теперь есть он, делают это:

os.system("echo 'SUBJECT:  ALERT - Low Voltage on 24' >>temp")
os.system("cat temp | ssmtp myaddress@gmail.com")
os.system("ssh me@prime ' ( espeak -s 100 E-Mail-Has-Been-Sent ) ' &")
os.system("ssh me@prime ' ( /home/me/alarms/saylow24 ) ' &")

Затем для внешнего регистратора напряжения это подобно, за исключением того, что это инициировало saylow12 программа.

Дополнительная строка, добавленная там:

os.system("ssh me@prime ' ( /home/me/alarms/saylow12 ) ' &")

где файл saylow12 очень похоже:

#!/bin/bash
for i in {1..5}
do  
  espeak "Low Voltage on 12"
  sleep 10
done

Это bash сценарий используется так аварийные повторения каждые 10 секунд, потому что он требует быстрого действия или внешней стороны Rpi3, ЦП потеряет питание, которое заставляет солнечные панели прекращать отслеживать солнце.


Как показано выше, на произвольных информационных сообщениях можно говорить этот путь:

os.system("ssh me@prime ' ( espeak High-Temp-Inside-Control-Box ) ' &")

Отметьте использование дефисов для обозначения межсловных пробелов.

На этом только нужно говорить однажды на точку данных, так как я не могу изменить погоду.


Теперь все регистраторы данных имеют способ дать словесную обратную связь в консоли Ubuntu.

Очень простой реализовать и это работает хорошо.


0
ответ дан 22 November 2017 в 18:25

Другие вопросы по тегам:

Похожие вопросы: