Python et Ethernet/UDP

Python est le langage de prédilection du Raspberry Pi

Modérateurs : Francois, Manfraid

Répondre
spourre
Raspinaute
Messages : 735
Enregistré le : lun. 22 déc. 2014 16:50
Localisation : 67380 LINGOLSHEIM

Re: Python et Ethernet/UDP

Message par spourre » mer. 12 juil. 2017 18:33

Pinhapple a écrit :...
Ce qui m'inquiète plutôt, c'est la capacité du RPi et de Raspbian (OS non-temps réel) à choper toutes les informations envoyées. ...
Bjr,

Raspbian, comme tous les Linux (et les UNIX) n'est pas et ne prétend pas être "temps réel (en espérant que nous avons la même définition ).

Sans aller jusqu'au extensions RT, voire le bare metal, il faut faire la chasse au gaspis :ugeek:
Tu dois virer tous les service qui ne te servent à rien
:
As-tu besoin de l'heure précise pour horodater tes échantillons ou une simple mise à l'heure manuelle, suffit ? Si la réponse est non (ou si la plateforme radar n'a pas toujours accès à Internet, tu peux virer NTPD et, si nécessaire, mettre une horloge TRC.

As-tu besoin d'imprimer ? A priori, je pense que nom puisque les échantillons sont sauvegardés sur une SD carte. Il est donc possible de copier sur clef USB pour imprimer au bureau. Dans ce cas, tu peux aussi virer CUPSD.

Les écritures sur carte SD sont pénalisantes (en plus de l"usure" de la carte). Tu peux limiter les fichiers log et les mettre en tmpfs.

Il faut tout passer en revue et faire maigrir cette distribution. Ce serait encore plus facile avec une distribution utilisant le sysinit (hérité d'UINIX) et non cette merd* infâme de systemd qui est, AMHA pour un système embarquée, un non-sens total.
Je t'avais donné un lien vers le site de Christophe Blaess.

Nota: J'ai du mal à imaginer l'intérêt de regarder défiler tes 16384 affichages (intervalle + durée)
Dans un autre fil, tu nous indiquais avoir réussi à afficher un segment tournant, représentant la position de l'antenne. Il serait plus visuel de moduler ce segment (voire d'en changer la couleur) en fonction de son écart par rapport à l'intervalle théorique).
L'analyse fine des données peut se faire, en différé, sur un PC de bureau pour trouver , par exemple, si la variation est périodique (balourd ou point dur à rechercher).

Combien de fils as-tu le droit de tirer entre l'Arduino et le Pi ? Es-tu limité aux signaux SPI ou as-tu le droit à plus de fils (pour déclencher une interruption par exemple) ?

Comme on s'éloigne totalement de l’Ethernet et du sujet initial, il serait peut-être opportun d'ouvrir une nouvelle discussion pour attirer l'attention de nouveaux contributeurs.
A+

Sylvain

PS) Ce fil contient néanmoins beaucoup d'information sur les types de données et les piège du boutiste (gros et petit).

Pinhapple
Raspinaute
Messages : 125
Enregistré le : jeu. 23 févr. 2017 15:53
Localisation : Rouen

Re: Python et Ethernet/UDP

Message par Pinhapple » mer. 12 juil. 2017 18:48

destroyedlolo a écrit :Avec des interruptions ?
Oui, en utilisant WiringPi en C !
spourre a écrit :Raspbian, comme tous les Linux (et les UNIX) n'est pas et ne prétend pas être "temps réel (en espérant que nous avons la même définition ).

Sans aller jusqu'au extensions RT, voire le bare metal, il faut faire la chasse au gaspis :ugeek:
Oui, j'ai toujours sous le coude ton looong article sur le temps réel avec le RPi ! ;)
destroyedlolo a écrit :Tu dois virer tous les service qui ne te servent à rien [...]
Wi-Fi, Bluetooth, charge du processeur, etc., la liste est longue !
destroyedlolo a écrit :Il faut tout passer en revue et faire maigrir cette distribution. Ce serait encore plus facile avec une distribution utilisant le sysinit (hérité d'UINIX) et non cette merd* infâme de systemd qui est, AMHA pour un système embarquée, un non-sens total.
Je t'avais donné un lien vers le site de Christophe Blaess.
Je vais fouiller mes posts et mes favoris pour retrouver ça. Par curiosité, qu'est-ce qui rendrait l'amaigrissement de Raspbian plus facile avec une distrib' utilisant le sysinit ? Moins de services ?
destroyedlolo a écrit :Nota: J'ai du mal à imaginer l'intérêt de regarder défiler tes 16384 affichages (intervalle + durée)
Moi aussi ! :D
Ce serait la première étape de cette partie SPI en tout cas, quitte à ensuite garder tout ça en mémoire et n'afficher que la moyenne des durées à chaque tour par exemple.
destroyedlolo a écrit :Dans un autre fil, tu nous indiquais avoir réussi à afficher un segment tournant, représentant la position de l'antenne. Il serait plus visuel de moduler ce segment (voire d'en changer la couleur) en fonction de son écart par rapport à l'intervalle théorique).
Tout à fait, j'avais fait ça en vitesse avec Python 3 pour avoir un indicateur de position instantanée du radar. Ce n'était pas demandé, c'était juste pour moi afin d'avoir les comparaisons avec la vraie antenne rotative. C'est une bonne idée que tu suggères là ! Ça permettrait de mettre certaines choses en évidence, comme le vent, qui fait accélérer l'antenne quand elle l'a de dos, ou ralentir quand elle l'a de face.
destroyedlolo a écrit :Combien de fils as-tu le droit de tirer entre l'Arduino et le Pi ? Es-tu limité aux signaux SPI ou as-tu le droit à plus de fils (pour déclencher une interruption par exemple) ?
Je n'ai pas de limite, ni de taille ni de quantité.
destroyedlolo a écrit :Comme on s'éloigne totalement de l’Ethernet et du sujet initial, il serait peut-être opportun d'ouvrir une nouvelle discussion pour attirer l'attention de nouveaux contributeurs.
C'est fait ! ;)

