Nouveau ! S'en suivra avec le temps de nouvelles publications ..
| |
Connexion / inscription Derniers messages
du forum ![]() |
Discussion consultée 4894 fois 36 messages Domos - serveur PHP
Domos+-+serveur+PHP
#1remy_gle 02 juin 2010 à 14h32 Bonjour,
Devant mon manque de compétences sur Linux et la flemme d'apprendre à programmer en awk, je me suis attaqué à la programmation de ma centrale domotique en PHP. Pour le moment, rien de transcendant mais je pense une base solide pour la suite. J'ai LARGEMENT pompé sur les fonctionnalités que propose la version actuelle de Domos. Pour le moment, j'ai donc développé une interface permettant de définir les taches : On peut y définir les relais à activer (ou désactiver) ainsi que leur comportement (bascule, fixe ou fugitif) et donner un nom à cette commande. Et une autre interface (agenda) : On y définit les plages d'activation d'une commande (tranches de 30 minutes) et le mode d'activation (cyclique : toutes les x minutes secondes ou heures OU à heure fixe). On choisit enfin la commande concernée par cette entrée de l'agenda. Enfin, une autre page PHP (pour le moment appelée DOMOS.php Toutes les entrées de l'agenda et les définitions de commandes sont pour le moment stockées dans deux fichiers xml (un 3eme sert aux variables d'environnement). Je n'ai pas encore testé avec la carte mais en mode log : les instructions sont écrites dans un fichier log au lieu d'êtres envoyées à la carte. Ca e l'air de fonctionner normalement. J'ai bien entendu réussi à créer mes commandes "fil pilote" (voir post concerné ici). Je suis parti sur une base de fichiers xml car à mon avis plus simple à mettre en place qu'une base MySQL (ou autre). Enfin, le PHP étant agnostique d'un point de vue plateforme, je pense récupérer un vieux PC sous ouindoze et y installer easyPHP. Voilà ! J'espère ne pas avoir cassé l'esprit de Domos en partant sur un dev PHP mais ça répondait mieux à mes contraintes. Je tiens les codes sources à votre disposition si besoin. A+ Rémy
#2Freudle 02 juin 2010 à 16h39 Salut,
Merci pour le topo. Rien n'empêche de développer parallèlement plus modes de programmation. Ce devrait même à terme être très bénéfique, l'un pouvant appeler à des fonctionnalités plus instinctives que sur l'autre et inversement, et ainsi l'un comme l'autre pourront s'inspirer de leurs fonctionnalités respectives. L'intérêt est pour les utilisateurs, qui auront des configurations et besoins différents. Pour ma part PHP me parle évidemment plus (tes sources m'intéressent ! ), et ne connaissant pas encore awk j'ignore ce qui est le plus simple, fonctionnel et évolutif à mettre en place. J'attends de recevoir la IPX800-Pro pour m'y atteler, tout comme Firmin d'ailleurs. JP Gorce de GCE réécrit l'OS des cartes et à un peu de retard ...
J'ai justement ce matin proposé une nouvelle approche pour l'interface de programmation : ++ [ Message modifié par Freud le 03-06-2010 à 01:39 ] #3La_Brossele 02 juin 2010 à 21h03 Salut ;
Bravo pour cette initiative, il n'y rien à casser à faire des propositions constructives. Pour le coup, on s'éloigne beaucoup de mes habitudes "zéro fioritures", mais cela rejoint l'envie de développement de Freud vers une présentation plus graphique. Le gestionnaire que tu nous propose est intéressant. Prédéfinir un ensemble de tâches (mode d'action sur le matériel) et ensuite employer ces tâches dans un planning autant de fois que l'on veux. En fait c'est bien dans l'esprit de mon bout de code. Tu récupére directement l'info sur le fichier status.xml ? Pour la machine d'accueil, si ça marche en php, ça marche sur tous les système possibles. A chacun sa préférence. Au besoin tu peux accéder à gawk avec cygwin. ...ne connaissant pas encore awk j'ignore ce qui es le plus simple... C'est bien la peine que je me décarcasse... bon ben je retourne à mon écran monochrome. Qu'est ce que ça donne la commande du fil pilote ? php ou awk ? Si tu l'a faites en php, je lui ferai volontier son équivalent en awk. #4Freudle 03 juin 2010 à 01h37 Re,
A quoi correspond "horaire fixe" en bas de la programmation des tâches ? Il serait intéressant de pouvoir nommer les relais aussi. Commande 1 en haut de la définition des tâches correspond à une entrée de la carte ? C'est la case à cocher de commande à bascule qui m'interpelle. ...ne connaissant pas encore awk j'ignore ce qui es le plus simple... C'est bien la peine que je me décarcasse... bon ben je retourne à mon écran monochrome. Je n'ai fait que lire, pas manipuler. Apprendre un langage sans jamais taper une ligne de code me parait un peu compliqué, aussi tant que je n'aurais pas mi les mains dedans ça restera pour moi très abstrait et je ne saurais mémoriser. Je n'attends plus que ma carte, en espérant qu'il me l'expédie rapidement maintenant ... ... mais cela rejoint l'envie de développement de Freud vers une présentation plus graphique. Ce n'est pas tant mettre des paillettes que pour le côté intuitif. En faciliter l'usage. Il est vrai aussi que je ne suis pas contre un bel emballage, mais il nous faudra alléger la source au maximum pour les versions hébergées sur modem/routeur. Sa sous-entend aussi peu ou pas d'images. ++ [ Message modifié par Freud le 03-06-2010 à 02:01 ] #5remy_gle 03 juin 2010 à 15h54 Salut,
Merci pour vos remarques et questions. Je vais essayer d'apporter les réponses/précisions qui vont bien dans l'ordre. Je récupère effectivement les infos du fichier status.xml. C'est d'ailleurs (entre autre) ce qui m'a orienté vers le PHP car je ne voyais pas comment adresser simplement un fichier xml en awk. Pour la commande fil pilote, je l'ai créée en php (stockée dans commandes.xml). Elle est appelée toutes les 5 minutes et génère le signal concerné (simple ou double alternance sur 3 ou 7 secondes). "Horaire fixe" en bas de la programmation des taches revient à executer la tache à une heure bien précise (sous condition qu'elle soit activée dans l'agenda à l'horaire concerné) : par exemple, une commande peut être execcutée tous les jours sauf le dimanche à 9:30. Commande 1 en haut de la définition ne correspond pas à une entrée de la carte : la case commande à bascule va simplement inverser l'état des relais à chaque execution (lecture du fichier status.xml de la carte). Pour le côté fioritures et paillettes, j'ai simplement voulu faire quelque-chose de lisible et intuitif avec une programmation de l'agenda qui se rapproche d'un calendrier. Pour le moment l'agenda reste hebdomadaire : pas de gestion de mois ou autre (est-ce réellement nécessaire ?). Certaines images sont surtout là pour la fonction '!onload!' qui permet de mettre en évidence les cases cochées. Enfin, si vous souhaitez tester, les codes sources sont téléchargeables ici : Lien. Le principe de base du fonctionnement est de recharger une page php toutes les x secondes (definies par la variable tempo du fichier variables.xml). Pour fonctionner, il suffit de lancer index.php. Le package est composé des fichiers suivants : - index.php : la page à ouvrir pour activer le fonctionnement de DOMOSphp. - agenda.php : programmation des commandes - commandes.php : définition des différentes commandes - domos.php : le moteur proprement dit - actions.log : le fichier log des commandes activées lorsque DOMOSphp fonctionne en mode log. - agenda.xml : le fichier dans lequel la programmation est enregistrée (un backup est généré lorsqu'on modifie l'agenda). - commandes.xml : le fichier dans lequel les ordres sont enregistrés (un backup est généré lorsqu'on modifie une commande). - variable.xml : fichier des variables d'environnement (je vous laisse regarder, il est assez parlant). - le répertoire img/ qui contient les diverses images de DOMOSphp. NB : Pour le moment la lecture du fichier status.xml est celle du fichier qui se trouve dans le même répertoire que les fichiers php. Il faut modifier la variable $status en ligne 272 du fichier domos.php pour adresser le fichier de la carte. A coder rapidement : la possibilité d'ajouter ou supprimer des entrées de l'agenda ou du fichier de commandes sans editer le fichier xml (directement à partir de l'interface). J'espère que ça répond à vos questions et que les tests se déroulent bien. A+ Rémy #6remy_gle 04 juin 2010 à 19h29 Salut,
Aujourd'hui je vais essayer de faire court. Je n'ai pas fait d'évolution majeure sur le code, juste ajouté la possibilité d'ajouter des entrées dans l'agenda ou dans le fichier de commandes. Par contre, j'ai pu tester avec la carte et ça a l'air de fonctionner : J'ai corrigé quelques bugs : - lecture du xml de la carte qui renvoyait une erreur - gestion des taches à bascule : un décalage de leds apparaissait du fait que la commande led1 est basée sur la valeur led0 du fichier xml J'ai aussi annoté tout le code php : plus facile pour les autres de le comprendre et pour moi de me remettre dedans suite à un bug détecté. Je vais m'atteler à la détection d'événements sur les entrées. Faites moi signe si vous voulez les sources corrigés. ++ Rémy #7La_Brossele 04 juin 2010 à 20h04 Salut ;
Oui, particulier le coup du relai 1 qui s'active par la led0... cela oblige quelques gymnastiques. J'aimerais attirer ton attention sur un point de détail dont l'importance peut être capitale. Tes efforts méritent d'être mis en valeur et nous te remercions de nous en faire profiter, il serait bon de t'assurer que nul autre ne vienne proclamer que "c'est lui qui l'a fait". En gros placer le code php sous une licence de logiciel libre comme nous l'avons fait pour Domos (GPL v3) ou pour le contenu du forum (Creative commons by nc sa). Bon, sur le php, je ne peux guère contribuer. Par contre lorsque les fonctionnalités seront bien rodées, la mise en page du html pourra être améliorée afin de coller au plus près du standard. Je vais voir si je peux implanter les paquets nécessaires pour avoir un serveur php sur un micro linux (comme slitaz ou toutoulinux). Je doit avoir encore assez de place sur la boite à pizza. #8remy_gle 05 juin 2010 à 16h49 Yo!
Pour ce qui est de la licence : je l'ai placé sous licence CC-by-nc-sa pour respecter l'esprit du forum tout en gardant le mérite de mon travail. En ce qui concerne le standard graphique, si tu as des infos là dessus, je peux voir pour m'en approcher au fur et à mesure plutot que de reprendre toute la mise en page plus tard. Je reconnais que pour le moment c'est pas au top. J'ai cherché rapidement mais sans succès : peut-on implanter un serveur php sur un openWRT ? ++ #9La_Brossele 05 juin 2010 à 18h50 Salut ;
Oui, il faut zieuter sur la liste des paquets disponibles : la liste sur le dépôt officiel La rubrique php est bien remplie, surtout php4, en trois types d'exécutables (cli, cgi ou fastcgi). Par contre ça mange pas mal d'espace de stockage, il faut donc opter pour un support supplémentaire. C'est que c'est étriqué sur le routeur. Sinon un simple ordinateur fait bien l'affaire. Notamment un de ces nouveaux intégrés avec écran tactile, mécanique de chez Untel, dans les 350 euros dans les bonnes boutiques ; ou un vieux fujitsu stylistic moins puissant mais tellement moins cher. Bon je m'égare. Pour le standard, c'est plus le html qui est a faire en fonction des recommandations du w3c. Mais ce ne sont que des détails à fignoler quand tout marchera au poil. #10madmaxle 25 juin 2010 à 11h47 bonjour
le lien ne fonctionne plus pour télecharger le php merci Domos - serveur PHP
|