Ce Forum passera en lecture seule en janvier 2020
Image
Merci de vous rendre sur https://community.jeedom.com maintenant pour vos prochains postes ;)

Présentation benj29

JEEDOM et vous! Venez vous présenter et préseter votre installation domotique JEEDOM

benj29
Actif
Messages : 3975
Inscription : 26 mars 2017, 09:57
Contact :

Re: Présentation benj29

Message par benj29 » 23 juin 2019, 20:55

Grosse modification de mes scripts qui gèrent la partie PV.

Comme j'ai la possibilité de remontée la production par un compteur impulsion au tableau ou bien par l'API du fabriquant, j'ai le choix.
Forcément l'API c'est un peu n'importe quoi. Par moment, j'ai rien pendant des minutes, voir des heures, voir des jours !

Du coup, j'ai le choix et je choisis la méthode qui m'intéresse. Pour rappel, l'API est beaucoup plus précise.
Mon pulse lui a l'intérêt d'être FIABLE.

Pour rappel : compteur pulse par jeedouino.

Un premier scénario qui gère l'interface API par le script de remontée et traite les données de production de l'API et gère un problème de remontée par l'API

J'y ajoute le traitement du dernier élément et si le delta temps est supérieur à 2h je passe un petit interrupteur LED rouge/verte en défaillance et notification télégram.
Le changement est que si j'ai un énorme push dispo dans l'API (sur mes premiers essais, le temps réel < 5 min fonctionnait). Des fois j'ai constaté que je me prenais 3h de données d'un coup. Là mon code changé traite toutes les données et remet à jour l'historique de la courbe jeedom.

Je mets le code là :

Code : Tout sélectionner

// https://medium.com/@rukmalf/extracting-data-from-apsystems-inverters-8c2b8e8942b6

$json = file_get_contents("http://192.168.2.90/montheme/flux_aps.json");

$arr = json_decode($json, true);

//$scenario->setLog('***************************Fonction****************************'); 

// récupération des colonnes à traiter (time et power)
$times = $arr["data"]["time"];
$powers = $arr["data"]["power"];

// à commenter ensuite
//$scenario->setLog('***************************Affichage des times récupérés****************************'); 
//$scenario->setLog($times);
//$scenario->setLog('***************************Affichage des powers récupérés****************************'); 
//$scenario->setLog($powers);


// découpage des 2 colonnes extraites en supprimant les [ et autres guillemets
$etime = explode(",", str_replace('"', "", str_replace("[", "", str_replace("]", "", $times))));
$eqpow = explode(",", str_replace('"', "", str_replace("[", "", str_replace("]", "", $powers))));

// debug
//$scenario->setLog('***************************Affichage des times nettoyés****************************'); 
//$scenario->setLog($etime);
//$scenario->setLog('***************************Affichage des powers nettoyés****************************'); 
//$scenario->setLog($eqpow);

// on ajoute tous les éléments en historique (au cas où ça sort brut)
// récupération de l'ID
$cmdIdpower= cmd::byString("#[Consommation][Puissance Instantanée][Production (API)]#")->getId();
$cmdpower = cmd::byId($cmdIdpower);

//$sizetime=sizeof($etime);
//$scenario->setlog("taille time : $sizetime");
//$sizepow=sizeof($eqpow);
//$scenario->setlog("taille power : $sizepow");

for($i = 0; $i < sizeof($etime); $i++) {
     $timeread = date("Y-m-d H:i:s", strtotime("$etime[$i]"));  
     if ($timeread != "1970-01-01 01:00:00") {
        $cmdpower->addHistoryValue($eqpow[$i],$etime[$i]); 
        $scenario->setLog("Ajout de la valeur $eqpow[$i] à $cmdIdpower pour $etime[$i]" );
     }
  	 else {
        $scenario->setLog("Pas de valeur à ajouter" );
     }
}

// dernier élément de temps
$fintime = end($etime);
// adaptation du format date pour le dernier élément de temps
$fintime = date("Y-m-d H:i:s", strtotime("$fintime")); 

// update graphique dernière valeur reformatée
$fintime = date("d/m@H:i", strtotime("$fintime")); 
$scenario->setData("last_time_api",$fintime);
$scenario->setLog("Dernière mise à jour à $fintime");

// notification en cas de problème
$maxTime = 7200; // temps en secondes - 2h maximum 
$deltamaxTime = time() - $fintime; // on calcule le delta
if ($deltamaxTime > $maxTime){ // si supérieur, alerte
   // -- /!\alert
   $monitor_api_value = 1;
   $scenario->setLog("Alerte de remontée API !"); // log
   } else
{
   $monitor_api_value = 0;
   $scenario->setLog("Check API OK !"); // log
}
$scenario->setData('monitor_api',$monitor_api_value); // et on passe à la variable pour jeedom
Le script est un script BASH stocké sur mon jeedom :
Image

(je supprime le précédent fichier et je dl le nouveau).

Code : Tout sélectionner

#!/bin/bash
sudo rm /var/www/html/montheme/flux_aps.json
curl -H "Content-Type: application/x-www-form-urlencoded" http://api.apsystemsema.com:8073/apsema/v1/ecu/getPowerInfo -d ecuId=MONIDdECU -d filter=power -d date=$1 -o /var/www/html/montheme/flux_aps.json
le scénario complet :

Image

Le second scénario calcule mes statistiques intelligemment, soit par le pulse, soit par l'API

La méthode est la même, la seule différence c'est que la donnée de production par l'API est déjà à 5min. Dans la première méthode, je calcule la moyenne sur 5min par pas de 5 min que ce soit sur la consommation ou la production.

Et ensuite je calcule :
- la production totale de la journée (ou en temps réel),
- la part de la production utilisée depuis la consommation (talon estimée ou production totale),
- le ratio d'autoconsommation utilisé : c'est à dire la part de la production de la toiture que j'ai pu utilisé (et donc le but est d'avoir 100%),

En fin de journée :
- je garde le chiffre total de la journée : ratio d'autoconso, production totale, production utilisée (et donc la part que j'ai donné au réseau gratuitement),
- et ensuite je calcule mon gain de la journée (x € TTC du kWh),
- le gain total, amortissement
- et enfin la part de ma consommation de la journée qui est sur la production et la part que j'ai consommé du réseau électrique - y a des surprises !

Ce scénario tourne de :
*/5 05-22 * * *
puis une dernière fois 50 23 * * *

Je regarde si je suis en défaillance d'API et soit je vais tourner le code suivant :

* calcul des moyennes à 5min sur le compteur pulse et le compteur linky,
* déduction du gain :
- si production nulle, aucun gain ;
- si production non nulle et que la consommation est nulle, le gain est le talon estimé ;
- si production non nulle et que la consommation n'est pas nulle, le gain est ma production totale.

Code : Tout sélectionner

// definition du talon
$talon=550;

// récupération de l'ID pour la production "précise" par API
$cmdIdprod= cmd::byString("#[Consommation][Puissance Instantanée][Production]#")->getId();
// récupération de l'ID pour la consommation @5min (calcul par scénario indépendant)
$cmdIdconso= cmd::byString("#[Capteurs et Actionneurs][Compteur Linky Garage][PAPP]#")->getId();

// définition des bornes de temps pour l'étude pour aujourd'hui (scénario lancé avant minuit)
$debut = date("Y-m-d H:i:s", strtotime("today"));
$fin = date("Y-m-d H:i:s", strtotime("today 23:59"));

// récupération de l'historique de la production API à 5min
//$allprod = history::all($cmdIdprodAPI, $debut, $fin);

// calcul du nombre de boucles : now - minuit par pas de 5 minutes et arrondi
$nowtoday = date("Y-m-d H:i:s");
$nowinit = date("Y-m-d 00:00:00");
$bouclemax = floor((strtotime($nowtoday) - strtotime($nowinit))/(5*60)); 
//$scenario->setLog("il est $nowtoday, j'ai donc $bouclemax boucles à calculer");

// récupération du talon de consommation le matin
$tempstalon = date("Y-m-d H:i:s", strtotime("today 05:55"));
$tempstalon5minbefore = date("Y-m-d H:i:s", strtotime("today 05:50"));
$ptalon = history::getStatistique($cmdIdconso, $tempstalon5minbefore, $tempstalon)["avg"];

// au cas où on vérifie si valeur erronée !
if ($ptalon > 750.0) {
  $ptalon = $talon;
  $scenario->setLog("Valeur du talon estimée : $talon");
}
else {
   $scenario->setLog("Valeur du talon mesurée : $ptalon");
}

