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