I detta inlägg ska vi använda oss av NFC-taggar i Home Assistant och Node-Red för att trigga ett flöde. Vi gör detta genom att skapa ett Subflow i Node-Red som kontrollerar att det är rätt tag samt att det är rätt device. För det kanske är så att om du skannar så ska det vara mysbelysning, men om tjejen skannar så ska google säga: gå och hämta glass till mig!
OBS! Detta är en artikel som ursprungligen var publicerad på frosenlind.se den 3 februari 2021.
Länkar i inlägget som hänvisar till gamla sidan kommer inte att fungera!
Det är precis som rubriker säger en bra kombination att blanda NFC-taggar med Node-Red och Subflow. Även med Custom Events och Subflows som du självklart kan läsa om i andra inlägg. Du hittar fler inlägg i ämnet här: http://frosenlind.se/hemautomation/custom-events-och-subflow/
Mitt behov, som jag kommer använda som exempel är enkelt. När jag skannar taggen som sitter på skrivbordet vill jag toggla mellan två olika ljusstyrkor.
Målbild
När vi är klara ska vi kunna processa en scanning av en NFC-tag, kontrollera att det är rätt enhet som skannar och därefter utföra en handling.
Subflow för NFC
Genomförande
- Lätt till en NFC tag
- Skapar ett subflow
- Lyssnar efter en tag
- Kontrollerar om det är rätt enhet
- Skickar vidare och gör vår action
Lägga till NFC
Skapa subflow
Vi har skapat subflows i några inlägg nu så jag kommer inte gå in på djupet på alla delar. Är du osäker på något bit så rekommenderar jag dig att läsa nedan inlägg eller skriv i kommentaren längst ner så återkommer jag.
I vårt subflow så vill inte ha någon input men två outputs. Precis som tidigare kommer vi dedikera den första till vår faktiska output och den andra som en debug-nod som lyssnar på alla NFC-läsningar.
Miljövariabler
(Jag har gett upp att försöka komma ihåg om det är på svenska eller engelska)
Nu behöver vi sätta upp tre Environment variabler. Klicka på edit subflow längst upp till vänster och skapa därefter tre variabler.
Du måste skapa minst två variabler. En är dedikerat till taggen och de andra för olika enheter. I mitt fall vill jag att både min och min frus telefon ska kunna använda taggarna (kanske olika) och jag kommer därför bygga in den funktionaliteten från början.
Name | Input type | Default value | Label |
---|---|---|---|
F_Phone | checkbox | True | Fredriks telefon |
M_Phone | checkbox | True | ”MM” Telefon |
TAG_ID | string, env variable | Tag ID |
Bygga sekvensen
Inled med att dra in en events:all och tre switch-noder.
Events:all
Switch
Events:all
Events:all konfigureras väldigt enkelt; vi vill på events som skapas när vi skannar en tagg, därför fyller vi i tag_scanned i Events type.
Switch
Nästa nod ska kontrollera att vi har skannat rätt tagg, dvs. det tagg id som vi fyller i när vi ”drar in” vårt subflow.
Egenskap | Värde | Kommentar |
---|---|---|
Name | Correct tag? | |
Property | msg.payload.event.tag_id | Detta är det tag id som kommer från events:all |
Rule 1 | == $TAG_ID | Det ID som vi anger i konfigurationen för vårt subflow |
Nästa steg är att kontrollera om enheten som skannar taggen är registrerad ( i vårt flöde).
Konfigurera nästa switch-nod enligt nedan.
Egenskap | Värde | Kommentar |
---|---|---|
Name | Check device id | |
Property | msg.payload.event.device_id | Detta är det device id som kommer från events:all |
Rule 1 | == | Välj string, vi återkommer till denna lite senare |
Rule 2 | == | Välj string, vi återkommer till denna lite senare |
Nu ska vi konfigurera två noder som är nästan identiska. Om du väljer att bara hantera en enhet (typ mobil) eller sjutton är upp till dig. Detta är lätt att ändra senare.
Egenskap | Värde | Kommentar |
---|---|---|
Name | Allowed F | |
Property | $ F_Phone | Detta är den variabel vi sätter i subflowets konfiguration |
Rule 1 | is true |
Egenskap | Värde | Kommentar |
---|---|---|
Name | Allowed M | |
Property | $ M_Phone | Detta är den variabel vi sätter i subflowets konfiguration |
Rule 1 | is true |
Koppla ihop
En bild säger mer än tusen ord…
Så, vad har vi nu gjort?
- events:all lyssnar på tag_scanned, dvs. om vi skannar en tagg så kommer denna ”höra” det och skicka ut svaret
- Correct tag kontrollerar om taggen som skannades är samma tag som vi skriver in IDt på när vi konfigurerar vårt subflow.
- Därefter skickar vi vidare till check device id, vi kommer komma tillbaka till hur vi kontrollerar device id, här kontrollerar vi så att den enhet som skannade taggen faktiskt är ”registrerad” i vårt system.
- Om enheten var registrerad så skickar vi vidare i ”rätt tråd”. Där kontrollerar vi sedan i Allowed switchen om enheten får göra just detta subflowet.
- Output 1 skickar alltså ut ett svar OM den enheten som skannar får hantera just denna NFC-tagg.
- Output 2 skickar ut all info som finns när vi skannar någon tagg men någon enhet (som har tillgång till vår Home Assistant).
Lästips!
Device ID
Nu ska vi ta reda på vilket ID som din enhet har, eftersom vi var duktiga och lade till en extra output för att debugga blir detta väldigt enkelt.
Dra in ditt nya subflow och koppla till en debug-nod på den undre anslutningspunkten.
Om du ändrar till complete msg object så ser du hela objektet och inte bara payloaden.
Deploya ditt flöde och skanna därefter din tagg, tänk på att du måste ha din mobiltelefon upplåst när du skannar. I debugg-flödet till höger bör du nu hitta ditt device ID på följande sökväg: payload.event.device_id. Det ser ut något som detta: pl4d999c25909tgh
Tillbaka in och redigera ditt subflow
Gå in i konfigurationen för switch-noden som vi döpte till ”Check device id”, på raden för din telefon kopierar du in ditt ID.
Klistra in ditt Device ID
Om du som mig har gjort ett flöde som hanterar fler än en enhet gör du samma sak för de andra. Denna information sparas i ditt subflow så det räcker sen att du redigerar på ett ställe om du vill lägga till fler enheter.
Vi testar
Jag vill kunna tända och släcka takspottarna i arbetsrummet på ett enkelt sätt, speciellt under de mörka månaderna är det irriterande eftersom när man sätter sig är det mörkt ute och bara en stund senare strålas solen in.
Detta är en funktion som ska vara samma för både mig och min fru, därför bokar vi i båda våra telefoner. Vi fyller i Tagg ID, deployar och sen ser vi om det fungerar.
Vi bygger på med en call-service nog där vi anger toggle som service.
Sammanfattning
Vad har vi nu gjort? Jo, istället för att ha ett eller flera komplicerade flöden där vi ska kolla vilken tagg och vilken enhet som skannar så har vi ett enkelt subflow att dra in. Detta kan också med fördel kombineras med custom events som du kan läsa mer om på sidan.
Min serie om custom events börjar här:
Hela serien hittar du här: