산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 산업기술

홈 어시스턴트를 통해 PLCnext 컨트롤러를 스마트 홈 장치로 사용

이 작은 데모 프로젝트는 REST API 및 Modbus TCP를 통해 오픈 소스 홈 자동화 소프트웨어 Home Assistant에서 PLCnext 컨트롤러를 스마트 홈 장치로 쉽게 사용하는 방법을 보여줍니다. PLCnext 컨트롤러를 사용하면 자동화에서 Axioline 구성 요소를 사용하여 Raspberry Pi의 GPIO 핀, Pt100과 같은 온도 센서 및 DALI와 같은 버스 시스템보다 더 강력한 출력을 쉽게 추가할 수 있습니다. 작동하는 홈 어시스턴트 설치와 작지만 실행 가능한 PLCnext 프로젝트가 포함된 PLCnext 컨트롤러만 있으면 됩니다.

전제조건

도서관:

홈 어시스턴트 서비스:

기능 설명

PLCnext 컨트롤러를 스마트 홈 장치로 사용할 수 있는 가능성에 대한 간략한 개요를 제공하기 위해 릴레이로 공급 전압을 제어하여 다른 장치를 하드 리셋할 수 있는 PLCnext 프로젝트가 있습니다. 재설정은 재시작이 시작되었다는 정보가 포함된 이메일이 전송되기 전에 Telegram 봇에 전송되는 명령에 의해 트리거됩니다. 이 예는 PLCnext 컨트롤러를 Home Assistant 환경에 연결하는 두 가지 다른 방법으로 표시됩니다.

건축물

Modbus TCP를 통한 연결

Modbus TCP 연결을 시작으로 Modbus TCPl 라이브러리를 사용하여 PLCnext 프로젝트에 Modbus 서버를 추가합니다. 구성은 라이브러리 예제와 동일합니다. 올바른 Modbus 레지스터를 선택하는 것은 데이터의 종류와 사용 방법에 따라 다릅니다. 이 경우 변수는 코일 레지스터에 매핑됩니다.

Modbus 서버는 한 번에 하나 이상의 연결을 지원하지 않는다는 사실에 주의하십시오. 따라서 연결을 테스트하는 동안 불행히도 때때로 발생하는 연결이 올바르게 종료되지 않으면 서버가 오류 상태가 되어 수동으로 다시 시작해야 합니다. 이를 방지하려면 PLCnext 프로젝트에서 Modbus 서버의 자동 재시작을 프로그래밍하는 것이 좋습니다.

Modbus 클라이언트의 경우 홈 어시스턴트에는 두 가지 주요 가능성이 있으며 원하는 것을 선택하는 것은 사용자의 몫입니다. 첫 번째는 Node-RED 애드온과 거기에서 사용 가능한 Modbus 라이브러리 중 하나를 사용하는 것입니다. 더 직관적인 방법은 configuration.yaml에서 엔터티를 구성하는 것입니다. 홈 어시스턴트 환경의 (추가 정보). 아래와 같이 표준 스위치 서비스가 사용되는데, 이는 변수를 설정하거나 재설정하는 turn_on/turn_off 기능을 구현했기 때문에 부울 변수를 사용하는 일반적인 방법입니다.

modbus: 
    type: tcp           # using Modbus TCP 
    host: YOUR_SERVER_IP    # fill the server ip address  
    port: 502 
    name: hub1          # could be changed  
switch: 
  - platform: modbus 
    coils: 
      - name: restartMB     # could be changed 
        hub: hub1 
        slave: 1 
        coil: 13            # the register position of the variable 

Node-RED 가능성을 선택하는 경우 일반적으로 Modbus TCP를 사용하여 읽기 및 쓰기에 대해 서로 다른 연결을 시작하므로 Modbus 서버가 위에서 언급한 바와 같이 오류 상태가 된다는 사실에 유의하십시오. 이를 피하기 위해 PLCnext 프로젝트에서 Modbus UDP 또는 두 개의 Modbus 서버를 사용할 수 있습니다. 하나는 읽기용이고 다른 하나는 쓰기용입니다.

REST API를 통한 연결

연결을 위한 두 번째 가능성은 PLCnext REST 데이터 인터페이스입니다. 이 인터페이스는 PLCnext HMI와 관련이 있으므로, REST API를 사용할 수 있도록 하려면 비어 있더라도 PLCnext 프로젝트에 HMI 페이지가 하나 이상 있어야 합니다. 또한 변수는 HMI 플래그로 서명해야 합니다. 자세한 내용은 PLCnext 정보 센터를 참조하십시오.

이 경우 Node-RED 애드온은 Home Assistant 측에서 HTTP 요청을 생성하는 데 사용됩니다. 애드온 설치는 이 지침과 이 지침에 따라 수행됩니다. 계속하기 전에 두 단계를 모두 완료했는지 확인하십시오.

PLCnext 프로젝트의 HMI 사용자 인증이 활성화된 경우 Node-RED의 인증은 다음과 같을 수 있습니다.

흐름은 인증을 실행하고 이후 요청에서 사용할 액세스 토큰을 저장합니다. HTTP 요청의 정확한 구조는 PLCnext Info Center의 문서도 확인하십시오.

