3 điểm bởi GN⁺ 2024-09-21 | 1 bình luận | Chia sẻ qua WhatsApp
  • Weather as Landscape là một dự án đưa dự báo 24 giờ và trạng thái hiện tại vào trong hình ảnh phong cảnh, thay vì bảng điều khiển thời tiết thiên về con số, để người dùng có thể xem một cách tự nhiên hơn
  • Trục ngang của hình ảnh là dòng thời gian 24 giờ từ thời điểm hiện tại đến ngày hôm sau; ngôi nhà biểu thị vị trí hiện tại, còn thời tiết trong tương lai càng xa thì càng được đặt về phía bên phải
  • Các yếu tố phong cảnh mã hóa cả bình minh·hoàng hôn, trưa·nửa đêm, hướng và cường độ gió, thay đổi nhiệt độ, nhiệt độ cao nhất·thấp nhất, mây, lượng mưa, nhiệt độ·áp suất hiện tại, cho đến sự kiện không liên quan đến thời tiết như sinh nhật·ngày nghỉ
  • Phần triển khai dùng Python 3.9, Pillow và dữ liệu OpenWeather; hình ảnh được thiết kế cho màn hình E-Ink 296x128
  • ESP32 và module E-Ink 2,9 inch được cấu hình để lấy hình ảnh từ Internet và cập nhật mỗi 15 phút; hiện vẫn chưa chắc liệu có thể điều chỉnh mã tạo ảnh cho MicroPython trên ESP32 hay không

Xem thời tiết bằng phong cảnh thay vì con số

  • Các trạm thời tiết truyền thống thường hiển thị giá trị cảm biến dưới dạng dữ liệu số, khiến người dùng phải mất công tìm, diễn giải và hình dung các tham số cụ thể
  • Hình ảnh phong cảnh tự nhiên với mắt người; trải nghiệm ngắm các yếu tố phong cảnh giúp giảm căng thẳng và mang lại trải nghiệm thị giác dễ chịu hơn với nỗ lực tối thiểu
  • Weather as Landscape cho thấy cách mã hóa thông tin thời tiết vào trong hình ảnh phong cảnh mà không phụ thuộc vào con số, hoặc chỉ phụ thuộc ở mức tối thiểu

Cách mã hóa

  • Phong cảnh được xây dựng xoay quanh một ngôi nhà nhỏ trong rừng
  • Trục ngang của hình ảnh là dòng thời gian 24 giờ
    • Ngôi nhà bên trái biểu thị thời điểm hiện tại
    • Càng sang phải thì càng gần với điều kiện của ngày hôm sau
    • Sự kiện càng cách xa hiện tại thì càng nằm về phía bên phải của hình ảnh
  • Nhiều yếu tố phong cảnh phân bố trên trục dọc của hình ảnh biểu thị các sự kiện và điều kiện thời tiết

Thông tin có thể đưa vào phong cảnh

  • Mốc thời gian giúp theo dõi thời gian
    • Bình minh và hoàng hôn
    • Trưa và nửa đêm
  • Thông tin dự báo thời tiết
    • Hướng và cường độ gió
    • Thay đổi nhiệt độ
    • Nhiệt độ cao nhất·thấp nhất
    • Lượng mây
    • Lượng mưa
  • Trạng thái thời tiết hiện tại
    • Nhiệt độ
    • Áp suất
  • Sự kiện không phải thời tiết
    • Sinh nhật
    • Ngày nghỉ

Yếu tố thị giác và ý nghĩa

  • Dự án ghép nhiều hình ảnh sự kiện để cấu thành phong cảnh
    • Mặt trời: bình minh
    • Mặt trăng: hoàng hôn
    • Mây: lượng mây
    • Ngôi nhà: vị trí thời gian hiện tại
    • Hoa: nửa đêm và trưa
    • Sprite cây: gió nam, gió đông, gió tây, gió bắc
    • Mưa và tuyết: dạng giáng thủy
    • Biểu tượng áp suất: áp suất cao, áp suất bình thường, áp suất thấp
    • Biểu tượng ngày nghỉ: sự kiện không liên quan đến thời tiết, ví dụ sinh nhật của ai đó
  • Cây càng lớn thì cường độ gió dự báo càng mạnh
  • Nếu trong rừng có nhiều loại cây khác nhau trộn lẫn, điều đó biểu thị gió theo hướng trung gian

