Go Down

Topic: Proposition domotique Arduino sans shield Ethernet (Read 6 times) previous topic - next topic

skywodd


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 ;)


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 ;)
(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  :*, 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) ;)
En utilisant les fonctions de transfert binaire par buffer (genre socket_write) quelque chose me dit que ça marcherai beaucoup mieux ;)
(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:
Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

osaka

#16
Jun 23, 2012, 08:19 pm Last Edit: Jun 23, 2012, 08:58 pm by osaka Reason: 1


: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: ;)


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é  XD, 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.  ;).


barbudor

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 ?

skywodd


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) ;)


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:
Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

nono056

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!

nono056

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?

skywodd


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 :
http://www.youtube.com/watch?v=fqWuV0UuPkY
Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

nono056

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

barbudor

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 ?

nono056

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

nono056

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

skywodd


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

Suffit de regarder dans la description de la vidéo ;)


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 ;)

Tient comme j'ai du temps à perdre :
Code: [Select]
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)
Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

fraborak

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 !

lululombard

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" ;)
EDIT : Non rien, merci, tout marche, mais je dois recoder un truc car maintenant il vérifie si la porte est ouverte :D

nono056

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+

Go Up