Stockage variables

Discussions sur l'utilisation et les problèmes rencontrés avec le service et l'interface d'administration

Modérateur: HoMIDoM

Re: Stockage variables

Messagede jacques_dv » 25 FĂ©v 2014, 22:29

Bonsoir Ă  tous,
Pour ceux que cela intéresse, en adaptant le petit programme ci-dessus de pchatill (que je remercie au passage), j'ai pu récupérer les valeurs mesurées par des modules Plugwise et les passer dans des composants Homidom. Les modules Circle de Plugwise permettent en effet de commander des interrupteurs (on/off,...) et de mesurer la consommation via, entre autres, leur programme "Source". Ces modules sont aussi accessibles via une commande http (à mettre simplement dans une macro) du style :
http://adresse_ip:port/api/actionsjdvEx ... chon&id=12 (switch on id 12) mais on peut aussi lire la puissance instantanée par
http://adresse_ip:port/api/actionsjdvEx ... n=get&id=3 (lecture de l'id 3) et écrire le résultat dans le fichier 'plugwiseval.csv'
après avoir créer 'actionsjdvExp.html' avec le code suivant :
----------------------
<%
if Request.get["option"] =="switchoff"
Plugwise.Appliances[Request.get["id"]].SwitchOff()
/if
if Request.get["option"] =="get"
$a=Plugwise.Appliances[Request.get["id"]].powerusage
$pathName = "D:\my documents\Domo\Homidom\plugwiseval.csv";
$writeArray = {};
$emptyArray = {};
if File.Exists($pathName) == False
File.Write($pathName, $emptyArray);
else
$writeArray = File.Read($pathName);
/if
$writeArray = {$a};
$output = File.Write($pathName, $writeArray);
/if
if Request.get["option"] =="switchon"
Plugwise.Appliances[Request.get["id"]].SwitchOn()
/if
%>
-------------------------
Il suffit alors de récupérer cette valeur par le script VB ci-dessous à mettre dans la macro.
-----------------------------
Imports System
Imports System.IO
Imports System.Windows.Forms
Imports Microsoft.VisualBasic
Imports Homidom
Namespace Dynam
'Ne pas supprimer cette class
Public Class DynamicCode

'Ne pas supprimer cette function
Public Function ExecuteCode(paramarray prmParameters() as object) as object
Dim Serveur as Homidom.Homidom.server
Serveur=prmParameters(0)

Dim value As String = My.Computer.FileSystem.ReadAllText("D:\my documents\Domo\Homidom\plugwiseval.csv")
Serveur.ChangeValueOfDevice("123456789","device_id",value)

End function

Public Function ReadAllText( _
ByVal file As String _
) As String
End function

End class
End Namespace
---------------------------

Tout cela peut être commandé par un trigger qui lance toutes les minutes, par exemple, une macro contenant les 2 actions.
Il y a peut-être plus simple pour intégrer Plugwise dans Homidom (je ne suis pas spécialiste en visual basic) mais cela fonctionne.

Bonne soirée
jacques_dv
Membre Actif
 
Messages: 48
Inscription: 07 DĂ©c 2013, 00:18

Re: Stockage variables

Messagede PAT5659 » 06 Mar 2015, 14:51

Bonjour,

David ou Pchatill

je remonte des infos de mon serveur php en txt vers excel et cela fonctionne tres bien, aussi je voulais faire le meme le processus avec Homidom avec une adaptation de ton code Pchatill mais je n'y arrive pas et j'ai l'erreur suivante:

06/03/2015 14:46:01 ERREUR SERVEUR ThreadAction Execute Exception: System.IO.FileNotFoundException: Impossible de charger le fichier ou l'assembly 'NCalc, Version=1.3.8.0, Culture=neutral, PublicKeyToken=973cde3f1cafed03' ou une de ses dépendances. Le fichier spécifié est introuvable.

Nom de fichier : 'NCalc, Version=1.3.8.0, Culture=neutral, PublicKeyToken=973cde3f1cafed03'

Ă  HoMIDom.HoMIDom.ThreadAction.Decodestring(String texte)

Ă  HoMIDom.HoMIDom.ThreadAction.Execute()



AVT : la journalisation de liaison d'assembly est désactivée.

