diff --git a/well_control.ino b/well_control.ino index 37320be..f3aebde 100644 --- a/well_control.ino +++ b/well_control.ino @@ -2,6 +2,7 @@ #include #include #include "config.h" +#include "rgb_lcd.h" #define TCP_PORT 15000 @@ -23,6 +24,7 @@ ModbusIP mb; DHT dht(DHTPIN, DHTTYPE); +rgb_lcd lcd; char id[64]; @@ -41,6 +43,9 @@ void setup() pinMode(D4, OUTPUT); pinMode(DHTPIN, INPUT); pinMode(A0, INPUT); + + lcd.begin(16, 2); + lcd.setRGB(0, 255, 0); Serial.begin(115200); Serial.println("Initialized..."); @@ -93,6 +98,28 @@ void UpdateSensorData() cur_p = (int)(((p_volt / 2.5f) * 10) * 100); } +void UpdateDisplay() +{ + lcd.setCursor(0, 0); + lcd.print("P: "); + lcd.print((cur_p / 100.0), 2); + lcd.print(" T: "); + lcd.print((cur_t / 100.0), 1); + lcd.setCursor(0, 1); + lcd.print("H: "); + lcd.print(cur_hum / 100); + // print current error + // + if (cur_state) + { + lcd.setRGB(0, 0, 255); + } + else + { + lcd.setRGB(0, 255, 0); + } +} + void loop() { unsigned long current = millis(); @@ -135,6 +162,7 @@ void loop() mb.Hreg(REGISTER_CURRENT_TEMP, cur_t); mb.Hreg(REGISTER_CURRENT_HUM, cur_hum); mb.Hreg(REGISTER_CURRENT_PRESS, cur_p); + UpdateDisplay(); if (WiFi.status() != WL_CONNECTED) { // no wifi diff --git a/well_control.items b/well_control.items new file mode 100644 index 0000000..af0588d --- /dev/null +++ b/well_control.items @@ -0,0 +1,7 @@ +Number Well_P_on "Well turn on pressure [%.2f]" {channel="modbus:data:Well:W:Well_P_on:number"} +Number Well_P_off "Well turn off temperature [%.2f]" {channel="modbus:data:Well:W:Well_P_off:number"} +Number Well_P "Well current pressure [%.2f]" {channel="modbus:data:Well:W:Well_P:number"} +Number Well_Temp "Well temperature [%.1f °C]" {channel="modbus:data:Well:W:Well_Temp:number"} +Number Well_Hum "Well humidity [%.1f%%]" {channel="modbus:data:Well:W:Well_Hum:number"} +Number Well_Mode "Well mode" {channel="modbus:data:Well:W:Well_Mode:number"} +Switch Well_State "Well state" {channel="modbus:data:Well:W:Well_State:switch"} diff --git a/well_control.things b/well_control.things new file mode 100644 index 0000000..318040c --- /dev/null +++ b/well_control.things @@ -0,0 +1,11 @@ +Bridge modbus:tcp:Well [ host="192.168.0.24", port=15000, id=1 ] { + Bridge poller W[start = 0, length = 7, type = "holding", refresh = 500] { + Thing data Well_Temp[readStart = "0", readValueType = "int16", readTransform="JS(divide100.js)"] + Thing data Well_Hum[readStart = "1", readValueType = "int16", readTransform="JS(divide100.js)"] + Thing data Well_P[readStart = "2", readValueType = "int16", readTransform="JS(divide100.js)"] + Thing data Well_State[readStart = "3", readValueType = "int16", writeStart="3", writeValueType="int16", writeType="holding"] + Thing data Well_Mode[readStart = "4", readValueType = "int16", writeStart="4", writeValueType="int16", writeType="holding"] + Thing data Well_P_on[readStart = "5", readValueType = "int16", readTransform="JS(divide100.js)", writeStart="5", writeValueType="int16", writeTransform="JS(multiply100.js)", writeType="holding"] + Thing data Well_P_off[readStart = "6", readValueType = "int16", readTransform="JS(divide100.js)", writeStart="6", writeValueType="int16", writeTransform="JS(multiply100.js)", writeType="holding"] + } +}