MXL - Meddle Expression Language
Übersicht
Abschnitt betitelt „Übersicht“MXL (Meddle Expression Language) ist eine einfache Ausdruckssprache, die in Meddle-Konnektoren verwendet wird, um Bedingungen und Logik zu definieren.
Verwendet in:
MXL-Ausdrücke werden zu booleschen Werten (wahr/falsch) basierend auf Payload-Daten ausgewertet.
Grundstruktur
Abschnitt betitelt „Grundstruktur“feldname operator wertBeispiele
Abschnitt betitelt „Beispiele“temperature > 80pressure < 10status == "active"count != 0Operatoren
Abschnitt betitelt „Operatoren“Vergleichsoperatoren
Abschnitt betitelt „Vergleichsoperatoren“| Operator | Beschreibung | Beispiel |
|---|---|---|
> | Größer als | temperature > 80 |
< | Kleiner als | pressure < 10 |
>= | Größer oder gleich | humidity >= 60 |
<= | Kleiner oder gleich | speed <= 100 |
== | Gleich | status == "active" |
!= | Ungleich | count != 0 |
Logische Operatoren
Abschnitt betitelt „Logische Operatoren“| Operator | Beschreibung | Beispiel |
|---|---|---|
&& | UND (beide Bedingungen müssen wahr sein) | temp > 80 && press < 10 |
| ` | ` |
Datentypen
Abschnitt betitelt „Datentypen“Numerische Werte vergleichen:
temperature > 25.5pressure >= 101.3count == 100speed != 0Zeichenketten
Abschnitt betitelt „Zeichenketten“Zeichenkettenwerte vergleichen (verwenden Sie doppelte Anführungszeichen):
status == "active"mode != "manual"error_code == "E001"Boolesche Werte
Abschnitt betitelt „Boolesche Werte“Boolesche Werte vergleichen:
enabled == truefault != falseKomplexe Ausdrücke
Abschnitt betitelt „Komplexe Ausdrücke“Mehrere Bedingungen mit UND
Abschnitt betitelt „Mehrere Bedingungen mit UND“Alle Bedingungen müssen wahr sein:
temperature > 20 && temperature < 30pressure > 100 && humidity < 80 && status == "running"Mehrere Bedingungen mit ODER
Abschnitt betitelt „Mehrere Bedingungen mit ODER“Mindestens eine Bedingung muss wahr sein:
temperature > 80 || pressure > 150status == "error" || status == "fault" || status == "stopped"Kombination von UND und ODER
Abschnitt betitelt „Kombination von UND und ODER“Verwenden Sie Klammern zur Gruppierung (falls unterstützt):
(temperature > 80 || pressure > 150) && status == "active"Häufige Muster
Abschnitt betitelt „Häufige Muster“Bereichsprüfung
Abschnitt betitelt „Bereichsprüfung“Prüfen, ob der Wert im Bereich liegt:
temperature >= 20 && temperature <= 30Schwellenwert-Warnung
Abschnitt betitelt „Schwellenwert-Warnung“Warnung, wenn der Wert den Schwellenwert überschreitet:
temperature > 80pressure > 150vibration > 5.0Statusüberwachung
Abschnitt betitelt „Statusüberwachung“Auf spezifische Statuswerte prüfen:
status == "error"status != "running"mode == "manual"Multi-Parameter-Warnung
Abschnitt betitelt „Multi-Parameter-Warnung“Warnung bei mehreren Bedingungen:
temperature > 100 || pressure > 150 || vibration > 5Sicherheitsverriegelung
Abschnitt betitelt „Sicherheitsverriegelung“Sicherstellen, dass mehrere Bedingungen erfüllt sind:
temperature > 50 && pressure > 100 && flow > 10Beispiele nach Anwendungsfall
Abschnitt betitelt „Beispiele nach Anwendungsfall“Temperaturüberwachung
Abschnitt betitelt „Temperaturüberwachung“// Hohe Temperaturwarnungtemperature > 80
// Temperatur außerhalb des Bereichstemperature < 15 || temperature > 35
// Kritische Temperatur mit Drucktemperature > 100 && pressure > 150Gerätestatus
Abschnitt betitelt „Gerätestatus“// Maschine unerwartet gestopptstatus == "stopped" && runtime > 0
// Fehlerzustandstatus == "error" || status == "fault"
// Nicht im Automatikmodusmode != "auto"Qualitätskontrolle
Abschnitt betitelt „Qualitätskontrolle“// Fehler erkanntdefect_count > 0
// Außerhalb der Spezifikationdimension < 9.9 || dimension > 10.1
// Mehrere Qualitätsparameterhardness < 50 || surface_finish > 2.0 || weight < 100Prozesskontrolle
Abschnitt betitelt „Prozesskontrolle“// Prozess außer Kontrolletemperature > 90 || pressure < 95 || flow < 50
// Stabiler Betriebtemperature >= 80 && temperature <= 85 && pressure > 100
// Not-Stopp-Bedingungtemperature > 120 || pressure > 200 || vibration > 10Vorausschauende Wartung
Abschnitt betitelt „Vorausschauende Wartung“// Anomalie erkanntis_anomaly == true
// Hoher Anomalie-Scoreanomaly_score > 0.8
// Mehrere Indikatorenvibration > 5 || temperature > 90 || anomaly_score > 0.7Best Practices
Abschnitt betitelt „Best Practices“1. Verwenden Sie klare Feldnamen
Abschnitt betitelt „1. Verwenden Sie klare Feldnamen“// Guttemperature > 80machine_status == "running"
// Vermeident > 80s == "r"2. Verwenden Sie geeignete Operatoren
Abschnitt betitelt „2. Verwenden Sie geeignete Operatoren“// Für Gleichheit verwenden Sie ==status == "active"
// Für Ungleichheit verwenden Sie !=count != 03. Gruppieren Sie verwandte Bedingungen
Abschnitt betitelt „3. Gruppieren Sie verwandte Bedingungen“// Gut - verwandte Bedingungen zusammentemperature > 80 && pressure > 150
// Gut - alternative Bedingungenstatus == "error" || status == "fault"4. Beachten Sie die Operator-Rangfolge
Abschnitt betitelt „4. Beachten Sie die Operator-Rangfolge“UND (&&) hat höhere Priorität als ODER (||):
// Dies prüft: (A && B) || Ctemperature > 80 && pressure > 150 || humidity > 90
// Verwenden Sie Klammern zur Klarheit(temperature > 80 && pressure > 150) || humidity > 905. Testen Sie Ihre Ausdrücke
Abschnitt betitelt „5. Testen Sie Ihre Ausdrücke“Testen Sie Ausdrücke mit verschiedenen Eingabewerten, um sicherzustellen, dass sie wie erwartet funktionieren.
Einschränkungen
Abschnitt betitelt „Einschränkungen“- Keine arithmetischen Operationen: Sie können nicht
temperature + 10 > 90machen - Keine Funktionsaufrufe: Sie können nicht
abs(temperature) > 80machen - Kein verschachtelter Feldzugriff: Sie können nicht
sensor.temperature > 80machen - Nur Zeichenkettenvergleich: Kein Regex oder Pattern Matching
Fehlerbehebung
Abschnitt betitelt „Fehlerbehebung“Ausdruck wird nicht ausgelöst
Abschnitt betitelt „Ausdruck wird nicht ausgelöst“Prüfen Sie:
- Feldnamen stimmen genau mit dem Payload überein (Groß-/Kleinschreibung beachten)
- Datentypen stimmen überein (Zahl vs. Zeichenkette)
- Operator ist korrekt (
==nicht=) - Zeichenkettenwerte verwenden doppelte Anführungszeichen
Wird immer ausgelöst
Abschnitt betitelt „Wird immer ausgelöst“Prüfen Sie:
- Logik ist korrekt (UND vs. ODER)
- Schwellenwerte sind angemessen
- Feld existiert im Payload
Syntaxfehler
Abschnitt betitelt „Syntaxfehler“Häufige Fehler:
- Verwendung von
=statt== - Fehlende Anführungszeichen um Zeichenketten
- Tippfehler in Feldnamen
- Falsche Operator-Rangfolge
Beispiele im Kontext
Abschnitt betitelt „Beispiele im Kontext“Trigger-Konnektor
Abschnitt betitelt „Trigger-Konnektor“{ "type": "MeddleTrigger", "config": { "mode": "DirectDispatch", "condition": "temperature > 80 && status == \"active\"", "payload": { "alert": "high_temperature" } }}Alert-Konnektor
Abschnitt betitelt „Alert-Konnektor“{ "type": "MeddleAlert", "config": { "name": "Critical Alert", "condition": "temperature > 100 || pressure > 200", "minDuration": 10, "cooldown": 300, "notification": { "type": "Email", "toEmails": ["alerts@example.com"] } }}Verwandte Dokumentation
Abschnitt betitelt „Verwandte Dokumentation“- Trigger-Konnektor - Verwendet MXL für bedingte Logik
- Alert-Konnektor - Verwendet MXL für Warnbedingungen
- Anomalieerkennung - Kombinieren Sie mit MXL für intelligente Warnungen