Wednesday, December 28, 2016

Documentation eedomus locator pour beta testers

Une version beta d'eedomus locator est disponible sur le Google Play store. Pour devenir beta tester vous devez utilisez le lien suivant pour acter votre participation.

En cas de problème contacter moi par mail. Vous pouvez trouver mon address sur le Google Play Store: eedomus locator

Principes

Besoin principal: Ouvrir automatiquement la porte de mon garage lorsque je rentre le soir à vélo de mon travail.
  1. Envoyer la position à la box eedomus (au traceur GPS) pour gérer des actions.
  2. Minimaliser l'usage réseau de données téléphonie mobile (je fonctionne avec un forfait Free à 2€ 50Mo/mois).
  3. Minimaliser la consommation d'énergie
Pour réaliser le point 2, je devais renseigner la position GPS de ma box/maison.  De plus régulièrement les actions n'était pas enclenchées alors que les positions GPS étaient bien reçues par le traceur GPS. Du coup, il me semblait plus simple de ne pas utiliser le traceur GPS et d'enclencher directement des actions. Cependant envoyer des positions GPS au traceur GPS reste possible.

Le schéma suivant résume le fonctionnement prévu de l'application:

Lorsque la position est à une distance supérieure à Far distance, la position (approximative) par le réseau téléphonie mobile est relevée toutes les 10 minutes.
Lorsque la position est à une distance supérieure Close distance et inférieure à Far distance, la position GPS est relevée toutes les 60 secondes et la position est envoyé au traceur GPS (si paramètre API renseigné).
Lorsque la position est à une distance supérieure à Target distance et inférieure à Close distance, la position GPS est relevée toutes les 15 secondes et la position est envoyé au traceur GPS (si paramètre API renseigné).
Lorsque la position est à une distance inférieure à Target distance, l'action API est éxécutée et le service est arrêté.

Comme dernièrement je ne fonctionnais qu'avec la dernière option, il est possible que les autres actions ne soient pas correctment éxécutées (notamment la mise à jour du traceur GPS). Informez moi des problèmes rencontrés et je ferais les corrections nécessaires.

Ecran principal

L'application fonctionne comme un service.
L'écran principal permet d'afficher le log du service.
Start: Démarre le service
Stop: Arrête le service
Open garage: Non opérationnel. Je l'utilise pour ouvrir mon garage manuellement lorsque le l'ouverture automatique n'a pas fonctionné.
Settings: Ecran des paramères.
Options: Boutton à supprimer, tous les paramètres ont été regroupés dans un seul écran.

Ecran des paramètres



  • API user/API secret sont les codes pour faire des appels API à l'eedomus. Pour les détails consulter la documentation de l'application actuelle.
  • Geolocation API code: code API du périphérique traceur GPS
  • Home latitude/longitude: coordonnées GPS de la box maison ou box eedomus.
  • Optional macro API code/Optional macro API code (virtual state): Ici je dois revoir ce que j'ai fait. En fait on ne devrait avoir qu'un code API avec une valeur à envoyer.
  • Target/Close/Far distance: Les distances utilisés selon le mode de fonctionnement explicité dans le schéma.
  • Auto start at: Timer pour démarrer l'application automatiquement à une heure donnée.
  • Save: sauvegarder les paramètres modifiés
  • Test: envoyer une position aléatoire au GPS: Requiert de renseigner les 5 premiers paramètres. Permet de valider que l'application communique bien avec la box.

Monday, December 1, 2014

eedomus - suivi consommation gaz avec NorthQ

J'ai récemment fait l'acquisition d'un compteur d'impulsion NorthQ pour compteur de gaz (NQ-9121). Les informations disponibles sur Internet pour ce périphérique sont plutôt limitées (y compris la documentation de NorthQ). J'ai donc pensé qu'il était utile de partager mon expérience avec les réponses aux questions que j'avais avant mon achat et les problèmes rencontrés lors de l'installation.

Compatibilité de ce compteur avec mon compteur de gaz
Premier point ce compteur est livré avec 2 têtes de lecture:
  • Une tête pour une lecture optique (silver spot) qui doit pouvoir fonctionner avec quasiment n'importe quel compteur de gaz.
  • Une tête pour une lecture des impulsions émises
