Thinkspeak e Telegram: pochi click per leggere i valori del vostro Arduino

Sarò molto breve

  1. Supponiamo abbiate la vostra centralina di qualsiasi cosa, fatta da un Arduino collegato in Internet (Wifi, GSM, Ethernet ect) e che la vostra centralina invii i dati a Thinkspeak
  2. Se non avete capito il punto 1) inutile che proseguiate 🙂
  3. Supponiamo che vogliate con un click in qualsiasi momento, leggere l’ultima rilevazione inviata al Cloud IoT di Thinkspeak, tramite un bot Telegram

Pochi semplici passaggi. Thinkspeak permette la lettura dei dati in formato json o csv. Per cui basta creare uno script che legge l’ultimo invio e lo visualizza.

Per creare un bot Telegram senza avere necessità di un vostro server seguite questo mio vecchio tutorial

Il codice interno al Google Script è:

function doGet() {

  var ss = SpreadsheetApp.openById(ID_SPREADSHEET);

  

  var metaSheet = ss.getSheetByName(‘Foglio1’);

    var RSSFeedTitle=”;

  for (var i=1; i < 11; i++) {

  RSSFeedTitle += metaSheet.getRange(i,getRandomArbitrary(2,7)).getValue()+’ ‘;

}

  return RSSFeedTitle;

  

}

function doPost(e) {

  var update = JSON.parse(e.postData.contents);

  // Replace with your token

var API_TOKEN = ”; // inserire il token ricevuto da botfather

  

  // Make sure this is update is a type message

  if (update.hasOwnProperty(‘message’)) {

    var msg = update.message;

    var chatId = msg.chat.id;

    // Make sure the update is a command.

    if (msg.hasOwnProperty(‘entities’) && msg.entities[0].type == ‘bot_command’) {

      if (msg.text == ‘/sds011’|| msg.text == ‘sds011’) {

        var url = ‘https://api.thingspeak.com/channels/YYYY/feeds.json?results=1’;

        var data = UrlFetchApp.fetch(url);

        var posts = JSON.parse(data);

        var post = posts[‘feeds’];

        

        // Format the quote

        var quote =’Risultati centralina monitoraggio polveri sottili:\n’;

        quote += ‘PM10: ‘ + post[0][‘field1’] + ‘µg/m³\n’;

        quote += ‘PM2.5: ‘ + post[0][‘field2’] + ‘µg/m³\n’;

        quote += ‘Temperature: ‘ + post[0][‘field3’] + ‘°C\n’;

        quote += ‘Humidity: ‘ + post[0][‘field4’] + ‘%\n’;

        quote += ‘Time (UTC): ‘ + post[0][‘created_at’] + ‘\n’;

        

        var payload = {

          ‘method’: ‘sendMessage’,

          ‘chat_id’: String(chatId),

          ‘text’: quote,

          ‘parse_mode’: ‘HTML’

        }

        var data = {

          “method”: “post”,

          “payload”: payload

        }

        UrlFetchApp.fetch(‘https://api.telegram.org/bot’ + API_TOKEN + ‘/’, data);

      }

     }

    }

  }

 

Sostituite i valori nelle righe in rosso rispettivamente con il vostro TOKEN e il numero del CHANNEL di Thinkspeak. Ho messo 4 campi PM10, PM2.5, Temp e Hum ma potete metterne di più o di meno in base al vostro Channel.

Ricordo che:

1) crei un bot con Botfather copiandoti il token (/newbot e dai un nome visualizzato e username)
2) copia incolla il codice del google script in un tuo nuovo script e lo rendi applicazione eseguibile dal menu (Pubblica –> distribuisci come applicazione web –> scegli a chiunque, anche anonimi e fai ok. Avrai il link dell’app)
3) attivi il webhook copiando il link di attivazione nel browser (con token punto 1) e il link del punto 2) esempio https://api.telegram.org/bot{TOKEN}/setWebHook?url={WEB_APP_URL}

 

Aprite il vostro bot su Telegram e digitate : /sds011

Il gioco è fatto:

 

Potrebbero interessarti anche...