Contrôler sa VMC StorkAir / ComfoAir / zehnder via sa domotique

( dans

» Electricité » Domotique

)
Chercher:    

Contrôler sa VMC StorkAir / ComfoAir / zehnder via sa domotique

- Page 19
Page 19 sur 68 Première page - Résultats 1 à 20 sur 1 354 Page precedente 91718 19 202129 Page suivante Dernière page - Résultats 1 341 à 1 354 sur 1 354


01/04/2015 Vieux  
 
  45 ans, Brabant Wallon
  sebcbien est connecté maintenant
Non, je change de vitesse, pas la vitesse.
Moins souple mais plus safe... je pense qu'écrire dans l'eeprom de la VMC 20X par jour n'est pas le mieux pour sa longévité...

Voici les règles:
if CO2_Max_Value_Local < 650 or House_Mode == "Away" then
speedwrite = "0"
fibaro:setGlobal("VMC_Speed", "Absent")
VMC_Speed = "Absent"
end
if ((CO2_Max_Value_Local > 650) and (CO2_Max_Value_Local <1000)) then
speedwrite = "1"
fibaro:setGlobal("VMC_Speed", "Lente")
VMC_Speed = "Lente"
end
if ((CO2_Max_Value_Local > 1000) and (CO2_Max_Value_Local <1600)) then
speedwrite = "2"
fibaro:setGlobal("VMC_Speed", "Normale")
VMC_Speed = "Normale"
end
if CO2_Max_Value_Local > 1600 then
speedwrite = "3"
fibaro:setGlobal("VMC_Speed", "Rapide")
VMC_Speed = "Rapide"
end

Dernière modification par sebcbien 01/04/2015 à 12h10.
01/04/2015 Vieux  
 
  45 ans, Brabant Wallon
  sebcbien est connecté maintenant
Citation:
Posté par jcoenen Voir le message
11 minutes Crottes !!!
Pour écrire le script en Python ?

Oublie, j'ai compris...

Dernière modification par sebcbien 01/04/2015 à 12h12.
01/04/2015 Vieux  
 
  56 ans, Liège
 
Citation:
Posté par sebcbien Voir le message
Pour écrire le script en Python ?


ok pour le changement de vitesse [0,1,2,3] ...


Bon ça avance bien, en gros:

Le client qui va essayer d'envoyer une demande par seconde

#!/usr/bin/python

import socket
import sys
import time
import binascii
import re
import math
from VMC import VMC

# Create a TCP/IP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Connect the socket to the port where the server is listening
server_address = ('localhost', 10000)
print >>sys.stderr, 'connecting to %s port %s' % server_address
sock.connect(server_address)

RFrame = re.compile(b'(.{4})(.{2})(.+)')

commands = [ b'\x0f',b'\x69',b'\xd1' ]

try:

# Send data
for cmd in commands:
print >>sys.stderr, 'sending ', binascii.hexlify(cmd)
frame = VMC(cmd)
sock.sendall(binascii.hexlify(frame.FullFrame()))
time.sleep(1)

# Look for the response
amount_received = 0

data = sock.recv(64)
result = RFrame.findall(data)
sum = 173
hexframe = binascii.a2b_hex(data)
rcvd = VMC(hexframe)
print 'Checksum in frame ', ord(rcvd.ck), ord(rcvd.Checksum())
print >>sys.stderr, 'received "%s"' % data
print result
finally:
print >>sys.stderr, 'closing socket'
sock.close()


et le server lui répond quand il a la réponse de la VMC, voici un run du client.

pi@raspdomo ~ $ ./client.py
connecting to localhost port 10000
sending 0f
Checksum in frame 230 230
received "0010043d525145e6"
[('0010', '04', '3d525145e6')]
sending 69
Checksum in frame 85 85
received "006a0d0314204341333530206c75786555"
[('006a', '0d', '0314204341333530206c75786555')]
sending d1
Checksum in frame 12 12
received "00d209503d5251450f0000000c"
[('00d2', '09', '503d5251450f0000000c')]
closing socket


Maintenant il faut décoder les trames de réponse.
01/04/2015 Vieux  
 
  45 ans, Brabant Wallon
  sebcbien est connecté maintenant
Donc maintenant, avec deux demandes simulténées, il n'y aura plus de télescopage ?bardaf c'est l'embardée)
01/04/2015 Vieux  
 
  56 ans, Liège
 
Citation:
Posté par sebcbien Voir le message
Donc maintenant, avec deux demandes simulténées, il n'y aura plus de télescopage ?bardaf c'est l'embardée)

Non le principle est le suivant:

Le server se réserve l'accès au port série.

Le server reçoit une demande d'un client et il met en file d'attente la demande avec le nom du client.

Si le port série est prêt à ête utilisé en write il vérifie qu'aucune demande est pending et il envoit la demande suivante sinon il attend.

Si des données sont en attente de lecture sur le port il lit les données et les envoit au client correspondant au dernier message envoyé et libère le pending.

Le mécanisme permet de sérialiser les demandes et de patienter le temps que la VMC réponde. Maintenant faut faire gaffe de pas perdre la synchro entre les requêtes entrante et les réponses.

Voici les timings entre le moment ou le client envoi la demande et le moment ou il reçoit la réponse du server (single client), grosse modo 2 secondes

pi@raspdomo ~ $ ./client.py
connecting to localhost port 10000
sending 0f
measured time 2.03692817688
<_sre.SRE_Match object at 0xb6ce1570>
received frame type: 10 Payload
[('0010', '04', '3d525144e5')]
sending 69
measured time 2.04756903648
<_sre.SRE_Match object at 0xb6ce1750>
received frame type: 6a Payload
[('006a', '0d', '0314204341333530206c75786555')]
sending d1
measured time 2.04280400276
<_sre.SRE_Match object at 0xb6ce1570>
received frame type: d2 Payload
[('00d2', '09', '503d5251440f0000000b')]
closing socket


Et avec 3 client en même temps, cela dépend de l'ordre d'arrivée de trames dans le server, mais cela reste acceptable.

pi@raspdomo ~ $ ./client.py
connecting to localhost port 10000
sending 0f
measured time 7.06472706795
<_sre.SRE_Match object at 0xb6cb0570>
received frame type: 10 Payload
[('0010', '04', '3d525144e5')]
sending 69
measured time 6.12460112572
<_sre.SRE_Match object at 0xb6cb0750>
received frame type: 6a Payload
[('006a', '0d', '0314204341333530206c75786555')]
sending d1
measured time 4.0945250988
<_sre.SRE_Match object at 0xb6cb0570>
received frame type: d2 Payload
[('00d2', '09', '503d5251440f0000000b')]
closing socket
01/04/2015 Vieux  
 
  45 ans, Brabant Wallon
  sebcbien est connecté maintenant
nickel,

Pour moi en tout cas, quelques secondes, ça n'aura pas d'impact (je pense)
La génération du json est quasi instantanée après non ?
01/04/2015 Vieux  
 
  56 ans, Liège
 
Citation:
Posté par sebcbien Voir le message
nickel,

Pour moi en tout cas, quelques secondes, ça n'aura pas d'impact (je pense)
La génération du json est quasi instantanée après non ?
Donnes moi 10 minutes ;)
01/04/2015 Vieux  
 
  45 ans, Brabant Wallon
  sebcbien est connecté maintenant
-50 lààààà
01/04/2015 Vieux  
 
  56 ans, Liège
 
