Accédez à l'API Web avec Python et enregistrez / acquérez des données IoT (dweet.io, Requests, HTTPie)

Utilisons WebAPI pour utiliser dweet.io, un service de messagerie de données IoT. L'image ci-dessous est le Tableau de bord de surveillance de l'état de l'usine créé à l'aide des services de Raspberry Pi et dweet.io. (Les détails seront introduits dans un autre article)

スクリーンショット 2017-05-08 12.44.21.png

Méthode 1. Accédez à l'API Web avec la commande Terminal

Même si vous laissez python le faire à la fin, il est pratique de pouvoir vérifier rapidement l'opération avec le terminal.

Installez HTTPie

mac


$ brew install httpie

C'est une bibliothèque de plaques de fer avec 30 000 étoiles Github! Les faits saillants rendent l'en-tête de réponse très facile à voir.

httpie.png

Une fois installé, vous pouvez utiliser la méthode HTTP avec la commande http. (La valeur par défaut est la méthode GET)

Enregistrement des données

dweet.io peut facilement enregistrer des données en lançant une requête de ? Key = value à l'URL de https://dweet.io/dweet/for/ <id>. (Vous pouvez également enregistrer des données JSON en utilisant la méthode POST (décrite plus loin))

# -v Demande facultative_l'en-tête peut également être sorti
$ http https://dweet.io/dweet/for/my-thing-name?hello=world

réponse de httpie_sortie d'en-tête


HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json
Date: Mon, 08 May 2017 03:13:38 GMT
Transfer-Encoding: chunked

{
    "by": "dweeting",
    "the": "dweet",
    "this": "succeeded",
    "with": {
        "content": {
            "hello": "world"
        },
        "created": "2017-05-08T03:13:38.230Z",
        "thing": "my-thing-name",
        "transaction": "54f19ae4-3428-4ea3-8275-1a77d49a11a0"
    }
}

Obtenez des données

dweet.io peut obtenir des données au format JSON en accédant à l'URL de https://dweet.io/get/latest/dweet/for/ <id> avec la méthode GET.

$ http https://dweet.io/get/latest/dweet/for/my-thing-name

réponse de httpie_sortie d'en-tête 2


HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json
Date: Mon, 08 May 2017 03:13:55 GMT
Transfer-Encoding: chunked

{
    "by": "getting",
    "the": "dweets",
    "this": "succeeded",
    "with": [
        {
            "content": {
                "hello": "world"
            },
            "created": "2017-05-08T03:13:38.230Z",
            "thing": "my-thing-name"
        }
    ]
}

Méthode 2. Accéder à l'API Web à partir de Python

Installez Requests

$ pip install requests

Requests est une bibliothèque HTTP conviviale pour Python avec une API très intuitive. C'est aussi une bibliothèque de 25000 et plaques de fer par GitHub Stars.

L'utilisation de la bibliothèque Requests est la suivante. Official quickstart est un document très cohérent et recommandé.

import requests

#get
r = requests.get('url')
#get:Avec requête
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get('url', params=payload)

#post
r = requests.post('url', data = {'key':'value'})

#cookies
r = requests.get('url')
cookie = r.cookies['cookie_name']
r = requests.get('url', cookies=cookie)

#response
print(r.url) 
print(r.status_code)
print(r.headers)
print(r.text)
print(r.content)
print(r.json())

Que se passe-t-il si l'url est incorrecte:

Enregistrement / acquisition de données

Vous pouvez enregistrer / acquérir des données dans dweet.io en utilisant les requêtes comme suit.

import requests
import pprint
import time

#Enregistrement des données: post
for i in range(10):
  r = requests.post('https://dweet.io/dweet/for/iot-data', data = {'temp':'23', 'humid':'40'})
  time.sleep(1)

#Obtenez des données: get
r = requests.get("https://dweet.io/get/latest/dweet/for/iot-data")
pprint.pprint(r.json())

résultat de sortie du terminal


{u'by': u'getting',
 u'the': u'dweets',
 u'this': u'succeeded',
 u'with': [{u'content': {u'humid': 40, u'temp': 23},
            u'created': u'2017-05-08T04:04:18.887Z',
            u'thing': u'iot-data'}]}

Référence: http://qiita.com/ogawatachi/items/d178bce8a9e60b5d459b

Recommended Posts

Accédez à l'API Web avec Python et enregistrez / acquérez des données IoT (dweet.io, Requests, HTTPie)
Construction de pipeline de données avec Python et Luigi
[Suite] Essayez l'accès au registre PLC avec Python
Enregistrez des tickets avec l'API de Redmine en utilisant des requêtes Python
Étudiez l'échange de données Java et Python avec Apache Arrow
Obtenir des données de la base de données via ODBC avec Python (Access)
Analyse de données avec python 2
Réessayer avec des requêtes python
Analyse de données avec Python
Créez des applications, enregistrez des données et partagez-les avec un seul e-mail
Débarrassez-vous des données sales avec Python et les expressions régulières
Résolvez le livre en spirale (algorithme et structure de données) avec python!
Obtenez des données supplémentaires vers LDAP avec python (Writer et Reader)
Envoyez et recevez des données avec MQTT via Watson IoT Platform
Exemple de données créées avec python
Programmation avec Python et Tkinter
Chiffrement et déchiffrement avec Python
Python et matériel - Utilisation de RS232C avec Python -
Obtenez des données Youtube avec python
python avec pyenv et venv
Accédez à Google Drive avec Python
Fonctionne avec Python et R
Lire des données json avec python
[AWS] Recherchez et acquérez les données nécessaires à partir des fichiers S3 avec S3 Select
Obtenez des données de VPS MySQL avec Python 3 et SQL Alchemy
L'accès https via un proxy dans le scraping Web Python était facile avec les demandes
Déplacer les données vers LDAP avec python Change / Delete (Writer et Reader)