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

[S'inspirer] Postez votre Plan / Design

JEEDOM et vous! Venez vous présenter et préseter votre installation domotique JEEDOM
GuillaumeDieppe
Actif
Messages : 630
Inscription : 27 janv. 2017, 10:53

Re: [S'inspirer] Postez votre Plan / Design

Message par GuillaumeDieppe » 23 janv. 2018, 14:53

Petite question : J'ai lu un témoignage racontant qu'il avait rassemblé toutes ses tuiles sur un seul grand Design pour éviter les temps de chargement trop longs d'une page Design à l'autre. J'ai donc fait le même choix mais lorsque j'actualise la page Design sur ma tablette en wifi, cela prend au moins 10 secondes, ce qui est trop long... Comment faites vous pour avoir un affichage plus rapide ?
Jeedom Smart
Protocoles : Z-wave, Zigbee, Wifi et IR
Objets : Qubinos, Fibaros, Xiaomis

Sartog
Timide
Messages : 499
Inscription : 27 août 2015, 14:54

Re: [S'inspirer] Postez votre Plan / Design

Message par Sartog » 23 janv. 2018, 15:06

@GuillaumeDieppe,

Sous réserve d'avoir bien compris, je pense qu'il voulait dire que ça lui permettait d'éviter de devoir changer de page pour chaque menu (impliquant un chargement).
L'affichage unique génère invariablement un temps de chargement plus long (dépendant de la tablette, du wifi, du hardware faisant tourner Jeedom, etc.) mais une fois fait il est tranquille car il n'a plus besoin de faire un refresh.
Box : smart, mini+, pi 2 et 3, ipbx800 v4
Protocole : Z-Wave (Fibaro & Qubino), Ikea, Bluetooth
Méteo : Netatmo
Audio : Sonos (Play 1 et 5)

GuillaumeDieppe
Actif
Messages : 630
Inscription : 27 janv. 2017, 10:53

Re: [S'inspirer] Postez votre Plan / Design

Message par GuillaumeDieppe » 23 janv. 2018, 15:23

OK oui c'était bien cela le point : temps de chargement trop longs donc volonté de tout rassembler sur une seule page.
Merci pour la remarque de la non nécessité de refresher régulièrement la page, en espérant que les données soient bien actualisées systématiquement
Jeedom Smart
Protocoles : Z-wave, Zigbee, Wifi et IR
Objets : Qubinos, Fibaros, Xiaomis

Swatmorpheus
Actif
Messages : 891
Inscription : 23 avr. 2015, 14:38
Localisation : Haute Gironde

Re: [S'inspirer] Postez votre Plan / Design

Message par Swatmorpheus » 23 janv. 2018, 17:04

C'est bizarre moi mes temps de chargement ne sont pas long et mes refresh fonctionnent sans actualiser
Prod: jeedom V3.2.12 DIY RPI3 + Zwave (fibaro) + Zigbee (xiaomi) + IPXV4 + X4VR
AppleTV4k
PI3 : Max2play
PiZéro: PiCoreplayer
Mini+: OpenElec 7.0.1 Kodi 16.1 Jarvis
En préinstall pour migration: Nuc hystou ,ESXi6.7,jeedom V3.2.12, LMS ,Owncloud

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

Re: [S'inspirer] Postez votre Plan / Design

Message par benj29 » 24 janv. 2018, 16:55

Je profite de mettre mes designs téléphones...

Je suis encore en train de développer mes designs tablette domotique...
La partie téléphone était la plus importante déjà et la plus simple pour madame au quotidien aussi.

7 écrans affichables sur un tél 5.2/5.5 pouces (il faut scroller bas sur le tél 5.2 mais je ne vois pas faire 12 designs lol pour des téléphones).

Ecran de synthèse :
Image

Ecran des trajets pour retour maison :
Image

Ecran pour gestion caméra et des ouvrants d'accès :
Image

Ecran pour la gestion des plannings des chauffages (sont sur agenda), dérogation, présence du fiston :
Image

Ecran des consommations (il reste la partie eau pour en bas, le jour où j'attaque la photodiode du compteur de flotte) avec les principaux usages électriques de la maison :
Image

Ecran des actions possibles dans la maison et de la piscine (activation de la filtration la nuit, gestion de l'hivernage/saison, filtration de 20 min), réveil du PC distant, etc.
Image

Ecran de suivi du système global (pas pour madame :p) et des autres systèmes domotiques (incendie, inondation, vmc etc) :
Image

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

Re: [S'inspirer] Postez votre Plan / Design

Message par domoggvad » 24 janv. 2018, 17:42

Très bien réussi, bravo, complet pour une domotique.
Comment tu as procédé pour la partie thermostat ?
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

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

Re: [S'inspirer] Postez votre Plan / Design

Message par benj29 » 24 janv. 2018, 17:58

Merci ;).
Je ne pense pas que ce soit le topic associé pour en discuter.
Je dois vraiment remettre ma présentation à jour.

Je gère deux ou trois types de planning par thermostat et par zone qui s'activent en fonction du mode sélectionné (A la maison, Travail+WE, dérogation, présence de mon fils ou autre).

La partie téléphone me permet simplement de changer de mode de chauffe (semaine), d'activer ou non la présence de mon fils, de déroger mes chauffages en cas de départ (pour ne pas chauffer inutilement), de tout arrêter (of course !).

Tout est basé sur des chacons (on/off avec consigne à 23° et capteurs xiaomi à plusieurs endroits et résumé pour la bonne température).

overkill
Timide
Messages : 144
Inscription : 22 févr. 2015, 16:55

Re: [S'inspirer] Postez votre Plan / Design

Message par overkill » 25 janv. 2018, 00:20

super beau benj29, j'adore :)
PC SERVEUR : VM VirtualBox Debian Jeedom Maitre (RFXCOM + TELEINFO + IPX800)
RPI3 + Module Zwaves (uniquement en mode antenne Zwave et liaison Jeedom link)
45 Modules Zwave :
23 Secteurs
22 Sur piles

Avatar de l’utilisateur
geo___
Timide
Messages : 126
Inscription : 27 mars 2016, 21:49
Localisation : Uzès (30)

Re: [S'inspirer] Postez votre Plan / Design

Message par geo___ » 25 janv. 2018, 00:27

Excellent, bravo, quel boulot !!

Envoyé de mon S60 en utilisant Tapatalk


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

Re: [S'inspirer] Postez votre Plan / Design

Message par benj29 » 25 janv. 2018, 06:11

Merci !

Après j'avoue que pour les tablettes domotique ça va être plus sportif car je n'arrive pas à voir un beau plan. Ça demande vraiment du boulot...

Envoyé de mon Moto G (5S) Plus en utilisant Tapatalk


stban1983
Timide
Messages : 148
Inscription : 15 août 2017, 18:00

Re: [S'inspirer] Postez votre Plan / Design

Message par stban1983 » 27 janv. 2018, 11:48

domoggvad a écrit :
24 janv. 2018, 17:42
Très bien réussi, bravo, complet pour une domotique.
Comment tu as procédé pour la partie thermostat ?
merci
Très sympa!
Je suis aussi intéressé par ton affichage des thermostats!

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

Re: [S'inspirer] Postez votre Plan / Design

Message par benj29 » 27 janv. 2018, 22:28

Je ne comprends pas trop ce que vous voulez sur la partie thermostat ?

A vrai dire, j'ai reconstruit un virtuel en me basant sur le thermostat d'origine car je le trouvais trop gros et pas pratique.

Image

Et ensuite j'ai réutilisé les commandes intéressantes pour le design.

La vue arrière du virtuel (il manque toutes les commandes, mais vous avez le principe) :

Image

La variable d'agenda est remise à jour toutes les 30 min via un scénario (vous avez le principe pour tous les modes de chauffage).

Image

Et enfin la gestion des modes est comme suit :

Un virtuel qui pilote un objet mode (plus propre) :

Image

Du coup, des modes, on pilote un scénario à chaque fois par mode, rien de très compliqué.
Je vous montre Absence (dérogation pour ne pas chauffer quand on est pas là) et un mode semaine+weekend.

Image

Et dans le principe, c'est pareil pour tout :
- je désactive les agendas qui ne sont pas utilisés,
- j'active ceux qui le sont,
- je teste la présence de mon fils pour activer le bon agenda en fonction,
- je lance la récupération de l'état de l'agenda de chauffe (pour mes designs plans à venir).

Image

Pour le mode absent, c'est plus simple, ce ne sont pas des agendas mais les thermostats.
On désactive les agendas (tous) et on active les thermostats en ABS.

Image

Par contre, petite astuce. Quand j'active la dérogation (via le switch on/off) pour éviter de me souvenir de l'agenda précédent de chauffe (en même temps c'est pas sorcier)... ce mode ABSENT est piloté par un scénario Dérogation =1 ou =0 (activation ou désactivation).
Et du coup je stocke le mode précédent pour le réactiver...

Image

Image

Du coup sur le design, on retrouve :
- la température de la pièce,
- le mode du thermostat (pas besoin de la consigne ici pour limiter la place),
- les commandes intéressantes (ami, salle de bains/eau j'ai juste besoin d'abs, off, confort...)
- les dérogations (par exemple quand mon fils n'est pas là, je maintiens sa chambre en eco ou abs, quand il est là, ça tourne en fonction des heures de sieste),
- les modes de chauffage.

eric186
Timide
Messages : 69
Inscription : 07 janv. 2017, 23:23
Localisation : 86

Re: [S'inspirer] Postez votre Plan / Design

Message par eric186 » 27 janv. 2018, 23:03

Bonsoir Benj29,
Bravo, très bien fait ton design mobile, tu as du passer du temps. Ca doit être pratique au quotidien pour la gestion distante et même locale du coup vu que nos téléphones nous quittent rarement...
Que fait ton «autorisation des vehicules»?


Envoyé de mon NXT-L29 en utilisant Tapatalk


eric186
Timide
Messages : 69
Inscription : 07 janv. 2017, 23:23
Localisation : 86

Re: [S'inspirer] Postez votre Plan / Design

Message par eric186 » 27 janv. 2018, 23:03

Bonsoir Benj29,
Bravo, très bien fait ton design mobile, tu as du passer du temps. Ca doit être pratique au quotidien pour la gestion distante et même locale du coup vu que nos téléphones nous quittent rarement...
Que fait ton «autorisation des vehicules»?


Envoyé de mon NXT-L29 en utilisant Tapatalk


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

Re: [S'inspirer] Postez votre Plan / Design

Message par benj29 » 27 janv. 2018, 23:19

Bonsoir,

Elle est activée/désactivée sur scénario passée une certaine heure (en off puis on) ou en présence.

Cette autorisation autorise l'ouverture portail / garage en fonction des véhicules (qui sont gérés indépendamment de l'alarme). Je préfère interdire l'arrivée de voiture pendant que nous ne sommes pas là et durant la nuit. Cela me coûte un appui sur une télécommande au cas où...

raphael_malin
Timide
Messages : 479
Inscription : 10 nov. 2014, 00:20
Localisation : Nouméa - Nouvelle-Calédonie

Re: [S'inspirer] Postez votre Plan / Design

Message par raphael_malin » 28 janv. 2018, 00:09

GEO a écrit :
21 janv. 2018, 23:16
Bonjour
je ne sais pas si il y a plus simple, mais pour ma part, j'ai modifié le code du widget et rajouté une ligne de code pour afficher en dessous la dernière activité.
Exemple
Capture.JPG

et son code modifié

Code : Tout sélectionner

<div style="width:100px;min-height:62px;" class="cmd #history# tooltips cmd-widget" data-type="info" data-subtype="numeric" data-cmd_id="#id#" title="#collectDate#">
    <center>
        <span class='cmdName' style="font-weight: bold;font-size : 12px;">#name#</span>
        <span style="font-size: 3em;font-weight: bold;margin-top: 5px;" id="iconCmd#id#"></span>
      
      <span class="timeCmd#uid#" style="background-color:#cmdColor# !important;padding : 3px;border-radius: 4px;"></span>
    </center>
    <script>
        jeedom.cmd.displayDuration('#valueDate#', $('.timeCmd#uid#'));
      if ('#state#' == '1' || '#state#' == 1) {
             $('#iconCmd#id#').append('<img src="plugins/widget/core/template/dashboard/cmd.info.binary.FibaroOeil/FibaroOeilNoirNew.png" />');
        }
        if ('#state#' == '0' || '#state#' == 0) {
             $('#iconCmd#id#').append('<img src="plugins/widget/core/template/dashboard/cmd.info.binary.FibaroOeil/FibaroOeilJauneNew.png" />');
        }  
      
      
    </script>
  	<style>
    img.FibraoImg#id# {
    	width: 80px;
    	height: 80px;
  	}
  </style>
</div>
Hello, j'ai piqué ton code, j'ai adapté pour la partie image, mais j'ai un léger décalage, que dois-je modifier comme valeur pour que ca soit bien à la ligne?

Merci
FireShot Capture 6 - Dashboard - Jeedom_ - http___192.168.1.200_index.php.png
FireShot Capture 6 - Dashboard - Jeedom_ - http___192.168.1.200_index.php.png (33.47 Kio) Consulté 1794 fois
Jeedom smart avec en général toutes les mises à jour faites (système et plugin)

jeewawa
Timide
Messages : 330
Inscription : 24 oct. 2014, 23:41

Re: [S'inspirer] Postez votre Plan / Design

Message par jeewawa » 28 janv. 2018, 11:16

benj29 a écrit :
24 janv. 2018, 16:55


Image

Salut, très beau travail. C'est sobre et efficace.

Tu partages ton code (cette page par exemple) ?

J'aimerais voir comment tu as fait pour :
- Menu de navigation du haut
- Le petit séparateur
- Un des petits encarts comme "courbe électrique"
Les css ?
Merci !
Smart Zwave avec RFXCom, RfPlayer et Teleinfo GCE ELECTRONICS

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

Re: [S'inspirer] Postez votre Plan / Design

Message par benj29 » 28 janv. 2018, 14:16

Hello,

Pour le menu, j'ai tenté plusieurs balises (je suis loin d'être un pro...). Je n'ai pas réussi à rendre coloré l'écran actif à mon grand regret.
Voilà le code.

Code : Tout sélectionner

<ul class="nav nav-pills nav-fill">
  <li class="nav-item">
    <a class="nav-link active" href="index.php?v=d&p=plan&plan_id=10"><i class="fa fa-home fa-lg" aria-hidden="true"></i></a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="index.php?v=d&p=plan&plan_id=12"><i class="fa fa-map-marker fa-lg" aria-hidden="true"></i></a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="index.php?v=d&p=plan&plan_id=13"><i class="fa fa-video-camera fa-lg" aria-hidden="true"></i></a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="index.php?v=d&p=plan&plan_id=14"><i class="fa fa-thermometer-three-quarters fa-lg" aria-hidden="true"></i></a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="index.php?v=d&p=plan&plan_id=16"><i class="fa fa-bolt fa-lg" aria-hidden="true"></i></a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="index.php?v=d&p=plan&plan_id=17"><i class="fa fa-lightbulb-o fa-lg" aria-hidden="true"></i></a>
  </li>
    <li class="nav-item">
    <a class="nav-link" href="index.php?v=d&p=plan&plan_id=18"><i class="fa fa-cogs fa-lg" aria-hidden="true"></i></a>
  </li>
</ul>
Kesako, le petit séparateur ?

Pour la courbe de charge électrique, faut rendre à César ce qui est à César, je ne suis pas un pro du PHP, c'est un super collègue de boulot qui m'a fait ça avec un code PHP. Il me semble d'ailleurs que quelqu'un sur ce fil avait proposé cette approche.

Il faut mettre un code PHP et modifier l'API et autres codes. Ca transforme une graphique en le renvoyant sans échelle et sur une durée de 24h dans mon cas.

Une iframe avec ce code :

Code : Tout sélectionner

<iframe  src="/chart.php?cmdId=5486&chartWidth=310&chartHeight=66" width="310" height="66" frameborder="0" scrolling="no" marginheight="0" marginwidth="0"></iframe>
où cmdId=X le numéro de l'info que tu veux afficher.
Le fichier chart.php est à mettre à l'endroit qui convient (ici à la racine de html de ton jeedom. Tu peux utiliser le plugin outils de développement ou un SFTP via Bitvise par exemple pour placer ton fichier.

Tu as deux fois à mettre ton API Jeedom (le code est certainement optimisable, je n'en ai ni les compétences, ni le temps) et la personne qui m'a aidé pour cela a été déjà super sympa de me montrer le principe.

Code : Tout sélectionner

<?php

class jsonrpcClient {
                /*     * ********Attributs******************* */

                private $errorCode = 9999;
                private $errorMessage = 'No error';
                private $error = 'No error';
                private $result;
                private $rawResult;
                private $apikey = 'XXXXXXXXXXXXXXXXXXX';
                private $options = array();
                private $apiAddr;
                private $cb_function = '';
                private $cb_class = '';
                private $certificate_path = '';
                private $noSslCheck = false;

                /*     * ********Static******************* */

                /**
                *
                * @param type $_apiAddr
                * @param type $_apikey
                * @param type $_options
                */
                public function __construct($_apiAddr, $_apikey, $_options = array()) {
                               $this->apiAddr = $_apiAddr.'/core/api/jeeApi.php';
                               $this->apikey = $_apikey;
                               $this->options = $_options;
                }
                /**
                *
                * @param type $_method
                * @param array $_params
                * @param int $_timeout
                * @param type $_file
                * @param int $_maxRetry
                * @return boolean
                */
                public function sendRequest($_method, $_params = null, $_timeout = 15, $_file = null, $_maxRetry = 2) {
                               $_params['apikey'] = $this->apikey;
                               $_params = array_merge($_params, $this->options);
                               $request = array(
                                               'request' => json_encode(array(
                                                               'jsonrpc' => '2.0',
                                                               'id' => mt_rand(1, 9999),
                                                               'method' => $_method,
                                                               'params' => $_params,
                                               )));
                               $this->rawResult = preg_replace('/[^[:print:]]/', '', trim($this->send($request, $_timeout, $_file, $_maxRetry)));

                               if ($this->rawResult === false) {
                                               return false;
                               }

                               if (!((is_string($this->rawResult) && (is_object(json_decode($this->rawResult)) || is_array(json_decode($this->rawResult)))))) {
                                               if ($this->error == 'No error' || $this->error == '') {
                                                               $this->error = '9999<br/>Reponse is not json : ' . $this->rawResult;
                                               }
                                               $this->errorMessage = $this->rawResult;
                                               return false;
                               }
                               $result = json_decode(trim($this->rawResult), true);

                               if (isset($result['result'])) {
                                               $this->result = $result['result'];
                                               if ($this->getCb_class() != '') {
                                                               $callback_class = $this->getCb_class();
                                                               $callback_function = $this->getCb_function();
                                                               if (method_exists($callback_class, $callback_function)) {
                                                                               $callback_class::$callback_function($this->result);
                                                               }
                                               } elseif ($this->getCb_function() != '') {
                                                               $callback_function = $this->getCb_function();
                                                               if (function_exists($callback_function)) {
                                                                               $callback_function($this->result);
                                                               }
                                               }
                                               return true;
                               } else {
                                               if (isset($result['error']['code'])) {
                                                               $this->error = 'Code : ' . $result['error']['code'];
                                                               $this->errorCode = $result['error']['code'];
                                               }
                                               if (isset($result['error']['message'])) {
                                                               $this->error .= '<br/>Message : ' . $result['error']['message'];
                                                               $this->errorMessage = $result['error']['message'];
                                               }
                                               return false;
                               }
                }

                private function send($_request, $_timeout = 15, $_file = null, $_maxRetry = 2) {
                               if ($_file !== null) {
                                               if (version_compare(phpversion(), '5.5.0', '>=')) {
                                                               foreach ($_file as $key => $value) {
                                                                               $_request[$key] = new CurlFile(str_replace('@', '', $value));
                                                               }
                                               } else {
                                                               $_request = array_merge($_request, $_file);
                                               }
                                               if ($_timeout < 1200) {
                                                               $_timeout = 1200;
                                               }
                               }
                               $nbRetry = 0;
                               while ($nbRetry < $_maxRetry) {
                                               $ch = curl_init();
                                               curl_setopt($ch, CURLOPT_URL, $this->apiAddr);
                                               curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                                               curl_setopt($ch, CURLOPT_HEADER, false);
                                               curl_setopt($ch, CURLOPT_TIMEOUT, $_timeout);
                                               curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
                                               curl_setopt($ch, CURLOPT_POST, true);
                                               curl_setopt($ch, CURLOPT_POSTFIELDS, $_request);
                                               curl_setopt($ch, CURLOPT_FORBID_REUSE, true);
                                               curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
                                               if ($this->getCertificate_path() != '' && file_exists($this->getCertificate_path())) {
                                                               curl_setopt($ch, CURLOPT_CAINFO, $this->getCertificate_path());
                                               }
                                               if ($this->getNoSslCheck()) {
                                                               curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
                                                               curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
                                               }
                                               $response = curl_exec($ch);
                                               $http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
                                               $nbRetry++;
                                               if (curl_errno($ch) && $nbRetry < $_maxRetry) {
                                                               curl_close($ch);
                                                               usleep(500000);
                                               } else {
                                                               $nbRetry = $_maxRetry + 1;
                                               }
                               }
                               if ($http_status == 301) {
                                               if (preg_match('/<a href="(.*)">/i', $response, $r)) {
                                                               $this->apiAddr = trim($r[1]);
                                                               return $this->send($_request, $_timeout, $_file, $_maxRetry);
                                               }
                               }
                               if ($http_status != 200) {
                                               $this->error = 'Erreur http : ' . $http_status . ' Details : ' . $response;
                               }
                               if (curl_errno($ch)) {
                                               $this->error = 'Erreur curl sur : ' . $this->apiAddr . '. Détail :' . curl_error($ch);
                               }
                               curl_close($ch);
                               return $response;
                }

                /*     * ********Getteur Setteur******************* */

                public function getError() {
                               return $this->error;
                }

                public function getResult() {
                               return $this->result;
                }

                public function getRawResult() {
                               return $this->rawResult;
                }

                public function getErrorCode() {
                               return $this->errorCode;
                }

                public function getErrorMessage() {
                               return $this->errorMessage;
                }

                public function getCb_function() {
                               return $this->cb_function;
                }

                public function getCb_class() {
                               return $this->cb_class;
                }

                public function setCb_function($cb_function) {
                               $this->cb_function = $cb_function;
                               return $this;
                }

                public function setCb_class($cb_class) {
                               $this->cb_class = $cb_class;
                               return $this;
                }

                public function setCertificate_path($certificate_path) {
                               $this->certificate_path = $certificate_path;
                               return $this;
                }

                public function getCertificate_path() {
                               return $this->certificate_path;
                }

                public function setDisable_ssl_verifiy($noSslCheck) {
                               $this->noSslCheck = $noSslCheck;
                               return $this;
                }

                public function getNoSslCheck() {
                               return $this->noSslCheck;
                }

                public function setNoSslCheck($noSslCHeck) {
                               $this->noSslCheck = $noSslCHeck;
                               return $this;
                }

}

$urlJeedom = "http://127.0.0.1:80";
$apiKey = "XXXXXXXXXXXXX";

$chartWidth = ( IsSet($_GET['chartWidth']) ? $_GET['chartWidth'] : 300 );
$chartHeight = ( IsSet($_GET['chartHeight']) ? $_GET['chartHeight'] : 115 );
$cmdId = ( IsSet($_GET['cmdId']) ? $_GET['cmdId'] : 1 );
// changer le forcage pour la durée d'affichage (voir plus bas)
$period = ( IsSet($_GET['period']) ? $_GET['period'] : 0 );

if ($period==1)
{
                $startTime=date("Y-m-d H:i:s",time()-24*60*60);
                $endTime=date("Y-m-d H:i:s",time());
}else{
                $startTime=date("Y-m-d",time())." 00:00:00";
                $endTime=date("Y-m-d H:i:s",time());
}


$jsonrpc = new jsonrpcClient($urlJeedom, $apiKey);
$data = array();
if($jsonrpc->sendRequest('cmd::getHistory', array('apikey' => $apiKey, 'id' => $cmdId, 'startTime' => $startTime, 'endTime' => $endTime ))) {
                foreach ($jsonrpc->getResult() as $result) {
                               $data[] = array("ts" => strtotime($result["datetime"]),"value"=> $result["value"]);
                }
} else {
    echo $jsonrpc->getError();
}
?>
<!DOCTYPE html>
<html>
<head>
                <meta http-equiv="Content-Language" content="fr" />
                <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> 
                <meta http-equiv="X-UA-Compatible" content="IE=edge">
                <meta name="viewport" content="width=device-width">
                <script src="https://code.highcharts.com/highcharts.js"></script>
                <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
</head>
<body>
                <script>
                               $(function () {
                                               var data = {name: 'command #<?= $cmdId;?>', data:[
<?php
                foreach ($data as $row){
                               echo "\t\t\t\t[Date.UTC(".date("Y",$row['ts']).",".(date("m",$row['ts'])-1).",".date("d",$row['ts']).",".date("H",$row['ts']).",".date("i",$row['ts']).",".date("s",$row['ts'])."),".$row['value']."],\n";
                }
?>
                                               ]};
                                               var myChart = Highcharts.chart('container', {
                                                               chart: {
                                                                               backgroundColor:'rgba(255, 255, 255, 0.0)',
                                                                               type: 'line'
                                                               },
                                                               title: {
                                                                               text: ''
                                                               },
                                                               xAxis: {
                                                                               type: 'datetime',
                                                                              lineWidth: 0,
                                                                               minorGridLineWidth: 0,
                                                                               lineColor: 'transparent',
                                                                               labels: {
                                                                                              enabled: false
                                                                               },
                                                                               minorTickLength: 0,
                                                                               tickLength: 0
                                                               },
                                                               plotOptions: {
                                                                               series: {
                                                                                              marker:{
                                                                                                              enabled: false
                                                                                              }
                                                                               }
                                                               },
                                                               yAxis: {
                                                                               title: {
                                                                                              text: ''
                                                                               },
                                                                               lineWidth: 0,
                                                                               minorGridLineWidth: 0,
                                                                               lineColor: 'transparent',
                                                                               labels: {
                                                                                              enabled: false
                                                                               },
                                                                               minorTickLength: 0,
                                                                               tickLength: 0,
                                                                               gridLineColor: 'transparent',
                                                               },
                                                               tooltip: {
                                                                               enabled: false
                                                               },
                                                               credits: {
                                                                               enabled: false
                                                               },
                                                               legend: {
                                                                               enabled: false
                                                               },
                                                               series: [data]
                                               });
                               });
                </script>             
                <div id="container" style="width:<?= $chartWidth;?>px; height:<?= $chartHeight;?>px;"></div>
</body>
</html>
Voilà, bonne utilisation.

Là, je m'amuse à faire mes plans avec Cedar Architect....

Avatar de l’utilisateur
dcjona
Actif
Messages : 1519
Inscription : 16 juil. 2017, 11:06

Re: [S'inspirer] Postez votre Plan / Design

Message par dcjona » 28 janv. 2018, 15:20

ca avance bien ton install Benj :)

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

Re: [S'inspirer] Postez votre Plan / Design

Message par benj29 » 28 janv. 2018, 15:33

Ouep pas aussi que je veux j'avoue ! :D.
Et puis je suis bloqué avec cette histoire de virtuel à la c*n pour la présence de la maison (je ne comprends pas ce qui se passe ...) (cf autre post).

Mais oui, j'arrive au bout (si tant est qu'il y en ait un :D).

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