рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдореЗрдВ рд╕реНрдорд╛рд░реНрдЯ рдЧреНрд░реАрдирд╣рд╛рдЙрд╕

рд╢реБрдн рджреЛрдкрд╣рд░ рд╣рдорд╛рд░реА рд╕рд╛рдЗрдЯ рдкрд░ рдПрдХ рдЧреНрд░реАрдирд╣рд╛рдЙрд╕ рд╣реИред рдЗрд╕рдХреА рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдЧрд░реНрдо рдореМрд╕рдо рдореЗрдВ рдЧрд░реНрдореА рд╣реИ, рдЬреИрд╕реЗ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╕рд╛рдЗрдмреЗрд░рд┐рдпрд╛рдИ рд╡рд╕рдВрдд рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рддрд╛рдкрдорд╛рди рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрд╛рддрд╛рд░ рджрд░рд╡рд╛рдЬреЗ / рдЦрд┐рдбрд╝рдХрд┐рдпрд╛рдВ рдЦреЛрд▓рдирд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдЕрдЧрд░ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рддрд╛рдкрдорд╛рди +50 рдбрд┐рдЧреНрд░реА рддрдХ рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рдФрд░ рд╢рд╛рдо рдХреЛ рд╕рдм рдХреБрдЫ рдЬрдо рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рди рд╢реБрд░реВ рдХрд┐рдпрд╛ред

image

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рдПрдХ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ 2 рдЦрд░реАрджреАред рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП DS18B20 рд╕реЗрдВрд╕рд░ рдХреЛ рдЬреЛрдбрд╝рд╛ ред рдлрд┐рд░ рджреЛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреА рдЧрдИ рдХрд╛рд░ рдХреА рдЦрд┐рдбрд╝рдХрд┐рдпрд╛рдВ рдЦрд░реАрджреА рдЧрдИрдВред рд╕рднреА рдбреАрд╕реА рдореЛрдЯрд░реНрд╕ рдХреА рддрд░рд╣, рд╡реЗ рдзреНрд░реБрд╡реАрдпрддрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдЗрдВрдЬрди рд╕реЗ рджреЛ рд░рд┐рд▓реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ: рдПрдХ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рджреВрд╕рд░рд╛ рд╕рдорд╛рдкрди рдХреЗ рд▓рд┐рдПред рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрди рд░рд┐рд▓реЗ рдХреЛ рдЯреНрд░рд╛рдВрдЬрд┐рд╕реНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрд╡рдпрдВ GPIO рдкреЛрд░реНрдЯ рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдФрд░ рд╣рдо рдЗрд╕ рдкреВрд░реА рдЪреАрдЬрд╝ рдХреЛ 12V рдмреИрдЯрд░реА рдХреЗ рд╕рд╛рде рдЦрд┐рд▓рд╛рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрдВрдЬрдиреЛрдВ рдХреЛ рдирд╣реАрдВ рдЬрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЦрд┐рдбрд╝рдХреА рдХреЗ рдЪрд░рдо рдкрджреЛрдВ рдкрд░ рд╕реАрдорд╛ рд╕реНрд╡рд┐рдЪ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЧрдП рдереЗ, рдФрд░ рдпрджрд┐ рдЦрд┐рдбрд╝рдХреА рдЦреБрд▓реА / рдмрдВрдж рд╣реБрдИ, рддреЛ рдиреЗрдЯрд╡рд░реНрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдлрдЯ рдЧрдпрд╛ рдерд╛ред

image

image

рдФрд░ рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкрдбрд╝реЛрд╕реА рд╡рд╛рдИрдлрд╝рд╛рдИ рдХреЗ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕реНрд╡рд╛рдЧрдд рдХреЗ рд▓рд┐рдП рдЙрдиреНрдирдд рдбрдмрд▓ рд╕реНрдХреНрд╡рд╛рдпрд░ рдПрдВрдЯреАрдирд╛ рдХреЗ рд╕рд╛рде рдЯреАрдкреА-рд▓рд┐рдВрдХ рд╡рд╛рдИрдлрд╛рдИ рдПрдбрд╛рдкреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВрдШрд░ рд╡рд╛рдИрдлрд╝рд╛рдИ рд░рд╛рдЙрдЯрд░, рдЬреЛ 40 рдореАрдЯрд░ рдХреА рджреВрд░реА рдкрд░ рд╕реНрдерд┐рдд рд╣реИред

image

рдЕрдм рд╣рдо рдЗрди рдбреНрд░рд╛рдЗрд╡ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВред рдкрд╛рдпрдерди рдХреЛ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ GPIO рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд░реНрдерди рд╣реИред рдЦрд┐рдбрд╝рдХреА рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЯреНрд░рд╛рдВрдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ + 3.3V рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рд░рд┐рд▓реЗ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдпрд╣ рдЦрд┐рдбрд╝рдХреА рдХреЛ рдЦреЛрд▓рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛ред рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╡рд╣реА рдХрд░рддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдорд╛рд░рд╛ рд░рд┐рд▓реЗ рдбреНрд░рд╛рдЗрд╡ рдХреЗ рд╡рд┐рдкрд░реАрдд рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рд▓реЗрдХрд┐рди рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд░, рд╣рдо рдмрд╕ рд╡рд░реНрддрдорд╛рди рдХреЛ рдПрдХ рдкреЛрд░реНрдЯ рдпрд╛ рджреВрд╕рд░реЗ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рд╣рдордиреЗ рддрдп рдХрд┐рдпрд╛ рдХрд┐ рдпрджрд┐ рддрд╛рдкрдорд╛рди 26 рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рд╣рдо 1 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдЦрд┐рдбрд╝рдХреА рдЦреЛрд▓рддреЗ рд╣реИрдВред рдлрд┐рд░ рд╣рдо 3 рдорд┐рдирдЯ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдпрд╣ рдлрд┐рд░ рд╕реЗ рдЧрд░реНрдо рд╣реИ, рддреЛ рдПрдХ рд╕реЗрдХрдВрдб рдХреЗ рднреАрддрд░ рджреВрд╕рд░реА рд╡рд┐рдВрдбреЛ рдЦреЛрд▓реЗрдВред рд╣рдо 3 рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдХрд░реЗрдВред рд╕рдорд╛рдкрди рдХреЗ рд╕рд╛рде рд╣реА, рдпрд╣рд╛рдВ рдХреЗрд╡рд▓ рддрд╛рдкрдорд╛рди 24 рдбрд┐рдЧреНрд░реА рд╕реЗ рдиреАрдЪреЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдпрд╣рд╛рдБ рдХреЛрдб рд╣реИ:

temp.py
import RPi.GPIO as GPIO
import time
import os
import datetime

GPIO.setmode(GPIO.BOARD)
GPIO.cleanup()
GPIO.setup(31, GPIO.OUT)
GPIO.setup(33, GPIO.OUT)
GPIO.setup(35, GPIO.OUT)
GPIO.setup(37, GPIO.OUT)

# 
def gettemp():
  if os.path.isdir("id "): #  ,   
    tfile2=open("/sys/bus/w1/devices/id ")
    ttext2=tfile2.read()
    tfile2.close()
    temp2=ttext2.split("\n")[1].split(" ")[9]
    t2=float(temp2[2:])/1000
    print t2
  else: # ,   
    print ('File not found')
    t2==24
  return t2

t2=24 #    
while True:  
t2=gettemp()
  if    t2<24: #   24,      
 
        GPIO.output(37, 1)
        print ("close1")
        time.sleep(1)
        GPIO.output(37, 0)

  elif  t2>26: #  26,      
        GPIO.output(35, 1)
        print ("open1")
        time.sleep(2)
        GPIO.output(35, 0)
        
  else: #   
        print ("none1")
  time.sleep(180)# 3 

#  
t2=gettemp()

#   ,    .
  if    t2<24:
        GPIO.output(33, 1)
        print ("close2")
        time.sleep(1)
        GPIO.output(33, 0)

  elif  t2>26:
  
        GPIO.output(31, 1)
        print ("open2")
        time.sleep(1)
        GPIO.output(31, 0)
     

  else:
        print ("none2")


#  3 
  time.sleep(180)



, .

рд░рд╛рд╕реНрдкрд┐рдпрди рд╡рд┐рддрд░рдг рдкрд░ рдЕрдкрд╛рдЪреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдПрдХ рдорд╣реАрдиреЗ рддрдХ рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рдкреЗрдЬ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХреЗред рдЬреЛ рдЕрднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдкреЛрд░реНрдЯ рд╕реЗрдЯ рдХрд░реЗрдВ, рдЙрдиреНрд╣реЗрдВ рдЦреЛрд▓реЗрдВ, рдХреБрдЫ рднреА рдорджрдж рдирд╣реАрдВ рдорд┐рд▓реАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдм рдХреБрдЫ рд╕реНрдерд╛рдиреАрдп рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛ред рдлрд┐рд░ рд╣рдордиреЗ рджреБрдЦ рдХреА рд╕рдЪреНрдЪрд╛рдИ рд╕реАрдЦреА: рд╣рдо NAT рдХреЗ рдкреАрдЫреЗ рд╣реИрдВред рдФрд░ рд╣рдорд╛рд░рд╛ рдСрдкрд░реЗрдЯрд░ рд╕рдорд░реНрдкрд┐рдд рдЖрдИрдкреА рд╕реЗрд╡рд╛рдПрдВ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдЯреЗрд▓реАрдХреЙрдо рдХреНрд╖реЗрддреНрд░ рдХреЗ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЛ рдирдорд╕реНрдХрд╛рд░)ред рдХрдИ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЙрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдХреБрдЫ рднреА рдирд╣реАрдВ рдЖрдпрд╛ред рдореИрдВрдиреЗ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкрд░ рдПрдХ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЖрдИрдкреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред IPv6 рдмреНрд░реЛрдХрд░ рддрдм рддрдХ рдмрдВрдж рд╣реЛ рдЪреБрдХрд╛ рдерд╛ред рдФрд░ рд╡реАрдкреАрдПрди рдмрдирд╛рдирд╛ рдорд╣рдВрдЧрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдореБрдлреНрдд рдореЗрдВ рд╕рдм рдХреБрдЫ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдмреЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдЗрд╕рдХреЗ рджреЛ рдореЛрдб рд╣реИрдВ: рдирд┐рд░рдВрддрд░ рд╕рд░реНрд╡рд░ рдорддрджрд╛рди рдФрд░ рд╕реАрдзреЗ рд╣рдореЗрдВ рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛ред рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рдЙрдкрдпреБрдХреНрдд рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдПрдХ рдЖрдИрдкреА рдкрддреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореБрдЭреЗ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдорд┐рд▓рд╛:pytelegrambotapiред рдФрд░ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВред рд╕рдЪ рд╣реИ, рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВред рдореБрд╢реНрдХрд┐рд▓ рд╕реЗ рдорд┐рд▓реА MySQL рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдордирд╛ рдХрд░ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЗрд╕рдореЗрдВ рд╕реЗ рд╕рдм рдХреБрдЫ рдкрдврд╝рд╛ред рдореБрдЭреЗ рдПрдХ рдмреИрд╕рд╛рдЦреА рдмрдирд╛рдирд╛ рдерд╛: рд░реИрдо рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ, рдлрд┐рд░ рдПрдХ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдПрдВ рдЬреЛ рдбреЗрдЯрд╛ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред

рд╣рдо config.ini рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ, рд╣рдо рдЗрд╕реЗ рд╡рд╣рд╛рдБ рдлреЗрдВрдХ рджреЗрддреЗ рд╣реИрдВ:

[mysql]
host = localhost
database = telegram
user = root
password = secret

рдбреЗрдЯрд╛ рдХреЛ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдмрджрд▓рдирд╛ рдордд рднреВрд▓рдирд╛ред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ python_mysql_dbconfig.py рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:

from configparser import ConfigParser
 
def read_db_config(filename='config.ini', section='mysql'):
    """ Read database configuration file and return a dictionary object
    :param filename: name of the configuration file
    :param section: section of database configuration
    :return: a dictionary of database parameters
    """
    # create parser and read ini configuration file
    parser = ConfigParser()
    parser.read(filename)
 
    # get section, default to mysql
    db = {}
    if parser.has_section(section):
        items = parser.items(section)
        for item in items:
            db[item[0]] = item[1]
    else:
        raise Exception('{0} not found in the {1} file'.format(section, filename))
 
    return db

рд╣рдореЗрдВ рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде python_mysql_connect2.py рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

from mysql.connector import MySQLConnection, Error
from python_mysql_dbconfig import read_db_config

def connect():
    """ Connect to MySQL database """

    db_config = read_db_config()

    try:
        print('Connecting to MySQL database...')
        conn = MySQLConnection(**db_config)

        if conn.is_connected():
            print('connection established.')
        else:
            print('connection failed.')

    except Error as error:
        print(error)

    finally:
        conn.close()
        print('Connection closed.')

if __name__ == '__main__':
    connect()

рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИред

рдЖрдЗрдП рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдереЛрдбрд╝рд╛ рд╕рд╛ рдЦреЛрджреЗрдВ рдФрд░ рд╕реАрдзреЗ рдмреЙрдЯ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝реЗрдВред рдЦреИрд░, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, @BotFather рд▓рд┐рдЦреЗрдВ, рдФрд░ рдЙрд╕рд╕реЗ рдПрдХ рдЯреЛрдХрди рд▓реЗрдВред Config.py рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ рдФрд░ рдЗрд╕рдореЗрдВ рджреЛ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд▓рд┐рдЦреЗрдВ:

# -*- coding: utf-8 -*-
token = ' '

рдореИрдВрдиреЗ рдмреЙрдЯ рдореЗрдВ рддреАрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛:

  • рддрд╛рдкрдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
  • рд╕реНрдиреИрдкрд╢реЙрдЯ рд▓реЗрдирд╛
  • рд╡рд┐рдВрдбреЛ рдкреНрд░рдмрдВрдзрди

рдкрд╣рд▓реЗ рдХреЗ рд╕рд╛рде, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ, рдЕрдиреБрд░реЛрдз рдкрд░ рд╣рдо рддрд╛рдкрдорд╛рди рдлрд╝рд╛рдЗрд▓ рдкрдврд╝рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рднреЗрдЬрддреЗ рд╣реИрдВред

рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдФрд░ рдЕрдзрд┐рдХ рдХрдард┐рдиред рдореИрдВ Motion рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдЗрд╕рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ, рд░реИрдо рдореЗрдВ рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЪрд┐рддреНрд░ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВ, рдареАрдХ рд╣реИ, рдЪрд▓реЛ рд╣рд░ 30 рд╕реЗрдХрдВрдб рдореЗрдВ рдХрд╣рддреЗ рд╣реИрдВред рдФрд░ рд╣рдо рд╕рдорд╛рди рдирд╛рдореЛрдВ рд╡рд╛рд▓реА рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рд╡реЗ рдмрд╕ рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВред рдФрд░ рдлрд┐рд░, рдЕрдиреБрд░реЛрдз рдкрд░, рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдлрд╝рд╛рдЗрд▓ рднреЗрдЬрддреЗ рд╣реИрдВред

рдЦреИрд░, рддреАрд╕рд░рд╛, рд╕рдмрд╕реЗ рдЬрдЯрд┐рд▓ рдореЙрдбреНрдпреВрд▓: рд╡рд┐рдВрдбреЛ рдкреНрд░рдмрдВрдзрдиред рдореЗрд░рд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп: рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рд╣рдо рдЗрд╕реЗ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдРрд╕рд╛ рд╣реА рдХрд┐рдпрд╛ред рд░реИрдо рдореЗрдВ рдПрдХ рдФрд░ рдлрд╛рдЗрд▓ рдмрдирд╛рдИред рдЬрдм рд╣рдо рдЦреЛрд▓рдиреЗ / рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдереЛрдбрд╝рд╛ рдЦреБрд▓рд╛, рдЦрд┐рдбрд╝рдХреА рдХреЛ рдмрдВрдж рдХрд░реЗрдВ рдпрд╛ рд╕реНрд╡рдЪрд╛рд▓рди рдХреЛ рдЪрд╛рд▓реВ / рдмрдВрдж рдХрд░реЗрдВ, рдмреЙрдЯ рдЗрд╕ рдлрд╛рдЗрд▓ рдХреЛ рдХрдорд╛рдВрдб рдирдВрдмрд░ рд▓рд┐рдЦрддрд╛ рд╣реИред рд╣рд░ рдкрд╛рдВрдЪ рд╕реЗрдХрдВрдб рдореЗрдВ, рд╡рд┐рдВрдбреЛ рдкреНрд░рдмрдВрдзрди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдпрд╣ рдХрдорд╛рдВрдб рдХреЛ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рдж, рдпрд╣ рдПрдХ рд╣реА рдлрд╛рдЗрд▓ рдкрд░ рд▓рд┐рдЦрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛ рдЧрдпрд╛ред рдмреЙрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рд╣рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрдорд╛рдВрдб рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред

рдЦреИрд░, рдЕрдм рд╕реНрд░реЛрдд рдХреЛрдбред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╡рд┐рдВрдбреЛрдЬрд╝ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдХрд╛рд░реНрдпрдХреНрд░рдо, рдХреЗрд╡рд▓ рдПрдХ рдмреЙрдЯ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ (temp.py):

temp.py
import RPi.GPIO as GPIO
import time
import os
import datetime

GPIO.setmode(GPIO.BOARD)
GPIO.cleanup()
GPIO.setup(31, GPIO.OUT)
GPIO.setup(33, GPIO.OUT)
GPIO.setup(35, GPIO.OUT)
GPIO.setup(37, GPIO.OUT)

#  ,    
f = open('/mnt/raw/wind', 'w')
f.write('OK')
f.close()

#,   
f = open('/mnt/raw/pos', 'w')
f.write('1')
f.close()

# 
def gettemp():
  if os.path.isdir("/sys/bus/w1/devices/id "): #  ,   
    tfile2=open("/sys/bus/w1/devices/id /w1_slave")
    ttext2=tfile2.read()
    tfile2.close()
    temp2=ttext2.split("\n")[1].split(" ")[9]
    t2=float(temp2[2:])/1000
    print t2
  else: # ,   
    print ('File not found')
    t2==24
  return t2

#   
i=1
# 
t2=24

#   
def info():
    f = open('/mnt/raw/wind')
    com = f.read()
    f.close()
    return com

# ,   
def ans():
    f = open('/mnt/raw/wind', 'w')
    f.write('OK')
    f.close()
    print ("OK")

# 
def rob():
    c = info()
    if c=="10":
        GPIO.output(37, 1)
        print ("close1")
        time.sleep(3)
        GPIO.output(37, 0)
        ans()
    elif c=="11":
        GPIO.output(35, 1)
        print ("open1")
        time.sleep(2)
        GPIO.output(35, 0)
        ans()
    elif c=="12":
        GPIO.output(37, 1)
        print ("close1")
        time.sleep(3)
        GPIO.output(37, 0)
        ans()
    elif c=="13":
        GPIO.output(35, 1)
        print ("open1")
        time.sleep(1)
        GPIO.output(35, 0)
        ans()
    elif c=="20":
        GPIO.output(33, 1)
        print ("close2")
        time.sleep(3)
        GPIO.output(33, 0)
        ans()
    elif c=="21":
        GPIO.output(31, 1)
        print ("open2")
        time.sleep(3)
        GPIO.output(31, 0)
        ans()
    elif c=="22":
        GPIO.output(33, 1)
        print ("close2")
        time.sleep(1)
        GPIO.output(33, 0)
        ans()
    elif c=="23":
        GPIO.output(31, 1)
        print ("open2")
        time.sleep(1)
        GPIO.output(31, 0)
        ans()
    elif c=="30":
        global i
        i=0
        ans()
        f = open('/mnt/raw/pos', 'w')
        f.write('0')
        f.close()
        print('30')
        global i
        i=0
        ans()
    elif c=="31":
        f = open('/mnt/raw/pos', 'w')
        f.write('1')
        f.close()
        print('31')
        global i
        i=1
        ans()
        
while True:

#   
 rob()

#,   
 if i==1:

  gettemp()

  if    t2<24:
 
        GPIO.output(37, 1)
        print ("close1")
        time.sleep(1)
        GPIO.output(37, 0)

  elif  t2>26:

        GPIO.output(35, 1)
        print ("open1")
        time.sleep(2)
        GPIO.output(35, 0)

  else:
        print ("none1")
       
  # 3 ,       
  j=0
  while(j<36):
      rob()
      time.sleep(5)
      j=j+1
      if i==0:
          break
  gettemp()

  if    t2<24:
        GPIO.output(33, 1)
        print ("close2")
        time.sleep(1)
        GPIO.output(33, 0)
       
  elif  t2>26:
  
        GPIO.output(31, 1)
        print ("open2")
        time.sleep(1)
        GPIO.output(31, 0)

  else:

        print ("none2")

  j=0
  while(j<36):
      rob()
      time.sleep(5)
      j=j+1
      if i==0:
          break



рд▓реЗрдХрд┐рди рдЕрдм рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдмреЙрдЯ рдХреА рд╣реАред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдореИрдВ PyTelegramBotApi рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдпрджрд┐ рдЖрдк GitHub рдкрд░ рдкреНрд░рд▓реЗрдЦрди рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВ , рддреЛ рдЖрдк рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдмреЙрдЯ рдХрдорд╛рдВрдбрд░реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╣реИрдВрдбрд▓рд░ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдПрдХ рдШрдЯрдирд╛ рд╣реИ рдЬреЛ рдПрдХ рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╕рдВрджреЗрд╢ рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рд╣реИред рдФрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╡рд╣ рд╕рдм рд╣реИ рдЬреЛ рд╣рдо рдЕрдЬрдЧрд░ рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА рднреЗрдЬреЗрдВрдЧреЗ рдпрд╛ рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рд╛рдЗрд▓ рдкрд░ рдХрдорд╛рдВрдб рд▓рд┐рдЦреЗрдВрдЧреЗред рдЕрд╕рд▓ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдпреЗ рдмрд╣реБрдд рд╣реА рд╣реИрдВрдбрд▓рд░ рдФрд░ рд╕рд░реНрд╡рд░ рдкреЛрд▓рд┐рдВрдЧ рдХрдорд╛рдВрдб рд╣реЛрддреЗ рд╣реИрдВред

рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рднреА рд▓рд┐рдЦреА рдФрд░ рдЬреЛрдбрд╝ рджреА: рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдмреНрд▓реЙрдХред рдЦреИрд░, рдЬреИрд╕рд╛ рдХрд┐ рдирд╛рдо рд╕реЗ рд╣реА рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рдЧреНрд░реАрдирд╣рд╛рдЙрд╕ рдХреЛ рдЕрдирдзрд┐рдХреГрдд рдкрд╣реБрдВрдЪ рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реИред рдпрд╣ рдмрд╕ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдкрд╣рд▓реА рдмрд╛рд░ рдЬрдм рдЖрдк рдмреЙрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╣рдорд╕реЗ рдкрд╛рд╕рд╡рд░реНрдб рдорд╛рдВрдЧрддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдЗрд╕реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдмреЙрдЯ рд╣рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рдЕрдЧрд▓реЗ рдХрдиреЗрдХреНрд╢рди рдкрд░ рд╣рдореЗрдВ рдЕрдм рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдмреЙрдЯ рд╣рдореЗрдВ рдЪреИрдЯ-рдЖрдИрдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИред рд╣рдо рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдЪреИрдЯ-рдЖрдИрдбреА рдХреЛ рдПрдХ рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╣рд░ рд╕рдордп рдЦреАрдВрдЪ рди рд╕рдХреЗрдВред

рдЕрдм daba.py рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рд▓рд┐рдЦреЗрдВ:

daba.py
from mysql.connector import MySQLConnection, Error
from python_mysql_dbconfig import read_db_config
import time

def getkey(): #   
    try:
        dbconfig = read_db_config()
        conn = MySQLConnection(**dbconfig)
        cursor = conn.cursor()
        cursor.execute("SELECT key2 FROM tkey where id=0")

        row = cursor.fetchone()

        return row
        print(row)
  

    except Error as e:
        print(e)

    finally:
        cursor.close()
        conn.close()
def sendup(): #    ( )
    stime=time.time()
    query = "INSERT INTO uptime(datetime, also) " \
    "VALUES(now(), 20)"
    args=(stime)
    try:
        dbconfig = read_db_config()
        conn = MySQLConnection(**dbconfig)
        cursor = conn.cursor()
        cursor.execute(query)

        row = cursor.fetchone()

        return(row)
        print(row)
  

    except Error as e:
        print(e)

    finally:
        cursor.close()
        conn.close()
def getid(idi): #   id   
    query="SELECT accecpt FROM users WHERE chatid ='"+str(idi)+"'"
    try:
        dbconfig = read_db_config()
        conn = MySQLConnection(**dbconfig)
        cursor = conn.cursor()
        cursor.execute(query)

        row = cursor.fetchone()
        #print (str(row))
        if str(row)=="None":
            return 0;
            print (0)
        else:
            return 20;

  

    except Error as e:
        print(e)

    #finally:
        #cursor.close()
        #conn.close()
def newuser(idi): #    
    query = ("INSERT INTO users SET `chatid`='12345'")
    try:
        dbconfig = read_db_config()
        conn = MySQLConnection(**dbconfig)
        cursor = conn.cursor()
        cursor.execute(query)

        row = cursor.fetchone()

        print(row)
  

    except Error as e:
        print(e)
        return(e)

    finally:
        cursor.close()
        conn.close()

if __name__ == '__main__':
    query_with_fetchone()



рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрднреА рдХреБрдЫ рдФрд░ рд╕рд╣рд╛рдпрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд░реЗрдВред рдПрдХ newuser.sh рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ рдФрд░ рдЙрд╕реЗ рд▓рд┐рдЦреЗрдВ:

#!/bin/bash
a=`cat /mnt/raw/user`
cat /dev/null > /mnt/raw/user

mysql -u root -pkoshak << EOF
use telegram;
INSERT INTO users(chatid) VALUES('$a');
EOF

рдФрд░ рдмреЙрдЯ рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдПрдВ:

#!/bin/bash
i=0
while [ $i = 0 ]
do
echo New python
sleep 5
python3 bot.py
done

рдФрд░ рдПрдХ рдФрд░:

#!/bin/bash
i=0
while [ $i = 0 ]
do
echo New python
sleep 5
python3 temp.py
done

"рд╣рдо рдРрд╕рд╛ рдХреНрдпреЛрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?" рддреБрдо рдкреВрдЫрддреЗ рд╣реЛред рдФрд░ рдпрд╣рд╛рдВ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдХрднреА-рдХрднреА рдЕрд╕реНрдерд┐рд░ рдЗрдВрдЯрд░рдиреЗрдЯ рдХрдиреЗрдХреНрд╢рди, рдпрд╛ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рдХрд╛рд░рдг, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреНрд░реИрд╢ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕реЗ рдПрдХ рдЕрдирдиреНрдд рдЪрдХреНрд░ рдореЗрдВ рдЪрд▓рд╛рддреА рд╣реИ: рдпрд╣ рдЙрдбрд╝ рдЧрдпрд╛ - рдпрд╣ рдлрд┐рд░ рд╕реЗ 5 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рд╢реБрд░реВ рд╣реБрдЖред рдФрд░ рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рд╣рд░ рдлрд╛рдпрд░рдореИрди рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛: рдЕрдЪрд╛рдирдХ, рднреА, рдПрдХ рдЦрд░рд╛рдмреА рдХреЗ рдХрд╛рд░рдг, рдХрд╛рд░реНрдпрдХреНрд░рдо рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рд╣рдо рдЧреНрд░реАрдирд╣рд╛рдЙрд╕ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВ, рд╣рдо рд╡рд╛рдкрд╕ рд▓реМрдЯ рдЖрдПрдВрдЧреЗ рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЯрдорд╛рдЯрд░ рдХрд╛ рд╕реВрдк рдпрд╛ рдЯрдорд╛рдЯрд░ рдЖрдЗрд╕рдХреНрд░реАрдо рд╣реЛрдЧрд╛ред

рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдФрд░ рдЕрдм рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рд╣реИ рдмреЙрдЯ рд▓рд┐рдкрд┐:

bot.py
# -*- coding: utf-8 -*-
import config
import telebot
import subprocess
import time
from telebot import types
import datetime
import os
from daba import getkey
from daba import sendup
from daba import getid
#from daba import newuser
#from temp import tep
import os

# 
f = open('/mnt/raw/user', 'tw', encoding='utf-8')
f.close()

global par
par=0

#   
global a
a="  .    /auth []"

#  
def get_temp():
  if os.path.isdir("/sys/bus/w1/devices/id "):

    tfile2=open("/sys/bus/w1/devices/id /w1_slave")
    ttext2=tfile2.read()
    tfile2.close()
    temp2=ttext2.split("\n")[1].split(" ")[9]
    t2=float(temp2[2:])/1000
    return t2

  else:
    print ('File not found')
  
#
keyword=str(getkey())[2:-3]

# 
bot = telebot.TeleBot(config.token)
print (sendup())
#  

######################### ##########################################
markup2 = types.ReplyKeyboardMarkup(row_width=1, resize_keyboard=True) #, ,     
markdown = types.ReplyKeyboardHide() #
itembtn5 = types.KeyboardButton(' ') #  5
markup2.add(itembtn5) #   
######################### ##########################################


#########################  ##########################################
markup = types.ReplyKeyboardMarkup(row_width=3, resize_keyboard=True) #, ,     
itembtn1 = types.KeyboardButton('  ') #  1
itembtn4 = types.KeyboardButton('  ')
itembtn2 = types.KeyboardButton('  ') #  2
markup.add(itembtn1, itembtn4, itembtn2) #   
#########################  ##########################################


######################### ##########################################

markup3 = types.ReplyKeyboardMarkup(row_width=2, resize_keyboard=True) #, ,     
itembtn10 = types.KeyboardButton('   ') #  10
itembtn11 = types.KeyboardButton('я╕П  ')
itembtn12 = types.KeyboardButton(' ')
markup3.add(itembtn10, itembtn11, itembtn12) #   

markup4 = types.ReplyKeyboardMarkup(row_width=2, resize_keyboard=True) #, ,     
itembtn13 = types.KeyboardButton('   ') #  13
markup4.add(itembtn13, itembtn11, itembtn12) #   

markup5 = types.ReplyKeyboardMarkup(row_width=2, resize_keyboard=True) #, ,     
itembtn14 = types.KeyboardButton('  ') #  14
itembtn15 = types.KeyboardButton('  ') #  15
itembtn16 = types.KeyboardButton('я╕П ') #  16
markup5.add(itembtn14, itembtn15, itembtn16) #   

markup6 = types.ReplyKeyboardMarkup(row_width=2, resize_keyboard=True) #, ,     
itembtn17 = types.KeyboardButton('я╕П   ') #  17
itembtn18 = types.KeyboardButton('я╕П   ') #  18
itembtn19 = types.KeyboardButton('   ') #  19
itembtn20 = types.KeyboardButton('   ') # 20
itembtn21 = types.KeyboardButton('я╕П ') #  21
markup6.add(itembtn17, itembtn18, itembtn19, itembtn20, itembtn21) #   

markup7 = types.ReplyKeyboardMarkup(row_width=2, resize_keyboard=True) #, ,     
itembtn22 = types.KeyboardButton('я╕П   ') #  22
itembtn23 = types.KeyboardButton('я╕П   ') #  23
itembtn24 = types.KeyboardButton('   ') # 24
itembtn25 = types.KeyboardButton('   ') # 25
markup7.add(itembtn22, itembtn23, itembtn24, itembtn25, itembtn21) #   
######################### ##########################################
bot.send_message(45215125, "")#   chat-id


    
#   
def pos():
    f = open('/mnt/raw/pos')
    com = f.read()
    f.close()
    return com

#
def avtor(idi):
    global par#      
    if par==idi:
            return 0
    else:#    ,    ,  0
            if getid(str(idi))==20:
                par=idi#   
                return 0
            else:#     
                bot.send_message(idi, "  .    /auth []", reply_markup=markup2)
                return 1    
        


@bot.message_handler(regexp=" ")
def auth(message):
    bot.send_message(message.chat.id, " /auth []")

# 
@bot.message_handler(commands=['auth'])
def start2(message):
    if message.text[6:]==keyword:#   
      if getid(str(message.chat.id))==20:#    ,         20
        bot.send_message(message.chat.id, "  ")
      else:
        global par
        bot.send_message(message.chat.id, "", reply_markup=markup)
        par=message.chat.id
        # chat-id   
        f = open('/mnt/raw/user', 'w')
        f.write(str(message.chat.id))
        f.close()
        os.system('newuser.sh')
        print (message.chat.id)
        print (par)
    else:
        bot.send_message(message.chat.id, "")
        print (keyword)
        print (message.text[6:])
        print (message.chat.id)


#  /start
@bot.message_handler(commands=['start'])
def start(message):
     global par
     if avtor(message.chat.id)!=0:
         print (par)
         bot.send_message(message.chat.id, "   .    /auth []", reply_markup=markup2)
     else:
	     bot.send_message(message.chat.id, "   .  /help,  ,    .")



#   - /help
@bot.message_handler(commands=['help'])
def help(message):
  if avtor(message.chat.id)==0:
     mas='       . \n    ,    :  \n   - /help \n       :)'
     bot.send_message(message.chat.id, mas, reply_markup=markup)
     print (message.chat.id, message.text)

	
 
#     
@bot.message_handler(commands=['show'])
def show(message):
  if avtor(message.chat.id)==0:
     mas=' '
     bot.send_message(message.chat.id, mas, reply_markup=markup)
     print (message.chat.id, message.text)