Node-RED에서 Home Assistant 환경의 데이터에 액세스하기 위해 Node-RED 애드온과 함께 제공되는 여러 노드가 있습니다. 다음 그림 하단의 짧은 흐름은 Home Assistant에서 새 엔터티를 만들고 이 엔터티 위의 흐름에서 변경 사항을 확인합니다. 엔티티가 true로 설정되면 PLCnext 컨트롤러의 변수도 true로 설정되고 재설정을 트리거합니다. PLCnext 프로젝트의 재시작 변수는 재설정 후 자동으로 false로 설정되기 때문에 Home Assistant의 엔터티도 5초 지연 후에 false로 설정됩니다.

텔레그램 봇

Home Assistant와 통신하기 위해 Telegram Bot API가 사용됩니다. 이를 사용하려면 이 지침에 따라 새 봇을 등록해야 합니다.

telegram_bot:
  - platform: polling
    api_key: YOUR_API_TOKEN
    allowed_chat_ids:
      - YOUR_CHAT_ID_1
      - YOUR_CHAT_ID_2 

채팅 ID를 찾는 가장 쉬운 방법은 봇에 메시지를 작성한 다음 http 요청을 시작하는 것입니다.

https://api.telegram.org/botYOUR_API_TOKEN/getUpdates

Telegram Bot의 유용한 예는 매일 아침 오늘의 기상 조건을 알려주어 오늘 무엇을 입어야 하는지 알려주는 것입니다. 이 프로젝트에서 그는 Telegram의 명령으로 PLC를 하드 리셋(Modbus 레지스터의 버튼 누름)하는 또 다른 작업을 받습니다. "/MBrestartPLC" 명령이 봇에 전송되고 Home Assistant에서 자동화 스크립트를 시작하여 최종적으로 Modbus 코일 레지스터 값을 변경하고 "/RESTrestartPLC"가 REST API를 사용하여 동일한 작업을 수행합니다.

SMTP

홈 어시스턴트에서 SMTP(Simple Mail Transfer Protocol)를 사용하여 홈 오토메이션에서 사용할 수 있는 데이터를 선택하여 이메일을 보낼 수 있습니다. configuration.yaml에 다음 코드를 추가하여 서비스를 구현할 수 있습니다. :

notify:
  - name: SMTP_MESSENGER # could be changed
    platform: smtp
    server: SMTP_SERVER # e.g. smtp.gmail.com
    port: 587
    timeout: 15
    sender: YOUR_EMAIL_ADRESS
    encryption: starttls
    username: YOUR_USERNAME
    password: YOUR_PASSWORD
    recipient:
      - EMAIL_ADRESS_OF_THE_RECIPIENT
    sender_name: My Home Assistant # could be changed 

홈 어시스턴트의 SMTP 서비스에 대한 추가 정보를 보려면 여기를 클릭하십시오.

자동화

모든 서비스와 라이브러리가 구현되고 준비되면 결합되어야 합니다. 이것은 automations.yaml에 프로그래밍된 자동화에 의해 수행됩니다. 홈 어시스턴트 환경의. 자동화의 구조는 아래 표와 같이 매우 간단합니다. 별칭은 Home Assistant의 자동화에 대한 이름일 뿐입니다. 트리거는 이 경우에 사용되는 특정 텔레그램 명령처럼 자동화를 실행하기 위해 true가 되어야 하는 조건이고, 이 경우 변수를 true로 설정하고 이메일을 보내는 것과 같은 작업은 작업입니다.

모드버스 TCP REST API
- id: '1' alias: 'Trigger a reset of a controller via modbus' trigger: platform: event event_type: telegram_command event_data: command: '/MBrestartPLC' action: - service: switch.turn_on entity_id: switch.restartMB - service: notify.SMTP_MESSENGER data: title: 'PLC message' message: 'PLC restart initiated via modbus!' - id: '2' alias: 'Trigger a reset of a controller via rest api' trigger: platform: event event_type: telegram_command event_data: command: '/RESTrestartPLC' action: - service: switch.turn_on entity_id: switch.restartREST - service: notify.SMTP_MESSENGER data: title: 'PLC message' message: 'PLC restart initiated via rest!'

결론

이 작은 데모 프로젝트는 홈 자동화에 PLCnext 컨트롤러를 통합하는 것이 매우 간단하다는 것을 증명합니다. Home Assistant에서 모든 PLC 데이터를 사용할 수 있으므로 이 예보다 훨씬 더 강력한 응용 프로그램이 가능합니다. 날씨 또는 Home Assistant에서 사용할 수 있는 기타 데이터에 따라 제어 및 모니터링할 수 있는 보다 복잡한 PLC 프로그램을 생각해 보십시오.


산업기술

  1. 기기 관리:수백만 개의 스마트 계량기 사용
  2. 가정 자동화 애플리케이션
  3. 오픈 소스 IIoT 게이트웨이를 사용하여 Modbus 장치 통합 속도를 높이십시오.
  4. Sensorflare 및 RaspberryPi가 포함된 433MHz 스마트 홈 컨트롤러
  5. 스마트 홈 기술 격차
  6. 패드에서 VIA 사용의 장점
  7. 가정에서 금속 절단을 위해 저렴한 CNC 기계 사용하기
  8. grpcurl을 사용하는 원격 gRPC
  9. SNMP를 통한 PLCnext Control 장치 관리
  10. PLCnext에 apt(-get) 패키지 관리자 설치