aboutsummaryrefslogtreecommitdiff
path: root/sysmon.ino
blob: 1a6080d217fb32843dfab815a0a73619c0a76e70 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include "Adafruit_GFX.h"
#include "Adafruit_ILI9341.h"
#include <XPT2046_Touchscreen.h>
#include "DHT.h"
#include "cpu.h"
#include "datetimeHandler.h"
#include "gfx_1.h"

#define TFT_DC D4
#define TFT_CS D2
#define TFT_RESET D3
#define DHTPIN D8
#define DHTTYPE DHT22

Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
DHT dht(DHTPIN, DHTTYPE);

static uint32_t tempTime = 0;
static uint32_t rtcTime = 0;
static uint32_t displayTime = 0;

void setup() {
  Serial.begin(115200);
  initHardware();
  gfx1_layout();
}

void update(String command) {
  if (!isnan(dht.readTemperature())) {
    localHum = dht.readHumidity();
    localTemp = dht.readTemperature() - 4;
  }

  String keys[] = { "CpuTemp", "CpuUsage", "RamMax", "RamFree", "Time", "OS", "Kernel", "Uptime" };
  String values[] = { "", "", "", "", "", "", "", "" };

  for (int i = 0; i < std::size(keys); i++) {

    int index = command.indexOf(keys[i]);

    if (index != -1) {
      String value = command.substring(index + keys[i].length() + 1, command.indexOf(",", index + keys[i].length() + 1));
      values[i] = value;
    }
  }

  for (int i = 0; i < std::size(values); i++) {
    Serial.print(keys[i]);
    Serial.print(" = ");
    Serial.println(values[i]);
    switch (i) {
      case 0:
        if (values[i] != "")
          setCpuTemp(values[i]);
        break;
      case 1:
        if (values[i] != "")
          setCpuUsage(values[i]);
        break;
      case 2:
        if (values[i] != "")
          setRamMax(values[i]);
        break;
      case 3:
        if (values[i] != "")
          setRamFree(values[i]);
        break;
      case 4:
        if (values[i] != "")
          setTime(values[i]);
        break;
      case 5:
        if (values[i] != "")
          OS = values[i];
        break;
      case 6:
        if (values[i] != "")
          KernelVer = values[i];
        break;
      case 7:
        if (values[i] != "")
          Uptime = values[i];
        break;
    }
  }
  gfx1_udpate();
}

void loop() {
  String command = Serial.readString();
  command.trim();
  update(command);
}

void initHardware() {
  pinMode(TFT_RESET, OUTPUT);
  digitalWrite(TFT_RESET, LOW);
  delay(1000);
  digitalWrite(TFT_RESET, HIGH);
  delay(1000);
  tft.begin();
  tft.setRotation(3);
  dht.begin();
}