MagicMirror Projesi: takvim, hava durumu ve haber modüllerini birleştirmek

Takvim, hava ve haber alanlarını modüler panelde tutma; mevcut bildirimleri sesli asistana aktarma ve eski veriyle güncel sonucu ayırma çalışmaları.
MagicMirror Projesi’nin panelinde saat, takvim, hava durumu ve haber gibi günlük bilgi alanlarını ayrı modüller olarak kullandık. Sesli asistanı eklerken bu modüllerde zaten bulunan bilgiyi tekrar tekrar dış hizmetten istemek yerine uygun bildirimleri değerlendiren yollar ekledik. Bu yazı özel randevuları, konumu, kişisel haber tercihlerini veya gerçek takvim bağlantılarını paylaşmaz. İncelenen kaynak ve işletim kaydı, tasarımın hangi parçalarının bulunduğunu açıklamak için kullanılıyor.
Panel modüllerini kendi sorumluluklarında tuttuk
Saatin görünmesi, haber akışının güncellendiğini veya takvim bağlantısının açıldığını göstermez. Bu nedenle veri sağlayan modülleri ve asistanın konuşma katmanını tek bir sağlık durumuna toplamadık. İşletim kaydında takvim, hava ve haber modüllerinin başladığı ve veri yayınladığına dair ayrı gözlemler bulunuyor. Bu gözlemler özel içerikleri yayımlamak veya bütün gelecek güncellemelerin sorunsuz olacağını söylemek için kullanılmıyor.
MagicMirror'ın resmî belgeleri takvim, hava ve haber modüllerinin farklı yapılandırma ve veri davranışlarını açıklar. Kurulu sürümdeki modül seçeneği esas alınmalıdır. Bir sağlayıcıdaki güncelleme aralığını başka modüle aynı anlamda taşımayın. Özellikle zaman dilimi, tarih biçimi ve sağlayıcı değişikliği sonuçları etkileyebilir. Bu çalışmada kişisel hesap ayarları veya gerçek konum bilgisi paylaşılabilir yapılandırma örneğine dönüştürülmedi.
- Modülleri ayrı çalıştır
- Bildirim verisini al
- Alanları normalleştir
- Önbelleğin yaşını değerlendir
- Ekran ve ses kullanımını ayır
Hava bilgisini sınırlı bir anlık görüntüye aldık
Asistan ön yüzünde hava güncellemesi bildiriminden gelen alanları işleyen bir durum nesnesi bulunuyor. Ekrandaki sıcaklık veya hava özeti için başka bir sorgu gerekip gerekmediğini bu mevcut durumla ayırmak mümkün oluyor. Bu, bütün hava verisinin kalıcı saklandığı anlamına gelmez. Ayrıca son alınmış değer güncellik ve sağlayıcı hatası bakımından incelenmeden şu anki durumun kesin kanıtı sayılmamalıdır.
Kullanıcının bir sorusunu yerel durumdan yanıtlamak ağ bağımlılığını azaltabilir; fakat hiç veri alınmamış bir başlangıç durumunda aynı yol çalışmayabilir. Boş veri, önceki değerin korunması ve yeni güncelleme için ayrı gösterim gerekir. Uygulamada bulunan önbellek yoluyla burada önerilen veri yaşı kabulünü aynı tamamlanmış iş olarak sunmuyoruz. Güncellik eşikleri gerçek modül ve kullanım ihtiyacına göre ayrıca doğrulanmalıdır.
Haber bildirimlerini birleştirip tekrarları ayıkladık
Kaynakta haber güncellemesi ve toplu haber bildirimi için ayrı girişler bulunuyor. Gelen öğeleri birleştiren ve yinelenen kayıtları ayıklayan bir yol ekledik. Asistan kısa başlık özeti istediğinde bütün haber akışını sınırsız bağlam olarak göndermek yerine sınırlı bir görünüm kullanılabiliyor. Bu işlem haberin doğruluğunu doğrulamaz; kaynakta yayınlanan başlıkla yorumlanan bilgi birbirinden ayrılmalıdır.
Bozuk tek bir yayın yüzünden bütün paneli yeniden başlatmak ilk çözüm olmamalı. Önce hangi modülün, hangi veriyle ve ne zamandan beri güncellenmediğini belirleyin. Haber metnini uygulama talimatı gibi çalıştırmak da doğru değildir. Dış içerik yalnız veri olarak ele alınmalı; araç yetkisini veya özel takvim erişimini belirlememelidir. Kaynak ve tarih bilgisi, kullanıcıya sunulan özetin anlaşılmasına yardımcı olur.
Takvim mahremiyeti ve geri dönüş
Takvim kaynağı kişisel olay ve davet ayrıntısı içerebilir. Panelde bir etkinliğin görünmesi onun ortak hoparlörde sesli okunmasına izin verildiği anlamına gelmez. İncelenen asistan önbellek yollarında hava ve haber için görülen davranışı takvim için de uygulanmış özellik gibi genişletmiyoruz. Takvim ekranı, sesli erişim ve kalıcı hafıza ayrı kapsamlar olarak ele alınmalıdır. Özel takvim adresleri paylaşılabilir dokümana konmamalıdır.
Geri dönüşte ilgili modülün önceki ayarı ve bildirim sözleşmesi korunmalı. Önceki sağlam veriyle yeni alınmış verinin karışmadığını temiz başlangıçta doğrulayın. Kaynak erişilemediğinde ne gösterileceği ve ne söyleneceği açık olsun. Bu yazı kapsamlı çevrimdışı kabul raporu değildir; panelin ayrı modüllerini koruyarak mevcut bilgiyi asistanla paylaşmak için yaptığımız düzenlemeleri ve bunların sınırlarını anlatır.
Serinin bütün çalışmaları: MagicMirror Projesi.
Nasıl yapılır: ayrıntılı uygulama
Ortam ve ön koşullar: MagicMirror varsayılan calendar/weather/newsfeed modülleri — Desteklenen MagicMirror sürümü, izinli ICS/RSS kaynakları ve kullanıcı tarafından düzenlenmiş konum/provider ayarı gerekir.
- MagicMirror sürüm/config yedeğini alın
- Üç modülün config alanlarını açık eşleştirin
- Kaynakları modülden bağımsız okuyun
- Saat, varyant ve güncellik kabulünü yapın
- Yalnız ilgili config farkını geri alın
1. MagicMirror sürüm/config yedeğini alın
Kurulu MagicMirror proje kökünde desteklenen Node sürümü ve config/config.js yedeği hazırlanır. Takvimde gerçek özel URL, hava durumunda gerçek konum ve API secret örneğe yazılmaz.
node --version
npm --version
git log -1 --format=%H
cp -p config/config.js config/config.batuhanyazici-before.js
2. Üç modülün config alanlarını açık eşleştirin
Aşağıdaki modules dizisi mevcut config’e birleştirilir. Hava durumu ENLEM_SAYISI/BOYLAM_SAYISI kendi sayısal değerlerinizle değiştirilmelidir; takvim URL’si kendi izinli/sentetik ICS kaynağınızdır. Bu örnek gerçek konum veya özel takvim içermez. Open-Meteo için seçilen sürüm desteğini doğrulayın.
const modules = [
{module:"calendar", position:"top_left", config:{calendars:[{symbol:"calendar",url:"https://batuhanyazici.com/IZINLI-TEST-TAKVIMI.ics"}]}},
{module:"weather", position:"top_right", config:{weatherProvider:"openmeteo",type:"current",lat:ENLEM_SAYISI,lon:BOYLAM_SAYISI}},
{module:"newsfeed",position:"bottom_bar",config:{feeds:[{title:"batuhanyazici.com",url:"https://batuhanyazici.com/feed/"}],showSourceTitle:true,showPublishDate:true}}
];
3. Kaynakları modülden bağımsız okuyun
ICS/RSS URL’sinin 200 yanında doğru MIME/içerik döndürdüğünü ve özel kaynağın helper bağlamında erişilebilirliğini kontrol edin. Giriş sayfası 200 dönerse takvim verisi sayılmaz.
curl -I https://batuhanyazici.com/feed/
node --check config/config.js
npm run
4. Saat, varyant ve güncellik kabulünü yapın
Sentetik ICS olayında timezone/all-day/tekrar davranışını ve gerçek kaynak tarihini kontrol edin. Weather unit/provider error ve RSS son yayın zamanını ayrı değerlendirin; fetch hatasında eski veri sonsuza kadar yeni gösterilmemeli.
5. Yalnız ilgili config farkını geri alın
Sözdizimi testi çalışma kabulü değildir; gerçek MagicMirror console/Node helper hatasını okuyun. Önceki config/modül sürümüne dönün; sır içeren özel ICS veya konumu frontend/logda yayımlamayın.
Beklenen sonuç: Takvim zamanı, hava sağlayıcısı/birimi ve RSS yayın tazeliği üç ayrı kabul sonucu verir.
Sonuç farklıysa: Sözdizimi başarılıyken veri yoksa modül logu ve kaynak erişimini inceleyin.
Geri dönüş: Yalnız eklenen modül nesnesini önceki config sürümüne döndürün.
Kaynaklar
Uygulama örnekleri teknik, kaynak ve mahremiyet incelemesinden geçti. Temsili haritalar üretici ekran görüntüsü veya canlı sistem testi olarak sunulmaz. Kullanılan ürün sürümü ve kapsam uygulama öncesinde doğrulanmalıdır.
Okumaya devam edin

MagicMirror Projesi: YouTube Shorts listesi ve kesintiye dayanıklı oynatıcı
YouTube liste üreticisi, sürüm bildiren modül yardımcısı ve hata durumunda ilerleyen oynatıcı için yaptığımız çalışmaları anlatan proje notu.

MagicMirror Projesi
Pi-hole, RuView, YouTube, Spotify, ses, kamera, hafıza ve kiosk çalışmalarını bir araya getiren teknik proje dizini.
