wtorek, 1 marca 2016

ESPBLYNK #06 Powiadomienia na telefonie, E-mail i Twitter

Dziś przedstawię sposoby powiadamiania nas o jakimś konkretnym zdarzeniu.


Dziś będzie bardzo krótko. Za pomocą Blynka możemy ustawić powiadomienia dla użytkownika np w przypadku uruchomienia alarmu, gdy trzeba podlać kwiatki, gdy ktoś nam uruchomił komputer bez naszej wiedzy itp itd. Mamy do dyspozycji 3 metody:
- powiadomienia na telefonie - trzeba mieć w tle uruchomioną apkę, dostęp do neta itp, ale jeśli to mamy zawsze to polecam
- powiadomienia email - wysyłamy na określony adres wiadomość o określonej treści. Niestety małe ograniczenie - 1 mail na minutę, nie wyślemy więc maili do wszystkich domowników w tym samym momencie
- Twitter - sam nie korzystam z niego, więc dla mnie najmniej przydatna opcja

Dodajmy do naszej aplikacji w Blynku widgety od powiadomienia i email.
 
W emailu nie mamy do dyspozycji żadnych opcji, obsługujemy je tylko z poziomu ESP, wadą jest to, że ikonka zabiera cenne miejsce na ekranie.
 
W przypadku powiadomień ustawienia dotyczą powiadomienia, gdy nasz ESP przestanie odpowiadać, a także jaki priorytet maja one w systemie - tu polecam zawsze ustawiać najwyższy.

Poniżej fragment kodu, który wysyła nam maila i powiadomienie na telefon gdy zostanie wciśnięty przycisk na pinie GPIO12. Zaimplementowany jest też mechanizm odczekiwania 62 sekund przed wysłaniem kolejnego.

#define BLYNK_PRINT Serial    // Comment this out to disable prints and save space
#include 
#include 
#include 
dht11 DHT;
#define DHT11_PIN 14
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "e7f4e49f7df64e96bd856a55f738d50e";
unsigned long previousMillis = 0;
const long interval = 1000;
unsigned long czas_dzialania = 0;
unsigned int zmienna_V4 = 0;

unsigned int powiadomienie_blokada = 0;

void setup()
{
  pinMode(12, INPUT); 
  Serial.begin(9600);
  Blynk.begin(auth, "costam", "czteryslowawszystkoduzymiliterami");
}

void loop()
{
  unsigned long currentMillis = millis();
  if(currentMillis - previousMillis >= interval) 
  {
     czas_dzialania++;
     zmienna_V4++;
     previousMillis = currentMillis;

     Blynk.virtualWrite( 3, czas_dzialania );
     Blynk.virtualWrite( 4, zmienna_V4%11 );
     Blynk.virtualWrite( 5, zmienna_V4%11 );
     // wykonanie pomiaru
     DHT.read(DHT11_PIN);
     Blynk.virtualWrite(10, DHT.temperature); //virtual pin
     Blynk.virtualWrite(11, DHT.humidity); // virtual pin

     if( powiadomienie_blokada )
       powiadomienie_blokada--;
   }
  Blynk.run();

   if( digitalRead( 12 ) == LOW )
   {
    if( powiadomienie_blokada == 0 )
    {
      Blynk.email("thedambo1@gmail.com", "wlamanie", "Sensor wykryl ruch");
      Blynk.notify("Wykryto ruch");
      powiadomienie_blokada = 62;
    }
   }
}
Tak wygląda otrzymane powiadomienie na telefonie:

I to by było na tyle w tej części. Z ciekawostek dziś wyszła nowa aktualizacja na androida i zmieniono ikonki wszystkim widgetom :) Ale nie będę tego poprawiał w starszych częściach na pamiątkę. Widać, że system się cały czas rozwija.

0 komentarze:

Prześlij komentarz