Aller au contenu

Rechercher dans la communauté

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



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

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

1 résultat trouvé

  1. Bonjour à tous, Une mauvaise toux m'a cloué à la maison toute la journée. Je me suis dès lors occupé en me lançant dans la création d'un "virtual device" réalisant une liaison entre : mon radio-réveil,un bon vieux MusiPal et ma toute nouvelle HC2. L’objectif était : De récupérer les alarmes du réveil pour en extraire le nombre de minutes avant la prochaine sonnerie et de le stocker dans une variable locale. Ce qui permettrait de lancer ensuite des scènes (ex:10min avant le chauffage électrique, 15min le café ...). D'écrire sur l'écran du radio/réveil un texte avec les raisons d'une alarme détectée sur l'HC2. De jouer un MP3 à distance (je n'y suis pour l'instant pas arrivé, si quelq'un à un episte à suivre !) C'est là mon tout premier programme en LUA et il faut dire que la bête n'est pas facile à dompter (surtout avec le cerveau embrumé ;-)). Mais pourquoi donc n'ont-ils pas choisi chez Fibaro le Python, Java, ...??? Enfin tout retour de correction et/ou amélioration serait vraiment le bienvenu (et apprécié!) local selfId = fibaro:getSelfId(); local Myip = fibaro:get(selfId, "IPAddress"); local Myport = fibaro:get(selfId, "TCPPort"); local urlGetState = "/admin/cgi-bin/state.cgi?fav=0"; local urlSentMsg = "/admin/cgi-bin/ipc_send?show_list%20"; local urlConfirmMsg = "/admin/cgi-bin/ipc_send?menu_collapse"; local urlPowerUp = "/admin/cgi-bin/ipc_send?power_up"; local urlPowerDown = "/admin/cgi-bin/ipc_send?power_down"; local urlChangeVolume = "/admin/cgi-bin/admin.cgi?f=volume_set&v="; local urlPlayPause = "/admin/cgi-bin/admin.cgi?f=play_pause"; local urlSetFavorite = "/admin/cgi-bin/admin.cgi?f=favorites&n=../favorites.html&a=p&i="; local urlSetAlarm = "/admin/cgi-bin/admin.cgi?f=wakeup_timer&type_4=1&hour_4=12&minute_4=12&apply=Apply" HC2 = Net.FHttp(Myip); HC2:setBasicAuthentication("admin", "xxxx"); response, status, errorCode = HC2:GET("/admin/cgi-bin/state.cgi?fav=0") ----------------------------------------------------------------------------------------- -- LUA only XmlParser from Alexander Makeev / modifié ----------------------------------------------------------------------------------------- XmlParser = {}; function XmlParser:FromXmlString(value) value = string.gsub(value, "([%x]+)%;", function(h) return string.char(tonumber(h, 16)) end); value = string.gsub(value, "([0-9]+)%;", function(h) return string.char(tonumber(h, 10)) end); value = string.gsub(value, "&", "&"); value = string.gsub(value, "'", "'"); value = string.gsub(value, ">", ">"); value = string.gsub(value, "<", "<"); return value; end function XmlParser:ParseArgs(s) local arg = {} string.gsub(s, "(%w+)=([\"'])(.-)%2", function (w, _, a) arg[w] = self:FromXmlString(a); end) return arg end function XmlParser:ParseXmlText(xmlText) local stack = {} local top = {Name=nil,Value=nil,Attributes={},ChildNodes={}} table.insert(stack, top) local ni,c,label,xarg, empty local i, j = 1, 1 while true do ni,j,c,label,xarg, empty = string.find(xmlText, "<(%/?)([%w:]+)(.-)(%/?)>", i) if not ni then break end local text = string.sub(xmlText, i, ni-1); if not string.find(text, "^%s*$") then top.Value=(top.Value or "")..self:FromXmlString(text); end if empty == "/" then -- empty element tag table.insert(top.ChildNodes, {Name=label,Value=nil,Attributes=self:ParseArgs(xarg),ChildNodes={}}) elseif c == "" then -- start tag top = {Name=label, Value=nil, Attributes=self:ParseArgs(xarg), ChildNodes={}} table.insert(stack, top) -- new level --log("openTag ="..top.Name); else -- end tag local toclose = table.remove(stack) -- remove top --log("closeTag="..toclose.Name); top = stack[#stack] if #stack < 1 then error("XmlParser: nothing to close with "..label) end if toclose.Name ~= label then error("XmlParser: trying to close "..toclose.Name.." with "..label) end table.insert(top.ChildNodes, toclose) end i = j+1 end local text = string.sub(xmlText, i); if not string.find(text, "^%s*$") then stack[#stack].Value=(stack[#stack].Value or "")..self:FromXmlString(text); end if #stack > 1 then error("XmlParser: unclosed "..stack[stack.n].Name) end return stack[1].ChildNodes[1]; end -- main loop if answer is ok fibaro:log(status) if tonumber(status) == 200 and tonumber(errorCode) == 0 then if (response ~= nil) then local xmlTree=XmlParser:ParseXmlText(response) for i,xmlNode in pairs(xmlTree.ChildNodes) do if(xmlNode.Name=="alarms") then AlarmNextF=os.time{year=2030, month=01, day=01, hour=00, min=00, sec=00} for i,subXmlNode in pairs(xmlNode.ChildNodes) do if(subXmlNode.Name=="alarm") then for i,subsubXmlNode in pairs(subXmlNode.ChildNodes) do if (subsubXmlNode.Name=="time") then Alarmtime=subsubXmlNode.Value elseif (subsubXmlNode.Name=="type") then Alarmtype=subsubXmlNode.Value end end pos=string.find(Alarmtime, ":") AlarmTimeH=string.sub(Alarmtime,1,pos-1) AlarmTimeM=string.sub(Alarmtime,pos+1) if(Alarmtype=="0") then -- --Alarmtype==0 disable elseif (Alarmtype=="1") or (Alarmtype=="3") or (Alarmtype=="2") then --une fois,All day or workday AlarmNext = os.date("*t") AlarmNext.hour=AlarmTimeH AlarmNext.min=AlarmTimeM AlarmNext.sec=AlarmTimeM if (os.difftime(os.time(),os.time(AlarmNext)) ) > 0 then --alarme déjà passée AlarmNext.day = AlarmNext.day + 1 end if (Alarmtype=="2") then --workday if (AlarmNext.wday ==1 ) then AlarmNext.day = AlarmNext.day + 1 ; elseif (AlarmNext.wday ==7 ) then AlarmNext.day = AlarmNext.day + 2 ; end end if (os.time(AlarmNext) < AlarmNextF) then AlarmNextF = os.time(AlarmNext) end --print(os.date("%c", os.time(AlarmNext))) else --dimanche(4) to samedi10) AlarmWeekDay=Alarmtype-3 AlarmNext = os.date("*t") AlarmNext.hour=AlarmTimeH AlarmNext.min=AlarmTimeM AlarmNext.sec=AlarmTimeM if (AlarmNext.wday==AlarmWeekDay) then if (os.difftime(os.time(),os.time(AlarmNext)) ) > 0 then --alarme déjà passée AlarmNext.day = AlarmNext.day + 7 end else if (AlarmNext.wday>AlarmWeekDay) then AlarmNext.day = AlarmNext.day + (7-(AlarmNext.wday-AlarmWeekDay)) else AlarmNext.day = AlarmNext.day + (AlarmWeekDay-AlarmNext.wday) end end if (os.time(AlarmNext) < AlarmNextF) then AlarmNextF=os.time(AlarmNext) end -- print(os.date("%c", os.time(AlarmNext))) end end end -- end Alarmes if (os.date("%Y",AlarmNextF)==2030) then -- pas de réveil else a=os.date("%M") b=4 MyPie=( a - math.floor(a/b)* if (MyPie == 0) then MyPieTxT= ">" elseif (MyPie == 1) then MyPieTxT= "V" elseif (MyPie == 2) then MyPieTxT= "<" elseif (MyPie == 3) then MyPieTxT= "A" end fibaro:call(selfId,"setProperty","ui.Label1.value",MyPieTxT .. " " .. os.date("%H", AlarmNextF) .. ":" .. os.date("%M", AlarmNextF) .. " " .. os.date("%a", AlarmNextF) .. " " .. os.date("%d", AlarmNextF) .. "-" .. os.date("%m", AlarmNextF) ) fibaro:debug("Alarme:" .. MyPieTxT .. " " .. os.date("%H", AlarmNextF) .. ":" .. os.date("%M", AlarmNextF) .. " " .. os.date("%a", AlarmNextF) .. " " .. os.date("%d", AlarmNextF) .. "-" .. os.date("%m", AlarmNextF) ) local MusicPalTimeRest=math.floor(os.difftime(AlarmNextF, os.time())/60) --if fibaro:existsGlobalValue("MusicPalTimeRest")==false then --fibaro:createGlobalValue("MusicPalTimeRest","MusicPalTimeRest"); --else fibaro:setGlobal("MusicPalTimeRest",MusicPalTimeRest ) --end end end --for end else fibaro:debug('Error : Can not connect to Web server, empty response') end else fibaro:debug('Error : Can not connect to Web server, status='..status..', errorCode='..errorCode) end -- Wait 60s fibaro:sleep(60*1000) NB: ne pas oublier de créer la variable "MusicPalTimeRest", je ne suis pas parvenu à le faire via code ??? Si qlq'un sait comment faire ? et voici une exemple de bouton play/pause local selfId = fibaro:getSelfId(); local Myip = fibaro:get(selfId, "IPAddress"); local urlPowerUp = "/admin/cgi-bin/ipc_send?power_up"; local urlPlayPause = "/admin/cgi-bin/admin.cgi?f=play_pause"; HC2 = Net.FHttp(Myip) HC2:setBasicAuthentication("admin", "xxxx"); local response = HC2:GET(urlPowerUp) local response = HC2:GET(urlPlayPause) Et voici un exemple de réalisation. J'espère que ce partage pourra être utile à d'autres. Bà v Jacky
×