diff --git a/esp-videoswitcher.ino b/esp-videoswitcher.ino index 81149e3..fb55e05 100644 --- a/esp-videoswitcher.ino +++ b/esp-videoswitcher.ino @@ -12,6 +12,7 @@ SoftwareSerial swSer(D2, D1); int currentnumber = 0; int inputbytes[4]; +int commandbytes[4]; String output = ""; String output2 = ""; @@ -19,7 +20,25 @@ HomieNode switchNode("switch", "switch"); bool switchHandler(const HomieRange& range, const String& value) { Homie.getLogger() << "switch " << ": " << value << endl; - switchNode.setProperty("switch").send(value); + + if (sscanf(value, "%d %d %d %d", &commandbytes[0], &commandbytes[1], &commandbytes[2], &commandbytes[3]) == 4) + { + // Nur wenn wirklich 4 Werte übernommen wurden + switchNode.setProperty("switch").send(value); + // Sende an das Gerät + swSer.write(commandbytes[0]); + swSer.write(commandbytes[1]); + swSer.write(commandbytes[2]); + swSer.write(commandbytes[3]); + } + else + { + commandbytes[0] = 0; + commandbytes[1] = 0; + commandbytes[2] = 0; + commandbytes[3] = 0; + switchNode.setProperty("switch").send("ERROR"); + } return true; } @@ -37,8 +56,6 @@ void setup() { ArduinoOTA.setHostname(Homie.getConfiguration().deviceId); ArduinoOTA.begin(); - - } void loop() { @@ -65,11 +82,7 @@ void loop() { switchNode.setProperty("switchevent").send(output2); switchNode.setProperty("input").send(String(inputbytes[1]-128, DEC)); switchNode.setProperty("output").send(String(inputbytes[2]-128, DEC)); - // Einfache Interpretation -// Serial.print("Von "); -// Serial.print(String(inputbytes[2]-128, DEC)); -// Serial.print(" zu "); -// Serial.println(String(inputbytes[1]-128, DEC)); + currentnumber = 0; inputbytes[0] = 0; inputbytes[1] = 0; @@ -84,8 +97,4 @@ void loop() { currentnumber++; } } -// while (Serial.available() > 0) { -// swSer.write(Serial.read()); -// } - }