Semua Tentang Belajar Teknologi Digital Dalam Kehidupan Sehari - Hari

  • IC Timer 555 yang Multifungsi

    IC timer 555 adalah sirkuit terpadu (chip) yang digunakan dalam berbagai pembangkit timer, pulsa dan aplikasi osilator. Komponen ini digunakan secara luas, berkat kemudahan dalam penggunaan, harga rendah dan stabilitas yang baik

  • Ayo Migrasi TV Digital

    Kami bantu anda untuk memahami lebih jelas mengenai migrasi tv digital, apa sebabnya dan bagaimana efek terhadap kehidupan. Jasa teknisi juga tersedia dan siap membantu instalasi - setting perangkat - pengaturan antena dan distribusi televisi digital ke kamar kos / hotel

  • Bermain DOT Matrix - LOVEHURT

    Project Sederhana dengan Dot Matrix dan Attiny2313. Bisa menjadi hadiah buat teman atau pacarmu yang ulang tahun dengan tulisan dan animasi yang dapat dibuat sendiri.

  • JAM DIGITAL 6 DIGIT TANPA MICRO FULL CMOS

    Jika anda pencinta IC TTL datau CMOS maka project jam digital ini akan menunjukkan bahwa tidak ada salahnya balik kembali ke dasar elektronika digital , sebab semuanya BISA dibuat dengan teknologi jadul

  • Node Red - Kontrol Industri 4.0

    Teknologi kontrol sudah melampaui ekspektasi semua orang dan dengan kemajuan dunia elektronika, kini semakin leluasa berkreasi melalui Node Red

Rabu, 24 Januari 2024

TV Digital : Solusi Borosnya Penggunaan Bandwidth TV Streaming di Hotel



Dalam menghadapi era hiburan digital, hotel kini dihadapkan pada tantangan baru terkait manajemen bandwidth akibat peningkatan penggunaan Smart TV dan layanan TV streaming di kamar. Sebagai salah satu alternatif hiburan modern, TV streaming memang memberikan berbagai pilihan konten kepada tamu, namun pada saat yang sama, dapat menimbulkan beban signifikan terhadap infrastruktur jaringan hotel.


Pandangan Umum:


Saat tamu hotel menggunakan layanan TV streaming, ini tidak hanya memerlukan koneksi internet yang cepat tetapi juga menghabiskan sejumlah besar bandwidth Internet. Dalam konteks ini, perbandingan dengan TV Digital UHF terestrial dan MATV / Parabola menjadi krusial untuk memahami sejauh mana penggunaan bandwidth TV streaming dapat menjadi faktor boros dalam lingkungan hotel.


Dalam tulisan ini, kita akan mengeksplorasi dampak borosnya penggunaan bandwidth TV streaming di hotel dan bagaimana hal ini memengaruhi pengalaman tamu serta ketersediaan sumber daya jaringan.


Perbandingan Bandwidth:


  • TV Terestrial (UHF): Menyediakan saluran lokal tanpa memerlukan bandwidth internet tambahan. Namun, dapat memiliki batasan dalam hal variasi konten.
  • TV Streaming: Memerlukan bandwidth internet yang signifikan untuk menyampaikan konten dengan kualitas tinggi. Pilihan konten yang luas dapat menambah beban pada infrastruktur jaringan hotel.
  • MATV / Parabola: Sistem distribusi ini memanfaatkan satu antena (parabola) di pusat untuk menyampaikan saluran TV, mengurangi kebutuhan bandwidth internet. Namun, mungkin kurang fleksibel dalam menyediakan konten on-demand.



Sistem MATV Hotel berbasis parabola yang banyak perangkat dan butuh perawatan berkala



Tantangan Manajemen Bandwidth:


  • Kecepatan Internet: Hotel perlu memastikan kecepatan internet yang memadai untuk menangani penggunaan TV streaming tanpa mengorbankan kualitas layanan lainnya.
  • Infrastruktur Jaringan: Perluasan dan pemeliharaan infrastruktur jaringan menjadi penting untuk mengakomodasi peningkatan penggunaan bandwidth, terutama saat terdapat banyak tamu yang menggunakan layanan streaming secara bersamaan.
  • Biaya dan Keberlanjutan: Borosnya penggunaan bandwidth dapat berdampak pada biaya operasional hotel. Hotel perlu mengevaluasi model bisnis yang berkelanjutan dan efisien dalam menyediakan layanan hiburan.


Mengapa Ini Penting?


Dalam menghadapi tantangan ini, hotel perlu memahami sejauh mana penggunaan TV streaming dapat memberikan dampak signifikan pada manajemen bandwidth. Dengan mengevaluasi opsi seperti TV terestrial dan MATV, hotel dapat mencari keseimbangan yang optimal antara penyediaan hiburan berkualitas dan pengelolaan sumber daya jaringan yang efisien. Mari kita eksplorasi lebih lanjut untuk memahami bagaimana hotel dapat menyediakan hiburan yang unggul tanpa mengorbankan ketersediaan bandwidth.



Apakah Siaran Digital UHF Menjadi Solusi ?


Dalam mengejar solusi yang efisien dan ekonomis untuk menyajikan hiburan kepada tamu hotel, TV UHF digital terestrial muncul sebagai alternatif yang menarik. Sementara TV streaming dan MATV memang memberikan berbagai opsi, pilihan ini dapat memberikan keseimbangan yang optimal antara kualitas hiburan dan manajemen biaya di lingkungan hotel.





TV UHF digital terestrial menyediakan saluran TV lokal dengan menggunakan antena terestrial, tanpa perlu mengandalkan koneksi internet atau biaya langganan. Dengan kualitas gambar yang tajam dan suara yang jernih, solusi ini memberikan pengalaman menonton yang dapat memenuhi harapan tamu, sambil tetap meminimalkan beban pada infrastruktur jaringan hotel.


Dalam tulisan ini, kita telah membahas tantangan penggunaan bandwidth TV streaming dan pertimbangan terkait TV terestrial. Sebagai solusi yang lebih hemat biaya, TV UHF digital terestrial memberikan opsi yang layak bagi hotel untuk memberikan pengalaman hiburan yang memuaskan tanpa meningkatkan beban finansial.





Keuntungan TV UHF Digital Terestrial:


  • Biaya Langganan: Tanpa biaya langganan bulanan (Free To Air) yang diperlukan untuk menonton TV. Bandingkan jika menggunakan tv streaming seperti netflix, disney+ dll.
  • Saluran Nasional lengkap: Dengan sistem multiplexing memungkinkan satu kota bisa terdapat 30-50 saluran tv GRATIS (Free To Air)
  • Ketersediaan Saluran Lokal: Menyediakan saluran lokal tanpa tergantung pada koneksi internet.
  • Kualitas Gambar dan Suara: Menyajikan kualitas gambar dan suara yang tinggi (HD) tanpa terpengaruh oleh kecepatan internet.



Skema dasar distribusi TV digital di hotel



Implementasi Yang Efisien:

  • Infrastruktur yang Sederhana: Penggunaan antena terestrial meminimalkan kebutuhan akan infrastruktur jaringan yang kompleks.
  • Biaya Pemeliharaan Rendah: TV UHF digital terestrial umumnya memerlukan sedikit pemeliharaan dan dapat beroperasi dengan biaya rendah.
  • Fleksibilitas Konten: Meskipun tidak sefleksibel TV streaming dalam menyajikan konten on-demand, TV UHF digital terestrial dapat memberikan ketersediaan saluran lokal dan internasional yang memadai.
  • Minim Perawatan: Dibanding sistem TV kabel / MATV / Parabola yang butuh perawatan perangkat RF booster secara berkala, maka dengan sistem digital UHF ini akan jauh menekan biaya perawatan.




TV digital di Jakarta mencapai 50 saluran


Menyuguhkan Pengalaman Hiburan yang Memuaskan:


Dengan mengeksploitasi teknologi TV UHF digital terestrial, hotel dapat memberikan pengalaman hiburan yang memuaskan tanpa merusak anggaran. Ini memberikan pilihan terjangkau yang tetap memberikan kepuasan kepada tamu, serta mendukung visi hotel dalam memberikan layanan unggul di bidang hiburan.

Sebagai penutup, memilih solusi yang tepat untuk menyajikan hiburan di hotel bukan hanya tentang teknologi terkini, tetapi juga tentang memahami kebutuhan tamu dan menjaga keseimbangan antara kualitas dan efisiensi biaya. Mari bersama-sama membangun pengalaman menginap yang tak terlupakan melalui solusi yang cerdas dan hemat biaya.




Share:

Jumat, 12 Januari 2024

[Node Red] Deteksi Object Pada CCTV Menggunakan Yolo

 


Tutorial yang akan saya tuliskan pada blog kali ini merupakan penggabungan dari beberapa tulisan maupun video kuliah saya sebelumnya, sehingga untuk kelancaran tutorial harap menyimak pembahasan sebelumnya yaitu :


  • Yolo dan python untuk deteksi objek :  Videonya dilihat disini
  • Menjalankan python pada node-red : Klik disini

Untuk sumber dari gambar capture dari  CCTV bisa mengambil dari berbagai lokasi cctv publik yang ada di internet, dan yang saya pakai pada praktek kali ini adalah CCTV di wilayah jogja yang berbasis wowza sehingga source streamingnya dapat dilihat (melalui cara tertentu). Alamat untuk masuk ke koleksi CCTV kota jogja (paling menarik seputaran malioboro) dapat dilihat di alamat : https://cctv.jogjakota.go.id/. 




Lokasi diatas adalah monumen nol kilometer di ujung malioboro dengan alamat cctv nya : https://cctvjss.jogjakota.go.id/malioboro/NolKm_Timur.stream/chunklist_w221624478.m3u8 . Jadi jika url streaming diatas mati atau berubah, silahkan cari sendiri ya !


Script - Yolo - Python :

import cv2
import numpy as np
import time
import sys

#penghitung waktu proses
starting_time = time.time()

#cmd windows pake spasi biar bisa dieksekusi pada node-red
if len(sys.argv) != 2:
    print("Cara Pakai: python<spasi>script.py<spasi>alamat/stream_url")
    sys.exit(1)

# ambil cmd pada bagian sumber streaming sesuai usage
stream_url = sys.argv[1]

# Open the video stream
cap = cv2.VideoCapture(stream_url)

# ambil 1 frame terakhir aja
ret, img = cap.read()

# alamat direktori yolo harus lengkap
yolo = cv2.dnn.readNet("G:\\IOT\\node_red\\yolov3.weights", "G:\\IOT\\node_red\\yolov3.cfg")
classes = []

with open("G:\\IOT\\node_red\\coco.names", "r") as file:
    classes = [line.strip() for line in file.readlines()]

#proses yolo
layer_names = yolo.getLayerNames()
output_layers = [layer_names[i - 1] for i in yolo.getUnconnectedOutLayers()]

colorRed = (0,0,255)
colorGreen = (0,255,0)

# #Loading Images
#img = cv2.imread(name)
height, width, channels = img.shape

# # Detecting objects
blob = cv2.dnn.blobFromImage(img, 0.00392, (255, 255), (0, 0, 0), True, crop=False)

yolo.setInput(blob)
outputs = yolo.forward(output_layers)

# deteksi 3 object orang (0), mobil(2) dan motor(3)
class_ids = []
confidences = []
boxes = []
for output in outputs:
    for detection in output:
        scores = detection[5:]
        class_id = np.argmax(scores)
        confidence = scores[class_id]
        if confidence > 0.5 and ( class_id == 0 or class_id == 2 or class_id == 3): # 3 objek
            center_x = int(detection[0] * width)
            center_y = int(detection[1] * height)
            w = int(detection[2] * width)
            h = int(detection[3] * height)

            x = int(center_x - w / 2)
            y = int(center_y - h / 2)
			#simpan koordinat dan nilai keyakinan
            boxes.append([x, y, w, h]) 
            confidences.append(float(confidence))
            class_ids.append(class_id)



#perhitungan indeks dan 3 object
indexes = cv2.dnn.NMSBoxes(boxes, confidences, 0.5, 0.4)
org = 0
mob = 0
mot = 0

#kotak dan tulisan deteksi objek
for i in range(len(boxes)):
    if i in indexes:
        if class_ids[i] == 0:
            org = org + 1
            label = 'orang(' + repr(org)+ ')'
        elif class_ids[i] == 2:
            mob = mob + 1
            label = 'mobil(' + repr(mob)+ ')'
        elif class_ids[i] == 3:
            mot = mot + 1
            label = 'motor(' + repr(mot)+ ')'
        x, y, w, h = boxes[i]
        cv2.rectangle(img, (x, y), (x + w, y + h), colorGreen, 3)
        cv2.putText(img, label, (x, y -5), cv2.FONT_HERSHEY_DUPLEX, 2, (255,255,255) )


print("{")
print(f"\"Jumlah Orang\": {org},")
print(f"\"Jumlah Mobil\": {mob},")
print(f"\"Jumlah Motor\": {mot},")

elapsed_time = time.time() - starting_time
print("\"processing time\":" + repr(elapsed_time)  )
print("}")
## dibawah ini pilih mau simpan gambar atau tampilkan saja, sesuaikan kebutuhan
#cv2.imshow("Image", img)
cv2.imwrite("G:\\IOT\\node_red\\output.jpg",img) #
#cv2.waitKey(0)
#cv2.destroyAllWindows()


Hasil dari script diatas berupa string json yang nantinya berguna pada pengolahan data.




Node-Red Flow 


Untuk bagian ini cukup mengikuti pembahasan sebelumnya, dengan perbedaan inject yg digunakan berupa payload alamat stream dari CCTV.




Untuk menampilkan hasil pada flow, maka dibutuhkan pallete yang bernama : node-red-contrib-image-tools , dan untuk melakukan refresh agar tampilannya berubah setelah eksekusi script yolo selesai adalah dengan menggunakan function trigger.




Dengan konfigurasi diatas maka node image viewer akan menampilkan gambar bernama output.jpg setelah 250ms script yolo berhasil dieksekusi. Jika mau langsung import flow nya bisa copas json dibawah ini.


[
    {
        "id": "5e5b156e7f57b6cc",
        "type": "tab",
        "label": "aisi555 dot com",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "d4809067.5e61a",
        "type": "inject",
        "z": "5e5b156e7f57b6cc",
        "name": "nama stream",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": "20",
        "topic": "",
        "payload": "https://cctvjss.jogjakota.go.id/atcs/ATCS_Lampu_Merah_SugengJeroni1.stream/chunklist_w758098670.m3u8",
        "payloadType": "str",
        "x": 190,
        "y": 40,
        "wires": [
            [
                "7a4e8130.b846f8"
            ]
        ]
    },
    {
        "id": "7a4e8130.b846f8",
        "type": "exec",
        "z": "5e5b156e7f57b6cc",
        "command": "python G:\\IOT\\node_red\\yolo_stream.py ",
        "addpay": "payload",
        "append": "",
        "useSpawn": "false",
        "timer": "",
        "winHide": false,
        "oldrc": false,
        "name": "",
        "x": 520,
        "y": 40,
        "wires": [
            [
                "c95a2a0563597a2b",
                "50dcecd33a88080d"
            ],
            [],
            []
        ]
    },
    {
        "id": "c95a2a0563597a2b",
        "type": "debug",
        "z": "5e5b156e7f57b6cc",
        "name": "debug 6",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 920,
        "y": 20,
        "wires": []
    },
    {
        "id": "50dcecd33a88080d",
        "type": "trigger",
        "z": "5e5b156e7f57b6cc",
        "name": "",
        "op1": "",
        "op2": "G:/IOT/node_red/output.jpg",
        "op1type": "nul",
        "op2type": "str",
        "duration": "250",
        "extend": false,
        "overrideDelay": false,
        "units": "ms",
        "reset": "",
        "bytopic": "all",
        "topic": "topic",
        "outputs": 1,
        "x": 920,
        "y": 80,
        "wires": [
            [
                "d6cf44e31cac223d"
            ]
        ]
    },
    {
        "id": "d6cf44e31cac223d",
        "type": "image viewer",
        "z": "5e5b156e7f57b6cc",
        "name": "",
        "width": "800",
        "data": "payload",
        "dataType": "msg",
        "active": true,
        "x": 190,
        "y": 120,
        "wires": [
            []
        ]
    }
]


Dengan kreativitas pembaca maka flows diatas dapat diatur otomatis eksekusi tiap selesai script yolo di eksekusi, mungkin juga berdasarkan waktu atau sebagainya. Mungkin jika komputer kamu super cepat dengan VGA sekelas gamers maka pengolahan gambarnya bisa di level video  (25fps minimal).


Beberapa faktor yang mempengaruhi keberhasilan deteksi object sebagai berikut :

  • Yolo v3 yang digunakan masih menggunakan weights bawaan dari yolo, sehingga tingkat keberhasilan pendeteksiannya hanya dibilang "cukup" karena object yg bisa dideteksi banyak dan umum.
  • Untuk pendeteksian objek yang spesifik dan lebih teliti bisa melakukan training pada object-object yang di kehendaki saja dan akan dibahas pada kesempatan lainnya
  • Tingkat kualitas kamera sangat menentukan deteksi object 

Share:

[Node Red] Script Python Pada Flow Node Red

 


Python sebagai bahasa pemrograman "serba bisa"  sekarang ini cenderung diakomodir untuk bekerjasama (atau pun terpaksa agar lebih up to date) dengan berbagai platform pemrograman visual jaman sekarang. Al hasil - Node Red - sebagai platform pemrograman otomasi "drag and drop" juga memiliki beberapa fasilitas untuk menjalankan script python, baik secara flow/pallete langsung atau memanfaatkan cara paling mudah menurut saya yaitu melalui node eksekusi shell / cmd / terminal  bernama "EXEC".



Sesuai yang kita sudah pahami, perintah shell bermacam-macam yah mungkin jika anda menggunakan CMD pada windows anda bisa menulisakan perintah "date" atau ping ke IP tertentu, semisal ip nya di masukkan ke manual trigger sebagai payload. Output dari node EXEC ada tiga berupa standard output, standar error dan return /exit code. 

Untuk memahami bagaimana cara menjalankan script python pada node red, saya anggap pemahaman python pembaca sudah level dasar, sehingga mudah memahami script dibawah ini untuk membaca inputan dary SYS.ARGV .



Sys.argv akan membaca inputan sebagai list/array dengan anggota yang dipisahkan oleh spasi. Sehingga script diatas jika dijalankan pada shell akan mendapatkan balasan sesuai input yang diberikan. Mari kita pindahkan script ini menjadi bergabung dengan node-red.



Gambar diatas menunjukkan flow node red dimana saya akan menginjekkan suatu nilai msg.payload ke node EXEC dan kemudian akan meng-eksekusi scipt python sederhana pada gambar sebelumnya. Saya akan melakukan append msg.payload dibagian belakang dari perintah shell pythonnya, dan harus diingat semua dependencies dari direktori shellnya harus ditulis dengan lengkap.



Hasilnya seperti pada gambar, ketika saya inject timestamp maka output akan keluar sesuai yang diharapkan dari script pythonnya. Bagaimana jika nilai yang diinject kosong?



Terlihat yang dioutput pada debug node sesuai yang diharapkan, dimana script python akan menjawab "kamu kirim kosong". Dan jika terjadi error semisal coding python saya salah maka debug juga akan memberikan output kesalahan yg dialami asalkan node debugnya diletakkan pada flow yang benar.



Pada tulisan selanjutnya saya akan mempraktekkan kemampuan node-red untuk bekerjasama dengan script python-yolo untuk pengenalan object.




Share:

Kontak Penulis



12179018.png (60×60)
+628155737755

Mail : ahocool@gmail.com

Site View

Categories

555 (8) 7 segmen (3) adc (4) amplifier (2) analog (19) android (14) antares (11) arduino (28) artikel (11) attiny (3) attiny2313 (19) audio (5) baterai (5) blog (1) bluetooth (1) chatgpt (2) cmos (2) crypto (2) dasar (46) digital (11) dimmer (5) display (3) esp8266 (26) euro2020 (13) gcc (1) gsm (1) iklan (1) infrared (2) Input Output (3) iot (76) jam (7) jualan (12) kereta api (1) keyboard (1) keypad (3) kios pulsa (2) kit (6) komponen (17) komputer (3) komunikasi (1) kontrol (8) lain-lain (8) lcd (2) led (14) led matrix (6) line tracer (1) lm35 (1) lora (11) lorawan (2) MATV (1) memory (1) metal detector (4) microcontroller (70) micropython (6) mikrokontroler (2) mikrokontroller (14) mikrotik (5) modbus (9) mqtt (3) ninmedia (5) ntp (1) paket belajar (19) palang pintu otomatis (1) parabola (88) pcb (2) power (1) praktek (2) project (33) proyek (1) python (8) radio (28) raspberry pi (9) remote (1) revisi (1) rfid (1) robot (1) rpm (2) rs232 (1) script break down (3) sdcard (3) sensor (2) sharing (3) signage (1) sinyal (1) sms (6) software (18) solar (1) solusi (1) tachometer (2) technology (1) teknologi (2) telegram (2) telepon (9) televisi (167) television (28) telkomiot (5) transistor (2) troubleshoot (3) tulisan (94) tutorial (108) tv digital (6) tvri (2) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (3) yolo (7)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika