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

Naja, ich hab mit null Ahnung angefangen, egal welche Programmier Sprache und musste mir selber alles beibringen.
Hier ist ne schöne seite, da kannste gut abgucken, mit der Bedingung es auch zu verstehen :smiley:

Was dein Projekt nun betrifft, hab mal einfach frech aus 2 Dateien nur eine gemacht :blush:

Unterseitenlayout.html (4.82 KB)

Achso, die ganzen sachen brauchst du nicht, da du ein anderen Sketch und andere Befehle hast.

Wie hast du dich nun entschieden, Arduino=Server oder mit nem Webserver, auf dem Dateien liegen?

Hey skorpi08 ganz genau so hatte ich es gemeint !!
Ich werde das noch ein wenig anpassen und dann ist es schon echt super.
Der Link von dir war echt spitze, denn ich suche schon seit stunden eine Hilfestellung wie diese im Internet und fand wirklich nichts dergleichen !
Deine Aussage “die ganzen Sachen brauchst du nicht, da du ein anderen Sketch und andere Befehle hast.” verstehe ich leider nicht ganz.
Und deine Frage zu Webserver oder Arduino als Server bin ich mir noch nicht ganz klar was besser wäre und lasse mich gerne beraten.
Ich glaube das es schade wäre ein Ethernet-Shield mit SD-Kartenslot ungenutzt zu lassen, jedoch laufen würde es ja auf beide Arten wie ich das verstanden habe.

Vielen Dank für die Hilfe wiedermal und für die weitere Unterstützung!!!

Die Variante → Arduino Ethernet -->Webserver -->PHP-Seite mit Button AN und AUS ---- Ist, wie ich finde nicht elegant
Da musste immer den Arduino an PC hängen und den Sketch ändern etc
Ich hatte mal den Sketch getestet, wo die Daten auf der SD-Karte liegen, war ziemlich langsam. Bis die Daten geladen sind…

Die Variante → Browser <–> Webserver (PHP/HTML) <–> Arduino ---- Besseres gibts nicht :smiley: ausser evtl über Serial
Schau die einfach nochmal dies hier an

Zu der script geschichte…

<script>
    $(document).ready(function(){ 
		$('#Arbeitszimmer, #Bad, #Schlafzimmer, #Flur, #Alles AN, #Alles AUS').knopf; 
		$('#Arbeitszimmer, #Bad, #Schlafzimmer, #Flur, #Alles AN, #Alles AUS').bind('click', function(event, ui) { 
			jQuery.ajaxSetup({timeout: 110}); 
			var id = $(this).attr('id'); 
			if (id == 'Arbeitszimmer')       $.post('/rgb', { licht: '1' } ); 
			if (id == 'Bad')                 $.post('/rgb', { licht: '2' } ); 
			if (id == 'Schlafzimmer')        $.post('/rgb', { licht: '3' } ); 
			if (id == 'Flur')                $.post('/rgb', { licht: '4' } ); 
			if (id == 'Alles AN')            $.post('/rgb', { licht: '5' } ); 
			if (id == 'Alles AUS')           $.post('/rgb', { licht: '6' } ); 
		});
	});
</script>

Wenn du den Sketch von Eisebaer nimmst, wird das evtl funktionieren, da musst du aber den ganzen html code anpassen.
Wenn du den Sketch von dem eben geposteten link nimmst, müss (zwar nicht aber empfohlen) das raus.

Also nutze ich am Besten den Arduino Mega als Webserver so wie ich das vorher auch getan hatte!?
Zur Ansteuerungsgeschichte bin ich jetzt etwas verwirrt, wenn ich deinen Code den ich angepasst habe nutze geht das doch auch mit dem Ansteuern oder!?

$('#flipswitch4').change(function (event) { var mySwitch = event.currentTarget; var val = mySwitch.value == "on" ? 0 :1 ; $.post('sendControl.php?device='+mySwitch.id+'&stat='+mySwitch.value+'&pin='+"9"+'&val='+val, function (response){}); }); Das dürfte doch irgendwie funktionieren, dass dieser Befehl an den Arduino geht!? Hab nun das Layout so angepasst wie ich es ungefähr gern hätte, lediglich die "flipswitches" muss ich gegen Button's austauschen da ich nur einen einmaligen "Impuls" bzw. Schaltbefehl brauche (Stromstoßrelais). [Unterseitenlayout von skorpi08 - Eigenversion.html|attachment](//discourse-cloud-file-uploads.s3.dualstack.us-west-2.amazonaws.com/arduino/original/3X/7/1/7141d11d41fc68eb6619057cc036847326606edb.html) (8.39 KB)

Und was passiert wenn du den Button drückst? Welchen Sketch willst du nun nehmen, der von Eisebaer funktioniert in meinem fall nicht.

Ich nutze den Sketch von hier http://forum.arduino.cc/index.php?topic=102817.45

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

      <a href="#Arbeitszimmer" data-role="button">Arbeitszimmer</a>
      <a href="#Badezimmer" data-role="button">Badezimmer</a>
      <a href="#Schlafzimmer" data-role="button">Schlafzimmer</a>
	  <a href="#Flur" data-role="button">Flur</a>
	  <a href="#Seitenflur" data-role="button">Seitenflur</a>
	  <a href="#Abstellraum" data-role="button">Abstellraum</a>
	  <a href="#Gäste-WC" data-role="button">Gäste-WC</a>
	  <a href="#Wohnzimmer" data-role="button">Wohnzimmer</a>
	  <a href="#Küche" data-role="button">Küche</a>
	  <a href="#Esszimmer" data-role="button">Esszimmer</a>

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!!