Programmateur simple pour Remora



  • Bonjour,
    Je suis l'heureux propriétaire d'un Remora, et j'ai installé un Jeedom sur un Raspberry Pi afin de pouvoir gérer des programmes et les changer à distance. A l'usage, je me suis rendu compte que:

    • ça rame (le raspberry pi est un peu limite niveau puissance pour jeedom)
    • c'est compliqué à programmer (en tout cas, en temps que développeur, j'ai eu du mal à obtenir des programmes qui fonctionnent correctement)

    J'ai donc décidé d'arrêter les frais avec Jeedom, et de développeur un programmateur simple. Concrêtement, il s'agit d'un site web (hébergé sur un raspberry pi) qui permet de définir des programmes (par exemple, "journée de travail", "journée à la maison", "en vacances", etc.) et d'affecter ces programmes aux différentes zones.
    En plus du site web, il y a un script qui consulte régulièrement les programmes à appliquer et qui envoie des commandes au Remora.

    Pour ceux qui veulent tester, le code est dispo ici:
    https://github.com/trahay/remora_programmer



  • Salut @trahay

    Merci de partager ton excellent travail avec nous. J'ai trouvé ça très intéressant.

    J'aurai une petite remarque à faire dans le script cron que tu lances toutes les 5 minutes. Tu envoies un ordre à chaque fois, pour chaque zone. Peut-être pourrais-tu faire un appel pour récupérer l'état des 7 zones (http://ip_du_remora/fp) et comparer avec les ordres programmés dans ton système. Cela pourrait éviter des appels inutiles à la Remora.



  • Bonjour,

    Merci pour ce travail !

    Je suis aussi un déçu de Jeedom, après avoir perdu un jour ou deux à essayer de le configurer de façon satisfaisante. J'ai jeté un coup d'œil à ton code, et ça m'a l'air beaucoup plus proche de ce que je voudrais. (Enfin, à long terme, j'aimerais intégrer un retour de sondes de température, mais dans un premier temps, je voulais justement m'implémenter un système de programmes sur une journée à associer ensuite à des jours/zones.)

    Un truc qui m'intrigue cependant : est-ce qu'il y a une raison particulière de définir le programme de chaque jour avec une granularité de 15 min, plutôt qu'autoriser des plages arbitraires (en stockant la liste des basculements plutôt qu'un tableau d'états, bien sûr) ?

    Et sinon, j'ai l'impression que ça vaudrait la peine de donner plus de souplesse dans l'association jour → programme_journee : la sélection en fonction du jour de la semaine convient le plus souvent, mais il y a pas mal d'exceptions que l'on pourrait vouloir programmer à l'avance (jours fériés, absences de plusieurs jours...). En fait, j'ai l'impression qu'il faudrait pouvoir donner un ensemble arbitraire de règles du style « les premiers lundis du mois entre telle date et telle date, utiliser le programme X ». Mais je ne sais pas trop comment rendre ça digeste pour l'utilisateur, ni s'il existe du code tout fait qui ferait ça bien...

    Merci encore en tout cas !



  • Je suis en train d'installer une version un tout petit peu mise à ma sauce...

    • Petite question : README.md mentionne une dépendance à mongodb, mais je n'ai pas compris où celle-ci était utilisée. Est-ce qu'elle l'est vraiment ?

    • Et mini remarque pour les autres utilisateurs éventuels : attention à créer au moins un programme avant vos zones, sans quoi le chargement de la page d'accueil échoue. @trahay: Je ne sais pas si tu es intéressé par les rapports de bug, j'en ai fait un dans le doute.



  • Salut @marc

    D'après la lecture que j'ai fait du code, c'est SQlite qui est utilisé comme SGBD et pas MongoDB. Par contre, la dépendance est bien dans le fichier package.json du projet.



  • @aufilelec Oui, c'est aussi ma compréhension des choses.



  • @marc

    Par contre, je n'ai pas encore trouvé comment faire plusieurs périodes de confort dans une programmation journalière. Et toi ?



  • J'ai finalement trouvé. Il suffit d'éditer la programmation et de renseigner les heures et le mode, sur la zone en question. Et cela plusieurs fois.



  • Merci pour votre enthousiasme :)

    Je réponds en vrac:

    J'aurai une petite remarque à faire dans le script cron que tu lances toutes les 5 minutes. Tu envoies un ordre à chaque fois, pour chaque zone. Peut-être pourrais-tu faire un appel pour récupérer l'état des 7 zones (http://ip_du_remora/fp) et comparer avec les ordres programmés dans ton système. Cela pourrait éviter des appels inutiles à la Remora.

    Oui, il y a sans doute moyen de rendre le script plus intelligent et d'éviter de dialoguer avec la Remora constamment.

    Un truc qui m'intrigue cependant : est-ce qu'il y a une raison particulière de définir le programme de chaque jour avec une granularité de 15 min, plutôt qu'autoriser des plages arbitraires (en stockant la liste des basculements plutôt qu'un tableau d'états, bien sûr) ?

    J'ai trouvé ça plus simple à programmer et je me dit qu'une granularité de 15 minutes c'est suffisant vue l'inertie d'un radiateur électrique. Je vois mal quelqu'un demander au radiateur de chauffer à partir de 6h47 exactement :)

    Et sinon, j'ai l'impression que ça vaudrait la peine de donner plus de souplesse dans l'association jour → programme_journee : la sélection en fonction du jour de la semaine convient le plus souvent, mais il y a pas mal d'exceptions que l'on pourrait vouloir programmer à l'avance (jours fériés, absences de plusieurs jours...). En fait, j'ai l'impression qu'il faudrait pouvoir donner un ensemble arbitraire de règles du style « les premiers lundis du mois entre telle date et telle date, utiliser le programme X ». Mais je ne sais pas trop comment rendre ça digeste pour l'utilisateur, ni s'il existe du code tout fait qui ferait ça bien...

    Il est sans doute possible de faire quelque chose dans le genre, mais j'ai pas trop d'idée sur la façon de spécifier les exceptions. Pour les absences prolongées, je change les programme au cas par cas (je passe en mode vacances quand je pars, et la veille de mon retour, je choisi le mode "travail")

    Petite question : README.md mentionne une dépendance à mongodb, mais je n'ai pas compris où celle-ci était utilisée. Est-ce qu'elle l'est vraiment ?

    C'est une erreur et c'est corrigé maintenant :) (En fait j'ai commencé le projet en utilisant mongodb, mais quand j'ai installé le tout sur raspberry, je me suis rendu compte qu'il n'y a pas de version utilisable de mongodb sur cet archi, donc je suis passé à sqllite.)

    Et mini remarque pour les autres utilisateurs éventuels : attention à créer au moins un programme avant vos zones, sans quoi le chargement de la page d'accueil échoue. @trahay:

    Merci pour le rapport de bug. Je viens de corriger ça.

    Je ne sais pas si tu es intéressé par les rapports de bug, j'en ai fait un dans le doute.
    Oui, je suis intéressé par les rapport de bug et les pull requests :)



  • @trahay said in Programmateur simple pour Remora:

    Oui, je suis intéressé par les rapport de bug et les pull requests :)

    Ok. Pour l'instant, je n'ai fait que de petites adaptations pour mon usage, mais j'y penserai si je suis conduit à faire des modifs utiles pour quelqu'un d'autre ! (Enfin bon, il faudrait sûrement que je commence par apprendre javascript pour en arriver là.)