Rolladensteuerung HILFE!!!

Hallo,

Das mit dem Hoch und Runter fahren der Rolladen klappt schon.

mein schaltbefehl sieht so aus:
http://ip-des-arduino/?pinD23=0/?pinD22=1 (Hoch)
http://ip-des-arduino/?pinD23=1/?pinD22=0 (Runter)

damit habe ich die funktionen auch gleich gegeneinander verriegelt.

Jetzt zum Problem:

Es muss noch irgendwie eine Art Timer dazu, der das Relais nach xx sek. wieder wegschaltet.
irgendwie so,
http://ip-des-arduino/?pinD23=0/?pinD22=1/delay 200 ?pinD22=0 (Hoch)

http://ip-des-arduino/?pinD23=1/?pinD22=0/delay 200 ?pinD23=0 (Runter)

doch leider klappt das nicht...

hat eventuell jemand eine Idee?

Gruß Tobi

Sorry, aber ich glaube nicht dass viele User bereit sind diverse Seiten zu besuchen, um deinen Code zu suchen. Bitte setze den Sketch hier in Code-Tags ein, damit wir dir helfen können.

TobiTechnik:
hat eventuell jemand eine Idee?

Ja: Drücke Dich bitte verständlich aus. Ich kenne weder das Ursprungsproblem, noch weiß ich, auf welche Bibliotheken Du Dich beziehst uswusf.

Gruß

Gregor

Aller Anfang ist schwer, so wars auch >>hier<<

Such mal nach Skorpi08 Rolladen.

Ansonsten kannste den ersten treffer nehmen.

Schaffst du es die Verzögerungszeit daraus zu extrahieren? Dann ist es kein Problem das mit millis() umzusetzen

TobiTechnik:
Hallo,

Das mit dem Hoch und Runter fahren der Rolladen klappt schon.

Dann fehlt ja nur das rechts und links :wink: :wink: :wink: (entschuldige, ich konnte es mir nicht verkneifen)

Wie schon gesagt Wert aus GET-Variable im USL extrahieren udn dann mitt millis() die Wartezeit warten.
millis(): siehe "blink without delay" -Beispiel.

Oder habe ich Dich falsch verstanden?

Grüße Uwe

hi,

mit

http://ip-des-arduino/?pinD23=0/?pinD22=1

schickst Du doch schon 2 variablennamen mit den werten. geht es nicht genauso mit

http://ip-des-arduino/?pinD23=0/?pinD22=1/?delay=200/?pinD22_2=0

? in einer adresse dürfen keine leerzeichen sein. am arduino fragst Du ja irgenwie die variablen für pinD22 und pinD23 ab. genauso kannst Du den wert für delay abrufen. aber jede variable muß einen anderen namen haben, also mußt Du für das zweite pinD22 einen anderen namen verwenden. zb pinD22_2. wenn die abfragen nach pinD22_2 und delay nichts ergeben, machst Du diesen schritt halt nicht.

gruß stefan

gruß stefan

Das sieht mir, ohne den Sketch zu sehen, nach einer richtigen Schnapsidee aus. Wenn D23=0, D22=1 gesetzt werden, hat das den Eindruck, du setzt die Ausgänge direkt. Bei sowas sollte !!sowohl Hardware als auch Softwaretechnisch eine Verriegelung stattfinden!

Besser wäre http.....?Rollade1_UP
oder http.....?Rollade1_DOWN

Wenn Rollade1_UP,
dann wird zuerst Relais2(DOWN) ausgeschaltet.
Danach eine gewissen Zeit gewartet (siehe Unterlagen zu dem Rolladenmotor bzgl. Umschaltzeit).
Erst dann darf Relais1(UP) eingeschaltet werden.

Gleiches gilt auch in der anderen Richtung.

Hallo,

danke für die vielen Informationen :smiley:

hier der Sketch der auf dem Arduino läuft.

#if ARDUINO > 18
#include <SPI.h>
#endif
#include <Ethernet.h>
#include <TextFinder.h>
#include <SD.h>


 
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };  
byte ip[]  = { 192, 168, 2, 54 };                  
byte gateway[] = { 192, 168, 2, 1 };                
byte subnet[]  = { 255, 255, 255, 0 };

byte sdPin = 4;                                     
 
Server server(80);                           
   

int i;
 
File webFile;


 
void setup()
{ 
  Ethernet.begin(mac, ip); 
  server.begin();  
  
  Serial.begin(9600);
  
 
  Serial.println("Initialisiere SD-Karte...");
  if (!SD.begin(sdPin))
  {
    Serial.println(" - Initialisierung der SD-Karte fehlgeschlagen!");
    return;
  }
  Serial.println(" - SD-Karte erfolgreich initialisiert.");
 
  if (!SD.exists("index.htm"))
  {
    Serial.println(" - Datei (index.htm) wurde nicht gefunden!");
    return;
  }
  Serial.println(" - Datei (index.htm) wurde gefunden.");
 
  Serial.println();
  
}
 
void loop()
{
  int n;
  
  
  Client client = server.available(); 
 
  if(client)
  {
    boolean currentLineIsBlank = true;
    
    TextFinder finder(client);
 
    if(finder.find("GET"))
    {
      while(finder.findUntil("pin", "\n\r"))
      {
        char typ = client.read();
        int  pin = finder.getValue();
        int  val = finder.getValue();
 
        if(typ == 'D')
        {
          pinMode(pin, OUTPUT);
          digitalWrite(pin, val);
          Serial.print(" - D"+String(pin));
        }
        else if(typ == 'A')
        {
          analogWrite(pin, val);
          Serial.print(" - A"+String(pin));
        }
        else Serial.print(" - Falscher Typ");
 
        if(val==1) Serial.println(" ein"); else Serial.println(" aus");
      }
    }
 
    
    boolean current_line_is_blank = true;      
 
    while (client.connected())
    {
      if (client.available())                   
      {
        char c = client.read();                 
        if (c == '\n' && current_line_is_blank) 
        { // Standard HTTP Header senden
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");
          client.println();
 
          
          webFile = SD.open("index.htm");  
          if (webFile)
          {
            while(webFile.available())
            {
              client.write(webFile.read()); 
              


            }
            webFile.close();
          }
          break;
        }
        if (c == '\n')
        {
          current_line_is_blank = true;
        }
        else if (c != '\r')
        {
          current_line_is_blank = false;
        }
      }
    }
    delay(1);
    client.stop();
  }
}

Gruß Tobi

der Rolladenmotor ist Mechanisch mit Relais gegeneinander verriegelt.

und mit dem Link http://ip-des-arduino/?pinD23=0/?pinD22=1
wird dann auch als zweite vorsichtsmaßnahme ein Relais weggeschaltet.

Was ist das für eine Vorsicht wenn dein Nachbar den hier macht

http://ip-des-arduino/?pinD23=1/?pinD22=1

Welchen Arduino hast Du denn eigentlich daß Du im Sketch konntrollierst daß Du eine weniger alter uraltIDe hast?

#if ARDUINO > 18

Grüße Uwe

Uwe, er hat doch keine Ahnung was es alles bedeutet, gib ihm ein fertigen Sketch und er ist zufrieden.

ich benutze das Arduino Mega...

@skorpi08:
Jeder fängt mal klein an. Ein beispiel würde mir eventuell schon helfen.

gruß

Hast wohl meine letzten Beiträge nicht gelesen.

dann fang mal an damit, die Parameter in der Url vernünftig zu übergeben.

statt
http://ip-des-arduino/?pinD23=0/?pinD22=1

kenne ich das so:
http://ip-des-arduino/?pinD23=0&pinD22=1

TobiTechnik:
der Rolladenmotor ist Mechanisch mit Relais gegeneinander verriegelt.

und mit dem Link http://ip-des-arduino/?pinD23=0/?pinD22=1
wird dann auch als zweite vorsichtsmaßnahme ein Relais weggeschaltet.

Deine mechanische Verriegelung ist falsch!! Sowas funktioniert bei Rolladenmotoren nicht sicher. Wenn dann müsstest du mit Relais arbeiten, die deutlich verzögert einschalten! Diese sollte > 0,2s sein. Da sind Relais aber idR schneller.

Moin Moin,

Habe es jetzt am laufen...

Danke an alle für die Unterstützung.

Gruß Tobi

Läuft bei dir!

Ich wette an dem Sketch hat sich nichts geändert.