Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Industriële technologie

Een PLCnext-controller gebruiken als smart home-apparaat via Home Assistant

Dit kleine demoproject laat zien hoe je eenvoudig een PLCnext-controller kunt gebruiken als een smart home-apparaat in de open-source domotica-software Home Assistant via de REST API en Modbus TCP. Met de PLCnext-controller kunt u de Axioline-componenten in uw automatisering gebruiken om eenvoudig krachtigere uitgangen toe te voegen dan de GPIO-pinnen van de Raspberry Pi, temperatuursensoren zoals Pt100 en bussystemen zoals DALI. Het enige wat je nodig hebt is een werkende Home Assistant-installatie en een PLCnext-controller met een klein maar uitvoerbaar PLCnext-project.

Vereisten

  • Thuisassistent Core 2021.1.5
  • Balena
  • PLCnext Engineer 2020.6
  • AXC F 2152FW 2020.0 LTS
  • Afbeelding Raspberry Pi 2 (het opstarten kan een uur duren.)

Bibliotheken:

  • Modbus_TCP (Build 8) voor PLCnext Engineer

Thuishulpdiensten:

  • Telegram
  • SMTP

Functionaliteitsbeschrijving

Om een ​​kort overzicht te geven van de mogelijkheden om een ​​PLCnext Controller als smart home device te gebruiken, is er een PLCnext-project dat andere apparaten hard kan resetten door hun voedingsspanning met relais te regelen. De resets worden geactiveerd door opdrachten die naar een Telegram Bot worden gestuurd, voordat een e-mail wordt verzonden met de informatie dat een herstart is gestart. Dit voorbeeld wordt getoond met twee verschillende manieren om de PLCnext controller aan te sluiten op de Home Assistant-omgeving.

Architectuur

Verbinding via Modbus TCP

Beginnend met de Modbus TCP-verbinding wordt een Modbus-server toegevoegd aan het PLCnext-project met behulp van de Modbus TCPl-bibliotheek. De configuratie is hetzelfde als in het bibliotheekvoorbeeld. Het kiezen van het juiste Modbus-register hangt af van het soort gegevens en hoe ze moeten worden gebruikt. In dit geval worden de variabelen toegewezen aan het spoelregister.

Houd er rekening mee dat de Modbus-server niet meer dan één verbinding tegelijk ondersteunt. Dus als een verbinding niet correct wordt beëindigd, wat helaas soms gebeurt tijdens het testen van de verbinding, komt de server in een foutstatus en moet deze handmatig opnieuw worden opgestart. Om dit te vermijden, wordt aanbevolen om een ​​automatische herstart van de Modbus-server in het PLCnext-project te programmeren.

Voor de Modbus-client zijn er twee hoofdmogelijkheden in Home Assistant en het is aan jou om je favoriet te kiezen. De eerste is om de Node-RED add-on en een van de Modbus-bibliotheken te gebruiken die daar beschikbaar zijn. De meer intuïtieve is om een ​​entiteit te configureren in de configuration.yaml van uw Home Assistant-omgeving (meer informatie). Zoals hieronder wordt getoond, wordt de standaard schakelservice gebruikt, wat een gebruikelijke manier is om met booleaanse variabelen te werken, omdat het turn_on/turn_off-functionaliteiten heeft geïmplementeerd om de variabelen in te stellen of te resetten.

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 

Als u de Node-RED-mogelijkheid kiest, houd er dan rekening mee dat deze doorgaans verschillende verbindingen start voor lezen en schrijven met Modbus TCP, zodat de Modbus-server in een foutstatus gaat zoals hierboven vermeld. Om dit te voorkomen, kunt u Modbus UDP of twee Modbus-servers in uw PLCnext-project gebruiken, één voor lezen en één voor schrijven.

Verbinding via REST API

De tweede mogelijkheid voor de koppeling is de PLCnext REST data-interface. Deze interface is gerelateerd aan de PLCnext HMI, het is dus noodzakelijk om minimaal één HMI-pagina in uw PLCnext-project te hebben, ook als deze leeg is, om de REST API beschikbaar te maken. Verder moeten de variabelen worden ondertekend met de HMI-vlag. Voor meer gedetailleerde informatie kunt u een kijkje nemen in het PLCnext Info Center.

In dit geval wordt de Node-RED-add-on gebruikt om HTTP-verzoeken aan de Home Assistant-kant te genereren. De installatie van de add-on wordt gedaan door deze en deze instructies te volgen. Zorg ervoor dat je beide stappen hebt gedaan voordat je verder gaat.

Als de HMI-gebruikersauthenticatie in het PLCnext-project is geactiveerd, kan de authenticatie in Node-RED er als volgt uitzien:

De stroom voert de verificatie uit en slaat het toegangstoken op om het in latere aanvragen te gebruiken. Raadpleeg voor de exacte opbouw van de HTTP-verzoeken ook de documentatie in het PLCnext Info Center.

Om toegang te krijgen tot de gegevens van je Home Assistant-omgeving in Node-RED, komen er verschillende nodes met de Node-RED add-on. De korte stroom onderaan de volgende afbeelding creëert een nieuwe entiteit in Home Assistant en in de stroom erboven wordt deze entiteit gecontroleerd op wijzigingen. Als de entiteit op true is ingesteld, wordt ook een variabele in de PLCnext-controller op true gezet en wordt een reset geactiveerd. Omdat de herstartvariabele in het PLCnext-project na de reset automatisch op false wordt gezet, wordt de entiteit in Home Assistant na een vertraging van 5 seconden ook op false gezet.

Telegram Bot

Om te communiceren met Home Assistant wordt de Telegram Bot API gebruikt. Om dit te gebruiken moet een nieuwe bot worden geregistreerd door deze instructie te volgen.

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

De gemakkelijkste manier om uw chat-ID te vinden, is door uw bot een bericht te schrijven en vervolgens http-verzoek te starten:

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

Een handig voorbeeld voor de Telegram Bot zou kunnen zijn, dat hij je elke ochtend informeert over de weersomstandigheden van vandaag, zodat je een indicatie hebt wat je deze dag moet dragen. In dit project krijgt hij nog een taak, om een ​​PLC hard te resetten (druk op de knop in de Modbus registers) door een commando in Telegram. Het commando "/MBrestartPLC" wordt naar de bot gestuurd en start een automatiseringsscript in Home Assistant, dat uiteindelijk de Modbus-spoelregisterwaarde verandert en "/RESTrestartPLC" doet hetzelfde met behulp van de REST API.

SMTP

In Home Assistant kan het Simple Mail Transfer Protocol (SMTP) worden gebruikt om e-mails te verzenden met een selectie van de gegevens die beschikbaar zijn in uw domotica. De service kan worden geïmplementeerd door de volgende code toe te voegen aan de 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 

Klik hier voor meer informatie over de SMTP-service in Home Assistant.

Automatiseringen

Als alle diensten en bibliotheken zijn geïmplementeerd en voorbereid, moeten ze worden gecombineerd. Dit wordt gedaan door de automatiseringen die zijn geprogrammeerd in de automations.yaml van de Home Assistant-omgeving. De opbouw van een automatisering is heel eenvoudig, zoals weergegeven in onderstaande tabel. De alias is slechts de naam voor de automatisering in Home Assistant. De trigger is de voorwaarde die waar moet zijn om de automatisering uit te voeren, zoals een bepaald telegramcommando zoals in dit geval gebruikt, en de actie is de taak, zoals in dit geval een variabele op waar zetten en een e-mail verzenden.

Modbus 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!'

Conclusie

Dit kleine demoproject bewijst dat het vrij eenvoudig is om een ​​PLCnext controller te integreren in een domotica. De beschikbaarheid van alle PLC-gegevens in Home Assistant maakt de weg vrij voor toepassingen die veel krachtiger zijn dan dit voorbeeld. Denk aan complexere PLC-programma's die kunnen worden bestuurd en bewaakt afhankelijk van het weer of andere gegevens die beschikbaar zijn in Home Assistant.


Industriële technologie

  1. Apparaatbeheer:gelijke tred houden met miljoenen slimme meters
  2. Toepassingen van domotica
  3. Een open source IIoT-gateway gebruiken om de integratie van Modbus-apparaten te versnellen
  4. Draadloze inbedrijfstelling in slimme huizen
  5. 433MHz Smart Home Controller met Sensorflare en een RaspberryPi
  6. De kloof tussen slimme thuisvaardigheden
  7. Voordelen van het gebruik van VIA in pads
  8. Een betaalbare CNC-machine gebruiken om thuis metaal te snijden
  9. Externe gRPC met behulp van grpcurl
  10. Een PLCnext Control-apparaat beheren via SNMP
  11. Installeren van apt(-get) pakketbeheerder op PLCnext