Utiliser l’API locale d’un LaMetric Time avec Python

Pour ce premier article un peu plus technique, nous allons nous attaquer au LaMetric Time.

Le LaMetric est une sorte de radio réveil 2.0. Il a l’avantage d’être connecté au wifi et peut donc aller chercher des informations ou en recevoir.

J’en ai fait l’acquisition très récemment. Je l’utilise au bureau pour recevoir des alertes en cas de panne serveur ou tout autre type d’évènement similaire.

Le LaMetric fonctionne avec deux types d’API. Celle locale pour envoyer des notifications directement à l’appareil et celle connectée qui est utile pour les applications distribuées.

Nous allons donc utiliser l’API locale. Après quelques recherches sur le net, on s’aperçoit rapidement qu’il n’existe aucun code d’exemple pour le LaMetric en Python. Il y a bien un module (non officiel) qui existe mais il n’est pas prévu pour l’API locale.

Voila donc un code d’exemple avec le module requests

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import requests

LaMetricApiKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx"

data = {
    "priority": "warning",
    "icon_type": "none",
    "lifeTime": 120000,
    "model": {
        "frames": [
                {
                    "icon": 20907,
                    "text": "support"
                },
                {
                    "text": "Nouvelle demande de support !",
                }
            ],
        "sound": {
            "category" : "notifications",
            "id": "positive6",
            "repeat": 1
            },
            "cycles": 3
        }
    }

r = requests.post('https://192.168.1.100:4343/api/v2/device/notifications', auth=('dev', LaMetricApiKey), verify=False, json=data)

J’ai volontairement utilisé une connexion sécurisée (HTTPS) il est donc possible qu’un avertissement s’affiche dans la console. Cela est du au fait que le LaMetric possède un certificat auto signé.

Pour enlever le message, vous pouvez ajouter ces lignes au début de votre code:

1
2
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

Ou sinon passer par du simple HTTP en remplaçant la requête (ce que je ne conseille pas, même sur un réseau local) :

1
r = requests.post('http://192.168.1.100:8080/api/v2/device/notifications', auth=('dev', LaMetricApiKey), json=data)

Bien sur, il faut bien penser à changer l’adresse IP et la clef API.

Je posterais peut être d’autres exemples mais jusqu’ici je vous laisse vous débrouiller avec les documentations.
Requests : http://docs.python-requests.org/en/master/
API LaMetric: https://lametric-documentation.readthedocs.io/en/latest/guides/first-steps/first-local-notification.html