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 :
Titre de l'image
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.