Skicka push notiser till telefonen från en Raspberry Pi
Ett sätt att skicka information är att använda sig av SMS (beskrivet i artikeln Skicka och ta emot SMS med en Raspberry PI) men detta innebär att man behöver en 3G sticka och ett fungerande abonnemang plus att varje SMS kostar pengar.
Om man har sin Raspberry Pi uppkopplad till internet så kan man skicka s.k push notiser till en telefon så att du får ett popup på samma sätt som sms.
En sådan tjänst som är gratis att använda, är Pushetta, men för att ska få ett notis via nätet behöver man även en applikation installerad på telefonen, Pushetta stöder i skrivande stund följande plattformar : iPhone, Android, Windows Phone and Chrome (extension), även dessa appar är gratis.
Det först du måste göra är att registrera sig på www.pushetta.com, du måste sedan bekräfta den via den epostadress som du anger.
När du registrerar dig är det dax att skapa en kanal för meddelanden. En kanal är en namn som man kan skicka meddelanden till och alla som “prenumererar” på kanalen kommer att får meddelandet. Detta är basen för många IoT system och kortfattat beskrivet är det en “broker” som tar emot meddelandena och skickar dem vidare till de som lyssnar, så i detta fall är det Pushetta-servern som är “broker”. Det protokoll som Pushetta verkar använda sig av är MQTT och om ni vill fördjupa er hur det fungerar finns mer information hos mqtt.org.
Du måste ladda upp en ikon för din kanal, tyvärr är systemet likt kinkigt och kräver exakt 256×256 i upplösning. Enklast är att använda något program t.ex gimp för att anpassa storleken på bilden. Namnet på kanalen måste var unik inte bara för dig utan inga andra person får ha skapat ett sådant kanalnamn. Enklast är t.ex att göra som jag gjorde börja kanalen med något som är unikt för dig.
Med Hidden avgör du om kanalen kan hittas av alla när man söker på tillgängliga kanaler.
Med “Kind” satt till Private krävs att du godkänner “prenumeranten”
Om allt gick bra så har du en en kanal med 0 prenumeranter och 0 meddelanden.
Nu är det dax att installera applikationen i telefonen, information om hur vart du laddar ner den finns på deras nerladdningssida, iphone och android finns på respektive butik.
När man laddat ner appen så måste man lägga till vilka kanaler som man vill prenumerera på. Man lägger till den under Featured, och sedan + teckned för att lägga till, här hur det ser ut på en iPhone
Viktigt är att namnet måste exakt samma som på kanalen man skapade.
Eftersom vi gjorde kanalen privat måste kanalägaren godkänna prenumerationen.
Om du går tillbaka till Pushetta på webben så kommer du se att det finns en förfrågan för kanalen
Då är det dax att godkänna min egen prenumeration genom att klicka på den röda knappen.
bara att klicka på den gröna knappen för att godkänna, och efter den har vi en prenumerant på kanalen
Nu prövar vi att skicka ett testmeddelande inifrån Pushetta
Om all fungerar ska du få en notis på din telefon, om inte kolla att du godkände popup notiser för appen. Man får gå in i inställningar för att aktivera det i efterhand om du inte godkände det vid första uppstart.
Nu har vi skapat en kanal och aktiverat någon som lyssnar på kanalen så nu är det dax att konfigurera för att kunna skicka meddelanden till kanalen.
Vi gör en ett enkelt kommando som kan skicka meddelanden till en kanal, men först måste vi installera pushetta biblioteket för python
1 2 3 |
sudo apt-get install --no-install-recommends python-pip sudo pip install pushetta |
Sedan är det bara att ladda ner kommandot från github och göra det exekverbart
1 2 |
sudo curl https://raw.githubusercontent.com/nimmis/push_msg/master/push_msg -o /usr/local/bin/push_msg sudo chmod +x /usr/local/bin/push_msg |
När du kör det första gången kommen den att fråga om din unika API nyckel, den hittar du på Pushetta sidan, dashboard
kopiera nyckeln på sidan och klistra in den när kommandot frågar efter den
1 2 3 4 |
push_msg Please enter you Pushetta API_KEY :b9138419839138498249823498234 Pushetta API_KEY stored in /home/pi/.push_msg Please edit file or remove the file to be asked again to change API key |
Denna nyckel sparas i hemmakatalogen för användaren så inställningen är unik för varje användare. Så om ni kommer att använda den i kommandon som körs av root så får ni registrerar API nyckeln även för den användaren med
1 |
sudo push_msg |
Så nu kan vi använda den för at test om all fungerar
1 |
push_msg -c nimmis-test -m "ett meddelande till kanalen" |
Om allt blev rätt så ska du få ett meddelande på telefonen
Om du får “Unexpected error: Channel name not found” så betyder det att du inte angett rätt kanalnamn
Om du får “Unexpected error: Invalid token” så betyrder det att din API nyckel inte är rätt, antigen tar du bort filen
1 |
rm ~/.push_msg |
och kör om kommandot för att mata in nyckeln på nytt eller så redigerar du filen
1 2 3 4 5 6 7 8 9 10 11 12 |
push_msg -h usage: push_msg [-h] -c CHANNEL -m MESSAGE [-q] This is a command to send messages to a Pushetta channel optional arguments: -h, --help show this help message and exit -c CHANNEL, --channel CHANNEL Channel name -m MESSAGE, --message MESSAGE Message to send -q, --quiet Dont echo error messages |
-c för kanal namn
-m för meddelande, tänk på att använda snuttar ” om texten innehåller mellanslag
-q om man använder kommandot i ett skript och kontrollerar via error koden som kommandot returnerar
Skulle du kunna förklara hur man kan få datorn att automatiskt skicka en notis vid uppstart avstängning och omstart? Gärna unika meddelanden.
Tack för en intressant blogg!
Jag har skrivit en artikel om hur man hanterar saker vid upp och ned tagning av system, även ett exempel på just din fråga, se http://raspberry.arctics.se/2015/07/23/initieringsprocessen-i-raspbian/
Tack så jätte mycket för push_msg (och alla andra artiklar om Raspberry PI) den funkar klockrent!
Jag behövde dock ett kortare utgångsdatum och skrev om vissa delar av ditt script. Skulle vilja skicka dig det så du kan lägga till det om du vill. Vart ska jag skicka det?