Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[pKNyX] Plateforme de déploiement
#1
J'ai créé un nouveau fil pour discuter de ce point, car il me semble effectivement qu'il y a plein de choses à faire...

(03/03/2014, 15:44:08)RemyB a écrit : Salut fma38,

En fait je pense qu'il y a une piste à creuser du coté du Raspberry et les diverses cartes d'extensions que l'on peut lui greffer.

http://www.abelectronics.co.uk/products/...ter-boards

Exemple cette carte I/O 32 ports. On peut imaginer un peu de code en python pour convertir l'état des entrées(ou sorties, configurable) en KNX et vice-versa. Transformer le Raspberry en device "cheap" pour certaines applications non-critiques.

Ce qui ferait un module 32 ports pour un peu moins de 70€.

Le RPi a quelques I/O, qui permettent déjà de faire des choses ; il y a au moins une ligne série, un port SPI, I²C... Après, on peut effectivement ajouter une carte comme celle citée, mais c'est du luxe Wink

Je vais creuser l'idée du RPi ; je vais ajouter un package 'board', dans lequel il sera possible de mettre des modules pour le support plus fin de la carte sur laquelle pKNyX tourne. Genre pour accéder au GPIO du RPi...

Tu aurais le temps de tester pKNyX sur un RPi ?
Répondre
#2
Salut fma38,

Je vais avoir un peu de temps cette semaine au soir pour tester pKNyX sur RPi, avec carte 9 bus 1-wire Pridopia et une vingtaine de capteurs DS18S20.
J'ai choisi cette carte en remplacement de mon interface 1wire maison car elle se trouve facilement sur la baie, elle sera donc facile à utiliser par d'autres utilisateurs, le dévellopement ne se limitera pas à mon usage perso.
http://www.pridopia.co.uk/pi-2482-800.html
La liaison entre la carte et pKNyX se fera via OWFS.


J'ai commandé également ceci, dans le but d'en faire un device 32i/o pKNyX :-)
http://www.pridopia.co.uk/pi-23s17-2-lp.html Existe en I²C ou SPI.

Liste de toutes les extensions chez Pridopia: http://www.pridopia.co.uk/ixx-rspi.html
Répondre
#3
Super, tiens-moi au courant. Une chose : utilise la version git, qui a quelques ajout/corrections de bugs par rapport à la dernière archive...

Pinaise, génial tous les shields dispos chez Pridopia ! Je suis à ta disposition pour arriver à interfacer tout ça avec pKNyX Smile
Répondre
#4
Salut,

Voilà j'ai un raspberry fonctionnel avec la carte Pridopia 9 bus en I2C.

Code :
pi@raspberrypi /mnt/1wire $ sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- 18 -- -- -- 1c -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Code :
sudo /opt/owfs/bin/owfs --i2c=ALL:ALL --allow_other /mnt/1wire/
pi@raspberrypi /usr/src/owfs-2.9p2 $ cd /mnt
pi@raspberrypi /mnt $ ls
1wire
pi@raspberrypi /mnt $ cd 1wire
pi@raspberrypi /mnt/1wire $ ls
28.2A42EC040000  bus.0  bus.2  bus.4  bus.6  bus.8     simultaneous  structure  uncached
alarm            bus.1  bus.3  bus.5  bus.7  settings  statistics    system
pi@raspberrypi /mnt/1wire $ cat 28.2A42EC040000/temperature
     29.6875pi@raspberrypi /mnt/1wire $

Les 9 bus sont visibles ainsi que le capteur t° sur la carte.

J'installe pKNyX. :-)
Répondre
#5
Cool !

Existe-t-il des outils pour piloter les I/O, lire la température, etc... ? Ou est-ce que tout se fait via des cat ?

Physiquement, comment sont reliés tes capteurs 1-wire ? À quoi correspondent les bus.x ?

Je commence à réfléchir comment intégrer des plugins dans pKNyX pour accéder aux autres technos ; ça va être un bon exercice. Le truc c'est d'arriver à écrire des choses ré-utilisables. Là, il va peut-être falloir faire un truc spécifique pour la board, tout en isolant le 1-wire, qui est plus générique...
Répondre
#6
Re,

owfs permet de tester rapidement la config, mais j'ai démarré un serveur owfs(owserver) maintenant et il est possible d'utiliser ownet.py.

Code :
2595 ?        Ss     0:00 ./owserver -p 3001 --i2c=ALL:ALL
Les requetes se font via le process owserver.

Il y a des exemples fournis avec OWFS, comme temperature.py.

Code :
sudo python temperatures.py 127.0.0.1 3001
r: 127.0.0.1:3001/ -
r.entryList(): []
r.sensorList(): [Sensor("/10.67D20C010800", server="127.0.0.1", port=3001), Sensor("/28.2A42EC040000", server="127.0.0.1", port=3001), Sensor("/bus.8", server="127.0.0.1", port=3001), Sens.......

....
127.0.0.1:3001/10.67D20C010800 - DS18S20 19.0625
127.0.0.1:3001/28.2A42EC040000 - DS18B20 28.5625
127.0.0.1:3001/simultaneous -  0
Ici owserver fonctionne sur la meme machine que le script python mais cela fonctionner aussi sur une machine distante(ip ou nom de la machine)

Voila le contenu de temperature.py

Code :
#! /usr/bin/env python
# $Id: temperatures.py,v 1.1 2006/12/24 04:08:32 alfille Exp $

import sys
import ownet

if len(sys.argv) != 3:
    print 'temperatures.py server port'
    sys.exit(1)

r = ownet.Sensor('/', server=sys.argv[1], port=int(sys.argv[2]))
e = r.entryList()
s = r.sensorList()
print 'r:', r
print 'r.entryList():', e
print 'r.sensorList():', s

for x in r.sensors():
    if hasattr(x, 'temperature'):
        print x, x.temperature

Donc facilement intégrable dans ton framework :-)
10.67D20C010800 = nouveau DS18S20 externe, sur le bus.6(port 7)
28.2A42EC040000 = DS18B20 soudé sur l'interface Pridopia
Répondre
#7
Ok, vu !

Par contre, où et comment configures-tu l'i2c et le 1-wire ? Comment se fait la liaison entre les bus et les pins GPIO de la carte fille du RPi ?
Répondre
#8
Avec wheezy raspian, il faut éditer /etc/modprobe.d/raspi-blacklist.conf et mettre en commentaire la ligne blacklist i2c-bcm2708.

Ensuite compiler/installer OWFS(pleins de tutos sur le web..)

OWFS peut fonctionner avec diverses interfaces bus master. Il est possible d'utiliser le port GPIO directement en 1wire(bitbanging), mais ici j'ai préféré une interface dédiée avec un DS2482-100 et DS2482-800, la pridopia donc.. La détection et l'utilisation des interfaces en I2C est automatique avec OWFS(avec les bons paramètres au démarrage de owserver, --i2c=ALL:ALL), pas besoin de spécifier manuellement l'adresse des bus master.

Les broches utilisées sur le GPIO pour l'I2C sont celles par défaut. 3(SDA) et 5(SCL).
Répondre
#9
Ah, OK, le driver détecte le port I²C de la RPi... Pigé.
Répondre
#10
Voilà j'ai installé pKNyX, il faut que je récupère mon rail de test et l'interface ip/knx pour aller plus loin. Je le récupère dans la semaine.

As-tu déjà un source code pour un Device qui execute cycliquement une tache ? Et qui pourrait etre créé via pknyx-admin.py ?

Ensuite reste à éditer le device, implémenter les requetes ownet/owserver et envoyer les données vers les gad correspondantes. :-)


Répondre
#11
Regarde le premier exemple, le timer :

http://www.pknyx.org/browser/pknyx/examp...timerFB.py

L'astuce est de faire exécuter une méthode cycliquement avec @schedule.every(seconds=1)...

Là, tu pourrais faire un on/off - off/on toutes les 5 secondes...
Répondre
#12
Ok je vais essayer ca. J'ai récupéré mon rail de test et après avoir terminé ma visu provisoire je pourrai m'y remettre.

Sinon OWFS et PKNyX sont stables et compatible, c'est déjà une étape. Lire un capteur ne devrait pas poser de problème.
Je reprendrai les tests avec la carte i/o. Cela semble facile à implémenter également.

http://www.pridopia.co.uk/pi-pgm/23s17-2port-v3.py

Rémy
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)