-
-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Integration Vor Heitzungs Zeiten #10
Comments
@MiniAdnim Bitte noch den link auf den Beitrag im Forum posten, damit ich verstehe, was hier gemacht wurde... Danke. |
Hi! Evtl hat auch wer nen Tipp wie man das schon jetzt Umsetzten könnte? Danke. Viele Grüße! |
Im Moment plane ich nicht, diese Funktion kurzfristig einzubauen. |
Hi, |
Wenn man das richtig machen will müßte Außentemperatur, Raumgröße, Dämmung etc. alles einbezogen werden und daraus ne "Vorhersage" wieviel Zeit es braucht um den Raum um x Grad zu heizen, das finde ich etwas zuviel des guten und bin deswegen dagegen. Wenn ich iwann ein Studium brauch um den Adapter zu konfigurieren is was falsch gelaufen imho. |
Vielleicht habe ich den Request falsch verstanden. Das hat mit Außentemperatur, Dämmung, Raumgröße etc. nichts zu tun, sondern nur etwas mit der Zeit raumabhängig um von x Grad auf y Grad zu kommen. EDIT: |
Und woher soll der Adapter wissen dass er ca. 15min. braucht? Und glaubst Du wirklich dass die Zeit bei 10° Aussentemp, die gleiche sein wird wie bei -20° Außentemp? Lass Dir versichert sein, dem ist nicht so, wo wir wieder bei Dämmung etc sind. |
Du denkst viel zu kompliziert. Es hat absolut nichts mit der Außentemperatur zu tun, sondern etwas mit der Innentemperatur der Räume, zur Vereinfachung sogar ausschließlich die Zeit. Um es einfach zu halten wäre es denkbar, dass der Adapter berechnet, dass er innerhalb der letzten 10 Tage im Schnitt X min gebraucht hat um auf den Wert von 22 Grad zu bekommen. Wäre X=15min, dann würde er die Adapter 15min eher ansteuern. Damit wäre sogar die Innentemperatur außen vor. |
ich hatte vor einiger Zeit versucht, ein Konzept dazu zu erstellen. Ich bin letztendlich zur gleichen Erkenntniss gelangt, wie @Pittini . Eine feste Zeit pro Raum lässt der Adapter ja bereits zu. Wenn ich es um 6:00 morgens warm haben will und ich weiß, dass der Raum ca. 15 Minuten benötigt, stelle ich den Profilpunkt auf 5:45Uhr. |
Diese Vorheizzeit ist ja das was auch Pittini meint und ist natürlich in Abhängigkeit von der Außentemperatur bzw. Dämmung. Eine 10 Tages Glättung zur Berechnung der Vorheizzeit wäre meiner Meinung nach ausreichend um normale Schwankungen z.B. durch Jahreszeiten abzufangen. Da kann man ja auch je nach Raum, Wetter und Dämmung von einigen Minuten Differenz ausgehen. Den Aufwand kann ich absolut nicht einschätzen, ich hätte lediglich den Nutzen, den ich für mich selbst sehe. |
Gut wäre es der Adapter würde auch die Vorraus Zeiten zum Hochheitzen messen und setzen.
wie im Skript aus dem Forum:
`var rooms= {
'EG-Esszimmer': {
stateIdHeizungStatus: "hm-rpc.1.MEQ0559168.4.VALVE_STATE", // Status des Heizungsaktors zur Erkennung wann geheizt wird und wann nicht
heizungStatusIstAktor: false, // Status-State ist Aktor (=true) oder Stellventil (=false)
stateIdIstTemperatur: "hm-rpc.1.MEQ0559168.4.ACTUAL_TEMPERATURE" // Ist-Temperatur
},
'EG-Wohnzimmer': {
stateIdHeizungStatus: "hm-rpc.1.MEQ1558304.4.VALVE_STATE", // Status des Heizungsaktors zur Erkennung wann geheizt wird und wann nicht
heizungStatusIstAktor: false, // Status-State ist Aktor (=true) oder Stellventil (=false)
stateIdIstTemperatur: "hm-rpc.1.MEQ1558304.4.ACTUAL_TEMPERATURE" // Ist-Temperatur
},
'OG-BAD': {
stateIdHeizungStatus: "hm-rpc.1.MEQ0558719.4.VALVE_STATE", // Status des Heizungsaktors zur Erkennung wann geheizt wird und wann nicht
heizungStatusIstAktor: false, // Status-State ist Aktor (=true) oder Stellventil (=false)
stateIdIstTemperatur: "hm-rpc.1.MEQ0558719.4.ACTUAL_TEMPERATURE" // Ist-Temperatur
},
'EG-Buero': {
stateIdHeizungStatus: "hm-rpc.1.MEQ0555014.4.VALVE_STATE", // Status des Heizungsaktors zur Erkennung wann geheizt wird und wann nicht
heizungStatusIstAktor: false, // Status-State ist Aktor (=true) oder Stellventil (=false)
stateIdIstTemperatur: "hm-rpc.1.MEQ0555014.4.ACTUAL_TEMPERATURE" // Ist-Temperatur
},
'OG-Rechts': {
stateIdHeizungStatus: "hm-rpc.1.MEQ0549536.4.VALVE_STATE", // Status des Heizungsaktors zur Erkennung wann geheizt wird und wann nicht
heizungStatusIstAktor: false, // Status-State ist Aktor (=true) oder Stellventil (=false)
stateIdIstTemperatur: "hm-rpc.1.MEQ0549536.4.ACTUAL_TEMPERATURE" // Ist-Temperatur
}
};
var stateBaseId = "javascript.0.Heizung.Aufheizzeit.";
var ventilOeffnungHeizen = 31; // Wenn State ein Ventil ist ab welchem Ventil-Öffnungsstand wird es als "Heizen" betrachtet. 80-90% empfohlen, alles darunter ist eher "warm halten"!
var erkennungAusVerzoegerung = 3; // Zeit in Sekunden wann der Aktor als "Aus" akzeptiert wird, kann auch pro Raum definier werden
var maxIncrease1K = 65; // Maximale 1K-Zeit die akzeptiert wird (alles darüber wird als ungültig verworfen)
var minIncrease1K = 3; // Minimale 1K-Zeit die akzeptiert wird (alles darunter wird als ungültig verworfen)
var debug = false; // Ausführliches Debug-Logging
initialize();
function initialize() {
for (var room in rooms) {
rooms[room].letztesEin = 0;
rooms[room].letztesEinTemp = 0;
rooms[room].letzteTemp = 0;
rooms[room].skriptTimeout = null;
rooms[room].aufheizzeiten = [];
rooms[room].status = getState(rooms[room].stateIdHeizungStatus).val;
if (!rooms[room].heizungStatusIstAktor) {
if (rooms[room].status > rooms[room].ventilOeffnungHeizen) rooms[room].status = true;
else rooms[room].status = false;
}
}
function initializeSubscribes(room) {
createState(stateBaseId + room, {'type': 'number', 'read': true, 'write': true, 'role': 'value', 'unit': 'm'}, function() {
createState(stateBaseId + room + '-Data', {'type': 'string', 'read': true, 'write': true, 'role': 'value', 'unit': '', def: ''}, function() {
var storedData = getState(stateBaseId + room + '-Data').val;
var error = false;
if (storedData) {
try {
rooms[room].aufheizzeiten = JSON.parse(storedData);
}
catch (e) {
console.log('Error reading old Data: ' + e);
error = true;
}
}
if (!storedData || error) {
rooms[room].aufheizzeiten = [];
var storedAvg = getState(stateBaseId + room).val;
if (storedAvg) {
rooms[room].aufheizzeiten.push(storedAvg);
}
setState(stateBaseId + room + '-Data', JSON.stringify(rooms[room].aufheizzeiten), true);
if (debug) {console.log(' Initialize Data ' + room + ': ' + JSON.stringify(rooms[room].aufheizzeiten));}
}
});
});
}
function aktualisiereAktorStatus(room, stateVal) {
rooms[room].ausTimeout = null;
if (rooms[room].status === stateVal) return;
rooms[room].status = stateVal;
if (stateVal && rooms[room].letztesEin === 0) {
rooms[room].letztesEin = new Date().getTime();
rooms[room].letztesEinTemp = getState(rooms[room].stateIdIstTemperatur).val;
rooms[room].letzteTemp = rooms[room].letztesEinTemp;
pruefeAufheizzeit(room, true);
}
else if (rooms[room].letztesEin !== 0) {
pruefeAufheizzeit(room, false);
rooms[room].letztesEin = 0;
rooms[room].letzteTemp = 0;
}
}
function pruefeAufheizzeit(room, restart) {
if (rooms[room].skriptTimeout) {
clearTimeout(rooms[room].skriptTimeout);
rooms[room].skriptTimeout = null;
}
The text was updated successfully, but these errors were encountered: