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

[Framework SC] les scenarios en php

Cette partie est dédiée à la programmation sur le logiciel JEEDOM
toregreb
Actif
Messages : 2510
Inscription : 20 août 2014, 22:19

Re: dev en cours: les scenarios en php

Message par toregreb » 12 avr. 2016, 18:29

Merci, @djul, c'est une bonne proposition que tu fais là, notamment par rapport à l'utilisation des variables. Ça doit permettre de bien optimiser la vitesse des instructions
Et effectivement, il faut compenser la difficulté de lecture (relative selon le niveau de compréhension du code) par des logs bien détaillés. Néanmoins, je ne suis pas sûr que tout le monde te suive, la tendance étant quand même de rechercher un mode de programmation totalement assisté.
Je vais commencer à regarder comment je peux basculer progressivement mes scénarios les plus simples en bloc code.
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
Claude69
Actif
Messages : 2074
Inscription : 04 avr. 2015, 07:57
Localisation : Nord de Lyon

Re: dev en cours: les scenarios en php

Message par Claude69 » 12 avr. 2016, 18:49

dJuL a écrit :@Claude69

Voici une version un peu plus légère de ton code qui fait la même chose:

Code : Tout sélectionner

$Msg = array('Msg_Pompe', 'Msg_Portail', Msg.... etc);
$TotalMsg = 0;
for ($i=0; $i<count($Msg); $i++) {
  $val = $scenario->getData($Msg[$i]);
  $TotalMsg+= ($val > 0 && $val < 200) ? 1 : 0;
}
J'ai pas testé, j'ai écrit à l'arrache ici y'a pt'etre un parse error...
Merci @DJul
Je test doucement en piquant des bouts de code à droite et à gauche.
Je test ca au plus vite ;)
Gestion d'ouverture / fermeture Portail et garage
Gestion filtration piscine
Divers éclairages
Et tout plein d'autres choses ...
JEEDOM NUC 3.3.31 ULTIMATE

Mon matériel ici

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

Re: dev en cours: les scenarios en php

Message par dJuL » 12 avr. 2016, 20:48

toregreb a écrit :Néanmoins, je ne suis pas sûr que tout le monde te suive, la tendance étant quand même de rechercher un mode de programmation totalement assisté.
Je vais commencer à regarder comment je peux basculer progressivement mes scénarios les plus simples en bloc code.
Yep, et tant mieux que tout le monde ne suive pas, c'est plutôt un mode expert qu'un mode débutant, et c'est tout de même pour ceux qui ont au minimum des notions de programmations. ;)
Après ça peut servir au cas par cas, juste pour faire des trucs trop lourd en mode bloc, il ne s'agit pas forcément de le remplacer totalement ce qui existe déjà, qui marche très bien et qui est intuitif. On peut déjà faire énormément de chose avec les blocs actions et conditions.
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
Claude69
Actif
Messages : 2074
Inscription : 04 avr. 2015, 07:57
Localisation : Nord de Lyon

Re: dev en cours: les scenarios en php

Message par Claude69 » 12 avr. 2016, 21:40

@dJuL: aurais tu un conseil de livres de chevet pour du PHP ?
Je précise juste que je suis automaticien et que je code tout les jours (langage automate, VB ...), mais je découvre le PHP et je veux apprendre.
Gestion d'ouverture / fermeture Portail et garage
Gestion filtration piscine
Divers éclairages
Et tout plein d'autres choses ...
JEEDOM NUC 3.3.31 ULTIMATE

Mon matériel ici

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

Re: dev en cours: les scenarios en php

Message par dJuL » 12 avr. 2016, 22:40

Aucune idée, surement que d'autres pourront te dire.
Perso j'ai appris sur le tas...
Après si tu codes, grossièrement tous les langage modernes se ressemblent, tu devrais pas avoir trop de mal...
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.

Morlock
Timide
Messages : 452
Inscription : 24 juin 2014, 21:17
Localisation : Belgique

Re: dev en cours: les scenarios en php

Message par Morlock » 13 avr. 2016, 11:59

Je ne pense pas que ceci est pour Claude69 vu son niveau, mais peut-être pour d'autres comme moi ça peut aider:
BasePHP
UdooX86 - Odroid C2 - RPI3 - RPI2 - DS415+
Z-Stick (GEN5) - RFXcom RFlink - Xiaomi home

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

Re: dev en cours: les scenarios en php

Message par i-magin » 13 avr. 2016, 14:52

Bonjour @dJuL
Ton initiative m'intéresse vraiment, voici pourquoi ...

