Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. OBI Funk-Steckdosenumbau ESP8266 (Generation1 Rund)

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    OBI Funk-Steckdosenumbau ESP8266 (Generation1 Rund)

    This topic has been deleted. Only users with topic management privileges can see it.
    • sissiwup
      sissiwup last edited by

      Alexa ist da 🙂

      Hallo,

      ich habe Alexa mal integriert. Achtung BETA!

      Verwendet wird die ESPALEXA-Bibliothek: https://github.com/Aircoookie/Espalexa

      Alexa erkennt die Steckdose als LED-Stripe:

      Was geht:

      Alexa "Steckdose" an

      Alexa "Steckdose" aus

      Alexa "Steckdose" 1-99 (Steckdose an für 1 bis 99 Minuten)

      Es wird keine Cloud-Anbindung für die Dose, noch Anbindung an ioBroker oder MQTT benötigt.

      Was geht nicht:

      Die Steckdose gibt keine Rückmeldung an Alexa wie Status oder Timer grade stehen.

      Konfiguration:

      alexa?name=Mein Name der Dose <- Umlaute und Sonderzeichen noch nicht getestet!

      alxea?active=1

      Bitte in der Reihenfolge. Wenn ihr komplett alexa ausschalten wollt, dann

      alexa?active=0, dann reboot.

      Nach jeder Änderung müßt ihr natürlich in Alexa nach neuen Geräten suchen lassen!

      609_bildschirmfoto_2018-10-27_um_10.17.03.png

      Für diejenigen die Selbst übersetzen:

      Es ist in der 2.4.x ein Bug: (<2.3.x sollte so funktionieren)
      609_bildschirmfoto_2018-10-23_um_01.02.12.png
      609_bildschirmfoto_2018-10-23_um_01.01.53.png
      609_bildschirmfoto_2018-10-23_um_01.01.46.png
      Die eine Zeile muss in der Datei angepasst werden.

      Wenn ihr das nicht macht: Dann wird immer nur auf AN geschaltet. Nichts anderes geht.

      609_firmware_1_2_2.zip
      609_code_1_2_2.zip

      1 Reply Last reply Reply Quote 0
      • sissiwup
        sissiwup last edited by

        Hallo,

        ich habe folgende Idee und mich würde interessieren was ihr davon haltet:

        Man könnte in der Dose noch 199 weitere Alexa-Namen zulassen.

        Die Dose könnte dann ein Kommando über MQTT oder über Webcall absetzen

        mit dem Funktionsumfang ON/OFF 1-99 oder 0-100 oder 0-255

        Man benötigt dann für die Alexa-Integration keine Cloud mehr.

        Also:

        Alexa Kaffeemaschine an -> Steckdose "Kaffemaschine" bin ich nicht, rufe Kommando auf -> MQTT Kaffemaschine an -> weiter über normalen weg

        Sind 199 Geräte genug? Es gehen halt nur die oben angedachten Kommandos.

        1 Reply Last reply Reply Quote 0
        • M
          meierchen006 last edited by

          Hallo sissiwup,

          Nutze meine OBI Steckdose zum einschalten des Ladegerätes fürs EBike. Ladezeit in der Regel 3 bis 5 Stunden.

          Also 180 bis 300 Minuten, daher reichen für mich die 99 Minuten nicht aus.

          Kann man das anpassen (längere Ladezeit) mit Alexa?

          meierchen006

          1 Reply Last reply Reply Quote 0
          • T
            thobastian last edited by

            Hallo !

            Also ich habe "Hängelampe" ausprobiert, Funktioniert wunderbar.

            Ein Großes DANKE für die Alexa-Integration. Das ist toll!!!

            1 Reply Last reply Reply Quote 0
            • M
              meierchen006 last edited by

              Hallo,

              So habe die Firmware drauf, lasse Alexa App suchen und finde nichts.

              Brauche ich noch einen Skill?

              Ich muss erwähnen dass ich keinen Echo habe sondern nur die Alexa App auf dem Tablet.

              meierchen006

              1 Reply Last reply Reply Quote 0
              • J
                Jan1 last edited by

                Kein Echo, keine Alexa 😉

                1 Reply Last reply Reply Quote 0
                • M
                  meierchen006 last edited by

                  Hallo,

                  Das ist nicht richtig,

                  ich kann meine Bose Soundtouch auch über die App ein und ausschalten lassen.

                  Als welches Gerät muss ich die OBI Steckdose hinzufügen, ich habe unter sonstige gesucht

                  1 Reply Last reply Reply Quote 0
                  • J
                    Jan1 last edited by

                    Oh das ist mir neu, wie hast dann die Bose Soundtouch mit Alexa gekoppelt (gesucht)?

                    In der APP ist die Such ja mittlerweile etwas verwurschtelt aufgebaut, da empfehle ich die Suche direkt über Alexa Webseite, denn da ist immer noch die allgemeine Suche aktiv, die einfach nach allem sucht. Wobei ich es echt nicht glauben kann, dass man kein Echo mehr braucht um Geräte zu koppeln.

                    Deshalb interessiert es mich wirklich wie Du das gemacht hast.

                    1 Reply Last reply Reply Quote 0
                    • M
                      meierchen006 last edited by

                      Hallo,

                      Dazu braucht man einen Bose Skill

                      meierchen006

                      1 Reply Last reply Reply Quote 0
                      • J
                        Jan1 last edited by

                        OK, dann stellt der Skill die Geräte in Alexa bereit. Dann müsste es für die Obi Umbauten wohl auch ein Skill geben, kein Plan ich habe andere Steckdosen mit Tasmota am Laufen. Die brauchen kein Skill, dafür aber ein Echo :lol:

                        1 Reply Last reply Reply Quote 0
                        • M
                          meierchen006 last edited by

                          Hallo,

                          So ist es in den OBI Steckdosen eingestellt entweder als Name obi1 oder obi2.
                          7526_20181027_204158.png

                          So sieht bei meiner Obi1 Steckdose unter ip/espalexa aus
                          7526_20181027_210342.png

                          1 Reply Last reply Reply Quote 0
                          • sissiwup
                            sissiwup last edited by

                            @meierchen006:

                            Hallo,

                            So habe die Firmware drauf, lasse Alexa App suchen und finde nichts.

                            Brauche ich noch einen Skill?

                            Ich muss erwähnen dass ich keinen Echo habe sondern nur die Alexa App auf dem Tablet.

                            meierchen006 `

                            Hi,

                            die Dosen simulieren eine Hue. Aber ich glaube das funktioniert nur mit den Alexa-Geräten, die auch diese steuern können.

                            Das sind wohl zumindest die Echo Dots.

                            Für obi1 / obi2:

                            Starte mal die Dose neu, was sagt sie dann?

                            1 Reply Last reply Reply Quote 0
                            • J
                              Jan1 last edited by

                              Ja mit Hue Emulator geht es nur mit nem Echo, da man die Dose nicht mit der Hue APP verknüpfen kann und dann auch der Skill nicht greift.

                              1 Reply Last reply Reply Quote 0
                              • sissiwup
                                sissiwup last edited by

                                Kleines Update für Alexa:

                                Update der Oberfläche:
                                609_bildschirmfoto_2018-10-28_um_09.05.44.png

                                Integration MQTT:
                                609_bildschirmfoto_2018-10-28_um_09.05.14.png

                                Der Status der Dose wird korrekt an Alexa zurück gemeldet

                                Bugfix:

                                Timer -> ON ging nicht. Ist repariert.

                                Für die Selbstübersetzer:

                                ESPALEXA ist nicht mehr als LIB enthalten sondern die beiden Sourcen sind aktuell enthalten, da doch einige Anpassungen notwendig waren.

                                609_firmware_1_2_2b.zip
                                609_code_1_2_2b.zip

                                1 Reply Last reply Reply Quote 0
                                • M
                                  meierchen006 last edited by

                                  Hallo,

                                  ich habe auch noch eine Fire TV Box mit eingebauter Alexa.

                                  Auch dort werden die Obi Steckdosen nicht gefunden, schade.

                                  Werde mir bei Gelegenheit dann mal einen kleinen Echo Dot Version 3 kaufen, funktioniert es mit dem?

                                  @sissiwup

                                  ich habe die Steckdosen gestern schon mehrfach neu gestartet gehabt.

                                  Jetzt Aktuell mit der Firmware 1.2.2b

                                  Obi1 mit 1.2.2b
                                  7526_obi1.jpg

                                  Obi2 mit 1.2.2b
                                  7526_obi2.jpg

                                  1 Reply Last reply Reply Quote 0
                                  • sissiwup
                                    sissiwup last edited by

                                    @meierchen006:

                                    Hallo,

                                    ich habe auch noch eine Fire TV Box mit eingebauter Alexa.

                                    Auch dort werden die Obi Steckdosen nicht gefunden, schade.

                                    Werde mir bei Gelegenheit dann mal einen kleinen Echo Dot Version 3 kaufen, funktioniert es mit dem? `

                                    > The ha-bridge requires a physical Amazon Echo (Gen1 or 2), Echo Plus, Dot (Gen 1 or 2), Tap, Show, Spot or Google Home or Mini device and does not work with prototype devices built using the Alexa Voice Service e.g. Amazon’s Alexa AVS Sample App and Sam Machin’s AlexaPi. The AVS version does not have any capability for HUE Bridge discovery!

                                    Also noch nicht getestet mit Dot Gen 3.0

                                    1 Reply Last reply Reply Quote 0
                                    • haselchen
                                      haselchen Most Active last edited by

                                      Anderer Weg in Alexa ist die HA-Bridge.

                                      Gerät dort anlegen mit IP Adresse und variablen Name (z.B. Gästezimmer)

                                      Alexa suchen lassen und zack kann man die Steckdose steuern wie man will.

                                      An / Aus / Routinen etc.

                                      1 Reply Last reply Reply Quote 0
                                      • sissiwup
                                        sissiwup last edited by

                                        @haselchen:

                                        Anderer Weg in Alexa ist die HA-Bridge.

                                        Gerät dort anlegen mit IP Adresse und variablen Name (z.B. Gästezimmer)

                                        Alexa suchen lassen und zack kann man die Steckdose steuern wie man will.

                                        An / Aus / Routinen etc. `

                                        Hi,

                                        gute Idee, habe ich auch ausprobiert, siehe dazu auch mein Script im entsprechenden Post.

                                        var anz=0;
                                        
                                        var habridgeURL = "http://192.168.1.13:8080/api/devices"
                                        var ioBrokerURL = "http://192.168.1.13:8087/set/"
                                        
                                        /////////////////////////////////////////// 
                                        function escapeRegExp(str) {
                                          return str.replace(/[\-[]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\><");
                                        }
                                        
                                        function delDevices(from_val,to_val,habridgeURL) {
                                            for (var i=from_val;i<=to_val;i++) {
                                              	var request = require('request');
                                        		request.delete({
                                        				headers: {'content-type': 'application/json'},
                                        				url:     habridgeURL+"/"+i
                                        		}, function(error, response, body) {
                                        			if (error){
                                        				return log(error, 'error');
                                        			}
                                        			log("Del Response: "+JSON.stringify(body));
                                        		}); 
                                            }
                                        }
                                        
                                        function getDevice(val,habridgeURL) {
                                              	var request = require('sync-request');
                                        		var erg = request.get({
                                        				headers: {'content-type': 'application/json'},
                                        				url:     habridgeURL+"/"+val
                                        		}, function(error, response, body) {
                                        			if (error){
                                        				return log(error, 'error');
                                        			}
                                        			log("Get Response: "+body);
                                        			log("GET-NAME:"+JSON.parse(body).name);
                                        		});
                                        }
                                        
                                        function sendrequest(habridgeURL, params,id,devid){
                                            if (devid.length!==0) {  // ID Vorhanden, dh. hole Namen aus ha-bridge
                                              	var request = require('request');
                                        		var erg = request.get({
                                        				headers: {'content-type': 'application/json'},
                                        				url:     habridgeURL+"/"+devid
                                        		}, function(error, response, body) {
                                        			if (error){
                                        				return log(error, 'error');
                                        			}
                                        			// log("Get Response: "+body);
                                        			// log("GET-NAME:"+JSON.parse(body).name);
                                                    var name=JSON.parse(body).name;
                                                    var addurl="";
                                                    if (name===undefined) {
                                                        log("NOT FOUND - "+devid);
                                                        return;  // auskommentieren um nicht gefundene neu anzulegen!  <<<<<<<<<<<<<<<<<<<<<<<<<<<<
                                                        params["id"]=null;
                                                        sendrequest(habridgeURL, params,id,"");
                                                    } else if (name.length>0) {
                                                        params["name"]=name;
                                                        addurl="/"+devid;
                                                    }
                                                    var request = require('request');
                                        		    request.put({
                                        				headers: {'content-type': 'application/json'},
                                        				url:     habridgeURL+addurl,
                                        				body:   params,
                                        				json: true
                                        		    }, function(error, response, body) {
                                        			    if (error){
                                        				    return log(error, 'error');
                                        			    }
                                        			    // log("Update Response: "+JSON.stringify(body));
                                        	//		var regexp = escapeRegExp(ioBrokerURL)+"(.*)\\?value.*";
                                                	    log("update ok - "+devid); 
                                        		    });
                                        		});
                                            } else {
                                                var request = require('request');
                                        		request.post({
                                        				headers: {'content-type': 'application/json'},
                                        				url:     habridgeURL,
                                        				body:   params,
                                        				json: true
                                        		}, function(error, response, body) {
                                        			if (error){
                                        				return log(error, 'error');
                                        			}
                                        			// log("Response: "+JSON.stringify(body));
                                        			var regexp = escapeRegExp(ioBrokerURL)+"(.*)\\?value.*";
                                                    var patt = new RegExp(regexp);
                                                    var result = patt.exec(body[0].onUrl);
                                                    if (result!==null) {
                                        			    log("ID für "+ decodeURI(result[1]) +" erhalten: " + body[0].id); 
                                        			    if (!isNaN(body[0].id)) extendObject(decodeURI(result[1]), {common: {habridgeid: body[0].id}});
                                        			} else {
                                        			    log("update nok"); 
                                        			}
                                        		});
                                            }
                                        }
                                        
                                        function saveData(id,raum,devname,onurl,offurl,dimurl) {
                                        	// log("Objekt: "+id);
                                        	devid="";
                                        	var params = {};
                                        	if (isNaN((getObject(id).common.habridgeid))){
                                        	    devid="";
                                            	log("++++++++ Neu "+id+devid+" ");
                                        	} else {
                                        	    devid=getObject(id).common.habridgeid;    
                                            	log("======== Update "+id+"-"+devid+"-");
                                        	}
                                        	    // devid="";  // add trotz ID
                                            	idu=encodeURI(id);
                                            	if (devid.length>0) {
                                            	    params["id"]=devid;
                                            	} 
                                            	params["name"]= devname;
                                            	params["deviceType"]= "switch";
                                            	params["onUrl"]= "[{\"item\":\""+ioBrokerURL+idu+"?value="+onurl+"\",\"type\":\"httpDevice\"}]";
                                            	if (offurl.length>0) params["offUrl"]= "[{\"item\":\""+ioBrokerURL+idu+"?value="+offurl+"\",\"type\":\"httpDevice\"}]";
                                            	if (dimurl.length>0) params["dimUrl"]= "[{\"item\":\""+ioBrokerURL+idu+"?value="+dimurl+"\",\"type\":\"httpDevice\"}]";
                                            	params["description"]= "\""+raum+"\"";
                                            	params["comments"]= id;
                                        
                                            	sendrequest(habridgeURL,params,id,devid);
                                        
                                        }
                                        
                                        function callme(id,i,b,onurl,offurl,dimurl) {
                                               if (getObject(id) && anz<500) {
                                                var devname=getObject(id).common.name;
                                                var channel=getObject(id).common.name.split(":");
                                                var idteile=id.split(".");
                                                var dev="";
                                                var dp = getObject(id,"rooms");
                                                var raum=dp.enumNames;
                                                if (idteile.length>2) {
                                                    dev=idteile[2];
                                                }
                                                if (raum.length===0) {
                                                    raum="-"
                                                }
                                              if (b===false || raum!="-") { 
                                               anz=anz+1;
                                               // log( '"'+id+'","'+channel[0]+'","'+devname+'","'+raum+'","'+dev+'"'+String.fromCharCode(10));
                                               saveData(id,raum,devname,onurl,offurl,dimurl);
                                              }
                                            } 
                                        }
                                        
                                        // callme 
                                        //      id = Geraeteid
                                        //      i  = Nummer (nicht verwendet)
                                        //      b  = Nur Geräte mit Raum (true/false)
                                        //      onurl = Wert für ON
                                        //      offurl = Wert für OFF
                                        //      dimurl = Wert für DIM ("${intensity.percent}")
                                        
                                        //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                                        
                                        //var states = $('broadlink2.0.*.L.*').each(function(id,i) { callme(id,i,false,"true","false",""); });
                                        //var states = $('broadlink2.0.States.*').each(function(id,i) { callme(id,i,false,"true","false",""); });
                                        //var states = $('broadlink2.0.Scenes.*').each(function(id,i) { callme(id,i,false,"true","false",""); });
                                        //var states = $('scene.0.*').each(function(id,i) { callme(id,i,false,"true","false",""); });
                                        //var states = $('hm-rpc.0.*.SET*').each(function(id,i) { callme(id,i,true,"true","false",""); });
                                        var states = $('hm-rpc.0.*.1.LEVEL').each(function(id,i) { callme(id,i,true,"100","0","${intensity.percent}"); });
                                        //var states = $('hm-rpc.0.LEQ1023360.1.LEVEL').each(function(id,i) { callme(id,i,true,"100","0","${intensity.percent}"); });   
                                        
                                        //delDevices(25,200,habridgeURL);
                                        //getDevice(25,habridgeURL);
                                        
                                        1 Reply Last reply Reply Quote 0
                                        • T
                                          thobastian last edited by

                                          Also meine Obischalter schalten sich immer noch an, wann sie möchten. Und zwar beide gleichzeitig. Das ist echt komisch.

                                          Ich habe 2 Obischalter. Sie werden beide über ein Script im IOBroker direkt angesteuert (über CMD).

                                          Wenn auf der Homematic-FB eine Taste gedrückt wird, starten die Obischalter.

                                          Aber auch erst dann.

                                          Wenn das Script im IOBroker aktivert worden wäre, hätte ich es im Log gesehen. Dort war nichts zu sehen. Debug-Modus ist für das Script an.

                                          Jetzt weiss ich nicht mehr weiter.

                                          Hat jemand noch eine Idee, bevor ich die Schalter auf den Müll werfe?

                                          1 Reply Last reply Reply Quote 0
                                          • sissiwup
                                            sissiwup last edited by

                                            @thobastian:

                                            Also meine Obischalter schalten sich immer noch an, wann sie möchten. Und zwar beide gleichzeitig. Das ist echt komisch.

                                            Ich habe 2 Obischalter. Sie werden beide über ein Script im IOBroker direkt angesteuert (über CMD).

                                            Wenn auf der Homematic-FB eine Taste gedrückt wird, starten die Obischalter.

                                            Aber auch erst dann.

                                            Wenn das Script im IOBroker aktivert worden wäre, hätte ich es im Log gesehen. Dort war nichts zu sehen. Debug-Modus ist für das Script an.

                                            Jetzt weiss ich nicht mehr weiter.

                                            Hat jemand noch eine Idee, bevor ich die Schalter auf den Müll werfe? `
                                            Hast du die aktuelle Version drauf?

                                            Was sagen die Loggs der Dose?

                                            Zeig mal dein Script.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            439
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            esp8266 obi steckdose
                                            37
                                            464
                                            141667
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo