2 Topic mit Arduino und MQTT

Hallo!

Soweit hab ich mal alle Funkionen, welche ich fürs erste gerne hätte, hinbekommen :cold_sweat:
Danke für die Unterstützung hier!

Um mir vielleicht unnötiges zu ersparen hätte ich da noch eine Frage:
Soweit ich das Verstehe bekomme ich vom MQTT Server als Payload ein char-Array
Um es für mein Programm weiter zu verwenden habe ich versucht das char-Array in Int zu wandeln, und zwar so.

// PWM Index table
// 9 brightness steps LED not linear
const byte pwmTable[9]={0, 2, 4, 8, 16, 32, 64, 128, 255}; 

// For funktion String2Int --> String to hold input
String payloadString = "";

  if (strcmp(topic, "led2") == 0) {
   int inPayload = payload[0];
    if (isDigit(inPayload)) {
     // convert the incoming byte to a char and add it to the string:
     payloadString += (char)inPayload;
     led2Value = payloadString.toInt();
     payloadString = "";
   }
 }

  analogWrite(led2,pwmTable[led2Value]);

Das funktioniert soweit, ich kann die char-Arrays von 0-8 hier als Int 0-8 verwenden.

Ist das grundsätzlich richtig oder gibt es hier etwas einfacheres?


Ab hier nur für jene die es Interessiert


Hier die Beschreibung was ich zu tun versuche und der Code.
Vielleicht gibt es ja auch den einen oder anderen Input was man noch wie umsetzen könnte

* Hard/Software

Um Basisfunktionen zu Steuern, wie eben das Zentral Licht aus und dgl. habe ich zur zeit leider nur die Möglichkeit mittels Digital (Relais 0/1) Signale an die Moeller zu senden

ALLE "Schalter" im Haus sind TASTER!

--> Aktueller Stand
Moeller Easy 800 NET als Basisansteuerung
mit 90 verwendeten Relaisausgängen und 150 verwendeten Digitaleingängen
1 Analogeingang (für die Hauswasseranlage)
2 Conrad C-Control für Treppenbeleuchtung

Die Steuerung läuft grundsätzlich autonom, diese hatte ich bisher über einen kleinen Windows Laptop
mittels ProfiLab und OPC Visualisiert.
Da der Windows 10 Laptop in die Jahre gekommen ist und der Stromverbrauch auch nicht zu verachten war über die Jahre habe ich mich entschlossen zu "Modernisieren" und den Laptop verschrottet.

--> Neu hinzugekommen
Raspberry PI 3 mit Mosquitto MQTT Server und Node Red als Server für Visualisation im Heimnetzwerk
Relaiskarte an den GPIO's des Raspberry zu den Eingängen der Möller für diverse Steuer signale an die Moeller, z.B. Rollo Auf/Zu, Zentral Licht aus usw.
Ein Arduino Nano mittels Arduino Firmware mit dem Raspberry gekoppelt um den Wasserdruck und Lichtsensor Analog zu erfassen und mittels Node Red zu Visualisieren.
Ein ESP8266-01 --> für die Hühner Klappe und Hühner Tränken Heizung :wink:

--> Aktuelles Projekt
Arduino Uno + Ethernet Shield und Pub/Sub Client
Licht bzw. LED Steuerung im Mädchen Raum (ich nenne den mal so, es ist der Rückzugs raum für meine Tochter und meine Frau :grin: ) )

Das Haupt Licht im Raum will ich wie gewohnt Ein und Ausschalten können, zusätzlich auch mittels Relais am Arduino, dazu im Code die "LED1" + "Button1"
Neu werde ich 2 Spots montieren welche ich nur mittels Arduino bzw. der Visualisierung schalten will
"LEDx" + "Buttonx" - Fehlt im Code noch, aber wenn's mit einer klappt . . .
Auch Neu will ich LED Streifen für Indirekt Beleuchtung montieren welche ich mit dem Arduino über die PWM Ausgänge Steuern kann "LED2" + "Button2"
Der Button verhällt sich im Code so das Pro Tastendruck um einen Array wert erhöht und wenn am Max angekommen um einen Array wert verringert wird - momentan 8 Stufen Helligkeit und 0.

Um Flexibel zu bleiben habe ich es so gelöst das die Button immer zum MQTT Server senden dieser wieder retour und dann der Arduino die jeweile Aufgabe löst.
So kann ich über den Arduino selbst und auch über die Visu unabhängig Steuern.