Page 2 sur 20

Re: dev en cours: les scenarios en php

Publié : 12 avr. 2016, 18:29
par toregreb
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.

Re: dev en cours: les scenarios en php

Publié : 12 avr. 2016, 18:49
par Claude69
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 ;)

Re: dev en cours: les scenarios en php

Publié : 12 avr. 2016, 20:48
par dJuL
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.

Re: dev en cours: les scenarios en php

Publié : 12 avr. 2016, 21:40
par Claude69
@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.

Re: dev en cours: les scenarios en php

Publié : 12 avr. 2016, 22:40
par dJuL
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...

Re: dev en cours: les scenarios en php

Publié : 13 avr. 2016, 11:59
par Morlock
Je ne pense pas que ceci est pour Claude69 vu son niveau, mais peut-être pour d'autres comme moi ça peut aider:
BasePHP

Re: dev en cours: les scenarios en php

Publié : 13 avr. 2016, 14:52
par i-magin
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

Re: dev en cours: les scenarios en php

Publié : 13 avr. 2016, 18:21
par dJuL
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).

Re: dev en cours: les scenarios en php

Publié : 13 avr. 2016, 18:36
par ovski
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.

Re: dev en cours: les scenarios en php

Publié : 14 avr. 2016, 03:39
par dJuL
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.

Re: dev en cours: les scenarios en php

Publié : 14 avr. 2016, 08:51
par drik56
Comme claude je suis automaticien, donc un peu habitué au code mais ce que tu as fait m'intéresse.

Re: dev en cours: les scenarios en php

Publié : 14 avr. 2016, 09:24
par i-magin
Çà bosse dur @dJuL, vu l'heure de ton message ;)
Merci pour tout ce boulot !

Re: dev en cours: les scenarios en php

Publié : 14 avr. 2016, 09:28
par toregreb
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... :)

Re: dev en cours: les scenarios en php

Publié : 14 avr. 2016, 09:51
par nou
Très intéressant et intéressé
Une question : dans un bloc code, peut on interrompre le scénario (le stop quoi).

Re: dev en cours: les scenarios en php

Publié : 14 avr. 2016, 10:13
par domoggvad
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

Re: dev en cours: les scenarios en php

Publié : 14 avr. 2016, 11:54
par dJuL
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()' );

Re: dev en cours: les scenarios en php

Publié : 14 avr. 2016, 12:30
par dJuL
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...

Re: dev en cours: les scenarios en php

Publié : 14 avr. 2016, 19:25
par nou
Euh, et on fait comment pour interrompre un scénario ?
Et on fait comment pour tester ?

Re: dev en cours: les scenarios en php

Publié : 14 avr. 2016, 20:00
par dJuL
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();
}

Re: dev en cours: les scenarios en php

Publié : 14 avr. 2016, 23:29
par nou
top, merci

de nouveaux horizons s'ouvrent !

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