Auteur Sujet: DCC++ BaseStation  (Lu 62477 fois)

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 553
  • HO avec DCC++
    • Voir le profil
Re : DCC++ BaseStation
« Réponse #90 le: janvier 29, 2017, 03:59:58 pm »
Sur I-Pad, c'est vraiment une expérience de jeu intéressante  ;D


Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2454
  • 100% Arduino et N
    • Voir le profil
Re : DCC++ BaseStation
« Réponse #91 le: janvier 29, 2017, 06:24:59 pm »
En plus avec une superbe 241 !

Bravo  :D
Cordialement,
Dominique

plnew

  • Newbie
  • *
  • Messages: 6
    • Voir le profil
Re : DCC++ BaseStation
« Réponse #92 le: janvier 29, 2017, 08:35:43 pm »
Bonsoir à tous

j'ai fait le test d'une fonction avec une led , la  <f 20 145> lumière fonctionne (avec nodejs)

je n'arrive pas a avoir le retour vers la page controller.html (log) des fonctions envoyées
j'ai le retour seulement sur la console de nodejs. avez-vous une idée comment faire le lien entre nodejs et controller.js et controller.html


j'ai effectué les modifications concernant
localStorage.setItem("locomotives",JSON.stringify($scope.locomotives));
 scope.loadLocalStorage
mais cela me retourne Modèle : {{ locoSelectionnee.nomLong }}
je suis sous firefox 51.0.1 et je ne connais rien à localstorage.
faut-il l'autoriser ou ???


concernant les bibliothèques extérieures (ligne 9, 10 et 11 du fichier controller.html)
j'ai télécharger ces fichiers en local et placer dans le repertoire /web
<script src="web/angular.min.js"></script>
<link rel="stylesheet" href="web/css/bootstrap.min.css">
<script src="https://web/jquery.min.js"></script>

il manque les boutons ?


concernant la voie de programmation et la lecture du cv 1
quand cela fonctionne 1 fois cela fonctionne  ... 2 , 3 ,10 fois (machine 1 => cv 1 : 20)
je change de loco cela fonctionne 1 fois  ... 2 , 3 ,10 fois (machine 2 => cv1 : 18)

par contre quand cela ne fonctionne pas 1 fois c'est jusqu'à l'infini. le seul moyen que j'ai trouvé c'est de faire <0> puis <1>.

d'avance merci
Cordialement
Pascal



bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 553
  • HO avec DCC++
    • Voir le profil
Re : DCC++ BaseStation
« Réponse #93 le: janvier 29, 2017, 09:27:45 pm »
Bonsoir Pascal,

Citer
je n'arrive pas a avoir le retour vers la page controller.html (log) des fonctions envoyées
j'ai le retour seulement sur la console de nodejs. avez-vous une idée comment faire le lien entre nodejs et controller.js et controller.html

Je n'ai pas la réponse comme cela. Il faudra voir l'ensemble du code (Node et controller.js) et les échanges. Mais j'ai l'intuition que cela ne sera pas compliqué à résoudre.

Pour localstorage, désolé, je ne comprends pas du tout ce que vous dites ...  :-\  Envoyez moi le code de contrôler.js que vous avez modifié ça sera plus simple !

Alors pour les dossiers rapatriés en local, tout d'abord <script src="https://web/jquery.min.js"></script> je doute que ça fonctionne. Ne vaudrait il pas mieux mettre <script src="web/jquery.min.js">

Citer
il manque les boutons ?

J'ai bien peur qu'en copiant "web/css/bootstrap.min.css" vous n'ayez écrasé "css/w3css/w3.css" (<link rel="stylesheet" href="css/w3css/w3.css">) qui étaient déjà en local. C'est ce dossier là pour les boutons.

Et désolé une nouvelle fois, je ne vous comprends pas ici aussi :
Citer
par contre quand cela ne fonctionne pas 1 fois c'est jusqu'à l'infini. le seul moyen que j'ai trouvé c'est de faire <0> puis <1>.

Soyez plus précis. S'agit t'il d'une 3° loco ? Décrivez un peu plus le problème et la configuration concernée.

Mais vous avez passé tout le WE là dessus, ça explique sans doute un peu de fatigue. Dans tous les cas, vous avez drôlement bien avancé en peu de temps.

Bien amicalement.

Christophe

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 553
  • HO avec DCC++
    • Voir le profil
Re : DCC++ BaseStation
« Réponse #94 le: janvier 30, 2017, 06:02:48 pm »
Bonsoir à tous,

Sur les recommandations de Pascal, j'ai ajouté un certain nombre de fonctionnalités à mon Controller DCC++.



J'ai ajouté le n° de version  :)

J'ai principalement ajouté une zone de paramétrage qui est rétractable en cliquant sur la petite flèche en haut à gauche de la fenêtre.

On peut choisir l'IP de DCC++ Base Station quand on a plusieurs configurations.

Le bouton "lecture de CV's" est passé ici ce qui est plus ergonomique et je lui ai ajouté une option (menu déroulant) portant sur le nombre de CV's que l'on souhaite lire.

Mais les principales nouveautés portent sur les sauvegardes :

- Il est possible d'activer ou de désactiver la sauvegarde automatique dans le localstorage. C'est une fonctionnalité très intéressante introduite avec HTML 5. Voir détails ici : http://www.alsacreations.com/article/lire/1402-web-storage-localstorage-sessionstorage.html
- Il est également possible de gérer manuellement le contenu du localstorage, enregistrement ou effacement.
- Enfin, on peut charger un fichier de données extérieur (data.json) ou sauvegarder ces données.

Voilà donc des options complètes de sauvegarde et qui vont permettre à Pascale de résoudre son problème (absence de PHP dans sa config actuelle).

J'ai mis en téléchargement la dernière version (2.7) du Controller DCC++ en HTML : http://185.14.178.233/locoduino/controller_dccpp.zip

La version démo en ligne est visible ici : http://185.14.178.233/locoduino/controller_dccpp/controller.html

PS pour Pascal : Attention si vous faites la MAJ à reporter les modifications que vous avez pu faire dans le HTML (bibliothèques que vous avez passées en local) ou dans le JS avant d'écraser ces fichiers.

Bien amicalement.

Christophe


plnew

  • Newbie
  • *
  • Messages: 6
    • Voir le profil
Re : DCC++ BaseStation
« Réponse #95 le: janvier 30, 2017, 08:07:15 pm »
Bonjour Christophe

merci de penser à ma configuration particulière   8) ... que d'améliorations en quelques jours

le localstorage m'a encore posé des soucis mais cela doit passer par le cache de firefox et je lui demandait de ne conserver aucun historique ...
je ne suis pas certains de mon explication mais avec la version 2.7 je conserve bien mes 2 locos au redémarrage de firefox.

retour / commentaire => activé : true - Contenu : 1 élément =>   j'ai 2 locos donc pourquoi pas 2 éléments ?

le bouton "Enregistrer dans le fichier 'data-json' " par contre reste inopérant dans mon cas (pourquoi pas une option export sur le disque local )
j'ai php d'installer sur ma machine PHP 7.0.13-0ubuntu0.16.04.1


ma version de controller.html ne fonctionne toujours, les modifications par rapport à votre fichier :
<script src="web/angular.min.js"></script> => fichier angular.min.js télécharger et placé dans le repertoire web
<link rel="stylesheet" href="css/bootstrap.min.css"> => juste enlevé le chemin web , le fichier est dejà présent en local dans sous-repertoire css
<script src="web/jquery.min.js"></script> => fichier jquery.min.js  télécharger et placé dans le repertoire web

c'est le dessin des boutons qui pose problème ... si vous avez une idée , je suis preneur.

concernant le  fichier controller.js , n'étant pas à votre niveau de programmation( et de loin)  je me garde bien d'y toucher   :)
juste l'adresse IP de mon serveur a ajouter aux 2 existantes

d'ailleur si vous avez un peu de temps a me consacrer pour regarder mon fichier (joint), je n'ai toujours pas trouvé comment faire le retour entre le server node.js et les logs des pages controller.html/controller.js (ligne 97 a 108 de mon programme) d'avance merci

Cordialement
Pascal






