
jjacques68
Membres confirmés-
Compteur de contenus
4 364 -
Inscription
-
Dernière visite
-
Jours gagnés
39
Tout ce qui a été posté par jjacques68
-
c'est celui sur lequel on avait déjà bossé : function QuickApp:onInit() self.sock = net.TCPSocket({timeout = 2000}) self.ip = self:getVariable("IP") self.port = tonumber(self:getVariable("Port")) self:Open_Socket() end ---------------------------------------------------------------- function QuickApp:Open_Socket() self.sock:connect(self.ip, self.port,{ success = function() self:debug("Socket opened") self.socketClosed = false self:updateProperty("value", true) self:Send("Hello") end, error = function(err) self:debug("error opening socket : ",err) self.sock:close() self.socketClosed = true self:updateProperty("value", false) end }) end ---------------------------------------------------------------- function QuickApp:Close_Socket() self.sock:close() self.socketClosed = true self:debug("Socket closed") self:updateProperty("value", false) end --------------------------------------------------------------- function QuickApp:Send(MaTrame) --reconnect if closed if self.socketClosed == true then self:Open_Socket() fibaro.sleep(3000) end --affiche la trame dans le label self:updateView("LBL_Buffer", "text", tostring(MaTrame)) --envoi la première trame d'essai self.sock:write("\n", { success = function() self:debug("First send = OK") --envoi la data self.sock:write(MaTrame.."\n", { success = function() self:debug("Data send = OK") end, error = function(err) self:debug("error sending data : "..err) self:Close_Socket() fibaro.sleep(500) self:Send(MaTrame) end }) end, error = function(err) self:debug("error sending first : "..err) self:Close_Socket() fibaro.sleep(500) self:Send(MaTrame) end }) end
-
euh je crois que ça vient d'un copier coller... inutile
-
si tu as le temps je veux bien, ça fait 5 heures que je fais toutes sortes d'essais... Ce qui est dingue, c'est que j'utilise le bout de code suivant (dan sun autre QA) pour un envoi unique et à la demande, et j'ai aucun soucis !! le truc, c'est dans ce cas là j'ouvre la socket à chaque envoi, chose que je peux pas faire dans l'autre QA, car il y aune grosse quantité de données envoyées à la suite... puis c'est pas normal... function QuickApp:TurnOffPc(Ip) self.sockOff:connect(tostring(Ip), tonumber(self:getVariable("Port")),{ success = function() self:debug("Socket OFF - opened") fibaro.sleep(100) self.sockOff:write("shutdown;YWRtaW5zaHV0ZG93bg==", { success = function() self:debug("Socket OFF - Data sended") end, error = function(err) self:debug("Socket OFF - error sending data : "..err) self:Close_SocketOff() fibaro.setTimeout(3000, function() self:TurnOffPc(Ip) end) end }) end, error = function(err) self:debug("Socket OFF - error opening : ",err) self:Close_SocketOff() fibaro.setTimeout(3000, function() self:TurnOffPc(Ip) end) end }) end
-
pffffffffffff... je trouve pas ce qui cloche ! Ce qui est sûr : - La connexion du QA est immédiate si le serveur est déjà lancé. - Si le serveur est redémarré, le QA n'arrive pas à se reconnecter malgré le code qu'on mis en place. Pour le refaire partir, je suis obligé de modifier n'importe quoi dans le QA afin de de pouvoir l'enregistrer et donc de le redémarrer. En gros : le serveur en premier, le QA en deuxième. L'inverse est impossible. Faut redémarrer le QA.
-
J'ai l'impression que les boucles dans le Open_Socket() et dans le Send() se prennent les pied dans le tapis...
-
ouai nan j'arrive pas réouvrir la socket ... j'ai cette erreur lors de la tentative de réouverture : pourtant, côté serveur je vois bien la demande arriver... et le serveur l'accepte bien
-
en même temps, vu l’actualité, les gens ont peut être autre chose à faire
-
pourtant j’ai pas l’impression que beaucoup de personnes possèdent une HC3... c’est plutôt calme les sujets...
-
mouai j’ai encore des difficultés de connexion au serveur ... je vais regardé ça demain. bon une fois que c’est ouvert c’est très stable.
-
nan mais j’espère qu’ils vont quand même sortir une MAJ prochainement !
-
du coup, j'allume avec la HC2 et j'éteins avec la HC3
-
mais attend, le broadcast (en général) peut pas se faire sur une socket TCP ? c'est que pour l'UDP ?
-
oui exacte, mais je le suis dis que je le passais sur une socket TCP... Ben visiblement non... Le broadcast passe pas
-
scènes Exemple gestion des volets tout simple
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
nan c'est bien avec : alors va comprendre la différence de résultat... encore merci -
scènes Exemple gestion des volets tout simple
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
ah nos messages se croisent, j'essaye... -
scènes Exemple gestion des volets tout simple
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
oui, je viens d'arriver à l'avoir avec : print(PIRAutoID[1].id) -
scènes Exemple gestion des volets tout simple
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
ah punaise non, j'ai pas la même réponse ! voici depuis l'appel d'une scène : [{"baseType":"com.fibaro.actor","interfaces":["quickApp"],"actions":{"turnOff":0,"turnOn":0,"toggle":0},"name":"PIR_Room_232","modified":1584422260,"parentId":0,"type":"com.fibaro.binarySwitch","properties":{"deviceIcon":1011,"saveLogs":false,"logTemp":"","typeTemplateInitialized":true,"state":true,"log":"","uiCallbacks":[],"value":true,"userDescription":"","viewLayout":{"$jason":{"head":{"title":"quickApp_device_57"},"body":{"sections":{"items":[]},"header":{"style":{"height":"0"},"title":"quickApp_device_57"}}}},"categories":["other"],"deviceControlType":20,"smsNotificationType":0,"smsNotificationID":0,"dead":false,"emailNotificationID":0,"deadReason":"","manufacturer":"","pushNotificationType":0,"emailNotificationType":0,"quickAppVariables":[],"pushNotificationID":0,"mainFunction":"-- Binary switch type should handle actions turnOn, turnOff\n-- To update binary switch state, update property \"value\" with boolean\n\nfunction QuickApp:turnOn()\n self:debug(\"binary switch turned on\")\n self:updateProperty(\"value\", true)\nend\n\nfunction QuickApp:turnOff()\n self:debug(\"binary switch turned off\")\n self:updateProperty(\"value\", false) \nend\n\n-- To update controls you can use method self:updateView(<component ID>, <component property>, <desired value>). Eg: \n-- self:updateView(\"slider\", \"value\", \"55\") \n-- self:updateView(\"button1\", \"text\", \"MUTE\") \n-- self:updateView(\"label\", \"text\", \"TURNED ON\") \n\n-- This is QuickApp inital method. It is called right after your QuickApp starts (after each save or on gateway startup). \n-- Here you can set some default values, setup http connection or get QuickApp variables.\n-- To learn more, please visit: https://manuals.fibaro.com/\n\nfunction QuickApp:onInit()\n self:debug(\"onInit\")\nend\n","model":""},"viewXml":true,"roomID":232,"visible":true,"configXml":false,"sortOrder":107,"created":1584422260,"isPlugin":true,"id":136,"enabled":true}] et voici depuis le nagiateur : [{"id":136,"name":"PIR_Room_232","roomID":232,"type":"com.fibaro.binarySwitch","baseType":"com.fibaro.actor","enabled":true,"visible":true,"isPlugin":true,"parentId":0,"viewXml":true,"configXml":false,"interfaces":["quickApp"],"properties":{"categories":["other"],"dead":false,"deadReason":"","deviceControlType":20,"deviceIcon":1011,"emailNotificationID":0,"emailNotificationType":0,"log":"","logTemp":"","mainFunction":"-- Binary switch type should handle actions turnOn, turnOff\n-- To update binary switch state, update property \"value\" with boolean\n\nfunction QuickApp:turnOn()\n self:debug(\"binary switch turned on\")\n self:updateProperty(\"value\", true)\nend\n\nfunction QuickApp:turnOff()\n self:debug(\"binary switch turned off\")\n self:updateProperty(\"value\", false) \nend\n\n-- To update controls you can use method self:updateView(<component ID>, <component property>, <desired value>). Eg: \n-- self:updateView(\"slider\", \"value\", \"55\") \n-- self:updateView(\"button1\", \"text\", \"MUTE\") \n-- self:updateView(\"label\", \"text\", \"TURNED ON\") \n\n-- This is QuickApp inital method. It is called right after your QuickApp starts (after each save or on gateway startup). \n-- Here you can set some default values, setup http connection or get QuickApp variables.\n-- To learn more, please visit: https://manuals.fibaro.com/\n\nfunction QuickApp:onInit()\n self:debug(\"onInit\")\nend\n","manufacturer":"","model":"","pushNotificationID":0,"pushNotificationType":0,"quickAppVariables":[],"saveLogs":false,"smsNotificationID":0,"smsNotificationType":0,"state":true,"typeTemplateInitialized":true,"uiCallbacks":[],"userDescription":"","value":true,"viewLayout":{"$jason":{"body":{"header":{"style":{"height":"0"},"title":"quickApp_device_57"},"sections":{"items":[]}},"head":{"title":"quickApp_device_57"}}}},"actions":{"toggle":0,"turnOff":0,"turnOn":0},"created":1584422260,"modified":1584422260,"sortOrder":107}] et biensûr j'ai besoin de l'id c'est pour ça que : api.get("/devices/?name=PIR_Room_"..roomID).id ne donne rien ! -
scènes Exemple gestion des volets tout simple
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
ben j'ai la même réponse que dans le navigateur !! bon attends c'est quoi ce bordel... -
Alors je suis entrain de me casser la tête pour faire le WakeOnLan que l'on connaissait déjà sur la HC2... Un grand merci au(x) personne(s) ayant développée(s) cela sur la HC2... j'ai fait un copié coller un adaptant. Mais je suis confronté au problème de l'adresse de BoradCast... Il semblerait que l'instruction setBroadcast(true) n'existe pas !! Voici le code du QA : (il n'y a pas tout ! juste la fonction principale qui pose problème) ---------------------------------------------------------------------------- function QuickApp:TurnOnPc(MacAdresse) ---------------------------------------------------------------------------- local macAddress = self:convertMacAddress(MacAdresse) -- Create Magic Packet 6 x FF local magicPacket = string.char(0xff, 0xff, 0xff, 0xff, 0xff, 0xff) -- Broadcast Address local broadcastAddress = "255.255.255.255" -- Default port used local wakeOnLanPort = 9 for i = 1, 16 do magicPacket = magicPacket..macAddress end --self.sockOn:setBroadcast(true) self:debug(broadcastAddress) self.sockOn:connect(tostring(broadcastAddress), tonumber(wakeOnLanPort),{ success = function() self:debug("Socket ON - opened") fibaro.sleep(100) self.sockOn:write(magicPacket, { success = function() self:debug("Socket On - Data sended") end, error = function(err) self:debug("Socket On - error sending data : "..err) self:Close_SocketOn() fibaro.setTimeout(3000, function() self:TurnOnPc(MacAdresse) end) end }) end, error = function(err) self:debug("Socket On - error opening : ",err) self:Close_SocketOn() fibaro.setTimeout(3000, function() self:TurnOnPc(MacAdresse) end) end }) end et j'ai l'erreur suivante : Socket On - error opening : Network is unreachable Si quelqu'un à des idées !!
-
scènes Exemple gestion des volets tout simple
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
ben ça marche depuis le navigateur !! et pas depuis la scène ??? -
scènes Exemple gestion des volets tout simple
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
@Krikroff : ce filtre ne peut pas fonctionner ? sur la propriété "name" ? api.get("/devices/?name=PIR_auto_"..roomID) -
scène Scène avec setTimeout qui s’arrête
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
oui j’essayerai ça... je pense que l’on va avoir beaucoup de temps ces prochains jours... -
scène Scène avec setTimeout qui s’arrête
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
ah oui il me semble qu’on peut boucler avec CRON, c’est ça dont tu parles ? -
scène Scène avec setTimeout qui s’arrête
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
ok mais si je veux changer l’heure ? -
scène Scène avec setTimeout qui s’arrête
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
désolé ne pas avoir répondu plus tôt... on est en mode guerre au boulo... alors il s’agit d’une scène pour le réveil : elle allume une des lampes de chevet progressivement à une heure spécifique (15 minute avant l’heure réglée par QA) il y a 3 boucles : la principale, avec le setTimeout qui boucle toutes les minutes afin de savoir quand déclencher (classique quoi) une petite première qui va allumer progressivement la lampe. une seconde qui va tourner pendant une heure avec la lampe allumée, puis l’éteindre (pour éviter que ça reste allumé si je plane) pour les 2 dernières, il est possible d’en sortir en allumant la lumière au max (99 %). Cela peut se faire avec un double clique sur l’interrupteur. ----------------------------------------------------------------------------------------- -- 15/03/2020 - V1 : Réveil Droite (Rt) ----------------------------------------------------------------------------------------- local i,j local LumiereG = 118 local LumiereD = 121 print("Réveil Rt - start") ------------------------------------------------------------------------------------- function Reveil() local HeureReveilG = fibaro.getGlobalVariable("WakeUpLt") --type string local HeureReveilD = fibaro.getGlobalVariable("WakeUpRt") --type string print("Reveil Rt - réveil à "..HeureReveilD) --si l'heure correspond avec 15 minutes d'avance if os.date("%H:%M", os.time()+15*60) == HeureReveilD then print(os.date("%d/%m/%Y - %H:%M").." - début du réveil") --boucle de 1 à 98 = setValue du module, sort si ampoule au max (99) i=1 while tonumber(fibaro.getValue(LumiereD, "value")) < 98 do --envoie la valeur au module fibaro.call(LumiereD, "setValue", i) --incrémente la valeur i=i+1 --attend 9 seconde (qui me fera au total 9*98 soit environ 15 min) fibaro.sleep(9*1000) end --au cas où je suis sorti de la boucle avant la fin, fixe à 98 % print(os.date("%d/%m/%Y - %H:%M").." - Allumé au max") fibaro.call(LumiereD, "setValue", 98) -- allume à fond -- allume l'autre si même heure if HeureReveilG == HeureReveilD then fibaro.call(LumiereG, "setValue", 98) end --boucle d'attente tant qu'on a pas attendu 1 heure après le reveil, ou que la lumière n'a pas été allumé au max while os.date("%H:%M", os.time()-(60*60)) < HeureReveilD and tonumber(fibaro.getValue(LumiereD, "value")) <= 98 do fibaro.sleep(5000) end --eteint si 1 heure après Réveil ou arrêt manuel print(os.date("%d/%m/%Y - %H:%M").." - Interruption car lumière éteinte ou > 1 heure après réveil") fibaro.call({LumiereD,LumiereG}, "turnOff") end fibaro.setTimeout(60*1000, Reveil) end -------------------------------------------------------------------------------------------------------------------- Reveil() et franchement, je vois pas ce que j’ai merdé dedant. en temps normal, toutes les minutes, j’ai une trace dans le debug. Ce matin, y avait rien.