Tags: 
3rd party HW-SW

AN73 ukazuje, jak ovládat výstupy napájení na jednotkách PDU NETIO prostřednictvím ekosystému CUE. Pomocí rozhraní JSON API.

Do you have any questions?

Společnost NETIO se rozhodla posílit své postavení v oblasti řídicích systémů, IOT a atomizace integrace. Jednotky NETIO PDU lze snadno a přímo ovládat ze systémů CUE.Koncovým uživatelům to pomůže ovládat a dálkově restartovat posluchárny a konferenční systémy nebo rozsáhlé systémy.

Seznam zařízení NETIO, která lze integrovat se systémem Cue. Zařízení NETIO musí mít FW 4.0.0.+.

•    PowerBOX 3Px
•    PowerBOX 4Kx
•    PowerPDU 8KS
•    PowerPDU 8QS
•    PowerPDU 4KS
•    PowerPDU 4PS
•    PowerDIN 4PZ 
•    PowerCable 2KZ
•    PowerCable 2PZ

 

 

Brána CUE umí ovládat výstupy NETIO: 

  • Výstup ON
  • Výstup OFF
  • Reset s definovaným zpožděním

HW CUE podporující integraci

  • ControlCUE
  • touchCUE
  • signCUE
  • appCUE
     

 

Konfigerace NETIO zařízení

IP adresa 

Nastavte pevnou IP adresu pro jednotku NETIO. Buď použijte statickou IP adresu v jednotce NETIO, nebo rezervovanou IP adresu na serveru DHCP pro MAC adresu jednotky NETIO.

Nastavení API

V sekci M2M API protokoly / JSON API nastavte následující:

  • Enable JSON API
  • Enable READ-WRITE
  • Nastavte bezpečné uživatelské jméno a heslo pro přístup. Výchozí hodnoty uživatelského jména a hesla jsou následující “netio“.

 

 

Nastavení výstupů 

Zařízení NETIO s více výstupy mají ve výchozím stavu pro každý výstup nastaveno jiné zpoždění spínání, takže při současném provedení příkazu ke spínání všech výstupů jsou výstupy spínány postupně, aby nedocházelo k proudovým špičkám.

Pokud by vám toto chování nevyhovovalo a chtěli byste, aby relé reagovala na příkazy z řídicího systému okamžitě, nastavte zpoždění na hodnotu 0.

V sekci Outputs klikněte na požadovaném relé a na záložce General nastavte Output PowerUp interval na 0 millisekund.

 

 

Konfigurace systému CUE

 

Ovladač rozhraní NETIO JSON API

Popis

Ovladač NETIO_JSON_API je určen k ovládání distribučních jednotek NETIO pomocí protokolu HTML JSON API. Ovladač se připojuje ke kanálu HTTP jednotek CUE.

 

Ovladač umožňuje ovládání výstupních relé jednotek NETIO a čtení stavu vstupů a výstupů (spotřeba energie, proudy, napětí atd. v závislosti na tom, jaké údaje poskytuje připojená jednotka NETIO).

 

 

Zdroje

Ovladač je k dispozici v cloudu CUE: NETIO_PowerDistribution_NETIO_JSON_API_Http_Client_1.00.cvcd

 

Vlastnosti

Název objektu

Typ údajů

Výchozí hodnota

Popis
Ip Address Text   Adresa IP jednotky NETIO (IPv4)
Port Long 80 Port používaný ke komunikaci HTTP
Username Text netio Uživatelské jméno pro protokol JSON API READ-WRITE {default - netio}
Password Text netio Heslo pro protokol JSON API READ-WRITE {default - netio}
UseHTTPs Boolean False Rezervováno pro budoucí podporu HTTPs ve firmwaru NETIO, nyní použijte False. **NETIO podporuje HTTPs od verze 5.0.3+
AnswerTimeOut Time :0.3 Časový limit pro komunikaci se sítí NETIO
CacheTime Time :1.0 Aby se zabránilo zbytečné (časově náročné) komunikaci, jsou data načtená z jednotky NETIO uložena do mezipaměti CacheTime. Pokud je stáří dat menší než CacheTime, data se nečtou přímo z jednotky NETIO, ale z této mezipaměti. Pokud jsou data starší, čtou se přímo z jednotky NETIO. 

 

 

 

Funkce

Close 

Tato funkce sepne relé pomocí relaynumber.

Syntax

Close(relaynumber As Long) As Boolean

 

Parametry

relaynumber

  • Long 1 - 8, závisí na maximálním počtu relé v jednotce NETIO.

Vrácená hodnota

  • Boolean True při úspěchu nebo False při erroru (NETIO není přístupné nebo relaynumber je mimo rozsah).

Příklad

NetioPower1.Close(2) //closes relay 2

 

ClosePulse 

Tato funkce uzavře relé pomocí relaynumber a po newpulsetime toto relé otevře. 

Syntax 

ClosePulse(relaynumber As Long,newpulsetime As Time) As Boolean

 

Parametery 

relaynumber

  • Long 1 - 8, závisí na maximálním počtu relé v jednotce NETIO newpulsetime
  • Time Pulse doba, po kterou bude relé vypnuto. Minimální hodnota je 100 ms (0:0,1). Pokud je zadaná hodnota kratší, bude nastavena na 100 ms.

 

Vrácená hodnota

Boolean True při úspěchu nebo False při erroru (NETIO není přístupné nebo relaynumber je mimo rozsah).

Příklad

NetioPower1.ClosePulse(1, :2.0)

//closes relay 1, waits 2 seconds and then opens the relay 1

 

Open 

Tato funkce otevře relé s relaynumber.

Syntax

ClosePulse(relaynumber As Long,newpulsetime As Time) As Boolean

 

Parametry

  • Long 1 - 8, závisí na maximálním počtu relé v jednotce NETIO.

Vrácená hodnota 

  • Boolean True při úspěchu nebo False při erroru (NETIO není přístupné nebo relaynumber je mimo rozsah).

Příklad 

NetioPower1.Open(2) //opens relay 2

 

OpenPulse

Tato funkce otevře relé s číslem relé a po novém čase toto relé zavře. Tato funkce je užitečná např. pro resetování zařízení.

Syntax

OpenPulse(relaynumber As Long,newpulsetime As Time) As Boolean

 

Parametry

relaynumber

  • Long 1 - 8, závisí na maximálním počtu relé v jednotce NETIO newpulsetime
  • Time Pulse doba, po kterou bude relé vypnuto. Minimální hodnota je 100 ms (0:0,1). Pokud je zadaná hodnota kratší, bude nastavena na 100 ms.

Vrácená hodnota

Boolean True při úspěchu nebo False při erroru (NETIO není přístupné nebo relaynumber je mimo rozsah).

Příklad

NetioPower1.OpenPulse(3, :5.0)
//opens relay 3, waits 5 seconds and then closes the relay 3

 

IsClosed

Tato funkce vrací, zda je relé s relaynumber sepnuté (vrací True) nebo rozepnuté (vrací False).

Syntax

IsClosed(relaynumber As Long) As Boolean

 

Parametry

relaynumber

  • Long 1 - 8, závisí na maximálním počtu relé v jednotce NETIO.

Vrácená hodnota

  • Boolean True pokud je relé sepnuté, False pokud je relé otevřené nebo při erroru.

Příklad

PageNetio.IndicatorNetioOutput1.SetValue(NetioPower1.IsClosed(1))
//sets the graphic object IndicatorNetioOutput1 that displays
//the status of NETIO output

 

SetCacheTime 

Tato funkce nastaví CacheTime ovladače na newcachetime, pokud potřebujete změnit hodnotu nastavenou ve vlastnostech ovladače. Aby se zabránilo zbytečné (časově náročné) komunikaci, jsou data načtená z jednotky NETIO uložena do mezipaměti CacheTime. Pokud je stáří dat menší než CacheTime, data se nečtou přímo z jednotky NETIO, ale z této mezipaměti. Pokud jsou data starší, čtou se přímo z jednotky NETIO.

Syntax

SetCacheTime(newcachetime As Time)

 

Parametry

newcachetime

  • Časová nová hodnota CacheTime

Příklad 

Var T As Time
T := NetioPower1.GetCacheTime() //CacheTime is written to variable

 

SetCommunication 

Tato funkce nastavuje parametry komunikace IP, pokud nechcete použít parametry nastavené ve Vlastnostech nebo pokud je potřebujete změnit.

Syntax

