Présentation benj29
Re: Présentation benj29
Merci
Envoyé de mon JSN-L21 en utilisant Tapatalk
Envoyé de mon JSN-L21 en utilisant Tapatalk
Re: Présentation benj29
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à :
Le script est un script BASH stocké sur mon jeedom :
(je supprime le précédent fichier et je dl le nouveau).
le scénario complet :
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.
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.
Le scénario en question :
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.
Plus particulièrement ici :
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 .
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
(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 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);
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);
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.
Plus particulièrement ici :
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 .
Re: Présentation benj29
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#
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#
Re: Présentation benj29
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
Pas compris ton equation.
Envoyé de mon JSN-L21 en utilisant Tapatalk
Re: Présentation benj29
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) 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
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) 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.
Re: Présentation benj29
Juste une petite correction en graswinhex a écrit : ↑24 juin 2019, 01:02tu 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#
Re: Présentation benj29
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, 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.
Re: Présentation benj29
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
tu caches a la lecture du design donc tous y est
pour montrer en jquery via une fonction
---
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
j'ai utilisé clip-path au lieu de hide/show pour un graphique car celui ci etait dimensionné bizarement (sur portable)
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>
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>
Re: Présentation benj29
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
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
Re: Présentation benj29
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
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
Re: Présentation benj29
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 ?
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 ?
Re: Présentation benj29
La réponse...
Envoyé de mon JSN-L21 en utilisant Tapatalk
Envoyé de mon JSN-L21 en utilisant Tapatalk
Re: Présentation benj29
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).
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).
-
- Timide
- Messages : 40
- Inscription : 31 août 2014, 15:59
Re: Présentation benj29
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
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
Re: Présentation benj29
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
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
Re: Présentation benj29
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/
J'ai aussi intégré les modifications que j'avais réalisé sur l'Hystou.
https://jeedom-facile.fr/index.php/2019 ... domotique/
Re: Présentation benj29
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 !
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 !
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.
Re: Présentation benj29
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
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
Re: Présentation benj29
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
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
Re: Présentation benj29
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
Envoyé de mon JSN-L21 en utilisant Tapatalk
Qui est en ligne ?
Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 17 invités