Ich hatte ein sehr spontane Idee, die auch erstaunlich gut geklappt hat 🙂 und dazu hatte ich nach langer Zeit auch wieder Lust was auf meine Seite zu schreiben.

Nachdem ich lange mit FHEM unterwegs war, habe ich inzwischen mein smartes Zu Hause komplett auf ioBroker umgestellt. Wobei nicht ganz…meine ABUS Secvest Alarmanlage läuft noch mit FHEM und den passenden ioBroker Adapter.

Aber nun zum Thema. Ich bzw. meine Frau haben immer wieder das Problem Abends erst zum Wäsche waschen zu kommen und wenn man erst spät kommt ist die Wäsche auch erst spät fertig und die Motivation dann noch die Wäsche zu machen, naja sagen wir mäßig. Die ganze Nacht die feuchte Wäsche in der Trommel lassen war für uns auch keine Option. Was nun?

Nimm einen Servo (hatte ich noch rumliegen, wie so vieles) und einen Wemos D1 Mini, bringe die beiden Teile zusammen und lasse sie Deine “dumme” und nicht mehr ganz junge Waschmaschine zu einer bestimmten Zeit einschalten.

Hier einer der ersten Versuche mit Testgehäuse

Teileliste:

WERBUNG

Wemos mit Tasmota

Als erstes kommt der Wemos dran. Ich bin ein totaler Fan von Tasmota und nutze das für alle ESP Projekte bei mir. Zu flashen nehme ich der Einfachheit halber die Online Installation https://tasmota.github.io/install/, einfacher gehts nicht.

Tasmota Startseite
Tasmota Konfiguration

Verkabelung

Ich habe den Servo direkt an die Pins gelötet und nach innen gebogen, dann passt nachher auch alles platzsparend in das Gehäuse. Die Verkabelung sieht wie folgt aus:

Verkabelung
Verdrahtung in fritzing

Die Relais sind nur virtuell und völlig egal welchen GPIO ihr auswählt, für PWM habe ich D4 (GPIO 2) gewählt. Die weiteren Einstellungen für MQTT und Wlan etc. sind unendlich oft beschrieben, dass spare ich mir an dieser Stelle.

Da ich PWM und Servo noch nie direkt am Wemos genutzt haben musste ich mich mal einlesen, dafür habe ich folgende Hilfe genutzt:

https://github.com/arendst/Tasmota/discussions/10443

Hier die Steps der Tasmota Konfiguration um Servo im Shuttermode nutzen zu können. Gebt folgende Befehle der Reihe nach in die Konsole ein:

SetOption80 1 // enable Shutters support.
Shuttermode 5 // enable Shutter mode for servo.
PWMfrequency 200 // this is a global variable for all Servos.
SetOption15 0 // to control the storage of values.

ShutterPwmRange1 100, 500 //this is a global variable for all Servos.
ShutterOpenDuration1 0.5 // define the open time, in seconds.
ShutterCloseDuration1 0.5 // define the close time, in seconds.
ShutterMotorDelay1 0.2 // servo does not like abrupt start / stop.
Restart 1

Gehäuse

Man klebt sich ja den Wemos nicht direkt an die Waschmaschine, also musste noch ein Gehäuse her. Ich bin jetzt nicht der Fusion Held, aber für eine spontane Nummer wie diese reicht es denn schon. Damit der Servo in das Gehäuse passt habe ich an den Seiten die Halterungen abgefeilt.

Das Gehäuse in Fusion 360

Hier die Files für Fusion oder direkt die .stl Dateien. Das Gehäuse ist ein wenig dünn an den Wänden geraten, für mich aber soweit ok. Gedruckt habe ich auf meinem Creality Ender 5.

ioBroker

Die ioBroker Integration findet via MQTT und dem SONOFF Adapter statt. Ich schalte die Waschmaschine über Alexa und über einen Datenpunkt der über die Vis mit der Startzeit gefüllt wird.

Für die Steuerung habe ich ein Skript zusammen geschrieben, damit schalte ich zuerst die Steckdose der Waschmaschine um selbige und den Wemos einzuschalten. Das Befüllen, Programmwahl und Einstellungen etc. müssen vorab an der Waschmaschine erfolgen.

Für die Servosteuerung müsst Ihr mal ausprobieren welche Einstellung ihr für den Shutter in Tasmota braucht, bei mir passt die Einstellung ShutterPosition1 0 für Halteposition und ShutterPosition1 63 für das drücken des Tastern sehr gut. Ich lasse den Taster 1 Sek. drücken und fahre den Servo dann wieder zur Halteposition zurück.

Hier mein Script für ioBroker:


var Startzeit = getState('0_userdata.0.Waschmaschine.Startzeit'/*Startzeit*/).val.split(":") //DP Startzeit


//-----------------------------------------------------------------------------------
// Aktualisierung Startzeit und Schedule setzen und schalten der Waschmaschine nach Vorwahlzeit
on('0_userdata.0.Waschmaschine.Startzeit', function (obj) {
    Startzeit = getState('0_userdata.0.Waschmaschine.Startzeit').val.split(":")
    schedule({hour: Startzeit[0], minute: Startzeit[1]}, Waschmaschine_ein);
});

console.log(Startzeit)

//-----------------------------------------------------------------------------------
// Schalten der Waschmaschine über Dummy DP (Alexa, Vis, etc.)
on({id: '0_userdata.0.Waschmaschine.SwitchBot_ein', change: 'gt'}, function (obj) {
    Waschmaschine_ein ()
  });

