Ok, danke.
Dann wird der Shelly nicht defekt, wenn ich speziell die 24V für den digitalen Eingang schalte.
Ok, danke.
Dann wird der Shelly nicht defekt, wenn ich speziell die 24V für den digitalen Eingang schalte.
Ich würde einmal ein Pneumatik-Ventil ansteuern und einmal einen digitalen Eingang einer SPS jeweils mit 24V.
Hallo,
kann ich mit den neuen Shelly Pro 2 Gleichspannung schalten?
Es handelt sich um 24V DC.
Schon mal besten Dank.
Ja, das ganze tritt nur auf, wenn ich das Netzwerkkabel am Shelly ziehe, wenn ich z.B. nur den Uplink-Port vom Switch trenne läuft alles durch.
shelly_notification:161 Status change of script:7: {"id":7,"running":true}
19:44:12
mg_rpc.c:314 HTTP.GET via loopback
19:44:17
shelly_http.cpp:183 0x3ffe5480 HTTPS GET https://url.de (SSL CA ca.pem)
19:44:17
shelly_http.cpp:71 0x3ffe5480 HTTP got 200 OK and 3 byte response
19:44:21
mg_rpc.c:314 Switch.Set via loopback
19:44:21
shelly_notification:161 Status change of switch:1: {"id":1,"output":true,"source":"loopback","timer_duration":5.00,"timer_started_at":1680716661.44}
19:44:21
mg_rpc.c:314 HTTP.GET via loopback
19:44:22
shelly_http.cpp:183 0x3ffe5480 HTTPS GET https://url2.de (SSL CA ca.pem)
19:44:22
shelly_http.cpp:71 0x3ffe5480 HTTP got 200 OK and 0 byte response
19:44:26
shelly_notification:161 Status change of switch:1: {"id":1,"apower":0,"current":0,"output":false,"pf":0,"source":"timer","timer_duration":null,"timer_started_at":null}
19:44:26
mg_rpc.c:314 HTTP.GET via loopback
19:44:27
shelly_http.cpp:183 0x3ffe5480 HTTPS GET https://url.de (SSL CA ca.pem)
19:44:27
Disconnected.
19:45:11
Connected.
19:45:14
mgos_http_server.c:180 0x3ffe39a0 HTTP connection from 192.168.178.234:54289
19:45:16
mg_rpc.c:314 shelly.getstatus via WS_in 192.168.178.234:54289
19:45:16
mg_rpc.c:314 shelly.getdeviceinfo via WS_in 192.168.178.234:54289
19:45:16
mg_rpc.c:314 shelly.getconfig via WS_in 192.168.178.234:54289
19:45:16
mgos_http_server.c:180 0x3ffe57f0 HTTP connection from 192.168.178.234:54290
19:45:17
mg_rpc.c:314 shelly.getstatus via WS_in 192.168.178.234:54290
19:45:17
mg_rpc.c:314 shelly.getdeviceinfo via WS_in 192.168.178.234:54290
19:45:17
mg_rpc.c:314 shelly.getconfig via WS_in 192.168.178.234:54290
19:45:17
shelly_notification:161 Status change of switch:0: {"id":0,"aenergy":{"by_minute":[0.000,0.000,0.000],"minute_ts":1680716759,"total":0.000}}
19:46:00
shelly_notification:161 Status change of switch:1: {"id":1,"aenergy":{"by_minute":[0.000,0.000,0.000],"minute_ts":1680716759,"total":0.000}}
Alles anzeigen
Hallo,
wollte mal eine kurze Rückmeldung geben.
Also an sich läuft das Script jetzt stabil, also es bricht nicht mehr ab und läuft und läuft.
Allerdings hab ich ein komisches Phänomen.
Wenn die Netzwerkverbindung mehrmals abgebrochen ist, läuft zwar das Script noch, aber anscheinend tut der HTTP-Request nicht mehr.
Hallo zusammen, hab jetzt das ganze soweit am laufen.
let userConfig = {
repeatTime: 5 * 1000, //5 sec
requestURL: "https://url1",
updateURL: "https://url2",
httpCallTimeout: 15, // max Timeout in sek.
aktivRequestLimit: 2, //max limit is 5.
aktivUpdateLimit: 1, //max limit is 5.
RelayID: 1,
RelayZeit: 5 //5 sec
};
let requestCounter = 0;
let updateCounter = 0;
let repeatTimer = null;
let aktiv = false;
function action() {
Shelly.call(
"Switch.Set",
{ id: userConfig.RelayID, on: true, toggle_after: userConfig.RelayZeit }
);
return true;
};
//Dauer-Intervall HTTP Call
function StartTimer() {
repeatTimer = Timer.set(
userConfig.repeatTime,
true,
HttpRequest
);
return true;
};
//HTTPCall ErrorHandler
function CheckRequestResponse(result, shellyCall_error_code, shellyCall_error_message, Callback) {
let response;
requestCounter = requestCounter - 1;
if (shellyCall_error_code === 0) {
if (result.code === 200) {
if (typeof result.body === 'string') {
if (result.body.indexOf("Beispieltext") >= 0) {
action();
aktiv = true;
}
} else {
if (typeof result.body === 'undefined') {
return true;
}
}
}
}
}
//HTTPCall ErrorHandler
function CheckUpdateResponse(result, shellyCall_error_code, shellyCall_error_message, Callback) {
let response;
updateCounter = updateCounter - 1;
if (shellyCall_error_code === 0) {
if (result.code === 200) {
aktiv = false;
}
}
}
function HttpRequest() {
if (!aktiv) {
if (requestCounter < 0) {
requestCounter = 0;
}
if (requestCounter < userConfig.aktivRequestLimit) {
requestCounter = requestCounter + 1;
Shelly.call(
"HTTP.GET",
{ url: userConfig.requestURL, timeout: userConfig.httpCallTimeout },
CheckRequestResponse
);
}
return true;
}
if (aktiv) {
HttpUpdate();
}
};
function HttpUpdate() {
if (updateCounter < 0) {
updateCounter = 0;
}
if (updateCounter < userConfig.aktivUpdateLimit) {
updateCounter = updateCounter + 1;
Shelly.call(
"HTTP.GET",
{ url: userConfig.updateURL, timeout: userConfig.httpCallTimeout },
CheckUpdateResponse
);
}
return true;
};
//Starte Dauer-Intervall Timer
StartTimer();
Alles anzeigen
Kurze Erklärung:
Das Script frägt alle paar Sekunden eine Webseite ab, holt sich den Inhalt und wenn in der Webseite ein bestimmter Text steht, führ es eine Aktion aus.
Wenn dies der Fall ist, ruft der Script beim nächsten Durchlauf eine andere URL auf, welche den Inhalt der Webseite zurücksetzt.
Ist sozusagen eine Art Steuerung über eine Webseite.
Das lief in den ersten Tests soweit gut.
Hab mir noch überlegt, um etwaige Abbrüche des Scripts entgegenzuwirken mit folgenden Script zu prüfen, ob das erste Script läuft und wenn nicht es zu starten.
let userConfig= {
repeatTime: 5 * 1000,
scriptID: 1
};
let repeatTimer = null;
function stopTimer() {
Timer.clear(repeatTimer);
};
function startTimer() {
repeatTimer = Timer.set(userConfig.repeatTime,
true,
function (ud) {
checkscript();
},
null
);
};
function checkscript() {
Shelly.call(
"Script.GetStatus",
{ id: userConfig.scriptID},
function (response) {
if (!response.running) {
Shelly.call(
"Script.Start",
{ id: userConfig.scriptID}
);
}
}
);
stopTimer();
startTimer();
}
startTimer();
Alles anzeigen
Verbesserungsvorschläge?
Werd versuchen, am Wochenende daran weiter zu basteln
Ja, das war nur zusammengeschrumpft, weil dort auch schon der Fehler auftritt und ich gehofft habe, hier einen Anstoß zu bekommen, woran das liegt.
Vielen Dank
Hallo,
danke für den Code und die Unterstützung.
Möchte an sich den Inhalt einer Seite abrufen und bei bestimmten Werten Aktionen ausführen.
Hallo zusammen,
ich habe ein Script, das regelmäßig eine Webseite überprüft.
Das funktioniert auch gut, jedoch bricht das Script ab, wenn zwischenzeitlich die Netzwerkverbindung nicht vorhanden ist.
Wie kann man das verhindern?
Hier noch das Script:
let repeatTimer = null;
function startTimer() {
repeatTimer = Timer.set(5000,
true,
function (ud) {
httprequest();
},
null
);
};
function action() {
Shelly.call(
"Switch.Set",
{ id: 0, on: true, toggle_after: 2 },
function (response, error_code, error_message) {}
);
};
function httprequest() {
Shelly.call(
"http.get",
{ url: "http://eu.httpbin.org"},
function (response, error_code, error_message) {
if (response.code === 200) {
action();
}
}
);
};
startTimer();
Alles anzeigen
Die ziehen an einem Drahtseil, welche dann Tierklappen zuziehen,
Möchte vier Taster haben und damit jeweils für eine gewisse Zeit einen Ausgang schalten.
Wenn Taster 1 gedrückt wurde soll für 10 Sekunden Ausgang 2 aktiv sein usw.
Aber wenn ich in diesen 10 Sekunden Taster 2 gedrückt habe soll Ausgang 2 erst nach Ablauf dieser 10 Sekunden aktiv sein usw.
Und über Netzwerk möchte ich einen einzelnen Aufruf machen und dort sollen nacheinander alle vier Ausgänge geschalten werden.
An die Steckdosen kommen Elektromagnete.
Diese möchte ich nacheinander für eine bestimmte Zeit aktivieren.
Einmal per Netzwerk und einmal mit vier Tastern.
Ich leider auch
Deswegen die Hoffnung, dass mir jemand ein paar Tipps geben kann und vor allem, ob das überhaupt damit möglich ist.
Vielleicht weiß jemand anders Rat?
Das mit mJS hab ich mir auch gedacht, aber da ich mit Javascript noch keine große Berührung hatte, habe ich gehofft, dass mir da jemand ein paar Tipps geben könnte, wie das gehen würde.
Hallo @all,
ich hab da mal eine Frage, ob das mit dem Shelly klappt oder ob ich andere Hardware benötige.
Was ich möchte.
Ich habe vier Taster und jeder Taster soll den dazugehören Ausgang (soll jeweils an eine Steckdose gehen) schalten und nach 10 Sekunden wieder ausgehen
Das sollte ja kein Problem sein.
Aber ich möchte zusätzlich per Netzwerk einen einzigen Befehl an den Shelly senden und wenn dieser Befehl empfangen wurde, soll jeder Ausgang nacheinander für 10 Sekunden eingeschalten und dann wieder ausgeschalten werden.
Würde das gehen?
Und wäre es auch machbar, dass sich die Ausgänge gegenseitig sperren?
Also wenn Ausgang 1 durch Taster 1 aktiviert wurde und jemand Taster 2 drückt, soll Ausgang 2 erst geschalten werden, wenn Ausgang 1 wieder aus ist?
Schon mal vielen Dank.
Ah, ok, war mir nicht sicher, ob ich alles in {} schicken muss.
Vielen Dank.
Hallo zusammen,
bin neu im Thema Shelly.
Ich hab einen Shelly Pro 2 und hab ihn mit meinem MQTT-Server verbunden.
Er veröffentlicht auch schön brav alles.
Jetzt möchte ich aber die Relays per MQTT schalten, bekomme es aber nicht hin.
In welches Topic muss ich was senden, damit das klappt?
Schon mal besten Dank.
Grüße
viliv