In a nutshell it's what it says on the title. My goal is to quickly and easily remotely control appliances and monitor environmental conditions in my house and any other building that I own. The finished project will use a microcontroller for interacting with the physical world.
Details
With the help of PHP, I've created a web interface for control.
Components
1×
Atmega 1284p
current microcontroller being used to interact with the physical world (mcu will likely change)
1×
CH340G
Cheap USB-Serial for connecting the microcontroller to the host computer
I'm once again working on the project doing some cleanup and changing things around a bit. Currently, I'm now programming the esp8266 directly instead of using the MSP430. Another thing that I'm working on is providing proper documentation on how to get everything configured and working. I will likely switch from the Atmega 1284p to something more mainstream such as a 328p.
I will most likely create a new project page, and will post the link hear when it's up.
I've been busy but starting last weekend, I'm one again working on the project. I've been cleaning up some things and adding a new key feature: temperature logging. The latest version is located in the fifthgen folder in the GitHub repo.
How the temperature logging feature currently works:
On the sensors page, there is a form for temperature logging. It allows the user to set the interval of samples, how many samples to take, and the desired filename. After various validation checks and making sure that a temperature log recording is not already in process, a php file is run as a background process that writes the temperature data to a .csv file along with the time of the sample. The user can get access to all of the log files by clicking "get logs" which spits out the links to all of the log files present. All log files can easily be deleted via the "delete logs button". The log recording process can be killed and checked with a press of a button.
This new feature is still very much a work in progress, and I have yet to check its robustness when it comes to things such as turning on an led while it takes a temperature reading for the log.
Screenshot of updated page:
I imported a log file into Excel and graphed the ~24 hour readings for my room. You can tell when the A/C cycles.
It's been a while since I've last worked on the project, been busy with other things including another project (a target board for the attiny85 which I shall post soon.) I've updated the web side of things a bit.
If you have any suggestions/comments/constructive critizism, please do let me know in the comments below.
Yes, I'm still here! I've figured out my own way to do bi-directional communication (sort of) between my MSP430G2553 connected to an ESP8266 and my web server. The MSP430 sending temp data to my web server is nice, but I wanted to come up with a way to send commands back to the MSP430 without having to dump the default AT firmware on the ESP8266.
Here is how it works in a nutshell:
There is a text file on the webserver that contains a character that represents a command (that's to be updated via the web control interface, haven't done that part yet)
The ESP8266 essentially polls that textfile every so often, and if it finds one of several particular characters, it runs the associated command (such as turn on an LED)
It's a hack job, but it does work: Energia sketch below:
char starry[170];
voidsetup(){
// put your setup code here, to run once:
P1OUT &=~B01000001;
P1DIR |=BIT0;
P1DIR |=BIT6;
delay(6000);
Serial.begin(115200);
}
voidloop(){
// put your main code here, to run repeatedly:
delay(500);
querycommand();
}
voidquerycommand(){
Serial.print("ATE0\r\n"); //disables local echo
delay(50);
Serial.print("AT+CIPSTART=\"TCP\",\"192.168.18.5\",80\r\n");
delay(50);
Serial.print("AT+CIPSEND=");
Serial.print(26);
Serial.print("\r\n");
delay(50);
Serial.print("GET /nextgen/command.txt\r\n\r\n");//26int count=0;
if (Serial.available()){
if(Serial.find("+IPD")){
P1OUT |=BIT6;
while(count<170){
starry[count]=Serial.read();
count++;
}
}
}
count=0;
while(count < 170){
if(starry[count] =='8'){
P1OUT |=BIT0;
count=170;
}
elseif(starry[count]=='z'){
P1OUT &=~BIT0;
count=170;
}
else{
count++;
}
}
}
Seeing as I"m getting a few more followers, I'll get back to the project soon. I've been side-tracked lately my mini-projects. My latest mini-project has been a small I2C temp sensor board featuring a TC74 and a DS1631. Come to think of it, this may come in handy for the HouseRemote Project. If anyone is interested, I'll be happy to provide the KiCad files.
First of all let me say thanks for those that are following and/or have given skulls, your support is appricated! I've been busy with other things this week such as making having my first PCB made. I plan to get back on track next week.
I've added a remote sensor using an ESP8266 and a MSP430G2553. The sensor is currently configured to detect the presence of water and send and alert to the web server if it does. The new code(and modifications to web page files) has been posted on my GitHub repo here.
A little backstory: I've suffered in the past from water leaks from the washing machine, the last leak damaged my flooring in the hallway.
I of course plan to do more things than just detect water with remote sensors in the future. The downside of using the ESP8266 is that it's a power hog, which reduces the practicality of making the remote sensor battery-powered and thus limits where I can place it.
I know, I know it's about time that I set one up (continuing to dump my code on the Hackaday page would just make things messy and inpractical.) I"m still learning how to use GitHub.
I'm currently working on improving the web interface (a screenshot of it can be seen in the second project photo.) Originally everything was in a few files. I've not split up all the different functions, into separate files.
I've also changed the appearance a bit, it's still just a draft so there is bound to be at least a few more iterations to go. As for new features, I'm considering taking logs of sensor data.