More air quality sensors

This commit is contained in:
Michael Zanetti 2022-10-10 23:28:15 +02:00
parent 6b88d72335
commit d88844feba
17 changed files with 1355 additions and 59 deletions

View File

@ -182,6 +182,8 @@ QString Types::toUiUnit(Types::Unit unit) const
return "%";
case Types::UnitPartsPerMillion:
return "ppm";
case Types::UnitPartsPerBillion:
return "ppb";
case Types::UnitEuro:
return "";
case Types::UnitDollar:
@ -238,6 +240,8 @@ QString Types::toUiUnit(Types::Unit unit) const
return "l";
case Types::UnitFluidOunce:
return "fl oz";
case Types::UnitMicroGrammPerCubicalMeter:
return "µg/m³";
}
return "";

View File

@ -95,6 +95,7 @@ public:
UnitEuroCentPerKiloWattHour,
UnitPercentage,
UnitPartsPerMillion,
UnitPartsPerBillion,
UnitEuro,
UnitDollar,
UnitHertz,
@ -112,6 +113,7 @@ public:
UnitRpm,
UnitMilligramPerLiter,
UnitLiter,
UnitMicroGrammPerCubicalMeter,
// Those do not exist in nymea:core at this point, Adding them for easier conversion to imperial
UnitDegreeFahrenheit,

View File

@ -289,5 +289,10 @@
<file>ui/images/zigbee/zigbee-sibling.svg</file>
<file>ui/images/zigbee/zigbee-previous-child.svg</file>
<file>ui/images/arrow-down.svg</file>
<file>ui/images/sensors/voc.svg</file>
<file>ui/images/sensors/pm25.svg</file>
<file>ui/images/sensors/o3.svg</file>
<file>ui/images/sensors/pm10.svg</file>
<file>ui/images/sensors/no2.svg</file>
</qresource>
</RCC>

View File

@ -174,6 +174,7 @@ int main(int argc, char *argv[])
qmlRegisterSingletonType<PushNotifications>("Nymea", 1, 0, "PushNotifications", PushNotifications::pushNotificationsProvider);
qmlRegisterSingletonType(QUrl("qrc:///ui/utils/NymeaUtils.qml"), "Nymea", 1, 0, "NymeaUtils" );
qmlRegisterSingletonType(QUrl("qrc:///ui/utils/AirQualityIndex.qml"), "Nymea", 1, 0, "AirQualityIndex" );
qmlRegisterType<DashboardModel>("Nymea", 1, 0, "DashboardModel");
qmlRegisterUncreatableType<DashboardItem>("Nymea", 1, 0, "DashboardItem", "");

View File

@ -278,5 +278,6 @@
<file>ui/system/zwave/ZWaveNetworkSettingsPage.qml</file>
<file>ui/components/ActivityIndicator.qml</file>
<file>ui/system/zigbee/ZigbeeNodePage.qml</file>
<file>ui/utils/AirQualityIndex.qml</file>
</qresource>
</RCC>

View File

