Aller au contenu

jpr105

Membres confirmés
  • Compteur de contenus

    149
  • Inscription

  • Dernière visite

  • Jours gagnés

    4

Tout ce qui a été posté par jpr105

  1. jpr105

    APIs BULKSMS et PRESENCE NETATMO

    Bonjour, Je me réponds à moi-même pour vous faire un retour d’expérience … si cela peut servir à quelqu’un ;-) Ceci concerne l’envoi de SMS à des personnes de confiance dans le cadre d’une procédure d’alarme (donc conso SMS réputée faible) Plusieurs approches pour cela : le téléphone dédié sous Android avec service tournant sur le téléphone relié à un Raspberry, lui-même pilotable par la HC2 (trop geek pour moi) l’utilisation du service « Notifications par SMS » de chez Free qui est bien mais qui sous-entend que vos personnes de confiance soient toutes chez Free passage par un opérateur d’envoi de SMS payant Pour ma part j’ai fait un mixte de SMS envoyés via Free et de SMS envoyés par BulkSMS (https://www.bulksms.com/) BulkSMS, avantages/inconvénients : Avantages mode API disponible et bien documenté possibilité d’envoyer des e-mail qui se transforment en SMS chez eux et donc possibilité d’utiliser le panneau de notifications de Fibaro (ça j’ai pas testé) support technique réactif par courriel et même joignable au téléphone … in English of course espace utilisateur clair possibilité d’envoi de SMS à des « groupes » avec substitution de variables « Nom », « Prénom » possibilité de personnaliser le « Sender ID » du message (Ex : BoxFibaroTartenpion) possibilité de laisser les destinataires répondre aux SMS avec : consultation des réponses dans l’espace client possibilité de faire suivre les réponse par courriel possibilité d’envoyer une réponse automatique (payante bien sûr) achat de pack de crédits non limités dans le temps possibilité de se faire allouer des crédits pour la période de test Inconvénients politique tarifaire un peu glauque : on achète un pack de crédits et non un pack de SMS, ainsi un SMS pour la France peut couter de 1,75 à 2 crédits il y a possibilité d’obtenir une réduction du SMS de 15% en terminant le texte par le tag « : via BulkSMS.com » … mais cela ne fonctionne pas en mode API, c’est juste dans l’espace client, dommage nombre de crédits alloués pour la période de tests vraiment insuffisant (20) … mais après négociations ils me les ont recrédité ;-) Donc du point de vue Fibaro J’utilise 3 variables « BulkSMS », « BulkSMS_ID », « BulkSMS_RC » « BulkSMS_ID » contient tout ce qui est nécessaire à l’exécution de l’API (URL, Token d’identification). Cette variable est remplie une bonne fois pour toute dans une scène au démarrage de la HC2 ou via déclenchement manuel local IDBulk = {} -- Sauvegarde des ID BulkSMS dans la variable globale BulkSMS_ID -- Le Token ID est 8Fxxxxxxxxxxxxxxxxxxxxxxx-7 -- Le Token secret est QQxxxxxxxxxxxxxxxxxxxxN -- La chaîne "TokenID:TokenSecret" sera passée en Base64 on line via le site https://www.base64encode.org/ -- Résultat : OExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxp4Tg== IDBulk[1] = "https://api.bulksms.com/v1/messages" IDBulk[2] = "OExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxp4Tg==" fibaro:setGlobal('BulkSMS_ID',json.encode(IDBulk)) « BulkSMS » est la partie « opérationnelle » de l’API. Le changement d’état de cette variable déclenche la scène « Send SMS via BulkSMS ». Je l’ai programmée pour gérer 2 types d’envoi : vers un individu ou vers un groupe car la syntaxe n’est pas la même selon le cas. --[[ %% properties %% events %% globals BulkSMS --]] -- Activation du Debug local log = true -- Récupération de l’identification BulkSMS local IDBulk = json.decode((fibaro:getGlobal('BulkSMS_ID'))) local URLBulk = IDBulk[1] local TokenBulk = IDBulk[2] -- Récupération de l’action à entreprendre local BulkSMS = json.decode((fibaro:getGlobal('BulkSMS'))) local ModeBulk = BulkSMS[1] local DestiBulk = BulkSMS[2] local MessageBulk = BulkSMS[3] -- Codes retours BulkSMS local ReturnCodeTexte = { [201]=" - Created", [400]=" - Bad Request", [403]=" - Forbidden", [999]=" - Error" } local ReturnCodeValue = "" -- Affichage des premières variables if log then fibaro:debug("URL Bulk = " .. URLBulk) fibaro:debug("Token Bulk = " .. TokenBulk) fibaro:debug("Mode d’envoi = " .. ModeBulk) fibaro:debug("Destinataire = " .. DestiBulk) fibaro:debug("Message = " .. MessageBulk) end -- Construction du Body local Body = "" if ModeBulk == "S" then Body = '{"to": "' .. DestiBulk .. '", "body": "' .. MessageBulk .. '"}' else if ModeBulk == "G" then Body = '{"to": { "type": "GROUP", "name": "' .. DestiBulk .. '" }, "body": "' .. MessageBulk .. '"}' else print('Mode d’envoi inconnu : ' .. ModeBulk) fibaro:abort() end end -- Construction de l’authentification local Autorisation = "Basic " .. TokenBulk if log then fibaro:debug("Authentification = " .. Autorisation) fibaro:debug("Body = " .. Body) end -- Et maintenant la requête local http = net.HTTPClient({timeout = 1000}); http:request(URLBulk, { options = { method = 'POST', headers = { ["Authorization"] = Autorisation, ["Content-Type"] = "application/json" }, data = Body }, success = function(data) fibaro:setGlobal('BulkSMS_RC', data.status) end, error = function(err) fibaro:setGlobal('BulkSMS_RC', 999) end }) -- Récupération du code retour depuis la variable globale ReturnCodeValue = tonumber(fibaro:getGlobalValue('BulkSMS_RC')) if log then fibaro:debug("Code retour = " .. ReturnCodeValue .. ReturnCodeTexte[tonumber(ReturnCodeValue)]) end if log then fibaro:debug("C'est fini") end « BulkSMS_RC » contient le code retour de l’envoi du SMS. Pour l’instant je n’ai rien fait mais pourquoi pas une scène déclenchée par cette variable et dédiée à la gestion d’erreur ? Et pour finir, la partie la plus simple … Cas d’un envoi à une seule personne -- Initialisation des variables local Jour = os.date("%d-%m-%Y") local Heure = os.date("%X") local Horo = " le " .. Jour .. " à " .. Heure local Texte = "" local BulkSMS = {} -- Envoi sur portable JPR Texte = "Test Push iBidules - SMS envoyé via BulkSMS sur portable JPR" .. Horo -- On initialise la variable BulkSMS BulkSMS[1] = "S" BulkSMS[2] = "+336xxxxxx87" BulkSMS[3] = Texte fibaro:setGlobal('BulkSMS',json.encode(BulkSMS)) Cas d’un envoi à un groupe -- On envoie au groupe BulkSMS Texte = "Bonjour {fn######}, alarme déclenchée" .. Horo .. "\nNe prenez aucun risque, appelez le 17 !\nMme BIDULE a les clefs - Merci" -- On initialise la variable BulkSMS BulkSMS[1] = "G" BulkSMS[2] = "Liste alarme 01" BulkSMS[3] = Texte fibaro:setGlobal('BulkSMS',json.encode(BulkSMS)) Et voilà c’est fini. Si cela peut servir, tant mieux et merci au post Plugin Free Mobile SMS initié par @Krikroff qui m’a bien inspiré Have a good day - Jean-Paul
  2. Nada ...
  3. Merci @pepite, J'avais bien le même code que toi mais j'étais resté en Percent-Encoding pour mes tests ... bouhhhh J'ai donc envoyé le message tel quel, sans transformations et avec mes accents et tout il est bon Patron
  4. Bon finalement je lâche l'approche en « method = 'POST', headers = {['Content-Type'] = 'application/json'} » qui avait l'avantage ... selon Free ... de pouvoir envoyer son texte directement sans l'encoder en « Percent-encoding » ... ky disaient Dixit « Vous pouvez également, si vous le préférez, envoyer les paramètres en POST. Dans ce cas, le contenu du message n'a pas besoin d'être encodé. » ... OK pour les espaces mais pour les chers accents de notre belle langue ... tu repasseras Je suis donc revenu à @Krikroff et j'ai utilisé son code comme @gorn ici Quant à mes précieux accents je vais faire une routine pour les gérer. En tout cas, en envoyant ça : J'obtiens ça : C'est plutôt bien, les SMS passent, mais je suis comme tout le monde concernant la gestion du code retour et le [ fatal] I/O error: End of file Est-ce que notre grand gourou @Krikroff a une idée lumineuse ? Est-ce que je peux partir sur cette base « pseudo-instable » sachant que je voudrais intégrer cet envoi de SMS dans mon futur scénario d'alarme ? Merci d'avance et bonne fin de pont ... voire viaduc Cordialement - Jean-Paul
  5. Ça devient chaud pour le a accent grave. C'est un à suivi d'un espace insécable ( ) . Avec les transformations json est compagnie ça doit se perdre dans les tuyaux ...
  6. @schwinny on progresse, on progresse ... si j'envoie ce texte : je récupère ce magnifique texte sur mon smartphone Par contre le à (a accent grave) est passé à la trappe Merci pour tes conseils
  7. Bon et bien je jette l'éponge pour ce soir. Pour les accents ... pas trouvé Pour le code retour ... j'ai bien mon code 200 avec l'extension RESTClient de Firefox ... donc Free y zont tout compris et ça doit donc coincer au niveau de mon code Fibaro ... mais là j'vois pas
  8. C'était une bonne idée, la chaine JSON est toute belle Mais le résultat un peu moins ... En tout cas merci
  9. Décidément il est coriace ... je vire le https du début
  10. Oups, Je voulais montrer cette forme d'URL
  11. Bonjour, Je ne voudrais pas réinventer le fil à couper le beurre mais j'ai besoin des SMS Free Mobile (Mon Amoureuse et moi-même avons tout compris ) Je suis parti des recos de Free disant que l'on pouvait utiliser la méthode POST pour ne pas avoir à réencoder le texte en « Percent-encoding » Après avoir fouillé à droite à gauche je suis arrivé à cela : --[[ %% properties %% events %% globals --]] local url = 'https://smsapi.free-mobile.fr/sendmsg' local user = "16xxxx29" local pass = "frxxxxxxxxxGO" local msg = "Test POST envoyé avec accents" local contenu = {} contenu.user = user contenu.pass = pass contenu.msg = msg jcontent = json.encode(contenu) fibaro:debug(jcontent) local http = net.HTTPClient() http:request(url, { options = { method = 'POST', headers = {['Content-Type'] = 'application/json'}, data = jcontent } }) Ce que ça donne : je reçois le SMS ... sans les caractères accentués la fenêtre débug m'affiche « [DEBUG] 16:04:27: [1;31m2018-04-30 16:04:27.952009 [ fatal] I/O error: End of file » Je précise que si j'envoie le SMS via un navigateur sous cette forme « https://smsapi.free-mobile.fr/sendmsg?user=16xxxxx29&pass=frxxxxxxxxxGO&msg=Test Push iBidules - SMS envoyé via Free Mobile sur portable JPR le 27-04-2018 à 08:36:14 » cela fonctionne parfaitement accents compris !! Ce sur quoi vous pourriez m'aider : pensez-vous que l'on puisse gérer les accents avec cette méthode ? comment récupérer le code retour Free Mobile ? pourquoi j'ai « [ fatal] I/O error: End of file » et est-ce grave Docteur ? Merci d'avance pour vos retours Cordialement - Jean-Paul
  12. jpr105

    APIs BULKSMS et PRESENCE NETATMO

    Vieux motard que jamais ... surtout après l'opération "Une rose un espoir" d'hier
  13. jpr105

    APIs BULKSMS et PRESENCE NETATMO

    TU VIRES "http://192.168.1.xx" DES CHAMPS "URL JPG" & "URL du flux MPEG", TU LAISSES LE "/" ET TOUT CE QUI SUIT ... THAT'S ALL
  14. jpr105

    APIs BULKSMS et PRESENCE NETATMO

    @tchulio Il faudrait que tu lises les réponses jusqu'au bout ... relis mon précédent post que tu as d'ailleurs cité
  15. jpr105

    APIs BULKSMS et PRESENCE NETATMO

    @tchulio je pense que tu ne dois pas être loin au regard des copies d'écran que tu as envoyé. Dans le champ "Adresse IP" ... juste l'adresse IP ... ex : 192.168.10.25 Dans les champs URL JPG & URL du flux MPEG ... ce qui se trouve après le slash le l'adresse locale, slash compris ... ex : http://192.168.10.25/eefçac'estmoncodeàmoi561/live/snapshot_720.jpg ==> juste la partie en gras Help your self
  16. jpr105

    APIs BULKSMS et PRESENCE NETATMO

    Ça j'ai pas fait gaffe, rendez-vous au prochain plantage Merci encore. Parallèlement j'ai ouvert un ticket chez Fibaro pour voir s'ils peuvent m'aider à monitorer la bête
  17. jpr105

    APIs BULKSMS et PRESENCE NETATMO

    @tchulio, as-tu bien rempli les 4 variables du début de la procédure ? Si tu as tout bien fait, là j'peux rien pour toi
  18. jpr105

    APIs BULKSMS et PRESENCE NETATMO

    Non, ça le fait alarme en service ou pas. Mais ça a commencé depuis que je "joue" avec le panneau d'alarme
  19. jpr105

    APIs BULKSMS et PRESENCE NETATMO

    @Nico, elle reste allumée mais ne réagit à aucun ordre et pas moyen de s’y connecter. Elle est comme « gelée ». Le seul moyen de s’en sortir est le marche/arrêt
  20. jpr105

    APIs BULKSMS et PRESENCE NETATMO

    Merci @Nico, J'ai un peu avancé depuis le début de ce post et voici ce que j'ai fait et constaté : mes 2 scènes d'armement et de désarmement sont maintenant liées à un bouton FGPB-101 (simple et double click) je pense que je n'étais pas bien clair avec la case à cocher « Ne laissez pas l'alarme arrêter une scène tandis que l'alarme est en marche » qui est maintenant systématiquement cochée pour toutes les scènes relatives à l'alarme une fois tout cela calé, on a fait des tests « grandeur nature » et là c'est pas top ... je ne sais pas si c'est lié au fait d'aller « titiller » ce module d'alarme que je n'avais jamais utilisé jusqu'ici mais ma HC2 se « bloque » toute seule sans prévenir, alarme ou pas alarme dans ce cas, et que tu rentres de courses, tu appuies vaillamment 2 fois sur le bouton pour désactiver l'alarme ... et comme elle ne prend plus aucun ordre en compte, bonjour les décibels que tu te prends dans la tête ou alors cette nuit elle s'est planté à 2h30 et au réveil mon appui long sur ma télécommande pour ouvrir tout mes VR n'a pas fonctionné ; heureusement j'avais associé le bouton d'un VR avec tous ses copains pour que cela puisse fonctionner sans HC2 Donc j'ai mis cette partie alarme un peu en stand-by car il est hors de question de s'appuyer sur un système non fiable. En attendant : je peaufine ma scène d'alarme, qui je l'espère fonctionnera un jour, en travaillant sur la partie « envoi de SMS aux personnes de confiance » j'en étais à me demander si je n'allais pas solliciter The Grand @Krikroff pour qu'il m'aide à trouver pourquoi le bestiau se plante ... GROS BESOINS DE MONITORING dans le doute j'avais viré toutes les bidouilles que j'avais fait à droite à gauche mais cela n'a rien changé je viens aussi de mettre à jour toute la partie « Fibaro ID » que je n'avais toujours pas paramétrée Pour répondre à ta question, je pense que mes soucis viennent de l'instabilité de la bête mais : Pourquoi Et comment y remédier ? En tout cas merci pour ton attention Cordialement - Jean-Paul
  21. jpr105

    APIs BULKSMS et PRESENCE NETATMO

  22. jpr105

    APIs BULKSMS et PRESENCE NETATMO

    Bonsoir @tchulio Je ne sais pas si tu as réussi à raccorder ta Présence mais voici un bout de code que j'avais retrouvé et qui fonctionnait pour la Welcome. Je l'ai modifié pour qu'il fonctionne avec la Présence (active la variable scope qui te concerne). Tu lances la procédure et tu as tout ce que tu veux savoir dans la fenêtre Debug Tu m'tiens au jus Cordialement - Jean-Paul --[[ %% properties %% globals --]] -- DIESE DATEN ANPASSEN local client_id = 'xxxxxxxxxxxxxxxxxxxxx' local client_secret = 'xxxxxxxxxxxxxxxxx' local username = 'xxxxxxxxxxxxxxx' local password = 'xxxxxxxxxxxxxxx' local language = 'english' -- german/english -- AB HIER NICHTS MEHR ANPASSEN local token = '' local request_body = '' -- To retrieve "presence" URL local scope = '&scope=read_presence access_presence' -- To retrieve "welcome" URL -- local scope = '&scope=read_camera access_camera' Debug = function ( color, message ) if (debug == 1) then fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span")) elseif (debug == 0) then end end DebugChange = function ( color, message ) fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span")) end DebugError = function ( color, message ) fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span")) end fibaro:debug('netatmo welcome cam finder v1.0b') if (language == 'german' or language == 'english') then DebugError( "green", "Debug: " ..language) else DebugError( "red", "Please choose a language for debug") fibaro:abort(); end local sourceTrigger = fibaro:getSourceTrigger(); function oAuth(nextFunction) local request_body = 'grant_type=password&client_id=' .. client_id .. '&client_secret=' .. client_secret .. '&username=' .. username .. '&password=' .. password .. scope getResponseData('https://api.netatmo.net/oauth2/token', request_body, function(data) if (data.access_token ~= nil) then token = data.access_token gethomedata() else if (language == 'german') then DebugError( "red", "oAuth-API-Call konnte nicht durchgeführt werden! oAuth 2.0 lieferte keinen Wert zurück") elseif (language == 'english') then DebugError( "red", "oAuth-API-Call Error. oAuth 2.0 returns nothing.") end end end ) end function getResponseData(url, body, func) local http = net.HTTPClient() http:request(url, { options = { method = 'POST', headers = { ['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8' }, data = body }, success = function(response) func(json.decode(response.data)) end }) end function gethomedata() request_body_cam = 'access_token=' ..token.. '' getResponseData('https://api.netatmo.net/api/gethomedata', request_body_cam, function(getData) fibaro:debug(request_body_cam) if (getData.body ~= nil) then if (language == 'german') then DebugError( "green", "API-Call durchgeführt.") elseif (language == 'english') then DebugError( "green", "API-Call was done.") end for w, v in pairs(getData.body.homes) do for a, b in pairs(v.cameras) do if (b.is_local) then if (language == 'german') then DebugError( "green", "Lokale IP der Kamera gefunden.") elseif (language == 'english') then DebugError( "green", "Local IP of cam was found.") end findLocalWelcome(b.vpn_url) else if (language == 'german') then DebugError( "green", "Lokale IP der Kamera NICHT gefunden.") elseif (language == 'english') then DebugError( "green", "Local cam NOT found.") end end end end else if (language == 'german') then DebugError( "red", "API-Call fehlgeschlagen") elseif (language == 'english') then DebugError( "red", "API-Call Error") end end end ) end function findLocalWelcome(url) local selfhttp = net.HTTPClient({timeout=2000}) url = url..'/command/ping' selfhttp:request(url, { options={ headers = selfhttp.controlHeaders, method = 'GET', timeout = 5000 }, success = function(status) if status.status == 200 then if status.data ~= nil then --print(json.decode(status.data)) for k,v in pairs(json.decode(status.data)) do if (k == 'local_url') then local cam_url = v local url_new = string.sub(cam_url, 8, #cam_url) one, two = url_new:match("([^,]+)/([^,]+)") fibaro:debug('Cam-IP: '..one) fibaro:debug('JPG-Stream: /'..two.. '/live/snapshot_720.jpg') DebugError( "green", "coded 4 siio.de/siio.com") end end end else print ("failed") print(status.data) end end, error = function(error) print "ERROR" print(error) end }) end oAuth()
  23. jpr105

    APIs BULKSMS et PRESENCE NETATMO

    Ça fait un moment déjà que j’ai fait ça mais de mémoire il ne faut pas utiliser l’adresse VPN mais s’orienter via PING vers l’adresse locale May the force be with you http://forum.lic.pl/fibaro-urzadzenia/netatmo-welcome-presence-instrukcja-dodania-do-fibaro-hc2/
  24. jpr105

    APIs BULKSMS et PRESENCE NETATMO

    Bonsoir @tchulio Ma Présence fonctionne bien. Mes paramètres : Adresse IP de la caméra URL JPG : /xxxxxxxxxxxxxxxxxx/live/snapshot_720.jpg URL du flux MPEG : idem
  25. jpr105

    APIs BULKSMS et PRESENCE NETATMO

    Bonjour, Pour compléter mon post j'ai un souci de désactivation de l'alarme. Pour l'armer j'exécute une scène qui sera liée à un bouton FGPB-101 ; en voici un extrait : Cela fonctionne parfaitement et mon icône d'alarme passe au vert Dans mon panneau d'alarme j'ai déclaré une scène dans laquelle je vais entreprendre toutes actions relatives à l'alarme « Scénario Alarme (ID=39) » Concernant la désactivation, en voici un extrait : Mon souci est le suivant : cette satanée scène (39) ne semble pas vouloir mourir et se relance toute seule Any help ? Peut-être une mauvaise compréhension de ma part des déclenchements de scènes ? Merci d'avance Cordialement - Jean-Paul
×
×
  • Créer...