Hallo zusammen,
kann ich unter Verwendung des "addEventHandler" erkennen,
wenn ein anderer Shelly (in diesem Fall der i3) eine URLaction "http://192.168.178.111/relay/0?turn=on" an meinen Shelly Plus 1 sendet ?
Danke.
Patrick
Hallo zusammen,
kann ich unter Verwendung des "addEventHandler" erkennen,
wenn ein anderer Shelly (in diesem Fall der i3) eine URLaction "http://192.168.178.111/relay/0?turn=on" an meinen Shelly Plus 1 sendet ?
Danke.
Patrick
Stabiles Verhalten der Devices auch nach Fw und Software Updates.
Das beinhaltet auch eine Funktionierende Qualitätssicherung.
Schließ ich mich an.
Und was auch super wäre:
Ich weiß, ich kann auch heute das schon tun, und alle Einstellwerte mir anzeigen lassen (step by step) und mir diese notieren.
Ich kann auch mit einem Rechenschieber rechnen..
(=gelogen, wir haben die Anwendung des Rechenschiebers nicht mehr gelernt, sondern gleich zu den einfachsten Taschenrechner)
Vielleicht hat sich da jmd. schon etwas gebastelt und alle Werte über GetConfig ausgelesen und entsprechend strukturiert angezeigt/dargestellt.
Gruß
Patrick
Hallo zusammen,
nachdem die Funktion der Lüftersteuerung per Szene -aufgrund fehlender Internetverbindung- verständlicherweise nicht funktioniert,
habe ich mein Projekt <Bad Licht-/Lüftersteuerung>
dahingehend geändert, dass ich den Shelly 2.5 durch einen Shelly Plus 2PM inkl. Skript ausgetauscht habe.
Die Szene ist nun durch unten angehängtes Skript ersetzt.
Ausgangssituation:
1x Schalter
1x Lampe, 1x Lüfter gesteuert über den Schalter (gemeinsam an/aus)
Nun:
1x Taster
1x Lampe gesteuert durch den Taster
1x Lüfter gesteuert über das Skript in Abhängigkeit der Schaltzustände (Taster, Lampe)
Fallunterscheidung im Skript beschrieben.
Vielen Dank an Devil für seine Antworten in meinen anderen Beiträgen.
Diese waren mir hierfür sehr hilfreich .
Patrick
// ControlBathLampFan v2.1
// by PatrickR
// 22.10.2022
//
// This script is activating the fan on output2 depending action on input button 1
//
//
// Input 1: button, output 1 on/off
// Input 2: ---
// Output 1: Lamp, timer switch off after 30 minutes
// Output 2: Fan, timer switch off after 30 minutes
//
//
// Case 1: Lamp OFF, Fan OFF
// Button short keypress: Lamp ON, delayTimer stopped, Fan OFF
// Button long keypress: Lamp ON, delayTimer started, after delayTimer expired -> Fan ON
// Case 2: Lamp ON, Fan OFF
// Button short keypress: Lamp OFF, delayTimer stopped, Fan OFF
// Button long keypress: Lamp OFF, Fan ON
// Case 3: Lamp OFF, Fan ON
// Button short keypress: Lamp ON, delayTimer stopped, Fan OFF
// Button long keypress: Lamp ON, delayTimer started, after delayTimer expired -> timer switch off retriggered
// Case 2: Lamp ON, Fan ON
// Button short keypress: Lamp OFF, delayTimer stopped, Fan OFF
// Button long keypress: Lamp OFF, Fan ON, timer switch off retriggered
//
//
// Configuration script:
// - delayTms: delay time till output 2 is activated
//
//
let CONFIG = {
inputId_0: 0,
switchIdLamp: 0,
switchIdFan: 1,
delayTimerHandler: null,
LampON: true,
LampOFF: false,
FanON: true,
FanOFF: false,
delayTms: 2 * 60 * 1000 //millisecond (=2 Minuten)
};
Shelly.addEventHandler(function (e) {
if (e.component === ("input:" + JSON.stringify(CONFIG.inputId_0))) {
if (e.info.event === "single_push") {
fkt_single_pushed();
}
else if (e.info.event === "long_push") {
fkt_long_pushed();
}
}
});
function fkt_delayTimerEND() {
// delay Timer expire => switch fan on (switchId_1)
fkt_switchFan(CONFIG.FanON);
print("fkt_delayTimerEND");
}
function fkt_single_pushed() {
//clear delay Timer
Timer.clear(CONFIG.delayTimerHandler);
// switch fan off
fkt_switchFan(CONFIG.FanOFF);
print("Button was single pushed");
}
function fkt_long_pushed() {
//if lamp (switchId_0) is on, delay Timer will be started
//if lamp (switchId_0) is off, delay Timer will not be started, fan will be started directly
Shelly.call("switch.getstatus", { id: CONFIG.switchIdLamp },
function (result, error_code, error_message) {
print("Result: ", JSON.stringify(result));
if (result.output === CONFIG.LampON) {
CONFIG.delayTimerHandler = Timer.set(CONFIG.delayTms, false, fkt_delayTimerEND);
print("Lamp is on");
}
else {
fkt_switchFan(CONFIG.FanON);
print("Lamp is off");
}
}
);
print("Button was long pushed");
}
function fkt_switchFan(bl_OnOff) {
let swFan = {
id: CONFIG.switchIdFan,
on: bl_OnOff
};
Shelly.call("Switch.Set", swFan);
print("fkt_switchFan: ", bl_OnOff);
}
Alles anzeigen
// Wifi_check_activate_AP v1.1
// by PatrickR
// 08.10.2022
// 12.10.2022: cycletime update
//
// This script is checking if an connection via sta/sta1 exist.
// If not, the AccessPoint is enabled to be able to get access to the Shelly
//
// Configuration:
// - change the Password of the Accesspoint connection
// - change the cycle time
//
let CONFIG = {
wifi_ap_pw: "123456789",
cycletime: 15 * 60 * 1000 // millisecond
};
// Check ip from status
function checkWifiIP() {
Shelly.call("WiFi.GetStatus", null, function (status) {
if (status.status !== "got ip") {
Shelly.call("wifi.setconfig",
{
config: { "ap": { "pass": CONFIG.wifi_ap_pw, "enable": true } }
}
);
}
});
}
// Start a timer that checks if all fields in CONFIG are populated
Timer.set(CONFIG.cycletime, true, checkWifiIP);
Alles anzeigen
MaZeVienna
Funktioniert bei mir
Kannst Du Deine Antwort konkretisieren?
Ich hab nun testweise einen print-Befehl als ersten Befehl in die Funktion und einen in die call-Schleife gesetzt, und beide print-Befehle werden im Debug-Modus zyklisch aufgerufen.
Mein call-Aufruf liefert mir nicht den ssid des ap's.
Das ist meine Frage/Problem.
Patrick
Deine Funktion wird nicht aufgerufen
Hatte den Timer nicht angegeben, weil der funktioniert.
Hab es in meinem Beitrag oben ergänzt.
Patrick
Hallo zusammen,
ich bin nun auch beim Scripting angekommen.
Hätte es das schon früher gegeben, hätte ich mir so manches vereinfachen können, speziell die Timing-Lösungen.
Aber nun hab ich es auch für mich entdeckt
Nun zu meiner Frage, vielleicht hat es schon jmd. umgesetzt.
- zyklisch aufrufen (ca. 1h)
- Statusabfrage WiFi Client und Backup
- wenn WiFi nicht verbunden ist, AP aktivieren
- wenn WiFi verbunden ist, AP deaktivieren
Hintergrund ist, dass ich einen Shelly an einer Stelle habe, wo hin und wieder beim Shelly 1, die Verbindung weg war.
Beim Shelly Plus 1 PM, welchen den Shelly 1 ersetzt hat, sieht es nun besser aus.
Dennoch hätte ich gern diese Fallbacklösung um auf den Shelly zugreifen zu können.
Zudem sehe ich es auch als Einstieg ins Shelly Scripting.
Danke schon mal.
Gruß Patrick
PS: Gibt es hier im Forum ein Platz für Scripting 's
also nicht den für Diskussionen, sondern zum Download/Upgrade?
Wäre das nicht mit 'nem Script möglich, da Du nun einen Plus verwendest?
Hab selber noch keine Erfahrung damit.
Patrick
Hallo Stromy,
und wie möchtest Du die Schaltzeiten und Anzahl dann auswerten ?
Gruß
Patrick
Hallo Stromy,
mir wäre nicht bekannt, dass hier eine spezielle Entprellzeit einstellbar wäre.
Aber über Langer Tastendruck solltest Du kürzeren Signale ausblenden können.
Meintest Du das ?
Gruß
Patrick
Bei 24V habe ich eher 2,2-3,3k Ohm genutzt.
Hätte man in der Tat.
Ich glaube, ich hatte auch mal 20,3V gemessen, daher hatte ich mich für den 1,2k entschieden, um sicher durchzusteuern.
Ich wollte am Ende nicht mehr zuviel rummessen, da nach jedem Platine anschließen bzw. abhängen an der Motorsteuerung der MS-BUS gereset werden mußte zudem immer wieder das Auto aus der Garage raus.
Und da das Projekt nicht die volle Zustimmung genoß, wollte ich es nicht überstrapazieren
Daher kann man vmtl. noch so manches verbessern
Patrick
Wie hoch ist VCC?
Hatte ich jetzt so nicht gelesen, ich frage wegen dem 1,2k an der LED Optokoppler.
Ich konnte die 1,2k im Bild aber eher schätzen.
Ich glaube es waren so ca. 21V
Ich konnte die 1,2k im Bild aber eher schätzen.
Wie meinste schätzen? Im Schaltplan und auf der bestückten Platine sind die 1,2k bzw. 122 gut zu erkennen, oder?
Alles anzeigenHallo Patrick,
ich finde deine Umsetzung mehr als interessant und suche für meinen Marantec genauso eine Lösung.
Kannst du ggf. die Daten zur Herstellung der Platine zur Verfügung stellen? Also das PCB Layout und vielleicht noch die Info wo du es hast herstellen lassen.
Ich bräuchte dann auch bitte mehr Infos zu den einzelnen Pins.
Ich plane das Ganze nachher in mein Apple-lastiges Smarthome einzubinden über Homebridge. Hierfür ist es essentiell den echten Status des Tores zu kennen (AUF / ZU / LÜFTUNG).
Danke vorab,Gruß
Thomas
Danke Thomas.
Ich kann Dir zum Selbstkostenpreis zzgl. Versand (PCB=3,91; ModularJack=0,73; Leiterplattenklemme, 10 polig=1,75; Leiterplattenklemme, 12 polig=1,86) anbieten.
Hatte PCB/ModularJack die Mindestmenge geordert.
Gruß
Patrick
Und anbei noch der Sceenshot der App
Scheint Du hast die "Anzeige Des Eingangszustands" nicht aktiviert, daher fehlt in der App. die Zustandsanzeige des IN_1, IN_2 (rot=Low; grün=High)
Die 0V zeigt die DC-Spannung am ADC an.
Patrick
Kannst Du einen Screenshot Deiner App zeigen ?
Spannungsanzeige ist die des ADC, die zwei rote Striche sind low am IN_1 und low am IN_2.
[Blockierte Grafik: https://smarthome-forum.eu/index.php?atta…pp-anzeige-jpg/]
(Beispiel aus meinem Beitrag: Langer Tastendruck auf 3 Minuten verlängern bzw. erst I/O-URL action wenn Input 3 Minuten anliegt)
Die Spannung an den beiden Digitaleingängen IN-1 und IN-2 wird IMHO nicht in der App angezeigt! Die App gibt die Spannung am Analogeingang an. Bitte die (Gleich-)Spannung zwischen IN-1 und GND messen, wenn der Klingeltaster betätigt wird.
Spannungswert nicht, korrekt.
Der Zustand High/Low von IN1/2 sollte jens7 jedoch in der App sehen (grüner/roter Strich).
Der Spannungswert nur über den ADC,
zumindest bei DC Anwendung.
Patrick
Hallo jens7,
kannst Du ggf. die PIN-Nummer auf Deinem Bild eintragen ?
Was, wenn Du den IN1 mit der Versorgung auf PIN1 verbindest ?
Patrick