NEWS
Homekit Luftwerte ausgeben als Qualität
-
Mit diesem Script steuere ich in Homekit die Anzeige der Luftqualität. Der schlechtere der beiden Werte wird für die Gesamtbewertung genommen.

Was braucht ihr:
- CO2 oder
- VOC oder
- beides
- Yhaka Adapter
Einbauen:
- Script in global_Funktionen einfügen
// Luftqualität für Homekit // 1 beste Qualität, 5 schlechteste Qualität // es wird immer die schlechteste Qualität ausgegeben. function bewerteLuftqualitaet(co2, voc) { var co2Bewertung = 0; var vocBewertung = 0; // 1 sehr gut - 5 sehr schlecht if (co2 < 800) { co2Bewertung = 1; } else if (co2 < 1000) { co2Bewertung = 2; } else if (co2 < 1200) { co2Bewertung = 3; } else if (co2 < 1400) { co2Bewertung = 4; } else { co2Bewertung = 5; } if (voc < 65) { vocBewertung = 1; } else if (voc < 220) { vocBewertung = 2; } else if (voc < 660) { vocBewertung = 3; } else if (voc < 5500) { vocBewertung = 4; } else { vocBewertung = 5; } if (co2Bewertung > vocBewertung) { return co2Bewertung ; } else { return vocBewertung; } }2. Datenpunkte anlegen:
Ihr müsst für jeden Raum einen Raumklima Wert anlegen. Wenn ihr meine Pfade nutzt, müsst ihr nichts weiter anpassen:
0_userdata.0.Raumklima.Raumklima_<raum>
Den Raumnamen nehme ich aus dem Objektname des Auslösers - dass heißt, dass der Raumname immer gleich sein muss, sonst wird nichts geschrieben.
Das folgende Script müsst ihr noch anlegen und laufen lassen. Die Sensoren lese ich als array aus - da müsst ihr mal schauen, wie die bei Euch heißen. Meine werden über openknx ausgelesen und kommen von Steinel true presence - bei mir heissen die immer
- CO2_Messwert
- VOC_Messwert
// Luftqualität für Homekit berechnen on({ id: [].concat(Array.prototype.slice.apply($('channel[state.id=*VOC_Messwert*]'))).concat(Array.prototype.slice.apply($('channel[state.id=*CO2_Messwert*]'))), change: 'ne' }, async (obj) => { console.log('Datenpunkt ' + obj.id + ' wurde geändert.'); // hier lese ich den Raum aus meinen KNX Daten, in dem ich den String nach Punkten teile und mir das Teil mit dem Raumname nehme. var datenpunkt = obj.id; var teile = datenpunkt.split('.'); //console.log(teile); var haus = teile[4]; //console.log("haus:" + haus) teile = haus.split('_'); var raum = teile[0]; // jetzt baue ich den Raumnamen ein, so dass das ganze Script übersichtlich bleibt. var co2=getState("openknx.0.Messwerte_BWM.Haus."+raum+"_CO2_Messwert").val; var voc=getState("openknx.0.Messwerte_BWM.Haus."+raum+"_VOC_Messwert").val; setState("0_userdata.0.Raumklima.Raumklima_"+raum,bewerteLuftqualitaet(co2,voc)); console.log(raum + "-Luftqualität: "+bewerteLuftqualitaet(co2,voc) ); });In Yahka legt ihr einen Airquality Sensor an.
In den Datenpunkten Airqality tragt ihr dann den Datenpunkt für die Qualität ein
z.b. Arbeitszimmer: 0_userdata.0.Raumklima.Raumklima_Arbeitszimmer
Ihr könnt natürlich noch unter dem Voc Sensor die Vocdaten eintragen.

Das war es schon. Bei Fragen einfach fragen.
Gruß Tom -
Mit diesem Script steuere ich in Homekit die Anzeige der Luftqualität. Der schlechtere der beiden Werte wird für die Gesamtbewertung genommen.

Was braucht ihr:
- CO2 oder
- VOC oder
- beides
- Yhaka Adapter
Einbauen:
- Script in global_Funktionen einfügen
// Luftqualität für Homekit // 1 beste Qualität, 5 schlechteste Qualität // es wird immer die schlechteste Qualität ausgegeben. function bewerteLuftqualitaet(co2, voc) { var co2Bewertung = 0; var vocBewertung = 0; // 1 sehr gut - 5 sehr schlecht if (co2 < 800) { co2Bewertung = 1; } else if (co2 < 1000) { co2Bewertung = 2; } else if (co2 < 1200) { co2Bewertung = 3; } else if (co2 < 1400) { co2Bewertung = 4; } else { co2Bewertung = 5; } if (voc < 65) { vocBewertung = 1; } else if (voc < 220) { vocBewertung = 2; } else if (voc < 660) { vocBewertung = 3; } else if (voc < 5500) { vocBewertung = 4; } else { vocBewertung = 5; } if (co2Bewertung > vocBewertung) { return co2Bewertung ; } else { return vocBewertung; } }2. Datenpunkte anlegen:
Ihr müsst für jeden Raum einen Raumklima Wert anlegen. Wenn ihr meine Pfade nutzt, müsst ihr nichts weiter anpassen:
0_userdata.0.Raumklima.Raumklima_<raum>
Den Raumnamen nehme ich aus dem Objektname des Auslösers - dass heißt, dass der Raumname immer gleich sein muss, sonst wird nichts geschrieben.
Das folgende Script müsst ihr noch anlegen und laufen lassen. Die Sensoren lese ich als array aus - da müsst ihr mal schauen, wie die bei Euch heißen. Meine werden über openknx ausgelesen und kommen von Steinel true presence - bei mir heissen die immer
- CO2_Messwert
- VOC_Messwert
// Luftqualität für Homekit berechnen on({ id: [].concat(Array.prototype.slice.apply($('channel[state.id=*VOC_Messwert*]'))).concat(Array.prototype.slice.apply($('channel[state.id=*CO2_Messwert*]'))), change: 'ne' }, async (obj) => { console.log('Datenpunkt ' + obj.id + ' wurde geändert.'); // hier lese ich den Raum aus meinen KNX Daten, in dem ich den String nach Punkten teile und mir das Teil mit dem Raumname nehme. var datenpunkt = obj.id; var teile = datenpunkt.split('.'); //console.log(teile); var haus = teile[4]; //console.log("haus:" + haus) teile = haus.split('_'); var raum = teile[0]; // jetzt baue ich den Raumnamen ein, so dass das ganze Script übersichtlich bleibt. var co2=getState("openknx.0.Messwerte_BWM.Haus."+raum+"_CO2_Messwert").val; var voc=getState("openknx.0.Messwerte_BWM.Haus."+raum+"_VOC_Messwert").val; setState("0_userdata.0.Raumklima.Raumklima_"+raum,bewerteLuftqualitaet(co2,voc)); console.log(raum + "-Luftqualität: "+bewerteLuftqualitaet(co2,voc) ); });In Yahka legt ihr einen Airquality Sensor an.
In den Datenpunkten Airqality tragt ihr dann den Datenpunkt für die Qualität ein
z.b. Arbeitszimmer: 0_userdata.0.Raumklima.Raumklima_Arbeitszimmer
Ihr könnt natürlich noch unter dem Voc Sensor die Vocdaten eintragen.

Das war es schon. Bei Fragen einfach fragen.
Gruß Tom@tomtom24
Hallo Tom,
vielen Dank für diese Lösung. Ich habe nach deiner Anleitung erfolgreich einen KNX-Sensor in HomeKit integrieren können. Ich suche allerdings noch nach einer Lösung um die ppb, welche vom KNX-Sensor (ebenfalls ein Steinel Multisensor) kommen, nach ug/m³ umzurechnen.
Auch die Möglichkeit die Einheit in HomeKit zu ändern habe ich nicht gefunden.Hast du vielleicht eine idee?
LG
BooStar
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden