Mon installation

Bonjour

Je vous présente rapidement mon installation pour voir si certains morceaux de mes développements pourraient être diffusés à d’autres.

J’ai fait un blog avec quelques détails de l’installation ici :

Le synoptique de mon interface avec jeedom est le suivant

J’ai géré pas mal de communication à la main en remontant les infos dans jeedom par mqtt. Je pense que certaines infos pourraient intéresser en particulier pour le photovoltaïque avec un connexion sur un onduleur Sofar connecté à solarman.

Je ne sais pas développer les plugins jeedom mais si un développeur est intéressé pour encapsuler ce que j’ai fait n’hésitez pas à me contacter.

Pour ceux que l’aspect énergétique de mon projet pourraient intéresser j’ai aussi énormément de données à partager…

7 « J'aime »

Hello!
serait il possible que tu nous partage la partie SOFAR / solarman.
Cela m’intéresserait énormément pour récupérer les valeur de mon onduleur (il me semble que j’ai le même que le tiens).
A bientôt peut être ?

1 « J'aime »

Bonjour,
J’ai commencé par faire un compte pour récupérer mes données sur solarman et connecté mon onduleur.

Voici la fonction python qui fait la récupération des données :

# Lecture sur Solarman
# --------------------
def read_solarman():

    cookies = {
        'language': '7',
        'autoLogin': 'on',
        'Language': 'fr',
        'rememberMe': 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
        'timeOffset': 'undefined',
        'JSESSIONID': 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
    }

    headers = {
        'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:76.0) Gecko/20100101 Firefox/76.0',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
        'Accept-Language': 'fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3',
        'Referer': 'https://home.solarman.cn/device/inverter/view.html?v=2.3.0',
        'Connection': 'keep-alive',
        'Upgrade-Insecure-Requests': '1',
        'Pragma': 'no-cache',
        'Cache-Control': 'no-cache',
    }

    data = {
        'deviceId': 'XXXXXXXXX'
    }

    try:
        data = requests.post('https://home.solarman.cn/cpro/device/inverter/goDetailAjax.json', headers=headers, cookies=cookies, data=data,timeout=5).json()['result']['deviceWapper']

        MQTT_TOPIC_2 = "SolarmanPV"
        lst = ['realTimeDataBattery','realTimeDataElect','realTimeDataImp','realTimeDataPower','realTimeDataTemp']
#        for champs in lst:
#            MQTT_MSG ={info['name']:info["value"] for info in data[champs]}
#            client.publish(MQTT_TOPIC_2+"/"+champs, json.dumps(MQTT_MSG), 1)                                                                                                                                                                                                                                                          
                                                                                                                                                                                                                                                                                                                                       
        for champs in lst:                                                                                                                                                                                                                                                                                                             
            MQTT_MSG ={info['name']:info["value"] for info in data[champs]}                                                                                                                                                                                                                                                            
            now = datetime.datetime.now().strftime("%a %b %d %H:%M:%S %Y")                                                                                                                                                                                                                                                             
            MQTT_MSG['time'] = now                                                                                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                                                                                                       
            for k, v in MQTT_MSG.items():                                                                                                                                                                                                                                                                                              
                try:                                                                                                                                                                                                                                                                                                                   
                    MQTT_MSG[k] = float(v)                                                                                                                                                                                                                                                                                             
                except:                                                                                                                                                                                                                                                                                                                
                    MQTT_MSG[k] = v                                                                                                                                                                                                                                                                                                    
                    pass                                                                                                                                                                                                                                                                                                               
                                                                                                                                                                                                                                                                                                                                       
            client.publish(MQTT_TOPIC_2+"/"+champs, json.dumps(MQTT_MSG), 1)
    except:                                                                                                                                                                                             
        print("Solarman too long...")                                                                                                                                                                   
                                                                                                                                                                                                        
    return  

If faut remplir les différents champs rememberMe, JSESSIONID et deviceId.
J’avais utilisé le mode console de chrome pour les récupérer. Je n’ai pas retrouvé la manip ce soir …

Il faut ensuite faire un script python avec une boucle infinie pour récupérer les données avec MQTT dans Jeedom, ou alors utiliser le plugin script et récupérer les données au format json directement.
Pour ma part j’avais utilisé MQTT car je me sert d’un script qui collecte des données de différentes sources en même temps.

Voilà c’est un peu brut de pomme mais j’espère que ça peut t’aider et peut être une idée pour faire un vrai plugin avec un développeur motivé?

Pour le mode console il faut aller dans Applicactions / cookies :

Bonjour,

Merci pour ton partage.

J’ai essayé d’avancer mais à priori l’URL de l’API a changée, donc le reste aussi certainement.

As tu fait des modifications que tu pourrais partager?

Merci d’avance.

Thierry

Bonjour
Chez moi ça fonctionne toujours…

Le méthode de connexion par cookies ne fonction plus mais il y a une api sofar et un projet pour la consulter ici : GitHub - hareeshmu/solarman: Retrieve current Solar PV data from the Solarman API and publish to mqtt

Il faut contacter le support par mail pour avoir des identifiants pour l’API