13 m_needs_access_data =
true;
14 m_needs_change_settings =
false;
19 if (needsLogin(request, response)) {
23 QString body (
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
24 "<?xml-stylesheet type=\"text/xsl\" href=\"data.xsl\"?>\n"
25 "<actual_state_of_invertors>\n");
26 body.append(QString(
"<FVEname>%1</FVEname>\n")
27 .arg(QHostInfo::localHostName() +
"." + QHostInfo::localDomainName())
31 QString fromString (QByteArray::fromPercentEncoding(request.getParameter(
"from")));
32 QString toString (QByteArray::fromPercentEncoding(request.getParameter(
"to")));
33 if(!fromString.isEmpty()) from = QDateTime::fromString(fromString,
"yyyy-MM-dd hh:mm:ss");
34 if(!toString.isEmpty()) to = QDateTime::fromString(toString,
"yyyy-MM-dd hh:mm:ss");
36 QList<DBT_DATA_VW> data = Static::db->
data(from, to);
38 QList<DBT_DATA_VW>::const_iterator i;
39 for(i = data.constBegin(); i != data.constEnd(); ++i) {
42 if (inv.address >= 1000) {
45 body.append(
"<sensors>\n");
46 body.append(QString(
"\t<line>%1</line>\n").arg(inv.line));
47 body.append(QString(
"\t<address>%1</address>\n").arg(inv.address));
48 if(!inv.serial_number.isNull())
49 body.append(QString(
"\t<sn>%1</sn>\n").arg(inv.serial_number));
50 if(!inv.date.isNull())
51 body.append(QString(
"\t<date>%1</date>\n").arg(inv.date.toString(
"yyyy-MM-dd hh:mm:ss")));
52 if(!inv.error.isNull())
53 body.append(QString(
"\t<error>%1</error>\n").arg(inv.error));
54 if(!inv.temperature_1.isNull())
55 body.append(QString(
"\t<temperature_1>%1</temperature_1>\n").arg(inv.temperature_1.toString()));
56 if(!inv.temperature_2.isNull())
57 body.append(QString(
"\t<temperature_2>%1</temperature_2>\n").arg(inv.temperature_2.toString()));
58 if(!inv.irradiance.isNull())
59 body.append(QString(
"\t<irradiance>%1</irradiance>\n").arg(inv.irradiance.toString()));
60 body.append(
"</sensors>\n");
66 body.append(
"<invertor>\n");
67 body.append(QString(
"\t<line>%1</line>\n").arg(inv.line));
68 body.append(QString(
"\t<address>%1</address>\n").arg(inv.address));
69 if(!inv.serial_number.isNull())
70 body.append(QString(
"\t<sn>%1</sn>\n").arg(inv.serial_number));
71 if(!inv.date.isNull())
72 body.append(QString(
"\t<date>%1</date>\n").arg(inv.date.toString(
"yyyy-MM-dd hh:mm:ss")));
73 if(!inv.error.isNull())
74 body.append(QString(
"\t<error>%1</error>\n").arg(inv.error));
75 if(!inv.now_power.isNull())
76 body.append(QString(
"\t<now-power>%1</now-power>\n").arg(inv.now_power.toString()));
77 if(!inv.now_ac_current.isNull())
78 body.append(QString(
"\t<now-ac-current>%1</now-ac-current>\n").arg(inv.now_ac_current.toString()));
79 if(!inv.now_ac_voltage.isNull())
80 body.append(QString(
"\t<now-ac-voltage>%1</now-ac-voltage>\n").arg(inv.now_ac_voltage.toString()));
81 if(!inv.now_ac_frequency.isNull())
82 body.append(QString(
"\t<now-ac-frequency>%1</now-ac-frequency>\n").arg(inv.now_ac_frequency.toString()));
83 if(!inv.now_dc_current.isNull())
84 body.append(QString(
"\t<now-dc-current>%1</now-dc-current>\n").arg(inv.now_dc_current.toString()));
85 if(!inv.now_dc_voltage.isNull())
86 body.append(QString(
"\t<now-dc-voltage>%1</now-dc-voltage>\n").arg(inv.now_dc_voltage.toString()));
87 if(!inv.day_energy.isNull())
88 body.append(QString(
"\t<day-energy>%1</day-energy>\n").arg(inv.day_energy.toString()));
89 if(!inv.day_power_maximum.isNull())
90 body.append(QString(
"\t<day-power-maximum>%1</day-power-maximum>\n").arg(inv.day_power_maximum.toString()));
91 if(!inv.day_ac_voltage_maximum.isNull())
92 body.append(QString(
"\t<day-ac-voltage-maximum>%1</day-ac-voltage-maximum>\n").arg(inv.day_ac_voltage_maximum.toString()));
93 if(!inv.day_ac_voltage_minimum.isNull())
94 body.append(QString(
"\t<day-ac-voltage-minimum>%1</day-ac-voltage-minimum>\n").arg(inv.day_ac_voltage_minimum.toString()));
95 if(!inv.day_dc_voltage_maximum.isNull())
96 body.append(QString(
"\t<day-dc-voltage-maximum>%1</day-dc-voltage-maximum>\n").arg(inv.day_dc_voltage_maximum.toString()));
97 if(!inv.day_operating_hours.isNull())
98 body.append(QString(
"\t<day-operating-hours>%1</day-operating-hours>\n").arg(inv.day_operating_hours.toString()));
99 if(!inv.total_energy.isNull())
100 body.append(QString(
"\t<total-energy>%1</total-energy>\n").arg(inv.total_energy.toString()));
101 if(!inv.total_power_maximum.isNull())
102 body.append(QString(
"\t<total-power-maximum>%1</total-power-maximum>\n").arg(inv.total_power_maximum.toString()));
103 if(!inv.total_ac_voltage_maximum.isNull())
104 body.append(QString(
"\t<total-ac-voltage-maximum>%1</total-ac-voltage-maximum>\n").arg(inv.total_ac_voltage_maximum.toString()));
105 if(!inv.total_ac_voltage_minimum.isNull())
106 body.append(QString(
"\t<total-ac-voltage-minimum>%1</total-ac-voltage-minimum>\n").arg(inv.total_ac_voltage_minimum.toString()));
107 if(!inv.total_dc_voltage_maximum.isNull())
108 body.append(QString(
"\t<total-dc-voltage-maximum>%1</total-dc-voltage-maximum>\n").arg(inv.total_dc_voltage_maximum.toString()));
109 if(!inv.total_operating_hours.isNull())
110 body.append(QString(
"\t<total-operating-hours>%1</total-operating-hours>\n").arg(inv.total_operating_hours.toString()));
111 body.append(QString(
"\t<status>%1</status>\n").arg(inv.status));
112 body.append(
"</invertor>\n");
116 body.append(
"</actual_state_of_invertors>\n");
119 QByteArray contenttype;
120 QByteArray zip = request.getParameter(
"zip");
121 if (zip ==
"Y" || zip ==
"y") {
122 contenttype =
"application/x-gzip";
123 databody = qCompress(body.toUtf8(),9);
125 contenttype =
"text/xml; charset=utf-8";
126 databody = body.toUtf8();
129 response.setHeader(
"Content-Type", contenttype);
130 response.setHeader(
"Cache-Control",
"private, must-revalidate, max-age=0");
131 response.setHeader(
"Pragma",
"no-cache");
132 response.write(databody);
void service(HttpRequest &request, HttpResponse &response)
QList< DBT_DATA_VW > data(const QDateTime &from=QDateTime(), const QDateTime &to=QDateTime(), bool limit=true)
Returns data for all invertors.
Class describing database table DATA + INVERTORS.