Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
linknx et squeeServeur
#1
Bonjour, tout le monde Smile

Alors voila, je suis en train de voir ce que je pourrait comme visu.
Et je voulait pouvoir commander mon système multiroom via knx.

Mon système multiroom, n'est autre qu'un synology avec logitech media server, et des raspberry, avec des sueezeplayer.

J'ai essayer de m'inspirer du wiki : http://www.knx-fr.com/wiki/commander_squ...ec_un_z38i , mais je n'ai pas compris comment fonctionnait les IOPorts.

Voici donc ma solution.

Nous allons commencer par récupérer le status du lecteur que l'on cherche.

On crée deux objet :

audio_cuisine_onoff_status : 8/1/0 : 1.0001
audio_cuisine_vol_status : 8/3/0 : 5.0001

Pour la mise a jour de ces valeur j'utilise une règle :

<rule id="audio_cuisine_getStatus" init="true">
<condition type="timer" trigger="true">
<every>5</every>
</condition>
<actionlist>
<action type="script">
<![CDATA[
http = require("socket.http")
c = http.request("http://192.168.0.22:9002/status.html")
r = c:find("Lecture en cours")
status = obj("audio_cuisine_onoff_status");
if r == nil then
set("audio_cuisine_onoff_status","off");
else
set("audio_cuisine_onoff_status","on");
end;
c0 = string.sub(c,c:find("Volume :"),c:find("playList"))
rVolume= (tonumber(string.sub(c0,c0:find("<b>")+3,c0:find("</b>")-1))-1) * 10
set("audio_cuisine_vol_status",rVolume);
]]>
</action>
</actionlist>
</rule>

Cela fonctionne correctement, cependant, ca me dérange d'avoir une regle executer toute les 5 secondes.

Pouvez vous me dire si cela peut poser problème ?
Faut'il mieux que je fasse fonctionné le ioport ?
Avez vous des idée ou je peut trouver des information, pour comprendre comment cela fonctionne ?

merci de votre lecture.


Pour ceux que ça intéresse, j'ai aussi via script lua, programmer le play/stop et le changement de volume via knx.
Répondre
#2
Salut,

pas mal l'idée avec les script lua

en fait la version actuel sur le cvs de linknx il y a un bug avec les ioport pour la partie connect et récupération des données dans les actions
il y a semble-t-il quelque qui regarde le problème pour proposer une solution

mais suis pas sur que l'ioport seul réponde à tous les cas dont tu as besoin

quels infos voudrais-tu exactement ?

@+
Anthony.
Répondre
#3
Bah j'avoue ne pas trop savoir les besoin encore.
Mais j'aimerai pouvoir jouer sur mes squeeezebox pour mes scenario.

Par exemple, un scenario que j'aimerai faire :
Si on est un jour de semaine, et que aucune entre dans mon calendrier corespond a CP (congée)
Alors, les volet de la chambre et de la cuisine ce releve, la radio est allumée a la cuisine, et le son monte progressivement.

C'est un exemple, mais j'ai par exemple, d'autre idee, via des detecteur de mouvement, allumer les squeezebox juste des pieces occupée.

Donc pour le moment je cherche surtout a me cree les objets KNX pour gerer cela.

Concernant la visu, j'aimerai la total, quel artiste/morceau, le pourcentage de lecture sur la musique, .... l'image de la pochette....
Mais je suis en train de sérieusement de me demander, si ca vaut le coup de faire passer sur le bus knx. Pourquoi pas juste faire un plugin knxweb ?
Il faut par contre le retour d'etat des elements controlable par knx, sinon a chaque fois qu'on touche au lecteur on est plus en phase.

Donc pour le moment je pense 1 etat on ou off, 2 volume, 3 radio ou playlist1 ou playlist2, 4 syncro ?
Avec ces objets il y as déjà de quoi s'ammuser avec les regles Smile
Répondre
#4
(23/01/2015, 22:00:44)brinbois a écrit : Bah j'avoue ne pas trop savoir les besoin encore.
Mais j'aimerai pouvoir jouer sur mes squeeezebox pour mes scenario.

