Utiliser le C et internet

Le langage C permet de créer des programmes rapides et proches de la machine

Modérateur : Francois

adelantejm
Messages : 31
Enregistré le : ven. 5 oct. 2018 09:11

Utiliser le C et internet

Message par adelantejm » ven. 5 oct. 2018 20:34

Pour un projet que j'expose plus en détail dans un message daté du 12-10-2018 un peu après 12h00(oui je suis devin) :
Je recherche des informations sur les bibliothèques permettant d'utiliser le WIFI et internet client/serveur en langage C : les instructions et des exemples.
Le sujet a été probablement déjà traité mais comme les mots "WIFI" et "C" sont considérés comme trop communs il est impossible de faire une recherche !!!

Merci pour votre aide
Modifié en dernier par adelantejm le ven. 12 oct. 2018 12:18, modifié 2 fois.

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

Re: Utiliser le C et internet

Message par destroyedlolo » ven. 5 oct. 2018 22:00

Salut,

Hum, ce n'est vraiment pas clair ta question :
  1. veux-tu jouer avec le WiFi, genre chercher de réseau, avoir des infos sur celui où tu es connecté ou truc du genre ?
  2. veux-tu transférer des infos en C ?
Dans le 1er cas, je ne peux t'aider.

Dans le second, ça n'a aucune importance que ce soit par WiFi / filaire / bluetooth / signaux de fumée : tout ceci n'est que le média de transmission, sur lequel transite les infos. A quelques exceptions pret (perf entre autre), c'est parfaitement transparent.
A partir de là, ca dépend de ce que tu veux faire :
  • passer par des protocoles standards comme le http (voir même appels de webservices) ou le ftp, je te conseillerai de voir du côté de la librairie curl.
  • dans le cas contraire, faut sans doute passer par du bas niveau : regarde du côté des sockets.
En espérant t'avoir donné des pistes.
  • 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.

adelantejm
Messages : 31
Enregistré le : ven. 5 oct. 2018 09:11

Re: Utiliser le C et internet

Message par adelantejm » sam. 6 oct. 2018 11:17

Je me réponds à moi-même car cela peut intéresser certains.
J'ai trouvé plusieurs mines d'infos :
- pour utiliser le C++ et bien d'autres langages il y a Netbeans : https://netbeans.org/
- pour avoir plein d'infos, des exemples et tout et tout ... : http://www.raspberry-projects.com/pi/
avec ça il y a de quoi faire.

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

Re: Utiliser le C et internet

Message par destroyedlolo » lun. 8 oct. 2018 09:56

Salut,

Je ne connaissais pas, mais le second lien contient BEAUCOUP de choses vraiment interessantes.
Merci pour le partage.
  • 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.

adelantejm
Messages : 31
Enregistré le : ven. 5 oct. 2018 09:11

Re: Utiliser le C et internet

Message par adelantejm » ven. 12 oct. 2018 11:58

Bon je continue sur ce sujet en espérant que je ne gène personne.
En ce qui concerne shm je faisais la différence entre 2 programmes indépendants et des processus d'un même programme(fork). Est-ce que justement nmap() ne serait pas limité à ce dernier cas ?

adelantejm
Messages : 31
Enregistré le : ven. 5 oct. 2018 09:11

Re: Utiliser le C et internet

Message par adelantejm » ven. 12 oct. 2018 12:16

En ce qui concerne mes besoins tout est parti de la mise en place d'une chaudière à condensation. J'ai lu sur la notice que le bon rendement n'était obtenu que lorsque la température de l'eau de retour des radiateurs était inférieure à 50°C. J'ai constaté que, souvent, la température de retour était supérieure à 50°C. J'ai utilisé un microprocesseur TEXAS à très faible consommation pour arrêter la chaudière 30 mn lorsque la température de retour était supérieure à 40°C. J'ai utilisé 2 batteries CN à faible décharge pour l'alimenter et cela fonctionnait bien durant tout l'hiver.

Puis j'ai voulu améliorer les choses pour arriver à :

- un poste central qui est connecté à internet et permet de modifier tous les paramètres à distance et enregistre chaque seconde toutes les données sur une carte SD,
- un micro "chaudière" qui pilote la température de retour (voir plus haut), mesure la température extérieure, arrête ou met en route la chaudière en fonction d'ordres reçus du central, transmet toutes les infos au central,
- un micro situé près du tableau électrique et qui pilote le chauffage électrique de 3 chambres situées au second en fonction d'ordres reçus du central,
- un micro qui prend la température de ma chambre et la transmet au central (qui régule la marche de la chaudière),
- un micro situé sur la porte d'entrée qui ouvre la porte en fonction d'ordres reçus du central et pilote aussi un RC522 pour ouverture de la porte avec une carte sans contact, il se charge aussi de tenir à jour la liste des cartes autorisées en fonction d'ordres reçu du central.

Tous ces postes communiquent entre eux par l'intermédiaire du central, toutes les secondes, ce qui est trop, 10 secondes devraient être suffisantes.
Quand tout cela fonctionne, j'ai un écran sur mon portable qui me permet de consulter et de modifier la plupart des paramètres.

Nouveau souhait mettre le central, la mesure de température de ma chambre et un serveur d'impression sur un RPI unique (qui sert seulement de serveur d'impression actuellement). C'est un PI B mais j'ai un PI 3 en réserve si nécessaire ... Suite au prochain numéro ...

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

Re: Utiliser le C et internet

Message par destroyedlolo » ven. 12 oct. 2018 12:35

adelantejm a écrit :
ven. 12 oct. 2018 11:58
Bon je continue sur ce sujet en espérant que je ne gène personne.
En ce qui concerne shm je faisais la différence entre 2 programmes indépendants et des processus d'un même programme(fork). Est-ce que justement nmap() ne serait pas limité à ce dernier cas ?
Non, il est fait pour ca : la communication entre process. Et si ca marche entre process distinct, ca marche aussi entre fork ou thread :)

Mais comme je le disais précédement, ce n'est pas forcement l'archi que j'aurai choisi : mais bon, on parle de TON projet, pas du miens :)
  • 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.

adelantejm
Messages : 31
Enregistré le : ven. 5 oct. 2018 09:11

Re: Utiliser le C et internet

Message par adelantejm » ven. 12 oct. 2018 13:04

Actuellement j'ai un peu avancé sur les points suivants :
  • développement d'un serveur sur le PI avec NetBeans. Programme de test pour l'instant, mais qui fonctionne.
  • réécriture du programme chaudière sur ESP32 avec 2 x DS18b20 et un client qui va bien avec le PI
Le programme sur l'ESP32 est quasi opérationnel et a été testé avec le Pi mais il y a un gros PB de portée. Pourtant l'ESP32 est à 8 m de la FREEBOX, la ligne droite entre les deux passe par des portes en bois. Avec mon portable j'ai mesuré -62 db. il faut que je fasse la même mesure avec l'ESP32.
J'utilise aussi 2 timers (0 et 1) avec des routines d'interruption qui se déclenchent toutes les 5 secondes et 60 secondes. C'est du luxe, une seule pourrait suffire. Celle à 5 seconde me permet d'avoir les températures toutes les 10 secondes. Un coup on fait un request, un coup on lit les températures ...
Tout ça fonctionne bien il reste le branchement à la chaudière, un transistor et une interface optique que je récupère du montage précèdent.
Pour le PI il reste beaucoup de choses à faire :
  • Un programme pour la gestion de l'ensemble et le serveur qui recueil les donnée et envoie des ordres.
  • Un autre programme qui gére le site qui me permet de piloter le tout avec mon portable.
Tout cela était auparavant sur un Arduino Méga 2560 pour tout faire et ça ramait un peu beaucoup. J'avais ajouté un PIC pour servir de watchdog externe qui relançait le tout au bout de 16 secondes de blocage. L'envoie de la page Html, qui était sur un fichier sur une carte SD, pouvait parfois, prendre ce temps là !
Donc il y a du boulot ...

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

Re: Utiliser le C et internet

Message par destroyedlolo » ven. 12 oct. 2018 15:01

Ben tu vois, ton projet n'est pas si simple que ca :)

Pour les DS18B20, plutot que le classique DallasTempérature, tu pourrais essayé mon https://github.com/destroyedlolo/OWBus.
Non seulement il a un design plus moderne, mais il prend en charge plus de sonde (puis ca me permettrait de voir s'il fonctionne sans pb sur un ESP32 :mrgreen: )

Par contre, je ne comprend pas le coup des timers : pourquoi ne pas faire une lecture synchrone ? Parce que que la conversion ne prend que 1s au maximum donc est-ce rédhibitoire ?
Si tu veux t'amuser tu peux rester en asynchrone mais lancer les conversions de température en parallele (je ne sais pas si DallasTemperature le permet, mon OWBus oui).

Pour le coup de la porté, c'est peut etre que ta chaudière (ou autre chose, genre tubes néons) crée des parasites : parce que j'ai aussi une Freebox, une V5 en l'occurence et j'arrive a accrocher avec un ESP qui se trouve dans mon poulailler à au moins 25m. Entendons nous bien, la liaison est pourrie, j'ai donc mis un autre ESP en répéteur sinon ca bouffe trop les batteries, mais ce que je veux dire c'est que normalement ca devrait passer a 8m :)
  • 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.

adelantejm
Messages : 31
Enregistré le : ven. 5 oct. 2018 09:11

Re: Utiliser le C et internet

Message par adelantejm » mar. 23 oct. 2018 09:33

Bonjour,

Malgré une bonne crève je continue d'avancer.
Pour le DS18 mon ESP32 était déjà programmé. Le besoin que j'avais, était sur le PI. J'ai vu que ta bibli était plutôt Arduino. J'ai donc pris le système PI classique.
Pour les timers oui c'est vrai. Mais avant d'utiliser le C je programmais les microprocesseurs, principalement PIC, en assembleur. J'étais donc à 200 nanosecondes prés car j'utilisais beaucoup les interruptions. J'ai même côtoyé les picosecondes (au moins théoriquement) avec l'aide de circuits externes. Pour moi c'est dur d'accepter qu'un micro reste 1.000.000.000 nanosecondes à ne rien faire (pour moi) !
Pour la portée, j'ai résolu le Pb, au moins provisoirement, par un répéteur Wifi trouvé sur le Boncoin.
Tout ceci fait que l'échange d'infos avec le central ne dure que 26 ms, toutes les 30 s, vu de l'ESP32. Du coup je pense à la transmission d'images ...
Il faut que j'envisage la mise en veille du Wifi sur l'ESP pour diminuer la consommation.
Coté PI, j'ai un processus avec deux threads (while(1) ) un pour la mesure de température l'autre pour être le serveur des autres microprocesseurs en Wifi. J'utilise Fork, shm, mutex, ... Cela fonctionne correctement.
Un processus, en cours de développement, doit être le serveur internet, ce que faisait péniblement un Arduino Mega. J'ai testé l'échange d'infos avec l'autre processus(shm) : OK.
Je peine aujourd'hui avec les html et xml que je ne domine pas du tout (j'ai même confondu les deux ...).

Répondre

Retourner vers « C / C++ »