Aller au contenu

jojo

Membres confirmés
  • Compteur de contenus

    14 561
  • Inscription

  • Dernière visite

  • Jours gagnés

    186

Tout ce qui a été posté par jojo

  1. ;-) j'ai trouvé. Il faut être root pour que le ping fonctionne, admin ne suffit pas (bien que suffisant pour les notifications et mails)
  2. dès que tout sera prêt, je fais un super auto au nom de Lazer. Maintenant j'essaye de comprendre pourquoi il me dit qu'il ne sait pas pinger, alors que ma HC2 est uo ???
  3. non, le mieux serait de créer un bouton pas Sonos, puis un autre qui appelle tous les boutons. Pour modifier le code de Krikroff, pas d'apéro pendant 3 ans ...
  4. oh la honte ! merci Lazer, et sorry de t'avoir dérangé pour des bêtises comme ça
  5. J'ai un comportement TRES TRES TRES bizarre sur mes 2 NAS : Hier tout fonctionnait IMPPECABLE. Aujourd'hui, le script ne s'exécute qu'une seule fois. Et puis il faut faire un reboot du synology pour qu'il se relance. De plus, même quand (via l'interface Synology) on veut l'exécuter, il n'y a rien qui se passe. Voici le script : /usr/syno/bin/synodsmnotify "@administrators" "System Event" "Démarrage script Ping HC2" IP=192.168.2.xxx /bin/ping -c 1 -w 1 ${IP} if [ $? -ne 0 ] then TO="xxx@gmail.com" SUBJECT="HC2 Ping error" BODY="La box HC2 (${IP}) ne ping plus (test toutes les minutes)" OUTCOME=${BODY} HEADERS="From: ${TO}" /usr/bin/php -r "mail(\"${TO}\", \"${SUBJECT}\", \"${BODY}\", \"${HEADERS}\");" /usr/syno/bin/synodsmnotify "@administrators" "System Event" "${OUTCOME}" else TO="xxx@gmail.com" SUBJECT="HC2 Ping ok" BODY="La box HC2 ${IP} ping ok" OUTCOME=${BODY} HEADERS="From: ${TO}" /usr/bin/php -r "mail('${TO}', '${SUBJECT}', '${BODY}', '${HEADERS}');" /usr/syno/bin/synodsmnotify "@administrators" "System Event" "${OUTCOME}" fi une idée ?
  6. en fait je crois que je n'ai pas reçu le bon son. Celui qu'il me faudrait est celui du device "WXT Clim Panel", le dernier de ta capture d'écran.
  7. j'avais àl'époque fait une petite modif du code de Krikroff pour corriger ce problème de coupure après +/- 30s. Voici le code modifié (étant donné que je n'ai pas eu de réponse de Krikroff a ma demande d'autorisation de partage) ------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------- -- SONOS Play stream... -- Copyright © 2014 Jean-Christophe Vermandé ------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------- ---------------------------------- -- User Settings ---------------------------------- ip = "192.168.xxx.xxx" port = 1400 FilePath = "//<hostname NAS>/music/iTunes/Sons/PoliceInformee.mp3" FileVol = 100 -- le fichier mp3 doit être dans la bibliothèque Sonos -- pour générer des MP3 : http://text2speech.us/# PlayUnlimited = "Yes" -- si <> Yes, arrêt après 30s environ ---------------------------------- -- DO not change bellow this line ---------------------------------- 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 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 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(FilePath, FileVol);
  8. jojo

    Support Gea

    pour rebondir sur l'idée de mprinfo, n'as-tu pas des espaces et lignes inutiles dans ton entête trigger ?
  9. du coup je proposerais /bin/ping -c 1 ${IP} ou (c'est le même ?) /bin/ping ${IP} et avec une fréquence toutes les minutes du script, comme ça ce serait cohérent avec le ping que la HC2 fait. Donc je reçois une alerte si le ping n'a pas fonctionné. Si j'ai juste un mail, soit, mais s'il se reproduit toutes les minutes, alors action ...
  10. la seule chose que je peux te dire, c'est que ce n'est PAS normal. Présente le problème (avec plus de détails) àfibaro : support@fibaro.com
  11. jojo

    Banque Icones Hcl, HC2 et HC3

    et si je t'envoie la photo de ma femme, tu pourras la mettre dans différentes positions sur le radiateur ?
  12. en effet, ma première solution est beaucoup plus basique. La seconde est celle d'un pro. Apprend avec la première et perfectionne-toi avec la seconde
  13. avec plaisir que je ferai un tutorial complet Dieu. Ceci dit pour le ping peux-tu m'expliquer la signification des paramètres, histoire que je teste. /bin/ping -c 60 -w 60 ${IP} Car dans l'interface Syno, c'est HYPER simple de mettre ce script. Il propose même la fréquence d'exécution du script (toutes les 1, 5 min ou 1,2, ... heures)
  14. Merci Lazer, Tout fonctionne nickel, sauf l'envoi de mail. Je continue de chercher (car cela fonctionnait avec le script (qui était incomplet) que j'avais posté)
  15. @Lazer, Un tout grand merci. J'ai trouvé sur le net comment envoyer le mail. Je posterai ici même la solution finale. Dernier petit détail pour faire joli, je voudrais mettre l'ip à pinguer dans une variable (histoire qu'elle se trouvent dans le mail), mais je n'arrive pas à faire le test du ping. J'ai essayé ceci : ip=192.168.2.96; ping -c 6 -i 10 $ip if [ $? -ne 0 ] then /usr/bin/php -r "mail('$to', '$subject', '$body', '');"; /usr/syno/bin/synodsmnotify "@administrators" "System Event" "${outcome}"; fi mais ça ne fonctionne pas. Où est l'erreur ?
  16. ça devrait être possible de fixer le support mural de ta barre au support mural pivotant de la TV. Juste un peu de bricolage
  17. il y a toujours moyen de d'abord exclure le device avant de le réinclure (par exple, si tu achète un module d'occasion qui n'a pas préalablement été exclu)
  18. @Lazer, Merci beaucoup, je testerai cela demain. Maintenant j'ai les neurones qui s'entre-choquent. Je me disais bien qu'en disant que j'appellerais la personne Dieu, je ne prenais pas beaucoup de risque, étant donné que tu es déjà le Dieu du forum ... @nico, j'ai chipoté la derrière. La probabilité que cette erreur se reproduise est minime. Mais pourquoi pas faire du monitoring de mon outil de monitoring et contrôle.
  19. jojo

    My Batteries

    oui, biensûr, mais est-ce vraiment nécessaire, étant donné qu'elles sont triées d'abord par la moins changée, sauf si tu as plus de 19 devices àmoins de 40%. Sinonun device > 60% ce n'est pas intéressant" de le surveiller. Il faut que le VD reste lisible. Maintenant si tu veux, dis moi et je t'explique comment
  20. en effet, je la laisse un soir, et elle se venge immédiatement. Pas gentile
  21. en effet, je les contacterais via le support à support@fibaro.com en leur expliquant que tu dois refarire toute ton installation, et qu'on t'a dis que la v4 apportait beaucoup de fonctionnalités et de possibilités d'évolutions futures (ils seront flattés)
  22. en fait Fibaro rencontre des difficulté avec la MIGRATION de v3 àV4. En effet, il y a énormément de choses qui ont changé entre la v3 et la v4. Sur la HC2, nous avons eu des tonnes de problèmes avec la migration. Mais la v4 en elle-même est stable. ils devraient peut-être proposer de pouvoir mettre àjour la HCL en V4, mais alors SANS migration de l'existant, et donc avec comme conséquence qu'il faille tout réinclure/refaire. Si tu es prêt àcela, tu peux leur proposer ?
×
×
  • Créer...