Dans mon cas il s'agit d'un compteur Elser BK-G4M à impulsion comme l'indique la mention sous les chiffres du volume de gaz consommé.
On peut y lire qu'une impulsion équivaut  à 0,01m3, ce qui confirme qu'il s'agit bien d'un compteur à impulsion.

Alimentation électrique du compteur NortQ
Incroyable, mais cette info de base n'est pas disponible dans la doc de NorthQ. On la trouve uniquement sur les sites des revendeurs en composants domotiques. Le compteur est alimenté avec 2 piles de 1,5V AA/LR6. De point de vue un bon point car je n'ai pas d'alimentation électrique à proximité de mon compteur.
A voir dans le temps si les 1 an de durée de vie se vérifie. Après 1 semaine d'utilisation les piles n'indiquent plus que 89%, peut-être est-ce du aux températures basses en ce moment (3C).

Configuration du compteur
L'inclusion du compteur sur la box ne pose pas de problème. Par défaut le compteur NorthQ est configuré pour une lecture optique. Il faut donc le configurer pour une lecture par impulsion en utilisant le paramétrage radio.
L'autre paramètre important est le Pulse factor qui est par défaut à 1000. Dans mon cas je n'ai pas eu à y toucher. Pourtant avec une impulsion pour 0,01m3 je devrais logiquement le positionner à 100 pour obtenir des mesures par m3. A creuser...

Installation du compteur NorthQ
J'ai eu quelques difficultés a positionner le capteur d'impulsion ne sachant pas du tout où aller chercher les impulsion sur mon compteur (Les photos de NorthQ m'ont quand même bien aidés). Sous les chiffres du volume de gaz consommé, il y a une petite cavité. Le problème est que cette cavité ne présente pas de moyen d'accrocher facilement le capteur. Dans un premier temps, j'ai utilisé du scotch. Ensuite j'ai trouvé le moyen d'utiliser un trombone pour maintenir le capteur, en l'insérant dans deux fentes à l'intérieur de la cavité (à gauche et à droite). A noter que j'ai dû positionner le capteur au milieu de la cavité pour capter les impulsions. Trop à gauche ou trop à droite, cela ne fonctionnait pas.
Lorsque que le dernier chiffre du compteur arrive sur le chiffre 9, la LED verte s'allume environ une seconde, jusqu'à l'arrivée sur le chiffre 0.

Portée radio
Je m'interrogeais sur la portée radio du compteur NorthQ, sachant qu'il allait être dans un compartiment en béton à une dizaine de mettre de la maison.

Bonne surprise la réception est excellente, y compris avec les périphériques qui se trouvent de l'autre coté de la maison. En comparaison ma sirène Vision, également à l'extérieur, fait beaucoup moins bien (elle n'est pas non plus placée au même endroit).

Configuration sur eedomus
Le compteur NorthQ est maintenant en fonction et devrait normalement afficher ses remontées de lecture en m3/h ce qui, à part montrer une mesure instantanée de la consommation, n'est pas très utile. Une mesure est envoyée toutes les 15 minutes (En fait toutes les 16 minutes environ 15 secondes, avec une température de l'ordre de 3C).

Pour obtenir la consommation en m3 il faut procéder comme suit:
  • Créer un état virtuel (rubrique Eléments de programmation) avec comme usage Tarif énergie
  • Sauver sans saisir aucune valeur
  • Créer un périphérique Conversion en euros (rubrique Téléinformation)
La consommation provient du péréphérique compteur de gaz NortQ
La tarif est l'état virtuel que nous venons de créer
  • Revenir maintenant sur la configuration de l'état virtuel Tarif démo et ajouter une valeur.
Il est important d'effectuer les opérations dans cet ordre pour que l'unité soit correctement définie. En effet, elle est déterminée par eedomus et ne peut pas être modifiée. Il faut donc que le tarif soit alloué à un périphérique défini pour que la box détermine l'unité à utiliser.
  • Il reste maintenant à sélectionner manuellement la valeur du tarif de conversion. Par défaut aucune valeur n'est sélectionnée.

pour s'assurer que la valeur unique est bien définie:
C'est un peu mystérieux (sans doute c'est la eedomus qui se préoccupe de convertir correctement les m3/h du compteur NorthQ en une valeur en m3) mais en tout cas on a une valeur cumulée (au choix par jour/semaine/mois) du nombre de m3 consommé.
L'histogramme avec seulement les donnée d'une journée n'a pas l'air de bien fonctionner. C'est pour cela que je montre le compteur simple.