SetCommunication(newipaddress As Text,newport As Long,newusername As Text,newpassword As Text,Optional newusehttps As Boolean := False,Optional newanswertimeout As Time := :0.3) As Boolean

 

Parametry

newipaddress

  • Text IP addres (IPv4) jednotky NETIO

newport

  • Long Port použitý k HTTP komunikaci, typicky 80

newusername

  • Text Username k JSON API READ-WRITE protokolu

newpassword

  • Text Password k JSON API READ-WRITE protokolu

newusehttps

  • Boolean Optional, zarezervovaný k budoucí podpoře HTTPS ve firmwaru NETIO, teď použijte False.

newanswertimeout

  • Time Optional, výchozí hodnota je :0,3. Časový limit pro komunikaci s NETIO.

Vrácené hodnota

  • Boolean True při úspěchu nebo False při erroru.

 

Příklad

NetioPower1.SetCommunication("192.168.1.42", 80, "netio", "supersecretnetiopassw0rd")

 

GetDeviceStatus 

Tato funkce načte stav celé jednotky NETIO a uloží jej do proměnné status typu NetioStatusStructure.

Syntax

GetDeviceStatus(ByRef status As Namespace "CUE.Device.NETIO_PowerDistribution_NETIO_JSON_API_Http_Client.1".NetioStatusStructure) As Boolean

 

Parametry

Status

  • NetioStatusStructure: tato struktura popisuje stav celé jednotky NETIO a je popsána níže.

Vrácená hodnota

  • Boolean True při úspěchu nebo False při erroru.

Příklad

Var S As Namespace "CUE.Device.NETIO_PowerDistribution_NETIO_JSON_API_Http_Client.1".NetioStatusStructure
Var NetioTotalCurrent As Double
Var NetioInputVoltage As Double
Var NetioOutput1Current As Double
 
NetioPower1.GetDeviceStatus(S)
NetioTotalCurrent := S.GlobalMeasure.TotalCurrent
NetioInputVoltage := S.GlobalMeasure.Voltage
NetioOutput1Current := S.Outputs[1].Current

 

Struktury 

Funkce GetDeviceStatus vrací datovou strukturu NetioStatusStructure , která popisuje celkový stav jednotky NETIO. Zde je popis této datové struktury a jejích podstruktur. Podrobnosti o jednotlivých položkách naleznete v originálních příručkách NETIO. Některé produkty NETIO mohou předávat pouze omezené údaje, v takovém případě budou tyto údaje ve struktuře ponechány prázdné.

 

 

Deklarace

Global Structure NetioStatusStructure
        Var Agent                                            As NetioAgentStructure
        Var GlobalMeasure                             As NetioGlobalMeasureStructure
        Var Outputs[MAX_OUTPUTS]               As NetioOutputStructure
        Var Inputs[MAX_INPUTS]                 As NetioInputStructure
        Var PAB[MAX_PABS]                             As NetioPABStructure
        Var Watchdogs[MAX_WATCHDOGS]   As NetioWatchdogStructure
        Var Rules[MAX_RULES]                   As NetioRulesStructure
End Structure

 
Global Structure NetioAgentStructure
        Var Model                                            As Text [MAX_NAME_LENGTH]
        Var DeviceName                                As Text [MAX_NAME_LENGTH]
        Var MAC                                              As Text [17]
        Var SerialNumber                              As Text [20]
        Var JSONVer                                   As Text [10]
        Var MessageUTCTime                            As Time                //absolute time
        Var Uptime                                           As Time                //time interval
        Var Version                                          As Text [10]
        Var OemID                                            As Long
        Var VendorID                                  As Long
        Var NumOutputs                                As Long
        Var NumInputs                                 As Long
End Structure

 
Global Structure NetioGlobalMeasureStructure
        Var Voltage                                          As Double
        Var TotalCurrent                              As Double
        Var OverallPowerFactor                 As Double
        Var TotalPowerFactor                   As Double
        Var OverallPhase                              As Double
        Var TotalPhase                                As Double
        Var Frequency                                 As Double
        Var TotalEnergy                               As Double
        Var TotalReverseEnergy                 As Double
        Var TotalEnergyNR                             As Double
        Var TotalReverseEnergyNR               As Double
        Var TotalLoad                                 As Double
        Var EnergyStartUTC                            As Time                //absolute time
