Buitenverlichting automatiseren.
3 berichten
• Pagina 1 van 1
Buitenverlichting automatiseren.
Goedemiddag forumleden.
Mijn naam is Richard en ben net begonnen met een Arduino project.
Deze code is geschreven door mijn zwager, en werkt naar behoren.
De verlichting kan ik nu ook aan/uit zetten met mijn smartphone en via de computer.
Nu zou ik graag hebben dat de verlichting om 24:00 automatisch uitschakelt en pas weer aangaat als de waarde van de lichtsterkte weer 400 is.
Hoe kan ik dit bereiken?
De Arduino hangt aan een netwerkswitch.
met vriendelijke groet,
Richard
Mijn naam is Richard en ben net begonnen met een Arduino project.
Deze code is geschreven door mijn zwager, en werkt naar behoren.
De verlichting kan ik nu ook aan/uit zetten met mijn smartphone en via de computer.
Nu zou ik graag hebben dat de verlichting om 24:00 automatisch uitschakelt en pas weer aangaat als de waarde van de lichtsterkte weer 400 is.
Hoe kan ik dit bereiken?
De Arduino hangt aan een netwerkswitch.
met vriendelijke groet,
Richard
- Code: Alles selecteren
#include <Dhcp.h>
#include <Dns.h>
#include <Ethernet.h>
#include <EthernetClient.h>
#include <EthernetServer.h>
#include <EthernetUdp.h>
// pin 5 = bypass5
// pin 5 = relay voortuin
// pin 6 = relay carport
#include <SPI.h>
// Adresses MAC
byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0xF6, 0x27 };
IPAddress ip(192,168,178, 177);
EthernetServer server(80);
String readString;
bool webbypass = 0;
bool allesuit = 0;
bool bypass5 = false;
int Tuinvoorheen = 0;
long repeatgetal = 1;
int lichtsterktesetpoint = 400;
String LS = "";
void setup(void)
{
Serial.begin(115200);
pinMode(5, INPUT); // bypass5 voortuin verlichting
pinMode(18, OUTPUT); // Relay voortuin verlichting
pinMode(19, OUTPUT); // relay carport verlichting
pinMode(16, OUTPUT); // relay carport verlichting
Ethernet.begin(mac, ip);
delay(1000);
}
void loop(void)
{
// Create a client connection
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();
//read char by char HTTP request
if (readString.length() < 100) {
//store characters to string
readString += c;
//Serial.print(c);
}
//if HTTP request has ended
if (c == '\n') {
Serial.println(readString); //print to serial monitor for debuging
client.println("HTTP/1.1 200 OK"); //send new page
client.println("Content-Type: text/html");
client.println();
client.println("<HTML>");
client.println("<HEAD>");
client.println("<meta name='apple-mobile-web-app-capable' content='yes' />");
client.println("<meta name='apple-mobile-web-app-status-bar-style' content='black-translucent' />");
client.println("<link rel='stylesheet' type='text/css' href='http://randomnerdtutorials.com/ethernetcss.css' />");
client.println("<TITLE>Home Automation</TITLE>");
client.println("</HEAD>");
client.println("<BODY>");
client.println("<H1>Huitema Home Automation</H1>");
client.println("<hr />");
client.println("<br />");
client.print("<H2>Light Control value:");
client.print(analogRead(A3));
client.println("</H2>");
client.println("<br />");
client.print("<H2>Current Control setpoint:");
client.print(lichtsterktesetpoint);
client.println("</H2>");
client.println("<br />");
client.println("<FORM ACTION='/' method=get >"); //uses IP/port of web page
client.println("Light Setpoint: <INPUT TYPE=TEXT NAME='LS' VALUE='' SIZE='25' MAXLENGTH='4'><BR>");
client.println("<INPUT TYPE=SUBMIT NAME='submit'>");
client.println("</FORM>");
client.println("<br />");
client.println("<a href=\"/?A1\"\">Tuin Verlichting Aan</a>");
client.println("<br />");
client.println("<br />");
client.println("<a href=\"/?C1\"\">Carport Verlichting Aan</a>");
client.println("<a href=\"/?C0\"\">Carport Verlichting Uit</a><br />");
client.println("<br />");
client.println("<br />");
client.println("<a href=\"/?D0\"\">Alles Uit</a><br />");
client.println("<br />");
client.println("<br />");
client.println("<a href=\"/?D1\"\">opheffen</a><br />");
client.println("<br />");
client.println("<br />");
client.println("<p>Created by Circlestone</p>");
client.println("<br />");
client.println("</BODY>");
client.println("</HTML>");
delay(1);
//stopping client
client.stop();
//controls the Arduino if you press the buttons
if (readString.indexOf("?A1") >0 ){
Serial.println("Achtertuin en voortuin bypass aan");
allesuit = 0;
webbypass = 1;
}
else{
if (readString.indexOf("?C1") >0 ){
Serial.println("Carport aan");
allesuit = 0;
carportaan(true);
}
else{
if (readString.indexOf("?C0") >0){
Serial.println("Carport UIT");
carportaan(false);
}
else{
if (readString.indexOf("?D0") >0 ){
Serial.println("Alles uit");
webbypass = 0;
allesuit = 1;
}
else{
if (readString.indexOf("?D1") >0 ){
Serial.println("Alles uit opgehefen");
webbypass = 0;
allesuit = 0;
}
else{
if (readString.indexOf("?LS=") >0 ){
Serial.print("ONTVANGEN:");
Serial.println(readString);
LS= readString.substring(9,12);
lichtsterktesetpoint=LS.toInt();
}}}}}}
//clearing string for next read
readString="";
}
}
}
}
bypass5 = digitalRead(5);
if (bypass5 == 0){ // bypass uitgeschakeld0
// Serial.println("bypass uit");
if (allesuit == 1){
Serial.println("alles uit loop ingeschakeld");
carportaan(false);
delay(10);
achtertuinlampen(false);
delay(10);
voortuinlampen(false);
}
if (analogRead(A3)>lichtsterktesetpoint){
allesuit=0;
}
if (allesuit == 0){
if (webbypass == 1) {
voortuinlampen(true); // voortuin inschakelen
achtertuinlampen(true); // achtertuin inschakelen
}
if (webbypass == 0) {
aansturingoplicht(); // achtertuin en voortuin lampen worden gestuurd op de lichtsterkte
}
}
}
if (bypass5 == 1){ // bypass ingeschakeld
Serial.println("Bypass aan");
voortuinlampen(true); // voortuin inschakelen
achtertuinlampen(true); // achtertuin inschakelen
}
}
//----------------------------------------------------------------------------
void aansturingoplicht()
{
int Lichtsterkte = 0;
bool Tuin = false;
delay(10000);
Lichtsterkte = analogRead(A3);
//Serial.println(Lichtsterkte);
if (Lichtsterkte < lichtsterktesetpoint){
Tuin = true;
voortuinlampen(true);
achtertuinlampen(true);
}
else
{
Tuin = false;
voortuinlampen(false);
achtertuinlampen(false);
}}
//----------------------------------------------------------------------------
void achtertuinlampen(bool data)
{
if( data == true) { // achtertuinlamp moet AAN
//Serial.println (" achtertuin lampen aan");
digitalWrite(16, LOW);
}
if (data == false) {// achtertuinlamp moet UIT
//Serial.println (" achtertuin lampen uit");
digitalWrite(16, HIGH);
}
}
//----------------------------------------------------------------------------
void voortuinlampen(bool data)
{
if (data == true){ // voortuinlamp moet aan
//Serial.println(" Voortuin lampen aan");
digitalWrite(18, LOW);
}
if (data == false){ // voortuinlamp moet aan
//Serial.println(" Voortuin lampen uit");
digitalWrite(18, HIGH);
}
}
//----------------------------------------------------------------------------
void carportaan(bool data)
{
if (data == true){ // voortuinlamp moet aan
digitalWrite(19, LOW);
}
if (data == false){ // voortuinlamp moet aan
digitalWrite(19, HIGH);
}
}
Advertisement
Re: Buitenverlichting automatiseren.
Is het een Arduino Uno met Ethernet Shield ? Dan zal er nog maar weinig code bij kunnen.
Om te weten hoe laat het is, kun je een RTC module toevoegen.
Wanneer je dat gaat doen, gebruik dan een DS3231 module.
Je kunt de tijd ook opvragen op internet.
Via internet kun je bij een NTP server de tijd opvragen met een UDP pakket. Dat kan met de gewone Ethernet library. Je kunt dat bijvoorbeeld elk uur doen om tijd goed in sync te houden.
Dan heb je ook een library voor de tijd nodig. De meest bekende zijn de TimeLib (Paul Stoffregen), maar er is ook de RTClib (Adafruit).
Als NTP server gebruik ik een IP die door XS4ALL wordt onderhouden en behoort bij europe.pool.ntp.org.
Het aanzetten boven een bepaalde lichtsterkte kan volgens mij gewoon toegevoegd worden. Ik begrijp nog niet wat de if-statements doen met bypass en allesuit en zo.
Om code toe te voegen, lijkt het me beter om eerst deze code netter te maken.
Maak variabelen van de pin nummers, zet alle haakjes, spaties, lege regels, komma's, en inspringen goed.
Wil je meer met internet doen, dan is het misschien nodig om te kijken naar vastgelopen sockets. Kijk bijvoorbeeld hier https://playground.arduino.cc/Code/WebServerST naar de functie "checkSockStatus()".
Om te weten hoe laat het is, kun je een RTC module toevoegen.
Wanneer je dat gaat doen, gebruik dan een DS3231 module.
Je kunt de tijd ook opvragen op internet.
Via internet kun je bij een NTP server de tijd opvragen met een UDP pakket. Dat kan met de gewone Ethernet library. Je kunt dat bijvoorbeeld elk uur doen om tijd goed in sync te houden.
Dan heb je ook een library voor de tijd nodig. De meest bekende zijn de TimeLib (Paul Stoffregen), maar er is ook de RTClib (Adafruit).
Als NTP server gebruik ik een IP die door XS4ALL wordt onderhouden en behoort bij europe.pool.ntp.org.
Het aanzetten boven een bepaalde lichtsterkte kan volgens mij gewoon toegevoegd worden. Ik begrijp nog niet wat de if-statements doen met bypass en allesuit en zo.
Om code toe te voegen, lijkt het me beter om eerst deze code netter te maken.
Maak variabelen van de pin nummers, zet alle haakjes, spaties, lege regels, komma's, en inspringen goed.
Wil je meer met internet doen, dan is het misschien nodig om te kijken naar vastgelopen sockets. Kijk bijvoorbeeld hier https://playground.arduino.cc/Code/WebServerST naar de functie "checkSockStatus()".
Re: Buitenverlichting automatiseren.
Koepel schreef:Is het een Arduino Uno met Ethernet Shield ? Ik begrijp nog niet wat de if-statements doen met bypass en allesuit en zo.
Om code toe te voegen, lijkt het me beter om eerst deze code netter te maken.
Maak variabelen van de pin nummers, zet alle haakjes, spaties, lege regels, komma's, en inspringen goed.
Wil je meer met internet doen, dan is het misschien nodig om te kijken naar vastgelopen sockets. Kijk bijvoorbeeld hier https://playground.arduino.cc/Code/WebServerST naar de functie "checkSockStatus()".
Het is inderdaad een Arduino Uno met Ethernet Shield.
Bypass is om ervoor te zorgen dat ik de lampen aan kan zetten bij meer licht (lees overdag) om het gras te kunnen maaien want er zit een wcd op 1 van de lampen.
Alles uit doe ik nu omdat ik niet de gehele nacht de verlichting wil hebben aanstaan.
3 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 2 gasten