-
Compteur de contenus
9 579 -
Inscription
-
Dernière visite
-
Jours gagnés
59
Tout ce qui a été posté par pepite
-
Bonsoir, Tu peux tout à fait tout gérer en fonction d'un seul capteur de température mais s'ils ne sont pas dans la même pièce, cela risque d'être un peu faussé. Il existe un plugin Thermostat virtuel je crois.
-
Attention, tu ne peux pas TOUT modifier depuis l'API. La plupart du temps que les properties. A l'inverse, tu peux tout LIRE, amis je t'avoue que je n'ai jamais testé de tout lire.
-
oui j'ai vu, mais je ne comprends pas bien ;-), enfin, plutôt pas du tout Avec ce code tu as quelquechose ? local json = api.get("/api/panels/drenchers") fibaro:debug("Lecture de json.rainDelay avant modification: " ..json.rainDelay.. " Cycles : " ..json.cycles) fibaro:debug("Nom 187 : " ..json.drenchers[1].name)
-
@Fanou, en Ile de France pourquoi ? A quoi penses tu ?
-
Pour moi ça devrait le faire. Mais attention tu as 2 ils différents : 5 et 16
-
I think it's ok for the quote. i search " and @lt ;-) in all code I don't understand what happens Look the debug [DEBUG] 19:05:17: Remove [DEBUG] 19:05:17: que [DEBUG] 19:05:17: unMute sent [DEBUG] 19:05:17: Volume set: 40 [DEBUG] 19:05:17: Seek [DEBUG] 19:05:17: play sent [DEBUG] 19:05:17: STOPPED [DEBUG] 19:05:22: STOPPED Thanks a lot of answering. I feel i will pay spotify ;-)
-
Salut @971jmd Oui, il n'y a pas de if ni de json.encode ni decode, car tout est dans la fonction api.get C'est plus simple et plus rapide à écrire ;-) Regarde ca
-
Re, C'est quand même bizarre ce qui se passe. tu devrais avoir un retour au moins de jsonTable.rainDelay Tu as rebooté depuis ?
-
idem pour moi, pas de pic à ce niveau. Auj, le lave linge a tourné, j'ai aussi un WP derrière et pas de pic à ce niveau, je viens de regarder ;-)
-
Excellente cette appli @Moicphil
- 100 réponses
-
- Sirène
- Exterieure
-
(et 2 en plus)
Étiqueté avec :
-
C'est très rassurant tt de meme. Sympa la couleur Envoyé de mon Nexus 5X en utilisant Tapatalk
-
MCO Home - MH10-PM2.5 - Moniteur de qualité de l'air (température, humidité, particules fines)
pepite a répondu à un(e) sujet de CaptainIgloo dans MCOhome
Non pas peu fiable, il est peut etre tres fiable :-) Envoyé de mon Nexus 5X en utilisant Tapatalk -
MCO Home - MH10-PM2.5 - Moniteur de qualité de l'air (température, humidité, particules fines)
pepite a répondu à un(e) sujet de CaptainIgloo dans MCOhome
Bonjour, Oui c est cher :-) mais peut tre très fiable :-). Vmc, ouverture de fenetres, et en mode capteur de temperature. C'est Tout ce qui me vient ce matin. :-) Envoyé de mon Nexus 5X en utilisant Tapatalk -
Mets en forme le retour de ton json avec un plugin json viewer dans ton navigateur stp, ça simplifie la lecture. surtout que ton json est complexe :-). Tu vas voir ça change la vie ;-) Que souhaites tu modifier alors ?
-
A tester encore, je n'utilise pas le panneau d'arrosage ;-) local json = api.get("/api/panels/drenchers") fibaro:debug("Lecture de json.rainDelay avant modification: " ..json.rainDelay) json.rainDelay = 2 fibaro:debug("json RainDelay : "..json.rainDelay) api.put(api.put("/api/panels/drenchers", json)
-
Ah, bizarre ;-) je dois me tromper ;-) tu as quelquechose dans le début pour "avant modification" ?? Tape ça dans un navigateur : http://IPHC2/api/panels/drenchers Et copie colle le résultat stp
-
Thanks @drboss, I try but nothing, i have only one playlist in sonos, and i don't find the list_nbr, i try until 11, i have 6 favorite radios. I do something wrong, but what. I don't use Spotify yet :-( @Titof_44 Comme toi, j'ai rajoute un bouton dans le Sonos Remote pour tester ;-) ..oui oui, je plagie lol Je vous le code peut-être que je rate qqch ;-) -- SONOS Play playlist, v.0.1 ------------------------------------------------------------------------------------------- ---made on source of:----------------------------------------------------------------------- -- SONOS Play stream... -- Copyright © 2014 Jean-Christophe Vermandé ------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------- ---------------------------------- -- User Settings ---------------------------------- selfId = fibaro:getSelfId(); ip = fibaro:get(selfId, 'IPAddress'); port = fibaro:get(selfId, 'TCPPort') or 1400; list_name = "pepite" --not implemented list_nbr = 11 -- playlist number on jffs system of SONOS, You need test it for find interesting list uid = "RINCON_5CAAFD239EE601400" -- find by http://SONOS_IP:1400/status/upnp FileVol = 40 PlayUnlimited = "Yes" -- si <> Yes, arrêt après 30s environ --duration = ---------------------------------- -- DO not change bellow this line ---------------------------------- 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 clear_last_que = function() -- without this album is added after play song/query return sendSoapMessage( -- control url "/MediaRenderer/Queue/Control", -- service type "urn:schemas-sonos-com:service:Queue:1", -- action { name = "RemoveAllTracks", service = "urn:schemas-sonos-com:service:Queue:1" }, -- soap body data (options) "<QueueID>0</QueueID>,<UpdateID>0</UpdateID>", -- callback (options) function(response) fibaro:debug("Remove"); end); 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 udn = "X-SONOS-TARGET-UDN: uuid:RINCON_B8E937B01D4E01400" -- udn of my SONOS (not need) 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" .. udn .. "\r\n" .. soapaction .. "\r\n" .. "\r\n" .. envelope; -- with UDN 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 and PlayUnlimited ~= "Yes") 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 sseek = function() return sendSoapMessage( -- control url "/MediaRenderer/AVTransport/Control", -- service type "urn:schemas-upnp-org:service:AVTransport:1", -- action { name = "Seek", service = "urn:schemas-upnp-org:service:AVTransport:1" }, -- soap body data (options) "<InstanceID>0</InstanceID>,<Unit>TRACK_NR</Unit>,<Target>1</Target>", -- callback (options) function(response) fibaro:debug("Seek"); end); end que = function() return sendSoapMessage( -- control url "/MediaRenderer/AVTransport/Control", -- service type "urn:schemas-upnp-org:service:AVTransport:1", -- action { name = "AddURIToQueue", service = "urn:schemas-upnp-org:service:AVTransport:1" }, -- soap body data (options) "<InstanceID>0</InstanceID>,<EnqueuedURI>file:///jffs/settings/savedqueues.rsq#".. list_nbr.."</EnqueuedURI>,<EnqueuedURIMetaData><DIDL-Lite xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:r="urn:schemas-rinconnetworks-com:metadata-1-0/" xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/"><item id="SQ:1" parentID="SQ:" restricted="true"><dc:title>".. list_name .."</dc:title><upnp:class>object.container.playlistContainer</upnp:class><desc id="cdudn" nameSpace="urn:schemas-rinconnetworks-com:metadata-1-0/">RINCON_AssociatedZPUDN</desc></item></DIDL-Lite></EnqueuedURIMetaData>,<DesiredFirstTrackNumberEnqueued>1</DesiredFirstTrackNumberEnqueued>,<EnqueueAsNext>1</EnqueueAsNext>", -- callback (options) function(response) fibaro:debug("que"); 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(volume) return sendSoapMessage( -- control url SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#SetAVTransportURI" "/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-rincon-queue:"..uid.."#0</CurrentURI>,<CurrentURIMetaData></CurrentURIMetaData>", -- zestawienie playlist -- control url --"/MediaServer/ContentDirectory/Control", -- service type --"urn:schemas-upnp-org:service:ContentDirectory:1", -- action --{ name = "Browse", service = "urn:schemas-upnp-org:service:ContentDirectory:1" }, -- soap body data (options) --"<ObjectID>Q:0</ObjectID>,<BrowseFlag>BrowseDirectChildren</BrowseFlag>,<Filter>dc:title,res,dc:creator,upnp:artist,upnp:album,upnp:albumArtURI</Filter>,<StartingIndex>0</StartingIndex>,<RequestedCount>100</RequestedCount>,<SortCriteria></SortCriteria></u:Browse>", -- 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 sseek(); play(); end); end clear_last_que(); que(); -- en paramètres: le fichier, puis le volume... playFile(FileVol);
-
Bonsoir, Essaie cela, j'ai mis le rainDelay à 2 A tester sans certitude local reponse, status, errorCode = api.get("/api/panels/drenchers") if tonumber(status) == 200 then fibaro:debug("Lecture de REPONSE avant modification: " ..reponse) reponse.rainDelay = 2 api.put("/api/panels/drenchers", reponse) fibaro:debug("Lecture de REPONSE après modification: " ..reponse) else fibaro:debug("Status : " ..status.. " - Erreur : "..errorCode) end
-
Code OK, je viens de tester : local idModule = 57 local SectionId = fibaro:getSectionID(idModule) print("SectionId : " ..SectionId) local json = api.get("/sections/"..SectionId) print ("Nom : " ..json.name) Le Debug [DEBUG] 20:34:32: SectionId : 5 [DEBUG] 20:34:32: Nom : RDC
-
Je pense qu'il et inutile de faire du http:request pour atteindre l'api depuis la HC2 api.get est plus simple :-). Ca fait moins de lignes ;-) Tes variables pour moi doivent être : - ID du module - ID de la section qui et permettra de récupérer le nom de la section.
-
Bonjour, tu peux gagner peut-être une étape en faisant : ID module --> getSectionId(idmodule) --> /api/sections/idsection Envoyé de mon Nexus 5X en utilisant Tapatalk
-
Bon, ben je dois me tromper quelque part, mais où ;-) je ne trouve pas mon list_nbr, je n'en ai qu'une pour l'instant et rien... Le RINCON est bon ;-) Une idée ? je cherche encore
-
Merci @Titof_44 ;-) Désolé pour le retard de la réponse..le boulet. Excellent, on peut aussi pour Spotify, juste la grande classe very good, very good @drboss thanks a lot. Quelqu'un a trouvé le moyen simple de récupérer le list_nbr ? Plus qu'à tester ;-)