Pour activer la journalisation des Ă©checs de liaison d'assembly, attribuez la valeur 1 Ă  la valeur de Registre [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD).

Remarque : une certaine perte de performance est associée à l'enregistrement dans le journal des échecs de liaison d'assembly.

Pour désactiver cette fonctionnalité, supprimez la valeur de Registre [HKLM\Software\Microsoft\Fusion!EnableLog].

voici mon code!

mports System
Imports System.IO
Imports System.Windows.Forms
Imports Microsoft.VisualBasic
Imports Homidom
Namespace Dynam
'Ne pas supprimer cette class
Public Class DynamicCode

'Ne pas supprimer cette function
Public Function ExecuteCode(paramarray prmParameters() as object) as object
Dim Serveur as Homidom.Homidom.server
Serveur=prmParameters(0)

Dim value As String = My.Computer.FileSystem.ReadAllText("D:\test.txt")
Serveur.ChangeValueOfDevice("123456789","dd8764ac-2326-4c97-8504-1425a9011a48",value)

End function

Public Function ReadAllText( _
ByVal file As String _
) As String
End function

merci pour le coup de main

Pat
Sysyème domotique:Homidom,Homiwpf,Sarah,
2 Arduino méga avec expandeurs MCP23017 , arduino dueminalove,système chauffage Deltadore
5 sondes de température Dallas sur bus Onwire ,téléinformation , 8 modules 16 E/S sur bus I2C
8 commandes volets roulants piloté en RF433 (fabrication maison)
15 commandes Ă©clairage
Esp8266 01 Esp8266 12 ,sondes Lacrosse V2
Impérihome,Rflink
PAT5659
P'tit Dieu de domotique
 
Messages: 152
Inscription: 22 Sep 2014, 08:22

Re: Stockage variables

Messagede PAT5659 » 06 Mar 2015, 14:55

ereur copier collé
voici le code en entier:



mports System
Imports System.IO
Imports System.Windows.Forms
Imports Microsoft.VisualBasic
Imports Homidom
Namespace Dynam
'Ne pas supprimer cette class
Public Class DynamicCode

'Ne pas supprimer cette function
Public Function ExecuteCode(paramarray prmParameters() as object) as object
Dim Serveur as Homidom.Homidom.server
Serveur=prmParameters(0)

Dim value As String = My.Computer.FileSystem.ReadAllText("D:\test.txt")
Serveur.ChangeValueOfDevice("123456789","dd8764ac-2326-4c97-8504-1425a9011a48",value)

End function

Public Function ReadAllText( _
ByVal file As String _
) As String
End function

End class
End Namespace
Sysyème domotique:Homidom,Homiwpf,Sarah,
2 Arduino méga avec expandeurs MCP23017 , arduino dueminalove,système chauffage Deltadore
5 sondes de température Dallas sur bus Onwire ,téléinformation , 8 modules 16 E/S sur bus I2C
8 commandes volets roulants piloté en RF433 (fabrication maison)
15 commandes Ă©clairage
Esp8266 01 Esp8266 12 ,sondes Lacrosse V2
Impérihome,Rflink
PAT5659
P'tit Dieu de domotique
 
Messages: 152
Inscription: 22 Sep 2014, 08:22

Re: Stockage variables

Messagede PAT5659 » 06 Mar 2015, 15:45

En fait l'erreur provient de la dernière homidom.ddl du 6/03/2015 mais aussi celle du 24/02 également j'ai donc remis celle du 24/11/2014 mais j'ai un autre souci:
06/03/2015 15:42:30 DEBUG SERVEUR TriggerTimer Lancement de la macro: test variable ,suite au déclenchement du trigger: iinst
06/03/2015 15:42:30 ERREUR SCRIPT ExecuteScript Erreur lors de l'execution du script: Line>3, DĂ©claration attendue.
Sysyème domotique:Homidom,Homiwpf,Sarah,
2 Arduino méga avec expandeurs MCP23017 , arduino dueminalove,système chauffage Deltadore
5 sondes de température Dallas sur bus Onwire ,téléinformation , 8 modules 16 E/S sur bus I2C
8 commandes volets roulants piloté en RF433 (fabrication maison)
15 commandes Ă©clairage
Esp8266 01 Esp8266 12 ,sondes Lacrosse V2
Impérihome,Rflink
PAT5659
P'tit Dieu de domotique
 
Messages: 152
Inscription: 22 Sep 2014, 08:22

Re: Stockage variables

Messagede davidinfo » 06 Mar 2015, 15:47

l'erreur avec ncalc.dll ne vient pas de ton script mais de la nouvelle dll.
récupère ncalc.dll et met le à la racine du dossier homidom depuis les dll_externes

ensuite refait ton test
HoMIDoM- Le système complet et gratuit de domotique pour la maison (Domos)
Avatar de l’utilisateur
davidinfo
Dieu de domotique
 
Messages: 1514
Inscription: 19 Oct 2008, 22:49
Localisation: Algrange (57)

Re: Stockage variables

Messagede PAT5659 » 06 Mar 2015, 16:59

Super David cela fonctionne !

en mettant la valeur de ma variable dans mon fichier texte!

Merci beaucoup


Par contre mon log PHP remonte plusieurs valeurs ! ex:

DĂ©butOPTARIF=HC..
BASE=15032045
HCHC=7897358
HCHP=8750730
PTEC=HP..
PAPP=0
IINST=0

Peut on définir dans le sript VB la variable a remonter ?
Sysyème domotique:Homidom,Homiwpf,Sarah,
2 Arduino méga avec expandeurs MCP23017 , arduino dueminalove,système chauffage Deltadore
5 sondes de température Dallas sur bus Onwire ,téléinformation , 8 modules 16 E/S sur bus I2C
8 commandes volets roulants piloté en RF433 (fabrication maison)
15 commandes Ă©clairage
Esp8266 01 Esp8266 12 ,sondes Lacrosse V2
Impérihome,Rflink
PAT5659
P'tit Dieu de domotique
 
Messages: 152
Inscription: 22 Sep 2014, 08:22

Re: Stockage variables

Messagede davidinfo » 06 Mar 2015, 22:25

Tu peux utiliser un code de ce style

FileText = My.Computer.FileSystem.ReadAllText(File)
lines = FileText.Split(Environment.NewLine, StringSplitOptions.RemoveEmptyEntries)
While x < lines.Length()
If lines(x).Contains("HCHC") Then
Serveur.ChangeValueOfDevice("123456789","dd8764ac-2326-4c97-8504-1425a9011a48",lines(x).substring(6)) 'pour extraire la valeur de la ligne Ă  partir du 6eme caractere (pour enlever "HCHC=")
End If
NewText = NewText & lines(x) & Environment.NewLine
x = x + 1
End While
HoMIDoM- Le système complet et gratuit de domotique pour la maison (Domos)
Avatar de l’utilisateur
davidinfo
Dieu de domotique
 
Messages: 1514
Inscription: 19 Oct 2008, 22:49
Localisation: Algrange (57)

Re: Stockage variables

Messagede PAT5659 » 07 Mar 2015, 11:45

Salut David

Merci pour ce code mais j'ai l'erreur suivante :
07/03/2015 11:34:30 ERREUR SCRIPT ExecuteScript Erreur lors de l'execution du script: Line>17, 'FileText' n'est pas déclaré. Il peut être inaccessible en raison de son niveau de protection.
voici mon code qui a surement des erreurs !

Imports System
Imports System.IO
Imports System.Windows.Forms
Imports Microsoft.VisualBasic
Imports Homidom
Namespace Dynam
'Ne pas supprimer cette class
Public Class DynamicCode

'Ne pas supprimer cette function
Public Function ExecuteCode(paramarray prmParameters() as object) as object
Dim Serveur as Homidom.Homidom.server
Serveur=prmParameters(0)


'Dim value As String = My.Computer.FileSystem.ReadAllText("D:\test.txt")
FileText =My.Computer.FileSystem.ReadAllText("D:\test.txt")
lines = FileText.Split(Environment.NewLine, StringSplitOptions.RemoveEmptyEntries)
While x < lines.Length()
If lines(x).Contains("HCHC") Then
Serveur.ChangeValueOfDevice("123456789","dd8764ac-2326-4c97-8504-1425a9011a48",lines(x).substring(6)) 'pour extraire la valeur de la ligne Ă  partir du 6eme caractere (pour enlever "HCHC=")
End If
NewText = NewText & lines(x) & Environment.NewLine
x = x + 1
End While



End function

Public Function ReadAllText( _
ByVal file As String _
) As String
End function

End class
End Namespace
Sysyème domotique:Homidom,Homiwpf,Sarah,
2 Arduino méga avec expandeurs MCP23017 , arduino dueminalove,système chauffage Deltadore
5 sondes de température Dallas sur bus Onwire ,téléinformation , 8 modules 16 E/S sur bus I2C
8 commandes volets roulants piloté en RF433 (fabrication maison)
15 commandes Ă©clairage
Esp8266 01 Esp8266 12 ,sondes Lacrosse V2
Impérihome,Rflink
PAT5659
P'tit Dieu de domotique
 
Messages: 152
Inscription: 22 Sep 2014, 08:22

Re: Stockage variables

Messagede PAT5659 » 07 Mar 2015, 12:12

j'ai oublié de préciser que le fichier généré . txt est sur une seule ligne

OPTARIF=HC..BASE=15032045HCHC=7897358HCHP=8753759PTEC=HP..PAPP=0IINST=0
Sysyème domotique:Homidom,Homiwpf,Sarah,
2 Arduino méga avec expandeurs MCP23017 , arduino dueminalove,système chauffage Deltadore
5 sondes de température Dallas sur bus Onwire ,téléinformation , 8 modules 16 E/S sur bus I2C
8 commandes volets roulants piloté en RF433 (fabrication maison)
15 commandes Ă©clairage
Esp8266 01 Esp8266 12 ,sondes Lacrosse V2
Impérihome,Rflink
PAT5659
P'tit Dieu de domotique
 
Messages: 152
Inscription: 22 Sep 2014, 08:22

Re: Stockage variables

Messagede PAT5659 » 08 Mar 2015, 12:17

bonjour David

j 'ai corrigé quelques oublis dans mon code , mais hélas ! le VB et moi ça fait 2!! j 'ai maintenant l'erreur suivante
:ERREUR SCRIPT ExecuteScript Erreur lors de l'execution du script: Line>31, La fonction 'ExecuteCode' ne retourne pas une valeur pour tous les chemins de code. Une exception de référence null peut se produire au moment de l'exécution lorsque le résultat est utilisé.



Imports System
Imports System.IO
Imports System.Windows.Forms
Imports Microsoft.VisualBasic
Imports Homidom
Namespace Dynam
'Ne pas supprimer cette class
Public Class DynamicCode

'Ne pas supprimer cette function
Public Function ExecuteCode(paramarray prmParameters() as object) as object
Dim Serveur as Homidom.Homidom.server
Serveur=prmParameters(0)



Dim FileText =My.Computer.FileSystem.ReadAllText("D:\test.txt")
Dim lines = FileText.Split(Environment.NewLine, StringSplitOptions.RemoveEmptyEntries)
While 1< lines.Length()
If lines(1).Contains("IINST") Then
Serveur.ChangeValueOfDevice("123456789","dd8764ac-2326-4c97-8504-1425a9011a48",lines(1).substring(7)) 'pour extraire la valeur de la ligne Ă  partir du 7eme caractere (pour enlever "IINST=")

End If

End While


End function

Public Function ReadAllText( _
ByVal file As FileText _
) As FileText

End function

End class
End Namespace

voila si ont peut m'aider!
Merci par avance

v
Sysyème domotique:Homidom,Homiwpf,Sarah,
2 Arduino méga avec expandeurs MCP23017 , arduino dueminalove,système chauffage Deltadore
5 sondes de température Dallas sur bus Onwire ,téléinformation , 8 modules 16 E/S sur bus I2C
8 commandes volets roulants piloté en RF433 (fabrication maison)
15 commandes Ă©clairage
Esp8266 01 Esp8266 12 ,sondes Lacrosse V2
Impérihome,Rflink
PAT5659
P'tit Dieu de domotique
 
Messages: 152
Inscription: 22 Sep 2014, 08:22

Re: Stockage variables

Messagede davidinfo » 08 Mar 2015, 23:03

Le fait que tout soit renvoyé sur une seule ligne change complétement la donne en fait :(
Il n'y a aucun moyen de modifier la création de ce fichier pour soit mettre une info par ligne, soit ajouté un séparateur ? ça serait plus propre.
Sinon pour ton code, pourquoi avoir "Public Function ReadAllText( ByVal file As FileText ) As FileText End function" ? car normalement c'est une fonction du système donc la ce n'est pas bon... car en gros tu réécris une fonction du systéme pour y mettre rien du tout, du coup, quand tu fais un readalltext du fichier, ça ne te renvoie rien et derrière le traitement plante.

Sinon si on reste sur le principe d'avoir tout sur la mĂŞme ligne, il faut :
- que tu cherches le type de valeur que tu veux récupérer comme "HCHC" par ex pour avoir sa position,
- tu recherches aussi le terme d'aprés "HCHP" par ex pour avoir sa position
- ensuite, tu fais un substr à partir de la position trouvée et de longueur "position de HCHP - position de HCHC" pour n'avoir plus que "HCHC=7897358"
- la tu fais juste un substr Ă  partir du 6eme caractere par ex.
Bon cette solution n'est pas très propre mais au moins elle marche sans trop s’embêter :)
HoMIDoM- Le système complet et gratuit de domotique pour la maison (Domos)
Avatar de l’utilisateur
davidinfo
Dieu de domotique
 
Messages: 1514
Inscription: 19 Oct 2008, 22:49
Localisation: Algrange (57)

Re: Stockage variables

Messagede PAT5659 » 09 Mar 2015, 10:02

Salut David

le fichier texte est généré automatiquement par un fichier PHP avec fopen qui m'indique la mise a jour réelle de ma base de donnée suite a l'instruction "GET Arduino" et je ne vois pas comment le modifier!

en ce qui concerne le script VB , je t'avoue que je suis dans le brouillard ! car mes connaissances dans ce domaine sont plus que limitées !j'ai essayé des tas de fonctions pour la manipulation des chaines de caractères ! mais hélas!
toujours plein d'erreurs!
voici mon dernier script:

Imports System
Imports System.IO
Imports System.Windows.Forms
Imports Microsoft.VisualBasic
Imports Homidom
Namespace Dynam
'Ne pas supprimer cette class
Public Class DynamicCode

'Ne pas supprimer cette function
Public Function ExecuteCode(paramarray prmParameters() as object) as object
Dim Serveur as Homidom.Homidom.server
Serveur=prmParameters(0)


Dim FileText =My.Computer.FileSystem.ReadAllText("D:\test.txt")
Dim lines = FileText.Split(Environment.NewLine, StringSplitOptions.RemoveEmptyEntries)
While 1 < lines.Length()

If lines(1).Contains("IINST") Then
Serveur.ChangeValueOfDevice("123456789","dd8764ac-2326-4c97-8504-1425a9011a48",lines().substring(7)) 'pour extraire la valeur de la ligne Ă  partir du 7eme caractere (pour enlever "IINST=")
End if
End While


End function

End class
End Namespace



je sais qu'il manque plein de choses notamment les recherches de valeurs et de positions mais je ne sais comment faire!

voila si tu pouvais corriger cela ce serait sympa!

je te remercie pour ton aide!
Pat
Sysyème domotique:Homidom,Homiwpf,Sarah,
2 Arduino méga avec expandeurs MCP23017 , arduino dueminalove,système chauffage Deltadore
5 sondes de température Dallas sur bus Onwire ,téléinformation , 8 modules 16 E/S sur bus I2C
8 commandes volets roulants piloté en RF433 (fabrication maison)
15 commandes Ă©clairage
Esp8266 01 Esp8266 12 ,sondes Lacrosse V2
Impérihome,Rflink
PAT5659
P'tit Dieu de domotique
 
Messages: 152
Inscription: 22 Sep 2014, 08:22

PrécédenteSuivante

Retourner vers Service et Interface HoMIAdmiN

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

Copyright © 2011 - Touteladomotique.com - Tous droits rĂ©servĂ©s
Les blogs partenaires : Abavala, Domo-Blog, Domotique34, Maison et Domotique