Skip to content
This repository has been archived by the owner on Feb 3, 2019. It is now read-only.
François JARRIER-GELLEZ edited this page Dec 31, 2016 · 1 revision

Bienvenue sur le wiki xPLCalcul

xPLCalcul est un daemon/service xPL, fonctionnant sous Windows ou Linux, et qui permet d'effectuer des calculs à partir de valeurs lues sur le réseau xPL. Le résultat du calcul est renvoyer sur le même réseau et peut, par exemple, faire basculer un device sur ON.

xPLCalcul support les opérations standard +,-,*,/, les opérateurs logique AND et OR, et les comparaisons inférieure, supérieure.

Pour plus d'information sur le protocole xPL, consulter Wikipédia ou le site du projet xPL.

Exemples d'utilisation

  • J'allume une lumière dès que la luminosité est inférieur à 30%.
  • Fixer la puissance de la chaudière en fonction de la température extérieure P=20+(20-Température extérieure/10).
  • Mettre la piscine en marche si elle a filtré moins de trois heures ou que les panneaux solaire fournissent de la chaleur.

Installation

Si la machine héberge plusieurs services xPL, il faut installer un HubxPL et s'assurer qu'il démarre en premier.

Sous Windows

Le service Windows embarque son système d'installation en tant que service. Une fois copié dans le dossier C:\Program Files\Fragxpl, il faut taper dans une invite de commande en mode administrateur :

c:
cd "Program Files\Fragxpl"
xPLCalcul /install
exit

Le service est alors inscrit dans le gestionnaire de service de Windows. Il faut maintenant le démarrer. Pour cela cliquer sur Démarrer -> Panneau de configuration -> Outils d'administration -> Services, le sélectionner dans la liste, puis cliquer sur Démarrer. Eventuellement fixer le type de démarrage sur automatique pour que le service se lance au démarrage de la machine.

Il est aussi possible de tester le service sans l'installer avec la ligne de commande xPLCalcul -Console

Pour désinstaller le service taper la ligne de commande xPLCalcul -Remove

Sous Linux

Une fois copié dans le dossier /home/fragxpl, le daemon peut être lancé avec la commande ./xPLCalcul -console.

Il gère aussi les paramètres -start, -stop et -restart ce qui lui permet de s'intégrer facilement dans les divers systèmes de démarrage de daemon sous Linux.

Utilisation

La première étape consiste à définir les calculs à effectuer. Ces derniers sont possèdent 4 propriétés :

  • configname : Le nom du calcul
  • output : Le nom du device qui va recevoir le résultat du calcul, sous la forme Vendor-Device.Instance:ID.
  • type : Type du device xPL (output, balance, slide, ...) voir les types gérés par le schéma xPL control.basic.
  • formula : Formule de calcul

Exemple :

  • configname = Piscine
  • output = fragxpl-onewire.zoe:Filtration
  • type = output
  • formula = fragxpl-fictif.zoe:PiscineFiltration|fragxpl-fictif.zoe:PiscineChauffage

Cette formule de calcul permet de mettre la filtration de la piscine en marche si l'indicateur filtration est actif ou si l'indicateur chauffage est actif.

Paramétrage du daemon

Le paramétrage du daemon se fait :

Pour plus de détails sur les différentes options consulter le chapitre Classe xPLDevCfg de la page stockage des paramètres du wiki de la librairie C++ xPLLib.

Paramétrage des calculs

Le paramétrage des calculs se fait :

Pour le fichier de configuration, il suffit de créer une nouvelle section par compteur, le nom de la section étant le nom du compteur et de renseigner les 3 propriétés : output, type, formula. Exemple :

[Piscine]
output = fragxpl-onewire.zoe:Filtration
type = output
formula = fragxpl-fictif.zoe:PiscineFiltration|fragxpl-fictif.zoe:PiscineChauffage

Pour plus d'informations consulter la page stockage des paramètres du wiki de la librairie C++ xPLLib.

Messages xPL supportés

Messages sortant

  • hbeat.app, hbeat.end
  • config.app, config.list, config.current
  • advanceconfig.list, advanceconfig.current (plus de détails sur cette classe sur le wiki de la librairie C++ xPLLib)
  • control.basic
  • sensor.request

Messages entrant

  • hbeat.request
  • config.list, config.response, config.current
  • advanceconfig.list, advanceconfig.current
  • sensor.basic