Par exemple, un scenario que j'aimerai faire :
Si on est un jour de semaine, et que aucune entre dans mon calendrier corespond a CP (congée)
Alors, les volet de la chambre et de la cuisine ce releve, la radio est allumée a la cuisine, et le son monte progressivement.

C'est un exemple, mais j'ai par exemple, d'autre idee, via des detecteur de mouvement, allumer les squeezebox juste des pieces occupée.

Donc pour le moment je cherche surtout a me cree les objets KNX pour gerer cela.

Concernant la visu, j'aimerai la total, quel artiste/morceau, le pourcentage de lecture sur la musique, .... l'image de la pochette....
Mais je suis en train de sérieusement de me demander, si ca vaut le coup de faire passer sur le bus knx. Pourquoi pas juste faire un plugin knxweb ?
Il faut par contre le retour d'etat des elements controlable par knx, sinon a chaque fois qu'on touche au lecteur on est plus en phase.

Donc pour le moment je pense 1 etat on ou off, 2 volume, 3 radio ou playlist1 ou playlist2, 4 syncro ?
Avec ces objets il y as déjà de quoi s'ammuser avec les regles Smile
tu devrais essayé smartvisu avec smarthome en backend
http://mknx.github.io/smarthome/plugins/squeezebox.html

Nouvelles technologies, domotique, immotique, vidéosurveillance et multimédia en Rhone alpes loire auvergne

Site web
Page Facebook: http://www.facebook.com/domotiqa
Email
Répondre
#5
Merci, pour les infos,
Pour le moment, je reste sur knxweb, car justement, même si je doit coder un peu, j'arrive a faire ce que je veut.
Et j'aimerai garder cette modularité.

Si j'amais je trouve un point bloquant, alors j'etudierai autre chose.
Pour le moment, rien a dire, ca marche tres bien ce petit trio.
Répondre
#6
(27/01/2015, 14:18:23)brinbois a écrit : Merci, pour les infos,
Pour le moment, je reste sur knxweb, car justement, même si je doit coder un peu, j'arrive a faire ce que je veut.
Et j'aimerai garder cette modularité.

Si j'amais je trouve un point bloquant, alors j'etudierai autre chose.
Pour le moment, rien a dire, ca marche tres bien ce petit trio.
je sais pas si t as vu ce sujet
http://www.knx-fr.com/wiki/commander_squ...ec_un_z38i
Nouvelles technologies, domotique, immotique, vidéosurveillance et multimédia en Rhone alpes loire auvergne

Site web
Page Facebook: http://www.facebook.com/domotiqa
Email
Répondre
#7
Si justement j'en parle dans mon premier post, Et a priori les IO-ports sont bogué dans les derniers version de linknx, et c'est justement parce-que je n'ai pas réussi a les faire fonctionner que je j'ai poster ma solution ici (en me demandant si elle était la bonne Wink )
Répondre
#8
Bonsoir,

Je suis très intéressé par ta solution, j'ai fait pas mal de tests et je suis également bloqué avec l'ioport.
Je sais qu'il devait y avoir une demande de modification de l'ioport pour que cela fonctionne:
https://groups.google.com/forum/?hl=fr#!...gmFfEjo-0U
Laurent
Répondre
#9
Hello,

Je suis aussi super intéressé par squeeServeur, mais pour le moment j'en suis au tout debut de mon installation (en fait j'en suis encore à démolir les murs/plafonds/planchers). Je garde ce sujet sous le coude pour le moment opportun.

JJay
Répondre
#10
Hello,

Contant de trouver du public Smile

@lolo666666 : a tu essayer la règles pour récupérer les informations ?
Je veut bien que tu me fasse des retours, sur ce qui ne fonctionne pas chez toi, si il te manques des infos.
Répondre
#11
Voila, le bug est corrigé sur le CVS de linknx, le retour d'information de squeezecenter vers linknx devrait fonctionner comme décrit dans le tuto http://www.knx-fr.com/wiki/commander_squ...ec_un_z38i

Attention de bien prendre la version du CVS et pas la dernière version 0.0.1.30.
Répondre
#12
Bonjour, merci de ta réactivité.

Mais j'avoue ne pas trop être sur de comment faire la mise a jour,
Je suis sous archlinux (sur raspberry), et j'ai installer le paquet via les depots AUR qui va chercher ici :

