Eine grundlegende React -Benutzeroberfläche für die in Semtechs LORA -Modem -Designerhandbuch (AN1200.13) definierten Formeln, die die Sendezeit für Datenraten zeigt, wie sie in den Frequenzplänen des Things Network (TTN) verwendet werden, und die Einschränkungen, die für das TTN Public Network gelten.
Siehe es in Aktion auf https://avbentem.github.io/airtime-calculator.
Nächste Versionen können enthalten:
Die Frequenzpläne, aus denen die Datenraten angezeigt werden, sind die des Networks der Dinge. Sie basieren auf den Frequenzplänen und den regionalen Parametern von Lorawan V1.0.2RB und definiert in config.json.
Einige Frequenzpläne haben sehr unterschiedliche Datenraten für Uplinks und Downlinks. Für diese unterschiedlichen "Regionen" werden in dieser Anwendung wie für US902 (Uplink) und US902 DL (Downlink) definiert. Andere teilen (die meisten) der Datenraten wie EU868.
Sowohl die Länder als auch die Lorawan -Spezifikationen können den maximalen Arbeitszyklus oder die maximalen Verweilzeitbeschränkungen definieren: Wenn in mehreren Ländern ein Frequenzplan verwendet werden kann, können verschiedene Länder möglicherweise nach wie vor andere rechtliche Einschränkungen auferlegen. Und:
Es ist wichtig zu bedenken, dass die in den Tabellen der Spezifikationen beschriebenen Arbeitszyklusbeschränkungen von Lorawan auferlegten Einschränkungen und nicht gesetzlichen Einschränkungen sind. Wenn Sie kommerzielle Geräte bauen und möchten, dass sie von Lorawan zertifiziert sind, müssen sie der Spezifikation einhalten. Entwicklungsgeräte müssen der Spezifikation nicht vollständig einhalten. Jedes Gerät (ob Lorawan oder nicht, Gateway oder Knoten, Handels- oder Entwicklung) muss den in Ihrem Land gelten gesetzlichen Einschränkungen entsprechen.
[...]
Der in Lorawan auferlegte Arbeitszyklus gilt nur für Knoten. Gateways sind technisch gesehen nur Lora -Geräte, nicht Lorawan, daher gilt die Lorawan -Spezifikation nicht für sie. Die Einschränkungen für den Zyklus der Regulierungszyklus gelten typischerweise für jeden Sender.
Wie für AS923:
Der 1% maximale Arbeitszyklus von Lorawan gilt nur für 923,20 und 923,40 MHz.
Die maximale Verweilzeit von 400 ms kann für Australien nicht gelten.
Die Lorawan -Spezifikation (en) definiert mehrere Optionen für die maximale Nutzlastgröße, wie abhängig von den Verweilzeiteinstellungen und mit oder ohne Unterstützung für eine mögliche Repeater -Kapselung.
In den frühen Spezifikationen sind diese Entscheidungen ziemlich verwirrend, da kleinere maximale Werte aufgelistet sind, wenn keine maximalen Verweilzeiten gelten. Im Februar 2020 Lorawan Regional Parameter RP002-1.0.1 besagt jedoch, dass keine MacPayload möglicherweise größer als 230 Bytes sein kann, unabhängig von den Beschränkungen der Verweilzeit, und in dieser Version wurden auch die Zahlen angepasst.
Dieser Taschenrechner verwendet die maximalen Nutzlastgrößen von RP002-1.0.1, die eine mögliche Repeater-Kapselung ermöglichen und keine maximalen Verweilzeiten berücksichtigen. Wenn das Gerät niemals unter einem Repeater funktioniert, kann die maximale Größe etwas größer sein. Wenn Verweilzeiten definiert wurden, werden diese Warnungen im Taschenrechner unabhängig von der maximalen Nutzlastgröße erzeugen, sodass Benutzer, für die diese Verweilzeiten nicht gelten, die richtigen (höheren) maximalen Nutzlastgrößen zu erkennen.
Das Ändern der Nutzlastgröße wirkt sich nicht immer auf die Anzahl der Symbole aus, aus denen die Nutzlast und den Header des LORA -Pakets besteht, oder nicht für alle Datenraten. Dies ist beispielsweise für Anwendungsnutzlastgrößen von 12 gegenüber 13 Bytes sehr sichtbar. Dies ist das erwartete Ergebnis, das durch die LORA -Funkmodulation, die Verschachtung und die Vorwärtsfehlerkorrektur verursacht wird. Die Grafik unter dem Raster visualisiert dies.
Das LORA -Modem -Designerhandbuch von Semtech (AN1200.13) definiert einige weitere Parameter, insbesondere die Vorverstärkerlänge (um das Signal zu erfassen), die Codierungsrate (Cr, für die Vorwärtsfehlerkorrektur), den Header -Modus (um einen LORA -Header mit den Details der Codierungsrate, die Länge der Länge des CRC) und die Einführung von LORA -Abläufen mit dem ORBE -Abzug zu entfernen. Für Lorawan sind diese nicht konfigurierbar und werden daher nicht als Benutzereingabe freigelegt (mit Ausnahme von CR, wenn ein nicht defauter Wert über die URL eingestellt wird).
Für Lorawan beträgt die Präambellänge immer 8, CR, CR immer 4/5, der Header des Lora-Levels ist immer enthalten und der niedrige Datenrate-Optimierungsmodus für SF11 und SF12 auf 125 kHz aktiv.
Das Copy -Ereignis des Browsers wird wie folgt zugeordnet:
Wenn ein Text ausgewählt ist, kopieren Sie das. Dies wird vom Browser behandelt.
Andernfalls kopieren Sie seinen Text, wenn ein Tooltip aktiv ist. Dies ergibt sowohl HTML- als auch Klartextformate. In einem Desktop -Browser benötigen Sie die Tastatur, um einen Tooltip zu kopieren.
Oder kopieren Sie die Ergebnisse. Dies unterstützt nur HTML.
Für die Linienbrüche im Ergebnisraster verwendet dies ein Format, das für die automatische Umwandlung von HTML zum Diskurs sehr spezifisch ist, wie im TTN -Forum verwendet: Der Diskurs ersetzt <br> durch n lehnt aber dann n in Tabellenzellen ab. Als Problemumgehung wird <br> als <br> ausgegeben, was wie in Diskursredakteur erwartet behandelt wird, muss jedoch eine Bearbeitung benötigen, wenn sie an anderer Stelle eingefügt werden. Die Verwendung der statischen Ergebnisse ist natürlich sowieso nicht ganz nützlich.
Für text/plain wird keine URL hinzugefügt, da der Diskurs den einfachen Textinhalt bevorzugt, wenn dies länger als die HTML ist.
Diese Anwendung wurde mit berücksichtigter URLs erstellt, sodass fast jeder Benutzereingang eine aktualisierte URL ergibt:
/<network>/<region>[/<parameters>] , EG /ttn/eu868 und /ttn/us902/6,14,cr48 .
<parameters> ist eine von Comma getrennte Liste und definiert:
cr45 , cr46 , cr47 , cr48LinkAdrReq Standardwerte sind im Segment <parameters> nicht enthalten. Dies gilt derzeit für:
cr45 : als fest für Lorawan festgelegt Wenn alle Parameter ihre Standardeinstellungen verwenden, werden das Segment <parameters> und sein Schrägstrich ausgeschlossen.
Um diese einseitige Anwendung auf Github-Seiten zu servieren, ist einige Tricks mit einer JavaScript-Umleitung in einer benutzerdefinierten 404-Seite erforderlich. Leider versuchen einige Browser (wie Brave) möglicherweise, hilfreich zu sein und eine Option zu zeigen wie "Möchten Sie überprüfen, ob eine gespeicherte Version auf dem Wayback -Computer verfügbar ist?" Auch wenn die erwartete Umleitung ordnungsgemäß ausgeführt wird. Es ist unklar, warum das letzte 200 OK das Banner für einige Websites in Brave entfernt, aber nicht für Github -Seiten.
Dieses Projekt wurde mit der Creat -React -App mit Streatstrade gestapft.
Um ein begrenztes Bündel für Plotly zu verwenden (um etwa 690 kb aus dem Build zu entfernen), wird in tsconfig.json eine paths -Alias -Konfiguration verwendet. Während des Tests oder des Aufbaus würde die React -App jedoch mutig entfernen:
> react-scripts build
The following changes are being made to your tsconfig.json file:
- compilerOptions.paths must not be set (aliased imports are not supported)
...
TypeScript error in /src/components/result/Graph.tsx(1,20):
Could not find a declaration file for module 'plotly.js-basic-dist'
Um dies zu mildern, werden stattdessen einige Tricks mit extends verwendet. Dies zeigt weiterhin dieselbe Nachricht für npm test und npm run build und format die Basis tsconfig.json , aber am Ende wird es nicht die extends berühren und tsconfig-paths.json verwenden.
Rennen Sie im Projektverzeichnis:
npm install
Laden Sie alle Abhängigkeiten herunter. Sie können die Warnungen vor fehlenden Peer -Abhängigkeiten sicher ignorieren.
npm start
Führt die App im Entwicklungsmodus aus. Öffnen Sie http: // localhost: 3000, um es im Browser anzuzeigen. Die Seite wird neu laden, wenn Sie Änderungen vornehmen. Sie werden auch Fellfehler in der Konsole sehen.
npm test
Startet den Testläufer im interaktiven Uhrenmodus. Weitere Informationen finden Sie in der Dokumentation von React App Create -App zum Ausführen von Tests.
npm test -- --coverage
Single -Test -Lauf mit Abdeckung.
npm run lint , npm run lint:es , npm run lint:style oder npm run lint:pretty
Führen Sie manuell alle Linter und schöner aus oder führen Sie nur diejenigen für Code, StyleHeets oder die verbleibenden Dateien aus. Im Gegensatz zum Pre-Commit-Hook (siehe unten) ist dies nicht auf inszenierte Dateien beschränkt.
npm run build
Leitet die Linter und (nur), wenn alle erfolgreich die App mit minimierten Bündeln für die Produktion in den build -Ordner erstellt.
Um sicherzustellen, dass URLs wie /ttn/eu868/1,2 geladen werden können, ohne zuerst das bloße /bloße / zu laden, siehe zum Beispiel die Apache .htaccess -Datei.
Um für einen Unterordner zu erstellen, setzen Sie "homepage": "/some/path/to/airtime-calculator" in package.json . Dies wirkt sich nicht auf den Entwicklungsserver aus, der immer aus dem Stammordner geladen wird. Stellen Sie ihn für die Bereitstellung im Stammordner auf "/" ein oder setzen Sie ihn überhaupt nicht. Siehe auch die Dokumentation der React App Create React App zur Bereitstellung.
Ein Pre-Commit-Haken sorgt dafür, dass Stinktfehler und Formatierungsfehler nicht begangen werden können. Um schönere Regeln zu ermöglichen, um alle Formatierungsregeln zu ersetzen, die durch einen Linter definiert werden können, ist es so konfiguriert, dass sie als Plugin für Eslint und Stylelint ausgeführt werden und explizit für die wenigen Dateitypen ausgeführt werden, die von beiden von beiden behandelt werden.
Beachten Sie, dass der Pre-Commit-Hook Lint-Stage verwendet, was vorübergehend nicht gestrichene Änderungen an teilweise inszenierten Dateien verbirgt. Dadurch kann Ihre IDE -Show Warnungen vor Dateien zeigen, die außerhalb der IDE geändert wurden.
Achten Sie darauf, dass Sourcetree den Pre-Commit-Haken schweigend überspringen könnte.
Aktivieren Sie Stylelint in Sprachen und Frameworks | Stilblätter | Stylelint und optional die Standardinspektionen in Editor | deaktivieren | Inspektionen | CSS . // noinspection CssInvalidAtRule Webstorm mag beispielsweise nicht @import-normalize; in App.scss
Die schöneren Einstellungen in .prettierrc.yaml definieren trailingComma: es5 . Nachdem Sie aufgefordert wurden "Verwenden Sie den Code -Stil, der auf hübscher für dieses Projekt basiert?" In Webstorming führt dies zum Codierungsstil | Zeichensetzung | Nachfolgerkomma: Hinzufügen, wenn Multiline . Leider gilt dies auch für Funktionsparameter, die ein übermäßiges Komma hinzufügen, wenn die Option für den Reformatcode (nicht für die Option-Shift-Command-P für Reformat mit schönerem) einfließen). Um dies zu vermeiden, setzen Sie Webstorm manuell ein, um nachverfolgendes Komma zu verwenden: Keep .
Die Editor-Einstellungen in .editorconfig definieren max_line_length , die beim Treffer der Option-Command-L für den Reformat-Code verwendet wird, jedoch nicht bei der Verwendung von Optionshift-Command-P für Reformat mit schöner.