.. note::

    Ciao, benvenuto nella Community di appassionati di SunFounder Raspberry Pi, Arduino e ESP32 su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino e ESP32 insieme ad altri appassionati.

    **Perché unirti?**

    - **Supporto esperto**: Risolvi problemi post-vendita e sfide tecniche con l'aiuto della nostra community e del nostro team.
    - **Impara e condividi**: Scambia consigli e tutorial per migliorare le tue competenze.
    - **Anteprime esclusive**: Ottieni accesso anticipato agli annunci di nuovi prodotti e alle anteprime.
    - **Sconti speciali**: Approfitta di sconti esclusivi sui nostri prodotti più recenti.
    - **Promozioni festive e giveaway**: Partecipa a promozioni festive e concorsi a premi.

    👉 Pronto a esplorare e creare con noi? Clicca su [|link_sf_facebook|] e unisciti oggi stesso!

3. Sistema di Sicurezza tramite @IFTTT
============================================
Con questo progetto, creiamo un dispositivo di sicurezza che utilizza un sensore PIR per rilevare quando un ladro o un animale randagio entra nella tua casa. In tal caso, riceverai un'email di avviso.

Il servizio più semplice da utilizzare sarà Webhook.
Una richiesta POST viene inviata al servizio IFTTT da Raspberry Pi Pico W.
Usando IFTTT, creeremo un Applet che intercetta il webhook e invia un'email.

**1. Componenti necessari**

In questo progetto, abbiamo bisogno dei seguenti componenti.

È sicuramente conveniente acquistare un kit completo, ecco il link:

.. list-table::
    :widths: 20 20 20
    :header-rows: 1

    *   - Nome	
        - ELEMENTI IN QUESTO KIT
        - LINK
    *   - Kit Kepler	
        - 450+
        - |link_kepler_kit|

Puoi anche acquistarli separatamente dai link qui sotto.

.. list-table::
    :widths: 5 20 5 20
    :header-rows: 1

    *   - SN
        - COMPONENTE	
        - QUANTITÀ
        - LINK

    *   - 1
        - :ref:`cpn_pico_w`
        - 1
        - |link_picow_buy|
    *   - 2
        - Cavo Micro USB
        - 1
        - 
    *   - 3
        - :ref:`cpn_breadboard`
        - 1
        - |link_breadboard_buy|
    *   - 4
        - :ref:`cpn_wire`
        - Diverse
        - |link_wires_buy|
    *   - 5
        - :ref:`cpn_transistor`
        - 1(S8050)
        - |link_transistor_buy|
    *   - 6
        - :ref:`cpn_resistor`
        - 2(1KΩ, 10KΩ)
        - |link_resistor_buy|
    *   - 7
        - :ref:`cpn_button`
        - 1
        - |link_button_buy|
    *   - 8
        - Cicalino attivo :ref:`cpn_buzzer`
        - 1
        - 
    *   - 9
        - :ref:`cpn_lipo_charger`
        - 1
        -  
    *   - 10
        - Batteria 18650
        - 1
        -  
    *   - 11
        - Supporto batteria
        - 1
        -  
    *   - 12
        - :ref:`cpn_pir`
        - 1
        - |link_pir_buy|

**2. Costruisci il Circuito**

.. warning:: 
        
    Assicurati che il modulo caricabatterie Li-po sia collegato come mostrato nello schema. Altrimenti, un cortocircuito potrebbe danneggiare la batteria e il circuito.

.. image:: img/wiring/3.ifttt_mail_bb.png
    :width: 800


**3. CONFIGURA IFTTT**

IFTTT è un servizio gratuito che fornisce vari modi per collegare diversi servizi di dati tra loro.

Creeremo un Applet che reagisce a un webhook (URL personalizzato) che invia dati a IFTTT.
IFTTT ti invierà quindi un'email.

Segui i passaggi seguenti su IFTTT.

1. Visita |link_ifttt| per accedere o creare un account.

    .. image:: img/ifttt-1.png
        :width: 500

2. Clicca su **Crea**.

    .. image:: img/ifttt-2.png
        :width: 500

3. Aggiungi un evento **If This**.

    .. image:: img/ifttt-3.png
        :width: 500

4. Cerca **Webhooks**.

    .. image:: img/ifttt-4.png
        :width: 500

5. Tocca **Ricevi una richiesta web**.

    .. image:: img/ifttt-5.png
        :width: 500

6. Inserisci il nome dell'evento (es. SecurityWarning) e clicca su **Crea trigger**.

    .. image:: img/ifttt-6.png
        :width: 500

7. Aggiungi un evento **Then That**.

    .. image:: img/ifttt-7.png
        :width: 500

8. Cerca Email.

    .. image:: img/ifttt-8.png
        :width: 500

9. Clicca su **Inviami un'email**.

    .. image:: img/ifttt-9.png
        :width: 500

10. Compila **Oggetto** e **Corpo**, quindi clicca su **Crea azione**.

    .. image:: img/ifttt-10.png
        :width: 500

11. Clicca su **Continua** per completare la configurazione.

    .. image:: img/ifttt-11.png
        :width: 500

12. Modifica il nome del titolo e hai finito.

    .. image:: img/ifttt-12.png
        :width: 500

13. Ora verrai reindirizzato automaticamente alla pagina dei dettagli dell'Applet, dove puoi vedere che l'Applet è attualmente connesso e puoi attivare o disattivare l'interruttore.

    .. image:: img/ifttt-13.png
        :width: 500


**4. Esegui lo Script**

#. Ora che abbiamo creato l'Applet IFTTT, ci serve anche la chiave API che può essere ottenuta da |link_webhooks| per consentire a Pico W di accedere a IFTTT.

    .. image:: img/ifttt-14.png
        :width: 500

#. Copiala nello script ``secrets.py`` in Raspberry Pi Pico W.

    .. image:: img/3_ifttt4.png

    .. note::

        Se non hai gli script ``do_connect.py`` e ``secrets.py`` nel tuo Pico W, fai riferimento a :ref:`iot_access` per crearli.

    .. code-block:: python
        :emphasize-lines: 4

        secrets = {
        'ssid': 'SSID',
        'password': 'PASSWORD',
        'webhooks_key':'WEBHOOKS_API_KEY'
        }

#. Apri il file ``3_ifttt_mail.py`` nel percorso ``kepler-kit-main/iot``, quindi clicca su **File** -> **Salva con nome** o premi ``Ctrl+Shift+S``.

    .. image:: img/3_ifttt1.png

#. Seleziona **Raspberry Pi Pico** nella finestra popup che appare.

    .. image:: img/3_ifttt2.png

#. Imposta il nome del file a ``main.py``. Apparirà un avviso se esiste già un file con lo stesso nome sul tuo Pico W.

    .. image:: img/3_ifttt3.png

#. Ora puoi scollegare il cavo USB e utilizzare il modulo caricabatterie Li-po per alimentare il Raspberry Pi Pico W. Sentirai un beep quando lo script sarà in esecuzione. Il cicalino continuerà a suonare se il modulo PIR rileva una persona/creatura di passaggio, e ti verrà inviata un'email di avviso. Lo script può essere riavviato premendo il pulsante.

**Come funziona?**

Il Raspberry Pi Pico W deve essere connesso a Internet, come descritto in :ref:`iot_access`. Per questo progetto, usalo semplicemente.

.. code-block:: python

    from do_connect import *
    do_connect()

Legge i dati dal modulo PIR e chiama la funzione ``motion_detected()`` se rileva qualcuno che passa (dati da 0 a 1).

.. code-block:: python

    import machine

    sensor=machine.Pin(17,machine.Pin.IN)

    sensor.irq(trigger=machine.Pin.IRQ_RISING, handler=motion_detected)

Successivamente il Pico W invia i dati a IFTTT. Come puoi vedere, il ``messaggio`` che invii a IFTTT è una stringa di url.
IFTTT identifica il mittente tramite ``secrets['webhooks_key']``, l'evento attivato è identificato da ``event``.
Quindi, assicurati che siano corretti.

.. code-block:: python

    import urequests
    from secrets import *

    event='SecurityWarning'
    message=f"https://maker.ifttt.com/trigger/{event}/with/key/{secrets['webhooks_key']}"

    def motion_detected(pin):
        urequests.post(message)
        print(message)
        global warn_flag
        warn_flag=True
        sensor.irq(handler=None)

Quando viene chiamato ``motion_detected()``, la variabile ``warn_flag`` viene impostata su ``True``, facendo sì che il cicalino continui a suonare.

.. code-block:: python

    while True:
        if warn_flag==True:
            alarm.toggle()
            time.sleep_ms(50)

Lo scopo del pulsante qui è riavviare lo script.

.. code-block:: python

    button=machine.Pin(16,machine.Pin.IN)

    def reset_device(pin):
        machine.reset()

    button.irq(trigger=machine.Pin.IRQ_RISING, handler=reset_device)