pi@raspdomo ~ $ ./client.py
connecting to localhost port 10000
sending 0b measured time 2.03609991074 sec {}
{
"IN": 40,
"INrpm": 1251,
"OUT": 45,
"OUTrpm": 1386
}
sending 69 measured time 2.0456829071 sec Firmware 3 . 20 beta Device : CA350 luxe
{}
{
"IN": 40,
"INrpm": 1251,
"OUT": 45,
"OUTrpm": 1386
}
sending 0f measured time 2.0376598835 sec {
"T1": 12,
"T2": 21,
"T3": 20,
"T4": 15
}
{
"IN": 40,
"INrpm": 1251,
"OUT": 45,
"OUTrpm": 1386
}
sending d1 measured time 2.04317712784 sec {
"T0": 20,
"T1": 12,
"T2": 21,
"T3": 20,
"T4": 15
}
{
"IN": 40,
"INrpm": 1251,
"OUT": 45,
"OUTrpm": 1386
}
closing socket


NA !
01/04/2015 Vieux  
 
  56 ans, Liège
 
état des lieux:

Les commandes de lecture de températures (0f et d1), d'utilisation (filtre ...), de vitesse de ventilateurs et du device name/firmware sont encodées, la sortie se fait en json. Le principe d'appel est le suivant:

Le serveur ne fait que recevoir et envoyer les frames vers les client et la VMC, il prend en charge les ACK du protocole par contre.

Le client quant a lui se connecte via TCP/IP sur le serveur et lui balance les frames a envoyer via la connection sans autre forme de procès, ceci se fait en deux lignes en utilisant la librairie VMC où se trouve le moteur de protocole.

la commande a envoyer se trouve dans cmd (par exemple '\x0f'), a priori ceci peut être intégré dans un appel plus parlant (du genre get_temp())


frame = VMC(cmd)
sock.sendall(binascii.hexlify(frame.FullFrame()))


La lecture des valeurs lues:

data = sock.recv(64)
result = RFrame.findall(data) /cherche la trame dans le message
rcvd = VMC(binascii.a2b_hex(data)) /effectue le processing de la trame

et pour sortir les valeurs:

print json.dumps(rcvd.objet,sort_keys=True,indent=4)


Le résultat du bazar

pi@raspdomo ~ $ ./client.py
connecting to localhost port 10000
sending command: 0b measured time 2.03427505493 sec
sending command: 69 measured time 2.04554200172 sec
sending command: 0f measured time 2.03738689423 sec
sending command: d1 measured time 2.04143404961 sec
sending command: dd measured time 2.05409908295 sec
{
"SW_VMC": {
"Device": "CA350 luxe",
"version": "3.20"
},
"data": {
"temperature": {
"Tairneuf": 12.0,
"Tconfort": 20.0,
"Textrait": 14.0,
"Trepris": 20.0,
"Tsoufflage": 20.0
},
"ventilateurs": {
"extraitpourcent": 45,
"extraitrpm": 1370,
"soufflagepourcent": 40,
"soufflagerpm": 1250
}
},
"usage": {
"absent": 9241,
"antigel": 0,
"bypass": 11238,
"filtres": 3304,
"prechauffe": 0,
"vitesse1": 26110,
"vitesse2": 25,
"vitesse3": 0
}
}
closing socket
01/04/2015 Vieux  
 
  45 ans, Brabant Wallon
  sebcbien est connecté maintenant
ça a l'air bien tout ça....

on approche de la RC1 ?
01/04/2015 Vieux  
 
  56 ans, Liège
 
Citation:
Posté par sebcbien Voir le message
ça a l'air bien tout ça....

on approche de la RC1 ?
Lentement mais suuuurrement.

Bon alors dis moi qu'utilises tu avec ton système ?

Je suppose que tu fais un appel vers le serveur http du genre

http://raspi/cgi-bin/VMCbinjson.cgi
et
http://rasspi/cgi-bin/VMCsetspeed.cgi?speed=x

Est-ce tout ?
02/04/2015 Vieux  
 
  56 ans, Liège
 
Rectification

Les timing de 2 secondes entre la commande et la réponse étaient liés à un timeout de 2 secondes dans la configuration du port série. Une fois celui ci réduit a 0,05 secondes, voici les chiffres:

Soit 100 ms, ce qui est nettement mieux.

pi@raspdomo ~ $ ./client.py
connecting to localhost port 10000
sending command: 0b measured time 0.0835349559784 sec
sending command: 69 measured time 0.0953261852264 sec
sending command: 0f measured time 0.0851221084595 sec
sending command: d1 measured time 0.091216802597 sec
sending command: dd measured time 0.102792024612 sec
sending command: df measured time 0.0894169807434 sec
sending command: d5 measured time 0.0927321910858 sec
{
"SW_VMC": {
"Device": "CA350 luxe",
"version": "3.20"
},
"config": {
"bypass": "present",
"confofond": "absent",
"enthalpie": "absent",
"prechauffage": "present",
"taille": "undef",
"type": "undef"
},
"data": {
"bypass": {
"correction": 5,
"facteur": 5,
"mode": "hiver",
"periode": 0
},
"temperature": {
"Tairneuf": 12.0,
"Tconfort": 20.0,
"Textrait": 17.0,
"Trepris": 21.0,
"Tsoufflage": 20.0
},
"ventilateurs": {
"extraitpourcent": 15,
"extraitrpm": 532,
"soufflagepourcent": 15,
"soufflagerpm": 557
}
},
"usage": {
"absent": 9243,
"antigel": 0,
"bypass": 11238,
"filtres": 3321,
"prechauffe": 0,
"vitesse1": 26126,
"vitesse2": 25,
"vitesse3": 0
}
}
closing socket
02/04/2015 Vieux  
 
  45 ans, Brabant Wallon
  sebcbien est connecté maintenant
100ms !!! 20X mieux, je vais pas m'en plaindre, alaizzz :D

Pour le moment, j'ai ceci: IP_RASPBERRY/cgi-bin/VMCbinjson.cgi

Qui renvoie ce json:

{"config":{"comfofond":"absent","enthalpie":"sa ns capteur","prechauffage":"absent","actif":{"P96":0, "P17":0,"P95":0,"P12":0,"P90":0,"P16":0,"P91":0,"P 10":0,"P15":0,"P11":0,"P18":0,"P93":0,"P19":0,"P13 ":0,"P94":0,"P14":0,"P92":0},"bypass":"present","t aille":"undef","ventilateurs":{"extraction":{"vite sse1":32,"actuel":15,"vitesse3":70,"vitesse2":40," absent":15},"extrationetat":"actif","admission":{" vitesse1":32,"actuel":15,"vitesse3":70,"vitesse2": 40,"absent":15},"vitesse":1},"type":"undef","optio n":{"hotte":"absent","chauffage":"absent","incendi e":"absent"},"timers":{"ventilationchoc":30,"compt eurfiltre":26,"L1arret":0,"hottearret":0,"SDB":{"a rret":30,"depart":0},"hautecourt":10,"hautelong":3 0}},"data":{"usage":{"filtres":964,"vitesse3":0,"v itesse2":5003,"absent":1546,"vitesse1":4007,"prech auffe":0,"antigel":41,"bypass":2893},"etatswitches ":{"L2":"OFF","hotte":"OFF","SDB":"OFF","SDBluxe": "OFF","L1":"OFF"},"bypass":{"correction":0,"period e":0,"mode":"Hiver","facteur":0},"ventilateurs":{" soufflagepourcent":15,"extraitpourcent":15,"extrai trpm":487.266112266112,"soufflagerpm":533.57996585 0882},"valvesetat":{"courantmoteurbypass":0,"prech auf":"Inconnu","courantmoteurprechauf":0,"bypass": 0},"temperature":{"Textrait":13,"Tconfort":24,"Tai rneuf":12.5,"Trepris":21.5,"Tsoufflage":21}},"devi ce":{"name":"WHR 960 ","firmware":"6032"}}

Et ceci:

IP_RASPBERRY/cgi-bin/VMCsetspeed.cgi?speed=X (X=0 ou 1 ou 2 ou 3)

02/04/2015 Vieux  
 
  56 ans, Liège
 
OK, cela reste assez simple alors.

