Hallo
ich habe eine TCP Verbindung zu einer SPS über WLAN die soweit funktioniert. Wenn ich das WLAN kurz ausschalt verbindet sich das Arduino mit der SPS. Wenn ich das WLAN über Nacht aus habe erhalte ich nach WLAN Neustart am nächsten Tag keine TCP Verbindung mehr. Ich muss erst das Arduino neu starten damit es wieder funktioniert.
Ich glaube dies kommt von der Linuxseite. Kann mir jemand bei diesem Problem helfen?
Im Anhang das Arduino Programm
#include <SPI.h>
#include <Wire.h>
#include <Bridge.h>
#include <YunClient.h>
#include <Console.h>
#include <DHT22.h>
#include "IRremote.h"
// SPS Port und IP
#define PORT 2500
IPAddress PLC(192,168,178,30); // PLC Address
bool _Connected;
// Temperatursensor PIN
#define DHT22_PIN 4
DHT22 myDHT22(DHT22_PIN);
// Zeitlicher Funktionsaufruf
long previousMillis = 0;
long interval = 9000;
unsigned long currentMillis;
// IR Empfenger
int receiver = 3;
IRrecv irrecv(receiver); // create instance of 'irrecv'
decode_results results;
void setup() {
irrecv.enableIRIn(); // Start the receiver
Bridge.begin(); // Sarte Bridge
digitalWrite(13, HIGH);
Console.begin(); // Starte Console
delay(1000);
YunClient client;
}
//******************************************************************Hautprogramm********************************************************
void loop()
{
// listen for incoming clients
YunClient client;// = server.accept();
// LED aus wenn Client nicht verbunden
// Zeit für Zeitliche aufruf
unsigned long currentMillis = millis();
// Temperaturwerte alle 2,5sec senden
if(currentMillis - previousMillis > interval) {
previousMillis = currentMillis;
if (client.connect(PLC,PORT)){
Console.println("connected");
digitalWrite(13, HIGH);
if (client.connected()) {
TempFeuchte (client);
TCPDisConnect(client);
}
}
}
if (irrecv.decode(&results)) {// have we received an IR signal?
// translateIR(client);
irrecv.resume(); // receive the next value
}
delay(100);
}
//***********************************************
//** Funktion TCP Verbindung **
//***********************************************
void TCPDisConnect (YunClient client) {
client.stop();
client.flush();
_Connected = LOW ;
digitalWrite(13, LOW);
Console.println("Disconnected");
}
//***********************************************
//** Funktion Temperatur Feuchtw **
//***********************************************
// Temperatur und Feuchte abfragen und senden
void TempFeuchte (YunClient client) {
DHT22_ERROR_t errorCode;
errorCode = myDHT22.readData();
int value;
String cString;
// TCP Verbindungsaufbau
switch(errorCode)
{
case DHT_ERROR_NONE:
value = myDHT22.getTemperatureC()*100;
// Value nur senden wenn nicht 0
if (value != 0) {
cString ="GV/01"+String(value,DEC);
client.write((uint8_t*)&cString[0], cString.length());
Console.println(cString);
}
value = myDHT22.getHumidity()*100;
// Value nur senden wenn nicht 0
if (value > 0) {
cString ="GV/02"+String(value,DEC);
client.write((uint8_t*)&cString[0], cString.length());
Console.println(cString);
}
break;
}
}