// définitions
$gain = 0;
$prodtotale = 0;
// on démarre à minuit et minuit 5 donc !
$temps = date("Y-m-d H:i:s", strtotime("today 00:05"));
$temps5minbef = date("Y-m-d H:i:s", strtotime("today 00:00"));
$scenario->setLog("Temps up/down : $temps / $temps5minbef");

for ($i = 0; $i < ($bouclemax+1); $i++) {
   
    // calcul la consommation moyenne 5min avant jusqu'à la valeur de la production
  $pcons5min = history::getStatistique($cmdIdconso, $temps5minbef, $temps)["avg"];
  $pprod5min = history::getStatistique($cmdIdprod, $temps5minbef, $temps)["avg"];
  //$scenario->setLog("@ $temps - Prod : $pprod5min Conso : $pcons5min");
    
  // si prod = 0, le gain est 0
  // si prod != 0 alors si conso = 0 le gain est talon sinon gain est prod
  $gainup = 0;
  $pprodWh = $pprod5min * 0.08333;
  $prodtotale = $prodtotale + $pprodWh;
  
  if ($pprod5min == 0) {
     $gainup = 0;  
     $scenario->setLog("@ $temps - Prod nulle : $pprod5min alors $gain");
  }
  else if ($pcons5min == 0) {
    $gainup = $talon;
    $scenario->setLog("@ $temps - Prod non nulle : $pprod5min mais conso nulle $pcons5min alors talon $gain");
  }
  else {
    $gainup = $pprod5min;
    $scenario->setLog("@ $temps - Prod non nulle : $pprod5min mais conso non nulle $pcons5min alors prod $gain");
  }

  // calcul du gain en Wh : h x puissance 1 = 60 min alors 5 min = 0.08333
    
  // normalisation du gain
  //$scenario->setLog("GainW : $gainup");
  $gainup = $gainup * 0.08333;
  //$scenario->setLog("GainWh : $gainup");
  $gain = $gain + $gainup;
  //$scenario->setLog("Gain : $gain");
  //$scenario->setLog("Production totale : $prodtotale Wh");
  
  // décalage des bornes de temps
  $temps = date("Y-m-d H:i:s", (strtotime($temps)+(60*5)));
  $temps5minbef = date("Y-m-d H:i:s", (strtotime($temps5minbef)+(60*5)));
 
}

// debug global
$ratio = 100 * $gain / $prodtotale;

if ($ratio > 100.0) {
  $scenario->setLog("Ratio: $ratio limité à 100%");
  $ratio = 100;
}

$scenario->setLog("Gain Wh : $gain");
$scenario->setLog("Produit Wh : $prodtotale");
$scenario->setLog("Utilisé % : $ratio");

// passage par variable
$scenario->setData("gainproduction", $gain);
$scenario->setData("used_ratio", $ratio);
$scenario->setData("prodtotale", $prodtotale);
Dans l'autre cas, je base mon code sur la dispo de l'API pour ne pas fausser le calcul donc je prends l'échelle temps de l'API et je déduis mon pas 5min et les valeurs de la consommation. Après le principe reste le même.

Code : Tout sélectionner

// definition du talon
$talon=550;

// récupération de l'ID pour la production "précise" par API
$cmdIdprodAPI= cmd::byString("#[Consommation][Puissance Instantanée][Production (API)]#")->getId();
// récupération de l'ID pour la consommation @5min (calcul par scénario indépendant)
$cmdIdconso= cmd::byString("#[Capteurs et Actionneurs][Compteur Linky Garage][PAPP]#")->getId();
// contre mesure avec la production totale avec le pulse compteur temps réel (moins précis)
//$cmdIdprod= cmd::byString("#[Consommation][Production][Conso Jour TOTAL]#")->getId();

// définition des bornes de temps pour l'étude pour aujourd'hui (scénario lancé avant minuit)
$debut = date("Y-m-d H:i:s", strtotime("today"));
$fin = date("Y-m-d H:i:s", strtotime("today 23:59"));

// récupération de l'historique de la production API à 5min
$allprod = history::all($cmdIdprodAPI, $debut, $fin);

// récupération du talon quotidien - mesure premier élément de production
$timetalon = $allprod[0]->getDatetime();
$tempstalon = date("Y-m-d H:i:s", strtotime($timetalon));
$tempstalon5minbefore = date('Y-m-d H:i:s',strtotime('-5 minutes',strtotime($timetalon)));
$ptalon = history::getStatistique($cmdIdconso, $tempstalon5minbefore, $tempstalon)["avg"];

