Vielen Dank für eure Antworten!
Ja es war nur nen Beispiel, ob IPS da auch so flexibel ist.
Und net nur ON / OFF kann…
Hatte aber auch das Teil in den Augen:
Lan Controller v3
Hat auch nen Web Interface etc…
Aber welche Hardware würdet Ihr an anderem Ende des Lan Kabels verwenden.
Wäre auch toll wenn IPS von dem PI die Zentrale wäre. Aber die Frage nach der Hardware…
Mir hat aber jemand geholfen den Code für Arduino zu schreiben, würd ich niemals hinbekommen…:
#include <Wire.h> // include Wire library for I2C devices
#include "jursRTCtimeEasy.h" // Quelle: http://forum.arduino.cc/index.php?topic=313047.msg2193148#msg2193148
sTime localTime; // holds current time in local time (with regard to DST/summertime)
swTime_t switchTimes[] = { // define ON times
{440, 520},
{630, 740},
{1600, 2230},
};
#define NUMSWITCHTIMES sizeof(switchTimes)/sizeof(switchTimes[0])
const byte pinLEDt = 3, pinLEDa = 9, pinPIR1 = 4, pinPIR2 = 5, pinPIR3 = 6, pinPIR4 = 7, pinLDR = A0;
const uint16_t helligkeitsschwelle = 800, hysterese = 50;
uint16_t aktLDR;
const uint32_t intervallMessen = 1000, intervallDimmen = 5, minEinZeit = 3000;
uint32_t aktMillis, altMillisMessen, einMillis_t = -minEinZeit, einMillis_a = -minEinZeit;
bool aktPIRt, altPIRt, aktPIRa, altPIRa, zeitspanne;
const byte zielwertMin1 = 20, zielwertMin2 = 20, zielwertMax = 140;
byte zielwert;
enum {AUS, MIN, MAX};
byte dimmStatus = AUS;
void setup()
{
pinMode( pinPIR4, INPUT_PULLUP);
pinMode( pinPIR3, INPUT_PULLUP);
pinMode( pinPIR2, INPUT_PULLUP);
pinMode( pinPIR1, INPUT_PULLUP);
pinMode( pinLEDa, OUTPUT); // Beleuchtung Abstellraum
pinMode( pinLEDt, OUTPUT); // Beleuchtung Treppe
Serial.begin(9600);
Serial.println("Anfang");
if (RTCinit()) Serial.println(F("RTC OK"));
else Serial.println(F("RTC/I2C ERROR"));
}
void loop() {
aktMillis = millis();
altPIRt = aktPIRt;
aktPIRt = digitalRead(pinPIR1) || digitalRead(pinPIR2) || digitalRead(pinPIR3);
altPIRa = aktPIRa;
aktPIRa = digitalRead(pinPIR4);
if (aktMillis - altMillisMessen >= intervallMessen) {
altMillisMessen = aktMillis;
zeitspanne = zeit();
aktLDR = analogRead(pinLDR) ;
Serial.print("LDR ");
Serial.print(aktLDR);
Serial.print(" Zeitspanne ");
Serial.print(zeitspanne);
Serial.print(" ");
Serial.print(localTime.bDay);
Serial.print(".");
Serial.print(localTime.bMonth);
Serial.print(".");
Serial.print(localTime.iYear);
Serial.print(" ");
Serial.print(localTime.bHour);
Serial.print(":");
Serial.print(localTime.bMinute);
Serial.print(":");
Serial.print(localTime.bSecond);
Serial.println();
}
if (aktLDR > helligkeitsschwelle) {
if ( altPIRt != aktPIRt ) {
einMillis_t = aktMillis;
}
if (aktPIRt) {
dimmStatus = MAX;
} else {
dimmStatus = MIN;
}
if ( altPIRa != aktPIRa ) {
einMillis_a = aktMillis;
}
if (aktPIRa) {
zielwert = zielwertMax;
} else {
zielwert = 0;
}
}
if (aktLDR < helligkeitsschwelle - hysterese) {
dimmStatus = AUS;
zielwert = 0;
}
if (aktMillis - einMillis_t < minEinZeit) {
dimmStatus = MAX;
}
if (aktMillis - einMillis_a < minEinZeit) {
zielwert = zielwertMax;
}
dimmen_t(dimmStatus, aktLDR, zeitspanne);
dimmen_a(zielwert);
}
bool zeit() { // nur zum Testen ohne RTC
RTCreadLocalTime(localTime); // read localTime so that 'time' is a local time
return isOnTime(localTime, switchTimes, NUMSWITCHTIMES);
}
void dimmen_a(byte ziel) {
static uint32_t altMillisDimmen;
static byte fade = 0;
if (aktMillis - altMillisDimmen >= intervallDimmen) {
altMillisDimmen = aktMillis;
if (fade < ziel) {
fade++;
Serial.print("fade ARaum ");
Serial.println(fade);
}
if (fade > ziel) {
fade--;
Serial.print("fade ARaum ");
Serial.println(fade);
}
analogWrite(pinLEDa, fade);
}
}
/*
* hell -> LED aus, PIR ohne Funktion
* dunkel - innerhalb Zeitspanne -> LED = Helligkeit von Wert des LDR, mit PIR LED=155
* dunkel - außerhalb Zeitspanne -> LED 0, mit PIR 155
*/
void dimmen_t(byte status, uint16_t helligkeit, bool zspanne) {
static uint32_t altMillisDimmen;
static byte fade = 0;
byte ziel = 0;
if (aktMillis - altMillisDimmen >= intervallDimmen) {
altMillisDimmen = aktMillis;
switch (status) {
case AUS:
ziel = 0;
break;
case MIN:
if (zspanne) {
ziel = map(helligkeit, helligkeitsschwelle, 1023, zielwertMin2, zielwertMin1);
} else {
ziel = 0;
}
break;
case MAX:
ziel = zielwertMax;
break;
}
if (fade < ziel) {
fade++;
Serial.print("fade Treppe ");
Serial.println(fade);
}
if (fade > ziel) {
fade--;
Serial.print("fade Treppe ");
Serial.println(fade);
}
analogWrite(pinLEDt, fade);
}
}
Dort ist aber noch eine Seite für den RTC.
Denke da gleich an IPS, weil möchte für die zukunft gesichert sein. Wer weiß was da noch für Ideen
aufkommen…
Aber danke euch noch mal.
Gruß