Giter VIP home page Giter VIP logo

remora_soft's Introduction

Version Logicielle pour toutes les versions du matériel

Cette version logicielle est compatible avec la version matérielle 1.2 ainsi que les anciennes versions des cartes electroniques. Elle est aussi compatible avec les cartes à base d'ESP8266 via un adaptateur

Installation (Particle)

  • Télécharger l'environnement de développement Particle-Dev puis lancer l'IDE.
  • Télécharger l'archive du repo logiciel github et le copier sur votre disque dur puis le décompresser
  • Une fois l'IDE ouvert, menu File/Open et ouvrir le dossier programmateur-fil-pilote-wifi-master\Logiciel\remora
  • Dans le menu Particle/Log in to Particle Cloud, entrez vos identifiants Particle pour vous connecter
  • Dans le menu Particle/Select Device selectionnez votre Spark Core ou Particle Photon
  • Ouvrir ensuite depuis l'IDE les fichers remora.ino et remora.h
  • Selectionner la version de carte utilisé dans le fichier remora.h (les defines REMORA_BOARD_Vxx)
  • Selectionner les modules utilisés dans le fichier remora.h (les defines MOD_xxxx)
  • Selectionner l'onglet remora.ino
  • Lancer la compilation+upload (icone éclair en haut à gauche)
  • Si vous avez une erreur de type "App code was invalid" durant la compilation, supprimer le ficher README.md du dossier

Installation (Arduino ESP8266 NodeMCU)

  • Suivre la procédure détaillée ici, Attention Arduino 1.6.5 pas 1.6.6 Maintenant c'est compatible Arduino 1.6.7 et je vous conseille d'utiliser la version git
  • Installer le plugins SPIFFS pour l'IDE Arduino comme indiqué ici
  • Lancer l'IDE Arduino
  • Installer la librairie NeoPixelBus depuis l'IDE Menu Sketch / Include Library / Manage Library => NeoPixelBus by Makuna
  • Installer la librairie Blynk depuis l'IDE Menu Sketch / Include Library / Manage Library / Blynk by Volodymyr Shymanskyy
  • Installer la bibliothèque ESPAsyncTCP depuis l'IDE. Télécharger la dernière release au format zip, puis Menu Croquis / Inclure une bibliothèque / Ajouter la bibliothèque .ZIP
  • Installer la bibliothèque ESPAsyncWebServer depuis l'IDE. Télécharger la dernière release au format zip, puis Menu Croquis / Inclure une bibliothèque / Ajouter la bibliothèque .ZIP
  • Installer la librairie ArduinoJson depuis l'IDE Menu Sketch / Include Library / Manage Library => ArduinoJson
  • Lancer ensuite l'IDE Arduino et ouvrir depuis celui-ci le ficher remora_soft.ino
  • Selectionner la version de carte utilisé dans le fichier remora.h (les defines REMORA_BOARD_Vxx)
  • Selectionner les modules utilisés dans le fichier remora.h (les defines MOD_xxxx)
  • choisir dans l'IDE Arduino Menu Tools / Board => NodeMCU 1.0 (ESP12E-Module) ainsi que le bon serial port
  • choisir dans l'IDE Arduino Menu Tools / CPU Frequency => 160MHz
  • choisir dans l'IDE Arduino Menu Tools / Flash Size => 4M (1M SPIFFS)
  • mettre votre SSID et mot de passe Wifi dans le fichier remora.h. DEFAULT_WIFI_AP_PASS est le mot de passe de connection Wifi au remora quand celui ci se positionne en point d'accès (lorsqu'il n'arrive pas à se connecter à vôtre Wifi par exemple) son IP est alors 192.168.4.1
		// Définir ici les identifiants de
		// connexion à votre réseau Wifi
		// =====================================
		#define DEFAULT_WIFI_SSID "VotreSSID"
		#define DEFAULT_WIFI_PASS "VotreClé"
		#define DEFAULT_WIFI_AP_PASS "Remora_WiFi"
		// =====================================
  • Lancer l'upload SPIFFS (les fichiers WEB) Menu Tools / ESP8266 Sketch Data Upload (c'est assez long)
  • Lancer la compilation + upload (CTRL-U)

Attention, pour pouvoir uploader via le cable USB, la téléinfo ne doit pas être connectée (en OTA pas de soucis avec ça) car le port série est partagé. Donc soit il faut la débrancher soit il faut sortir le module NodeMCU du support.

Pour les mêmes raisons, et afin d'afficher les informations de debug dans une console, celle-ci doit être configurée à la même vitesse que la téléinfo (car c'est le même port série) donc 1200 bps, parité paire et 7 bits de data, or cette configuration n'est pas possible dans le moniteur série de l'Arduino. Il faut alors prendre un autre terminal comme putty, coolterm, ...

  • La procédure OTA (télédéversement sans fil) est disponible ici

API Exposée (Particle)

Toutes les API se font via des requêtes HTTP sur le cloud Particle.

A documenter!

API Exposée (ESP8266 NodeMCU)

Toutes les API se font via des requêtes HTTP sur le Remora. Il existe deux formats possibles si l'on veut récupérer des données ou exécuter des action avec le Remora. Chaque requête se verra retourner des données (ou un code de bonne éxécution) au format JSON.

Toute requête sera donc adressée sous la forme http://adresse_ip_du_remora/requete_plus_ou_moins_longue dans les exemples ci dessous l'adresse IP de mon Remora est la 192.168.1.201, veillez à bien la changer pour mettre la vôtre. Les exemples ont été exécutés depuis la ligne de commande avec curl mais ils pourraient l'être depuis la barre d'addresse de votre navigateur.

Les Etats de fil pilote

Les différents états possibles de fil pilote dans l'API correspondent à la notation suivante, une lettre représente l'état lu ou le mode à positionner tel que :

C = Confort
A = Arrêt
E = Eco
H = Hors gel
1 = Eco-1 (non géré pour le moment)
2 = Eco-2 (non géré pour le moment)

Les Etats du mode de fonctionnement du relais

Voici les différents modes de fonctionnement du relais que vous pourrez trouver dans l'API:

0: arrêt
1: marche forcée
2: automatique

Les API d'intérrogation

Les API d'intérrogation se presentent sous la forme http://adresse_ip_du_remora/ma_donnee et la/les donnée(s) sont retournées au format JSON (j'ai volontairement supprimé certains sauts de lignes de sortie pour une meilleure lecture)

  • Durée de fonctionnement en secondes depuis le dernier reboot/reset/allumage http://ip_du_remora/uptime
    ~ # curl http://192.168.1.201/uptime
    { "uptime": 120 }
  • Etat du relais et du mode de fonctionnement http://ip_du_remora/relais
    ~ # curl http://192.168.1.201/relais
    { "relais": 0, "fnct_relais": 2 }
  • Etat du délestage http://ip_du_remora/delestage
		~ # curl http://192.168.1.201/delestage
		{ "niveau": 0, "zone": 1 }

Si le délestage est désactivé http://ip_du_remora/delestage

		~ # curl http://192.168.1.201/delestage
		{ "etat": "désactivé" }
  • Etat d'un fil pilote http://ip_du_remora/fpn avec n = numéro du fil pilote (1 à 7)
		~ # curl http://192.168.1.201/fp3
		{ "fp3": "E" }
  • Etat de tous les fils pilotes http://ip_du_remora/fp
		~ # curl http://192.168.1.201/fp
		{
		"fp1": "A",
		"fp2": "E",
		"fp3": "E",
		"fp4": "E",
		"fp5": "C",
		"fp6": "H",
		"fp7": "C"
		}
  • Récupérer une étiquette Téléinfo par non nom http://ip_du_remora/Nom_Etiquette
		~ # curl http://192.168.1.201/PAPP
		{ "PAPP": 170 }
		~ # curl http://192.168.1.201/IINST
		{ "IINST": 1 }
		~ # curl http://192.168.1.201/PTEC
		{ "PTEC":"HC.." }
  • Récupérer toutes les étiquettes Téléinfo en une fois http://ip_du_remora/tinfo
		~ # curl http://192.168.1.201/tinfo
		{ "_UPTIME":1614,
			"ADCO":31428067147,
			"OPTARIF":"HC..",
			"ISOUSC":15,
			"HCHC":410994,
			"HCHP":0,
			"PTEC":"HC..",
			"IINST":1,
			"IMAX":1,
			"PAPP":170,
			"HHPHC":3,
			"MOTDETAT":0
		}

A noter la présence de certaines étiquettes virtuelles commencant par un _

Les API d'action

Les API d'action se presentent sous la forme http://adresse_ip_du_remora/?action=ma_donnee, notez la différence avec les intérrogations, le ?. Le résultat est retourné au format JSON avec un code réponse, il est :

  • négatif en cas d'erreur
  • à 0 si tout est OK
  • positif pour indiquer un code retour OK différent si besoin.

Note, il est possible d'enchainer les actions en une requête mais un seul code d'erreur sera retourné pour l'ensemble, si une des commandes échoue, il faudra intérroger afin de savoir laquelle n'a pas fonctionnée.

  • Faire un reset (reboot) http://ip_du_remora/reset
		# curl http://192.168.1.201/reset
		OK, Redémarrage en cours
  • Faire une remise à zero usine http://ip_du_remora/factory_reset, attention tout va être vidé, y compris le système de fichier SPIFFS, c'est comme si votre NodeMCU arrivait d'usine
		# curl http://192.168.1.201/factory_reset
		OK, Redémarrage en cours
  • Activer le relais http://ip_du_remora/?relais=1
		# curl http://192.168.1.201/?relais=1
		{ "response": 0 }
  • désactiver le relais http://ip_du_remora/?relais=0
		# curl http://192.168.1.201/?relais=0
		{ "response": 0 }
  • Exemple d'erreur avec le relais http://ip_du_remora/?relais=3
		# curl http://192.168.1.201/?relais=3
		{ "response": -1 }
  • Utiliser le mode automatique du relais basé sur les changements de périodes tarifaires
		# curl http://192.168.1.201/?frelais=2
		{ "response": 0 }
  • Arrêter la gestion du relais et ouvrir le contact
		# curl http://192.168.1.201/?frelais=0
		{ "response": 0 }
  • Mettre le relais en marche forcée
		# curl http://192.168.1.201/?frelais=1
		{ "response": 0 }

Il est aussi possible de forcer le relais jusqu'au prochain changement de période tarifaire, si le mode est en automatique. Pour cela, il vous suffit d'activer le relais directement.

		# curl http://192.168.1.201/?relais=1
		{ "response": 0 }
  • selectionne le mode d'un des fils pilotes http://ip_du_remora/?setfp=na avec n=numéro du fil pilote et a=le mode à positionner (non sensible à la casse) Fil pilote 1 en arret
		# curl http://192.168.1.201?setfp=1a
		{ "response": 0 }

Fil pilote 7 en Eco

		# curl http://192.168.1.201?setfp=7E
		{ "response": 0 }

Mauvaise commande

		curl http://192.168.1.201?setfp=5X
		{ "response": -1 }
  • Selectionne le mode d'un ou plusieurs les fils pilotes d'un coup http://ip_du_remora/?fp=CMD avec 7 commandes de fil pilote. Tous les fils pilote en confort
		curl http://192.168.1.201/?fp=CCCCCCC
		{ "response": 0 }

Tous les fils pilote en arret

		curl http://192.168.1.201/?fp=AAAAAAA
		{ "response": 0 }

Tous les fils pilote en eco

		curl http://192.168.1.201/?fp=EEEEEEE
		{ "response": 0 }

Tous OFF sauf le fil pilote 1 en confort

		curl http://192.168.1.201/?fp=CAAAAAA
		{ "response": 0 }

Tous OFF sauf le fil pilote 2 A-AAAAA

		curl http://192.168.1.201/?fp=CCCCCCC
		{ "response": 0 }

FP1 Eco, FP2 inchangé, FP3 confort, FP4 hors gel, FP5 arrêt, FP6 Eco-1, FP7 Eco-2

		curl http://192.168.1.201/?fp=E-CHA12
		{ "response": -1 }

Erreur car les modes ECO-1 et ECO-1 ne sont pas gérés pour le moment.

A faire

  • Mettre des icones plus sympas sur l'afficheur
  • Gérer les retour de sondes RF, pour le moment seules les trames sont affichées sur la serial, rien n'est encore fait
  • Gérer le RF des sondes Oregon Scientific
  • pour le moment seul les OLED I2C sont gérés
  • tout autre idée est bienvenue

Historiques des Modifications

16/02/2015 : Ajout délestage cascadocyclique / Possibilité de ne récupérer l'état que d'un seul fil pilote

14/04/2015 : Ajout d'une variable spark pour la teleinfo. Passage en un seul appel pour script jeedom. Les variables d'origine restent utilisables.

30/09/2015 : voir le post dédié.

02/12/2015 : Ajout Version 1.3 Remora NodeMCU

04/01/2016 : Integration Interface WEB

01/10/2016 : Ajout de la (dés)activation du délestage. Ajout de la gestion automatisée du mode du relais.

07/01/2017 : Modification de la taille de la clé API pour Jeedom (32 => 48)

08/02/2017 : Ajout de la variable RELAIS_REVERSE à décommenter dans remora.h pour inverser l'état du relais en cas de problème

04/03/2017 : Ajout des connexions TCP Asynchrones

Exemple

Pour les photos la téléinfo n'était pas branchée sur la carte, c'est pour celà que les compteurs et le bargraphe sont à 0

Top  Bottom

Avec la téléinfo branchée sur la carte, le bargraph indique la puissance instantanée par rapport au contrat souscrit, ici soit 11% car on consomme 5A sur un contrat de 45A. Nous sommes en heures pleines (affichage sur fond blanc) Bottom

remora_soft's People

Contributors

azema avatar fmartinou avatar hallard avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar

remora_soft's Issues

Autocomplete champ réseau WiFi

Ajout de l'autocomplétion sur le champ Réseau WiFi dans l'onglet Configuration de l'interface Web.

Le champ sera complété automatiquement avec le résultat de la requête /wifiscan.json, si le statut de la requête est OK.
Une icône information est ajouté après le label pour indiqué l'autocomplétion, ainsi que dans le placeholder du champ.

soft restart plante

