İçeriğe geç
Batuhan YAZICI

Senior Cyber Security Specialist

Senior System and Network Admin

Batuhan YAZICI

Senior Cyber Security Specialist

Senior System and Network Admin

Finansal sistemlerde güvenlik,
altyapıda süreklilik.

  • Fortinet
  • SIEM
  • PCI DSS
  • ISO/IEC 27001
← Teknik blog
MagicMirror Projesi · Otomasyon

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

Batuhan YAZICI · · 10 dk okuma
MagicMirror Projesi: takvim, hava durumu ve haber modüllerini birleştirmek — Batuhan YAZICI
Batuhan YAZICI · batuhanyazici.com

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.

Bir modülün son değeri, yeni alınmış veriyle aynı değildir. Kişisel takvim içeriği ile genel hava ve haber bilgisi farklı erişim kapsamındadır.

  1. Modülleri ayrı çalıştır
  2. Bildirim verisini al
  3. Alanları normalleştir
  4. Önbelleğin yaşını değerlendir
  5. Ekran ve ses kullanımını ayır
Bir modülün son değeri, yeni alınmış veriyle aynı değildir. Kişisel takvim içeriği ile genel hava ve haber bilgisi farklı erişim kapsamındadı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.

  1. MagicMirror sürüm/config yedeğini alın
  2. Üç modülün config alanlarını açık eşleştirin
  3. Kaynakları modülden bağımsız okuyun
  4. Saat, varyant ve güncellik kabulünü yapın
  5. 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.

MagicMirror Projesi: takvim, hava durumu ve haber modüllerini birleştirmek için temsili uygulama ve kabul haritası
Temsili uygulama ve kabul haritası; gerçek ürün ekran görüntüsü değildir. Haritayı büyük aç.

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.

Batuhan YAZICI

Senior Cyber Security Specialist · Altyapı ve güvenlik üzerine teknik notlar.

Okumaya devam edin

MagicMirror Projesi — Batuhan YAZICI