Hallo zusammen,
ich habe mehrere Steckdosen aut Tasmota umgebaut.
Dazu habe ich noch einen Nodemcu als RF-Bridge laufen um auch meine 433mhz Steckdosen über Alexa schalten zu können.
Jetzt zu meiner Frage:
Ist es möglich diese RF-Bridge für die einzelenen Räume in die Tasmota-Fimware zu integrieren?
Ich brauche dazu kein Webinterface.
Der Code der hinzugefügt werden soll schaut in etwa so aus:
C
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <RCSwitch.h>
#include "fauxmoESP.h"
#define WIFI_SSID "xxxx"
#define WIFI_PASS "xxxx"
#define SERIAL_BAUDRATE 115200
#define DO_TX 2
#define DO_LED_RED 0
#define DO_LED_BLUE 2
bool switchState[3] = {false, false, false}; // Fauxmo Devicestatus- Flags
RCSwitch mySwitch = RCSwitch();
fauxmoESP fauxmo;
// -----------------------------------------------------------------------------
// Wifi Setup
// -----------------------------------------------------------------------------
void wifiSetup() {
// Set WIFI module to STA mode
WiFi.mode(WIFI_STA);
// Connect
Serial.printf("[WIFI] Connecting to %s ", WIFI_SSID);
WiFi.begin(WIFI_SSID, WIFI_PASS);
// Wait
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(200);
}
Serial.println();
Serial.printf("[WIFI] STATION Mode, SSID: %s, IP address: %s\n", WiFi.SSID().c_str(), WiFi.localIP().toString().c_str());
}
// -----------------------------------------------------------------------------
// MAIN Setup (Wird einmalig durchlaufen)
// -----------------------------------------------------------------------------
void setup() {
// Init serial port and clean garbage
Serial.begin(SERIAL_BAUDRATE);
Serial.println("nach Verbindungsaufbau ALEXA bitten Device <devicename> ein- oder ausschalten");
// LED
pinMode(DO_LED_RED, OUTPUT);
pinMode(DO_LED_BLUE, OUTPUT);
mySwitch.enableTransmit(DO_TX); // RF433 Init
delay(1000);
// Wifi
wifiSetup(); // Wifi verbinden
digitalWrite(DO_LED_RED, HIGH); // Init I/O
digitalWrite(DO_LED_BLUE, HIGH);
fauxmo.enable(true);
// Fauxmo
fauxmo.addDevice("Gerät1"); // Alexa Device einrichten 0
fauxmo.addDevice("Gerät2"); // Alexa Device einrichten 1
fauxmo.addDevice("Gerät3"); // Alexa Device einrichten 2
// fauxmoESP 2.0.0 has changed the callback signature to add the device_id, this WARRANTY
// it's easier to match devices to action without having to compare strings.
fauxmo.onSetState([](unsigned char device_id, const char * device_name, bool state) {
Serial.print("DeviceSetState: "); Serial.print(device_name); Serial.print("; "); Serial.print(device_id);
Serial.print(" Status: ");
if (state) {
Serial.println("AN");
} else {
Serial.println("AUS");
}
if (device_id == 0) { // Fernseher Wohnzimmer -1.A -Brennenstuhl
switchState[0]= state;
if (state) {
digitalWrite(DO_LED_BLUE, LOW);
mySwitch.switchOn("10000", "10000");
delay(500);
digitalWrite(DO_LED_BLUE, HIGH);
}
if (!state) {
digitalWrite(DO_LED_BLUE, LOW);
mySwitch.switchOff("10000", "10000");
delay(500);
digitalWrite(DO_LED_BLUE, HIGH);
}
}
if (device_id == 1) { // DVD-Player Wohnzimmer -1.B -Brennenstuhl
switchState[1]= state;
if (state) {
digitalWrite(DO_LED_BLUE, LOW);
mySwitch.switchOn("10000", "01000");
delay(500);
digitalWrite(DO_LED_BLUE, HIGH);
}
if (!state) {
digitalWrite(DO_LED_BLUE, LOW);
mySwitch.switchOff("10000", "01000");
delay(500);
digitalWrite(DO_LED_BLUE, HIGH);
}
}
if (device_id == 2) { // Nintendo Wii -1.C -Brennenstuhl
switchState[2]= state;
if (state) {
digitalWrite(DO_LED_BLUE, LOW);
mySwitch.switchOn("10000", "00100");
delay(500);
digitalWrite(DO_LED_BLUE, HIGH);
}
if (!state) {
digitalWrite(DO_LED_BLUE, LOW);
mySwitch.switchOff("10000", "00100");
delay(500);
digitalWrite(DO_LED_BLUE, HIGH);
}
}
});
// Callback to retrieve current state (for GetBinaryState queries)
fauxmo.onGetState([](unsigned char device_id, const char * device_name) {
Serial.print("DeviceSateRequest: "); Serial.print(device_name); Serial.print("; "); Serial.print(device_id);
return switchState[device_id];
});
}
// -----------------------------------------------------------------------------
// Main Loop (Wird staendig durchlaufen)
// -----------------------------------------------------------------------------
void loop() {
fauxmo.handle();
static unsigned long last = millis();
if (millis() - last > 5000) {
last = millis();
Serial.printf("[MAIN] Free heap: %d bytes\n", ESP.getFreeHeap());
}
}
Alles anzeigen
Ein 433mhz Sender hätte locker in der Steckdose noch Platz.
Ich würde mich freuen wenn mir da einer helfen kann.
Danke Schon mal für euere Antworten.
Gruß
Blue-Whirlwind