eine Lampe von Alexa
Was ist das? Versuche bitte etwas präziser zu formulieren.
Ist das eine Lampe, welche du auch per Amazon Echo steuerst? Wenn nicht ???
Wegen i4 Konfiguration schaue ich mal ...
eine Lampe von Alexa
Was ist das? Versuche bitte etwas präziser zu formulieren.
Ist das eine Lampe, welche du auch per Amazon Echo steuerst? Wenn nicht ???
Wegen i4 Konfiguration schaue ich mal ...
The PIR Sensor should work on an input of the i4 if the sensor switches potential-free. You then have to connect the sensor like a button.
Es gibt Möglichkeiten zum debuggen. Das gelingt mit geeigneter Skriptstruktur/Funktionenzusammenstellung und der Konsolen-Eingabezeile.
Zu deinen Fragen wäre das von dir genutzte Skript hilfreich. Ohne dieses können keine Skriptfragen beantwortet werden.
Das Skript ist dafür gemacht, auf demselben Gerät (hier Shelly Plus 1 mit AddOn), Temperaturen zu messen und ein anderes Gerät zum schalten zu beauftragen. Die URLs zeigen, dass das andere Gerät ein Shelly der ersten Generation sein soll.
Da dies nicht gut zu deinem einzig eingesetzten Gerät passt, erscheint es mir zweckmäßig, dafür die originären Schaltanweisungen zu verwenden.
Ersetze also bitte die vorhandenen Schaltanweisungen wie
Shelly.call("http.get", {url:'http://127.0.0.1/relay/' + JSON.stringify(Config.relay) + '?turn=off'});
print('Relay(', Config.relay, ') off. Kamin temp <= ', Config.temp_min);
durch folgende. Ob dies helfen wird, weiß ich nicht. Es ist aber deinem Einsatzzweck angemessen, da hierfür kein HTTP GET gebraucht wird. Zunächst ohne eine Ausgabe.
Shelly.call("Switch.Set", {id:0, on:false}); // schaltet den Ausgang aus, zum einschalten on:true verwenden
Die obige print() Anweisung tut nur so, als ob geschaltet wurde, weil sich diese Mitteilung nicht auf eine Antwort stützt. Dafür ist eine callback Funktion zu nutzen. Nun die komplette Anweisung hierfür.
Shelly.call("Switch.Set", {id:0, on:false},
function (result, errcode, errmsg) { // anonyme Funktion als Parameter
if(errcode!==0) print("Fehler bei ausschalten ", errcode, ", ", errmsg);
else print(JSON.stringify(result), "\nAusgang ausgeschaltet");
}
);
Oder du verwendest einfach zwei Funktionen switchOff() und switchOn() dafür, was ich hiermit empfehle. Diese kannst du einfach aufrufen lassen und auch per Eingabezeile testen.
function switchOn() {
Shelly.call("Switch.Set", {id:0, on:true},
function (result, errcode, errmsg) {
if(errcode!==0) print("Fehler bei einschalten ", errcode, ", ", errmsg);
else print(JSON.stringify(result), "\nAusgang eingeschaltet");
}
);
}
function switchOff() {
Shelly.call("Switch.Set", {id:0, on:false},
function (result, errcode, errmsg) {
if(errcode!==0) print("Fehler bei ausschalten ", errcode, ", ", errmsg);
else print(JSON.stringify(result), "\nAusgang ausgeschaltet");
}
);
}
Alles anzeigen
Damit erhältst du bei Nichterfolg des Schaltens wie auch bei Erfolg passende Ausgaben, die sich nicht auf Vermutungen stützen.
Wenn du solches besser verstehen willst und Muße hast, sieh dir gelegentlich meine Skripteinführung an! Bisher existieren Teil 1 bis Teil 3.
Config.relay brauchst du nicht, weil der Plus 1 nur einen Ausgang besitzt. Wenn du unbedingt an Config.relay festhalten willst, setze diese Komponente wie folgt ein.
Auch kannst du beide obige, von mir bereitgestellte Funktionen durch eine parametrierte Funktion ersetzen.
function doSwitch(on) {
Shelly.call("Switch.Set", {id:0, on:on},
function (result, errcode, errmsg) {
if(errcode!==0) print("Fehler bei " + (on ? "ein" : "aus") + "schalten ", errcode, ", ", errmsg);
else print(JSON.stringify(result), "\nAusgang " + (on ? "ein" : "aus") + "geschaltet");
}
);
}
Diese rufst du zum einschalten mit doSwitch(true) und zum ausschalten mit doSwitch(false) auf. So täte ich es.
Der Kreativität sind keine Grenzen gesetzt. ![]()
Du kannst auch einen zweiten Parameter für die Ausgabe nutzen, wozu aber im Aufruf von Shelly.call() ein vierter Parameter und im Kopf der anonymen Funktion ebenfalls ein vierter Parameter erforderlich sind.
function doSwitch(on, msg) {
Shelly.call("Switch.Set", {id:0, on:on},
function (result, errcode, errmsg, text) {
if(errcode!==0) print("Fehler bei " + (on ? "ein" : "aus") + "schalten ", errcode, ", ", errmsg);
else print(JSON.stringify(result), "\nAusgang " + (on ? "ein" : "aus") + "geschaltet, " + text);
}, msg
);
}
Damit kannst du bspw. zum ausschalten folgenden Aufruf nutzen. Zuerst dein Codestück.
if (temp_kamin<= Config.temp_min) {
Shelly.call("http.get", {url:'http://127.0.0.1/relay/' + JSON.stringify(Config.relay) + '?turn=off'});
print('Relay(', Config.relay, ') off. Kamin temp <= ', Config.temp_min);
}
// ersetzen durch:
if (temp_kamin<= Config.temp_min) doSwitch(false, 'Relay(0) off. Kamin temp <= ' + Config.temp_min);
Die anderen Schaltaufträge können ebenso kurz gestaltet werden, wodurch auch das gesamte Skript kürzer, einfacher, leichter pflegbar und überschaubarer wird. ![]()
In der Visualisierung würde ich mir wünschen, dass es den Rollos gleicht. (Mit % der Stellung)
Das gelänge zwar mit einem Skript und einem Browser, du stellst dir aber vermutlich das gleiche Design wie bei den Rollos (Web UI) vor.
Vermutlich gelingt so etwas mit einem Shelly der dritten Generation und sog. Virtual Components. Damit habe ich aber bisher keine Erfahrung
Eine vermutlich ungewöhnliche Idee:
Schalter im Wohnzimmer belassen, Shelly an der Wohnzimmerlampe montieren.
Der Shelly wird dann per Schalter eingeschaltet und schaltet die Lampe ein (auf on nach booten konfigurieren).
Wenn die Lampe und damit der Shelly eingeschaltet ist, kann per Button aus- und wieder eingeschaltet werden.
Nur das Einschalten per Button gelingt dann nicht, wenn der Schalter auf Aus steht, was dich evtl. nicht stört.
Ich kann aber nicht einschätzen, ob das relativ häufige Einschalten des Shelly diesen schneller altern lässt und wie wirksam eine solche Alterungsbeschleunigung wäre.
Edit:
Eine kleine Irritation ist allerdings dabei möglich. Wenn die Wohnzimmerlampe aus ist, der Schalter auf Ein steht und jemand die Lampe per Schalter einschalten will, muss er/sie den Schalter auf Aus und danach auf Ein drücken.
Ja, das geht selbstverständlich und ist ohne weitere Eingriffe nutzbar.
Kleiner Nachteil: Du musst den Akku im Button gelegentlich aufladen.
Einen mir überlassenen Blu Button bekam ich nicht zum arbeiten. Ein solcher mit Knopfbatterie ginge vermutlich auch.
Dein Schalter 1 hat aber auch keinen N Leiter
Berechtigter Einwand. Wenn du statt der Schalter solche Buttons einsetzt, kannst du die Schalter überbrücken und den jeweiligen Shelly direkt an der Lampe montieren.
Dann hoffe ich mal, dass ihr nicht noch eine KI wie ChatGPT einsetzen wollt.
Scherz beiseite, ist eine S7 für einen Torantrieb nicht überdimensioniert, falls die S7 ausschließlich dafür eingesetzt wird?
Ich habe keine S7 und kenne die verschiedenen Ausbaumodelle nicht, weiß aber dass in solchen kleinen Anwendungen eine SPS zumeist eher eine Kanone zum Spatzenschießen ist. ![]()
Die Endabschaltung müsste auch erkennbar sein, wenn, zwecks erhöhter Sicherheit, die Endschalter wie in #20 angeschlossen werden.
Die Auswertung:
Wenn input 0 Wert = input 1 Wert und Antrieb ist eingeschaltet, dann hat Endschalter abgeschaltet.
Bisher nahm ich an, dass der Plus 2PM ausschließlich dann die geschaltete Stromstärke messen kann, wenn er mit 110V~ bis 240V~ betrieben wird.
Nun bin ich verunsichert, weil im Shop die Beschreibung und Datenblatt so tun, als könne er dies auch bei 24V Gleichspannungsversorgung.
Ich kann wegen Abwesenheit nicht selbst testen.
Würdest du bitte diesen Sachverhalt klären?
Sorry, ich habe viel gelesen und weiß nicht mehr, wo dbzl. was zu finden ist.
Edit: Ich fand inzwischen, dass eine Strommessung bei 24V= nicht möglich sei. Dann ist das Datenblatt aber unvollständig.
Wozu soll denn ein Shelly Plus 2PM Gleichstrom messen?
Um feststellen zu können, wenn ein Hindernis die Torfahrt behindert, also der Motor ein größeres Drehmoment aufbringt?
Dazu habe ich von dir bisher nichts gelesen, auch wenn dies durchaus zweckmäßig erscheint.
Du kannst, bspw. die Endschalterlösung nach thgoebel verwendend, eine Plus Uni mit angesteuerten Relais, ebenfalls bspw. nach Thomas, durchaus dafür einsetzen.
Vermutlich können die beiden binären Eingänge des Uni, angeklemmt an beide Motorklemmen (mit Vorwiderständen/Spannungsteiler) Informationen liefern, die das Abschalten per Endschalter feststellen lassen. Dann sind nämlich beide auf gleichem Pegel. In einem Skript ließe sich das auswerten, da das Skript "weiß", dass es den Motor eingeschaltet hat.
Auch per analogem Eingang und deiner Potentiometer-Lösung kann die aktuelle Torposition (ca.) ermittelt werden.
Bis auf eine Drehmomenterfassung sehe ich keineswegs, dass ein Plus Uni für deine Zwecke nicht geeignet wäre.
Du schriebst in #19 nur etwas von einem 2PM. Einen solchen täte ich hierfür entweder ausschließlich als Schaltaktor einsetzen oder ganz weglassen und stattdessen Relais vom Uni schalten lassen.
Edit:
Ich kenne längst nicht alle Shelly aus eigener Erfahrung. Vielleicht gibt es zum Plus 2PM eine bessere Aktor-Alternative.
Allenfalls Spitzen.
Diese 16A sind für die kleinen Relais mit ihren kleinen Kontakten stark übertrieben.
Wenn du solchen Strom schalten willst, ergänze den Aufbau per stärkerem Relais (Schütz)!
Smalltalk meinerseits ...
Tja, wenn ich ähnliches in meinem erheblich älteren Haus finde (ich weiß, dass dieses Haus nicht dein Eigentum ist), dann
Das hat sich bisher bewährt - bis auf eine Leitung, die vom 2. OG (noch aus der Zeit, in der der Strom über das Dach kam) durch das Treppenhaus in den Keller und von dort nach draußen führt.
Das war mir bisher wegen anderer Baustellen viel zu aufwändig, weshalb ich draußen (Schuppen) mit 10A abgesichert habe (nicht wirklich angenehm). ![]()
Da kann ich nicht mitreden, weil ich bisher keinerlei Magnetkontakte oder Reed Relais in meinem Haus verwende.
Ich denke, dass champayne91 verstanden hat, was im besten Fall an den Schalten/Tastern gebraucht wird. Da er sich eh Rat vor Ort holen will, warte ich erst einmal ab, was dieser Rat ergibt.
Abzweigdosen sollte es auch bei älteren Installationen geben.
Frage am Rande: Wie alt ist das Haus etwa?
Ja, das geht sehr gut. Ich täte dann 4 Taster verwenden. Schalter gehen aber auch, womit du dann aber nicht alle Eingänge des i4 nutzt.
Ich nutze an mehreren Stellen solche 4er Tastergruppen an je einem i4.
Damit lassen sich leicht 4 Schalt-Shelly per Action steuern. Ich verwende sie hauptsächlich zur Steuerung von Rollläden mit Hilfe eines Skripts.
Das Gute daran ist, dass man leicht auf jeden Taster alles legen kann, was von einem Shelly (Plus) 1 (PM) geschaltet wird.
Warum habe ich dir das nicht gleich empfohlen? ![]()
Ich war vermutlich zu sehr auf deiner Linie mit den zwei Schaltern an Stelle von S2.
Für solche Fernsteuerungen mit Shelly sollte dein WLAN sehr stabil sein.
Es ist ein Leichtes den Plus Uni per Skript zwei Relais so steuern zu lassen, dass nicht mehr als ein Relais auf Ein ist (Rollladen) oder ein Ausgang ein Polwenderelais steuert.
Das geht auch locker ohne ein übergeordnetes System. Ich habe per Plus 1 und Skript eine autark arbeitende Steuerung zum Antrieb eines Heizungsventils implementiert. Das übergeordnete System ist dann optional nutzbar.
Der Plus Uni kann entsprechend die Torsteuerung sehr gut autark bewältigen. Eben diese Autarkie ist imho zur Sicherheit auch erforderlich.