Ce sujet touchant à sa fin jusqu'à ce que j'y apporte une conclusion post-stage, je vous remercie une fois de plus pour votre patience et l'aide apportée, qui m'auront appris beaucoup de choses !
  • RPi 3 + LibreELEC / RPi 3 + RetroPie / RPi B+ + Sense HAT ou Framboisedorf ou module caméra
  • Arduino Mega, Uno, Nano
  • Freescale FRDM KL25Z

spourre
Raspinaute
Messages : 735
Enregistré le : lun. 22 déc. 2014 16:50
Localisation : 67380 LINGOLSHEIM

Re: Python et Ethernet/UDP

Message par spourre » mer. 12 juil. 2017 19:13

Pinhapple a écrit : Je vais fouiller mes posts et mes favoris pour retrouver ça. Par curiosité, qu'est-ce qui rendrait l'amaigrissement de Raspbian plus facile avec une distrib' utilisant le sysinit ? Moins de services ?
...
!
Je vais essayer de faire bref car c'est très technique et on s'éloigne tout de même pas mal du sujet (mais c'est ton fil à toi).
Le sysinit hérité d'UNIX est un modèle de clareté (si, si, je suis parfaitement objectif, c'est pas comme la base de registres, avec des ruches et des valeurs binaires, inventée par un type qui avait fumé la moquette).

C'est basé sur des scripts parfaitement lisibles par un humain et éditables avec un outil comme VI. Ces scripts lancent les services ou les arrêtent, selon le lien positionné, par niveau d'init. Si le nom du lien symbolique commence par S (comme Start), le démon est lancé, s'il commence par K (comme Kill), le démon est arrêté pour ce niveau d'init (il y a des niveaux prédéfinis comme S pour single, 3 pour muti-users + réseau, 6 pour X11 ...)

Systemd est apparu pour obtenir un système plus "plug and pray", à la Windows, qui accepte plus de branchements/débranchements de périphériques à chaud (comme l'USB..). Le problème c'est qu'il est peu lisible (avec de gros morceaux de binaire) et s'occupe de trop de choses. C'est totalement contraire à la philosophie d'UNIX où un programme n'est censé ne faire qu'une chose mais de bien la faire. C'est stupide sur un système embarqué , une sonde spatiale sur mars par exemple, sauf à supposer qu'un martien va connecter sa clef USB pour récupérer les coordonnées de la Terre :mrgreen: :mrgreen:

Comme toujours, je te conseille de ne pas te fier à un seul avis et d'attendre d'autres contributions.

Sylvain

Pinhapple
Raspinaute
Messages : 125
Enregistré le : jeu. 23 févr. 2017 15:53
Localisation : Rouen

Re: Python et Ethernet/UDP

Message par Pinhapple » mer. 12 juil. 2017 19:32

spourre a écrit :Je vais essayer de faire bref car c'est très technique et on s'éloigne tout de même pas mal du sujet (mais c'est ton fil à toi).
En effet, ça a l'air assez technique ! Je vais me renseigner un peu, ça ne fera pas de mal et je pense que c'est intéressant.
spourre a écrit :"plug and pray", à la Windows
Faute de frappe involontaire ou jeu de mots taquin sur Windows ? Si c'est le deuxième choix, c'est bien trouvé ! :lol:
  • RPi 3 + LibreELEC / RPi 3 + RetroPie / RPi B+ + Sense HAT ou Framboisedorf ou module caméra
  • Arduino Mega, Uno, Nano
  • Freescale FRDM KL25Z

spourre
Raspinaute
Messages : 735
Enregistré le : lun. 22 déc. 2014 16:50
Localisation : 67380 LINGOLSHEIM

Re: Python et Ethernet/UDP

Message par spourre » mer. 12 juil. 2017 19:49

Pinhapple a écrit :...
Faute de frappe involontaire ou jeu de mots taquin sur Windows ? Si c'est le deuxième choix, c'est bien trouvé ! :lol:
Jeu de maux mais je n'en suis pas l'auteur :mrgreen: :mrgreen:

destroyedlolo
Raspinaute
Messages : 1585
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: Python et Ethernet/UDP

Message par destroyedlolo » jeu. 13 juil. 2017 00:18

Pinhapple a écrit :
destroyedlolo a écrit :Avec des interruptions ?
Oui, en utilisant WiringPi en C !
Sauf que les interruptions de WiringPI sont très éloignées des interruptions tel qu'on l'entend niveau hardware.
C'est une mécanique qui dépend de la possibilité qu'a le kernel de réveiller un process/thread/cequetuveux lorsqu'arrive un événement extérieur ... et tout ca prend du temps avec un timing parfaitement aléatoire car dépendant de ce qu'il se passe par ailleurs dans le système.
Alors s'il s'agit de détecter que l'utilisateur a ouvert un contact, ou qu'un message vient d'arriver, ok, mais pas pour suivre un signal rapide.

En restant sous Unix, la solution la plus "propre" serait de créer un module kernel et d'exposer le résultat dans sysfs ... rien d'insurmontable techniquement mais ça nécessite pas mal de recherches documentaires si on ne l'a jamais fait.

Sinon, il y a des OS spécialisés (par exemple, j'avais utilisé OS-9 à l'IUT) ou carrément "taper dans le hard" de manière plus ou moins propre suivant l'OS.

Bref, ce n'est pas le PI qui ne suit pas, c'est juste que c'est au dela de ce peu faire WiringPI ou SysFS.
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

Pinhapple
Raspinaute
Messages : 125
Enregistré le : jeu. 23 févr. 2017 15:53
Localisation : Rouen

Re: Python et Ethernet/UDP

Message par Pinhapple » jeu. 13 juil. 2017 10:40

destroyedlolo a écrit :Sauf que les interruptions de WiringPI sont très éloignées des interruptions tel qu'on l'entend niveau hardware.
C'est une mécanique qui dépend de la possibilité qu'a le kernel de réveiller un process/thread/cequetuveux lorsqu'arrive un événement extérieur ... et tout ca prend du temps avec un timing parfaitement aléatoire car dépendant de ce qu'il se passe par ailleurs dans le système.
Alors s'il s'agit de détecter que l'utilisateur a ouvert un contact, ou qu'un message vient d'arriver, ok, mais pas pour suivre un signal rapide.
[...]
Bref, ce n'est pas le PI qui ne suit pas, c'est juste que c'est au dela de ce peu faire WiringPI ou SysFS.
Ah, je ne savais pas, je pensais qu'on en était au même niveau que les interruptions de l'Arduino, d'autant plus que WiringPi a été pensée pour être proche de la biblio Arduino. :?
destroyedlolo a écrit :En restant sous Unix, la solution la plus "propre" serait de créer un module kernel et d'exposer le résultat dans sysfs ... rien d'insurmontable techniquement mais ça nécessite pas mal de recherches documentaires si on ne l'a jamais fait.
Ça me semble peu jouable dans le temps qu'il me reste, surtout que je n'ai jamais fait ça avant. En revanche, je peux le proposer ou même le mentionner dans mon rapport en évolution future.
destroyedlolo a écrit :Sinon, il y a des OS spécialisés (par exemple, j'avais utilisé OS-9 à l'IUT)
Ça s'installe sur RPi ?
  • RPi 3 + LibreELEC / RPi 3 + RetroPie / RPi B+ + Sense HAT ou Framboisedorf ou module caméra
  • Arduino Mega, Uno, Nano
  • Freescale FRDM KL25Z

destroyedlolo
Raspinaute
Messages : 1585
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: Python et Ethernet/UDP

Message par destroyedlolo » jeu. 13 juil. 2017 11:16

Pinhapple a écrit :Ah, je ne savais pas, je pensais qu'on en était au même niveau que les interruptions de l'Arduino, d'autant plus que WiringPi a été pensée pour être proche de la biblio Arduino. :?
Au niveau API, mais après, il ne peut passé a travers les limites du hard.
Pinhapple a écrit :Ça me semble peu jouable dans le temps qu'il me reste, surtout que je n'ai jamais fait ça avant. En revanche, je peux le proposer ou même le mentionner dans mon rapport en évolution future.
Ca dépend aussi de la précision qu'ils demandent : le proc du PI n'est pas top au niveau des interruptions hard (de ce que j'ai lu, il fait une sorte de polling hardware qui évidement crée des latences).
Pinhapple a écrit :
destroyedlolo a écrit :Sinon, il y a des OS spécialisés (par exemple, j'avais utilisé OS-9 à l'IUT)
Ça s'installe sur RPi ?
Pas a ma connaissance : cependant, il y a des gens qui indiquent que passer par RiscOS permet d'être plus proche du RT que de passer par les SysFS/WiringPI d'un Linux.
Mais de toutes facons, comme pour les modules kernel, ca ne se fait pas en 1 mois :mrgreen:

Linux étant beaucoup plus répandu que RiscOS, je pense que ca serait la solution a privilégié (a nouveau, si les contraintes du PI passent).
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

Répondre

Retourner vers « Python »