wDSPiy - commander le DSPiy par Wifi (et par Alexa et en MQTT)

Discutions générales sur le DSPiy et tout ce qui s'y rattache
Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: wDSPiy

Messagepar alka » ven. 23 déc. 2016 20:21

ah oui, je comprend bien. Une petite sieste ou un jeu c'est bien plus marrant que d'obéir :diable:

aujourd'hui c'était bataille avec javascript et html pour faire un slider Volume qui renvoie la bonne info a mon serveur web.
J'avais commencé par faire un slider qui allait de 0 à 110 , donc un volume qui monte de.... 0 à -75dB !! l'échelle inversée du volume me créé des noeuds dans le cerveau :mrgreen:
acheter un DSPiy ? c'est ici

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: wDSPiy

Messagepar alka » ven. 30 déc. 2016 13:43

amis programmeurs, bonjour :)

aujourd'hui je vous parle de json (prononcer djésonne, comme le prénom Jason a l'anglaise)

json c'est un format d'échange de données. La forme la plus simple pour deux variables c'est

Code : Tout sélectionner

{"variable 1": "valeur 1", "variable 2": "valeur 2"} 

Ca peut etre plus complexe, permet l'imbrication et on peut en faire une structure similaire à XML.
(pour en savoir plus : http://www.w3schools.com/js/js_json_intro.asp )
Le format json est compris par les langages habituels (php, javascript, C, ...).

Pourquoi vous parler de ça ? parce que c'est bien pratique pour les objets IOT qui échangent des données de façon légère. Surtout si json est associé à son pote AJAX. (oui ils sont branché mythologie grecque... ;) )

Exemple : le traditionnel "allumer une led" sur une carte electronique depuis une page html. la carte electonique heberge un serveur http.

Dabord en version classique, décrite un peu partout sur le web :
- une page html affiche "led is ON" ou "led is OFF" et un bouton "OFF" ou "ON" selon le cas
- le bouton est un lien du style href="adresse_de_mon_serveur/action?Led=On" ou "action?Led=Off" selon ce qu'il faut faire.
(j'utilise cette syntaxe classique bien connue d'une commande GET comme les submit de formulaire).
- le serveur sur la carte reçoit cette commande, effectue l'action d'allumer ou éteindre la led puis renvoie la page html mise a jour avec le bon texte.

Vu du client: on a cliqué sur un lien et la page s'est rafraichie. Classique.

C'est simple, mais souffre de quelques limitations :
- si la page html fait d'autres choses que juste allumer/eteindre la led, ça peut etre genant de rafraichir toute la page.
- c'est lourd d'envoyer une page complète juste pour signaler qu'une led est allumée ou éteinte.
- imaginons que la led peut aussi etre allumée par un BP. Pour savoir l'état de la led, la page html doit régulièrement consulter le serveur. Rafraichir la page a chaque fois c'est lourd en trafic et pas terrible visuellement pour l'utilisateur.

Ce serait cool que des informations d'une page html puissent etre rafraichies en consultant un serveur sans que l'intégralité de la page soit chargée. C'est le role d'AJAX et de la commande magique XMLHttpRequest. C'est tres largement utilisé sur le web sur les pages dites "dynamiques". Ce genre de requete peut etre synchrone ou asynchrone ce qui est bien pratique.

Le meme exemple d'allumage de led, cette fois avec AJAX/json :
- la page html affiche toutes sortes de choses dont "led is On" et un bouton Off.
- le bouton 'On' ou 'Off' n'est plus un lien de type href mais un envoi de requete Ajax * en javascript sur l'adresse "mon_serveur/action?Led=Off"
- le serveur fait l'action d'éteindre la led et renvoie en retour non pas une page html complète mais un paquet json du style {"led":" 1} si allumée ou {"led": 0} si éteinte.

- régulièrement, la page consulte le serveur pour savoir si l'état de la led a été changé par un BP extérieur. La page emet un XMLHttpRequest par exemple sur l'adresse "mon_serveur/etatLed". Le serveur répond avec le petit paquet json.

Tout se déroule sans rechargement de la page , par micro échanges de données. L'utilisateur voit le statut changer de façon "smooth" et bien plus rapide que le chargement complet d'une page.

(*) exemple de syntaxe complete en javascript en asynchrone

Code : Tout sélectionner

var req = new XMLHttpRequest();
req.open('GET', '//ipinfo.io/json', true);
req.onreadystatechange = function (e) {
if (req.readyState == 4 && req.status == 200)  {
    var reponse = JSON.parse(req.responseText);
    alert(reponse.ip);
}
req.send(null); 

ce petit exemple affiche votre adresse IP. On y voit que javascript comprend le json ;)
Vous pouvez cliquer sur le lien pour voir le paquet json envoyé par ipinfo (et aussi voir ce qu'on sait de vous rien que par le browser) : http://ipinfo.io/json
acheter un DSPiy ? c'est ici

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3519
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: wDSPiy

Messagepar thierryvalk » ven. 30 déc. 2016 17:00

PS: pour afficher du code sur le forum, la balise [code=php] donne un affiche plus coloré.

JSON est pratique pour beaucoup de choses et pas réservé aux IOT.
On peut l'utiliser échanger des données entre différents softs, comme DStudio avec rePhase.
Mais aussi pour sauvegarder des données, par exemple il aurait été pratique de l'utiliser pour les fichiers .deq de DStudio.
Un de ses grand avantages est de pouvoir lui donner un peu de tout comme types de variables.
Il me semble que tu envoie des valeurs 0 ou 1, tu aurais pu envoyer du boolean.

Maintenant avec un peu de PHP on devrait pouvoir faire la même chose en utilisant moins de technologies.

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: wDSPiy

Messagepar alka » ven. 30 déc. 2016 17:37

oui bien sur on pourrait faire avec encore moins en inventant son propre codage. L'idee c'est d'utiliser ce qui existe : la vertu des standards.
Ca facilite le dialogue et dans un contexte IOT avec plein de machins connectés c'est plus qu'utile de parler une langue commune.

ma petite prose met surtout l'accent sur la combinaison ajax+json. Les deux ne sont pas obligatoirement utilisés ensemble, et dans ce contexte font merveille.

Ca me permet de faire une interface web qui ressemble a une interface native.
Enfin, si les navigateurs parlaient le html de la même façon, ce serait plus simple !
acheter un DSPiy ? c'est ici

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3519
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: wDSPiy

Messagepar thierryvalk » ven. 30 déc. 2016 17:50

L'idee c'est d'utiliser ce qui existe : la vertu des standards.

Enfin, si les navigateurs parlaient le html de la même façon, ce serait plus simple !

Oui pour la vertu des standards, mais comme tu le dis ils ne sont pas toujours identiques et c'est bien le problème de notre époque avec des standards "évolutifs".

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: wDSPiy

Messagepar alka » ven. 30 déc. 2016 18:39

disons que 99% du html est bien compris par tous la navigateurs sur pc et 98% sur mobile.
Pas de chance avec mes histoires, je me frotte aux parties grises :mrgreen:
C'est pas que ça ne marche pas. C'est que l''affichage n'est pas tout a fait pareil. Je développe sur pc avec Firefox et, ça m'ennuie de l'avouer, c'est Chrome sur android qui est plus fidèle que Firefox sur android !!
acheter un DSPiy ? c'est ici

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: wDSPiy

Messagepar alka » ven. 27 janv. 2017 11:01

ayé, le soft du wDSPiy est prêt :)
ajouté hier la dernière chose que je voulais y mettre : la mise a jour OTA (Over The Air) ce qui permet de couper le cordon ombilical.

Ca tombe bien : j'en étais arrivé à la version de développement v10
v10 ou v1.0 c'est point pareil ;)

Copies d'écran de la partie web :
Image Image Image

Ce que ça fait :
- toutes les commandes manuelles du DSPiy par BP/Molette sont disponibles, de même que l'écran

- un wtriggerIN (branché sur l'amanero dans mon cas) qui met le DSPiy ON/SBY automatiquement tout en maintenant la priorité du BP pour contrôle manuel

- un wtriggerOUT pour piloter une carte externe (dans mon cas, vers la carte SYM 6 voies, qui elle même pilote l'ampli)

- une interface http qui permet de :
-- piloter le DSPiy (on/sby, volume, preset, source)
-- voir l'état du DSPiy et de la carte wDSPiy et quelques actions de maintenance technique
-- voir le log des événements et éventuels messages d'erreur (utile aussi en période de debug)

- possède son capteur IR qui se substitue à celui du DSPiy et gère les commandes habituelles depuis une télécommande Nec. Traduit les commandes IR recues en protocole Nec vers le protocole Sony pour le DSPiy

- exploite les infos MultiDSPiy envoyées par le DSPiy sur son TriggerOut (protocole Sony). Cela permet de confirmer la bonne exécution des commandes et de recevoir les informations sur l'état du DSPiy

- Contrôle de volume (à la télécommande ou par web) de façon plus précise que le DSPiy : saut par step de 1dB sauf pour les valeurs inférieures a -50dB qui sont parcourues une par une (partie non-linéaire de la table de volume entre -51 et -75dB).

- force le volume au PowerOn ou pas, indépendamment de la configuration du DSPiy

- paramétrage par fichier de configuration .txt, téléchargeable par ftp

- évolutif, si j'ai d'autres idées ;)

Architecture technique:
- le pilotage du DSPiy se fait par son entrée IR (mix de commandes Sony directes et MultiDSPiy). Réception des codes IR multidspiy depuis TriggerOut du DSPiy. Tout le reste est libre sur le DSPiy.
- connection wifi gérée (connection automatique lors du reset et si echec, ouverture d'un Access Point local temporaire pour entrer les paramètres de connection)
- serveur Web http
- serveur Ftp
- synchronisation quotidienne de l'heure par Ntp
- mise a jour sécurisée du programme par wifi (OTA update)

Ce qui reste a faire
- du nettoyage et de la documentation avant que je n'oublie
- une interface native pour windows en utilisant ELECTRON. surtout pour apprendre cet environnement.
- porter sur une "vraie" carte NodeMCU 1.0
- installer dans le DSPiy v2
acheter un DSPiy ? c'est ici

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3519
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: wDSPiy

Messagepar thierryvalk » ven. 27 janv. 2017 11:27

Superbe !

Ce qui manque : affichage des noms de preset. :]
Ce qui serait génial, c'est d'avoir une sortie IR modulée pour y brancher une LED et pouvoir émuler une telco pour les autres appareils tels que la source.

Voilà, c'est à chaud, je trouverais bien d'autres choses. :hehe:

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: wDSPiy

Messagepar alka » ven. 27 janv. 2017 11:57

thierryvalk a écrit :Ce qui manque : affichage des noms de preset. :]
possible et pas difficile a faire mais faudra les entrer manuellement et maintenir si je change dans le DSPiy. Les Presets n'étant pas ma priorité je n'y ai même pas pensé.

Ce qui serait génial, c'est d'avoir une sortie IR modulée pour y brancher une LED et pouvoir émuler une telco pour les autres appareils tels que la source.
bonne idée. dans mon cas pas bien utile puisque la source est un pc.
Ca nécessite aussi une télécommande plus riche avec plus de boutons pour les fonctions additionnelles pour la source.
Faut dire que je suis dans une logique différente. Le DSPiy est pensé pour être la tour de controle. Je suis dans la logique où la source controle le DSPiy. Je cherche plus a controler le DSPiy qu'a donner des moyens de controle au DSPiy.

Voilà, c'est à chaud, je trouverais bien d'autres choses. :hehe:
continue :)
acheter un DSPiy ? c'est ici

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: wDSPiy

Messagepar alka » dim. 29 janv. 2017 13:10

il y aura donc une version 11 :mrgreen:
en mettant le soft sur une autre carte NodeMCU, l'absence de réponse du DSPiy (non connecté), a créé une erreur en boucle et le fichier log a rempli la mémoire flash en quelques secondes ::d
C'est corrigé et aussi l'occasion de rajouter une précaution élémentaire qu'on devrait toujours mettre sur des écritures de fichier : stopper l'écriture si la taille devient déraisonnable.


D'ailleurs, j'ai un bug assez étonnant sur ma carte de développement qui n'existe pas sur les autres cartes NodeMCU que j'ai : le transfert de fichier en ftp du pc vers le système de fichiers en flash SPIFFS bloque a 5840 caractères max. 5840 c'est 4*1460, la taille d'un bloc en flash. Ca ne peut pas etre une coincidence. Personne n'en parle sur le web. L'écriture de ficher depuis le µC de la carte ne pose aucun souci de taille, pourtant la lib Ftp et moi utilisons la meme fonction d'écriture du systeme de fichier en flash SPIFFS. Seule différence : Ftp écrit en rafale un buffer de 1024 char alors que moi ce sont des tailles aléatoires.
Flash défaillante selon le mode d'écriture, c'est possible ?
acheter un DSPiy ? c'est ici

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3519
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: wDSPiy

Messagepar thierryvalk » dim. 29 janv. 2017 14:38

Flash défaillante selon le mode d'écriture, c'est possible ?

Non.
Peut-être un région de la flash protégée ?
Différence entre mode Debug et Release ?

Je ne comprend pas trop les tailles, et que tu écrive en taille aléatoire.
Avec une flash on écrit par page, qu'une page soit complète ou pas l'écriture a lieu et il n'est pas possible (selon moi) de recommencer une écriture à une adresse autre que celle de début de page.

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: wDSPiy

Messagepar alka » dim. 29 janv. 2017 16:03

Faut que j'explique il y a un intermédiaire avec la flash : le système de fichier SPIFFS.
C'est lui qui gère les blocs et tout ça.
La lib FTP et moi utilisons le SPIFFS. On lit/écrit/renomme/efface simplement des fichiers comme on ferait sur un disque dur.

Quand je dis que j'écris de longueur aléatoire c'est que mes écritures sont des string de taille variable alors que la lib Ftp bufferise le transfert qu'elle reçoit depuis un port série (l'USB) et écrit par paquet de 1024 caracteres dans le fichier. C'est un buffer avant celui de SPIFFS. Comme c'est la seule différence, je la mentionne mais ça ne me parait pas décisif non plus.

Je n'ai pas regardé la lib SPIFFS dans le détail pour savoir comment elle gère la flash. Je peux écrire 1 seul caractère dans un fichier et il devient de suite persistant. Et manifestement ça ne consomme pas un bloc entier a chaque fois sinon je remplirai bien vite la flash disponible.


Bon ça restera un mystère cette affaire. A 3€ la carte, je n'ai aucun regret a la mettre au fond du placard et utiliser une d'un modèle un peu plus officiel.
acheter un DSPiy ? c'est ici

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3519
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: wDSPiy

Messagepar thierryvalk » dim. 29 janv. 2017 17:05

La lib FTP et moi utilisons le SPIFFS. On lit/écrit/renomme/efface simplement des fichiers comme on ferait sur un disque dur.

Pufff trop simple...

Et manifestement ça ne consomme pas un bloc entier a chaque fois sinon je remplirai bien vite la flash disponible.

Pas un bloc mais une page.
Les Flashs que je connais ont des blocs de 4Kbytes et des pages de 256 bytes.
Donc on efface au minimum 4k et l'on écrit au minimum 256 bytes, sauf buffer RAM, mais là il faut se dépêcher lorsque l'on coupe l'alimentation.

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: wDSPiy

Messagepar alka » dim. 29 janv. 2017 18:22

j'ai peut etre mélangé bloc et page :]

Pufff trop simple...
c'est mon coté green : je réutilise ;)
acheter un DSPiy ? c'est ici

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: wDSPiy

Messagepar alka » dim. 29 janv. 2017 20:26

je viens de lire cet article instructif sur la gestion de la flash. Je comprend mieux certaines choses.
https://flashdba.com/2014/06/20/underst ... am-erases/

Arduino de base fait la mise a jour des programmes et des data en transférant la totalité de la taille de la flash, meme si les données a transférer ne représentent que quels Ko. C'est long mais a le mérite de tout remettre au propre.
acheter un DSPiy ? c'est ici

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: wDSPiy

Messagepar alka » dim. 12 févr. 2017 14:38

petite question cablage :

le synoptique des liaisons entre les cartes:
Image

Celle qui m'interpelle c'est la rouge. La présence du 3V3 sur l'amanero sert de trigger pour la carte NodeMCU.
Ca fait une belle boucle des masses entre DSPiy, Amanero et NodeMCU

Cela apporterait quelque chose d'isoler cette liaison rouge avec un optocoupleur ou je me fais des noeuds au cerveau ?
acheter un DSPiy ? c'est ici

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3519
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: wDSPiy

Messagepar thierryvalk » dim. 12 févr. 2017 14:47

Je dirais que c'est bon comme cela.
-Boucle oui et encore, mais reste dans le domaine du digital, si j'ai bien vu.
-C'est le 3V3 sur une GPIO, c'est donc du DC avec un courant ridicule.

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: wDSPiy

Messagepar alka » dim. 12 févr. 2017 14:55

c'est du rapide :)
oui ce n'est que du digital.
merci :merci:
acheter un DSPiy ? c'est ici


Retourner vers « DSPiy général »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 8 invités