Avant toute chose merci de (re)prendre connaissance de la charte et de la respecter.
Pour résumer :
- Avant de poser une question, je cherche si la réponse existe
- Je suis poli, courtois et je respecte tout un chacun sur le forum
- Si un post m'agace : je m'en éloigne plutôt que de répondre d'une façon qui pourrait être mal interprétée


Il n'est jamais du luxe que de rappeler des choses simples :
Courtoisie, amabilité, politesse et bonne humeur sont les maîtres mots pour un forum sympathique, bienveillant et accueillant :)

Le groupe des Helpers est present pour vous aidez, n'hésitez pas à poser des questions ;)

Toute la communauté vous remercie

/!\ L’ancien forum passera en lecture seule en janvier 2020 (Si community a bien pris le relais) puis nous le fermerons définitivement en janvier 2021./!\
Merci de vous rendre sur https://community.jeedom.com maintenant pour vos prochains postes ;)

[Framework SC] les scenarios en php

Cette partie est dédiée à la programmation sur le logiciel JEEDOM
Avatar de l’utilisateur
SBO
Actif
Messages : 1369
Inscription : 17 sept. 2014, 18:31

Re: dev en cours: les scenarios en php

Message par SBO » 24 avr. 2016, 13:36

Super dJuL
Très intéressant pour les codeur php et probablement pour les moins aguerris qui utiliseront les exemples.
Et c'est certain de nombreuses question vont tomber
La vente de "php pour les nuls" va s'enflammer.




Envoyé de mon iPhone en utilisant Tapatalk
Ex-Bêta-Testeur | Jeedom | VM Debian 9

Pas de logs, pas d'infos, pas de réponse possible

Charte du forum | Doc jeedom | Trucs et astuces

Avatar de l’utilisateur
dJuL
Actif
Messages : 1425
Inscription : 28 janv. 2016, 01:37
Localisation : Ile de France

Re: dev en cours: les scenarios en php

Message par dJuL » 25 avr. 2016, 03:57

mbuffat69 a écrit : - peut-on envisager de partager des variables entre le code php et l'interface gui (autre qu'avec des variables globales) ?
Finalement maintenant la réponse est oui !

Image

nous donne :

Image

http://rulistaff.free.fr/sc/doc/?class-sc#_setVar

Sinon j'ai fini le script d'install et de mise à jour, tout semble bien rouler.
Je finis juste la doc dans les parties "installation" et "utilisation" et vous pourrez commencer à l'utiliser.
C'est donc pour dans très vite, genre dans la semaine.
Dernière édition par dJuL le 29 avr. 2016, 21:20, édité 1 fois.
Dernière version de JPI
Un bouton donation se trouve dans la fenêtre DIVERS / A propos de l'interface web si vous souhaitez soutenir le projet.

Avatar de l’utilisateur
domoggvad
Actif
Messages : 1876
Inscription : 29 avr. 2015, 16:02
Localisation : Seine-Saint-Denis (Villepinte)

Re: dev en cours: les scenarios en php

Message par domoggvad » 25 avr. 2016, 06:00

Yes, merci pour le travail, j ai commencé déjà quelques cours sur le net pour comprendre la syntaxe PHP.

de mon téléphone
3 Odroid C2 (Prod - secours - test) Z83 tests: rfxcom + Z-wave- Clims DAIKIN - espeasy - thekey - Xiaomi - Telinfo - broadlink... widget V3 :viewtopic.php?f=29&t=44183&p=717810#p717810

i-magin
Actif
Messages : 979
Inscription : 18 août 2015, 10:23
Localisation : Villeurbanne

Re: dev en cours: les scenarios en php

Message par i-magin » 25 avr. 2016, 10:44

Bravo @dJuL, tu avances très vite !
Je n'ai pas eu le temps de regarder le PHP et je vais m'absenter 15 jours !

Je me permets tout de même de te poser une question :
Il me semblait que l'on devait pouvoir utiliser directement les "node ID" des équipements plutôt que les tags.
Par exemple, pour un équipement type Dimmer chez moi, le tag est #[Entrée][6ZMNHDDx Din Dimmer]# et le node ID est 6
Ce qui serait particulièrement utile pour un script PHP qui contrôlerait l'état de toutes les lumières avant de partir de chez soi
Voici ce que j'utilise en LUA

Code : Tout sélectionner

-- tableau des id des modules interrupteurs
interrupteur = {22, 50, 51, 87, 142, 143, 248}
-- contrôle de l'état des interrupteurs dans une boucle
for i = 1, #interrupteur do
-- récupération du nom du module interrupteur
local interrupteurname = fibaro:getName(interrupteur[i]);
local request
-- si interrupteur sur ON préparation d'un SMS
if (tonumber(fibaro:getValue(interrupteur[i], "value")) > 0) then
-- remplace les espaces dans le nom du module par des %20 pour que cela puisse être interprété dans une URL
interrupteurname = string.gsub(interrupteurname, " ", "%%20")
-- constitution du message par concaténation
request = 'La%20lampe%20'..interrupteurname..'%20est%20allumée';
-- le message est stocké dans une variable globale 
fibaro:setGlobal("sms", request)
-- lancement d'une scène qui va récupérer la variable globale et transmettre un sms via Free Mobile
fibaro:startScene(35);
-- temporisation
fibaro:sleep(2000);
end
end
J'ai regardé un peu pour une transcription en PHP et je me pose deux questions :
- comment utiliser l'ID de l'équipement pour contrôlet l'Etat d'un dimmer : #[Entrée][6ZMNHDDx Din Dimmer][Etat]# == 1
- comment récupérer le nom d'un équipement : je n'ai pas vu de tag pour le nom d'un équipement, alors que getName(); existe pour un scénario

Excuse moi de mon ignorance ;)

Si la transcription de la scène LUA est possible en PHP, cela pourrait faire un exemple d’utilisation de ton Framework avec tableau d'ID

Merci encore !
Jeedom RC V4.0.20
* DIY NUC 6I5SYK (Crucial 16GB Kit (8GBx2) DDR4 2133 MT/s) * Contrôleur Z-Wave AEOTEC GEN5 *
* VMWare ESXi 6.5.0 Update 2 Build 8294253 * VM Jeedom Debian 9.5 avec 1 CPU/4 Go de mémoire * PHP 7.0.30-0 * Clé USB : SENA UD100

Avatar de l’utilisateur
dJuL
Actif
Messages : 1425
Inscription : 28 janv. 2016, 01:37
Localisation : Ile de France

Re: dev en cours: les scenarios en php

Message par dJuL » 25 avr. 2016, 17:00

Aucun soucis pour une transposition vers le framework ;)

Code : Tout sélectionner

$message = '';

// tableau des id des commandes info de l'état des interrupteurs
$interrupteurs_etat = array(22, 50, 51, 87, 142, 143, 248);

//ou bien (au choix) tableau des tags des commandes info de l'état des interrupteurs
$interrupteurs_etat = array('#[Salon][Lumière][Etat]#', '#[Chambre][Lumière][Etat]#', ect...);

// contrôle de l'état des interrupteurs dans une boucle
for ($i = 0; $i < count($interrupteurs_etat); $i++) {
  
  // si interrupteur sur ON préparation du message
  if ( intval( sc::getCmd($interrupteurs_etat[$i]) ) > 0 ) {
    //Récupération de l'equipement 
     $interrupteur = sc::getEquipement($interrupteurs_etat[$i]);
     //constitution du message
     $message.= 'La Lampe ' . $interrupteur . ' est allumée. ';
  }

}

//si une ou plusieurs lampe(s) est/sont allumée(s) envoie le sms
if ($message) {
  sc::setCmd('#[Media][FREE SMS][Mon Tel]#', $message);
}
Il n'y a pas de soucis pour utiliser les id, toutes les fonctions de gestion de commandes du framework prennent soit les tag soit les id avec ou sans les '#' !

La fonction getEquipement() retourne le tag de l’équipement d'une commande

Pour info il y a aussi la fonction toHuman() (que je viens d'ajouter) pour avoir le nom d'une commande au d'un équipement au format #tag#
Dernière édition par dJuL le 29 avr. 2016, 21:21, édité 1 fois.
Dernière version de JPI
Un bouton donation se trouve dans la fenêtre DIVERS / A propos de l'interface web si vous souhaitez soutenir le projet.

i-magin
Actif
Messages : 979
Inscription : 18 août 2015, 10:23
Localisation : Villeurbanne

Re: dev en cours: les scenarios en php

Message par i-magin » 25 avr. 2016, 22:47

Merci de ta réponse

Je commence à comprendre la différence entre les commandes LUA de la HC2 de Fibaro et l'utilisation de PHP avec Jeedom
Dans le 1er cas, on utilise un seul ID pour un module .

Dans Jeedom, je découvre plusieurs ID pour un équipement.
Exemple pour un dimmer Qubino rail din :
id dimmer.PNG
id dimmer.PNG (10.98 Kio) Consulté 698 fois
Mais, la commande "Etat" du dimmer dispose également de deux ID
ID commande dimmer.PNG
ID commande dimmer.PNG (15.28 Kio) Consulté 698 fois
C'est donc l'ID de commande d'état qu'il faut utiliser : 558
- getCmd : renverra l'état du dimmer
- getEquipement : donnera l'identifiant de l'équipement au format tag. Exemple : #[Entrée][6ZMNHDDx Din Dimmer]#

Merci, c'est super @dJuL 8-)
Jeedom RC V4.0.20
* DIY NUC 6I5SYK (Crucial 16GB Kit (8GBx2) DDR4 2133 MT/s) * Contrôleur Z-Wave AEOTEC GEN5 *
* VMWare ESXi 6.5.0 Update 2 Build 8294253 * VM Jeedom Debian 9.5 avec 1 CPU/4 Go de mémoire * PHP 7.0.30-0 * Clé USB : SENA UD100

Avatar de l’utilisateur
dJuL
Actif
Messages : 1425
Inscription : 28 janv. 2016, 01:37
Localisation : Ile de France

Re: dev en cours: les scenarios en php

Message par dJuL » 25 avr. 2016, 22:54

Tout à fait.

Oui il y a plein d'Id dans jeedom, l’équipement ainsi que toutes ses commandes ont des id différentes.
Un seul virtuel contenant des dizaine de commandes actions et info donnera donc beaucoup d'id

C'est pour ça qu'avec Jeedom il est plus simple de travailler avec les tags je pense, car il suffit d'avoir un bloc de condition inactif sous le bloc code afin d'utiliser le sélecteur pour récupérer les tags des commandes infos et faire un copier/coller dans le code
Plus un bloc inactif action pour récupérer de la même manière les tags des commandes de type action
Dernière version de JPI
Un bouton donation se trouve dans la fenêtre DIVERS / A propos de l'interface web si vous souhaitez soutenir le projet.

i-magin
Actif
Messages : 979
Inscription : 18 août 2015, 10:23
Localisation : Villeurbanne

Re: dev en cours: les scenarios en php

Message par i-magin » 25 avr. 2016, 23:11

Ok, grâce à tes explications je suis en train de changer de logique.... j'adopte les tags :D
Jeedom RC V4.0.20
* DIY NUC 6I5SYK (Crucial 16GB Kit (8GBx2) DDR4 2133 MT/s) * Contrôleur Z-Wave AEOTEC GEN5 *
* VMWare ESXi 6.5.0 Update 2 Build 8294253 * VM Jeedom Debian 9.5 avec 1 CPU/4 Go de mémoire * PHP 7.0.30-0 * Clé USB : SENA UD100

toregreb
Actif
Messages : 2510
Inscription : 20 août 2014, 22:19

Re: dev en cours: les scenarios en php

Message par toregreb » 26 avr. 2016, 07:07

dJuL a écrit : Oui il y a plein d'Id dans jeedom, l’équipement ainsi que toutes ses commandes ont des id différentes.
Un seul virtuel contenant des dizaine de commandes actions et info donnera donc beaucoup d'id
Rectification : Jeedom donne plein d'idées.... :)
Jeedom v2.2.6 sur RPi2+razberry (Zwave)+RFXCom, Enocean et MySensors.
[TUTO]Index HP/HC avec pinces Ampèremétriques
Trucs&Astuces

Avatar de l’utilisateur
dJuL
Actif
Messages : 1425
Inscription : 28 janv. 2016, 01:37
Localisation : Ile de France

Re: [Framework SC] les scenarios en php

Message par dJuL » 28 avr. 2016, 00:40

Hop c'est en ligne. :D

J'en ai bien chier pour finir la doc (surtout qu'elle est générée dynamiquement), j'ai essayer de chiader un poil mais je ne suis pas sur que tout soit clair. Il me reste encore la rubrique truc et astuces mais je fais une pause... Et ça n'empêche pas de rendre public.

il y a 2 grosses parties :
Démarrage : contenant toute la doc écrite (installation, utilisation...) et les fonctions de bases
Documentation : contenant toutes les fonctions

Si vous voyez des fautes ou des trucs à corriger dites moi.
J'ai aussi fait une mini doc Jeedom pour les histoires de commandes et d'équipements.

Bon tout ça n'évitera surement pas les questions et des pbs, mais ça devrait aider pas mal j'espère.

Le champs de recherche en haut à gauche est maintenant opérationnel pour toutes les fonctions et rubriques de démarrage

J'ai mis à jour le post#1 du coup

http://rulistaff.free.fr/sc
Dernière version de JPI
Un bouton donation se trouve dans la fenêtre DIVERS / A propos de l'interface web si vous souhaitez soutenir le projet.

Avatar de l’utilisateur
domoggvad
Actif
Messages : 1876
Inscription : 29 avr. 2015, 16:02
Localisation : Seine-Saint-Denis (Villepinte)

Re: [Framework SC] les scenarios en php

Message par domoggvad » 28 avr. 2016, 07:31

Bonjour @dJuL
Installation réussie sans problème, il n y'a plus qu'a commencer, dès que j'ai un moment dans la journée je m y colle
Merci encore pour le travail
3 Odroid C2 (Prod - secours - test) Z83 tests: rfxcom + Z-wave- Clims DAIKIN - espeasy - thekey - Xiaomi - Telinfo - broadlink... widget V3 :viewtopic.php?f=29&t=44183&p=717810#p717810

Avatar de l’utilisateur
pascal
Actif
Messages : 714
Inscription : 19 août 2014, 20:57
Contact :

Re: [Framework SC] les scenarios en php

Message par pascal » 28 avr. 2016, 08:05

Pas encore testé mais bravo pour le boulot et la bonne idée.
Ça va permettre d'alléger le nombre de boîte des scénario compliqué

Envoyé de mon PLK-L01 en utilisant Tapatalk

Avatar de l’utilisateur
mbuffat69
Timide
Messages : 389
Inscription : 02 févr. 2016, 21:25
Localisation : Lyon

Re: [Framework SC] les scenarios en php

Message par mbuffat69 » 28 avr. 2016, 08:26

Bonjour @dJuL
installation et test sans problème sur mon système
Petite remarque sur la doc:
le menu logs se trouve sous le bouton analyse et non pas outils comme indiqué dans la doc

Bravo pour le travail
Système DIY 2 PI3 avec SSD (voir mon profil pour le détail)

toregreb
Actif
Messages : 2510
Inscription : 20 août 2014, 22:19

Re: [Framework SC] les scenarios en php

Message par toregreb » 28 avr. 2016, 08:43

Bravo, super boulot. Moi, je m'y met des que j'ai un peu de temps, j'ai un scénario que j'aimerai bien transformer ;).
Ne faudrait-il pas faire un nouveau topic pour ce lancement "officiel"?
Jeedom v2.2.6 sur RPi2+razberry (Zwave)+RFXCom, Enocean et MySensors.
[TUTO]Index HP/HC avec pinces Ampèremétriques
Trucs&Astuces

Avatar de l’utilisateur
ovski
Timide
Messages : 100
Inscription : 12 mars 2016, 11:07
Localisation : Rambouillet

Re: [Framework SC] les scenarios en php

Message par ovski » 28 avr. 2016, 09:53

Un grand merci à toi djul pour ce beau boulot.
Install et tests prévus dès ce week-end car pas trop le temps en semaine. Je vais enfin pouvoir migrer mes quelques scénarios compliqués là dessus. Merci.

i-magin
Actif
Messages : 979
Inscription : 18 août 2015, 10:23
Localisation : Villeurbanne

Re: [Framework SC] les scenarios en php

Message par i-magin » 28 avr. 2016, 10:54

C'est vraiment génial @dJuL