@ -198,8 +198,12 @@ ApplicationWindow {
return qsTr("CO level")
case "co2sensor":
return qsTr("CO2 level")
case "no2sensor":
return qsTr("Nitrogen dioxide leve")
case "gassensor":
return qsTr("Flammable gas level")
case "vocsensor":
return qsTr("VOC level")
case "inputtrigger":
return qsTr("Incoming Events");
case "outputtrigger":
@ -298,6 +302,16 @@ ApplicationWindow {
return Qt.resolvedUrl("images/sensors/co.svg")
case "co2sensor":
return Qt.resolvedUrl("images/sensors/co2.svg")
case "no2sensor":
return Qt.resolvedUrl("images/sensors/no2.svg")
case "o3sensor":
return Qt.resolvedUrl("images/sensors/o3.svg")
case "vocsensor":
return Qt.resolvedUrl("images/sensors/voc.svg")
case "pm10sensor":
return Qt.resolvedUrl("images/sensors/pm10.svg")
case "pm25sensor":
return Qt.resolvedUrl("images/sensors/pm25.svg")
case "gassensor":
return Qt.resolvedUrl("images/sensors/gas.svg")
case "daylightsensor":

View File

@ -84,6 +84,7 @@ Item {
property color blue: "#5c95cd"
property color purple: "#955ccd"
property color rose: "#cd5c95"
property color darkGreen: "#5ccd5e"
// Icon/graph colors for various interfaces
property var interfaceColors: {
@ -96,6 +97,8 @@ Item {
"noisesensor": purple,
"cosensor": darkGray,
"co2sensor": turquoise,
"pm10sensor": lightGray,
"pm25sensor": gray,
"gassensor": orange,
"daylightsensor": yellow,
"presencesensor": darkBlue,
@ -117,7 +120,10 @@ Item {
"orpsensor": yellow,
"powersocket": lime,
"evcharger": lime,
"energystorage": lime
"energystorage": lime,
"vocsensor": green,
"o3sensor": blue,
"no2sensor": purple
}
property var stateColors: {

View File

@ -94,6 +94,11 @@ ThingsListPageBase {
ListElement { interfaceName: "o2sensor"; stateName: "o2saturation" }
ListElement { interfaceName: "phsensor"; stateName: "ph" }
ListElement { interfaceName: "orpsensor"; stateName: "orp" }
ListElement { interfaceName: "vocsensor"; stateName: "voc" }
ListElement { interfaceName: "pm10sensor"; stateName: "pm10" }
ListElement { interfaceName: "pm25sensor"; stateName: "pm25" }
ListElement { interfaceName: "no2sensor"; stateName: "no2" }
ListElement { interfaceName: "o3sensor"; stateName: "o3" }
}
delegate: RowLayout {

View File

@ -57,9 +57,13 @@ ThingPageBase {
"waterlevelsensor": "waterLevel",
"phsensor": "ph",
"o2sensor": "o2saturation",
"o3sensor": "o3",
"orpsensor": "orp",
"airquality": "airQuality",
"indoorairquality": "indoorAirQuality"
"vocsensor": "voc",
"cosensor": "co",
"pm10sensor": "pm10",
"pm25sensor": "pm25",
"no2sensor": "no2"
}
ListModel {
@ -141,25 +145,29 @@ ThingPageBase {
if (["temperaturesensor"].indexOf(modelData) >= 0) {
return Types.toUiValue(-50, Types.UnitDegreeCelsius)
}
if (["pressuresensor"].indexOf(modelData) >= 0) {
return Types.toUiValue(900, Types.UnitMilliBar)
}
return state.minValue
}
property var maxValue: {
if (["temperaturesensor"].indexOf(modelData) >= 0) {
return Types.toUiValue(50, Types.UnitDegreeCelsius)
}
if (["pressuresensor"].indexOf(modelData) >= 0) {
return Types.toUiValue(1100, Types.UnitMilliBar)
}
return state.maxValue
}
sourceComponent: {
var handledInterfaces = [
var progressInterfaces = [
"humiditysensor",
"o2sensor",
"temperaturesensor",
"moisturesensor",
"co2sensor",
"conductivitysensor",
"cosensor",
"co2sensor",
"gassensor",
"lightsensor",
"orpsensor",
@ -168,9 +176,21 @@ ThingPageBase {
"waterlevelsensor",
"windspeedsensor"
]
if (handledInterfaces.indexOf(modelData) >= 0) {
if (progressInterfaces.indexOf(modelData) >= 0) {
return progressComponent
}
var scaleInterfaces = [
"vocsensor",
"cosensor",
"co2sensor",
"o3sensor",
"pm10sensor",
"pm25sensor",
"no2sensor"
]
if (scaleInterfaces.indexOf(modelData) >= 0) {
return scaleComponent
}
}
}
}
@ -344,11 +364,13 @@ ThingPageBase {
Label {
anchors.centerIn: parent
anchors.verticalCenter: -Style.smallMargins
width: parent.width * 0.6
text: Types.toUiValue(progressCanvas.state.value, progressCanvas.stateType.unit).toFixed(1) + " " + Types.toUiUnit(progressCanvas.stateType.unit)
font.pixelSize: Math.min(Style.hugeFont.pixelSize, parent.height / 6)
font.pixelSize: Math.min(Style.largeFont.pixelSize, parent.height / 6)
wrapMode: Text.WordWrap
horizontalAlignment: Text.AlignHCenter
maximumLineCount: 2
}
onPaint: {
@ -383,8 +405,9 @@ ThingPageBase {
}
ColorIcon {
anchors.centerIn: parent
anchors.verticalCenterOffset: progressCanvas.height / 2 - height
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: parent.bottom
anchors.bottomMargin: Style.smallMargins
name: app.interfaceToIcon(progressCanvas.interfaceName)
size: Math.min(Style.bigIconSize, parent.height / 5)
color: app.interfaceToColor(progressCanvas.interfaceName)
@ -392,5 +415,177 @@ ThingPageBase {
}
}
Component {
id: scaleComponent
Canvas {
id: scaleCanvas
property string interfaceName: parent.interfaceName
property StateType stateType: parent.stateType
property State state: parent.state
property var minValue: parent.minValue
property var maxValue: parent.maxValue
property int scaleWidth: width * .1
property var scale: {
switch (interfaceName) {
case "vocsensor":
return AirQualityIndex.iaqVoc
case "cosensor":
return AirQualityIndex.caqiCo
case "o3sensor":
return AirQualityIndex.caqiO3
case "pm10sensor":
return AirQualityIndex.caqiPm10
case "pm25sensor":
return AirQualityIndex.caqiPm25
case "no2sensor":
return AirQualityIndex.caqiNo2
}
return baseScale
}
property var baseScale: [
{
"value": maxValue,
"angle": 270,
"color": Style.tileOverlayColor
}
]
property var currentIndex: {
for (var i = 0; i < scale.length; i++) {
if (state.value <= scale[i].value) {
return i;
}
}
log.warn("Value out of scale!")
return -1
}
property double angle: {
var baseAngle = 0
var baseValue = 0;
if (currentIndex > 0) {
baseAngle = scale[currentIndex-1].angle
baseValue = scale[currentIndex-1].value
}
var valueRange = scale[currentIndex].value - baseValue
var angleRange = scale[currentIndex].angle - baseAngle
var progress = (state.value - baseValue) / (scale[currentIndex].value - baseValue)
return baseAngle + angleRange * progress
}
Behavior on angle { NumberAnimation { duration: Style.slowAnimationDuration; easing.type: Easing.InOutQuad } }
onAngleChanged: requestPaint();
ColumnLayout {
anchors.centerIn: parent
anchors.verticalCenterOffset: -Style.smallMargins
width: parent.width * 0.6
Label {
Layout.fillWidth: true
text: scaleCanvas.scale[scaleCanvas.currentIndex].text
font.pixelSize: Math.min(Style.largeFont.pixelSize, scaleCanvas.height / 6)
wrapMode: Text.WordWrap
// color: scaleCanvas.scale[scaleCanvas.currentIndex].color
horizontalAlignment: Text.AlignHCenter
maximumLineCount: 2
}
Label {
Layout.fillWidth: true
text: Types.toUiValue(scaleCanvas.state.value, scaleCanvas.stateType.unit).toFixed(1) + " " + Types.toUiUnit(scaleCanvas.stateType.unit)
font.pixelSize: Math.min(Style.smallFont.pixelSize, scaleCanvas.height / 12)
wrapMode: Text.WordWrap
horizontalAlignment: Text.AlignHCenter
}
}
onPaint: {
var ctx = getContext("2d");
ctx.reset();
ctx.beginPath()
ctx.fillStyle = Style.foregroundColor
ctx.translate(width / 2, height / 2)
ctx.rotate(135 * Math.PI / 180)
ctx.lineCap = "round"
ctx.lineWidth = scaleCanvas.scaleWidth
// paint first rounded
ctx.beginPath()
ctx.strokeStyle = scaleCanvas.scale[0].color
var startAngle = 0
var endAngle = scaleCanvas.scale[0].angle * Math.PI/180
ctx.arc(0, 0, width / 2 - ctx.lineWidth / 2, startAngle, endAngle)
ctx.stroke()
ctx.closePath()
// paint last rounded
ctx.beginPath()
ctx.strokeStyle = scaleCanvas.scale[scaleCanvas.scale.length - 1].color
startAngle = scaleCanvas.scale[scaleCanvas.scale.length - 2].angle * Math.PI/180
endAngle = scaleCanvas.scale[scaleCanvas.scale.length - 1].angle * Math.PI/180
ctx.arc(0, 0, width / 2 - ctx.lineWidth / 2, startAngle, endAngle)
ctx.stroke()
ctx.closePath()
// paint inner parts
ctx.lineCap = "butt"
for (var i = 1; i < scaleCanvas.scale.length - 1; i++) {
ctx.beginPath()
ctx.strokeStyle = scaleCanvas.scale[i].color
startAngle = scaleCanvas.scale[i - 1].angle * Math.PI/180
endAngle = scaleCanvas.scale[i].angle * Math.PI/180
ctx.arc(0, 0, width / 2 - ctx.lineWidth / 2, startAngle, endAngle)
ctx.stroke()
ctx.closePath()
}
var tipRadius = width / 2 - scaleCanvas.scaleWidth
var baseRadius = tipRadius - scaleCanvas.scaleWidth / 2
var tipX = tipRadius * Math.cos(scaleCanvas.angle * Math.PI/180)
var tipY = tipRadius * Math.sin(scaleCanvas.angle * Math.PI/180)
var base1X = baseRadius * Math.cos((scaleCanvas.angle - 5) * Math.PI/180)
var base1Y = baseRadius * Math.sin((scaleCanvas.angle - 5) * Math.PI/180)
var base2X = baseRadius * Math.cos((scaleCanvas.angle + 5) * Math.PI/180)
var base2Y = baseRadius * Math.sin((scaleCanvas.angle + 5) * Math.PI/180)
ctx.lineWidth = 1
ctx.fillStyle = Style.foregroundColor
ctx.beginPath()
ctx.moveTo(tipX, tipY)
ctx.lineTo(base1X, base1Y)
ctx.lineTo(base2X, base2Y)
ctx.moveTo(tipX, tipY)
ctx.stroke()
ctx.fill()
ctx.closePath()
// ctx.beginPath()
// ctx.strokeStyle = app.interfaceToColor(progressCanvas.interfaceName)
// radEnd *= progressCanvas.progress
// ctx.arc(0, 0, width / 2 - ctx.lineWidth / 2, radStart, radEnd)
// ctx.stroke()
// ctx.closePath()
}
ColorIcon {
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: parent.bottom
anchors.bottomMargin: Style.smallMargins
// anchors.verticalCenterOffset: scaleCanvas.height / 2 - height
name: app.interfaceToIcon(scaleCanvas.interfaceName)
size: Math.min(Style.bigIconSize, parent.height / 5)
color: app.interfaceToColor(scaleCanvas.interfaceName)
}
}
}
}

View File

@ -2,20 +2,20 @@
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="90"
height="90"
id="svg6138"
version="1.1"
inkscape:version="0.91+devel r"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
viewBox="0 0 90 90.000001"
sodipodi:docname="sync-error.svg">
sodipodi:docname="co.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs6140" />
<sodipodi:namedview
@ -25,9 +25,9 @@
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="2.6077032"
inkscape:cx="-148.24923"
inkscape:cy="56.003297"
inkscape:zoom="3.7787338"
inkscape:cx="32.153628"
inkscape:cy="57.162005"
inkscape:document-units="px"
inkscape:current-layer="g6253"
showgrid="true"
@ -50,7 +50,13 @@
inkscape:snap-object-midpoints="true"
inkscape:snap-center="true"
showguides="true"
inkscape:guide-bbox="true">
inkscape:guide-bbox="true"
inkscape:pagecheckerboard="0"
inkscape:window-width="1462"
inkscape:window-height="933"
inkscape:window-x="74"
inkscape:window-y="27"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid6700"
@ -112,7 +118,6 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
@ -134,21 +139,23 @@
height="90"
x="174"
y="1700.3622" />
<path
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.99999988"
d="m 221.99999,1732.3622 0,8.5799 c 0,2.5213 -0.0933,4.8561 -0.2793,7.0086 -0.18602,2.1215 -0.43607,4.2591 -0.74609,6.4114 l -3.99805,0 c -0.27903,-2.1523 -0.51126,-4.2899 -0.69726,-6.4114 -0.18602,-2.1217 -0.2793,-4.4565 -0.2793,-7.0086 l 0,-8.5799 6,0 z"
id="path4185"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.99999994"
d="m 218.99999,1758.3622 c 1.10006,0 2.04956,0.3867 2.84961,1.1582 0.76673,0.738 1.15039,1.6912 1.15039,2.8653 0,1.174 -0.38366,2.1311 -1.15039,2.8691 -0.80005,0.738 -1.74955,1.1074 -2.84961,1.1074 -1.13341,0 -2.08291,-0.3694 -2.84961,-1.1074 -0.76673,-0.738 -1.15039,-1.6951 -1.15039,-2.8691 0,-1.1741 0.38366,-2.1273 1.15039,-2.8653 0.7667,-0.7715 1.7162,-1.1582 2.84961,-1.1582 z"
id="path4942" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:none;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 212.5,1714.3613 c -11.29815,0 -20.5,9.2019 -20.5,20.5 l 0,0.01 0,0.01 c 0.002,0.2497 0.0454,0.4967 0.0566,0.7461 -10.15029,1.2279 -18.0494,9.7961 -18.05664,20.2363 0,11.2982 9.20185,20.5 20.5,20.5 l 49,0 c 11.29815,0 20.5,-9.2018 20.5,-20.5 l 0,-0 c -0.0116,-8.9301 -5.844,-16.696 -14.21094,-19.4063 0.0644,-0.5317 0.21041,-1.0527 0.21094,-1.5898 l 0,-0 c 0,-7.4321 -6.06785,-13.5 -13.5,-13.5 l -0.002,0 -0.002,0 c -2.55665,0 -4.93658,0.9271 -7.07421,2.2754 -3.76777,-5.6712 -10.02107,-9.2653 -16.91993,-9.2754 l -0.002,0 z m -0.002,4 0.002,0 c 6.1355,0.01 11.75025,3.4089 14.59766,8.8418 l 1.18945,2.2676 1.91211,-1.7031 c 1.73553,-1.5457 3.97683,-2.4018 6.30078,-2.4063 5.27039,0 9.5,4.2296 9.5,9.5 -0.001,0.8309 -0.11279,1.6591 -0.33008,2.4629 l -0.54297,2.0117 2.03125,0.461 c 7.51333,1.7082 12.82999,8.3597 12.8418,16.0644 0,7e-4 0,0 0,0 0,6e-4 0,0 0,0 -0.002,9.1346 -7.36493,16.4961 -16.5,16.4961 l -49,0 c -9.13573,0 -16.49893,-7.3625 -16.5,-16.498 l 0,-0 c 0.007,-9.023 7.2045,-16.3348 16.22656,-16.4843 l 2.27539,-0.037 -0.33007,-2.25 c -0.10801,-0.7397 -0.16511,-1.4866 -0.17188,-2.2343 0.003,-9.133 7.36456,-16.4931 16.49805,-16.4942 z"
id="path4154"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:26.6667px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none"
x="-237.37332"
y="1764.6155"
id="text2000"
transform="scale(-1,1)"><tspan
sodipodi:role="line"
id="tspan1998"
x="-237.37332"
y="1764.6155"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.6667px;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;fill:#808080;fill-opacity:1">CO</tspan></text>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

@ -2,20 +2,20 @@
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="90"
height="90"
id="svg6138"
version="1.1"
inkscape:version="0.91+devel r"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
viewBox="0 0 90 90.000001"
sodipodi:docname="sync-error.svg">
sodipodi:docname="co2.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs6140" />
<sodipodi:namedview
@ -25,9 +25,9 @@
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="2.6077032"
inkscape:cx="-148.24923"
inkscape:cy="56.003297"
inkscape:zoom="3.7079942"
inkscape:cx="54.072361"
inkscape:cy="65.803771"
inkscape:document-units="px"
inkscape:current-layer="g6253"
showgrid="true"
@ -50,7 +50,13 @@
inkscape:snap-object-midpoints="true"
inkscape:snap-center="true"
showguides="true"
inkscape:guide-bbox="true">
inkscape:guide-bbox="true"
inkscape:pagecheckerboard="0"
inkscape:window-width="1462"
inkscape:window-height="933"
inkscape:window-x="74"
inkscape:window-y="27"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid6700"
@ -112,7 +118,6 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
@ -134,21 +139,23 @@
height="90"
x="174"
y="1700.3622" />
<path
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.99999988"
d="m 221.99999,1732.3622 0,8.5799 c 0,2.5213 -0.0933,4.8561 -0.2793,7.0086 -0.18602,2.1215 -0.43607,4.2591 -0.74609,6.4114 l -3.99805,0 c -0.27903,-2.1523 -0.51126,-4.2899 -0.69726,-6.4114 -0.18602,-2.1217 -0.2793,-4.4565 -0.2793,-7.0086 l 0,-8.5799 6,0 z"
id="path4185"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.99999994"
d="m 218.99999,1758.3622 c 1.10006,0 2.04956,0.3867 2.84961,1.1582 0.76673,0.738 1.15039,1.6912 1.15039,2.8653 0,1.174 -0.38366,2.1311 -1.15039,2.8691 -0.80005,0.738 -1.74955,1.1074 -2.84961,1.1074 -1.13341,0 -2.08291,-0.3694 -2.84961,-1.1074 -0.76673,-0.738 -1.15039,-1.6951 -1.15039,-2.8691 0,-1.1741 0.38366,-2.1273 1.15039,-2.8653 0.7667,-0.7715 1.7162,-1.1582 2.84961,-1.1582 z"
id="path4942" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:none;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 212.5,1714.3613 c -11.29815,0 -20.5,9.2019 -20.5,20.5 l 0,0.01 0,0.01 c 0.002,0.2497 0.0454,0.4967 0.0566,0.7461 -10.15029,1.2279 -18.0494,9.7961 -18.05664,20.2363 0,11.2982 9.20185,20.5 20.5,20.5 l 49,0 c 11.29815,0 20.5,-9.2018 20.5,-20.5 l 0,-0 c -0.0116,-8.9301 -5.844,-16.696 -14.21094,-19.4063 0.0644,-0.5317 0.21041,-1.0527 0.21094,-1.5898 l 0,-0 c 0,-7.4321 -6.06785,-13.5 -13.5,-13.5 l -0.002,0 -0.002,0 c -2.55665,0 -4.93658,0.9271 -7.07421,2.2754 -3.76777,-5.6712 -10.02107,-9.2653 -16.91993,-9.2754 l -0.002,0 z m -0.002,4 0.002,0 c 6.1355,0.01 11.75025,3.4089 14.59766,8.8418 l 1.18945,2.2676 1.91211,-1.7031 c 1.73553,-1.5457 3.97683,-2.4018 6.30078,-2.4063 5.27039,0 9.5,4.2296 9.5,9.5 -0.001,0.8309 -0.11279,1.6591 -0.33008,2.4629 l -0.54297,2.0117 2.03125,0.461 c 7.51333,1.7082 12.82999,8.3597 12.8418,16.0644 0,7e-4 0,0 0,0 0,6e-4 0,0 0,0 -0.002,9.1346 -7.36493,16.4961 -16.5,16.4961 l -49,0 c -9.13573,0 -16.49893,-7.3625 -16.5,-16.498 l 0,-0 c 0.007,-9.023 7.2045,-16.3348 16.22656,-16.4843 l 2.27539,-0.037 -0.33007,-2.25 c -0.10801,-0.7397 -0.16511,-1.4866 -0.17188,-2.2343 0.003,-9.133 7.36456,-16.4931 16.49805,-16.4942 z"
id="path4154"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:26.6667px;line-height:1.25;font-family:sans-serif;fill:#808080;fill-opacity:1;stroke:none"
x="-244.68001"
y="1764.6155"
id="text1788"
transform="scale(-1,1)"><tspan
sodipodi:role="line"
id="tspan1786"
x="-244.68001"
y="1764.6155"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.6667px;font-family:ubuntu;-inkscape-font-specification:ubuntu;fill:#808080;fill-opacity:1">CO2</tspan></text>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

@ -0,0 +1,161 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="90"
height="90"
id="svg6138"
version="1.1"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
viewBox="0 0 90 90.000001"
sodipodi:docname="no2.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs6140" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="4.534967"
inkscape:cx="35.832675"
inkscape:cy="71.224333"
inkscape:document-units="px"
inkscape:current-layer="g6253"
showgrid="true"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:snap-global="true"
inkscape:snap-bbox="true"
inkscape:bbox-paths="true"
inkscape:snap-bbox-midpoints="true"
inkscape:snap-bbox-edge-midpoints="true"
inkscape:bbox-nodes="true"
inkscape:object-paths="true"
inkscape:snap-intersection-paths="true"
inkscape:object-nodes="true"
inkscape:snap-smooth-nodes="true"
inkscape:snap-midpoints="true"
inkscape:snap-others="true"
inkscape:snap-object-midpoints="true"
inkscape:snap-center="true"
showguides="true"
inkscape:guide-bbox="true"
inkscape:pagecheckerboard="0"
inkscape:window-width="1462"
inkscape:window-height="933"
inkscape:window-x="74"
inkscape:window-y="27"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid6700"
empspacing="6" />
<sodipodi:guide
orientation="0,1"
position="62,87"
id="guide4084" />
<sodipodi:guide
orientation="0,1"
position="63,84"
id="guide4086" />
<sodipodi:guide
orientation="0,1"
position="63,81"
id="guide4088" />
<sodipodi:guide
orientation="1,0"
position="3,70"
id="guide4090" />
<sodipodi:guide
orientation="1,0"
position="6,66"
id="guide4092" />
<sodipodi:guide
orientation="1,0"
position="9,59"
id="guide4094" />
<sodipodi:guide
orientation="1,0"
position="87,63"
id="guide4096" />
<sodipodi:guide
orientation="1,0"
position="84,64"
id="guide4098" />
<sodipodi:guide
orientation="1,0"
position="81,55"
id="guide4100" />
<sodipodi:guide
orientation="0,1"
position="60,3"
id="guide4102" />
<sodipodi:guide
orientation="0,1"
position="61,6"
id="guide4104" />
<sodipodi:guide
orientation="0,1"
position="62,9"
id="guide4106" />
</sodipodi:namedview>
<metadata
id="metadata6143">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-283.57144,-358.79068)">
<g
id="g6253"
inkscape:export-filename="planemode01.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"
transform="matrix(-1,0,0,1,547.57143,-1341.5715)">
<rect
style="fill:none;stroke:none"
id="rect6257"
width="90"
height="90"
x="174"
y="1700.3622" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:none;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 212.5,1714.3613 c -11.29815,0 -20.5,9.2019 -20.5,20.5 l 0,0.01 0,0.01 c 0.002,0.2497 0.0454,0.4967 0.0566,0.7461 -10.15029,1.2279 -18.0494,9.7961 -18.05664,20.2363 0,11.2982 9.20185,20.5 20.5,20.5 l 49,0 c 11.29815,0 20.5,-9.2018 20.5,-20.5 l 0,-0 c -0.0116,-8.9301 -5.844,-16.696 -14.21094,-19.4063 0.0644,-0.5317 0.21041,-1.0527 0.21094,-1.5898 l 0,-0 c 0,-7.4321 -6.06785,-13.5 -13.5,-13.5 l -0.002,0 -0.002,0 c -2.55665,0 -4.93658,0.9271 -7.07421,2.2754 -3.76777,-5.6712 -10.02107,-9.2653 -16.91993,-9.2754 l -0.002,0 z m -0.002,4 0.002,0 c 6.1355,0.01 11.75025,3.4089 14.59766,8.8418 l 1.18945,2.2676 1.91211,-1.7031 c 1.73553,-1.5457 3.97683,-2.4018 6.30078,-2.4063 5.27039,0 9.5,4.2296 9.5,9.5 -0.001,0.8309 -0.11279,1.6591 -0.33008,2.4629 l -0.54297,2.0117 2.03125,0.461 c 7.51333,1.7082 12.82999,8.3597 12.8418,16.0644 0,7e-4 0,0 0,0 0,6e-4 0,0 0,0 -0.002,9.1346 -7.36493,16.4961 -16.5,16.4961 l -49,0 c -9.13573,0 -16.49893,-7.3625 -16.5,-16.498 l 0,-0 c 0.007,-9.023 7.2045,-16.3348 16.22656,-16.4843 l 2.27539,-0.037 -0.33007,-2.25 c -0.10801,-0.7397 -0.16511,-1.4866 -0.17188,-2.2343 0.003,-9.133 7.36456,-16.4931 16.49805,-16.4942 z"
id="path4154"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:26.6667px;line-height:1.25;font-family:sans-serif;fill:#808080;fill-opacity:1;stroke:none"
x="-246.76001"
y="1764.5826"
id="text2250"
transform="scale(-1,1)"><tspan
sodipodi:role="line"
id="tspan2248"
x="-246.76001"
y="1764.5826"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.6667px;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;fill:#808080;fill-opacity:1">NO2</tspan></text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

@ -0,0 +1,161 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="90"
height="90"
id="svg6138"
version="1.1"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
viewBox="0 0 90 90.000001"
sodipodi:docname="03.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs6140" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="3.7787338"
inkscape:cx="25.537655"
inkscape:cy="57.162005"
inkscape:document-units="px"
inkscape:current-layer="g6253"
showgrid="true"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:snap-global="true"
inkscape:snap-bbox="true"
inkscape:bbox-paths="true"
inkscape:snap-bbox-midpoints="true"
inkscape:snap-bbox-edge-midpoints="true"
inkscape:bbox-nodes="true"
inkscape:object-paths="true"
inkscape:snap-intersection-paths="true"
inkscape:object-nodes="true"
inkscape:snap-smooth-nodes="true"
inkscape:snap-midpoints="true"
inkscape:snap-others="true"
inkscape:snap-object-midpoints="true"
inkscape:snap-center="true"
showguides="true"
inkscape:guide-bbox="true"
inkscape:pagecheckerboard="0"
inkscape:window-width="1462"
inkscape:window-height="933"
inkscape:window-x="74"
inkscape:window-y="27"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid6700"
empspacing="6" />
<sodipodi:guide
orientation="0,1"
position="62,87"
id="guide4084" />
<sodipodi:guide
orientation="0,1"
position="63,84"
id="guide4086" />
<sodipodi:guide
orientation="0,1"
position="63,81"
id="guide4088" />
<sodipodi:guide
orientation="1,0"
position="3,70"
id="guide4090" />
<sodipodi:guide
orientation="1,0"
position="6,66"
id="guide4092" />
<sodipodi:guide
orientation="1,0"
position="9,59"
id="guide4094" />
<sodipodi:guide
orientation="1,0"
position="87,63"
id="guide4096" />
<sodipodi:guide
orientation="1,0"
position="84,64"
id="guide4098" />
<sodipodi:guide
orientation="1,0"
position="81,55"
id="guide4100" />
<sodipodi:guide
orientation="0,1"
position="60,3"
id="guide4102" />
<sodipodi:guide
orientation="0,1"
position="61,6"
id="guide4104" />
<sodipodi:guide
orientation="0,1"
position="62,9"
id="guide4106" />
</sodipodi:namedview>
<metadata
id="metadata6143">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-283.57144,-358.79068)">
<g
id="g6253"
inkscape:export-filename="planemode01.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"
transform="matrix(-1,0,0,1,547.57143,-1341.5715)">
<rect
style="fill:none;stroke:none"
id="rect6257"
width="90"
height="90"
x="174"
y="1700.3622" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:none;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 212.5,1714.3613 c -11.29815,0 -20.5,9.2019 -20.5,20.5 l 0,0.01 0,0.01 c 0.002,0.2497 0.0454,0.4967 0.0566,0.7461 -10.15029,1.2279 -18.0494,9.7961 -18.05664,20.2363 0,11.2982 9.20185,20.5 20.5,20.5 l 49,0 c 11.29815,0 20.5,-9.2018 20.5,-20.5 l 0,-0 c -0.0116,-8.9301 -5.844,-16.696 -14.21094,-19.4063 0.0644,-0.5317 0.21041,-1.0527 0.21094,-1.5898 l 0,-0 c 0,-7.4321 -6.06785,-13.5 -13.5,-13.5 l -0.002,0 -0.002,0 c -2.55665,0 -4.93658,0.9271 -7.07421,2.2754 -3.76777,-5.6712 -10.02107,-9.2653 -16.91993,-9.2754 l -0.002,0 z m -0.002,4 0.002,0 c 6.1355,0.01 11.75025,3.4089 14.59766,8.8418 l 1.18945,2.2676 1.91211,-1.7031 c 1.73553,-1.5457 3.97683,-2.4018 6.30078,-2.4063 5.27039,0 9.5,4.2296 9.5,9.5 -0.001,0.8309 -0.11279,1.6591 -0.33008,2.4629 l -0.54297,2.0117 2.03125,0.461 c 7.51333,1.7082 12.82999,8.3597 12.8418,16.0644 0,7e-4 0,0 0,0 0,6e-4 0,0 0,0 -0.002,9.1346 -7.36493,16.4961 -16.5,16.4961 l -49,0 c -9.13573,0 -16.49893,-7.3625 -16.5,-16.498 l 0,-0 c 0.007,-9.023 7.2045,-16.3348 16.22656,-16.4843 l 2.27539,-0.037 -0.33007,-2.25 c -0.10801,-0.7397 -0.16511,-1.4866 -0.17188,-2.2343 0.003,-9.133 7.36456,-16.4931 16.49805,-16.4942 z"
id="path4154"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:26.6667px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none"
x="-236.66667"
y="1764.6155"
id="text2000"
transform="scale(-1,1)"><tspan
sodipodi:role="line"
id="tspan1998"
x="-236.66667"
y="1764.6155"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.6667px;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;fill:#808080;fill-opacity:1">O3</tspan></text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

@ -0,0 +1,161 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="90"
height="90"
id="svg6138"
version="1.1"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
viewBox="0 0 90 90.000001"
sodipodi:docname="pm10.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs6140" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="4.534967"
inkscape:cx="25.909781"
inkscape:cy="71.224333"
inkscape:document-units="px"
inkscape:current-layer="g6253"
showgrid="true"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:snap-global="true"
inkscape:snap-bbox="true"
inkscape:bbox-paths="true"
inkscape:snap-bbox-midpoints="true"
inkscape:snap-bbox-edge-midpoints="true"
inkscape:bbox-nodes="true"
inkscape:object-paths="true"
inkscape:snap-intersection-paths="true"
inkscape:object-nodes="true"
inkscape:snap-smooth-nodes="true"
inkscape:snap-midpoints="true"
inkscape:snap-others="true"
inkscape:snap-object-midpoints="true"
inkscape:snap-center="true"
showguides="true"
inkscape:guide-bbox="true"
inkscape:pagecheckerboard="0"
inkscape:window-width="1462"
inkscape:window-height="933"
inkscape:window-x="74"
inkscape:window-y="27"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid6700"
empspacing="6" />
<sodipodi:guide
orientation="0,1"
position="62,87"
id="guide4084" />
<sodipodi:guide
orientation="0,1"
position="63,84"
id="guide4086" />
<sodipodi:guide
orientation="0,1"
position="63,81"
id="guide4088" />
<sodipodi:guide
orientation="1,0"
position="3,70"
id="guide4090" />
<sodipodi:guide
orientation="1,0"
position="6,66"
id="guide4092" />
<sodipodi:guide
orientation="1,0"
position="9,59"
id="guide4094" />
<sodipodi:guide
orientation="1,0"
position="87,63"
id="guide4096" />
<sodipodi:guide
orientation="1,0"
position="84,64"
id="guide4098" />
<sodipodi:guide
orientation="1,0"
position="81,55"
id="guide4100" />
<sodipodi:guide
orientation="0,1"
position="60,3"
id="guide4102" />
<sodipodi:guide
orientation="0,1"
position="61,6"
id="guide4104" />
<sodipodi:guide
orientation="0,1"
position="62,9"
id="guide4106" />
</sodipodi:namedview>
<metadata
id="metadata6143">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-283.57144,-358.79068)">
<g
id="g6253"
inkscape:export-filename="planemode01.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"
transform="matrix(-1,0,0,1,547.57143,-1341.5715)">
<rect
style="fill:none;stroke:none"
id="rect6257"
width="90"
height="90"
x="174"
y="1700.3622" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:none;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 212.5,1714.3613 c -11.29815,0 -20.5,9.2019 -20.5,20.5 l 0,0.01 0,0.01 c 0.002,0.2497 0.0454,0.4967 0.0566,0.7461 -10.15029,1.2279 -18.0494,9.7961 -18.05664,20.2363 0,11.2982 9.20185,20.5 20.5,20.5 l 49,0 c 11.29815,0 20.5,-9.2018 20.5,-20.5 l 0,-0 c -0.0116,-8.9301 -5.844,-16.696 -14.21094,-19.4063 0.0644,-0.5317 0.21041,-1.0527 0.21094,-1.5898 l 0,-0 c 0,-7.4321 -6.06785,-13.5 -13.5,-13.5 l -0.002,0 -0.002,0 c -2.55665,0 -4.93658,0.9271 -7.07421,2.2754 -3.76777,-5.6712 -10.02107,-9.2653 -16.91993,-9.2754 l -0.002,0 z m -0.002,4 0.002,0 c 6.1355,0.01 11.75025,3.4089 14.59766,8.8418 l 1.18945,2.2676 1.91211,-1.7031 c 1.73553,-1.5457 3.97683,-2.4018 6.30078,-2.4063 5.27039,0 9.5,4.2296 9.5,9.5 -0.001,0.8309 -0.11279,1.6591 -0.33008,2.4629 l -0.54297,2.0117 2.03125,0.461 c 7.51333,1.7082 12.82999,8.3597 12.8418,16.0644 0,7e-4 0,0 0,0 0,6e-4 0,0 0,0 -0.002,9.1346 -7.36493,16.4961 -16.5,16.4961 l -49,0 c -9.13573,0 -16.49893,-7.3625 -16.5,-16.498 l 0,-0 c 0.007,-9.023 7.2045,-16.3348 16.22656,-16.4843 l 2.27539,-0.037 -0.33007,-2.25 c -0.10801,-0.7397 -0.16511,-1.4866 -0.17188,-2.2343 0.003,-9.133 7.36456,-16.4931 16.49805,-16.4942 z"
id="path4154"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:26.6667px;line-height:1.25;font-family:sans-serif;fill:#808080;fill-opacity:1;stroke:none"
x="-254.24001"
y="1764.5826"
id="text2250"
transform="scale(-1,1)"><tspan
sodipodi:role="line"
id="tspan2248"
x="-254.24001"
y="1764.5826"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.6667px;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;fill:#808080;fill-opacity:1">PM10</tspan></text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

@ -0,0 +1,161 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="90"
height="90"
id="svg6138"
version="1.1"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
viewBox="0 0 90 90.000001"
sodipodi:docname="pm25.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs6140" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="4.534967"
inkscape:cx="69.129499"
inkscape:cy="71.224333"
inkscape:document-units="px"
inkscape:current-layer="g6253"
showgrid="true"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:snap-global="true"
inkscape:snap-bbox="true"
inkscape:bbox-paths="true"
inkscape:snap-bbox-midpoints="true"
inkscape:snap-bbox-edge-midpoints="true"
inkscape:bbox-nodes="true"
inkscape:object-paths="true"
inkscape:snap-intersection-paths="true"
inkscape:object-nodes="true"
inkscape:snap-smooth-nodes="true"
inkscape:snap-midpoints="true"
inkscape:snap-others="true"
inkscape:snap-object-midpoints="true"
inkscape:snap-center="true"
showguides="true"
inkscape:guide-bbox="true"
inkscape:pagecheckerboard="0"
inkscape:window-width="1462"
inkscape:window-height="933"
inkscape:window-x="74"
inkscape:window-y="27"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid6700"
empspacing="6" />
<sodipodi:guide
orientation="0,1"
position="62,87"
id="guide4084" />
<sodipodi:guide
orientation="0,1"
position="63,84"
id="guide4086" />
<sodipodi:guide
orientation="0,1"
position="63,81"
id="guide4088" />
<sodipodi:guide
orientation="1,0"
position="3,70"
id="guide4090" />
<sodipodi:guide
orientation="1,0"
position="6,66"
id="guide4092" />
<sodipodi:guide
orientation="1,0"
position="9,59"
id="guide4094" />
<sodipodi:guide
orientation="1,0"
position="87,63"
id="guide4096" />
<sodipodi:guide
orientation="1,0"
position="84,64"
id="guide4098" />
<sodipodi:guide
orientation="1,0"
position="81,55"
id="guide4100" />
<sodipodi:guide
orientation="0,1"
position="60,3"
id="guide4102" />
<sodipodi:guide
orientation="0,1"
position="61,6"
id="guide4104" />
<sodipodi:guide
orientation="0,1"
position="62,9"
id="guide4106" />
</sodipodi:namedview>
<metadata
id="metadata6143">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-283.57144,-358.79068)">
<g
id="g6253"
inkscape:export-filename="planemode01.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"
transform="matrix(-1,0,0,1,547.57143,-1341.5715)">
<rect
style="fill:none;stroke:none"
id="rect6257"
width="90"
height="90"
x="174"
y="1700.3622" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:none;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 212.5,1714.3613 c -11.29815,0 -20.5,9.2019 -20.5,20.5 l 0,0.01 0,0.01 c 0.002,0.2497 0.0454,0.4967 0.0566,0.7461 -10.15029,1.2279 -18.0494,9.7961 -18.05664,20.2363 0,11.2982 9.20185,20.5 20.5,20.5 l 49,0 c 11.29815,0 20.5,-9.2018 20.5,-20.5 l 0,-0 c -0.0116,-8.9301 -5.844,-16.696 -14.21094,-19.4063 0.0644,-0.5317 0.21041,-1.0527 0.21094,-1.5898 l 0,-0 c 0,-7.4321 -6.06785,-13.5 -13.5,-13.5 l -0.002,0 -0.002,0 c -2.55665,0 -4.93658,0.9271 -7.07421,2.2754 -3.76777,-5.6712 -10.02107,-9.2653 -16.91993,-9.2754 l -0.002,0 z m -0.002,4 0.002,0 c 6.1355,0.01 11.75025,3.4089 14.59766,8.8418 l 1.18945,2.2676 1.91211,-1.7031 c 1.73553,-1.5457 3.97683,-2.4018 6.30078,-2.4063 5.27039,0 9.5,4.2296 9.5,9.5 -0.001,0.8309 -0.11279,1.6591 -0.33008,2.4629 l -0.54297,2.0117 2.03125,0.461 c 7.51333,1.7082 12.82999,8.3597 12.8418,16.0644 0,7e-4 0,0 0,0 0,6e-4 0,0 0,0 -0.002,9.1346 -7.36493,16.4961 -16.5,16.4961 l -49,0 c -9.13573,0 -16.49893,-7.3625 -16.5,-16.498 l 0,-0 c 0.007,-9.023 7.2045,-16.3348 16.22656,-16.4843 l 2.27539,-0.037 -0.33007,-2.25 c -0.10801,-0.7397 -0.16511,-1.4866 -0.17188,-2.2343 0.003,-9.133 7.36456,-16.4931 16.49805,-16.4942 z"
id="path4154"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:26.6667px;line-height:1.25;font-family:sans-serif;fill:#808080;fill-opacity:1;stroke:none"
x="-257.21332"
y="1764.5826"
id="text2250"
transform="scale(-1,1)"><tspan
sodipodi:role="line"
id="tspan2248"
x="-257.21332"
y="1764.5826"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.6667px;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;fill:#808080;fill-opacity:1">PM2.5</tspan></text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

@ -0,0 +1,161 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="90"
height="90"
id="svg6138"
version="1.1"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
viewBox="0 0 90 90.000001"
sodipodi:docname="voc.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs6140" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="3.6259"
inkscape:cx="30.750986"
inkscape:cy="65.363083"
inkscape:document-units="px"
inkscape:current-layer="g6253"
showgrid="true"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:snap-global="true"
inkscape:snap-bbox="true"
inkscape:bbox-paths="true"
inkscape:snap-bbox-midpoints="true"
inkscape:snap-bbox-edge-midpoints="true"
inkscape:bbox-nodes="true"
inkscape:object-paths="true"
inkscape:snap-intersection-paths="true"
inkscape:object-nodes="true"
inkscape:snap-smooth-nodes="true"
inkscape:snap-midpoints="true"
inkscape:snap-others="true"
inkscape:snap-object-midpoints="true"
inkscape:snap-center="true"
showguides="true"
inkscape:guide-bbox="true"
inkscape:pagecheckerboard="0"
inkscape:window-width="1462"
inkscape:window-height="933"
inkscape:window-x="74"
inkscape:window-y="27"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid6700"
empspacing="6" />
<sodipodi:guide
orientation="0,1"
position="62,87"
id="guide4084" />
<sodipodi:guide
orientation="0,1"
position="63,84"
id="guide4086" />
<sodipodi:guide
orientation="0,1"
position="63,81"
id="guide4088" />
<sodipodi:guide
orientation="1,0"
position="3,70"
id="guide4090" />
<sodipodi:guide
orientation="1,0"
position="6,66"
id="guide4092" />
<sodipodi:guide
orientation="1,0"
position="9,59"
id="guide4094" />
<sodipodi:guide
orientation="1,0"
position="87,63"
id="guide4096" />
<sodipodi:guide
orientation="1,0"
position="84,64"
id="guide4098" />
<sodipodi:guide
orientation="1,0"
position="81,55"
id="guide4100" />
<sodipodi:guide
orientation="0,1"
position="60,3"
id="guide4102" />
<sodipodi:guide
orientation="0,1"
position="61,6"
id="guide4104" />
<sodipodi:guide
orientation="0,1"
position="62,9"
id="guide4106" />
</sodipodi:namedview>
<metadata
id="metadata6143">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-283.57144,-358.79068)">
<g
id="g6253"
inkscape:export-filename="planemode01.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"
transform="matrix(-1,0,0,1,547.57143,-1341.5715)">
<rect
style="fill:none;stroke:none"
id="rect6257"
width="90"
height="90"
x="174"
y="1700.3622" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:none;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 212.5,1714.3613 c -11.29815,0 -20.5,9.2019 -20.5,20.5 l 0,0.01 0,0.01 c 0.002,0.2497 0.0454,0.4967 0.0566,0.7461 -10.15029,1.2279 -18.0494,9.7961 -18.05664,20.2363 0,11.2982 9.20185,20.5 20.5,20.5 l 49,0 c 11.29815,0 20.5,-9.2018 20.5,-20.5 l 0,-0 c -0.0116,-8.9301 -5.844,-16.696 -14.21094,-19.4063 0.0644,-0.5317 0.21041,-1.0527 0.21094,-1.5898 l 0,-0 c 0,-7.4321 -6.06785,-13.5 -13.5,-13.5 l -0.002,0 -0.002,0 c -2.55665,0 -4.93658,0.9271 -7.07421,2.2754 -3.76777,-5.6712 -10.02107,-9.2653 -16.91993,-9.2754 l -0.002,0 z m -0.002,4 0.002,0 c 6.1355,0.01 11.75025,3.4089 14.59766,8.8418 l 1.18945,2.2676 1.91211,-1.7031 c 1.73553,-1.5457 3.97683,-2.4018 6.30078,-2.4063 5.27039,0 9.5,4.2296 9.5,9.5 -0.001,0.8309 -0.11279,1.6591 -0.33008,2.4629 l -0.54297,2.0117 2.03125,0.461 c 7.51333,1.7082 12.82999,8.3597 12.8418,16.0644 0,7e-4 0,0 0,0 0,6e-4 0,0 0,0 -0.002,9.1346 -7.36493,16.4961 -16.5,16.4961 l -49,0 c -9.13573,0 -16.49893,-7.3625 -16.5,-16.498 l 0,-0 c 0.007,-9.023 7.2045,-16.3348 16.22656,-16.4843 l 2.27539,-0.037 -0.33007,-2.25 c -0.10801,-0.7397 -0.16511,-1.4866 -0.17188,-2.2343 0.003,-9.133 7.36456,-16.4931 16.49805,-16.4942 z"
id="path4154"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:26.6667px;line-height:1.25;font-family:sans-serif;fill:#808080;fill-opacity:1;stroke:none"
x="-245.95999"
y="1764.6155"
id="text1722"
transform="scale(-1,1)"><tspan
sodipodi:role="line"
id="tspan1720"
x="-245.95999"
y="1764.6155"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.6667px;font-family:ubuntu;-inkscape-font-specification:ubuntu;fill:#808080;fill-opacity:1">VOC</tspan></text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

@ -0,0 +1,244 @@
pragma Singleton
import QtQuick 2.9
import Nymea 1.0
Item {
id: root
property var caqiPm10: [
{
"value": 25,
"angle": 54,
"text": qsTr("Very low"),
"color": Style.blue
},
{
"value": 50,
"angle": 108,
"text": qsTr("Low"),
"color": Style.green
},
{
"value": 90,
"angle": 162,
"text": qsTr("Medium"),
"color": Style.yellow
},
{
"value": 180,
"angle": 216,
"text": qsTr("High"),
"color": Style.orange
},
{
"value": 500,
"angle": 270,
"text": qsTr("Very high"),
"color": Style.red
}
]
property var caqiPm25: [
{
"value": 15,
"angle": 54,
"text": qsTr("Very low"),
"color": Style.blue
},
{
"value": 30,
"angle": 108,
"text": qsTr("Low"),
"color": Style.green
},
{
"value": 55,
"angle": 162,
"text": qsTr("Medium"),
"color": Style.yellow
},
{
"value": 110,
"angle": 216,
"text": qsTr("High"),
"color": Style.orange
},
{
"value": 500,
"angle": 270,
"text": qsTr("Very high"),
"color": Style.red
}
]
property var caqiO3: [
{
"value": 60,
"angle": 54,
"text": qsTr("Very low"),
"color": Style.blue
},
{
"value": 120,
"angle": 108,
"text": qsTr("Low"),
"color": Style.green
},
{
"value": 180,
"angle": 162,
"text": qsTr("Medium"),
"color": Style.yellow
},
{
"value": 240,
"angle": 216,
"text": qsTr("High"),
"color": Style.orange
},
{
"value": 500,
"angle": 270,
"text": qsTr("Very high"),
"color": Style.red
}
]
property var caqiNo2: [
{
"value": 50,
"angle": 54,
"text": qsTr("Very low"),
"color": Style.blue
},
{
"value": 100,
"angle": 108,
"text": qsTr("Low"),
"color": Style.green
},
{
"value": 200,
"angle": 162,
"text": qsTr("Medium"),
"color": Style.yellow
},
{
"value": 400,
"angle": 216,
"text": qsTr("High"),
"color": Style.orange
},
{
"value": 800,
"angle": 270,
"text": qsTr("Very high"),
"color": Style.red
}
]
property var caqiCo: [
{
"value": 5,
"angle": 54,
"text": qsTr("Very low"),
"color": Style.blue
},
{
"value": 7.5,
"angle": 108,
"text": qsTr("Low"),
"color": Style.green
},
{
"value": 10,
"angle": 162,
"text": qsTr("Medium"),
"color": Style.yellow
},
{
"value": 20,
"angle": 216,
"text": qsTr("High"),
"color": Style.orange
},
{
"value": 50,
"angle": 270,
"text": qsTr("Very high"),
"color": Style.red
}
]
property var iaqVoc: [
{
"value": 65,
"angle": 54,
"text": qsTr("Excellent"),
"color": Style.blue
},
{
"value": 220,
"angle": 108,
"text": qsTr("Good"),
"color": Style.green
},
{
"value": 660,
"angle": 162,
"text": qsTr("Moderate"),
"color": Style.yellow
},
{
"value": 2200,
"angle": 216,
"text": qsTr("Poor"),
"color": Style.orange
},
{
"value": 65535,
"angle": 270,
"text": qsTr("Unhealthy"),
"color": Style.red
}
]
property var epaAqiO3: [
{
"value": 54,
"angle": 54,
"text": qsTr("Good"),
"color": Style.blue
},
{
"value": 70,
"angle": 108,
"text": qsTr("Moderate"),
"color": Style.blue
},
{
"value": 85,
"angle": 162,
"text": qsTr("Unhealthy for sensitive groups"),
"color": Style.yellow
},
{
"value": 105,
"angle": 216,
"text": qsTr("Unhealthy"),
"color": Style.orange
},
{
"value": 200,
"angle": 270,
"text": qsTr("Very unhealthy"),
"color": Style.red
},
{
"value": 200,
"angle": 270,
"text": qsTr("Hazardeous"),
"color": Style.purple
}
]
}