Aller au contenu
971jmd

Telegram Messenger et HC2 FIBARO

Recommended Posts

La surveillance de notreHC2 FIBARO est cruciale pour certain. Nous connaissons les notification push pour les alertes mai il faut l’avoué pas très sécurisé. Voici un moyen intéressant d’obtenir la notification directement sur votre application Telegram Messenge et Bot comme un sms….

 

Telegram Messenger

Telegram est une application de messagerie mobile et de bureau basée sur le cloud qui met l'accent sur la sécurité et la rapidité. Pour plus de détails, s'il vous plaît visitez https://telegram.org/

 

Telegram Bot

Bots sont simplement des comptes Telegram gérés par un logiciel. Ils peuvent faire presque tout ce qu'un utilisateur peut faire dans l'application de chat. Pour plus de détails, consultez ce https://telegram.org/blog/bot-revolution

 

Telegram Bot API:  https://core.telegram.org/bots/api

 

Source du tuto: https://www.assistanz.com/get-server-notification-telegram-app/

 

 

S’enregistrée

 

1 : S’enregistrée  https://web.telegram.org/#/login

Attention, après 3 tentatives infructueuses, vous devez attendre 24H avant de recommencer.

 

Créer un bot télégramme 

2 : Créer un bot télégramme 
 Pour cela nous avons besoin de l’application  https://telegram.org/
windows : https://desktop.telegram.org/
mac : https://macos.telegram.org/

 

3 : Allez dans le champ de recherche en haut de télégramme et tapez : botfather

 

1.thumb.PNG.d616b091334842ced144f6ee48dccabb.PNG

 

cliquez sur Démarrer

 

A2.thumb.PNG.ad5187492c8333768a0d5f2be998c34f.PNG

 

 

Création du BOT (TOKEN)

4 : Allez dans la bar de champ message en bas et tapez :  / newbot  et appuyez sur Entrée

 

5 : Entrée le nom de votre choix, exemple :  Jarvis  et appuyez sur Entrée

     moi j'ai choisi FIBARO HC2 xxxx

 

6 : Nom d'utilisateur unique. Tapez un nom d'utilisateur de votre choix. S'il est déjà pris, essayez-en un autre.

 

 

2.thumb.png.74b7d6e22a76b79e449915b6ead71db4.png

 

 

7-  Une fois le nom d'utilisateur créée, vous recevez un message de félicitations de la part de botfather avec jeton(token) du bot. Copier le dans votre bloc note.

 

 

 3.thumb.png.d0892b487a25425c3eac8e5251f1c3cd.png

 

 

Démarrez une session de discussion

 

7.thumb.PNG.ee7c54592ebc00760da0f2a02ac0c4ee.PNG



8-  Ecrivez ce que vous voulez (exp  coucou)

 

 

8.thumb.PNG.90b7d85dedc7d3da3ad926ecee2ccf45.PNG

 

 

Récupération du BOT (ID)

9 :dans votre navigateur collée le lien suivant : https://api.telegram.org/bot$token/getupdates 

 

     Asans oublier de remplacez le jeton($token) par l'identifiant de jeton (token) obtenu lors de la création du bot,

     B- le navigateur renvoie une chaîne de valeurs, Copier ID dans votre bloc note

 

5.thumb.png.46009167b5ede36dc6a8ff37072d2e4f.png

 

 

Contrôle du BOT

 

10-  Pour vérifier si le bot fonctionne, exécutez l'URL le lien suivant:   https://api.telegram.org/bot$token/sendMessage?chat_id=$chaitid&text=coucou

                                                                                                              

 

      A- n'oublier pas de remplacée $token par votre jeton(token) 

      B- et $chaitid votre ID 

 

le résultat du contrôle vous envois le message HELLO World

 

 

Création d’une scène avec notre HC2

1 crée un variable Telegram

2 Collé simplement votre jeton(token) dans token

3 et dans chat_id votre ID

 

Et voila

Merci à Pepite pour son aide

 

--[[
%% properties
%% globals
Telegram
--]]
local debug = true;
local token = "xxxxxxxxxxxxxxxxxxxxxx"
local chat_id = "xxxxxx"
local url = "https://api.telegram.org/bot"..token.."/sendMessage?chat_id="..chat_id.."&text="

local function log(str) if debug then fibaro:debug(str); end; end
local function errorlog(str) fibaro:debug("<font color='red'>"..str.."</font>"); end

--Prevents the scene from running again
if (tonumber(fibaro:getGlobalValue("Telegram")) == 0) then
  fibaro:abort();
end

local selfhttp = net.HTTPClient({timeout=2000})

local msg = fibaro:getGlobalValue("Telegram")
log(msg);

url = url .. msg

selfhttp:request(url, {
  options={
    headers = selfhttp.controlHeaders,
    data = requestBody,
    method = 'GET',
    timeout = 5000
  },
  success = function(status)
    local result = json.decode(status.data);
    if result.ok == true then
      log("successful");
    else
      errorlog("failed");
      log(status.data);
    end
  end,
  error = function(error)
    errorlog("ERROR")
    log(error)
  end
})

--Reset the global Telegram variable to 0
fibaro:setGlobal("Telegram", "0")

 

 

exemple d'utilisation 

avec GEA

GEA.add({"Sensor+", id["CLIM_CH_ENFANT"], 15},     30 , "", {{"Global", "Telegram", "ON clim ch des enfants #time#"}})

 

autre exemple 

fibaro:args()

Scène n°1

fibaro:startScene(69, { "Hello! How are you?!" })

 

Scène n°2

scene #69

--[[
%% properties
%% globals
--]]



function url_encode(str)
if (str) then
     str = string.gsub (str, "\n", "\r\n")
     str = string.gsub (str, "([^%w %-%_%.%~])",
       function (c) return string.format ("%%%02X", string.byte(c)) end)
   str = string.gsub (str, " ", "+")
end
    return str    
end

function urldecode(s)
  return string.gsub(s, '%%(%x%x)',
    function (hex) return string.char(tonumber(hex,16)) end)
end

function urldecodeTable(tab)
  for k,v in pairs(tab) do
    if type(v) == "string" then
      tab[k] = urldecode(v)
    elseif type(v) == "table" then
      urldecodeTable(v)
    end
  end
end

-- ----------------------------------------------------------
  -- Remplacement des caractères spéciaux
  -- ----------------------------------------------------------
  ReplaceChar=function(s)
    return s:gsub("à ", "à"):gsub("é", "é"):gsub("Ã", "à"):gsub("è", "è"):gsub("î", "î"):gsub("ô", "ô"):gsub("û", "û"):gsub("ù", "ù"):gsub("ê", "ê"):gsub("â","â"):gsub(" ' ", "'")
  end


local debug = true;
local token = "xxxxxxxxxxxxxxxxxxxxxx"
local chat_id = "xxxxxxxxxxxxxxxx"
local url = "https://api.telegram.org/bot"..token.."/sendMessage?chat_id="..chat_id.."&text="

local function log(str) if debug then fibaro:debug(str); end; end
local function errorlog(str) fibaro:debug("<font color='red'>"..str.."</font>"); end

local selfhttp = net.HTTPClient({timeout=2000})

local msg = "<empty>";

if fibaro:args() == nil then
    fibaro:debug("no args");
    return
else
    jMsg = fibaro:args()
    urldecodeTable(jMsg)
    if jMsg[1] == nil or jMsg[1] == "" then
        fibaro:debug("no msg");
        return
    end
    msg = jMsg[1];
  msg = ReplaceChar(msg)
end

url = url .. url_encode(msg);
log(url);

selfhttp:request(url, {
  options={
    headers = selfhttp.controlHeaders,
    data = requestBody,
    method = 'GET',
    timeout = 5000
  },
  success = function(status)
    local result = json.decode(status.data);
    if result.ok == true then
      log("successful");
    else
      errorlog("failed");
      log(status.data);
    end
  end,
  error = function(error)
    errorlog("ERROR")
    log(error)
  end
})

 

Modifié par 971jmd
  • Like 5

Partager ce message


Lien à poster
Partager sur d’autres sites

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

 

Super, parfait il n'y a plus qu'à ;-)

 

Sinon, peux tu aussi mettre dans ton post la scène avec fibaro:args(). Cela peut servir à d'autres et donner le choix variable globale ou fibaro:args()

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Autre moyen plus simple

 

Créer un bot @FibaroBot

pour HC2  ou LITE

 

1 : Allez dans le champ de recherche en haut de télégramme et tapez : @FibaroBot

FibaroBot1.thumb.PNG.6202148854467b3716c6f21d5ee85d47.PNG

 

 

2-  cliquez sur Démarrer

 

 

FibaroBot2.thumb.PNG.c96c65a676aa48f651a22543ff33ac7d.PNG

 

 

Copier votre nouvelle adresse FibaroBot 

 

FibaroBot2_2.thumb.PNG.0dfa10e24cd0165be5b4490a7093ae9b.PNG

 

Dans votre HC2 ou Lite crée un nouvel utilisateur 

 

FibaroBot3.PNG.bf30928c59170f2dd9362b912e6d2847.PNG

 

FibaroBot4.PNG.645c781d4a9314efa8fb5aef73aa8777.PNG

 

FibaroBot5.thumb.PNG.b7a9730764a3cfec53aeb085952642fd.PNG

 

FibaroBot6.PNG.24b66a5fc65fb90dba4af15a271ab776.PNG

 

FibaroBot7.PNG.b2edebbefb3cde758184554bcfef08b4.PNG

 

 

 

Voila pour les HC2 qui utilise GEA

En GEA

  GEA.add(condition, "", {{"Email", 469, "bonjour le chat"}}) 

en LUA

fibaro:call(9, "sendPhotoToEmail", "999999999999@fibarobot.com")

 

Modifié par 971jmd
  • Like 3

Partager ce message


Lien à poster
Partager sur d’autres sites

salut @pepite

 

tu la tester ?

 

C’est que du bonheur Telegram.

surtout 'l'utilisation des caméras, je reçois le message avec la photo du moment T

