[PYTHON] Home Hack zum automatischen Kauf, wenn es mit Amazon Dash Button und Raspberry Pi billiger wird

Was ich gemacht habe

Amazon Dash Button wurde veröffentlicht und verschiedene Leute hacken es, aber der Schwachpunkt dieses Geräts ist, dass es eine einfache Benutzeroberfläche ist, die einen Knopf drückt, daher weiß ich nicht, wie viel ...

Die Amazon-Preise ändern sich häufig, deshalb möchten Sie so günstig wie möglich kaufen, oder? Also habe ich versucht, den Amazon Dash Button physisch zu hacken und ein Gerät zu erstellen, das automatisch gekauft wird, wenn der Preis auf den angegebenen Betrag fällt.

タイトルなし.gif

Material

Name Teile Preis
Amazon Dash Button image ¥500
Raspberry Pi 3 image ¥4,800
Micro Servo SG92G ¥500
Arduino Uno image ¥3,240

Der Servomotor und der Amazon Dash Button sind vorerst mit einem Bindeband befestigt.

Lassen Sie den Servomotor mit Arduino laufen

Ich hatte nicht genügend Teile, um eine Verbindung zum GPIO von Raspberry Pi herzustellen, daher ist dies ein wenig problematisch, aber ich habe mich entschieden, den Servomotor über Arduino zu betreiben. Arduino wird nicht benötigt, wenn Sie richtig vorbereitet sind.

Wenn ich durch serielle Kommunikation "A" erhalte, bewege ich den Servomotor ein wenig und drücke die Amazon Dash-Taste.

#include <Servo.h> 
const int pin = 8;
Servo myservo;

void setup() {
  myservo.attach(pin);
  Serial.begin(9600);
}

void loop() {
  if (Serial.available() > 0) {
    byte res = Serial.read();
    if (res == 'A') {
      myservo.write(20);
      delay(500);
    }
  } else {
    int val = myservo.read();
    if (val != 0) {
      myservo.write(0);
    }
  }
}

Wenn ich tatsächlich "A" vom seriellen Monitor der Arduino IDE sende Der Servomotor funktioniert so

タイトルなし.gif

Serielle Kommunikation mit Raspberry Pi und Arduino

Dies ist das Verfahren, um den Raspberry Pi und Arduino mit einem USB-Kabel zu verbinden und den Servomotor über serielle Kommunikation zu betreiben.

Installieren Sie pyserial mit pip

Installieren Sie zunächst die erforderlichen Bibliotheken auf der Raspberry Pi-Seite.

$ sudo apt-get install python-pip
$ sudo pip install pyserial

Überprüfen Sie den Arduino-Gerätenamen mit dmesg

Verbinden Sie den Raspberry Pi und Arduino mit einem USB-Kabel und überprüfen Sie die Verbindung. Wenn Sie den Befehl eingeben, wird er als Strohhalm angezeigt. Sie können jedoch bestätigen, dass er mit dem Gerätenamen "ttyACM0" in dem Bereich verbunden ist, in dem "Arduino" angezeigt wird.

$ dmesg
[ 3401.469507] usb 1-1.5: new full-speed USB device number 4 using dwc_otg
[ 3401.583400] usb 1-1.5: New USB device found, idVendor=2341, idProduct=0043
[ 3401.583420] usb 1-1.5: New USB device strings: Mfr=1, Product=2, SerialNumber=220
[ 3401.583433] usb 1-1.5: Manufacturer: Arduino (www.arduino.cc)
[ 3401.583446] usb 1-1.5: SerialNumber: 554313134383513061F0
[ 3401.601770] cdc_acm 1-1.5:1.0: ttyACM0: USB ACM device

Versuchen Sie es mit serieller Kommunikation

Stellen Sie für serial.Serial den zuvor erhaltenen Gerätenamen und den in Arduino angegebenen Wert ein.

dashpush.py


import serial
import time

ser = serial.Serial('/dev/ttyACM0', 9600)
time.sleep(3)
ser.write(b'A')
ser.close()

Versuche dich zu bewegen

$ sudo python dashpush.py

Wenn der Servomotor mit allen angeschlossenen Geräten funktioniert, können Sie loslegen

Stellen Sie fest, ob der Artikel billig ist

Verwenden Sie die Amazon Product Advertising API, um den Preis des Produkts und zu ermitteln Wenn es billiger als der festgelegte Betrag ist, machen wir es so, dass Sie es durch Drücken der Taste kaufen können.

Holen Sie sich ASIN

Ruft die ASIN des Produktsatzes in der Amazon Dash-Schaltfläche ab. Kopieren Sie es, da es in den Produktinformationen auf der Seite enthalten ist

Dieses Suntory natürliche Wasser image Im Fall von wird es zu "B0043TXMWM".

Bibliotheksinstallation

Installieren Sie Bottlenose und BeautifulSoup mit pip

$ sudo pip install bottlenose
$ sudo pip install BeautifulSoup

Produktinformationen erhalten und kaufen

Analysieren Sie das XML der Amazon-Produktinformationen, die Sie mit "Bottlenose" erhalten haben, mit "Beautiful Soup" Wenn der Preis für Wasser weniger als 1200 Yen beträgt, werde ich die serielle Kommunikation werfen und sie kaufen.

dashpush.py


import serial
import time
from bottlenose import api
from BeautifulSoup import BeautifulStoneSoup

AMAZON_ACCESS_KEY_ID = "xxxxxxxxxx"
AMAZON_SECRET_KEY = "xxxxxxxxxx"
AMAZON_ASSOC_TAG = "corelar-22"
ASIN = "B0043TXMWM"
PURCHASE_PRICE = 1200

# get api
amazon = api.Amazon(AMAZON_ACCESS_KEY_ID, AMAZON_SECRET_KEY, AMAZON_ASSOC_TAG, Region="JP")
res = amazon.ItemLookup(ItemId=ASIN, ResponseGroup="Offers")

# xml parse
soup = BeautifulStoneSoup(res)
price = soup.find("item").find("offer").find("price").find("amount").text

# push button
if int(price) < PURCHASE_PRICE:
    ser = serial.Serial('/dev/ttyACM0', 9600)
    time.sleep(3)
    ser.write(b'A')
    ser.close()

Ich konnte es kaufen. IMG_1108.PNG

Steuern Sie Ihren Einkauf mit Ihrem Smartphone

Zu diesem Preis kaufen wir unabhängig vom Lagerstatus immer auf unbestimmte Zeit. Ermöglicht das Ändern des Schwellenwerts für die Menge der von Ihrem Smartphone gekauften Waren.

Zum Beispiel

Wenn Sie eine API auf AWS Lambda erstellen, diesen Betrag über die iOS-App aktualisieren und über Raspberry Pi lesbar machen, müssen Sie sich keine Gedanken über kontinuierliche Einkäufe machen. Wenn die Taste gedrückt wird, kehren Sie einfach von Raspberry Pi zu 0 Yen zurück.

Verfolgen Sie die Produktpreise nacheinander ** Kaufen Sie, wenn es das günstigste im letzten Monat ist! Sie können auch so etwas wie ** tun

Auf cron einstellen und regelmäßig ausführen

Diesmal habe ich alle 30 Minuten nachgesehen.

$ crontab -e

Bei Raspbian wird beim ersten Start der Editor-Auswahlbildschirm angezeigt. Wenn Sie die Eingabetaste drücken, ohne zu lesen, wird "Nano" ausgewählt und es bleibt hängen Sie können mit vim erneut auswählen, indem Sie auf den Befehl select-editor klicken

crontab


*/30 * * * * sudo python dashpush.py > /dev/null 2>&1

Der Rest bleibt übrig ...

Ende

Adventskalender war gerade noch rechtzeitig ... Bisher gab es keine Kauf-API, aber ich bin froh, dass ich sie endlich kaufen kann.

Es war eine Anwendung vor Tweaking Pokemon GO Plus, wurde jedoch zu einem völlig vernachlässigten Gerät.

Amazon hat sich auf AWS Greengrass und AWS IoT Button konzentriert. Und Schließlich wird Raspberry Pi Zero nächstes Jahr in Japan verkauft. Ich möchte, dass Japan so schnell wie möglich zur offiziellen Version kommt.

Recommended Posts

Home Hack zum automatischen Kauf, wenn es mit Amazon Dash Button und Raspberry Pi billiger wird
Einfache Einführung in Home Hack mit Raspberry Pi und discord.py
Verwenden Sie Python auf Raspberry Pi 3, um die LED zu beleuchten, wenn es dunkel wird!
Einfaches IoT, um mit Raspeye und MESH zu beginnen
Ich habe meine Qiita-Post-Daten automatisch mit Raspberry Pi gesammelt und regelmäßig mit Slack benachrichtigt
Ich habe den Amazon Dash Button gehackt und mich bei Salesforce registriert
Messen und vergleichen Sie Temperaturen mit Raspberry Pi und generieren Sie automatisch Diagramme
Messen Sie Temperatur, Luftfeuchtigkeit usw. mit SensorTag und senden Sie es über Raspberry Pi 3 an Ambient, um es Teil 2 grafisch darzustellen
Ein Memorandum beim automatischen Erwerb mit Selen
Machen Sie ein Thermometer mit Raspberry Pi und machen Sie es im Browser Teil 4 sichtbar
Lesen Sie die Daten des NFC-Lesegeräts, das mit Python an Raspberry Pi 3 angeschlossen ist, und senden Sie sie mit OSC an openFrameworks
Hinweis: Ich möchte die Heimautomation mit Home Assistant + Raspberry Pi + Sensor Nr. 1 durchführen
Erfassen Sie den Sensorwert von Grove Pi + mit Raspberry Pi und speichern Sie ihn in Kintone
Haustierüberwachung mit Rekognition und Raspberry pi
Machen Sie ein Thermometer mit Raspberry Pi und machen Sie es im Browser Teil 3 sichtbar
Ich habe versucht, mit Raspeye + Tact Switch eine Schaltfläche für Slack zu erstellen