Aller au contenu

flacon030

Membres confirmés
  • Compteur de contenus

    1 308
  • Inscription

  • Dernière visite

  • Jours gagnés

    29

Tout ce qui a été posté par flacon030

  1. La solution proposer par lazer a l'avantage de ne pas toucher au CI de la clim Ce n'est "qu'un bus de communication" les risques sont plutôt limités Mais il en va sens dire qu'il faut prendre toutes les précautions qui s'impose quant on touche a des circuits électrique
  2. Alors la je dit bravo Je vais surement effectué cette modification Bien que melcloud ne m'a jamais fait défaut Car je voudrais un maximum sortir des solution cloud Tu sais si une commande mural et ta solution peuvent fonctionner ensemble (sur un même connecteur CN105 en parallèle)? Encore merci pour ce superbe tuto
  3. flacon030

    Plugin Netatmo

    le voici -- Netatmo Weather Station QuickApp -- (c) 2020,2021 GSmart Grzegorz Barcicki -- For questions and debug: grzegorz@gsmart.pl -- https://dev.netatmo.com/apidocumentation/weather -- -- Changelog : -- v2.7 - 07/2023 (Kana-chan + Lazer) -- - Fix new Netatmo authentication using token -- v2.6 - 03/2021 (Lazer) -- - Fix QuickApp hang since HC3 Firmware 5.063.30 Beta -- v2.5.3 - 05/2021 (Lazer) -- - Fix child device creation using battery_alone -- v2.5.2 - 03/2021 (Lazer) -- - Minor fix -- v2.5.1 - 03/2021 (GSmart+Lazer) -- - FIX QuickApp hang after HC3's upgrade to 5.063 (http:request closed in pcall) -- - Added Czech translation (thanks to petrkl12) -- - Minor fixes & enhancements -- v2.5 - 07/2020 (Lazer) -- - Fix QuickApp crash in case weather station has no additional module -- v2.4 - 07/2020 (Lazer) -- - Add variable to choose between battery interface on dedicated child devices or directly on child devices -- v2.3 - 06/2020 (Lazer) -- - New device types (Rain, Wind, Gust) -- - Add battery levels monitoring (use dedicated child devices) -- - Add alive module monitoring (use Netatmo reachable property to make Fibaro devices appearing dead in the interface) -- - Optimized 10 minutes query interval 10s after Netatmo cloud update -- - Minor fixes & enhancements -- v2.2 - 06/2020 (GSmart) -- - FIX: prevent crash when we doesn't get any data from Netatmo API -- - Added status info on main QA device -- v2.1 - 05/2020 (GSmart) -- - Added support for unit conversion, eg. km/h to m/s -- - Further enhancements in code -- v2.0 - 04/2020 (GSmart) -- - Completely redesigned -- - Getting all data in one request to Netatmo API -- v1.1 - 04/2020 (GSmart) -- - Added support for Wind and Rain modules -- v1.0 - 04/2020 (GSmart) -- - Initial release -- - Supported devices: Base station, Outdoor module, Indoor module local QA_NAME = "Netatmo Weather Station QuickApp v2.7.Lazer" function QuickApp:onInit() __TAG = "QA_NETATMO_" .. plugin.mainDeviceId self:trace("") self:trace(QA_NAME.." - Initialization") self:trace("") -- If you would like to view full response from Netatmo API change this value to true self.api_response_debug = false -- Get QuickApp variables self.client_id = self:getVariable("client_id") self.client_secret = self:getVariable("client_secret") self.refresh_token = self:getVariable("refresh_token") if string.lower(self:getVariable("battery_alone")) == "true" then self.battery_alone = true end -- Update main device properties self:updateProperty("manufacturer", "Netatmo") self:updateProperty("model", "Weather Station") -- Setup classes for child devices. self:initChildDevices({ ["com.fibaro.temperatureSensor"] = MyNetatmoSensor, ["com.fibaro.humiditySensor"] = MyNetatmoSensor, ["com.fibaro.multilevelSensor"] = MyNetatmoSensor, ["com.fibaro.windSensor"] = MyNetatmoSensor, ["com.fibaro.rainSensor"] = MyNetatmoSensor, ["com.fibaro.genericDevice"] = MyNetatmoSensor, }) -- International language traduction self.traduction = { en = { temperature = "Temperature", humidity = "Humidity", co2 = "CO2", pressure = "Pressure", noise = "Noise", wind = "Wind", gust = "Gusts", rain = "Rain", module = "Module", }, pl = { temperature = "Temperatura", humidity = "Wilgotność", co2 = "CO2", pressure = "Ciśnienie", noise = "Hałas", wind = "Wiatr", gust = "Poryw", rain = "Deszcz", module = "Moduł", }, fr = { temperature = "Température", humidity = "Humidité", co2 = "CO2", pressure = "Pression", noise = "Bruit", wind = "Vent", gust = "Rafales", rain = "Pluie", module = "Module", }, cz = { temperature = "Teplota", humidity = "Vlhkost", co2 = "CO2", pressure = "Tlak", noise = "Hluk", wind = "Vítr", gust = "Nárazový vítr", rain = "Déšť", module = "Modul" }, } self.language = api.get("/settings/info").defaultLanguage or nil if not self.traduction[self.language] then self.language = "en" end self.trad = self.traduction[string.lower(self.language)] -- Supported Netatmo datatypes mapped to HC3 device type self.NetatmoTypesToHC3 = { -- Last temperature measure @ time_utc (in °C) Temperature = { type = "com.fibaro.temperatureSensor", defaultName = self.trad.temperature, value = "value", }, -- Last humidity measured @ time_utc (in %) Humidity = { type = "com.fibaro.humiditySensor", defaultName = self.trad.humidity, value = "value", }, -- Last Co2 measured @ time_utc (in ppm) CO2 = { type = "com.fibaro.multilevelSensor", defaultName = self.trad.co2, value = "value", unit = "ppm", }, -- Last Sea level pressure measured @ time_utc (in mbar) Pressure = { type = "com.fibaro.multilevelSensor", defaultName = self.trad.pressure, value = "value", unit = "mbar", }, -- Last noise measured @ time_utc (in db) Noise = { type = "com.fibaro.multilevelSensor", defaultName = self.trad.noise, value = "value", unit = "dB", }, -- Current 5 min average wind speed measured @ time_utc (in km/h) WindStrength = { type = "com.fibaro.windSensor", defaultName = self.trad.wind, value = "value", unit = "km/h", --[[ -- if you would like to have 'm/s', rather than 'km/h', you need to uncomment these lines unit = "m/s", conversion = function(value) return value/3.6 end ]]-- }, -- Current 5 min average wind direction measured @ time_utc (in °) WindAngle = { type = "com.fibaro.multilevelSensor", defaultName = self.trad.wind, value = "value", unit = "°", }, -- Speed of the last 5 min highest gust wind (in km/h) GustStrength = { type = "com.fibaro.windSensor", defaultName = self.trad.gust, value = "value", unit = "km/h", }, -- Direction of the last 5 min highest gust wind (in °) GustAngle = { type = "com.fibaro.multilevelSensor", defaultName = self.trad.gust, value = "value", unit = "°", }, -- Last rain measured (in mm) Rain = { type = "com.fibaro.rainSensor", defaultName = self.trad.rain .. " 5m", value = "value", unit = "mm", }, -- Amount of rain in last hour sum_rain_1 = { type = "com.fibaro.rainSensor", defaultName = self.trad.rain .. " 1h", value = "value", unit = "mm/h", }, -- Amount of rain today sum_rain_24 = { type = "com.fibaro.rainSensor", defaultName = self.trad.rain .. " 24h", value = "value", unit = "mm", }, -- Battery level (used only if battery_alone set to true) battery_percent = { type = "com.fibaro.genericDevice", defaultName = self.trad.module, value = "batteryLevel", interface = "battery", }, } self.max_status_store = 0 -- Last data update timestamp -- Allocate HTTP self.http = net.HTTPClient({timeout=10000}) -- Main loop self:loop() end function QuickApp:loop() --self:debug("<font color=fuchsia>QuickApp:loop()</font>") -- DEBUG self.devicesMap = self:buildDevicesMap() local auth = self:oAuthNetatmo(function(token) self:getNetatmoDevicesData(token) end) if not auth then self:warning("QuickApp stopped") return end -- Next refresh is 10s after next measurement local currentTime = os.time() local estimatedTime = tonumber(self.max_status_store) + 600 + 10 local optimizedDelay = estimatedTime - currentTime local waitDelay = (optimizedDelay > 0) and optimizedDelay or 30 self:debug("<font color=gray>Current time : ", os.date("%H:%M:%S", currentTime), "- Last updated values : ", os.date("%H:%M:%S", self.max_status_store), " - Next loop in", waitDelay, "seconds at", os.date("%H:%M:%S", currentTime+waitDelay), "...</font>") fibaro.setTimeout(math.floor(waitDelay*1000), function() self:loop() end) end function QuickApp:buildDevicesMap() --self:debug("<font color=fuchsia>QuickApp:buildDevicesMap()</font>") -- DEBUG local DM = {} for hcID,child in pairs(self.childDevices) do local module_id = child:getVariable("module_id") local device_id = child:getVariable("device_id") local data_type = child:getVariable("data_type") if (type(DM[module_id]) ~= "table") then DM[module_id] = { module_id = module_id, device_id = device_id, devices_map = {} } end DM[module_id].devices_map[data_type] = hcID end -- self:debug("DevicesMap built from childs: "..json.encode(DM)) return(DM) end -- Getting Data based on one request: "getstationsdata" function QuickApp:getNetatmoDevicesData(token, mode) --self:debug("<font color=fuchsia>QuickApp:getNetatmoDevicesData("..tostring(token)..", "..tostring(mode)..")</font>") -- DEBUG local request_body = "access_token=".. token self:getNetatmoResponseData("https://api.netatmo.net/api/getstationsdata", request_body, function(getData) --self:debug("Getting stations data") --self:debug("Netatmo API Response: "..json.encode(getData)) if (getData.error) then self:error("Response error: " .. getData.error.message) elseif (getData.status == "ok" and getData.body) then local Devices = {} for _, device in pairs(getData.body.devices) do local station_name = device.station_name or "" local last_status_store = os.date ("%d.%m.%Y %H:%M:%S", device.last_status_store or 0) local noOfModules = 1 self:debug("Found device: '"..device._id.."'; station_name: '"..(device.station_name or "???").."'; module_name: '"..(device.module_name or "???").."'; type: '"..device.type.."'; last_status_store: '"..last_status_store.."'") -- Last data update timestamp if device.last_status_store > self.max_status_store then self.max_status_store = device.last_status_store end self:UpdateHCDevice(mode, { id = device._id, device_id = device._id, name = device.module_name or "", station_name = station_name, reachable = device.reachable, last_status_store = last_status_store, }, device.dashboard_data or {}) for _, module in pairs(device.modules or {}) do noOfModules = noOfModules + 1 local module_last_seen = os.date ("%d.%m.%Y %H:%M:%S", module.last_seen or 0) self:debug("Found module: '"..module._id.."'; station_name: '"..(device.station_name or "???").."'; module_name: '"..(module.module_name or "???").."'; type: '"..module.type.."'; last_seen: '"..module_last_seen.."'") -- Last data update timestamp if module.last_seen > self.max_status_store then self.max_status_store = module.last_seen end if module.last_message > self.max_status_store then self.max_status_store = module.last_message end -- Prepare data local device_info = { id = module._id, device_id = device._id, name = module.module_name or "", station_name = station_name, reachable = module.reachable, last_status_store = module_last_seen, } if module.battery_percent then if self.battery_alone then -- Battery interface on dedicated child devices if device_info.reachable == true then self:UpdateHCDevice(mode, device_info, {battery_percent=module.battery_percent}) end elseif module.battery_percent then -- Battery interface directly on child devices device_info.battery_percent = module.battery_percent end end self:UpdateHCDevice(mode, device_info, module.dashboard_data or {}) end Devices[station_name] = { place = (device.place.city or "?")..", "..(device.place.country or "?"), modules = noOfModules, last_status_store = last_status_store } end local label = "Found devices: " local status = "Devices last seen: " for station_name, data in pairs(Devices) do label = label..station_name.." ("..data.place.."): "..data.modules.."; " status = status..station_name..": "..data.last_status_store.."; " end self:updateView("label", "text", label) self:updateView("status", "text", status) else self:error("Unknown error") end end ) end function QuickApp:addInterface(child, param) local device = api.get('/devices/' .. tostring(child.id)) local found = false for _, interface in ipairs(device.interfaces) do if interface == param then found = true break end end if not found then self:debug("Add '" .. param .. "' interface to device #" .. tostring(device.id)) child:addInterfaces({param}) end end function QuickApp:CreateChilds(module, dashboard_data) --self:debug("<font color=fuchsia>QuickApp:CreateChilds(...)</font>") -- DEBUG for data_type, value in pairs(dashboard_data) do --self:debug("data_type :", data_type, "- value :", value) -- DEBUG if (type(self.devicesMap[module.id]) == "table" and self.devicesMap[module.id].devices_map[data_type] and self.childDevices[self.devicesMap[module.id].devices_map[data_type]]) then local hcID = self.devicesMap[module.id].devices_map[data_type] child = self.childDevices[hcID] self:warning("HC3 child device for '"..data_type.."' module already EXISTS. Name: '"..child.name.."', id: '"..child.id.."', type: '"..child.type.."'") -- Set unit if not already done if (sensor_unit ~= "") then child:updateProperty("unit", sensor_unit) end -- Add battery interface if not already done if self.NetatmoTypesToHC3[data_type] and self.NetatmoTypesToHC3[data_type].interface then -- dedicated device self:addInterface(child, self.NetatmoTypesToHC3[data_type].interface) end if module.battery_percent then -- current device self:addInterface(child, "battery") child:setValue("batteryLevel", module.battery_percent) end else local sensor_type = "" local sensor_unit = "" if (self.NetatmoTypesToHC3[data_type]) then sensor_type = self.NetatmoTypesToHC3[data_type].type if (self.NetatmoTypesToHC3[data_type].unit) then sensor_unit = self.NetatmoTypesToHC3[data_type].unit end end if (sensor_type ~= "") then local name = (self.NetatmoTypesToHC3[data_type].defaultName or data_type) .. " " .. (module.station_name or "") .. " " .. (module.name or "") -- User friendly name local child = self:createChildDevice({ name = name, type = sensor_type }, MyNetatmoSensor) if (child) then -- Set unit if (sensor_unit ~= "") then child:updateProperty("unit", sensor_unit) end -- Set child variables child:setVariable("module_id", module.id) child:setVariable("device_id", module.device_id) child:setVariable("data_type", data_type) -- Add battery interface to dedicated device if self.NetatmoTypesToHC3[data_type].interface then self:addInterface(child, self.NetatmoTypesToHC3[data_type].interface) end -- Add battery interface to current device if module.battery_percent then self:addInterface(child, "battery") child:setValue("batteryLevel", module.battery_percent) end value = self:valueConversion(value, data_type) self:trace("HC3 child device for '"..data_type.."' module created. Name: '"..name.."', id: '"..child.id.."', type: '"..child.type.."'") child:setValue(self.NetatmoTypesToHC3[data_type].value, value) end --else --self:warning("<font color=silver>Unsupported Netatmo sensor type: "..data_type.."</font>") -- DEBUG end end end end function QuickApp:parseDashboardData(module, dashboard_data) --self:debug("<font color=fuchsia>QuickApp:parseDashboardData(...)</font>") -- DEBUG for data_type, value in pairs(dashboard_data) do --self:debug("data_type :", data_type, "- value :", value) -- DEBUG if (type(self.devicesMap[module.id]) == "table" and self.devicesMap[module.id].devices_map[data_type]) then local hcID = self.devicesMap[module.id].devices_map[data_type] if (self.childDevices[hcID]) then local child = self.childDevices[hcID] value = self:valueConversion(value, data_type) child:setValue("dead", not module.reachable) --self:debug("SetValue '"..data_type.."' from module '"..(module.station_name or "???").."'/'"..module.name.."' on hcID: "..hcID.."; "..self.NetatmoTypesToHC3[data_type].value..": "..value) child:setValue(self.NetatmoTypesToHC3[data_type].value, value) if module.battery_percent then child:setValue("batteryLevel", module.battery_percent) end else self:error("Child "..hcID.." not exists!") end --else --self:debug("<font color=silver>Nothing to do with '"..data_type.."' from module '"..(module.station_name or "???").."'/'"..module.name.."'</font>") -- DEBUG end end end function QuickApp:UpdateHCDevice(mode, device_info, dashboard_data) --self:debug('<font color=fuchsia>QuickApp:UpdateHCDevice("' .. tostring(mode) .. '", ...)</font>') -- DEBUG if (mode == "create") then if (device_info.reachable == true) then local ok,msg = pcall(function() self:CreateChilds(device_info, dashboard_data or {}) end) if not ok then self:error("CreateChilds() error: "..msg) end else self:warning("Module '" .. (device_info.name or "???") .. "' isn't connected! Status was last updated on: " .. device_info.last_status_store) end else if (device_info.reachable == true) then local ok,msg = pcall(function() self:parseDashboardData(device_info, dashboard_data or {}) end) if not ok then self:error("parseDashboardData() error: "..msg) end else self:warning("Module '" .. (device_info.name or "???") .. "' isn't connected! Status was last updated on: " .. device_info.last_status_store) local ok,msg = pcall(function () self:setDeadDevices(device_info) end) if not ok then self:error("setDeadDevices() error: "..msg) end end end end function QuickApp:setDeadDevices(module) --self:debug("<font color=fuchsia>QuickApp:setDeadDevices(...)</font>") -- DEBUG if type(self.devicesMap[module.id]) == "table" and self.devicesMap[module.id].devices_map then for _, hcID in pairs(self.devicesMap[module.id].devices_map) do if (self.childDevices[hcID]) then local child = self.childDevices[hcID] child:setValue("dead", not module.reachable) end end --else --self:debug("setDeadDevices(): devicesMap empty") end end function QuickApp:oAuthNetatmo(func) --self:debug("<font color=fuchsia>QuickApp:oAuthNetatmo(...)</font>") -- DEBUG if self.client_id == "" or self.client_secret == "" or self.refresh_token == "" or self.client_id == "-" or self.client_secret == "-" or self.refresh_token == "-" then self:error("Credentials data is empty!") self:updateView("status", "text", "Credentials data is empty!") return false end local request_body = "grant_type=refresh_token&client_id="..self.client_id.."&client_secret="..self.client_secret.."&refresh_token="..self.refresh_token.."&scope=read_station" self:getNetatmoResponseData("https://api.netatmo.net/oauth2/token", request_body, function(data) if (data.access_token ~= nil) then --self:debug("<font color=gray>netatmo-oAuth ok, token: "..data.access_token.."</font>") -- DEBUG self.refresh_token = data.refresh_token if self.expires_in ~= data.expires_in then self:trace("Token expires in", data.expires_in) end self.expires_in = data.expires_in func(data.access_token) else self:error("Can't get token") end end ) return true end function QuickApp:getNetatmoResponseData(url, body, func) --self:debug('<font color=fuchsia>QuickApp:getNetatmoResponseData("'..tostring(url)..'", "'..tostring(body)..'", ...)</font>') -- DEBUG local status, err = pcall(function() self.http:request(url, { options = { method = "POST", headers = { ['Content-Type'] = "application/x-www-form-urlencoded;charset=UTF-8" }, data = body }, success = function(response) if (self.api_response_debug) then self:debug("Response: "..json.encode(response)) end if (response.status == 200) then local status, data = pcall(function() return json.decode(response.data) end) if status then func(data) else self:error(url, "=>", data or "json.decode() failed") end else self:error("Wrong status '"..response.status.."' in response! Check credentials.") end end, error = function(message) self:error("Connection error: " .. message) end }) end) if not status then self:error("Can't perform request to", url, ":", err) end end -- Actions for buttons function QuickApp:GetDevices() --self:debug("<font color=fuchsia>QuickApp:GetDevices()</font>") -- DEBUG self.devicesMap = self:buildDevicesMap() self:oAuthNetatmo(function(token) self:getNetatmoDevicesData(token, "create") end) end function QuickApp:GetMeasurements() --self:debug("<font color=fuchsia>QuickApp:GetMeasurements()</font>") -- DEBUG self.devicesMap = self:buildDevicesMap() self:oAuthNetatmo(function(token) self:getNetatmoDevicesData(token) end) end -- Classes class 'MyNetatmoSensor' (QuickAppChild) function MyNetatmoSensor:__init(device) QuickAppChild.__init(self, device) end function MyNetatmoSensor:setValue(name, value) --self:debug("child "..self.id.." updated value: "..tostring(value)) -- DEBUG local oldValue = self.properties[name] if value ~= oldValue then self:trace("Update child #" .. self.id .. " '" .. self.name .. "' property '" .. name .. "' : old value = " .. tostring(oldValue) .. " => new value = " .. tostring(value)) self:updateProperty(name, value) self:updateProperty("log", "Transfer_was_OK") fibaro.setTimeout(2000, function() self:updateProperty("log", "") end) end end function MyNetatmoSensor:setIcon(icon) --self:debug("child "..self.id.." updated value: "..value) self:updateProperty("deviceIcon", icon) end function MyNetatmoSensor:getProperty(name) -- get value of property 'name' local value = fibaro.getValue(self.id, name) --self:debug("child "..self.id.." unit value: "..unit) return value end -- Tools function QuickApp:valueConversion(value, data_type) if (data_type and self.NetatmoTypesToHC3[data_type] and self.NetatmoTypesToHC3[data_type].conversion) then conv_func = self.NetatmoTypesToHC3[data_type].conversion value = conv_func(value) end return value end function QuickApp.getWindDirection(sValue) if ((sValue >= 0) and (sValue <= 11)) then return "N" elseif ((sValue > 11) and (sValue <= 34)) then return "NNE" elseif ((sValue > 34) and (sValue <= 56)) then return "NE" elseif ((sValue > 56) and (sValue <= 79)) then return "ENE" elseif ((sValue > 79) and (sValue <= 101)) then return "E" elseif ((sValue > 101) and (sValue <= 124)) then return "ESE" elseif ((sValue > 124) and (sValue <= 146)) then return "SE" elseif ((sValue > 146) and (sValue <= 169)) then return "SSE" elseif ((sValue > 169) and (sValue <= 191)) then return "S" elseif ((sValue > 191) and (sValue <= 214)) then return "SSW" elseif ((sValue > 214) and (sValue <= 236)) then return "SW" elseif ((sValue > 236) and (sValue <= 259)) then return "WSW" elseif ((sValue > 259) and (sValue <= 281)) then return "W" elseif ((sValue > 281) and (sValue <= 304)) then return "WNW" elseif ((sValue > 304) and (sValue <= 326)) then return "NW" elseif ((sValue > 326) and (sValue <= 349)) then return "NNW" elseif ((sValue > 349) and (sValue <= 360)) then return "N" else return "-" end end
  4. flacon030

    Plugin Netatmo

    Je pense que oui J'ai cette version -- Netatmo Weather Station QuickApp -- (c) 2020,2021 GSmart Grzegorz Barcicki -- For questions and debug: grzegorz@gsmart.pl -- https://dev.netatmo.com/apidocumentation/weather -- -- Changelog : -- v2.7 - 07/2023 (Kana-chan + Lazer) -- - Fix new Netatmo authentication using token -- v2.6 - 03/2021 (Lazer) -- - Fix QuickApp hang since HC3 Firmware 5.063.30 Beta
  5. flacon030

    Plugin Netatmo

    je suis dans la même situation avec le QA de lazer en 2.7 J'ai du générer les token pour que cela puisse fonctionner a nouveau [09.12.2023] [19:12:40] [TRACE] [ZWAVE]: ID 202: Received parameter 6 report, value = 0 [09.12.2023] [19:12:49] [DEBUG] [QA_NETATMO_779]: Current time : 19:12:49 - Last updated values : 01:00:00 - Next loop in 30 seconds at 19:13:19 ... [09.12.2023] [19:12:49] [ERROR] [QA_NETATMO_779]: Wrong status '1' in response! Check credentials. [09.12.2023] [19:13:19] [DEBUG] [QA_NETATMO_779]: Current time : 19:13:19 - Last updated values : 01:00:00 - Next loop in 30 seconds at 19:13:49 ... [09.12.2023] [19:13:19] [ERROR] [QA_NETATMO_779]: Wrong status '1' in response! Check credentials. [09.12.2023] [19:13:49] [DEBUG] [QA_NETATMO_779]: Current time : 19:13:49 - Last updated values : 01:00:00 - Next loop in 30 seconds at 19:14:19 ... [09.12.2023] [19:13:49] [ERROR] [QA_NETATMO_779]: Wrong status '1' in response! Check credentials.
  6. Je viens de le remplacer On verra se que cela donne Merci Cela fait 24 h que cela fonctionne a nouveau il semble effectivement que cela venait bien du câble (neuf pour temps...) Merci
  7. Bonjour a tous Depuis le 28 novembre mon ecodevice RT2 se déconnecte du réseau Plus moyen d'y acceder Je suis obligé de couper l'alimentation pour pouvoir y accéder a nouveau Il fonctionne durant quelques heures et cela recommence a nouveau au bout de quelques heures cela vous ai déjà arrivé?
  8. Oui c'est ce que j'ai fait avec photoshop Merci
  9. flacon030

    Volets bubendorff et Velux

    Perso je suis carrément intéressè par ta solution sans cloud pour les mitsubishi Si tu peut faire un tuto je suis preneur Merci
  10. C'est bon je pense Je viens de refaire une sauvegarde de mes user password pour mes 4 splits (ils avait disparues?) , et un redémarrage de la box et tous semble a nouveau fonctionner
  11. j'ai cela Tous semble OK mais rien ne se passe sur la clim cela fonctionne si je supprime la variable Melcloud_key et que je relance la box, mais que sur le split que je lance en premier et pas sur les 3 autres [24.11.2023] [23:23:28] [TRACE] [ZWAVE]: Z-wave start [24.11.2023] [23:23:38] [TRACE] [ZWAVE]: ID 184: Set parameter 6, value = 0 [24.11.2023] [23:23:38] [TRACE] [ZWAVE]: ID 184: Set parameter 14, value = 4369 [24.11.2023] [23:23:39] [TRACE] [ZWAVE]: ID 184: Set parameter 42, value = 2 [24.11.2023] [23:23:39] [TRACE] [ZWAVE]: ID 202: Set parameter 42, value = 2 [24.11.2023] [23:23:39] [TRACE] [ZWAVE]: ID 202: Set parameter 14, value = 4369 [24.11.2023] [23:23:39] [TRACE] [ZWAVE]: ID 202: Set parameter 6, value = 0 [24.11.2023] [23:23:39] [TRACE] [ZWAVE]: ID 184: Received parameter 6 report, value = 0 [24.11.2023] [23:23:39] [TRACE] [ZWAVE]: ID 184: Received parameter 14 report, value = 4369 [24.11.2023] [23:23:39] [TRACE] [ZWAVE]: ID 184: Received parameter 42 report, value = 2 [24.11.2023] [23:23:39] [TRACE] [ZWAVE]: ID 202: Received parameter 42 report, value = 2 [24.11.2023] [23:23:39] [TRACE] [ZWAVE]: ID 202: Received parameter 14 report, value = 4369 [24.11.2023] [23:23:39] [TRACE] [ZWAVE]: ID 202: Received parameter 6 report, value = 0 [24.11.2023] [23:44:54] [DEBUG] [QA_MELCLOUD_553]: Envoi de la requête pour mise à jour du split Chambre JCB... [24.11.2023] [23:44:54] [DEBUG] [QA_MELCLOUD_553]: Envoi de la requête pour mise à jour du split Chambre JCB... [24.11.2023] [23:44:54] [TRACE] [QA_MELCLOUD_553]: Connection au MelCloud réussie [24.11.2023] [23:44:54] [TRACE] [QA_MELCLOUD_553]: Connection au MelCloud réussie [24.11.2023] [23:45:28] [DEBUG] [QA_MELCLOUD_553]: Envoi de la requête pour mise à jour du split Chambre JCB... [24.11.2023] [23:45:28] [TRACE] [QA_MELCLOUD_553]: Connection au MelCloud réussie [24.11.2023] [23:46:00] [DEBUG] [QA_MELCLOUD_553]: Envoi de la requête pour mise à jour du split Chambre JCB... [24.11.2023] [23:46:00] [DEBUG] [QA_MELCLOUD_553]: Envoi de la requête pour mise à jour du split Chambre JCB... [24.11.2023] [23:46:00] [TRACE] [QA_MELCLOUD_553]: Connection au MelCloud réussie [24.11.2023] [23:46:00] [TRACE] [QA_MELCLOUD_553]: Connection au MelCloud réussie
  12. cela semble a nouveau ne plus fonctionner
  13. flacon030

    grafana

    Bien vu, oui il faut que je corrige ce sont des litres
  14. `merci pour le liens
  15. Je viens de commencé mon floorplan Cela commence a ressembler a quelques chose. A présent j'aimerais avoir sur le plan une icône de status volets ouvert/fermé, idem pour le store mais je ne sais pas comment
  16. flacon030

    grafana

    Je suis presque arrivé au résultat escompté avec grafana
  17. Je comprend mieux pourquoi cela ne fonctionnait plus J’espère juste qu'il ne vont pas changer de clefs régulièrement
  18. Je vais craquer avec Ces VPN Plus rien ne fonctionne... l'UDM refuse mon adresse public, il n'accepte que l'adresse WAN qui elle n'est pas l'adresse public vu que je suis en DMZ sur la live box 6 Quel merde de ne pas pouvoir être en mode bridge....
  19. Je viens de l'installer Il ne semble pas que cela soit une beta
  20. Merci Oui j'ai trouvé ce document, se qui m'a permis de faire mes modifications Merci a toi pour ce QA En plus il est toujours fonctionnel sur les dernière génération d’amplis denon
  21. Bon j'ai aussi a faire fonctionner wireguard su mon UDM pro et mon macbookpro Cela avance...
  22. Bonjour Avec cette version j'ai toujours le même probleme de remonté de consommation des Wallplug les plus anciens et des aeotec 40A les plus anciens Cela depuis les deux dernières bêta Je suis le seul?
  23. flacon030

    exportation QA

    Merci
  24. Bonjour Le liens pour les commandes ne semble plus valide aurait tu un autre liens Merci Je viens de trouver ce liens https://assets.denon.com/DocumentMaster/UK/AVR1713_AVR1613_PROTOCOL_V860.pdf
  25. Bonjour Pour ceux qui comme moi voudrait un peut plus de fonction pour ce QA Pour info il fonction aussi pour un AVC-X8500HA J'ai ajouter des sources (Tuner, DVD, TV, ect) Le contrôle (haut, bas, gauche, droite, back, info,ect) quelques formats sonors supplémentaire J'ai récupérer ces infos et les ai adapter a ce QA Ou trouver la liste complète des commandes? Merci -------------------------------------------------------------------------------------------------------------------------------------- -- Sources -------------------------------------------------------------------------------------------------------------------------------------- function QuickApp:iTuner(event) self:debug("Input: Tuner") self:sendCommand("SITUNER") self:getinfo() end function QuickApp:iDvd(event) self:debug("Input: DVD") self:sendCommand("SIDVD") self:getinfo() end function QuickApp:iBluray(event) self:debug("Input: Blu-ray") self:sendCommand("SIBD") self:getinfo() end function QuickApp:iTv(event) self:debug("Input: TV") self:sendCommand("SITV") self:getinfo() end function QuickApp:iSatcbl(event) self:debug("Input: SAT/CBL") self:sendCommand("SISAT/CBL") self:getinfo() end function QuickApp:iGame(event) self:debug("Input: Game") self:sendCommand("SIGAME") self:getinfo() end function QuickApp:iAux1(event) self:debug("Input: Aux1") self:sendCommand("SIAUX1") self:getinfo() end function QuickApp:iNet(event) self:debug("Input: Net") self:sendCommand("SINET") self:getinfo() end function QuickApp:iIradio(event) self:debug("Input: iRadio") self:sendCommand("SIIRADIO") self:getinfo() end -------------------------------------------------------------------------------------------------------------------------------------- -- Control -------------------------------------------------------------------------------------------------------------------------------------- function QuickApp:info(event) self:debug("Info") self:sendCommand("MNINF") self:getinfo() end function QuickApp:options(event) self:debug("Options") self:sendCommand("MNOPT") self:getinfo() end function QuickApp:back(event) self:debug("Back") self:sendCommand("MNRTN") self:getinfo() end function QuickApp:setup(event) self:debug("Setup") self:sendCommand("MNMEN ON") self:getinfo() end function QuickApp:up(event) self:debug("Up") self:sendCommand("MNCUP") self:getinfo() end function QuickApp:down(event) self:debug("Down") self:sendCommand("MNCDN") self:getinfo() end function QuickApp:left(event) self:debug("Left") self:sendCommand("MNCLT") self:getinfo() end function QuickApp:right(event) self:debug("Right") self:sendCommand("MNCRT") self:getinfo() end function QuickApp:enter(event) self:debug("Enter") self:sendCommand("MNENT") self:getinfo() end -------------------------------------------------------------------------------------------------------------------------------------- -- FORMATS SONORS -------------------------------------------------------------------------------------------------------------------------------------- function QuickApp:DolbyD(event) self:debug("Dolby Digital") self:sendCommand("MSDOLBY DIGITAL") self:getinfo() end function QuickApp:DTS(event) self:debug("DTS") self:sendCommand("MSDTS SURROUND") self:getinfo() end function QuickApp:Multicanal(event) self:debug("7 Canaux Stereo") self:sendCommand("MSMCH STEREO") self:getinfo() end function QuickApp:Stereo(event) self:debug("Surround: Stereo") self:sendCommand("MSSTEREO") self:getinfo() end function QuickApp:rockArena(event) self:debug("Surround: Rock Arena") self:sendCommand("MSROCK ARENA") self:getinfo() end function QuickApp:jazzClub(event) self:debug("Surround: Jazz Club") self:sendCommand("MSJAZZ CLUB") self:getinfo() end function QuickApp:Movie(event) self:debug("Surround: mode Movie") self:sendCommand("MSMOVIE") self:getinfo() end function QuickApp:Music(event) self:debug("Surround: mode Music") self:sendCommand("MSMUSIC") self:getinfo() end function QuickApp:Game(event) self:debug("Surround: mode Game") self:sendCommand("MSGAME") self:getinfo() end ce qui donne cela
×
×
  • Créer...