# 
@bot.message_handler(regexp="  ")
def temp(message):
  if avtor(message.chat.id)==0:
     tp=get_temp()
     mas='    : '+str(tp)+'┬░C'
     bot.send_message(message.chat.id, mas)
     print (message.chat.id, message.text)
    

# 
@bot.message_handler(regexp="  ")
def photo(message): 
     if avtor(message.chat.id)==0: 
         path='/mnt/raw/photo/foto.jpg' #    
         try:
             f = open(path, 'rb') #  - 
             bot.send_photo(message.chat.id, f) # 
             print (message.chat.id, message.text)
         except:
             bot.send_message(message.chat.id, "  :(")


#   
@bot.message_handler(regexp="  ")
def windows(message):
   if avtor(message.chat.id)==0:
       print ("window")
       print (pos())
       if str(pos())[0]=='1':
           bot.send_message(message.chat.id, "", reply_markup=markup3)#  ,      ┬л ┬╗
       else: 
           bot.send_message(message.chat.id, "", reply_markup=markup4)#     

# 
@bot.message_handler(regexp=" ")
def windows(message):
   if avtor(message.chat.id)==0:
       bot.send_message(message.chat.id, "",  reply_markup=markup)

# 
@bot.message_handler(regexp="   ")
def windows(message):
   if avtor(message.chat.id)==0:
       f = open('/mnt/raw/wind', 'w')# 
       f.write('30')#   ,     30
       f.close()# 
       k="No"#  
       while k[0:2]!="OK":#  
           time.sleep(5)# 5 
           f = open('/mnt/raw/wind')# 
           k = f.read()# 
           f.close()#
           print(k[0:2])
       bot.send_message(message.chat.id, "",  reply_markup=markup4)

@bot.message_handler(regexp="   ")
def windows(message):
   if avtor(message.chat.id)==0:
       f = open('/mnt/raw/wind', 'w')
       f.write('31')
       f.close()
       k="No"
       while k[0:2]!="OK":
           time.sleep(5)           
           f = open('/mnt/raw/wind')
           k = f.read()
           f.close()
           print(k[0:2])
       bot.send_message(message.chat.id, "",  reply_markup=markup3)

@bot.message_handler(regexp="я╕П  ")
def windows(message):
   if avtor(message.chat.id)==0:
       bot.send_message(message.chat.id, "",  reply_markup=markup5)

@bot.message_handler(regexp="я╕П ")
def windows(message):
   if avtor(message.chat.id)==0:
       if str(pos())[0]=='1':
           bot.send_message(message.chat.id, "", reply_markup=markup3)
       else: 
           bot.send_message(message.chat.id, "", reply_markup=markup4)

@bot.message_handler(regexp="я╕П ")
def windows(message):
   if avtor(message.chat.id)==0:
       bot.send_message(message.chat.id, "",  reply_markup=markup5)

#  
@bot.message_handler(regexp="  ")
def windows(message):
   if avtor(message.chat.id)==0:
       bot.send_message(message.chat.id, "",  reply_markup=markup6)
@bot.message_handler(regexp="  ")
def windows(message):
   if avtor(message.chat.id)==0:
       bot.send_message(message.chat.id, "",  reply_markup=markup7)

@bot.message_handler(regexp="я╕П   ")
def windows(message):
   if avtor(message.chat.id)==0:
       f = open('/mnt/raw/wind', 'w')
       f.write('11')
       f.close()
       k="No"
       while k[0:2]!="OK":
           time.sleep(5)           
           f = open('/mnt/raw/wind')
           k = f.read()
           f.close()
           print(k[0:2])
       bot.send_message(message.chat.id, "",  reply_markup=markup6)

@bot.message_handler(regexp="я╕П   ")
def windows(message):
   if avtor(message.chat.id)==0:
       f = open('/mnt/raw/wind', 'w')
       f.write('10')
       f.close()
       k="No"
       while k[0:2]!="OK":
           time.sleep(5)           
           f = open('/mnt/raw/wind')
           k = f.read()
           f.close()
           print(k[0:2])
       bot.send_message(message.chat.id, "",  reply_markup=markup6)

@bot.message_handler(regexp="   ")
def windows(message):
   if avtor(message.chat.id)==0:
       f = open('/mnt/raw/wind', 'w')
       f.write('13')
       f.close()
       k="No"
       while k[0:2]!="OK":
           time.sleep(5)           
           f = open('/mnt/raw/wind')
           k = f.read()
           f.close()
           print(k[0:2])
       bot.send_message(message.chat.id, "",  reply_markup=markup6)

@bot.message_handler(regexp="   ")
def windows(message):
   if avtor(message.chat.id)==0:
       f = open('/mnt/raw/wind', 'w')
       f.write('12')
       f.close()
       k="No"
       while k[0:2]!="OK":
           time.sleep(5)           
           f = open('/mnt/raw/wind')
           k = f.read()
           f.close()
           print(k[0:2])
       bot.send_message(message.chat.id, "",  reply_markup=markup6)

@bot.message_handler(regexp="я╕П   ")
def windows(message):
   if avtor(message.chat.id)==0:
       f = open('/mnt/raw/wind', 'w')
       f.write('21')
       f.close()
       k="No"
       while k[0:2]!="OK":
           time.sleep(5)           
           f = open('/mnt/raw/wind')
           k = f.read()
           f.close()
           print(k[0:2])
       bot.send_message(message.chat.id, "",  reply_markup=markup7)

@bot.message_handler(regexp="я╕П   ")
def windows(message):
   if avtor(message.chat.id)==0:
       f = open('/mnt/raw/wind', 'w')
       f.write('20')
       f.close()
       k="No"
       while k[0:2]!="OK":
           time.sleep(5)           
           f = open('/mnt/raw/wind')
           k = f.read()
           f.close()
           print(k[0:2])
       bot.send_message(message.chat.id, "",  reply_markup=markup7)

