Interrogation API Solarman et récupération données (onduleur SOFAR SOLAR)

Bonjour,

Après avoir suivi la procédure suivante pour récupération du jeton et connexion à l’API : Collect Inverter data from Solarman API - Share your Projects! - Home Assistant Community

Et en utilisant le script mentionné dans ce sujet : Récupération info Solarman

Je vois bien dans les logs les données recherchées :

0438|[2023-09-18 15:20:27]INFO : [Solarman] json reçu => {"code":null,"msg":null,"success":true,"requestId":"38351b5689639e38","deviceSn":"SE1ES430N5R271","deviceId":228902429,"deviceType":"INVERTER","deviceState":1,"collectionTime":1695042895,"dataList":[{"key":"SN1","value":"SE1ES430N5R271","unit":null,"name":"SN"},{"key":"SS_CY1","value":"11","unit":null,"name":"Production Compliance Country"},{"key":"SYSTIM1","value":"  23-09-18 15:13:47","unit":null,"name":"System Time"},{"key":"HWv1","value":"V100","unit":null,"name":"Hardware Version"},{"key":"SWmai_v1","value":"V310","unit":null,"name":"Software Master Version"},{"key":"DSPv1","value":"V310","unit":null,"name":"DSP Version"},{"key":"DSPv2","value":"V310","unit":null,"name":"Vice DSP Version"},{"key":"DPi_t1","value":"460","unit":"W","name":"Total DC Input Power"},{"key":"AV1","value":"236.50","unit":"V","name":"AC Voltage R/U/A"},{"key":"AV2","value":"0.00","unit":"V","name":"AC Voltage S/V/B"},{"key":"AV3","value":"0.00","unit":"V","name":"AC Voltage T/W/C"},{"key":"AC1","value":"2.47","unit":"A","name":"AC Current R/U/A"},{"key":"AC2","value":"0.28","unit":"A","name":"AC Current S/V/B"},{"key":"AC3","value":"0.06","unit":"A","name":"AC Current T/W/C"},{"key":"Et_ge0","value":"31","unit":"kWh","name":"Cumulative Production (Active)"},{"key":"Etdy_ge1","value":"2.67","unit":"kWh","name":"Daily Production (Active)"},{"key":"ST_PG1","value":"Static","unit":null,"name":"Grid Status"},{"key":"PG_F1","value":"49.98","unit":"Hz","name":"Grid Frequency"},{"key":"PG_Pt1","value":"0.00","unit":"W","name":"Total Grid Power"},{"key":"t_gc1","value":"2","unit":"kWh","name":"Cumulative Grid Feed-in"},{"key":"Et_pu1","value":"87","unit":"kWh","name":"Cumulative Energy Purchased"},{"key":"t_gc_tdy1","value":"0.08","unit":"kWh","name":"Daily Grid Feed-in"},{"key":"Etdy_pu1","value":"4.17","unit":"kWh","name":"Daily Energy Purchased"},{"key":"PG_V1","value":"236.30","unit":"V","name":"Grid Voltage R/U/A"},{"key":"PG_V2","value":"0.00","unit":"V","name":"Grid Voltage S/V/B"},{"key":"PG_V3","value":"0.00","unit":"V","name":"Grid Voltage T/W/C"},{"key":"PG_C1","value":"0.70","unit":"A","name":"Grid Current R/U/A"},{"key":"PG_C2","value":"0.00","unit":"A","name":"Grid Current S/V/B"},{"key":"PG_C3","value":"0.00","unit":"A","name":"Grid Current T/W/C"},{"key":"BUS_V2","value":"376.60","unit":"V","name":"Busbar Voltage"},{"key":"E_Puse_t1","value":"290.00","unit":"W","name":"Total Consumption Power"},{"key":"Et_use1","value":"112","unit":"kWh","name":"Cumulative Consumption"},{"key":"Etdy_use1","value":"6.00","unit":"kWh","name":"Daily Consumption"},{"key":"B_ST1","value":"Charging","unit":null,"name":"Battery Status"},{"key":"B_V1","value":"50.10","unit":"V","name":"Battery Voltage"},{"key":"B_C1","value":"2.77","unit":"A","name":"Battery Current"},{"key":"B_P1","value":"-160.00","unit":"W","name":"Battery Power"},{"key":"GE_C1","value":"1.75","unit":"A","name":"Production Current"},{"key":"Pcg_dcg1","value":"140.00","unit":"W","name":"Charging/Discharging Power"},{"key":"P_INV1","value":"1000.00","unit":"W","name":"Storage Inverter Power"},{"key":"B_left_cap1","value":"40","unit":"%","name":"SoC"},{"key":"t_cd_cg_n1","value":"6","unit":null,"name":"Cumulative Charging/Discharging Time"},{"key":"t_cg_n1","value":"16","unit":"kWh","name":"Total Charging Energy"},{"key":"t_dcg_n1","value":"15","unit":"kWh","name":"Total Discharging Energy"},{"key":"Etdy_cg1","value":"1.27","unit":"kWh","name":"Daily Charging Energy"},{"key":"Etdy_dcg1","value":"0.83","unit":"kWh","name":"Daily Discharging Energy"},{"key":"INV_T0","value":"47","unit":"℃","name":"Temperature- Inverter"},{"key":"B_T1","value":"28.00","unit":"℃","name":"Temperature- Battery"},{"key":"T_RDT1","value":"40","unit":"℃","name":"Radiator Temperature"},{"key":"V_eme_o1","value":"236.20","unit":"V","name":"Emergency Output Voltage"},{"key":"P_eme_o1","value":"0.00","unit":"W","name":"Emergency Output Power"},{"key":"Etdy_ge_hou1","value":"2.65","unit":"h","name":"Daily Production Hour"},{"key":"HR_Ege_t1","value":"30","unit":"h","name":"Total Production Hour"},{"key":"CD_TIM1","value":"0.03","unit":"s","name":"Countdown Time"},{"key":"Buck_C1","value":"0.64","unit":"A","name":"Buck Current"},{"key":"LLC_BUS_V1","value":"323.00","unit":"V","name":"LLC Busbar Voltage"},{"key":"C_Dcp1","value":"0.00","unit":null,"name":"DC Component-Current"},{"key":"V_Dcp1","value":"-40.80","unit":null,"name":"DC Component-Voltage"},{"key":"INV_ST1","value":"Grid connected","unit":null,"name":"Inverter status"}]}
0439|[2023-09-18 15:20:27]INFO : [Solarman] Variable solarman_value = SE1ES430N5R271
0440|[2023-09-18 15:20:27]INFO : [Solarman] Variable solarman_name = SN
0441|[2023-09-18 15:20:27]INFO : [Solarman] Variable solarman_unit = SN

Le JSON :

{
    "code": null,
    "msg": null,
    "success": true,
    "requestId": "b84502161f7214ce",
    "deviceSn": "SE1ES430N5R271",
    "deviceId": 228902429,
    "deviceType": "INVERTER",
    "deviceState": 1,
    "collectionTime": 1695042583,
    "dataList": [{
        "key": "SN1",
        "value": "SE1ES430N5R271",
        "unit": null,
        "name": "SN"
    }, {
        "key": "SS_CY1",
        "value": "11",
        "unit": null,
        "name": "Production Compliance Country"
    }, {
        "key": "SYSTIM1",
        "value": "  23-09-18 15:09:10",
        "unit": null,
        "name": "System Time"
    }, {
        "key": "HWv1",
        "value": "V100",
        "unit": null,
        "name": "Hardware Version"
    }, {
        "key": "SWmai_v1",
        "value": "V310",
        "unit": null,
        "name": "Software Master Version"
    }, {
        "key": "DSPv1",
        "value": "V310",
        "unit": null,
        "name": "DSP Version"
    }, {
        "key": "DSPv2",
        "value": "V310",
        "unit": null,
        "name": "Vice DSP Version"
    }, {
        "key": "DPi_t1",
        "value": "920",
        "unit": "W",
        "name": "Total DC Input Power"
    }, {
        "key": "AV1",
        "value": "235.80",
        "unit": "V",
        "name": "AC Voltage R/U/A"
    }, {
        "key": "AV2",
        "value": "0.00",
        "unit": "V",
        "name": "AC Voltage S/V/B"
    }, {
        "key": "AV3",
        "value": "0.00",
        "unit": "V",
        "name": "AC Voltage T/W/C"
    }, {
        "key": "AC1",
        "value": "2.09",
        "unit": "A",
        "name": "AC Current R/U/A"
    }, {
        "key": "AC2",
        "value": "0.29",
        "unit": "A",
        "name": "AC Current S/V/B"
    }, {
        "key": "AC3",
        "value": "0.06",
        "unit": "A",
        "name": "AC Current T/W/C"
    }, {
        "key": "Et_ge0",
        "value": "31",
        "unit": "kWh",
        "name": "Cumulative Production (Active)"
    }, {
        "key": "Etdy_ge1",
        "value": "2.60",
        "unit": "kWh",
        "name": "Daily Production (Active)"
    }, {
        "key": "ST_PG1",
        "value": "Static",
        "unit": null,
        "name": "Grid Status"
    }, {
        "key": "PG_F1",
        "value": "49.97",
        "unit": "Hz",
        "name": "Grid Frequency"
    }, {
        "key": "PG_Pt1",
        "value": "0.00",
        "unit": "W",
        "name": "Total Grid Power"
    }, {
        "key": "t_gc1",
        "value": "2",
        "unit": "kWh",
        "name": "Cumulative Grid Feed-in"
    }, {
        "key": "Et_pu1",
        "value": "87",
        "unit": "kWh",
        "name": "Cumulative Energy Purchased"
    }, {
        "key": "t_gc_tdy1",
        "value": "0.08",
        "unit": "kWh",
        "name": "Daily Grid Feed-in"
    }, {
        "key": "Etdy_pu1",
        "value": "4.17",
        "unit": "kWh",
        "name": "Daily Energy Purchased"
    }, {
        "key": "PG_V1",
        "value": "235.90",
        "unit": "V",
        "name": "Grid Voltage R/U/A"
    }, {
        "key": "PG_V2",
        "value": "0.00",
        "unit": "V",
        "name": "Grid Voltage S/V/B"
    }, {
        "key": "PG_V3",
        "value": "0.00",
        "unit": "V",
        "name": "Grid Voltage T/W/C"
    }, {
        "key": "PG_C1",
        "value": "2.70",
        "unit": "A",
        "name": "Grid Current R/U/A"
    }, {
        "key": "PG_C2",
        "value": "0.00",
        "unit": "A",
        "name": "Grid Current S/V/B"
    }, {
        "key": "PG_C3",
        "value": "0.00",
        "unit": "A",
        "name": "Grid Current T/W/C"
    }, {
        "key": "BUS_V2",
        "value": "373.20",
        "unit": "V",
        "name": "Busbar Voltage"
    }, {
        "key": "E_Puse_t1",
        "value": "280.00",
        "unit": "W",
        "name": "Total Consumption Power"
    }, {
        "key": "Et_use1",
        "value": "112",
        "unit": "kWh",
        "name": "Cumulative Consumption"
    }, {
        "key": "Etdy_use1",
        "value": "5.98",
        "unit": "kWh",
        "name": "Daily Consumption"
    }, {
        "key": "B_ST1",
        "value": "Charging",
        "unit": null,
        "name": "Battery Status"
    }, {
        "key": "B_V1",
        "value": "50.00",
        "unit": "V",
        "name": "Battery Voltage"
    }, {
        "key": "B_C1",
        "value": "11.92",
        "unit": "A",
        "name": "Battery Current"
    }, {
        "key": "B_P1",
        "value": "-640.00",
        "unit": "W",
        "name": "Battery Power"
    }, {
        "key": "GE_C1",
        "value": "4.13",
        "unit": "A",
        "name": "Production Current"
    }, {
        "key": "Pcg_dcg1",
        "value": "610.00",
        "unit": "W",
        "name": "Charging/Discharging Power"
    }, {
        "key": "P_INV1",
        "value": "1000.00",
        "unit": "W",
        "name": "Storage Inverter Power"
    }, {
        "key": "B_left_cap1",
        "value": "38",
        "unit": "%",
        "name": "SoC"
    }, {
        "key": "t_cd_cg_n1",
        "value": "6",
        "unit": null,
        "name": "Cumulative Charging/Discharging Time"
    }, {
        "key": "t_cg_n1",
        "value": "16",
        "unit": "kWh",
        "name": "Total Charging Energy"
    }, {
        "key": "t_dcg_n1",
        "value": "15",
        "unit": "kWh",
        "name": "Total Discharging Energy"
    }, {
        "key": "Etdy_cg1",
        "value": "1.22",
        "unit": "kWh",
        "name": "Daily Charging Energy"
    }, {
        "key": "Etdy_dcg1",
        "value": "0.83",
        "unit": "kWh",
        "name": "Daily Discharging Energy"
    }, {
        "key": "INV_T0",
        "value": "47",
        "unit": "℃",
        "name": "Temperature- Inverter"
    }, {
        "key": "B_T1",
        "value": "28.00",
        "unit": "℃",
        "name": "Temperature- Battery"
    }, {
        "key": "T_RDT1",
        "value": "40",
        "unit": "℃",
        "name": "Radiator Temperature"
    }, {
        "key": "V_eme_o1",
        "value": "236.10",
        "unit": "V",
        "name": "Emergency Output Voltage"
    }, {
        "key": "P_eme_o1",
        "value": "0.00",
        "unit": "W",
        "name": "Emergency Output Power"
    }, {
        "key": "Etdy_ge_hou1",
        "value": "2.58",
        "unit": "h",
        "name": "Daily Production Hour"
    }, {
        "key": "HR_Ege_t1",
        "value": "30",
        "unit": "h",
        "name": "Total Production Hour"
    }, {
        "key": "CD_TIM1",
        "value": "0.03",
        "unit": "s",
        "name": "Countdown Time"
    }, {
        "key": "Buck_C1",
        "value": "2.01",
        "unit": "A",
        "name": "Buck Current"
    }, {
        "key": "LLC_BUS_V1",
        "value": "325.00",
        "unit": "V",
        "name": "LLC Busbar Voltage"
    }, {
        "key": "C_Dcp1",
        "value": "0.01",
        "unit": null,
        "name": "DC Component-Current"
    }, {
        "key": "V_Dcp1",
        "value": "-33.50",
        "unit": null,
        "name": "DC Component-Voltage"
    }, {
        "key": "INV_ST1",
        "value": "Grid connected",
        "unit": null,
        "name": "Inverter status"
    }]
}