End Structure

 

Global Structure NetioOutputStructure
        Var ID                                               As Long 
        Var Name                                             As Text[MAX_NAME_LENGTH]
        Var State                                            As Long //possible values are named constants STATE_XX below
        Var Action                                           As Long //possible values are named constants ACTION_XX below
        Var Delay                                            As Time                //time interval
        Var Current                                          As Double
        Var PowerFactor                               As Double
        Var Phase                                            As Double
        Var Energy                                           As Double
        Var ReverseEnergy                             As Double
        Var EnergyNR                                  As Double
        Var ReverseEnergyNR                           As Double
        Var Load                                             As Double
End Structure
Global Structure NetioInputStructure
        Var ID                                               As Long
        Var Name                                             As Text[MAX_NAME_LENGTH]
        Var State                                            As Long
        Var S0Counter                                 As Long
End Structure
Global Structure NetioPABStructure
        Var Type                                             As Text[MAX_NAME_LENGTH]
        Var Name                                             As Text[MAX_NAME_LENGTH]
        Var Enabled                                          As Boolean
        Var In                                               As Boolean
End Structure
Global Structure NetioWatchdogStructure
        Var Name                                             As Text[MAX_NAME_LENGTH]
        Var Enabled                                          As Boolean
        Var Fail                                             As Boolean
        Var LastStatus                                As Boolean
        Var Timestamp                                 As Time                        //absolute time
End Structure

 
Global Structure NetioRulesStructure
        Var Name                                             As Text[MAX_NAME_LENGTH]
        Var Enabled                                          As Boolean
        Var Result                                           As Long
End Structure

 

Přklad 

Poznámka: Deklarace datové proměnné s touto strukturou musí být v hlavním programu a modulech odkazována na jmenný prostor „CUE.Device.NETIO_PowerDistribution_NETIO_JSON_API_Http_Client.1“.

Var S As Namespace "CUE.Device.NETIO_PowerDistribution_NETIO_JSON_API_Http_Client.1".NetioStatusStructure
Var NetioOutput2Energy As Double

 
NetioPower1.GetDeviceStatus(S)

NetioOutput2Energy := S.Outputs[2].Energy

 

Konstanty

V ovladači NETIO se používají následující pojmenované konstanty.

 


 

Příklad

//declaration of the maximum number of items in arrays in structures
Global Const MAX_OUTPUTS              As Long := 8
Global Const MAX_INPUTS                       As Long := 2
Global Const MAX_PABS                 As Long := 32
Global Const MAX_WATCHDOGS            As Long := 32
Global Const MAX_RULES                As Long := 32

 
//possible values of the Action item in the NetioOutputStructure structure
Global Const ACTION_OFF               As Long := 0
Global Const ACTION_ON                As Long := 1
Global Const ACTION_SHORT_OFF  As Long := 2
Global Const ACTION_SHORT_ON   As Long := 3
Global Const ACTION_TOGGLE             As Long := 4
Global Const ACTION_NO_CHANGE  As Long := 5
Global Const ACTION_IGNORE             As Long := 6

 
//possible values of the State item in the NetioOutputStructure structure
Global Const STATE_OFF                As Long := 0
Global Const STATE_ON                 As Long := 1

 

 

Příklad 

Poznámka: Při použití konstant v hlavním programu nebo modulech musí být na tyto konstanty odkazováno pomocí jmenného prostoru CUE.Device.NETIO_PowerDistribution_NETIO_JSON_API_Http_Client.1".

Var S As Namespace "CUE.Device.NETIO_PowerDistribution_NETIO_JSON_API_Http_Client.1".NetioStatusStructure

 
NetioPower1.GetDeviceStatus(S)
Page1.Indicator1.SetValue(S.Outputs[1].State = Namespace "CUE.Device.NETIO_PowerDistribution_NETIO_JSON_API_Http_Client.1".STATE_ON)

 
//the example on lines 1-4 is equivalent to using the following direct command

PageNetio.IndicatorNetioOutput1.SetValue(NetioPower1.IsClosed(1))

 

 

Speciální poděkování

Děkujeme zejména Richardu Milkovi za vývoj ovladače a integrace. Jsme rádi, že máme takového partnera, jako je Cue.

Ask for a price or technical parameters

For device testing use name/password demo/demo