T Techerest

เราจะเรียนรู้การเขียนโปรแกรมภาษา Java ควรเริ่มจากตรงไหน

 

ถ้าคุณอยากเริ่มเรียน Java นี่คือแนวทางที่ดีสำหรับผู้เริ่มต้น:

1. ทำความเข้าใจพื้นฐานของ Java

  • Java เป็น ภาษาโปรแกรมเชิงวัตถุ (OOP - Object-Oriented Programming)
  • ใช้หลักการ Write Once, Run Anywhere (WORA) หมายถึงเขียนโค้ดครั้งเดียวแล้วสามารถรันได้บนหลายแพลตฟอร์ม
  • ใช้สำหรับ พัฒนาแอปพลิเคชันเว็บ, โมบาย (Android), เดสก์ท็อป และระบบ backend

2. ติดตั้ง Java และเครื่องมือพัฒนา

  • ติดตั้ง JDK (Java Development Kit): ดาวน์โหลดจาก Oracle หรือใช้ OpenJDK
  • เลือก IDE สำหรับเขียนโค้ด:
    • IntelliJ IDEA (แนะนำสำหรับมือใหม่)
    • Eclipse
    • VS Code (ใช้ extension Java)

3. เรียนรู้ไวยากรณ์พื้นฐานของ Java

เริ่มต้นจากเรื่องง่าย ๆ ก่อน:

  • ตัวแปรและประเภทข้อมูล (int, double, String, boolean)
  • คำสั่งควบคุม (if-else, switch-case)
  • ลูป (for, while, do-while)
  • ฟังก์ชัน (method)
  • คลาสและวัตถุ (class, object, constructor)

ตัวอย่างโปรแกรมแรกใน Java (Hello World)

java
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, Java!"); } }

4. ฝึกเขียนโค้ด และทำโจทย์

  • ลองแก้โจทย์ง่าย ๆ จาก LeetCode, HackerRank, หรือ CodeWars
  • ฝึกเขียน โปรแกรมเล็ก ๆ เช่น เครื่องคิดเลข, เกมทายตัวเลข

5. เรียนรู้แนวคิดเชิงวัตถุ (OOP) ใน Java

เข้าใจ 4 หลักการของ OOP:

  • Encapsulation (การห่อหุ้มข้อมูล)
  • Inheritance (การสืบทอด)
  • Polymorphism (พหุนาม)
  • Abstraction (การซ่อนรายละเอียด)

6. เรียนรู้ Java ขั้นสูง

  • Collection Framework (List, Set, Map)
  • Exception Handling (การจัดการข้อผิดพลาด)
  • Lambda Expression & Stream API
  • Database (JDBC, Hibernate, JPA)
  • Spring Boot (สำหรับเว็บแอปพลิเคชัน)


พัฒนาเว็บ, Android 

ถ้าคุณต้องการเรียน Java เพื่อพัฒนาแอป Android นี่คือแนวทางที่แนะนำ:

1. เรียนพื้นฐาน Java ก่อน

ก่อนสร้างแอป Android ควรเข้าใจพื้นฐาน Java เช่น

  • ตัวแปรและประเภทข้อมูล: int, String, boolean
  • การควบคุมโปรแกรม: if-else, switch, for, while
  • การสร้างคลาสและอ็อบเจ็กต์ (OOP)
  • การจัดการข้อผิดพลาด (Exception Handling)

2. ติดตั้งเครื่องมือพัฒนา

  • ดาวน์โหลดและติดตั้ง Android Studio จาก developer.android.com
  • ติดตั้ง JDK (ส่วนใหญ่จะมาพร้อม Android Studio แล้ว)
  • ใช้ Android Emulator หรือ มือถือจริง (เปิด USB Debugging)

3. เข้าใจโครงสร้างโปรเจกต์ Android

  • MainActivity.java หรือ MainActivity.kt → ไฟล์หลักของแอป
  • activity_main.xml → ไฟล์ UI ของแอป
  • AndroidManifest.xml → กำหนดค่าต่าง ๆ ของแอป
  • res/ → เก็บรูปภาพ ไอคอน และไฟล์ XML อื่น ๆ

4. สร้างแอป Android แรก (Hello World!)

เปิด Android Studio แล้วสร้างโปรเจกต์ใหม่ (เลือก Java)
ตัวอย่าง MainActivity.java:

java
package com.example.helloworld; import android.os.Bundle; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView textView = findViewById(R.id.textView); textView.setText("Hello, Android!"); } }

5. เรียนรู้ UI และการโต้ตอบ (XML + Java)

  • Widgets: TextView, Button, EditText, ImageView
  • Layout: LinearLayout, RelativeLayout, ConstraintLayout
  • Event Handling: ใช้ setOnClickListener() เพื่อให้ปุ่มทำงาน

6. เรียนรู้ Activity และ Intent

  • Activity คือ หน้าจอของแอป
  • ใช้ Intent เพื่อเปลี่ยนหน้า
java
Intent intent = new Intent(this, SecondActivity.class); startActivity(intent);

7. เรียนรู้ RecyclerView และการแสดงผลรายการ

ใช้ RecyclerView เพื่อแสดงรายการข้อมูล เช่น รายชื่อสินค้า, ข้อความแชท

8. การจัดเก็บข้อมูล (Database & API)

  • SharedPreferences → เก็บค่าต่าง ๆ ในเครื่อง
  • SQLite / Room Database → ใช้เก็บข้อมูลแบบออฟไลน์
  • Firebase / REST API → ดึงข้อมูลจากเซิร์ฟเวอร์

9. ฝึกสร้างแอปเล็ก ๆ เพื่อทดลอง

✅ แอปเครื่องคิดเลข
✅ แอป To-Do List
✅ แอปแสดงข้อมูลจาก API (เช่น ข่าว, สภาพอากาศ)

10. ศึกษา Android ขั้นสูง

  • Jetpack Components → ViewModel, LiveData, Navigation
  • MVVM Architecture → โครงสร้างที่ใช้ในแอปจริง
  • Android Jetpack Compose → UI แบบใหม่ของ Android


Java for Electronics device

ถ้าคุณต้องการใช้ Java สำหรับพัฒนาอุปกรณ์อิเล็กทรอนิกส์ นี่คือแนวทางที่เหมาะสม:

1. เข้าใจพื้นฐาน Java และฮาร์ดแวร์

  • เรียนรู้ Java SE (Standard Edition)
  • เข้าใจ การสื่อสารกับฮาร์ดแวร์ เช่น GPIO, Serial Communication (UART), I2C, SPI

2. เลือกแพลตฟอร์มหรือบอร์ดอิเล็กทรอนิกส์

  • Raspberry Pi (รองรับ Java ผ่าน Pi4J, JavaFX)
  • Arduino (โดยปกติใช้ C/C++ แต่สามารถเชื่อมต่อกับ Java ผ่าน Java Serial)
  • ESP32/ESP8266 (รองรับการสื่อสารกับ Java ผ่าน MQTT, WebSockets)
  • BeagleBone Black (ใช้ Java กับ Linux-based IoT)

3. ใช้ไลบรารี Java สำหรับอิเล็กทรอนิกส์

  • Pi4J → ควบคุม GPIO บน Raspberry Pi
  • JSerialComm / RXTX → ใช้สื่อสารผ่าน Serial (UART)
  • Java ME Embedded → สำหรับอุปกรณ์ฝังตัวขนาดเล็ก
  • Eclipse IoT → พัฒนาแอป IoT ที่ใช้ Java

4. สร้างโปรเจกต์จริง

ควบคุม LED และเซ็นเซอร์ บน Raspberry Pi ผ่าน Java
สื่อสารกับ Arduino ผ่าน Serial (เช่น ควบคุมมอเตอร์, อ่านค่าจากเซ็นเซอร์)
พัฒนา IoT Dashboard เพื่อดูข้อมูลจากเซ็นเซอร์แบบเรียลไทม์
เชื่อมต่อกับคลาวด์ เช่น Google Firebase หรือ AWS IoT


Smart Home

ถ้าคุณต้องการใช้ Java สำหรับพัฒนา Smart Home นี่คือแนวทางที่เหมาะสม:

1. เลือกฮาร์ดแวร์สำหรับ Smart Home

  • Raspberry Pi → ใช้ Java ควบคุม Relay, Sensor, Camera
  • ESP32/ESP8266 → ใช้ร่วมกับ Java ผ่าน MQTT หรือ REST API
  • Arduino + Java → ใช้ JSerialComm เชื่อมกับอุปกรณ์อื่น
  • Home Assistant + Java → ใช้ Java พัฒนาส่วนเสริมให้ระบบอัตโนมัติในบ้าน

2. เรียนรู้การสื่อสารกับฮาร์ดแวร์

GPIO → ควบคุมไฟ, มอเตอร์, เซ็นเซอร์
Serial Communication (UART) → เชื่อมต่ออุปกรณ์ภายนอก
I2C / SPI → อ่านค่าจากเซ็นเซอร์ เช่น อุณหภูมิ, ความชื้น
MQTT / HTTP API → ควบคุมอุปกรณ์ผ่านเครือข่าย

3. ใช้ Java Framework สำหรับ IoT และ Smart Home

  • Pi4J → ควบคุม GPIO บน Raspberry Pi
  • Eclipse Kura → ใช้ Java ใน IoT Gateway
  • Spring Boot + MQTT → พัฒนา Backend สำหรับ Smart Home
  • Android + Java → ทำแอปควบคุม Smart Home จากมือถือ

4. ตัวอย่างโปรเจกต์ Smart Home ที่ใช้ Java

เปิด-ปิดไฟอัตโนมัติ ผ่านแอปมือถือ
ระบบควบคุมอุณหภูมิ ใช้เซ็นเซอร์ DHT11/DHT22
กล้องวงจรปิดอัจฉริยะ เชื่อมต่อ Java OpenCV
ประตูอัจฉริยะ ใช้ RFID + Java

คุณอยากเริ่มพัฒนา Smart Home ไปทางไหนก่อน เช่น ควบคุมไฟฟ้า, ระบบรักษาความปลอดภัย หรือเซ็นเซอร์อัจฉริยะ?

ถ้าคุณต้องการใช้ Java เพื่อควบคุมไฟฟ้าในระบบ Smart Home นี่คือแนวทางที่แนะนำ:

1. เลือกฮาร์ดแวร์สำหรับควบคุมไฟฟ้า

Relay Module → ใช้เปิด-ปิดไฟฟ้า
Raspberry Pi + Pi4J → ใช้ Java ควบคุมรีเลย์ผ่าน GPIO
ESP32/ESP8266 + MQTT → เชื่อมต่อระบบควบคุมผ่าน WiFi
Arduino + Java Serial → ควบคุมไฟฟ้าผ่านพอร์ต Serial

2. ติดตั้งซอฟต์แวร์และไลบรารีที่จำเป็น

  • ติดตั้ง Java 11+ บน Raspberry Pi
  • ใช้ Pi4J สำหรับควบคุม GPIO
  • ใช้ JSerialComm ถ้าต้องการเชื่อมกับ Arduino
  • ใช้ MQTT (Eclipse Paho) ถ้าต้องการควบคุมผ่านเครือข่าย

3. ตัวอย่างโค้ดควบคุมไฟฟ้าด้วย Java + Raspberry Pi

เปิด-ปิดรีเลย์ผ่าน GPIO

java
import com.pi4j.io.gpio.*; public class LightControl { public static void main(String[] args) throws InterruptedException { final GpioController gpio = GpioFactory.getInstance(); final GpioPinDigitalOutput relay = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_01, "Relay", PinState.LOW); System.out.println("เปิดไฟ"); relay.high(); // เปิดไฟ Thread.sleep(5000); System.out.println("ปิดไฟ"); relay.low(); // ปิดไฟ gpio.shutdown(); } }

4. ควบคุมไฟฟ้าผ่านแอปมือถือ (Android + Java)

  • ใช้ Firebase Realtime Database หรือ MQTT Broker เพื่อสื่อสารกับอุปกรณ์
  • ใช้แอป Android + Java สั่งเปิด-ปิดไฟผ่านปุ่มในแอป

5. พัฒนาโครงการ Smart Home ที่ซับซ้อนขึ้น

ตั้งเวลาเปิด-ปิดไฟอัตโนมัติ ด้วย Java Scheduler
ควบคุมไฟผ่านเสียง (Voice Control) ด้วย Google Assistant + Java
ควบคุมไฟผ่าน Internet (IoT Dashboard)

คุณอยากให้ระบบควบคุมไฟฟ้าเชื่อมต่อกับอะไร เช่น WiFi, MQTT หรือควบคุมผ่านแอปมือถือ?

Wifi

ถ้าคุณต้องการใช้ Java ควบคุมไฟฟ้าผ่าน WiFi ในระบบ Smart Home นี่คือแนวทางที่เหมาะสม:


1. เลือกฮาร์ดแวร์สำหรับควบคุมไฟผ่าน WiFi

ESP8266 / ESP32 → เชื่อมต่อ WiFi และควบคุมรีเลย์
Raspberry Pi → ใช้เป็นเซิร์ฟเวอร์ Java สำหรับรับคำสั่งจากแอป
Relay Module → ใช้เปิด-ปิดไฟฟ้า


2. วิธีการสื่อสารระหว่าง Java กับอุปกรณ์ผ่าน WiFi

คุณสามารถใช้ 3 วิธีหลัก ในการควบคุมอุปกรณ์ผ่าน WiFi:

(1) HTTP API (RESTful Service)

  • ใช้ ESP8266/ESP32 สร้าง Web Server ที่รองรับคำสั่งเปิด-ปิดไฟ
  • Java (Android หรือ Desktop) เรียก API เพื่อควบคุม

ตัวอย่าง ESP8266 Web Server (Arduino Code)

cpp
#include <ESP8266WiFi.h> #include <ESP8266WebServer.h> const char* ssid = "Your_WiFi"; const char* password = "Your_Password"; ESP8266WebServer server(80); const int relayPin = 5; // กำหนดขา GPIO สำหรับรีเลย์ void handleOn() { digitalWrite(relayPin, HIGH); server.send(200, "text/plain", "ไฟเปิดแล้ว"); } void handleOff() { digitalWrite(relayPin, LOW); server.send(200, "text/plain", "ไฟปิดแล้ว"); } void setup() { pinMode(relayPin, OUTPUT); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); } server.on("/on", handleOn); server.on("/off", handleOff); server.begin(); } void loop() { server.handleClient(); }

Java ส่งคำสั่งไปยัง ESP8266 ผ่าน HTTP:

java
import java.net.HttpURLConnection; import java.net.URL; public class LightController { public static void main(String[] args) throws Exception { String url = "http://192.168.1.100/on"; // เปลี่ยนเป็น IP ของ ESP8266 HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection(); conn.setRequestMethod("GET"); conn.getResponseCode(); } }

(2) MQTT (Message Queue Telemetry Transport)

  • ใช้ MQTT Broker (เช่น Mosquitto, HiveMQ)
  • Java ส่งข้อความ MQTT ไปเปิด-ปิดไฟ

ติดตั้ง Mosquitto MQTT บน Raspberry Pi

bash
sudo apt update sudo apt install mosquitto mosquitto-clients

ESP8266 รับคำสั่งจาก Java ผ่าน MQTT

cpp
#include <ESP8266WiFi.h> #include <PubSubClient.h> const char* ssid = "Your_WiFi"; const char* password = "Your_Password"; const char* mqttServer = "192.168.1.50"; // IP ของ MQTT Broker const int mqttPort = 1883; WiFiClient espClient; PubSubClient client(espClient); void callback(char* topic, byte* payload, unsigned int length) { if (strcmp(topic, "home/light") == 0) { if (payload[0] == '1') { digitalWrite(5, HIGH); } else { digitalWrite(5, LOW); } } } void setup() { WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); } client.setServer(mqttServer, mqttPort); client.setCallback(callback); client.subscribe("home/light"); } void loop() { client.loop(); }

Java ส่งคำสั่ง MQTT ไปเปิด-ปิดไฟ

java
import org.eclipse.paho.client.mqttv3.*; public class MqttLightController { public static void main(String[] args) throws MqttException { MqttClient client = new MqttClient("tcp://192.168.1.50:1883", "JavaClient"); client.connect(); MqttMessage message = new MqttMessage("1".getBytes()); // 1 = เปิดไฟ, 0 = ปิดไฟ client.publish("home/light", message); client.disconnect(); } }

(3) Firebase Realtime Database

  • Java บันทึกค่า "on" หรือ "off" ลง Firebase
  • ESP8266 อ่านค่าแล้วสั่งเปิด-ปิดไฟ

3. ควบคุมผ่านแอป Android (Java + Android Studio)

  • ใช้ HttpURLConnection หรือ MQTT เพื่อสั่งเปิด-ปิดไฟ
  • ออกแบบ UI ปุ่มเปิด-ปิดไฟในแอป
  • แสดงสถานะไฟ (เปิด/ปิด) บนแอป

4. ขยายโครงการให้ใหญ่ขึ้น

ระบบเปิด-ปิดไฟอัตโนมัติ ตามเวลาหรือเซ็นเซอร์
ใช้ AI หรือเสียงควบคุมไฟ (Google Assistant + Java)
สร้าง IoT Dashboard ดูสถานะอุปกรณ์ Smart Home


คำถาม:

  • คุณอยากใช้ HTTP API, MQTT หรือ Firebase ควบคุมไฟผ่าน WiFi?
  • สนใจพัฒนาแอปมือถือด้วย Android Studio ด้วยไหม?
http, api

ถ้าคุณต้องการใช้ Java + HTTP API ควบคุมไฟฟ้าผ่าน WiFi และพัฒนาแอป Android Studio นี่คือแนวทางที่เหมาะสม:


1. โครงสร้างระบบ

ESP8266/ESP32 → ทำหน้าที่เป็น Web Server สำหรับเปิด-ปิดไฟ
Java (Android App) → ส่ง HTTP Request ไปยัง ESP8266 เพื่อสั่งงาน
WiFi Network → ใช้เป็นช่องทางสื่อสารระหว่างมือถือกับ ESP8266


2. ตั้งค่า ESP8266/ESP32 ให้เป็น Web Server

โค้ดนี้ทำให้ ESP8266 รองรับคำสั่ง HTTP /on และ /off เพื่อควบคุมรีเลย์:

cpp
#include <ESP8266WiFi.h> #include <ESP8266WebServer.h> const char* ssid = "Your_WiFi"; const char* password = "Your_Password"; ESP8266WebServer server(80); const int relayPin = 5; // ขา GPIO ที่ใช้ควบคุมรีเลย์ void handleOn() { digitalWrite(relayPin, HIGH); server.send(200, "text/plain", "ไฟเปิดแล้ว"); } void handleOff() { digitalWrite(relayPin, LOW); server.send(200, "text/plain", "ไฟปิดแล้ว"); } void setup() { pinMode(relayPin, OUTPUT); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); } server.on("/on", handleOn); server.on("/off", handleOff); server.begin(); } void loop() { server.handleClient(); }

🔹 เปลี่ยน ssid และ password เป็น WiFi ที่ต้องการใช้
🔹 ESP8266 จะสร้าง HTTP API:

  • http://<ESP_IP>/on → เปิดไฟ
  • http://<ESP_IP>/off → ปิดไฟ

3. พัฒนาแอป Android (Java) เพื่อควบคุม ESP8266

📌 ใช้ Android Studio พัฒนา UI และ HTTP Request

3.1 ออกแบบ UI (activity_main.xml)

xml
<Button android:id="@+id/btnOn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="เปิดไฟ" /> <Button android:id="@+id/btnOff" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="ปิดไฟ" />

3.2 โค้ด Java ใน MainActivity.java

java
import android.os.Bundle; import android.view.View; import android.widget.Button; import androidx.appcompat.app.AppCompatActivity; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class MainActivity extends AppCompatActivity { private static final String ESP_IP = "http://192.168.1.100"; // เปลี่ยนเป็น IP ของ ESP8266 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btnOn = findViewById(R.id.btnOn); Button btnOff = findViewById(R.id.btnOff); btnOn.setOnClickListener(v -> sendHttpRequest("/on")); btnOff.setOnClickListener(v -> sendHttpRequest("/off")); } private void sendHttpRequest(String path) { new Thread(() -> { try { URL url = new URL(ESP_IP + path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); String response = reader.readLine(); reader.close(); System.out.println("Response: " + response); } catch (Exception e) { e.printStackTrace(); } }).start(); } }

เมื่อกดปุ่ม "เปิดไฟ" → แอปจะส่ง HTTP Request ไปที่ http://192.168.1.100/on
เมื่อกดปุ่ม "ปิดไฟ" → แอปจะส่ง HTTP Request ไปที่ http://192.168.1.100/off


4. ทดสอบระบบ

1️⃣ เปิด ESP8266 และเชื่อมต่อกับ WiFi
2️⃣ ใช้เบราว์เซอร์พิมพ์ http://192.168.1.100/on → ดูว่าไฟติดไหม
3️⃣ เปิด Android Studio และรันแอปบนมือถือ
4️⃣ กดปุ่มในแอปเพื่อลองควบคุมไฟ


5. พัฒนาเพิ่ม

✅ แสดง สถานะไฟ (เปิด/ปิด) ในแอป
✅ ควบคุมหลายอุปกรณ์ (ไฟ, พัดลม, ม่านไฟฟ้า)
✅ ใช้ Google Assistant ควบคุมไฟด้วยเสียง
✅ ตั้งเวลาเปิด-ปิดไฟอัตโนมัติ


สเต็ปถัดไป

  • คุณอยากให้แอป แสดงสถานะไฟฟ้า ด้วยไหม?
  • ต้องการเพิ่ม ระบบล็อกอิน หรือ เชื่อมกับ Cloud เช่น Firebase ไหม?
แสดงสถานะไฟฟ้า

ถ้าคุณต้องการให้แอป Android แสดง สถานะไฟฟ้า (เปิด/ปิด) จาก ESP8266 ผ่าน HTTP API นี่คือแนวทาง:


1. อัปเดตโค้ด ESP8266 ให้ส่งสถานะไฟฟ้า

🔹 เพิ่ม API /status เพื่อให้แอปเช็คสถานะรีเลย์

cpp
#include <ESP8266WiFi.h> #include <ESP8266WebServer.h> const char* ssid = "Your_WiFi"; const char* password = "Your_Password"; ESP8266WebServer server(80); const int relayPin = 5; // ขา GPIO ควบคุมรีเลย์ bool relayState = false; // สถานะของรีเลย์ void handleOn() { relayState = true; digitalWrite(relayPin, HIGH); server.send(200, "text/plain", "ON"); } void handleOff() { relayState = false; digitalWrite(relayPin, LOW); server.send(200, "text/plain", "OFF"); } void handleStatus() { server.send(200, "text/plain", relayState ? "ON" : "OFF"); } void setup() { pinMode(relayPin, OUTPUT); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); } server.on("/on", handleOn); server.on("/off", handleOff); server.on("/status", handleStatus); server.begin(); } void loop() { server.handleClient(); }

ESP8266 จะรองรับ API:

  • http://<ESP_IP>/on → เปิดไฟ
  • http://<ESP_IP>/off → ปิดไฟ
  • http://<ESP_IP>/status → เช็คสถานะไฟ (ส่ง "ON" หรือ "OFF")

2. อัปเดตแอป Android ให้แสดงสถานะไฟ

📌 เพิ่ม TextView สำหรับแสดงสถานะใน activity_main.xml

xml
<TextView android:id="@+id/tvStatus" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="สถานะไฟ: ไม่ทราบ" android:textSize="18sp"/>

📌 โค้ด Java (MainActivity.java) เพื่อดึงสถานะจาก ESP8266

java
import android.os.Bundle; import android.os.Handler; import android.view.View; import android.widget.Button; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class MainActivity extends AppCompatActivity { private static final String ESP_IP = "http://192.168.1.100"; // เปลี่ยนเป็น IP ของ ESP8266 private TextView tvStatus; private Handler handler = new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btnOn = findViewById(R.id.btnOn); Button btnOff = findViewById(R.id.btnOff); tvStatus = findViewById(R.id.tvStatus); btnOn.setOnClickListener(v -> sendHttpRequest("/on")); btnOff.setOnClickListener(v -> sendHttpRequest("/off")); startStatusUpdate(); // อัปเดตสถานะไฟอัตโนมัติ } private void sendHttpRequest(String path) { new Thread(() -> { try { URL url = new URL(ESP_IP + path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.getResponseCode(); updateStatus(); // อัปเดตสถานะหลังจากกดปุ่ม } catch (Exception e) { e.printStackTrace(); } }).start(); } private void updateStatus() { new Thread(() -> { try { URL url = new URL(ESP_IP + "/status"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); String response = reader.readLine(); reader.close(); runOnUiThread(() -> tvStatus.setText("สถานะไฟ: " + (response.equals("ON") ? "เปิด" : "ปิด"))); } catch (Exception e) { e.printStackTrace(); } }).start(); } private void startStatusUpdate() { handler.postDelayed(new Runnable() { @Override public void run() { updateStatus(); handler.postDelayed(this, 5000); // อัปเดตทุก 5 วินาที } }, 0); } }

3. วิธีใช้งาน

1️⃣ รัน ESP8266 แล้วเชื่อมต่อกับ WiFi
2️⃣ รันแอป Android แล้วกดปุ่ม "เปิดไฟ" หรือ "ปิดไฟ"
3️⃣ แอปจะแสดงสถานะไฟ (สถานะไฟ: เปิด หรือ สถานะไฟ: ปิด)


4. พัฒนาเพิ่ม

✅ แสดงสถานะไฟเป็น ไอคอนไฟ (Light Bulb Icon)
✅ เพิ่ม เสียงแจ้งเตือน เมื่อไฟเปิด/ปิด
✅ ใช้ Firebase หรือ Cloud ให้ควบคุมไฟจากที่ไหนก็ได้

คุณอยากเพิ่มฟีเจอร์อะไรเพิ่มเติมไหม?