DOMOTIQUE (parce que c'est ludique et qu'on fait des economies)
Le samedi 3 avril 2021 à 13:58:21
Yo Jiss, je regarde ça en détail ce weekend et je te fais une réponse
JissJisseone
240 Messages
Le dimanche 4 avril 2021 à 09:33:09
je planche aussi dessus, mais ce n'est pas une reussite...erreurs...erreurs...erreurs
Le mardi 6 avril 2021 à 07:44:37
Salut,
La requête HTTP est effectuée par cette ligne :
Que représente "idx" ?
Plusieurs solutions à ton problème.
Soit, tu utilises un endpoint différent par utilisateur que tu utilises en fonction de qui est reconnu :
Mais ça n'est pas très optimisé, car c'est amené à grossir avec le nombre de personnes reconnues.
Sinon, le mieux est de passer le nom de la personne en argument de ta requête HTTP. Par exemple : &name=marius
Mais là ça va dépendre de ce qui est possible de faire avec Domoticz.
La requête HTTP est effectuée par cette ligne :
r = requests.get('http://user:password@192.168.20.17:8080/json.htm?type=command&dparam=switchlight&idx=194&switchcmd=On')
Que représente "idx" ?
Plusieurs solutions à ton problème.
Soit, tu utilises un endpoint différent par utilisateur que tu utilises en fonction de qui est reconnu :
if 'marius' == name:
r = requests.get('http://user:password@192.168.20.17:8080/marius_endpoint.htm?type=command&dparam=switchlight&idx=194&switchcmd=On')
elif 'gabin' == name:
r = requests.get('http://user:password@192.168.20.17:8080/gabin_endpoint.htm?type=command&dparam=switchlight&idx=194&switchcmd=On')
else:
r = requests.get('http://user:password@192.168.20.17:8080/json.htm?type=command&dparam=switchlight&idx=194&switchcmd=On')
Mais ça n'est pas très optimisé, car c'est amené à grossir avec le nombre de personnes reconnues.
Sinon, le mieux est de passer le nom de la personne en argument de ta requête HTTP. Par exemple : &name=marius
Mais là ça va dépendre de ce qui est possible de faire avec Domoticz.
JissJisseone
240 Messages
Le mardi 6 avril 2021 à 08:02:10
Salut, un grand merci pour ta reponse, je test ça tout de suite. IDX correspond au numero du device dans domoticz. Donc cette requete http fais passer à ON, le switch 194 dans domoticz...
Je vais donc creer deux autres interrupteurs dans domoticz. Un pour Gabin et un pour Marius
Donc chaque requete sera personnalisée et aura son interrupteur propre IDX Gabin =195 et IDX Marius = 196 etc
Dans tous les cas, encore merci pour ton coup de main
Je vais donc creer deux autres interrupteurs dans domoticz. Un pour Gabin et un pour Marius
Donc chaque requete sera personnalisée et aura son interrupteur propre IDX Gabin =195 et IDX Marius = 196 etc
Dans tous les cas, encore merci pour ton coup de main
JissJisseone
240 Messages
Le mercredi 7 avril 2021 à 09:57:20
re.. Bon,ça fonctionne du feu de dieu...juste toujours quelques soucis de TABulation. Mais probleme reglé...le switch Marius bascule bien en On sur domoticz
Y'a juste le " marius end point " que je n'ai pas compris...
Ta requete :
ma requete en json
excuse pour le BBCODE, sinon c'est tout mon post que passe en bbcode.
encore merci Lobodol
Y'a juste le " marius end point " que je n'ai pas compris...
Ta requete :
r = requests.get('http://user:password@192.168.20.17:8080/marius_endpoint.htm?type=command&dparam=switchlight&idx=194&switchcmd=On')
ma requete en json
if 'marius' == name:
r = requests.get('http://user:password@192.168.20.17:8080/json.htm?type=command&dparam=switchlight&idx=242&switchcmd=On')
excuse pour le BBCODE, sinon c'est tout mon post que passe en bbcode.
encore merci Lobodol
Le mercredi 7 avril 2021 à 13:16:08
Non mais c'est bon, tu as géré le endpoint avec le paramètre idx.
C'était deux solutions distinctes :
C'était deux solutions distinctes :
- Un endpoint par utilisateur
- Le même endpoint pour tous mais avec un paramètre d'identification passé dans la requête
JissJisseone
240 Messages
Le vendredi 9 avril 2021 à 07:53:07
Ok super..merci pour ton retour...bon en tout cas ça marche tres bien...je continu à optimiser ce script pour qu'il fasse bien comme je veux...
Tu as eu le temps de faire joujou avec le github que je t'ai envoyé? et les scripts basés sur opencv 2?
Tu as eu le temps de faire joujou avec le github que je t'ai envoyé? et les scripts basés sur opencv 2?
JissJisseone
240 Messages
Le vendredi 29 avril 2022 à 11:56:41
Bonjour a tous..salut lobodol...je reviens a l'attaque avec un nouveau sysyteme de detection de presence/absence...que je n'arrive pas à mettre en oeuvre
:'([img]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=[/img]
Je relis le post, et la reco faciale c'est OK, les requete vers mon DOMOTICZ c'est OK
Mais je bute sur la mise en oeuvre..je fais des essais de script sous BLOCKLY ou en LUA...mais ça fait pas comme je veux...
donc (c'est compliqué d'expliquer quelque chose qui n'est deja pas clair pour soit meme), j'ai plusieurs capteurs physiques et virtuels en route (toujours piloté pasr domoticz)
Si la maison est en mode absence (switch virtuel ABSENCE=ON) et que je rentre:
le capteur porte virtuelle=On, le capteur video me reconnait, il passe la maison en mode PRESENCE=ON et passe le switch virtuel Jisse=ON
jusqu'a la ok ...mais si je programme le meme systeme en inversé, comme au moment ou je m'en vais, il y a un systeme de redondance qui se cree, et mes deux scripts blockly (ou lua aussi), se mettent à tourner en boucle...abs/presence...abs/presence...abs/presence, en boucle...
pff meme moi, je me fais tourner la tete tout seul...il y une logique de prog que je n'ai pas cerné ...
Un petit coup de main serait le bienvenue
merci a tous
:'([img]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=[/img]
Je relis le post, et la reco faciale c'est OK, les requete vers mon DOMOTICZ c'est OK
Mais je bute sur la mise en oeuvre..je fais des essais de script sous BLOCKLY ou en LUA...mais ça fait pas comme je veux...
donc (c'est compliqué d'expliquer quelque chose qui n'est deja pas clair pour soit meme), j'ai plusieurs capteurs physiques et virtuels en route (toujours piloté pasr domoticz)
- 1 capteur de porte physique
- 1capteur video qui reconnait mon visage
- un capteur de porte virtuel (qui fonctionne en binôme avec le physique ..l'un est On, l'autre aussi)
- un capteur pir de presence
- un switch virtuel ABSENCE
- un switch virtuel PRESENCE
- un switch virtuel JISSE present/absent
Si la maison est en mode absence (switch virtuel ABSENCE=ON) et que je rentre:
le capteur porte virtuelle=On, le capteur video me reconnait, il passe la maison en mode PRESENCE=ON et passe le switch virtuel Jisse=ON
jusqu'a la ok ...mais si je programme le meme systeme en inversé, comme au moment ou je m'en vais, il y a un systeme de redondance qui se cree, et mes deux scripts blockly (ou lua aussi), se mettent à tourner en boucle...abs/presence...abs/presence...abs/presence, en boucle...
pff meme moi, je me fais tourner la tete tout seul...il y une logique de prog que je n'ai pas cerné ...
Un petit coup de main serait le bienvenue
merci a tous
JissJisseone
240 Messages
Le vendredi 29 avril 2022 à 12:00:51
le script pour quand j'arrive
local switch1 = 'capteur porte virtuel'
local switch2 = 'jissé'
local switch3 = 'absence'
local switch4 = 'presence jisse'
local switch5 = 'presence'
commandArray = {}
if otherdevices[switch1] == 'On' and devicechanged[switch2] == 'On' and otherdevices[switch5] == 'Off' and otherdevices[switch4] == 'Off' then
commandArray[switch4]='On'
commandArray[switch5]='On'
commandArray[switch3]='Off'
print("JISSE PASSE EN PRESENCE")
end
return commandArray
JissJisseone
240 Messages
Le vendredi 29 avril 2022 à 12:03:12
decidement ce BBCODE, je n'y arriverais jamais
le code pour quand je pars
le code pour quand je pars
local switch1 = 'capteur porte virtuel'
local switch2 = 'jissé'
local switch3 = 'presence'
local switch4 = 'presence jisse'
local switch5 = 'absence'
local switch6 = 'detecteur_porte'
commandArray = {}
if ( otherdevices[switch1] and devicechanged[switch2] and otherdevices[switch3] and otherdevices[switch4] and otherdevices[switch6] ) == On then
commandArray[switch4]='Off'
commandArray[switch3]='Off'
commandArray[switch5]='On'
print("JISSE PASSE EN ABSQENCE")
end
return commandArray
Le mardi 3 mai 2022 à 09:45:20
Salut Jiss, tu te trouves dans le cas classique d'une boucle infinie.
De ce que je comprends de ton code, tes conditions se basent sur le fait que certains switch changent d'état. De fait, quand tu affectes la valeur "Off" (ou "On") à un switch, ça peut potentiellement déclencher l'autre commande.
Un conseil pour t'y retrouver : nomme tes variables correctement pour qu'elles aient un sens, crée des constantes si ça peut aider à la lecture et n'hésite pas à créer des fonctions bien nommées. Par exemple, plutôt que d'avoir une condition à rallonge dans un if, tu peux encapsuler ça dans une fonction qui apporte de la lisibilité :
Avec la version améliorée, on comprend tout de suite ce que la condition signifie.
En faisant cet exercice, je pense que tu trouveras naturellement d'où vient le problème.
De ce que je comprends de ton code, tes conditions se basent sur le fait que certains switch changent d'état. De fait, quand tu affectes la valeur "Off" (ou "On") à un switch, ça peut potentiellement déclencher l'autre commande.
Un conseil pour t'y retrouver : nomme tes variables correctement pour qu'elles aient un sens, crée des constantes si ça peut aider à la lecture et n'hésite pas à créer des fonctions bien nommées. Par exemple, plutôt que d'avoir une condition à rallonge dans un if, tu peux encapsuler ça dans une fonction qui apporte de la lisibilité :
// Version complexe
if (a and b and c and d)
// Version améliorée
if (houseMode == "AWAY" and someoneComesIn())
Avec la version améliorée, on comprend tout de suite ce que la condition signifie.
En faisant cet exercice, je pense que tu trouveras naturellement d'où vient le problème.
JissJisseone
240 Messages
Le dimanche 8 mai 2022 à 18:13:00
slt lobodol ...merci de ton retour..tu touche bien en python et lua...veeenard :)
bon j'ai suivi tes conseils....et...bingo..j'ai condensé mes lignes de codes, et ça va bien mieux. Pour sortir de la boucle infinie, j'ai declaré un push boutton, qui correspond à ma reconnaissance faciale. Donc dans le principe, si une porte s'ouvre et que la maison etait en mode absence (et d'autres facteurs), la maison passe en mode presence...merci à toi, et à ton site.
bon j'ai suivi tes conseils....et...bingo..j'ai condensé mes lignes de codes, et ça va bien mieux. Pour sortir de la boucle infinie, j'ai declaré un push boutton, qui correspond à ma reconnaissance faciale. Donc dans le principe, si une porte s'ouvre et que la maison etait en mode absence (et d'autres facteurs), la maison passe en mode presence...merci à toi, et à ton site.
JissJisseone
240 Messages
Le dimanche 8 mai 2022 à 18:13:58
je peux faire tourner mon code ( qui est un peu pourri certe...)