PLCnext-controllers naadloos koppelen aan Home Assistant voor slimme-huisturing
Deze demo laat zien hoe je een PLCnext-controller eenvoudig kunt gebruiken als slimme-huisapparaat in de open-source automatiseringssoftware Home Assistant via de REST API en Modbus TCP. Met de PLCnext-controller kun je Axioline-componenten in je automatisering gebruiken om krachtigere outputs toe te voegen dan de GPIO-pins van een Raspberry Pi, temperatuursensoren zoals Pt100 en bussystemen als DALI. Alles wat je nodig hebt is een werkende Home Assistant-installatie en een PLCnext-controller met een klein, draaiend PLCnext-project.
Vereisten
- Home Assistant Core 2021.1.5
- Balena
- PLCnext Engineer 2020.6
- AXC F 2152FW 2020.0 LTS
- Raspberry Pi 2 Image (opstarten kan tot een uur duren)
Bibliotheken:
- Modbus_TCP (Build 8) voor PLCnext Engineer
Home Assistant Services:
- Telegram
- SMTP
Functionaliteitsbeschrijving
Om een overzicht te geven van de mogelijkheden van een PLCnext-controller als slimme-huisapparaat, bevat het PLCnext-project een functionaliteit om andere apparaten hard te resetten door hun voedingsspanning met relais te schakelen. De resets worden getriggerd door commando's die naar een Telegram-bot worden gestuurd, waarna een e-mail wordt verstuurd met de informatie dat een herstart is geïnitieerd. Dit voorbeeld toont twee verschillende manieren om de PLCnext-controller met de Home Assistant-omgeving te verbinden.
Architectuur
Verbinden via Modbus TCP
Beginnend met de Modbus TCP-verbinding: er wordt een Modbus-server toegevoegd aan het PLCnext-project met behulp van de Modbus TCP-bibliotheek. De configuratie is dezelfde als in het bibliotheekvoorbeeld. De keuze van het juiste Modbus-register hangt af van het type data en hoe deze bedoeld is te worden gebruikt. In dit geval worden de variabelen gemapt op de coil-registers.
Let op: de Modbus-server ondersteunt niet meer dan één gelijktijdige verbinding. Als een verbinding niet correct wordt beëindigd – wat helaas soms voorkomt tijdens het testen – gaat de server in een foutstatus en moet handmatig worden herstart. Om dit te voorkomen, wordt aangeraden een automatische herstart van de Modbus-server in het PLCnext-project te programmeren.
Voor de Modbus-client zijn er in Home Assistant twee hoofdbeschikbare opties; de keuze is aan jou. De eerste is het gebruik van de Node-RED add-on en een van de daar beschikbare Modbus-bibliotheken. De meer intuïtieve manier is het configureren van een entiteit in de configuration.yaml van je Home Assistant-omgeving (meer informatie). Zoals hieronder getoond wordt de standaard switch-service gebruikt, een gangbare manier om met booleaanse variabelen te werken, omdat deze geïmplementeerde turn_on/turn_off-functionaliteiten heeft om variabelen in te stellen of te resetten.
modbus:
type: tcp
host: YOUR_SERVER_IP
port: 502
name: hub1
switch:
- platform: modbus
coils:
- name: restartMB
hub: hub1
slave: 1
coil: 13
Als je voor de Node-RED-optie kiest, wees je ervan bewust dat deze meestal verschillende verbindingen opent voor lezen en schrijven via Modbus TCP, waardoor de Modbus-server in de foutstatus kan geraken. Om dit te voorkomen kun je Modbus UDP gebruiken of twee Modbus-servers in je PLCnext-project opnemen: één voor lezen en één voor schrijven.
Verbinden via REST API
De tweede mogelijkheid is de PLCnext REST-data-interface. Deze interface is gerelateerd aan de PLCnext HMI, dus je hebt minimaal één HMI-pagina in je PLCnext-project nodig – zelfs als deze leeg is – om de REST API beschikbaar te maken. Bovendien moeten de variabelen gemarkeerd zijn met de HMI-vlag. Raadpleeg het PLCnext Info Center voor gedetailleerde informatie.
In dit geval wordt de Node-RED add-on gebruikt om HTTP-verzoeken te genereren aan de Home Assistant-kant. De installatie van de add-on volgt door deze en deze instructies. Zorg dat je beide stappen hebt voltooid voordat je doorgaat.
Als de HMI-gebruikersauthenticatie in het PLCnext-project is geactiveerd, kan de authenticatie in Node-RED er als volgt uitzien:
De flow voert de authenticatie uit en slaat het toegangstoken op voor latere verzoeken. Raadpleeg de documentatie in het PLCnext Info Center voor de exacte structuur van de HTTP-verzoeken.
Om toegang te krijgen tot de data van je Home Assistant-omgeving in Node-RED, zijn er verschillende nodes beschikbaar die meegeleverd worden met de Node-RED add-on. De korte flow onderaan de volgende figuur creëert een nieuwe entiteit in Home Assistant en de flow erboven controleert deze entiteit op wijzigingen. Als de entiteit op true wordt gezet, wordt een variabele in de PLCnext-controller ook op true gezet en triggert een reset. Omdat de restart-variabele 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 weer op false gezet.
Telegram Bot
Om met Home Assistant te communiceren, wordt de Telegram Bot API gebruikt. Hiervoor moet een nieuwe bot worden geregistreerd volgens deze instructie.
telegram_bot:
- platform: polling
api_key: YOUR_API_TOKEN
allowed_chat_ids:
- YOUR_CHAT_ID_1
- YOUR_CHAT_ID_2
De eenvoudigste manier om je chat-id te vinden is je bot een bericht te sturen en vervolgens deze HTTP-request uit te voeren:
https://api.telegram.org/botYOUR_API_TOKEN/getUpdates
Een nuttig voorbeeld voor de Telegram-bot is dat hij je elke ochtend informeert over het weer, zodat je weet wat je kunt dragen. In dit project krijgt hij een extra taak: een PLC hard resetten (de knop in de Modbus-registers indrukken) via een commando in Telegram. Het commando /MBrestartPLC wordt naar de bot gestuurd en start een automationscript in Home Assistant, dat uiteindelijk de Modbus coil-registerwaarde wijzigt; /RESTrestartPLC doet hetzelfde via de REST API.
SMTP
In Home Assistant kan het Simple Mail Transfer Protocol (SMTP) worden gebruikt om e-mails te sturen met een selectie van de data die beschikbaar is in je huisautomatisering. De service kan geïmplementeerd worden door de volgende code toe te voegen aan de configuration.yaml:
notify:
- name: SMTP_MESSENGER
platform: smtp
server: SMTP_SERVER
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
Klik hier voor meer informatie over de SMTP-service in Home Assistant.
Automatiseringen
Als alle services en bibliotheken geïmplementeerd en voorbereid zijn, moeten ze gecombineerd worden. Dit gebeurt via de automatiseringen die geprogrammeerd worden in het automations.yaml-bestand van de Home Assistant-omgeving. De structuur van een automatisering is heel eenvoudig, zoals in de onderstaande tabel getoond. De alias is de naam van de automatisering in Home Assistant. De trigger is de voorwaarde die waar moet zijn om de automatisering uit te voeren, zoals een bepaald Telegram-commando in dit geval, en de actie is de taak, zoals het instellen van een variabele op true en het versturen van een e-mail.
| Modbus TCP | REST API |
|---|---|
|
|
Conclusie
Deze demo toont aan dat het vrij eenvoudig is om een PLCnext-controller te integreren in een huisautomatisering. De beschikbaarheid van alle PLC-data in Home Assistant opent de weg voor toepassingen die veel krachtiger zijn dan dit voorbeeld. Denk aan complexere PLC-programma's die bestuurd en gemonitord kunnen worden in afhankelijkheid van het weer of andere data die beschikbaar is in Home Assistant.
Industriële technologie
- Een 433 MHz Slimme Huiscounter Bouwen met Sensorflare en Raspberry Pi
- Device Management: Slimme-meter-implementaties schalen over miljoenen apparaten
- Waarom VIA-in-pads PCB-prestaties verbeteren: cruciale voordelen
- Betaalbare Desktop CNC-machines voor Precies Metaalzagen Thuis
- Veilige Remote gRPC Toegang Met grpcurl Op PLCnext Apparaten
- PLCnext Control Apparaten Optimaliseren met SNMP: Een Praktische Gids
- APT-pakketbeheer installeren op PLCnext Linux: Stap-voor-stap handleiding
- Hoe slimme huistechnologie het alledaagse leven transformeert
- Versnel Modbus-apparaatintegratie met een open-source IIoT edge gateway
- Naadloze Draadloze Inrichting voor Slimme Huizen: Van Uitpakken tot Veilige Remote Setup
- De smart home skills gap overbruggen: Waarom Groot-Brittannië achterloopt op Europa