We require a fairly simple controller application. Using a Client/Server architecture.
The client will be written using javaFX, the server will use Java SE 6
The hardware is a Temperature and Humidity Sensor, A switch/relay which turns on and off and
a IO sensor which reports open or closed.
Please see attached file for full specs.
## Deliverables
We require a fairly simple controller application. Using a Client/Server architecture.
The client will be written using javaFX, the server will use Java SE 6
The hardware is a Temperature and Humidity Sensor, A switch/relay which turns on and off and
a IO sensor which reports open or closed.
-UI Dialogs-
Main Screen
Room Tabs
Shows Hardware in Room
Shows Current Value of Sensor
Shows Minimum and Maximum Value that sensor has reached
State of Relay (Ability to Manual Switch Relay and/or Override Control)
Chart Builder
Select Sensors, Devices and a date range and build chart
Hardware Screen
Table showing hardware and specifics
Add/Remove Hardware
Associate Hardware to a Room
Settings Dialog
Room Setup
Add/Remove Room (Name)
Room Settings/Edit Room (Setpoints, alerts, timers, behavior, etc)
Map Relay to Device Type (cooling device, heating device, dehumidifing device, humidifying device , lighting device) EG Node 4 is a Cooling Device) Edit each relay/devices minimum on time before being turned off and minimum off time before being turned back on
Map Binary Sensors in Room (Door Window Sensor, Float, Flood)
Control relay(s) based on state of Binary Sensor
Send A Notification
Edit Setpoints
Day Temperature Setpoint
Night Temperature Setpoint
Day Humidity Setpoint
Night Humidity Setpoint
Lights ON Time
Lights ON Duration in Hours-Mins
Turn OFF lights for XXXX minutes if temp is above XXX
Edit/Select Room Alerts (checkbox, value, message subject)
Temperature High
Temperature Low
Humidity High
Humidity Low
Lights ON Notification
Add/Remove Timers (Control turning on or off a relay based on timer type)
Timer Types:
Daily Timer (On and Off at same time of day)
Cycle Timer (on and off intervals, starting date and time)
Weekly + Daily Timer (on off at same time of day on specific day of week)
Mail Settings (Gmail option, server host, port,Authentication etc)
[]Use Gmail
Username
Password
[]Use SMTP Server
Host
Port
Username
Password
Requires Authentication
Notification Settings
Email Addresses to send notifications to
[]Notify on error
[]notify on restart
Database Settings (name, login, ip/host or built in)
[]Utilize Built in Database
[]Utilize External mySQL Database
Name
Login
IP/HOST
Port
General Settings (port, host, logins)
Server Port
Login Username and Password
Server Functions
----------------
Establish and Maintain connection to hardware
Poll hardwares current values
Store hardwares current value to a built in time/value database
Check Current Values and change binary_switch(relay) to maintain setpoints
check alerts and send email(s) if needed
Check time for day/night and switch on or off light
Check Timers and switch on or off relays
Change/Store Settings
The hardware is quite easy to use here is an example:
GWAdapter adapter = new GWAdapter("com2"); ([login to view URL]() returns true if adapter is found)
//Communicate with Temperature and Humidity Sensor
Temp_humidity temp_rh = [login to view URL](2);
double currentTemperature = [login to view URL]();
double currentHumidity = [login to view URL]();
//Communicate with Relay / Switch
Binary_Switch b_switch = [login to view URL](1);
//get relay current state
boolean currentState = [login to view URL]();
//Turn on relay
[login to view URL](true);
//Turn off Relay
[login to view URL](false);
//Communicate with Door Window, Float, Flood Sensor
Binary_Sensor binary_sensor = [login to view URL](3);
//Returns sensors state (true is closed, false is open)
boolean currentState = [login to view URL]();
//Adding new hardware
Device device = [login to view URL]() //Waits until a hardware is found
[login to view URL]() //Aborts adding a device
Removing hardware works the same as adding.