Fingerprint reader Arduino MQTT problem

Hi all. I’ve just setup a fingerprint sensor using an AS608 and ESP8266 using this guide to setup an Arduino MQTT integration. How to build a WiFi connected Fingerprint Sensor with Home Assistant

The sensor is working fine as verified through Arduino serial monitor and I’ve successfully made an automation to open a door by reading info within the MQTT state topic but my lovelace cards which should show the state of reading/learning entities are just showing a status “unknown” and don’t seem to be getting any info through MQTT. When I subscribe to the relevant topics they are being received by my Home Assistant MQTT server but the entities don’t seem to be ‘connecting’ to them.

This is the configuration code I used to try to set up the entities; I’m suspecting it’s some kind of json formatting problem but I just don’t know enough about programming to identify the problem. Anyone able to help please?

 sensor:  
  - platform: mqtt
    name: "Fingerprint"
    state_topic: "/fingerprint/mode/status"
    value_template: "{{value_json.state}}"
    json_attributes_topic: "/fingerprint/mode/status"
    json_attributes_template: "{{value_json | tojson}}"
  - platform: template
    sensors:
      fingerprint_mode:
        unique_id: fingmode
        friendly_name: "Fingerprint Sensor Mode"
        value_template: >-
          {{ state_attr('sensor.fingerprint', 'mode') }}
        icon_template: >-
          {% if is_state('sensor.fingerprint_mode', 'reading') %}
            mdi:book-open-outline
          {% elif is_state('sensor.fingerprint_mode', 'learning') %}
            mdi:book-open-page-variant
          {% endif %}
      fingerprint_state:
        unique_id: fingstate
        friendly_name: "Fingerprint State"
        value_template: >-
          {{ states('sensor.fingerprint') }}
        icon_template: >-
          {% if is_state('sensor.fingerprint', 'Waiting') %}
            mdi:fingerprint
          {% elif is_state('sensor.fingerprint', 'Matched') %}
            mdi:fingerprint
          {% elif is_state('sensor.fingerprint', 'Not matched') %}
            mdi:fingerprint-off
          {% endif %}
      fingerprint_id:
        unique_id: fingid
        friendly_name: "Fingerprint ID"
        value_template: >-
          {{ state_attr('sensor.fingerprint', 'id') }}
      fingerprint_person:
        unique_id: fingperson
        friendly_name: "Fingerprint Person"
        value_template: >-
          {% if is_state('sensor.fingerprint_id', '1') %}
            Lewis
          {% elif states.sensor.fingerprint_id.state | int > 1 %}
            {{states.sensor.fingerprint_id.state}}
          {% elif is_state('sensor.fingerprint', 'Waiting') %}
            Waiting
          {% elif is_state('sensor.fingerprint', 'Not matched') %}
            Not matched
          {% endif %}
        icon_template: >-
          {% if is_state('sensor.fingerprint', 'Waiting') %}
            mdi:human-male
          {% elif is_state('sensor.fingerprint', 'Matched') %}
            mdi:human-greeting
          {% elif is_state('sensor.fingerprint', 'Not matched') %}
            mdi:police-badge
          {% endif %}

Figured it out. Parent MQTT entity was formatted wrong.