Esphome and mqtt publish

hi
i have a wemos mini
i want it to send mqtt messages when D4 est high

In esphome i did that but nothing is sent

esphome:
  name: esphome-web-13ed31
esp8266:
  board: d1_mini
# Enable logging
logger:

mqtt:
  broker: 192.168.1.22
  username: xxxxx
  password: xxxxxx
  discovery: yes
ota:
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  ap:
    ssid: "xxxx"
    password: "xxxxxxx"
captive_portal:
binary_sensor:
  - platform: gpio
    name: zone2
    on_press:
      then:
        - mqtt.publish:
            topic: mqtt
            payload: "on"

    on_click:
      then:
        - mqtt.publish:
            topic: mqtt
            payload: "bbutt"
    pin:
      number: D4
    device_class: door

do you know why?
thx