Advertisement
Guest User

Power Meter

a guest
Nov 12th, 2024
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.30 KB | None | 0 0
  1. #include <ESP8266WiFi.h>
  2. #include <ESP8266HTTPClient.h>
  3. #include <WiFiClient.h>
  4.  
  5. const char* ssid = "";
  6. const char* password = "";
  7.  
  8.  
  9. unsigned long lastPulse = 0;
  10. unsigned long between;
  11. unsigned long lastSend = 0;
  12.  
  13.  
  14. float power;
  15. String str = "";
  16. unsigned long cmillis;
  17.  
  18.  
  19.  
  20. String url = "http://*******/powerinput";
  21. int httpResponseCode;
  22.  
  23. struct tpulse {
  24.   float power;
  25.   unsigned long ms;
  26. };
  27.  
  28. tpulse pulses[20];
  29. uint8_t pulsesinarr = 0;
  30.  
  31.  
  32.  
  33. void ICACHE_RAM_ATTR pulse() {
  34.  
  35.   cmillis = millis();
  36.   if (lastPulse == 0) {  //Skipping the first reading
  37.     lastPulse = cmillis;
  38.     return;
  39.   }
  40.   between = cmillis - lastPulse;
  41.  
  42.   if (between > 70) {
  43.  
  44.     lastPulse = cmillis;
  45.     power = (1000.0 * 60.0 * 60.0 / (between));
  46.     Serial.print(power);
  47.     Serial.print(" ");
  48.  
  49.     tpulse p;
  50.     p.power = power;
  51.     p.ms = cmillis;
  52.     if (pulsesinarr < 20) {
  53.       pulses[pulsesinarr] = p;
  54.       pulsesinarr++;
  55.     }
  56.  
  57.   }
  58.  
  59. }
  60.  
  61.  
  62.  
  63.  
  64.  
  65. void sendData() {
  66.   Serial.println("senddata");
  67.   if (WiFi.status() == WL_CONNECTED) {
  68.     Serial.print("wifi status: ");
  69.     Serial.println(WiFi.status());
  70.     WiFiClient client;
  71.     HTTPClient http;
  72.  
  73.  
  74.     http.begin(client, url);  
  75.  
  76.     http.setTimeout(1500);
  77.     http.addHeader("Content-Type", "application/json");
  78.    
  79.     http.addHeader("memsize", String(ESP.getFreeHeap()));
  80.  
  81.  
  82.     String output = "[";
  83.  
  84.     for (int i = 0; i < pulsesinarr; i++) {
  85.       output += "[";
  86.       output += String(pulses[i].power);
  87.       output += ", " + String(pulses[i].ms);
  88.       output += "]";
  89.       if (i < (pulsesinarr - 1)) output += ", ";
  90.     }
  91.  
  92.     output += "]";
  93.     Serial.println(output);
  94.     pulsesinarr = 0;
  95.     lastSend = millis();
  96.    
  97.  
  98.     Serial.println(httpResponseCode);
  99.     http.end();
  100.  
  101.   } else {
  102.     Serial.println(WiFi.status());
  103.   }
  104. }
  105.  
  106.  
  107.  
  108. void setup() {
  109.   Serial.begin(115200);
  110.  
  111.   pinMode(D5, INPUT);
  112.  
  113.   attachInterrupt(digitalPinToInterrupt(D5), pulse, FALLING);
  114.  
  115.   // Connect to Wi-Fi
  116.   WiFi.begin(ssid, password);
  117.   while (WiFi.status() != WL_CONNECTED) {
  118.     delay(1000);
  119.     Serial.println("Connecting to WiFi..");
  120.   }
  121.  
  122.   // Print ESP Local IP Address
  123.   Serial.println(WiFi.localIP());
  124. }
  125.  
  126.  
  127. void loop() {
  128.  
  129.   if (pulsesinarr > 0 && (millis() - lastSend) > 1700) sendData();
  130.  
  131.   delay(500);
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement