TelePi
חשבתם פעם שתוכלו להתכתב עם השרת שלכם? לשאול אותו לשלומו או לבקש ממנו לבצע פקודות? אז זהו, שהיום זה כבר אפשרי ואפילו פשוט ליישום. כאן בדיוק נכנסת לתמונה מערכת ה TelePi המבוססת Telgram Bot ומאפשרת שליחת פקודות וקבלת תגובות והתראות מהשרת שלך (בין אם מדובר ב Raspberry pi או כל שרת מבוסס לינוקס).
על מנת שנוכל להתקין ולהגדיר את המערכת יש לפתוח תחילה חשבון בטלגרם, לצורך כך יש להתקין את האפליקציה על הטלפון הנייד:
אחרי התקנת האפליקציה והרישום נעבור לפתיחת ה Bot בו נשתמש לתקשורת עם השרת. לשם כך יש להכנס לכתובת הבאה: https://t.me/BotFather
על מנת לפתוח צ'אט בוט חדש יש לכתוב הת הפקודה /new ולאחריה נשאל מספר שאלות:
הראשונה שבהן היא איך נרצה לקרוא לבוט, במקרה של הדוגמה כאן: "Tech Blog".
השאלה הבאה תהיה מה שם המשתמש עבור הבוט, לדוגמה: TechBlogBot.
[img2=480x381]https://techblog.co.il/wp-content/uploads/2017/08/TelePi-BotFather-create-new-bot-480x381.png[/img2]
אחרי שנסיים לענות על השאלות נקבל Token אשר ישמש עבור הגדרת הבוט על השרת. ה Token נראה כך:
123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ
כעת, נתקין את ה bot של טלגרם על הפאי על ידי סט הפקודות הבא:
sudo apt-get install python-pip
sudo pip install telepot
כעת נבדוק את ההתקנה וכן את ה Token, לשם כך נכתוב python לצורך כניסה לסביבת עבודה של פייטון, ובתוכה נריץ את סט הפקודות הבא:
import telepot
bot = telepot.Bot('*** copy bot token from browser ***')
bot.getMe()
כאשר בשורה השניה יש להכניס את ה Token שקבלנו בעת יצירת הבוט בחלקו הראשון של המדריך
התוצאה שנקבל אמורה להראות כך:
[img2=678x381]https://techblog.co.il/wp-content/uploads/2017/08/TelePi-Test-Token-678x381.png[/img2]
כעת לאחר שווידאנו כי ה TOKEN וההתקנה תקינים נוכל להתחיל ללמד את הפאי להגיב לפקודות. לצורך כך צרו תיקיה בשם TelePi תחת opt ועברו אליה על ידי הפקודה הבאה :
mkdir /opt/TelePi
cd /opt/TelePi
כעת ניצור קובץ דוגמה על ידי הפקודה:
nano telebot.py
והדביקו לתוכו את הטקסט הבא:
import time
import random
import datetime
import telepot
from subprocess import call
import subprocess
import os
from telepot.loop import MessageLoop
def handle(msg):
chat_id = msg['chat']['id']
command = msg['text']
user_name = msg['chat']['username']
print 'Got command: %s' % command
if command == '/time':
bot.sendMessage(chat_id, str(datetime.datetime.now()))
elif command == '/speed':
x = subprocess.check_output(['speedtest-cli','--share'])
bot.sendMessage(chat_id,x)
elif command == '/ip':
x = subprocess.check_output(['curl','ipinfo.io/ip'])
bot.sendMessage(chat_id,x)
elif command == '/disk':
x = subprocess.check_output(['df'])
bot.sendMessage(chat_id,x)
elif command == '/mem':
x = subprocess.check_output(['cat','/proc/meminfo'])
bot.sendMessage(chat_id,x)
elif command == '/stat':
bot.sendMessage(chat_id,'Number five is alive!')
elif command == '/logo':
bot.sendPhoto(chat_id=chat_id, photo='https://telegram.org/img/t_logo.png')
bot = telepot.Bot('*** insert your bot token here')
MessageLoop(bot, handle).run_as_thread()
print 'I am listening ...'
while 1:
time.sleep(10)
בשורה 36 יש להזין את ה Token שקבלתם בשלב יצירת הבוט.
לחצו Ctrl+x לסיום ולאחריו y על מנת לשמור את השינויים ולצאת מהעורך.
כתבו את הפקודה הבאה:
python /opt/TelePt/telebot.py
אם הכל התנהל קשורה תראו מסך שנראה כך:
[img2=672x394]https://techblog.co.il/wp-content/uploads/2017/08/TelePi-Listening-for-command-650x381.png[/img2]
בקובץ הדוגמה שלהלן ניתן לבצע מספר בדיקות והוראותף לדוגמה בדיקה של כתובת ה IP החיצונית של השרת שניתנה על ידי ספקית האינטרנט:
[img2=695x154]https://techblog.co.il/wp-content/uploads/2017/08/TelePi-Ip-sample.png[/img2]
ניתן לבצע בידת מהירות באמצעות speedtest (מצריך התקנה על פי המאמר הבא :
בנוסף ניתן לשלוט על רכיבים המחוברים למכשיר הפאי (למשל כיבוי והדלקת לד המחוברים ל GPIO):
import sys
import time
import random
import datetime
import telepot
import RPi.GPIO as GPIO
def on(pin):
GPIO.output(pin,GPIO.HIGH)
return
def off(pin):
GPIO.output(pin,GPIO.LOW)
return
GPIO.setmode(GPIO.BOARD)
GPIO.setup(2, GPIO.OUT)
def handle(msg):
chat_id = msg['chat']['id']
command = msg['text']
print 'Got command: %s' % command
if command == 'on':
bot.sendMessage(chat_id, on(2))
elif command =='off':
bot.sendMessage(chat_id, off(2))
bot = telepot.Bot('Bot Token')
bot.message_loop(handle)
print 'I am listening...'
while 1:
time.sleep(10)
נכון לעכשיו המערכת תפעל רק בהפעלה ידנית, במידה ותרצו שהבוט יעלה עם הדלקת הפאי, יש לפעול על פי השלבים הבאים:
ראשית כנסו לנתיב הבא וצרו קובץ בשם telepi על ידי סט הפקודות הבא:
cd /etc/init.d
nano telepi
והדביקו לתוכו את הטקסט הבא:
#! /bin/sh
# /etc/init.d/telebot
case "$1" in
start)
echo "Starting TelePi"
# run application you want to start
python /opt/TelePi/telebot.py &
;;
stop)
echo "Stopping TelePi"
# kill application you want to stop
killall python
;;
restart)
echo "Stopping TelePi"
# kill application you want to stop
killall python
echo "Starting TelePi"
python /opt/TelePi/telebot.py &
;;
*)
echo "Usage: /etc/init.d/TelePi{start|stop|restart}"
exit 1
;;
esac
exit 0
צאו מהעורך ושמרו את השינויים על ידי Ctrl+x ולאחריו y לאישור.
כעת נוסיף לקובץ הרשאות execute על ידי הפקודה הבאה:
sudo chmod 755 telepi
ולאחר מכן את הפקודה הבאה שתכניס את הסקריפט לעבודה:
sudo update-rc.d telepi defaults
אתחלו את הפאי וראו את הקסם מתרחש (:
