Lad os sige, at du forlader en lang ferie tidligt i morgen, og du vil afværge dine burglarer fra dit hjem. En lampetimer er en god afskrækkende, men hardware butikker er lukket for natten, og du vil ikke have tid til at få en før dit fly i morgen. Men da du er en Raspberry Pi-hobbyist, har du et par forsyninger liggende rundt, nemlig:
Med disse forsyninger kan du lave din egen programmerbare lampetimer ved hjælp af to kraftfulde Linux-værktøjer:shell scripts ogcron.
Et skalskript er en fil, der indeholder en række kommandoer (ligesom dem du har brugt til at styre og læse tapperne). Tag et kig på shell scriptet nedenfor og forklaringen af nøgle linjer.
#! / bin / bash # ekko Eksportpind $ 1. # ekko $ 1> / sys / class / gpio / export # ekko Indstillingsretning til ud. ekko ud> / sys / class / gpio / gpio $ 1 / retning # ekko Indstillingstap højt. ekko 1> / sys / class / gpio / gpio $ 1 / værdi
Denne linje er nødvendig for alle shell scripts. | |
"$ 1" refererer til det første kommandolinjeprincip. | |
I stedet for at eksportere et specifikt pin-nummer bruger scriptet det første kommandolinjeprincip. | |
Bemærk, at det første kommandolinjeprincip erstatter pinnummeret her også. |
Gem det som en tekstfil, der hedderon.sh
og gør den eksekverbar med kommandoen chmod:
[email protected]: / home / pi # chmod + x on.sh
Du skal stadig udføre disse kommandoer som root. Typesudo su
hvis du får fejl som "tilladelse nægtet."
Et kommandolinjeprincip er en måde at overføre information til et program eller script ved at skrive det efter kommandoen. Når du skriver et shell script, refererer $ 1 til det første kommandolinjeparametre, $ 2 refererer til det andet og så videre. I tilfælde afon.sh
du indtaster det pinnummer, du vil eksportere og tænde. I stedet forhård kodning pin 25 ind i shell scriptet, det er mere universelt ved at henvise til den pin, der blev indtastet på kommandolinjen. Hvis du vil eksportere pin 25 og tænde den, kan du nu skrive:
[email protected]: / home / pi / # ./on.sh 25
Eksportstift 25. Indstilling af retning til ud. Indstilling af pin høj.
"./" før filnavnet angiver, at du udfører scriptet i den mappe, du er i. |
Hvis du stadig har LED'en tilsluttet pin 25 fra tidligere i kapitlet, skal den tænde. Lad os lave et andet shell script kaldetoff.sh
som slukker for LED'en. Det vil se sådan ud:
#! / bin / bash echo Indstilling pin lav. ekko 0> / sys / klasse / gpio / gpio $ 1 / værdi ekko Unexporting pin $ 1 echo $ 1> / sys / class / gpio / unexport
Lad os nu gøre det eksekverbar og køre scriptet:
[email protected]: / home / pi / temp # chmod + x off.sh
[email protected]: / home / pi / temp # ./off.sh 25
Indstilling af pin lav. Unexporting pin 25
Hvis alt fungerede, skulle LED'en være slukket.
Selvfølgelig vil en lille lille LED ikke give af med nok lys til at narre tyverier til at tro at du er hjemme, så lad os tilslutte en lampe til Raspberry Pi.
./on.sh 25
, lampen skal tændes, og hvis du udfører./off.sh 25
, lampen skal slukke!Inde i PowerSwitch Tail er der et par elektroniske komponenter, der hjælper dig med at styre højspændingsenheder som en lampe eller blender ved at bruge et lavspændingssignal som f.eks. Raspberry Pi. Det "klik", du hører fra PowerSwitch Tail, når det er tændt eller slukket, er relæet, kerneelementet i kredsløbet indeni. Et relæ fungerer som en kontakt til højspændingsenheden, der kan tændes eller slukkes, afhængigt af om lavspændingsstyresignalet fra Raspberry Pi er tændt eller slukket.
Figur 7. Tilslutning af en PowerSwitch Tail II til Raspberry Pi
Så nu har du pakket nogle få kommandoer i to enkle kommandoer, der kan tænde eller slukke en pin. Og med lampen forbundet til Raspberry Pi gennem PowerSwitch Tail, kan du tænde eller slukke for lampen med en enkelt kommando. Nu kan du brugecron
at planlægge lyset til at tænde og slukke på forskellige tidspunkter af dagen.cron
er linux job scheduler. Med det kan du indstille kommandoer til at udføre på bestemte tidspunkter og datoer, eller du kan få job i en bestemt periode (for eksempel en gang i timen). Du skal planlægge to job; en af dem vil tænde lyset klokken 20:00 og den anden tænder lyset klokken 14:00.
Som med andre tidsafhængige programmer, vil du sikre dig, at du har den rigtige dato og klokkeslæt oprettet på din Raspberry Pi, som beskrevet i ???.
For at tilføje disse job skal du redigere cron-tabellen (en liste over kommandoer, som Linux udfører på bestemte tidspunkter):
[email protected]: / home / pi / # crontab -e
Dette vil starte en teksteditor for at ændre rodets cron-tabel. At skifte til rodbruger typesudo su
. Øverst i filen kan du se nogle oplysninger om, hvordan du ændrer cron-tabellen. Brug dine piletasterne til at komme til bunden af filen og tilføj disse to poster i slutningen af filen.
0 20 * * * /home/pi/on.sh 25 0 2 * * * /home/pi/off.sh 25
cron
vil ignorere nogen linjer, der starter med hash-mærket. Hvis du midlertidigt vil deaktivere en linje uden at slette den eller tilføje en kommentar til filen, skal du sætte et hash-mærke foran linjen.
TypeKontrol-X
for at afslutte, skrivy
for at gemme filen, når den beder dig, og tryk enter for at acceptere standardfilnavnet. Når filen er gemt, og du er tilbage på kommandolinjen, skal den sigeinstallere ny crontab
at angive, at de ændringer, du har foretaget, vil blive udført afcron
Cron vil lade dig planlægge job til bestemte datoer og tider eller med mellemrum. Der er fem tidsfelter (eller seks hvis du ønsker at planlægge efter år), hver adskilt af et mellemrum efterfulgt af et andet rum og derefter kommandoen til at udføre. Stjerner indikerer, at jobbet skal udføre hver periode. For eksempel:
Tabel 1. Cron indtastning for at tænde lys klokken 20:00 hver dag
0 | 20 | * | * | * | /home/pi/on.sh 25 |
---|---|---|---|---|---|
Minut (: 00) | Time (8 pm) | Hver dag | Hver måned | Hver dag i ugen | sti til kommando |
Lad os sige, at du kun ville have lampen til at tænde hver hverdag. Her er, hvad crontab-indgangen vil se ud:
Tabel 2. Cron indtastning for at tænde lys klokken 20:00 Hver hverdag
0 | 20 | * | * | 1-5 | /home/pi/on.sh 25 |
---|---|---|---|---|---|
Minut (: 00) | Time (8 pm) | Hver dag | Hver måned | mandag til fredag | sti til kommando |
Lad os sige, at du har et shell script, der kontrollerer, om du har ny mail og sender dig e-mails, hvis du gør det. Sådan får du det script til at køre hvert femte minut:
Tabel 3. Cron entry for Checking for Mail hvert femte minut
*/5 | * | * | * | * | /home/pi/checkMail.sh |
---|---|---|---|---|---|
Hvert femte minut | Hver time | Hver dag | Hver måned | Hver dag i ugen | sti til kommando |
* / 5 angiver en periode på hvert femte minut.
Som du kan se,cron
er et kraftfuldt værktøj, der står til din rådighed til planlægning af job til bestemte datoer eller tidspunkter, og planlægning af job sker i et bestemt interval.