Das mit dem direkten MQTT soll ja in einer der nächsten FW kommen
Beiträge von Whity
-
-
Ja, das ist so richtig
-
Nein, habe keinen. Aber ja diese Vorbereitung war von Anfang an schon da drinnen
-
-
Für die BLE Buttons benutze ich das Script, der Shelly ist per MQTT Adapter eingebunden. im IOB dann per Blockly das alles auseinander nehmen
Code
Alles anzeigen// v0.1 let BTHOME_SVC_ID_STR = "fcd2"; let uint8 = 0; let int8 = 1; let uint16 = 2; let int16 = 3; let uint24 = 4; let int24 = 5; let BTH = {}; let SHELLY_ID = undefined; BTH[0x00] = { n: "pid", t: uint8 }; BTH[0x01] = { n: "Battery", t: uint8, u: "%" }; BTH[0x05] = { n: "Illuminance", t: uint24, f: 0.01 }; BTH[0x1a] = { n: "Door", t: uint8 }; BTH[0x20] = { n: "Moisture", t: uint8 }; BTH[0x2d] = { n: "Window", t: uint8 }; BTH[0x3a] = { n: "Button", t: uint8 }; function getByteSize(type) { if (type === uint8 || type === int8) return 1; if (type === uint16 || type === int16) return 2; if (type === uint24 || type === int24) return 3; //impossible as advertisements are much smaller; return 255; } let BTHomeDecoder = { utoi: function (num, bitsz) { let mask = 1 << (bitsz - 1); return num & mask ? num - (1 << bitsz) : num; }, getUInt8: function (buffer) { return buffer.at(0); }, getInt8: function (buffer) { return this.utoi(this.getUInt8(buffer), 8); }, getUInt16LE: function (buffer) { return 0xffff & ((buffer.at(1) << 8) | buffer.at(0)); }, getInt16LE: function (buffer) { return this.utoi(this.getUInt16LE(buffer), 16); }, getUInt24LE: function (buffer) { return ( 0x00ffffff & ((buffer.at(2) << 16) | (buffer.at(1) << 8) | buffer.at(0)) ); }, getInt24LE: function (buffer) { return this.utoi(this.getUInt24LE(buffer), 24); }, getBufValue: function (type, buffer) { if (buffer.length < getByteSize(type)) return null; let res = null; if (type === uint8) res = this.getUInt8(buffer); if (type === int8) res = this.getInt8(buffer); if (type === uint16) res = this.getUInt16LE(buffer); if (type === int16) res = this.getInt16LE(buffer); if (type === uint24) res = this.getUInt24LE(buffer); if (type === int24) res = this.getInt24LE(buffer); return res; }, unpack: function (buffer) { //beacons might not provide BTH service data if (typeof buffer !== "string" || buffer.length === 0) return null; let result = {}; let _dib = buffer.at(0); result["encryption"] = _dib & 0x1 ? true : false; result["BTHome_version"] = _dib >> 5; if (result["BTHome_version"] !== 2) return null; //can not handle encrypted data if (result["encryption"]) return result; buffer = buffer.slice(1); let _bth; let _value; while (buffer.length > 0) { _bth = BTH[buffer.at(0)]; if (typeof _bth === "undefined") { console.log("BTH: unknown type"); break; } buffer = buffer.slice(1); _value = this.getBufValue(_bth.t, buffer); if (_value === null) break; if (typeof _bth.f !== "undefined") _value = _value * _bth.f; result[_bth.n] = _value; buffer = buffer.slice(getByteSize(_bth.t)); } return result; }, }; let lastPacketId = 0x100; function bleScanCallback(event, result) { if (event !== BLE.Scanner.SCAN_RESULT) { return; } if (typeof result.local_name === "undefined" || typeof result.addr === "undefined" || result.local_name.indexOf("SBBT") !== 0) { return; } let servData = result.service_data; // exit if service data is null/device is encrypted if (servData === null || typeof servData === "undefined" || typeof servData[BTHOME_SVC_ID_STR] === "undefined") { console.log("Can't handle encrypted devices"); return; } let receivedData = BTHomeDecoder.unpack(servData[BTHOME_SVC_ID_STR]); // exit if unpacked data is null or the device is encrypted if (receivedData === null || typeof receivedData === "undefined" || receivedData["encryption"]) { console.log("Can't handle encrypted devices"); return; } // exit if the event is duplicated if (lastPacketId === receivedData.pid) { return; } lastPacketId = receivedData["pid"]; let message = { receiver: SHELLY_ID, sender: { type: result.local_name, mac: result.addr }, event: receivedData }; console.log("Publishing " + JSON.stringify(message)); if (MQTT.isConnected()) { MQTT.publish("shellies/ble", JSON.stringify(message)); } } function bleScan() { let bleScanner = BLE.Scanner.Start({ duration_ms: BLE.Scanner.INFINITE_SCAN, active: true }); if (bleScanner === false) { console.log("Error when starting the BLE scanner"); return; } BLE.Scanner.Subscribe(bleScanCallback); console.log("BLE is successfully started"); } Shelly.call("Mqtt.GetConfig", "", function (res, err_code, err_msg, ud) { SHELLY_ID = res["topic_prefix"]; }); // Check for BLE config and print a message if BLE is not enabled on the device let bleConfig = Shelly.getComponentConfig('ble'); if (bleConfig.enable) { bleScan(); }
-
-
Moin,
solange beide im gleichen WLAN/LAN hängen kannst du dieses doch einfach über ein Webhook lösen, WebUI aufrufen, falls das Relais des Pro1 nicht mit anziehen soll wenn dessen Eingang kommt, diesen auf detached umstellen.
dann beim Eingang:
und das ausfüllen:
Script nicht benötigt
-
nachdem er Strom bekommt, obwohl bei beiden Kanälen "Action Power on" auf OFF steht.
Ich habe jetzt zwar keinen Plus2PM hier zur Hand, aber beim 2.5er hieß im Covermode Action Power "open", "close" und "stop" im WebUI, würde mich jetzt verwundern wenn Sie das bei einem Plus2PM geändert haben.
Wenn er im Relaismodus ist, heißt es natürlich richtigerweise "on", "off" und "last mode".
Was aber natürlich nicht das anziehen des Relais erklärt.
-
Herzlichen Glückwunsch an alle Gewinner 😉
-
Moin,
Da Sie am gleichen FI hängen ist es auch der gleiche Nullleiter. Da sie aber an mehreren Sicherungen hängen, können dort auch unterschiedliche Phasen im Spiel sein. Dein befragter Schalter mit den 2 Abgängen auf der einen Seite heißt nur das dort 2 Kabel zu unterschiedlichen Stellen gehen. Wenn das dein Garagenlicht ist mit 2 Lampen geht zu jeder Lampe ein eigenes Kabel
-
Update für die Blue Buttons wird doch über die BLE debug App gemacht.
-
Und die Smart Control App soll wohl morgen ihren Beta Status verlieren.
-
Es wurde definitiv schon bekannt gegeben, das der Fehler morgen gefixt sein soll. Es wurde aber auch bekannt gegeben das die fehlenden Daten nicht wieder hergestellt werden können
-
Der Leak wurde sofort wieder eingestellt, dadurch atm keine weiteren Informationen. Außer das unserer Admin hier ihn schon in der Hand hat
-
aus den Einstellungen vom Shelly Adapter den Benutzer und Passwort unter allgemein löschen
zum anderen im Shelly über IP im Browser zugreifen und :
kommt jetzt auf die Version die auf dem Shelly ist drauf an, könnten auch weniger Möglichkeiten sein, aber alle anhaken.
Danach MQTT Passwort neu eingeben, speichen, Shelly neustarten
-
Zur Info auf Facebook so halb gepostet bzw. über eine schwedische Seite auch schon geleakt…..in 2 Wochen kommt der Blue Door Window raus
-
Grün aufleuchten der Objekte heißt nur das Daten empfangen wurden und der Dazenpunkt aktualisiert wurde, kannst du über den Switch den 1PM mit IOB schalten?
Ansonsten mal die Shellyinstanz auf debug umstellen vom loglevel und sich das log anschauen.
-
Wenn es die Cloud betrifft, bitte ein Ticket bei Hersteller machen.
-
Devil der EM ist ein Gen1 Gerät, geht das da auch unter KVM?
-
Das wird sicherlich vielleicht möglich sein, aber eigentlich wie Korken schon schreibt, sollte man mit Alias arbeiten, dann hat man diese Sorgen nicht. Gerade wenn das System größer wird und aufeinmal ein Wechsel des Systems macht.