[TUTO] Google Cloud Platform - API Et Facturation dans Jeedom

Bonjour,

aujourd’hui, je vais vous présenter comment bien utiliser GCP (Google Cloud Platform) afin de gérer l’utilisations des services de la plateforme.
J’adresse ce tuto au personne n’ayant que peut ou pas de connaissance GCP. Donc je vais employer des termes et des explications très simplifiées. Merci aux pros et experts d’être indulgant sur la simplcité.

1°) Présentation de GCP

GCP est la plateforme Cloud de google permettant aux particuliers et aux entreprises de gérer leurs services (Web, Serveurs, Réseaux etc…). C’est l’équivalent de AWS pour Amazon et Azure pour Microsoft.

Dans GCP, au niveau de Jeedom, beaucoup d’entre vous utilise déjà certainement les API Maps (Direction, Elévation, etc…).
Mais cette plateforme ce sert pas qu’a cela. Vous pouvez avoir des machines virtuelles, un réseaux totalement privé et disponible en haute disponibilité (si un serveur plante, des réplications peuvent prendre le relais), Scalable (Si pour une raison ou une autre, il vous manque des ressources, vous pouvez en créer à la volée), et Elastique (Vous pouvez ajouter des serveurs ou en enlever en fonction de la charge des serveurs automatiquement).

Cette plateforme possède également une fonctionnalité nommée cloud IOT permettant la gestion des appareils IOT avec une gestion MQTT. Cela peux être utile pour des objets distant. GCP fourni alors le serveur, et Jeedom peux ainsi utiliser GCP pour récupérer les données avec les plugins Mqtt.

Pour beaucoup de services, il existe (en gros) plusieurs possibilités de facturation, nottament le « Always Free »

Always Free, vous permet d’utiliser des resources GCP, jusqu’à un certain niveau de façon totalement gratuite

Exemple des API MAp : le free tiers est de 200$CAD (Désolé je parle en dollars car c’est ma monnaie), Mais c’est l’équivalent en euros.
Cela vous donne droit gratuitement, par exemple, à 20000 requêtes Direction (5$ pour 1000 requêtes) + 20000 Requêtes Geocoding (5$ pour 1000 requetes)

Exemple de machine virtuelles : Vous pouvez créer une machine ayant, a peu près les caractéristiques d’un raspberry pi 0 et l’utiliser gratuitement toute l’année. C’est gratuit. Utilise pour un petit service par exemple (serveur mqtt, mise à jour EPG).

Normalement, lorsque vous créer un nouveau compte, vous avez également droit à un crédit de 300$ pour la première année. Cela vous permet de tester les services google.

2°) La facturation

La première étape pour l’utilisation de GCP, est de créer un compte de facturation.
Je ne vais pas faire un tuto dessus, mais vous donner le lien de Google qui est très détaillé
Créer un compte de facturation GCP

Maintenant voyons comment créer des alertes pour la facturation.

Tout d’abord, afin de pouvoir interagir avec jeedom nous allons créer un Abonnement PubSub ainsi qu’un Abonnement à ce sujet.

PubSub est un service (avec du free tier) permettant à un autre service GCP de publier des informations sur un sujet (un peut comme mqtt). Sur ce sujet (Topic), on peux créer des abonnements afin de lire (pull) /écrire(push) les données.

Dans notre cas nous allons un « Topic » de facturation (ex : jeedom-billing) ainsi qu’un abonnement pull (ex : jeedom_tuto_billing_sub) qui sera utilisé par jeedom (via un scénario par exemple.
ATTENTION : le free tier dépend du nombre de requêtes que vous envoyez, recevez.
Dans la console, sur les panneau de gauche cher Pub/Sub et cliquer sur nouveau sujet.PubSub1

Créer un nouveau sujet

Sélectionner les services / API que vous souhaitez.
Je vous conseille de créer des sujets en fonction de vos projets et API (Par exemple, un sujet pour la facturation des APIs MAP, et un autre sujet pour d’autres services). Pour ma part, j’ai un sujet pour un espaces de stockage pour mes sauvegardes Jeedom, 1 pour ma partie API Map et 1 pour la partie « Compute » que je n’aborderai pas ici.

Votre sujet est créer. Nous allons créer un abonnement pour ce sujet

Nommez le sujet, sélectionnez la méthode « PULL ». Vous pouvez laisser les autres valeurs par défaut, à votre guise


La partie Pub/Sub est configurée.

Nous allons créer des alertes de facturation.
Cherchez, dans la partie droite de la console Facturation, et cliquez. Vous aurez un écran similaire à celui ci.

Créez un budget

Nommez-le, et choisissez les API Map (ou tout autres services désirés)

Choisissez des seuils d’alerte. Lorsque ces seuils seront atteint, un mail sera envoyé au propriétaire du compte (dans le cas ou plusieurs personnes utilise ce compte).

Activez "Associer un sujet Pub/Sub à ce budget. Cela permettra de mettre à jour le sujet à chaque modification de la facturation. Cela permettra d’avoir une mise à jour régulière dans Jeedom. Sélectionnez le sujet et l’abonnement crées précédemment.

3°) Configuration pour Jeedom

