Befehl über die Webseite wird doppelt ausgeführt!?!?!?!?!?!

Wenn ich den Button drücke sendet mir die Webseite dem Arduino den Pin welchen ich schalten möchte, aber nur mit dem EINMALIGEN Schaltbefehl (Button 1x drücken = 1x "0/LOW" Schaltbefehl). Low wegen dem Sainsmart 16-channel relaismodul, welches ein LOW-Befehl braucht und nur EINMAL den Schaltbefehl, weil ich das jeweilige Relais nur als Taster nutzen möchte, welcher auf ein Stromstoßrelais wirkt. Der Grund für die Stromstoßrelais ist das ich autark über Taster in der Wohnung direkt die 230V schalten kann und parallel ist es mir möglich über die Webseite+Ethernet-Shield+Arduino+Sainsmart-Relaismodul, ebenso zu schalten.

Zum Thema welchen Sketch ich nehme bin ich gerade wieder mal verwirrt. Welcher Unterschied besteht in euren Sketch's?

Dass mit den Taster in der Wohnung musst du mir mal ausführlich schriftlich geben :smiley:
Habe es noch nicht ganz verstanden wie es mit den Taster abläuft.

Sainsmart 16-channel und ein 8-channel habe ich hier auch liegen, blos da ist (glaub ich) keine Stromstoßrelais. Brauchen die bei dir auch extra 12 Volt?

Sketch von mir, enthält keine html oder php Dateien und da ist es ihm egal welcher Button gedrückt wurde, ob Arbeitszimmer oder WC :smiley:
Arduino bekommt nur die Werte /pin=LOW

Dieser Sketch ist 11kb

#include <SPI.h>
#include <Ethernet.h>

// MAC und IP Konfiguration
byte mac[] = { 
  0xDE, 0xAD, 0xBC, 0xAF, 0xFE, 0xED };
IPAddress ip(192,168,0, 29);
IPAddress gateway(192,168,0, 252);
IPAddress subnet(255, 255, 255, 0);

// warten auf port 23
EthernetServer server(23);

void setup() {
  //Ethernet initialisieren
  Ethernet.begin(mac, ip, gateway, subnet);
  // Server starten
  server.begin();
  // serielle konsole öffnen (debug)
  Serial.begin(9600);
}

void loop() {

  // auf eine eingehende Verbindung warten
  EthernetClient client = server.available();
  //wenn verbindung, dann 3 bytes lesen; 
  if (client) {

    char command =client.read();
    byte pinnumber =client.read();
    byte pinvalue =client.read();
    byte returnvalue = 0;

    //Kommando auswerten
    switch(command) {

    case 'S':
      Serial.print("S Kommando empfangen, setze Pin ");
      Serial.print(pinnumber);
      Serial.print(" auf ");
      Serial.println(pinvalue);
      pinMode(pinnumber,OUTPUT);
      digitalWrite(pinnumber,pinvalue);
      //gesetzten wert auch zurückliefern
      returnvalue=pinvalue;
      break;

    case 'R':
      returnvalue = digitalRead(pinnumber);
      Serial.print("R Kommando empfangen, lese Pin ");
      Serial.print(pinnumber);
      Serial.print(". Wert = ");
      Serial.println(returnvalue);
      break;

    default:
      Serial.println("Fehler, unbekanntes Kommando");    
      break;

    }  
    
    // rückantwort senden (1 byte) die "+48" sorgen dafür das der Wert 0 oder 1 als Zeichen "0" oder "1" übertragen werden. 
    //das vereinfacht die verarbeitung in php.
    client.write(returnvalue+48);
    
    //übertragung erzwingen
    client.flush();
    
    //10ms delay damit daten sicher gesendet werden.
    delay(10);
    
    //wichtg! client verbindung beenden
    client.stop();
  }
}

Stell dir vor, du musst Temperatur auslesen, 20 Taster schalten usw, passt der Sketch auf dem UNO drauf?
Allein das RGB Beispiel von Webduino nimmt 16kb ein, für eine LED.

EINMALIGEN Schaltbefehl (Button 1x drücken = 1x “0/LOW” Schaltbefehl).

Wie soll der Befehl dazu sein? Wie willst du dann sehen ob die Lampe An oder Aus ist? Man kann diesen EINMALIGEN Schaltbefehl auch mit dem Switch machen.

XD also skorpi08 ich versuche es dir zu erklären, alsoooooo..... Du hast eine ganz "normale" Hausinstallation, aber ohne Schalter sondern Taster. Diese Taster gehen ja auf Stromstoßrelais im Verteiler oder Unterverteiler. Durch den EINMALIGEN Schaltimpuls durch den Taster schaltet das Stromstoßrelais bzw. zieht die Spule vom Stromstoßrelais kurz an und schaltet den/die Schließer/Öffner des Stromstoßrelais. Über diese Schließer/Öffner werden dann die gewünschten Stromkreise geschaltet z.B. Lichtstromkreis vom Wohnzimmer.

Soweit die "normale" Hausinstallation XD Jetzt mache ich nichts anderes als mit dem Sainsmart einen Taster über eines der 16-Relais vorzutäuschen und schalte damit wie ein Taster das Stromstoßrelais. Für die Rückmeldung nutze ich nur noch einen Schließer des Stromstoßrelais und führe diesen auf einen Digitalen Input des Arduinos und lese ihn aus. Wenn der Schließer des Stromstoßrelais für das Licht im Wohnzimmer z.B. angezogen hat, dann wird der Arduino 5V an den jeweiligen Digitalen Input bekommen und sagt das das Licht im Wohnzimmer an ist. Bei mir werde ich beides parallel installieren und bin somit autarkt falls mal was mit der Steuerung ist. D.h. ich kann entscheiden ob ich per Hand das Licht anschalte oder über Internet und bin somit unabhängig im notfall.

Habe ich es diesmal etwas verständlicher rübergebracht? XD Nebenbei bin ich Elektroniker für Automatisierungstechnik und kenne mich unter anderem mit Hausinstallationen gut aus :)

Der Switch müsste dann aber nach dem Anklicken wieder Angeklickt werden damit er wieder in die Ausgangsstellung geht oder irre ich mich!? Ansonsten käme doch dauerhaft das "0"-Signal und das Sainsmart schaltet jedesmal oder!?

Soweit ist es mir auch verständlich, ich kann mir aber kein Bild im Kopf machen, deswegen SCHRIFTLICH ausführlich ;) Fals es dir nicht allzuviel ausmacht, könntest du es ja mal aufs papier bringen.

Also ich gehe davon aus dass das schalten der Website per Smartphone erfolgt, denn sonst ist es sinnfrei :D

Du gibst über die Website den Befehl (Wohnzimmer) LICHT AN. Gehst dann ins Wohnzimmer und machst das LICHT AUS. Was denkst du was auf der Website angezeigt wird, LICHT AN oder LICHT AUS? Also wie macht man es dass der Arduino den Taster (aus dem Wohnzimmer) erkennt, welchen Befehl der Taster sendet. Hast du 230V oder 12/24V Taster? Wie kann man die Taster programmieren? Oder garnicht?

Ich müsste demnächst eine EIB Steuerung realisieren :( Ich hab ganz normale Schalter im Haus. Wie, welche, wieviele, wohin sollte ich die Kabel verlegen?

Das schalten geht per Smartphone, Tablet oder PC.
Ich werde hauptsächlich daheim das Tablet oder das Handy benutzen XD.

Deine Frage:
Du gibst über die Website den Befehl (Wohnzimmer) LICHT AN. Gehst dann ins Wohnzimmer und machst das LICHT AUS. Was denkst du was auf der Website angezeigt wird, LICHT AN oder LICHT AUS?
Also wie macht man es dass der Arduino den Taster (aus dem Wohnzimmer) erkennt, welchen Befehl der Taster sendet.
Hast du 230V oder 12/24V Taster? Wie kann man die Taster programmieren? Oder garnicht?

Nach meiner nun durch Eisebaer einwandfrei funktionierenden Webseite geht das mit der Rückmeldung sauber und wird es bei der neuen ebenso, wenn das Prinzip beibehalten wird.
Wenn du das Licht über smartphone, tablet, pc,… schaltest und es ist z.B. AN und du dann es per Hand ausschaltest, wird dir auf der Webseite der aktuelle Zustand dank der RÜCKMELDUNG bzw. dem AUSLESEN des Stromstoßrelais auch “AUSGESCHALTET” angezeigt.
Der Taster ist wie in meiner Skizze zu sehen ein 230V-Taster und das müsste einwandfrei so wie gezeichnet funktionieren.
Es gibt natürlich auch die Möglichkeit den Taster nicht über 230V auszuführen und ihn direkt an einen Digitalen Input des Arduinos zum schalten zu hängen, aber dann bist du nicht mehr AUTARK, kostet aber in der 230V-Version wegen den Stromstoßrelais mehr.

Zum Thema EIB bin ich nicht mehr aktuelle (Stand 2011), aber EIB ist ein “Europäischer Installations BUS” und damit brauchst du nur 2 Adern.
Müsste mich jedoch nochmal genauer erkundigen wie das nochmal war, aber müsste passen.
Für EIB hatten wir damals spezielle Taster bzw. Elemente die wir einbinden mussten und die waren nicht gerade billig.
Es gibt bessere Produkte bzw. vergleichbare, welche günstiger sind!

Also irgendwie kommt immer ein Punkt wo es einfach nur HÄNGT…
Ich Gestalte gerade die Webseite weiter mit den anderen Räumen-Untergruppen-Button’s und nun mache ich schon seit 2,5 Stunden an dem gleichen Drama rum.
Nach 3 Räumen bei denen ich komplett das Layout fertig habe beginnt der ab dem 4.Raum das auf der Hauptseite und der Unterseite reinzubasteln und ich finde keinen Fehler oder Zusammenhang egal wie ich es drehe und wende.
Ich bin ratlos und hoffe wiedermal nur auf euch…
Danke im Voraus!!!

Layout - Eigenversion Button.html (9.74 KB)

Nichts verstanden.
Was du da im anhang hast, soll es so sein oder ist da was faul? Versteh nicht was falsch ist

Anbei meine neueste kreation

index Kopie.html (11.6 KB)

Hey echt interessantes Layout!!! Nichts verstanden auf die Stromstoßgeschichte und die Skizze!? Falls du mein Webseitenlayout meinst ist da gaaaaaanz unten was faul:

Fußzeile Hauptseite Flur - Steuerungsauswahl

Licht Heizung Anderes

Fußzeile

alle weiteren Räume ab dem Flur werden im Hauptfenster zusätzlich UNGEWOLLT unten reingedrückt und da rätsel ich schon seit stunden rum.......

hmm.... versteh nicht ganz

      Arbeitszimmer
      Badezimmer
      Schlafzimmer
      Flur
      Seitenflur
      Abstellraum
      Gäste-WC
      Wohnzimmer
      Küche
      Esszimmer

Dass wird auf der Hauptseite angezeigt.

Was soll nicht anzeigen? Würd ma sagen einfach löschen

Wenn du es dir anzeigen lässt und auf der Hauptseite runterscrollst müsstest du das auf dem Bild im Anhang sehen…

Webseitenlayout fehler.png

Nö, sowas hab ich nicht. Lösch mal dein Cache.

Hab ich gemacht, aber ist leider immer noch da.....mist......dann muss ich mal im internet suchen.... Ein kompliment an dein Layout, das wird ja richtig groß :)

