Краткое описание: Вопрос в том, должен ли я модифицировать свою систему 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?
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 графиков соответствуют на единственном большом экране. Затем два других на другом экране.
Каждые 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.
Очень простой реализовать и это работает хорошо.