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.
Name | Teile | Preis |
---|---|---|
Amazon Dash Button | ¥500 | |
Raspberry Pi 3 | ¥4,800 | |
Micro Servo SG92G | ¥500 | |
Arduino Uno | ¥3,240 |
Der Servomotor und der Amazon Dash Button sind vorerst mit einem Bindeband befestigt.
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
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 zunächst die erforderlichen Bibliotheken auf der Raspberry Pi-Seite.
$ sudo apt-get install python-pip
$ sudo pip install pyserial
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
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
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.
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 Im Fall von wird es zu "B0043TXMWM".
Installieren Sie Bottlenose und BeautifulSoup mit pip
$ sudo pip install bottlenose
$ sudo pip install BeautifulSoup
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.
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
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 ...
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