Jusqu'à la dernière fois, la mesure automatique est devenue possible en tenant compte des erreurs. Cette fois, nous utiliserons l'API de slack pour notifier à slack la fin de la mesure. Même avec d'autres outils de chat (Discord, Line, etc.), le flux d'acquisition de jetons et d'envoi de requêtes à l'API est le même, je pense donc qu'il peut être utilisé à diverses fins.
Conda install pySerial dans (2)Le package python slackclient ne fonctionnait pas dans mon environnement
En référence à
Vous pouvez envoyer n'importe quel message à n'importe quel canal à l'aide de l'API slack. Ce qui doit être changé dans le code ci-dessous
Vous devriez pouvoir l'envoyer uniquement
Comment ajouter une mention
Veuillez consulter ce site
import serial
import time
import pandas as pd
##Spécification constante
MAX = 40000
COMampere = "COM10"
COMpulse = "COM9"
bitRate = 9600
##Initialisation variable
pulse = 0
ampere_list = []
pulse_list = []
ampere_average_list =[]
##Mouvement d'origine du dos(Initialisation)
ser = serial.Serial(COMsigma, bitRate, timeout=0.1)
ser.write(b"H:2-\r\n")
# time.sleep(0.1)
# print(ser.read_all())
ser.close()
import requests
class SlackDriver:
    def __init__(self, _token):
        self._token = _token  # api_token
        self._headers = {'Content-Type': 'application/json'}
    def send_message(self, message, channel):
        params = {"token": self._token, "channel": channel, "text": message}
        r = requests.get('https://slack.com/api/chat.postMessage',
                          headers=self._headers,
                          params=params)
        print("return ", r.json())
token = 'xxxx-oooooooooooo-000000000000-hogehoge' #Veuillez utiliser le jeton que vous avez obtenu cette partie
slack = SlackDriver(token)
#Commencer la mesure
try:
    while 1:
        if pulse >= MAX:
            ##Termine l'instruction while lorsque la position atteint MAX
            break
        if pulse ==2000:
            slack.send_message("<@IDhogehoge>1000 c'est fini", "#bot-test") #L'ID obtenu est<>Veuillez joindre
        if pulse ==30000:
            slack.send_message("<@IDhogehoge>15000 c'est fini", "#bot-test")
        ##Enregistrer les informations de localisation actuelles
        pulse_list.append(pulse/2)
        ##Mesurer le courant(La valeur à cette position est la moyenne de 5 fois.)
        for i in range(5):
            ser = serial.Serial(COMampere,bitRate,timeout=0.1)
            ser.write(b"F5, R0,PR2\r\n")
            time.sleep(1)
            ser.write(b"MD?\r\n")
            time.sleep(1)
            tmp = ser.read_all()
            #Ignorer s'il n'y a pas de courant
            if len(tmp)== 0:
                ser.close()
                continue
            ampere = float(tmp.split()[2])
            ampere_average_list.append(ampere)
            time.sleep(1)
            ser.close()
        ##Courant et impulsion(position)Lister
        ampere_list.append(sum(ampere_average_list)/len(ampere_average_list))
        ampere_average_list = []
        ##Déplacer la table optique
        pulse += 1000
        position = "A:2+P"+str(pulse)+"\r\n"
        ser = serial.Serial(COMpulse,bitRate,timeout=0.1)
        ser.write(bytes(position, 'UTF-8'))
        time.sleep(1)
        ser.write(b"G:\r\n")
        ser.close()
    ##Transformez la liste en un dataframe
    print(ampere_list)
    print(pulse_list)
    df = pd.DataFrame({'ampere(A)':ampere_list,'pulse':pulse_list})
    def pulseToMilliMeter(pulse):
        return pulse*0.006
    df["position(mm)"] = df["pulse"].map(pulseToMilliMeter)
    df.to_csv('./csv/result.csv',index=False)
    plt.figure()
    df.plot(x='position(mm)',y='ampere(A)',marker='o')
    plt.savefig('./img/sample.png')
    plt.close('all')
except IndexError:
    ser.close()
    slack.send_message("<@IDhogehoge>La mesure a échoué", "#bot-test")
#Je veux avertir Slack
slack.send_message("<@IDhogehoge>La mesure est terminée", "#bot-test")
##Initialisation variable
pulse = 0
ampere_list = []
pulse_list = []
ampere_average_list =[]
##Mouvement d'origine du dos(Initialisation)
ser = serial.Serial(COMpulse, bitRate, timeout=0.1)
ser.write(b"H:2-\r\n")
time.sleep(0.1)
print(ser.read_all())
ser.close()
        Recommended Posts