Sujet fermé
Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5

Températures en direct avec Websockets
#1

Bonjour à tous,
je vous fais part de mes essais avec le rasp.
Mon objectif de départ est de relever les températures à mon domicile et dans ma résidence secondaire, et également d'allumer/éteindre le chauffage à distance.
J'y arrive grâce aux blogs idleman, yaug etc... . C'est encore artisanal, mais ce qui m'a le plus étonné dernièrement, c'est les Websockets.
Je vous donne donc le lien de ce que j'ai réussi à faire, avec sur le serveur un programme python (qui va lire les capteurs DS18B20) lancé avec websocketdarm, et sur le client une simple page html avec deux DIV. C'est le programme python qui génère le tableau des températures, et l'envoie dans un message via le websocket.




Je donnerai plus d'infos à ceux que ça intéresse. Merci aux gentils hackers de ne pas détruire mes machines, car ce n'est pas très protégé. Je suis preneur pour des tuyaux.

Il me reste à faire la partie commande à distance avec html5 que je découvre progressivement.
#2

Bonjour à toi,

J'utilise des ws pour envoyer/écouter des trames. Je connais pas websocketarm en python. J'utilise un serveur node et une GUI node-red : c'est très simple d'utilisation et tu déploies une application en deux coups de cuillères à pots.
Une question : est-ce qu'il y a une authentification possible du client? Parce-que là, tu exposes ton rasp direct sur le net.
Code :
Starting Nmap 5.21 ( http://nmap.org ) at 2014-04-11 10:42 CEST
Nmap scan report for xxxx.fbx.proxad.net (x.x.x.x)
Host is up (0.046s latency).
Not shown: 997 filtered ports
PORT     STATE  SERVICE VERSION
80/tcp   open   http    lighttpd 1.4.31
|_html-title: 404 - Not Found
443/tcp  closed https
9999/tcp open   abyss?
No OS matches for host (If you know what OS is running on it, see http://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=5.21%D=4/11%OT=80%CT=443%CU=42647%PV=N%DS=9%DC=T%G=Y%TM=5347AB02%
OS:P=x86_64-unknown-linux-gnu)SEQ(SP=108%GCD=1%ISR=10E%TI=Z%CI=RD%TS=7)OPS(
OS:O1=M5ACST11NW6%O2=M5ACST11NW6%O3=M5ACNNT11NW6%O4=M5ACST11NW6%O5=M5ACST11
OS:NW6%O6=M5ACST11)WIN(W1=3890%W2=3890%W3=3890%W4=3890%W5=3890%W6=3890)ECN(
OS:R=Y%DF=Y%T=36%W=3908%O=M5ACNNSNW6%CC=Y%Q=)T1(R=Y%DF=Y%T=36%S=O%A=S+%F=AS
OS:%RD=0%Q=)T2(R=Y%DF=N%T=83%W=0%S=Z%A=S%F=AR%O=%RD=0%Q=R)T3(R=Y%DF=N%T=83%
OS:W=0%S=Z%A=O%F=AR%O=%RD=0%Q=)T3(R=Y%DF=N%T=83%W=0%S=Z%A=O%F=AR%O=%RD=0%Q=
OS:R)T4(R=Y%DF=Y%T=36%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T5(R=Y%DF=Y%T=36%W=0%S=Z%A
OS:=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=36%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T7(R=Y%D
OS:F=N%T=83%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=R)T7(R=Y%DF=N%T=83%W=0%S=Z%A=S+%F=A
OS:R%O=%RD=0%Q=)U1(R=Y%DF=N%T=83%IPL=38%UN=EC5E%RIPL=G%RID=G%RIPCK=G%RUCK=G
OS:%RUD=G)U1(R=Y%DF=N%T=83%IPL=38%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)U1
OS:(R=Y%DF=N%T=83%IPL=38%UN=E80C%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)U1(R=Y%D
OS:F=N%T=83%IPL=38%UN=6B7F%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)U1(R=Y%DF=N%T=
OS:83%IPL=38%UN=6C0E%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=N)

Network Distance: 9 hops
Voilà le résultat de nmap sur ton routeur. On voit le port 9999 utilisé par un des deux ws, l'autre étant sur un proxy no-ip. Je sais pas si on peut l'exploiter. Mais c'est peut-être pas trop prudent.
D'où ma question.
Peut-être utiliser fail2ban sur ton rasp.

Cool
#3

Ravi de voir des gens se servir des websockets Smile

C'est bien pratique ces bestioles oui.
Mais fonctionnel uniquement sur les navigateurs récents (ce qui fait que je ne les utilise pas au boulot par exemple)

Serial Organisateur d'aPIro
Bloggeur Bidouilleur
Ydle, domotique DIY basée sur un raspberry pi
#4

Bonjour à Yaug,

C'est quand même la solution la plus simple/économe en ressource sur raspberry : ça évite de générer une page à chaque push de données par le serveur, c'est le client qui fait le job. Donc tant pis pour les nav pas à la page.
Mais je repose la question en terme de sécurité. Est-ce qu'on peut authentifier le client, crypter etc... Quid du DOS ou de l'injection de code? Je me documente petit à petit, et comme isitom, je suis preneur de toute info/ retour d'expérience.
Merci pour vos avis.

Cool
#5

Ne m'en servant pas du tout, je n'ai pas encore eut la joie de faire joujou avec pour de vrai.
Je ne saurais donc te répondre question sécurité.

Par contre, je suis preneur de l'info une fois que tu l'auras trouvé Smile

Serial Organisateur d'aPIro
Bloggeur Bidouilleur
Ydle, domotique DIY basée sur un raspberry pi
#6

bonjour à vous
merci pour vos remarques.
je n'ai pas de réponse pour la question de l'authentification.

pour lancer le websocket sur le serveur, j'utilise la commande :
nohup ./websocketdarm --port=9999 python -u ./ws_temptab.py &
websocketdarm étant la version pour arm de websocketd que tu trouves ici:
https://github.com/joewalnes/websocketd/...nd-install
c'est ultra simple d'utilisation, puisqu'il suffit de lancer une commande (shell ou autre prog), on peut même lancer bash!!.
Et il n'y a même pas besoin de serveur Http si ta page html est locale!
Pour la sécurité j'ai appliqué en gros les recommandations de ce site (y compris failtoban)
http://www.clubic.com/forum/hardware-gen...page1.html
C'est certainement très perméable, mais bon, il n'y a rien à voler. Je retirerai le lien si nécessaire et suis toujours preneur d'autres conseils de sécurité.
Bonne journée.
Ps: je ne sais pas comment communiquer mes sources ??
#7

Effectivement, c'est très simple!/

Ben, pour tes source à partager, pourquoi pas github. Couplé à git c'est pratique pour développer et versionner à plusieurs.

Ya rien à voler : c'est clair. C'est juste pour le coté parano de la chose. N'empêche que j'utilise une clef avec ssh plutôt que l'authentification par mot de passe.

En tout cas, ça fonctionne ton fail2ban / portentry, tu dois avoir mes traces dans tes fichiers de log. Donc tu as bien fait de suivre ce tuto.

Cool
#8

Bonsoir,
Désolé, mais je dois arrêter mes machines. Quelqu'un d'indélicat a viré mes 2 IPTABLES.
Difficile de partager dans ces conditions. Dommage !
Yaug, merci à toi de fermer le sujet, et si possible de faire disparaître le lien vers ma page html.
Peut-être à une autre fois ?
#9

Disons que partager ne veut pas dire laisser tout ouvert :p

Je ferme

Serial Organisateur d'aPIro
Bloggeur Bidouilleur
Ydle, domotique DIY basée sur un raspberry pi
#10

J'ai aussi supprimé ton IP du nmap de gambit. Wink
Je ne vois pas trop le rapport avec Iptables, (ni 2 Iptables) , (ni Netfilter) ? (Si tu as des détails)
#11

Discussion ré-ouverte à la demande d' isitom
#12

Merci uggy et bravo pour ton exploit dans les airs.
Après quelques péripéties, je remets en ligne mon lien de suivi en live des températures via websockets.
http://82.227.40.57/jpt/ws_temp_jd.html

Et pour ceux qui voudraient faire la même chose, vous trouverez les sources ici.
http://82.227.40.57/public/

- ws_temptab.py est une adaptation du programme du tuto http://www.manuel-esteban.com/raspi-capt...e-ds18b20/
Il permet de scanner plusieurs capteurs de manière automatique.
d'abord, il va lire le fichier domo.xml qui contient vos données domotique (en particulier la liste de vos capteurs DD18B20 et tout ce que vous voudrez rajouter).
Vous pouvez ainsi ajouter/supprimer/modifier des capteurs en modifiant le xml, sans changer le programme.

Testez le programme en lançant la commande "python ws_temptab.py". Vous devriez voir s'afficher toutes les 5 secondes un tableau Html <table> ...</table>
Si ça marche, vous êtes prêt à servir ce tableau dans un websocket, il suffit de lancer la commande :

nohup ./websocketdarm --port=9999 python -u ./ws_temptab.py &

websocketdarm étant la version pour arm de websocketd que vous trouvez ici:
https://github.com/joewalnes/websocketd/...nd-install

- ws_temp_jd.html La page html est vraiment très simple. Ouverture du websocket, lecture du message, et affichage dans deux <div> TJ et TD, et déconnexion du web socket à la fermeture de la page.

Voila, en tirant du câble téléphone, avec quelque dominos et des capteurs DS18B20 achetés 11€ les 10, vous pouvez surveiller les températures de la cave au grenier, en passant par le bain, le congèl, l'aquarium etc... sur tous vos raspberry.
Sujet fermé


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)