Les redémarrages soft de la Remora plantent:

  • Factory Reset
  • Reset
  • Save config (modification de l'authentification OTA)

Ajout de la gestion de sondes RFM

Ajouter la possibilité de raccorder des sondes RFM à la gateway Remora en utilisant le protocole ULPNodeProtocol.

La gateway doit pouvoir fournir un identifiant à chaque nouvelle sonde.
Chaque sonde doit pouvoir envoyer et recevoir des informations de la gateway.
Les informations reçues par la gateway doivent être stockées durant un moment ou définitivement en fonction des informations reçues.

L'idée principale est de permettre à une sonde de pouvoir fournir les informations suivantes à la Remora:

  • Associer la sonde à une zone de chauffe (soit une sortie fil pilote)
  • Définir une température de consigne pour le mode Confort
  • Définir une température de consigne pour le mode ECO
  • Forcer un ordre de chauffe
  • remonter une température

Recevoir les informations suivantes de la Remora:

  • L'heure courante
  • L'ordre en cours
  • La température de consigne en cours

Exception dans handleFormConfig

Dans le formulaire de configuration, le port de Jeedom est définit par une liste de sélection.
Lorsque le port définit sur la Remora ne correspond pas aux options de la liste et que l'on enregistre le formulaire sans modifier le port de Jeedom. Le paramètre du port de Jeedom n'est pas envoyé dans la requête POST.
Or dans la fonction handleFormConfig du WebServer, on ne vérifie pas si le paramètre est présent, ce qui lève une exception, car on fait appelle à la fonction toInt() sur une valeur nulle.

Infos WiFi dans la page système

Ajouter les informations du réseau WiFi dans la page système de l'interface Web.

  • Le mode de réseau WiFi (AP, STA)
  • L'adresse IP
  • L'adresse MAC
  • Les clients connectés en mode AP.

Améliorer les infos de l'afficheur

Améliorer l'afficheur en ajoutant de nouvelles informations à afficher, comme:

  • Les infos de consommation
  • L'état des fils pilotes et du relais
  • Le logo de la Remora
  • Les infos WiFi
  • Les infos des sondes RFM
  • La mise à jour via OTA (Début, progression, Restart)

Permettre d'afficher les infos dans plusieurs écrans et de les faire défiler à intervalles régulières.
Les infos des sondes RFM étant optionnelles, car tout le monde n'utilise pas le protocole ULPNode.

Amélioration interface Web

Lorsque l'on est sur l'interface Web, page Téléinformation ou Système, les tableaux sont rafraîchi toutes les secondes, ce qui implique un appel AJAX à l'API.

Afin de ne pas charger inutilement la Remora, il serait intéressant de ne pas appeler l'API, lorsque la page Web de la Remora n'est pas affiché.

Il est possible de détecter, en Javascript, lorsque l'on change d'onglet ou que l'on minimise la fenêtre du navigateur Web. Si c'est le cas, on arrête d'appeler l'API, par contre, on reste en attente d'un nouvel affichage de la page Web.

Améliorer le scan des réseaux WiFi

Améliorer la fonction de recherche des réseaux WiFi en asynchrone dans le Webserver, en utilisant la fonction scanNetworksAsync de la classe ESP8266WiFiScanClass.
Modifier la réalisation du JSON en utilisant un objet ArduinoJson plutôt qu'une String.
Ajouter aussi les informations de cryptage et de canal des réseaux dans la réponse JSON.

Bug Webserver fuite de mémoire

Lors de l'affichage de l'onglet Système, la quantité de RAM diminue à vue d'oeil.

Cela viendrait de la récupération des adresses IP des clients connectés, lorsque le WiFi de la Remora est en mode AP.

Suppression support Spark

La Remora ayant pas mal évoluée aux niveaux soft et hard, le support du Spark n'est plus possible.
Il serait donc temps de supprimer le code du support du Spark.

Sécurisation de l'interface Web

Il serait intéressant de sécuriser une partie de l'interface Web. La partie modification (config et fils pilotes).

Le problème est qu'il est possible de faire ça seulement sur l'interface Web, mais si l'API reste en accès libre, cela n'aura pas vraiment d'intérêt. Car il suffira de passer en direct par l'API pour effectuer des modifications.

L'idée serait de créer une page d'authentification sur l'interface Web, qui permettrait de fournir un token à l'utilisateur. Ce token sera ensuite demandé pour chaque appel en écriture à l'API.

Les questions qui me viennent à l'esprit sont:

  • Qui a le droit de créer un compte sur l'interface Web ?
  • Faut'il autoriser la création de plusieurs comptes ?
  • Quelle méthode faut-il mettre en place pour récupérer le mot de passe, en cas de perte ?
  • Le token doit-il être régénéré à chaque nouvelle session ?
  • Quelle durée doit on donner à la session ?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.