diff --git a/examples/sPSN_ClientMinimal/sPSN_ClientMinimal.ino b/examples/sPSN_ClientMinimal/sPSN_ClientMinimal.ino new file mode 100644 index 0000000000000000000000000000000000000000..0e58d6bb209d2a2497290a1ece8f8f0464317507 --- /dev/null +++ b/examples/sPSN_ClientMinimal/sPSN_ClientMinimal.ino @@ -0,0 +1,65 @@ +/** + *file: sPSN_Client1 + *author: letsgoING -> info@letsgoing.de + * + *description: + * Dieses Programm ist das Minimal-Beispiel für ein einfaches Pub-Sub-Netzwerk. + * Es wird jede Sekunde ein analoger Messwert (AO) übertragen + * und die empfangenen Daten auf dem SerialMonitor ausgegeben + * + * Für das Netwerk werden 3 oder mehr Arduinos mit IR-Link-Modulen benötigt: + * + * Arduino1: sPSN_Broker.ino + * + * Arduino2-n: sPSN_ClientMinimal.ino (dieses Programm) + * + * parameter: + * MAX_LEN_PAYLOAD = 20 Zeichen (didacticNet.h) + * MAX_LEN_TOPICS = 10 Zeichen (didacticNet.h) + * + *date: 06.07.2021 + */ +#include <Arduino.h> +#include "SoftwareSerial.h" +#include "didacticNet.h" + +SoftwareSerial sSerial(10, 11); //Erzeuge SoftwareSerial-Instanz mit Rx = Pin10 -> Empfänger | Tx = Pin11 -> Sender + +didacticPSNetClient psnClient; //Erzeuge PubSub-Client-Instanz + + +//Callback-Funktion - wird beim Empfang neuer Daten aufgerufen +void clientCallback(char* mTopic, int mToLength, char* mPayload, int mPayloadLength) { + Serial.print("Nachricht von: "); + Serial.print(mTopic); + Serial.print(" - "); + Serial.println(mPayload); +} + + +void setup() { + + Serial.begin(2400); //Starte Serielle Schnittstelle (zum PC) + sSerial.begin(2400); //Starte SoftwareSerielle Schnittstelle (zu IR-Link-Modulen) + + psnClient.begin(sSerial, clientCallback); //Starte PubSub Client an SoftwareSerial Schnittstelle + + //Hier EMPFANGS-TOPIC ANPASSEN -> default "client2" + psnClient.subscribe("client2"); //Lege fest zu welchem Topic Daten empfangen werden sollen +} + +void loop() { + + psnClient.handleNetwork(); //Verarbeiten der Daten, prüfen ob Netzwerk frei und versenden der Daten + + int currentValue = analogRead(A0); //lese Poti ein und speichere Wert + + char payload[5]; + itoa(currentValue, payload, 10); + + if(psnClient.timeElapsed(1000)){ //Sende neue Daten wenn Mindestwaretzeit 1 Sekunde abgelaufen + //Hier SENDE-TOPIC ANPASSEN -> default "client1" + psnClient.publish("client1", payload); //bereite Topic und Nutzdaten zum senden vor + } +} +