mir ist aufgefallen, dass eine Regel nicht wie gewollt funktioniert. Ich habe zwei Temperaturen von unterschiedlichen Quellen, die in zwei verschiedenen Regeln verglichen werden. In ersten Fall funktioniert das nur mit .state im zweiten Fall nur mit .numericState. Mir ist an der Stelle nicht klar wo der Unterschied liegt. Beide Items sind vom Typ Number mit der Einheit °C .
Fall 1 liefert ein getItem folgendes:
Code: Alles auswählen
{
"link": "https://openhab.athome.xx:8443/rest/items/Kuhltruhe_Temperatur__Temperatur",
"state": "-20.44 °C",
"stateDescription": {
"pattern": "%.2f %unit%",
"readOnly": true,
"options": []
},
"unitSymbol": "°C",
"metadata": {
"semantics": {
"value": "Point",
"config": {
"isPointOf": "Kuhltruhe_Temperatur_"
}
}
},
"editable": true,
"type": "Number:Temperature",
"name": "Kuhltruhe_Temperatur__Temperatur",
"label": "Temperatur",
"category": "Temperature",
"tags": [
"Point"
],
"groupNames": [
"Kuhltruhe_Temperatur_"
]
}
Code: Alles auswählen
var logger = Java.type('org.slf4j.LoggerFactory').getLogger('org.openhab.rule.' + ctx.ruleUID);
var telegramAction = actions.get("telegram","telegram:telegramBot:076f70b110");
var tempist = itemRegistry.getItem('Kuhltruhe_Temperatur__Temperatur').state;
//logger.info("Im Gefrierschrank sind es " + tempist );
if (tempist > -18) {
telegramAction.sendTelegram("Achtung! Im Gefrierschrank sind es " + tempist );
logger.info("Warnung Gefrierschrank an Telegram Bot geschickt. Temperatur: " + tempist);
}
Code: Alles auswählen
{
"link": "https://openhab.athome.xx:8443/rest/items/Wetter_12h_MinimaleTemperatur",
"state": "7.54 °C",
"stateDescription": {
"pattern": "%.1f %unit%",
"readOnly": true,
"options": []
},
"unitSymbol": "°C",
"metadata": {
"semantics": {
"value": "Point",
"config": {
"hasLocation": "OpenWeatherMap"
}
}
},
"editable": true,
"type": "Number:Temperature",
"name": "Wetter_12h_MinimaleTemperatur",
"label": "Minimale Temperatur 12h",
"category": "Temperature",
"tags": [
"Point"
],
"groupNames": [
"OpenWeatherMap"
]
}
Code: Alles auswählen
var logger = Java.type('org.slf4j.LoggerFactory').getLogger('org.openhab.rule.' + ctx.ruleUID);
var things = Java.type('org.openhab.core.model.script.actions.Things');
var temp12hMin = items.getItem('Wetter_12h_MinimaleTemperatur').numericState ; //ohne numericState klappte der Vergleich nicht
var offset = 0;
if (temp12hMin < 0 ) {
offset = 1;
}
if (temp12hMin > 8) {
offset = -1;
}
items.getItem('gThermostatOffset').sendCommand(offset);
logger.info("Temp 12h min: " + temp12hMin + " Offset: " + offset );