Stap 6: Zeg wat?
Zo had ik nu een konijn (in stukken overal in de Bank), die kon spreken, maar het nodig een mechanisme om meldingen ontvangen en doorgeven aan de Ivona-service om te worden voorgelezen. Ik keek naar de mogelijkheid om SMS-berichten via een on line service of SIM-kaart adapter, en ook Twitter en Dropbox voor het leveren van tekenreeksen/tekstbestanden, maar besloot uiteindelijk te gebruiken imaplib, een Python gebaseerde middelen van interactie met de IMAP-e-mailaccounts. Ik besloot deze optie vooral omdat het goed met de dienst IFTTT geïntegreerd, kun je echt creatief met de opmaak van e-mailberichten. Het betekende ook dat ik zou kunnen zijn voor het verzenden van e-mails rechtstreeks naar de RabbitPi om te worden voorgelezen.
Ik keek door een heleboel imaplib python voorbeelden online, en na het combineren van stukken en brokken en werken door de documentatie van de imaplib die ik erin geslaagd om te eindigen met een script dat Gmail voor ongelezen berichten op gezette tijden gecontroleerd en andere tekst afgedrukt op het scherm afhankelijk van de inhoud van het onderwerp van het bericht. Dit was echt handig, als ik kon een "IF"-instructie in de code passen kan alleen werken als de e-mail afkomstig is van mezelf, en dan de "Print" actie voor de code aanroepen van de service Ivona omwisselen.
Ik heb al een tijdje proberen aan te passen het imaplib & Pyvona code te lezen uit de hoofdtekst van e-mails maar dit bleek te zijn zeer ingewikkeld - ik leerde al snel dat de kern e-mail velden (van, aan, onderwerp enz) zijn opgemaakt heel eenvoudig, maar dat de hoofdtekst van de e-mail kan op veel verschillende manieren worden gestructureerd. Op het einde het niet echt toe, kon ik bereiken wat ik nodig had met behulp van de e-mailonderwerp als het veld dat de berichtgevingstekst zou worden afgelezen.
Ik vervolgens aangepast in het programmacodevoorbeeld van imaplib zodat in plaats van het stoppen na elke controle voor e-mail die het zou oneindig een lus rond, een paar keer per minuut voor e-mails te controleren en uitlezen van een nieuwe vrij veel als ze zijn aangekomen. Dit was handig voor het testen, maar in de praktijk zou ik waarschijnlijk maken het een beetje minder vaak controleren. Ook de moeite waard constaterend dat het script het wachtwoord in platte tekst slaat zo zult moeten sommige codering toegevoegd op een bepaald punt.
Ik ben 100% zeker dat dit kan worden bereikt veel meer elegant en efficiënt in Python maar het was leuk en uitdagend het helemaal werkend te krijgen - ik "Python for Kids" van de bibliotheek deze week lenen dus mijn code hopelijk verbeteren zal als ik meer informatie.
De werking van de fundamentele get-an-email-and-read-it-out script ik heb toegevoegd in de extra bits van code die maken zou van het konijn oren verplaatsen en LEDs licht tijdens het lezen van de kennisgevingen. De code ik gebruikte is op GitHub , maar vergeet niet mijn huidige gebrek aan python dapperheid!