Pour obtenir une valeur en euros, il suffit de suivre la même démarche en mettant en tarif la valeur du prix d'un m3 de gaz. Je ne redétaille pas toute les étapes mais je met l'ensemble des copies écrans avec quelques commentaires:

On commence par créer l'état virtuel pour définir le tarif mais on ne crée pas les valeurs:

Maintenant que le tarif est créé, on peut créer le périphérique Conversion en euros et sélectionner le Tarif à appliquer.



Une fois le tarif assigné au périphérique Conversion en euros on peut définir les valeurs du tarif:
Ne pas oublier d'activer le tarif pour que la valeur soit sélectionnée (par défaut aucune valeur n'est sélectionnée).

Calcul d'un m3 de gaz
Bah, il suffit de regarder sa facture. En fait ce n'est pas si simple. Le prix du m3 est variable en fonction:
  • Du fournisseur
  • De l'altitude
  • De la pression atmosphérique
  • De la source de gaz et du type de gaz
  • Du coût de distribution
  • Du prix du gaz (ça vous le saviez déjà)
et donc n'est pas stable dans le temps.

Dans mon cas je n'ai encore de facture disponible. Cela m'a permis de plonger la tête dans le contrat que j'ai signé et que je n'avais jamais lu en détail pour identifier que:
  • Je suis en zone 3 avec le tarif CONSO3 ce qui donne 5,53 Prix kWh (cts€/kWh) = 0.0553 EUR/kWh
Ensuite il faut trouver comment convertir les m3 en kWh. Cette info est variable en fonction des paramètres énoncés ci-dessus. Dans mon cas le fournisseur de gaz me fourni l'information en fonction de ma commune. J'ai prix la valeur moyenne 1m3 = 9,79kWh.
Le prix de gaz au m3 est de 9,79 x 0.0553 = 0,541387 = 0,5414 pour eedomus qui ne garde que 4 décimales.

Simulation compteur physique
Pour compléter mon installation, je souhaitais avoir un périphérique pour afficher le nombre de m3 de gaz consommé tel qu'il est affiché sur le compteur physique.
Pour cela nous avons besoin d'un script gaz_total.php qui devra être installé sur la box.

Ensuite nous créons un capteur HTTP qui va lancer le script pour mettre à jour le compteur:

perif_id est le code API du compteur de gaz en m3 (Conso démo gaz dans l'exemple ci dessus).

Nous avons réglé la fréquence à 15 minutes pour récupérer les informations en quasi temps réel puisque c'est la fréquence de mise à jour du compteur de gaz NorthQ. On pourrait sans problème réduire la fréquence à toute les heures ou davantage.

Pour initialiser le compteur il suffit de lancer manuellement la requête:
http://IP de ma box/script/?exec=gaz_total.php&perif_id=XXXXXX&action=origin&origin=valeur actuelle de mon compteur

Petite mise au point
Mon compteur m'envoyait parfois des valeurs complètement farfelues (très élevées). Ceci peut-être du à une mauvaise réception radio ou à la faiblesse des piles. Pour éviter le problème dans les paramètres experts du compteur de gaz il y a un champ:
Rejeter les valeurs supérieures à: 20

Durée de vie des piles
Le jeu de pile fourni avec le compteur aura duré exactement 3 mois (de fin novembre à fin février). C'est bien loin du 1 an promis dans les spécifications de NorthQ. Peut-être que le fait de mettre le compteur dans une cage de Faraday (ma boite aux lettres en métal) y ai peut-être pour quelque chose.

Icônes
En bonus quelques icônes que je me suis fait pour l'occasion:

Tuesday, October 7, 2014

Aide pour eedomus locator

eedomus locator est une application pour envoyer la position du téléphone à un périphérique de type traceur GPS sur la box eedomus. Elle peut-être téléchargée sur Google Play: eedomus locator
Le principal problème rencontré est de configurer correctement les paramètres de connexion. Ce post montre comment configurer et tester les paramètres de connexion.

1) Obtenir les identifiants API eedomus
Dans les Paramètres Expert du traceur GPS cliquer sur l'icône clée:
Sur cet écran se trouve le code API (6 chiffres) du traceur GPS.

