REST Api
#1
Star 
Bonjour à tous,

J'ai pu enfin re-donner vie à mon lapin qui était bien triste et seul dans son armoire :-) Maintenant qu'il est de retour, prêt à jouer un mauvais tour, j'ai une forte envie de l'intégrer dans mon système domotique (tournant sous Home Assistant) afin de bénéficier d'alertes, de sons et de chorégraphies selon des règles définies. Gros quid, il n'y a pas de REST API ...

Heureusement, j'ai du temps à consacrer pour ce projet Big Grin Par contre, je n'ai jamais touché au Python, ni à Django, mais en soit, ce n'est que des langages parmi d'autres, et le Python n'est pas le plus compliqué Smile

Afin d'éviter de foncer tête baissée dans le code, j'aimerais d'abord exposer ma "vision" pour ensuite analyser le code et y intégrer mes modifications. N'hésitez à donner vos avis/remarques Smile

  1. Création d'un endpoint pour la REST API
    Je vais sûrement faire un /api/ sur lequel on pourra envoyer en GET/POST les actions à réaliser. Je commencerais probablement avec un endpoint unique mais que je pourrais "diviser" selon des actions précises.
  2. Sécurisation du endpoint
    Une étape bien indispensable si on veut éviter d'avoir un lapin zombie ! L'idéal serait d'avoir un page supplémentaire sur l'interface web pour y créer des jetons et les révoquers si besoins. Je devrais probablement stocker ceux-ci dans la base de données du lapin.
Je ne pense pas que ça soit "si" compliqué, l'interface sera du coup un service (nabapi ?), qui aura sa propre configuration.

Par contre, au niveau développement, il y a t'il moyen de simuler un lapin ? Je me vois mal déployer sur mon lapin pour réaliser les tests.

Bonne journée,

Gary Wes
Répondre
#2
Bonjour,
belle initiative, qui sea en effet un complément utile aux services Pynab actuels.

Je doute qu'il existe un simulateur de lapin. Il faudrait demander aux initiateurs du projet Tag:Tag:Tag...
Mais quel est le problème à déployer sur le lapin pour les tests? C'est sûr qu'il vaut mieux avoir un lapin de production et un lapin de test ;-)
Répondre
#3
(06-25-2020, 08:19 AM)flaurens a écrit : Mais quel est le problème à déployer sur le lapin pour les tests? C'est sûr qu'il vaut mieux avoir un lapin de production et un lapin de test ;-)

Hello flaurens,

Tu as répondu à la question Smile Je n'ai qu'un seul lapin, et vu qu'il est pudique, il n'aime pas se mettre trop souvent à nu Big Grin

Mais c'est surtout le gain de temps que cela peut apporter (vu qu'il n'y a pas de déploiements physiques)
Répondre
#4
Comme le lapin utilise un RPi zero et la distrib raspbian comme fondement, j'ai ressorti du placard un RPi 1 et ai flashé l'image sur une SD. À part quelques plaintes des pilotes, tout a démarré. Je voulais avoir un environnement de test pour une éventuelle PR sans casser mon lapin et je pense que ce sera suffisant (jusqu'à preuve du contraire).

Le seul hic est que la procédure pour passer à la branche master via un script suppose qu'il s'agit d'un vrai lapin et se lance dans une vérification liée aux pilotes et ça ne marche pas. Donc, il faut garder à l'esprit que ce genre d'environnement est vraiment purement pour le test du code via les changements du repo git.

Et sans RPi à disposition, il existe peut-être un simulateur de RPi pour ordinateur??
Répondre
#5
Il y a une API REST développée avec NabBlockly.
C'est décrit ici :

https://www.tagtagtag.fr/forum/showthrea...d=57#pid57
Répondre
#6
(06-25-2020, 01:05 PM)Paul a écrit : Il y a une API REST développée avec NabBlockly.
Ah... OK. C'était un peu "planqué" dans le forum fermé 'Lapins de Noël...
(06-25-2020, 01:05 PM)Paul a écrit : Cette API n'est pas documentée (et susceptible de changer) mais néanmoins très simple.
Cela vaudrait sans doute le coup de documenter un peu cette API dans le repo sur GitHub.

(06-25-2020, 11:46 AM)Commit-La-Grenouille a écrit : Et sans RPi à disposition, il existe peut-être un simulateur de RPi pour ordinateur??
Sans parler de simulation ll y a la distribution Raspian "Desktop": Raspberry Pi Desktop.
Je suppose que cela devrait fonctionner pour tout ce qui est "haut" niveau (Python, Django, PostgrepSQL), mais cela va bien coincer au niveau des pilotes, à moins de les bouchonner...
Répondre
#7
J'admets que malgré quelques recherches, je j'ai pas trouvé directement l'API de Nadblocky, et vu la possibilité de son évolution future, c'est peut-être plus "risqué" de l'utiliser dans des projets domotiques. Et puis, l'avantage étant que je peux me faire la main sur la création de services pour mon lapin Smile

@Paul, j'ai quelques questions à ce sujet :

- J'ai remarqué qu'il n'y a quasi pas de communications entre la vue et le service. D'où le passage par une base de données pour déclencher les prochains événements ?

- Il y a régulièrement la fonction signal_daemon qui est appelée. Est-ce pour "relancer" le service ?
Répondre
#8
(06-26-2020, 08:54 AM)Gary Wes a écrit : @Paul, j'ai quelques questions à ce sujet :

- J'ai remarqué qu'il n'y a quasi pas de communications entre la vue et le service. D'où le passage par une base de données pour déclencher les prochains événements ?

- Il y a régulièrement la fonction signal_daemon qui est appelée. Est-ce pour "relancer" le service ?

Exactement.
Les "services" sont construits pour être complètement indépendants du site web ou de nabd, afin d'éviter qu'un service qui plante vienne polluer l'ensemble.
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 2 visiteur(s)