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.
-
Was ich aber noch brauche ist eine Vorrangsteuerung über die App - d.h. wenn ich über die App den PM1 einschalte, möchte ich nicht, dass er durch die Aktion wieder ausgeschaltet wird (auch wenn die Temperatur niedriger ist).
Ich verstehe die Anforderung nicht wirklich.
Wenn es heißen wurde "Temperatur niedriger höher ist" dann hätte ich eine Lösung.
Ergänzung:
App EIN = "Hand dauernd" wie gedenkst du dann auf die "Automatik" zurück zuschalten?
-
Hab V4.0 ersetzt mit 4.1
Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.
-
privat38300
1) Was bewirken die Prog.-Zeilen 12 & 13 (let tempOff = 16 & let tempOn = 14;) genau?
Hier sind die Ein- + Aus-, Schalttemperaturen deklariert, wenn eben keine Schaltzeit aktiv ist. (9..00..19:00 oder eben neu 9:30..19:30)
2) Wie muss ich die Zeile 21 editieren, wenn der Aktivitätszeitraum nicht 9 Uhr bis 19 Uhr sein soll, sondern z.B. 9:30 bis 19:30?
Nun, es ist ein wenig mehr zum Anpassen... Vergleiche die alte Version 3.0 mit der u.a. Version 4.0
/// Boilertemperatur V4.2
////////////////////////////////////////////////////////////////////////////////////////////
///
/// Created by HighFive © 2024
///
////////////////////////////////////////////////////////////////////////////////////////////
// If no console log needed please set log to "0"
let log = 1;
////////////////////////////////////////////////////////////////////////////////////////////
function timerHandler() {
// minimal temperatur outside heating time / Temperaturen [ON/OFF] wenn keine Schaltzeit aktiv. (eg. Frostschutz immer aktiv))
let tempOff = 16;
let tempOn = 14;
// create a new Date object
let now = new Date();
// get the current hour (from 0 to 23)
let hour = now.getHours();
// get the current minute (from 0 to 59)
let minute = now.getMinutes();
// get the current minutes of the actual day
actdayminutes = (hour * 60) + minute;
//
temp_boiler = Shelly.getComponentStatus('Temperature', 100).tC;
///
if ((actdayminutes > (9 * 60) + 30) && (actdayminutes < (19 * 60) + 30)) { /// Wenn (Uhrzeit größer 9:30) UND (Uhrzeit unter 19:30) schalte:
tempOff = 51; /// AUS wenn Temperatur größer 51°C
tempOn = 49; /// EIN wenn Temperatur unter 49°C
} /// Wenn keine Uhrzeit aktiv dann gelten tempOff = 16 / tempOn = 14
///
if (temp_boiler > tempOff) {
Shelly.call("Switch.set", {
'id': 0,
'on': false
});
};
if (temp_boiler < tempOn) {
Shelly.call("Switch.set", {
'id': 0,
'on': (temp_boiler > 0)
});
};
///
if (log != 0) {
print('Temperatur Boiler = ', temp_boiler + ' / ON: ' + tempOn + ' / OFF: ' + tempOff + ' / Boiler-Relay : ' + Shelly.getComponentStatus('switch', 0).output);
}
}
////////////////////////////////////////////////////////////////////////////////////////////
Timer.set(1000, true, timerHandler, null);
////////////////////////////////////////////////////////////////////////////////////////////
Alles anzeigen
-
x3789555555
Wie kann ich den bei meinem Shelly pro 3EM einbinden?
Dieser Code in deinem Posting ist für ein übergeordnetes "Home Assistant" System und wird am Shelly nicht funktionieren.
Ebenso habe ich auch keine Idee wie diese Aufgabenstellung am Shelly zu bewerkstellen wäre. 
-
Newman
Dieser u.a. Script dürfte alle deine Anforderungen erfüllen.
(Ist bei mir in leicht geänderter Form schon rund ein 3/4 Jahr im Einsatz)
/// Sunrise/Sunset and a block OFF time V1.0
////////////////////////////////////////////////////////////////////////////////////////////
///
/// Created by HighFive © 2024
///
////////////////////////////////////////////////////////////////////////////////////////////
/// Begin USER settings
////////////////////////////////////////////////////////////////////////////////////////////
///
/// lat and lon
/// Set these values to the exact local location for more precision.
/// If both are set to default "0" then the values from the system "Location settings" will be used.
///
/// You can use this tool to find the correct position values: https://www.latlong.net/
///
////////////////////////////////////////////////////////////////////////////////////////////
let lat = 0.0;
let lon = 0.0;
//
let timeMorningOn = '4:50'; // Off through sunrise
let timeEveningOff = '23:00'; // On through sunset
////////////////////////////////////////////////////////////////////////////////////////////
/// End USER settings
////////////////////////////////////////////////////////////////////////////////////////////
let timeSunrise;
let timeSunset;
//
let log = 1;
let cyclesCount = 0;
///
function TimeToNumber(time) {
let t = time.split(":");
let h = parseInt(t[0]);
let m = parseInt(t[1]);
return h * 3600 + m * 60;
}
///
function NumToTime(num) {
num = num / 60;
var hours = Math.floor(num / 60);
var minutes = num % 60;
if (minutes + ''.length < 2) {
minutes = '0' + minutes;
}
return hours + ":" + minutes;
}
///
let timeMorningOn = TimeToNumber(timeMorningOn);
let timeEveningOff = TimeToNumber(timeEveningOff);
///
function am_pm_to_24h(time) {
t = time.split(":");
let h = parseInt(t[0]);
let m = parseInt(t[1]);
if (t[2].indexOf('PM') > -1) {
h += 12;
}
let extra = '';
if (h < 10) {
extra = '0';
}
return extra + h + ':' + m;
}
///
function get_sunrise_and_sunset() {
Shelly.call('sys.getConfig', '',
function(result, error_code, error_message, action_type) {
//
if (error_code === 0) {
if ((lat === 0) && (result.location.lat != null)) {
lat = result.location.lat;
};
//
if ((lon === 0) && (result.location.lon != null)) {
lon = result.location.lon;
};
//
if (log != 0) {
print('Latitude: ' + lat + ' / Longitude: ' + lon);
};
url = "https://api.sunrisesunset.io/json?lat=" + lat + "&lng=" + lon;
// print('Try to get astro data...');
Shelly.call('http.get', {
url: url,
timeout: 15
},
function(result, error_code, error_message, action_type) {
if (error_code === 0) {
// print(JSON.stringify(result.body));
let res = JSON.parse(result.body);
if (log != 0) {
print('Sonnenaufgang: ' + am_pm_to_24h(res.results.sunrise) + ' / Sonnenuntergang: ' + am_pm_to_24h(res.results.sunset));
};
timeSunrise = TimeToNumber(res.results.sunrise.slice(0, res.results.sunrise.indexOf(' ')));
timeSunset = TimeToNumber(res.results.sunset.slice(0, res.results.sunset.indexOf(' '))) + (12 * 3600);
}
}
);
}
}
);
}
///
get_sunrise_and_sunset();
///
function timerHandler() {
let actTime = TimeToNumber(Shelly.getComponentStatus("sys").time);
//
let stateRelay = ((timeSunset < timeEveningOff) && ((actTime > timeSunset) && (actTime < timeEveningOff)) ||
(timeMorningOn > timeSunrise) && ((actTime > timeMorningOn) && (actTime < timeSunrise)));
//
Shelly.call("Switch.set", {
'id': 0,
'on': stateRelay
});
//
if (cyclesCount > 4) {
get_sunrise_and_sunset();
if (log != 0) {
print('AUS Zeit: ' + NumToTime(timeEveningOff) + ' bis ' + NumToTime(timeMorningOn));
print('Zustand RELAIS: ' + stateRelay);
};
cyclesCount = 0;
} else {
cyclesCount = cyclesCount + 1;
};
};
///
Timer.set(10000, true, timerHandler, null);
///
Alles anzeigen
-
Admin
Gratulation auch von mir.
Ich kann bei der Bestellung nur Deutschland auswählen.
Übersehe ich etwas bzw. ist dies eine bewusste Einschränkung?
Aufzeichnung 2024-06-01 173956.mp4
-
Sputnik
Ich kann das von dir geschilderte Verhalten nicht nachvollziehen …
und habe derzeit keine Möglichkeit dies zu reproduzieren.
Mach einfach den Shelly mal spannungslos und schau, ob die Werte sich im MQTT Explorer weiter ändern.
Ich hätte angenommen, dass der letzte übertragene Wert dauerhaft stehen bleibt. (Solange das MQTT Explorer Programm offen bleibt)
-
apreick
Lieber Apreick,
Nun viele Wege führen nach Rom.
Ich bin aber vom Wohnort näher...
Zum Thema:
Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.
Anhand deiner Action:
- Es ist 8:45 und die Temperatur im Boiler ist 20°C
- Es wird 9:00 aber die Temperatur ist immer noch 20°C
- Es passiert NIX
- Es wird 10:00 Temperatur ist 20°C
- Es passiert NIX
- Es wird 11:00 Temperatur geht auf 19,9°C
- SHELLY schaltet EIN
-
Oder liege ich falsch?
Dann bitte ich dich, meine Behauptung mit einer Richtigstellung zu entkräften.
-
Sputnick
Habe es für dich angepasst.
////////////////////////////////////////////////////////////////////////////////////////////
///
/// Adapted by HighFive © 2024
///
////////////////////////////////////////////////////////////////////////////////////////////
//
//sample object
let status = {
// operational: true,
// activeEndpoint: "http://192.168.1.17",
total_act_power: 0
};
///
function timerHandler() {
let em = Shelly.getComponentStatus("em", 0);
if (typeof em.total_act_power !== 'undefined') {
status.total_act_power = em.total_act_power;
//publish to topic every 1000ms
MQTT.publish("/system/device-id/status", JSON.stringify(status), 0, false);
}
}
///
Timer.set(1000, true, timerHandler, null);
Alles anzeigen
Gib mir Bescheid ob es nun passt.
-
Hatte schon mal Probleme wenn genau zur Schaltzeit der Shelly gerade nicht lief. (Stromausfall/ etc.) [9:00+19:00 im konkreten Beispiel]
Daher meine Lösung hierzu via Script:
/// Boilertemperatur V3.0
////////////////////////////////////////////////////////////////////////////////////////////
///
/// Created by HighFive © 2024
///
////////////////////////////////////////////////////////////////////////////////////////////
// If no console log needet please set log to "0""
let log = 1;
///
function timerHandler() {
// minimal temperatur outside tme 9:00..19:00
let tempOff = 16;
let tempOn = 14;
// create a new Date object
let now = new Date();
// get the current hour (from 0 to 23)
let hour = now.getHours();
//
temp_boiler = Shelly.getComponentStatus('Temperature', 100).tC;
///
if ((hour > 9) && (hour < 19)) {
tempOff = 51;
tempOn = 49;
}
///
if (temp_boiler > tempOff) {
Shelly.call("Switch.set", {
'id': 0,
'on': false
});
};
if (temp_boiler < tempOn) {
Shelly.call("Switch.set", {
'id': 0,
'on': true
});
};
///
if (log != 0) {
print('Temperatur Boiler = ', temp_boiler + ' / ON: ' + tempOn + ' / OFF: ' + tempOff + ' / Boiler-Relay : ' + Shelly.getComponentStatus('switch', 0).output);
}
///
}
///
Timer.set(1000, true, timerHandler, null);
///
Alles anzeigen
-
Mit ähnlichen Kosten bekommst auch einen kompletten »smarten« Schalter, sogar mit "Matter" welches Shelly nicht bzw. in Zukunft „vielleicht“ mit zusätzlichem Gateway abdeckt.
Siehe:
Beitrag
Hatte das gleiche Problem mit den notwendigen 4rer Rahmen.
Bin nun auf Sonoff M5 (Matter) gewechselt und mit
Preis/Leistung & Qualität absolut zufrieden.
- 1,2,3 fach-Schalter(1,2,3 Gang) je ~20€
- Rahmen 2,3,4 unter 3€/Stk.
https://sonoff.tech/product/smart-wall-switches/m5-matter/10% Rabattcode im Video unten eingeblendet.https://www.youtube.com/watch?v=WKi8MB7Ei-AHabe schon 18 Schalter getauscht und noch 10 Stk. im Haus gefunden, welche ich auch noch tausche.
(Die Schalter sind einfacher als Shelly's…
HighFive
27. Mai 2024 um 22:11
-
AlexAn
Würde auch wie oben schon erwähnt nachsehen wie das im MQTT Explorer aussieht.
Erfülle dir gerne diesen Wunsch, wenn du einem Theoretiker wie mir praxisgerecht mitteilst, was genau du sehen willst.
-
Wenn man die Grafik ansieht, ist doch eindeutig erkennbar, das die Regelung (viel mehr die Schaltungen) keinesfalls im Sekundentakt ausgeführt wird
Korrekt, es wurde auch nur die Daten-Übertragung/Bereitstellung angesprochen. (möglichst konstant und im 1sek. Zyklus)
Es war nicht Thema wie diese Werte weiterverarbeitet werden. (Tief-,Hoch-, Notch -Filterung, Ein-Aus-Minimal-Laufzeiten etc...)
Wo liegen denn die Einschaltleistungen? Und wie sind die Verzögerungszeiten? Keinesfalls wird verzögerungsfrei geschaltet, wie man sieht.
- Schwarze Linie, 6 x 1,980 kW,
- Verzögerungszeiten abhängig von der Änderungsgeschwindigkeit & Minimal Ein/Auszeit
- Es wurde niemals eine "verzögerungsfreie" Schaltung kommuniziert.
Hoffe hiermit alle Fragen geklärt zu haben.
-
Im Studium habe ich mal vernommen, daß in einem System sowohl zugeführte als auch auch entnommene "Schwingungs"-Energie eine Resonanz verstärken oder abschwächen können.
Ebenfalls wirkt eine Dämpfung in beide Richtung gleichförmig! 
-
Ich übertrage die Werte auch im 1sek. Intervall....
Trotz heute stark schwankenden PV Ertrag (gelb) kann ich meine SSR 2kW Patronen ohne Anzeichen von "Schwingen" Ein-/Ausschalten.
Solange der Rot (Bezug)-Anteil so gering ist und der grüne Einspeise-Anteil 4..5x höher ist bin ich locker auf +/- 0.
Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.
-
Sputnick
Bei mir funktioniert die MQTT-Sekunden Übertragung perfekt.
Mein Test-Code:
//sample object
let status = {
operational: true,
activeEndpoint: "http://192.168.1.17",
counter: 0,
toggle: false
};
//publish to topic every 1000ms
let notifyTimer = Timer.set(
1000,
true,
function() {
MQTT.publish("/system/device-id/status", JSON.stringify(status), 0, false);
}
);
///
function timerHandler() {
status.counter = status.counter + 1;
status.toggle = !status.toggle;
print(status.toggle+' '+ status.counter)
}
///
Timer.set(1000, true, timerHandler, null);
Alles anzeigen
Im MQTT Explorer dann das Resultat:
MQTT.mp4
Ich denke du hast vergessen deine gewünschten Werte in der Übertragungs-Objekt einzutragen.
Im Beispiel oben habe ich diese 2 Werte implementiert:
Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.
-
Hatte das gleiche Problem mit den notwendigen 4rer Rahmen.
Bin nun auf Sonoff M5 (Matter) gewechselt und mit Preis/Leistung & Qualität absolut zufrieden.
- 1,2,3 fach-Schalter(1,2,3 Gang) je ~20€
- Rahmen 2,3,4 unter 3€/Stk.
https://sonoff.tech/product/smart-wall-switches/m5-matter/
10% Rabattcode im Video unten eingeblendet.
https://www.youtube.com/watch?v=WKi8MB7Ei-A
Habe schon 18 Schalter getauscht und noch 10 Stk. im Haus gefunden, welche ich auch noch tausche.
(Die Schalter sind einfacher als Shelly's in Home Assistant zu integrieren)
Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.
Lt. DHL sind diese morgen dann bei mir. 
-
Aternative zum Hager[1000W] um ~225€ gäbe es auch einen Eltaco[800W] um ~60€.
https://geizhals.de/eltako-eud12dk…0-a2944853.html
Ansteuerung:
- Hager 1-10V
- Eltaco Digital/Taster & PWM (8..230V UC)
Leistungsaufnahme Stand by:
Datenblatt: Eltaco: https://www.eltako.com/fileadmin/down…100810-1_dt.pdf
-
Nun ich gehe davon aus der Eltako erhält einen kurzen oder langen Tastimpuls und regelt hell->dunkel->hell. (Meine Annahme da du ja den bis 600W Eltako-Typ verschweigst)
Was bringt dir die Anzeige des sehr kurzen Tastimpuls vom Taster?
PS: Viel Glück bei der Lösung!
-
Ja, bei mir kann Shelly ausfallen und du kannst das Licht schalten per Handschalter.... Was ist da schlechter als bei deiner Lösung?