[PYTHON] Ich habe mit TWE-Lite-2525A einen Öffnungs- / Schließsensor (Twitter-Link) erstellt

Ich habe versucht, mit TWE-Lite-2525A einen Sensor zum Öffnen / Schließen zu erstellen

In den Sommerferien habe ich mich der Herausforderung der elektronischen Arbeit gestellt. Dies ist Qiitas erster Beitrag.

Dieses Ziel

Erkennt Vibrationen (Beschleunigungen) mithilfe eines kleinen IOT-Sensors mit Beschleunigung (TWE-LITE-2525A) und POSTs zur Twitter-API.

DSC_0448.png

Was ich diesmal gekauft habe

Online bei Akizuki Electronics gekauft. Ich kam in ungefähr 2 Tagen an.

  1. Lithiumbatterie CR2032

Andere Entwicklungsumgebung:

- Windows10(64bit)

1. Herstellung von TWE-LITE-2525A

Wenn es so bleibt, wie es zum Zeitpunkt des Kaufs war, sind die von Twilight 2525 gesendeten Daten schwer zu verarbeiten. Schreiben Sie die Einstellungen von MONOSTICK und TWE-LITE-2525A neu.

Zum Umschreiben verwende ich eine Funktion namens "OTA". Es ist ein Mechanismus, um "die Firmware auf die USB-Seite (Empfänger: Monostick-Seite) zu schreiben und sie drahtlos von der USB-Seite auf die Sensorseite zu überschreiben". Da die USB-Seite danach jedoch als Empfänger verwendet wird, muss die Firmware für den Empfänger erneut überschrieben werden. Es scheint eine Abkürzung für # Over The Air zu sein.

Da es ein offizielles Video gibt, ist es einfach, sich einen Überblick zu verschaffen, indem Sie sich das Folgende ansehen.  https://www.youtube.com/watch?v=uq_pkrvypBA

Ich verstehe den Ablauf, aber wie schreibt man ihn tatsächlich um? Die Informationen auf der offiziellen Website waren unübersichtlich, und ich war ein wenig süchtig danach, sie zu verschieben.

1-1. Vorbereitung der Daten zum Überschreiben

DL die "Samp_Monitor-Anwendung" aus dem Folgenden.  https://mono-wireless.com/jp/products/TWE-Lite-2525A/firmware_update.html

1.Samp_Monitor_EndDevice_Input_JN5164_CNFMST_1_6_1.bin  2.Samp_Monitor_EndDevice_Input_JN5164_LITE2525A_1_6_1.bin  3.Samp_Monitor_Parent_JN5164_1_6_1.bin

Die ZIP-Datei, die DL war, enthält die oben genannten drei: 1 wird für den auf der Sensorseite installierten Behälter und 3 für den auf der USB-Seite installierten Behälter verwendet.

1-2. Farm schreiben auf USB

DL / Installieren Sie "TWE-LITE Programmer für Windows" wie folgt.  http://mono-wireless.com/jp/tech/misc/LiteProg/

Verwenden Sie diese Anwendung, um verschiedene Firmware auf den Monostick auf der USB-Seite zu schreiben. 3 monopg.png

Bitte beachten Sie, dass MONOSTICK, wenn es in einem anderen Fenster erkannt wird, von dieser Anwendung nicht erkannt wird. Wenn es nicht erkannt wird, ist es möglicherweise besser, den USB anzuschließen / zu trennen.

1-3 Firmware auf die Sensorseite schreiben

Firmware zum Schreiben auf die Sensorseite mit dem oben genannten TWE-LITE-Programmiergerät Schreiben Sie (1.Samp_Monitor_EndDevice_Input_JN5164_CNFMST_1_6_1.bin) auf USB.

Wechseln Sie zu einer beliebigen Einstellung wie im Video. (Vergessen Sie nicht, die Einstellungen mit "S" zu speichern) Einzelheiten wie die Einstellung der seriellen Verbindung und der Baudrate in TeraTerm finden Sie separat beim Beamten.

Siehe diese Abbildung für diese Einstellung sensor.png

Schalten Sie nach Abschluss der Einstellungen die Lithiumversorgung ein, während Sie den Sensor in der Nähe von USB halten. Schreiben Sie die Firmware auf der Sensorseite neu.

1-4. Schreiben der Farm auf die USB-Seite

Firmware zum Schreiben auf die USB-Seite mit dem TWE-LITE-Programmiergerät Schreiben Sie (3.Samp_Monitor_Parent_JN5164_1_6_1.bin) auf USB.

Wechseln Sie zu einer beliebigen Einstellung wie im Video. (Vergessen Sie nicht, die Einstellungen mit "S" zu speichern)

Siehe diese Abbildung für diese Einstellung usb.png

Die Einstellung ist auf der USB-Seite so wie sie ist abgeschlossen.

1-5. Funktionsprüfung

Wenn Sie von TeraTerm aus prüfen, können Sie verschiedene Werte mit key = value erhalten, wie unten gezeigt.

Wenn der Sensor nicht reagiert, wird nur das Tag "ts" ausgegeben. Sie können die x-Achse, die y-Achse und die z-Achse erhalten. (Ich sehe diesmal nicht so viel) kyacchi.png

2. Erstellen eines Programms auf der Python-Seite

Ich habe Python zum ersten Mal geschrieben. Bitte beziehen Sie sich separat auf die Installation von Python und die Erstellung der Twitter-API.

Die Integration von Twitter (OAuth) in Python verwendet request-oauthlib, eine OAuth-Authentifizierungsbibliothek für Python. Installieren Sie die Bibliothek wie folgt.

pip install requests requests_oauthlib

Erstellen Sie den Code anhand des Beispiels auf der Website von Monowire. Der gesamte Quellcode sieht so aus.

DetectionTweet.py


import serial
import requests
from requests_oauthlib import OAuth1Session
from datetime import datetime

CK = 'Write your Consumer Key'
CS = 'Write your Consumer Secret'
AT = 'Write your Access Token'
AS = 'Write your Accesss Token Secert'

#Öffnen Sie COM3
s = serial.Serial('COM3', 115200)

#URL zum Posten von Tweets
url = "https://api.twitter.com/1.1/statuses/update.json"

#Endlosschleife
while 1:
    data = s.readline()
    
    #Der Erste ":Beseitigen, abschütteln
    data = data[2:]
    spilitdatum = data.decode('utf-8').split(":")
    
    dict = {}
    
    # key,Als Wertetyp im Wörterbuch speichern
    for spilitdata in spilitdatum:
        
        s_key = spilitdata.split("=")[0]
        s_val = spilitdata.split("=")[1]
        
        dict[s_key] = s_val
    
    #Wenn vom Sensor keine Erkennung erfolgt, kann nur die Taste "ts" abgerufen werden
    #Hier als passender Schlüssel[id]Urteil von
    if ("id" in dict):
        
        #Tweet Körper
        #Wenn der Text von Twitter identisch ist, ist Status ein Duplikat und lautet 403 Status. Stellen Sie also die Uhrzeit ein.
        params = {"status": "Vibrate Detection! " + "\n" + datetime.now().strftime('%X')}
        
        #Post-by-POST-Methode mit OAuth-Authentifizierung
        twitter = OAuth1Session(CK, CS, AT, AS)
        req = twitter.post(url, params = params)

        #Überprüfen Sie die Antwort
        if req.status_code == 200:
            print ("OK: %s" % req)
        else:
            print ("Error: %s" % req.content)

s.close()

3. Bestätigung der Zusammenarbeit zwischen TWE-Lite-25252A und Twitter.

Es ist einfach, aber perfekt für die Tür. DSC_0450.png

Er twitterte wunderbar, indem er die Tür öffnete und schloss. cmd.png

Detect.png

Wenn dies unverändert bleibt, werden zu viele Erkennungen vorgenommen (einige Benachrichtigungen werden durch einmaliges Öffnen und Schließen der Tür gesendet). Es scheint notwendig zu sein, das Benachrichtigungs-Timing auf der drahtlosen Seite (Standard 0,5 Sekunden) zu reduzieren und Anpassungen auf der Python-Seite und der Server-Seite vorzunehmen. Ich benutze zu viele Twitter-Ressourcen ;;

Wenn Sie es anschließend mit AWS IoT oder MQTT kombinieren, wird der IOT-Service abgeschlossen. Wie wäre es mit elektronischer Arbeit für die Hausaufgaben Ihres Kindes in den Sommerferien?

Also schrieb ich zum ersten Mal Qiita, aber ich war müde.

Recommended Posts

Ich habe mit TWE-Lite-2525A einen Öffnungs- / Schließsensor (Twitter-Link) erstellt
Ich habe versucht, eine OCR-App mit PySimpleGUI zu erstellen
Ich habe versucht, mit Python + OpenCV eine Bildähnlichkeitsfunktion zu erstellen
Ich habe versucht, ein Objekt mit M2Det zu erkennen!
Ich habe versucht, Kanas handschriftliche Zeichenerkennung Teil 3/3 Zusammenarbeit mit der GUI mithilfe von Tkinter durchzuführen
Ich habe versucht, künstliches Perzeptron mit Python zu implementieren
Ich habe versucht, die alternative Klasse mit Tensorflow zu finden
Ich habe versucht, mit Python faker verschiedene "Dummy-Daten" zu erstellen
Ich habe versucht, die Benutzeroberfläche neben Python und Tkinter dreiäugig zu gestalten
Ich habe versucht, einen Artikel mit SQL Alchemy auf Wiki.js zu erstellen
[Python] Ich habe versucht, mit tkinter eine Anwendung zu erstellen, die das Gehalt anhand der Arbeitszeit berechnet
[5.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich habe versucht, eine Aktivität zu erstellen, die gemeinsam die Positionsinformationen festlegt
[2nd] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich habe versucht, Deep Learning mit Spark × Keras × Docker skalierbar zu machen
[3.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich habe versucht, mit Selenium und Python einen regelmäßigen Ausführungsprozess durchzuführen
Ich habe versucht, mit Python eine 2-Kanal-Post-Benachrichtigungsanwendung zu erstellen
Ich habe versucht, in 3 Jahren 5 Muster der Analysebasis zu erstellen
Ich habe versucht, eine ToDo-App mit einer Flasche mit Python zu erstellen
[4.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
[Python] Einfaches Japanisch ⇒ Ich habe versucht, ein englisches Übersetzungswerkzeug zu erstellen
[1.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich habe versucht, Jojo mit LSTM ein seltsames Zitat zu machen
Ich habe versucht, mich automatisch mit Selen bei Twitter anzumelden (RPA, Scraping)
Ich habe versucht, mit Go einen exklusiven Kontrollmechanismus zu erstellen
Ich habe versucht, eine Originalsprache "PPAP Script" zu erstellen, die PPAP (Pen Pineapple Appo Pen) mit Python abbildet
Ich habe versucht, eine SMS mit Twilio zu senden
Ich habe versucht, Autoencoder mit TensorFlow zu implementieren
Ich habe versucht, AutoEncoder mit TensorFlow zu visualisieren
Ich habe versucht, CVAE mit PyTorch zu implementieren
Ich möchte ein Automatisierungsprogramm erstellen!
Ich habe eine Web-API erstellt
Ich habe versucht, TSP mit QAOA zu lösen
Ich habe versucht, "Sakurai-san" LINE BOT mit API Gateway + Lambda zu erstellen
[AWS] [GCP] Ich habe versucht, die Verwendung von Cloud-Diensten mit Python zu vereinfachen
Ich habe versucht, mit Raspeye 4 (Python Edition) ein signalähnliches Signal zu erzeugen.
[Zaif] Ich habe versucht, den Handel mit virtuellen Währungen mit Python zu vereinfachen
Ich habe versucht, einen URL-Verkürzungsdienst mit AWS CDK serverlos zu machen
Ich habe versucht, nächstes Jahr mit AI vorherzusagen
Ich habe versucht, einen periodischen Prozess mit CentOS7, Selenium, Python und Chrome durchzuführen
Ich habe versucht, das Lesen von Dataset mit PyTorch zu implementieren
Ich habe versucht, lightGBM, xg Boost mit Boruta zu verwenden
Ich habe versucht, mit TF Learn die logische Operation zu lernen
Ich habe versucht, meinen eigenen Quellcode mit Chainer v2 alpha kompatibel zu machen
Ich habe versucht, GAN (mnist) mit Keras zu bewegen
Ich habe eine einfache Mail-Sendeanwendung mit tkinter von Python erstellt
Stellen Sie ein Überwachungsgerät mit einem Infrarotsensor her
Ich habe versucht, durch Schaben ein Bild zu bekommen
Ich habe versucht, mit OpenCV Bewegungen schnell zu erkennen
Als ich versuchte, eine VPC mit AWS CDK zu erstellen, konnte ich es aber nicht schaffen
Ich möchte ein Spiel mit Python machen
[Patentanalyse] Ich habe versucht, mit Python eine Patentkarte zu erstellen, ohne Geld auszugeben
Ich habe versucht, mit Raspberry Pi 4 eine Umgebung von Ubuntu 20.04 LTS + ROS2 zu erstellen
Ich habe eine Burgsuch-API mit Elasticsearch + Sudachi + Go + Echo erstellt
Ich möchte OREMO mit setParam sein!