// au cas où on vérifie si valeur erronée !
if ($ptalon > 750.0) {
  $ptalon = $talon;
  $scenario->setLog("Valeur du talon estimée : $talon");
}
else {
   $scenario->setLog("Valeur du talon mesurée : $ptalon");
}

// taille à analyser
//$taille_conso = count($allcons);
//$taille_prod = count($allprod);
//$scenario->setLog("Taille conso : $taille_conso & Taille prod : $taille_prod");
// conclusion : c'est la conso le driver mais on prend comme driver la production CAR le gain n'existe que si la production démarre

// définitions
$gain = 0;
$prodtotale = 0;

for ($i = 0; $i < count($allprod); $i++) {
  // on récupère la valeur de la production et on s'arrête à l'avant dernier item sur la boucle for < pour tenir compte de la consommation à postériori
  $pprod = $allprod[$i]->getValue(); 
  // on récupère son temps
  $pprodtime = $allprod[$i]->getDatetime();
  // debug affichage
  //$scenario->setLog( "date : $pprodtime valeur : $pprod ");
  
  // déduction des bornes temps à 5min
  $temps = date("Y-m-d H:i:s", strtotime($pprodtime));
  $temps5minbef = date('Y-m-d H:i:s',strtotime('-5 minutes',strtotime($pprodtime)));
  
  // calcul la consommation moyenne 5min avant jusqu'à la valeur de la production
  $pcons5min = history::getStatistique($cmdIdconso, $temps5minbef, $temps)["avg"];
  
  // si prod = 0, le gain est 0
  // si prod != 0 alors si conso = 0 le gain est talon sinon gain est prod
  $gainup = 0;
  $pprodWh = $pprod * 0.08333;
  $prodtotale = $prodtotale + $pprodWh;
  
  if ($pprod == 0) {
     $gainup = 0;  
     //$scenario->setLog("@ $temps - Prod nulle : $pprod alors $gain");
  }
  else if ($pcons5min == 0) {
    $gainup = $talon;
    //$scenario->setLog("@ $temps - Prod non nulle : $pprod mais conso nulle $pcons5min alors talon $gain");
  }
  else {
    $gainup = $pprod;
    //$scenario->setLog("@ $temps - Prod non nulle : $pprod mais conso non nulle $pcons5min alors prod $gain");
  }

  // calcul du gain en Wh : h x puissance 1 = 60 min alors 5 min = 0.08333
    
  // normalisation du gain
  //$scenario->setLog("GainW : $gainup");
  $gainup = $gainup * 0.08333;
  //$scenario->setLog("GainWh : $gainup");
  $gain = $gain + $gainup;
  //$scenario->setLog("Gain : $gain");
  //$scenario->setLog("Production totale : $prodtotale Wh");
}

// debug global
$ratio = 100 * $gain / $prodtotale;

if ($ratio > 100.0) {
  $scenario->setLog("Ratio: $ratio limité à 100%");
  $ratio = 100;
}

$scenario->setLog("Gain Wh : $gain");
$scenario->setLog("Produit Wh : $prodtotale");
$scenario->setLog("Utilisé % : $ratio");

// passage par variable
$scenario->setData("gainproduction", $gain);
$scenario->setData("used_ratio", $ratio);
$scenario->setData("prodtotale", $prodtotale);
Le scénario en question :

Image

Forcément le soir, j'annonce les résultats.

D'ici quelques jours, je modifierai mon tableau de suivi des usages pour y ajouter le suivi du ratio d'autoconsommation et la production utilisée.

Petite question pour ceux qui m'ont lu jusqu'au bout.
Je cherche à masquer / afficher un graphique sur le design en fonction de l'état de la disponibilité de l'API.

Par le scénario c'est facile pour un équipement.
Mais là j'aimerai soit afficher la courbe de production par le compteur pulse, soit celle par API.
Et je ne trouve pas comment faire cela dans le design depuis un scénario.

Image

Plus particulièrement ici :
Image

je voudrais masquer la courbe rouge du graphique et mettre celle du pulse à la place. Et vice versa dès que la donnée API est dispo.
On voit bien que l'API est dispo aujourd'hui jusqu'à 11h55.... alors que mes calculs eux ont fonctionné sur le pulse :).

winhex
Actif
Messages : 3774
Inscription : 23 janv. 2015, 01:41

Re: Présentation benj29

Message par winhex » 24 juin 2019, 01:02

tu parles de graphique ou de courbe ?
courbe je ne pense pas la chose faisable.

pour ton cas reunir les 2 selon l'actualisation
variable incrémente sur virtuel
ou event
ton scenario avec les 2 retours (pulse/api)
dans la valeur de la variable ou event
valuedate(#api#,U)<300?#api#:#pulse#

benj29
Actif
Messages : 3975
Inscription : 26 mars 2017, 09:57
Contact :

Re: Présentation benj29

Message par benj29 » 24 juin 2019, 05:33

Je parle de l'objet graphique un peu comme masquer afficher un équipement sur le dashboard.

Pas compris ton equation.

Envoyé de mon JSN-L21 en utilisant Tapatalk


winhex
Actif
Messages : 3774
Inscription : 23 janv. 2015, 01:41

Re: Présentation benj29

Message par winhex » 24 juin 2019, 16:43

formule de programmation
A>B?1:0
A et plus grand que B
oui = 1
sinon = 0

le but est de réunir les 2 selon la remonté
pour exemple saisi dans le testeur d'expression.
valueDate(#[...][....[api],U)>300
U = format timestramp
300 = secondes pour 5 mn
tu auras true ou false
continue avec le testeur
valueDate(#[...][....[api]#,U)<300?1:0
tu auras 1 ou 0 (j'utilise se retour binaire avec les nut sur le rssi)
remplaces 1 ou 0
par ton équipement #[...][....[api]# et ton pulse

cette formule fonctionne en html
(utilisé lorsque tu affiche la dernière remonté d'un widget)
si secondes < 60 montre le texte secondes
si minute ...

fonctionne aussi en PHP (ligne 69)
Screenshot_20190624-163556_Chrome.jpg
Screenshot_20190624-163556_Chrome.jpg (72.59 Kio) Consulté 1359 fois
si position est plus petit que 0
position = 0
sinon
si position est plus grand que 100
position = 100
sinon position = position
pour résultat
47 = 47
-5 = 0
102 = 100

ça te parlera peut être mieux
la correspondance if/else if/else
if ($position < 0){
$position = 0;
} else if ($position > 100){
$position = 100;
} else {
$position = $position;
}

afficher/cacher un graphique
ça passerai par widget (dans le script de celui ci) donc passage par un virtuel vide
si celui ci doit être commandé par un scenario
si valeur 1 affiche
si 0 caché le graph
1 et 0 étant non visible
Dernière édition par winhex le 24 juin 2019, 18:37, édité 1 fois.

Avatar de l’utilisateur
Poumi
Actif
Messages : 660
Inscription : 21 mars 2019, 22:41

Re: Présentation benj29

Message par Poumi » 24 juin 2019, 18:33

winhex a écrit :
24 juin 2019, 01:02
tu parles de graphique ou de courbe ?
courbe je ne pense pas la chose faisable.

pour ton cas reunir les 2 selon l'actualisation
variable incrémente sur virtuel
ou event
ton scenario avec les 2 retours (pulse/api)
dans la valeur de la variable ou event
#timestamp#-valuedate(#api#,U)<300?#api#:#pulse#
Juste une petite correction en gras

benj29
Actif
Messages : 3975
Inscription : 26 mars 2017, 09:57
Contact :

Re: Présentation benj29

Message par benj29 » 24 juin 2019, 22:26

J'ai un souci avec mon scénario de remontée des données par API qui ne marche pas ! Alors que les données sont présentes jusqu'à 14h. J'ai posté sur le sujet, bref, à voir si corrections dans ce que j'ai proposé.

Winhex, oui, l'idée serait de masquer le graphique complet et d'afficher un autre (celui du pulse plutôt que celui de l'API).
Mais par contre, on peut masquer/afficher un équipement. Pas un graphique. Ou alors je ne l'ai pas vu !
Si tu peux me montrer. J'utilise déjà l'affichage/masquage/activer/désactiver mais cela ne marche que sur les équipements (dashboard et donc design), pas les graphiques d'un design.

winhex
Actif
Messages : 3774
Inscription : 23 janv. 2015, 01:41

Re: Présentation benj29

Message par winhex » 24 juin 2019, 23:54

merci Poumi pour la correction

j'ai répondu sur l'autre sujet

comment dans un design je cache un graph vu qu'il n'a pas d'id n'y de commande api (enfin je crois)
viewtopic.php?f=24&t=45317&p=733527&hil ... er#p730401
il a évolué dans les commandes css/jquery

la c'est pas un widget mais sur le principe c'est le même

tu mets dans un design test 2 graph
dans un html (qui pourra être ton widget par la suite) tu cherches à caché un graph
via css recherche le data plan pour moi 709

Code : Tout sélectionner

<style>
/* presence 662 / HistoExt 709 / HistoLexique 710 / temperature 707 */
 [data-plan_id="662"], [data-plan_id="710"] ,[data-plan_id="707"] { 
display:none;
  }
    /* methode clip-path https://bennettfeely.com/clippy/ */
[data-plan_id="709"] { 
   position: absolute !important;
-webkit-clip-path: inset(5% 64% 95% 37%);
clip-path: inset(5% 64% 95% 37%);
      }
      </style>
tu caches a la lecture du design donc tous y est

pour montrer en jquery via une fonction

Code : Tout sélectionner

var HistoExt = $('[data-plan_id="709"]');
HistoExt.show().css('clip-path','none');
---
rapidement pout test un bouton html pour cacher le graph 795
et lorsque tu clics tu le vois
et lorsque tu fais un double clic il disparait de nouveau

Code : Tout sélectionner

<div>
  <style>
    [data-plan_id="795"] { 
       position: absolute !important;
-webkit-clip-path: inset(5% 64% 95% 37%);
clip-path: inset(5% 64% 95% 37%);
      }
      </style>
  </style>
<button class="btn" ondblclick="test2();"onclick="test();">1clic / 2 clic = montre/cache pour le graph 795</button>
<script>
  var graph795 = $('[data-plan_id="795"]');
function test() {

graph795.show().css('clip-path','none');
  };
  function test2() {

graph795.hide();
  };
</script>
  </div>
j'ai utilisé clip-path au lieu de hide/show pour un graphique car celui ci etait dimensionné bizarement (sur portable)

module
Timide
Messages : 43
Inscription : 03 mai 2016, 09:04

Re: Présentation benj29

Message par module » 29 juin 2019, 17:07

Bonjour

Un rapide passage pour te remercier du boulot et du partage, je suis trèèès loin d'avoir quelque chose d'aussi abouti, mais c'est très inspirant quand on commence à s'y intéresser. J'ai encore bcp à lire (ici ou sur ton blog).

Une question de novice en passant : comment se gère la taille des polices sur la partie design ? Je suis sans doute passé à côté de quelque chose d'évident, mais à ce jour, j'arrive bien à afficher les infos des virtuels créés pour ça, sans trouver où jouer avec la taille de la police :oops:

benj29
Actif
Messages : 3975
Inscription : 26 mars 2017, 09:57
Contact :

Re: Présentation benj29

Message par benj29 » 29 juin 2019, 23:37

Merci. Tu peux régler directement la taille dans l'ajout texte image. Tu as un champ pour.
Sinon il te faut éditer la balise textsize ou un truc comme ça. Regarde sur le blog je donne le texte de base html sur un article avec le size à 12 ou 14 de mémoire.

Envoyé de mon JSN-L21 en utilisant Tapatalk


module
Timide
Messages : 43
Inscription : 03 mai 2016, 09:04

Re: Présentation benj29

Message par module » 30 juin 2019, 09:43

Merci pour ces pistes ! ( j'ai en effet trouvé qq chose en jouant avec la balise "Taille du widget" dans les paramètres d'affichage, en mode edition du design).
Les possibilités sont impressionnantes (je tournais sur le dashboard depuis un moment, mais c'est très tentant d'aller (bcp) plus loin avec le design).
Je commence à me dire qu'une tablette murale serait sympa.... Suis-je foutu ? :lol:


benj29
Actif
Messages : 3975
Inscription : 26 mars 2017, 09:57
Contact :

Re: Présentation benj29

Message par benj29 » 02 juil. 2019, 17:39

Deux petites questions pour les plus motivés !

Régulation temporelle vs hystérésis :
viewtopic.php?f=89&t=46144

Détection de mouvement fiabilisée :
viewtopic.php?f=59&t=46168

Si jamais il y a du monde qui peut m'aider, je prends !

(après pour le premier point, je suis plutôt content de la régulation par hyst. pour la clim au final).

picatchoume
Timide
Messages : 40
Inscription : 31 août 2014, 15:59

Re: Présentation benj29

Message par picatchoume » 22 juil. 2019, 15:40

Bonjour,
je viens d'acheter la box APS ecu-r et effectivement il y a des informations qui ne sont pas remontées, je me suis apercu que sur la box le voyant du nuage n'est plus activé, en la redémarrant toutes les informations sont remontées et ca refonctionne,
merci pour les informations je vais essayé de mettre cela en place

benj29
Actif
Messages : 3975
Inscription : 26 mars 2017, 09:57
Contact :

Re: Présentation benj29

Message par benj29 » 22 juil. 2019, 20:56

Je dois dire que les pistes d'origine sont sympas que j'ai mises ici.

Mais j'ai très fortement développé mon plugin maison.

Je vais essayer de faire une vue globale.

Car la production remontée par la box est très loin de la réalité de l'amortissement de l'installation...

Envoyé de mon JSN-L21 en utilisant Tapatalk


benj29
Actif
Messages : 3975
Inscription : 26 mars 2017, 09:57
Contact :

Re: Présentation benj29

Message par benj29 » 31 août 2019, 17:34

Nouvel article sur le blog pour la supervision et le pilotage de votre serveur domotique par un second Jeedom.
J'ai aussi intégré les modifications que j'avais réalisé sur l'Hystou.

https://jeedom-facile.fr/index.php/2019 ... domotique/

Avatar de l’utilisateur
JohnDoe
Timide
Messages : 58
Inscription : 09 sept. 2017, 10:56

Re: Présentation benj29

Message par JohnDoe » 14 sept. 2019, 20:16

Bonjour benj29 et merci pour le super tuto de surveillance!!
Toutefois, j'aurais deux questions svp:
-pour ce qui est du script de surveillance des antennes Blea, j’ai bien créé mon scénario code avec le script modifié de juillet, mais dans les variables créés, mes antennes remontent toujours a 0, alors qu'elles sont ok, est-ce normal?
-pourquoi, lors de la création des commandes du virtuel Blea, doit on cocher “inversé” svp?
Merci pour les réponses !
Image
Nuc Intel NUC8I3BEH avec Proxmox VM, 2 antennes BLEA, RFlink, Clé Zwave Aeon Stick gen5, 2 centrales Xiaomi avec 24 capteurs, 2 modules Fibaro, 4 Nut find 3, 4 caméras.

benj29
Actif
Messages : 3975
Inscription : 26 mars 2017, 09:57
Contact :

Re: Présentation benj29

Message par benj29 » 14 sept. 2019, 21:52

De mémoire le nom de la variable interne du démon a changé. Faut que je regarde.

Mais sur la dernière version du plugin tu as la gestion auto de chaque démon d'antenne donc cela perd un peu son intérêt.

Ensuite l'inverse est à cause du widget que j'utilise. J'avais mis l'inverse car je l'utilise aussi pour indiquer quand l'alarme est mise. Si 1 ça clignote. Alors qu'ici c'est quand le démon est off qu'on est à 0 et que l'on veut que cela clignote...

Envoyé de mon JSN-L21 en utilisant Tapatalk


jcamus86
Timide
Messages : 7
Inscription : 05 juil. 2018, 21:46

Re: Présentation benj29

Message par jcamus86 » 19 sept. 2019, 12:22

Bonjour Benj29,
Merci pour tes tutos ! J'ai beaucoup avancé dans mes designs grâce à eux.
Ayant réalisé quelques widgets en m'inspirant des tiens, je me demande comment va se passer la transition en Jeedom v4.
As tu testé de ton côté ?
Merci

benj29
Actif
Messages : 3975
Inscription : 26 mars 2017, 09:57
Contact :

Re: Présentation benj29

Message par benj29 » 19 sept. 2019, 13:07

Merci. Je m'y refuse. Ce n'est pas une officielle et la migration des plugins se fait peu à peu. Donc ma tactique est de faire les choses dans l'ordre. Et surtout je ne touche pas à ma production qui tourne tous les jours sans encombre

Envoyé de mon JSN-L21 en utilisant Tapatalk


Répondre

Revenir vers « Présentation et Vitrine d'installations »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 3 invités