====== Опрос счетчика DDS238-1 ZN ====== 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 Источник: [[https://ab-log.ru/forum/viewtopic.php?p=48096#p48096|martiniman » 05 фев 2022, 15:49]]