Mais je ne comprends pas (même avec la doc du plugin Script), comment les exploiter. :frowning:

Est-ce qu’un bonne âme pourra m’aider ?
Par avance, merci.

(Attention pour ceux qui voudraient faire la même chose que sur les références : l’URL de l’API a changé par rapport aux sources que j’ai utilisé, extrait de la réponse du support Solarman suite au non fonctionnement rencontré en utilisant l’ancienne URL de l’API : " If you are using the « International Data Center », we kindly remind that you use the new OPENAPI domain https://globalapi.solarmanpv.com to access the platform, replacing the previous domain https://api.solarmanpv.com. Your APPID and APPSECRET will remain the same, but you will need to obtain a new token to access the platform.")

Bonjour,

alors effectivement j’avais un peu galéré à exploiter le plugin script (j’y suis parvenue grâce à l’aide d’un jeedomien!) . Il y avait peut-être plus simple mais voilà comment j’ai procédé : le plugin script m’a permis de créer une variable par donnée que je souhaitais récupéré :

Voici le script utilisé par exemple pour récupéré le SN

<?php

require_once dirname(__FILE__) .'/../../../core/php/core.inc.php';

$json = shell_exec("curl -s -X 'POST' \
	'https://globalapi.solarmanpv.com/device/v1.0/currentData?appId=2023****2&language=en&=' \
	-H 'accept: application/json' \
	-H 'Content-Type: application/json' \
	-H 'Authorization: bearer eyJhb***' \
	-d '{\"deviceSn\": \"SE1ES****\"}' 2>&1");

//$json = preg_replace("#(/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/)|([\s\t]//.*)|(^//.*)#", '', $json);

if (!empty($json)) {
	log::add("script", "info", "[Solarman] json reçu => " . $json);
	$findme = 'dataList';
	$pos = strpos($json, $findme);
  

	if ($pos === false) {
		log::add("script", "info", '[Solarman] Erreur de retour de la fonction CURL, la fonction renvoi  : ' .$json);
	} else {
		$obj = json_decode($json, TRUE);
		$b = 'solarman_'; // Préfixe nom de variable
      
		if (json_last_error() === JSON_ERROR_NONE) {
			$Infos_value = $obj['dataList'][41]['value'];
			log::add("script", "info", '[Solarman] Variable ' . $b . 'value = '. $Infos_value);
			$Infos_value=(float)$Infos_value;
			echo $Infos_value;
		} else {
			log::add("script", "info", '[Solarman] Erreur json est : ' . json_last_error_msg());
		}
	}

} else {
	log::add("script", "info", '[Solarman] Le json est vide');
}

Ce script est le contenu du fichier /var/www/html/plugins/script/data/Solarman_SN.php

Pour voir apparaitre les datas il faut bien enregistré et je regarde dans les logs
Une fois créer en variable il suffit d’appeler les variables dans un virtuel par exemple.

J’espère avoir répondu à ta question :slight_smile:

PS : je suis passé au projet sofar2mqtt qui permet la récupération des données en quasi instantanée et commander l’onduleur directement pour changer de mode de travail (j’ai pas encore réussi la 2ème étape mais courage!)
Bon courage

Salut @jlegrand
T’embêtes pas !
T’as le json, tu le sauvegarde en locale et tu le lis depuis le plugin script
Regarde le topic Lancement script Python - #24 par cstan77

Il y a aussi un moyen pour interroger directement ton onduleur via ton logger, dès que j’ai un peu de temps je m’attelle à un tuto. Faut passer par pysolarmanv5 · PyPI

1 « J'aime »

pour info j’ai développé le plugin solarman disponible sur le market uniquement en béta pour l’instant. Il permet d’interroger en local par le wifi les onduleurs qui envoient leurs données vers le site solarman.

1 « J'aime »

Merci je viens de tester cependant mon onduleur n’est pas reconnu.

SOFAR 3000TL G3.

Peux tu me conseiller une config par défaut ou me dire comment la configurer à partir des config existantes?

Tu connais les commandes modbus pour ton onduleur ?

C’est un hybride en triphasé ?

Je viens de trouver un fichier pour ton onduleur, je l’intègre et je pousse la modif

je viens de le faire. Tu me diras si c’est bon

Désolé pour mon retour tardif.

Je viens de faire la mise à jour cela ne fonctionne pas.

Ce n’est pas un hybride il est en monophasé.

Comment puis je trouver les commandes Modbus?

La notice est disponible ici : https://allo.solar/amfile/file/download/file/1771/product/1677/

Y a t’il une option à valider dans les menus de l’onduleur?

Merci pour ton aide c’est top ;-).

tu peux essayer le fichier sofar tl x g3.yaml (approximativement de mémoire)

Voici ce que j’ai trouvé
SOFARSOLAR ModBus-RTU Communication Protocol.pdf (270,2 Ko)

Oui c’est bien celui que j’ai pris sofar_KTL_X_G3.yaml

qu’est ce qui ne fonctionne pas?

Je n’ai aucune remontée d’info
Capture d'écran 2023-10-19 164228

J’ai bien activé le modbus sur mon onduleur et j’ai mis 01 comme adresse.

Pour info je récupère pour l’instant les données de l’onduleur via un script, est-ce que cela pourrait bloquer le plugin??

Je ne pense pas car chez moi je récupère de 2 façons différentes aussi, via modbus et via ce nouveau plugin.

Je viens de rajouter une fonctionnalité dans la nouvelle version pour scanner le réseau et afficher les onduleurs qui s’y trouvent :wink:

Cette fonctionnalité est dans la configuration générale du plugin

PS: tu pourrais envoyé une copie d’écran de la config de ton onduleur stp?

J’ai trouvé ça pour toi sur un site facebook:

Alors pour mon sofar 3000tl G3, j’ai réussi via solarman à le connecter, j’utilise sofar_lsw3.yaml, l’IP du réseau wifi, port 8899 le numéro de série du logger wifi à renseigner. Et j’ai accès aux entités dont la production photovoltaïque en temps quasi réel.

Quand déjà tu as fait marcher on verra comment on peut améliorer le truc :wink:

ça m’étonne quand même, les registres sont vraiment complétement différents de ce qu’on voit en général sur les sofar.

1 « J'aime »

Bonsoir,

Merci pour ton retour top cette nouvelle fonctionnalité.

Cependant à cette heure je n’ai plus accès à l’onduleur vu qu’il n’y a pas de production.

Je réessaye demain :wink:

Bonne soirée