Partager ce message


Lien à poster
Partager sur d’autres sites

la solution n2 du bot @FibaroBot 

et fonctionne mieux, surtout quand on reçoit plusieurs messages en même temps

Partager ce message


Lien à poster
Partager sur d’autres sites

Lorsque de la phase Contrôle du BOT du tuto, je fais j'exécute le ligne en ayant bien remplacé $token par mon jeton(token) et $chaitid mon ID.

 

J'obtiens le résultat suivant :

{"ok":false,"error_code":400,"description":"Bad Request: message text is empty"}

Pourtant il y a bien un message au bout de ma ligne.

 

@971jmd Tu as une idée de ce qui ne va pas ?

 

Partager ce message


Lien à poster
Partager sur d’autres sites

es-tu certain que les adresses créées se finissant par @FibaroBot sont sécurisées.

 

Lorsque tu fais la recherche tu tombes sur ça :

1107062049_Sanstitre7.png.71378666537f0521c908f62ca4bc52a1.png

 

J'ai rien contre les russes, mais du coup je me demande quand-même si c'est bien secure ?

 

Sais-tu vraiment où vont tes messages. A quoi correspond @FibaroBot (qui est derrière ?, est-ce qu'il a moyen de voir tes messages ?, ...)

 

Modifié par MAM78

Partager ce message


Lien à poster
Partager sur d’autres sites

L'inconvénient de la première méthode c'est que ton nom d'utilisateur est visible sur l'application et du coup tu risques de recevoir des messages qui ne proviennent pas forcément de ta boxe 

 

Est-ce qu'il y a moyen de rendre ton nom d'utilisateur non visible dans la recherche par nom ?

Partager ce message


Lien à poster
Partager sur d’autres sites

on teste si tu veux 

a tu installer telegram ?

Modifié par 971jmd

Partager ce message


Lien à poster
Partager sur d’autres sites

Je viens de t'envoyer un message 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Nouveau message contenant :

2ème essai depuis le forum Fibaro

Partager ce message


Lien à poster
Partager sur d’autres sites

domofibaro est le nom du BOT mai pas ne le nom Utilisateur

 

 je vais réaliser des tests sur le sujet et réalisée un tuto

Partager ce message


Lien à poster
Partager sur d’autres sites

@pepite  salut

 

fibaro:args()

Scène n°1

fibaro:startScene(69, { "Hello! How are you?!" })

 

est-il possible d’utilisée fibaro:arg directement avec GEA ?

Partager ce message


Lien à poster
Partager sur d’autres sites

j'ai trouver et réalisée un teste, tu avais raison de rajouter FIBARO ARGU

 

ça fonctionne beaucoup mieux que avec une variable 

 

GEA.add(true, 0, "1", {{"Scenario", 288, { "Hello! 1" }} })
GEA.add(true, 0, "2", {{"Scenario", 288, { "Hello! 2" }} })
GEA.add(true, 0, "3", {{"Scenario", 288, { "Hello! 3" }} })
GEA.add(true, 0, "4", {{"Scenario", 288, { "Hello! 4" }} })
GEA.add(true, 0, "5", {{"Scenario", 288, { "Hello! 5" }} })
GEA.add(true, 0, "6", {{"Scenario", 288, { "Hello! 6" }} })
GEA.add(true, 0, "7", {{"Scenario", 288, { "Hello! 7" }} })
GEA.add(true, 0, "8", {{"Scenario", 288, { "Hello! 8" }} })
GEA.add(true, 0, "9", {{"Scenario", 288, { "Hello! 9" }} })
GEA.add(true, 0, "10", {{"Scenario", 288, { "Hello! 10" }} })

quand je lance le test si-dessus avec GEA, je reçois quasi instantanée les 9 / 10 des notifications et aucun notification push de FIBARO

et même CPU de la HC2 plafonne a 100% au moment de l’envoie 

 

imag1.PNG.ab3d41d667b2b52f6ab23b80fbfa6543.PNG

Modifié par 971jmd

Partager ce message


Lien à poster
Partager sur d’autres sites

Je viens également de faire le test et j'ai bien reçu toutes les notifications.


Hello! 1

Hello! 2

Hello! 3

Hello! 4

Hello! 5

Hello! 6

Hello! 7

Hello! 8

Hello! 9

Hello! 10

 

Pas de pertes ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

Combien d'instance as-tu défini dans ta scène au niveau du paramètre : Max. running instances:

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour messieurs,

 

 @971jmd non pas encore testé, mais je vais le mettre en place avec GEA aussi. Pas de domotique ce we ;-)

 

Il y a 6 heures, 971jmd a dit :

même CPU de la HC2 plafonne a 100% au moment de l’envoi

Ah oui ? pour un envoi de mesasge sur telegram. bizarre

Partager ce message


Lien à poster
Partager sur d’autres sites

le CPU a plafonnée 1sec sur l'envoi des 10 notif

Partager ce message


Lien à poster
Partager sur d’autres sites

pour les instance je vient de voir: Max. running instances 5

 

je vais tester avec 10 pour voir 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

×