From 859095319dd7dbe3be8bcfe28ff30fad35ca1f2d Mon Sep 17 00:00:00 2001 From: Denis Denisov Date: Wed, 22 Jun 2022 23:34:53 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9A=D0=BE=D0=BD=D1=84=D0=B8=D0=B3=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20OpenHAB.=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=B4=D0=B8=D1=81=D0=BF=D0=BB=D0=B5=D0=B9=20=D1=81=20?= =?UTF-8?q?=D0=BE=D1=82=D0=BE=D0=B1=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=D0=BC=20=D1=82=D0=B5=D0=BA=D1=83=D1=89=D0=B8=D1=85=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=BA=D0=B0=D0=B7=D0=B0=D1=82=D0=B5=D0=BB=D0=B5?= =?UTF-8?q?=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- well_control.ino | 28 ++++++++++++++++++++++++++++ well_control.items | 7 +++++++ well_control.things | 11 +++++++++++ 3 files changed, 46 insertions(+) create mode 100644 well_control.items create mode 100644 well_control.things 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"] + } +}