Bis zum letzten Mal ist eine automatische Messung unter Berücksichtigung von Fehlern möglich geworden. Dieses Mal verwenden wir die API von slack, um slack über das Ende der Messung zu informieren. Selbst mit anderen Chat-Tools (Discord, Line usw.) ist der Ablauf des Erfassens von Token und des Sendens von Anforderungen an die API derselbe, sodass ich denke, dass er für verschiedene Zwecke verwendet werden kann.
Conda install
pySerial in (2)Das Python Slackclient-Paket hat in meiner Umgebung nicht funktioniert
Mit Bezug auf
Sie können jede Nachricht mit der Slack-API an jeden Kanal senden. Was sollte im folgenden Code geändert werden
Sie sollten es nur senden können
Wie man Erwähnung hinzufügt
Bitte beziehen Sie sich auf diese Seite
import serial
import time
import pandas as pd
##Konstante Spezifikation
MAX = 40000
COMampere = "COM10"
COMpulse = "COM9"
bitRate = 9600
##Variable Initialisierung
pulse = 0
ampere_list = []
pulse_list = []
ampere_average_list =[]
##Bewegung des hinteren Ursprungs(Initialisieren)
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' #Bitte benutzen Sie den Token, den Sie für diesen Teil erhalten haben
slack = SlackDriver(token)
#Messung starten
try:
while 1:
if pulse >= MAX:
##Beenden Sie die while-Anweisung, wenn die Position MAX erreicht
break
if pulse ==2000:
slack.send_message("<@IDhogehoge>1000 ist vorbei", "#bot-test") #Die erhaltene ID ist<>Bitte beilegen
if pulse ==30000:
slack.send_message("<@IDhogehoge>15000 ist vorbei", "#bot-test")
##Aktuelle Standortinformationen aufzeichnen
pulse_list.append(pulse/2)
##Den Strom messen(Der Wert an dieser Position ist der Durchschnitt von 5 mal.)
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()
#Überspringen, wenn kein Strom vorhanden ist
if len(tmp)== 0:
ser.close()
continue
ampere = float(tmp.split()[2])
ampere_average_list.append(ampere)
time.sleep(1)
ser.close()
##Strom und Puls(Position)Auflisten
ampere_list.append(sum(ampere_average_list)/len(ampere_average_list))
ampere_average_list = []
##Bewegen Sie den optischen Tisch
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()
##Verwandeln Sie die Liste in einen Datenrahmen
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>Die Messung ist fehlgeschlagen", "#bot-test")
#Ich möchte Slack benachrichtigen
slack.send_message("<@IDhogehoge>Die Messung ist beendet", "#bot-test")
##Variable Initialisierung
pulse = 0
ampere_list = []
pulse_list = []
ampere_average_list =[]
##Bewegung des hinteren Ursprungs(Initialisieren)
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