Pages: 1 [2] 3   Go Down
Author Topic: Proposition domotique Arduino sans shield Ethernet  (Read 4681 times)
0 Members and 1 Guest are viewing this topic.
France
Offline Offline
Faraday Member
**
Karma: 52
Posts: 5341
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

C'est bien ce que je disais,POSIX=API=restrictions=chipotages, ... et surtout cantonné aux monde unix c'est pas plus portable que DotNet au final (! pas frappé j'ai pas dis ouvert, libre et blabla  smiley-sweat) ...
smiley-eek Si mon prof de programmation systéme te choppe ...
Tu passe par la fenêtre à grand coup de pied au c*l et tu fait huit fois le tour de la terre smiley-mr-green

POSIX = Standard = portabilité entre OS (... sauf sur ... windows smiley-roll, et encore je suis méchant une partie du POSIX est respecté)
voir http://fr.wikipedia.org/wiki/POSIX

Et humm ... la comparaison avec .net framework smiley-roll
On parle d'API bas niveau là (gestion du noyau, des processus, de la mémoire, ...) .net n'as rien à voir ...

Je savais pas, vu que je ne l'utilise que pour du contenu web, comme c'est ce pourquoi php était prévu à la base.  smiley-sweat
Justement c'est pour améliorer le temps de génération des pages web que Zend a conçu un moteur PHP avec machine virtuelle.
C'est pas pour les applications CLI que le temps de lancement est critique, par contre pour les pages web on compte les millisecondes maintenant smiley-wink

Je l'avoue, je n'ai jamais eu l'envie de chercher plus loin en ce qui concerne php.
Pour les  100 ligne aux lieu de 5000 je comparerais ceci aux core arduino, c'est bien joli de facilité les choses et masquer la difficulté mais on ne peux pas optimisé une fonction ouverte aux différentes éventualités (d'où le fait que la team arduino utilise des tableaux de correspondance pin<-> n°) .
En php les appels de fonctions "de base" de la libc sont appelé telle quelle, donc aucune forme de masquage à ce niveau.
Pour ce qui est des fonctions "toute prête" elle sont conçu par Zend, autant dire que niveau optimisation c'est autre chose que la team arduino smiley-wink
(Et puis vu le nombre de barbus et de sociétés qui injecte du fric dans PHP l'optimisation à l'heure du web 2.0 ça turbine !)

Et le plus important à mes yeux c'est le typage dynamique de php, comment avoir quelque chose d'optimisé si tu ne peux pas savoir ou définir les type de variable à traiter ... (c'est pour celà que je ne suis pas un grand fan de python non plus)
Depuis PHP 5.4 le typage stricte est possible, tu peut donc faire des programmes / fonctions avec des types prédéfini en dure.
Mais même en typage dynamique, la machine virtuelle de PHP optimise tellement les choses que souvent elle pré-détermine le type des variables.

D'un autre côté je ne peux pas trop critiqué les performances vu que ma préférence va vers java  smiley-kiss, enfin là c'est juste que je privilégie le côté objet stricte.
... Oui là tu peut pas critiquer effectivement smiley-mr-green
PHP n'as pas besoin de 512Mo pour faire son job hein smiley-mr-green

+++ c'est pas ce que j'appel naturel et simple.  smiley-mr-green
Franchement, naturel certes pas trop, mais simple ... faire un programme poussé en PHP c'est "finger in the noise", débuggage en (quasi) temps réel avec Xdebug, fonctions toute prête pour beaucoup de chose (compression zip, bzip, manipulation d'image, etc ...), ...

Les lib et extensions on ne peux pas y échapper quelque soit le langage tout dépend du besoin que ce soit en php ou c/c++. 
Oui mais en PHP t'as pas besoin d'include c'est le moteur PHP qui gère la listes des fonctions smiley-mr-green

