HotSystems:
Dann würde ich den Fehler doch mal am Netzwerk (Router o.ä.) oder Sketch suchen.
Ich muss hier Whandall nochmal explizit Recht geben. Es handelt sich nicht um WiFi etc., sondern nur die gleiche Sendefrequenz. Die haben somit nichts mit dem WLAN der Router am Hut.
Einen Fehler im Code hatte ich inzwischen ausgeschlossen, da ich mich mit diesem bereits recht ausgiebig beschäftigte.
Ich poste hier nochmal mein Startscript, runtergebrochen auf das, was für den Start (wo es bereits klemmt) relevant ist...
HA.h
#include <HA_SetUp.h>
#include <Arduino.h>
#include <RF24.h>
#include <RF24Network.h>
#include <RF24Mesh.h>
#include <Ethernet.h>
#include <SPI.h>
#ifdef master
#include <EEPROM.h>
#endif
#ifndef HA_Code
#define HA_Code
//Requestschema vom µC:
//http://192.168.0.9/Client/SubControl/Action
// ^Addresse immer gleich
// ^entspricht dem Wert von eHANodeTypes
// Wenn der Wert -1 übergeben wurde, wird nichts gesetzt, sondern die Status aller Clienten zurück gegeben
// ^Identifier, falls Client mehrere Objekt verwaltet
// ^Wert, der gesetzt werden soll. Sollte irgendetwas zwischen 0 und 100 sein.
// Wenn der Wert -1 übergeben wurde, wird nichts gesetzt, sondern nur der Status ausgelesen
//Definiert die Stationarten.
//Danach richtet sich, wie sich der Knoten verhält (Server oder Client)
enum eHANodeTypes { Master, Woodlamp, Flexenlamp, CorridorNight };
//Definiert die Funktionsmodi.
enum eHANodeModes { Server, Client };
class HA
{
private:
protected:
public:
RF24 radio;
RF24Network network;
RF24Mesh mesh;
eHANodeModes mode;
eHANodeTypes type;
long refreshTimer = 0;
//Die letzte Stelle wird durch den INT-Wert des eHANodeTypes ersetzt.
byte macAddress[6] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x01 };
String debugMessages = "_";
HA(eHANodeTypes nodeType);
void Init();
#ifdef debugPrintDebugMessage
void printDebugMessage(const String& text, bool newLine);
#endif
};
#ifdef master
class ServerFunctions : public HA
{
private:
EthernetServer server;
IPAddress ipAddress;
public:
ServerFunctions(eHANodeTypes nodeType);
void Init();
};
#endif
#endif
HA.cpp
#include <Arduino.h>
#include <HA.h>
#include <RF24.h>
#include <RF24Network.h>
#include <RF24Mesh.h>
#include <Ethernet.h>
#include <SPI.h>
#ifdef master
#include <EEPROM.h>
#endif
HA::HA(eHANodeTypes nodeType)
: radio(7, 8), network(radio), mesh(radio, network)
{
#ifdef debugStart
debugMessages += "HA:";
#endif
type = nodeType;
mode = (nodeType == Master ? Server : Client);
macAddress[5] = (int)nodeType;
#ifdef debugStart
debugMessages += "Done\n";
#endif
}
void HA::Init()
{
#ifdef debugStart
printDebugMessage("WLAN Mesh starten:", false);
printDebugMessage("Type:", false);
printDebugMessage((String)((int)type), false);
#endif
mesh.setNodeID((uint8_t)type);
mesh.begin();
#ifdef debugStart
printDebugMessage(" done;", true);
#endif
}
#ifdef master
ServerFunctions::ServerFunctions(eHANodeTypes nodeType)
: HA(nodeType), ipAddress(192,168,0,9), server(80)
{
#ifdef debugStart
debugMessages += "Konstrukutor ServerFunctions;\n";
#endif
}
void ServerFunctions::Init()
{
#ifdef debugStart
printDebugMessage("Ethernet und Server starten:", false);
#endif
Ethernet.begin(macAddress, ipAddress);
server.begin();
refreshTimer = millis();
#ifdef debugStart
printDebugMessage("Done;", true);
#endif
HA::Init();
}
#endif
#ifdef debugPrintDebugMessage
void HA::printDebugMessage(const String& text, bool newLine) {
Serial.print(text);
if (newLine) {
Serial.print("\n");
}
}
#endif
HA_SetUp.h
//#define master
#define flexenlamp
//#define corridornight
#define debugUpdateConnectedDevices
//#define anyDebug
#ifdef anyDebug
#define debugForewardRequest
#define debugGetStatesEthernetResponse
//#define debugGetNodeAddressByID
//#define debugGetValueAtIndex
//#define debugStart
#define debugUpdate
#define debugSendData
#define debugGetStates
//#define debugSetStates
//#define debugInternalInput
//#define debugSerialInput
#endif
#if defined anyDebug || defined debugUpdateConnectedDevices
#define debugPrintDebugMessage
#endif
#ifndef master
#define MESH_NOMASTER
#endif
#if ((defined woodlamp || defined corridornight) && defined master ) || (!defined flexenlamp && !defined corridornight && !defined master)
#error lol
#endif
automation.ino
#include <HA.h>
#ifdef master
ServerFunctions automation(Master);
#else
#ifdef woodlamp
HA automation(Woodlamp);
#elif defined flexenlamp
HA automation(Flexenlamp);
#elif defined corridornight
HA automation(CorridorNight);
#endif
#endif
void setup()
{
Serial.begin(9600);
Serial.println(automation.debugMessages);
automation.Init();
Serial.print("Knoten ");
#ifdef master
Serial.print("master");
#elif defined flexenlamp
Serial.print("flexenlamp");
#elif defined corridornight
Serial.print("corridornight");
#endif
Serial.println(" gestartet");
}
void loop()
{
//automation.Update();
}
Die ino bindet HA ein, erstellt das Objekt automation aus der Klasse (Master/Flexen/Corridor; im akutellen Falle für Flexen) und führt die schlussendliche Bindung etc. im Setup durch automation.Init() durch.
Flexen und Corridor sind Clients, Master ist der Server.
Ist das noch irgendwie verständlich?