Skip to content

Instantly share code, notes, and snippets.

@plopp
Created November 7, 2017 09:04
Show Gist options
  • Save plopp/f3d87af3a2f2fc1a6485f52decdba9a6 to your computer and use it in GitHub Desktop.
Save plopp/f3d87af3a2f2fc1a6485f52decdba9a6 to your computer and use it in GitHub Desktop.
function(head, req) {
var tags = [
'GVL.abbExportedReactive',
'GVL.abbImportedReactive',
'GVL.abbPhaseAngleTotal',
'GVL.abbPowerFactorL1',
'GVL.abbPowerFactorL2',
'GVL.abbPowerFactorL3',
'GVL.abbPowerFactorTotal',
'GVL.avluftfasad281',
'GVL.avluftteknikrum279',
'GVL.bathroom_fl2_co2',
'GVL.bathroom_fl2_rh',
'GVL.bathroom_fl2_temp',
'GVL.bathroom_fl2_voc',
'GVL.bedroom1_fl2_co2',
'GVL.bedroom1_fl2_rh',
'GVL.bedroom1_fl2_temp',
'GVL.bedroom1_fl2_voc',
'GVL.bedroom2_fl2_co2',
'GVL.bedroom2_fl2_rh',
'GVL.bedroom2_fl2_temp',
'GVL.bedroom2_fl2_voc',
'GVL.bedroom3_fl2_co2',
'GVL.bedroom3_fl2_rh',
'GVL.bedroom3_fl2_temp',
'GVL.bedroom3_fl2_voc',
'GVL.circulation_pump_speed',
'GVL.exhaust_air_rh',
'GVL.exhaust_air_temp',
'GVL.exhaust_fan_speed',
'GVL.exhaust_voc',
'GVL.extract_air_rh',
'GVL.extract_air_temp',
'GVL.extract_co2',
'GVL.extract_voc',
'GVL.flow37',
'GVL.flow38',
'GVL.flow39',
'GVL.flow40',
'GVL.franluft283',
'GVL.hwc_fl1_co2',
'GVL.hwc_fl1_rh',
'GVL.hwc_fl1_temp',
'GVL.hwc_fl1_voc',
'GVL.k1',
'GVL.k2',
'GVL.k3',
'GVL.k4',
'GVL.living_room_fl1_co2',
'GVL.living_room_fl1_rh',
'GVL.living_room_fl1_temp',
'GVL.living_room_fl1_voc',
'GVL.living_room_fl2_co2',
'GVL.living_room_fl2_rh',
'GVL.living_room_fl2_temp',
'GVL.living_room_fl2_voc',
'GVL.outdoor_air_rh',
'GVL.outdoor_air_temp',
'GVL.outdoor_co2',
'GVL.outdoor_voc',
'GVL.p1_energy',
'GVL.p1_power',
'GVL.p20_energy',
'GVL.p20_power',
'GVL.p21_energy',
'GVL.p21_power',
'GVL.p22_energy',
'GVL.p22_power',
'GVL.p23_energy',
'GVL.p23_power',
'GVL.p24_energy',
'GVL.p24_power',
'GVL.p25_energy',
'GVL.p25_power',
'GVL.p26_energy',
'GVL.p26_power',
'GVL.p27_energy',
'GVL.p27_power',
'GVL.p28_energy',
'GVL.p28_power',
'GVL.p29_energy',
'GVL.p29_power',
'GVL.p2_energy',
'GVL.p2_power',
'GVL.p30_energy',
'GVL.p30_power',
'GVL.p31_energy',
'GVL.p31_power',
'GVL.p32_energy',
'GVL.p32_power',
'GVL.p33_energy',
'GVL.p33_power',
'GVL.p34_energy',
'GVL.p34_power',
'GVL.p35_energy',
'GVL.p35_power',
'GVL.p36_energy',
'GVL.p36_power',
'GVL.p37_energy',
'GVL.p37_power',
'GVL.p38_energy',
'GVL.p38_power',
'GVL.p39_energy',
'GVL.p39_power',
'GVL.p3_energy',
'GVL.p3_power',
'GVL.p40_energy',
'GVL.p40_power',
'GVL.p41_energy',
'GVL.p41_power',
'GVL.p42_energy',
'GVL.p42_power',
'GVL.p43_energy',
'GVL.p43_power',
'GVL.p44_energy',
'GVL.p44_power',
'GVL.p45_energy',
'GVL.p45_power',
'GVL.p46_energy',
'GVL.p46_power',
'GVL.p47_energy',
'GVL.p47_power',
'GVL.p48_energy',
'GVL.p48_power',
'GVL.p49_energy',
'GVL.p49_power',
'GVL.p4_energy',
'GVL.p4_power',
'GVL.p50_energy',
'GVL.p50_power',
'GVL.p51_energy',
'GVL.p51_power',
'GVL.p52_energy',
'GVL.p52_power',
'GVL.p53_energy',
'GVL.p53_power',
'GVL.p54_energy',
'GVL.p54_power',
'GVL.p55_energy',
'GVL.p55_power',
'GVL.p56_energy',
'GVL.p56_power',
'GVL.p57_energy',
'GVL.p57_power',
'GVL.p58_energy',
'GVL.p58_power',
'GVL.p5_energy',
'GVL.p5_power',
'GVL.p6_energy',
'GVL.p6_power',
'GVL.p70_energy_exp',
'GVL.p70_energy_imp',
'GVL.p70_power_exp',
'GVL.p70_power_imp',
'GVL.p7_energy',
'GVL.p7_power',
'GVL.p8_energy',
'GVL.p8_power',
'GVL.p9_energy',
'GVL.p9_power',
'GVL.pentry_co2',
'GVL.pentry_rh',
'GVL.pentry_temp',
'GVL.pentry_voc',
'GVL.pid_exhaust_output',
'GVL.pid_supply_output',
'GVL.press37',
'GVL.press38',
'GVL.press39',
'GVL.press40',
'GVL.pvEnergy',
'GVL.pvPower',
'GVL.r20',
'GVL.r21',
'GVL.r22',
'GVL.r23',
'GVL.r24',
'GVL.r25',
'GVL.r26',
'GVL.r27',
'GVL.r28',
'GVL.r29',
'GVL.r30',
'GVL.r31',
'GVL.r32',
'GVL.r33',
'GVL.r34',
'GVL.r35',
'GVL.r36',
'GVL.r37',
'GVL.r38',
'GVL.r39',
'GVL.r40',
'GVL.r41',
'GVL.r42',
'GVL.r43',
'GVL.r44',
'GVL.r45',
'GVL.r46',
'GVL.r47',
'GVL.r48',
'GVL.r49',
'GVL.r50',
'GVL.r51',
'GVL.r52',
'GVL.sum_air_exhaust_flow',
'GVL.sum_air_supply_flow',
'GVL.supply_air_rh',
'GVL.supply_air_temp',
'GVL.supply_fan_speed',
'GVL.supply_voc',
'GVL.tKbRetPt100',
'GVL.tKbTillPt100',
'GVL.tKvVvProd',
'GVL.tVv',
'GVL.tapp20_flow',
'GVL.tapp20_vol',
'GVL.tapp21_flow',
'GVL.tapp21_vol',
'GVL.tapp22_flow',
'GVL.tapp22_vol',
'GVL.tapp23_flow',
'GVL.tapp23_vol',
'GVL.tapp24_flow',
'GVL.tapp24_vol',
'GVL.tapp25_flow',
'GVL.tapp25_vol',
'GVL.tapp26_flow',
'GVL.tapp26_vol',
'GVL.tapp27_flow',
'GVL.tapp27_vol',
'GVL.tapp28_flow',
'GVL.tapp28_vol',
'GVL.tapp29_flow',
'GVL.tapp29_vol',
'GVL.tapp30_flow',
'GVL.tapp30_vol',
'GVL.tapp31_flow',
'GVL.tapp31_vol',
'GVL.tapp32_flow',
'GVL.tapp32_vol',
'GVL.tilluft282',
'GVL.totalEnergyExpFromAbbMeter',
'GVL.totalEnergyFromAbbMeter',
'GVL.totalEnergyFromPulseMeters',
'GVL.totalPowerAbbL1',
'GVL.totalPowerAbbL2',
'GVL.totalPowerAbbL3',
'GVL.totalPowerFromAbbMeter',
'GVL.totalPowerFromPulseMeters',
'GVL.totalPowerNotMeasured',
'GVL.totalReactivePower',
'GVL.totalReactivePowerAbbL1',
'GVL.totalReactivePowerAbbL2',
'GVL.totalReactivePowerAbbL3',
'GVL.uteluft280',
'GVL.vav_eh1_flow',
'GVL.vav_eh1_pos',
'GVL.vav_eh2_flow',
'GVL.vav_eh2_pos',
'GVL.vav_eh3_flow',
'GVL.vav_eh3_pos',
'GVL.vav_su1_flow',
'GVL.vav_su1_pos',
'GVL.vav_su2_flow',
'GVL.vav_su2_pos',
'GVL.vav_su3_flow',
'GVL.vav_su3_pos',
'GVL.vav_su4_flow',
'GVL.vav_su4_pos',
'GVL.vav_su5_flow',
'GVL.vav_su5_pos',
'GVL.vmkv_flow',
'GVL.vmkv_vol',
'GVL.vmmGolvUterum_energy',
'GVL.vmmGolvUterum_flow',
'GVL.vmmGolvUterum_fwdtemp',
'GVL.vmmGolvUterum_power',
'GVL.vmmGolvUterum_rettemp',
'GVL.vmmGolvUterum_vol',
'GVL.vmmGolvVindfang_energy',
'GVL.vmmGolvVindfang_flow',
'GVL.vmmGolvVindfang_fwdtemp',
'GVL.vmmGolvVindfang_power',
'GVL.vmmGolvVindfang_rettemp',
'GVL.vmmGolvVindfang_vol',
'GVL.vmmKylbatt_energy',
'GVL.vmmKylbatt_flow',
'GVL.vmmKylbatt_fwdtemp',
'GVL.vmmKylbatt_power',
'GVL.vmmKylbatt_rettemp',
'GVL.vmmKylbatt_vol',
'GVL.vmmgolvpl1_energy',
'GVL.vmmgolvpl1_flow',
'GVL.vmmgolvpl1_fwdtemp',
'GVL.vmmgolvpl1_power',
'GVL.vmmgolvpl1_rettemp',
'GVL.vmmgolvpl1_vol',
'GVL.vmmgolvpl2_energy',
'GVL.vmmgolvpl2_flow',
'GVL.vmmgolvpl2_fwdtemp',
'GVL.vmmgolvpl2_power',
'GVL.vmmgolvpl2_rettemp',
'GVL.vmmgolvpl2_vol',
'GVL.vmmkb_difftemp',
'GVL.vmmkb_energy',
'GVL.vmmkb_flow',
'GVL.vmmkb_fwdtemp',
'GVL.vmmkb_power',
'GVL.vmmkb_rettemp',
'GVL.vmmkb_vol',
'GVL.vmmradpl1_energy',
'GVL.vmmradpl1_flow',
'GVL.vmmradpl1_fwdtemp',
'GVL.vmmradpl1_power',
'GVL.vmmradpl1_rettemp',
'GVL.vmmradpl1_vol',
'GVL.vmmradpl2_energy',
'GVL.vmmradpl2_flow',
'GVL.vmmradpl2_fwdtemp',
'GVL.vmmradpl2_power',
'GVL.vmmradpl2_rettemp',
'GVL.vmmradpl2_vol',
'GVL.vmmvent_energy',
'GVL.vmmvent_flow',
'GVL.vmmvent_fwdtemp',
'GVL.vmmvent_power',
'GVL.vmmvent_rettemp',
'GVL.vmmvent_vol',
'GVL.vmmvs_energy',
'GVL.vmmvs_flow',
'GVL.vmmvs_fwdtemp',
'GVL.vmmvs_power',
'GVL.vmmvs_rettemp',
'GVL.vmmvs_vol',
'GVL.vmmvsvp_energy',
'GVL.vmmvsvp_flow',
'GVL.vmmvsvp_fwdtemp',
'GVL.vmmvsvp_power',
'GVL.vmmvsvp_rettemp',
'GVL.vmmvsvp_vol'];
start({
'headers': {
'Content-Type': 'text/csv',
'Content-disposition': 'attachment;filename=data.csv'
}
});
var first = true;
while (row = getRow()) {
if (first) {
send('timestamp;');
send(tags.join(';'));
send('\\n');
first = false;
}
var datestr = new Date(row.value['timestamp']).toISOString();
send(datestr + ';');
var vals = tags.map(function (a) {
if (row.value.hasOwnProperty(a)) {
return row.value[a].toString().replace('.', ',');
}
else {
return '';
}
}).join(';') + '\\n';
send(vals);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment