<phyphox version="1.10">
    <title>CO₂-Monitor Maintenance</title>
    <category>CO₂-Sensor</category>
    <color>23AA47</color>
    <description>Maintenance and configuration of the CO₂ sensor.</description>
    <icon format="string">CO₂</icon>
    <data-containers>
        <container size="1">co_in</container>
        <container size="1">temp_in</container>
        <container size="1">hum_in</container>
        <container size="1">time_in</container>
        <container size="1" init="0">calibrationMode</container>
		<container size="1" init="0">temp_offset</container>
		<container size="1" init="0">temp_offset10</container>
		
        <container size="1" init="0">calButton</container>
        <container size="6">byteArray</container>
		
		<container size="1" init="0">statusCoCalibration</container>
		<container size="1" init="0">currentOffset</container>
		<container size="1" init="0">version</container>		
		
    </data-containers>
    <input>
        <bluetooth id="CO2" name="CO2"  mode="notification" rate="1" subscribeOnStart="false">
            <output char="cddf1002-30f7-4671-8b43-5e40ba53514a" conversion="singleByte" >currentOffset</output>
			<output char="cddf1002-30f7-4671-8b43-5e40ba53514a" conversion="singleByte" offset="1">statusCoCalibration</output>
			<output char="cddf1002-30f7-4671-8b43-5e40ba53514a" conversion="singleByte" offset="2">version</output>
            <output char="cddf1002-30f7-4671-8b43-5e40ba53514a" conversion="float32LittleEndian" offset="3">co_in</output>
            <output char="cddf1002-30f7-4671-8b43-5e40ba53514a" conversion="float32LittleEndian" offset="7">temp_in</output>
            <output char="cddf1002-30f7-4671-8b43-5e40ba53514a" conversion="float32LittleEndian" offset="11">hum_in</output>
			<output char="cddf1002-30f7-4671-8b43-5e40ba53514a" conversion="float32LittleEndian" offset="15">time_in</output>
			
        </bluetooth>
    </input>
    <output>
        <bluetooth id="CO2">
            <input char="cddf1003-30f7-4671-8b43-5e40ba53514a" conversion="byteArray">byteArray</input>
        </bluetooth>
    </output>
    <analysis sleep="0.2" onUserInput="false">

        <!--_____________________________________-->
        <!--|         Calibration button        |-->
        <!--¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯-->

        <multiply>
            <input type="value">10</input>
            <input clear="false" >temp_offset</input>
            <output as="product">temp_offset10</output>
		</multiply>

        <append>
            <input type="value">0</input>
            <input >calibrationMode</input>
            <input type="value">0</input>
            <input type="value">0</input>
            <input type="value">0</input>
			<input clear="false">temp_offset10</input>
            <output as="out">byteArray</output>
		</append>

        <if equal="true">
            <input clear="false">calButton</input>
            <input type="value">0</input>
            <input type="empty" />
            <output as="result" clear="true">byteArray</output>
        </if>
				
        <append>
            <input type="value">0</input>
            <output as="out">calButton</output>
		</append>

    </analysis>
    <views>
        <view label="CO₂">
            <value label="CO₂" size="1" precision="2" scientific="false" unit="ppm" >
                <input>co_in</input>
            </value>
            <separator height="1" />
            <value label="Temperature" size="1" precision="2" scientific="false" unit="°C">
                <input>temp_in</input>
            </value>
            <separator height="1" />
            <value label="Humidity" size="1" precision="2" scientific="false" unit="%">
                <input>hum_in</input>
            </value>
			<separator height="1" />
            <info size="1.2" label="Place the CO₂-Monitor outside or in front of an opened window to guarantee fresh air. Wait for 5 minutes to exchange the air in the measuring chamber. Afterwards press the calibration button below to set the CO₂-Value to 400 ppm" />
			
            <separator height="1" />
            <separator color="white" />
            <separator height="1" />

			<value label="Status:">
				<input>statusCoCalibration</input>
				<map min="0" max="0">waiting for calibration</map>
				<map min="1" max="1">calibration received</map>		
			</value>				

            <separator height="1" />
            <separator color="white" />
            <separator height="1" />
			
            <button label="Calibrate with fresh air">
                <input type="value">1</input>
                <output>calButton</output>
                <input type="value">1</input>
                <output>calibrationMode</output>					
            </button>			
        </view>
        <view label="Temperature">
            <value label="SCD30 Temperature" size="1" precision="2" scientific="false" unit="°C">
                <input>temp_in</input>
            </value>		
            <separator height="1" />

			<info size="1.2" label="Due to the housing, the temperature near the sensor may heat up, causing it to indicate a higher temperature than the actual ambient temperature. To reduce this effect, you may enter a temperature offset." />

			<separator height="1" />
            <separator color="white" />
            <separator height="1" />
			
			<edit label="Offset" signed="false" decimal="true" unit="°C"  factor="1" default="0">
                <output>temp_offset</output>
            </edit>
            <separator height="1" />			

			<value label="Current used offset" unit="°C" factor="0.1">
				<input>currentOffset</input>
			</value>

			<separator height="1" />
            <separator color="white" />
            <separator height="1" />
			
            <button label="Set Temperatureoffset">
                <input type="value">2</input>
                <output>calButton</output>
                <input type="value">2</input>
                <output>calibrationMode</output>				
            </button>			
		</view>
    </views>
    <export>
    </export>
</phyphox>