Forum eedomus
http://forum.eedomus.fr/

[Store Widget] Suite Design X
http://forum.eedomus.fr/viewtopic.php?f=50&t=9052
« Précédent  Page 2 sur 4  Suivant »
Auteur:  xeos [ 23 Nov 2019 23:30 ]
Sujet du message:  Re: [Store Widget] Suite Design X

ThermoX

Capture d’écran 2019-11-23 à 23.22.10.png
Capture d’écran 2019-11-23 à 23.22.10.png (35.8 Kio) Consulté 12258 fois


Pour ce qui utilisent unz Zone Eedomus je vais mettre a jour smartZone


Mise a jour Sensor X ;)

Capture d’écran 2019-11-23 à 23.41.50.png
Capture d’écran 2019-11-23 à 23.41.50.png (23.76 Kio) Consulté 12258 fois
Auteur:  darboo [ 24 Nov 2019 11:49 ]
Sujet du message:  Re: [Store Widget] Suite Design X

Bonjour,

Pas mal les widget on va commencer à faire des interfaces sympa.

J'ai corrigé ton script météo qui avait deux problèmes :
- Pour la lattitude et longitude l'arrondi doit contenir 2 chiffres après la virgule dont les 0 (par exemple 1d50 et pas 1d5)
- Pour la lattitude et longitude les valeurs négatives sont avec un n et pas le - (n1d49 et pas -1d49)

Sinon les coordonnées à prendre ne sont pas celle de la mairie mais celle de la ville (regarde Lyon par exemple)

Code : Tout sélectionner
<?
 
//*************************************************************************
// Widget Météo Forecast
// Version 0.3
// Cree le 09/11/2019
// Modifie le 24/11/2019
//************************************************************************* 
       
 
$ville  = getArg('ville', $mandatory = false, $default = '');
$long   = getArg('long' , $mandatory = false, $default = '');
$lat    = getArg('lat'  , $mandatory = false, $default = '');
$color  = getArg('color', $mandatory = false, $default = '');
   
if ($ville) {
       $strL = strtolower($ville);
       $strL = str_replace(" ","-",$strL);
}


if ($long && $lat){
    $lat = str_replace(",", ".", $lat);
    $long = str_replace(",", ".", $long);

    $latStr = sprintf("%.2f", $lat);
    $latStr = str_replace(".", "d", $latStr);
    $latStr = str_replace("-", "n", $latStr);

    $longStr = sprintf("%.2f", $long);
    $longStr = str_replace(".", "d", $longStr);
    $longStr = str_replace("-", "n", $longStr);

    $weather = $latStr.$longStr;
}

if ($color == "Blanc") {
        $theme= "pure";
        $background = "white";
} elseif ($color == "Noir") {
        $theme= "dark";
        $background = "black";
   
} else { $theme = "weather_one";
        $background = "white";
}
?>

<html>
    <head>
       
        <meta http-equiv="refresh" content="3600" >
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <meta name="apple-mobile-web-app-capable" content="yes">
        <meta name="mobile-web-app-capable" content="yes">
        <meta name="viewport" content="width=device-width" user-scalable=no>
       
        <style>
            body {  width: 280px;
                    height: 500px;
                    background : <? echo $background?>;
     
                 }
        </style>
    </head>
    <body>
        <a class="weatherwidget-io" href="https://forecast7.com/fr/<? echo $weather?>/<? echo $strL?>/" data-label_1="<?echo $ville?>" data-label_2="" data-icons="Climacons Animated" data-theme="<? echo $theme?>" ></a>
    </body>
   
    <script type="text/javascript">
        !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src='https://weatherwidget.io/js/widget.min.js';fjs.parentNode.insertBefore(js,fjs);}}(document,'script','weatherwidget-io-js');
    </script>
   
</html>
Auteur:  xeos [ 24 Nov 2019 13:19 ]
Sujet du message:  Re: [Store Widget] Suite Design X

Merci Darboo pour cette correction, je viens de mettre a jour le script :thumbup:
Auteur:  Kimax57 [ 24 Nov 2019 23:41 ]
Sujet du message:  Re: [Store Widget] Suite Design X

Vraiment top les gars. Vous arrivez à faire un design température et humidité ??
Auteur:  xeos [ 25 Nov 2019 09:38 ]
Sujet du message:  Re: [Store Widget] Suite Design X

Oui oui pas de souci je fini la mise à jour de smartZone et les cover de Sonos et je m'occupe de l'hydrométrie c'était d'ailleurs prévu :thumbup:
Auteur:  xeos [ 30 Nov 2019 23:05 ]
Sujet du message:  Re: [Store Widget] Suite Design X

Mise à jour player X Sonos et Google home chromecast

Capture d’écran 2019-11-30 à 22.00.01.png
Capture d’écran 2019-11-30 à 22.00.01.png (66.36 Kio) Consulté 12198 fois


Cover Sonos en local sous 5s et refresh a 2 min.

Merci de me dire si le cover s'affiche correctement en lecture album.
Auteur:  xeos [ 01 Déc 2019 23:50 ]
Sujet du message:  Re: [Store Widget] Suite Design X

Mise à jour sensorX

- Ajout humidité

Capture d’écran 2019-12-01 à 23.44.32.png
Capture d’écran 2019-12-01 à 23.44.32.png (20.17 Kio) Consulté 12179 fois


Les valeurs se mettront en place selon le choix à l'installation.
Auteur:  Anthony86 [ 03 Déc 2019 08:40 ]
Sujet du message:  Re: [Store Widget] Suite Design X

Bonjour

sympa ses Widget. Peut ont les integres sur google Home?

Merci
Auteur:  xeos [ 03 Déc 2019 20:35 ]
Sujet du message:  Re: [Store Widget] Suite Design X

Bonsoir Anthony86

Le widget s'installant sur la box on ne peut pas l'intégrer sur GH.
Auteur:  afelixlag [ 13 Jan 2020 16:58 ]
Sujet du message:  Re: [Store Widget] Suite Design X

bonsoir

j'ai peut etre mal lu le sujet sur le thermostat, mais quand je modifie la consigne
il passe de 19 à 20 et ignore 19,5.

ai je raté quelque chose?

sinon les widgets sont splendides
bravo
Auteur:  xeos [ 15 Jan 2020 17:07 ]
Sujet du message:  Re: [Store Widget] Suite Design X

Salut,
il faut que j'ajoute le choix du step, je vais faire une mise a jour ce soir .
Auteur:  xeos [ 01 Fév 2020 22:54 ]
Sujet du message:  Re: [Store Widget] Suite Design X

Mise à jour d'une partie du design. Attention le code est différent donc ca demande une réinstallation de vos widgets.
Ajout d'un picker pour les lampes RGB.
Ajout du thermostat style Nest.
uniformisation design et certains sont responsive dans les unités.

A savoir que vous pouvez mettre plusieurs API pour des commandes de groupe sur Toggle, Slider et Picker.
Vous avez juste a séparer les Api avec une virgule. Ex: xxxxxx,xxxxxx,xxxxxx. Mais cette fonction fonctionne qu'en local, sur le portail seul le premier Api est pris en charge. Je ferai une mise a jour prochaine de correction.

Ce sera la base des prochaines mise à jour donc plus de changement du code.

Capture d’écran 2020-02-01 à 22.42.24.png
Capture d’écran 2020-02-01 à 22.42.24.png (1.17 Mio) Consulté 11873 fois
Auteur:  benj70b [ 01 Fév 2020 23:03 ]
Sujet du message:  Re: [Store Widget] Suite Design X

Tres Joli cette nouvelle version, bravo et merci ;)
Auteur:  benj70b [ 04 Fév 2020 01:35 ]
Sujet du message:  Re: [Store Widget] Suite Design X

Le plugin Picker X ne s'installait plus à cause d'une erreur dans eedomus_plugin.json :

store:['rgb','rgba','hex','hsl',deConZ] à la place de store:['rgb','rgba','hex','hsl','deConZ'] ( les ' sur deConZ)

j'ai fait la correction sur le store ;) je te tiendrai au courant de mes tests
Auteur:  xeos [ 04 Fév 2020 07:32 ]
Sujet du message:  Re: [Store Widget] Suite Design X

:thumbup:
Auteur:  benj70b [ 04 Fév 2020 22:37 ]
Sujet du message:  Re: [Store Widget] Suite Design X

Bon , j'ai fait des tests et il y a un probleme avec la fonction setvalue, elle fonctionne de facon différente si elle est executée sur la box ou sur le serveur eedomus :

voici un exemple de code (il faut pour tester, créer un capteur virtuel de type texte)

Code : Tout sélectionner
header("Content-Type:text/plain;");
$api = [CODE API DU CAPTEUR VIRTUEL];
$tm = time();
setvalue($api,$tm,false,true);
$i=0;
while ($i < 50)
{
    $i++;
    $val = getvalue($api);
    usleep(10000);
    if ($val['value'] == $tm)  break;
}
echo $i.' - '.$tm.' - '.$val['value'];   
die();


Si on l'execute a partir de la box : http://[IP EEDOMUS LOCAL]/script/?exec=[SCRIPT TEST].php ou
via https://secure.eedomus.com/script_proxy/?exec=[SCRIPT TEST].php (= box via redirection) on obtient un resultat du type : 14 - 1580850785- 1580850785 et la valeur est bien fixée dans le widget associé.

si on l'execute a partir du serveur eedomus : https://secure.eedomus.com/script/?exec=[SCRIPT TEST].php on obtient 50 - 1580850890 - 1580850785, la valeur n'est a fixée et il est indiqué 1580850890 (en cours) dans le widget.

Je vais ouvrir un ticket.
Auteur:  xeos [ 04 Fév 2020 22:44 ]
Sujet du message:  Re: [Store Widget] Suite Design X

Salut Benj

J'ai commencé à faire ca ce matin vite fait. J'ai pas de deconz, ni de Hue , ni the yeelight donc je peux pas tester et j'ai pas fini donc je sais pas si je suis sur la bonne voix.
Code : Tout sélectionner
<?php
  //*************************************************************************
// Widget Picker
// Version 0.1f
// Cree le 01/02/2020
// modifier pour benj70b le 03.02
//************************************************************************* 

//argument donne par l'actionneur
$nom =     getArg('nom', $mandatory = false, $default = '');
$apis     = getArg('api', $mandatory = false, $default = '');
$polling  = getArg('polling', $mandatory = false, $default = '10');
$type  =    getArg('type', $mandatory = false, $default = '');
$url  =    getArg('url', $mandatory = false, $default = '');

//arguments donnes par le javascipt
$setlevel  = getArg('setlevel', false, NULL);
$refresh   = getArg('refresh' , false, false);

// on recupere la valeur si possible
if ($apis){
    switch ($type){
            case "deConZ":     $periph = getValue($apis , $value_text = false);
                                $level = $periph["value"];
                                $lvls = explode(',', $level);
                                $lvls[0] = floor($lvls[0] * 2.54);
                                $lvls[1] = floor($lvls[1] * 2.54);
                                $lvls[2] = floor($lvls[2] * 2.54);
                                $level = $lvls[0].','.$lvls[1].','.$lvls[2];
            break;
            case "Zwave":        $periph = getValue($apis , $value_text = false);
                              $level  = $periph["value"];
                             
            break;
            case "Zigate":     $periph = getValue($apis , $value_text = false);
                             $level  = $periph["value"];
                             
            break;
            case "Yeelight":   $level  = "255, 255, 255";
                             
            break;
            case "Hue":     $periph = getValue($apis , $value_text = false);
                                $level = $periph["value"];
                                $lvls = explode(',', $level);
                                $lvls[0] = floor($lvls[0] * 2.54);
                                $lvls[1] = floor($lvls[1] * 2.54);
                                $lvls[2] = floor($lvls[2] * 2.54);
                                $level = $lvls[0].','.$lvls[1].','.$lvls[2];
   }   
}

// Si requete ajax "refresh"
if ($refresh) {
    $data = array(
        'level'  => $level,
    );
   
    //creation du json
    $r = '{';
    foreach($data as $k => $v) {
        $r .= '"'. $k . '":' . $v . ',';
    }
    $r = substr($r, 0, -1);
    $r .= '}';
   
    // On retourne le json
    die($r);
}


// Widget
//---------------------------------------------------------------------------->
 
?>

<html>
<head>
 <meta http-equiv="Content-Language" content="fr" />   
<meta http-equiv="pragma" content="no-cache"> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="mobile-web-app-capable" content="yes">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.9.0/css/all.min.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Sintony:400">
<style><? sdk_get_widget_default_style(); ?>

body {
     margin : 5vh 5vh;
    padding : 0;
    position: fixed;
     width: 95%;
     height: 85vh;

 
  .wrapper {
    font-family: Helvetica;
    flex-direction: column;
   position: relative;
   margin : -10px;
    height : 100%;
 
}   
.wrap {
  margin: 0 auto;
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
}
.name {
    margin-right: 25px;
    text-align: right;
    font-size: 10px;
    font-style: bold;
    color: <? echo $police ?>;
}
 

</style>
</head>
 <body>
     <div class="wrapper">
    <div class="wrap">
      <div class="half">
        <div class="colorPicker"></div>
     
        </div>
      </div>
      <? if ($_GET['app'] !== NULL){?><p class="name"><?php echo $nom; ?></p></p><?}?> 
</div>
   
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>       
    <script src="https://cdn.jsdelivr.net/npm/@jaames/iro/dist/iro.min.js"></script>
     <script type="text/javascript">
            //-------variables-------------
           
           
            var rgb           = "rgba(<? echo $level?>)"
            var polling         = <? echo ($polling*1000);?>;
           
           
            //-------insertion des variables dans le HTML
                   updatehtml;
                   
            function updatehtml()   {
            if (temp) {
                $temp.text(temp + '°')
            };
             if (target) {
                $target.text(target + '°')
            };
            }
            function insertParam(key, value){
                key     = encodeURI(key);
                value   = encodeURI(value);
                var kvp = document.location.search.substr(1).split('&');
                var i   = kvp.length;
                var x;
                while(i--)  {
                    x = kvp[i].split('=');
                    if (x[0] == key) {
                        x[1] = value;
                        kvp[i] = x.join('=');
                        break;
                    }
                }
                if(i<0) {
                    kvp[kvp.length] = [key,value].join('=');
                }
                return document.location + '?' + kvp.join('&');
            }
           
           
           
            function refreshData(){
                $.get(insertParam('refresh', 1), {},
                    function(data){
                        console.log("data =",data);
                        var data = JSON.parse(data);
                        level  = data.level;
                    }
                );
            }
           
           
            function modifyLight(rgb){
               $.get(insertParam('setlevel',rgb), {}, function(){});
            }



var colorPicker = new iro.ColorPicker(".colorPicker", {
  width:   <? if ($_GET['app'] == "ios"){?>170<?}else{?>210<?}?> ,
  borderWidth: 1,
  borderColor: "#fff",
})


const type = '<? echo $type ?>';
switch (type) {
  case 'Hue':
    colorPicker.on(["input:end"], function(color){
    rgb = colorPicker.color.hsv;
    console.log(rgb);
    modifyLight(rgb);
    })
    break;
  case 'Zigate':
   colorPicker.on(["input:end"], function(color){
    level = colorPicker.color.rgbString;
    rgb = level.replace('rgb(', '').replace(/["'()]/g,"");
    console.log(rgb);
    modifyLight(rgb);
   })
    break;
    case 'deConZ':
    colorPicker.on(["input:end"], function(color){
    level = colorPicker.color.rgbString;
    rgb = level;
     console.log(rgb);
    modifyLight(rgb);
    })
    break;
  case 'Yeelight':
    colorPicker.on(["input:end"], function(color){
    level = colorPicker.color.hexString;
    rgb = level;
     console.log(rgb);
    modifyLight(rgb);
    })
    break;
    case 'Zwave':
   colorPicker.on(["input:end"], function(color){
    level = colorPicker.color.rgbString;
    rgb = level.replace('rgb(', '').replace(/["'()]/g,"");
    console.log(rgb);
    modifyLight(rgb);
   })
   
 
}




        </script>
    </body>
</html>
<?
// Si requete ajax "setLevel"
    if ($setlevel !== NULL) {
        switch ($type){
            case "deConZ":  $setlevel = str_replace(" ","", $setlevel);
                            $lvls = explode(',', $setlevel);
                            $lvls[0] = floor($lvls[0] / 2.54);
                            $lvls[1] = floor($lvls[1] / 2.54);
                            $lvls[2] = floor($lvls[2] / 2.54);
                            $setlevel = $lvls[0].','.$lvls[1].','.$lvls[2];
                            foreach($Tapi as $device){httpQuery("http://localhost/script/?exec=2B_deconz.php&vars=[VAR1]&action=PUT&json={on:true, transitiontime:!TR!, xy:[!XY!], colormode:xy}&rgb=$setlevel&use=1,0&set=1&api=$device", 'get');}
            break;
            case "Zwave":     $Tapi       = explode(",", $apis);
                            foreach($Tapi as $device){ setValue($device, $setlevel);}
            break;
            case "Zigate":     $Tapi       = explode(",", $apis);
                            foreach($Tapi as $device){ setValue($device, $setlevel);}
            break;
            case "Yeelight":     $Tapi       = explode(",", $apis);
                            foreach($Tapi as $device){httpQuery("http://localhost/script/?exec=yeelight.php&ip_or_mac=$device&time=0&command=set_rgb&value=$setlevel", 'get');}
            break;
            case "Hue":     $Tapi       = explode(",", $apis);
                            foreach($Tapi as $device){httpQuery("http://[VAR1]/api/[VAR2]/lights/[VAR3]/state/$setlevel", 'get');}
        }
           
        die('Ok');
   
    }   
?>


Auteur:  xeos [ 04 Fév 2020 22:48 ]
Sujet du message:  Re: [Store Widget] Suite Design X

Si tu veux échanger en direct je suis sur le groupe skype de merguez07
Auteur:  benj70b [ 04 Fév 2020 22:54 ]
Sujet du message:  Re: [Store Widget] Suite Design X

Pour les Periph http RGB type hue, deconz ou yeelight, wifi , il faudra passer par un actionneur intermediaire pour le pilotage ou sinon que l'equipe d'eedomus ajoute un "template" de type defaut sur ce type actionneur.

sinon je vais essayer de le faire fonctionner en passant en modifiant ton javascript pour faire l'appel ajax en local ou via script_proxy mais la faut gérer la redirection ;)
Auteur:  xeos [ 04 Fév 2020 22:56 ]
Sujet du message:  Re: [Store Widget] Suite Design X

:thumbup:
Page 2 sur 4 Le fuseau horaire est UTC+1 heure