TelePI - שלוט בשרת שלך באמצעות טלגרם

בית חכם, עוזרות חכמות, חשמל חכם, מערכות שליטה ובקרה, Amazon Echo, Alexa, Google home, Control4, RTI, מנעולים חכמים ועוד.
שלח תגובה
techblog פותח השרשור
חבר שרק התחיל
חבר שרק התחיל
תגובות: 17
הצטרף: ינואר 2017
נתן תודות: 2 פעמים
קיבל תודות: 4 פעמים

שליחה #1 

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
אתחלו את הפאי וראו את הקסם מתרחש (:

שלח תגובה

חזור אל “בית חכם ובקרה”