-
Compteur de contenus
6 715 -
Inscription
-
Dernière visite
-
Jours gagnés
124
Tout ce qui a été posté par Krikroff
-
Bonjour La Communauté Fibaro
Krikroff a répondu à un(e) sujet de mimikl dans Nouveau ? Présentez-vous
Bienvenue ! Je suis certain que tu trouveras toutes les réponses sur ce forum Pour le HC2: pas de cloud, le plus puissant du marché, programmation LUA, intégration Satel etc, bientôt les plugins etc... Le prix peut être un frein ! Envoyé de mon iPhone àl'aide de Tapatalk -
... en même temps c'est galère une box par module , Mdr ! Après tout va dépendre du code Sans rire, si le HC2 était pas capable d'encaisser un petit script de 300 ou 400 Kb en mémoire il ne serait pas à la maison . @JossAlf, c'est ok pour les app
-
Ne te prends pas la tête, j'ai une dizaine de périphériques virtuels avec entre 2000 et 3000 lignes de code LUA et jamais un plantage de mon HC2 qui tourne comme une horloge ! Pour changer le Label d'un bouton tu peux faire ça : local deviceToEdit = fibaro:getSelfId(); local ID = "btnOnOffAllScenes"; HC2 = Net.FHttp("192.168.1.100", 80); HC2:setBasicAuthentication("admin", "admin"); --get the device to change response ,status, errorCode = HC2:GET("/api/virtualDevices?id="..deviceToEdit) if (tonumber(status) == 200) then jsonTable = json.decode(response); for key,value in pairs(jsonTable.properties.rows) do name = jsonTable.properties.rows[key].elements[1].name; --fibaro:debug(name); if(name==ID) then n = key; match = true; caption = jsonTable.properties.rows[n].elements[1].caption; fibaro:debug(caption); break; end end -- if (match) then fibaro:debug(name .." found, caption is [".. caption .."]"); jsonTable.properties.rows[n].elements[1].caption = "Unblock scenes execution" -- send back json = json.encode(jsonTable); response2 ,status2, errorCode2 = HC2:PUT("/api/virtualDevices?id="..deviceToEdit, json); if (tonumber(errorCode2)==0) then fibaro:debug("Edit complete text set "..status2) else fibaro:debug("Error update "..errorCode2) end else fibaro:debug(ID .. " not found!") end else fibaro:debug("error"); end bon c'est à nettoyer et optimiser La limite: la mise à jour est effective qu’après rechargement de la page.
-
Annonce Domotique-Fibaro Fait Peau Neuve !
Krikroff a répondu à un(e) sujet de Yohan dans Annonces et suggestions
Félicitations pour votre travail ! Je me doutais bien qu'il y avait du Domodial la dessous -
Pour répondre à ta question: OUI... mais j'attendais que Fibaro implémente une simple "listbox" dans les périphériques virtuels afin de lister proprement les entrées mais c'est pas gagné ! L'instruction est **FN avec en paramètre le numéro de l'entrée 01 (CD), 02 (TUNER), 25 (BD) etc, la réponse est de type FN**, pour un changement en mode "cyclique" c'est FU, en mode "reverse" c'est FD Et si tu me dis encore une fois du monsieur ça va pas le faire
-
Logiquement c'est le couple Latitude / Longitude.
-
Sur la base de mon code pour le TTS, une nouvelle fonction "playFile" ------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------- -- SONOS Play stream... -- Copyright (C) 2014 Jean-Christophe Vermandé ------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------- selfId = fibaro:getSelfId(); ip = fibaro:get(selfId, 'IPAddress'); port = fibaro:get(selfId, 'TCPPort') or 1400; currentTransportState = ""; lastTransportState = ""; currentVolume = 0; lastVolume = 0; ttsVolumeIsDifferent = false; urlencode = function(str) if (str) then str = string.gsub (str, "\n", "\r\n"); str = string.gsub (str, "([^%w ])", function (c) return string.format ("%%%02X", string.byte(c)) end); str = string.gsub (str, " ", "+"); end return str; end createRequestBody = function(action, schema, data) return string.format("<u:%s xmlns:u=\"%s\">%s</u:%s>", action, schema, data, action); end reponseCallback = function(fnc, args) if (fnc == nil) then return nil; end return fnc(args); end createSocket = function() -- Check IP and PORT before if (ip == nil or port == nil) then fibaro:debug("You must configure IPAddress and TCPPort first"); return; end local socket; local status, err = pcall(function() socket = Net.FTcpSocket(ip, port); socket:setReadTimeout(1000); end); if (status ~= nil and status ~= true) then fibaro:debug("socket status: " .. tostring(status or '')); end if (err ~= nil) then fibaro:debug("socket err: " .. tostring(err or '')); return; end return socket; end disposeSocket = function(socket) if (socket ~= nil) then socket:disconnect(); socket = nil; return true; end return false; end sendSoapMessage = function(url, service, action, args, callback, retry) local socket = createSocket(); if (socket == nil) then return; end retry = retry or 0 -- prepare data local url = "POST " .. url .. " HTTP/1.1"; local soapaction = "SOAPACTION: \"" .. service .. "#" .. action.name .. "\""; local body = createRequestBody(action.name, action.service, tostring(args or "")); local envelope = "<?xml version=\"1.0\" encoding=\"utf-8\"?><s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\" s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"><s:Body>" .. body .. "</s:Body></s:Envelope>"; local ctl = "Content-Length: " .. string.len(envelope); local payload = url .. "\r\n" .. ctl .. "\r\n" .. soapaction .. "\r\n" .. "\r\n" .. envelope; -- write data local bytes, errorcode = socket:write(payload); if (errorcode == 0) then local state, errorcode = socket:read(); if (errorcode == 0) then if (string.len(state or "") > 0) then -- callback if (callback ~= nil) then reponseCallback(callback, state); end -- dispose ... disposeSocket(socket); return true; else fibaro:debug("Error: Invalid response. response length: " .. string.len(state or "")); end else if (retry < 5) then fibaro:debug("retry #"..retry.." action: " .. action.name); return sendSoapMessage(url, service, action, args, callback, (retry + 1)); else fibaro:debug("Error: Code returned "..tostring(errorcode or "")); end end elseif (errorcode == 2) then fibaro:debug("Error: You must check your IP and PORT settings."); else if (retry < 5) then fibaro:debug("retry #"..retry.." action: " .. action.name); return sendSoapMessage(url, service, action, args, callback, (retry + 1)); else fibaro:debug("Error: Code returned "..tostring(errorcode or "")); end end -- dispose ... disposeSocket(socket); -- default response return false; end stop = function() return sendSoapMessage( -- control url "/MediaRenderer/AVTransport/Control", -- service type "urn:schemas-upnp-org:service:AVTransport:1", -- action { name = "Stop", service = "urn:schemas-upnp-org:service:AVTransport:1" }, -- soap body data (options) "<InstanceID>0</InstanceID><Speed>1</Speed>", -- callback (options) function(response) fibaro:debug("stop sent"); end); end unMute = function() return sendSoapMessage( -- control url "/MediaRenderer/RenderingControl/Control", -- service type "urn:schemas-upnp-org:service:RenderingControl:1", -- action { name = "SetMute", service = "urn:schemas-upnp-org:service:RenderingControl:1" }, -- soap body data (options) "<InstanceID>0</InstanceID><Channel>Master</Channel><DesiredMute>0</DesiredMute>", -- callback (options) function(response) fibaro:debug("unMute sent"); end); end play = function(duration) return sendSoapMessage( -- control url "/MediaRenderer/AVTransport/Control", -- service type "urn:schemas-upnp-org:service:AVTransport:1", -- action { name = "Play", service = "urn:schemas-upnp-org:service:AVTransport:1" }, -- soap body data (options) "<InstanceID>0</InstanceID><Speed>1</Speed>", -- callback (options) function(response) if (duration ~= nil) then fibaro:debug("play sent for " .. duration .. " seconds"); fibaro:sleep(duration); stop(); else fibaro:debug("play sent"); local n = 0; currentTransportState = "TRANSITIONING"; while (currentTransportState == "TRANSITIONING") do if (n > 10) then break end; getTransportState(); fibaro:debug(currentTransportState); fibaro:sleep(5000); n = n + 1; end local i = 0; currentTransportState = "PLAYING"; while (currentTransportState == "PLAYING") do if (i > 10) then break end; getTransportState(); fibaro:debug(currentTransportState); fibaro:sleep(2000); i = i + 1; end fibaro:sleep(1000); stop(); end -- update volume with value before tts if different if (ttsVolumeIsDifferent == true) then setVolume(lastVolume); ttsVolumeIsDifferent = false; end end); end setVolume = function(value) return sendSoapMessage( -- control url "/MediaRenderer/RenderingControl/Control", -- service type "urn:schemas-upnp-org:service:RenderingControl:1", -- action { name = "SetVolume", service = "urn:schemas-upnp-org:service:RenderingControl:1" }, -- soap body data (options) "<InstanceID>0</InstanceID><Channel>Master</Channel><DesiredVolume>" .. tostring(value) .. "</DesiredVolume>", -- callback (options) function(response) fibaro:debug("Volume set: " .. value); end); end getVolume = function() fibaro:log("Get volume, please wait..."); return sendSoapMessage( -- control url "/MediaRenderer/RenderingControl/Control", -- service type "urn:schemas-upnp-org:service:AVTransport:1", -- action { name = "GetVolume", service = "urn:schemas-upnp-org:service:RenderingControl:1" }, -- soap body data (options) "<InstanceID>0</InstanceID><Channel>Master</Channel>", -- callback (options) function(response) currentVolume = tonumber(response:match("<CurrentVolume>(.+)</CurrentVolume>") or 0); end); end getTransportState = function() return sendSoapMessage( -- control url "/MediaRenderer/AVTransport/Control", -- service type "urn:schemas-upnp-org:service:AVTransport:1", -- action { name = "GetTransportInfo", service = "urn:schemas-upnp-org:service:AVTransport:1" }, -- soap body data (options) "<InstanceID>0</InstanceID>", -- callback (options) function(response) currentTransportState = response:match("<CurrentTransportState>(.+)</CurrentTransportState>") or ""; end); end playFile= function(file, volume) return sendSoapMessage( -- control url "/MediaRenderer/AVTransport/Control", -- service type "urn:schemas-upnp-org:service:AVTransport:1", -- action { name = "SetAVTransportURI", service = "urn:schemas-upnp-org:service:AVTransport:1" }, -- soap body data (options) "<InstanceID>0</InstanceID>,<CurrentURI>x-file-cifs:" .. file .. "</CurrentURI>,<CurrentURIMetaData></CurrentURIMetaData>", -- callback (options) function(response) -- retrieve current transport state getTransportState(); lastTransportState = currentTransportState; -- unmute before unMute(); -- retrieve volume getVolume(); lastVolume = currentVolume; -- set tts volume if <> with current if (volume ~= nil and volume ~= currentVolume) then setVolume(volume); ttsVolumeIsDifferent = true; end play(); end); end -- en paramètres: le fichier, puis le volume... playFile("//HOME-SERVER/Musique/CD/Dream Theater/A Change of Seasons/01-A Change of Seasons [Medley].flac", 20); Voilou
-
D'accord , comme sous ton avatar il y a Box: Home Center 2 , hum tu brouilles les pistes
-
Bonsoir Steve, bienvenue ! Une question: une HCL en plus d'un HC2 ou bien en contrôleur principale ?
-
J'ai aussi un ST814 et honnêtement je trouve qu'il n'est pas super fiable même si il remplit son rôle au quotidien. J'ai souvent constaté des écarts de + ou - 1 °C En ce moment j'ai un Motion Sensor à côté d'un thermomètre digital, une sonde 1Wire, Netamo voici les température: - Motion Sensor: 20.3 - Thermometre digital: 20.5 - Sonde 1Wire: 20.31 - NetAtmo: 20.1 Dans tous les cas tu peux ajuster la température avec le paramètre 66.
-
pour moi la seule chose en commun entre le HC2 et la Freebox c'est le réseau... Tu as plusieurs HC2 ou HCLite en mode passerelle ?
-
Et c'est quoi les références ?
-
oui, je pense que tu vas souvent changer la pile
-
Le serveur est-il lent ou fonctionne t-il de manière fluide, ordres z-wave, interface web etc...
-
Il faut réveiller le module manuellement pour lancer la configuration [23:10:15] ID 526: Received parameter 26 report, value = 0 [23:10:15] ID 526: Received parameter 40 report, value = 100 [23:10:16] ID 526: Received parameter 64 report, value = 0 ...
-
Oui très chiant, ce qui est étrange c'est que je suis certain qu' ils fonctionnaient au premier passage vers l'Alpha. Mais l'inclusion directe sous la 3.901 c'est pas ça !
-
Peut-être le prix du casse-pieds jamais satisfait ... Juste une déformation professionnelle et puis j'ai tellement harcelé Fibaro pour avoir un bug tracker depuis la V1.xx que je suis bien obligé de participer maintenant . Plus sérieusement, depuis le début je crois beaucoup en l'avenir de cette marque voila.
-
Plus on est de fous, plus on rit cependant je te conseil d'attendre la prochaine Alpha
-
Des ruptures aussi remontées sur le forum officiel ! Peut être un fournisseur qui rame, boîtie, carte mère ? Une super HC2 avec ports d'extensions, franchement je ne pense pas ... Oh je serais dégouté Je dis comme phil, victime de son succès Envoyé de mon iPhone àl'aide de Tapatalk
-
Oui et c'est beaucoup plus puissant en mode LUA, tu peux intégrer nom de pièce, de module bref un message très personnalisé ... Envoyé de mon iPhone àl'aide de Tapatalk
-
Une Vision Particuliere De La Domotique
Krikroff a répondu à un(e) sujet de Moicphil dans Le bistrot
Bande de fous, vous ne savez par reconnaitre un esprit visionnaire ! Bon et bien la domotique c'est fini pour moi et je vends la baraque, trop de confort ! C'est un cas ... -
Et les scènes, rien non plus après le redémarrage ? Il y a peut-être une association directe entre ton détecteur et ton actionneur ...
-
oui les choses seront plus simples ainsi
- 329 réponses
-
Pour cela tu dois passer les scènes en mode LUA et faire les notifications de la manière suivante : local dt = os.date(); --par push fibaro:call(smartphoneID, "sendPush", tostring(dt).." - Mon message ici.."); --par mail fibaro:call(userID, "sendEmail", "Sujet de mon message", tostring(dt).." - Mon message ici..");
-
Bonjour fuuss, Tu peux mettre le code suivant dans un bouton pour voir... fibaro:setGlobal("SonosTTS", "lng=fr|dr=auto|vol=25|txt=Ceci est un test de TTS. . .|");