Aller au contenu

Rechercher dans la communauté

Affichage des résultats pour les étiquettes 'push'.



Plus d’options de recherche

  • Rechercher par étiquettes

    Saisir les étiquettes en les séparant par une virgule.
  • Rechercher par auteur

Type du contenu


Forums

  • Bienvenue
    • Annonces et suggestions
    • Nouveau ? Présentez-vous
    • Le bistrot
    • Mon installation domotique
    • Autres Solutions Domotiques
  • La HC2 et ses périphériques
    • La Home Center pour les nuls
    • Home Center 2 & Lite
    • Modules Fibaro
    • Modules Z-wave
    • Périphériques et matériels autres
    • Plugins
    • Alarme & Vidéo-surveillance
    • Multimédia
    • Chauffage et Energie
    • Actionneurs & Ouvrants (Portail, volets...)
    • Eclairage
    • Applications Smartphones et Tablettes
    • English Section
  • Les objets connectés
    • Les Assistants Vocaux
  • Fibaro's Awards
    • Membre du mois
    • Jeux concours & Cadeaux
  • Les bonnes affaires
    • Sites internet
    • Petites annonces

Rechercher les résultats dans…

Rechercher les résultats qui…


Date de création

  • Début

    Fin


Dernière mise à jour

  • Début

    Fin


Filtrer par nombre de…

Inscription

  • Début

    Fin


Groupe


Jabber


Skype


Ville :


Intéret :


Version

