PCF85063 Time Source
====================

You first need to set up the :doc:`I2C </components/i2c>` component.

.. code-block:: yaml

    # Example configuration entry
    time:
      - platform: pcf85063
        id: pcf85063_time

Configuration variables
-----------------------

- **address** (*Optional*, int): Manually specify the I²C address of the RTC. Defaults to ``0x51``.
- All other options from :ref:`base_time_config`.


.. _pcf85063-write_time_action:

``pcf85063.write_time`` Action
------------------------------

This :ref:`Action <config-action>` triggers a synchronization of the current system time to the RTC hardware.

.. note::

    PCFe pcf85063 component will *not* write the RTC clock if not triggered *explicitly* by this action.

.. code-block:: yaml

    on_...:
      - pcf85063.write_time

      # in case you need to specify the PCF85063 id
      - pcf85063.write_time:
          id: pcf85063_time


.. _pcf85063-read_time_action:

``pcf85063.read_time`` Action
-----------------------------

This :ref:`Action <config-action>` triggers a synchronization of the current system time from the RTC hardware.

.. note::

    The PCF85063 component will automatically read the RTC clock every 15 minutes by default and synchronize the
    system clock when a valid timestamp was read from the RTC. (The ``update_interval`` can be changed.)
    This action can be used to trigger *additional* synchronizations.

.. code-block:: yaml

    on_...:
      - pcf85063.read_time

      # in case you need to specify the DS1307 id
      - pcf85063.read_time:
          id: pcf85063_time


.. _pcf85063-config_example:

Full Configuration Example
--------------------------

In a typical setup, you will have at least one additional time source to synchronize the RTC with. Such an
external time source might not always be available e.g. due to a limited network connection.
In order to have a valid, reliable system time, the system should read the RTC once at start and then try to
synchronize with an external reliable time source.
When a synchronization to another time source was successful, the RTC can be resynchronized.

.. code-block:: yaml

    esphome:
      on_boot:
        then:
          # read the RTC time once when the system boots
          pcf85063.read_time:

    time:
      - platform: pcf85063
        # repeated synchronization is not necessary unless the external RTC
        # is much more accurate than the internal clock
        update_interval: never
      - platform: homeassistant
        # instead try to synchronize via network repeatedly ...
        on_time_sync:
          then:
            # ... and update the RTC when the synchronization was successful
            pcf85063.write_time:


See Also
--------

- :ghedit:`Edit`
