commande arduino a travers le web

Je ne vois que 2 raisons :

  • Soit ca ne part pas du serveur (socket bloquée malgré "socket Enabled")
  • Soit ca ne traverse pas ta box

2 tests utiles :

  1. En utilisant ton serveur Web chez toi, est-ce que cela marche si tu utilises ton IP publique au lieu de l'IP locale de l'Arduino ?
  • Si oui, la traversée de la box est ok, c'est donc le serveur
  • Si non, la traversée de la box n'est pas ok
  1. Utilise la commande nc sur ton PC (si tu est sous Windows chercher avec google nc111nt.zip)
    Redirige le port 8888 vers ton PC au lieu de l'Arduino est utilse nc avec la commande suivante :
nc -u -l -p 8888

Maintenant tous les messages qui viennent du serveur LWS devraient arriver sur ton PC est être affichés par la commande nc

  • Si ok, serveur et box sont ok, problème sur l'Arduino

Es-tu sur qu'il faille à la fois configurer un transfert de port UDP ET mettre l'IP de l'Arduino en DMZ ?
Il me semble que l'un des 2 suffit. De préférence le 1er.

J'ai fais la manip avec nc111nt et je ne reçois rien.

J'ai fais un essai avec l'IP publique de ma box depuis un PC externe vers mon serveur et la ça fonctionne très bien.

Il me semble donc que c'est mon hébergeur qui bloque.

Quel autre solution employer pour envoyer mes ordres a travers le web sans utiliser les sockets ??

L'autre partie de mon appli, se connecte au serveur et vient au travers d' un prog PHP inscrire des valeurs de capteurs ds une bdd mysql.Cette partie fonctionne bien.

Mon but est donc de commander manuellement a travers le web les sorties de l'arduino en fonction des valeurs de capteurs reçues.

Si tu as une idée ...

Si tu ne peux pas utiliser une socket pour faire de l'UDP, tu peux peut être faire une requête HTTP GET ou POST ?
Peux être que cette API n'est pas bloquée ?
http://www.php.net/manual/fr/book.http.php

Pour info, chez Free, le phpinfo() dit aussi que les socket sont activées mais ce n'est pas vrai.

bonjour,
cherche pas trop, trouvé sur le wiki lws

# Les ports UDP suivants sont maintenant ouverts :

    * 1194 : openvpn
    * 8767 : Teamspeak 2
    * 9987 : Teamspeak 3
    * 53 : DNS
    * 123 : NTP

tu as quoi comme hébergement?
mutualisé, dédié?

Ahah
Bonne idée !
C'est pas forcément l'API socket qui est interdite mais le firewall qui empêche de sortir....

Quoi que là, je pencherait plutôt pour des ports en entrée...
Mais bon, ça vaut le coup d'essayer avec le port d'OpenVPN par exemple.

J'ai un hebergement mutualisé, et en plus le tarif de base donc peut être accès plus réduit.
Je vais essayer sur un autre port par ex OpenVPN.
Je vous tiens au courant.
Merci pour ces pistes !

Malheureusement quel que soit le port utilisé, je n'ai pas réussi à communiquer.

Je continue ma recherche de communication dans le sens PHP vers Arduino à travers le Web.

Salut,

systere:
Malheureusement quel que soit le port utilisé, je n'ai pas réussi à communiquer.

Je continue ma recherche de communication dans le sens PHP vers Arduino à travers le Web.

Truc bête, est ce que tu peut faire un file_get_content sur une adresse http depuis ton serveur ?
Si oui tu peut jouer avec le protocole http et html pour transmettre les données.

A moins d'avoir mal compris, je pense que le file_get_content sert a lire un fichier reçu par une appli PHP.
Or moi ce que je veux faire c'est envoyer une trame vers l' Arduino depuis une appli PHP qui tourne sur le serveur.
Je vois comment décoder une trame entrante sur l'Arduino, mais je ne vois pas comment l'envoyer depuis PHP !!

Est-ce que tu as regardé l'API HTTP de PHP comme je te l'ai indiqué plus haut ?
Ou bien tout simplement utilise le port 80...

Mais il y a de grande chance que le problème soit un firewall qui empêche toute communication sortante.
Ca parait relativement logique d'un point de vue de la sécurité sur un serveur partagé.

A mon avais la seule solution est de passer sur un serveur dédié... mais ce n'est pas le même prix bien sur.

Tu ne peux pas monter un serveur dédié chez toi ? Avec un netbook d'occasion, tu peux avoir quelque chose de simple qui ne consomme pas beaucoup.

bonjour,
je pense a un truc, as tu changé l'ip sur ton script php pour envoyer les infos?

$host="192.168.1.110";  // Adresse ip de la carte arduino

qui doit se transformer en

$host="ton_ip_publique";

après avoir ouvert le 8888, as tu rebooté ta box?
chez certains modems, il faut rebooter.

ca part de chez lws, mais en fait on se fiche que ce soit en tcp ou udp, c'est à l'arrivée qu'il faut voir et configurer les entrées.
fais un test avec le port 81
je ne sais plus si les box sfr permettent de natter un port vers un autre différent, les lb ne peuvent plus maintenant (81->80 par exemple)

J'ai fais un essai avec l'IP publique de ma box depuis un PC externe vers mon serveur et la ça fonctionne très bien.

Brisbee, le problème n'est pas sur sa box.
Le problème est de pouvoir sortir de l'ISP ce qui semble bloqué par un firewall ou directement dans PHP chez LWS

oups j'avais pas relu le tout :frowning:

apparemment le 8767 est ouvert pour teamspeak2. Blocage ports / Firewall - Forum : Lws & Hebergeur-discount
ca devrait donc fonctionner avec ce port.

Le thread fait référence à un hébergement VPS : Virtual Private Server (serveur privé virtuel).
C'est une machine virtuelle (genre VMWare, VirtualPC, ...) sur laquelle tu as entièrement la main pour installer n'importe quelle applications.
A ne pas confondre avec un hébergement web mutualisé où tu es généralement limité à un serveur Web (+PHP, Python, etc..) et un serveur SQL.

J'ai plutôt compris que systere se trouve dans le 2nd cas

Bonjour à tous ! :slight_smile:

Comme pas mal de monde sur le fofo je travail sur un petit projet de domotique,
Via Ethernet l'affichage des pages web et le contrôle fonctionnes bien mais dans le but d’alléger l'Arduino je souhaiterai passer la partie html sur un petit serveur local.

N'ayant pas de base en html/php et ne trouvant pas vraiment mon bonheur sur la toile ( même sur le site du zéro, je commence encore plus bas que zéro je pense ^^)
J'ai donc voulu m'inspirer du code du post 1 pour comprendre le système ... J'ai installé wamp et tout fonctionne par contre je ne vois pas du tout comment débuter la partie web, j'ai tout le code dans l'Arduino mais comment le passer sur le serveur ?

Si une âme charitable à le temps de m'éclairer un peu je suis preneur, en tous cas ça sent le debut d'un joli projet ! Bon courage

Amicalement,
Trigger

Yop Yop,
C'est un sujet qui reviens au minimum 1 fois par mois et qui aboutis toujours aux même résultats et constatations.
Il semble illusoire de vouloir utilisé les socket sur la majorité des solutions mutualisé ou autre possibilité d’hébergement externe courant pour une simple et bonne raison de sécurité.
Maintenant en alternative il existe comme notre barbu l'a indiqué les simples requêtes http (GET et POST) et si l'on veux quelque chose de plus attractif et intéressent que de simple formulaire allez faire un tour du côté de l'ajax et plus particulièrement JQuery (bibliothèque javascript) qui peut grandement facilité la tache.

Exemple :
http://www.siteduzero.com/tutoriel-3-557807-xmlhttprequest.html

Maintenant si on tien absolument aux socket, il y a les webSocket de l'html5 instancié côté navigateur et non serveur mais qui ne sont pas encore à 100% standardisé (patience, patience $)) et la plus part des navigateurs l'ont déjà implémenté (à différentes évolutions du standard donc peux marché sur l'un mais pas sur l'autre).

En perso je les utilise déjà dans ma propre solution comme le standard ne devrais plus trop changer.

barbudor:
Le thread fait référence à un hébergement VPS : Virtual Private Server (serveur privé virtuel).
C'est une machine virtuelle (genre VMWare, VirtualPC, ...) sur laquelle tu as entièrement la main pour installer n'importe quelle applications.
A ne pas confondre avec un hébergement web mutualisé où tu es généralement limité à un serveur Web (+PHP, Python, etc..) et un serveur SQL.

J'ai plutôt compris que systere se trouve dans le 2nd cas

je connais les différences ;), j'ai quelques servers dédiés pour mon boulot et pour héberger des sites, sans compter les servers chez moi, mais merci quand même.
quand à ISP, ca m'étonnerait que lws utilise ce système pour des vhosts.

le mieux serait quand même de changer d'hébergeur dont les éloges sont au niveau de 0 depuis un très long moment.
mais le problème de l'udp est sa vulnérabilité, donc tous le ferme, sauf pour snmp, dns et encore.

D'un point de vue communication, JQuery ne fait rien d'autre que des requêtes HTTP. Comme cela est en Javascript c'est à priori coté navigateur que cela s'exécute.
C'est donc dans le principe identique (d'un point de vue relation client/serveur) à l'utilisation de socket HTML5.
L'avantage c'est que puisque le navigateur est capable d'aller chercher une page Web il saura aussi faire les requêtes JQuery vers l'Arduino.

L'inconvénient que je vois tant dans le Javascript que dans le HTML5 c'est la compatibilité avec les mobiles. On commence a voir des personnes qui se plaignent de la performence d'HTML5 sur mobile et Javascript est loin d'être universellement supporté sur les navigateurs mobiles.

Je pense que la solution de gérer la communication Arduino coté serveur (PHP/Python/Perl) est la meilleure mais reste incompatible avec un hébergement mutualisé.
Donc seul le VPS ou le serveur dédié est adapté mais c'est pas le même prix. VPS OVH ou Kimsuffi commencent à 15€HT/mois.

Ou alors récupérer un netbook d'occas avec un petite distri linux et le laisser brancher en permanence chez soi.
Voir même un routeur du type de ceux compatible OpenWRT et qui peuvent faire tourner un petit linux avec un serveur Web.
Par contre probablement pas de PHP dans ce cas, donc plutôt du cgi-bin a développer en C

barbudor:
C'est donc dans le principe identique (d'un point de vue relation client/serveur) à l'utilisation de socket HTML5.

Dans le principe oui mais les (web)sockets ont quand même le gros avantage d'avoir une communication maintenue quelque soit le nombre ,pouvant être initié de chaque côté contrairement à une communication via requête initié obligatoirement du côté client.
Maintenant il y a moyen de simulé le même comportement mais bon si il y a moyen de faire les chose directement proprement.

barbudor:
L'inconvénient que je vois tant dans le Javascript que dans le HTML5 c'est la compatibilité avec les mobiles. On commence a voir des personnes qui se plaignent de la performence d'HTML5 sur mobile et Javascript est loin d'être universellement supporté sur les navigateurs mobiles.

Je n'ai toujours pas de smart_faune ou autre mais je suppose que la faute doit être coté navigateur parce qu'au final l'html5 et javascript ne sont que des norme et spécifications.
Maintenant la lourdeur peux venir de son utilisation pour de la vidéo par exemple ce qui est "normal", les websocket ne seront peut être pas logé à la même enseigne, je verrais le jour ou j'ai les moyens :grin: ?