Sakkhho Posté(e) le 20 mars 2015 Signaler 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.
sebcbien Posté(e) le 20 mars 2015 Signaler 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 ?
971jmd Posté(e) le 20 mars 2015 Signaler 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 !
Fredric Posté(e) le 20 mars 2015 Signaler 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
juke94 Posté(e) le 20 mars 2015 Signaler 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.
juke94 Posté(e) le 21 mars 2015 Signaler 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 ^^
Sakkhho Posté(e) le 21 mars 2015 Signaler 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 :-)
atalata Posté(e) le 21 mars 2015 Signaler 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
pepite Posté(e) le 21 mars 2015 Signaler 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"}})
pepite Posté(e) le 21 mars 2015 Signaler 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"]}})
pepite Posté(e) le 21 mars 2015 Signaler 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
Fredric Posté(e) le 21 mars 2015 Signaler 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.
Sakkhho Posté(e) le 21 mars 2015 Signaler 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}})
Sakkhho Posté(e) le 21 mars 2015 Signaler 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.
Shyrka973 Posté(e) le 21 mars 2015 Signaler 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
971jmd Posté(e) le 21 mars 2015 Signaler Posté(e) le 21 mars 2015 @Pepite Merci d'avance pour ton aide GEA.add({"Property!", 238, "Location", "0"},..... 238 c'est quoi
Shyrka973 Posté(e) le 21 mars 2015 Signaler Posté(e) le 21 mars 2015 238 est l'id d'un utilisateur. 1
Sebbrunie1 Posté(e) le 21 mars 2015 Signaler 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...?
971jmd Posté(e) le 21 mars 2015 Signaler 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"
juke94 Posté(e) le 22 mars 2015 Signaler 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 !!
Sebbrunie1 Posté(e) le 22 mars 2015 Signaler 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#
Sakkhho Posté(e) le 22 mars 2015 Signaler 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
juke94 Posté(e) le 22 mars 2015 Signaler 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 !
Sakkhho Posté(e) le 22 mars 2015 Signaler 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"})
Messages recommandés