Sakkhho Posté(e) le 20 mars 2015 Signaler Partager Posté(e) le 20 mars 2015 Mais ch2_ouv doit être un Fgk je suppose. Donc comment GEA voit le changement d état ? Je pige pas. Lien vers le commentaire Partager sur d’autres sites More sharing options...
sebcbien Posté(e) le 20 mars 2015 Signaler Partager Posté(e) le 20 mars 2015 le script gea est lancé dès que l'id du fgk (placé dans l'entête) change d'état gea sais déterminer cela et si -1 l'action est lancée immédiatement tu es sur que ton entête est bonne ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
971jmd Posté(e) le 20 mars 2015 Signaler Partager Posté(e) le 20 mars 2015 Chaque module a des propriétés autre que "Value" Exemple : properties":{ "parameters":[], "associationSet":[], "associationView":[], "zwaveCompany":"Fibargroup", "zwaveInfo":"3,3,42", "zwaveVersion":"2.1", "pollingTimeSec":0, "configured":"true", "dead":"false", "deviceControlType":"20", "deviceIcon":"2", "emailNotificationID":"0", "emailNotificationType":"0", "endPointId":"0", "isLight":"false", "liliOffCommand":"", "liliOnCommand":"", "log":"", "logTemp":"", "manufacturer":"", "markAsDead":"true", "model":"", "nodeId":"21", "parametersTemplate":"221", "productInfo":"1,15,4,0,16,10,2,1", "pushNotificationID":"0", "pushNotificationType":"0", "remoteGatewayId":"0", "saveLogs":"true", "smsNotificationID":"0", "smsNotificationType":"0", "useTemplate":"true", "userDescription":"", "value":"false" Cela permet donc de vérifier directement une ce des propriété. @ Steven Merci je commence a comprend mai dans l'exemple : GEA.add({"Property!", 238, "Location", "0"}, 238 et location c'est quoi le ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fredric Posté(e) le 20 mars 2015 Signaler Partager Posté(e) le 20 mars 2015 Additionner des conditions? Tu peux préciser? je trouve pas, il y a tellement de pages!!! je voulais dire: "si la porte est ouverte" et "que la lumière est allumée" et "que la variable est sur ON" et "que le frigo consomme moins de 60w" alors allumer la lumière X Lien vers le commentaire Partager sur d’autres sites More sharing options...
juke94 Posté(e) le 20 mars 2015 Signaler Partager Posté(e) le 20 mars 2015 Bon je suis en train de transférer mes scènes dans GEA, encore merci à tous pour ce travail formidable. Voila je voudrais l'avis d'expert sur ces lignes pour la gestion de ma boucle sanitaire au quotidien. Ma boucle sanitaire me permet de faire circuler de l'eau chaude dans toute la maison en utilisant un petit ballon de 15l et une pompe de circulation. La pompe de circu doit s’allumer en générale 5 minutes après le ballon et ce tout le temps... Pour l'extinction les deux en même temps doivent s'éteindre. Pouvez vous me dire si ce codage est bien cohérant : -- === Debut gestion Boucle Sanitaire === -- -- Allumage Ballon ECS à 6h les jours du Lundi au samedi GEA.add(id["BALLON_CIRCU"], 30, "", {{"Inverse"},{"Time", "06:00", "06:02"},{"Days", "Weekdays", "Saturday"},{"turnOn"}}) -- Allumage ballon ECS à 8h30 le dimanche GEA.add(id["BALLON_CIRCU"], 30, "", {{"Inverse"},{"Time", "08:30", "08:32"},{"Days", "Sunday"}, {"turnOn"}}) -- Allumage ballon ECS à 17h30 tous les jours GEA.add(id["BALLON_CIRCU"], 30, "", {{"Inverse"},{"Time", "17:30", "17:32"},{"Days", "All"}, {"turnOn"}}) -- Allumage de la pompe de circulation 5min apres l'allumage du Ballon ECS GEA.add(id["BALLON_CIRCU"], 5*60,"", {{"turnOn", id["POMPE_CIRCU"]}}) -- Extinction boucle sanitaire à 14h le Weekend et lundi GEA.add(id["BALLON_CIRCU"], 30, "", {{"Time", "14:00", "14:02"},{"Days","Weekend", "Monday"}, {"turnOff"}}) -- Extinction boucle sanitaire à 9h du mardi au vendredi GEA.add(id["BALLON_CIRCU"], 30, "", {{"Time", "09:00", "09:02"},{"Days","Monday","Tuesday","Wednesday","Thursday","Friday"}, {"turnOff"}}) -- Extinction ballon ECS à 23h30 tous les jours GEA.add(id["BALLON_CIRCU"], 30, "", {{"Inverse"},{"Time", "23:30", "23:32"},{"Days", "All"}, {"turnOff"}}) -- Extinction de la pompe de circulation en même temps que le ballon ECS GEA.add(id["BALLON_CIRCU"], -1,"", {{"Inverse"},{"turnOff", id["POMPE_CIRCU"]}}) -- === Fin gestion Boucle Sanitaire === -- Merci beaucoup. Lien vers le commentaire Partager sur d’autres sites More sharing options...
juke94 Posté(e) le 21 mars 2015 Signaler Partager Posté(e) le 21 mars 2015 Bonjour à tous !!!!!!! bon rien pour moi ne s'est lancé ce matin comme je l'espérais ! ce qui est byzarre c'est que dans les logs je vois mon action manuel d'allumage ?!? 7h10 est l'heure à laquelle j'ai vérifié si c'était lancé (avant que ma chère et tendre ne se lève prendre sa douche ^^) comme ca ne l'était pas j'ai allumé les deux appareil.... Je me demande si c'est pas l'option "inverse" posé en début et non à la fin... je me suis basé sur l'exemple présent dans GEA pour le sèche serviette... [DEBUG] 07:10:27: [ 223 | Ballon Circu ] sendActions : traitement des actions (ID:4) [turnOn,225] [DEBUG] 07:10:27: [ 223 | Ballon Circu ] sendActions : !ACTION! : turnOn (ID:4) [turnOn,225] [DEBUG] 07:10:27: [ 223 | Ballon Circu ] Done : tache effectuée et suspendue (ID:4) [turnOn,225] si vous passer par la je veux bien un petit peu d'aide ^^ Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sakkhho Posté(e) le 21 mars 2015 Signaler Partager Posté(e) le 21 mars 2015 le script gea est lancé dès que l'id du fgk (placé dans l'entête) change d'état gea sais déterminer cela et si -1 l'action est lancée immédiatement tu es sur que ton entête est bonne ? merci c'est clair et implementé maintenant on va faire qq test :-) Lien vers le commentaire Partager sur d’autres sites More sharing options...
atalata Posté(e) le 21 mars 2015 Signaler Partager Posté(e) le 21 mars 2015 Bonjour à tous J'ai passé une partie de la soirée à essayer de remonter une info de consommation totale de courant, mais je n'ai pas réussi à trouver comment faire avec GEA Mon idée serait de remonter des infos de sensibilisation, genre quand le seche linge a tourné en HP, pouvoir envoyer un message pour indiquer le gain qui aurait pu être fait (même si on parle de qqs centimes ) Mon idée a été la suivante : comme on a une variable #duration# (par exemple pour une scene où on a le lave linge a l'état running comme l'a fait steven), et du coup les dates aussi de la scene, ca serait de l'utiliser pour aller recuperer les informations dans le panel energy panel avec l'api , genre http://:@/api/energy/<timestampstart>/<timestampstop>/single/devices/power/<id lave linge> et récupérer les kw dans le json J'ai donc essayé de modifier le code pour me faire cette fonction, mais j'ai lamentablement echoué ! Y a t il une autre solution déjà en place que je n'aurais pas détecté ou suis je le seul à vouloir faire ce genre d'usine à gaz ?? Bonne journée à tous Lien vers le commentaire Partager sur d’autres sites More sharing options...
pepite Posté(e) le 21 mars 2015 Signaler Partager Posté(e) le 21 mars 2015 Tu cherches a avoir la conso globale ?? Difference HC et HP ? C est ca ?T as essaye un json decode encode table ;-) @juke94 GEA.add(id["BALLON_CIRCU"], 30, "", {{"Inverse"},{"Time", "06:00", "06:02"},{"Days", "Weekdays", "Saturday"},{"turnOn"}}) Ta syntaxe avec les "Days" n'est pas la bonne,(enfin je crois) tous les jours doivent etre entre les memes guillemets : {"Days", "Weekdays, Saturday"} Dans ta ligne la condition "id["BALLON_CIRCU"]" signifie : --> GEA verifie le value de "ballon CIRCU", s'il est à 0 ou à 1, donc eteint ou allumé Le {"Inverse"} signifie dans ce cas : --> SI "Ballon Circu" eteint alors.... --> Sans le "Inverse", cela signifierait, si"Ballon CIrcu" allumé alors.. "Days", "All" : pas besoin de préciser ca simplifie la ligne GEA Essaie comme ca : GEA.add(id["BALLON_CIRCU"], 30, "", {{"Inverse"},{"Time", "06:00", "06:02"},{"Days", "Weekdays, Saturday"},{"turnOn"}}) ou comme ca pour tester GEA.add(id["BALLON_CIRCU"], 30, "", {{"Inverse"},{"Time", "06:00", "06:02"},{"Days", "Monday, Tuesday, Wednesday, Thursday, Friday, Saturday"},{"turnOn"}}) Lien vers le commentaire Partager sur d’autres sites More sharing options...
pepite Posté(e) le 21 mars 2015 Signaler Partager Posté(e) le 21 mars 2015 @frederic : "si la porte est ouverte" et "que la lumière est allumée" et "que la variable est sur ON" et "que le frigo consomme moins de 60w" alors allumer la lumière X Conditions multiples : local porteouverte = ..... local lumiereallumee = ..... local variableon = ..... local consofrigo = .... GEA.add({porteouverte, lumiereallumee, variableon, consofrigo}, 30, "", {{"turnOn", id["lumiere"]}}) Lien vers le commentaire Partager sur d’autres sites More sharing options...
pepite Posté(e) le 21 mars 2015 Signaler Partager Posté(e) le 21 mars 2015 @971jmd : 238 et location c'est quoi le ! le "!" : signifie "DIFFERENT" de .... Donc dans l'exemple de @steven on peut traduire par : --> SI la "Property" "location" est DIFFERENTE de "0" ;-) 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fredric Posté(e) le 21 mars 2015 Signaler Partager Posté(e) le 21 mars 2015 Merci @pepite, j'ai trouvé la syntaxe tard, tard, tard dans la nuit et après beaucoup d'essai. Mais, c'est terminé, Scheluder n'est plus, tous est sur GEA. J'avais presque un peu de peine quand je l'ai supprimé de ma box. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sakkhho Posté(e) le 21 mars 2015 Signaler Partager Posté(e) le 21 mars 2015 Hello j'aimerai en cas d'intrusion que la lampe dimmée passe de 0 à 100 et de 100 à 0 tant que la variable "Intrusion" est valable je sais pas comment faire ca .. je pense avoir le debut, mais je ne sais pas comment faire le dimming ou alors la faire clignoter. GEA.add({Intrusion}, -1, "", {{"turnOn",id["ECL_CHAMBRE_PARENTS"]}, {"Value", id["ECL_CHAMBRE_PARENTS"], ??? },{Repeat}}) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sakkhho Posté(e) le 21 mars 2015 Signaler Partager Posté(e) le 21 mars 2015 Si le lave-linge consomme moins de 1.0W (éteint), je coupe la prise. Variable = OFF Si sa consommation est supérieure à 3.0W (en fonctionnement), Variable = RUNNING Si sa consommation est entre 1.0 et 2.5 et que la variable = RUNNING alors Variable = Waiting ... Il ne consomme plus donc est terminé Si la variable est Waiting plus de 30mn alors je rappel qu'il faut ce bouger les fesses. -- === Lave-Linge == -- GEA.add({"Global", "Lave-Linge", "WAITING"}, 30*60, "Le lave-linge est arrêté depuis #duration#", {{"Global", "Karotz", "Le lave-linge est arrêté depuis #durationfull#"},{"VirtualDevice", id["OPENKAROTZ"],"1"},{"Repeat"}}) GEA.add({"Sensor-", id["LAVE_LINGE"], 1.5}, 2*60, "", {{"turnOff"}, {"Global", "Lave-Linge", "OFF"}}) GEA.add({"Sensor+", id["LAVE_LINGE"], 3}, 2*60, "", {{"Global", "Lave-Linge", "RUNNING"}}) GEA.add({{"Sensor+", id["LAVE_LINGE"], 1},{"Sensor-", id["LAVE_LINGE"], 2.5}, {"Global", "Lave-Linge", "RUNNING"}}, 5*60, "", {{"Global", "Lave-Linge", "WAITING"}}) @Steven Je voulais implanter exactement ce fonctionnement, mais j'ai un doute si conso < 1.5 alors tu passes la variable sur OFF, donc des que ta machine est à l'arrêt elle passe à OFF, ce qui ne laisse pas de temps à la variable d'etre à Wainting, donc la ligne de push n'est jamais utilisé si ? ensuite j'ai essayé ca , chez moi -- Lave Linge GEA.add({"Global", "Lave_Linge", "En Attente"}, 30*60, "Le lave-linge est arrêté depuis #duration#", {"Repeat"}) GEA.add({"Sensor-", id["WP_LAVE_LINGE"], 2.5}, 2*60, "", {"Global", "Lave_Linge", "Arret"}) GEA.add({"Sensor+", id["WP_LAVE_LINGE"], 3}, 2*60, "", {{"Global", "Lave_Linge", "Lavage"}}) GEA.add({{"Sensor+", id["WP_LAVE_LINGE"], 1},{"Sensor-", id["WP_LAVE_LINGE"], 2.5}, {"Global", "Lave_Linge", "Lavage"}}, 5*60, "", {{"Global", "Lave_Linge", "En Attente"}}) avec une variable Lave_Linge qui peut prendre 'Lavage', 'En attente', 'Arret' mais j'ai ca [ERROR] 15:07:54: line 315: bad argument #1 to 'lower' (string expected, got nil) qui chez moi est la ligne if (string.lower(arg[i][1]) == "repeat") then repeating = true end je ne vois pas ou est l'erreur. Lien vers le commentaire Partager sur d’autres sites More sharing options...
juke94 Posté(e) le 21 mars 2015 Signaler Partager Posté(e) le 21 mars 2015 Je vais testé ! Merci @Pepite ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Shyrka973 Posté(e) le 21 mars 2015 Signaler Partager Posté(e) le 21 mars 2015 (modifié) Salut @Steven, J'ai modifié la fonction GEA.match ainsi: GEA.match = function(s, p) if (type(s) == "nil") then return type(p) == "nil" end s = tostring(s) p = tostring(p):gsub("%%", "%%%%"):gsub("-", "%%-") local words = GEA.split(p, "|") for i = 1, #words do if (not GEA.regexFullAllow) then if (string.find(s, GEA.trim(words[i]), 1, true)) then return true end else if (string.match(s, GEA.trim(words[i]))) then return true end end end return false end Pour faire simple, quand "regexFullAllow" est à "false", j'utilise "string.find" à la place "string.match" pour chercher la chaine de caractère puisque "GEA.match" ne retourne que true ou false. Il faut savoir que "string.find" prend un 4ième paramètre: - true: recherche de string, - false (par défaut): recherche de pattern J'ai aussi modifié les deux lignes dans la fonction "GEA.sendActions" pour utiliser "string.find": if (GEA.match(entry[GEA.keys["PARAMS"]][i][3], "inc%+")) then devient: if (string.find(entry[GEA.keys["PARAMS"]][i][3], "inc+", 1, true)) then et: else if (GEA.match(entry[GEA.keys["PARAMS"]][i][3], "dec%-")) then devient: elseif (string.find(entry[GEA.keys["PARAMS"]][i][3], "dec-", 1, true)) then Pour l"instant, je tourne avec cette modif. On verra dans quelques jours. Une réflexion: Peut-être qu'il faudrait créer un fonction GEA.find pour différencier avec GEA.match car dans cette ligne: if (GEA.match(type, "door_sensor|water_sensor|motion_sensor|com.fibaro.FGMS001|com.fibaro.doorSensor|com.fibaro.waterSensor|com.fibaro.motionSensor")) then on n'a clairement pas besoin de recherche de pattern mais GEA.match peut quand même en faire si on a activé "regexFullAllow". "GEA.match" pour les propres recherches de l'utilisateur selon s'il a activé "regexFullAllow" "GEA.find" pour les propres recherches de GEA (voir exemple au dessus) ou remplacer ces "GEA.match" par "string.find". Je vais porter ces modifs et tester. Modifié le 22 mars 2015 par Shyrka973 2 Lien vers le commentaire Partager sur d’autres sites More sharing options...
971jmd Posté(e) le 21 mars 2015 Signaler Partager Posté(e) le 21 mars 2015 @Pepite Merci d'avance pour ton aide GEA.add({"Property!", 238, "Location", "0"},..... 238 c'est quoi Lien vers le commentaire Partager sur d’autres sites More sharing options...
Shyrka973 Posté(e) le 21 mars 2015 Signaler Partager Posté(e) le 21 mars 2015 238 est l'id d'un utilisateur. 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sebbrunie1 Posté(e) le 21 mars 2015 Signaler Partager Posté(e) le 21 mars 2015 Bonsoir, bon, avec ce code, il ne se passe rien du tout... local userLocation = {"Function", function() return fibaro:getValue(238, 'Location') end} local EmplacementMaison1 = "48.84745534593;2.4532449245453" local EmplacementBureau1 = "48.81907202982484;2.3286187648773193" -- Localisation EmplacementSeb local DistanceMaison1 = {"Function", function() return fibaro:calculateDistance(userLocation, EmplacementMaison1) end} local DistanceBureau1 = {"Function", function() return fibaro:calculateDistance(userLocation, EmplacementBureau1) end} GEA.add(DistanceBureau1, 30, "", {{"Global", "DistanceBureau", "#value#"}, {"Label", id["DISTANCE"], "Label2", "#value# m"}}) GEA.add(DistanceMaison1, 30, "", {{"Global", "DistanceMaison", "#value#"}, {"Label", id["DISTANCE"], "Label1", "#value# m"}}) -- message maison GEA.add({"Global-", "DistanceMaison", "100"}, 30, "Je suis à moins de #value# m à #time# de la maison", {{"MaxTime", "1"}}) J'ai en debug [DEBUG] 23:33:40: [ Function ] Add Autostart : ajout de la tache pour 30 secondes (ID:1) [Global,DistanceBureau,#value#] [Label,56,Label2,#value# m] [DEBUG] 23:33:40: [ Function ] Add Autostart : ajout de la tache pour 30 secondes (ID:2) [Global,DistanceMaison,#value#] [Label,56,Label1,#value# m] [DEBUG] 23:33:40: [ DistanceMaison=100 ] Add Autostart : ajout de la tache pour 30 secondes (ID:3) [MaxTime,1] [DEBUG] 23:33:40: GEA Version 5.32 : en exécution... [DEBUG] 23:38:40: Durée des traitements : 0s nouveau délai : 30s / tourne depuis 5m Une idée. Pourquoi il ne se passe rien...? Lien vers le commentaire Partager sur d’autres sites More sharing options...
971jmd Posté(e) le 21 mars 2015 Signaler Partager Posté(e) le 21 mars 2015 essaye avec le mode bloc et bascule en LUA et tu auras un autre chiffre que ID238 ----- fibaro:getValue(238, 'Location') end}) moi mon ID est 251 mai quand je réalise en mode bloc et bascule en LUA j'ai comme chiffre 2 ----- fibaro:getValue(22, 'Location') end} --[[ %% properties 2 Location %% globals --]] local startSource = fibaro:getSourceTrigger(); if ( ( (fibaro:calculateDistance(fibaro:getValue(2, "Location"), "xx.xxxxxxx;-xx.xxxxxxx") <= 30 and fibaro:calculateDistance(fibaro:getValue(2, "PreviousLocation"), "xx.xxxxxxx;-xx.xxxxxxxx") > 30) ) or startSource["type"] == "other" Lien vers le commentaire Partager sur d’autres sites More sharing options...
juke94 Posté(e) le 22 mars 2015 Signaler Partager Posté(e) le 22 mars 2015 Pour moi c'est ok ! Merci @Pépite ! J'attend pour voir niveau des jours mais ca me parait bien parti !! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sebbrunie1 Posté(e) le 22 mars 2015 Signaler Partager Posté(e) le 22 mars 2015 en fait, j'ai bien la récupération de ma localisation. C'est le calcul de la distance qui ne se fait pas. -- Localisation EmplacementSeb local DistanceMaison1 = {"Function", function() return fibaro:calculateDistance(userLocation, EmplacementMaison1) end} local DistanceBureau1 = {"Function", function() return fibaro:calculateDistance(userLocation, EmplacementBureau1) end} GEA.add(DistanceBureau1, 30, "", {{"Global", "DistanceBureau", "#value#"}, {"Label", id["DISTANCE"], "Label2", "#value# m"}}) GEA.add(DistanceMaison1, 30, "", {{"Global", "DistanceMaison", "#value#"}, {"Label", id["DISTANCE"], "Label1", "#value# m"}}) -- message maison GEA.add({"Global-", "DistanceMaison", "100"}, 30, "Je suis à moins de #value# m à #time# de la maison", {{"MaxTime", "1"}}) Edit: j'ai changé la ligne local userLocation = {"Function", function() return fibaro:getValue(238, 'Location') end} en mettant local userLocation = {"Function", function() return fibaro:getValue(238, "Location") end} et ca me remonte en distance #value# Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sakkhho Posté(e) le 22 mars 2015 Signaler Partager Posté(e) le 22 mars 2015 bon j'arrive pas à mettre en place la surveillance du lavelinge pourtant je pars du code de steven. vous voyez une erreur dans mon code ? http://www.domotique-fibaro.fr/index.php/topic/1211-support-gea/?p=61541 Lien vers le commentaire Partager sur d’autres sites More sharing options...
juke94 Posté(e) le 22 mars 2015 Signaler Partager Posté(e) le 22 mars 2015 @sakkho : C'est la fonction "repeat" qui semble chez toi posé un souci d’après l'erreur citée !! dans ta troisième ligne je vois des '{' en trop par rapport à ta deuxième ligne !!! mais bon je pense pas que cela pose problème ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sakkhho Posté(e) le 22 mars 2015 Signaler Partager Posté(e) le 22 mars 2015 j'avais modifié comme ceci la 1ere ligne ne semble pas posé problème car si je laisse que celui ci - pas d'erreur GEA.add({"Global", "Lave_Linge", "En Attente"}, 30*60, "Le lave-linge est arrêté depuis #duration#",{{"Global", "Lave_Linge", "En Attente"}, {"Repeat"}}) GEA.add({"Sensor-", id["WP_LAVE_LINGE"], 2}, 2*60, "", {"Global", "Lave_Linge", "Arret"}) GEA.add({"Sensor+", id["WP_LAVE_LINGE"], 3}, 2*60, "", {"Global", "Lave_Linge", "Lavage"}) GEA.add({{"Sensor+", id["WP_LAVE_LINGE"], 1},{"Sensor-", id["WP_LAVE_LINGE"], 2.5}, {"Global", "Lave_Linge", "Lavage"}}, 5*60, "", {"Global", "Lave_Linge", "En Attente"}) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés