mais c’est super ça
Je viens de pousser une beta qui corrige :
- pb type des commandes infos setClosure
- possibilité de déplacer les commandes dans le panel des cammandes des équipements
Bonne soirée à tous et à demain
@chris94440
Et alors tu auras le droit d’avoir ton tag #plugin-somfylocalapi
Mais je viens de voir que tu as déjà sauté le pas : SOMFY LOCAL API
Non ça fait un pti moment qu’il est sur le store mais pas validé encore …
petite question
dans les volets il n’y a pas de refresh (comme dans le plugin klf)… c’est parce que la commande n’existe pas chez somfy
Merci
Hello
Refresh pour faire quoi ?
etre sur que la commande est correctement passé .
avec klf apres 10sec je regarde si la commande a été correctement effectuée
dans le cas de ton plugin ce n’est surement pas utile (je suis en train de migrer mes volets virtuels vers ton plugin)
Je sais pas comment tu gères ta domotique mais avec une app comme Jeedomconnect tu vois en direct l’évolution de ton device
homekit uniquement (pour siri et raccourcis)
par ex le portail ne se met pas a jour rapidement (ouvert/fermé et ce n’est deja pas rapide dans l’app tahoma de somfy).
et souvent dans les scenarios je lance un refresh
Normalement aucun besoin avec ce plugin mais on peut en discuter…là je crois que je pool toutes les secondes
Tu observés une remonte d’information lente ?
Sur volet non
Sur portail oui mais sur l’app TaHoma c’est mauvais aussi pour être honnête
Salut à tous,
@chris94440 , j’ai pas eu le temps ni de tester ton plugins, ni de voir ton codage mais je connais le problème de @stanthewizzard pour l’avoir rencontré en optimisé.
Voici la partie de mon script pour récupérer le portail +/- correctement:
Config:
- Mise à jour des infos générales de tous les périphériques IO: 60sec
- Délai avant d’actualiser les infos suite à une action (Ouverture/Fermeture/Stop): 90sec
Cette config me permet d’avoir un retour d’info 3 à 4 fois dans une période de 2min.
Commande attaché à la fin d’une action:
$url = "https://" .$ip_address. "/enduser-mobile-web/1/enduserAPI/exec/apply";
//Commandes a Envoyer
$commandName = "advancedRefresh";
$parameters = "p1";
Script du Listener:
$url = "https://" .$ip_address. "/enduser-mobile-web/1/enduserAPI/events/" . $Register_Listener_ID ."/fetch";
.
.
.
foreach ($data as &$data_IO_URL) {
$IO_Device_URL = $data_IO_URL["deviceURL"];
$IO_Device = substr($IO_Device_URL, strrpos($IO_Device_URL, "/") + 1); //Recherche la valeur après le dernier dernier slash
if ($data_IO_URL["deviceStates"][0]["name"] == "core:ManufacturerSettingsState") {
switch ($data_IO_URL["deviceStates"][0]["value"]["current_position"]) {
case 51200:
$current_position = 0; //Ferme
break;
case 55303:
$current_position = 25; //Pieton
break;
case 54272:
$current_position = 50; //Ouverture Partiel
break;
case 0:
$current_position = 100; //Ouvert
break;
}
$Device_Data = Jeedom_Ask_Device_Data($ID_Commands);
foreach ($Device_Data as $row) {
if ($row["Somfy_IO_ID"] == $IO_Device) { //Action si le numéro IO est dans la liste des périphériques demandés en paramètre
Update_Into_Jeedom_Device_state($IO_Device,$row["Chemin_Etat"],$current_position);
break;
}
}
}else{
log::add('script', 'debug', "Get_Last_Info OK / No Data Found to Update with 'IO_Device':" . $IO_Device);
}
}
Si toutefois ça peut t’aider a améliorer les choses…
A ta dispo
ton script effectivement est interessant.
Je n’ai mon portail IO que depuis lundi et je n’ai qu’un retours d’etat binaire avec (open/closed)
Merci
Édit: j’ai remarqué qu’en lançant l’app TaHoma (v2) ça forçait l’actualisation du statut portail
Moi le daemon pool les event toutes les secondes alors on est quasi en temps réel …par contre je n exécuté pas la commande advancedrefresh après chaque exécution…je vais regarder pour le faire et qu’elle est son impact
Sans elle tu n’avais pas tous les retour d’état notamment pour les portes de garage c’est bien cela ?
Tu as cette inf, ocore:ManufacturerSettingsState, dans les commandes de te ton équipement ?
COOL
Si je l’ai mais j’ai l’impression que somfy ne renvoit cet etat que si on demande le portail (par leur widget dans l’app ou en ayant la visu sur l’accessoire)
oui cette commande existe
peut etre que c’est la fonction advancedRefresh qui permet cela … je vais voir pour l’implémenter …
PEux tu vider les logs du plugin, actionner ton portail depuis le plugin … attendre un peu et m’envoyer les logs stp
[2023-10-26 10:48:52][INFO] : Client connected to [127.0.0.1:45100]
[2023-10-26 10:48:52][INFO] : Message read from socket: b'{"deviceId":"2363","action":"execCmd","deviceUrl":"io:\/\/1201-4430-6743\/4160700","commandName":"open","parameters":"","name":"open","execId":"18866eaf-67e9-483c-8610-90bd76ee5738","apikey":""}'
[2023-10-26 10:48:52][INFO] : Client disconnected from [127.0.0.1:45100]
[2023-10-26 10:48:52][INFO] : == action execute command ==
[2023-10-26 10:48:52][INFO] : Send to jeedom : {'execIdEvent': '{"deviceId": "2363", "execId": "d399bd5f-26da-441f-be85-171e53568214"}'}
[2023-10-26 10:48:53][INFO] : Send to jeedom : {'eventItem': {'name': 'ExecutionRegisteredEvent', 'execId': 'd399bd5f-26da-441f-be85-171e53568214', 'actions': [{'command': 'open', 'execId': '04b64170-af87-4d70-9e5f-7b0ae61f3e97', 'state': 'INITIALIZED', 'deviceURL': 'io://1201-4430-6743/4160700', 'rank': 0}]}}
[2023-10-26 10:48:53][INFO] : Send to jeedom : {'eventItem': {'name': 'ExecutionStateChangedEvent', 'oldState': 'INITIALIZED', 'execId': 'd399bd5f-26da-441f-be85-171e53568214', 'newState': 'IN_PROGRESS'}}
[2023-10-26 10:48:55][INFO] : Send to jeedom : {'eventItem': {'deviceURL': 'io://1201-4430-6743/4160700', 'deviceStates': [{'type': 11, 'name': 'core:ManufacturerSettingsState', 'value': {'current_position': 54272}}], 'name': 'DeviceStateChangedEvent'}}
[2023-10-26 10:48:55][INFO] : Send to jeedom : {'eventItem': {'deviceURL': 'io://1201-4430-6743/4160700', 'deviceStates': [{'type': 3, 'name': 'core:OpenClosedPedestrianState', 'value': 'unknown'}], 'name': 'DeviceStateChangedEvent'}}
[2023-10-26 10:48:59][INFO] : Client connected to [127.0.0.1:51138]
[2023-10-26 10:48:59][INFO] : Message read from socket: b'{"deviceId":"2363","action":"execCmd","deviceUrl":"io:\/\/1201-4430-6743\/4160700","commandName":"close","parameters":"","name":"close","execId":"d399bd5f-26da-441f-be85-171e53568214","apikey":""}'
[2023-10-26 10:48:59][INFO] : Client disconnected from [127.0.0.1:51138]
[2023-10-26 10:49:00][INFO] : == action execute command ==
[2023-10-26 10:49:00][INFO] : Send to jeedom : {'execIdEvent': '{"deviceId": "2363", "execId": "00ce9090-ee79-40e5-8a08-9efb47344786"}'}
[2023-10-26 10:49:00][INFO] : Send to jeedom : {'eventItem': {'failureType': 'CMDCANCELLED', 'command': {'failureType': 'CMDCANCELLED', 'command': 'open', 'execId': '04b64170-af87-4d70-9e5f-7b0ae61f3e97', 'state': 'FAILED', 'rank': 0, 'deviceURL': 'io://1201-4430-6743/4160700'}, 'execId': 'd399bd5f-26da-441f-be85-171e53568214', 'name': 'CommandExecutionStateChangedEvent', 'state': 'FAILED', 'rank': 0, 'CommandName': 'open', 'deviceURL': 'io://1201-4430-6743/4160700'}}
[2023-10-26 10:49:00][INFO] : Send to jeedom : {'eventItem': {'name': 'ExecutionRegisteredEvent', 'execId': '00ce9090-ee79-40e5-8a08-9efb47344786', 'actions': [{'command': 'close', 'execId': '73db2d00-acb9-4d99-9b4e-47b133dd3880', 'state': 'INITIALIZED', 'deviceURL': 'io://1201-4430-6743/4160700', 'rank': 0}]}}
[2023-10-26 10:49:00][INFO] : Send to jeedom : {'eventItem': {'failureType': 'CMDCANCELLED', 'oldState': 'IN_PROGRESS', 'execId': 'd399bd5f-26da-441f-be85-171e53568214', 'name': 'ExecutionStateChangedEvent', 'newState': 'FAILED'}}
[2023-10-26 10:49:01][INFO] : Send to jeedom : {'eventItem': {'name': 'ExecutionRegisteredEvent', 'execId': '00ce9090-ee79-40e5-8a08-9efb47344786', 'actions': [{'command': 'close', 'execId': '73db2d00-acb9-4d99-9b4e-47b133dd3880', 'state': 'INITIALIZED', 'deviceURL': 'io://1201-4430-6743/4160700', 'rank': 0}]}}
[2023-10-26 10:49:01][INFO] : Send to jeedom : {'eventItem': {'name': 'ExecutionStateChangedEvent', 'oldState': 'INITIALIZED', 'execId': '00ce9090-ee79-40e5-8a08-9efb47344786', 'newState': 'IN_PROGRESS'}}
[2023-10-26 10:49:24][INFO] : Send to jeedom : {'eventItem': {'name': 'ExecutionStateChangedEvent', 'oldState': 'IN_PROGRESS', 'execId': '00ce9090-ee79-40e5-8a08-9efb47344786', 'newState': 'COMPLETED'}}
[2023-10-26 10:49:24][INFO] : Send to jeedom : {'eventItem': {'deviceURL': 'io://1201-4430-6743/4160700', 'deviceStates': [{'type': 11, 'name': 'core:ManufacturerSettingsState', 'value': {'current_position': 51200}}], 'name': 'DeviceStateChangedEvent'}}
[2023-10-26 10:49:24][INFO] : Send to jeedom : {'eventItem': {'deviceURL': 'io://1201-4430-6743/4160700', 'deviceStates': [{'type': 3, 'name': 'core:OpenClosedPedestrianState', 'value': 'closed'}], 'name': 'DeviceStateChangedEvent'}}
Open puis Close
Pour info:
si je reste dans ton plugin
Open
ca passe assez vite en unknown (puisque pas de retours d’etat en pourcentage d’ouverture)
Close
ca met un peu de temps à passer en close
Dans ton plugin le retours d’etat est somme toute assez rapide et parfaitement gérable
Le pb c’est que le unknown doit perturber homebridge
C’est pas ça que je veux … je veux voir les events qui sont récupéré …
vide les logs
Fait un open … attend qu’il soit ouvert
puis fait un close …attend qu’il soit fermé
et envoi moi en MP les logs stp