From 2ea696c7bca90af285f091e9e66448ad41bc95d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20RAMAGE?= Date: Wed, 18 Dec 2019 08:58:05 +0100 Subject: [PATCH 1/6] warn about python 3.4 drop --- docs/fr_FR/changelog.md | 4 ++++ plugin_info/info.json | 2 +- resources/zigated/zigated.py | 9 +++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/docs/fr_FR/changelog.md b/docs/fr_FR/changelog.md index a22f576..a520603 100644 --- a/docs/fr_FR/changelog.md +++ b/docs/fr_FR/changelog.md @@ -1,5 +1,9 @@ # Changelog +## v1.5.2 (2019-12-18) + +* Attention à partir de la version 1.6, plus de support pour Python 3.4 (3.5 minimum) + ## v1.5.1 (2019-12-16) * Correction installation des dépendances diff --git a/plugin_info/info.json b/plugin_info/info.json index f837998..5f874a1 100644 --- a/plugin_info/info.json +++ b/plugin_info/info.json @@ -16,5 +16,5 @@ "documentation": "https://jeedom-zigate.github.io/jeedom-plugin-zigate", "language": ["fr_FR", "en_US"], "compatibility": ["miniplus", "smart", "rpi", "docker", "diy"], - "pluginVersion": "1.5.1" + "pluginVersion": "1.5.2" } diff --git a/resources/zigated/zigated.py b/resources/zigated/zigated.py index 5fbb701..23a2ff4 100644 --- a/resources/zigated/zigated.py +++ b/resources/zigated/zigated.py @@ -341,6 +341,15 @@ def checkPlugins(): jc.send({'action': 'message', 'message': 'Le firmware de votre ZiGate est ancien, vous devriez le mettre à jour.'}) +if sys.version_info < (3, 5): + logging.warning('Votre système utilise une version obsolète de Python (<3.5), ' + 'à partir de la version 1.6 du plugin ' + 'la version minimale sera Python 3.5.') + jc.send({'action': 'message', + 'message': ('Votre système utilise une version obsolète de Python (<3.5), ' + 'à partir de la version 1.6 du plugin ' + 'la version minimale sera Python 3.5.')}) + if args.sharedata: t = threading.Thread(target=sharedata) t.setDaemon(True) From dcab09f70763c1259c2088aa7a1ba77e2c5ef513 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20RAMAGE?= Date: Wed, 18 Dec 2019 09:39:29 +0100 Subject: [PATCH 2/6] fix #238 --- core/class/zigate.class.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/core/class/zigate.class.php b/core/class/zigate.class.php index e0636f1..67aa497 100644 --- a/core/class/zigate.class.php +++ b/core/class/zigate.class.php @@ -132,10 +132,11 @@ public static function syncEqLogicWithZiGate() $ieee = $device['info']['ieee']; $eqLogic = self::byLogicalId($ieee, 'zigate'); if (is_object($eqLogic)) { - $eqLogic->setIsEnable(0); - $eqLogic->save(); +// $eqLogic->setIsEnable(0); +// $eqLogic->save(); $humanName = $eqLogic->getHumanName(); - message::add('zigate', 'L\'équipement '.$humanName.' semble manquant, il a été désactivé.'); +// message::add('zigate', 'L\'équipement '.$humanName.' semble manquant, il a été désactivé.'); + log::add('zigate', 'info', 'L\'équipement '.$humanName.' semble manquant.'); } } } @@ -428,7 +429,10 @@ public function _create_command($endpoint_id, $cluster_id, $attribute) $name = $attribute['name']; } - $value = $attribute['data']; + $value = ''; + if (isset($attribute['data'])) { + $value = $attribute['data']; + } if (isset($attribute['value'])) { $value = $attribute['value']; } From 498986ef30559c64952375032b5dd3d7597d98f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20RAMAGE?= Date: Wed, 18 Dec 2019 09:43:04 +0100 Subject: [PATCH 3/6] fix #232 --- core/class/zigate.class.php | 5 ++++- core/php/zigateproxy.php | 14 ++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/core/class/zigate.class.php b/core/class/zigate.class.php index 67aa497..8320980 100644 --- a/core/class/zigate.class.php +++ b/core/class/zigate.class.php @@ -385,7 +385,10 @@ public function createCommands($device) public function update_command($endpoint_id, $cluster_id, $attribute) { $created_commands = []; - $value = $attribute['data']; + $value = ''; + if (isset($attribute['data'])) { + $value = $attribute['data']; + } if (isset($attribute['value'])) { $value = $attribute['value']; } diff --git a/core/php/zigateproxy.php b/core/php/zigateproxy.php index ce95052..48bb058 100644 --- a/core/php/zigateproxy.php +++ b/core/php/zigateproxy.php @@ -68,8 +68,18 @@ $info = curl_getinfo($ch); curl_close($ch); - header('Content-Type: '.$info[CURLINFO_CONTENT_TYPE]); - http_response_code($info[CURLINFO_RESPONSE_CODE]); + if (isset($info[CURLINFO_CONTENT_TYPE])) { + header('Content-Type: '.$info[CURLINFO_CONTENT_TYPE]); + } + else { + header('Content-Type: text/html'); + } + if (isset($info[CURLINFO_RESPONSE_CODE])) { + http_response_code($info[CURLINFO_RESPONSE_CODE]); + } + else { + http_response_code(200); + } header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT'); echo $result; From 1ad0c182ff52bd9a8bf30fed7cf3622432d29673 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20RAMAGE?= Date: Wed, 18 Dec 2019 09:58:50 +0100 Subject: [PATCH 4/6] fix proxy --- core/php/zigateproxy.php | 12 +++++++++++- desktop/modal/zigateadmin.php | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/core/php/zigateproxy.php b/core/php/zigateproxy.php index 48bb058..d6e93e5 100644 --- a/core/php/zigateproxy.php +++ b/core/php/zigateproxy.php @@ -27,8 +27,18 @@ if ($_GET && $_GET['url']) { $headers = getallheaders(); $headers_str = []; - #$url = $_GET['url']; $url = 'http://localhost'.$_GET['url']; + $params = ''; + foreach ($_GET as $key => $value){ + if ($key == 'url') { + continue; + } + $params .= $key.'='.$value.'&'; + } + $params = trim($params, '&'); + if ($params){ + $url = $url.'?'.$params; + } foreach ($headers as $key => $value) { if ($key == 'Host') { diff --git a/desktop/modal/zigateadmin.php b/desktop/modal/zigateadmin.php index 5283153..fe0f1f9 100644 --- a/desktop/modal/zigateadmin.php +++ b/desktop/modal/zigateadmin.php @@ -25,4 +25,4 @@ throw new Exception('401 - Accès non autorisé'); } ?> - + From bc4a2327a00c15d8eebbeca34df0e372ea9eb074 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20RAMAGE?= Date: Wed, 18 Dec 2019 09:59:51 +0100 Subject: [PATCH 5/6] fix js format --- desktop/js/zigate.js | 221 +++++++++++++++++++++++-------------------- 1 file changed, 121 insertions(+), 100 deletions(-) diff --git a/desktop/js/zigate.js b/desktop/js/zigate.js index 5381630..9de3509 100644 --- a/desktop/js/zigate.js +++ b/desktop/js/zigate.js @@ -15,18 +15,19 @@ */ $('#bt_healthzigate').on( - 'click', - function () { + 'click', + function () { $('#md_modal').dialog({ title : "{{Santé Zigate}}" }); $('#md_modal').load('index.php?v=d&plugin=zigate&modal=health') .dialog('open'); - }); + } +); $('#bt_terminalzigate').on( - 'click', - function () { + 'click', + function () { $('#md_modal').dialog({ title : "{{Terminal Zigate}}", close : function () { @@ -35,28 +36,31 @@ $('#bt_terminalzigate').on( }); $('#md_modal').load('index.php?v=d&plugin=zigate&modal=terminal') .dialog('open'); - }); + } +); $('#bt_networkzigate').on( - 'click', - function () { + 'click', + function () { $('#md_modal').dialog({ title : "{{Réseau Zigate}}" }); $('#md_modal').load('index.php?v=d&plugin=zigate&modal=network') .dialog('open'); - }); + } +); $('#bt_zigateadmin').on( - 'click', - function () { + 'click', + function () { $('#md_modal').dialog({ title : "{{ZiGate Admin}}" }); $('#md_modal') .load('index.php?v=d&plugin=zigate&modal=zigateadmin') .dialog('open'); - }); + } +); $("#table_cmd").sortable({ axis : "y", @@ -69,7 +73,8 @@ $("#table_cmd").sortable({ /* * Fonction pour l'ajout de commande, appellé automatiquement par plugin.zigate */ -function addCmdToTable(_cmd) { +function addCmdToTable(_cmd) +{ if (!isset(_cmd)) { var _cmd = { configuration : {} @@ -111,7 +116,8 @@ function addCmdToTable(_cmd) { $('#table_cmd tbody tr:last').setValues(_cmd, '.cmdAttr'); if (isset(_cmd.type)) { $('#table_cmd tbody tr:last .cmdAttr[data-l1key=type]').value( - init(_cmd.type)); + init(_cmd.type) + ); } jeedom.cmd.changeType($('#table_cmd tbody tr:last'), init(_cmd.subType)); } @@ -130,31 +136,35 @@ $('#bt_reset').on('click', function () { $('#bt_cleanup_devices') .on( - 'click', - function () { + 'click', + function () { bootbox .confirm( - '{{Etes-vous sûr de vouloir effacer les équipements manquants ?}}', - function (result) { - if (result) { - callZiGate('cleanup_devices'); - } - }); - }); + '{{Etes-vous sûr de vouloir effacer les équipements manquants ?}}', + function (result) { + if (result) { + callZiGate('cleanup_devices'); + } + } + ); + } + ); $('#bt_erasepdm') .on( - 'click', - function () { + 'click', + function () { bootbox .confirm( - '{{Etes-vous sûr de vouloir effacer les données de la zigate ?}}', - function (result) { - if (result) { - callZiGate('erase_persistent'); - } - }); - }); + '{{Etes-vous sûr de vouloir effacer les données de la zigate ?}}', + function (result) { + if (result) { + callZiGate('erase_persistent'); + } + } + ); + } + ); $('.eqLogicAction[data-action=refresh_device]').on('click', function () { if ($('.eqLogicDisplayCard.active').attr('data-eqLogic_id') != undefined) { @@ -192,7 +202,8 @@ $('.eqLogicAction[data-action=identify_device]').on('click', function () { } }); -function callZiGate(action) { +function callZiGate(action) +{ $.ajax({ type : "POST", url : "plugins/zigate/core/ajax/zigate.ajax.php", @@ -219,7 +230,8 @@ function callZiGate(action) { }); } -function syncEqLogicWithZiGate() { +function syncEqLogicWithZiGate() +{ $.ajax({ type : "POST", url : "plugins/zigate/core/ajax/zigate.ajax.php", @@ -243,7 +255,8 @@ function syncEqLogicWithZiGate() { }); } -function permitJoin() { +function permitJoin() +{ $.ajax({ type : "POST", url : "plugins/zigate/core/ajax/zigate.ajax.php", @@ -271,7 +284,8 @@ function permitJoin() { }); } -function reset() { +function reset() +{ $.ajax({ type : "POST", url : "plugins/zigate/core/ajax/zigate.ajax.php", @@ -299,7 +313,8 @@ function reset() { }); } -function refresh_eqlogic(id) { +function refresh_eqlogic(id) +{ $ .ajax({ type : "POST", @@ -312,28 +327,30 @@ function refresh_eqlogic(id) { error : function (request, status, error) { handleAjaxError(request, status, error); }, - success : function (data) { - if (data.state != 'ok') { - $('#div_alert').showAlert({ - message : data.result, - level : 'danger' - }); - return; - } else { - $('#div_alert') - .showAlert( - { - message : '{{Rafraichissement de l\'équipement lancé.}}
' - + '{{Les équipements sur pile doivent être activés manuellement pour transmettre les infos}}' - + ' ({{Appui sur le bouton de synchro, manipulation, etc}})', - level : 'warning' - }); - } - } + success : function (data) { + if (data.state != 'ok') { + $('#div_alert').showAlert({ + message : data.result, + level : 'danger' + }); + return; + } else { + $('#div_alert') + .showAlert( + { + message : '{{Rafraichissement de l\'équipement lancé.}}
' + + '{{Les équipements sur pile doivent être activés manuellement pour transmettre les infos}}' + + ' ({{Appui sur le bouton de synchro, manipulation, etc}})', + level : 'warning' + } + ); + } + } }); } -function discover_eqlogic(id) { +function discover_eqlogic(id) +{ $ .ajax({ type : "POST", @@ -346,28 +363,30 @@ function discover_eqlogic(id) { error : function (request, status, error) { handleAjaxError(request, status, error); }, - success : function (data) { - if (data.state != 'ok') { - $('#div_alert').showAlert({ - message : data.result, - level : 'danger' - }); - return; - } else { - $('#div_alert') - .showAlert( - { - message : '{{Découverte de l\'équipement lancé.}}
' - + '{{Les équipements sur pile doivent être activés manuellement pour transmettre les infos}}' - + ' ({{Appui sur le bouton de synchro, manipulation, etc}})', - level : 'warning' - }); - } - } + success : function (data) { + if (data.state != 'ok') { + $('#div_alert').showAlert({ + message : data.result, + level : 'danger' + }); + return; + } else { + $('#div_alert') + .showAlert( + { + message : '{{Découverte de l\'équipement lancé.}}
' + + '{{Les équipements sur pile doivent être activés manuellement pour transmettre les infos}}' + + ' ({{Appui sur le bouton de synchro, manipulation, etc}})', + level : 'warning' + } + ); + } + } }); } -function identify_device(id) { +function identify_device(id) +{ $ .ajax({ type : "POST", @@ -380,32 +399,34 @@ function identify_device(id) { error : function (request, status, error) { handleAjaxError(request, status, error); }, - success : function (data) { - if (data.state != 'ok') { - $('#div_alert').showAlert({ - message : data.result, - level : 'danger' - }); - return; - } else { - $('#div_alert') - .showAlert( - { - message : 'Identification de l\'équipement lancé. (Cette commande peut être sans effet sur certain équipement)', - level : 'warning' - }); - } - } + success : function (data) { + if (data.state != 'ok') { + $('#div_alert').showAlert({ + message : data.result, + level : 'danger' + }); + return; + } else { + $('#div_alert') + .showAlert( + { + message : 'Identification de l\'équipement lancé. (Cette commande peut être sans effet sur certain équipement)', + level : 'warning' + } + ); + } + } }); } $('body').off('zigate::device_changed').on( - 'zigate::device_changed', - function (_event, _options) { - if (_options == '') { - window.location.reload(); - } else { - window.location.href = 'index.php?v=d&p=zigate&m=zigate&id=' - + _options; - } - }); + 'zigate::device_changed', + function (_event, _options) { + if (_options == '') { + window.location.reload(); + } else { + window.location.href = 'index.php?v=d&p=zigate&m=zigate&id=' + + _options; + } + } +); From 3ce86cf30ea9ac350335b9706efe4635f9a4606b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20RAMAGE?= Date: Wed, 18 Dec 2019 10:02:36 +0100 Subject: [PATCH 6/6] fix format --- core/php/zigateproxy.php | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/core/php/zigateproxy.php b/core/php/zigateproxy.php index d6e93e5..aaf51e2 100644 --- a/core/php/zigateproxy.php +++ b/core/php/zigateproxy.php @@ -29,14 +29,14 @@ $headers_str = []; $url = 'http://localhost'.$_GET['url']; $params = ''; - foreach ($_GET as $key => $value){ + foreach ($_GET as $key => $value) { if ($key == 'url') { continue; } $params .= $key.'='.$value.'&'; } $params = trim($params, '&'); - if ($params){ + if ($params) { $url = $url.'?'.$params; } @@ -80,14 +80,12 @@ if (isset($info[CURLINFO_CONTENT_TYPE])) { header('Content-Type: '.$info[CURLINFO_CONTENT_TYPE]); - } - else { + } else { header('Content-Type: text/html'); } if (isset($info[CURLINFO_RESPONSE_CODE])) { http_response_code($info[CURLINFO_RESPONSE_CODE]); - } - else { + } else { http_response_code(200); } header('Access-Control-Allow-Origin: *');