kekemar a écrit 1 commentaire

  • [^] # Re: Et sans connaitre le C

    Posté par . En réponse au message Envoi données vers API Domoticz en C. É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 :

     {
     FILE* fichier = NULL;
     fichier = fopen("/mnt/mytmpfs/ups.txt", "w");
     if (fichier != NULL)
     {
     fprintf(fichier, "%.1f\n", voltage_grid);
     fprintf(fichier, "%.1f\n", freq_grid);
     fprintf(fichier, "%.1f\n", voltage_out);
     fprintf(fichier, "%.1f\n", freq_out);
     fprintf(fichier, "%d\n", load_percent);
     fprintf(fichier, "%d\n", load_watt);
     fprintf(fichier, "%d\n", load_va);
     fprintf(fichier, "%d\n", temp_heatsink);
     fprintf(fichier, "%d\n", batt_capacity);
     fprintf(fichier, "%.2f\n", voltage_batt);
     fprintf(fichier, "%d\n", batt_charge_current);
     fprintf(fichier, "%d\n", batt_discharge_current);
     fprintf(fichier, "%d\n", pv1);
     fprintf(fichier, "%f\n", pv2);
     fprintf(fichier, "%f\n", scc);
     fprintf(fichier, "%d\n", voltage_bus);
     fclose(fichier);
     }
     }

    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 :

     #!/bin/sh
     tension_reseau_entrant=$(sed q /mnt/mytmpfs/ups.txt)
     freq_reseau_entrant=$(sed -n 2p /mnt/mytmpfs/ups.txt)
     tension_sortie=$(sed -n 3p /mnt/mytmpfs/ups.txt)
     freq_sortie=$(sed -n 4p /mnt/mytmpfs/ups.txt)
     usage_pc=$(sed -n 5p /mnt/mytmpfs/ups.txt)
     usage_w=$(sed -n 6p /mnt/mytmpfs/ups.txt)
     usage_va=$(sed -n 7p /mnt/mytmpfs/ups.txt)
     temp_int=$(sed -n 8p /mnt/mytmpfs/ups.txt)
     cap_bat=$(sed -n 9p /mnt/mytmpfs/ups.txt)
     tension_bat=$(sed -n 10p /mnt/mytmpfs/ups.txt)
     charge_bat=$(sed -n 11p /mnt/mytmpfs/ups.txt)
     decharge_bat=$(sed -n 12p /mnt/mytmpfs/ups.txt)
     tension_bus=$(sed -n 16p /mnt/mytmpfs/ups.txt)
     /usr/bin/curl --silent "http://192.168.10.12:8080/json.htm?type=command&param=udevice&idx=2287&nvalue=0&svalue=$tension_reseau_entrant" > /dev/null
     /usr/bin/curl --silent "http://192.168.10.12:8080/json.htm?type=command&param=udevice&idx=2294&nvalue=0&svalue=$freq_reseau_entrant" > /dev/null
     /usr/bin/curl --silent "http://192.168.10.12:8080/json.htm?type=command&param=udevice&idx=2288&nvalue=0&svalue=$tension_sortie" > /dev/null
     /usr/bin/curl --silent "http://192.168.10.12:8080/json.htm?type=command&param=udevice&idx=2293&nvalue=0&svalue=$freq_sortie" > /dev/null
     /usr/bin/curl --silent "http://192.168.10.12:8080/json.htm?type=command&param=udevice&idx=2295&nvalue=0&svalue=$usage_pc" > /dev/null
     /usr/bin/curl --silent "http://192.168.10.12:8080/json.htm?type=command&param=udevice&idx=2289&svalue=$usage_w" > /dev/null
     /usr/bin/curl --silent "http://192.168.10.12:8080/json.htm?type=command&param=udevice&idx=2286&nvalue=0&svalue=$temp_int" > /dev/null
     /usr/bin/curl --silent "http://192.168.10.12:8080/json.htm?type=command&param=udevice&idx=2290&nvalue=0&svalue=$cap_bat" > /dev/null
     /usr/bin/curl --silent "http://192.168.10.12:8080/json.htm?type=command&param=udevice&idx=2284&nvalue=0&svalue=$tension_bat" > /dev/null
     /usr/bin/curl --silent "http://192.168.10.12:8080/json.htm?type=command&param=udevice&idx=2291&nvalue=0&svalue=$charge_bat" > /dev/null
     /usr/bin/curl --silent "http://192.168.10.12:8080/json.htm?type=command&param=udevice&idx=2292&nvalue=0&svalue=$decharge_bat" > /dev/null
     /usr/bin/curl --silent "http://192.168.10.12:8080/json.htm?type=command&param=udevice&idx=2296&nvalue=0&svalue=$tension_bus" > /dev/null

    ça marche