Ici le principale problème était qu'un simple 0 te clôturait le socket ... l'échange simple de données binaire s'en est retrouvé compromise pour mon projet, encore une fois dans mon cas ça m'a tellement saoulé que j'ai pas cherché plus loin.  smiley-sweat
Faut dire que je cherchai un peu la merde en utilisant les fonctions pour envoyer des chaines de caractéres ASCIIZ (le Z à la fin c'est pas pour rien) smiley-wink
En utilisant les fonctions de transfert binaire par buffer (genre socket_write) quelque chose me dit que ça marcherai beaucoup mieux smiley-wink
(C'est dingue le nombre de trucs/conneries/astuces que j'ai pu comprendre en une année d'IUT ...)

Enfin au final c'est comme pour tout langage, tout dépend de ses préférences et affinités (que je n'ai pas avec php on l'auras remarqué  smiley-mr-green ).
Et moi j'aime pas les gens qui aime pas POSIX et qui préfère java à PHP (en plus, ralala) smiley-mr-green
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Made in Belgium
Offline Offline
God Member
*****
Karma: 0
Posts: 756
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


smiley-eek Si mon prof de programmation systéme te choppe ...
Tu passe par la fenêtre à grand coup de pied au c*l et tu fait huit fois le tour de la terre smiley-mr-green

Sans problème j'en prend 5 à mon petit déjeuné, je suis plus poilus que lui je parie.  smiley-mr-green

POSIX = Standard = portabilité entre OS (... sauf sur ... windows smiley-roll, et encore je suis méchant une partie du POSIX est respecté)
voir http://fr.wikipedia.org/wiki/POSIX

C'est bien ce que je dis, soit c'est portable ou pas, mais pas à moitier surtout quand c'est prévu à la base que pour unix, difficile donc de respecter le standard quand on s'appel microsoft ...

Quote
Ces standards ont émergé d'un projet de standardisation des API des logiciels destinés à fonctionner sur  des variantes du système d'exploitation UNIX.


Et humm ... la comparaison avec .net framework smiley-roll
On parle d'API bas niveau là (gestion du noyau, des processus, de la mémoire, ...) .net n'as rien à voir ...

La comparaison était sur la portabilité et non sur le langage où la façon de le gérer en lui même évidement.  smiley-sweat

Pour ce qui est des fonctions "toute prête" elle sont conçu par Zend, autant dire que niveau optimisation c'est autre chose que la team arduino smiley-wink
(Et puis vu le nombre de barbus et de sociétés qui injecte du fric dans PHP l'optimisation à l'heure du web 2.0 ça turbine !)

Restons zend  smiley-yell pour la comparaison avec la team arduino faut dire que j'ai pris l’extrême, mais bon à force de nous prémâcher le travaille on ne sais même plus ce que l'on fais réellement et ce qui ce cache derrière tout ça .  smiley-mr-green

Depuis PHP 5.4 le typage stricte est possible, tu peut donc faire des programmes / fonctions avec des types prédéfini en dure.
Mais même en typage dynamique, la machine virtuelle de PHP optimise tellement les choses que souvent elle pré-détermine le type des variables.

Faudrait que je me donner la peine  smiley-mr-green de prendre 5 min pour regardé une fois à ça.  smiley-sleep .

PHP n'as pas besoin de 512Mo pour faire son job hein smiley-mr-green

 smiley-eek On doit pas avoir la même JVM.  smiley-roll-sweat

Oui mais en PHP t'as pas besoin d'include c'est le moteur PHP qui gère la listes des fonctions smiley-mr-green

Fainéantise ... comme tout bon développeur quoi ...  smiley-mr-green

(C'est dingue le nombre de trucs/conneries/astuces que j'ai pu comprendre en une année d'IUT ...)

J'ai eu le même coup avec mon graduat et je partais de bien plus loin, la révélation quoi.  smiley-mr-green smiley-wink

Et moi j'aime pas les gens qui aime pas POSIX et qui préfère java à PHP (en plus, ralala) smiley-mr-green

J'aime le X mais pas posé  smiley-lol, java premier langage d'entreprise.
Maintenant il existe d'autre raison que la performance dans le choix d'un langage, aucun n'est réellement supérieure à l'autre et les comparés c'est débattre dans le vide,  tout dépend des besoins.  smiley-wink.

« Last Edit: June 23, 2012, 01:58:15 pm by osaka » Logged


Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 23
Posts: 2054
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Un article intéressant sur l'utilisation conjointe d'un RPi et d'une Arduino
http://alexandre.alapetite.fr/doc-alex/raspberrypi-nodejs-arduino/
Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

France
Offline Offline
Faraday Member
**
Karma: 52
Posts: 5341
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Sans problème j'en prend 5 à mon petit déjeuné, je suis plus poilus que lui je parie.  smiley-mr-green
J'imagine que pour le repas ça doit être quelque chose smiley-mr-green

C'est bien ce que je dis, soit c'est portable ou pas, mais pas à moitier surtout quand c'est prévu à la base que pour unix, difficile donc de respecter le standard quand on s'appel microsoft ...
Windows is windows ... tout le monde respectent les standards sauf windows ...

Allez c'est lundi, j'ai le droit à mon troll quotidien smiley-mr-green


La comparaison était sur la portabilité et non sur le langage où la façon de le gérer en lui même évidement.  smiley-sweat
Oui enfin bon c'est pas comparable même pour la portabilité puisse que .net framework 2.0 (et 3.0 il me semble) est porté sous linux / mac (via mono certes).

Restons zend  smiley-yell pour la comparaison avec la team arduino faut dire que j'ai pris l’extrême, mais bon à force de nous prémâcher le travaille on ne sais même plus ce que l'on fais réellement et ce qui ce cache derrière tout ça .  smiley-mr-green
Je suis zenD smiley-mr-green
Non franchement le moteur Zend prémâche pas le travail plus que ça.
C'est comme utiliser la STL dans un programme C++, pourquoi réinventer la roue alors qu'un standard existe ?

Faudrait que je me donner la peine  smiley-mr-green de prendre 5 min pour regardé une fois à ça.  smiley-sleep .
Tu fera gaffe la doc sur les typages forts de php.net ne semble pas à jour.
Il y a encore la phrase "La spécification d'un type ne peut être utilisée avec les types scalaires comme int ou string." alors que c'est possible avec les dernières version de PHP.
(Oublie volontaire du fait que ce soit les dernières release, ou oublie non volontaire ... le mystère reste entier)

smiley-eek On doit pas avoir la même JVM.  smiley-roll-sweat
Humour (et une pointe de troll poilu) smiley-wink

Fainéantise ... comme tout bon développeur quoi ...  smiley-mr-green
Un jour Bill Gates a dit :
Quote
I will always choose a lazy person to do a difficult job ...
because, he will find an easy way to do it.
Je pense que tu devrais reconsidérer : "Fainéantise ... comme tout bon développeur quoi" face à ce fait d'histoire smiley-mr-green
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Newbie
*
Karma: 0
Posts: 31
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci à tous pour vos commentaires!
Bon j'étais parti sur le raspberry Pi qui me parraissait pas mal, mais en lisant la suite je crois que je me suis pommé tres loin la!!!
Du coup je penses que je vais faire des tests basics sur un vieux portable que j'ai et j'aviserai sur la faisabilité à mon niveau (ou avec l'aide d'autres personnes si il y a des motivés).
Je pensais m'y connaitre un peu en PHP, mais la je m'aperçois que j'ai encore du boulot!
Allez, je rassemble le matos et je me lance...
Je vous tiens au jus!
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 31
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je reviens un peu sur tout ce qui a été dit.
Moi je voyais la chose plus simplement : à chaque rafraichissement de page, on vérifie les états des interrupteurs, etc...
Du coup pas besoin de socket?
Ça ralentirait beaucoup l'affichage des pages? Un autre inconvénient?
Logged

France
Offline Offline
Faraday Member
**
Karma: 52
Posts: 5341
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Moi je voyais la chose plus simplement : à chaque rafraichissement de page, on vérifie les états des interrupteurs, etc...
Du coup pas besoin de socket?
Ça ralentirait beaucoup l'affichage des pages? Un autre inconvénient?
C'est une solution simple et qui marche, pour l'affichage il ne sera que trés peu ralenti.

J'ai justement une connaissance sur twitter qui joue avec un raspberry pi + arduino :
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Newbie
*
Karma: 0
Posts: 31
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pas mal ça!!
T arriverais à avoir les sources?
Logged

Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 23
Posts: 2054
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Il suffit de suivre le lien YouTube et on tombe sur : http://pastebin.com/U7qKumMG
Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

Offline Offline
Newbie
*
Karma: 0
Posts: 31
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ah ben m...e je ne l avais pas vu!
Il n à pas du s'afficher sur l iPhone... ;-)
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 31
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Petite contribution pour ceux que ça peut intéresser : (Je suis tombé dessus dernièrement)
http://code.google.com/p/rc-switch/

Marche super bien avec des prises télécommandées à 15e les 3 avec télécommande en plus...
Deux possibilités : soit on utilise la télécommande (montage pas très esthétique) soit on branche un petit émetteur en 433Mhz
Ça peut servir
Logged

France
Offline Offline
Faraday Member
**
Karma: 52
Posts: 5341
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Pas mal ça!!
T arriverais à avoir les sources?
Suffit de regarder dans la description de la vidéo smiley-wink

Il suffit de suivre le lien YouTube et on tombe sur : http://pastebin.com/U7qKumMG
Je tient à préciser qu'il débute en PHP, en Raspberry et en Arduino.
Son code pourrait être réduit en une petite 50aine de lignes smiley-wink

Tient comme j'ai du temps à perdre :
Code:
void setup() {
  Serial.begin(115200);

  for (byte i = 2; i <= 13; ++i)
    pinMode(i, OUTPUT); 
}

void loop() {
  if (Serial.available()) {
    byte cmd = Serial.read();

    switch (cmd) {
    case '1':
      Serial.println();
      for (byte i = 2; i <= 13; ++i)
        Serial.print(digitalRead(i));
      Serial.write(';');
      break;

    case '2':
      for (byte i = 0; i < 24; ++i) {
        Serial.println();
        Serial.print("BOOT");
      }

    case 'a'...'l': // GCC only (Not C standard)
      byte pin = cmd - 'a' + 2;
      if (digitalRead(pin) == LOW)
        digitalWrite(pin, HIGH);
      else
        digitalWrite(pin, LOW);
      break;
    }
  }
}
(Ps: code pas testé, je vais lui envoyer pour qu'il test)
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bonjour,

vous avez ete bavard donc je n'ai pas tout lu

mais vous avez des solutions serveur-module qui existe en domotique au lieu de tout refaire

exemple : domotiga ou le recent mais prometteur domogic

vous pouvez lui adjoindre de smodules arduino sans problème
je pense que c'est plus pratique à distance en reseau pour la communication avec le pc (la carte est au plus pret et il n'y a que des fils rj45 à tirer)
et le travail appelé XPLduino est très intéressant

 pour moi avec arduino le plus simple est de faire de smodules genre :
prise multiple telecommandée
module lumière/relaie
module volet roulant ....
avec une sonde de température sur chaque !
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 3
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hey c'est ma vidéo et mon code d'origine !
N'hésitez pas à vous abonner à ma chaine, j'avance bien là dans mon projet !
Et merci pour le code simplifié, même s'il ne retourne pas les états, je vais recoder un peu tout ça et m'inspirer des "for" smiley-wink
EDIT : Non rien, merci, tout marche, mais je dois recoder un truc car maintenant il vérifie si la porte est ouverte smiley-grin
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 31
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hello!
Bon j'ai continué à travailler sur mon petit projet et voila ou j'en suis :
Je compte utiliser :

Deux cartes arduino (faites maison)
- Une pour gérer les Inputs (J'y reviendrai plus tard)
- Une pour gérer les Outputs (Allumage extinction lumières, fermeture volets, etc...)

Un PC portable pour l'instant (avant investissement dans un Raspberry py)
Sur celui ci je compte faire tourner :
Serveur PHP/Mysql (Et php serial)
Un daemon Python qui regarde tout ce que la carte arduino Inputs envoie et qui met à jour la BDD
Pourquoi pas la gestion d'un téléphone portable pour permettre l'envoi de SMS (testé et fonctionnel) et d'une connexion de secours 3G (A tester)

Pour avoir un retour d'état d'une lampe par exemple, je pense brancher une carte 230V->5V sans transfo (voir http://www.sonelec-musique.com/electronique_bases_alims_sans_transfo.html) en parallèle sur le bornier de l'ampoule. Ensuite je tire un câble jusqu’à ma baie domotique et je le relie à ma carte Arduino (en fait surement sur des CD4021B). Si HIGH->lampe allumée.

Ormis la 3G, j'ai tout testé et ça à l'air de bien tourner. Il ne me reste plus qu'a cabler une lampe ou deux, un volet ou deux et voir ce que ça donne.

Que pensez vous de tout ça?

Des personnes intéressées pour m'aider à programmer tout ça de manière évolutive?
A+
Logged

Pages: 1 [2] 3   Go Up
Jump to: