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. tu ne crées pas une scène, mais un nouveau device virtuel. dans de DV, tu crées un bouton et tu y mes le code. Tu sauves. Et quand tu cliques sur le bouton, la température de consigne devrait être de 50°C sur ton ZXT. Tu peux faire différents tests avec différentes valeurs (en modifiant la variable SetPoint du DV) et tu vois si ton ZXT réagit comme attendu.
  2. jojo

    Nest Api

    Depuis la 4.056 je trouve que le plugin fonctionne bien. Maintenant pur Nest : positif : bel objet, appli Nest pour Android bien, fonctionne bien chez moi négatif : je suis triste de ne pas pouvoir avoir de graphe des informations. La température extérieure n'est obtenable que par ? le web. Si je devais en racheter un, je prendrais PEUT-ETRE le NetAtmo, car graphes, possibilité d'avoir sa propre sonde de température extérieure. Mais je ne sais pas pour son intégration avec la HC2. =>sebcbien en a un et il en est très content. Il pourrait t'en dire plus
  3. ok, merci @ Lazer. A part @Lazer, y a-t-il d'autres membres qui pourrait m'aider ? Sinon, je publie tel quel
  4. je suis très confiant sur le fait que je puisse récupérer la valeur de consigne du Nest. De plus, j'en ai un chez moi, donc c'est facile pour moi de faire les tests. Par contre transférer cette valeur au ZXT, c'est moins clair pour moi, surtout que je n'en ais pas pour essayer ...
  5. oui mais, supprimer un point de la DB, c'est facile, car le graphe affiche tous les points qu'il trouve. mettre un point en hide, est plus compliqué, il faudrait le supprimer de la table des graphes et le mettre dans une table séparée qui contiendrait toutes les incohérences. Mais sera-t-elle utilisée dans la réalité ??? Pour rajouter un commentaire àun point, cela implique de rajouter un champ comment dans chacune des tables de modifier le code php pour avoir un rigth click spécifique. Voilàce que j'en dis. Je laisse maintenant la paroles aux spécialistes php et autre ...
  6. J'essaie de paufinner cela au max avant de faire un tuto. voici ce que j'ai : IP=192.168.xxx.xxx TO="xxx@gmail.com" HOST=$(/bin/hostname) /bin/ping -c 1 -w 10 ${IP} if [ $? -ne 0 ] then SUBJECT="HC2 Ping error" BODY="La box HC2 (${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 J'ai trouvé ici le code pour l'envois des mails et la récupération des valeurs de config du Syno http://forum.synology.com/enu/viewtopic.php?f=32&t=79334 Je peux récupérer le hosname, mais j'aimerais bien récupérer l'e-mail qui est configuré comme récepteur, et ce qu'il propose ne fonctionne pas. Et si je pouvais aussi récupérer le nom de la tâche en cours, ce serait sympa Après, je pense que c'est bon pour le tuto
  7. Peux-tu nous mettre un print screen de ta scène, avec les différentes options d'actions possibles pour ton module ?
  8. Dans un premier temps, je te propose ceci pour voir si on peut commenter le setpoint de ton ZXT par LUA local zxt120_ID = 52 local SetPoint = 50 local HC2 = Net.FHttp("127.0.0.1",11111) -- préparation du nouveau json NewJson = '{"properties":{"value":'..SetPoint..'"}}' -- écriture du nouveau json -- écriture du nouveau json payload = "/api/devices/" ..zxt120_ID HC2:PUT(payload, NewJson) Ton ZXT devrait avoir la valeur mise dans la variable SetPoint (ici 50°C). Essaie avec différentes valeurs et vois ce que ça donne
  9. c'est clair qu'en mode bloc ce ne sera pas possible, mais en LUA on devrait y arriver
  10. ça va mieux, cela fait au moins 10 jours que je n'ai plus entendu "domotique de m...." Sauf hier soir : diffusion d'un message sur sonos : une des portes extérieures est ouverte. Elle: c'est quoi ce bol, puis : mais pourquoi la porte d'entrée est ouverte ??? Je buvais du petit lait ...
  11. ;-) j'ai trouvé. Il faut être root pour que le ping fonctionne, admin ne suffit pas (bien que suffisant pour les notifications et mails)
  12. 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 ???
  13. 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 ...
  14. oh la honte ! merci Lazer, et sorry de t'avoir dérangé pour des bêtises comme ça
  15. 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 ?
  16. 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.
  17. 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);
  18. 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 ?
  19. 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 ...
  20. 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
  21. 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 ?
  22. la musique se coupe après environ 30 sec ?
  23. 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
  24. fallait essayer ...
  25. 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)
×
×
  • Créer...