Homeduino: universeller LAN/WLAN-Arduino für die Hausautomat

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

dondaik
Beiträge: 12929
Registriert: 16.01.2009, 18:48
Wohnort: Steingaden
Hat sich bedankt: 1604 Mal
Danksagung erhalten: 222 Mal

Re: Homeduino: universeller LAN/WLAN-Arduino für die Hausaut

Beitrag von dondaik » 04.11.2017, 12:57

schon mal an die idee von klassisch gedacht der daten an einen zweiten esp seriell übergibt und dann von dort das ganze erledigen?
oder die www - seite in iobroker bauen und dort alle sv´s anzeigen lassen ( funktioniert :-) )
-------
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso :mrgreen: !!!
wer schreibfehler findet darf sie behalten.

Ardubert Homedu
Beiträge: 142
Registriert: 17.07.2016, 10:40
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: Homeduino: universeller LAN/WLAN-Arduino für die Hausaut

Beitrag von Ardubert Homedu » 04.11.2017, 13:12

Zweiter ESP?
Verstehe nicht ganz wozu?

Und jetzt was ganz neues anfangen wie Broker nur
Weil ich mal wieder nicht Durchsteige wäre doch ganz
Schön übertrieben :mrgreen:

Am wemos geht's ja auch...
Liegt also wieder nur an mir 8)

Mfg.

dondaik
Beiträge: 12929
Registriert: 16.01.2009, 18:48
Wohnort: Steingaden
Hat sich bedankt: 1604 Mal
Danksagung erhalten: 222 Mal

Re: Homeduino: universeller LAN/WLAN-Arduino für die Hausaut

Beitrag von dondaik » 04.11.2017, 13:23

wenn es doch auf einem wemos funktioniert - warum diesen nicht vom homeduino mit daten füttern? die nutzung des esp auf dem homeduino ist doch auf diese funktion sagen wir abgestimmt..... ( aus meiner sicht )

ach: irgendwann landet man eh bei iobroker ( für mich waren die menge an wetter-SV´s und einige andere SV´s der grund mal iobroker auf den pc bzw jetzt pi zu "schmeißen" :mrgreen: - zugriff auf den pi per vnc - alles gut ..)
-------
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso :mrgreen: !!!
wer schreibfehler findet darf sie behalten.

Ardubert Homedu
Beiträge: 142
Registriert: 17.07.2016, 10:40
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: Homeduino: universeller LAN/WLAN-Arduino für die Hausaut

Beitrag von Ardubert Homedu » 04.11.2017, 14:17

so hätte ich das gerne
wenn ich die IP eingebe kommt gleich im Browser
wemoshp.jpg
Find ich super..

Die anzeige um einen Weiteren Datenpunkt erweitern hatte ich
damals leicht machen können.. für die Leistungsmessung
der Schaltsteckdose...

Und das hätte ich gerne auf meine Homeduinos...

Auch diesen Scetch hab ich schon versucht zu zerlegen und in
den Homeduino einzufügen... ohne erfolg..
Scheint irgendwie nur mit dem Wemos zu laufen...

hier nochmal der Wemos

Code: Alles auswählen

/*
*  WeMos-Schaltaktor (mit Status-Meldung an CUxD und Taster-Support)
*
*  Getesteter Aufbau:
*     WeMos D1 mini
*     Relay Shield mini
*     Pin-Belegung:
*        D1: Steuerleitung Relais
*        D2: Taster-Öffner
*        A0: Analog Eingang für Leistungsmessung
*        
*      
*/

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

// ******* Netzwerkeinstellungen, bitte anpassen! *******
const char* ssid     = "XXXXXXXXXXX"; // SSID des vorhandenen WLANs
const char* password = "XXXXXXXXXX"; // Passwort für das vorhandene WLAN
const char* host = "192.168.0.225"; // IP-Adresse der CCU  
IPAddress ip(192,168,0,211); // feste IP-Adresse für den WeMos
IPAddress dns_ip(192,168,0,1); // Adresse des DNS servers
IPAddress gateway(192,168,0,1); // IP-Adresse des WLAN-Gateways
IPAddress subnet(255,255,255,0);  // Subnetzmaske

// ******* Einstellungen für CUxD, bitte anpassen! *******
String transmit_state_R1 = "ja"; // ja/nein
String CUxD_Geraet = "CUX2801004:6"; // SN:Kanal
 
// Definition der Ports ....
const int relay_R1 = D1 ;
const int switch_R1 = D2 ; 

//********************************************************************


int sensorPin = A0; 
int sensorValue = 0; 

String analog = "W1analog" ; // Name der Var. auf der ccu


unsigned long deltaMessungSekunden = 1; //Zeitintervall (Sekunden) nach dem eine Messung erfolgt   - NUR wenn Relais HIGH (ON)
unsigned long deltaMeldungSekunden = 600; // Zeitintervall (Sekunden) nach dem eine CCU-Meldung erfolgt (0 bedeutet nie)

float deltaSensor = 5; //  watt aenderung bei der eine CCU-Meldung erfolgt (0 bedeutet nie) 

float sensor = 0, analogWert = 0;
unsigned long jetztMillis = 0;
unsigned long deltaMessungMillis = deltaMessungSekunden * 1000, letzteMessungMillis = 0;
unsigned long deltaMeldungMillis = deltaMeldungSekunden * 1000, letzteMeldungMillis = 0;


//**********************************************************************
// virtuelle CCU 
String virtual_CCU = "nein"; // ja/nein

 
// ab hier muß eigentlich nichts mehr geändert werden.....
 
// ******* Einstellungen HTML *******
String HTML_title = "WeMos Schaltaktor";
String HTML_background_color = "0D4C75"; //0D4C75
String HTML_title_color = "C9C9C9"; //9A916C
String HTML_text_color = "FFFFFF";
String HTML_color1 = "CECECE";
String HTML_color2 = "9A916C";
String HTML_head = "<h2><font color='#" + HTML_title_color +"'>" + HTML_title + "</font></h2>";
String HTML_end = "</body></html>";
String HTML_style = "style='background-color: #" + HTML_background_color +"; color: #" + HTML_text_color +";' alink='#" + HTML_color2 +"' link='#" + HTML_color1 +"' vlink='#" + HTML_color1 +"'";


ESP8266WebServer server(80); // Webserver initialisieren auf Port 80
WiFiServer server2(8181);

String Version = "1.3";
String Status = "0";
String Status_alt = "0";
String Status_Aenderung = "nein";
String Taster = "unbekannt";
String action = "0";
String transmit_state = "ja";
String antwort = "", meldung = "",letzteMeldungCCUzeit = "";

String zeitstempel() { // Betriebszeit als Stunde:Minute:Sekunde
  char stempel[10];
  int lfdStunden = millis()/3600000;
  int lfdMinuten = millis()/60000-lfdStunden*60;
  int lfdSekunden = millis()/1000-lfdStunden*3600-lfdMinuten*60;
  sprintf (stempel,"%03d:%02d:%02d", lfdStunden, lfdMinuten, lfdSekunden);
  return stempel;
}

//******************************************************************


 void messung() { // Sensor abfragen
    sensorValue = analogRead(sensorPin); // lesen 
    
    sensorValue = map(sensorValue ,0,1023,0,2300 ); // skalieren
{
   Serial.println(zeitstempel() + "  Watt: " + sensorValue);
   delay(100);

   letzteMessungMillis = jetztMillis;
   
  return;
    }
}
//******************************************************************
void status_aktuallisieren(){
  if (digitalRead(relay_R1) == HIGH) {Status = "1";}
  if (digitalRead(relay_R1) == LOW) {Status = "0";}
}


void set_CUxD() {
  String meldung = "";
  WiFiClient client; // Webclient initialisieren
  if (!client.connect(host, 8181)) { // mit dem CCU-Port 8181 verbinden
    Serial.println(" Fehler: Verbindung zur CCU konnte nicht aufgebaut werden");
    delay(50);
    return;
  }
 // meldung = meldung +"GET /WeMos.exe?state=dom.GetObject('CUxD." + CUxD_Geraet + ".SET_STATE').State('" + Status + "')";
  //client.println(meldung); // Daten an CCU melden
   meldung = meldung +"/WeMos.exe?state=dom.GetObject('CUxD." + CUxD_Geraet + ".SET_STATE').State('" + Status + "')";
  client.print(String(F("GET ")) + meldung + F(" HTTP/1.1\r\nHost: ") + host + F(":8181\r\nConnection: close\r\n\r\n")); 
}
//*******************************************************************

 void melde_CCU() { // Werte an die CCU melden
  WiFiClient client;
  const int httpPort = 8181;
  if (!client.connect(host, httpPort)) {
  return;
  }
 String 
  url = "/xy.exe?antwort1=dom.GetObject('" + analog + "').State('" + sensorValue + "')";
  Serial.print("Requesting URL: ");
  Serial.println(url);
  // This will send the request to the server
  client.print(String("GET ") + url + " HTTP/1.1\r\n" +
  "Host: " + host + "\r\n" +
  "Connection: close\r\n\r\n");
  delay(100);
  
  // Read all the lines of the reply from server and print them to Serial
  while (client.available()) {
  String line = client.readStringUntil('\r');
  }
  letzteMeldungMillis = jetztMillis; // gemeldete Daten merken
  analogWert = sensorValue;
}  

 //***********************************************************

 
  
void root() { // bei Aufruf des Root-Verzeichnisses
  String HTML_content = "";
  String HTML_start = "<html><head><meta http-equiv='refresh' content='3'><meta name='theme-color' content='#" + HTML_background_color +"'><title>" + HTML_title + "</title></head><body " + HTML_style + ">";
  String time = zeitstempel();
  String WeMos_ip = WiFi.localIP().toString();  
  HTML_content = HTML_start + HTML_head;
//  
  String button_text = "null";
  String button_color = "FFD06E";
  String button = "<span style='margin-left: 10px; background-color: #" + button_color +"; color: #000; display: inline-block; padding: 2px 10px; font-weight: bold; border: 2px solid #4f4f4f; border-radius: 2px; text-decoration: none;'>" + button_text +"</span>";
  if (digitalRead(relay_R1) == HIGH) {
  button_text = "eingeschalten";
  button_color = "70E670";
  button = "<span style='margin-left: 10px; background-color: #" + button_color +"; color: #000; display: inline-block; padding: 2px 10px; font-weight: bold; border: 2px solid #4f4f4f; border-radius: 2px; text-decoration: none;'>" + button_text +"</span>";
  HTML_content = HTML_content + "<strong>Status: <a target='answer_wemos' href='http://" + WeMos_ip + "/cmd?R1=0'>" + button +"</a></strong><br><br>";
  }
  else {
  button_text = "ausgeschalten";
  button_color = "A8A8A8";
  button = "<span style='margin-left: 10px; background-color: #" + button_color +"; color: #000; display: inline-block; padding: 2px 10px; font-weight: bold; border: 2px solid #4f4f4f; border-radius: 2px; text-decoration: none;'>" + button_text +"</span>";
  HTML_content = HTML_content + "<strong>Status: <a target='answer_wemos' href='http://" + WeMos_ip + "/cmd?R1=1'>" + button +"</a></strong><br><br>";
  }
//  
  HTML_content = HTML_content + "Betriebszeit: <font color='#" + HTML_color2 +"'><em>" + time + " (Std:Min:Sek)</em></font><br>";
  HTML_content = HTML_content + "Verbunden mit: <font color='#" + HTML_color2 +"'><em>" + ssid + "</em></font><br>";
  HTML_content = HTML_content + "Leistung: <font color='#" + HTML_color2 +"'><em>" + sensorValue + " Watt</em></font><br><br>";
  int rssi = WiFi.RSSI();
  HTML_content = HTML_content + "Signalstaerke: <font color='#" + HTML_color2 +"'><em>" + String(rssi) + " dBm</em></font><br><br>";
  HTML_content = HTML_content + "<strong><a href='http://" + WeMos_ip + "/help'>Hilfe</a></strong>"; 
  HTML_content = HTML_content + "<iframe name='answer_wemos' frameborder='no' height='0' width='0'>Sorry, no frames.</iframe>"; 
  server.send(300, F("text/html; charset=utf-8"), HTML_content + HTML_end);
  delay(150);
}

void help() {
String HTML_content = "";
String HTML_start = "<html><head><meta name='theme-color' content='#" + HTML_background_color +"'><title>" + HTML_title + "</title></head><body " + HTML_style + ">";
String WeMos_ip = WiFi.localIP().toString();  
  HTML_content = HTML_start + HTML_head;
  HTML_content = HTML_content + "<strong><font color='#" + HTML_title_color +"'>Schaltaktor mit Taster und Statusmeldung an CUxD (28)exec, CCU-RemotePC kompatibel</font><br>";
  HTML_content = HTML_content + "<font color='#" + HTML_color2 +"'>Version: <em>" + Version + "</em></font></strong>";
  HTML_content = HTML_content + "<h3>Konfiguration fuer R1:</h3>";
  HTML_content = HTML_content + "<li>Status senden: <font color='#" + HTML_color2 +"'><em>" + transmit_state_R1 + "</em></font></li>";
  HTML_content = HTML_content + "<li>CUxD-Geraet: <font color='#" + HTML_color2 +"'><em>" + CUxD_Geraet + "</em></font></li>";
  HTML_content = HTML_content + "<li>Taster-Typ: <font color='#" + HTML_color2 +"'><em>" + Taster + "</em></font></li><br>";
  HTML_content = HTML_content + "<h3>HTTP-Befehlsuebersicht:</h3>";
  HTML_content = HTML_content + "<li>\"<font color='#" + HTML_color1 +"'>http://" + WeMos_ip + "/cmd?R1=0</font>\" schaltet das Relais mit Statusmeldung an CUxD aus</li>";
  HTML_content = HTML_content + "<li>\"<font color='#" + HTML_color1 +"'>http://" + WeMos_ip + "/cmd?R1=1</font>\" schaltet das Relais mit Statusmeldung an CUxD ein</li>";
  HTML_content = HTML_content + "<li>\"<font color='#" + HTML_color1 +"'>http://" + WeMos_ip + "/cmd?R1=0&transmit=0</font>\" schaltet das Relais ohne Statusmeldung an CUxD aus</li>";
  HTML_content = HTML_content + "<li>\"<font color='#" + HTML_color1 +"'>http://" + WeMos_ip + "/cmd?R1=1&transmit=0</font>\" schaltet das Relais ohne Statusmeldung an CUxD ein</li>";
  HTML_content = HTML_content + "<li>\"<font color='#" + HTML_color1 +"'>http://" + WeMos_ip + "/cmd?R1=state</font>\" gibt den Schaltzustand des Relais als Logikwert (\"0\" oder \"1\") zurueck</li>";
  HTML_content = HTML_content + "<li>\"<font color='#" + HTML_color1 +"'>http://" + WeMos_ip + "/cmd?CUxD=0</font>\" Statusmeldung an CUxD bis zum reboot ausschalten</li>";
  HTML_content = HTML_content + "<li>\"<font color='#" + HTML_color1 +"'>http://" + WeMos_ip + "/cmd?CUxD=1</font>\" Statusmeldung an CUxD einschalten</li><br>";
  HTML_content = HTML_content + "<h3>CUxD-Integration:</h3>";   
  HTML_content = HTML_content + "<li>Mit CUxD ein Geraet vom Typ (28)System/Exec/Schalter erstellen</li>";  
  HTML_content = HTML_content + "<li>In der CCU im Posteingang konfigurieren:<br>"; 
  HTML_content = HTML_content + "&nbsp;&nbsp;&nbsp;SWITCH|CMD_SHORT: <font color='#" + HTML_color1 +"'>/usr/local/addons/cuxd/curl -s -m 5 \'http://" + WeMos_ip + "/R1-0\'</font><br>"; 
  HTML_content = HTML_content + "&nbsp;&nbsp;&nbsp;SWITCH|CMD_LONG: <font color='#" + HTML_color1 +"'>/usr/local/addons/cuxd/curl -s -m 5 \'http://" + WeMos_ip + "/R1-1\'</font></li><br><br>"; 
  
  HTML_content = HTML_content + "<h3><a target='_blank' href='http://ccu-remotepc.dragonfly.at/'>CCU-RemotePC</a> kompatibel:</h3>";   
  HTML_content = HTML_content + "<li>\"virtual_CCU\" im Sketch auf \"ja\" stellen</li>";  
  HTML_content = HTML_content + "<li>via TrayControl in CCU-RemotePC folgendes Geraet erstellen:<br>"; 
  HTML_content = HTML_content + "&nbsp;&nbsp;&nbsp;<font color='#" + HTML_color1 +"'>Plattform: CCU; Geraete Gruppe: Switch; Geraetetyp: CUxDAktor;</font><br>"; 
  HTML_content = HTML_content + "&nbsp;&nbsp;&nbsp;<font color='#" + HTML_color1 +"'>CCU IP-Adresse: " + WeMos_ip + "; SN:Kanal: WeMos00000:1</font></li>"; 
  HTML_content = HTML_content + "<li>virtuelle CCU aktiv: <font color='#" + HTML_color2 +"'><em>" + virtual_CCU + "</em></font></li><br>";  
  HTML_content = HTML_content + "<br><strong><a href='http://" + WeMos_ip + "'>zurueck</a></strong><br>";
  server.send(300, F("text/html; charset=utf-8"), HTML_content + HTML_end);
}

void turn_on() {
  digitalWrite(relay_R1, HIGH);
  Serial.println("on");
}

void turn_off() {
  digitalWrite(relay_R1, LOW);
  Serial.println("off");
}

void action_1() { //keinen status senden
  String aktor_status = "unbekannt";
  if (action == "1") {turn_on(); aktor_status = "eingeschalten";}
  if (action == "0") {turn_off(); aktor_status = "ausgeschalten";}
  Status_alt = action;
  status_aktuallisieren();
  server.send(200, F("text/plain; charset=utf-8"), "WeMos-Schaltaktor ist "+ aktor_status +", keine Meldung an CUxD");
}

void action_2() { //status senden
  String aktor_status = "unbekannt";
  if (action == "1") {turn_on(); aktor_status = "eingeschalten";}
  if (action == "0") {turn_off(); aktor_status = "ausgeschalten";}
  Status_alt = action;
  status_aktuallisieren();
  if (transmit_state == "ja") {set_CUxD();}
  server.send(200, F("text/plain; charset=utf-8"), "WeMos-Schaltaktor ist "+ aktor_status +", Meldung an CUxD");
}

void get_state() {
  String temp = zeitstempel();
  status_aktuallisieren();
  server.send(200, F("text/plain; charset=utf-8"), Status);
  delay(100);
  Serial.println(zeitstempel() + " ueber HTTP Status gemeldet");
}
void get_state_CCU() {
  String CCU_state = "null";
  String temp = zeitstempel();
  status_aktuallisieren();
  if (Status == "0") {CCU_state = "<state>false</state>";} else {CCU_state = "<state>true</state>";}
  server.send(200, F("text/plain; charset=utf-8"), CCU_state);
  delay(100);
  Serial.println(zeitstempel() + " ueber HTTP Status gemeldet");
}

void server_2() {
 // Check if a client has connected
  WiFiClient client = server2.available();
  if (!client) {
    return;
  }
 
  // Wait until the client sends some data
  Serial.println("new client");
  while(!client.available()){
    delay(1);
  }

  // Read the first line of the request
  String request = client.readStringUntil('\r');
  Serial.println(request);
  int start = request.indexOf("exe?")+4;
  int end = request.indexOf("=dom");
  String answer = request.substring(start, end);

  client.flush();   
 
  // Match the request
  if (request.indexOf("=dom.GetObject('CUxD.WeMos00000:1.STATE').State(1)") != -1) {action = "1"; action_1();} 
  if (request.indexOf("=dom.GetObject%28%27CUxD.WeMos00000%3A1.STATE%27%29.State%281%29") != -1) {action = "1"; action_1();}   
  
  if (request.indexOf("=dom.GetObject('CUxD.WeMos00000:1.STATE').State(0)") != -1){action = "0"; action_1();}
  if (request.indexOf("=dom.GetObject%28%27CUxD.WeMos00000%3A1.STATE%27%29.State%280%29") != -1) {action = "0"; action_1();}  
  
  if (request.indexOf("=dom.GetObject('CUxD.WeMos00000:1.STATE').Value()") != -1){get_state();} 
  if (request.indexOf("=dom.GetObject%28%27CUxD.WeMos00000%3A1.STATE%27%29.Value%28%29") != -1) {get_state();}  

  // Return the response
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/xml");
  client.println(""); //  do not forget this one
  client.print("<xml><" + answer + ">");
 
  if(Status == "1") {
    client.print("true");  
  } else {
    client.print("false");
  }
    client.print("</" + answer + "></xml>");

  delay(1);
  Serial.println("Client disconnected");
  Serial.println("");
}

void setup() {
  pinMode(relay_R1, OUTPUT); // Relais-Pin als Ausgang setzen
  pinMode(switch_R1, INPUT_PULLUP); // Taster zum schalten

  // Seriellen Monitor für Kontrollausgaben öffnen
  Serial.begin(115200);
  Serial.println("");
  Serial.println("WeMos-Schaltaktor");
//WiFi.mode(WIFI_STA);
  // WLAN-Verbindung herstellen
  WiFi.config(ip, dns_ip, gateway, subnet); // auskommentieren, falls eine dynamische IP bezogen werden soll
  WiFi.begin(ssid, password);
  Serial.print("Verbindungsaufbau");

  // Verbindungsaufbau abwarten
  byte maxwait = 30;
  while ( (WiFi.status() != WL_CONNECTED) && (maxwait > 0) ) {
    delay(500);
    maxwait--;
    Serial.print(".");
    }
  if (WiFi.status() != WL_CONNECTED) {Serial.println("keine Verbindung");}
  else{
    Serial.println(" erfolgreich!");
    Serial.println("");
    Serial.print("Verbunden mit: ");
    Serial.println(ssid);
    Serial.print("Signalstaerke: ");
    int rssi = WiFi.RSSI();
    Serial.print(rssi);
    Serial.println(" dBm");
    Serial.print("IP-Adresse: ");
    Serial.println(WiFi.localIP());
    Serial.println("");
    }
    server.on("/", root);
  server.on("/R1-1", [](){action = "1"; action_1();});
  server.on("/R1-0", [](){action = "0"; action_1();});
    server.on("/cmd", cmd);
    server.on("/help", help);

  // HTTP-Server starten
  server.begin();
  Serial.println(zeitstempel() + " HTTP-Server gestartet");
//*******************************************************
   // Startwerte fuer Zeittrigger
  letzteMessungMillis = millis();
  letzteMeldungMillis = millis();
//***************************************************************
  
  if (transmit_state == "ja") {set_CUxD();} 
  int sensorVal = digitalRead(switch_R1);
 // Serial.println(sensorVal);
  if (sensorVal == HIGH) {Taster = "schliesser";} else {Taster = "oeffner";}
  
  
  // Start server2
  if (virtual_CCU == "ja") {server2.begin(); Serial.println(zeitstempel() + " virtuelle CCU gestarted");}
}



void cmd() { // bei Aufruf von "../cmd"  R1%3D0 R1%3D1

  String CUxD = server.arg("CUxD");
  String R1 = server.arg("R1");
  String transmit = server.arg("transmit");

  if (R1 == "0" && transmit == "0") {action = "0"; action_1();}
  else if (R1 == "1" && transmit == "0") {action = "1"; action_1();}
  else if ( (R1 == "0" && transmit == "1") || (R1 == "0") ) {action = "0"; action_2();}
  else if ( (R1 == "1" && transmit == "1") || (R1 == "1") ) {action = "1"; action_2();} 
  else if (R1 == "state") {get_state();}
  else if (CUxD == "1") {transmit_state_R1 = "ja"; help(); Serial.println("CUxD-Meldungen: ja");}
  else if (CUxD == "0") {transmit_state_R1 = "nein"; help(); Serial.println("CUxD-Meldungen: nein");}
  else {
   help();
        delay(100);
        Serial.println(zeitstempel() + " Help");
  }
}

void oeffner(){
  int sensorVal = digitalRead(switch_R1);
  if (sensorVal == HIGH && Status == "0") {turn_on(); delay(200);}
  if (sensorVal == HIGH && Status == "1") {turn_off(); delay(200);}
  if (sensorVal == LOW) {
    status_aktuallisieren();
    if (Status_alt != Status) {Status_alt = Status; Status_Aenderung = "ja";} else Status_Aenderung = "nein";
    if (transmit_state == "ja" && Status_Aenderung == "ja") {set_CUxD();}
  }
}
   
void schliesser(){
  int sensorVal = digitalRead(switch_R1);
  if (sensorVal == LOW && Status == "0") {turn_on(); delay(200);}
  if (sensorVal == LOW && Status == "1") {turn_off(); delay(200);}
  if (sensorVal == HIGH) {
    status_aktuallisieren();
    if (Status_alt != Status) {Status_alt = Status; Status_Aenderung = "ja";} else Status_Aenderung = "nein";
    if (transmit_state == "ja" && Status_Aenderung == "ja") {set_CUxD();}
  }
  
}

void loop() {
  if ( (WiFi.status() != WL_CONNECTED) || (transmit_state_R1 != "ja")  ) {transmit_state = "nein";} else {transmit_state = "ja";}
  if (Taster == "oeffner") {oeffner();} 
  else if (Taster == "schliesser") {schliesser();}

  server.handleClient(); // auf HTTP-Anfragen warten
//********************************************************************************
 
  
 jetztMillis = millis();
 
   // neue Messung falls Zeitintervall erreicht
  if(jetztMillis - letzteMessungMillis > deltaMessungMillis) {
    if (digitalRead(relay_R1) == HIGH)  //- NUR wenn Relais HIGH (ON)
   messung();
   }
  // neue Meldung an die CCU falls Zeitintervall erreicht
  if(!deltaMeldungMillis == 0 && jetztMillis - letzteMeldungMillis > deltaMeldungMillis) {
    Serial.print(zeitstempel() + "  Zeitintervall erreicht: "); 
    melde_CCU();
  }  

   // neue Meldung an die CCU falls Watt aenderung den Schwellwert erreicht
  if(!deltaSensor == 0 && abs(sensorValue - analogWert) >= deltaSensor) { // Neue Meldung wg. Watt aenderung?
    Serial.print(zeitstempel() + "  Watt aenderung: "); 
    melde_CCU();
  }
  
   //*********************************************************************************
   if (virtual_CCU == "ja") {server_2();}

}



Wenn ich es in den Homeduino einfüge damit es durchläuft bleibt es dann letztendlich
am server.send hängen das wohl nur für ESP8266WebServer.h ist..


Hat jemand den richtigen Schubs für mich parrat???

mfg. Flo

dondaik
Beiträge: 12929
Registriert: 16.01.2009, 18:48
Wohnort: Steingaden
Hat sich bedankt: 1604 Mal
Danksagung erhalten: 222 Mal

Re: Homeduino: universeller LAN/WLAN-Arduino für die Hausaut

Beitrag von dondaik » 04.11.2017, 14:40

ok, mit der beschreibung habe ich dich falsch verstanden :-( ... du möchtest mit dem homeduino also direkt von einer www-seite schalten ?
-------
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso :mrgreen: !!!
wer schreibfehler findet darf sie behalten.

Ardubert Homedu
Beiträge: 142
Registriert: 17.07.2016, 10:40
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: Homeduino: universeller LAN/WLAN-Arduino für die Hausaut

Beitrag von Ardubert Homedu » 04.11.2017, 14:43

Das wäre ein Bonus...

Aber

In erster Linie geht es mir darum die Daten der Sensoren anzuzeigen...
zB Temperatur, feuchte, usw...

So wie oben :
Leistung

dondaik
Beiträge: 12929
Registriert: 16.01.2009, 18:48
Wohnort: Steingaden
Hat sich bedankt: 1604 Mal
Danksagung erhalten: 222 Mal

Re: Homeduino: universeller LAN/WLAN-Arduino für die Hausaut

Beitrag von dondaik » 04.11.2017, 14:59

das hatte ich vor langer zeit mal begonnen und dann einfach iobroker genommen - war mir zuviel "stress" :-)
-------
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso :mrgreen: !!!
wer schreibfehler findet darf sie behalten.

Ardubert Homedu
Beiträge: 142
Registriert: 17.07.2016, 10:40
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: Homeduino: universeller LAN/WLAN-Arduino für die Hausaut

Beitrag von Ardubert Homedu » 04.11.2017, 16:08

Das verlangt dann wieder einen Server oder ähnlich...

Will ich eigentlich vermeiden...

Gibt es auch keine Möglichkeit die Variablen aus der ccu2
Über Browser abzufragen? Einen Befehl oder ähnlich?

dondaik
Beiträge: 12929
Registriert: 16.01.2009, 18:48
Wohnort: Steingaden
Hat sich bedankt: 1604 Mal
Danksagung erhalten: 222 Mal

Re: Homeduino: universeller LAN/WLAN-Arduino für die Hausaut

Beitrag von dondaik » 04.11.2017, 16:44

habe ich nicht probiert. wird mit prg gehen aber das ist nicht meine welt - pi komplett bestellt - speicherkarte fertig gemacht .... ein wochenende gewerkelt ( das iobroker-forum ist TOP ) und gut war .. ok die ersten anzeigen waren anstrengen, doch langsam wird es und der winter ist lang :-):-)
werde jetzt langsam mal alle mega + esp sketche auf das neue format umstellen und dann auch mal der ccu ein ( murks)update gönnen :mrgreen:
ach: und aus dem einen PI wurden inzwischen vier :-)
-------
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso :mrgreen: !!!
wer schreibfehler findet darf sie behalten.

Ardubert Homedu
Beiträge: 142
Registriert: 17.07.2016, 10:40
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: Homeduino: universeller LAN/WLAN-Arduino für die Hausaut

Beitrag von Ardubert Homedu » 04.11.2017, 18:34

8) :mrgreen: 8)

Ich glaub jetzt hab ich's.....

Werde noch etwas verfeinern und testen ....
Stelle es die Tage dann ein

Mfg.

Flo

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“