Aller au contenu

Rechercher dans la communauté

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



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
    • Nouveau ? Présentez-vous
    • Le bistrot
    • Mon installation domotique
    • Annonces et suggestions
  • La Home Center et ses périphériques
    • La Home Center pour les nuls
    • HC 2 & Lite
    • HC 3
    • Modules Fibaro
    • Modules Z-wave
    • Périphériques et matériels autres
    • Plugins
    • Quick App
    • Multimédia (audio, vidéo ...)
    • Chauffage et Energie
    • Actionneurs & Ouvrants (Portail, volets, piscines, ...)
    • Eclairage
    • Applications Smartphones et Tablettes
  • Autres solutions domotiques
    • Box / Logiciel
    • Modules Nice (433 & 866 MHz)
    • Modules Zigbee
    • GCE Electronics
    • Modules Bluetooth Low Energy
  • Objets connectés
    • Les Assistants Vocaux
    • Netatmo
    • Philips Hue
    • DIY (Do It Yoursel)
  • Sécurité
    • Alarmes
    • Caméras
    • Portiers
    • Serrures
  • Informatique / Réseau
    • Tutoriels
    • Matériels Réseaux
    • Matériels Informatique
    • NAS
    • Virtualisation
  • Les bonnes affaires
    • Sites internet
    • Petites annonces

Calendriers

Aucun résultat à afficher.


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

27 résultats trouvés

  1. triossrf

    API.PUT (Capteur CO² et Fumée)

    Salut à tous. J'ai besoin d'un coup de main concernant un API.PUT où POST (j'avoue ne pas trop comprendre la différence). J'ai un projet de Q.A. J'aimerai changer la valeur de mon capteur de fumée et de CO². Pour cela j'ai été lire l'API avec cette commande. local CapteurF = 394 --Capteur de Fumée local CapteurFumee = api.get("/devices/"..CapteurF).properties.value -- Récupération Valeur Capteur de Fumée self:debug("Le capteur de fumée est à:",CapteurFumee) -------------------------------------------------------- [28.09.2023] [23:33:32] [DEBUG] [QUICKAPP881]: Le capteur de fumée est à: false Donc il me détecte bien via le débug que mon détecteur de Fumée est à False. J'aimerai faire un Api.put et modifier le False en True, ainsi le détecteur de fumée devrait se mettre à sonner le diable... Possible ou impossible? J'ai essayé plusieurs manipulations avec l'API.put mais sans grand succès... Merci du coup de pouce
  2. Ceci n'est pas un tuto, mais plutôt un topic de travail sur l'avancement de mes tests dans l'utilisation de l'API refreshStates, son optimisation, son impact sur les performances de la box, ses limites, etc. Pour rappel, refreshStates permet de récupérer en temps réel tous les événements sur la box. A l'origine, elle a été créée par Fibaro pour les mises à jours de l'interface Web et des applications mobiles. Mais on peut tout à fait l'utiliser dans nos codes LUA, au sein même des QuickApps, puisque ceux-ci ne disposant pas de déclencheurs (triggers) comme les Scènes, cela leur permet ainsi de simuler ces fameux triggers. Actuellement, j'ai un seul QuickApp (GEA) qui utilise cette API, je vais commencer par créer plusieurs QA qui utilisent cette même API et voir comment réagit la box. Le risque probable, c'est une occupation CPU supérieure, pouvant entrainer des ralentissement, voire plantages. Voici un premier bout de code, optimisé "à fond", c'est à dire que pour optimiser au maximum les performances du LUA, je n'utilise que des variables locales, l'objectif étant de limiter autant que possible l'usage des variables (et fonctions) globales, ainsi que le parcours des tables (l'appel d'une variable globale revient à parcourir la table _G), opérations très consommatrices de cycles CPU. De même, le parcours de la table se fait avec for, plus rapide que ipairs(), lui même plus rapide que pairs() Le calcul du nombre d'éléments de la table se fait avant d'entrer dans la boucle for, afin de ne pas refaire le calcul à chaque passage dans la boucle for. Toutes ces optimisations LUA rendent le code moins lisible, donc je les réserve uniquement à cette boucle infinie loop(), car elle va se répéter un grand nombre de fois, à très haute fréquence. Quelques nanosecondes à chaque cycle, ça fini par faire mal mal de secondes à la fin. Le reste du code du QuickApp (non représenté ici) sera développé de façon plus traditionnelle. Pour ces tests, je commence avec un intervalle de 250 ms, soit 1/4 de seconde, ce qui me parait quasiment instantané à l'échelle humaine, et bien suffisant pour mettre à jour l'état d'un QuickApp dans nos scénarios domotiques. Sur GEA, je tourne actuellement à 100ms et ça ne pose à priori aucun problème, je sais que d'autres personnes sur le forum sont descendues à 50 ms. Mais je suppose que d'avoir plusieurs QA avec un intervalle de 50ms ça sera beaucoup plus stressant que 250ms, d'où mon choix de commencer mes tests avec 250 ms. En revanche, en cas d'erreur sur la requête HTTP, j'ai mis un timeout à 5000 ms, soit 5 secondes. Je me dit que si la requête a échoué, c'est peut être parce que la box est saturée, donc attendre plusieurs secondes ne peut que faire du bien. Évidemment j'utilise pcall() à chaque appel de fonction risquée, afin de protéger le code contre tout plantage, et tant pis pour le (léger) risque d'impact sur les performances. Je vais lancer ce bout de code sur plusieurs QA pendant plusieurs heures, et étudier comment se comporte la box (graph CPU) __TAG = "QA_REFRESHSTATES_" .. plugin.mainDeviceId function QuickApp:onInit() self:trace("") self:trace("onInit") self:trace("") end function QuickApp:buttonLoop(event) local lastRefresh = 0 local http = net.HTTPClient() local http_request = http.request local json_decode = json.decode local pcall = pcall local type = type local setTimeout = setTimeout local self_debug = self.debug -- Boucle d'attente d'événements instantanés local function loop() local status, err = pcall(function() local stat, res = http_request(http, "http://127.0.0.1:11111/api/refreshStates?last=" .. lastRefresh, { success = function(res) local status, states = pcall(function() return json_decode(res.data) end) if status then lastRefresh = states.last or 0 local events = states.events local nbEvents = #(events or {}) if nbEvents > 0 then self_debug(self, nbEvents) end for i = 1, nbEvents do local event = events[i] local id = event.data and event.data.id --if id == 123 then --self:debug("Event :", json.encode(event)) --end end else self:error(states or "json.decode() failed") end setTimeout(loop, 250) end, error = function(res) self:error("Error : API refreshStates :", res) setTimeout(loop, 5000) end, }) end) if not status then self:error(err) setTimeout(loop, 5000) end end loop() end PS : pour ce test il faut créer un bouton buttonLoop pour lancer la boucle.
  3. Quand on utilise la nouvelle application mobile, le visuel des QuickApps n'est pas rendu par l'application elle-même, mais par la box HC3 au travers d'une "WebView". C'est à dire que c'est la HC3 qui se charge de générer le rendu visuel du QuickApp, puis l'application mobile se contente de charger et afficher la page telle quelle. L'URL appelée est la suivante : http://192.168.0.1/app/webView/devices/ID (remplacer l'adresse IP et l'ID du QuickApp) On peut donc appeler directement cette URL depuis n'importe quel navigateur. Peu d'application pratique pour l'instant, mais j'imagine : en phase de développement, permet de visualiser rapidement le rendu d'un QuickApp sans devoir recharger l'application mobile Fibaro permettra ultérieurement de réaliser des designs avancés des QuickApps par simple mise à jour de firmware de la HC3 (et de nos codes LUA) sans devoir mettre à jour l'application mobile (rien que pour l'affichage d'une jaquette d'album, c'est une grosse avancée) pour ceux qui utilisent une interface externe pour piloter leur domotique, typiquement une tablette murale, on peut récupérer directement la vue du Quickapp sans aucun codage En revanche, l'inconvénient, c'est que ça ralentit l'affichage... car quand on est sur mobile, il est plus long de charger une page Web (protocole http lourd, chargement des balises, etc), qu'une API JSON et de mettre en forme localement. Exemple de rendu WebView :
  4. MAM78

    Philips HUE Manager

    Philips HUE Manager Préambule : Vous trouverez ci-dessous le nouveau Virtual Device visant piloter des groupes d'ampules Philips HUE.. Le projet exploite l'API mise à disposition par Philips à l'adresse suivante : https://developers.meethue.com/philips-hue-api Cette API permet notamment de : Récupérer des information sur votre système HUE Manager (récupérer les infos et paramétrer) vos ampoules unitairement ou toutes ampoules d'un groupe Pour le moment, je me suis focaliser sur le paramétrage d'un groupe d'ampoules. A l'origine de projet, je cherchais une solution pour allumer un groupe d'ampoules à l'extérieur de mon domicile pour confirmer visuellement un scénario. Le Projet : Le but du projet consiste à (pour le moment) : pouvoir allumer/éteindre un groupe d'ampoules Philips Hue permettre programmer une durée d'allumage des ampoules (ex. durée 20 secondes) de pouvoir prédéfinir des paramétrages selon : la couleur la brillance la saturation des effets (clignotement, couleurs de l'arc en ciel) des séquences de couleurs (ex. Bleu, Blanc, Rouge) rendre accessibles ces paramétrages via l'interface utilisateur smartphone, tablette, navigateur, ... mais également depuis vos Scènes (notamment GEA) et autres Virtual Devices Quelques exemples de déclanchements d'un sénario. armement / desarement de l'alarme, visuel lors du déclenchement de l'alarme, en complément de la sirène ou lors d'alarmes silentieuses. déclanchement lors d'une détection d'une présence de nuit autour de la maison. Mise en lumière des extérieurs pour déclencher l'enregistrement vidéo de meilleur qualité pour une durée donnée. Et pour plus tard : Faire la même chose pour piloter unitairement des ampoules. Vos idées/suggestions sont le bienvenues Pré-requis : Disposer d'ampoule Philips HUE Avoir regroupé les ampoules dans un groupe Avoir installé et configuré le plugin Philips HUE Installation : Télécharger et installer le Virtual Device ci-dessous (pour la dernière version) Configuration : Du Virtual Device : Dans l'onglet Avancé de VD importé, il convient de : De nommer votre VD (ex. : Hue Manager) à votre convenance De désigner la pièce ou sont situées votre groupe d'ampoules Ne pas oublier de sauvegarder Cf. image ci-dessous : Charger la liste des icônes ci-dessous : Charger le package d'icônes suivant : Liste icones Hue Manager.zip Depuis l'onglet Générale importé les icônes ci-dessous en cliquant sur le bouton Changer l'icône Attention il est préférable de bien respecter l'ordre des icônes (selon le numéro d'ordre des noms de fichiers). Ce sera plus simple pour configurer vos scénarios Après avoir chargé, toutes les icônes, modifiez chacun des boutons afin de les faire correspondre avec l'icône correspondante. Pour les 5 boutons correspondants aux fonctions de gestion du timer, vous pouvez ajouter l'icône totalement transparente (sans image. fichier : HUE Color 0.png). Elle évite de voir l'image par défaut lors des sur ces boutons. Vous devriez avoir cela, dans votre page d'icônes : Ne pas oublier de sauvegarder Configurer le bouton btUpdate (celui avec la fusée) : C'est ce bouton qui s'occupe de piloter vos ampoules : Renseigner les variables indiquées ci-dessous : local Hue_Light_VD_Id = ID d'un des Devices de type Ampoule HUE créé par le plugin Philips HUE local Hue_Port = port réseau pour accéder à l'API de gestion du système Philips HUE local hueTimerSetingsIcons = correspond au même n° d'icônes que celui que vous avez renseigné pour les boutons de gestion du timer (HUE Color 0) local hueOfftIcon = Correspond à l'icône de couleur grise avec le marqueur Off rouge (HUE Color 1.png) local hueFirstIcon = Correspond à l'icônes de couleur blanche (HUE Color 2.png) local modetrace = permet de renseigner les différentes étape d'exécution du traitement dans le Dégogueur local modetrace = permet de renseigner des trace sur le contenu de certaine variable lors de l'exécution du traitement dans le Dégogueur afin d'aider à trouver la source d'un bogue. Ne pas oublier de sauvegarder Configurer du main loop du VD : Renseigner la variable indiquée ci-dessous : (elle permet de gérer l'état on/off des ampoules gérées par le VD) -------------------- -- Users variables -------------------- -- Enter the identifier of a Philips HUE Device that correspond -- to one of the bulbs of the bulb group that you wish to manage local Hue_Light_VD_Id = 334 Configurer les scénario : Pour chacun des bouton, il est possible de modifier les paramétrage des : Id = Numéro de scénario. Qui doit correspondre au contenu de la variable HueModeId présente dans le bouton correspondant Descri = Description du Scénario (affiché à l'exécution sur le label correspondant) hue = Couleur de l'ampoule (0=Eteinte, 1 à 65535) sat = Saturation de la couleur bri = Brillance de la couleur ct = chaleur de la couleur si blanc (Blanc froid à Blanc chaud) (non utilisé pour le moment, en attente de dégogue) effect = effect sur l'allumage de l'ampoule (none=sans effet, blink=Clignotant, colorloop=Couleurs de l'arc en ciel, scene=une scène disponible et configurable depuis votre application Philips HUE) effectId = id de la scène que vous pouvez trouver par le biais de mon VD HUE InfoTools disponible ici : timer = durée en minutes et secondes durant laquelle les ampoules vont restées allumées, puis s'éteindre automatiquement icon = n° d'ID de l'icônes qui s'affichera lors de l'activation du scénario Vous pouvez ajouter autant de bouton que vous le souhaitez en respectant les principes ci-dessus. Si vous cherchez une liste de toutes les icônes disponible pour agrémenter vos boutons. Vous les trouvez toute ici : https://apps.timwhitlock.info/emoji/tables/unicode#block-3-transport-and-map-symbols Utilisation du VD : Vous pouvez tout simplement cliquer sur un des boutons de de scénario pour le lancer, il s'arrêtera lorsque vous cliquerez le bouton Off. Le timer est optionnel. Avant de cliquer un bouton d'un scénario, vous pouvez paramétrer le Timer en utilisant les boutons haut et bas (minutes et secondes). Ce qui aura pour effet de définir une durée d'exécution de celui-ci. Vous pouvez également relancer le dernier scénario en cliquant sur le bouton On Durant l'exécution d'un scénario, vous avez la possibilité d'en lancer un autre. Cela arrêtera le précédent. Vous pouvez évidement commander le VD depuis une scène ou un autre VD en simulant un clic sur le bouton correspondant au scenario voulu. Préalablement à la simulation du clic sur le bouton correspondant au scenario voulu, vous pouvez également renseigner le Label lblTimer avec une durée (au format mm:ss) pour définir une durée d'exécution de celui-ci Vous pouvez utiliser GEA pour lancer un scénario tout en utilisant le timer. Exemple : % properties 243 ui.lblEtat.value GEA.add({{"Label", 243, "lblEtat", "Alarme"}, {"Time", "Sunset-15", "Sunrise+5"}}, -1, "Détection présence devant porte garage", {{"Label", 326, "lblTimer", "01:00"}, {"VirtualDevice", 326, 11}, {"VirtualDevice", 243, 4}}, "Détection devant porte garage, activation lumières terrasse") -- Si la valeur du label "lblEtat" du VirtualDevice numéro 243 est = à "Alarme" et qu'il fait nuit -- Assigne la valeur "01:00" au label lblTimer du VD 326 -- Appui sur le bouton 10 du VD 326 pour lancer l'allumage des ampoules HUE sur la terrasse -- Appui sur le bouton 4 du VD 243 pour désactiver l'alarme du détecteur de mouvements Explications sur les différents bouton du VD Versions : V1.0 : du 18/02/2018 -> Intialisation du projet V1.1 : du 19/02/2018 -> Ajustement des couleurs V1.2 : du 19/02/2018 -> Simplification de la gestion des icônes. Plus de nécessité de renseigner les icônes dans les boutons de gestion du Timer Tout se fait dans le bouton btUpdate. Possibilité d'ajouter de nouvelles icônes ultérieurement sans qu'elles obligatoirement chargées dans un ordre séquentiel. V1.3 : du 19/02/2018 -> Correction d'un bug sur le scenario des couleurs de l'arc en ciel (colorloop). V1.4 : du 24/02/2018 -> Ajout d'une nouvelle fonction qui permet de lancer les scènes disponibles et configurables depuis votre application Philips HUE. Cette fonction est disponible via les variables de configuration des scénarios suivantes : effect = effect sur l'allumage de l'ampoule (none=sans effet, blink=Clignotant, colorloop=Couleurs de l'arc en ciel, scene=une scène disponible et configurable depuis votre application Philips HUE) effectId = id de la scène que vous pouvez trouver par le biais de mon VD HUE InfoTools Modification de la configuration pour accéder à vos ampoules. Il suffit de renseigner la variable Hue_Light_VD_Id = 264 -- ID d'un des Devices de type Ampoule HUE créé par le plugin Philips HUE Plus nécessaire de connaitre votre username de votre système HUE, il est automatiquement retrouvé via les propriétés du plugin Philips HUE configuré ci-dessus. Idem pour l'identifiant du groupe d'ampoule. Mise à jour automatique du VD selon l'état On/Off de l'ampoule configurée selon la variable Hue_Light_VD_Id Evolutions à venir : Pouvoir piloter une seule ampoule A voir selon vos suggestions Dernière version du VD : HUE_Manager.vfib-1.4.json
  5. jjacques68

    api - refreshStates - sunrise/sunset

    hello ! est ce quelqu'un sait si les informations liées au contrôleur principale (device 1), telle que les propriétés "sunset/sunrise", apparaissent dans le refreshStates lors de leur changement ? j'imagine un truc du genre, pour "event" : data.id = 1 data.property= sunset data.oldValue = "xx:xx" data.newValue = "yy:yy" Mais impossible d'essayer de l'intercepter si ils existent pas
  6. LMSI

    FibaroLink entre Domoticz et HC3

    Bonjour à tous, Avant sur HC2, je mettais à jour mes virtual devices en utilisant le FibaroLink dans domoticz pour récupérer des infos comme le résultat de PINGs effectué sur mon domoticz. Comme faire pour réaliser la même chose dans un QA sur HC3? Sinon, si quelqu'un a la solution, je souhaiterais connaitre, par un moyen ou un autre, savoir si une machine IP est ON ou OFF sur mon réseau. Merci d'avance pour vos retours
  7. Hello tout le monde ! Je bloque sur un problème que je ne comprends pas : Je gère le panel Sprinkler à travers un QA... ça marche très bien sauf pour un cas : Où je souhaite supprimer tous les jours programmés... Voici un bout de code qui fonctionne : J'ai une variable de type table où sont insérées plusieurs jours Ensuite je vide cette table Pour enfin la transférer dans l'API tout est ok. local ListeDay = {} table.insert(ListeDay, "monday") table.insert(ListeDay, "thusday") ... for j = 1, #ListeDay do table.remove(ListeDay) end res = api.put("/panels/sprinklers/"..MonID, {days=ListeDay}) Voici un bout de code qui ne fonctionne pas : J'ai toujours ma variable de type table (mais ce coup-ci, elle reste vide) Et je mets à jour l'API... local ListeDay = {} res = api.put("/panels/sprinklers/"..MonID, {days=ListeDay}) et voici l'erreur : {"type":"ERROR","reason":"http:\/\/{$gateway-ip}\/json-schema\/panels\/sprinklers\/PUT_sprinklers.json. Invalid schema: #\/properties\/days. Invalid keyword: type. Invalid document: #\/days","message":""} Je comprends bien qu'il aime pas ma variable "ListeDay", mais pourquoi ?? où est le problème entre le premier exemple et le second ???? merci pour vos lumières !!
  8. jjacques68

    Filtrer les devices via l'API

    Bonjour à tous, Je commence ce topic afin de recenser les différentes manières de filtrer les device de nos box. Je suis entrain de tester cela depuis une HC3, donc je ne peux pas confirmer que cela fonctionne sur une HC2... Pour se faire, on utilise : MaListe = fibaro.getDevicesID({filter}) on aura donc la liste des ID des device trouvés. il existe une autre méthode avec : MaListe = api.get(/devices/?...) dans ce cas, on aura un retour JSON avec tout le contenu des propriétés des device. On choisira l'un ou l'autre suivant l'usage. Dans mon cas, je me suis rendu compte que j'utilisais très souvent api.get(), juste pour avoir la liste des ID ! Donc pas du tout cohérent, vu qu'on a pas besoin de récupérer la totalité des propriétés ! Pour les exemples suivant, je me sers de l'API d'un device, que j'ai copié dans NotePad++ afin de visualiser le JSON plus facilement (voir les captures futures)
  9. jjacques68

    Panel/Climate modification API

    Hello tout le monde. Je souhaite modifier un panneau de chauffage (enfin maintenant appelé "PanelClimate"...) Voilà ce que je fais, mais mes modifications ne sont pas prise en compte ??? --lecture du panneau Climate RoomClimatePanel = api.get("/panels/climate/"..RoomClimatePanelId) --modification du panneau RoomClimatePanel.properties.currentTemperatureHeating = 4 RoomClimatePanel.mode = "Off" api.put("/panels/climate/"..RoomClimatePanelId, RoomClimatePanel) --confirmation RoomClimatePanel = api.get("/panels/climate/"..RoomClimatePanelId) print(json.encode(RoomClimatePanel)) j'ai pas d'erreur, mais visiblement le PUT n'applique pas les modifications... une idée ?? merciiiiii !
  10. jjacques68

    Notification Push ou Email

    Hello !! Est ce que quelqu'un sait, où dans l'API, se trouvent les informations relatives aux options de notifications des modules ? il y a bien ça mais ça correspond pas : l'idée étant de désactiver les notifications quand je suis présent et de les désactiver quand je suis absent... sert à rien d'exploser sont téléphone de notif si je suis là pour m'en rendre compte
  11. pepite

    Liste Api-Lua & Api-Http Pour Hc2

    Bonjour à tous, Comme évoqué dans un des topics du firmware avec @Lazer, j'initie un début de liste des différentes API-LUA et API-HTTP apparues suite aux évolutions de firmware. Pour HC2 UNIQUEMENT Cette liste est loin d'être exhaustive, je me suis basé sur les changelog des firmwares et le site https://developer.fibaro.com/. Si vous en connaissez d'autres, n'hésitez pas (je pense à vous les MAITRES du LUA ) Les admins/modos, je vous laisse le soin de mettre le sujet où bon vous semble ;-), un sous-forum de HC2 peut-être. These calls can be used to start increasing or decreasing Multilevel Switches (like Dimmer 2, RGBW or Roller Shutter 2 modules) value. 'x' and 'y' are optional parameters, used to set respectively time frame in which change should be applied and starting level. 'stopLevelChange' stops previously send action. fibaro:call(ID, 'startLevelIncrease', x, y) fibaro:call(ID, 'startLevelDecrease', x, y) fibaro:call(ID, 'stopLevelChange') Call used to get table with IDs of devices that meet requirement specified by 'x'. fibaro:getDevicesId(x) -- Examples: print('All devices with parameter visible equal to "true" and enabled equal to "true":') ids = fibaro:getDevicesId({visible = true, enabled = true}) print(json.encode(ids)) print('ALl devices with energy interface:') ids = fibaro:getDevicesId({interfaces ={"energy"}}) print(json.encode(ids)) print('All devices with 'unit' property (no matter its value):') ids = fibaro:getDevicesId({properties = {unit="nil"}}) print(json.encode(ids)) Which will set given scene respectively to Automatic, Manual and Disabled mode. Any other value will set scene triggering mode to Automatic. fibaro:setSceneRunConfig(sceneID, runConfig) where runConfig is string that takes one of these three values: - TRIGGER_AND_MANUAL - MANUAL_ONLY - DISABLED fibaro:getSceneRunConfig(sceneID) returns currently set value. Old functions will keep backward compatibility and continue to work without change. - fibaro:setSceneEnabled(sceneID, enabled) - fibaro:isSceneEnabled(sceneID) Redémarrage Home Center et Arrêt Home Center HomeCenter.SystemService.reboot() et HomeCenter.SystemService.shutdown() Exemples : -- Reboot system HomeCenter.SystemService.reboot(); -- Shutdown system HomeCenter.SystemService.shutdown(); Popup service HomeCenter.PopupService.publish({title, subtitle, contentTitle, contentBody, img, type, buttons}) Parameters title - string containing text to be displayed as a pop-up window title (parameter required) subtitle - string containing text to be displayed as a pop-up window subtitle contentTitle - string containing text to be displayed as a pop-up content title contentBody - string containing text to be displayed as a pop-up content (parameter required) img - string containing path of an image to be displayed in the pop-up window (supported extensions: .jpg, .bmp, .png, .gif) type - notification type indicated with a colour, available types: 'Info' - blue (default) 'Success' - green 'Warning' - yellow 'Critical' - red buttons - array containing definitions of buttons to be displayed in the pop-up, single button definition must be an array containing: 'caption' - text displayed on the button 'sceneId' - scene id triggered after pushing the button Exemple 1 --[[ %% properties %% globals --]] -- variable containing path of Motion Sensor’s icon local imgUrl = 'http://www.fibaro.com/sites/all/themes/fibaro/images/motion- sensor/en/motion_sensor_manual.png' -- pop-up call HomeCenter.PopupService.publish({ -- title (required) title = 'No motion detected', -- subtitle(optional), e.g. time and date of the pop-up call subtitle = os.date("%I:%M:%S %p | %B %d, %Y"), -- content header (optional) contentTitle = 'No motion since last 15 minutes', -- content (required) contentBody = 'Should I run the scene "Night"?', -- notification image (assigned from the variable) img = imgUrl, -- type of the pop-up type = 'Success', -- buttons definition buttons = { { caption = 'Yes', sceneId = 0 }, { caption = 'No', sceneId = 0 } } }) NOTE Please note that the example scene must be triggered manually. It just illustrates the way of creating pop-ups. Execution of this scene will not affect any device status (sceneId = 0). NOTE Setting an action of the button to 'sceneId = 0' means that no action will be performed. NOTE Created pop-up is sent to each of users and mobile devices connected with the main controller. NOTE There is no maximum size of image displayed in the pop-up window. However, using too large file may result in long waiting times required for downloading the image. NOTE Pushing one of the buttons displayed in the pop-up window may only trigger another scene. Exemple 2 --[[ %% properties 3814 value %% globals --]] local startSource = fibaro:getSourceTrigger(); if ( ( tonumber(fibaro:getValue(3814, "value")) > 60 ) or startSource["type"] == "other" ) then HomeCenter.PopupService.publish({ title = 'Brightness level', subtitle = 'is too high', contentTitle = 'Dimmer', contentBody = 'Would you like to turn it off?', img = ' http://www.fibaro.com/images/eng/icon_osw.png', type = 'Critical', buttons = { { caption = 'Turn off', sceneId = 3228 }, { caption = 'No', sceneId = 0 }, { caption = 'Set to 100%', sceneId = 3229 } } }) end 1ère MAJ venant de @Steven concernant les fonctions fibaro : Telecharger le tar.gz http://updatehc2.fibaro.com/4.083/ , puis dans opt/fibaro ouvrir fibaroSceneAPI.lua Backups depuis une scène (Merci à @Nikko) --[[ %% properties %% events %% globals --]] local portable = 385 local message = 'Backup du '..os.date("%d/%m/%y - %HH%M") local url = 'http://127.0.0.1:11111/api/settings/backups' local httpClient = net.HTTPClient() httpClient:request(url , { success = function(response) if tonumber(response.status) == 201 then print("Backup Created at " .. os.date()) fibaro:call(portable,'sendPush', message .. ' effectué') else print("Error " .. response.status) fibaro:call(portable,'sendPush', 'Erreur lors de la création du Backup') end end, error = function(err) print('error = ' .. err) end, options = { method = 'POST', headers = { ["content-type"] = 'application/x-www-form-urlencoded;' }, data = 'action=create&description='..message } }); - Attention, si planification avec GEA, dans la nuit, ca relance le zwave ;-) GEA.add(true, 30, "", {{"Scenario", id}}) ASTUCES DIVERSES Affichage persistent du LOG des VDs et couleurs possibles (merci @Steven et @Berale, je ne suis que le Scrib) - Code à mettre dans le MAIN-LOOP fibaro:log("Test") fibaro:call(fibaro:getSelfId(), "setProperty", "logTemp", "TxtGray" ) - Couleurs possibles : .TxtGreen .TxtRed .TxtYellow .TxtBlue .TxtGray Exemple de @Nico --1er bouton VD local deviceId = fibaro:getSelfId(); fibaro:call(deviceId, "setProperty", "ui.Label1.value", "Repos") -- Second bouton du VD local deviceId = fibaro:getSelfId(); fibaro:call(deviceId, "setProperty", "ui.Label1.value", "Alarme") fibaro:call(deviceId, "setProperty", "ui.Label2.value", os.date("%m %B %Y - %H:%M:%S")) -- Mainloop pour affichage persistent du log local deviceId = fibaro:getSelfId(); local value = fibaro:getValue(deviceId, "ui.Label2.value") fibaro:log(value) fibaro:call(fibaro:getSelfId(), "setProperty", "logTemp", "TxtGray" ) Affichage persistent HORS MAIN-LOOP fibaro:call(fibaro:getSelfId(), "setProperty", "log", "blablabla" ) MISE à jour suite à la version stable 4.10 : Merci à @Steven fibaro:callGroupAction(action, filters) { "filter": "hasProperty", "value": ["configured", "dead", "model"] } { "filter": "interface", "value": ["Z-Wave", "levelChange"] } { "filter": "parentId", "value": [664] } { "filter": "type", "value": ["com.fibaro.multilevelSwitch"] } { "filter": "roomID", "value": [2, 3] } { "filter": "baseType", "value": ["com.fibaro.binarySwitch"] } { "filter": "isTypeOf", "value": ["com.fibaro.binarySwitch"] } { "filter": "isPlugin", "value": [true] } { "filter": "propertyEquals", "value": [ { "propertyName": "configured", "propertyValue": [true] }, { "propertyName": "dead", "propertyValue": [false] }, { "propertyName": "deviceIcon", "propertyValue": [15] }, { "propertyName": "deviceControlType", "propertyValue": [15,20,25] } ] } { "filter": "deviceID", "value": [55,120,902] } Parameters action: action name filters: filters object Returned values devices: array of device id's filtered by given rule. Code example --[[ %% properties %% events %% globals --]] local data = { args = { 1 }, filters = { { filter = "roomID", value = { 2 } }, { filter = "type", value = { "com.fibaro.motionSensor" } } } } local devices = fibaro:callGroupAction("setArmed", data) for k,v in ipairs(devices) do print (v) end HomeCenter.NotificationService.publish(payload) Name Function name must be always the same: HomeCenter.NotificationService.publish Application Publishes notification. Parameters request: request object Code example HomeCenter.NotificationService.publish({ type = "GenericDeviceNotification", priority = "warning", data = { deviceId = 2643, title = "foo", text = "bar" } }) HomeCenter.NotificationService.update(id, payload) Name Function name must be always the same: HomeCenter.NotificationService.update Application Updates notification. Parameters id: notification id request: request object Code example HomeCenter.NotificationService.update(7, { canBeDeleted = true, data = { title = "udapted foo", text = "udapted bar" } }) HomeCenter.NotificationService.remove(id) Name Function name must be always the same: HomeCenter.NotificationService.remove Application Removes notification. Parameters id: notification id Code example HomeCenter.NotificationService.remove(7) Info du jour concernant le centre de notification de la HC2, merci @tinman, c'est ici : - Pour utiliser le centre de notification avec des infos "perso" : Tester et aprouvé en 4.10 function doNotify(text, devid) api.post('/notificationCenter', { type = 'GenericDeviceNotification', canBeDeleted = true, -- priority can be -- alert -- red alert sign -- warning -- yellow warning sign -- info -- same as warning priority = 'alert', data = { deviceId = devid, text = text, title = text } }) end doNotify('Test notif HC2', 12 )
  12. Bonjour les amis, Rien que le titre tient de l'exploit et comme le dit @Nico ici ... cela va être compliqué ... En bref, je souhaite avoir accès aux périphériques ZigBee connectés à mon Echo Plus. Après contact avec le support développeurs de chez Amazon, il m'a été demandé de poster ma demande sur leur site "boîte à idées", ce que j'ai fait ici : https://alexa.uservoice.com/forums/906892-alexa-skills-developer-voice-and-vote/suggestions/36349165-locally-control-zigbee-devices-connected-to-my-ech Sachant que ceci est basé sur un système de votes, puis-je compter sur vous pour "propulser" cette idée dans le top 10 grâce à vos votes zélés et empressés Merci d'avance et bonnes fêtes à tous - Jean-Paul
  13. 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.
  14. Rem's

    Modifier une variable / API

    Bonsoir à tous, je voudrais modifier la valeur de la variable "Cumulus" et y mettre "1650", suivant le déclenchement de l'IPX 800 : /api/callAction?deviceID=444&name=turnOn : Ca c'est pour allumer ... Mais pour changer la valeur de la variable ... ?? D'avance merci pour votre aide
  15. OJC

    Création de Module Virtuel via l'API

    Bonsoir, J'essaie de créer un Module Virtuel en passant par l'API via http://xxx.xxx.xxx.xxx/docs mais je me retrouve avec ce message d'erreur : { "type": "ERROR", "reason": "Type not found", "message": "Type 'virtual_device'' is not installed in the system." } S'agit-il d'une sécurité, ou y- a-t-il une subtilité ? Etant précisé que le body que j'utilise est le contenu d'un fichier vfib sorti directement de la HC2.
  16. Indyana

    Mise à jour module via API

    Bonjour, J'essaye désespérément de mettre à jour un virtual device depuis une page PHP. Je fais une requête HTTP en PUT avec mes logins/pass admin (Ca fonctionne très bien en GET). Par contre le PUT me renvoi systématiquement l'erreur ci dessous quelque soit le JSON utilisé : "The document root must not be followed by other values." Je pense que le format de mon body n'est pas correcte, quelqu'un saurait me dire pourquoi svp ou me donner un exemple de json correcte? l'url utilisée : http://monuser:monpass@192.168.0.16/api/virtualDevices/191 le Json tout bête placé dans un tableau : {"id":191,"name":"InjectionModule"} ce que reçoit la HC2 (enfin un autre script ici) semble correcte : {"id":191,"name":"InjectionModule"} Merci d'avance du coup de patte!
  17. pepite

    SOMFY - Ouverture

    Bonjour Messieurs, Somfy s'ouvre, j'ai noté : "A noter que des API seront disponibles" Comme quoi tout arrive ;-) https://www.maison-et-domotique.com/76693-somfy-support-ifttt-amazon-alexa-sonos-nouveau-thermostat-connecte/
  18. emm456

    Questions Sur L'api Fibaro Et Lua

    Bonjour à tous, Nouveau sur le forum et sur la box Fibaro HC2, je souhaiterais avoir votre retour d’expérience en ce qui concerne l’appli mobile Android et l’API, et une indication sur le LUA. - Concernant l’appli Android, j’ai des problèmes de retour d’état. Quand je me connecte, ou si je suis déjà connecté et que je fais un refresh data par les paramètres, je n’ai pas toujours un retour d’état juste. J’ai des lampes affichées éteintes alors qu’elles sont allumées et ainsi de suite. Avez-vous constaté ça aussi ? je précise que ça le fait même sur des devices Fibaro et même parfois sur la page web sur un PC. - Pour l’API, j’ai aussi des décalages d’état dans la value qui n’est pas toujours juste. - Enfin, je n’arrive pas à trouver certaines commandes API ou LUA. Savez-vous s’il est possible, et si oui, comment : o Modifier la valeur d’une variable globale par son ID ou son nom par requete HTTP ? o Modifier le label d’une étiquette d’un périphérique virtuel avec la valeur d’une variable globale par LUA ? o Connaitre l'historique des valeurs d'un device par requete HTTP ? o J’ai des soucis avec la lecture de requetes JSON avec la fonction json.decode. Du coup je galère pour lire des données Eedomus avec le HC2. Est-ce que vous utilisez souvent cette fonction sans problème ou pas ? Merci d’avance pour vos réponses. Bonne journée.
  19. jjacques68

    Utilisation API HC2

    Bonjour tout le monde ! Petite question rapide : (enfin je crois) j'arrive très facilement à récupérer des valeurs grâce à l'API de la HC2, exemple : je récupère la valeur suivante : l'heure défini dans le panneau de chauffage du lundi matin, comme ceci : local Pannel = api.get("/panels/heating/61") print(Pannel.properties["monday"].morning["hour"]) ça marche nickel ! j'utilise souvent cette méthode... Par contre si je veux écrire dans l'API, il faut utiliser un "PUT" ! -> ok mais y a t'il une méthode plus simple que le Net.HTTP ? On peut pas l'attaquer directement comme pour la lecture ? genre api.put .......... merci à vous !
  20. DoR.Technique

    Hc2 Plugin Numericable

    Bonsoir, Qui a réussi a paramétrer le plugin Numericable ? Que renseigner dans les champs "TCP Port" et "UUDI" Je n'ai trouver aucune info sur le net a ce sujet. Y a t-il une API pour la box numericable ? Merci de votre aide.
  21. pepite

    Liste Api-Http Pour Hcl Et Hc2

    Bonjour, Voici une liste non exhaustive de l'API HTTP pour HOME CENTER 2 et HOME CENTER LITE A compléter si vous en connaissez d'autres !! - filters in /api/devices that allows for filtering out devices that meet some requirements, examples: HC IP/api/devices?visible=true returns devices with visible equal to 'true' HC IP/api/devices?property=[batteryLevel,100] returns devices with property batteryLevel equal to 100 HC IP/api/devices?interface=light returns devices with light interface Multiple filters can be used together, for example: HC IP/api/devices?visible=true&interface=light returns devices with visible equal to 'true' and with 'light' interface Suite à une Mise à jour, revenir à un firmware précédent http://ip_HC2/services/startUpgrade.php Relancer la fin de l'installation suite à une erreur 503 http://<IP hc2>/services/finishUpgradeAfterError.php
  22. Bonjour j'ai besoin de lancer des requests correspondant à un bouton d'un module virtuel mais je ne sais pas comment trouver dans la configuration de mon module virtuel device ID et je veux bien une confirmation pour le button ID (car j'ai par exemple Button31 donc ca sera 3???) Modules virtuels ID = device ID arg1 = button ID http://<LOGIN>:<PASS>@<IP>/api/callAction?deviceID=<ID>&name=pressButton&arg1=<BUTTON ID> Merci d'avance
  23. Nico

    Changer Icone Par L'api

    Question, est il possible de changer une icône directement par l'API de la HC2 ?
  24. Rem's

    Requête Push Via Ipx 800

    Bonjour à tous, je tourne en rond malgré plusieurs tentatives ...... Impossible de déclencher une action sur HC2 lorsque j'appuie sur le Relay1 de l'IPX. Je ne vois pas ou est mon erreur. Merci de votre aide .....
  25. Bonjour j'ai enfin réussi à récupérer les infos de ma smappee à partir d'une interface REST. Malheureusement je galère à créer un module virtuel qui irait chercher ces infos automatiquement. Le problème est qu'il faut utiliser un Header pour la requête. Voici ce que j'ai trouvé et comment j'ai codé: local httpClient = net.HTTPClient(); httpclient:request('https://app1pub.smappee.net/dev/v1/servicelocation/[serviceLocationId]/consumption?aggregation=4&from=1423907904000&to=1426327104000', { success = successCallback, error = errorCallback, options = { method = 'GET' }, headers = { ['Authorization'] = 'bearer [ACCESS_TOKEN]' } } ) if (tonumber(errorCode) == 0) then jsonTable = json.decode(response); fibaro:debug("consumption" .. jsontable.consumptions.consumption); else fibaro:debug("error "..errorCode ) end la reponse étant { serviceLocationId: XXXX consumptions: [ 1] 0: { timestamp: 1425164400000 consumption: 721056.4 solar: 0 alwaysOn: 1408702 } - - } merci pour votre aide
×