Amazon Dash Button a été publié et diverses personnes le piratent, mais le point faible de cet appareil est qu'il s'agit d'une simple interface utilisateur qui appuie sur un bouton, donc je ne connais pas le montant ...
Les prix d'Amazon changent fréquemment, vous voulez donc acheter le moins cher possible, non? J'ai donc essayé de pirater physiquement le bouton Amazon Dash et de créer un appareil qui achètera automatiquement lorsque le prix descendra au montant spécifié.
Nom | les pièces | prix |
---|---|---|
Amazon Dash Button | ¥500 | |
Raspberry Pi 3 | ¥4,800 | |
Micro Servo SG92G | ¥500 | |
Arduino Uno | ¥3,240 |
Pour le moment, le servomoteur et le bouton Amazon Dash sont fixés avec une bande de liaison.
Je n'avais pas assez de pièces pour me connecter au GPIO de Raspberry Pi, donc c'est un peu gênant, mais j'ai décidé de faire fonctionner le servomoteur via Arduino. Arduino n'est pas nécessaire si vous êtes bien préparé.
Lorsque «A» est reçu par communication série, le servomoteur est légèrement déplacé et le bouton Amazon Dash est enfoncé.
#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);
}
}
}
Quand j'envoie réellement «A» depuis le moniteur série de l'IDE Arduino Le servomoteur fonctionne comme ça
C'est la procédure pour connecter le Raspberry Pi et Arduino avec un câble USB et faire fonctionner le servomoteur via une communication série.
Tout d'abord, installez les bibliothèques nécessaires côté Raspberry Pi.
$ sudo apt-get install python-pip
$ sudo pip install pyserial
dmesg
Connectez le Raspberry Pi et Arduino avec un câble USB et vérifiez la connexion.
Lorsque vous tapez la commande, elle sera affichée sous forme de paille, mais vous pouvez confirmer qu'elle est connectée avec le nom de périphérique ttyACM0
autour de l'endroit où ʻArduino` est affiché.
$ 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
Pour serial.Serial
, définissez le nom du périphérique obtenu précédemment et la valeur spécifiée dans Arduino.
dashpush.py
import serial
import time
ser = serial.Serial('/dev/ttyACM0', 9600)
time.sleep(3)
ser.write(b'A')
ser.close()
Essayez de bouger
$ sudo python dashpush.py
Si le servomoteur fonctionne avec tout ce qui est connecté, vous êtes prêt à partir
Utilisez l 'API Amazon Product Advertising pour obtenir le prix du produit et S'il est moins cher que le montant fixé, nous le ferons pour que vous puissiez l'acheter en appuyant sur le bouton.
Obtient l'ASIN du produit défini dans le bouton Amazon Dash. Copiez-le car il se trouve dans les informations sur le produit sur la page
Cette eau naturelle Suntory Dans le cas de, il devient «B0043TXMWM».
Installez bottlenose et BeautifulSoup avec pip
$ sudo pip install bottlenose
$ sudo pip install BeautifulSoup
Analyser le XML des informations produit Amazon obtenues avec «bottlenose» avec «Beautiful Soup» Si le prix de l'eau est inférieur à 1200 yens, je lancerai la communication série et l'achèterai.
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()
J'ai pu l'acheter.
À ce rythme, nous achèterons toujours indéfiniment quel que soit l'état du stock. Vous permet de modifier le seuil de quantité de biens achetés depuis votre smartphone.
Par exemple
Si vous créez une API sur AWS Lambda, mettez à jour ce montant à partir de l'application iOS et rendez-le lisible à partir de Raspberry Pi, vous n'aurez pas à vous soucier des achats continus.
Lorsque vous appuyez sur le bouton, revenez simplement à 0 yen depuis Raspberry Pi
.
Suivez les prix des produits un par un ** Achetez quand c'est le moins cher du mois dernier! Vous pouvez également faire quelque chose comme **
Cette fois, j'ai vérifié une fois toutes les 30 minutes.
$ crontab -e
Dans le cas de raspbian, l'écran de sélection de l'éditeur est affiché au premier démarrage,
Si vous appuyez sur Entrée sans lire, nano
est sélectionné et il reste bloqué
Vous pouvez resélectionner avec vim en appuyant sur la commande select-editor
crontab
*/30 * * * * sudo python dashpush.py > /dev/null 2>&1
Le reste est laissé ...
Le calendrier de l'Avent était juste à temps ... Jusqu'à présent, il n'y avait pas d'API d'achat, mais je suis heureux de pouvoir enfin l'acheter.
C'était une application avant Tweaking Pokemon GO Plus, mais c'est devenu un appareil complètement négligé.
Amazon s'est concentré sur AWS Greengrass et AWS IoT Button. Et Enfin, Raspberry Pi Zero sera vendu au Japon l'année prochaine, Je veux que le Japon arrive à la version officielle dès que possible.
Recommended Posts