diff --git a/WeatherStation.ino b/WeatherStation.ino index 3ae4ad3..a314ddf 100644 --- a/WeatherStation.ino +++ b/WeatherStation.ino @@ -28,10 +28,9 @@ void setup() { Serial.begin( 9600 ); - Serial.println("Start"); if (Usb.Init() == -1) - Serial.println("OSC did not start."); + Serial.println("{\"error\":\"OSC did not start.\"}"); delay( 200 ); @@ -45,8 +44,9 @@ if ((Usb.getUsbTaskState() == USB_STATE_RUNNING) && parser.startDelay && (parser.startDelay <= millis())) { int rcode = Hid.SetReport(0, 0, 0x02, 0x01, sizeof(parser.report), parser.report); if (rcode != 0) { - Serial.print("Rcode = "); - Serial.println(rcode, HEX); + Serial.print("{\"error\":\"Rcode = "); + Serial.print(rcode, HEX); + Serial.println("\"}"); } parser.startDelay = 0; } diff --git a/hidwh1080rptparser.cpp b/hidwh1080rptparser.cpp index d87ec50..6a35644 100644 --- a/hidwh1080rptparser.cpp +++ b/hidwh1080rptparser.cpp @@ -17,31 +17,33 @@ } else { if (memcmp(chunk, lastChunk, WH1080_BUFFER_CHUNK) != 0) { memcpy(lastChunk, chunk, WH1080_BUFFER_CHUNK); - Serial.print("Time since last change: "); - Serial.println(millis() - lastMillis); + //Serial.print("Time since last change: "); + Serial.print("{\"period\":"); + Serial.print(millis() - lastMillis); lastMillis = millis(); - Serial.print("Delay: "); - Serial.println(chunk[0]); - Serial.print("Indoor humidity: "); - Serial.println(chunk[1]); - Serial.print("Indoor temperature: "); - Serial.println((((chunk[3] & 0x7f) << 8) + chunk[2]) * ((chunk[3] & 0x80) ? -0.1 : 0.1)); - Serial.print("Outdoor humidity: "); - Serial.println(chunk[4]); - Serial.print("Outdoor temperature: "); - Serial.println((((chunk[6] & 0x7f) << 8) + chunk[5]) * ((chunk[6] & 0x80) ? -0.1 : 0.1)); - Serial.print("Absolute pressure: "); - Serial.println(((chunk[8] << 8) + chunk[7]) * 0.1); - Serial.print("Average wind speed: "); - Serial.println((chunk[9] + ((chunk[11] & 0x0f) << 8)) * 0.1); - Serial.print("Gust wind speed: "); - Serial.println((chunk[10] + ((chunk[11] & 0xf0) << 4)) * 0.1); - Serial.print("Wind direction: "); - Serial.println(chunk[12] * 22.5); - Serial.print("Total rain: "); - Serial.println(((chunk[14] << 8) + chunk[13]) * 0.3); - Serial.print("Status: "); - Serial.println(chunk[15], HEX); + Serial.print(",\"delay\":"); + Serial.print(chunk[WH1080_DELAY]); + Serial.print(",\"in_humidity\":"); + Serial.print(chunk[WH1080_HUMIDITY_IN]); + Serial.print(",\"in_temp\":"); + Serial.print((((chunk[WH1080_TEMPERATURE_IN+1] & 0x7f) << 8) + chunk[WH1080_TEMPERATURE_IN]) * ((chunk[WH1080_TEMPERATURE_IN+1] & 0x80) ? -0.1 : 0.1)); + Serial.print(",\"out_humidity\":"); + Serial.print(chunk[WH1080_HUMIDITY_OUT]); + Serial.print(",\"out_temp\":"); + Serial.print((((chunk[WH1080_TEMPERATURE_OUT+1] & 0x7f) << 8) + chunk[WH1080_TEMPERATURE_OUT]) * ((chunk[WH1080_TEMPERATURE_OUT+1] & 0x80) ? -0.1 : 0.1)); + Serial.print(",\"pressure\":"); + Serial.print(((chunk[WH1080_ABS_PRESSURE+1] << 8) + chunk[WH1080_ABS_PRESSURE]) * 0.1); + Serial.print(",\"wind_speed\":"); + Serial.print((chunk[WH1080_WIND_AVE] + ((chunk[WH1080_WIND_GUST+1] & 0x0f) << 8)) * 0.1); + Serial.print(",\"wind_gust\":"); + Serial.print((chunk[WH1080_WIND_GUST] + ((chunk[WH1080_WIND_GUST+1] & 0xf0) << 4)) * 0.1); + Serial.print(",\"wind_dir\":"); + Serial.print(chunk[WH1080_WIND_DIR] * 22.5); + Serial.print(",\"rain\":"); + Serial.print(((chunk[WH1080_RAIN+1] << 8) + chunk[WH1080_RAIN]) * 0.3); // TODO: check overflow bit + Serial.print(",\"status\":"); + Serial.print(chunk[WH1080_STATUS], HEX); + Serial.println("}"); } readingBlockZero = true; report[1] = 0; diff --git a/hidwh1080rptparser.h b/hidwh1080rptparser.h index 4732cba..4618f65 100644 --- a/hidwh1080rptparser.h +++ b/hidwh1080rptparser.h @@ -49,7 +49,7 @@ #define WH1080_DATA_COUNT 27 // Position of data_count parameter #define WH1080_CURRENT_POS 30 // Position of current_pos parameter -const prog_char WH1080_REPORT[] PROGMEM = { +const char WH1080_REPORT[] PROGMEM = { 0xa1, 0x00, 0x00, 0x20, 0xa1, 0x00, 0x00, 0x20 };