Lampu lalu lintas lain di kantor

Halo, nama saya Maxim dan saya seorang karyawan departemen TI dari satu perusahaan perdagangan. Suatu kali, kolega saya dan saya memutuskan bahwa kami kehilangan bagian lampu lalu lintas. Kami belum mengerti mengapa kami membutuhkannya, tetapi "keinginan" yang tak tertahankan menang atas kami ...


gambar


Dan sekarang, setelah beberapa menit, kami sudah mencarinya di Internet. Persyaratannya adalah: nyata, murah, lampu hangat, bisa digunakan. Ditemukan dengan cepat, dipesan, dibayar, menunggu. Diterima, dibongkar, dibongkar, dicuci. Taruh umbi. Dihidupkan sekaligus. Kantor menjadi lebih hangat.


Kami bertanya-tanya di mana harus beradaptasi dan bagaimana cara mengelolanya.


Ke-USB24R ditemukan di tabel tabel - pada dasarnya, modul USB dengan empat relay yang dapat dikontrol dari komputer dengan menulis data ke port COM virtual, ditambah 18 baris IO dan empat ADC 10-bit. Detail dan instruksi di situs web produsen http://www.kernelchip.ru/Ke-USB24R.php


Saya menghubungkan lampu lalu lintas melalui itu. Ternyata untuk mengedipkan lampu secara terpisah, menggunakan perangkat lunak dari situs web produsen.


, zabbix, . :


  • — ,
  • — ,
  • — .

PowerShell. :



    • (0 — , 1 — Problem)
  1. — , —
  2. .

xml .


. , . .


traffic_lights.ps1
# 
$trigger_id = $args[0] 
#0 - , 1 - Problem
$trigger_status = $args[1] 
#   . 0 -  , 1 - , 2 - , 3 - , 4 - , 5 - .
$trigger_nsev = $args[2] 

#     
$red = 1
$yellow = 2
$green = 3

#    Key - ID , Value -   
$triggers=@{}

#     
$triggers = Import-Clixml -Path C:\Users\User\Desktop\DB_traffic_lights.xml

#    
if ($trigger_status -eq 1)
    {
        #       
        if (!$triggers.ContainsKey($trigger_id))
            {
                #   
                $triggers.Add($trigger_id,$trigger_nsev)
            }
    }
    #     
    else
    {
        #        
        if ($triggers.ContainsKey($trigger_id))
            {
                #    
                $triggers.Remove($trigger_id)
            }
    }

#     
$triggers | Export-Clixml -Path C:\Users\User\Desktop\DB_traffic_lights.xml

#-   
$red_turn_on = $false
$yellow_turn_on = $false

#  
foreach ($trigger in $triggers)
{
        switch ($trigger.Values)
        {
            #0 -  
            0 {  }

            #1 - 
            1 {  }

            #2 - 
            2 { $yellow_turn_on = $true }

            #3 - 
            3 { $yellow_turn_on = $true }

            #4 - 
            4 { $red_turn_on = $true }

            #5 - 
            5 { $red_turn_on = $true }
        }
}

#[System.IO.Ports.SerialPort]::getportnames()
$port = New-Object System.IO.Ports.SerialPort
$port.PortName = 'COM4'
$port.BaudRate = '9600'
$port.Parity = "None"
$port.Handshake = "None"
$port.DataBits = 8
$port.StopBits = 1
$port.ReadTimeout = 500
$port.WriteTimeout = 500
$port.DtrEnable = $true
$port.RtsEnable = $true

$port.Open()

if ($port.IsOpen -eq $true)
    {
        #     
        if($trigger_status -eq "0")
        {
                #   
                $command = '$KE,REL,' + $red + ',0'+"`r"
                $port.WriteLine($command)
                $command = '$KE,REL,' + $yellow + ',0'+"`r"
                $port.WriteLine($command)         

                #  
                $command = '$KE,REL,' + $green + ',1'+"`r"
                $port.WriteLine($command)
                Start-Sleep -Milliseconds 300

                $command = '$KE,REL,' + $green + ',0'+"`r"
                $port.WriteLine($command)
                Start-Sleep -Milliseconds 300

                $command = '$KE,REL,' + $green + ',1'+"`r"
                $port.WriteLine($command)
                Start-Sleep -Milliseconds 300

                $command = '$KE,REL,' + $green + ',0'+"`r"
                $port.WriteLine($command)
                Start-Sleep -Milliseconds 300
        }

        #   
        if ($red_turn_on)
            {
                $command = '$KE,REL,' + $red + ',1'+"`r"
                $port.WriteLine($command)
            }

        #   
        if ($yellow_turn_on)
            {
                $command = '$KE,REL,' + $yellow + ',1'+"`r"
                $port.WriteLine($command)
            }
    }   

$port.Close()

zabbix- ( -> ), : = , = OK.


image


" ". — zabbix-:


powershell.exe -File C:\Users\User\Desktop\traffic_lights.ps1 {TRIGGER.ID} {TRIGGER.VALUE} {TRIGGER.NSEVERITY}

image


- , , . .



Hasilnya adalah elemen interior yang menarik dan fungsional yang sangat menarik perhatian. Kita harus menjawab banyak pertanyaan seperti di mana kita mendapatkannya dan mengapa kita membutuhkannya, berapa biayanya dan sebagainya. Di masa depan saya berencana untuk membuat perangkat otonom, untuk menjauh dari menggunakan komputer dan pengontrol USB. Ganti dengan modul Ethernet-Relay dan transfer logika ke server zabbix. Ubah tampilan dan gantung secara vertikal.


Terima kasih atas perhatian anda!

Source: https://habr.com/ru/post/id399371/


All Articles