Bonjour,
Je dispose d'un onduleur solaire SMV II 3K et je souhaites récupérer les informations utiles via le port USB vers Domoticz. J'ai réussi à trouver un projet sur le GitHub qui pourrai surement aider à cette tache mais je n'y connais pas grand chose en C.
Le projet s'appelle : skymax-demo disponible ici https://github.com/manio/skymax-demo
Après avoir suivi les instructions de compilation, j'ai bien les informations de mon onduleur :
Je souhaite donc modifier le programme afin qu'il envoi les informations des variables vers domoticz avec une URL par exemple pour la tension de la batterie ce serait quelque chose comme :
L'URL fonctionne tel quel mais il faut l'intégrer dans le code et remplacer 29 par la variable voltage_batt
http://192.168.10.12:8080/json.htm?type=command¶m=udevice&idx=2284&nvalue=0&svalue=29
Voici le bout de code en question :
if (ups_data_changed)
{
ups_data_changed = false;
string *reply = ups->GetStatus();
if (reply)
{
//parse and display values
sscanf(reply->c_str(), "%f %f %f %f %d %d %d %d %f %d %d %d %d %f %f %d", &voltage_grid, &freq_grid, &voltage_out, &freq_out, &load_va, &load_watt, &load_percent, &voltage_bus, &voltage_batt, &batt_charge_current, &batt_capacity, &temp_heatsink, &pv1, &pv2, &scc, &batt_discharge_current);
printf("\tAC Grid voltage: %.1f\n", voltage_grid);
printf("\tAC Grid frequency: %.1f\n", freq_grid);
printf("\tAC out voltage: %.1f\n", voltage_out);
printf("\tAC out frequency: %.1f\n", freq_out);
printf("\tLoad [%]: %d\n", load_percent);
printf("\tLoad [W]: %d\n", load_watt);
printf("\tLoad [VA]: %d\n", load_va);
printf("\tBus voltage: %d\n", voltage_bus);
printf("\tHeatsink temperature: %d\n", temp_heatsink);
printf("\tBattery capacity [%]: %d\n", batt_capacity);
printf("\tBattery voltage: %.2f\n", voltage_batt);
printf("\tBattery charge current [A]: %d\n", batt_charge_current);
printf("\tBattery discharge current [A]: %d\n", batt_discharge_current);
delete reply;
}
}
Merci
# Et sans connaitre le C
Posté par Flyounet (site web personnel) . Évalué à 1.
A défaut de C, si ton programme retourne le résultat sur stdin, tu peux pas genre faire un grep ou sed et appeler un curl (ou wget) ?
Un petit peu comme ça ?
[^] # Re: Et sans connaitre le C
Posté par kekemar . Évalué à 1. Dernière modification le 05 mai 2019 à 10:16.
Bonjour,
Merci pour votre réponse,
Voici comment j'ai procédé :
Dans le code C, j'écris les données dans un fichier stocké dans la RAM :
Ensuite via un script j'ouvre le fichier, je récupère les informations utiles dans des variables et j'envoi l'URL avec la variable :
ça marche
[^] # Re: Et sans connaitre le C
Posté par NeoX . Évalué à 2.
si tu veux remplacer ton script qui fait des curls directement par du code C
regarde simplement la libcurl
qui permet de faire du curl depuis les programmes en C :p
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.