Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import Assignments from "./pages/admin/Assignments";
import ConfigApiKeys from "./pages/admin/ConfigApiKeys";
import ConfigMcpKeys from "./pages/admin/ConfigMcpKeys";
import ConfigWebhooks from "./pages/admin/ConfigWebhooks";
import ConfigMqttPublishers from "./pages/admin/ConfigMqttPublishers";
import McpServerSettings from "./pages/admin/McpServerSettings";
import DataExport from "./pages/admin/DataExport";
import DataImport from "./pages/admin/DataImport";
Expand Down Expand Up @@ -306,6 +307,17 @@ function AppRoutes() {
}
/>

<Route
path="/admin/config/mqtt-publishers"
element={
<ProtectedRoute adminOnly>
<Layout>
<ConfigMqttPublishers />
</Layout>
</ProtectedRoute>
}
/>

<Route
path="/admin/config/mcp-keys"
element={
Expand Down
107 changes: 107 additions & 0 deletions src/i18n/locales/de/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,7 @@
"appStore": "App Store",
"mcpKeys": "MCP-Schlüssel",
"mcpServer": "MCP-Server",
"mqttPublishers": "MQTT-Publisher",
"shipping": "Versand",
"sections": {
"overview": "ÜBERSICHT",
Expand Down Expand Up @@ -1681,5 +1682,111 @@
"resumeFailed": "Zeiterfassung konnte nicht fortgesetzt werden",
"minimize": "Minimieren",
"moreOperations": "weitere Arbeitsgang/Arbeitsgänge"
},
"mqtt": {
"title": "MQTT-Publisher",
"description": "Konfigurieren Sie MQTT-Broker für Echtzeit-Eventstreams nach dem Unified Namespace (UNS) Muster",
"addPublisher": "Publisher hinzufügen",
"createPublisher": "MQTT-Publisher erstellen",
"configurePublisher": "Konfigurieren Sie Ihre MQTT-Broker-Verbindung und Topic-Einstellungen",
"publishers": "Publisher",
"publishLogs": "Publish-Logs",
"documentation": "Dokumentation",
"configuredPublishers": "Konfigurierte Publisher",
"publishersDescription": "MQTT-Broker konfiguriert für Echtzeit-Events aus Ihren Fertigungsoperationen",
"noPublishers": "Noch keine MQTT-Publisher konfiguriert. Fügen Sie einen Publisher hinzu, um Events zu streamen.",
"basicInfo": "Basisinformationen",
"publisherName": "Publisher-Name",
"namePlaceholder": "z.B. Produktions-MQTT-Broker",
"brokerSettings": "Broker-Einstellungen",
"brokerUrl": "Broker-URL",
"brokerPlaceholder": "z.B. broker.hivemq.com",
"port": "Port",
"username": "Benutzername",
"password": "Passwort",
"optional": "Optional",
"useTls": "TLS/SSL verwenden (sichere Verbindung)",
"topicSettings": "Topic-Einstellungen",
"topicPattern": "Topic-Muster",
"topicPatternHelp": "Verwenden Sie Variablen wie {enterprise}, {site}, {area}, {cell}, {event} für Ihre Topic-Hierarchie",
"topicPreview": "Vorschau",
"defaultEnterprise": "Unternehmen",
"defaultSite": "Standort",
"defaultArea": "Bereich",
"availableVariables": "Verfügbare Variablen",
"events": "Events",
"name": "Name",
"broker": "Broker",
"topicPrefix": "Topic-Präfix",
"lastConnected": "Zuletzt verbunden",
"connectionFailed": "Verbindung fehlgeschlagen",
"neverConnected": "Noch nie verbunden",
"status": "Status",
"actions": "Aktionen",
"active": "Aktiv",
"disabled": "Deaktiviert",
"enable": "Aktivieren",
"disable": "Deaktivieren",
"error": "Fehler",
"success": "Erfolg",
"enterName": "Bitte geben Sie einen Publisher-Namen ein",
"enterBrokerUrl": "Bitte geben Sie eine Broker-URL ein",
"selectAtLeastOne": "Bitte wählen Sie mindestens ein Event",
"failedToFetch": "MQTT-Publisher konnten nicht geladen werden",
"failedToFetchLogs": "Publish-Logs konnten nicht geladen werden",
"failedToCreate": "MQTT-Publisher konnte nicht erstellt werden",
"failedToDelete": "MQTT-Publisher konnte nicht gelöscht werden",
"failedToUpdate": "MQTT-Publisher konnte nicht aktualisiert werden",
"created": "MQTT-Publisher erfolgreich erstellt",
"deleted": "MQTT-Publisher erfolgreich gelöscht",
"refreshLogs": "Logs aktualisieren",
"searchPublishers": "Publisher suchen...",
"searchLogs": "Logs suchen...",
"event": "Event",
"topic": "Topic",
"latency": "Latenz",
"errorMessage": "Fehler",
"time": "Zeit",
"published": "Veröffentlicht",
"failed": "Fehlgeschlagen",
"mqttPublishLogs": "MQTT Publish-Logs",
"recentAttempts": "Letzte Veröffentlichungsversuche (letzte 100)",
"noLogs": "Noch keine Publish-Logs. Events erscheinen hier nach der Veröffentlichung.",
"unsPattern": "Unified Namespace (UNS) Muster",
"unsDescription": "ISA-95 konforme Topic-Hierarchie für die Fertigung",
"mqttDocumentation": "MQTT Publisher Dokumentation",
"howToSetup": "Wie Sie Ihren MQTT-Broker verbinden und Events empfangen",
"supportedBrokers": "Unterstützte Broker",
"brokersDescription": "Jeder MQTT-Broker mit HTTP-Publish-API-Unterstützung funktioniert. Beliebte Optionen sind:",
"hivemqDesc": "Verwaltete MQTT-Cloud mit HTTP-API",
"emqxDesc": "Hochleistungs-MQTT-Broker mit REST-API",
"mosquittoDesc": "Open-Source-Broker (via MQTT-HTTP-Bridge)",
"awsIotDesc": "AWS verwalteter IoT-Service",
"azureIotDesc": "Microsoft Azure IoT-Plattform",
"unsPatternTitle": "Unified Namespace Muster",
"unsPatternDescription": "Topics folgen der ISA-95 Hierarchie: Unternehmen > Standort > Bereich > Zelle > Event",
"clientExample": "Client-Beispiel",
"bestPractices": "Best Practices",
"practice1": "Verwenden Sie TLS für Produktionsumgebungen",
"practice2": "Bewahren Sie Anmeldedaten sicher auf - verwenden Sie Umgebungsvariablen",
"practice3": "Abonnieren Sie spezifische Topics, um das Nachrichtenvolumen zu reduzieren",
"practice4": "Implementieren Sie Wiederverbindungslogik in Ihren Clients",
"practice5": "Verwenden Sie QoS 1 oder 2 für kritische Events",
"includeCellInTopic": "Zellenname im Topic einschließen",
"topicExample": "Topic-Beispiel",
"availableEvents": "Verfügbare Events",
"jobLifecycle": "Auftrags-Lebenszyklus",
"operationLifecycle": "Arbeitsgang-Lebenszyklus",
"qualityEvents": "Qualitäts- & Produktions-Events",
"jobCreatedDesc": "Wenn ein neuer Auftrag erstellt wird",
"jobStartedDesc": "Wenn ein Auftrag gestartet wird",
"jobCompletedDesc": "Wenn ein Auftrag abgeschlossen wird",
"opStartedDesc": "Wenn ein Bediener einen Arbeitsgang startet",
"opPausedDesc": "Wenn ein Arbeitsgang pausiert wird",
"opResumedDesc": "Wenn ein pausierter Arbeitsgang fortgesetzt wird",
"opCompletedDesc": "Wenn ein Arbeitsgang abgeschlossen wird",
"issueCreatedDesc": "Wenn ein Qualitätsproblem gemeldet wird",
"quantityReportedDesc": "Wenn die Produktionsmenge erfasst wird",
"scrapRecordedDesc": "Wenn Ausschuss/Defekte erfasst werden"
}
}
107 changes: 107 additions & 0 deletions src/i18n/locales/en/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@
"appStore": "App Store",
"mcpKeys": "MCP Keys",
"mcpServer": "MCP Server",
"mqttPublishers": "MQTT Publishers",
"sections": {
"overview": "OVERVIEW",
"operations": "OPERATIONS",
Expand Down Expand Up @@ -1943,5 +1944,111 @@
"resumeFailed": "Failed to resume time tracking",
"minimize": "Minimize",
"moreOperations": "more operation(s)"
},
"mqtt": {
"title": "MQTT Publishers",
"description": "Configure MQTT brokers to receive real-time event streams using the Unified Namespace (UNS) pattern",
"addPublisher": "Add Publisher",
"createPublisher": "Create MQTT Publisher",
"configurePublisher": "Configure your MQTT broker connection and topic settings",
"publishers": "Publishers",
"publishLogs": "Publish Logs",
"documentation": "Documentation",
"configuredPublishers": "Configured Publishers",
"publishersDescription": "MQTT brokers configured to receive real-time events from your manufacturing operations",
"noPublishers": "No MQTT publishers configured yet. Add a publisher to start streaming events.",
"basicInfo": "Basic Information",
"publisherName": "Publisher Name",
"namePlaceholder": "e.g., Production MQTT Broker",
"brokerSettings": "Broker Settings",
"brokerUrl": "Broker URL",
"brokerPlaceholder": "e.g., broker.hivemq.com",
"port": "Port",
"username": "Username",
"password": "Password",
"optional": "Optional",
"useTls": "Use TLS/SSL (secure connection)",
"topicSettings": "Topic Settings",
"topicPattern": "Topic Pattern",
"topicPatternHelp": "Use variables like {enterprise}, {site}, {area}, {cell}, {event} to build your topic hierarchy",
"topicPreview": "Preview",
"defaultEnterprise": "Enterprise",
"defaultSite": "Site",
"defaultArea": "Area",
"availableVariables": "Available Variables",
"events": "Events",
"name": "Name",
"broker": "Broker",
"topicPrefix": "Topic Prefix",
"lastConnected": "Last Connected",
"connectionFailed": "Connection Failed",
"neverConnected": "Never Connected",
"status": "Status",
"actions": "Actions",
"active": "Active",
"disabled": "Disabled",
"enable": "Enable",
"disable": "Disable",
"error": "Error",
"success": "Success",
"enterName": "Please enter a publisher name",
"enterBrokerUrl": "Please enter a broker URL",
"selectAtLeastOne": "Please select at least one event",
"failedToFetch": "Failed to fetch MQTT publishers",
"failedToFetchLogs": "Failed to fetch publish logs",
"failedToCreate": "Failed to create MQTT publisher",
"failedToDelete": "Failed to delete MQTT publisher",
"failedToUpdate": "Failed to update MQTT publisher",
"created": "MQTT publisher created successfully",
"deleted": "MQTT publisher deleted successfully",
"refreshLogs": "Refresh Logs",
"searchPublishers": "Search publishers...",
"searchLogs": "Search logs...",
"event": "Event",
"topic": "Topic",
"latency": "Latency",
"errorMessage": "Error",
"time": "Time",
"published": "Published",
"failed": "Failed",
"mqttPublishLogs": "MQTT Publish Logs",
"recentAttempts": "Recent publish attempts (last 100)",
"noLogs": "No publish logs yet. Events will appear here once published.",
"unsPattern": "Unified Namespace (UNS) Pattern",
"unsDescription": "ISA-95 compliant topic hierarchy for manufacturing",
"mqttDocumentation": "MQTT Publisher Documentation",
"howToSetup": "How to connect your MQTT broker and subscribe to events",
"supportedBrokers": "Supported Brokers",
"brokersDescription": "Any MQTT broker with HTTP publish API support works. Popular options include:",
"hivemqDesc": "Managed MQTT cloud with HTTP API",
"emqxDesc": "High-performance MQTT broker with REST API",
"mosquittoDesc": "Open-source broker (via MQTT-HTTP bridge)",
"awsIotDesc": "AWS managed IoT service",
"azureIotDesc": "Microsoft Azure IoT platform",
"unsPatternTitle": "Unified Namespace Pattern",
"unsPatternDescription": "Topics follow the ISA-95 hierarchy: Enterprise > Site > Area > Cell > Event",
"clientExample": "Client Example",
"bestPractices": "Best Practices",
"practice1": "Use TLS for production environments",
"practice2": "Keep credentials secure - use environment variables",
"practice3": "Subscribe to specific topics to reduce message volume",
"practice4": "Implement reconnection logic in your clients",
"practice5": "Use QoS 1 or 2 for critical events",
"includeCellInTopic": "Include cell name in topic",
"topicExample": "Topic example",
"availableEvents": "Available Events",
"jobLifecycle": "Job Lifecycle",
"operationLifecycle": "Operation Lifecycle",
"qualityEvents": "Quality & Production Events",
"jobCreatedDesc": "When a new job is created",
"jobStartedDesc": "When a job changes to in_progress",
"jobCompletedDesc": "When a job is marked complete",
"opStartedDesc": "When an operator starts an operation",
"opPausedDesc": "When an operation is paused",
"opResumedDesc": "When a paused operation is resumed",
"opCompletedDesc": "When an operation is marked complete",
"issueCreatedDesc": "When a quality issue is reported",
"quantityReportedDesc": "When production quantity is logged",
"scrapRecordedDesc": "When scrap/defects are recorded"
}
}
107 changes: 107 additions & 0 deletions src/i18n/locales/nl/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -389,6 +389,7 @@
"appStore": "App Winkel",
"mcpKeys": "MCP-sleutels",
"mcpServer": "MCP-server",
"mqttPublishers": "MQTT Publishers",
"shipping": "Verzending",
"sections": {
"overview": "OVERZICHT",
Expand Down Expand Up @@ -1951,5 +1952,111 @@
"resumeFailed": "Tijdregistratie hervatten mislukt",
"minimize": "Minimaliseren",
"moreOperations": "meer bewerking(en)"
},
"mqtt": {
"title": "MQTT Publishers",
"description": "Configureer MQTT-brokers om realtime eventstreams te ontvangen via het Unified Namespace (UNS) patroon",
"addPublisher": "Publisher toevoegen",
"createPublisher": "MQTT Publisher aanmaken",
"configurePublisher": "Configureer uw MQTT-brokerverbinding en topic-instellingen",
"publishers": "Publishers",
"publishLogs": "Publicatielog",
"documentation": "Documentatie",
"configuredPublishers": "Geconfigureerde Publishers",
"publishersDescription": "MQTT-brokers geconfigureerd om realtime events van uw productieoperaties te ontvangen",
"noPublishers": "Nog geen MQTT-publishers geconfigureerd. Voeg een publisher toe om events te streamen.",
"basicInfo": "Basisinformatie",
"publisherName": "Publishernaam",
"namePlaceholder": "bijv. Productie MQTT Broker",
"brokerSettings": "Broker-instellingen",
"brokerUrl": "Broker URL",
"brokerPlaceholder": "bijv. broker.hivemq.com",
"port": "Poort",
"username": "Gebruikersnaam",
"password": "Wachtwoord",
"optional": "Optioneel",
"useTls": "TLS/SSL gebruiken (beveiligde verbinding)",
"topicSettings": "Topic-instellingen",
"topicPattern": "Topic-patroon",
"topicPatternHelp": "Gebruik variabelen zoals {enterprise}, {site}, {area}, {cell}, {event} om uw topic-hiërarchie op te bouwen",
"topicPreview": "Voorbeeld",
"defaultEnterprise": "Onderneming",
"defaultSite": "Locatie",
"defaultArea": "Gebied",
"availableVariables": "Beschikbare variabelen",
"events": "Events",
"name": "Naam",
"broker": "Broker",
"topicPrefix": "Topic-prefix",
"lastConnected": "Laatst verbonden",
"connectionFailed": "Verbinding mislukt",
"neverConnected": "Nooit verbonden",
"status": "Status",
"actions": "Acties",
"active": "Actief",
"disabled": "Uitgeschakeld",
"enable": "Inschakelen",
"disable": "Uitschakelen",
"error": "Fout",
"success": "Succes",
"enterName": "Voer een publishernaam in",
"enterBrokerUrl": "Voer een broker-URL in",
"selectAtLeastOne": "Selecteer minimaal één event",
"failedToFetch": "MQTT-publishers ophalen mislukt",
"failedToFetchLogs": "Publicatielogs ophalen mislukt",
"failedToCreate": "MQTT-publisher aanmaken mislukt",
"failedToDelete": "MQTT-publisher verwijderen mislukt",
"failedToUpdate": "MQTT-publisher bijwerken mislukt",
"created": "MQTT-publisher succesvol aangemaakt",
"deleted": "MQTT-publisher succesvol verwijderd",
"refreshLogs": "Logs vernieuwen",
"searchPublishers": "Publishers zoeken...",
"searchLogs": "Logs zoeken...",
"event": "Event",
"topic": "Topic",
"latency": "Latentie",
"errorMessage": "Fout",
"time": "Tijd",
"published": "Gepubliceerd",
"failed": "Mislukt",
"mqttPublishLogs": "MQTT Publicatielogs",
"recentAttempts": "Recente publicatiepogingen (laatste 100)",
"noLogs": "Nog geen publicatielogs. Events verschijnen hier na publicatie.",
"unsPattern": "Unified Namespace (UNS) Patroon",
"unsDescription": "ISA-95 conforme topic-hiërarchie voor productie",
"mqttDocumentation": "MQTT Publisher Documentatie",
"howToSetup": "Hoe u uw MQTT-broker verbindt en events ontvangt",
"supportedBrokers": "Ondersteunde Brokers",
"brokersDescription": "Elke MQTT-broker met HTTP-publicatie-API-ondersteuning werkt. Populaire opties zijn:",
"hivemqDesc": "Beheerde MQTT-cloud met HTTP API",
"emqxDesc": "High-performance MQTT-broker met REST API",
"mosquittoDesc": "Open-source broker (via MQTT-HTTP bridge)",
"awsIotDesc": "AWS beheerde IoT-service",
"azureIotDesc": "Microsoft Azure IoT-platform",
"unsPatternTitle": "Unified Namespace Patroon",
"unsPatternDescription": "Topics volgen de ISA-95 hiërarchie: Onderneming > Locatie > Gebied > Cel > Event",
"clientExample": "Client Voorbeeld",
"bestPractices": "Best Practices",
"practice1": "Gebruik TLS voor productieomgevingen",
"practice2": "Bewaar inloggegevens veilig - gebruik omgevingsvariabelen",
"practice3": "Abonneer op specifieke topics om berichtvolume te verminderen",
"practice4": "Implementeer herverbindingslogica in uw clients",
"practice5": "Gebruik QoS 1 of 2 voor kritieke events",
"includeCellInTopic": "Celnaam opnemen in topic",
"topicExample": "Topic voorbeeld",
"availableEvents": "Beschikbare Events",
"jobLifecycle": "Order Levenscyclus",
"operationLifecycle": "Bewerking Levenscyclus",
"qualityEvents": "Kwaliteit & Productie Events",
"jobCreatedDesc": "Wanneer een nieuwe order wordt aangemaakt",
"jobStartedDesc": "Wanneer een order in behandeling gaat",
"jobCompletedDesc": "Wanneer een order wordt voltooid",
"opStartedDesc": "Wanneer een operator een bewerking start",
"opPausedDesc": "Wanneer een bewerking wordt gepauzeerd",
"opResumedDesc": "Wanneer een gepauzeerde bewerking wordt hervat",
"opCompletedDesc": "Wanneer een bewerking wordt voltooid",
"issueCreatedDesc": "Wanneer een kwaliteitsprobleem wordt gemeld",
"quantityReportedDesc": "Wanneer productiehoeveelheid wordt gelogd",
"scrapRecordedDesc": "Wanneer afkeur/defecten worden geregistreerd"
}
}
Loading
Loading