sw:openhab:examples:dds238-1-zn

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
sw:openhab:examples:dds238-1-zn [2023/05/23 10:57] – удалено - внешнее изменение (Дата неизвестна) 127.0.0.1sw:openhab:examples:dds238-1-zn [2023/05/23 10:57] (текущий) – ↷ Страница перемещена из sw:openhab:binding:examples:dds238-1-zn в sw:openhab:examples:dds238-1-zn lazygatto
Строка 1: Строка 1:
 +====== Опрос счетчика DDS238-1 ZN ======
  
 +<sxh>
 +rule "POWER Опросить электросчетчики и считать показатели"
 +when
 +    Time cron "*/3 * * * * ?" 
 +then
 +    if (alarmPowerOff.state == ON) return;
 +        var String[] bytes 
 +        var String output = sendHttpGetRequest("http://192.168.1.6/sec/?uart_tx=010300000012&mode=rs485")
 +        Thread.sleep(100)
 +        if (output == "Done"){
 +                output = sendHttpGetRequest("http://192.168.1.6/sec/?uart_rx=1&mode=rs485")
 +                if (output.indexOf("CRC Error") == -1){
 +                        //01|03|24|00|02|3b|88|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|02|3b|88|08|b7|01|03|02|21|00|c0|03|ad|13|89
 +                        // 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 
 +                        bytes = output.split("\\|")
 +                        sysSens_PowMeterCounter.postUpdate(Integer.parseInt(bytes.get(3) + bytes.get(4) + bytes.get(5) + bytes.get(6), 16) as Number / 100)
 +                        sysSens_PowMeterVoltage.postUpdate(Integer.parseInt(bytes.get(27) + bytes.get(28),  16) as Number / 10)
 +                        sysSens_PowMeterCurrent.postUpdate(Integer.parseInt(bytes.get(29) + bytes.get(30),  16) as Number / 100)
 +                        sysSens_PowMeterPowerLoad.postUpdate(Math.abs(Integer.parseInt(bytes.get(31) + bytes.get(32),  16).shortValue) as Number )
 +                        sysSens_PowMeterReactPowerLoad.postUpdate(Integer.parseInt(bytes.get(33) + bytes.get(34), 16) as Number )
 +                        sysSens_PowMeterPFactor.postUpdate(Integer.parseInt(bytes.get(35) + bytes.get(36), 16) as Number / 1000)
 +                        sysSens_PowMeterFreq.postUpdate(Integer.parseInt(bytes.get(37) + bytes.get(38), 16) as Number / 100)
 +                } //else {logError("   ---> Power", "Ошибка датчика 'sysSens_PowMeterCounter' - " + output)}
 +        } else { logError("   ---> Power", "Ошибка датчика 'sysSens_PowMeterCounter' - " + output)}
 +
 +        //---------------------------------------------------------------------------------------------------------------------------------
 +        //sysSens_WashPowMeterCnt
 +        output = sendHttpGetRequest("http://192.168.1.6/sec/?uart_tx=020300000012&mode=rs485")
 +        Thread.sleep(100)
 +        if (output == "Done"){
 +                output = sendHttpGetRequest("http://192.168.1.6/sec/?uart_rx=1&mode=rs485")
 +                if (output.indexOf("CRC Error") == -1){
 +                        bytes = output.split("\\|")
 +                        sysSens_WashPowMeterCnt.postUpdate(Integer.parseInt(bytes.get(3) + bytes.get(4) + bytes.get(5) + bytes.get(6), 16) as Number / 100)  
 +                        sysSens_WashPowMeterW.postUpdate(Math.abs(Integer.parseInt(bytes.get(31) + bytes.get(32), 16).shortValue) as Number)
 +                } //else { logError("   ---> Power", "Ошибка датчика 'sysSens_WashPowMeterCnt' - " + output) }
 +        } else { logError("   ---> Power", "Ошибка датчика 'sysSens_WashPowMeterCnt' - " + output)}
 +        
 +        //---------------------------------------------------------------------------------------------------------------------------------
 +        //sysSens_DishPowMeterCnt
 +        output = sendHttpGetRequest("http://192.168.1.6/sec/?uart_tx=030300000012&mode=rs485")
 +        Thread.sleep(100)
 +        if (output == "Done"){
 +                output = sendHttpGetRequest("http://192.168.1.6/sec/?uart_rx=1&mode=rs485")
 +                if (output.indexOf("CRC Error") == -1){
 +                        bytes = output.split("\\|")
 +                        sysSens_DishPowMeterCnt.postUpdate(Integer.parseInt(bytes.get(3) + bytes.get(4) + bytes.get(5) + bytes.get(6), 16) as Number / 100)  
 +                        sysSens_DishPowMeterW.postUpdate(Math.abs(Integer.parseInt(bytes.get(31) + bytes.get(32), 16).shortValue()) as Number)
 +                } //else {logError("   ---> Power", "Ошибка датчика 'sysSens_DishPowMeterCnt' - " + output)}
 +        } else { logError("   ---> Power", "Ошибка датчика 'sysSens_DishPowMeterCnt' - " + output)}
 +        
 +        //---------------------------------------------------------------------------------------------------------------------------------
 +        //sysSens_OvenPowMeterCnt
 +        output = sendHttpGetRequest("http://192.168.1.6/sec/?uart_tx=040300000012&mode=rs485")
 +        Thread.sleep(100)
 +        if (output == "Done"){
 +                output = sendHttpGetRequest("http://192.168.1.6/sec/?uart_rx=1&mode=rs485")
 +                Thread.sleep(20)
 +                if (output.indexOf("CRC Error") == -1){
 +                        bytes = output.split("\\|")
 +                        sysSens_OvenPowMeterCnt.postUpdate(Integer.parseInt(bytes.get(3) + bytes.get(4) + bytes.get(5) + bytes.get(6), 16) as Number / 100)  
 +                        sysSens_OvenPowMeterW.postUpdate(Math.abs(Integer.parseInt(bytes.get(31) + bytes.get(32), 16).shortValue) as Number)
 +                } //else {logError("   ---> Power", "Ошибка датчика 'sysSens_OvenPowMeterCnt' - " + output)}
 +        } else { logError("   ---> Power", "Ошибка датчика 'sysSens_OvenPowMeterCnt' - " + output)}
 +end
 +</sxh>
 +
 +Источник: [[https://ab-log.ru/forum/viewtopic.php?p=48096#p48096|martiniman » 05 фев 2022, 15:49]]