Aller au contenu

jojo

Membres confirmés
  • Compteur de contenus

    14 650
  • Inscription

  • Dernière visite

  • Jours gagnés

    190

Tout ce qui a été posté par jojo

  1. content pour toi que cela t'es utile. Mais il faut surtout remercier sebcbien, c'est lui qui est àla base du script, je n'ai fait que de lui rajouter de fonctionnalités supplémentaires
  2. Je vous ai proposé il y a peu un monitoring de votre Synology depuis la HC2 (http://www.domotique-fibaro.fr/index.php/topic/5682-synology-monitoring/) Je vous propose maintenant le contraire : monitorer votre HC2 depuis votre Synology. L'idée vient du fait que mon HC2 fonctionnait très bien, mais qu'il y avait un problème au câble réseau ... Pour le ping, un tout grand merci à Lazer, sans qui je n'y serais jamais arrivé. Pour la notification si la box est en erreur 503, merci à CaptainIgloo et samhuin pour cette partie de script. Pour la notification par mail depuis le synology, voici où je me suis inspiré : http://forum.synology.com/enu/viewtopic.php?f=32&t=79334 Fonctionnalités Ping de la box HC2/L depuis le Synology Vérification si pas de code erreur 503 Si erreur notification dans le Syno et envoie d'un mail Le script : IP=192.168.xxx.xxx TO="adresse.mail@a.notifier" HOST=$(/bin/hostname) /bin/ping -c 1 -w 10 ${IP} if [ $? -ne 0 ] then SUBJECT="HC2/L Ping error" BODY="La box HC2/L (${IP}) ne ping plus (test toutes les minutes).\n\nSynology DiskStation\n\nFrom ${HOST}" HEADERS="From: ${TO}" NOTIF="${SUBJECT} - ${IP}" /usr/bin/php -r "mail(\"${TO}\", \"${SUBJECT}\", \"${BODY}\", \"${HEADERS}\");" /usr/syno/bin/synodsmnotify "@administrators" "System Event" "${NOTIF}" fi URL="http://$IP/api/loginStatus" coderetour=`curl -I $URL 2>/dev/null | head -n 1 | cut -d' ' -f2` if [ "$coderetour" == "503" ] then echo "Code retour 503" SUBJECT="HC2/L 503 error" BODY="La box HC2/L (${IP}) retourne un code erreur 503. Evaluer si un redémarrage de la box est nécessaire.\n\nSynology DiskStation\n\nFrom ${HOST}" HEADERS="From: ${TO}" NOTIF="${SUBJECT} - ${IP}" /usr/bin/php -r "mail(\"${TO}\", \"${SUBJECT}\", \"${BODY}\", \"${HEADERS}\");" /usr/syno/bin/synodsmnotify "@administrators" "System Event" "${NOTIF}" # curl http://$IPHC/services/finishUpgradeAfterError.php else echo "Le code retour est " $coderetour fi Configuration du Synology : Si ce n'est pas fait, il faut configurer le Syno pour qu'il puisse envoyer des mails : Panneau de configuration -> Notifications Panneau de configuration -> Planificateur de tâches Créer -> Script défini par l'utilisateur Dans le champ "Script défini par l'utilisateur", coller le script ci-dessus (en mettant l'IP de la box et votre adresse mail dans les champ IP et TO Le champ "Utilisateur" doit être root (sinon le ping retourne une erreur, même si ping ok) Dans l'onglet" Programmer", planifier la fréquence d'exécution du script Préciser l'heure de dernière exécution à 23:59, car par défaut c'est 00:59. Pour vérifier que tout fonctionne bien, mettez une adresse IP non existante. Bonus : Dans le même ordre d'idée, j'ai fait un petit scrip "Keep Alive", pour vérifier une fois par jour que les mails, etc s'envoient correctement depuis mon Syno. Comme l'IP que je renseigne est celle du Syno, s'il m'envoie un mail comme quoi le Syno ne ping plus, c'est qui il a un autre problème. IP=192.168.xxx.xxx TO="adresse.mail@a.notifier" HOST=$(/bin/hostname) /bin/ping -c 1 -w 1 ${IP} if [ $? -ne 0 ] then SUBJECT="Keep alive error from ${HOST}" BODY="${IP} ne ping plus" HEADERS="From: ${TO}" /usr/bin/php -r "mail(\"${TO}\", \"${SUBJECT}\", \"${BODY}\", \"${HEADERS}\");" /usr/syno/bin/synodsmnotify "@administrators" "System Event" "${BODY}" else SUBJECT="Keep alive from ${HOST} ok" BODY="${IP} ping ok" HEADERS="From: ${TO}" /usr/bin/php -r "mail(\"${TO}\", \"${SUBJECT}\", \"${BODY}\", \"${HEADERS}\");" /usr/syno/bin/synodsmnotify "@administrators" "System Event" "${BODY}" fi
  3. jojo

    Domotique Store

    donc, ce n'était pas un spam ...
  4. jojo

    Domotique Store

    oui, j'en ai même reçu 2
  5. jojo

    Pertes De Paquets Hcl

    ou essaye une connection directe àun PC, pour être sûr à100% que cela vient de la HCL, et pas d'un autre équipement de ton réseau
  6. os.date("%a %d/%m/%Y", unixtime) http://www.lua.org/pil/22.1.html
  7. jojo

    Synology Monitoring

    oui, c'est une bonne idée à première vue, mais si tu as le même nom pour 2 devices (erreur ou test), cela risque de faire des erreurs. Ceci-dit, ça à l'avantage de ne pas devoir entrer le nom de la variable à la main dans chaque bouton du device. Au plus j'écris, au plus je trouve l'idée sympa. Qu'en pensez-vous ? Oui ? Non ?
  8. c'est bien le port 5000 que tu as renseigné ?il n'y a pas d'espaces ?
  9. @Moicphil, tu peux mettre un tuyau d'arrosage au dessus de ton pluviomètre pour simuler
  10. jojo

    Synology Monitoring

    en effet, j'avais identifié le "problème". Je devrais créer une variable dans le code qui donne le nom de la variable globale àutiliser (et créer). Ainsi on pourrait avoir plusieurs instances du VD. Je note cela dans ma to do liste
  11. avant de te chopper une remarque des admin, ne cite pas le message juste au dessus. pour appeler un device en lua : fibaro:call(<ID Device>, "pressButton", "<# bouton>") tu retrouves l'ID du device dans l'url lorque tu es en mode edit du device. Pour retrouver le n° du bouton, suis l'explication de Did dans la section "HC pour les nuls"
  12. tu as bien mis ce code dans un bouton d'un VD ?
  13. jojo

    Disparition Des Modules

    regarde dans ma signature
  14. "(cet automne pas avant)" Tu ne veux pas mettre la pression, mais l'automne c'est dans 5 jours ...
  15. Lazer, si j'ai bien lu, le net.HTTPClient() et le pendant du net.HTTP pour les VD mais pour les Scènes. Il ne permet pas de faire du https
  16. jojo

    Disparition Des Modules

    cherche sur le forum, il y a des solutions proposées qui se basent sur une connexion Wifi pour savoir si tu es chez toi ou pas
  17. Voici une petite modif du player (je j'ai déjà partagée, je ne sais plus où) et qui joue donc un MP3. La modif permet de ne pas interrompre après environ 30s. tu verras la variable locale (FilePath) avec le chemin d'accès vers le fichier mp3 à jouer en début de script. rien ne t’empêche de mettre cette info dans une variable globale, et de la rappeler. ------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------- -- SONOS Play stream... -- Copyright © 2014 Jean-Christophe Vermandé ------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------- ---------------------------------- -- User Settings ---------------------------------- ip = "192.168.xxx.xxx" port = 1400 FilePath = "//HPDS3615xs/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);
  18. jojo

    Je Vais Pas Tarder A Tout Jeter

    Dans ma signature, tu verras 2 outils de backup (et restore) des variables et panneaux de chauffage
  19. jojo

    Connexion De Mon Hc2 À Distance

    sebcbien, m'a expliqué qu'il y avait des gens qui s'amusaient àscanner les caméras accessibles depuis l'extérieur, et profitaient des failles des constructeurs pour regarder. Ils analysent tes habitudes, et il est facile alors de savoir quand tu es absent pour t'offrir un déménagement gratuit ...
  20. jojo

    Connexion De Mon Hc2 À Distance

    oui, la solution de mettre une adresse extérieur pour les cam fonctionne, MAIS sebcbien, m'a fait peur en me disant que c'était hyper dangereux d'ouvrir les ports pour des caméras. Donc je ne sais plus les voir qu'en VPN. et sur la fibaro, je les vois également si je suis en VPN ou via home.fibaro.com. Perso, je ne regarde pas mes cam via ma Fibaro, donc ce n'est pas trop grave si l'image n'est pas visible
  21. jojo

    Je Vais Pas Tarder A Tout Jeter

    si tu veux revenir en 3.6, c'est facile : recovery upgrade jusque 3.6 restore du backup pris avant la v4.x tu auras perdu : tes icônes ce que tu as fais depuis ton passage en v4.x
  22. demande au support fibaro si la v2.2 de tes FGS ne nécessite pas le firmware v4.x
  23. Lazer, Il me semble qu'en v4 on n'est plus limité comme en v3 http://www.domotique-fibaro.fr/index.php/topic/5669-se-passer-des-id-dans-vos-scenes-et-vd/?p=85435
  24. Bienvenue, Tu trouveras ton bonheure ici http://www.domotique-fibaro.fr/index.php/topic/1588-banque-icones-hc2-et-hcl/ et dans la galerie du forum
  25. merci de prendre le relais Lazer, car en effet je ne comprenais pas non plus, d'autant plus que je n'ai jamais été autant dans le détail du code
×
×
  • Créer...