7 résultats trouvés

  1. Notifications via Pushover Présentation de ce service de notification et comment l'utiliser avec la HC2 ou la HC Lite. Comme Prowl par exemple pour les devices Apple, Pushover est un service de notification pour les devices Android et ios. Il existe donc une application dédiée payante (env.4€ ) disponible sur : - Le PlayStore, ici : https://play.google.com/store/apps/details?id=net.superblock.pushover&hl=fr - L'apple-Store, ici :https://itunes.apple.com/us/app/pushover-notifications/id506088175?ls=1&mt=8 L’intérêt d'utiliser une application comme celle-ci est d'avant tout de s'affranchir d'un éventuel problème de serveur voir de doubler les notifications Fibaro/Pushover. Le service Pushover autorise l'envoi de 7500 Push par mois...ça laisse de quoi faire...mais pous pouvez augmenter la capacité d'envoi ( payant ) De même, vous pouvez suivre le nombre de push envoyé par mois... Autre avantage, des plugins existent, comme IFTTT, e-mail gateway, github...etc...et permet donc de tout "centraliser" vers un unique service. Pour commencer, il va falloir créer un compte sur https://pushover.net/ Une fois le compte créé et validé, Cliquer sur "Apps et Plugins" puis "Create new application" : ( Vous pouvez créer autant "d'applications" que vous le souhaitez. ) -Donner un nom à votre application ( par exemple "push vers hc2" ) -Sélectionner le Type : "application" -Choisir un icone si vous le souhaitez, il s'affichera sur votre device lors du Push Maintenant que l'application est créée, vous devriez voir la "clef" : Cette clef est importante, elle servira de "lien" entre Pushover et la HC2 Lancer l'application sur votre ou vos devices et saisir les identifiants Pushover. - Paramétrer l'application selon votre besoin... - Vérifier la présence de la clef user ( identique à celle sur "pushover.net" ) Maintenant "revenez" sur la page d’accueil de Pushover...vous devriez voir votre ou vos devices ainsi que votre "Clef User" Cette clef est aussi importante que la précédente... Passons du coté HC2... Créer un nouveau Périphérique Virtuel - Donner un nom, emplacement. - Adresse Ip : saisir : 184.154.74.158 ( correspondant aux serveurs Pushover ) - Port : 80 - Cliquer sur "avancé" et ajouter un ( ou des ) "bouton" -Donner un nom au bouton et cocher "String" puis "coller" le code ci dessous : POST /1/messages.json?token=atyZzxxxxxxxxxxxxxxFJLtHE&user=72ZqHxxxxxxxxxxxxxxDShVwZ&message=ALARME+JOUR+ACTIVEE&priority=0&sound=gamelan HTTP/1.1 Host: api.pushover.net 0x0D0x0A - Remplacer les clefs "Token" et "User" par les vôtres - Modifier le message selon la notification désirée ( bien laisser les "+", remplace les "espaces" ) - Saisir une "priorité" (-1 / 0 / 1 / 2 ) - Choisir un son de notification ( voir Api ) La Fonction de "priorité" est vraiment essentielle pour moi... Elle permet, en fonction du degré d'urgence, de forcer un acquittement via l'application du device, de forcer le son du téléphone même si celui-ci est en silencieux. Utile dans le cas d'une intrusion ou alarme incendie par exemple. Vous pouvez aussi définir des horaires de mise en "silence", utile si vous ne souhaitez pas recevoir un push en pleine nuit...seul les push "emergency" seront actifs. Le service dispose d'une Api ... Elle est disponible ici : https://pushover.net/api Vous y trouverez tous les sons disponibles ainsi que les autres requêtes et fonctions disponibles via des plugins. Si vous avez des questions, n’hésitez pas...
  2. Plugin - Free Mobile notification SMS (bêta) Envoyez des notifications par SMS "dynamiques" sur votre mobile depuis vos scènes et périphériques virtuels Version courante: 0.0.3 du 15-09-2014 La panneau de configuration du Plugin: - Renseignez avec le code utilisateur et le mot de passe disponible sur votre espace abonné gratuitement - Si vous souhaitez un message de test autre que celui par défaut, il suffit d'entrer un message dans le champ adéquat. Envoyer une notification depuis une scène fibaro:call(ID_PLUGIN, "send", "Ceci est un message de test") Version 0.0.3 - Première version publique fsms-0.0.3.zip
  3. Bonjour, Le but de ce tuto sera de faire une passerelle pour les données de la netatmo vers emoncms. J'en ai profité pour améliorer le script php classique d'interface entre la netatmo et la HC2 les versions disponibles ot du mal à gérer les installations netatmo avec plusieurs modules. Ici j'ai cherché à améliorer les choses et ça fonctionne même lorsque l'on a plusieurs master device et plusieurs stations additionnelles. En effet, savoir l'ordre des modules renvoyé par netatmo dans ces conditions est un peur hard. J'ai ajouté plusieures pages de résultats au script PHP: une avec un json viewer intégré et un qui retourne le json complet. J'ai aussi optimisé pour minimiser le nombre de requêtes faites à netatmo, histoire de ne pas se faire "jeter" voici déjà la présentation de la plateforme emon CMS très puissante que j'utilise depuis plus d'un an: http://emoncms.org/site/home http://emoncms.org/site/docs/visualisations Personellement je l'utilise pour remonter mes graphiques de valeurs diverses de ma HC2 - températures - consommations eau, gaz, elec - paramètres de ma VMC (T° Vitesse, rendement etc.) J'ai partagé mon script avec un ami et comme il était enchanté, je fais l'effort de le mettre ici aussi ;-) En effet, il suffit de configurer les variables dans le VD, créer un répertoire /netatmo dans www ou web ou html, y mettre le PHP et le répertoire jsoneditor et c'est parti, les données seront remontées automatiquement à emonCMS ! Voici déjà le script côté HC2: Je l'ai mis derrière un bouton, car dans un main loop, une corruption json quelquepart et c'est tout qui plante. Ce bouton dont être cliqué via GEA ou autre scheduler toutes les 10 minutes. Voici le Virtual Device tout fait: Grosse mise à jour à ce post: http://www.domotique-fibaro.fr/index.php/topic/3929-yagda-yet-another-graphic-data-analyser-netatmo-vmc-emoncms-json-viewer/#entry63238 Netatmo_V2.vfib Attention, dans ce post ne figure que les scripts de la première version, voir plus loin dans le fil pour les versions suivantes ! ----------------------------------------------------------------------------------------- -- YAGDA - yet another graphic data analyser V2.01 -- Retreive Netatmo values for more than 2 modules, compute CO2 and push to EmonCMS -- Sebastien Jauquet -- Février 2015 -- Thanks to cedriclocqueneux, krikroff, i-magin and all contibutors to the netatmo code ----------------------------------------------------------------------------------------- -- Instructions: -- Create an free emoncms.org account -- Retrieve your Write API Key from it -- Create a Global variable (undefined) -> CO2_Max_Value to store the max value of CO2 of the house - if you dont need this, set CO2 to false (default: 0) -- Install my netatmo.php in your webserver and write his address in the ip Address of this module -- for each value you want to be pushed to emoncms, modify the section -- Push To EMONCMS -- below -- Create a block scene or use gea to click this button each 10 minutes (to avoid rejection from the api of Netatmo) local EmonCMS_Prefix = "NETATMO_" -- prefix of the id of the inpus to be created in emoncms (convenient for testing to not alter current feeds) local PushToEmonCMS = true -- true = push to emoncms - false = do not push local selfId = fibaro:getSelfId(); local thismodule=fibaro:getSelfId() local domaine = fibaro:get(selfId, 'IPAddress') local PushItem local CO2_Max_Value_Local = 0 -- if you dont need this, set CO2 to false (default: 0) local emoncms = Net.FHttp("emoncms.org",80) local emoncms_api_key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -- your EMONCMS WRITE api Key EmonCMS = {}; if (temperature_exterieure==nil) then temperature_exterieure = ""; end if (humidite_exterieure==nil) then humidite_exterieure = ""; end if (temperature_interieure==nil) then temperature_interieure = ""; end if (humidite_interieure==nil) then humidite_interieure = ""; end if (co2==nil) then co2 = ""; end if (pression==nil) then pression = ""; end if (bruit==nil) then bruit = ""; end if (temperature_int_mod2==nil) then temperature_int_mod2 = ""; end if (humidite_int_mod2==nil) then humidite_int_mod2 = ""; end if (co2_mod2==nil) then co2_mod2 = ""; end if (temperature_int_mod3==nil) then temperature_int_mod3 = ""; end if (humidite_int_mod3==nil) then humidite_int_mod3 = ""; end if (co2_mod3==nil) then co2_mod3 = ""; end if (temperature_int_mod4==nil) then temperature_int_mod4 = ""; end if (humidite_int_mod4==nil) then humidite_int_mod4 = ""; end if (co2_mod4==nil) then co2_mod4 = ""; end if(refreshUI==nil) then -- Loads in memory only the first occurence function refreshUI(ext, bruit, titre, tempmod, co2mod, humidmod, lastupdate, laststatus) fibaro:call(selfId,"setProperty","ui.ext.value",ext); fibaro:call(selfId,"setProperty","ui.bruit.value",bruit); fibaro:call(selfId,"setProperty","ui.titre.value",titre); fibaro:call(selfId,"setProperty","ui.tempmod.value",tempmod); fibaro:call(selfId,"setProperty","ui.co2mod.value",co2mod); fibaro:call(selfId,"setProperty","ui.humidmod.value",humidmod); fibaro:call(selfId,"setProperty","ui.lastupdate.value",lastupdate); fibaro:call(selfId,"setProperty","ui.laststatus.value",laststatus); end; end if(getExt==nil) then -- Loads in memory only the first occurence function getExt(retry) retry = retry or 0 -- Setting up the connection data local FHTE = Net.FHttp(domaine, 80); -- Netatmo extérieur local response = FHTE:GET("/netatmo/netatmo.php?parameter=ext"); -- decoding json string to table if (response~= nil) then local result = nil; result = json.decode(response); if (result ~= nil) then -- prevent: attempt to index field 'body' (a nil value) if (result.body ~= nil) then temperature_exterieure = result.body[1].value[1][1] or "n.c"; humidite_exterieure =result.body[1].value[1][2] or "n.c"; -- variable globale pour info sms local msg = "Température extérieure : "..temperature_exterieure.."°C"; fibaro:setGlobal("tempext", msg); return true; else fibaro:debug("Netatmo EXT: erreur le " .. os.date()); if (result.error ~= nil) then fibaro:debug("error code: "..result.error.code..", message: "..result.error.message); end end else fibaro:debug("Netatmo EXT: erreur decodage json le " .. os.date()); end else fibaro:debug("Netatmo EXT:la reponse est null !"); end if ((retry or 5)< 5) then fibaro:debug("Retry #"..retry.."process, please wait..."); fibaro:sleep(5000); return getInt(tonumber(retry+1)); else return false; end end; end if(getInt==nil) then -- Loads in memory only the first occurence function getInt(retry) retry = retry or 0; -- Setting up the connection data local FHTE = Net.FHttp(domaine, 80); -- Netatmo intérieur local response = FHTE:GET("/netatmo/netatmo.php?parameter=int"); -- decoding json string to table if (response~= nil) then local result = nil; result = json.decode(response); if (result ~= nil) then -- prevent: attempt to index field 'body' (a nil value) if (result.body ~= nil) then temperature_interieure = result.body[1].value[1][1] or "n.c"; humidite_interieure = result.body[1].value[1][3] or "n.c"; co2 = result.body[1].value[1][2] or "n.c"; pression = result.body[1].value[1][4] or "n.c"; bruit = result.body[1].value[1][5] or "n.c"; -- variable globale pour info sms fibaro:setGlobal("tempint", "Température intérieure : "..temperature_interieure.."°C"); return true; else fibaro:debug("Netatmo INT: erreur le " .. os.date()); if (result.error ~= nil) then fibaro:debug("error code: "..result.error.code..", message: "..result.error.message); end end else fibaro:debug("Netatmo INT: erreur decodage json le " .. os.date()); end else fibaro:debug("Netatmo INT:la reponse est null !"); end if ((retry or 5)< 5) then fibaro:debug("Retry #"..retry.."process, please wait..."); fibaro:sleep(5000); return getExt(tonumber(retry+1)); else return false; end end; end if(getMod2==nil) then -- Loads in memory only the first occurence function getMod2(retry) retry = retry or 0; -- Setting up the connection data local FHTE = Net.FHttp(domaine, 80); -- Netatmo intérieur local response = FHTE:GET("/netatmo/netatmo.php?parameter=mod2"); -- decoding json string to table if (response~= nil) then local result = nil; result = json.decode(response); if (result ~= nil) then -- prevent: attempt to index field 'body' (a nil value) if (result.body ~= nil) then temperature_int_mod2 = result.body[1].value[1][1] or "n.c"; humidite_int_mod2 = result.body[1].value[1][2] or "n.c"; co2_mod2 = result.body[1].value[1][3] or "n.c"; -- variable globale pour info sms -- fibaro:setGlobal("tempint", "Température intérieure : "..temperature_interieure.."°C"); return true; else fibaro:debug("Netatmo INT_mod2: erreur le " .. os.date()); if (result.error ~= nil) then fibaro:debug("error code: "..result.error.code..", message: "..result.error.message); end end else fibaro:debug("Netatmo INT_mod2: erreur decodage json le " .. os.date()); end else fibaro:debug("Netatmo INT_mod2:la reponse est null !"); end if ((retry or 5)< 5) then fibaro:debug("Retry #"..retry.."process, please wait..."); fibaro:sleep(5000); return getExt(tonumber(retry+1)); else return false; end end; end if(getMod3==nil) then -- Loads in memory only the first occurence function getMod3(retry) retry = retry or 0; -- Setting up the connection data local FHTE = Net.FHttp(domaine, 80); -- Netatmo intérieur local response = FHTE:GET("/netatmo/netatmo.php?parameter=mod3"); -- decoding json string to table if (response~= nil) then local result = nil; result = json.decode(response); if (result ~= nil) then -- prevent: attempt to index field 'body' (a nil value) if (result.body ~= nil) then temperature_int_mod3 = result.body[1].value[1][1] or "n.c"; humidite_int_mod3 = result.body[1].value[1][2] or "n.c"; co2_mod3 = result.body[1].value[1][3] or "n.c"; -- variable globale pour info sms -- fibaro:setGlobal("tempint", "Température intérieure : "..temperature_interieure.."°C"); return true; else fibaro:debug("Netatmo INT_mod3: erreur le " .. os.date()); if (result.error ~= nil) then fibaro:debug("error code: "..result.error.code..", message: "..result.error.message); end end else fibaro:debug("Netatmo INT_mod3: erreur decodage json le " .. os.date()); end else fibaro:debug("Netatmo INT_mod3:la reponse est null !"); end if ((retry or 5)< 5) then fibaro:debug("Retry #"..retry.."process, please wait..."); fibaro:sleep(5000); return getExt(tonumber(retry+1)); else return false; end end; end if(getMod4==nil) then -- Loads in memory only the first occurence function getMod4(retry) retry = retry or 0; -- Setting up the connection data local FHTE = Net.FHttp(domaine, 80); -- Netatmo intérieur local response = FHTE:GET("/netatmo/netatmo.php?parameter=mod4"); -- decoding json string to table if (response~= nil) then local result = nil; result = json.decode(response); if (result ~= nil) then -- prevent: attempt to index field 'body' (a nil value) if (result.body ~= nil) then temperature_int_mod4 = result.body[1].value[1][1] or "n.c"; humidite_int_mod4 = result.body[1].value[1][2] or "n.c"; co2_mod4 = result.body[1].value[1][3] or "n.c"; -- variable globale pour info sms -- fibaro:setGlobal("tempint", "Température intérieure : "..temperature_interieure.."°C"); return true; else fibaro:debug("Netatmo INT_mod4: erreur le " .. os.date()); if (result.error ~= nil) then fibaro:debug("error code: "..result.error.code..", message: "..result.error.message); end end else fibaro:debug("Netatmo INT_mod4: erreur decodage json le " .. os.date()); end else fibaro:debug("Netatmo INT_mod4:la reponse est null !"); end if ((retry or 5)< 5) then fibaro:debug("Retry #"..retry.."process, please wait..."); fibaro:sleep(5000); return getExt(tonumber(retry+1)); else return false; end end; end function EmonCMS:Push(payloademon) payloademon = "/input/post.json?json={" .. EmonCMS_Prefix .. payloademon .. "}&apikey=" .. emoncms_api_key response, status, errorCode = emoncms:GET(payloademon); fibaro:debug("Payload: " .. payloademon) ; fibaro:debug("response: " .. response .. " Status: " .. status .. " errorcode: " .. errorCode) ; fibaro:sleep(500); end local function main() -- retrieve values from netatmo.php local resInt, resExt, resMod2, resMod3, resMod4 = false, false, false, false, false; local status, err = pcall(function () resInt = getInt(); end); fibaro:debug("Récupération des données intérieures: " .. tostring(resInt)); if (status == false) then fibaro:debug("err: "..tostring(err or 'n.c')); end local status, err = pcall(function () resExt = getExt(); end); fibaro:debug("Récupération des données extérieures : " .. tostring(resExt)); if (status == false) then fibaro:debug("err: "..tostring(err or 'n.c')); end local status, err = pcall(function () resMod2 = getMod2(); end); fibaro:debug("Récupération des données intérieures Mod2: " .. tostring(resMod2)); if (status == false) then fibaro:debug("err: "..tostring(err or 'n.c')); end local status, err = pcall(function () resMod3 = getMod3(); end); fibaro:debug("Récupération des données intérieures Mod3: " .. tostring(resMod3)); if (status == false) then fibaro:debug("err: "..tostring(err or 'n.c')); end local status, err = pcall(function () resMod4 = getMod4(); end); fibaro:debug("Récupération des données intérieures Mod4: " .. tostring(resMod4)); if (status == false) then fibaro:debug("err: "..tostring(err or 'n.c')); end refreshUI( "Ext: "..temperature_exterieure.." °C - "..humidite_exterieure.." % - "..pression.." mbar", "Bruit Rez: "..bruit.." dB", "Rez - Emilien - Thomas - Parents", temperature_interieure.." - "..temperature_int_mod2.." - "..temperature_int_mod3.." - "..temperature_int_mod4.." °C ", co2.." - "..co2_mod2.." - "..co2_mod3.." - "..co2_mod4.." ppm", humidite_interieure.." - "..humidite_int_mod2.." - "..humidite_int_mod3.." - "..humidite_int_mod4.." % ", os.date("%H:%M"), tostring(resInt).." "..tostring(resExt).." "..tostring(resMod2).." "..tostring(resMod3).." "..tostring(resMod4) ); -- Push To EMONCMS -- if PushToEmonCMS == true then payloademon = "temperature_exterieure:"..temperature_exterieure EmonCMS:Push(payloademon); payloademon = "humidite_exterieure:".. humidite_exterieure EmonCMS:Push(payloademon); payloademon = "pression:".. pression EmonCMS:Push(payloademon); payloademon = "bruit:".. bruit EmonCMS:Push(payloademon); payloademon = "temperature_interieure_Rez:".. temperature_interieure EmonCMS:Push(payloademon); payloademon = "temperature_int_mod2_Emilien:".. temperature_int_mod2 EmonCMS:Push(payloademon); payloademon = "temperature_int_mod3_Thomas:".. temperature_int_mod3 EmonCMS:Push(payloademon); payloademon = "temperature_int_mod4_Parents:".. temperature_int_mod4 EmonCMS:Push(payloademon); payloademon = "humidite_interieure_Rez:".. humidite_interieure EmonCMS:Push(payloademon); payloademon = "humidite_int_mod2_Emilien:".. humidite_int_mod2 EmonCMS:Push(payloademon); payloademon = "humidite_int_mod3_Thomas:".. humidite_int_mod3 EmonCMS:Push(payloademon); payloademon = "humidite_int_mod4_Parents:".. humidite_int_mod4 EmonCMS:Push(payloademon); payloademon = "co2_Rez:".. co2 EmonCMS:Push(payloademon); payloademon = "co2_mod2_Emilien:".. co2_mod2 EmonCMS:Push(payloademon); payloademon = "co2_mod3_Thomas:".. co2_mod3 EmonCMS:Push(payloademon); payloademon = "co2_mod4_Parents:".. co2_mod4 EmonCMS:Push(payloademon); end -- Compute Value MAX CO2 Maison (For VMC Speed VD) if CO2_Max_Value_Local == false then fibaro:debug("not calculating nor storing CO2 Max Value") else CO2_Max_Value_Local = co2 if CO2_Max_Value_Local < co2_mod2 then CO2_Max_Value_Local = co2_mod2 end if CO2_Max_Value_Local < co2_mod3 then CO2_Max_Value_Local = co2_mod3 end if CO2_Max_Value_Local < co2_mod4 then CO2_Max_Value_Local = co2_mod4 end fibaro:setGlobal("CO2_Max_Value", CO2_Max_Value_Local ) fibaro:debug("CO2_Max_Value: ".. CO2_Max_Value_Local ) end end main();
  4. bonjour à tous, j'ai besoin d'un coup de main ... je n'arrive pas à envoyer un push lors de l'activation d'une sortie de mon IPX800. L'affaire est simple, je ne suis pas cibler à EDF via le contacteur J/N de mon cumulus : C'est donc mon IPX800 qui à 11H enclenche le disjoncteur J/N (qui est dans mon tableau). Je voudrai envoyer un push à un VD (conso cumulus), celui ci met à jour une variable conso et inversement à 6 h du mat. Mon soucis est que je n'arrive pas à joindre ma HC2, j'ai : Serveur : 192.X.XXX.XX Port : 80 login : User@Mdp Push 1 : /api/callAction?deviceID=568&name=turnOn (a titre de test, "568" est un wall plug). Push 2 : /api/callAction?deviceID=568&name=turnOff Et bien waoulou, nada, niet, nothing, la loose quoi ... !! J'ai bien les droits sur cet utilisateur dans le contrôle d'accès de ma HC2 Les mails eux, en revanche, fonctionnent Si quelqu'un a une idée, je suis preneur ... D'avance merci pour votre aide.
  5. Krikroff

    Notification Center

    Notification Center Le centre de notifications à pour objectif de centraliser au mieux les besoins en communication en mettant à disposition une interface (lua) permettant d’accéder à divers services (HC2 Push & Mail, Pushover, passerelle personnalisée etc.) afin de pousser des messages dynamiques et informations diverses vers l’ extérieur. Version: 1.0.1 Phase du projet : Bêta Actuellement « Notification Center » est capable de gérer de manière automatique des demandes de notifications (concurrentes ou non) en utilisant les services suivants : HC2 Push (Mobile ID) HC2 Email (User ID) Pushover: Simple Notifications for Android, iOS, and Desktop (https://pushover.net/) Pushingbox (http://www.pushingbox.com) Prowl (http://www.prowlapp.com/) En cours d' intégration: Passerelle personnalisée (Ex : script php free sms, etc.) LiveNotifier (http://www.livenotifier.net) Roadmap: SMS Gateway & PAW Notification XBMC (Popup) TTS (support tiers) Messages prédéfinis (avec "template" ou non) Périphérique virtuel avec retour visuel : Nombre d’envois (Jours/mois), état du moteur de notification etc. Table de correspondance Mobile ID / User ID <-> Périphérique / Utilisateur par réflexion de l’API Panic Mode: routage automatique de tous les messages (prioritaires) vers une passerelle GSM (PAW, SMS Gateway) en cas de défaillance de fourniture Internet (ADSL/Fibre/Etc) En cours d'enrichissement...
  6. Steven

    Pushbullet

    --------------------------------- PUSHBULLET API --------------------------------- Bonjour, Si comme moi, vous appréciez le service de notification "Pushbullet" et que vous souhaitez l'utiliser depuis votre HC2, voici un script qui vous permettre 2 ou 3 petites choses : Consulter la liste de vos appareils connectés au service Pushbullet Envoyer un message sur tous vos appareils connectés Envoyer un message sur un appareil précis. Avantage de ce script : Pas besoin de service intermédiaire comme pushingbox Plus besoin d'utiliser les notifications aléatoires et capricieuses de Fibaro Pré-requis : Un compte chez Pushbullet L'application Pushbullet installée sur vos appareils (https://www.pushbullet.com/apps) Obtenir un "Token" ... Connectez-vous sur le site Pushbullet -> My Account (en cliquant sur votre avatar) -> Create Access Token Voici le script local pushbullet = { token = "o.Ax6xXFI5Qa8YZX1BFoWzozmVL5plEwGd", titreDesMessage = "Fibaro", debug = false, -- ============================================== -- Affichage dans la console -- Paramètres : -- message : le message a afficher -- force : affiche le message même si debug est à false -- ============================================== log = function(self, message, force) force = force or false if (self.debug or force) then print(__convertToString(message)) end end, -- ============================================== -- Affichage les devices reconnus et actifs -- Paramètres : -- data : tableau des devices -- ============================================== displayDevices = function(self, data) self:log("----------========== D e v i c e s =========----------", true) for k,v in ipairs(data.devices) do if (v.model) then self:log(v.model .. " --- " .. v.iden, true) end end end, -- ============================================== -- Interrogation des devices -- Paramètres : -- func : une fonction a rappeler après traitement ou nil -- ============================================== getDevices = function(self, func) local http = net.HTTPClient() http:request("https://api.pushbullet.com/v2/devices", { options = { method = 'GET', headers = { ["Access-Token"] = self.token, ["Content-Type"] = "application/json" }, data = "" }, success = function(response) if (func) then func(json.decode(response.data)) else self:displayDevices(json.decode(response.data)) end end, error = function(response) self:log(" ERROR !!! " .. url, true) end, }) end, -- ============================================== -- Envoi un message -- Paramètres : -- message : le message à envoyer -- id : l'identifiant du device OU nil -- ============================================== sendPush = function(self, message, id) local http = net.HTTPClient() http:request("https://api.pushbullet.com/v2/pushes", { options = { method = 'POST', headers = { ["Access-Token"] = self.token, ["Content-Type"] = "application/json" }, data = json.encode({ ["body"]=message, ["title"]= self.titreDesMessage, ["type"]="note" }), device_iden = id, }, success = function(response) local data = json.decode(response.data) self:log("----------========== P u s h e s =========----------") self:log("Identifiant du message : " .. data.iden) end, error = function(response) self:log(" ERROR !!! " .. url, true) end, }) end, -- ============================================== -- Envoi d'un message push -- Paramètres : -- message : le message à envoyer -- device : le nom du device concerné ou nil -- ============================================== send = function(self, message, device) if (device) then self:getDevices(function(data) local found for k,v in ipairs(data.devices) do if (v.model == device or v.iden == device) then found = true self:sendPush(message, v.iden) end end if (not found) then self:log(device .. " non trouvé", true) end end) else self:sendPush(message, nil) end end } Quand je lance directement la scène, elle va m'afficher la liste des appareils connectés. Par contre quand je met à jour la variable globale "Pushbullet", elle va m'envoyé un push contenant le message de la variable globale directement sur mon téléphone "HTC One_M8 dual sim". Voici donc une manière simple de recevoir des pushs fonctionnel depuis sa HC2. Pushbullet permet aussi l'envoi de lien http, d'image, ... ce script est donc modifiable à votre convenance.
  7. Dans ma contribution aux scripts LUA "Checker l'éclairage chez soi", j'évoque l'envoi de message par l'outil "Prowl" PROWL est un outil d'envoi de notification push sous iOS Vous trouverez toutes les informations ici : http://www.prowlapp.com/ Vous pourrez vous y enregistrer et obtenir votre clé API Vous pourrez ensuite créer un module virtuel sur votre HC2, exemple : Script LUA du bouton : --[[ %% properties %% globals --]] HC2 = Net.FHttp("api.prowlapp.com") local request = "/publicapi/add?apikey=xxxxxxxxx&application=HC2&event=Lumière+allumée&description=" fibaro:sleep(1000); request = request..fibaro:getGlobalValue('pushnotification').. ""; fibaro:debug(request) response = HC2:GET(request) Dans un 1er temps, la variable locale request recueille la ligne de commande à envoyer au serveur Prowl (la clé APi doit être modifiée), sauf la "description" qui va être récupérée depuis une variable globale Dans un second temps, j'ajoute à cette variable locale, la variable globale "pushnotification" renseignée par exemple, par le script "Checker l'éclairage chez soi" La variable concaténée est pour finir adressée par HC2:GET
×