Gibt es keine Steuerung? Die Funktion ist bei Weitem nicht die gleiche!
Beiträge von horkatz
VPN/Proxy erkannt
Es scheint, dass Sie einen VPN- oder Proxy-Dienst verwenden. Bitte beachten Sie, dass die Nutzung eines solchen Dienstes die Funktionalität dieser Webseite einschränken kann.
-
-
Neben den oben beschriebenen Klebepads gibt es auch andere, wo ein Kabelbinder durchgezogen wird. Gemeinsam haben sie eins, einen guten Kleber. Dieser lässt sich, je nach Untergrund, später nicht rückstandsfrei entfernen. Auf glatten Fliesen sollte es aber kein Problem sein, mit Schaber und Aceton dürfte es gehen.
-
Ich nutze schon länger dieses Script:
Code
Alles anzeigen/** * This script lets you use your Gen2 device as a gateway between Shelly BLU button1 and other Shelly devices (no matter Gen1 or Gen2) * by sending local requests by their local IP APIs. * * What you should change before using it: * > bluButtonAddress -> You should put the mac address of your blu button here. * This script will help you find the mac address: https://github.com/ALLTERCO/shelly-script-examples/blob/main/ble-shelly-scanner.js * * > actions -> You should put the urls here to be executed at the specified event. Urls that shoudl be called on single/short push * of the button, must be placed in the singlePush object. This applies to the double and triple push as well. Example below. * * Limitations: * > At the moment there is a limit of 5 RPC calls at the same time and because of this, the script will execute every 3 urls with a 1 second delay. * Limitations can be check here: https://shelly-api-docs.shelly.cloud/gen2/Scripts/ShellyScriptLanguageFeatures#resource-limits * * > The order of the execution of the urls can't be guaranteed */ /** =============================== CHANGE HERE =============================== */ let CONFIG = { bluButtonAddress: "1a:b2:c3:d4:55:ab", //the mac address of shelly blu button1 that will trigger the actions actions: { //urls to be called on a event //when adding urls you must separate them with commas and put them in quotation marks singlePush: [ //urls that will be executed at singlePush event from the blu button1 "http://127.0.0.1/relay/0?turn=on" ], doublePush: [ //urls that will be executed at doublePush event from the blu button1 ], triplePush: [ //urls that will be executed at triplePush event from the blu button1 ], longPush: [ //urls that will be executed at longPush event from the blu button1 } }; /** =============================== STOP CHANGING HERE =============================== */ let urlsPerCall = 3; let urlsQueue = []; let callsCounter = 0; let ALLTERCO_MFD_ID_STR = "0ba9"; 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 = {}; 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; }, }; function callQueue() { if(callsCounter < 6 - urlsPerCall) { for(let i = 0; i < urlsPerCall && i < urlsQueue.length; i++) { let url = urlsQueue.splice(0, 1)[0]; callsCounter++; Shelly.call("HTTP.GET", { url: url, timeout: 5 }, function(_, error_code, _, data) { if(error_code !== 0) { console.log("Calling", data.url, "failed"); } else { console.log("Calling", data.url, "successed"); } callsCounter--; }, { url: url } ); } } //if there are more urls in the queue if(urlsQueue.length > 0) { Timer.set( 1000, //the delay false, function() { callQueue(); } ); } } let lastPacketId = 0x100; function bleScanCallback(event, result) { //exit if the call is not for a received result if (event !== BLE.Scanner.SCAN_RESULT) { return; } //exit if the data is not coming from a Shelly Blu button1 and if the mac address doesn't match if ( typeof result.local_name === "undefined" || typeof result.addr === "undefined" || result.local_name.indexOf("SBBT") !== 0 || result.addr !== CONFIG.bluButtonAddress ) { 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"]; //getting and execuing the action let actionType = ["", "singlePush", "doublePush", "triplePush", "longPush"][receivedData["Button"]]; let actionUrls = CONFIG.actions[actionType]; //exit if the event doesn't exist in the config if(typeof actionType === "undefined") { console.log("Unknown event type in the config"); return; } //save all urls into the queue for the current event for(let i in actionUrls) { urlsQueue.push(actionUrls[i]); } callQueue(); } function bleScan() { //check whether the bluethooth is enabled let bleConfig = Shelly.getComponentConfig("ble"); //exit if the bluetooth is not enabled if(bleConfig.enable === false) { console.log("BLE is not enabled"); return; } //start the scanner let bleScanner = BLE.Scanner.Start({ duration_ms: BLE.Scanner.INFINITE_SCAN, active: true }); //exist if the scanner can not be started if(bleScanner === false) { console.log("Error when starting the BLE scanner"); return; } BLE.Scanner.Subscribe(bleScanCallback); console.log("BLE is successfully started"); } function init() { //exit if there isn't a config if(typeof CONFIG === "undefined") { console.log("Can't read the config"); return; } //exit if there isn't a blu button address if(typeof CONFIG.bluButtonAddress !== "string") { console.log("Error with the Shelly BLU button1's address"); return; } //exit if there isn't action object if(typeof CONFIG.actions === "undefined") { console.log("Can't find the actions object in the config"); return; } //start the ble scan bleScan(); } //init the script init();Ich habe es jetzt etwas modifiziert, MAC-Adresse frei erfunden, und nur den Singlepush übrig gelassen. Du müsstest die MAC-Adresse an deinen Button anpassen (wie oben mit Kleinbuchstaben).
Wenn der Shelly wirklich im Rollladenmodus betrieben wird, dann gelten andere http-requests, findest du aber auch hier im Forum. Scheint mir aber ein merkwürdiges Tor zu sein, oder hast du den Shelly am Motor des Tors angeklemmt? Das hatten wir vor ein paar Tagen schon mal, ist völlig falsch!
Das Script läuft auch mit der aktuellen Firmware.
Wichtig war es früher, dass im Shelly das Bluetooth - Gateway nicht aktiviert ist, ob das mit der aktuellen Firmware noch so ist, weiß ich nicht. -
Welche Komponenten hast du denn genau? Ab Gen3 brauchst du kein Script mehr, wie schon geschrieben wurde. Du kannst den Shelly direkt als BLE-Observer einrichten und mit dem Button über Aktionen steuern.
-
Dafür braucht man kein Script. Ein AutoTimerOff mit 5s reicht.
-
Wäre bei mir schwieriger, habe offene Holztreppen. Als Verbindungsleitung würde ich mal nach 7-adriger Fahrzeugleitung suchen, ist relativ günstig, die Adern sind bunt, für den gemeinsamen Plus kannst du auch mehrere Leitungen parallel klemmen.
-
OT: Danke Thomas, da gibt es nichts zu verzeihen, ich freue mich, dass du es schon gezeichnet hast. Spart mir die Arbeit
. Da ich 12 Jahre jünger bin als du, muss ich noch etwas arbeiten, bis ich auch zum vielbeschäftigten Rentner werde
. Ich hoffe natürlich, dass die Gesundheit mitspielt und ich dann auch noch fit bin... -
In diesem speziellen Fall hier (Lüfter soll 24/7 laufen) reicht auch ein Relais mit 2 Wechslern. Die beiden Wechsler werden so angeschlossen, wie der Stufenschalter, allerdings gibt es keine 0-Stellung. Dann würde ein Shelly mit einem Relais reichen...
Kann nachher was zeichnen, wenn gewünscht, gerade endet die Mittagspause
. -
Ohne Alu-Profil würde ich hier auch nicht arbeiten. Treppen sind stark beanspruchte Bauteile. Überhaupt ist hier der mechanische Aufwand recht hoch, damit es nachher gut aussieht und die Leitungen nicht sichtbar sind. Bei 13.5m Länge würde ich auch mindestens 2x einspeisen, evtl sogar an jeder Stufe, die Leitungen könnten dann hinter der Wange verschwinden...
Ist aber ein Riesenaufwand...
-
Den passenden Schaltplan findest du hier:
https://shelly-forum.com/file-download/45247/
Ob es von der Leistung passt, musst du anhand der Daten des Strip und der Gesamtlänge ausrechnen. Der "Spannungswandler" nennt sich Netzteil, auch dieses muss zu der benötigten Leistung passen, bzw. etwas Reserve haben. Persönlich nutze ich Meanwell HLG...Vor allem würde ich untertags und wenn man auf Weisschaltet alles hell Leuchten lassen und nachts sollten zb nur grün ganz leicht Leuchten lässt sich sowas mit eine Skript bewerkstelligen?
Mit einem Script ziemlich sicher, vermutlich aber auch schon mit Bordmitteln. Dazu fehlen aber ein paar Infos. Gibt es einen Taster, mit dem du die Strips schaltest, oder sollen sie einfach tagsüber weiß leuchten und nachts grün, ohne Bedienung von außen?
-
Habe ich heute auch zufällig auf der Shelly Seite gesehen, kann man schon kaufen:
https://www.shelly.com/de/products/sh…-decoupler-230v
Interessant wäre auch ein Koppler, um die speziellen Eltako-Schaltungen, die mit 8V Wechselspannung oder 12/24V Gleichspannung arbeiten, an den Eingang eines herkömmlichen Shelly (PRO) anzupassen. Hier im Forum tauchten ja schon öfter Schaltungen auf, wo die Taster mit Klingeldraht verdrahtet sind, weil die verbauten Stromstoßschalter oder Rollladensteuerungen mit Kleinspannung angesteuert wurden. -
Aber Gen 4 müssen die Geräte sein oder?
Nein, die direkte Kommunikation können schon die ganz alten Gen1 Shellys. Diese wirst du aber nirgendwo mehr finden. Auch die Plus Serie wurde schon in weiten Teilen von Gen3 / Gen4 abgelöst. Für meinen Geschmack haben die Gen3 derzeit das beste Preis/Leistungsverhältnis. Gen4 kann zwar noch mehr, es sind aber alles Features, die ich bei mir nicht brauche. Bei einem bekannten Händler kostet z.B. ein Shelly 1 Gen 3 derzeit 13,79€, geht man auf Gen4, dann sind es bereits 20,58€.
Wenn du den Schalter durch einen Taster ersetzt (oder umbaust, geht bei vielen Herstellern durch Hinzufügen einer kleinen Feder), dann kannst du mit den verfügbaren Tastendrücken (Single, Double, Triple und Longpush) mit einem Eingang 4 verschiedene Aktionen aufrufen. Beim I4 kannst du auf diese Weise 16 Aktionen aufrufen (bei entsprechender Beschaltung). -
Es muss nicht unbedingt ein Shelly 1 Gen 4 sein, du schaltest an der Stelle ja nichts. Entweder ein I4 (da bleiben 3 Eingänge ungenutzt), oder ein 1 Mini (da bleibt der Ausgang ungenutzt). Du brauchst aber Phase und Neutralleiter, 2 Drähte sind mindestens da, ob ein Neutralleiter dabei ist, musst du prüfen. Schlimmstenfalls muss in der Abzweigdose umgeklemmt werden...
-
Habe gelesen das die neuen Produkte nicht auf LAN W-LAN angewiesen sind
Das stimmt so nicht. Du brauchst nicht unbedingt einen Router, trotzdem ein WLAN. Dazu kannst du das WLAN des einen Shelly nutzen (Accesspoint mit Passwort einrichten), der andere Shelly wird dann mit diesem WLAN verbunden und es kann über Aktionen geschaltet werden. Die Variante mit dem Router geht natürlich auch und ist noch einfacher.
Nachteil beider Methoden, ohne Zugriff auf einen Zeitserver sind die zeitgesteuerten Funktionen (Schedules) nicht möglich. Evtl. kann der Router als Zeitserver dienen, dann müsste aber dort die Zeit manuell eingestellt werden. Kenne keinen Router, wo das geht.
Wenn es aber nur um das Schalten geht, da reichen 2 Shellys... -
-
Und auf dem Foto sieht man dann auch, dass der Shelly parallel zum Motor geklemmt ist, FALSCH!
Bitte nicht so lassen!
Im von funkenwerner verlinkten Handbuch sieht man auch, dass der 2PM der falsche Shelly ist, du brauchst einen Shelly 1 (Gen3 oder Gen4).
-
Normalerweise werden Torantriebe mit integrierter Steuerung verkauft. Du hast quasi nur einen Rollladenmotor, der aber eine Garage verschließt. Vermutlich gibt es zu deinem Motor auch eine passende Steuerung, dort könntest du dann mit dem passenden Shelly ansetzen. Das, was du da machst ist sehr gefährlich.
-
Wie hast du das Tor denn angeschlossen? Kann es sein, dass du parallel zur vorhandenen Steuerung direkt den Motor ansteuerst? Das wäre dann grundfalsch. Der 2PM ist vermutlich auch die falsche Wahl, der funktioniert nur an wenigen Antrieben, dort müssen die Eingänge mit GND - Potential arbeiten und der Shelly muss mit 24VDC oder mehr aus dem Antrieb oder einem separaten Netzteil versorgt werden...
Nachtrag: Schicke mal ein Foto von deinem Anschluss und den Klemmen des Antriebs.
-
Die untere Einstellung betrifft nur die Spannungswiederkehr...
Nachtrag: Wie hast du den Shelly denn angeschlossen? Kann es sein, dass du mit dem Schalter dem Shelly die Spannung wegnimmst, wenn du ausschaltest?
Dann hast du es schlicht und einfach falsch angeschlossen... -
Du musst auf "Wechselschalter" umstellen.