Aller au contenu

Recommended Posts

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 :

En cours d' intégration:

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...

  • Upvote 8
Lien vers le commentaire
Partager sur d’autres sites

Installation et exemples d'utilisation

 

A. Installation:

  • Prérequis: HC2 version 3.590 ou 3.591bêta
  • Créer une variable globale x_nc_object (valeur 0 par défaut)
     
  • Importer le périphérique virtuel "Notification Center" (.vfib) et noter l' ID du vd fraichement installé.
    Notification_Center_1.0.1beta.vfib
     
  • Créer une nouvelle scène nommée x_nc_trigger (scène active + Do not allow alarm...) puis copier/coller le code du fichier en prenant soin de renseigner l' ID de votre vd dans la variable adéquate.
    Scene-x_nc_trigger.txt

    Attention: Il faut créer la variable avant la scène, de même si la variable doit être recréé la scène doit être de nouveau sauvegardée afin que le trigger soit pris en compte.
     
  • Parametrage du vd: dans le code du bouton "Notify"

    Mettre à  jour les valeurs par défaut pour le service "HC2"
    settings.services.hc2 = {
      -- User ID
      userId = 2,
      -- Smartphone type device ID
      smartphoneId = 385,
      -- Title (optional)
      title = nil,
      -- Notification type [push|email]
      type = "push"  
    }
    
    Mettre à  jour la valeurs par défaut pour le service "PUSHOVER" 
    settings.services.pushover = {
      -- Application's API token
      token = "xxxxxxxxxxxxxxxx",
      -- User key
      user = "xxxxxxxxxxxxxxx",
      -- Device (optional)
      device = nil,
      -- Title (optional)
      title = nil,
      -- Priority
      priority = "0",
      -- Pushover sound (default)
      sound = "pushover"
    }
    

 

 

B. Exemples d'utilisation:
 
La fonction suivante est utile au bon fonctionnement et doit être présente dans la page de code a l'origine de la demande

--- Notify function
-- @ param params The object with parameters
-- @ rev 1.0.1
local notify = function(params)  
  if (params and type(params)=="table") then    
    local data, object = fibaro:getGlobalValue("x_nc_object"), {};
    if (not params.time) then params.time = os.time() end
    if (not params.order) then params.order = 1 end
    if (not params.status) then params.status = 0 end    
    if (string.len(data) > 0) then
      local data = json.decode(data);  
      if (data and type(object)=="table") then
        object = data;
        params.order = #object + 1;
        fibaro:debug("Object found, new notification added");
      end
    else
      fibaro:debug("Object not found, create new object and add notification");
    end    
    table.insert(object, params);    
    fibaro:setGlobal("x_nc_object", json.encode(object));
    fibaro:debug(string.format("Notification #%s sent on %s", params.time, os.date('%Y-%m-%d %H:%M:%S', params.time)));
  end  
end

 
Exemples Pushover:
 
Les valeurs passées dans l'objet settings sont prioritaires sur les valeurs par défaut (ici token, user etc.)

notify({
    message = "The door is open for a long time", 
    service = "pushover",
    settings = {     
      token = "arFcVXmeNytdfvZHDxJi5rydfZrN29", -- Application's API token (override default settings)
      user = "uPy54LkKMpfA8xah4PyDsiljjrZHobo",	-- User key (override default settings)
      priority = "0", 		-- Message Priority: Normal (option)
      title = "Warning",	-- Add a title (override default settings)
      timestamp = os.time()	-- Specifying a Message Time (option)
    }
  });

 
Exemples Push par HC2:

notify({
    message = "The door is open for a long time", 
    service = "hc2",
    settings = {
      title = "Warning",-- Add a title (override default settings)
      type = "push"	-- Set to push notification
    }
  });

 
Exemples Mail par HC2:

notify({
    message = "1 - The door is open for a long time", 
    service = "hc2",
    settings = {
      title = "Warning",-- Add a title (override default settings)
      type = "email",	-- Set to email notification
      userId = 2	-- Override the default user ID
    }
  });

Exemples Prowl:

notify({
    message = "The door is open for a long time",  -- The name of the event or subject of the notification.
    service = "prowl",
    settings = {     
      apikey = "xxxxxxxxx", 	-- API keys (40-byte hexadecimal string)
      priority = 0,				-- Message Priority: Normal
      application = "HC2",		-- The name of your application or the application generating the event.		
      description = "Warning"	-- A description of the event, generally terse.
    }
  });

Exemples PushingBox:

notify({
    message = "The door is open for a long time",  -- The name of the event or subject of the notification.
    service = "pushingBox",
    settings = {     
      devid = "xxxxxxxxx", 	-- The DeviceID
      variables = {
        ['temperature'] = "10.5",
        ['action'] = "push",
      }
    }
  });

En cours d'enrichissement...

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

Ça marche pas trop mal chez moi [emoji12] après des tests sur des environnements différents me diront si le projet est viable ou pas...

Logiquement le code sera en ligne ce soir, il attend sagement sur ma box depuis un petit moment [emoji16]

Envoyé de mon iPhone àl'aide de Tapatalk

Lien vers le commentaire
Partager sur d’autres sites

Ah [emoji16][emoji16][emoji16] mais ne vous attendez pas àun truc de dingue non plus [emoji6].

Je n'utilise pas SMS gateway j'ai ma propre passerelle SMS mais si il y a une API c'est dans la roadmap !

Envoyé de mon iPhone àl'aide de Tapatalk

Lien vers le commentaire
Partager sur d’autres sites

@Nico, non àbase d'un vieux module gsm siemens en rs232 :)

@moicphil, hop PAW dans les tuyaux ;)

J'espère pas rentrer trop tard pour vous poster quelque chose ce soir ;)

Envoyé de mon iPhone àl'aide de Tapatalk

Lien vers le commentaire
Partager sur d’autres sites

Super !! mais pour toi Krikroff tu peux faire ça de la main gauche pendant que la droite termine le débugage de la V4  :)

 

 

Passer par une passerelle SMS (SMS Gateway) ou par LiveNotifier ...c'est bof bof 

 

La fonction qui manque en fait à  ta roadmap, c'est l'identification d'une coupure ADSL et basculer automatiquement d'un PUSH/SMS par le HC2(ADSL), à  un message par la passerelle (3G)  :mellow:  C'est prévu ? :)

Lien vers le commentaire
Partager sur d’autres sites

Au contraire une passerelle SMS c'est top quand tu n'es pas chez toi et que t'as pas Internet, tu reçois quand même ta notif !

 

Pour la coupure adsl, tu peux être notifié en faisant un Ping sur une adresse web, si ping KO >> sms via la passerelle en LAN

Lien vers le commentaire
Partager sur d’autres sites

Je me suis mal exprimé... :rolleyes:

 

En fait, l'idée est :

  • Si je perds l'ADSL ...alors je passe par la passerelle
  • Si quelqu'un fait un brouillage chez moi alors je passe par l'ADSL
  • Si j'ai les 2 possibilités,j'en prends une que ce soit par la passerelle ou par l'ADSL

Il faut les 2 possibilités et la sélection de l'un ou l'autre doit se faire "automatiquement" et comme il existe un plugin FREEBOX (par exemple ^_^ ) ce ne doit pas être trop difficile !

Lien vers le commentaire
Partager sur d’autres sites

Ok, j'ai mieux compris.

 

Tu souhaites un relais GSM en cas de coupure internet... Je ne pense pas que ça soit le sujet ( ou alors je suis à  l'ouest complet )

Le plus simple étant ( je pense ) d'investir dans ce cas dans un routeur 3g

 

// ou attendons que Fibaro nous donne la possibilité d’insérer une clef 3G dans un port usb //

Lien vers le commentaire
Partager sur d’autres sites

Plus simple que ça moiCphil et Oui Nico

 

 

Un téléphone (un peu obsolète d'une de mes filles) avec SMS Gatesway et une carte SIM à  2€ de FREE !!! Ca suffit pour bye-passer l'ADSL qui pourrait être HS ! non ?

 

en plus SMS Gateway (ou autre bien sur) se pilote par commande HTTP donc "simple" (à  mon niveau ^_^ )

Lien vers le commentaire
Partager sur d’autres sites

J'ai bien compris, ;)  j'utilise moi même Paw en tant que passerelle SMS et ceci avec une SIM 2€ .

 

Mais tu es toujours hors-sujet ! :P car d'aprés le titre du sujet :

 

- notif SMS>> Oui (via Paw ou sms gateway, etc...)

 

- relais GSM >> Non 

Lien vers le commentaire
Partager sur d’autres sites

De retour ..

 

@JM13, si j'ai bien tout compris  :rolleyes:  ton souhait serait en gros un routage automatique de toutes les notifications vers une passerelle GSM (ex: SMS Gateway) en cas de défaillance de la ligne ADSL/Fibre ? Une sorte de mode Panic en fait ...

  • Upvote 2
Lien vers le commentaire
Partager sur d’autres sites

Exact ! Krikroff

 

Toutes les solutions de manières indépendantes marchent (SMS par Free ou PUSH/SMS par HC2, ou SMS gateway) mais le judicieux serait de pouvoir basculer en cas d'incident ! non ?

Lien vers le commentaire
Partager sur d’autres sites

C'est ajouté àla roadmap [emoji6].

J'attends vos retours sur le projet et en fonction de ceux ci je prioriserais les tâches.

Envoyé de mon iPhone àl'aide de Tapatalk

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...