{ "name": "Surveille Logs", "isActive": 1, "group": "Tesla", "mode": "schedule", "schedule": "*\/5 * * * *", "trigger": [ "" ], "timeout": 0, "isVisible": 0, "display": { "name": "", "icon": "<\/i>" }, "order": 9999, "description": "", "configuration": { "timeDependency": 1, "has_return": 0, "logmode": "default", "allowMultiInstance": "0", "syncmode": "0", "timeline::enable": "0", "timeline::folder": "" }, "elements": [ { "name": null, "type": "action", "options": [], "order": 0, "subElements": [ { "name": null, "type": "action", "subtype": "action", "options": { "collapse": "0", "enable": "1" }, "order": 0, "expressions": [ { "type": "element", "subtype": null, "expression": "1187", "options": [], "order": 0, "element": { "name": null, "type": "if", "options": [], "order": 0, "subElements": [ { "name": null, "type": "if", "subtype": "condition", "options": { "collapse": "0", "enable": "1", "allowRepeatCondition": "0" }, "order": 0, "expressions": [ { "type": "condition", "subtype": null, "expression": "time_between(variable(teslaNextToken,0), time_op(#time#, -1), time_op(#time#, 5)) == 1", "options": [], "order": 0 } ] }, { "name": null, "type": "then", "subtype": "action", "options": [], "order": 1, "expressions": [ { "type": "element", "subtype": null, "expression": "1194", "options": [], "order": 0, "element": { "name": null, "type": "comment", "options": [], "order": 0, "subElements": [ { "name": null, "type": "comment", "subtype": "comment", "options": { "collapse": "1" }, "order": 0, "expressions": [ { "type": "comment", "subtype": null, "expression": "teste si le démon va être relancé avant la prochaine programmation", "options": [], "order": 0 } ] } ] } }, { "type": "action", "subtype": null, "expression": "tag", "options": { "enable": "1", "background": "0", "name": "relanceDemonBientot", "value": "1" }, "order": 1 } ] }, { "name": null, "type": "else", "subtype": "action", "options": [], "order": 2, "expressions": [] } ] } }, { "type": "element", "subtype": null, "expression": "1141", "options": [], "order": 1, "element": { "name": null, "type": "if", "options": [], "order": 0, "subElements": [ { "name": null, "type": "if", "subtype": "condition", "options": { "collapse": "0", "enable": "1", "allowRepeatCondition": "0" }, "order": 0, "expressions": [ { "type": "condition", "subtype": null, "expression": "variable(RebootTeslaDemon,0) == 0", "options": [], "order": 0 } ] }, { "name": null, "type": "then", "subtype": "action", "options": [], "order": 1, "expressions": [ { "type": "element", "subtype": null, "expression": "1138", "options": [], "order": 0, "element": { "name": null, "type": "code", "options": [], "order": 0, "subElements": [ { "name": null, "type": "code", "subtype": "action", "options": { "collapse": "1", "enable": "1" }, "order": 0, "expressions": [ { "type": "code", "subtype": null, "expression": "$plugin = 'tesla';\n$tags = $scenario->getTags();\n$msgs = log::get($plugin,0,-1);\n#$scenario->setLog(\"taille logs: \".count($msgs));\n$size = count($msgs);\n$delai = 120;\n$max = min($size, 20);\n# stocke la date actuelle\n$now = strtotime(\"now\");\n# liste des logs à détecter\n$warningsToFind = [\n \"[WARNING] : refreshToken: Impossible de se connecter au serveur Tesla\",\n \"Connexion impossible, vérifiez vos identifiants: 'token expired (401)\"\n ];\n$warnCount = 0;\n$pattern = \"\/Le token qui expire le .* sera mis à jour le ([0-5][0-9]) ([0-2][0-9]) ([0-3][0-9]) ([0-1][0-9]) \\*\/i\";\nfor ($x = 0; $x < $max; $x++) {\n $msg = $msgs[$x];\n $dateTime = substr($msg, 1, 19);\n # convertit la date du message\n $timestamp = strtotime($dateTime);\n foreach ($warningsToFind as $key => $findme) {\n $pos = strpos($msg, $findme);\n if ($pos !== false) {\n # warning trouvé, est-il récent?\n if ($now - $timestamp < $delai) {\n # arrivé il y a moins de 2 min\n $warnCount++;\n }\n break;\n } else {\n # cherche prochain refresh\n $match = preg_match($pattern, $msg, $matches);\n if ($match === 1 && !$tags['#nextTokenRefresh#']) {\n $scenario->setLog(\"msg prochain refresh: \".$msg);\n $tags['#nextTokenRefresh#'] = $matches['2'].$matches['1'];\n }\n }\n }\n}\n$scenario->setLog(\"nombre warnings: \".$warnCount);\n# stocke s'il y a un problème\n$tags['#warning#'] = ($warnCount) > 3 ? 1 : 0;\n$scenario->setTags($tags);\n# copie les logs pour analyse\nif ($tags['#warning#']) { \n $log = \"\";\n for ($x = min($size, $max + 15); $x >= 0; $x--) {\n $log = $log.\"\\n-> \".$msgs[$x];\n }\n $scenario->setLog(\"logs: \".$log);\n}", "options": [], "order": 0 } ] } ] } }, { "type": "element", "subtype": null, "expression": "1142", "options": [], "order": 1, "element": { "name": null, "type": "if", "options": [], "order": 0, "subElements": [ { "name": null, "type": "if", "subtype": "condition", "options": { "collapse": "0", "enable": "1", "allowRepeatCondition": "0" }, "order": 0, "expressions": [ { "type": "condition", "subtype": null, "expression": "tag(warning,0) != 0", "options": [], "order": 0 } ] }, { "name": null, "type": "then", "subtype": "action", "options": [], "order": 1, "expressions": [ { "type": "action", "subtype": null, "expression": "variable", "options": { "enable": "1", "background": "0", "name": "RebootTeslaDemon", "value": "1" }, "order": 0 }, { "type": "action", "subtype": null, "expression": "message", "options": { "enable": "1", "background": "0", "message": "Plugin Tesla déconnecté" }, "order": 1 }, { "type": "action", "subtype": null, "expression": "scenario", "options": { "enable": "0", "background": "0", "scenario_id": "147", "action": "start", "tags": "message=\"Plugin Tesla déconnecté car trop d'erreurs\" destinataire=pierre" }, "order": 2 }, { "type": "action", "subtype": null, "expression": "scenario", "options": { "enable": "1", "background": "0", "scenario_id": "153", "action": "startsync", "tags": "" }, "order": 3 }, { "type": "action", "subtype": null, "expression": "delete_variable", "options": { "enable": "1", "background": "0", "name": "RebootTeslaDemon" }, "order": 4 } ] }, { "name": null, "type": "else", "subtype": "action", "options": [], "order": 2, "expressions": [] } ] } }, { "type": "element", "subtype": null, "expression": "1180", "options": [], "order": 2, "element": { "name": null, "type": "if", "options": [], "order": 0, "subElements": [ { "name": null, "type": "if", "subtype": "condition", "options": { "collapse": "0", "enable": "1", "allowRepeatCondition": "0" }, "order": 0, "expressions": [ { "type": "condition", "subtype": null, "expression": "tag(nextTokenRefresh,0) != 0", "options": [], "order": 0 } ] }, { "name": null, "type": "then", "subtype": "action", "options": [], "order": 1, "expressions": [ { "type": "element", "subtype": null, "expression": "1188", "options": [], "order": 0, "element": { "name": null, "type": "if", "options": [], "order": 0, "subElements": [ { "name": null, "type": "if", "subtype": "condition", "options": { "collapse": "0", "enable": "1", "allowRepeatCondition": "0" }, "order": 0, "expressions": [ { "type": "condition", "subtype": null, "expression": "tag(relanceDemonBientot,0) == 0", "options": [], "order": 0 } ] }, { "name": null, "type": "then", "subtype": "action", "options": [], "order": 1, "expressions": [ { "type": "element", "subtype": null, "expression": "1181", "options": [], "order": 0, "element": { "name": null, "type": "if", "options": [], "order": 0, "subElements": [ { "name": null, "type": "if", "subtype": "condition", "options": { "collapse": "0", "enable": "1", "allowRepeatCondition": "0" }, "order": 0, "expressions": [ { "type": "condition", "subtype": null, "expression": "variable(teslaNextToken,0) != tag(nextTokenRefresh)", "options": [], "order": 0 } ] }, { "name": null, "type": "then", "subtype": "action", "options": [], "order": 1, "expressions": [ { "type": "action", "subtype": null, "expression": "variable", "options": { "enable": "1", "background": "0", "name": "teslaNextToken", "value": "tag(nextTokenRefresh)" }, "order": 0 }, { "type": "element", "subtype": null, "expression": "1182", "options": [], "order": 1, "element": { "name": null, "type": "at", "options": [], "order": 0, "subElements": [ { "name": null, "type": "at", "subtype": "condition", "options": { "collapse": "0", "enable": "1" }, "order": 0, "expressions": [ { "type": "condition", "subtype": null, "expression": "tag(nextTokenRefresh)", "options": [], "order": 0 } ] }, { "name": null, "type": "do", "subtype": "action", "options": [], "order": 1, "expressions": [ { "type": "action", "subtype": null, "expression": "sleep", "options": { "enable": "1", "background": "0", "duration": "20" }, "order": 0 }, { "type": "action", "subtype": null, "expression": "scenario", "options": { "enable": "1", "background": "0", "scenario_id": "153", "action": "startsync", "tags": "" }, "order": 1 }, { "type": "element", "subtype": null, "expression": "1189", "options": [], "order": 2, "element": { "name": null, "type": "if", "options": [], "order": 0, "subElements": [ { "name": null, "type": "if", "subtype": "condition", "options": { "collapse": "0", "enable": "1", "allowRepeatCondition": "0" }, "order": 0, "expressions": [ { "type": "condition", "subtype": null, "expression": "variable(nextTeslaNextToken,0) != 0", "options": [], "order": 0 } ] }, { "name": null, "type": "then", "subtype": "action", "options": [], "order": 1, "expressions": [ { "type": "action", "subtype": null, "expression": "variable", "options": { "enable": "1", "background": "0", "name": "teslaNextToken", "value": "variable(nextTeslaNextToken)" }, "order": 0 }, { "type": "element", "subtype": null, "expression": "1190", "options": [], "order": 1, "element": { "name": null, "type": "at", "options": [], "order": 0, "subElements": [ { "name": null, "type": "at", "subtype": "condition", "options": { "collapse": "0", "enable": "1" }, "order": 0, "expressions": [ { "type": "condition", "subtype": null, "expression": "variable(nextTeslaNextToken)", "options": [], "order": 0 } ] }, { "name": null, "type": "do", "subtype": "action", "options": [], "order": 1, "expressions": [ { "type": "action", "subtype": null, "expression": "sleep", "options": { "enable": "1", "background": "0", "duration": "20" }, "order": 0 }, { "type": "action", "subtype": null, "expression": "scenario", "options": { "enable": "1", "background": "0", "scenario_id": "153", "action": "startsync", "tags": "" }, "order": 1 } ] } ] } }, { "type": "action", "subtype": null, "expression": "delete_variable", "options": { "enable": "1", "background": "0", "name": "nextTeslaNextToken" }, "order": 2 } ] }, { "name": null, "type": "else", "subtype": "action", "options": [], "order": 2, "expressions": [] } ] } } ] } ] } } ] }, { "name": null, "type": "else", "subtype": "action", "options": [], "order": 2, "expressions": [] } ] } } ] }, { "name": null, "type": "else", "subtype": "action", "options": [], "order": 2, "expressions": [ { "type": "action", "subtype": null, "expression": "variable", "options": { "enable": "1", "background": "0", "name": "nextTeslaNextToken", "value": "tag(nextTokenRefresh)" }, "order": 0 } ] } ] } } ] }, { "name": null, "type": "else", "subtype": "action", "options": [], "order": 2, "expressions": [] } ] } } ] }, { "name": null, "type": "else", "subtype": "action", "options": [], "order": 2, "expressions": [] } ] } } ] } ] } ] }