Telegram Bot con controlador PLC Raspberry Pi
Tutorial para controlar los GPIOs del PLC de código abierto Raspberry Pi con Telegram
20 julio, 2021 por
Telegram Bot con controlador PLC Raspberry Pi
Boot & Work Corp. S.L., Amil Shrivastava


Introducción

¿Has pensado alguna vez en controlar tu controlador lógico programable únicamente con mensajes de texto a través de Telegram? O mejor aún, ¿recibir actualizaciones programadas o alertas de tu PLC en tiempo real a tu aplicación de Telegram? Pues ahora es posible con la automatización industrial. 

En este tutorial, vamos a aprender a utilizar los pines GPIO del PLC basado en Raspberry Pi de Industrial Shields con un bot de Telegram para el control industrial. Una vez que implementes esto, puedes modificar esto según tu aplicación y requerimientos.

Requisitos

Paso 1: Crear un Bot en Telegram

a) Para ello, tendrás que abrir la aplicación y buscar @BotFather. BotFather puede crear y gestionar bots.

b) Envía /start al BotFather para recibir una lista de comandos. ("/" es una convención de telegramas para enviar comandos al bot).

c) Para crear un nuevo bot, envía /newbot. A continuación, el BotFather te enviará las instrucciones a seguir, como decidir el nombre, el nombre de usuario, etc.

d) Una vez hecho esto, recibirás un "Token". Asegúrate de guardarlo y de no compartirlo con personas no confiables.

Paso 1: Crear un bot en Telegram-Telegram Bot con Raspberry Pi PLC

Paso 2: Creación de un script en Python para comunicarse con el bot desde el PLC

a) Instala las dependencias. 

$sudo apt-get install python-pip
$sudo pip install telepot

b) Prueba tu token.

Entra en la consola de Python escribiendo $python en tu terminal. A continuación, introduce los siguientes comandos. Deberías recibir un diccionario con los datos de tu bot. Si no es así, debe haber algún error.

>>>import telepot
>>>bot = telepot.Bot('*** copy bot token from browser ***')
>>>bot.getMe()

Paso 2: Creación de un script en Python para comunicarse con el bot desde el PLC-Telegram Bot con Raspberry Pi PLC

c) Crea el archivo .py con tu código para controlar las salidas digitales del PLC. La idea para este tutorial es encender y apagar un LED enviando mensajes en Telegram. 

$sudo nano bottest.py

Código

import os
import time
import telepot
from telepot.loop import MessageLoop

def test(msg):
    chat_id = msg['chat']['id']
    command = msg['text']
    print 'Got command: %s' % command
    if command == '/on':
        bot.sendMessage(chat_id, 'The LED is on!')
        os.system("sudo ./set-digital-output Q0.4 1")
    if command == '/off':
        bot.sendMessage(chat_id, 'The LED is off!')
        os.system("sudo ./set-digital-output Q0.4 0")
elif command == 'Is the bot working fine?':
bot.sendMessage(chat_id, 'Yes it is')

bot = telepot.Bot('***Your Token***')
MessageLoop(bot, handle).run_as_thread()
print 'I am listening ...'
while 1:
    time.sleep(10)
Asegúrate de mantener el archivo "set-digital-output" de "/home/pi/test/analog/" en la misma carpeta que tu "bottest.py".

Paso 3: Una vez creado el archivo, es el momento de ejecutarlo y probar el bot.

a) Ejecuta el siguiente comando para ejecutar el archivo que acabamos de crear.

$python bottest.py

b) En las aplicaciones de Telegram, ejecuta /on y /off para probar. 

Probando /on y /off - Paso 3: Una vez creado el archivo, es el momento de ejecutarlo y probar el bot. - Bot de Telegram con Raspberry Pi PLC

Y voilà, ahora tu PLC industrial Raspberry Pi se controla a distancia con tu aplicación de Telegram. 

Enlaces relacionados

Conceptos básicos sobre las salidas digitales del Raspberry PLC

Telegram Bot con controlador PLC Raspberry Pi
Boot & Work Corp. S.L., Amil Shrivastava
20 julio, 2021
Compartir
Archivar

¿En busca de tu PLC ideal?

Echa un vistazo a esta comparativa de producto de varios controladores industriales basados en Arduino.

Comparamos entradas, salidas, comunicaciones y otras especificaciones con las de los equipos de otras marcas destacadas.


Comparativa PLC industrial >>

¿Quieres más información?

¡Rellena el formulario!

Tell me more!