Comme annoncé, ce forum est passé en lecture seule au 1er janvier 2020. Désormais nous vous invitons à vous rendre sur notre nouvelle page communauté :
Image

A très bientôt !

[Tuto] Petites Commandes PHP utiles en Scénario Jeedom

Bosquetia
Actif
Messages : 6783
Inscription : 10 mai 2016, 07:54

[Tuto] Petites Commandes PHP utiles en Scénario Jeedom

Message par Bosquetia » 28 déc. 2017, 13:55

Bonjour à toutes et tous,

Tout d'abord, merci @Winhex pour ce tuto que je vous partage aujourd'hui ;)

Code : Tout sélectionner

$cmd = cmd::byString("#[EQUIPEMENT]#");
ou
$cmd = cmd::byId($ID);
résultat dans variable

Code : Tout sélectionner

test_php
Pour récupérer une valeur

Code : Tout sélectionner

$cmd = cmd::byString("#[Maison][Motion Sensor Couloir][Présence]#");
$value = $cmd->execCmd();
$scenario->setData("test_php", $value);
Récupérer la valeur et la date de derniere mise à jour

Code : Tout sélectionner

$cmd = cmd::byString("#[sondes][Sondes SdB][Humidité]#");
$value = $cmd->execCmd();
$collectDate = $cmd->getCollectDate(); 
$scenario->setData("test_php", $collectDate);
Pour modifier une valeur

Code : Tout sélectionner

$cmd::byId(471)->event("ma_valeur");
ou
$cmdC = "#[Appart][Elec][Test]#";
$cmd = cmd::byString($cmdC);
$cmd->event(("100"));
ou
cmd::byString("#[EQUIPEMENT]#")->event(("100"));
pour cacher une info

Code : Tout sélectionner

$o=cmd::byId(1647);
$o->setIsVisible(0); // valeur à 1 pour rendre visible
$p=$o->save();
pour cacher un objet

Code : Tout sélectionner

$o=eqLogic::byId(IDOBJECT);
$o->setIsVisible(1);                       ou 0 pour rendre non visible
$p=$o->save();
ou qui marche chez certains

Code : Tout sélectionner

$o=object::byId(2);
$o->setIsVisible(0);
$p=$o->save();
pour cacher et desactiver un scénario

Code : Tout sélectionner

$o=scenario::byId(29);
$o->setIsVisible(0);
$o->setIsActive(0);
$p=$o->save();
pour connaitre (équipement, objet, scénario)

Code : Tout sélectionner

$cmd=scenario::byId(78);
$visible = $cmd->getIsVisible();
$Active = $cmd->getIsActive(); // ne fonctionne pas pour equipement 
$scenario->setData("test_php", $visible);
ou
$scenario->setData("test_php", scenario::byString("#[test expression]#)->getIsVisible());

variable (attribué 0)

Code : Tout sélectionner

$Variable_J = "#nom#";
$scenario->setData($Variable_J, '0');
récupérer la valeur d'une variable

Code : Tout sélectionner

$Variable_J = "#nom#";
$tabJ = $scenario->getData($Variable_J);

Action

pour piloter une commande

Code : Tout sélectionner

$commande='#[test][setdate][on]#';
$cmd = cmd::byString($commande);
$cmd->execCmd();


Pour exécuter une commande action avec message: thk @yoguiti

Code : Tout sélectionner

$cmd=cmd::byString('#[MAISON][TEST][nom]#');
$cmd->execCmd($options=array('title'=>'Jeedom', 'message'=> "Bla Bla bla"), $cache=0);
Lancer un scénario

Code : Tout sélectionner

$scenario = scenario::byId(ID);
$scenario->launch();
pour arrêter un scenario on peut faire

Code : Tout sélectionner

$scenario = scenario::byId(ID);
$scenario->stop();
Pour modifier l'historique

Code : Tout sélectionner

$cmd = cmd::byId(773);
$cmd->addHistoryValue(  0,   $_datetime = '2016-06-02 08:30:00') ;
$cmd->addHistoryValue(  1,   $_datetime = '2016-06-02 09:30:00') ;
Pour rechercher une valeur

Code : Tout sélectionner

$cmdId = cmd::byString("#[sondes][Sondes SdB][Humidité]#")->getId();
$debut = date("Y-m-d H:i:s", strtotime("Yesterday"));
$fin = date("Y-m-d H:i:s", strtotime("-10 min"));  

$value = history::getStatistique($cmdId, $debut, $fin)["last"];

$scenario->setData("test", $value);

Plusieurs index possibles : avg, min, max, sum, count, std, variance, last

__ exemple __
tous les soir à 23h59
commande cmdj / variable J
récupération de la variable J
attribué la valeur à la commande cmdj
mettre la variable à 0

Code : Tout sélectionner

$cmdJ1 ="#[Stat Chauffage][Stat Chauffage J+1 scenario][Allumer]#"; 
$Variable_J = "Stat chauffage J";
// variable d'hier
$tabJ = $scenario->getData($Variable_J);
// affichage N-1
$cmd = cmd::byString($cmdJ1);
$cmd->event(($tabJ));
// variable à 0
$scenario->setData($Variable_J, '0');
attribuer l'heure de l’exécution du scénario

Code : Tout sélectionner

$cmdC ="#[Cuisine][VR Cuisine][Le]#"; // Id 486
$temp = date('d-m à H:i');
$cmd = cmd::byString($cmdC);
$cmd->event(($temp));
déclencher toutes les 15mn
si retour de la sonde dépasse 10 mn affecté la valeur binaire

Code : Tout sélectionner

$_cmd = "262"; // sondes temp chambre adrien rfx

$mkt=mktime();
$tmp = scenarioExpression::collectDate($_cmd, $_format = 'U');
$tmp2 = ($mkt - $tmp);
if ($tmp2 < 600) {
$cmd =cmd::byId(921);
$cmd->event((1)); // OK
} else {
$cmd =cmd::byId(921);
$cmd->event((0)); // NOK
}
idem avec detecteur de porte en affectant une variable en plus

Code : Tout sélectionner

$_cmd = "296"; // Porte Entree rfx

$mkt=mktime();
$tmp = scenarioExpression::collectDate($_cmd, $_format = 'U');
$tmp2 = ($mkt - $tmp);

if ($tmp2 < 43200) {
$scenario->setData('Kontrol_Porte_Entr', "1"); // OK SCENARIO
$cmd =cmd::byId(471); // Detecteur Porte Entr
$cmd->event((1)); // OK
} else {
$scenario->setData('Kontrol_Porte_Entr', "0"); // NOK SCENARIO
$cmd =cmd::byId(471); // Detecteur Porte Entr
$cmd->event((0)); // NOK
}
récupérer la dernière valeur d'une commande "hier"

Code : Tout sélectionner

$cmdId = cmd::byString("#[Z][X][value]#")->getId();
$debut = date("Y-m-d H:i:s", strtotime("Yesterday"));
$fin = date("Y-m-d H:i:s", strtotime("Today"));  
$all = history::all($cmdId, $debut, $fin);
$value = count($all) ? $all[count($all) - 1]->getValue() : null;
variable dans variable
viewtopic.php?f=27&t=19351&p=347602#p347602

variable dans une fonction
viewtopic.php?f=32&t=17908&p=322540#p322540

pour aller plus loin le tuto reveil ou scénario heure levée/couché de soleil
Ou encore plus loin (pour connaisseur)

[Framework SC] les scenarios en php
viewtopic.php?f=27&t=17645&hilit=framework+php

Verrouillé

Revenir vers « Tutoriels »

Qui est en ligne ?

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