Library for receiving data from fake inverter.
Inverter.cpp@1:1b1e78592710, 2021-03-24 (annotated)
- Committer:
- khaiminhvn
- Date:
- Wed Mar 24 23:40:29 2021 +0000
- Revision:
- 1:1b1e78592710
- Parent:
- 0:e2b263279a61
Added connect() function
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jump_man | 0:e2b263279a61 | 1 | #include "Inverter.h" |
jump_man | 0:e2b263279a61 | 2 | |
jump_man | 0:e2b263279a61 | 3 | Inverter::Inverter(char* url, int port, EthernetInterface* ethIn) |
jump_man | 0:e2b263279a61 | 4 | { |
jump_man | 0:e2b263279a61 | 5 | eth = ethIn; |
khaiminhvn | 1:1b1e78592710 | 6 | connect(url,port); |
khaiminhvn | 1:1b1e78592710 | 7 | } |
khaiminhvn | 1:1b1e78592710 | 8 | |
khaiminhvn | 1:1b1e78592710 | 9 | void Inverter::connect(char* url, int port){ |
jump_man | 0:e2b263279a61 | 10 | eth->gethostbyname(url, &a); |
jump_man | 0:e2b263279a61 | 11 | a.set_port(port); |
jump_man | 0:e2b263279a61 | 12 | } |
jump_man | 0:e2b263279a61 | 13 | |
jump_man | 0:e2b263279a61 | 14 | int Inverter::getPower() |
jump_man | 0:e2b263279a61 | 15 | { |
jump_man | 0:e2b263279a61 | 16 | socket.open(eth); |
jump_man | 0:e2b263279a61 | 17 | socket.connect(a); |
jump_man | 0:e2b263279a61 | 18 | |
jump_man | 0:e2b263279a61 | 19 | char sbuffer[] = "GET /solar_api/v1/GetInverterRealtimeData.cgi HTTP/1.1\r\nHost: int-sol-ref.herokuapp.com\r\n\r\n"; |
jump_man | 0:e2b263279a61 | 20 | int scount = socket.send(sbuffer, sizeof sbuffer); |
jump_man | 0:e2b263279a61 | 21 | |
jump_man | 0:e2b263279a61 | 22 | char rbuffer[500]; |
jump_man | 0:e2b263279a61 | 23 | int rcount = socket.recv(rbuffer, sizeof rbuffer); |
jump_man | 0:e2b263279a61 | 24 | |
jump_man | 0:e2b263279a61 | 25 | char *data = strstr(rbuffer, "{\"Body"); |
jump_man | 0:e2b263279a61 | 26 | |
jump_man | 0:e2b263279a61 | 27 | StaticJsonDocument<128> doc; |
jump_man | 0:e2b263279a61 | 28 | DeserializationError error = deserializeJson(doc, data); |
jump_man | 0:e2b263279a61 | 29 | |
jump_man | 0:e2b263279a61 | 30 | if (error) { |
jump_man | 0:e2b263279a61 | 31 | printf("deserializeJson() failed.\r\n"); |
jump_man | 0:e2b263279a61 | 32 | return 0; |
jump_man | 0:e2b263279a61 | 33 | } |
jump_man | 0:e2b263279a61 | 34 | |
jump_man | 0:e2b263279a61 | 35 | int power = doc["Body"]["Data"]["PAC"]["Value"]; |
jump_man | 0:e2b263279a61 | 36 | socket.close(); |
jump_man | 0:e2b263279a61 | 37 | return power; |
jump_man | 0:e2b263279a61 | 38 | } |