Aller au contenu
971jmd

Telegram Messenger et HC2 FIBARO

Recommended Posts

j'ai tester, je reçois 9/10 et dans le désordre

 

Partager ce message


Lien à poster
Partager sur d’autres sites

même en LUA  9/10 et dans le désordre

fibaro:startScene(288, { "Hello! azerty 1" })
fibaro:startScene(288, { "Hello! azerty 2" })
fibaro:startScene(288, { "Hello! azerty 3" })
fibaro:startScene(288, { "Hello! azerty 4" })
fibaro:startScene(288, { "Hello! azerty 5" })
fibaro:startScene(288, { "Hello! azerty 6" })
fibaro:startScene(288, { "Hello! azerty 7" })
fibaro:startScene(288, { "Hello! azerty 8" })
fibaro:startScene(288, { "Hello! azerty 9" })
fibaro:startScene(288, { "Hello! azerty 10" })

 

Partager ce message


Lien à poster
Partager sur d’autres sites

forcement avec un 1sec d'intervalle sa fonctionne bien

fibaro:startScene(288, { "Hello! azerty 1" })
fibaro:sleep(1000)
fibaro:startScene(288, { "Hello! azerty 2" })
fibaro:sleep(2000)
fibaro:startScene(288, { "Hello! azerty 3" })
fibaro:sleep(3000)
fibaro:startScene(288, { "Hello! azerty 4" })
fibaro:sleep(4000)
fibaro:startScene(288, { "Hello! azerty 5" })
fibaro:sleep(5000)
fibaro:startScene(288, { "Hello! azerty 6" })
fibaro:sleep(6000)
fibaro:startScene(288, { "Hello! azerty 7" })
fibaro:sleep(7000)
fibaro:startScene(288, { "Hello! azerty 8" })
fibaro:sleep(8000)
fibaro:startScene(288, { "Hello! azerty 9" })
fibaro:sleep(9000)
fibaro:startScene(288, { "Hello! azerty 10" })

 

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

parfait ;-)

 

Pour le fun avec GEA tu peux faire ca :

 

A mettre dans config()

 

GEA.options.telegram = {name="Telegram",
                    keepValues = true,
                    control=function(id) return type(fibaro:isSceneEnabled(id)) ~= nil end,
                    action=function(id, args) if (type(id) ~= "table") then id = {id} end
                      for i=1, #id do fibaro:startScene(id[i], json.decode(GEA.getMessage(json.encode(args)))) end
                    end
                  }
GEA.add(true, 0, "Hello 1 & Hello 2 ", { {"Telegram", 288, { "Hello! 1" }}, {"Sleep", 1, {"Telegram", 288, { "Hello! 2" }}}} )

 

  • Like 2

Partager ce message


Lien à poster
Partager sur d’autres sites

ça fonctionne super bien

telegram = {name="Telegram",
                    keepValues = true,
                    control=function(id) return type(fibaro:isSceneEnabled(id)) ~= nil end,
                    action=function(id, args) if (type(id) ~= "table") then id = {id} end
                      for i=1, #id do fibaro:startScene(id[i], json.decode(GEA.getMessage(json.encode(args)))) end
                    end
                  },

 

Partager ce message


Lien à poster
Partager sur d’autres sites

A tu regarder l' API de telegram ?

 

pour le moment avec ifttt quand j'envois un message comme:

 

DODO tout la maison s’éteint 

JARIVE tout la maison s'ouvre ....

 

mai si on pouvais développer un code avec GEA ou autre, qui pourra récupéré un mot clé , la c'est le top

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

j'ai un souci avec le code que tu ma envoyer ( fibaro:args() )

 

GEA.add(true, 0, "Hello 1 & Hello 2 ", { {"Telegram", 288, { "Démarrage de GEA_Notification Volet Roulant le #date# à #time#" }} } )

je reçois :

 

 Démarrage de GEA_Notification

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut,

 

Pas compris avec IFTTT, tu envoies DODO à TELEGRAM qui met la maison en mode nuit c'est ca ?

 

Tu ne recois pas cela ?

Volet Roulant le #date# à #time#

Partager ce message


Lien à poster
Partager sur d’autres sites

oui j'ai envoyer le message rapidement.

 

oui avec IFTTT, j'envoies DODO à TELEGRAM qui met la maison en mode nuit.

 

mai j'ai vue qu'il est possible avec API de telegram d'aller plus loin.

 

exemple:

si on reçois de telegram :  la TV est allumer depuis 2h , voulez vous l'éteindre  OUI / NON

 

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

 je vois un intérêt de passer par télégram pour piloter Par des messages vocaux des actions dans notre box.

Intérêt c’est qu’il n’est plus nécessaire de fournir à IFTTT notre login et mot de passe de notre boxe puisque ce sont les messages qui seront lus par la box directement.

C’est peut-être un peu plus en terme de sécurité.

Mais pour le moment je ne pourrai pas faire ces tests  pour le moment temps que je ne peux pas accéder à ma box.

 

Modifié par MAM78

Partager ce message


Lien à poster
Partager sur d’autres sites

quand j'exécute le code suivant dans un explorateur : https://api.telegram.org/botxxxxxbLnuJriivmFaxxGL8vxxxxxxxx/sendMessage?chat_id=6999999664&text=Démarrage 

 

l'explorateur renvois :

{"ok":true,"result":{"message_id":191,"from":{"id":9999999,"is_bot":true,"first_name":"xxxx","username":"xxxxx"},"chat":{"id":999999,"first_name":"j md","last_name":"ddd","username":"xxxxx","type":"private"},"date":1543962381,"text":"D\u00e9marrage"}}

et 

je reçois sur telegram  Démarrage 

 ok pas de problème 

 

 

mai j'ai un petit problème avec le code si-dessous 

 

quand j’exécute le code LUA (FIBARO ARGUMENT) depuis  HC2

je reçois sur telegram : Démarrage

 

 

 

Modifié par 971jmd

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu devrais retirer de ton code ton token :police:

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour messieurs,

 

toujours pas installé, mais vous voudriez faire :

 - depuis la HC2, envoyer un message à Telegram par exemple avec GEA comme vous le faites

 GEA_HC2 ----- Message --> Telegram

 

- selon message envoye a telegram --> actions sur la HC2 ?

 

Du genre :

GEA.add( {"Time", "23:30"}, 30, "Maison en Mode DODO", {"Telegram", 288, { "DODO" }})

 

Pourquoi passé 2 fois par la HC2 ?

 

Ou alors ca, (desole, je dors peu en cemoment, merci la mine..;) je galere à comprendre surtout que je ne l'ai aps installé)

 

Envoyer un message à Telegram depuis n'importe ou, puis executer une scene de la HC2 sur le message recu sur Telegram ?

 

Message à Telegram --> Execution scene sur la HC2

 

C'est ca plutot non ?

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

@971jmd

 

Essaie cela pour voir :


 

--[[
%% 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(" ' ", "'")
  end


local debug = true;
local token = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
local chat_id = "111111111111"
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
})

 

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 1 heure, pepite a dit :

C'est ca plutot non ?

Les 2 mais pas en même temps. Peut-être avec 2 BOT différents, un entrant et un sortant ?

 

Du coup pour les flux entrant qui agirait sur nos scènes/VD et donc plus de mot de passe de nos HC2 qui circule sur le Net via IFTTT ? (peut-être un peu plus Secure; non).

 

Par contre j'ignore comment IFTTT communique avec Telegram ? (est-ce plus Secure que l'appel d'API via IFTTT sur nos HC2 ?)

 

Modifié par MAM78

Partager ce message


Lien à poster
Partager sur d’autres sites

salut @pepite

 

Nikel,

 

j'avais essayé ça pourtant, mais ça n’a pas fonctionné

 

ça fonctionne nikel

Modifié par 971jmd

Partager ce message


Lien à poster
Partager sur d’autres sites

@pepite

 

Message à Telegram --> Execution scene sur la HC2

 

c'est bien ça 

Partager ce message


Lien à poster
Partager sur d’autres sites

Yes tant mieux.

 

Donc l'idee serait de s'envoyer un message perso sur Telegram depuis Telegram ou autre appli sms et d'executer la scene HC2. OK.

 

Un peu comme la scene Google Home --> IFTTT --> HC2

 

A mon avis Jeedom ne fait rien d'autre que d'utiliser l'API de Telegram.

 

Un message du type : HC2 DODO ;-)

 

Partager ce message


Lien à poster
Partager sur d’autres sites

oui un scénario comme : la lampe est allumé depuis 1h, voulez-vous l’éteindre? OUI  / NON

 

   

 

 

Modifié par 971jmd

Partager ce message


Lien à poster
Partager sur d’autres sites

Et pourquoi pas Google Home --> IFTTT -->

Telegram —> HC2

 

Certe ça rajoute une couche et de la complexité  mais si l’interface IFTTT —> Telegram est plus sécurisée que celle entre IFTTT —> HC2.

 

Pour rappel, nos HC2 ne supportent toujours pas HTTPS. Donc pas très secure.

 

Il faudra faire des tests pour s’assurer que les temps de réponses restent corrects.

 

Modifié par MAM78

Partager ce message


Lien à poster
Partager sur d’autres sites

@971jmd 

tu utilises le bot créé par @botfather mais avec ce dernier as tu reussi a recevoir les snaphsots des cameras comme avec  @fibarobot ?

 

@MAM78,

 

Je comprends mais ca devient une usine à gaz.

en créant un utilisateur unique qui n'a acces qu'a une scene de la HC2 c'est pas trop mal.

 

On peut déja faire Google Home -> IFTTT --> HC2, pourquoi passer par Telegram ?

Une fois que tu est sur la HC2, faudrait repartir sur Telegram pour les pushs interactifs, qui repartent vers la HC2 selon la reponse

 

GH --> IFTTT --> HC2 --> Telegram avec question push interactif --> HC2 non.

 

Jeedom le fait, donc c'est sur que c'est possible avec l'API. reste à la trouver ;-)

 

@971jmd

elle ressemble à quoi ta recette IFTTT qui te permet d'envoyer ton message DODO à Telegram ?

Tu fais donc

IFTTT --> DODO Telegram --> HC2 actions

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

mai comment procédé avec ::15:

fibaro:call(472, "sendPhotoToUser", "469");

  

je c'es pas si possible de récupéré l'image dans une variable 

local photo    = fibaro:call(472, "sendPhotoToUser");

Modifié par 971jmd

Partager ce message


Lien à poster
Partager sur d’autres sites

×