Bonjour,
Concernant la commande sleep, dans la prochaine version (v2), je vient de la remplacer par Pause. Pas fâché de me débarrasser de cette fonction qui m’a posée pas mal de pbs. Merci pour l’astuce.
Pour le reste, je verrai plus tard, une fois que le code sera stabilisé sur Windows.
Concernant le bug avec [IPX]Reboot, c’est encore un ancien code qui est passé sous le radar de ma config de test. Je l’ai reproduit et corrigé en partie sur la version publiée hier soir.
Explication : le message « 0.??.Err » est destiné à renseigner la cellule rule. Le format est <ruleRef>.<actionName>. <Error or Not> (not dans le cas des events affecté de l’opérateur Not dans la règle)
Dans le nouveau format le premier point est remplacé par un espace ce qui permet d’afficher directement <ruleRef> <actionName> dans la cellule. L’autre partie, si elle est présente, est dédiée aux erreurs et à la coloration des caractères
Grace à la config que tu m’a envoyée hier soir, j’ai noté le même type de pb pour les événement. C’est corrigé dans la version 2.
Au delà de ces pbs, je pense revoir Function Rule_EventsChecking et Function Rule_ActionsChecking pour qu’un seul problème ne génère qu’une seule erreur, ce qui n’est pas le cas aujourd’hui.
A propos de la config, si ce n’est pas une config de tests ou une erreur dans la collecte de la config, l’IPX est bien malade :
3 variables déclarées comme étant la variable AC détection (65574, 65578,65680)
variables en doublons également pour l’api weather
valeurs d’id invalides dans la partie événement des règles 7 et 8
Le bug est causé par le doublon de la variable Sunrise Day dans la config (id : 327688 et 327694)
Le bug est corrigé en v2 (ça ne plante plus) mais je m’interroge sur le traitement et l’affichage de ce genre de pb.
Si ce pb est très spécifique, je zappe. Si ce problème est symptomatique d’une autre pb plus général et plus fréquent, il faut le traiter et créer une alarme « Doublon ».
Chapeau bas à tous ceux qui ont travaillé sur cet outil
La V5 est bien plus complexe (avec un plus grand nombre de fonctionnalités) que la V4. Je n’ai même pas osé imaginer une version de GCE Configuration Editor compatible, tellement il y a de travail
Je suis toujours aussi étonné par la quantité de travail qu’un petit groupe de passionnés peut fournir
bien d’accord avec toi, chapeau bas à Michel qui pendant plus de 2 ans a bossé sur ce projet, en devant le reprendre à chaque évolution majeure de la V5 (et il y en a eu) sans se décourager.
Et bravo à ceux qui se penchent sur le programme et aident Michel à le perfectionner, gage d’une longue vie pour cet outil, indispensable.
Effectivement d’autant plus que j’avais pas vu que le premier retourne un string alors que le 2d un boolean donc ça peut pas le faire (mais ça aura eu le mérite de montrer l’astuce dev ! ) !
config de test, j’vais vu pour weaher je vais la réinitialiser usine
je pense que c’est spécifique à ma config …mais tu peux implémenter la gestion d’erreur que je t’ai indiqué au cas ou, en l’adaptant si besoin (un msgbox pour l’utilisateur à transmettre au débugeur suivi d’un err.clear peu suffire, le but étant surtout d’éviter le crash du code)
Je pense avoir compris le rôle de ces id invalides : ils seraient liés à des variables appartenant à des éléments qui ont été effacés et indiquerait le type de l’élément effacé. Dans ce cas, ils ne perturberaient pas le fonctionnement de l’Ipx. Si c’est confirmé, je vais gérer cette information en avertissement, comme les no source ou no destination des connecteurs.
Bonne journée
tu peux modifier la gestion d’erreur en ajoutant Erl() (fonction propre vba) cela affichera en plus le numéro de ligne ou l’'erreur s’est produite
sub quelconque ()
On Error GoTo errSub
…
…
Exit Sub
errSub:
Call GestionErr("Erreur sub quelconque ligne : " & Erl() & " # " & Err.Number & " # " & Err.Description & vbCrLf)
Err.Clear
Resume Next
end sub
j’ai retrouvé dans mes placards le module qu’il faut pour la gestion fichier, tu peux l’importer directement en module (c’est du vb6 mais compatible) tu regarde les fonctions qui peuvent remplacer le code problématique dans programme (pour mac il faudra modifier pour ajouter du test conditionnel OS pour les « \ » vers « / »)
On ne parle pas des mêmes erreurs. Il ne s’agit pas d’erreur VBA…
Dans mon propos, je parle d’identifiants contenus dans les listes des events (inputList) et des actions (outputList) des règles qui ne sont ni des identifiants de variable, ni des identifiants de d’opérateurs comme on pourrait s’y attendre. C’est pourquoi, j’ai considéré ces identifiants comme des erreurs (d’où l’alarme invalid Id !). Après avoir vu que ces identifiants correspondaient à la dernière valeur de la plage des identifiants de ressources, je crois avoir compris que ces identifiants ne sont pas là par erreur, mais pour indiquer un type de ressource (la méthode est déjà utilisée par GCE dans les dependencies_id des mqtt pour indiquer le type de variable utilisé). Je pense donc que ces informations sont peut être écrite si l’élément contenant la variable contenue dans la liste est effacée. L’inscription indiquerait le type de ressource parente de la variable qui a été effacée.
Si mon analyse est bonne, je me pose la question si l’information est intéressante à être affichée et sous quelle forme.
Pour le portage sur Mac, ce n’est vraiment pas ma priorité. Je crois avoir lu que l’utilisation de Contrôles Activex était rédhibitoire et l’utilisation des Contrôles formulaire n’est pas adapté (j’ai essayé).
Pour @jmalpoincy, si on regarde son premier message, il semble que sont problème se situe sur la ligne analogChart.Chart.FullSeriesCollection(i).ChartType = xlXYScatterSmoothNoMarkers.
Il ne me semble pas qu’il y ait de dll spécifique à charger pour utiliser les shape.Chart.FullSeriesCollection() . Sa version d’Excel est peut-être trop ancienne.
Bonjour,
Il faut essayer d’utiliser l’objet SeriesCollection plutôt que FullSeriesCollection qui est plus récent, donc certainement inexistant en VBA 2010.
Bonne journée
Bonjour François,
FullSeriesCollection contient toutes les séries, qu’elles soient actives ou non.
SeriesCollection ne contient que les séries actives
Les graphs analogiques et booleen utilisent la même échelle de temps, celle du graph analogique
Les cases à cocher Y1 et Y2 permettent de changer l’échelle, mais aussi de désactiver l’affichage de la série
Si on utilise SeriesCollection et que toutes les voies sont désactivées, c’est la cata.
Dans les premières versions, j’utilisais une neuvième voie pour éviter le phénomène mais le résultat n’était pas probant.
Avec FullSeriesCollection, le résultat est stable…
FullSeries n’est pas retrocompatible car est apparu récemment. Donc les détenteurs d’un excel ancien (2010 ou autres) ne pourront pas exécuter le code. Il n’y a pas de composant, c’est interne à Excel VBA. Chaque nouvelle version Office apporte ses nouveaux objets, méthodes ou propriétés.
Il faut donc utiliser les objets ou méthodes les plus anciens mais maintenus par Microsoft pour être compatible avec le plus grand nombre. C’est toute la difficulté avec une programmation en langage script. Tout le monde n’a pas le même interpréteur.
Le module Graph, qui n’était pas prévu au départ, a été réalisé, un peu par jeu, pour visualiser la consommation de gaz, les températures intérieures et les température extérieures.
Il s’agit d’un module assez indépendant, facilement découplable.
Lorsque j’aurai terminé la révision du contrôle des règles, je tenterai de faire une version sans la partie graphique. Par contre, il est à craindre que ça ne suffise pas et que d’autres fonctions récentes plantent l’Excel 2010.
Quelques améliorations possibles :
« + Add Ipx » ajouter un tests des valeurs des cellules « Ip adress » et « Api Key » si une des deux est vide le bouton ne doit pas ajouter d’Ipx
pour valider l’adresse IP une fonction
code verif ipv4
Function IsValidIPv4(ipAddress As String) As Boolean
' Déclaration des variables
Dim parts() As String
Dim part As Variant
Dim ii As Integer
' Sépare l'adresse IP en parties
parts = Split(ipAddress, ".")
' Vérifie si l'adresse IP a exactement 4 parties
If UBound(parts) <> 3 Then
IsValidIPv4 = False
Exit Function
End If
' Vérifie chaque partie
For ii = LBound(parts) To UBound(parts)
part = parts(ii)
' Vérifie si la partie est un nombre
If Not IsNumeric(part) Then
IsValidIPv4 = False
Exit Function
End If
' Convertit la partie en nombre
Dim partValue As Integer
partValue = CInt(part)
' Vérifie si la partie est dans la plage valide (0-255)
If partValue < 0 Or partValue > 255 Then
IsValidIPv4 = False
Exit Function
End If
' Vérifie si la partie ne contient pas de zéros non significatifs
If part <> CStr(partValue) Then
IsValidIPv4 = False
Exit Function
End If
' Vérifie si le 4ème octet n'est pas 0 ou 255
If ii = 3 And (partValue = 0 Or partValue = 255) Then
IsValidIPv4 = False
Exit Function
End If
Next ii
' Si tout ok alors l'IP est valide
IsValidIPv4 = True
End Function
un appui « Connection test » génére une erreur 75 dans le module « Module_IpxConfig » dnas la fonction CreateOrRenameIpxFolder
la gestion d’erreur peut être plus explicite avec
gestion erreur
err:
response = MsgBox(« Error " & err.Number & vbLf & err.Description, vbOKOnly, « Error »)
CreateOrRenameIpxFolder = destinationName & " (error) »
If err.Number = 75 Then
response = MsgBox(« Error 75: Path/File access error. Please ensure the source path « » » & sourcePath & « »" and destination path « »" & destinationPath & « »" are correct and that you have the necessary permissions.", vbOKOnly, « Error »)
Else
response = MsgBox(« Error " & err.Number & vbLf & err.Description, vbOKOnly, « Error »)
End If
CreateOrRenameIpxFolder = destinationName & " (error) »
Si j’arretes le prog le renommage se fait donc cela vient du prog, si j’ai le temps je chercherais ce soir, car PM c’est plomberie !
Et un message de confirmation de la sauvegarde serait le bienvenue aussi
Private Sub CommandButton_SaveNewXlsmFile_Click()
SaveVersioning
End Sub
dans CommandButton_RemoveIpx_Click de settingSheet ajouter + vbApplicationModal + vbQuestion à vbYesNo force l’affichage du messagebox en avant plan et à y répondre
response = MsgBox(« Remove " & graphSheet.Label_IpxName.Caption & " from IpxBrowser ? », vbYesNo + vbApplicationModal + vbQuestion, « Remove Ipx »)
Bonjour @cce66
J’ai ajouté, dans mon message du post principal, un rappel des consignes :
Je pense qu’il y a une confusion dans l’interprétation de la procédure de déclaration d’un Ipx :
Comme indiqué dans la notice, la création d’un Ipx (et du répertoire correspondant) doit être faite avant de renseigner les données de connexion.
IpxBrowser peut héberger 2 types d’Ipx :
Les « Ipx locaux » auxquels il est possible de se connecter à l’aide des données de connexion. Ces données de connexion doivent être validées par Connection test pour être prises en compte. Connection test valide à la fois l’adresse Ip et l’API Key. Il ne semble donc pas nécessaire d’ajouter code verif ipv4. Voir plus bas les exemples de détection d’erreur par Connection test
Les « Ipx externes » qui sont renseignés uniquement par des fichiers de configuration provenant d’autres IpxBrowser. Pour ces Ipx externes, les données de connexion ne sont pas nécessaires.
Pour info, j’ai dans ma configuration, un Ipx externe nommé cce66 qui contient le fichier de configuration que tu m’a envoyé il y a un mois. J’ai également deux autres Ipx externes, ce qui m’a permis de tester IpxBrowser sur toutes ces configurations.
Si l’on modifie les données de connexion avant d’avoir créé un nouvel Ipx, on modifie les données utilisées pour l’Ipx en cours.
+ Add Ipx a des actions sur l’Ipx en cours : arrêt de l’éventuelle capture en cours, sauvegarde du graphique en cours, mémorisation des dernières commandes dans Selector et Browser. Il efface ensuite d’IpxBrowser toute la configuration de l’ipx en cours et créé la structure du repertoire IPX permettant d’accueillir le nouvel Ipx.
Est-ce que la procédure décrite en « 1 - Installation et paramétrage » de la notice a bien été respectée ?
Deux exemples de détection d’erreurs par Connection test :
Ce bouton fait partie des boutons réservés au développement. Il n’est pas accessible aux utilisateurs. La confirmation est réalisée par l’incrémentation de la version de développement.
Il me semble que par défaut, dans VBA, messageBox est modal.
C’est cela, contre-intuitif pour moi, ca me paraissait plus logique de mettre d’abord les valeurs IP et Apikey puis « +Add Ipx » peut-être qu’une notion « + Add Config » aurait été plus claire…pour moi ! Après une fois qu’on le sait…ou quand on a pas sauté une ligne ou plusieurs lignes de la doc !
Effectivement, de facto, si la connexion échoue c’est qu’il y a un problème ou d’IP ou Apikey… ou d’IPX injoignable ! Mais cela pourrait être plus convivial pour la prochaine version d’avoir
si vérif de la validité de l’ip ok continue sinon affiche msg problème IP sort
si ping de l’IP ok continue sinon affiche msg problème ping sort
si connexion test ok continue sinon affiche msg problème Apikey sort
Autant pour moi, comme j’étais en mode débogage j’avais la fenêtre de code et quand je cliquais dessus juste un glin gling, il fallait que je rebascule sur excel La fatigue sans doute… De plus vbSystemModal étais plus adéquat !
C’est pour cela que, lors de la première installation, si aucun dossier n’est créé, la page Setting est verrouillée et aucune saisie n’est autorisée (si on ne contourne pas la protection ).
Dans la notice c’est indiqué par :
D’autre part, il faut rappeler que dans le cas d’un « Ipx externe », cet Ipx est déclaré sans que les données de connexion soient utilisées.
Dans la logique IpxBrowser :
Un Ipx est un équipement IPX800V5 qui est représenté dans le système IpxBrowser par un répertoire à son nom contenant les différentes évolutions de sa configuration (les fichiers configs) et les graphiques qui ont été tracés à partir de ses variables.
Une configuration est un fichier (ex : Ipx_v5.5.8 24-09-15 (11-44).json) représentant la configuration de l’Ipx à un moment donné.
Le module de validation utilisé par Connection test est un module générique qui est utilisé lors de chaque connexion d’IpxBrowser à un IPX800V5 (connection test, request Api, rafraichissement des variables, set variable, capture pour le module Graph) et qui indique la nature du problème rencontré dans l’indicateur de connexion de façon, à mon avis, assez explicite (voir les deux exemples d’erreurs détectées dans le message précédent). C’est également ce module qui affiche « File config » dans l’indicateur de connexion lorsqu’un Ipx externe est sélectionné ou si la configuration affichée n’est pas celle présente dans IPX800V5 correspondant.
Personnellement, je ne trouve pas d’intérêt à ajouter, spécifiquement ici, des contrôles qui n’apporteront pas une précision supplémentaire (je m’économise… ).
Merci de l’intéret que tu portes à IpxBrowser.
Pour info, comme tu l’avais suggéré, dans cette version, j’ouvre désormais tous les fichier avec des freeFile !
Oui j’ai testé en mettant n’importe quoi et en dehors du message 75 on sait qu’il y a quelque chose qui cloche donc suffit de regarder quoi…et puis c’est pas des lapins de six semaines qui vont s’en servir non plus !
Triple intérêt pour moi
l’ipx
le rafraichissement de ma mémoire du codage vb
et pas mal de trucs que j’ai découvert ou rafraichis sur le vba excel en lisant ton code !
Dès que j’ai plus de temps, je regarderais en profondeur (là je suis bien pris entre du codage bash conséquent et du node-red également)
Faudrait tester sur mac, ca devrait pourvoir marcher maintenant ?
Tu lance et si ça plante, çà permettra de voir si il est possible d’adapter le code pour que cela tourne sous mac !
il y a juste à mettre ces lignes pour traiter les deux cas aux endroits ou ca plante :
If InStr(1, Application.OperatingSystem, "Mac", vbTextCompare) > 0 Then
' code pour mac
ElseIf InStr(1, os, "Windows", vbTextCompare) > 0 Then
' code pour Windows
End If
Mais faut avoir un mac avec excel ! Après @Michel94 pourra voir pour inclure mais si il y a trop de truc à gérer pour le faire tourner sous mac…