//-----------------------------------------------------------------------------------
// Abschalten der Waschmaschine wenn fertig
on({id: 'device-reminder.0.Waschmaschine.Status'/*Status Waschmaschine*/,change: 'ne'}, function (obj) {
     let StatusWM = getState('device-reminder.0.Waschmaschine.Status').val
     if (StatusWM == "switched off") {
         console.log("TESTEN")
         setState('hs100.0.192_168_178_62.state'/*Waschmaschine*/,false);
     }
  });

//-----------------------------------------------------------------------------------
// Funktion Waschmaschine einschalten
function Waschmaschine_ein () {
    let offset = 4000; // Zeit zum Hochfahren vom Wemos
    setState('hs100.0.192_168_178_62.state'/*Waschmaschine*/,true);
    setStateDelayed('sonoff.0.SwitchBot_WM.ShutterPosition1'/*SwitchBot WM  ShutterPosition1*/,63, offset + 1000, false); //Taster drücken
    setStateDelayed('device-reminder.0.Waschmaschine.Status'/*Status Waschmaschine*/,"in action", offset + 500, false);
    setStateDelayed ('sonoff.0.SwitchBot_WM.ShutterPosition1'/*SwitchBot WM  ShutterPosition1*/,0, offset + 2000, false); // Halteposition
    setStateDelayed ('0_userdata.0.Waschmaschine.SwitchBot_ein'/*SwitchBot ein*/,false, offset + 2500, false);
}

Ich hoffe Euch Ideen geliefert zu haben oder konnte Euch helfen. Ich freue mich auf Eure Kommentare.

Und wer es nicht selbst basteln will, man kann sowas natürlich auch kaufen:

WERBUNG

Aufrufe: 4724

Author

11 Comments

  1. Hallo Alexander,

    Ich versuche gerade Dein Projekt nachzubauen. Leider scheitere ich daran auf der Konsole die Befehle zu übertragen. Bei einigen Befehlen kommt folgende Ausgabe: “15:34:48.161 RSL: RESULT = {“Command”:”Unknown”}”
    Ich habe, wie Du, Tasmota über das Online Tool übertragen. Geladen habe ich die Sensor.bin

    Danke für Deine Hilfe, Gruss Thomas

    • Alex Reply

      Hey Thomas,
      Kann sein das es an der Sensor.bin liegt und dort der Shuttermode nicht funktioniert. Ich hatte die Tasmota_de.bin benutzt.
      Grüße und viel Spaß
      Alex

  2. Friedo-Bernd Reply

    Das wird es sein, bin auchgerade dabei, etwas neu aufzubauen mit so einer Servoschaltung.
    Hatte auch die Sensor.bin versucht, weil eigentlich noch ein Radarsensor mir dazu sollte, mit der sensor.bin konnte ich das Servo nicht bewegen.
    Mfg

    • Alex Reply

      Wenn beides gebraucht wird musst du Dir deine eigene Tasmota bin kompilieren.

  3. Bei mir hat es daran gelegen, weil ich zuerst die Konfiguration mit den Relay’s und PWM vorgenommen habe. Nachdem ich das Wemos erneut aufgespielt habe und zuerst in der Konsole die Befehle eingetragen habe, funktionierte es. Ich versuche nun noch ein weiteres Servo einzubinden. So weit bin ich jedoch noch nicht gekommen.

  4. Danke! Gerade nachgebaut.
    Habe schon lange eine WiFi-fähige Alternative zu SwitchBot und FingerBot gesucht, die ja immer ihr BT-Gateway brauchen.

    • Alex Reply

      Hallo Marcus,
      ich freue mich immer sehr wenn ich andere inspirieren kann. Danke für Dein Feedback.
      Alex

  5. Hallo Alex,
    wenn ich das Objekt ShutterPosition1 im Sonoff Adapter ändere, dann bewegt sich mein Servo nicht.
    Über die Tasmota Oberfläche lässt der Servo sich steuern. Und auch, wenn ich im Adapter den Datenpunkt Power1 auf true setze bewegt sich was.
    Im Iobroker Log kommt die Meldung: zum ShutterPosition1 “has been written without ack-flag with value”
    Hast du vielleicht einen Tipp.
    Grüße
    Matthias

    • Alex Reply

      Hallo Matthias,

      bei mir im Log steh das auch so drin:
      Read-only state “sonoff.0.SwitchBot_WM.Shutter1_Position” has been written without ack-flag with value “50”
      Der Servo fährt damit so wie er soll.

      Schau mal ob du auch den korrekten Datenpunkt gesetzt hast. Es gibt immer die Verwechslungsgefahr zwischen Shutter1_Position (da passiert nichts) und ShutterPosition1 (aber den hast du ja genannt). Ansonsten scheint mir, dass bei der Übertragung was nicht rüberkommt. MQTT passt alles?

      LG
      Alex

      • Hallo Alex,

        danke für deine schnelle Antwort.

        Ich hab leider nur den Datenpunkt “Shutter1_Position” und nicht “ShutterPosition1”.

        Ich hab den Datenpunkt “ShutterPosition1” jetzt manuell angelegt und wenn ich dessen Wert ändere bewegt sich mein Servo endlich 🙂

        Danke
        Grüße
        Matthias

Write A Comment