Tag

ioBroker

Browsing

Das Thema Smart Lock hat mich recht lange beschäftig bevor ich mich entschieden haben mir eines zuzulegen. Die Integration ins vorhandene Smart Home war neben der Sicherheit das relevanteste Kriterium.

Für die NUKI Schlösser gibt es ja diverse Möglichkeiten der Integration durch die Bridge API oder die Web API. Da ich aber nur eine einzige Tür habe die ich mit NUKI ausstatten wollte hatte ich keine Lust mir noch eine Bridge zuzulegen und fand das NUKI Smart Lock 3.0 pro mit integriertem Wlan ganz reizvoll. Hier war die Anbindung aber nur über die Web API möglich. Das ich versuche möglichst ohne Cloudlösung auszukommen oder zumindest auch die Offline Funktionalität zu gewährleisten kam mir eine Lösung jetzt sehr gelegen: MQTT

Also das ganze schnell bestellt und per MQTT eingerichtet.

WERBUNG

Hier die Lösung das NUKI Smart Lock 3.0 pro per MQTT in ioBroker, oder jedes andere MQTT System (z.B. auch Fhem oder Home Assistant) zu integrieren.

Die NUKI App (Beta)

Im Augenblick ist die Nutzung der MQTT Konfiguration nur in der Beta App von NUKI möglich. Da ist aber einfach ranzukommen. Da ich Android Nutzer bin kann ich den Vorgang exemplarisch nur für den Google Play Store zeigen.

Erster Schritt: Beta Tester werden

Betaversionen von Apps ausprobieren

Hier die Beschreibung der Google Support Seite:

Wichtig: Damit Sie die Betaversion einer App erhalten können, muss die App bereits auf Ihrem Gerät installiert sein.

  1. Öffnen Sie den Play Store Google Play.
  2. Tippen Sie rechts oben auf das Profilsymbol.
  3. Tippen Sie auf Apps und Geräte verwalten und dann Installiert.
  4. Tippen Sie auf eine App, um die Detailseite zu öffnen.
  5. Tippen Sie unter „Für Betaprogramm anmelden“ auf Mitmachen und dann Mitmachen.

Tipp: Wenn Sie die Option „Für Betaprogramm anmelden“ nicht sehen, bietet der Entwickler derzeit keine öffentlichen Betaversionen für die App.

weitere Informationen findest du hier

Bist du dem Beta Programm beigetreten sollte im Play Store deine App als Beta gekennzeichnet sein.

Dann kann es auch schon losgehen mit der neuen MQTT Funktionalität von NUKI.


Nun findet sich in der App die Möglichkeit MQTT zu konfigurieren.

Ich habe in ioBroker den MQTT Adapter und den Sonoff Adapter parallel laufen. In der App ist die Eingabe des Ports nicht möglich. Ich habe es wie üblich mit HostIP:Port versucht, dass wird aber nicht zugelassen. Also habe ich nur die IP des ioBroker Hosts eingetragen.

Die MQTT Host IP reichte aus, damit das Smart Lock dann mit meinen MQTT Adapter kommuniziert.

Im ioBroker werden alle relevanten Datenpunkte angelegt. Auch die Sensordaten vom Door Sensor werden per MQTT mit übertragen.

WERBUNG

Ich steuere per Skript die Datenpunkte “unlock” und “lock” mit true. Damit lässt sich das Schloss öffnen und verriegeln.

Ich bin sehr happy mit der Lösung ohne API, Bridge oder Web das NUKI direkt integrieren zu können.

Bzgl. der Automatisierungen und Logiken werden ich mich die nächsten Wochen näher mit dem Thema beschäftigen und noch ein Keypad hinzufügen.

Hier geht es zu weiteren Informationen:
Ankündigung zu den Beta Versionen von NUKI:
https://developer.nuki.io/t/apps-to-configure-mqtt-are-in-beta/20285

Aufrufe: 175

Mit diesem Projekt setze ich ersetze ich den Schlaftrainer von meinem Sohn gegen eine etwas smartere Version.

Ausgangssituation

Unser Kleiner ist immer sehr früh aufgestanden, weil er noch kein Gefühl für die Zeit am Morgen hatte und da fiel mir mal der Pino Schlaftrainer von snuutje in die Hand.

Die Idee hinter dem Schlaftrainer ist dem Kind mit Licht zu signalisieren wann Schlafenszeit ist und ab wann es Zeit wird aufzustehen.

Uns hat der Schlaftrainer die ein oder andere Stunde Schlaf geschenkt und unserem Sohn ein besseres Zeitgefühl vermittelt.

Warum möchte ich den jetzt ersetzen?

  • Das Nachtlicht konnte man nicht dimmen.
  • Der Lautsprecher in dem Schlaftrainer war einfach nicht so gut, daher haben wir für die Einschlafmusik immer den Echo im Kinderzimmer genutzt.
  • Man konnte die Zeiten für die Woche und das Wochenende nicht unterschiedlich einstellen.

Meine aktuelle Umsetzung:

  • Schlaftrainer über LED Band unter dem Bett
  • Nachtlicht
  • Wecker über den Echo Dot

Der Schlaftrainer funktioniert sehr simpel per Lichtwechsel. D.h. während der Schlafenszeit ist das Nachtlicht “rot” und ändert dann 15 Minuten vor der Weckzeit auf “grün”. Dadurch wird dem Kind sanft das Zeitgefühl beigebracht das den Eltern morgens ein wenig mehr Schlaf ermöglicht.

“Blau” signalisiert, Zeit zum Schlafengehen. ca. 0,5 Stunde vor der Schlafenszeit.
Nachtlicht zur Orientierung, wird bei uns nach dem Einschlafritual über den Echo Dot im Zimmer eingeschaltet .

“Rot” heisst, noch wird geschlafen. Wird 1 Stunde vor der Weckzeit eingeschaltet. Alternativ kann man Rot auch weglassen und nur das Nachtlicht nutzen.
“Grün” heißt Aufstehzeit, wird zur Weckzeit aktiviert.

WLED auf Wemos D1 Mini

Die Hardwareliste für dieses Projekt ist sehr kurz. Ich habe nur ein einfaches USB Netzteil, einen Wemos D1 Mini und ca. 1m (30 LED’s) WS2812B LED Strip benutzt:

Den Wemos habe ich mit der aktuellen WLED Version geflashed. Die bekommt man bei Github https://github.com/Aircoookie/WLED/releases

Dazu gibt es ausreichend Anleitungen und daher spare ich mir hier die Details.

Da ich nur 1m von dem Strip benutze und damit nur 30 LED’s hab ich den Strip direkt an den Wemos gelötet.

WERBUNG

ioBroker Integration

Für die Verbindung vom Wemos zu ioBroker nutze ich den WLED Adapter

Die unterschiedlichen Szenen des Schlaftrainers schalte ich über die Presets in WLED. Die Presets werden ganz einfach erstellt.

Stelle die passende Einstellung ein und klicke auf “Create preset”, vergib einen Namen und schon ist das Preset gespeichert und über die Nummerierung über den Datenpunkt “ps” zu erreichen.

ioBroker Script

Ich als Beispiel ein ganz simples Skript für ioBroker zusammengeschrieben um den Nachbau möglichst einfach zu gestalten. Die einzelnen Szenen für den Schlaftrainer werden einfach per Schedule aufgerufen und je nach Wochen Tag, Montag – Freitag dayOfWeek: [1,2,3,4,5] oder am Wochenende dayOfWeek [0,6]

//-----------------------------------------------------------------------------------
// Signalisiert, dass es bald Zeit ist schlafen zu gehen (Wochentags)
schedule({hour: 19, minute: 00, dayOfWeek: [1,2,3,4,5]}, Schlafzeit );
   
 function Schlafzeit () {
   setState('wled.0.2cf43212d302.ps'/*ID of currently set preset*/, 2);
 }

//-----------------------------------------------------------------------------------
// Signalisiert, noch ist Schlafenszeit (Wochentags)
 schedule({hour: 6, minute: 30, dayOfWeek: [1,2,3,4,5]}, VorWeckzeit );
   
 function VorWeckzeit () {
   setState('wled.0.2cf43212d302.ps'/*ID of currently set preset*/, 3);
 }

//-----------------------------------------------------------------------------------
// Ab jetzt kann aufgestanden werden (Wochentags)
schedule({hour: 7, minute: 00, dayOfWeek: [1,2,3,4,5]}, Weckzeit );
   
 function Weckzeit () {
   setState('wled.0.2cf43212d302.ps'/*ID of currently set preset*/, 1);
 }

//-----------------------------------------------------------------------------------
// Signalisiert, dass es bald Zeit ist schlafen zu gehen (Wochenende)
schedule({hour: 19, minute: 00, dayOfWeek: [6,0]}, Schlafzeit );
   
 function Schlafzeit () {
   setState('wled.0.2cf43212d302.ps'/*ID of currently set preset*/, 2);
 }

//-----------------------------------------------------------------------------------
// Signalisiert, noch ist Schlafenszeit (Wochenende)
 schedule({hour: 07, minute: 30, dayOfWeek: [6,0]}, VorWeckzeit );
   
 function VorWeckzeit () {
   setState('wled.0.2cf43212d302.ps'/*ID of currently set preset*/, 3);
 }


//-----------------------------------------------------------------------------------
// Ab jetzt kann aufgestanden werden (Wochenende)
schedule({hour: 08, minute: 00, dayOfWeek: [6,0]}, Weckzeit );
   
 function Weckzeit () {
   setState('wled.0.2cf43212d302.ps'/*ID of currently set preset*/, 1);
 }

//-----------------------------------------------------------------------------------
// Nachtlicht wird über Alexa eingeschaltet
on({id: '0_userdata.0.Schlaftrainer.Nachtlicht'/*Nachtlicht*/, change: 'gt'}, function (obj) {
    setState('wled.0.2cf43212d302.ps'/*ID of currently set preset*/,4)
  })

Folgende Dinge werde ich noch hinzufügen:

  • Wecker über den Echo Dot im Zimmer
  • Rolläden runterfahren wenn die Schlafenszeit ansteht

Den Schlaftrainer kann man natürlich auch mit jedem andern RGB/RGBWW etc. Leuchtmittel umsetzen. Egal ob in der Deckenlampe, Tischlampe oder was auch immer Lampe.

WERBUNG

Ich hoffe Euch interessante Ideen gegeben und vielleicht auch zum nachmachen animiert zu haben, dann wünsche ich viel Spaß damit und schreibt mir gerne in die Kommentare.

Aufrufe: 1417

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