Kai Morich WiFi Serial Terminal

I have Kai Morich's Bluetooth Terminal and Serial USB Terminal. They are super.

I also have his WiFi Serial Terminal. The BT and USB terminals are 'intuitive', but the WiFi has me stumped.
Anybody out there with any experience using it?
I'd like to link it to an ESP - the WiFi app capable of receiving a "Hello App" and transmitting "Hello User". That would satisfy my objective (a 'WiFi to Serial bridge').

Probably more involved than I surmise (?).

[ It's mentioned, but he does not provide instructions. ]

I use his Serial and Bluetooth terminal apps and have just tried the WiFi terminal.

I have managed to connect to a Raspberry Pi using SSH but have not tried anything else yet. What are you trying to do and where are you stuck ?

Well, basically, I'm stuck in the chute (it's that bad).

  1. How do I make the ESP a device that the app can find?
  2. I would like to send text and see it on the app and the app Reply and get that on the ESP. (Maybe I could use the app macro buttons for the latter.)

Bonus points if neither requires html.

Using an ESP8266 running the WiFiTelnetToSerial sketch the app can connect to it using telnet. I set up a device in the app using the IP address of the ESP, protocol of telnet and the default port 23

The purpose of the sketch appears to be to receive input via telnet from the app and output it via Serial1 or SoftwareSerial

Using the default values in the sketch I can enter text in the app and see it echoed in the Serial monitor of the ESP8266

OK, I found that in Examples.
I'm using it 'stock', adding only the SSID and its Password
I am using an ESP-01.

With #define SWAP_PINS 0 it should be using GPIO3,1, the usual Hardware serial, Yes?
And at some point, Serial Monitor should bounce back something confirmational (an IP addr, etc)?
In the app, "Host ", that's my router/network name or should that be an IP, too (192...)?

I assume that you have put your SSID and password into the #defines in the sketch along with your desired baud rate for the Serial monitor

I do not get the IP address in the Serial monitor and have not investigated why, but got it from my router

With the correct SSID, password and Serial monitor baud rate what I enter in the WiFi app terminal is echoed in the Serial monitor

The router's IP or the ESP's (assuming it gets one)?
If there was fritzing for this I would probably be doing it.
(yeah, it's true).

You need to use the ESPs IP address in the device setup in the terminal app as that is what it is connecting to. I used the admin page of my router to find out which IP address had been allocated to the ESP

I queried OpenAI and got a good sketch first try. It was not bidirectional at first, but that was a simple edition from there.

It's been fussy about something or other, but ordinarily it's push the boot button, connect to the network (softAP), 'connect' with the app and it rolls on.
Here it's like a basic remote control - controlling the PWM on D6 and toggling D7. It echoes back and 'prints' out the status of the output that was addressed.
(Some of my development work is still in there or commented out.)

//
//  _005
//    analogWriting D6
//    clientstatus LED (D0) ON → there's No client
//  It Works! 2025.06.06
//
//  _004
//    using D6 (Y) and D7 (G)
//  It Works!  2020.06.05
//
//  _003
//     adding facility to toggle D0 (onboard LED)
//  It Workds!  2025.06.03  
//
//  ESP8266_KaiMorich_002
//     gets data, sends data
//  It Works!  2025.06.02
//  Serial WiFi Terminal → Telnet (port 23)
//    the 'network' has no internet, so
//    make sure the mobile stays with the
//    SoftAP anyway (check a box)
//

#include <ESP8266WiFi.h>

const char *ssid = "esp8266_sap";
const char *password = "12345678";  // Password must be at least 8 characters

bool Gflipit = false;
bool Yflipit = false;

const byte green = D7;
const byte yellow = D6;
const byte clientstatus = D0;

byte Yindex = 0;
byte Ybrt [6] = {0, 25, 50, 100, 175, 250};

WiFiServer server(23);  // Telnet port by default is 23

void setup() 
{
  Serial.begin(115200);
  delay(1000);
  pinMode(green, OUTPUT);
  digitalWrite(green, LOW);
  pinMode(yellow, OUTPUT);
  digitalWrite(yellow, LOW);
  pinMode(clientstatus, OUTPUT);
  digitalWrite(clientstatus, HIGH); // off
  
  // Configure ESP8266 as Access Point
  WiFi.softAP(ssid, password);
  
  IPAddress IP = WiFi.softAPIP();
  Serial.print("ESP8266 AP IP: ");
  Serial.println(IP);

  server.begin();
  Serial.println("TCP Server started");
}

void loop() 
{
  digitalWrite(clientstatus, LOW);  // D0 on till client true
  WiFiClient client = server.available();
  if (client) 
  {
    digitalWrite(clientstatus, HIGH);
    while (client.connected()) 
    {
      // Data received from app
      if (client.available()) 
      {
        char aa = client.read();
        Serial.print(aa);
        client.write(aa);  // explicitly echo back
        if (aa == '7')
        {
          Gflipit = !Gflipit;
          if (Gflipit)
          {
            digitalWrite(green, HIGH);
            client.println("\r\nD7 is ON");
          }
          else
          {
            digitalWrite(green, LOW);
            client.println("\r\nD7 is OFF");
          }
        }

        if (aa == '6')
        {
          Yindex ++;
          if (Yindex > 5)
          {
            Yindex = 0;
          }
          client.print("\r\nD6 level: ");
          client.println(Yindex);
          analogWrite(yellow, Ybrt[Yindex]);            
        }
        
      }

      // Data received from Serial Monitor
      if (Serial.available()) 
      {
        char cc = Serial.read();
        client.write(cc);  // send explicitly to app
      }
    }
    client.stop();
  }
}

I use D0, the onboard LED, to let me know when it got the client (the app) connected (troubleshooting).

I have found that by disallowing the "autoconnect" with the SoftAP (which is part of the android's Settings bit) I'm no longer running into the app-connections issue/s.