NEWS
Bei höherer Temperatur und heating-Mermal Teleg. versenden
-
Hi,
ich überwachte mittels diesem Skript meine Heizkörper, wenn die Temperatur ab 23.5 steigt.
const sensor = getObject('enum.functions.heating_temperature').common.members; for(let i = 0; i < sensor.length; i++) { var name = getObject(sensor[i]).common.name; on(sensor[i] + '.state', function (dp) { if(dp.state.val >= 23.5) { var name = getObject(sensor[i]).common.name; sendTo('telegram.0', { text: 'Die Temperatur vom Sensor ' + name + ' ist über 23.5°C gestiegen. Die aktuelle Temperatur beträgt ' + dp.state.val + '°C.' }); } }); }
Dies mache ich, weil mal die Homematic-IP Heizkörper mal so aus ihrer Range rauslaufen, jedenfalls ist es bei mir 2-3malo vorgekommen. Allerdings werden die Heizkörper jetzt aufgrund der aktuellen Temperaturen schon so warm.
Hier noch die Funktionskategorie als Screenshot:
Jetzt möchte ich, das obigen Skript nur ausgeführt wird und eine Nachricht versendet wird, wenn dieses Element auf heating und nicht auf idle steht:
hass.0.entities.climate.hmip_heizkorperthermostat_schlafzimmer.hvac_action
Allerdings ist der Objektpfad wo anders, siehe Screenshot.
Vielleicht hat jemand eine gute Idee, wie man das skripten kann, bzw. wie man von den Elementen in der Funktionskategorie mittels wegschneiden und hinzufügen auf das genannte Objekt kommt.
LG, Mitch
-
-
@paul53 sagte in Bei höherer Temperatur und heating-Mermal Teleg. versenden:
@mitch sagte: Hier noch die Funktionskategorie als Screenshot:
Das ist nicht "enum.functions.heating_temperature".
Weshalb verwendest du nicht den Selektor?
Das stimmt, ich habe den Screenshot ausgetauscht. Was kann man mit dem Selektor machen?
-
@mitch sagte: Was kann man mit dem Selektor machen?
Etwa so, wenn "hass.0.entities.climate.hmip_heizkorperthermostat_schlafzimmer.hvac_action" einen String liefert:
const idsTemp = $('*.state(functions=heating_temperature)').toArray(); on(idsTemp, function (dp) { const idHVAC = dp.id.replace('sensor', 'climate').replace('_temperatur.state', '.hvac_action'); const hvac = getState(idHVAC).val; if(hvac == 'heating' && dp.state.val >= 23.5 && dp.oldState.val < 23.5) { const name = getObject(dp.id.replace('.state', '')).common.name; sendTo('telegram.0', { text: 'Die Temperatur vom Sensor ' + name + ' ist über 23.5°C gestiegen. Die aktuelle Temperatur beträgt ' + dp.state.val + '°C.' }); } });
-
Vielen Dank, ich teste die Anpassung aus.
Noch eine Verständnisfrage:
Woher nimmst du oldstate? Kann man das irgendwo über die Objektansicht abfragen? Oder ist ein ioBroker Standard?
-