Guida Rapida – Iottly Docs

Guida Rapida

Il modo migliore per scoprire Iottly è attraverso il Getting Started project, precaricato in ogni nuovo account. Include un Elastic Pi — un device virtuale già connesso alla piattaforma — così puoi esplorare tutte le funzionalità senza nessun hardware fisico.

La demo simula uno scenario semplice: un Elastic Pi è virtualmente connesso a sensori di temperatura e umidità e ne legge periodicamente i valori.

Passo 1 — Verifica l’Elastic Pi nel pannello Device Configuration

Apri il pannello Device Configuration. Dovresti vedere il tuo Elastic Pi in stato connected.

Pannello Device Configuration con l'Elastic Pi connesso

Ogni device registrato in Iottly riceve un Unique ID (usato come username MQTT per l’autenticazione) e il suo indirizzo MAC viene registrato per permettere la ri-registrazione dopo un reset in fabbrica.

Passo 2 — Esplora i Management Scripts

Apri il pannello Management Scripts. Qui vive il codice Python che gira sul device.

Pannello Management Scripts con le sezioni global e loop

Il codice è diviso in due sezioni:

Sezione global — helper e variabili

def read_data_from_sensor(sensortype):
    """simula la lettura di un sensore generando valori casuali"""
    if sensortype == "temperature":
        # genera casualmente un valore di temperatura
        return round_reading(random.uniform(30, 50))
    elif sensortype == "humidity":
        # genera casualmente un valore di umidità
        return round_reading(random.uniform(20, 80))

Questa funzione simula le letture dei sensori generando valori casuali. In un deployment reale leggerebbe da hardware vero (GPIO, I2C, seriale, ecc.).

Sezione loop — il loop principale del device

def loop():
    """il loop principale del device, in esecuzione su un processo dedicato"""
    # campiona temperatura e umidità ogni 5 secondi,
    # salvando i valori in variabili globali (definite nella sezione global)
    temp_value.value = read_data_from_sensor("temperature")
    hum_value.value  = read_data_from_sensor("humidity")
    time.sleep(5)

La funzione loop gira in continuo in un processo dedicato. Qui campiona entrambi i sensori ogni 5 secondi e salva le letture in variabili globali condivise.

Passo 3 — Invia un comando remoto

Apri il pannello Messages. Un comando chiamato read_sensor_data è già definito:

Pannello Messages con il comando read_sensor_data

{"read_sensor_data": {"sensortype": "<temperature|humidity|both>"}}
  • read_sensor_data è il tipo di messaggio — identifica cosa fa il comando.
  • sensortype è una keyword che accetta tre valori: temperature, humidity, o both.

Iottly ha generato automaticamente la funzione handler per questo comando:

def read_sensor_data(command):
    """
    Gestisce il comando read_sensor_data.
    Formato: {"read_sensor_data": {"sensortype": "<temperature|humidity|both>"}}
    """
    cmdpars = command["read_sensor_data"]

    if cmdpars["sensortype"] == "temperature":
        sensor_data_reading = {"temperature": temp_value.value}
    elif cmdpars["sensortype"] == "humidity":
        sensor_data_reading = {"humidity": hum_value.value}
    elif cmdpars["sensortype"] == "both":
        sensor_data_reading = {
            "temperature": temp_value.value,
            "humidity":    hum_value.value,
        }

    message = {"sensor_data_reading": sensor_data_reading}
    send_msg(message)  # invia la risposta via MQTT

Passo 4 — Testa dalla Console

Apri il pannello Console. Poiché il messaggio read_sensor_data è stato definito nel pannello Messages, Iottly ha già creato un pulsante di comando interattivo.

Pannello Console con il comando read_sensor_data pronto all'invio

Clicca read_sensor_data e scegli un sensortype. Dovresti vedere la risposta apparire nel pannello Logs — i messaggi più recenti sono in fondo.

Prova tu stesso: aggiungi un allarme di temperatura

Incolla questo snippet nella funzione loop, appena prima di time.sleep:

if temp_value.value > 48:
    alarm   = {"description": "temperatura troppo alta", "temp_value": temp_value.value}
    message = {"ALARM": alarm}
    send_msg(message)

Poi clicca Flash over-the-air per distribuire il nuovo codice all’Elastic Pi. Dopo il riavvio dell’agent vedrai i messaggi di allarme nel pannello Console ogni volta che la temperatura generata casualmente supera 48°.

Rendi la soglia configurabile da remoto

Vuoi cambiare la soglia di allarme senza ridistribuire il codice? Puoi farlo interamente da remoto:

  1. Crea un nuovo comando nel pannello Messages, es. set_alarm_threshold

    Pannello Messages con il nuovo comando set_alarm_threshold

  2. Aggiungi una variabile globale per la soglia nella sezione global:

    Threshold = multiprocessing.Value('d', 45.0)
    
  3. Riempi l’handler generato set_alarm_threshold con:

    limit = cmdpars["threshold"]
    Threshold.value = float(limit)
    change = {"new_threshold_value": Threshold.value}
    send_msg(change)
    
  4. Aggiorna il loop per usare la variabile al posto del valore hardcoded:

    if temp_value.value > Threshold.value:
    
  5. Flash over-the-air e testa dalla Console.

Prossimi passi