Din IoT-stack fungerar förmodligen. Tills en sensor sticker iväg kl. 02:00, någon blir pingad och du lägger nästa morgon på att gräva i råa payloads och halvfärdiga loggar. Det värsta är osäkerheten. Var det på riktigt, eller bara brus?
Den här automatiseringen för Slack Sheets alerts träffar driftschefer först, men anläggningsansvariga och ingenjörer känner av den också. Du får tydligare larm, färre dubbletter och en Google Sheets-historik som faktiskt går att använda.
Nedan ser du arbetsflödet, vad det förändrar i vardagen och hur du sätter upp det utan att göra det till ett ”nytt projekt” som aldrig blir klart.
Så fungerar den här automatiseringen
Hela n8n-flödet, från trigger till slutresultat:
n8n Workflow Template: Slack + Google Sheets: smartare IoT-avvikelselarm
flowchart LR
subgraph sg0["MQTT Sensor Flow"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/mqtt.svg' width='40' height='40' /></div><br/>MQTT Sensor Trigger"]
n1@{ icon: "mdi:play-circle", form: "rounded", label: "Batch Process Schedule", pos: "b", h: 48 }
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Merge Triggers"]
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "Define Sensor Thresholds", pos: "b", h: 48 }
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Parse Sensor Payload"]
n5@{ icon: "mdi:cog", form: "rounded", label: "Generate Data Fingerprint", pos: "b", h: 48 }
n6@{ icon: "mdi:cog", form: "rounded", label: "Remove Duplicate Readings", pos: "b", h: 48 }
n7@{ icon: "mdi:robot", form: "rounded", label: "AI Anomaly Detector", pos: "b", h: 48 }
n8["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Parse AI Analysis"]
n9@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Route by Severity", pos: "b", h: 48 }
n10@{ icon: "mdi:message-outline", form: "rounded", label: "Send Critical Email", pos: "b", h: 48 }
n11["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Slack Critical Alert"]
n12["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Slack Warning Alert"]
n13["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Merge Alert Outputs"]
n14@{ icon: "mdi:database", form: "rounded", label: "Archive to Google Sheets", pos: "b", h: 48 }
n15@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
n2 --> n3
n15 -.-> n7
n8 --> n9
n9 --> n10
n9 --> n11
n9 --> n12
n9 --> n13
n7 --> n8
n0 --> n2
n13 --> n14
n10 --> n13
n12 --> n13
n4 --> n5
n11 --> n13
n1 --> n2
n3 --> n4
n5 --> n6
n6 --> n7
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0,n1 trigger
class n7 ai
class n15 aiModel
class n9 decision
class n14 database
class n4,n8 code
classDef customIcon fill:none,stroke:none
class n0,n2,n4,n8,n11,n12,n13 customIcon
Problemet: IoT-larm är brusiga, otydliga och svåra att granska
De flesta IoT-övervakningsupplägg fallerar på ett väldigt specifikt sätt. Antingen larmar de om allt (så folk börjar ignorera Slack) eller så larmar de om för lite (så du får veta det när en kund klagar eller en maskin stannar). Sedan finns ”vad hände?”-problemet: larmet kan innehålla en rå JSON-payload, men inte kontexten, inte tröskelvärdet och inte en rekommenderad åtgärd. Även när du får användbara signaler byggs dubbletter på. Samma sensor, samma värde, flera ping. Det tar energi och det kostar, eftersom någon måste fortsätta sortera riktiga problem från bakgrundsbrus.
Friktionen växer över tid. Här är var det brukar fallera i verkliga team.
- Folk får larm utan tillräcklig kontext, så varje topp blir en miniutredning.
- Dubblettvärden skapar dubblettlarm, vilket gör att Slack-kanaler känns opålitliga.
- Allvarlighetsgrad är inte konsekvent, så ”varning” och ”kritiskt” behandlas likadant.
- Det finns inget tydligt revisionsspår, vilket gör eftergranskningar efter incidenter till gissningslek.
Lösningen: AI-stödd avvikelsedetektering som skickar till Slack och loggar till Sheets
Det här flödet bevakar inkommande IoT-sensordata i realtid (eller i små batchar enligt schema), standardiserar den, tar bort dubbletter och ber sedan en AI-agent bedöma värdet mot dina trösklar. AI:n säger inte bara ”dåligt” eller ”bra”. Den returnerar strukturerad JSON med en allvarlighetsnivå, en lista med problem, en förklaring på klarspråk och en rekommenderad åtgärd. Därifrån routar n8n larmet. Kritiska händelser går till Slack och e-post. Varningar går till Slack i en kanal med lägre brusnivå. Allt, inklusive ”normala” värden, kan arkiveras i Google Sheets så att du har en pålitlig tidslinje när du behöver den.
Flödet startar från en MQTT-ström (topic sensors/+/data) eller ett 15-minuters batchschema. Efter normalisering och fingerprint-baserad deduplicering producerar OpenAI-agenten ett avvikelseutslag, och därefter skickar routingen rätt meddelande till rätt plats. Till sist fångar en rad i Google Sheets hela historiken för senare rapportering.
Det du får: automatisering vs. resultat
| Vad det här arbetsflödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut i praktiken
Säg att du övervakar 25 sensorer och idag går igenom larm två gånger per dag. Om varje ”topp” tar cirka 5 minuter att öppna loggar, jämföra mot trösklar och skriva en Slack-uppdatering, så blir 10 toppar på en dag ungefär 50 minuters uppmärksamhet. Och det är en lugn dag. Med det här flödet är ”jobbet” främst att godkänna dina trösklar en gång, och sedan låta Slack ta emot en kort, lättläst sammanfattning medan Google Sheets sparar posten automatiskt. Du utreder fortfarande riktiga problem, men du slutar bränna tid på rutinmässig sortering.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen drift om du föredrar det (Hostinger fungerar bra)
- MQTT-broker för att ta emot sensormätningar i realtid.
- Slack för att leverera varningar och kritiska larm till kanaler.
- Google Sheets för att arkivera mätvärden och AI-analys.
- Gmail för att e-posta kritiska larm till responders.
- OpenAI API-nyckel (hämta den i OpenAI API-dashboarden).
Svårighetsgrad: Mellannivå. Du kopplar konton, sätter trösklar och testar med några exempel-payloads från sensorer.
Vill du inte sätta upp det här själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
En sensormätning triggar flödet. Den kan komma direkt via MQTT (perfekt för realtidsövervakning) eller köras var 15:e minut för batchbearbetning när du vill ha förutsägbar belastning.
Payloaden struktureras och dedupliceras. n8n tolkar inkommande meddelande till en konsekvent struktur (sensorId, location, timestamp, temperature, humidity, CO2 och mer). Sedan skapar den ett fingeravtryck (hash) och tar bort dubbletter så att upprepade värden inte spammar dina AI-anrop eller ditt team.
AI avgör vad som är viktigt. OpenAI-chatmodellen driver en AI-agent som jämför mätvärden mot dina definierade trösklar och svarar i strikt JSON: avvikelse ja/nej, allvarlighetsgrad (critical/warning/normal), vad som är fel, varför och vad nästa steg är. Det här är ärligt talat delen som får larm att kännas ”mänskliga” utan att lägga till människor.
Larm routas till rätt ställe och allt arkiveras. Kritiskt går till Slack och Gmail, varning går till Slack, och alla vägar sammanfogas till en append i Google Sheets så att historiken förblir intakt.
Du kan enkelt justera trösklarna och routingreglerna så att de passar din miljö. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementation
Steg 1: Konfigurera MQTT-triggern
Skapa entry points i realtid och schemalagt som startar arbetsflödet och matar in data i bearbetningskedjan.
- Lägg till och konfigurera MQTT Intake Trigger med Topics inställt på
sensors/+/data. - Lägg till Scheduled Batch Trigger och ställ in schemaregeln till var
15:e minut. - Anslut båda triggernoderna till Combine Start Signals.
⚠️ Vanlig fallgrop: MQTT-noder kräver vanligtvis broker-inloggningsuppgifter; om er broker är säkrad, lägg in dem i MQTT Intake Trigger innan ni testar.
Steg 2: Anslut kedjan för dataförberedelse
Definiera sensorgränser, avkoda payloads och ta bort dubbletter före AI-analys.
- I Combine Start Signals, låt Mode vara inställt på
chooseBranch. - Konfigurera Set Sensor Limits med Mode inställt på
rawoch JSON Output inställt på de angivna tröskelvärdena ochalertConfig-blocket. - I Decode Sensor Payload, behåll JavaScript Code som angivet för att tolka sensordata och bifoga tröskelvärden.
- I Create Data Hash, ställ in Type till
SHA256, Value till{{ $json.sensorId + '-' + $json.timestamp + '-' + JSON.stringify($json.readings) }}, och Data Property Name tilldataHash. - I Filter Duplicate Records, ställ in Compare till
selectedFieldsoch Fields to Compare tilldataHash.
Tips: Uppdatera [YOUR_ID] och [YOUR_EMAIL] i Set Sensor Limits innan ni går live.
Steg 3: Sätt upp AI-baserad avvikelsedetektering
Konfigurera AI-agenten och tolka dess JSON-svar för vidare routing.
- I AI Anomaly Analysis, behåll Text-prompten som angivet för att tvinga JSON-utdata och inkludera tröskelvärden.
- Säkerställ att OpenAI Chat Engine är ansluten som språkmodell för AI Anomaly Analysis med Model inställt på
gpt-4o-minioch Temperature inställt på0.3. - I Interpret AI Response, behåll JavaScript Code för att parsa AI-JSON och sätta
alertLevelochrequiresAlert.
Inloggningsuppgifter krävs: Anslut era OpenAI-inloggningsuppgifter i OpenAI Chat Engine (inloggningsuppgifter läggs till i den överordnade språkmodellnoden, inte i AI Anomaly Analysis).
Steg 4: Konfigurera routing och larmutgångar
Routa avvikelser efter allvarlighetsgrad och skicka larm via e-post och Slack.
- I Severity Routing, behåll reglerna som matchar
{{ $json.alertLevel }}motcriticalochwarning, med Fallback Output inställt påextra. - Konfigurera Dispatch Critical Email med Send To inställt på
{{ $('Set Sensor Limits').first().json.alertConfig.emailRecipients }}, och behåll de angivna uttrycken för Subject och Message. - Konfigurera Post Critical Slack med Select inställt på
channeloch Channel inställt på ert kanal-ID för kritiska larm. - Konfigurera Post Warning Slack med Select inställt på
channeloch Channel inställt på ert kanal-ID för varningslarm. - Säkerställ att Severity Routing skickar utdata parallellt till både Dispatch Critical Email och Post Critical Slack, och till Post Warning Slack för varningar.
Inloggningsuppgifter krävs: Anslut era Gmail-inloggningsuppgifter i Dispatch Critical Email.
Inloggningsuppgifter krävs: Anslut era Slack-inloggningsuppgifter i Post Critical Slack och Post Warning Slack.
Steg 5: Anslut arkivloggningen
Slå ihop larmutfall och logga dem till Google Sheets för revision.
- Anslut Dispatch Critical Email, Post Critical Slack och Post Warning Slack till Join Alert Results.
- Anslut Join Alert Results till Log to Sheets Archive.
- I Log to Sheets Archive, ställ in Operation till
append, välj sedan mål-Document och Sheet Name.
Inloggningsuppgifter krävs: Anslut era Google Sheets-inloggningsuppgifter i Log to Sheets Archive.
Steg 6: Testa och aktivera ert arbetsflöde
Validera indata, verifiera AI-beslut och aktivera arbetsflödet för kontinuerlig övervakning.
- Använd MQTT Intake Trigger för att skicka ett testmeddelande till
sensors/+/data, eller kör Scheduled Batch Trigger manuellt. - Bekräfta att Decode Sensor Payload ger en strukturerad avläsning och att Filter Duplicate Records endast behåller unika poster.
- Verifiera att AI Anomaly Analysis returnerar giltig JSON och att Interpret AI Response sätter
alertLevelkorrekt. - Säkerställ att larm skickas från Dispatch Critical Email och Post Critical Slack när allvarlighetsgraden är critical, och från Post Warning Slack när allvarlighetsgraden är warning.
- Kontrollera Log to Sheets Archive för tillagda rader efter att larm har behandlats.
- När ni är nöjda, växla arbetsflödet till Active för produktionsanvändning.
Vanliga fallgropar
- Slack-inloggningar kan löpa ut eller kräva specifika behörigheter. Om något slutar fungera, kontrollera först n8n:s Slack-credential och kanalåtkomst för #iot-critical och #iot-alerts.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om noder nedströms fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in din tonalitet tidigt, annars kommer du redigera utdata för alltid.
Vanliga frågor
Cirka en timme om dina MQTT-, Slack- och Google-inloggningar är klara.
Nej. Du kopplar främst konton och justerar trösklar. Flödet innehåller redan parsning och routinglogik.
Ja. n8n har ett gratis alternativ för egen drift och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna in OpenAI API-användning, vilket vanligtvis är några cent per dag vid låga volymer.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen drift på en VPS. För egen drift är Hostinger VPS prisvärd och hanterar n8n bra. Egen drift ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det är det normala sättet att använda det. Uppdatera gränserna i ”Define Sensor Thresholds” (temperature, humidity, pressure, CO2) och ändra Slack-kanalnamnen i larmkonfigurationen. Du kan också justera ”Route by Severity”-logiken för att lägga till en ”normal”-kanal, routa per plats eller skicka kritiska larm till ett roterande on-call-alias. Om du vill arkivera någon annanstans, byt ”Archive to Google Sheets” mot en databasnod och låt resten vara oförändrat.
Oftast beror det på utgångna Slack-inloggningar eller saknad behörighet att posta i målkanalen. Återanslut Slack-credential i n8n och bekräfta sedan att appen får skriva till #iot-critical och #iot-alerts. Om det bara fallerar ibland kan du också slå i Slacks rate limits vid toppar, så batchning eller att minska dubbletter blir ännu viktigare.
På en liten n8n Cloud-plan kan du räkna med tusentals körningar per månad, och vid egen drift försvinner den hårda gränsen (din server blir begränsningen). I praktiken skalar flödet bra eftersom det deduplicerar före AI-steget, vilket håller den dyra delen under kontroll. Om du väntar dig toppar, börja med att logga allt till Sheets och skicka bara Slack för warning/critical så att människor inte blir flaskhalsen.
Ofta ja, eftersom det här flödet inte bara är ”skicka meddelande när värdet ändras”. Du har två triggers (MQTT plus schemalagda batchar), deduplicering, strukturerad AI-utdata och förgrening efter allvarlighetsgrad, vilket n8n hanterar rent utan att bli en rörig kedja. Möjligheten till egen drift spelar också roll när du har många mätvärden och inte vill betala per steg. Zapier eller Make kan fortfarande fungera för enkla trösklar, men när du vill ha kontext, rekommendationer och en revisionslogg upplevs n8n ofta som mer stabilt. Vill du ha en second opinion på insats vs. effekt, prata med en automationsexpert.
Tydliga larm, felfri historik, mindre tvekan. Sätt upp det en gång och låt Slack och Google Sheets tala om vad som faktiskt händer.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.