Raspberry Pi 2 domotique : commande via trames TCP (10)

On en a peu parlé ces dernières semaines, mais le développement du Raspberry Pi domotique se poursuit, un peu plus lentement car les journées ne durent que 24h sur notre bonne vielle Terre 😉

Le script de gestion a été totalement revu :

  • utilisation de fonctions, appelées uniquement en cas de besoin (détection trame radio / rfid / TCP)
  • script de réception des trames tcp désormais en tâche de fond, avec lecture du code dans un simple tcp.txt
  • optimisation du code Python3
  • ajout des développements futurs, basés sur les ESP8266 essentiellement

Voyons ici l’évolution de la partie TCP, celle qui reçoit des trames avec un script enregistré dans tcpserv.py :

import socket, os, sys
# Activation serveur TCP
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.close()
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# On affecte IP de reception et port d ecoute
server_address = ('192.168.1.124', 5665)
sock.bind(server_address)
# Ecoute des trames entrantes
sock.listen(1)
while True:
    # Attente connexion
    connection, client_address = sock.accept()
    try:
        while True:
            #
            # on ecrit la trame recue dans tcp.txt
            #
            data = connection.recv(16)
            tcp = open('/home/pi/tcp.txt', 'w')
            tcp.write(str(data, encoding='utf8'))
            tcp.close()
            if data:

               break
    finally:
        # Fermeture connexion
        connection.close()

 

Lancez ce script en tâche de fond avec python3 tcpserv.py & et si vous voulez l’avoir dès le démarrage du Raspberry Pi, allez l’ajouter dans /etc/rc.local :

sudo python3 /home/pi/tcpserv.py &

Désormais, CHAQUE trame reçue sur le port 5665, à destination de l’adresse IP 192.168.1.124 (à modifier par celle de votre Pi), sera écrite dans le fichier tcp.txt. Il ne vous reste alors plus qu’à venir lire ce fichier dans votre script python3, et à en tirer des actions.

Dans notre cas, nous testons simplement le contenu de tcp.txt :

  if len(tcp) > 2:
    print(tcp)
    print("appel lecture TCP")
    tcpframe(tcp)
    continue

En plus clair, si, après l’avoir ouvert et lu, tcp.txt contient plus de 2 caractères, alors on appelle la fonction tcpframe(tcp) pour que le contenu soit analysé, une fonction dont voici un exemple :

def tcpframe(code):
  if "porte1" in code:
    print("porte 1 ouverte")
  if "porte2" in code:
    print("porte 2 ouverte")
  if "porte3" in code:
    print("porte 3 ouverte")

  os.system("echo 0 > /home/pi/tcp.txt")

A la fin de l’interprétation de la trame TCP reçue, on efface tout dans tcp.txt, en lui mettant un simple « 0 » (zéro).

Vous suivez à peu près jusqu’à présent ? 🙂

—————————————————

Voyons maintenant comment envoyer simplement des trames TCP, via une application Android (désolé, je ne suis pas utilisateur d’iOS fermé lol), UDP TCP SERVER. Une fois installée, vous allez pouvoir configurer des tas de boutons :

udptcp_raspberry

Dans cet exemple, si je presse SALON ON, une trame salonon est envoyée sur le port 5665, vers mon Raspberry Pi 192.168.1.124, qui va alors allumer le salon en lançant la bonne commande. Idem pour l’Alarme, que j’active et désactive à volonté.

Ma prochaine étape sera alors de venir programmer des ESP8266 pour, là encore, utiliser l’envoi de trames TCP : ouverture de porte, température, etc. A suivre donc…

 

 

Publications similaires

  • |

    EdgePoint : le noeud pour vos backbones WiFi ?

    Ubiquiti continue d’innover, avec cette fois l’annonce de l’EdgePoint, un module sur lequel vous allez venir brancher votre arrivée fibre et alimenter jusqu’à 16 modules WiFi en POE 54 ou 24V, selon vos besoins ! Alors oui, plus besoin de faire descendre 4 câbles ethernet sur votre installation, à la place vous allez faire monter une fibre et un seul câble POE pour alimenter tout ce petit monde. Bonne idée ? Oui et non, mais avec une tendance au non…

  • Infracom Online : évolutions dès le 24 Avril !

    La boutique en ligne d’Infracom va basculer la semaine prochaine sous une nouvelle version, je vous l’avais annoncé depuis quelques temps déjà. Les contrats étant pratiquement tous signés, les habituels essais hors production concluants, nous allons pouvoir vous proposer cette évolution assez rapidement. Conséquences immédiates : les clients récents devront recréer de nouveau leur compte. La base clients ne pouvant hélas être basculée facilement et simplement, nous avons opté pour la sécurité. les commandes en souffrance ne seront pas visibles pour…

  • Destockage : nouveautés

    De nouveaux produits ont fait leur apparition dans la rubrique destockage de la boutique en ligne, tel ce routeur double WAN de chez Vigor, permettant de relier 2 connexions internet à un seul et même réseau, équilibrant la charge sur l’un ou l’autre réseau, selon vos besoins et les possibilités de chaque connexion : Vous trouverez également de quoi sertir vos cordons coaxiaux en câble Aircom +, un GPS Bluetooth de chez Holux et sa batterie, des kits d’antennes WiFi,…

  • |

    Bonne année 2016

    Faisons original et simple, dans l’air du temps : passez une bonne année 2016, pour autant que cette coutume puisse avoir un quelconque sens ! Oui, les médias sont emplis de mièvreries sucrées, de voeux de fraternité, d’égalité, d’amour, et de santé, surtout la santé hein, car sinon rien ne va sans la santé. On va forcément oublier tout ceci d’ici quelques mois, la p’tite guerre va reprendre, les fachos du FHaine tenter de nous remonter les uns contre les…

  • Woox R4027 : multi-prisée WiFi

    Désireux d’installer un peu de domotique sur une piscine, c’est en surfant un peu par hasard que je suis tombé sur cette Woox R4027, une multi-prise WiFi permettant d’activer à volonté l’une des 4 sorties 220V, munie de 4 ports USB en prime :  Décourant un identifiant sous la forme ESPxxxx sur le serveur DHCP, c’est avec curiosité que je suis allé jeter un oeil dans la bestiole. Premier gag, il vous faudra un tournevis spécial, comme hélas trop souvent…

  • |

    Plus d’ADSL ? Passez en 3G !

    Amusante journée, avec des perturbations sur notre seule et unique connexion Orange, à défaut d’avoir réussi à obtenir une connexion chez Crétin.fr pour le moment… Amusante, ce ne serait pas le mot exact, mais bon, disons qu’à toute chose malheur est bon, et que ce billet n’aurait jamais existé si tout avait parfaitement fonctionné 😉 En fait, c’est après plusieurs minutes de recherches que je suis tombé sur cette annonce anodine : Pensez donc, même pas un email, moi l’abonné…