Développer un plugin pour les CPL devolo

Bonjour à tous,

Je viens de voir qu’une version 1 de l’API pour attaquer les prise CPLs Devolo (WIFI) était sortie :

J’ai reussi assez facilement à recuperer des infos de mes Devolos :

exemple :

----------------------------------------------------------
NB clients WIFI : 5
   * 48:55:19:16:38:FA
   * 98:F4:AB:F2:47:5A
   * 98:F4:AB:F2:49:4F
   * 98:F4:AB:F2:8D:58
   * 98:F4:AB:F3:C5:A4

Prises DEVOLO voisines : 5
   * Piscine ( devolo Magic 1 WiFi mini ) --> TX : 344 Mbits, RX : 151 Mbits
   * Box ( devolo Magic 1 LAN 1-1 ) --> TX : 151 Mbits, RX : 344 Mbits
   * Cuisine ( devolo Magic 1 WiFi mini ) --> TX : 207 Mbits, RX : 337 Mbits
   * Billard ( devolo Magic 1 WiFi mini ) --> TX : 224 Mbits, RX : 685 Mbits
   * TV ( devolo Magic 1 WiFi mini ) --> TX : 163 Mbits, RX : 378 Mbits
----------------------------------------------------------

En l’occurence, sur un de mes Devolos,

  • Le nb de devices WIFI connectés et leur adresse mac
  • Les prises CPL voisines avec leur version, le modele, les tx de transfert, …

Le script que j’ai fait :

import sys
from devolo_plc_api import Device

# IP of the device to query
IP = sys.argv[1]

# Password, if the device has one. It is the same as the Web-UI has. It no password is set, you can remove the password
# parameter or set it to None.
PASSWORD = "None"

def run():
    with Device(ip=IP) as dpa:
        # Set the password
        dpa.password = PASSWORD

        network = dpa.plcnet.get_network_overview()
        connected_stations = dpa.device.get_wifi_connected_station()

        print('----------------------------------------------------------')
        print("NB clients WIFI :",len(connected_stations))
        for i in range(0, len(connected_stations), 1):
            print('   *', connected_stations[i].mac_address)  
        
        print("")
        print("Prises DEVOLO voisines :",len(network.devices))
        for i in range(0, len(network.devices), 1):
            print("   *",network.devices[i].user_device_name,"(",network.devices[i].product_name,") --> TX :",round(network.data_rates[i].tx_rate),"Mbits, RX :",round(network.data_rates[i].rx_rate),"Mbits")  
            
        print('----------------------------------------------------------')

if __name__ == "__main__":
    run()

On peut aussi gerer le wifi, les led, la mise à jour, le reboot, …

Bref, ca me parait interessant, MAIS … Je ne suis pas developpeur
Donc si un dev etait interessé pour faire un plugin, ca serait cool.

A disposition pour aider et tester

Norbert

1 « J'aime »

Hello,
Je peux voir pour faire un plugin Devolo mais il me faut un peu de temps avant de pouvoir m’y mettre. Si tout va bien, je pense pouvoir donner des nouvelles dans le deuxième moitié de février mais je ne promet rien.

Il ne faudra pas hésiter à me relancer s’il n’y a pas d’info fin février.

Dans un premier temps, je vais voir ce qi pourra être fait avec mes équipements magic2 sans wifi et avec wifi6. Ensuite, on pourra voir comment intégrer et tester d’autres équipements.

Si je fait ce plugin, il sera gratuit.

1 « J'aime »

Cool !
Si je peux aider, n’hésite pas
Tes délais sont les miens !!

Une remarque, l’API développée nécessite un debian bulleyes
De mon côté, j’ai des devolos Magic 1, dlan 550 et 1200

Norbert

Hello ngrataloup, est-ce que vous pourriez partager votre config Jeedom (plugin script) en plus du script. La configuration a réaliser au niveau de la commande du script dans Jeedom ?
Je n’arrive pas à récupérer les informations de mes Devolo avec votre script.

Ce serait sympa, merci

Joël

Je ne suis pas chez moi, je m’en occupe demain

Attention, la version actuelle de devolo_plc_api ne fonctionne pas avec les python de version inférieur à 3.8. hors, Dedian 10 contient python 3.7.

Il n’est donc pas possible d’utiliser devolo_plc_api sur les serveurs jeedom. Ou alors, il faut utiliser une vielle version qui était compatible python 3.7 mais qui a des fonctionalités limitées

J’ai commencé de développement d’un plugin qui embarquera la dernière version de devolo_plc_api que j’ai légèrement modifiée qu’elle fonctionne avec python 3.7.

Je viens de vérifier et ca ne fonctionne pas avec le plugin script … une erreur python de type asyncio … et comme je n’y connais rien, je ne sais pas debuguer !!

Norbert

Je confirme que je n’étais jamais arrivé à installer sur debian 10, mais sur debian 11, aucun souci

La dernière version de devolo_plc_api compatible avec python3.7 est la 0.5.3 alors que la verison actcuelle est 1.1.0.

En conséqunce, pip3 install la version 0.5.3 sur les Debian 10. Cette version était encore lacunaire et des interface de fonction ne correspondent pas à documentation.

Les version supérieure à 0.5.3 ne sont plus compatibles avec python3.7 car l’pérateur := , qui a été introduit en python 3.8, est utilisé à deux reprises.

J’ai donc embarqué donc la version 1.1.0 dans le plugin et remplacé les lignes du genre

if ((info := get_info()) != None):
    print (info)

par

info = get_info()
if (info != None):
    print (info)

Pour le moment, j’ai la découverte des équipement qui fonctionne. J’espère ne pas rencontrer d’autre soucis dans le suite de l’écriture du plugin.

Si quelqu’un peut me faire un logo pour le plugin, je suis preneur.

Je peux le faire moi-même mais je suis peu efficace pour ce genre de chose et je préfère mettre mon temps sur le code.

Il serait bien que le logo contienne les mots DEVOLO et CPL

Hello,
Pas très fort en image, mais un genre comme ça décrit bien ce qu’on va avoir en prenant le plugin si quelqu’un peu rajouter DEVOLO en plus jojo ?

devolo2

devolo

2 « J'aime »

Superbe.

Tu les avais déjà ou t’es un AS?


Photoshop

Plugin mis à jour avec le logo.

MERCI!

devolo3

1 « J'aime »

Si tout va bien, j’espère publier en beta une version très restreinte du plugin à la fin de la semaine. Il devrait y avoir:

  • Découverte automatique et création automatique des équipements
  • Une commande pour la localisation en faisant clignoter les leds d’un équipement.
  • Un début de Doc
2 « J'aime »

Superbe!
On attends avec impatience. Merci beaucoup

J’ai pris un peu de retard (il n’y a pas que jeedom dans la vie :wink:).

Mais j’espère encore pouvoir publier une première version pour la fin du week-end.

Oulala, pas de souci, tu prends tout ton temps, c’est déjà cool que tu t’en occupes :+1:

2 « J'aime »