Okay, es hängt wohl vom Browser ab. Ich nutze Chrome aufm Mac.
In Safari zeigts bei mir auch so wie bei dir an.

Hier die geänderte version, content in page geändert.

Page= neue seite
Content= der inhalt der neuen seite
Footer= …halt dass was unten angezeigt werden soll

Layout - Eigenversion Button (1).html (8.28 KB)

HEY !!!!! Es funktioniert wirklich !! Danke skorpi08 wieder mal hast du mir die Mauern eingerissen! Nun werde ich das ganze nochmal sauber einpflegen und hoffe das es dann komplett ist. Danach werde ich mir gedanken um die Kommunikation zum Arduino machen. Vielen Dank nochmal skorpi08!!

Hey skorpi08 ist es ok das ich dein Layout mal in meine Version gewandelt habe!? Hast du schon eine Ansteuerung deines Arduinos sauber realisieren können?

Tuh was du nicht lassen kannst :smiley:
Also wenn man den switch betätigt, leuchtet die LED und geht auch wieder aus.
Obs nun sauber realisiert wurde, kann ich als Fliesenleger nicht beantworten :smiley:

XD sauber heißt bei mir nur das es einwandfrei funktioniert XD und das tut es in deinem Fall. Respekt das du dich in diesem Gebiet so reingearbeitet hast, obwohl dein Beruf keine direkte Verbindung zu diesem Thema hat.

Ist das dieser Code am schluss der das allein realisiert !?

$('#flipswitch3').change(function (event) { var mySwitch = event.currentTarget; var val = mySwitch.value == "on" ? 0 :1 ; $.post('sendControl.php?device='+mySwitch.id+'&stat='+mySwitch.value+'&pin='+"7"+'&val='+val, function (response){}); });

Du brauchst ein Webserver dafür. Ich hab auf dem Mac MAMP Pro installiert, für Win gibt es XAMPP. Damit der Mac nicht ständig im Betrieb ist, habe ich ein MiniPC gekauft (15€), eine CF Karte (8GB 15€), Adapter ( 3 Stk je 1€) und dadrauf Ubuntu Server Edition installiert und anschließend Webmin (GUI).

Dann brauchst du noch paar Dateien damit es funktioniert. Die werde ich dir auch noch schicken wenn du das Design fertig hast etc

Dieser Code sendet dann ein Befehl an die Datei und die Datei sendet es weiter an den Arduino.

Ok das heißt das ich den Arduino auf diese Weise nicht als Webserver nutzen kann, mit diesem Design!? Ich werde das Design soweit fertig machen, wobei ich eigentlich jetzt an dem Punkt bin wo ich Rückmeldungen anzeigen lassen will und da wissen muss wie ich das realisieren bzw. programmieren kann/soll . Habe deshalb nachgefragt :)

Genau dass hatte ich versucht deutlich zu machen. Selbst das Design kannst du wohl übernehmen, blos da musst du an jede Zeile noch paar Zeichen dransetzen, schau das Webduino Beispiel an. Die Befehle werden dir aber nix bringen, wenn dein Arduino der Server ist. Und wenn, dann muss man alles anpassen.

Ich verstehe aber nicht wo das Problem liegt. Es gibt zich kostenlose Webserver und zich kostenlose dyndns Domains. Zum testen lade mal XAMPP.