nouvelle interface domotique

Bonjour,

j'ai créé avec mon arduino et un petit routeur connecté en serie (une fonera recyclé) un systeme d'arrosage, de programmation et de pilotage a distance,

un melange entre un programmateur journalier, un programmateur d'arrosage et des prise telecommandé.

pour permettre a un maximum de personne de tester le logiciel, vous pouvez y acceder ici:

http://sprinkler.zapto.org/arduinoJqueryUI.html

user/password viknet/viknet

si des personnes sont interessé, n'hesitez pas a tester et me faire des remarques, le projet est finis pour moi mais si des personnes sont intereessé, il y a encore du travail pour documenté/ clarifier / ameliorer le projet

Cordialement

Viknet

Bonjour

Extrèmement intéressant !!!

J'ai plein de questions dont certaines auraient leur réponse dans le code côté Arduino.
-Je suis très tenté de tester avec un WRT54G déjà passé sous OpenWrt et configuré en 'client bridged'
La Fonera sous OpenWrt est-elle juste configurée en 'client WiFi' ou bien exécute-t-elle en plus un peu de code particulier chargé au préalable ?
-Telle quelle l'application est-elle testable par un utilisateur utiliserait un module "série-WiFi" quelconque à la place d'un routeur WiFi 'libéré' ?
-Des modifications importantes sont-elles à prévoir pour porter l'application sur des systemes Arduino ayant un accès réseau par shield Ethernet ?

EDIT : un coin du voile (tout le voile même !) est levé dans ce fil de discussion !!

je dirais même plus, extrêmement intéressant !
Je suis sur un projet plutôt similaire mais avec un shield ethernet.

Je n'ai pas le temps de regarder ton code mais avec chicotore et Osaka on se demandais comment faire une authentification, Osaka a fait un exemple par cookie, moi je penchais plus pour utiliser la balise "WWW-Authenticate:", est-ce ce que tu as fait ?
De plus pour alléger au max le code de l'Arduino j'ai une page web externe qui contient le javascript et qui se charge de tout, est-ce ce que tu entends par "(because all UI are handled by jquery and javascript) assuming you can remotly store the javascript."

En tout cas beau boulot !

al1fch:
-Je suis très tenté de tester avec un WRT54G déjà passé sous OpenWrt et configuré en 'client bridged'

c'est ce que j'ai fait avec ma fonera, mode répéteur bridge, j'utilise Gargoyle comme OS avec lighttpd et php, je prefere une fonera a un WRT54G a cause de sa taille :=)

pour les débutant je tient a préciser: répéter un signal wireless est tout SAUF trivial, je vous invite a tester en premier votre arduino sans ce genre de blague :=)

al1fch:
La Fonera sous OpenWrt est-elle juste configurée en 'client WiFi' ou bien exécute-t-elle en plus un peu de code particulier chargé au préalable ?

trés peu de code, une dizaine de ligne en php redirigeant une variable http vers la ligne de commande:
http://www.truc.com/sendserial?serialcommand=getinfo
le résultat est affiché directement sans formatage du coup ce système est probablement facilement adaptable a un arduino ethernet (sans authentification ni https bien sur)

al1fch:
-Telle quelle l'application est-elle testable par un utilisateur utiliserait un module "série-WiFi" quelconque à la place d'un routeur WiFi 'libéré' ?

telle quelle non mais suivant le module wifi (certain sont trés configurable) surement

al1fch:
-Des modifications importantes sont-elles à prévoir pour porter l'application sur des systemes Arduino ayant un accès réseau par shield Ethernet ?

pas si importante que ça, j'anticipe surtout des problèmes de mémoire vive (seulement 563 bytes restant de SRAM cf page de configuration)
ca reste un de mes objectif cela simplifierais grandement la reproduction de mon prototype et le developement du projet même si cela supprimerais HTTPS et authentification.
Je fonde aussi beaucoup d'espoir dans le future shield wifi arduino, il pourrais peut être supporter authentification et HTTPS

Oliv4945:
je dirais même plus, extrêmement intéressant !
Je suis sur un projet plutôt similaire mais avec un shield ethernet.

Je n'ai pas le temps de regarder ton code mais avec chicotore et Osaka on se demandais comment faire une authentification, Osaka a fait un exemple par cookie, moi je penchais plus pour utiliser la balise "WWW-Authenticate:", est-ce ce que tu as fait ?
De plus pour alléger au max le code de l'Arduino j'ai une page web externe qui contient le javascript et qui se charge de tout, est-ce ce que tu entends par "(because all UI are handled by jquery and javascript) assuming you can remotly store the javascript."

En tout cas beau boulot !

malheureusement l'authentification est au cœur de mes choix technique a savoir l'usage d'un routeur "libéré". je m'explique

  • Aucune authentification sérieuse et standard ne peut être faite sur un arduino
  • les authentification sur un arduino ne résiste jamais a un sniff du réseaux, du coup plutôt que de s’embêter autant cacher son URL (http://truc.com/monrepertoiresecret/command)
  • un shield wifi coute autant qu'un routeur wifi (pour 10fois moins de fonctionnalité exemple le mode répéteur WIFI)

Ces considérations ont dicter cette architecture, encore une fois je fonde beaucoup d'espoir sur le future shield wifi officiel.

je t'invite aussi a rechercher d'autre solution de sécurité, un reverse proxy chez toi par exemple pourrais te permettre d’accéder a ta dizaine d'arduino par exemple.

J'ai préférer investir du temps dans l'ergonomie de l'IHM (asynchronisme) plutôt que dans une pseudo authentification

Concernant enfin le fait de stocker le javascript a un autre endroit, c'est une trés bonne solution pour:

  • liberer de la mémoire
  • debugguer facilement

je n'ai pas ce probleme ayant des MegaOctet sur mon routeur, mais en cas d'adaptation sur un shield ethernet ou wifi ca sera surement une solution

Bonjour viknet et merci pour toutes ces précisions

Avec regret j'ai remplacé par un WRT54G une Fonera sous Gargoyle qui après avoir bien rendu service en client WiFi n'a pas apprécié une fausse manoeuvre hardware ! Je regrette la taille et aussi la faible consommation. Les rares Fonera au début de l'été etaient plus chères sur ebay que les WRT54G à 20€

priceminister fait des miracle parfois :
http://www.priceminister.com/s/fonera

Yep!

Je regardais, il y a peu les possibilité d'utiliser les routeurs comme passerelle entre mon arduino et l'ethernet, mais à part la fonera et le wrt54g, il y a peu de doc concernant d'autres choix de routeur.

J'ai en effet sous la main un bewan 700g et un thomson TCM410. L'espace mémoire est suffisante pour installer dd-wrt ou open-wrt. Quant à la liaison TTL, ben, faut que je la trouve...

Je suis habitué à linux (Debian) et ma question est : Est-il possible avec les os wrt de choisir les applications installées, genre je ne désire pas le wifi ou je voudrais installer des bibliotheques python ???

@+

Zoroastre.

viknet:
je t'invite aussi a rechercher d'autre solution de sécurité, un reverse proxy chez toi par exemple pourrais te permettre d’accéder a ta dizaine d'arduino par exemple.
J'ai préférer investir du temps dans l'ergonomie de l'IHM (asynchronisme) plutôt que dans une pseudo authentification

Effectivement je pense comme toi, c'est pour ça que j'ai fait une authentification simple, mais "sniffable". C'est la discussion que l'on a avec Osaka, mais je me dit qu'il y a peu de chances que quelqu'un vienne faire ça :roll_eyes:

viknet:
Concernant enfin le fait de stocker le javascript a un autre endroit, c'est une trés bonne solution pour:

  • liberer de la mémoire
  • debugguer facilement

En fait pour le moment je stocke le code html sur l'Arduino et le javascript sur un serveur. Je pointe directement le navigateur sur l'Arduino.
J'ai essayé de passer directement par le serveur et que ce soit le javascript qui récupère via json les données sur l'Arduino mais ça ne fonctionne pas : l'Arduino envoie bien les données mais le javascript ne récupère rien :~
Sinon j'ai essayé de construire la page html à partir de document.write() mais Jquery n'est pas bien fan… Enfin je vais aller voir ton code si ya pas une astuce :slight_smile:

Edit : Mon problème 1 vient des sécurités Javascript… apparemment contournables :slight_smile:

zoroastre:
Yep!

Je regardais, il y a peu les possibilité d'utiliser les routeurs comme passerelle entre mon arduino et l'ethernet, mais à part la fonera et le wrt54g, il y a peu de doc concernant d'autres choix de routeur.

des tonnes: http://wiki.openwrt.org/toh/start

zoroastre:
J'ai en effet sous la main un bewan 700g et un thomson TCM410. L'espace mémoire est suffisante pour installer dd-wrt ou open-wrt. Quant à la liaison TTL, ben, faut que je la trouve...

des tonnes mais pas tes deux routeurs: dommage

zoroastre:
Je suis habitué à linux (Debian) et ma question est : Est-il possible avec les os wrt de choisir les applications installées, genre je ne désire pas le wifi ou je voudrais installer des bibliotheques python ???

tout simple :

opkg update
opkg list |grep "mon language preferé"
opkg install "mon language preferé"

evidement il faut surveiller sa memoire et faire du menage:
opkg list-installed
opkg remove "truc inutile"

je te conseille openwrt pour debuter et gargoyle si tu a des problemes pour faire un repeteur wifi

Est-ce que vous avez une idée de la consommation de se type de "serveur" ?

Compter 4W pour une Fonera et le triple pour un routeur WiFi comme le Linksys/Cisco WRT54G 'culte' !!
(en cas d'achat de WRT54G d'occase vérifier auparavant (sites DDWRT, OpenWRT, Gargoyle...) qu'il ne s'agit pas d'un modèle récent incompatible avec DDWRT ou OpenWRT). Le WRT54GL, toujours au catalogue est le modèle le plus ouvert aux modifications (L comme Linux). Même précaution pour une Fonera.
Les fabricants de routeurs WiFi pour réduire les coûts changent parfois de chipset, mettent moins de mémoire .... sans changer la référence commerciale des appareils. Les numéros de série indiquent les versions successives.... compatible ou non avec les firmwares aux fonctionnalités étendues.

c'est ce que j'ai fait avec ma fonera, mode répéteur bridge, j'utilise Gargoyle comme OS avec lighttpd et php

Je vais prochainement tester cette configuration avec une Fonera 'miraculeuse' :wink:
(Priceminister un bon jour avec un bon tuyau !!)
Je penche en faveur du front-end Gargoyle 1.25 qui devrait laisser plus de place en mémoire que les versions plus récentes. La version d'OpenWRT intégrée suffit peut-être . Flashage avec FlashFon.

Le choix du mode répéteur bridge et non le mode client a-t-il un lien (que je ne vois pas) avec cette application ou bien est-ce juste pour que la Fonera puisse servir par ailleurs de point d'accès ?

aucun lien, mais tant qu'a faire autant avoir un repeteur wifi pour etendre le reseaux :slight_smile:

gargoyle integre l'ARPNAT qui permet de faire un repeteur, et les IHM permettent en plus de le faire facilement.

pour te faire gagner du temps: voila la metodologie d'install: (c'est rude je sais mais c'est mon pense bete)

use gargoyle

telnet to 192.168.1.1
passwd to whatever
telnet to the server

add country code to wifi0 and set to 250 in /etc/config/wireless

prepare network
connect in http://192.168.1.1
go to administration
create a new network:
freebox/key/WPA-PSK client (STA)

configure the existing network
wifi-garage wpa-psk/key

change dns in /etc/config/network

don't mess with firewall

on the luci or gargoyle set ntp server to ntp1.proxad.net and ntp2.proxad.net

opkg remove gargoyle
opkg remove httpd-gargoyle
opkg remove bwmon-gargoyle (mess with crontab)

opkg update

opkg install libsqlite3 //dependencies for php en premier sinon ca plante
opkg install libpcre //dependencies en premier sinon ca plante
opkg install php5 //dependencies en premier sinon ......
opkg install php5-cgi
opkg install php5-cli
opkg install setserial
opkg install coreutils-stty
opkg install luci-ssl //don't do that on gargoyle
opkg install luci-app-ntpc (for setting time) //don't do that on gargoyle

/etc/init.d/lighttpd enable

create /www/test/test.php

<?php header("Content-Type: text/plain"); echo "Hello world"; ?>

no need for +x

add this to lighttpd

from this website:
http://www.cyberciti.biz/tips/lighttpd-php-fastcgi-configuration.html

fastcgi.server = (
".php" => (
"localhost" => (
"socket" => "/tmp/php-fastcgi.socket",
"bin-path" => "/usr/bin/php-cgi",
"max-procs" => 1,
"idle-timeout" => 20,
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "2",
"PHP_FCGI_MAX_REQUESTS" => "10000"
),
"bin-copy-environment" => (
"PATH", "SHELL", "USER"
),
"broken-scriptfilename" => "enable"
)
)
)

add ssl (comment line in conf file and create cert)

openssl req -new -x509 -keyout lighttpd.pem -out lighttpd.pem -days 365 -nodes

add

          • ping -c 1 192.168.2.254 > /dev/null
            to /etc/crontab/root

remove ttyS0 from inittab

remove local echo
stty 9600 raw -F /dev/ttyS0

Merci pour ce pense-bête détaillé !!

En attendant ma nouvelle Fonera je viens de basculer mon WRT54GS depuis DD-WRT vers OpenWRT+Gargoyle pour faciliter la gestion des ajouts/suppression d'applications.

-config client ponté OK, (répéteur ça ne passe pas encore mais ce n'est pas essentiel pour moi.)
-je n'ai pas désinstallé Gargoyle. je n'ai pas encore compris l'intérêt à part le gain de place.
-opkg update (j'ai gardé la configuration initiale des dépots)
-opkg install mc (Midnight Commander : je commence toujours par là ... our moins utiliser ensuite la ligne de commande !)

Je n'avais jamais utilisé de gestionnaire de paquets sur un routeur WiFi .... Il faut reconnaitre que ça change complètement la donne !

C'est tout pour aujourd'hui !

-je n'ai pas désinstallé Gargoyle. je n'ai pas encore compris l'intérêt à part le gain de place.

c'est cela meme, sur la fonera, gargoyle+php ca ne rentre pas :slight_smile:

viknet:
http://sprinkler.zapto.org/arduinoJqueryUI.html

user/password viknet/viknet

Le site ne semble plus fonctionner, malheureusement...