Depuis mi 2013, j'utilise une box Fibaro HC2. Malgré mes compétences bien réduites et qui datent de plus de 30 ans, j'arrive à utiliser le langage LUA
J'ai testé Jeedom sous Raspberry et je suis prêt à basculer ma petite installation (j'attends la sortie de Jeedom Center pour ne pas intégrer deux fois de suite tous mes modules Zwave)

J'ai constaté que Jeedom permet d'écrire des scénarios en mode bloc bien plus complexes que sous HC2
Mais, comme tu le dis on peut avoir une série de "conditions à rallonge"...
Exemple : tester tous les modules d'éclairage et les wall plug (si conso > 0) avant de partir de chez soi.
L'utilisation de tables d'id des interrupteurs et de wall plug et de l'instruction for.../... do est bien plus lisible et pratique (ajout de modules par exemple)
Autre exemple : grâce à un module virtuel sur HC2 je "pilotais" ma Squeezebox
J'ai trouvé sous Jeedom un excellent plugin, d'une qualité sans comparaison avec mon simple module virtuel.
Mais pour l'instant, il ne gère pas la fonction réveil. Si l'auteur a prévu une nouvelle version, il n'a pas que çà à faire ;)
En attendant, j'aimerais pouvoir écrire en PHP l'équivalent des quelques lignes de commandes "tcpSocket"

Bien sûr, je vais devoir me documenter sur PHP et apprendre à m'en servir, mais ton initative sera d'une très grande aide
Jeedom RC V4.011
* 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 : 1424
Inscription : 28 janv. 2016, 01:37
Localisation : Ile de France

Re: dev en cours: les scenarios en php

Message par dJuL » 13 avr. 2016, 18:21

J'ai un peu avancé aujourd'hui.
Je pense pouvoir vous filer un premier truc en test bientôt.
Faut que je me concentre bien sur les fonctions de bases, pour que les majs ne modifient pas la syntaxe des fonctions de base (afin que vous n'ayez pas à modifier vos codes).
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
ovski
Timide
Messages : 100
Inscription : 12 mars 2016, 11:07
Localisation : Rambouillet

Re: dev en cours: les scenarios en php

Message par ovski » 13 avr. 2016, 18:36

Merci beaucoup djul pour ce beau boulot.
Je me suis lancé le weekend dernier dans l'expérimentation des blocs Code, ce fil me sera d'une grande aide.
Merci.

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

Re: dev en cours: les scenarios en php

Message par dJuL » 14 avr. 2016, 03:39

Bon j'en ai remis une bonne couche.
C'est pas dur, j'ai intégré toutes les fonctions de jeedom disponibles dans un scénario !
Avec à chaque fois la possibilité de travailler avec soit les id soit les noms de façon totalement transparente.
Les seules fonctions qui ne seront pas dispo. dans un premier temps et qu'il faudra forcément utiliser en mode GUI c'est les blocs 'A' et 'DANS'
Bon ça ne gênera pas trop je pense.
J
'ai presque fini... Mais ça prend pas mal de temps de tout débuguer.
Je veux pas vous filer un truc pas bien testé.

Ce qui me fait peur c'est la doc, ça va être long à faire... et surtout bien chiant !
Par contre je vous rassure, niveau syntaxe ça ressemble de très très près à celle que vous utilisez habituellement dans les scénarios.
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.

drik56
Timide
Messages : 53
Inscription : 26 janv. 2016, 19:04

Re: dev en cours: les scenarios en php

Message par drik56 » 14 avr. 2016, 08:51

Comme claude je suis automaticien, donc un peu habitué au code mais ce que tu as fait m'intéresse.

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

Re: dev en cours: les scenarios en php

Message par i-magin » 14 avr. 2016, 09:24

Çà bosse dur @dJuL, vu l'heure de ton message ;)
Merci pour tout ce boulot !
Jeedom RC V4.011
* 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 » 14 avr. 2016, 09:28

i-magin a écrit :Çà bosse dur @dJuL, vu l'heure de ton message ;)
Merci pour tout ce boulot !
Tant que son avatar ne sature pas... :)
Jeedom v2.2.6 sur RPi2+razberry (Zwave)+RFXCom, Enocean et MySensors.
[TUTO]Index HP/HC avec pinces Ampèremétriques
Trucs&Astuces

nou
Actif
Messages : 554
Inscription : 17 mai 2015, 00:17

Re: dev en cours: les scenarios en php

Message par nou » 14 avr. 2016, 09:51

Très intéressant et intéressé
Une question : dans un bloc code, peut on interrompre le scénario (le stop quoi).

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

Re: dev en cours: les scenarios en php

Message par domoggvad » 14 avr. 2016, 10:13

Bonjour @dJuL
Tu as crée des fonctions, penses tu qu'on puisse intégré des fonctions à jeedom,
je m'explique:
une fonction sytle (beetwindate), connaitre le nombre de jours entre 2 dates (du jour et une date d'echéance), pour créer ces propre alertes à quelques jours d'un événement...
$dureedejour = (strtotime(#[Informations 2][Annive][Fiston]#) - strtotime($datedujour));
Merci
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
dJuL
Actif
Messages : 1424
Inscription : 28 janv. 2016, 01:37
Localisation : Ile de France

Re: dev en cours: les scenarios en php

Message par dJuL » 14 avr. 2016, 11:54

toregreb a écrit :
i-magin a écrit :Çà bosse dur @dJuL, vu l'heure de ton message ;)
Merci pour tout ce boulot !
Tant que son avatar ne sature pas... :)
Non ça va j'ai un limiteur. :mrgreen:
Bon il est un peu tolérant, mais pour l'instant il fait le taff....

nou a écrit :Très intéressant et intéressé
Une question : dans un bloc code, peut on interrompre le scénario (le stop quoi).
Oui bien sûr, on peut tout faire dans un bloc code, même bousiller jeedom :D
domoggvad a écrit :Bonjour @dJuL
Tu as crée des fonctions, penses tu qu'on puisse intégré des fonctions à jeedom,
je m'explique:
une fonction sytle (beetwindate), connaitre le nombre de jours entre 2 dates (du jour et une date d'echéance), pour créer ces propre alertes à quelques jours d'un événement...
$dureedejour = (strtotime(#[Informations 2][Annive][Fiston]#) - strtotime($datedujour));
Merci
Biensur, c'est aussi le but du projet, rajouté des fonctions utiles qui simplifient la vie,

En l'état actuel (sans création de fonction), ta ligne avec la classe deviendait :
$ecart_en_secondes = strtotime( sc::get('#[Informations 2][Annive][Fiston]#') ) - time();

Edit:
ou bien alors on peut aussi tout calculer avec le moteur d'expressions jeedom (y'a juste a copier coller vos expressions existantes du coup)
$ecart_en_secondes = sc::exp( 'strtotime(#[Informations 2][Annive][Fiston]#) - time()' );
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
dJuL
Actif
Messages : 1424
Inscription : 28 janv. 2016, 01:37
Localisation : Ile de France

Re: dev en cours: les scenarios en php

Message par dJuL » 14 avr. 2016, 12:30

dJuL a écrit :Edit:
ou bien alors on peut aussi tout calculer avec le moteur d'expressions jeedom (y'a juste a copier coller vos expressions existantes du coup)
$ecart_en_secondes = sc::exp( 'strtotime(#[Informations 2][Annive][Fiston]#) - time()' );
C'est là que ça devient cool, pouvoir utiliser toutes vos expressions déjà existantes directement (avec un log plus détaillé que celui d'origine).
Et ça permet surtout de construire vos expressions dynamiquement, dans des boucles ou avec des variables.
Ça donne énormément de possibilités...
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.

nou
Actif
Messages : 554
Inscription : 17 mai 2015, 00:17

Re: dev en cours: les scenarios en php

Message par nou » 14 avr. 2016, 19:25

Euh, et on fait comment pour interrompre un scénario ?
Et on fait comment pour tester ?

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

Re: dev en cours: les scenarios en php

Message par dJuL » 14 avr. 2016, 20:00

Pour tester il faut attendre que j'ai fini, je vais essayer de re-avancer dessus ce weekend

Edit: Sinon en attendant (et grossièrement) pour arrêter un scenario on peut faire :

$scenario_id = (int) Id du scenario

Code : Tout sélectionner

$actionScenario = scenario::byId($scenario_id);
if (is_object($actionScenario)) {
  $actionScenario->stop();
}
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.

nou
Actif
Messages : 554
Inscription : 17 mai 2015, 00:17

Re: dev en cours: les scenarios en php

Message par nou » 14 avr. 2016, 23:29

top, merci

de nouveaux horizons s'ouvrent !

sur ma Vera, 100 % des scénarios étaient en Lua, avec des fonctions communes, etc,etc

Répondre

Revenir vers « Développements sur Jeedom »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité