Connnexion Base de données Jeedom depuis client distant

Bonjour,

J’ai vu phpMyAdmin mais je veux y accéder par un autre soft.

Henribi,

Merci pour l’info, mais quelles sont les commandes pour accéder à MySQL (depuis Putty ? Jeedom ? ) pour accéder au fichier ? C’est un fichier texte ? Quels sont les modifs à ajouter ?
Merci d’avance

Sinon api json avec getHistory()

Pour modifier le fichier de conf:
via putty. attention respecter la syntaxe sudo
sudo su -
vi /etc/mysql/mariadb.conf.d/50-server.cnf

Pour modifier les autorisations mysql:
mysql --user=root --password=xxxxxx
Dans la connexion mysql. Pour donner à root le droit de se connecter en remote
grant all privileges on . to ‹ user ›@‹ IP › identified by ‹ new_passwd › with grant option;
IP peut être , % pour any IP ou à partir d’un ip_subnet ==> 192.168.11.%

Bonjour kiboost,
Cela m’intéresse je n’avais pas vu cette commande. En effet je travaille actuellement avec l’API jeedom mais en requete URL mais toutes ne fonctionne pas ( ou je les utilise mal) mais via l’URL « FullData » j’arrive à tout reprendre et séparer selon mes besoins. Je commence à comprendre l’exploitation d’un Json. En revanche j’avais vu la partie API Json qui paraît beaucoup plus complète mais j’ai coincé sur son utilisation. J’ai trouvé un bout de code en WLangage mais qui ne fonctionne pas chez moi. Si tu sais m’en dire plus sur comment l’exploiter je suis preneur ? ( je ne connais assez peu tout ce qui est php, html, Javascript, j’ai commencé à faire du développement depuis plusieurs mois avec Windev) Merci d’avance,

Bonjour Henribi,

Merci pour ton retour. Je vais tester cela quand j’aurais un peu de temps sûrement ce week-end :blush: et je te redirais si c’est ok :+1:

Hello @Jok3rnoir as-tu réussi ?

Bonjour @alexcrp,

Je n’ai pas tout à fait réussi à faire ce que je souhaitais dans mon premier message mais j’ai réussi à me connecter et récupérer l’ensemble des informations que j’avais besoin (Objets>Équipements>Commandes>Valeurs). J’ai travaillé sur du code en Windev. Mais par contre depuis je n’ai pas eu le temps de travailler davantage dessus. La communication étant trouvée, je devrais avancer plus facilement quand j’aurai un peu de temps :slight_smile:
Tu voudrais des informations par rapport à quoi ?

Merci @Jok3rnoir pour ta réponse.

J’avais fait une bêtise en paramètrant une sonde de température et j’avais une valeur improbable de température en degrés Celcius « 11.8525.85 » enregistrée dans la BD et cela me remontait une erreur plusieurs fois par jour, j’en était à plus de 300 (!).

Du coup je cherchais un moyen d’accéder à la BD pour modifier la valeur qui posait problème.

En cherchant, j’ai trouvé la méthode expliquée par @agp.com en utilisant le soft « Adminer » et c’est nickel:

  1. tu mets le fichier .php directement à la racine du dossier html de Jeedom (via plugin Jeexplorer),
  2. ensuite tu accèdes au fichier php dans le navigateur
  3. Tu entres le Login + mdp
  4. Tu peux accéder à la DB et y faire toutes les modifs sur les valeurs enregistrées (avec la fonction recherche notamment plus rapide…)

Si cela t’intéresse tu peux jeter un œil ici:

Super merci pour l’astuce. Elle me sera sûrement très utile à un moment :blush::ok_hand:
Bonne journée.

Bonjour,

je tente aussi de me connecter à l’API RPC avec Windev, j’ai trouvé un bout de code ( JSON RPC restRequête et Jeedom - WINDEV 27 - Forums développeurs - PC SOFT ) mais impossible de passer une commande :confused:

Idéalement, j’aimera pouvoir faire un cmd::getHistory , mais bon, déjà, la commande « ping » renvoi une erreur :frowning:

Est-ce qu’il faut absolument être en https pour utiliser l’API RPC ? Et si oui, comment faire ?

Voici le message d’erreur:

{"jsonrpc":"2.0","id":99999,"error":{"code":1,"message":"Requ\u00eate invalide. Version JSON-RPC invalide : "}}

Voici mon code (Windev, pas taper !!):

sRequeteRPC est une chaîne = [
{"jsonrpc": "2.0",
"method": "jeedom::isOk",
"params": {"apikey": "xxxxxxx"},
"id": "1"}
]

maRequete est un restRequête
maRequete..Entête["Content-Type"]	= "application/json"
maRequete..URL						= "http://192.168.1.199/core/api/jeeApi.php"
maRequete..Contenu					= ChaîneVersUTF8(sRequeteRPC)
maRequete..Méthode					= httpPut OU httpGet OU httpPost

cMaReponse est un restRéponse = RESTEnvoie(maRequete)
SI ErreurDétectée ALORS
	Erreur(UTF8VersChaîne(ErreurInfo(errComplet)))
SINON
	Trace(UTF8VersChaîne(cMaReponse..Contenu))
FIN

Merci pour votre aide :slight_smile:

Hello,

Bon je suis dans le même cas.
Je développe en Windev et comme dit dans ma présentation, je souhaite migrer de HC2 et de mes IPX vers Jeedom.

Première étape me connecter à la BD :
Pour cela avoir un accès distant à celle-ci depuis Windows sachant que Jeedom est sur une Delta en VM.

Etape 2 :
Faire des requêtes pour créer les actionneurs virtuels dont j’ai besoin, scénarios et scripts.

@Jok3rnoir et @spamoi33 avez-vous réussi avec Windev et si oui avez un petit bon de code histoire de bien démarrer :wink:

Merci

Bonjour @garfield77

Oula ce sujet remonte :blush:
Et malheureusement je n’ai pas plus avancé depuis mon dernier post lol
Mais j’avais quand même réussi à me connecter et récupérer et traiter des datas en json sur Windev.

Je devrais pouvoir partager un bout de code si tu veux :wink:

Merci ton paratge sera bienvenu :slightly_smiling_face:.
Je teste aussi les API, RPC et Adminer pour voir si je peux injecter des scénarios.

Pas de souci je vais tâcher de faire ça dans le week-end.
Par rapport à ton projet ambitieux lol as tu regardé, il y a un plugin IPX sur Jeedom ? Je n’ai jamais utilisé mais je sais que ça existe :blush:

Oui le plugin IPX v3 est un legacy et ne fonctionne pas sur Jeedom v4 (du moins pour les tests réalisés).
J’ai 6 IPX avec des extensions et 1 eco device, soit environ 150 actionneurs et capteurs, il faut vraiment que j’automatise l’injection de ces scripts avec les bons id, d’où un développement Windev.
Je n’ai pas trouvé d’API pour injecter un script, automatiser un CRON, etc …
La HC2 de Fibaro était un mauvais choix :sleepy:

Pour me connecter à la Base de Données de mon Jeedom, j’utilise Adminer.
Il suffit de récupérer le fichier « adminer-4.8.1.php » sur cette page => Adminer - Database management in a single PHP file
Puis via l’« Editeur de Fichier » (menu « Réglage » → « Système »), tu copies le fichier « adminer-4.8.1.php » à la racine du dossier « html » où tous les fichiers de Jeedom sont installés.
Il te suffit ensuite d’aller à la page « http://IP_de_ton_Jeedom/adminer-4.8.1.php » (ça fonctionne aussi si tu as un nom de domaine et que tu peux accéder à ton Jeedom depuis l’extérieur de chez toi) et de rentrer les paramètres suivants :

  • Système => MySQL
  • Serveur => localhost
  • Utilisateur => jeedom
  • Mot de passe => Celui indiqué dans l’onglet « >_OS/DB » du menu « Réglages »->« Système »->« Configuration »
  • Base de données => jeedom
  • Cocher la case « Authentification permanente »
    Et cliquer sur le bouton « Authentification »

Tu auras accès à toutes les tables qu’utilise ton Jeedom. A utiliser avec prudence.


@_screenshot_178

Ah mince dommage… :confused:
Oui en effet, il faut pouvoir récupérer les infos.
Tous les ID tu peux les récupérer dans l’onglet « Résumé Domotique ».
Sinon je te partage un bout de code pour récupérer des datas de Jeedom avec Windev. J’ai retrouvé mon programme de l’époque mais j’ai perdu des éléments…
J’espère ça te sera utile, j’avais fait un test pour récupérer une température par exemple.

bResLancement est un booléen = HTTPRequête("https://"+gsIP_JEEDOM+"/core/api/jeeApi.php?apikey="+gsAPIKEY+"&type=cmd&id=1197")
SI bResLancement = Vrai ALORS
	ResCode est une chaîne = HTTPDonneRésultat()
	SAI_Temp_Salon..Valeur = ResCode
FIN

Ensuite il te faut mettre dans tes variables globales, « gsIP_JEEDOM », soit ton IP de Jeedom ou le lien DNS d’accès externe ça fonctionne. Pour ton « gsAPIKEY », tu peux la retrouver dans Configuration \ Clé API et c’est la clé de la première ligne. Le chiffre 1197 est l’id de la commande que je voulais récupérer. Ici elle est en fixe, mais elle peut être bien sûr dynamique.

Voilà j’espère ça pourra t’aider à comprendre. Je t’invite à regarder la page suivante également pour comprendre comment récupérer les infos :
https://doc.jeedom.com/fr_FR/core/4.3/api_http

Merci @Chanchan_BZH et @Jok3rnoir je vais creuser cela :wink:

De rien :blush: Et tu peux utiliser aussi la ligne Full Data (dans le lien transmis) pour récupérer un maximum d’informations Objets/ Commandes / Valeurs… qu’il faudra traiter dans une table pour tout séparer. J’avais réussi à le faire en creusant un peu et je n’ai pas un grand niveau sur Windev lol

Après de nombreux tests infructueux, droits d’accès, configuration MySql et Windev, etc …, j’ai trouvé sur un GitHub comment implémenter des API REST de façon simple :
https://github.com/mevdschee/php-crud-api
Il suffit de mettre api.php à la racine du dossier html après avoir fixé le login et base Jeedom comme indiqué sur le GitHub.

Ensuite en Windev pour récupérer tous les enregistrements en JSON de la table cron :
cMaRequête est un httpRequête
cMaRequête.URL = ''http://ip_de_la_jeedom/api.php/records/cron"
cMaRequête.Méthode = httpGet
cMaRéponse est un httpRéponse = HTTPEnvoie(cMaRequête)

Pour finir, il faut traiter cMaRéponse.Contenu en Windev comme bon vous semble.
Avec cette API, vous pouvez traiter facilement les ajouts, suppressions, modifications, etc …, quel que soit le langage de programmation.

Bien sûr Adminer est toujours nécessaire pour connaitre la structure des tables.

Voilà si cela peut aider.