Да речем, че тръгвате за дълга ваканция рано утре сутринта и искате да се предпазите от бъдещите крадци от дома си. Таймерът на лампата е добър възпиращ механизъм, но магазините за хардуер са затворени за през нощта и няма да имате време да си го вземете преди полета сутринта. Обаче, тъй като вие сте любител на Raspberry Pi, имате няколко снабдявания, които се намират наоколо, а именно:
С тези консумативи можете да направите свой собствен програмируем таймер за лампи, използвайки два мощни инструмента Linux:скриптове иCron.
Shell скрипт е файл, който съдържа серия от команди (точно като тези, които сте използвали за контрол и четене на изводите). Обърнете внимание на скрипта по-долу и обяснението на ключовите редове.
#! / bin / bash # ехо Експортиране на $ 1. # echo $ 1> / sys / class / gpio / износ # echo Настройка на посоката на движение. ехо изход> / sys / class / gpio / gpio $ 1 / посока # echo Настройка пин висока. echo 1> / sys / class / gpio / gpio $ 1 / стойност
Този ред е необходим за всички скриптове на обвивката. | |
"$ 1" се отнася до първия аргумент от командния ред. | |
Вместо да експортира конкретен ПИН номер, скриптът използва първия аргумент от командния ред. | |
Забележете, че първият аргумент от командния ред замества и ПИН номера. |
Запазете го като текстов файлon.sh
и го направете изпълним с командата chmod:
[email protected]: / начало / пи # chmod + x on.sh
Все още трябва да изпълнявате тези команди като root. Типsudo su
ако получавате грешки като „Разрешение е отказано“.
Аргументът на командния ред е начин за предаване на информация в програма или скрипт, като го въведете след името на командата. Когато пишете скрипт, $ 1 се отнася за първия аргумент от командния ред, $ 2 се отнася за втория и т.н. В случай чеon.sh
ще въведете ПИН номера, който искате да експортирате и включите. Вместотвърдо кодиране Пин 25 в скрипта, той е по-универсален, като се позовете на пин, който е въведен в командния ред. За да експортирате пин 25 и да го включите, вече можете да въвеждате:
[защитени с имейл]: / home / pi / # ./on.sh 25
Експортиране на пин 25. Настройка на пин висока.
„./“ преди името на файла показва, че изпълнявате скрипта в директорията, в която се намирате. |
Ако все още имате свързан светодиод към щифт 25 от по-рано в главата, той трябва да се включи. Нека направим още един скриптoff.sh
което ще изключи светодиода. Тя ще изглежда така:
#! / bin / bash echo Настройката е ниска. echo 0> / sys / class / gpio / gpio $ 1 / стойност ехо Unexporting пин $ 1 echo $ 1> / sys / class / gpio / unexport
Сега да го направим изпълним и да стартираме скрипта:
[защитени с имейл]: / home / pi / temp # chmod + x off.sh
[защитени с имейл]: / home / pi / temp # ./off.sh 25
Зададеният щифт е нисък. Изтласкващ щифт 25
Ако всичко работи, светодиодът трябва да е изключен.
Разбира се, един малък светодиод няма да даде достатъчно светлина, за да заблуди крадци, за да си помисли, че си вкъщи, затова нека включим лампата в Raspberry Pi.
./on.sh 25
, лампата трябва да се включи и ако изпълните./off.sh 25
, лампата трябва да се изключи!Вътре в опашката PowerSwitch има няколко електронни компонента, които ви помагат да контролирате устройства с високо напрежение като лампа или миксер, като използвате сигнал с ниско напрежение, като този от Raspberry Pi. "Щракване", което чувате от PowerSwitch Tail, когато е включено или изключено е релето, основният компонент на веригата вътре. Релето действа като превключвател за устройството с високо напрежение, което може да бъде включено или изключено в зависимост от това дали сигналът за управление на ниско напрежение от Raspberry Pi е включен или изключен.
Фигура 7. Свързване на PowerSwitch Tail II към Raspberry Pi
Сега вече сте събрали няколко различни команди в две прости команди, които могат да включат или изключат един штифт. А с лампата, свързана с Raspberry Pi през PowerSwitch Tail, можете да включите или изключите лампата с една команда. Сега можете да използватеCron
да планирате светлината да се включва и изключва в различни часове на деня.Cron
е график на задачите на Linux. С него можете да зададете команди да се изпълняват в определени часове и дати, или можете да изпълнявате задания за определен период (например веднъж на час). Ще планирате две работни места; един от тях ще светне в 8:00 ч., а другият ще изключи светлината в 2:00 часа сутринта.
Както и при други програми, зависими от времето, ще искате да се уверите, че имате правилната дата и час, настроени на Raspberry Pi, както е описано в ???.
За да добавите тези задачи, ще трябва да редактирате таблицата cron (списък с команди, които Linux изпълнява в определени часове):
[защитени с имейл]: / home / pi / # crontab -е
Това ще стартира текстов редактор за промяна на cron таблицата на root. За да промените типа потребител на rootsudo su
, В горната част на файла ще видите информация как да промените таблицата cron. Използвайте клавишите със стрелки, за да стигнете до дъното на файла и добавете тези два записа в края на файла.
0 20 * * * /home/pi/on.sh 25 0 2 * * * /home/pi/off.sh 25
Cron
ще игнорира всички линии, които започват с хеш маркировката. Ако искате временно да деактивирате линия, без да я изтривате или да добавите коментар към файла, поставете хеш марка пред линията.
ТипControl-Х
за изход, въведетеш
за да запишете файла, когато ви подкани, и натиснете Enter, за да приемете името на файла по подразбиране. Когато файлът се запази и се върнете в командния ред, трябва да кажетеинсталиране на нов crontab
да покаже, че промените, които сте направили, ще бъдат изпълнени отCron
Cron ще ви позволи да планирате задания за определени дати и часове или на интервали. Има пет времеви полета (или шест, ако искате да планирате по година), всеки от които е разделен с интервал, последван от друго пространство, след което командата за изпълнение. Звездичките показват, че работата трябва да изпълнява всеки период. Например:
Таблица 1. Въвеждане на Cron за включване на светлината в 8:00 ч. Всеки ден
0 | 20 | * | * | * | /home/pi/on.sh 25 |
---|---|---|---|---|---|
Минута (: 00) | Час (20:00) | Всеки ден | Всеки месец | Всеки ден от седмицата | път към командата |
Да кажем, че само искате лампата да се включва всеки делничен ден. Ето как ще изглежда записът crontab:
Таблица 2. Въвеждане на Cron за включване на светлината в 20:00 ч. Всеки ден от седмицата
0 | 20 | * | * | 1-5 | /home/pi/on.sh 25 |
---|---|---|---|---|---|
Минута (: 00) | Час (20:00) | Всеки ден | Всеки месец | от понеделник до петък | път към командата |
Да речем, че имате скрипт, който проверява дали имате нова поща и имейл, ако го направите. Ето как ще получите този скрипт да се изпълнява на всеки пет минути:
Таблица 3. Въвеждане на Cron за проверка на поща на всеки пет минути
*/5 | * | * | * | * | /home/pi/checkMail.sh |
---|---|---|---|---|---|
На всеки пет минути | Всеки час | Всеки ден | Всеки месец | Всеки ден от седмицата | път към командата |
* / 5 показва период от пет минути.
Както виждаш,Cron
е мощен инструмент, който е на ваше разположение за планиране на задания за конкретни дати или часове и планиране на задания, които да се случват на определен интервал.