Plateforme · MEP

40 règles. 40 entrées YAML. Zéro fichier Rust.

MEP exécute des politiques Trigger → Condition → Action sur le device. Créez dans un éditeur visuel, exportez en YAML, rechargez à chaud sans re-flash. Automatisation du device sans développeur Rust dans la boucle.

Politiques machine à états pour le product owner. Primitives T·C·A pour l'ingénieur. Un seul fichier YAML, deux lectures.

Système · piloté par événements

Modèle de politique

Trigger → Condition → Action. Rien de plus.

Chaque règle a exactement trois parties. Il n'y a pas de modèle d'exécution au-delà de ce construct.

Trigger

Ce qui démarre la règle

  • · on_change — changement de clé DB
  • · on_event — événement nommé de tout micro service
  • · on_schedule — délai, périodique ou cron (UTC uniquement)

Condition

Filtre optionnel

Expression évaluée contre l'état DB et le payload de l'événement. Vérifiée avant le déploiement — les erreurs apparaissent en CI, pas sur le device.

Action

Ce qui s'exécute

  • · set — écrire une clé DB
  • · emit — publier un événement
  • · call_interface — appeler tout micro service MOS4
  • · schedule — déclencher une autre règle

YAML est l'artefact de déploiement

Pas de Rust. Pas de rebuild firmware. Pas de re-flash.

Une règle d'automatisation du device vit dans un fichier .yaml. La changer consiste à éditer le YAML et pousser la politique mise à jour — via OTA ou un appel de service direct. Le rechargement à chaud vide les règles en cours et échange atomiquement le graphe de politique.

La politique déclare ses dépendances

Chaque fichier de politique porte une liste requires: avec des plages semver. Le moteur valide la contrainte au chargement de la politique — pas au runtime au premier appel. Les dépendances optionnelles se dégradent gracieusement.

Exécution parallèle avec détection de conflits

Plusieurs règles correspondant dans le même cycle s'exécutent en parallèle via un pool de workers borné. Quand deux règles écrivent la même clé DB, MEP le détecte et supprime l'écriture de priorité inférieure — pas de corruption silencieuse des données.

Audit à l'échelle de la flotte

Interroger tout device pour les noms de politique chargés, les versions et les compteurs de règles — auditable sans accès SSH.

Surface de création

Un éditeur basé sur des nœuds qui exporte du YAML.

Trois bulles de machine à états en triangle sur fond sombre — deux anneaux cyan avec glyphes d'impulsion (idle et triggered) et un anneau ambre avec un glyphe de sirène (alarm), reliés par des flèches de transition
Designer MEP — éditeur de règles YAML basé sur des nœuds avec un pipeline entièrement connecté
La représentation visuelle et l'artefact de déploiement sont le même fichier — pas de couche de traduction. Le designer découvre aussi automatiquement la liste de micro services requires: à partir des nœuds utilisés dans le graphe.

MEP est l'un des quatre moteurs de création visuelle dans la couche no-code de MOS4, avec l'éditeur de graphe de signaux, le constructeur de pipeline IA et la vue de configuration multi-pile.

Deux vues, un fichier

Machine à états pour le product owner. T·C·A pour l'ingénieur.

La même politique de geofence se lit comme une machine à trois états dans le designer et comme trois règles T·C·A YAML dans la vue d'ingénierie. Le fichier YAML est la machine à états — il n'y a pas de runtime séparé.

Vue produit — diagramme d'état

Trois états : en dehors du polygone, approchant la frontière, à l'intérieur. Le product owner lit le diagramme ; le device exécute la politique.

Machine à états geofence — trois états (dehors, approchant, dedans) avec transitions sur les événements enter, near et exit. Le même diagramme est généré depuis le YAML ci-dessous.

stateDiagram-v2
  [*] --> dehors
  dehors --> approchant: near
  approchant --> dedans: enter
  approchant --> dehors: exit
  dedans --> approchant: near
  dedans --> dehors: exit
