NFC + Node-Red Subflow = Sant

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

  1. Lätt till en NFC tag
  2. Skapar ett subflow
  3. Lyssnar efter en tag
  4. Kontrollerar om det är rätt enhet
  5. Skickar vidare och gör vår action

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.

I vårt fall vill vi ha INGEN input och TVÅ output.

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.

NameInput typeDefault valueLabel
F_PhonecheckboxTrueFredriks telefon
M_PhonecheckboxTrue”MM” Telefon
TAG_IDstring, env variableTag ID
Table: subflow

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.

EgenskapVärdeKommentar
NameCorrect tag?
Propertymsg.payload.event.tag_idDetta är det tag id som kommer från events:all
Rule 1== $TAG_IDDet ID som vi anger i konfigurationen för vårt subflow
Table: Switch Correct tag

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.

EgenskapVärdeKommentar
NameCheck device id
Propertymsg.payload.event.device_idDetta ä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
Table: Switch Correct tag

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.

EgenskapVärdeKommentar
NameAllowed F
Property$ F_PhoneDetta är den variabel vi sätter i subflowets konfiguration
Rule 1is true
Table: Switch allowed device
EgenskapVärdeKommentar
NameAllowed M
Property$ M_PhoneDetta är den variabel vi sätter i subflowets konfiguration
Rule 1is true
Table: Switch allowed device

Koppla ihop

En bild säger mer än tusen ord…

Node-Red

Så, vad har vi nu gjort?

  1. events:all lyssnar på tag_scanned, dvs. om vi skannar en tagg så kommer denna ”höra” det och skicka ut svaret
  2. Correct tag kontrollerar om taggen som skannades är samma tag som vi skriver in IDt på när vi konfigurerar vårt subflow.
  3. 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.
  4. 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.
  5. Output 1 skickar alltså ut ett svar OM den enheten som skannar får hantera just denna NFC-tagg.
  6. 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).

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.

Node-Red tag flow

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:

Leave a Reply