Mentor / zrozumienie systemu
Pierwszy system, wyjaśniony. Jedno źródło wiadomości, jeden przekaźnik i jedna część raportowa. Zobacz, jak Mentor odczytuje ich role z projektu.
Źródłoembedded → WiadomośćMeasurement → Przekaźnikserver → Raportreport
W kodzie poniżej źródło tworzy wiadomość z polem celsius: 21.0. Pokazujemy deklarowaną drogę danych, bez uruchamiania aplikacji docelowej.
Rzeczywista odpowiedź Mentora Lokalna analiza CLI · 24 października 2026 · pełny tekst odpowiedzi, bez skracania
Zadania połączone w FirstSystem tworzą jedną drogę danych: TemperatureSource → MeasurementRelay → TemperatureReport.
Źródło danych: TemperatureSource. W projekcie przypisano je do środowiska embedded (część przeznaczona dla urządzenia).
Kod TemperatureSource deklaruje powtarzanie operacji co 2 s — taką rolę ma zapis every.
Wiadomość: TemperatureSource tworzy wiadomość typu Measurement i wysyła ją dalej. Wiadomość to zestaw nazwanych pól z danymi.
Pole device_id zawiera tekst "room-1".
W tej wiadomości pole celsius otrzymuje wpisaną w kodzie wartość 21.0.
Dane wysyłane przez TemperatureSource są w projekcie skierowane do MeasurementRelay.
Takie połączenie do przesyłania danych między zadaniami Junexis nazywa kanałem (chan).
Przekaźnik: MeasurementRelay. W projekcie przypisano je do środowiska server (część serwerowa).
MeasurementRelay odbiera dane oznaczone w kodzie jako readings. Pobrany element ma w kodzie nazwę reading. Program wysyła go dalej.
Dane wysyłane przez MeasurementRelay są w projekcie skierowane do TemperatureReport.
Raport: TemperatureReport. W projekcie przypisano je do środowiska report (część raportowa).
Granice tego wyjaśnienia: To opis kodu, nie potwierdzenie działania urządzenia ani widoku w przeglądarce.
Nie sprawdzono czasu dotarcia danych, zmian wiadomości po drodze ani jednostki temperatury.
Nie ustalono wartości pól observed_at, sequence w wiadomości Measurement.
Otwórz odpowiedź jako tekst
Porównaj opis z kodem Nazwy zadań i pól w odpowiedzi odnoszą się bezpośrednio do tego przykładu.
Kod pierwszego systemu — main.jnx // Mój pierwszy system: jedno źródło, jeden serwer, jeden raport.
struct Measurement {
device_id: Text
sequence: Int
celsius: Float
observed_at: Time
}
task TemperatureSource() @embedded(esp32c3) -> chan<Measurement> {
state sequence: Int = 0
every 2s {
sequence = sequence + 1
send Measurement {
device_id: "room-1",
sequence: sequence,
celsius: 21.0,
observed_at: now()
}
}
}
task MeasurementRelay(readings: chan<Measurement>) @server -> chan<Measurement> {
state last_sequence: Int = 0
state last_celsius: Float = 0.0
for reading in readings {
last_sequence = reading.sequence
last_celsius = reading.celsius
send reading
}
}
task TemperatureReport(readings: chan<Measurement>) @report {}
pipeline FirstSystem {
use TemperatureSource -> MeasurementRelay
use MeasurementRelay -> TemperatureReport
}
deployment FirstSystemLocations {
target embedded { TemperatureSource @embedded(esp32c3) {} }
target server { MeasurementRelay @server {} }
target report { TemperatureReport @report {} }
}
Pobierz main.jnx
Skąd pochodzi ten wynik? Kompilator wygenerował snapshot analizy 1.2. Mentor odczytał go i zwrócił odpowiedź CLI 1.3; pokazany tekst pochodzi z pola systemExplanation. Osobno sprawdzono zmianę wartości z 21.0 na 24.0 oraz zgodność ze starszym wejściem.
Ta próba nie obejmowała uruchomienia urządzenia ani prezentacji raportu w przeglądarce.
Metadane i sumy plików Co możesz z tego odczytać? Rozróżniasz zadania, miejsce ich działania i treść wiadomości. Potrafisz prześledzić drogę od źródła do raportu, a następnie wskazać, które informacje pochodzą z kodu i które wymagają obserwacji działającego systemu.
Zobacz, co jeszcze analizuje Mentor → Wprowadzenie Pierwszy system Możliwości Ograniczenia