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 ให้ควบคุมไฟจากที่ไหนก็ได้

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

Share this
Facebook Share X
TECHEREST COMMUNITY

Share your thoughts here

Join the conversation and share your perspective on this article.

Comments will load when you reach this section.