Diễn giải ví dụ

  • Ví dụ đầu tiên là vào khoảng giữa trưa, trời quang và dự kiến có một ít mây
    • Gió bắc vừa phải xuất hiện trong đêm
    • Nhiệt độ hiện tại đang tăng, nhưng sẽ bắt đầu giảm sau hoàng hôn
    • Nhiệt độ thấp nhất đạt được trước bình minh
    • Trong giai đoạn này, gió dự kiến chuyển sang hướng đông bắc
  • Ví dụ thứ hai là lúc mặt trời đang mọc, thể hiện một ngày nóng, quang đãng và gió đông nam nhẹ
    • Nhiệt độ vẫn tiếp tục duy trì ở mức cao sau hoàng hôn
    • Gió chuyển sang hướng đông và mạnh hơn suốt buổi tối
  • Ví dụ thứ ba là thời tiết lạnh và mưa suốt cả ngày lẫn đêm
    • Gió nam chuyển thành gió tây bắc trong đêm
    • Cho biết ngày hôm sau có sinh nhật của ai đó

Chạy và tạo hình ảnh

  • Chuẩn bị môi trường Linux
    • ./makevenv.sh
    • source .venv/bin/activate
  • Chuẩn bị môi trường Windows
    • makevenv.bat
    • .venv/Scripts/Activate
  • Thử tạo hình ảnh
    • Cần đưa khóa OpenWeather API vào biến OWM_KEY trong secrets.py
    • Nếu cần, có thể đổi tọa độ trong secrets.py thành vị trí của người dùng
    • Sau khi chạy python run_test.py, xem hình ảnh đã tạo trong thư mục tmp
  • Chạy máy chủ
    • python run_server.py
    • Khi truy cập trang máy chủ bằng trình duyệt, có thể xem số lượng hình ảnh đã tạo

Sử dụng E-Ink và điện thoại

  • Cấu hình phần cứng bao gồm ESP32 development boardmodule E-Ink 2.9 inch
  • Cấu hình E-Ink hiện tại hiển thị hình ảnh lấy từ Internet và cập nhật mỗi 15 phút
  • Hiện chưa chắc liệu có thể sửa mã tạo ảnh để dùng trong MicroPython trên ESP32 hay không
  • Thông tin chi tiết hơn có trong esp32/README.md
  • Trong quá trình thử nghiệm, nhiều hình ảnh được tạo ra
    • Ảnh đen trắng dành cho module E-Ink
    • Ảnh màu có thể đặt trên màn hình chính điện thoại
  • Trên Android, có thể dùng Web Image Widget để tạo widget hiển thị hình ảnh từ Internet
    • Chạy script máy chủ của kho lưu trữ
    • Thêm widget trỏ đến một trong các hình ảnh đã tạo

1 bình luận

 
GN⁺ 2024-09-21
Các ý kiến trên Hacker News
  • Vài năm trước tôi từng mày mò một dự án chọn tranh theo thời tiết: https://bazzargh.github.io/weather/
    Nếu chuyển sang manual filter và đặt vài bộ lọc, bạn có thể thấy các ảnh đã gắn thẻ hiện ra thế nào. Tôi nghĩ nó dùng để tạo không khí cho khung ảnh hoặc hình nền desktop hơn là để dự báo thời tiết chính xác
    Toàn bộ thẻ ảnh nằm ở đây: https://github.com/bazzargh/bazzargh.github.io/blob/master/w...
    Phần lớn được gắn thủ công; trước tiên tôi chọn những bức mình thích, rồi nhìn các khoảng trống trong bộ thẻ để tìm tranh lấp vào

    • Trên Chrome, trang này đang bị hiển thị là lừa đảo
  • Thú vị đấy. Tôi đã nối một khung ảnh cũ với trình tạo ảnh DALL-E của OpenAI, để nó tạo ảnh dựa trên dữ liệu thời tiết hiện tại và cập nhật vài giờ một lần
    Ảnh đang hiển thị hiện giờ là đây: https://ibb.co/8K5jZ3B

  • Ngoài phần mô tả trong README, tôi muốn chia sẻ cách dùng cụ thể của dự án này. Tôi đặt một màn hình trên bàn làm việc, và việc nhìn thấy hình ảnh liên tục thay đổi trong ngày hóa ra lại thú vị bất ngờ
    Ví dụ, mưa xuất hiện từ bên phải rồi biến mất vài giờ sau, hoặc cây bắt đầu mọc lên. Trong lúc đó, mặt trời và mặt trăng liên tục tiến về phía trước, thể hiện sự chuyển đổi giữa ngày và đêm
    Một điểm thú vị nữa là bố cục này trông giống đồng hồ nhị phân. Mọi người đoán là nó có ý nghĩa gì đó nhưng không giải mã được ngay, và thiết kế đơn giản khiến họ muốn tự tìm hiểu

  • Thật sự thú vị. Nó làm tôi muốn lắp một camera định kỳ chụp mảng xanh gần nhà
    Nếu lưu dữ liệu lượng mây và dấu thời gian cùng với ảnh, rồi hiển thị bức ảnh gần giống dự báo hiện tại nhất làm hình nền laptop thì có vẻ hay. Dù không truyền tải được nhiều thông tin như dự án này, nó vẫn có thể khá thỏa mãn

  • Dễ thương, và chỉ cần chỉnh một chút là tôi nghĩ có thể dùng thật. Vẫn còn chỗ để cải thiện cách diễn giải: dùng hướng cây bị uốn để thể hiện hướng gió; còn gió bắc/gió nam thì xử lý sáng tạo, chẳng hạn uốn xuống hay uốn ra ngoài, và dùng độ cong hoặc kích thước/mật độ cây để biểu thị cường độ gió
    Bình minh/hoàng hôn nên được thể hiện đúng nghĩa bằng mặt trời trên đường chân trời thay vì mặt trời và mặt trăng, còn bầu trời đêm nên có sắc độ khác ban ngày. Có vẻ nên đặt điểm bắt đầu là một mốc cố định như buổi sáng hoặc nửa đêm, thay vì “giờ hiện tại”, và dùng vị trí của ngôi nhà để biểu thị “hiện tại”

    • Bản thân ý tưởng còn nhiều khả năng mở rộng sáng tạo, nhưng bị hạn chế bởi màn hình đen trắng nhỏ. Không có cách nào để cho thấy cây bị gió uốn hay ốc sên bò
      Dù vậy, trên bầu trời vẫn còn chỗ cho các yếu tố vui như con cò cho ngày sinh nhật hoặc xe trượt tuyết của ông già Noel vào mùa lễ. Tôi đang chờ màn hình E-Ink lớn hơn và có màu trở nên rẻ hơn
    • Phần lớn tôi đồng ý. Riêng điểm 4 thì nếu có một con vật nào đó di chuyển thay cho ngôi nhà sẽ dễ thương hơn
      Và dùng góc nhìn kiểu đẳng cự có thể giúp trực quan hóa hướng gió
    • Dùng bóng đổ, đặc biệt là độ dài và hướng, có thể giúp tạo cảm nhận về thời điểm trong ngày, cùng với sắc độ của trời và đất
  • Tôi đã dùng một ý tưởng tương tự làm hình nền Android một thời gian[1]
    Tôi thích ý tưởng tác phẩm nghệ thuật nhưng vẫn truyền tải thông tin thực sự hữu ích
    [1]: https://play.google.com/store/apps/details?id=kaka.wallpaper...

    • Tôi đã dùng hình nền động này nhiều năm rồi và luôn thích nó
  • Nó làm tôi nhớ đến màn hình chính của ứng dụng Yr.no. Ứng dụng này trực quan hóa thời tiết bằng cách hiển thị như tranh vẽ khung cảnh ngoài cửa sổ ở nhiều thời điểm trong ngày
    Chỉ nhìn hoạt ảnh cũng có thể khá dễ cảm nhận lượng mưa và dạng mưa, cũng như gió. Tuy nhiên mỗi lần chỉ thấy được một khoảnh khắc, nên muốn xem cả ngày phải cuộn ngang, còn nhiệt độ thì chỉ hiển thị bằng số
    https://apps.apple.com/no/app/yr/id490989206?l=nb
    https://play.google.com/store/apps/details?id=no.nrk.yr&pcam...

  • Làm rất tốt. Tuy nhiên nếu tập trung vào trải nghiệm người dùng thì windy.com là nơi truyền tải thời tiết tốt nhất
    Ví dụ tôi gần như không quan tâm đến dự báo kiểu “xác suất mưa rào 30% lúc 8 giờ tối”; điều quan trọng hơn là mây hay mưa di chuyển theo dòng chảy nào. Như vậy mới quyết định được có lái xe theo hướng có nắng đẹp nhất hay không
    Tôi tò mò liệu có nơi nào khác làm theo cách tương tự windy.com không. Trải nghiệm đến nay rất tốt và hầu như không có dark pattern trong UX, nhưng tôi vẫn mong lĩnh vực này có thêm cạnh tranh

    • Tôi đã làm một ứng dụng thời tiết cho roadtrip tính dự báo khi bạn muốn tránh thời tiết xấu nhất trên đường lái xe. Nó hữu ích để quyết định nên khởi hành vào buổi tối hay sáng hôm sau
      Dấu thời gian được tạo dựa trên chỉ đường của Google, nên tính đến năm 2024, nó cho dự báo gần chính xác nhất có thể
      Tôi hiểu cảm giác rằng dự báo kiểu “xác suất mưa rào 30% lúc 8 giờ tối” không hay lắm, nhưng dự báo trung hạn hiện nay nhìn chung cũng chỉ đến mức đó
      Android hoặc iOS: https://weatherthetrip.com/download
    • Weather Strip(iOS): https://apps.apple.com/us/app/weather-strip/id1528594026
    • Tôi rất thích Meteoblue. Nó cung cấp nhiều kiểu trực quan hóa ensemble dự báo
      Về trải nghiệm người dùng thì không giống windy, nhưng khá giỏi trong việc truyền đạt độ bất định của mô hình và mức độ đồng thuận giữa các mô hình
    • Đầu năm nay tôi đã dùng windy.com để chọn vị trí xem nhật thực toàn phần ở Texas. Nó khớp hoàn hảo, chúng tôi xem nhật thực xong thì mây kéo đến
    • Zoom Earth giống Windy.com
      https://zoom.earth/
  • Ý tưởng thú vị, nhưng có vài chỗ ý nghĩa của hình ảnh bị lệch một cách kỳ lạ. Đặc biệt bầu trời đêm không nên sáng, và lúc bình minh thì mặt trời không nên ở cao
    Nếu phải học những quy tắc trái trực giác như “cứ thấy mặt trời ở bất kỳ đâu trên trời là nghĩa là bình minh” hoặc “ban đêm không được biểu thị bằng bóng tối mà bằng thứ gì đó khác”, thì tôi nghĩ nó đã thất bại ở mục đích cốt lõi
    Nhiều ứng dụng thời tiết đặt một dòng thời gian chạy từ trái sang phải, với bình minh và hoàng hôn được biểu thị bằng các biểu tượng trực quan. Chế độ xem dòng thời gian của Windy.com gói gọn trạng thái bầu trời, ngày/đêm, pha Mặt Trăng, nhiệt độ, mưa, tốc độ và hướng gió vào một dòng thời gian trái-phải súc tích

  • Tôi cứ tưởng tất nhiên nó sẽ là LLM + AI tạo ảnh biến dự báo thời tiết thành hình ảnh siêu thực, nên khá bất ngờ theo hướng tích cực khi đây lại là một hệ thống trong đó con người thật đưa ra quyết định thiết kế và ánh xạ dữ liệu một cách dứt khoát vào các yếu tố thị giác được chọn lựa cẩn thận. Nó mới mẻ đến lạ