Avant de partir demain, j'ai effectué l'installation : tout c'est bien passé et tout est "très propre", et j'apprécie la qualité de la log
Mon test est limité, puisque (comme je l'ai déjà précisé) je n'ai pas encore migré mon installation domotique de la HC2 vers Jeedom (j'attends la sortie de la Jeedom Center pour ne pas migrer deux fois mes modules)
Du coup, pour l'exemple de vérification des lumières, j'ai mis deux fois le même module dans le tableau :lol: (comme il s'agit d'un dimmer Qubino rail DIN, j'ai testé sur la valeur 99)
Et, évidemment, çà fonctionne bien !

Je n'ai pas encore lu toute ta doc
C'est vraiment un excellent boulot, qui ouvre de nouvelles perspectives (notamment pour ceux qui voudraient migrer sous Jeedom et retrouver les possibilités de LUA par exemple)
A mon sens, ton framework se situe entre les possibilités offertes de base par Jeedom (qui sont déjà très performantes) et les plugins. Ces plugins ne peuvent pas couvrir tous les besoins, ou lorsqu'ils existent ne traitent pas tous les points particuliers.

Prochaine étape pour ce qui me concerne, regarder comment intégrer des requêtes HTTP, HTTPS, JSON, TCP vers des équipements externes... un exemple sera le bienvenu ;)

Pour terminer : MERCI @dJuL !
Jeedom RC V4.0.20
* DIY NUC 6I5SYK (Crucial 16GB Kit (8GBx2) DDR4 2133 MT/s) * Contrôleur Z-Wave AEOTEC GEN5 *
* VMWare ESXi 6.5.0 Update 2 Build 8294253 * VM Jeedom Debian 9.5 avec 1 CPU/4 Go de mémoire * PHP 7.0.30-0 * Clé USB : SENA UD100

Avatar de l’utilisateur
Theduck38
Helper
Messages : 2677
Inscription : 22 févr. 2015, 17:32
Localisation : Près de Grenoble
Contact :

Re: [Framework SC] les scenarios en php

Message par Theduck38 » 28 avr. 2016, 11:37

Magnifique ! Merci pour ce très beau travail.

J'ai plus qu'à m'acheter le php pour les nuls :mrgreen:
-- TD38 --
Helper Officiel Jeedom
Zimeteo sur Jeedom : http://www.meteo.lecoin.info
Jeedom Stable sur serveur custom
Le risque électrique - Afficheur leds RGB - Tablette Murale - Thermostat connecté

Avatar de l’utilisateur
dJuL
Actif
Messages : 1425
Inscription : 28 janv. 2016, 01:37
Localisation : Ile de France

Re: [Framework SC] les scenarios en php

Message par dJuL » 28 avr. 2016, 12:01

mbuffat69 a écrit :le menu logs se trouve sous le bouton analyse et non pas outils comme indiqué dans la doc
Merci c'est corrigé (ce sera dans la prochaine version)
toregreb a écrit :Ne faudrait-il pas faire un nouveau topic pour ce lancement "officiel"?
Oui j'ai faillis le faire, mais pour ne pas multiplier les topics j'ai renommé le titre du topic et modifier le post#1, ce qui au final revient quasi au même.
Dernière version de JPI
Un bouton donation se trouve dans la fenêtre DIVERS / A propos de l'interface web si vous souhaitez soutenir le projet.

fcna
Actif
Messages : 825
Inscription : 15 mars 2015, 16:14
Localisation : Toulouse

Re: [Framework SC] les scenarios en php

Message par fcna » 28 avr. 2016, 15:21

Slt djul, encore une fois excellent travail.

Est-ce que tu penses que tu pourrais intégrer d'autres fonctions. Je pense notamment au fonction d'historiques qui serait bien utile pour construire un tableau récap des conso sur différents jours ...

Merci d'avance
Mini +
Fibaro FGMS-001
Qubino Fil Pilote 6 / Module Vlts roulants
Aeon Labs mono G2 60A
Fibaro Wall Plug / Smoke Sensor

ImperiHome Standard System /Pushing Box/Energie/ Philips Hue / Agenda / Clock / Géolocalisation / Themes / ...

i-magin
Actif
Messages : 979
Inscription : 18 août 2015, 10:23
Localisation : Villeurbanne

Re: [Framework SC] les scenarios en php

Message par i-magin » 28 avr. 2016, 18:18

Bonne question... si je comprends bien, pour exécuter des requêtes HTTP, HTTPS, JSON, TCP vers des équipements externes il faudra les fonctions correspondantes ?
Jeedom RC V4.0.20
* DIY NUC 6I5SYK (Crucial 16GB Kit (8GBx2) DDR4 2133 MT/s) * Contrôleur Z-Wave AEOTEC GEN5 *
* VMWare ESXi 6.5.0 Update 2 Build 8294253 * VM Jeedom Debian 9.5 avec 1 CPU/4 Go de mémoire * PHP 7.0.30-0 * Clé USB : SENA UD100

Répondre

Revenir vers « Développements sur Jeedom »

Qui est en ligne ?

Utilisateurs parcourant ce forum : diabolyk et 1 invité