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
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login