DDEFF

  • Hero Member
  • *****
  • Messages: 623
    • Voir le profil
Re : DCC++ BaseStation
« Réponse #96 le: janvier 30, 2017, 08:56:04 pm »
Salut Christophe,

Impressionnant ! Quel plaisir de voir de tels résultats. Et ça n'est pas fini !!  ;)

Amicalement
Denis

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 553
  • HO avec DCC++
    • Voir le profil
Re : DCC++ BaseStation
« Réponse #97 le: janvier 30, 2017, 09:40:18 pm »
Bonsoir Pascal,

Rien ne vous échappe !

Citer
j'ai 2 locos donc pourquoi pas 2 éléments ?

En fait, c'est tout l'objet "locomotive" qui est envoyé au localstorage -> 1 élément. C'est exactement le même contenu que le fichier data.json, c'est comme si il disait "1 fichier dans le localstorage". Donc vous avez réussi à enregistrer dans le localstorage CQFD.

Mais il y a moyen d'être plus précis, il faudrait alors écrire : localStorage.locomotives.length qui renvérait le nombre d'éléments dans l'objet "locomotives" du localstorage.

Citer
le bouton "Enregistrer dans le fichier 'data-json' " par contre reste inopérant dans mon cas (pourquoi pas une option export sur le disque local ). j'ai php d'installer sur ma machine PHP 7.0.13-0ubuntu0.16.04.1

Enregistrer ou export c'est la même chose !

Si je n'abuse, 0ubuntu est un serveur à part entière, cela veut dire qu'il fonctionne en parallèle de Node sur votre machine. Vous avez donc 2 serveurs actifs, non ? Si c'est le cas, ça ne marche pas comme cela ! Comment voulez-vous que Node communique avec Oubuntu ? Pour moi la solution la plus élégante et efficace est d'installer le module File System de Node et d'utiliser les commandes https://www.npmjs.com/package/file-system. C'est vraiment très simple pour quelqu'un qui est arrivé là où vous en êtes.

Citer
c'est le dessin des boutons qui pose problème ... si vous avez une idée , je suis preneur.

Envoyez moi une copie d'écran. Je ne vois pas comme cela. Envoyez moi aussi une capture du répertoire sur le disque, j'ai bien l'impression qu'il y a des dossiers qui ne sont pas à leur place.

Citer
juste l'adresse IP de mon serveur a ajouter aux 2 existantes

Vous pouvez surtout supprimer les 2 autres pour les remplacer par la votre :

$scope.ipArduinoSelect = ["192.168.1.200:2560"];
Attention, il n'y a pas de "," après "192.168.1.200:2560" principe des tableaux et des objets commun à tous les langages. Au passage, je m'aperçois que j'ai oublié le ";" à la fin de la commande, mais Javascript est très permissif !

Pour le retour des logs, je pense qu'il faut programmer quelque chose comme cela à la ligne 123 de votre .js

response.writeHead(200, "OK", {'Content-Type': 'text/plain'});
         response.write('Message de test');
         response.end();

avec tout d'abord un message "en dur" : Message de test pout voir s'il apparait dans la fenêtre de log du Controller. Ensuite, ça fonctionne, il faut trouver le body renvoyé par le serveur de DCC++ Base Station, c'est le simple message de type <T 1 90 1>. Vous m'avez dit que vous le voyez sur la console, c'est une variable, elle est dans un callback sur evenement ".on(succes)" certainement de type .on('success', (function(response) {
   -> response étant le return de DCC++ Base Station
});

mais il faut trouver laquelle.

Et là, hop, il faut renvoyer le body du type :

response.writeHead(200, "OK", {'Content-Type': 'text/plain'});
         response.write(response);
         response.end();

Cette page m'a l'air super bien faite : https://nodejs.org/en/docs/guides/anatomy-of-an-http-transaction/

En tous les cas, j'ai regardé à nouveau votre code de "srv-web-serial_v0.3.js", c'est vraiment bien. Je l'ai déjà dit mais il y a derrière cela un gros potentiel car Node sait par exemple exécuter des programmes écrits en C/C++ est donc envoyer le commandes à l'Arduino par le port série. Ca va intéresser beaucoup de monde à Locoduino.

Courage  :P  ... et comptez sur moi pour vous aider.

Christophe





bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 553
  • HO avec DCC++
    • Voir le profil
Re : DCC++ BaseStation
« Réponse #98 le: janvier 30, 2017, 09:52:43 pm »
Citer
Impressionnant ! Quel plaisir de voir de tels résultats. Et ça n'est pas fini !!  ;)

Merci Denis,

Il y a un peu de boulot, c'est vrai. Ce que j'espère surtout c'est que ça reste excessivement simple d'usage pour l'utilisateur, convivial et ergonomique.

Ce que fait Pascal t'intéressera au plus haut point puisqu'il s'agit ni plus ni moins de Node.js qui fait des merveilles sur Raspberry.

Et c'est pas fini !



Bien amicalement.

Christophe

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 553
  • HO avec DCC++
    • Voir le profil
Re : DCC++ BaseStation
« Réponse #99 le: janvier 31, 2017, 01:08:54 am »
Pascal,

Il m'est revenu une chose, vous avez bien le réglage "port série" dans le fichier Config.h ? de DCC++ Base Station ?

// DEFINE COMMUNICATIONS INTERFACE
//
//  0 = Built-in Serial Port
//  1 = Arduino.cc Ethernet/SD-Card Shield
//  2 = Arduino.org Ethernet/SD-Card Shield
//  3 = Seeed Studio Ethernet/SD-Card Shield W5200

#define COMM_INTERFACE   0

avec #define COMM_INTERFACE   0

En effet, dans votre configuration, la liaison HTTP se fait du navigateur à Node. Mais de Node à l'Arduino, vous êtes en série. Ca n'a pas empêché de fonctionner mais ça peut jouer pour le message de retour puisque COMM_INTERFACE n'est pas la même.

A voir !

Christophe

Carcouaille

  • Newbie
  • *
  • Messages: 8
    • Voir le profil
Re : DCC++ BaseStation
« Réponse #100 le: novembre 01, 2017, 03:07:48 pm »
Une question :

Est-il vraiment nécessaire de mettre une carte SD avec les fichiers control.htm et locos.jso
si l'on utilise DCCpp Ethernet avec un serveur Web local ?

bien amicalement

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 553
  • HO avec DCC++
    • Voir le profil
Re : DCC++ BaseStation
« Réponse #101 le: novembre 01, 2017, 03:22:43 pm »
Bonjour,

Non si tu disposes d'un serveur web (local ou non d'ailleurs). J'ai réalisé plusieurs versions de contrôleurs dont l'une des plus abouties est présentée ici : http://forum.locoduino.org/index.php?topic=302.msg2848#msg2848

Regarde aussi la doc. Ce contrôleur est même opérationnel en ligne mais je peux bien sûr te fournir toutes les sources pour héberger sur ton propre serveur

Par ailleurs, je suis juste en train de terminer une version de ce même contrôleur mais fonctionnant cette fois avec un serveur Node.js en liaison Ethernet ou série (qui dans ce dernier cas peut fonctionner sur un UNO). Cette version avec NodeJs est plus polyvalente et très rapide puisque les connexions HTTP sont remplacées par des sockets TCP/IP.

N'hésite pas à préciser ta demande et ton besoin... et aussi ton niveau en web (javascript, PHP et dans une moindre mesure HTML)

Bien amicalement

Christophe

« Modifié: novembre 01, 2017, 05:47:28 pm par bobyAndCo »

Carcouaille

  • Newbie
  • *
  • Messages: 8
    • Voir le profil
Re : DCC++ BaseStation
« Réponse #102 le: novembre 01, 2017, 08:26:08 pm »
Bonsoir,

Oui, je me suis rendu compte que la carte SD pouvait ne servir à rien.
J'ai installé tour à tour un serveur local sur mon PC, puis un autre serveur local sur une mémoire USB et les deux serveurs fonctionnent en 'localhost' avec ton "controller v2.7" que j'avais préalablement téléchargé.

Le serveur sur PC est UwAmp Wamp Server (http://www.uwamp.com/fr/?page=download).
Le serveur sur carte USB est USBWebserver v8.6 (http://downloadbull.com/portable-usb-webserver-8-6-free-download/).

Par contre, je n'arrive pas à faire passer les commandes sur la station DCCpp que j'ai montée sur un Mega 2560. J'ai vérifié en mode série si ma station DCC++ recevait bien les messages et c'est le cas! Montage avec un shield internet Arduino.org monté et par dessus un Pololu Dual MC33926 pour fournir le courant sur les rails.

En mode COMM_INTERFACE = à 2, malgré un IP qui semble bien correct tant sur la carte que sur le contrôleur HTML, pas moyen d'allumer "power" où d'éteindre la puissance.
L'IP du DDCpp a été contrôlée avec le moniteur série de l'IDE Arduino et la station répond en retour avec l'IP programmé.

En définitive, je suis à l'arrêt en ce moment.

Concernant mes notions de programmation en HTML elles sont assez faibles en ce moment.

PS : J'ai également essayé en mode COMM_INTERFACE à 1 avec un autre shield internet chinois avec "controller W5200" et c'est pareil : pas d'ordre reçu par la station

Bien amicalement Marco

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 553
  • HO avec DCC++
    • Voir le profil
Re : DCC++ BaseStation
« Réponse #103 le: novembre 02, 2017, 10:31:07 am »
Bonjour Marco,

Tout d'abord, nous sommes arrivé (en version serveur web) à la version 3.0 que je t'invite à télécharger : http://176.154.165.92/locoduino/controller_dccpp_3.0.zip
Il y a eu de nombreuses améliorations entre la 2.7 et la 3

Pour ton problème, il faut vérifier plusieures choses :

1° - Jusqu'à la version 3.0 comprise, il faut faire un ajout de code dans le programme DCC++. As tu une version de DCC++ modifiée ? Voir la doc qui traite de ce point : http://176.154.165.92/locoduino/controller_dccpp/dccppController/reglages_dccpp.php

2° - L'installation de uwamp est selon moi la meilleure solution. Tu ne parles pas de problème de chargement de la page donc je suppose que tu la vois bien en localhost:8080/... selon comment tu as paramétré unwamp.

Ceci ressemble bien à des questions d'adresse IP. Il faut que tu puisses faire des pings pour t'assurer des adresses. Sur PC, ne ne connais pas le principe mais sur Mac par exemple, tu fais -> utilitaire de réseau et tu entres l'IP à vérifier (voir copie écran ci-dessous).

Dans l'immédiat, voilà les deux premières choses à vérifier selon moi.

Maintenant, je suis en train de finaliser une nouvelle version de ce contrôleur qui fonctionne avec un serveur NodeJs. Elle fonctionne mieux, est plus rapide et au final plus simple à configurer pour peu que l'on sache faire tourner NodeJs comme je l'explique dans la série d'articles : http://www.locoduino.org/spip.php?article216

Cette nouvelle version présente en plus l'avantage de fonctionner en Ethernet et en liaison série (donc sans shield Ethernet et éventuellement sur UNO). Si tu peux configurer NodeJs sur ton ordinateur, je te conseille vivement cette version. Comme je n'ai pas totalement fini les tests, je n'ai encore rien publié mais si cela t'intéresse, je peux te communiquer les sources rapidement. Sinon, je pense être prêt sous 8 jours environ.

Tiens moi au courant !

Christophe




« Modifié: septembre 03, 2018, 09:47:02 pm par bobyAndCo »

Thierry

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 668
    • Voir le profil
Re : DCC++ BaseStation
« Réponse #104 le: novembre 02, 2017, 10:37:51 am »
Sur PC, ne ne connais pas le principe mais sur Mac par exemple, tu fais -> utilitaire de réseau et tu entres l'IP à vérifier (voir copie écran ci-dessous).
Sur PC, il suffit d'ouvrir un ligne de commande (touche Windows, taper les lettres 'c' 'm' et 'd' et valider) puis de taper la commande ping 192.168.*.* avec les bons numéros à la place des étoiles. Soit l'Arduino répond, et ping donne un temps de communication, soit il échoue.