Politique geofence — lecture product owner.

Vue ingénieur — trois règles T·C·A

La même politique en trois règles YAML. Chaque transition est un triplet Trigger / Condition / Action. L'ensemble de règles composé est la machine à états ci-dessus.

rules:
  - name: enter_geofence
    on_event: geofence.near
    when: state == "approaching"
    do:
      - set: { state: "inside" }
      - emit: geofence.entered

  - name: leave_geofence
    on_event: geofence.exit
    do:
      - set: { state: "outside" }
      - emit: geofence.left

  - name: approach_geofence
    on_change: distance_m
    when: distance_m < 50 and state == "outside"
    do:
      - set: { state: "approaching" }

Le designer visuel rend le diagramme d'état depuis le YAML ; le YAML reste l'artefact de déploiement. Ajouter un état consiste à ajouter une règle — le diagramme se met à jour automatiquement.

Validation pré-déploiement

Les erreurs en CI, pas sur le device.

Vérifications de lint sémantique et ce qu'elles détectent
Vérification Ce que cela détecte Quand cela s'exécute
Clés DB non définies Fautes de frappe dans les clés et déclarations manquantes CI / pré-déploiement
Déclarations requires: manquantes Lacunes de dépendance de micro service CI / pré-déploiement
Graphes de règles cycliques Boucles de déclenchement infinies CI / pré-déploiement
Conditions inaccessibles Branches de règle mortes CI / pré-déploiement
Erreurs de type d'expression Incohérences de type dans les conditions/actions CI / pré-déploiement

Un runner de scénario autonome rejoue les fichiers YAML hors cible dans les pipelines CI. Un double de test du moteur de politique permet un test complet d'évaluation de politique sans pile MOS4 sur matériel.

Exemples de règles

Ce que les intégrateurs déploient.

Entrée et sortie de geofence

Déclencher un événement cloud et un buzzer quand un véhicule franchit un polygone — écrit une fois, déployé sur toute la flotte.

Détection de freinage brusque

Écouter un signal de décélération issu de MSP ; si une fenêtre de 1,5 seconde correspond, lever un événement avec un pre-roll de 5 s.

Ralenti contact coupé

Vérification périodique du régime moteur et de l'état contact ; sur violation de N minutes, atténuer le tableau de bord et ouvrir un ticket de maintenance.

Couverture de déploiement

MEP est déployé dans les six scénarios.

Les politiques machine à états et de contrôle LED font partie des capacités les plus couvertes dans la matrice de fonctionnalités MOS4 — disponibles des facteurs de forme dongle léger aux plateformes gateway compute-class.

IOT Hub

Les politiques déclencheur-action acheminent les événements capteur vers les endpoints cloud et contrôlent les sorties du device — aucun code de liaison par règle requis.

Agriculture

Le traitement d'événements par règles coordonne l'état des machines agricoles : zones de geofence, rattachement/détachement d'outil et fenêtres de planification.

Dashcam

Les politiques d'événements sévères déclenchent la mise en signet de clips et l'upload cloud ; les motifs LED confirment l'état d'enregistrement au conducteur.

Dongle OBD

Des règles déclencheur-action légères réagissent aux signaux OBD — détection de ralenti, présence de DTC, séquences contact-off — dans une empreinte contrainte.

C4Max

Les politiques de composition multi-pile orchestrent le routage des données entre les domaines véhicule ; MEP pilote des séquences événementielles entre les couches de signal.

Ekko Drive

Les politiques de comportement conducteur évaluent les signaux issus de MSP et émettent des événements scorés ; les règles cron agrègent les données de session pour le reporting cloud.

Les politiques MEP se composent avec la couche multi-pile pour des séquences de routage de données événementielles. Voir Multi Stacks pour la composition de stratégies inter-piles.

Catalogue de nœuds

58 types de nœuds dans trois catégories.

10 déclencheurs · 17 conditions · 31 actions — dérivés au build time depuis le schéma du moteur. Chaque nœud est disponible dans le designer visuel et en YAML édité manuellement.

Déclencheurs (10)

  • on init
  • on event
  • on db changed
  • on schedule
  • on periodic
  • on cron
  • on rule
  • on message
  • any
  • stt listen

Conditions (17)

  • comparison
  • and
  • or
  • not
  • has changed
  • time since changed
  • time since triggered
  • is type
  • matches
  • in range
  • contains
  • is null
  • time since applied
  • time since condition true
  • value
  • rag confidence gate
  • confidence gate

Actions (31)

  • set
  • write db
  • emit event
  • call interface
  • if else
  • for each
  • schedule
  • unschedule
  • trace
  • set led
  • sequence
  • set output
  • set buzzer
  • read input
  • read analog
  • get ignition
  • send message
  • go to idle
  • shutdown
  • reboot
  • register operation
  • complete operation
  • tts announce
  • tts announce stream
  • llm reason
  • llm reason stream
  • rag lookup
  • tool call with confirm
  • input sanitize
  • observer log
  • llm cloud fallback

Utilisez les actions call_interface pour atteindre MSP, les moteurs d'inférence et les pilotes personnalisés depuis toute règle de politique. Voir le SDK pour créer des micro services que MEP peut appeler.

FAQ

Questions fréquentes

  • Faut-il un développeur Rust pour changer une règle après le déploiement ?

    Non. Changer une règle consiste à éditer le YAML et pousser la politique mise à jour — via OTA ou un appel de service direct. Pas de toolchain Rust, pas de rebuild firmware, pas de re-flash. Le rechargement à chaud vide les règles en cours et échange atomiquement le graphe de politique.

  • Quel est exactement le modèle de politique ?

    Chaque règle a exactement trois parties : un déclencheur (on_change, on_event, ou on_schedule — délai/périodique/cron en UTC) ; une condition optionnelle (expression évaluée contre l'état DB et le payload de l'événement) ; et une ou plusieurs actions (écrire une clé DB, émettre un événement, call_interface, ou planifier une autre règle). Il n'y a pas de modèle d'exécution au-delà de ce construct.

  • MEP est-il une machine à états finis ?

    Les règles MEP expriment un comportement de style machine à états via les primitives T·C·A. Le YAML de politique est la machine à états — il n'y a pas de runtime machine à états séparé. T·C·A est la primitive de règle ; l'ensemble de règles composé est la machine à états. Les deux lectures sont disponibles — le designer visuel rend le diagramme d'état pour les product owners ; le YAML reste l'artefact d'ingénierie.

  • Quel fuseau horaire utilise la planification cron ?

    UTC uniquement. La planification tenant compte des fuseaux horaires n'est pas prise en charge actuellement.

  • Une politique peut-elle appeler un autre micro service MOS4 ?

    Oui. L'action call_interface atteint tout micro service MOS4 — MSP, moteurs d'inférence et pilotes personnalisés. Le proxy d'interface valide la contrainte semver au chargement de la politique, met en cache la connexion et applique un timeout configurable (3 000 ms par défaut par appel). Aucun code de liaison par intégration. Voir le SDK pour créer des micro services personnalisés.

  • Puis-je tester des règles sans matériel ?

    Oui. Un outil de lint sémantique valide le YAML avant qu'il n'atteigne un device — détectant les clés DB non définies, les déclarations requires: manquantes, les graphes de règles cycliques, les conditions inaccessibles et les erreurs de type d'expression. Un runner de scénario autonome rejoue les fichiers YAML hors cible dans les pipelines CI. Un double de test du moteur de politique permet de tester l'évaluation de politique en intégration sans pile MOS4 complète.

Apportez votre cahier de règles.

Montrez-nous la politique que vous voulez sur le device ; l'équipe technique écrira les règles avec vous.

Vous construisez sur MOS4 ?

Une réponse de l'équipe d'ingénierie, ~24 h. Pas de pitch, pas de NDA.

Parler à l'équipe