@bot.message_handler(regexp="   ")
def windows(message):
   if avtor(message.chat.id)==0:
       f = open('/mnt/raw/wind', 'w')
       f.write('23')
       f.close()
       k="No"
       while k[0:2]!="OK":
           time.sleep(5)           
           f = open('/mnt/raw/wind')
           k = f.read()
           f.close()
           print(k[0:2])
       bot.send_message(message.chat.id, "",  reply_markup=markup7)

@bot.message_handler(regexp="   ")
def windows(message):
   if avtor(message.chat.id)==0:
       f = open('/mnt/raw/wind', 'w')
       f.write('22')
       f.close()
       k="No"
       while k[0:2]!="OK":
           time.sleep(5)           
           f = open('/mnt/raw/wind')
           k = f.read()
           f.close()
           print(k[0:2])
       bot.send_message(message.chat.id, "",  reply_markup=markup7)

#  ,   
@bot.message_handler(content_types=["text"])
def repeat_all_messages(message):
   if avtor(message.chat.id)==0:
         bot.send_message(message.chat.id, "    .  /help,    ")
         print (message.chat.id, message.text)

#     
if __name__ == '__main__':
        bot.polling()




рдпрд╣рд╛рдВ рд╕реЗрдВрд╕рд░ рдЖрдИрдбреА, рдЪреИрдЯ-рдЖрдИрдбреА рдФрд░ рд░реИрдо рдореЗрдВ рд╕реЗрдХреНрд╢рди рдХрд╛ рд░рд╛рд╕реНрддрд╛ рдмрддрд╛рдирд╛ рди рднреВрд▓реЗрдВред рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд▓рдЧрднрдЧ рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИред рд╣рдо рдЗрд╕ рдбрдВрдк рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ , рдФрд░ рд╣рдорд╛рд░реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рднрд░рддреЗ рд╣реИрдВ, рдФрд░ рд░реИрдо рдореЗрдВ рд╡рд┐рднрд╛рдЬрди рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 10 рдПрдордмреА рдЧрд░реНрджрди рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рд╣рдо рдЕрдкрдиреА рджреЛ рд╕реНрдЯрд╛рд░реНрдЯрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдФрд░ рдЖрдирдВрдж рдордирд╛рддреЗ рд╣реИрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд╛рд╕рд╡рд░реНрдб рдЯреЗрд▓рдмреЙрдЯ рд╣реИред рдЗрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдЯреАрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдмрджрд▓реЗрдВред

рдПрд╕рдПрдордПрд╕ рд╕реЗ рд╕реВрдЪрдирд╛ рджреЗрдирд╛


рддреЛ рдХреНрдпрд╛ рдУрд╡рд░рд╣реАрдЯрд┐рдВрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрд╕рдПрдордПрд╕ рдиреЗ рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ред Sms.py рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:

sms.py
#!/usr/bin/env python
# -*- coding: utf8 -*-
 
"""   .. t_aleksandr_v@inbox.ru 17.02.2015 """
 
"""        sms.ru """
"""   :"""
 
""" -i  --idsender - id   sms.ru"""
""" -t  --to -      79219996660"""
""" -s  --subject -    """
 
 
from urllib2 import urlopen
from optparse import OptionParser
 
 
def sendsms(idsender,subject,to):
 
    subject = subject.replace(" ","+")
    url="http://sms.ru/sms/send?api_id=%s&text=%s&to=%s" %(idsender,subject,to)
    res=urlopen(url)
 
if __name__ == '__main__':
 
    parser = OptionParser()
 
    parser.add_option("-i", "-- ", dest="idsender", default=" ", help="ID user on sms.ru", metavar="IDSENDER")
    parser.add_option("-t", "-- ", dest="to", default=" ", help="to telephone number", metavar="TO")
    parser.add_option("-s", "--temperatyra 32", dest="subject", default="Jara tut, otkroy okno", help="Name of subject", metavar="SUBJECT")
 
    (options, args) = parser.parse_args()
 
    sendsms(options.idsender,options.subject,options.to)




рд╣рдо sms.ru рдкрд░ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рд╕реЗрдХреНрд╢рди рдореЗрдВ API-key рд▓реЗрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЕрдкрдирд╛ рдлреЛрди рдирдВрдмрд░ рдмрддрд╛рдирд╛ рди рднреВрд▓реЗрдВред

рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ, рд╣рдо рдПрдХ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

Vr=0

рдлрд┐рд░ рдЗрд╕ рдХреЛрдб рдХреЛ рд╕рджрд╛ рдХреЗ рдкрд╛рд╢ рдореЗрдВ рдбрд╛рд▓реЗрдВ:

d = datetime.today()
V = d.strftime('%H')
V = int(V)
 if    (t2>32 and Vr!=V): 
        print (V)
        Vr=V
        os.system('/home/samba/sms.py')

рдлрд┐рд▓рд╣рд╛рд▓, рдереНрд░реЗрд╢реЛрд▓реНрдб рддрд╛рдкрдорд╛рди 32 рд╣реИ, рдЙрдЪреНрдЪ рддрд╛рдкрдорд╛рди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдШрдВрдЯреЗ рдореЗрдВ рдПрдХ рдмрд╛рд░ рдПрд╕рдПрдордПрд╕ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдЧрд┐рд░ рдирд╣реАрдВ рдЬрд╛рддрд╛ред рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП

рдкреАрдПрд╕ рдпреЛрдЬрдирд╛рдПрдВ рдПрдХ рдирд┐рдпрдВрддреНрд░рд┐рдд рд╣реАрдЯрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╡реЙрдЯрд░рд┐рдВрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдЙрди рд╕рднреА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдЬреЛ рдЕрдВрдд рддрдХ рдкрдврд╝рддреЗ рд╣реИрдВред

Source: https://habr.com/ru/post/hi400499/


All Articles