a) Google sdk
Avant de se lancer dans la configuration de jeedom, il est nécessaire d’installer les outils GCP nécessaire. Il s’agit du google-cloud-sdk

sur armbian/raspbian :

# sudo apt update -y && apt install -y lsb_release apt-transport-https ca-certificates gnupg
# export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)" 
# echo $CLOUD_SDK_REPO
cloud-sdk-VOTRE_VERSION

# echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" >> /etc/apt/sources.list.d/google-cloud-sdk.list
# curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
# sudo apt update -y && sudo apt upgrade -y
# apt install -y google-cloud-sdk

Normalement, google-cloud-sdk est installé.

b) Initialisation de google-sdk

il va falloir faire cette opération avec le compte www-data de jeedom

# sudo vi /etc/passwd (Modifier  www-data en /bin/bash au lieu de nologin)
# su www-data (pour se connecter avec l'utilisateur www-data)
# gcloud init (Lancement de l'initialisation de google)

Welcome! This command will take you through the configuration of gcloud.

Your current configuration has been set to: [default]

You can skip diagnostics next time by using the following flag:
  gcloud init --skip-diagnostics

Network diagnostic detects and fixes local network connection issues.
Checking network connection...done.
Reachability Check passed.
Network diagnostic passed (1/1 checks passed).

You must log in to continue. Would you like to log in (Y/n)?    <==== Y (on continue)

Go to the following link in your browser:

    https://accounts.google.com/o/oauth2/auth?code_challenge=d4Lx_xh8p80wwzecsJ8izKtwcLnerKXAd-SYipZo8iY&p........


Enter verification code:

Ouvrez l’adresse dans votre navigateur, connectez-vous avec votre compte google et acceptez les conditions. La dernière fenêtre vous donnera un token d’authentification que vous devrez coller dans le terminal.

Pour ma part, j’ai créer un compte pour Jeedom. D’une part pour recevoir les mails spécifiques à la domotique sans pourrir ma boite mail, gérer les alertes, etc…
2eme avantage, ça créer un nouveau compte avec 300$ offert par google pour les services :wink:

sdk3

Enter verification code: 4/yQGkrIYFRLI9ixaSo46ZldCDPr-n.............
You are logged in as: [jeedom.XXXXXXXX@gmail.com].

Pick cloud project to use:
[1] jeedomXXXXXXX
[2] latXXXXXXXXXX
[3] Create a new project
Please enter numeric choice or text value (must exactly match list
item): 1

Your current project has been set to: [jeedomXXXXXX].

Do you want to configure a default Compute Region and Zone? (Y/n)? Y

Une liste de région apparaît, sélectionnez la région où est stocké votre projet.

Si tout se passe bien, votre sdk est lié à votre projet jeedom.

Nous allons vérifier cela

# gcloud pubsub topics list
---
name: projects/jeedom-XXXXX/topics/jeedom-billing  (vous devriez voir le sujet créer précédemment)

# gcloud pubsub subscriptions list
---
ackDeadlineSeconds: 10
expirationPolicy: {}
messageRetentionDuration: 43200s
name: projects/jeedom-XXXXXXX/subscriptions/jeedom_billing_pull (L'abonnement que vous avez créé)
pushConfig: {}
topic: projects/jeedom-XXXXXX/topics/jeedom-XXXXXX-billing

Si vous en être là, vous avez fini le plus difficile.

c) Configuration Jeedom
Avant tout nous allons nous déconnecter du compte www-data et le reconfigurer comme à l’origine

# sudo vi /etc/passwd (Modifier  www-data en au nologin lieu de /bin/bash)
# exit
(on est de retour sur le compte root)

Pour faire simple, on va juste créer un script (plugin script, fichier .sh, cron, comme vous le souhaitez).
Pour ma part je le fait dans Jeedom avcec le plugin script :

Et un scénario tout simple :


Comme vous pouvez le voir, a la fin du scénario, je reboucle pour le relancer.
Comme expliqué plus haut, à chaque modification de la facturation (+ 200 requêtes comptabilisées, même dans le free tier (donc 0$), un Pub/Sub sera émis.) La boucle va permettre de vider la pile de l’ensemble des Messages envoyés.

J’ai créer un virtuel pour les récupérer les infos; et le tour est joué.

J’espère que cela va vous aider à y voir plus clair, et surtout vous permettre d’éviter les « surprises » de facturation.

N’hésitez pas à revenir vers moi pour de plus amples renseignements ou tout erreur que j’ai pu faire (J’ai fait ça rapido xd).

Au plaisir

12 « J'aime »

Oh super le tuto un grand merci a toi j’attends la partie jeedom pour ma part :slight_smile:

C’est fait lol. J’avais appuyer sur sauvegarder par erreur xD

Hello,

Pour quelle utilisation faut-il la CB pour l’utilisation de l’API avec Jeedom?
Pour ma part, j’utilise le plugin Localisation et trajet de Lunarok et je n’ai pas saisi de CB.

La première des choses à faire dans un compte GCP, AWS ou Azure, pour pouvoir utiliser le moindre éléments (dont les API), il est normalement nécessaire de configurer le compte de facturation du compte.

Les APIs google ne sortent normalement pas du lots. Le compte de facturation GCP doit normalement est configuré

Non, ce n’est pas nécessaire.
J’avais il y a deux ans créé un compte en mettant une CB virtuelle à expiration au moins prochain.
J’ai ensuite laissé tombé jusqu’à la semaine dernière.
Je n’ai aucun compte de facturation… et cela fonctionne. Il n’y en a pas besoin.

En utilisant, le plugin Localisation et trajet de Lunarok, sur la page de configuration, si je clique sur le lien API Google Maps, Google me propose de créer un compte de facturation.
Si je clique sur Annuler, retour en arrière… Si au contraire je clique sur Créer un compte de facturation, je suis naturellement dirigé sur la page correspondante.
Et ben à partir de cette page, sans créé de compte de facturation, on a accès au menu de navigation où l’on peut faire ce que l’on souhaite.

Et bien écoute, je vois que tu connais bien GCP. Tu dois être certifié je pense, tout comme je le suis.

Sachant que pour les API MAP (sans exception) il existe un crédit gratuit jusqu’au concurrence de 200€

Mais comme tu as raison, tu auras surement l’explication du tableau ci-dessus et sur le fait que, moi également, je n’utilise que le plugin de Lunarok pour les APIs MAP.

.

L’utilisation du plugin, pour une utilisation normale ne dépasse pas généralement le crédit gratuit.

Oh la là! Tu t’es levé du pied gauche?
J’ai un certains nombres de certifs dans plusieurs domaines informatiques, suivi des formations Google, etc… Les certifs, je m’en fiche. Ce n’est qu’un morceau de papier qui ne te rends pas plus intelligent qu’un autre (certaines sont par contre, bien plus complexe… Mais celles qui sont juste des QCM… lol).

Bref, donc je dois avoir un compte magique, c’est cool.

Et sinon, non, je ne connais pas bien GCP. Pas bien du tout même.
J’ai simplement dit que sans CB cela fonctionne car c’est le cas chez moi.

Alors que peut-être cela va bloquer dans quand temps. Et je me serais alors trompé.
Mais il me semble avoir lu que @lunarok (corrige-moi si je me trompe) a dit n’avoir jamais eu à saisir un numéro de CB non plus. Et c’est bien pour cela que j’ai cherché un moyen.

Tiens, j’ai retrouvé l’un des messages :

En effet,
j’ai été peut-être un peu rude. Je m’en excuse :slight_smile:

Je te mets le lien ci-joint sur les API Google Maps

Il y a notamment le tarifs de chaque APIs
Exemple :
Direction : 5$ pour 1000 requêtes
Geocoding, idem :::

Le plugin de Lunarok utilise plusieurs API de GMP. Mais chaque utilisateurs à le droit à un « Always Free Tier ». Ce doit être 100 000 reqûetes gratuites ou un truc du genre. Je ne sais plus.

Le fait est que tu avais un compte de facturation valide => Compte de facturation valide ne veux pas dire Carte de crédit valide.

Je m’explique.

Tu ne peux pas supprimer ton compte de facturation. Il est lié à GCP. Sans cela, tu ne pourrais rien faire du tout. Et comme les API sont payantes, après le free tiers, il faut obligatoirement avoir un compte de facturation valide.

Mais si à la fin du mois, ta facture est de 0, tu n’as pas besoin d’avoir une carte valide :slight_smile:
Voila pourquoi tu as pu retirer ta carte bancaire. Tu n’as plus de carte liées, mais tu as toujours ton compte de facturation. Cela dit, si un jour, pour une raison ou une autre. La politique de google sur les API change et que tu te retrouve avec un solde > 0, la tu devra payer.

J’espère que l’explication est plus claire ainsi.

:slight_smile:

Et encore désolé

Petit PS :

Cette notion de compte de facturation est valable pour l’ensemble des clouds en général
AWS, GCP, Azure.
C’est du « Pay as you go ». Donc, imaginons que tu veux utiliser une skill Alexa que tu auras développer (avec le site developper alexa). La partie Skill va gérer les « intent » (les commandes vocales"
Mais tu auras un partie sur AWS (un Lambda Function, une Faas) pour executer ton code.
La aussi, une partie de la consommation est en « Always Free Tiers ». Mais si tu dépasse un certain nombre d’appel, cela sera payant. D’où la nécessité d’avoir un compte de facturation valide, et si tu dois payé, une moyen de paiement valide. Mais si ta facture est a 0, Pas besoin de carte valide.

1 « J'aime »

Ce n’est pas grave :wink:
Merci pour ton retour.

Je viens de tester avec un autre compte.
On peut créer des projets mais je ne suis pas allé jusqu’au bout.

Mais je te crois, je disais juste que dans mon cas, cela fonctionne.
Peut-être que malgré les règles, on arrive à contourner le truc? Je n’en sais rien.
Comme dit, je donnais juste l’info :wink: .

Allez, sans rancunes :beers:

1 « J'aime »

Bonjour à tous,

ATTENTION au néophyte ( et probablement aussi à ceux qui s’y connaissent)
J’ai eu la désagréable surprise d’avoir une facture de Google de 87€ pour le mois de juillet (jamais auparavant)
Simplement pour les requêtes utilisées par le plugin localisation et trajet.

Pour a part j’arrête d’utiliser ces plugin.
C’est l’horreur !

Olivier

Ouah !!! 87€ ? en gros ca te fait +20K de requêtes par rapport au free tiers

donc 120K sur 30jours
4K/J
166/H
2.77/ minutes
Ce qui fait beaucoup de trouve, même pour le plugin.

Quels sont les APIs consommées ?
Est-tu certains qu’il s’agit que de tes APIs Map ?

Pour ma part, j’utilise tasker pour mettre à jour la localisation des mes appareils, envoie de la position à jeedom (Pas de mise à jour via les plugins).
2 téléphones / interrogation toutes les 2 minutes, et mise à jour du plugins, j’arrive à 87% de conso gratuites en moyenne.

Pour cette raison je trouvez que cela fait beaucoup.

Salut @Gsyltc. J’ai peu de connaissances, j’ai suivi votre tutoriel jusqu’au bout, mais j’obtiens quelques erreurs. Pouvez-vous me dire où j’avais tort ? Merci.

Bonjour @Apose

Désolé pour la réponse tardive? As-tu trouver une solution depuis ?

Bonjour
Je viens de installer le plugin geotrav, et j ai mis une cle api google avec un compte de facturation
J utilise une application Android « automate »

Je vais avoir à payer tous les mois?

Possible et très cher suivant les appels API

comment faire autrement?

Couper le service ou limiter au mini les requêtes API

1 « J'aime »

Un petit retour d’expérience …

Je ne sais as ce que tu cherches à faire, mais tu peux déjà faire beaucoup de choses avec @jeemate et @jeedomconnect en terme de geotracking ou geofencing
(Quelques tuto sur le sujet avec jeedomconnect que je connais mieux)

Norbert

Et se mettre des alertes sur GCP pour éviter de dépasser le budget « gratuit ».

1 « J'aime »