http://downloads.sourceforge.net/project...er}.tar.gz
avec pkgver = 0.0.1.32

il me suffit de changer la version du packet ? ou dois-je désinstaller cette version en installer une autre ?
Dans ce cas ou aller la chercher ?

Merci Smile
Répondre
#13
Effectivement la c'est plus embêtant. Il faudrait modifier le packet existant pour l'adapter mais je n'ai jamais utilisé archlinux et je n'ai pas de possibilité de tester.

Répondre
#14
Ce n'est pas un probleme,

archlinux est tres bien fait, et te permet de changer les fichier avant l'installation des paquet, de meme on trouve les adresse email de ceux qui cree les paquet, il y as aussi un systeme de commentaire sur les paquets, qui permet a ceux qui trouve des solution (quand un paquet ne marche plus) de la diffuser au autres .....

Mais, pourrais tu me dire comment allez chercher la nouvelle version, si on ne peut pas le faire via un download sur le sourceforge ?

quelle est l'adresse du cvs ? peut on y accéder en anonyme ?
Répondre
#15
http://linknx.cvs.sourceforge.net/viewvc.../?view=tar
Répondre
#16
Merci Smile

Bon j'ai fait la mise a jour, (enfin je croit)
Je m'explique, quand j'ai fait un linknx --version j'avvais 0.0.1.32
appres mise a jour, j'ai 0.0.1.32 ?? c'est normal ?

J'ai essayer de mettre en place ce qui est decrit sur le wiki,
Et la c'est le drame,
A partir de la regle sur le listen 1
linknx ce met a ne plus repondre,
et si je fait un tail -f knxweb2.log j'obtient en boucle :

3007 DEBUG TcpClientIOPort : Out of read 0

J'ai louper quelque chose ?
Répondre
#17
Et si tu enlèves ta rule avec le ioport-onconnect?
Répondre
#18
Oui dans ce cas la, appres un kill du linknx, et restart ca remarche correctement.
Répondre
#19
Tu pourrais m'envoyer ta config linknx?
Répondre
#20
Oups désolez, j'ai pas vue passer ton message, tu la veut avant ou appres la configuration du io-port ?
Pour ceux qui sont interesser pour le faire en LUA, voici les script que j'ai mis en place est qui fonctionne pour le moment :

Pour la lecture : (il faut bien entendu mettre les bon parametres sur les trois premiere ligne.)
ip = '192.168.0.22'
port = 9090
squeezeDevice = "b8:27:eb:b9:97:56"
socket = require("socket")
client = socket.connect(ip,port)
clientConfusedend(squeezeDevice .. " play\n")
client:close()

Pour mettre pause (meme chose pour les parametres)
ip = '192.168.0.22'
port = 9090
squeezeDevice = "b8:27:eb:b9:97:56"
socket = require("socket")
client = socket.connect(ip,port)
clientConfusedend(squeezeDevice .. " pause\n")
client:close()

Pour changer le volume (il faut en plus des trois premier parametre, donner l'objet de commande du volume)
ip = '192.168.0.22'
port = 9090
squeezeDevice = "b8:27:eb:b9:97:56"
vol_obj = "audio_cuisine_vol_cmd"
socket = require("socket")
client = socket.connect(ip,port)
volume = obj(vol_obj)
clientConfusedend(squeezeDevice .. " mixer volume " .. volume .. " \n")
client:close()

Et script qui recupere à la fois l'etat de lecture de la squeezebox, ainsi que le volume)
il faut donc donnée les objet a mettre a jour en paramettre
ip = '192.168.0.22'
port = 9090
squeezeDevice = "b8:27:eb:b9:97:56"
onOff_obj = "audio_cuisine_onoff_status"
vol_obj = "audio_cuisine_vol_status"
socket = require("socket")
client = socket.connect(ip,port)
clientConfusedend(squeezeDevice .. " mode ?\n")
result = client:receive()
play = result:find("play")
if play == nil then
set(onOff_obj,"off");
else
set(onOff_obj,"on");
end;
clientConfusedend(squeezeDevice .. " mixer volume ?\n")
result = client:receive()
volume = tonumber(string.sub(result,result:find("volume")+6,string.len(result)))
set(vol_obj,volume);
client:close()


Voila, j'obtiens donc un controlleur tres basique play/pause et gestion du volume, par n'importe quel élément capable de gérer du knx.
Si vous voulez plus de detail, d'autre script pour recuperer d'autre etat ? agir sur d'autre chose, je peut ecrire d'autre script.

@Energy01, je suis interesser pour faire un plugin pour knxweb2 qui gererai le squeezebox de cette maniere (et simplifier la vie de l'utilisateur), tu peut dire si je peut trouver un peu de doc pour la realisation de ce genre de plugin ?
Répondre
#21
Salut,

@brinbois
intérressant merci pour le partage de tes bouts de code lua
as-tu installé des libs lua spécifiques en plus sur ta machine pour pouvoir utiliser le socket ou c'est en "standard" ?

la notion de plugin j'y refléchi dans knxweb, ça prend du temps à développer/tester/valider ...

j'ai commencé à faire un widget pour le moment il me fait play/pause c'est tout !! il faut que je continue à l'améliorer ....

pour la doc euh ben y a pas ... j'avoue avoir un peu la flemme d'écrire la doc, c'est très long et l'idéale le faire en anglais donc encore plus chaud ...
le "mieux" est de s'inspirer d'un élément qui existe et le dupliquer, pour les widgets la logique est a mon avis simple 3 fichiers manifest.xml widget.html et widget.js ( possible d'ajouter aussi widget.css si besoin) ou d'autres en fonction des besoins du widget lui-même

il y a sinon une solution "simple" pour intégrer un lecteur squeezebox dans knxweb avec un widget html et dedans le code suivant :
<iframe src="http://IP_DU_SERVEUR_SQUEEZE:9000/status_header.html?player=00:00:00:00:00:01" width="500"></iframe>

par contre cela ne marchera que en local sauf si tu ouvre le port sur le net et mettre l'ip publique du serveur squeeze

@+
Anthony.

Répondre
#22
Il as en effet fallut que j'installe le package lua-socket
Enfin c'est comme ça qu'il ce nomme sur archlinux

il semblerait que sous debian c'est : luasocket.

Pour ce qui est du lecteur squeezebox, j'ai pensé au coup de l'iframe, mais ca ne va clairement pas assez loin pour mes besoins.

J'ai vraiment (envie/besoin) de pouvoir gérer mes lecteur via le reste des éléments knx de la maison, par exemple, éteindre la musique quand y'a plus personne dans la pièce.

Pour ce qui est du plugin, je penssait justement a un truc qui va cree les object avec les GA (via un formulaire demander a l'utilisateur)
Cree automatiquement la / les rules de fonctionnement, et faire le widget correspondant.

Pour le widget, je vais essayer de vous proposer quelquechose par la suite.

Pour info, j'ai des petit souci avec mes bout de script lua, en effet quand j'essaye d'eteindre la music via un autre endroit que sur la visu knx, il se rallume tout seul ( un probleme de gestion d'événement)

Pour regler ca, et simplifier la configuration, je pense ecrire un seul script lua qui sera executer toute les secondes.

Je reviens vers vous des que j'ai quelques chose de plus neuf et mieux Smile

Si jamais vous avez des idées de fonctionnalité Smile
Répondre
#23

brinbois a écrit :Pour ce qui est du plugin, je penssait justement a un truc qui va cree les object avec les GA (via un formulaire demander a l'utilisateur)
Cree automatiquement la / les rules de fonctionnement, et faire le widget correspondant.

oui c'est l'idée des plugins que cela puisse inter-agir à tous les niveaux, objects, ioports, rules (rule complete ou juste actions/conditions), widgets

et donc comme c'est transversal c'est pas "simple" ...

le plus gros inconvénient que je vois c'est qu'il faudra stocker des infos au niveau de knxweb pour les rules/objects/ioport et donc lié de façon complete linknx et knxweb ce que si on modifie manuellement le fichier linknx.xml à la main ça pourrais poser problème ensuite dans knxweb ...

@+
Anthony.
Répondre


Atteindre :


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