Fournir le mot de passe de votre eedomus pour accéder les identifiants API qui permette d'afficher cet écran:

2) Valider que le traceur GPS fonctionne avec vos identifiants:
Cliquer sur cette URL:
https://api.eedomus.com/set?action=periph.value&periph_id=XXXXXX&value=51,3.0&api_user=XXXXXX&api_secret=XXXXXXXXXXXXXXXX
Remplacer les XXX... en faisant des copier coller pour eviter toute erreur.
Dans l'ordre on a:

  • Code API (6 chiffres)
  • api_user (6 chiffres et lettres)
  • api_secret (16 chiffres et lettres)


La valeur 51,3.0 correspond à la position GPS (latitude=53, longitude=3.0). Cette valeur peut être modifiée pour envoyer une autre position. L'application eedomus locator se contente de faire exactement le même appel HTTP avec les coordonnées (lat/lng) actuelles données par le téléphone.

Si l'appel HTTP a retourné success, la position envoyé devrait apparaître sur le traceur GPS:


Sur le détail on peut voir le détail des valeur envoyées:

Pour voir plusieurs valeurs test identiques il faut sélectionner Tout afficher.

3) Valider sur le téléphone l'accès à l'API eedomus
Pour cela je m'envoi un mail avec l'URL testée dans le navigateur sur le PC

Je copie également les données de configuration: API code, api_user et api_secret sur des lignes distinctes: C'est pour faire facilement des copier-coller pour l'étape suivante.

Sur le téléphone, afficher le mail et cliquer sur le lien. Le résultat doit être identique au test de l'étape 2). Si ce n'est pas le cas le téléphone n'arrive pas à accéder l'API eedomus. Il s'agit très probablement d'un problème réseau: Téléphone pas connecté au WIFI de la maison ou pas d'accès données sur le téléphone.

4) Configurer exactement les mêmes valeurs sur eedomus locator
Lors du premier démarrage de eedomus locator l'écran de configuration est automatiquement affiché. Sinon sélectionner menu -> Setting dans l'application eedomus locator pour arriver à cet écran:


Pour éviter tout risque d'erreur reprendre les données envoyées par mail à l'étape précédente et faire des copier-coller entre le mail et l'écran de configuration eedomus locator.

Une fois les données saisies, appuyer sur le bouton Connect. Les paramètres sont enregistrés dans l'application. Dans la version actuelle aucun test n'est effectué sur les paramètres saisis.

L'écran principal de eedomus locator devrait être affiché:
Le bouton test permet de forcer l'envoi des coordonnées de test (lat=51/lng=3). Si le test à l'étape 3) a fonctionné, l'envoi cette requête test doit fonctionner également.

N'hésitez pas à me contacter ou laisser des commentaires sur cette page en cas de difficultés.

Note importante:
J'ai corrigé un bug important (07/10/2014 22:00) qui empêchait l'envoi de la requête sur certaines versions. Je n'ai pas encore mis à jour l'application sur Google Play mais l'APK corrigé peut-être téléchargé à cette adresse: https://s3-eu-west-1.amazonaws.com/godestalbin-web/apk/app-release.apk

Sunday, September 28, 2014

Plage de fonctionnement pour une règle

Gérer des règles par plage horaire manque cruellement à la box eedomus. L'agenda répond en partie à ce besoin mais manque de souplesse. La suggestion (http://forum.eedomus.com/viewtopic.php?f=13&t=574) a été faite sur le forum mais n'a pas l'air de retenir beaucoup l'attention. J'ai résolu le problème de la façon suivante:

J'ai créé un script pour récupérer l'heure:
<?php
#
#
#set_value
sdk_header('text/xml');
          
          echo "<root>";
          echo "<time>";
          echo "<heure>".date('G').date('i')."</heure>";
          echo "</time>";
          echo "</root>";
?>

Le script retourne les heures et les minutes sous la forme suivante:
http://@IP de ma box/script/?exec=time.php
<root>
<time>
<heure>1523</heure>
</time>
</root>

Ensuite je crée un actionneur HTTP configuré de la façon suivante:
Il est éxécuté toutes les minutes.

Nous sommes maintenant en mesure d'écrire des règles avec une plage horaire de la façon suivante:

Avec ce système l'action est appelée de façon répétitive toutes les minutes.