Bon j'ai encodé les vitesse, l'envoit fonctionne MAIS cela désynchronise le server et il crash a la première lecture d'état ...

C'eut été trop beau
02/04/2015 Vieux  
 
  45 ans, Brabant Wallon
  sebcbien est connecté maintenant
À vaincre sans péril, on triomphe sans gloire ... ;)
02/04/2015 Vieux  
 
  34 ans, Brabant Wallon
 
vous pourrez faire un tuto après pour que je puisse en profiter pèpère sans devoir tout recomposer ?
02/04/2015 Vieux  
 
  45 ans, Brabant Wallon
  sebcbien est connecté maintenant
ce sera comme le script actuel normalment. tu l'a déjà installé ?
Normalement on a déjà tout expliqué dans ce fil pour l'installation et jcoenen a fait un pdf joint avec les fichiers dans le github.
et les deux adresses ci-dessus, une pour lire et recevoir un json, une pour définir la vitesse.
02/04/2015 Vieux  
 
  45 ans, Brabant Wallon
  sebcbien est connecté maintenant
heuu pas github, sorry, sourceforge: http://sourceforge.net/projects/rasp...?source=navbar
02/04/2015 Vieux  
 
  56 ans, Liège
 
Bon, le problème est maintenant résolu, mais je ne suis pas trop satisfait.

Petit test:

Un script lit les valeur toute le 5 secondes.

Dans les trous je change la vitesse avec un autre script et tout fonctionne.

Si par contre le script fait l'échantillonage en continu alors le server parfois se bloque (désynchronisation). Je dois donc revoir le serveur pour les situations de stress.

Je vais préparer un package avec le server et les deux clients (VMCbinjson.cgi et VMCsetspeed.cgi), en tout il y a 4 modules.

C'est écrit a la grosse louche mais ca tourne...

Je dois juste faire l'interface pour les cgi ...
Page 19 sur 68 Première page - Résultats 1 à 20 sur 1 354 Page precedente 91718 19 202129 Page suivante Dernière page - Résultats 1 341 à 1 354 sur 1 354


A lire également sur BricoZone...
Zehnder ou Storkair / whr ou confoD ? Par chevy3600 dans Plomberie, +3 13/06/2016
Storkair ConfoD luxe et domotique Par sebcbien dans VMC, PAC, Clim, +12 21/10/2013
VMC storkair Par lombsss dans VMC, PAC, Clim, +1 25/01/2013
VMC storkair comfod 350 Par sam_bech dans VMC, PAC, Clim, +16 22/01/2013
Où acheter VMC DF Zehnder/Storkair ? Par Lapilux dans VMC, PAC, Clim, +4 26/03/2012


Forum Domotique : Voir ce forum, Nouveautés, Actifs, Sans rép
Tout BricoZone : Page de garde, Dernieres 24h

Photos au hasard
Voir toutes nos photos


Pas encore membre de BricoZone ?!
Attention Pour participer, poser une Question ou Répondre : inscrivez vous !
Ceci vous permettra également de recevoir un email lors des réponses.
Mais même si vous ne voulez rien écrire : vous pourrez surveiller les forums et leurs nouveaux messages, et obtenir une vue rapide de tous les nouveaux messages depuis votre dernière visite !
Tout ceci est évidemment gratuit et rapide.

Visitez aussi : BricoZone France, nos Blogs. On aime Astel, JardiZone et InternetVista.
 
Connexion!
Identifiant
Mot de passe

Inscription - Oublié ?

Annuaire Pro

Maisons Baijot

Entreprise générale de construction Maison basse énergie Construction traditionnelle de qualit


SIBOMAT sa

Leader de la construction à ossature bois en Belgique depuis plus de 30 ans.


AlarmeMaison.biz

Pour nous la sécurité de votre maison n'est pas un vain mot.. Alarmes en KIT de bricolage!!


SUNNYHEAT by FOXeco

Chauffage infrarouge longues ondes. Le système le + économique, écologique & et sain au monde !

Ajoutez votre société