Multiple Published Topics from ESP8266

Hello, I have my code nearly done for a project which sends an instance of OneWire Temperature probe to my node red, as well as a DHT11 Temperature/Humidity Reading.

One of my last steps is where I am getting stuck. I am receiving this Error when compiling (See Below).
Basically when I publish two topics (DHTTemperature) and (humidity) it works. But when I add a third: (OWTemp), I receive the following Error:

This third topic I am adding myself. The other two were created in a tutorial with Rui Santos (Randomnerdtutorials).

Any help would be greatly appreciated!! Thanks!

The second line of code is my entire project.

In function 'void loop()':
error: no matching function for call to 'PubSubClient::publish(const char [12], float&)'
     client.publish("room/OWTemp", temperatureF);
note: boolean PubSubClient::publish(const char*, const char*)
    boolean publish(const char* topic, const char* payload);
no known conversion for argument 2 from 'float' to 'const char*'
note: boolean PubSubClient::publish(const char*, const char*, boolean)
    boolean publish(const char* topic, const char* payload, boolean retained);
boolean PubSubClient::publish(const char*, const uint8_t*, unsigned int)
    boolean publish(const char* topic, const uint8_t * payload, unsigned int plength);
boolean PubSubClient::publish(const char*, const uint8_t*, unsigned int, boolean)
    boolean publish(const char* topic, const uint8_t * payload, unsigned int plength, boolean retained);
candidate expects 4 arguments, 2 provided exit status 1
no matching function for call to 'PubSubClient::publish(const char [12], float&)'
//--DHT 11 | Status LED | OLED 0.96 SD1306 | OneWire | MQTT |
//  D1: GPIO 5 - Connected to SCL of OLED 
//  D2: GPIO 4 - Connected to SDA of OLED
//  D3: GPIO 0 - Connected to Temperature Probe
//  D4: GPIO 2 - Connected to DHT11
//  D7: GPIO 13- Connected to On/Off LED
//  D8: GPIO 8 - Connected to Connection LED 
//--MQTT Topics
// room/LED - On/Off Triggers D7 LED to turn on/off

/**********---| Libraries |---**********/
#include <ESP8266WiFi.h>
#include <Wire.h>
#include <PubSubClient.h>
#include "DHT.h"
#include <Adafruit_SSD1306.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <OneWire.h>
#include <DallasTemperature.h>

/**********--------| Definitions |---------**********/

////--| OLED |---------
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

////--| DHT |---------
#define DHTTYPE    DHT11

////--| OneWire |---------
const int oneWireBus = 0;     //Connected to D3 so GPIO 0
OneWire oneWire(oneWireBus);
DallasTemperature sensors(&oneWire);

////--| Wifi Login |---------
const char* ssid = "***";
const char* password = "****";

////--| MQTT IP Address - Raspberry Pi IP Address |---------
const char* mqtt_server = "192.168.1.***";

////--| Names itself espClient |---------
//-----Can be changed uniquely if multipe ESPs--////
WiFiClient espClient;
PubSubClient client(espClient);

const int DHTPin = 2;      // DHT Sensor
const int statusLED = 15; //Connection LED
const int LED = 13;        //LED

////--| Initialize DHT |---------

////--| Timer/Auxilar Var |---------
long now = millis();
long lastMeasure = 0;

////--| Connects ESP8266 to router |---------
void setup_wifi() {
  // We start by connecting to a WiFi network
  Serial.print("Connecting to ");
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
  Serial.print("WiFi connected - ESP IP address: ");

//-----/********|--MQTT RECEIVER--|**********/-----//
////--| MQTT Action from Message on a Subscription |---------

void callback(String topic, byte* message, unsigned int length) {
  Serial.print("Message arrived on topic: ");
  Serial.print(". Message: ");
  String messageTemp;
  for (int i = 0; i < length; i++) {
    messageTemp += (char)message[i];

// MQTT- LED Receiver with Action
// If a message is received on topic “room/LED” it checks if it says 
// “on” or “off”, this then turns the LED GPIO according to the message.
      Serial.print("Changing Room LED to ");
      if(messageTemp == "on"){
        digitalWrite(LED, HIGH);
      else if(messageTemp == "off"){
        digitalWrite(LED, LOW);

//ESP to MQTT Reconnection and Subscription
// This functions reconnects your ESP8266 to your MQTT broker
// Change the function below if you want to subscribe to more topics with your ESP8266 
void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    // Attempt to connect
     To change the ESP device ID, you will have to give a new name to the ESP8266.
     Here's how it looks:
       if (client.connect("ESP8266Client")) {
     You can do it like this:
       if (client.connect("ESP1_Office")) {
     Then, for the other ESP:
       if (client.connect("ESP2_Garage")) {
      That should solve your MQTT multiple connections problem
    if (client.connect("ESP8266Client")) {
      Serial.println("connected to MQTT");  

  ////--| ESP Subscribe to topic room/LED |---------   
      // Subscribe or resubscribe to a topic
      // You can subscribe to more topics (to control more LEDs)
      Serial.println("Subscribed to topic: room/LED");
    } else {
      Serial.print("failed, rc=");
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying

//-----/********|--VOID SETUP--|**********/-----//
void setup() {

//OLED Setup
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println(F("SSD1306 allocation failed"));

  pinMode(LED, OUTPUT);
  pinMode(statusLED, OUTPUT);
  digitalWrite(LED, LOW);
  digitalWrite(statusLED, LOW);
  client.setServer(mqtt_server, 1883);

////--| DHT Begin |---------


//-----/********|--VOID LOOP--|**********/-----//
void loop() {

  if (!client.connected()) {
    digitalWrite(statusLED, HIGH);

  now = millis();

////--| Read Sensors every 30 seconds (they are 2 sec delayed) |---------
  if (now - lastMeasure > 5000) { //30 seconds
    lastMeasure = now;
    /**********--------| DHT Values |---------**********/
    float h = dht.readHumidity();
    // Read temperature as Celsius (the default)
    float t = dht.readTemperature();
    // Read temperature as Fahrenheit (isFahrenheit = true)
    float f = dht.readTemperature(true);

/**********--------| OneWire Values |---------**********/
  float temperatureC = sensors.getTempCByIndex(0);
  float temperatureF = sensors.getTempFByIndex(0);

    // Check if any reads failed and exit early (to try again).
    if (isnan(h) || isnan(t) || isnan(f)) {
      Serial.println("Failed to read from DHT sensor!");
                //Computes temperature values in Celsius
               //float hic = dht.computeHeatIndex(t, h, false);
              //static char temperatureTemp[7];
             //dtostrf(hic, 6, 2, temperatureTemp);
    ////--| DHT Temperature Value |---------
    float hif = dht.computeHeatIndex(f, h);
    static char temperatureTemp[7];
    dtostrf(hif, 6, 2, temperatureTemp);
    ////--| DHT Value |---------
    static char humidityTemp[7];
    dtostrf(h, 6, 2, humidityTemp);

/**********--------|  Print |---------**********/   
    Serial.print("Humidity: ");
    Serial.print(" %| DHT-T ");
    //Serial.print(" *C ");
    Serial.print(" ºF| Heat Index: ");
    //Serial.println(" *C ");
    Serial.print(" ºF| OWT: ");
      Serial.print("  ºF");

/**********--------| MQTT Publishing |---------**********/
    client.publish("room/DHTemperature", temperatureTemp);
    client.publish("room/humidity", humidityTemp);
    client.publish("room/OWTemp", temperatureF);

/**********--------| Display Print |---------**********/
////--| Display Temperature on OLED |---------
  display.print("Temperature: ");
  display.print(" ");
////--| Display Humidity on OLED |---------
  display.setCursor(0, 35);
  display.print("Humidity: ");
  display.setCursor(0, 45);
  display.print(" %"); 


temperatureF has the wrong type. It can't be a float. It has to be a string (null terminated char array). You can convert a float to a string using sprintf: