frugal-iot-client 2.0.2 → 2.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +6 -1
- package/admin.js +133 -20
- package/cards.js +20 -0
- package/core.js +166 -8
- package/docs/FLASH_PLAN.md +30 -0
- package/flash.js +128 -37
- package/frugaliot.css +2 -0
- package/package.json +1 -1
- package/test/flash.test.js +220 -0
- package/test/graph.test.js +21 -0
- package/test/page.test.js +121 -3
- package/test/setup.js +4 -3
package/core.js
CHANGED
|
@@ -118,6 +118,25 @@ function unshiftUnique(arr, v) {
|
|
|
118
118
|
}
|
|
119
119
|
*/
|
|
120
120
|
|
|
121
|
+
/*
|
|
122
|
+
* Say what the broker made of a subscription.
|
|
123
|
+
*
|
|
124
|
+
* A broker that REFUSES one does not report an error: MQTT 3.1.1 answers with SUBACK return code
|
|
125
|
+
* 0x80, which mqtt.js hands back as granted qos 128 in the second argument. Checking only `err`
|
|
126
|
+
* therefore made a refusal completely silent - "Subscribing to X" and then nothing, for ever,
|
|
127
|
+
* looking exactly like a topic nobody publishes to. That is the difference between "no permission"
|
|
128
|
+
* and "no data", and it is the first thing you want to know.
|
|
129
|
+
*/
|
|
130
|
+
function subscribeResult(topic, err, granted) {
|
|
131
|
+
if (err) { console.error("Subscribe failed", topic, err); return; }
|
|
132
|
+
const refused = (granted || []).filter((g) => g.qos === 128);
|
|
133
|
+
if (refused.length) {
|
|
134
|
+
console.error(`Subscribe REFUSED by the broker: ${topic} - this login's broker account has no `
|
|
135
|
+
+ `permission for it. Its rights are set when it logs in; a permission added since then `
|
|
136
|
+
+ `needs a fresh login, or "frugal-iot-rebuild-dynsec" on the server.`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
121
140
|
/*
|
|
122
141
|
* Subscribe to a topic. cb(topic, message, retained) - see mqtt_deliver, which passes all three.
|
|
123
142
|
*
|
|
@@ -130,9 +149,7 @@ function mqtt_subscribe(topic, cb) { // cb(topic, message, retained)
|
|
|
130
149
|
mqtt_subscriptions.push({topic, cb});
|
|
131
150
|
// There may be no client yet - it only connects once it knows which organization's credentials to use
|
|
132
151
|
if (mqtt_client && mqtt_client.connected) {
|
|
133
|
-
mqtt_client.subscribe(topic, (err) =>
|
|
134
|
-
if (err) console.error(err);
|
|
135
|
-
})
|
|
152
|
+
mqtt_client.subscribe(topic, (err, granted) => subscribeResult(topic, err, granted))
|
|
136
153
|
} else {
|
|
137
154
|
console.log("Delaying till connected"); // It will resubscribe from "subscriptions"
|
|
138
155
|
}
|
|
@@ -361,20 +378,25 @@ function isEditableTarget(e) {
|
|
|
361
378
|
const languages = yaml.load(`
|
|
362
379
|
#Language configuration - will be read from files at some point
|
|
363
380
|
EN:
|
|
381
|
+
'"%s" already exists.': '"%s" already exists.'
|
|
364
382
|
"+ matches one level, # matches the rest. Look before deleting.": "+ matches one level, # matches the rest. Look before deleting."
|
|
365
383
|
_nameAndFlag: English 🇬🇧
|
|
366
384
|
_thisLanguage: English
|
|
367
385
|
(Max 4MB, .bin only, typically frugal-iot.ino.bin or firmware.bin): (Max 4MB, .bin only, typically frugal-iot.ino.bin or firmware.bin)
|
|
386
|
+
A bridge relays a Pi's readings to this server, so its nodes appear here too, while the Pi carries on recording and serving on its own whenever the link is down. "Bridge" is the broker's live view of the relay; "Last check-in" is when that Pi last collected this organization's logins, which it does over HTTP - so a Pi can be checking in while its bridge is down, and the two together say which half is broken.: A bridge relays a Pi's readings to this server, so its nodes appear here too, while the Pi carries on recording and serving on its own whenever the link is down. "Bridge" is the broker's live view of the relay; "Last check-in" is when that Pi last collected this organization's logins, which it does over HTTP - so a Pi can be checking in while its bridge is down, and the two together say which half is broken.
|
|
368
387
|
Action: Action
|
|
369
388
|
Action *: Action *
|
|
370
389
|
Add: Add
|
|
390
|
+
Add a bridge: Add a bridge
|
|
371
391
|
Add another enrolment secret: Add another enrolment secret
|
|
372
392
|
Added: Added
|
|
393
|
+
Adding it again issues a new broker password and a new replica token, and the ones that Pi is using now stop working. It will stay disconnected until you put the new ones into its configuration and restart its broker.: Adding it again issues a new broker password and a new replica token, and the ones that Pi is using now stop working. It will stay disconnected until you put the new ones into its configuration and restart its broker.
|
|
373
394
|
Admin: Admin
|
|
374
395
|
Advanced: Advanced
|
|
375
396
|
All: All
|
|
376
397
|
Already have an account?: Already have an account?
|
|
377
398
|
"And these two, if you are not building against the production server:": "And these two, if you are not building against the production server:"
|
|
399
|
+
Any node flashed with it that has not enrolled yet will be refused and will need reflashing. Nodes that have already enrolled are unaffected - they never present it again.: Any node flashed with it that has not enrolled yet will be refused and will need reflashing. Nodes that have already enrolled are unaffected - they never present it again.
|
|
378
400
|
API: API
|
|
379
401
|
Approved: Approved
|
|
380
402
|
AQI: AQI
|
|
@@ -385,8 +407,13 @@ EN:
|
|
|
385
407
|
Base URL: Base URL
|
|
386
408
|
Battery: Battery
|
|
387
409
|
Board: Board
|
|
410
|
+
Bridge: Bridge
|
|
411
|
+
Bridged Pis: Bridged Pis
|
|
412
|
+
Bridges: Bridges
|
|
388
413
|
Brightness: Brightness
|
|
389
414
|
Broker: Broker
|
|
415
|
+
Broker account: Broker account
|
|
416
|
+
Broker password: Broker password
|
|
390
417
|
Built in LED: Built in LED
|
|
391
418
|
buttons: buttons
|
|
392
419
|
Choose a project to see its devices: Choose a project to see its devices
|
|
@@ -402,15 +429,20 @@ EN:
|
|
|
402
429
|
connecting: connecting
|
|
403
430
|
Control: Control
|
|
404
431
|
Cookie Name: Cookie Name
|
|
432
|
+
Copy these now - they are not shown again: Copy these now - they are not shown again
|
|
405
433
|
Could not read the board - assuming it is already provisioned: Could not read the board - assuming it is already provisioned
|
|
406
434
|
Create an account: Create an account
|
|
407
435
|
Dashboard: Dashboard
|
|
408
436
|
Data: Data
|
|
409
437
|
Delete these: Delete these
|
|
438
|
+
Delete this firmware: Delete this firmware
|
|
410
439
|
Denied: Denied
|
|
440
|
+
Deny %s?: Deny %s?
|
|
411
441
|
Description: Description
|
|
412
442
|
Device: Device
|
|
413
443
|
Display carousel: Display carousel
|
|
444
|
+
DOWN: DOWN
|
|
445
|
+
Download this firmware: Download this firmware
|
|
414
446
|
Done: Done
|
|
415
447
|
ds18b20: ds18b20
|
|
416
448
|
e.g. LiteFarm: e.g. LiteFarm
|
|
@@ -440,6 +472,7 @@ EN:
|
|
|
440
472
|
Flashing needs the Web Serial API - use Chrome, Edge or Opera on a desktop computer: Flashing needs the Web Serial API - use Chrome, Edge or Opera on a desktop computer
|
|
441
473
|
for node: for node
|
|
442
474
|
Forget: Forget
|
|
475
|
+
Forget %s?: Forget %s?
|
|
443
476
|
Forget this node, so it is issued a new credential: Forget this node, so it is issued a new credential
|
|
444
477
|
Forgot password?: Forgot password?
|
|
445
478
|
From: From
|
|
@@ -447,6 +480,8 @@ EN:
|
|
|
447
480
|
Frugal-IoT Username *: Frugal-IoT Username *
|
|
448
481
|
Full provision - all configuration on the board will be erased: Full provision - all configuration on the board will be erased
|
|
449
482
|
Gas Resistance: Gas Resistance
|
|
483
|
+
Give the Pi a short name - it becomes its broker account and cannot be changed later without reconfiguring that Pi. Lower-case letters, digits and hyphens.: Give the Pi a short name - it becomes its broker account and cannot be changed later without reconfiguring that Pi. Lower-case letters, digits and hyphens.
|
|
484
|
+
Give the Pi a short name first: Give the Pi a short name first
|
|
450
485
|
Graph: Graph
|
|
451
486
|
Greater Than: Greater Than
|
|
452
487
|
Has its own broker credential. Click to deny it.: Has its own broker credential. Click to deny it.
|
|
@@ -456,7 +491,9 @@ EN:
|
|
|
456
491
|
humidity: humidity
|
|
457
492
|
Humidity control: Humidity control
|
|
458
493
|
Hysteresis: Hysteresis
|
|
494
|
+
hysteresis: hysteresis
|
|
459
495
|
Hysterisis: Hysteresis
|
|
496
|
+
hysterisis: hysteresis
|
|
460
497
|
I have a code: I have a code
|
|
461
498
|
id: id
|
|
462
499
|
If that account exists we have emailed a reset code: If that account exists we have emailed a reset code
|
|
@@ -464,9 +501,12 @@ EN:
|
|
|
464
501
|
Incorrect username or password: Incorrect username or password
|
|
465
502
|
Info: Info
|
|
466
503
|
Input: Input
|
|
504
|
+
It will be issued a new broker credential the next time it asks. A node that is running will be offline for a minute or two while it notices; a node whose filesystem was erased needs this before it can rejoin at all.: It will be issued a new broker credential the next time it asks. A node that is running will be offline for a minute or two while it notices; a node whose filesystem was erased needs this before it can rejoin at all.
|
|
505
|
+
Its broker account is deleted, so it stops being able to publish or subscribe, and it cannot enrol again until you clear this. Use it for a node sending bad readings.: Its broker account is deleted, so it stops being able to publish or subscribe, and it cannot enrol again until you clear this. Use it for a node sending bad readings.
|
|
467
506
|
Its next request will be accepted. Click to deny it.: Its next request will be accepted. Click to deny it.
|
|
468
507
|
Key: Key
|
|
469
508
|
Last asked: Last asked
|
|
509
|
+
Last check-in: Last check-in
|
|
470
510
|
Last Seen: Last Seen
|
|
471
511
|
Last seen: Last seen
|
|
472
512
|
LED: LED
|
|
@@ -497,9 +537,11 @@ EN:
|
|
|
497
537
|
No organization: No organization
|
|
498
538
|
No organization selected: No organization selected
|
|
499
539
|
No OTA files uploaded yet.: No OTA files uploaded yet.
|
|
540
|
+
No Pi bridges to this server for this organization. A bridge relays a Pi's readings here while the Pi carries on working on its own - see INSTALLATION.md step 11.: No Pi bridges to this server for this organization. A bridge relays a Pi's readings here while the Pi carries on working on its own - see INSTALLATION.md step 11.
|
|
500
541
|
No platforms registered yet.: No platforms registered yet.
|
|
501
542
|
No projects added for this organization yet.: No projects added for this organization yet.
|
|
502
543
|
No projects to display until organization selected: No projects to display until organization selected
|
|
544
|
+
No state received from the broker yet: No state received from the broker yet
|
|
503
545
|
Nobody added for this organization yet.: Nobody added for this organization yet.
|
|
504
546
|
Node: Node
|
|
505
547
|
Node Actions: Node Actions
|
|
@@ -560,12 +602,14 @@ EN:
|
|
|
560
602
|
Registration failed: Registration failed
|
|
561
603
|
Registration successful - please login: Registration successful - please login
|
|
562
604
|
Relay: Relay
|
|
605
|
+
Replica token: Replica token
|
|
563
606
|
Reporting every: Reporting every
|
|
564
607
|
Reset code: Reset code
|
|
565
608
|
Reset password: Reset password
|
|
566
609
|
Retain: Retain
|
|
567
610
|
Retained: Retained
|
|
568
611
|
Retained messages: Retained messages
|
|
612
|
+
Run this on the Pi, in the directory the server is installed in. Replace the placeholder with this server's fully-qualified name - the one on its certificate, which you can check by opening https:// that name in a browser. It will then ask for the broker password and for the replica token, in that order, so have both of the values below to hand.: Run this on the Pi, in the directory the server is installed in. Replace the placeholder with this server's fully-qualified name - the one on its certificate, which you can check by opening https:// that name in a browser. It will then ask for the broker password and for the replica token, in that order, so have both of the values below to hand.
|
|
569
613
|
Schema: Schema
|
|
570
614
|
Select: Select
|
|
571
615
|
Select a farm above to see its nodes.: Select a farm above to see its nodes.
|
|
@@ -586,6 +630,7 @@ EN:
|
|
|
586
630
|
SHT30: SHT30
|
|
587
631
|
Sign In: Sign In
|
|
588
632
|
Sign in: Sign in
|
|
633
|
+
Site: Site
|
|
589
634
|
Soil: Soil
|
|
590
635
|
Soil Moisture: Soil Moisture
|
|
591
636
|
Soil Temperature: Soil Temperature
|
|
@@ -602,6 +647,8 @@ EN:
|
|
|
602
647
|
Temperature: Temperature
|
|
603
648
|
temperature: temperature
|
|
604
649
|
That code is not valid or has expired: That code is not valid or has expired
|
|
650
|
+
The broker reports this bridge connected: The broker reports this bridge connected
|
|
651
|
+
The broker reports this bridge not connected: The broker reports this bridge not connected
|
|
605
652
|
This field has no invocation URL (forms[0].href) in its schema: This field has no invocation URL (forms[0].href) in its schema
|
|
606
653
|
This node has no actions in its schema.: This node has no actions in its schema.
|
|
607
654
|
This node has no actions or writable properties in its schema.: This node has no actions or writable properties in its schema.
|
|
@@ -612,6 +659,7 @@ EN:
|
|
|
612
659
|
Topic: Topic
|
|
613
660
|
Topic and Value are required: Topic and Value are required
|
|
614
661
|
TVOC: TVOC
|
|
662
|
+
'Two credentials for two different connections: the password is what the MQTT bridge logs in with on port 8883, and the token is what lets that Pi pull this organization''s logins over HTTPS, so the same people can log in there too. The token can be skipped - press Enter at its prompt - and added later by doing this again. Neither is asked for on the command line, so that neither ends up in the Pi''s shell history.': 'Two credentials for two different connections: the password is what the MQTT bridge logs in with on port 8883, and the token is what lets that Pi pull this organization''s logins over HTTPS, so the same people can log in there too. The token can be skipped - press Enter at its prompt - and added later by doing this again. Neither is asked for on the command line, so that neither ends up in the Pi''s shell history.'
|
|
615
663
|
Unable to find node: Unable to find node
|
|
616
664
|
Unable to find project: Unable to find project
|
|
617
665
|
Unauthorized: Unauthorized
|
|
@@ -619,9 +667,12 @@ EN:
|
|
|
619
667
|
Unknown: Unknown
|
|
620
668
|
Unsupported board: Unsupported board
|
|
621
669
|
Unused: Unused
|
|
670
|
+
Up: Up
|
|
622
671
|
Updating the app only: Updating the app only
|
|
623
672
|
Updating the app only - the existing configuration will be preserved: Updating the app only - the existing configuration will be preserved
|
|
624
673
|
Upload: Upload
|
|
674
|
+
Upload finished - check the list below: Upload finished - check the list below
|
|
675
|
+
Uploading: Uploading
|
|
625
676
|
Username: Username
|
|
626
677
|
Username or email: Username or email
|
|
627
678
|
Value: Value
|
|
@@ -632,24 +683,30 @@ EN:
|
|
|
632
683
|
We will email you a code and a link to choose a new password.: We will email you a code and a link to choose a new password.
|
|
633
684
|
When: When
|
|
634
685
|
WiFi: WiFi
|
|
686
|
+
Withdraw this enrolment secret?: Withdraw this enrolment secret?
|
|
635
687
|
Withdrawn: Withdrawn
|
|
636
688
|
Yes: Yes
|
|
637
689
|
You do not have permission for this organization: You do not have permission for this organization
|
|
638
690
|
FR:
|
|
691
|
+
'"%s" already exists.': « %s » existe déjà.
|
|
639
692
|
"+ matches one level, # matches the rest. Look before deleting.": "+ correspond à un niveau, # au reste. Regardez avant de supprimer."
|
|
640
693
|
_nameAndFlag: Français 🇫🇷
|
|
641
694
|
_thisLanguage: Francaise
|
|
642
695
|
(Max 4MB, .bin only, typically frugal-iot.ino.bin or firmware.bin): (Max 4 Mo, .bin uniquement, généralement frugal-iot.ino.bin ou firmware.bin)
|
|
696
|
+
A bridge relays a Pi's readings to this server, so its nodes appear here too, while the Pi carries on recording and serving on its own whenever the link is down. "Bridge" is the broker's live view of the relay; "Last check-in" is when that Pi last collected this organization's logins, which it does over HTTP - so a Pi can be checking in while its bridge is down, and the two together say which half is broken.: Une passerelle relaie les mesures d'un Pi vers ce serveur, de sorte que ses nœuds apparaissent ici aussi, tandis que le Pi continue d'enregistrer et de servir de son côté chaque fois que le lien est coupé. « Passerelle » est la vue en direct du relais par le courtier ; « Dernier contact » indique quand ce Pi a récupéré pour la dernière fois les comptes de cette organisation, ce qu'il fait en HTTP - un Pi peut donc prendre contact alors que sa passerelle est coupée, et les deux ensemble disent quelle moitié est en panne.
|
|
643
697
|
Action: Action
|
|
644
698
|
Action *: Action *
|
|
645
699
|
Add: Ajouter
|
|
700
|
+
Add a bridge: Ajouter une passerelle
|
|
646
701
|
Add another enrolment secret: Ajouter un autre secret d'enrôlement
|
|
647
702
|
Added: Ajouté
|
|
703
|
+
Adding it again issues a new broker password and a new replica token, and the ones that Pi is using now stop working. It will stay disconnected until you put the new ones into its configuration and restart its broker.: Le refaire émet un nouveau mot de passe de courtier et un nouveau jeton de réplique, et ceux que ce Pi utilise actuellement cessent de fonctionner. Il restera déconnecté jusqu'à ce que vous mettiez les nouveaux dans sa configuration et redémarriez son courtier.
|
|
648
704
|
Admin: Admin
|
|
649
705
|
Advanced: Avancé
|
|
650
706
|
All: Tous
|
|
651
707
|
Already have an account?: Vous avez déjà un compte ?
|
|
652
708
|
"And these two, if you are not building against the production server:": "Et ces deux-ci, si vous ne compilez pas pour le serveur de production :"
|
|
709
|
+
Any node flashed with it that has not enrolled yet will be refused and will need reflashing. Nodes that have already enrolled are unaffected - they never present it again.: Tout nœud flashé avec lui qui ne s'est pas encore enrôlé sera refusé et devra être reflashé. Les nœuds déjà enrôlés ne sont pas affectés - ils ne le présentent plus jamais.
|
|
653
710
|
API: API
|
|
654
711
|
Approved: Approuvé
|
|
655
712
|
AQI: IQA
|
|
@@ -660,8 +717,13 @@ FR:
|
|
|
660
717
|
Base URL: URL de base
|
|
661
718
|
Battery: Batterie
|
|
662
719
|
Board: Carte
|
|
720
|
+
Bridge: Passerelle
|
|
721
|
+
Bridged Pis: Pi reliés par passerelle
|
|
722
|
+
Bridges: Passerelles
|
|
663
723
|
Brightness: Luminosité
|
|
664
724
|
Broker: Courtier
|
|
725
|
+
Broker account: Compte du courtier
|
|
726
|
+
Broker password: Mot de passe du courtier
|
|
665
727
|
Built in LED: LED intégrée
|
|
666
728
|
buttons: boutons
|
|
667
729
|
Choose a project to see its devices: Choisissez un projet pour voir ses appareils
|
|
@@ -677,15 +739,20 @@ FR:
|
|
|
677
739
|
connecting: connexion
|
|
678
740
|
Control: Contrôle
|
|
679
741
|
Cookie Name: Nom du cookie
|
|
742
|
+
Copy these now - they are not shown again: Copiez-les maintenant - ils ne seront plus affichés
|
|
680
743
|
Could not read the board - assuming it is already provisioned: Impossible de lire la carte - on suppose qu'elle est déjà provisionnée
|
|
681
744
|
Create an account: Créer un compte
|
|
682
745
|
Dashboard: Tableau de bord
|
|
683
746
|
Data: Données
|
|
684
747
|
Delete these: Supprimer ceux-ci
|
|
748
|
+
Delete this firmware: Supprimer ce micrologiciel
|
|
685
749
|
Denied: Refusé
|
|
750
|
+
Deny %s?: Refuser %s ?
|
|
686
751
|
Description: Description
|
|
687
752
|
Device: Appareil
|
|
688
753
|
Display carousel: Carrousel d'affichage
|
|
754
|
+
DOWN: HORS SERVICE
|
|
755
|
+
Download this firmware: Télécharger ce micrologiciel
|
|
689
756
|
Done: Fait
|
|
690
757
|
ds18b20: ds18b20
|
|
691
758
|
e.g. LiteFarm: par ex. LiteFarm
|
|
@@ -715,6 +782,7 @@ FR:
|
|
|
715
782
|
Flashing needs the Web Serial API - use Chrome, Edge or Opera on a desktop computer: Le flashage nécessite l'API Web Serial - utilisez Chrome, Edge ou Opera sur un ordinateur de bureau
|
|
716
783
|
for node: pour le nœud
|
|
717
784
|
Forget: Oublier
|
|
785
|
+
Forget %s?: Oublier %s ?
|
|
718
786
|
Forget this node, so it is issued a new credential: Oublier ce nœud, pour qu'un nouvel identifiant lui soit délivré
|
|
719
787
|
Forgot password?: Mot de passe oublié ?
|
|
720
788
|
From: De
|
|
@@ -722,6 +790,8 @@ FR:
|
|
|
722
790
|
Frugal-IoT Username *: Nom d'utilisateur Frugal-IoT *
|
|
723
791
|
Full provision - all configuration on the board will be erased: Provisionnement complet - toute la configuration de la carte sera effacée
|
|
724
792
|
Gas Resistance: Résistance du gaz
|
|
793
|
+
Give the Pi a short name - it becomes its broker account and cannot be changed later without reconfiguring that Pi. Lower-case letters, digits and hyphens.: Donnez au Pi un nom court - il devient son compte de courtier et ne peut plus être changé ensuite sans reconfigurer ce Pi. Lettres minuscules, chiffres et traits d'union.
|
|
794
|
+
Give the Pi a short name first: Donnez d'abord un nom court au Pi
|
|
725
795
|
Graph: Graphique
|
|
726
796
|
Greater Than: Supérieur à
|
|
727
797
|
Has its own broker credential. Click to deny it.: Possède son propre identifiant de broker. Cliquez pour le refuser.
|
|
@@ -741,9 +811,12 @@ FR:
|
|
|
741
811
|
Incorrect username or password: Nom d'utilisateur ou mot de passe incorrect
|
|
742
812
|
Info: Infos
|
|
743
813
|
Input: Entrée
|
|
814
|
+
It will be issued a new broker credential the next time it asks. A node that is running will be offline for a minute or two while it notices; a node whose filesystem was erased needs this before it can rejoin at all.: Un nouvel identifiant de courtier lui sera délivré la prochaine fois qu'il le demandera. Un nœud en fonctionnement sera hors ligne une minute ou deux le temps qu'il s'en aperçoive ; un nœud dont le système de fichiers a été effacé en a besoin pour pouvoir rejoindre.
|
|
815
|
+
Its broker account is deleted, so it stops being able to publish or subscribe, and it cannot enrol again until you clear this. Use it for a node sending bad readings.: Son compte de courtier est supprimé, il ne peut donc plus publier ni s'abonner, et il ne peut pas s'enrôler de nouveau tant que vous n'avez pas annulé ceci. À utiliser pour un nœud qui envoie de mauvaises mesures.
|
|
744
816
|
Its next request will be accepted. Click to deny it.: Sa prochaine demande sera acceptée. Cliquez pour le refuser.
|
|
745
817
|
Key: Clé
|
|
746
818
|
Last asked: Dernière demande
|
|
819
|
+
Last check-in: Dernier contact
|
|
747
820
|
Last Seen: Dernière activité
|
|
748
821
|
Last seen: Vu pour la dernière fois
|
|
749
822
|
LED: LED
|
|
@@ -774,13 +847,15 @@ FR:
|
|
|
774
847
|
No organization: Aucune organisation
|
|
775
848
|
No organization selected: Aucune organisation sélectionnée
|
|
776
849
|
No OTA files uploaded yet.: Aucun fichier OTA téléversé pour l'instant.
|
|
850
|
+
No Pi bridges to this server for this organization. A bridge relays a Pi's readings here while the Pi carries on working on its own - see INSTALLATION.md step 11.: Aucune passerelle Pi vers ce serveur pour cette organisation. Une passerelle relaie ici les mesures d'un Pi pendant que celui-ci continue de fonctionner de son côté - voir INSTALLATION.md étape 11.
|
|
777
851
|
No platforms registered yet.: Aucune plateforme enregistrée pour l'instant.
|
|
778
852
|
No projects added for this organization yet.: Aucun projet ajouté pour cette organisation pour l'instant.
|
|
779
853
|
No projects to display until organization selected: Aucun projet à afficher tant qu'une organisation n'est sélectionnée
|
|
854
|
+
No state received from the broker yet: Aucun état reçu du courtier pour l'instant
|
|
780
855
|
Nobody added for this organization yet.: Personne n'a encore été ajouté pour cette organisation.
|
|
781
856
|
Node: Nœud
|
|
782
857
|
Node Actions: Actions du nœud
|
|
783
|
-
Node
|
|
858
|
+
Node ID: ID du nœud
|
|
784
859
|
Node Name: Nom du nœud
|
|
785
860
|
Nodes: Nœuds
|
|
786
861
|
Nodes in Farm: Nœuds dans la ferme
|
|
@@ -837,12 +912,14 @@ FR:
|
|
|
837
912
|
Registration failed: L'inscription a échoué
|
|
838
913
|
Registration successful - please login: Inscription réussie - veuillez vous connecter
|
|
839
914
|
Relay: Relais
|
|
915
|
+
Replica token: Jeton de réplique
|
|
840
916
|
Reporting every: Transmet toutes les
|
|
841
917
|
Reset code: Code de réinitialisation
|
|
842
918
|
Reset password: Réinitialiser le mot de passe
|
|
843
919
|
Retain: Conserver
|
|
844
920
|
Retained: Conservés
|
|
845
921
|
Retained messages: Messages conservés
|
|
922
|
+
Run this on the Pi, in the directory the server is installed in. Replace the placeholder with this server's fully-qualified name - the one on its certificate, which you can check by opening https:// that name in a browser. It will then ask for the broker password and for the replica token, in that order, so have both of the values below to hand.: Exécutez ceci sur le Pi, dans le répertoire où le serveur est installé. Remplacez l'espace réservé par le nom pleinement qualifié de ce serveur - celui qui figure sur son certificat, que vous pouvez vérifier en ouvrant https:// ce nom dans un navigateur. Il demandera ensuite le mot de passe du courtier puis le jeton de réplique, dans cet ordre, alors ayez les deux valeurs ci-dessous sous la main.
|
|
846
923
|
Schema: Schéma
|
|
847
924
|
Select: Sélectionner
|
|
848
925
|
Select a farm above to see its nodes.: Sélectionnez une ferme ci-dessus pour voir ses nœuds.
|
|
@@ -863,6 +940,7 @@ FR:
|
|
|
863
940
|
SHT30: SHT30
|
|
864
941
|
Sign In: Se connecter
|
|
865
942
|
Sign in: Se connecter
|
|
943
|
+
Site: Site
|
|
866
944
|
Soil: Sol
|
|
867
945
|
Soil Moisture: Humidité du sol
|
|
868
946
|
Soil Temperature: Température du sol
|
|
@@ -879,6 +957,8 @@ FR:
|
|
|
879
957
|
Temperature: Température
|
|
880
958
|
temperature: température
|
|
881
959
|
That code is not valid or has expired: Ce code n'est pas valide ou a expiré
|
|
960
|
+
The broker reports this bridge connected: Le courtier signale cette passerelle comme connectée
|
|
961
|
+
The broker reports this bridge not connected: Le courtier signale cette passerelle comme non connectée
|
|
882
962
|
This field has no invocation URL (forms[0].href) in its schema: Ce champ n'a pas d'URL d'invocation (forms[0].href) dans son schéma
|
|
883
963
|
This node has no actions in its schema.: Ce nœud n'a aucune action dans son schéma.
|
|
884
964
|
This node has no actions or writable properties in its schema.: Ce nœud n'a aucune action ni propriété modifiable dans son schéma.
|
|
@@ -889,6 +969,7 @@ FR:
|
|
|
889
969
|
Topic: Sujet
|
|
890
970
|
Topic and Value are required: Le sujet et la valeur sont requis
|
|
891
971
|
TVOC: COVT
|
|
972
|
+
'Two credentials for two different connections: the password is what the MQTT bridge logs in with on port 8883, and the token is what lets that Pi pull this organization''s logins over HTTPS, so the same people can log in there too. The token can be skipped - press Enter at its prompt - and added later by doing this again. Neither is asked for on the command line, so that neither ends up in the Pi''s shell history.': 'Deux identifiants pour deux connexions différentes : le mot de passe est celui avec lequel la passerelle MQTT se connecte sur le port 8883, et le jeton est ce qui permet à ce Pi de récupérer les comptes de cette organisation en HTTPS, afin que les mêmes personnes puissent aussi s''y connecter. Le jeton peut être omis - appuyez sur Entrée à son invite - et ajouté plus tard en refaisant ceci. Ni l''un ni l''autre n''est demandé sur la ligne de commande, afin qu''aucun ne se retrouve dans l''historique du shell du Pi.'
|
|
892
973
|
Unable to find node: Impossible de trouver le nœud
|
|
893
974
|
Unable to find project: Impossible de trouver le projet
|
|
894
975
|
Unauthorized: Non autorisé
|
|
@@ -896,9 +977,12 @@ FR:
|
|
|
896
977
|
Unknown: Inconnu
|
|
897
978
|
Unsupported board: Carte non prise en charge
|
|
898
979
|
Unused: Inutilisé
|
|
980
|
+
Up: Actif
|
|
899
981
|
Updating the app only: Mise à jour de l'application uniquement
|
|
900
982
|
Updating the app only - the existing configuration will be preserved: Mise à jour de l'application uniquement - la configuration existante sera conservée
|
|
901
983
|
Upload: Téléverser
|
|
984
|
+
Upload finished - check the list below: Téléversement terminé - vérifiez la liste ci-dessous
|
|
985
|
+
Uploading: Téléversement
|
|
902
986
|
Username: Nom de User
|
|
903
987
|
Username or email: Nom d'utilisateur ou e-mail
|
|
904
988
|
Value: Valeur
|
|
@@ -909,24 +993,30 @@ FR:
|
|
|
909
993
|
We will email you a code and a link to choose a new password.: Nous vous enverrons par e-mail un code et un lien pour choisir un nouveau mot de passe.
|
|
910
994
|
When: Quand
|
|
911
995
|
WiFi: WiFi
|
|
996
|
+
Withdraw this enrolment secret?: Retirer ce secret d'enrôlement ?
|
|
912
997
|
Withdrawn: Retiré
|
|
913
998
|
Yes: Oui
|
|
914
999
|
You do not have permission for this organization: Vous n'avez pas la permission pour cette organisation
|
|
915
1000
|
HI:
|
|
1001
|
+
'"%s" already exists.': '"%s" पहले से मौजूद है।'
|
|
916
1002
|
"+ matches one level, # matches the rest. Look before deleting.": "+ एक स्तर से मेल खाता है, # बाकी सभी से। हटाने से पहले देख लें।"
|
|
917
1003
|
_nameAndFlag: हिंदी 🇮🇳
|
|
918
1004
|
_thisLanguage: हिंदी
|
|
919
1005
|
(Max 4MB, .bin only, typically frugal-iot.ino.bin or firmware.bin): (अधिकतम 4MB, केवल .bin, सामान्यतः frugal-iot.ino.bin या firmware.bin)
|
|
1006
|
+
A bridge relays a Pi's readings to this server, so its nodes appear here too, while the Pi carries on recording and serving on its own whenever the link is down. "Bridge" is the broker's live view of the relay; "Last check-in" is when that Pi last collected this organization's logins, which it does over HTTP - so a Pi can be checking in while its bridge is down, and the two together say which half is broken.: एक ब्रिज किसी Pi की रीडिंग इस सर्वर तक पहुँचाता है, जिससे उसके नोड यहाँ भी दिखते हैं, जबकि लिंक टूटने पर Pi अपने आप रिकॉर्ड और सर्व करता रहता है। « ब्रिज » रिले का ब्रोकर द्वारा दिखाया गया सीधा दृश्य है; « अंतिम संपर्क » वह समय है जब उस Pi ने आखिरी बार इस संगठन के लॉगिन एकत्र किए, जो वह HTTP पर करता है - इसलिए कोई Pi संपर्क कर सकता है जबकि उसका ब्रिज बंद हो, और दोनों मिलकर बताते हैं कि कौन-सा हिस्सा खराब है।
|
|
920
1007
|
Action: क्रिया
|
|
921
1008
|
Action *: क्रिया *
|
|
922
1009
|
Add: जोड़ें
|
|
1010
|
+
Add a bridge: ब्रिज जोड़ें
|
|
923
1011
|
Add another enrolment secret: एक और पंजीकरण सीक्रेट जोड़ें
|
|
924
1012
|
Added: जोड़ा गया
|
|
1013
|
+
Adding it again issues a new broker password and a new replica token, and the ones that Pi is using now stop working. It will stay disconnected until you put the new ones into its configuration and restart its broker.: इसे दोबारा जोड़ने पर नया ब्रोकर पासवर्ड और नया प्रतिकृति टोकन जारी होता है, और वह Pi अभी जिनका उपयोग कर रहा है वे काम करना बंद कर देते हैं। जब तक आप नए मान उसकी कॉन्फ़िगरेशन में नहीं डालते और उसका ब्रोकर पुनः आरंभ नहीं करते, वह डिस्कनेक्ट ही रहेगा।
|
|
925
1014
|
Admin: एडमिन
|
|
926
1015
|
Advanced: उन्नत
|
|
927
1016
|
All: सभी
|
|
928
1017
|
Already have an account?: पहले से खाता है?
|
|
929
1018
|
"And these two, if you are not building against the production server:": "और ये दो, यदि आप उत्पादन सर्वर के लिए बिल्ड नहीं कर रहे हैं:"
|
|
1019
|
+
Any node flashed with it that has not enrolled yet will be refused and will need reflashing. Nodes that have already enrolled are unaffected - they never present it again.: इसके साथ फ्लैश किया गया कोई भी नोड जो अभी तक पंजीकृत नहीं हुआ है, अस्वीकार कर दिया जाएगा और उसे दोबारा फ्लैश करना होगा। जो नोड पहले ही पंजीकृत हो चुके हैं वे प्रभावित नहीं होते - वे इसे फिर कभी प्रस्तुत नहीं करते।
|
|
930
1020
|
API: एपीआई
|
|
931
1021
|
Approved: स्वीकृत
|
|
932
1022
|
AQI: वायु गुणवत्ता सूचकांक
|
|
@@ -937,8 +1027,13 @@ HI:
|
|
|
937
1027
|
Base URL: बेस यूआरएल
|
|
938
1028
|
Battery: बैटरी
|
|
939
1029
|
Board: बोर्ड
|
|
1030
|
+
Bridge: ब्रिज
|
|
1031
|
+
Bridged Pis: ब्रिज किए गए Pi
|
|
1032
|
+
Bridges: ब्रिज
|
|
940
1033
|
Brightness: चमक
|
|
941
1034
|
Broker: ब्रोकर
|
|
1035
|
+
Broker account: ब्रोकर खाता
|
|
1036
|
+
Broker password: ब्रोकर पासवर्ड
|
|
942
1037
|
Built in LED: बिल्ट-इन एलईडी
|
|
943
1038
|
buttons: बटन
|
|
944
1039
|
Choose a project to see its devices: उपकरण देखने के लिए प्रोजेक्ट चुनें
|
|
@@ -954,15 +1049,20 @@ HI:
|
|
|
954
1049
|
connecting: कनेक्ट हो रहा है
|
|
955
1050
|
Control: नियंत्रण
|
|
956
1051
|
Cookie Name: कुकी नाम
|
|
1052
|
+
Copy these now - they are not shown again: इन्हें अभी कॉपी करें - ये दोबारा नहीं दिखाए जाएंगे
|
|
957
1053
|
Could not read the board - assuming it is already provisioned: बोर्ड पढ़ा नहीं जा सका - मान लिया गया कि यह पहले से प्रोविजन किया हुआ है
|
|
958
1054
|
Create an account: खाता बनाएँ
|
|
959
1055
|
Dashboard: डैशबोर्ड
|
|
960
1056
|
Data: डेटा
|
|
961
1057
|
Delete these: इन्हें हटाएँ
|
|
1058
|
+
Delete this firmware: इस फर्मवेयर को हटाएँ
|
|
962
1059
|
Denied: अस्वीकृत
|
|
1060
|
+
Deny %s?: '%s को अस्वीकार करें?'
|
|
963
1061
|
Description: विवरण
|
|
964
1062
|
Device: उपकरण
|
|
965
1063
|
Display carousel: डिस्प्ले कैरोसेल
|
|
1064
|
+
DOWN: बंद
|
|
1065
|
+
Download this firmware: इस फर्मवेयर को डाउनलोड करें
|
|
966
1066
|
Done: पूर्ण
|
|
967
1067
|
ds18b20: ds18b20
|
|
968
1068
|
e.g. LiteFarm: उदाहरण के लिए LiteFarm
|
|
@@ -992,6 +1092,7 @@ HI:
|
|
|
992
1092
|
Flashing needs the Web Serial API - use Chrome, Edge or Opera on a desktop computer: फ्लैश करने के लिए Web Serial API आवश्यक है - डेस्कटॉप कंप्यूटर पर Chrome, Edge या Opera का उपयोग करें
|
|
993
1093
|
for node: नोड के लिए
|
|
994
1094
|
Forget: भुलाएँ
|
|
1095
|
+
Forget %s?: '%s को भुला दें?'
|
|
995
1096
|
Forget this node, so it is issued a new credential: इस नोड को भुला दें, ताकि इसे नया क्रेडेंशियल मिले
|
|
996
1097
|
Forgot password?: पासवर्ड भूल गए?
|
|
997
1098
|
From: से
|
|
@@ -999,6 +1100,8 @@ HI:
|
|
|
999
1100
|
Frugal-IoT Username *: Frugal-IoT उपयोगकर्ता नाम *
|
|
1000
1101
|
Full provision - all configuration on the board will be erased: पूर्ण प्रोविजनिंग - बोर्ड की सारी कॉन्फ़िगरेशन मिट जाएगी
|
|
1001
1102
|
Gas Resistance: गैस प्रतिरोध
|
|
1103
|
+
Give the Pi a short name - it becomes its broker account and cannot be changed later without reconfiguring that Pi. Lower-case letters, digits and hyphens.: Pi को एक छोटा नाम दें - यही उसका ब्रोकर खाता बनता है और बाद में उस Pi को दोबारा कॉन्फ़िगर किए बिना इसे बदला नहीं जा सकता। छोटे अक्षर, अंक और हाइफ़न।
|
|
1104
|
+
Give the Pi a short name first: पहले Pi को एक छोटा नाम दें
|
|
1002
1105
|
Graph: ग्राफ़
|
|
1003
1106
|
Greater Than: इससे बड़ा
|
|
1004
1107
|
Has its own broker credential. Click to deny it.: इसके पास अपना ब्रोकर क्रेडेंशियल है। अस्वीकार करने के लिए क्लिक करें।
|
|
@@ -1018,9 +1121,12 @@ HI:
|
|
|
1018
1121
|
Incorrect username or password: उपयोगकर्ता नाम या पासवर्ड गलत है
|
|
1019
1122
|
Info: जानकारी
|
|
1020
1123
|
Input: इनपुट
|
|
1124
|
+
It will be issued a new broker credential the next time it asks. A node that is running will be offline for a minute or two while it notices; a node whose filesystem was erased needs this before it can rejoin at all.: अगली बार माँगने पर उसे नया ब्रोकर क्रेडेंशियल जारी किया जाएगा। चालू नोड एक-दो मिनट के लिए ऑफ़लाइन रहेगा जब तक उसे इसका पता चलता है; जिस नोड का फ़ाइल सिस्टम मिटा दिया गया है उसे दोबारा जुड़ने के लिए यही चाहिए।
|
|
1125
|
+
Its broker account is deleted, so it stops being able to publish or subscribe, and it cannot enrol again until you clear this. Use it for a node sending bad readings.: उसका ब्रोकर खाता हटा दिया जाता है, इसलिए वह न प्रकाशित कर पाता है न सब्सक्राइब, और जब तक आप इसे हटाते नहीं तब तक वह दोबारा पंजीकृत नहीं हो सकता। इसका उपयोग उस नोड के लिए करें जो गलत रीडिंग भेज रहा है।
|
|
1021
1126
|
Its next request will be accepted. Click to deny it.: इसका अगला अनुरोध स्वीकार किया जाएगा। अस्वीकार करने के लिए क्लिक करें।
|
|
1022
1127
|
Key: कुंजी
|
|
1023
1128
|
Last asked: अंतिम अनुरोध
|
|
1129
|
+
Last check-in: अंतिम संपर्क
|
|
1024
1130
|
Last Seen: अंतिम बार देखा गया
|
|
1025
1131
|
Last seen: अंतिम बार देखा
|
|
1026
1132
|
LED: एलईडी
|
|
@@ -1051,9 +1157,11 @@ HI:
|
|
|
1051
1157
|
No organization: कोई संगठन नहीं
|
|
1052
1158
|
No organization selected: कोई संगठन चयनित नहीं
|
|
1053
1159
|
No OTA files uploaded yet.: अभी तक कोई OTA फ़ाइल अपलोड नहीं की गई है।
|
|
1160
|
+
No Pi bridges to this server for this organization. A bridge relays a Pi's readings here while the Pi carries on working on its own - see INSTALLATION.md step 11.: इस संगठन के लिए इस सर्वर से कोई Pi ब्रिज नहीं है। एक ब्रिज Pi की रीडिंग यहाँ पहुँचाता है जबकि Pi अपने आप काम करता रहता है - INSTALLATION.md चरण 11 देखें।
|
|
1054
1161
|
No platforms registered yet.: अभी तक कोई प्लेटफ़ॉर्म पंजीकृत नहीं है।
|
|
1055
1162
|
No projects added for this organization yet.: इस संगठन के लिए अभी तक कोई प्रोजेक्ट नहीं जोड़ा गया है।
|
|
1056
1163
|
No projects to display until organization selected: संगठन चुने जाने तक कोई प्रोजेक्ट प्रदर्शित नहीं होगा
|
|
1164
|
+
No state received from the broker yet: ब्रोकर से अभी तक कोई स्थिति प्राप्त नहीं हुई
|
|
1057
1165
|
Nobody added for this organization yet.: इस संगठन के लिए अभी तक कोई नहीं जोड़ा गया है।
|
|
1058
1166
|
Node: नोड
|
|
1059
1167
|
Node Actions: नोड क्रियाएँ
|
|
@@ -1114,12 +1222,14 @@ HI:
|
|
|
1114
1222
|
Registration failed: पंजीकरण विफल
|
|
1115
1223
|
Registration successful - please login: पंजीकरण सफल - कृपया लॉगिन करें
|
|
1116
1224
|
Relay: रिले
|
|
1225
|
+
Replica token: प्रतिकृति टोकन
|
|
1117
1226
|
Reporting every: हर बार रिपोर्ट
|
|
1118
1227
|
Reset code: रीसेट कोड
|
|
1119
1228
|
Reset password: पासवर्ड रीसेट करें
|
|
1120
1229
|
Retain: बनाए रखें
|
|
1121
1230
|
Retained: संचित
|
|
1122
1231
|
Retained messages: संचित संदेश
|
|
1232
|
+
Run this on the Pi, in the directory the server is installed in. Replace the placeholder with this server's fully-qualified name - the one on its certificate, which you can check by opening https:// that name in a browser. It will then ask for the broker password and for the replica token, in that order, so have both of the values below to hand.: इसे Pi पर उसी डायरेक्टरी में चलाएँ जहाँ सर्वर इंस्टॉल है। प्लेसहोल्डर की जगह इस सर्वर का पूरा नाम डालें - वही जो उसके प्रमाणपत्र पर है, जिसे आप ब्राउज़र में https:// उस नाम को खोलकर जाँच सकते हैं। फिर यह ब्रोकर पासवर्ड और उसके बाद प्रतिकृति टोकन माँगेगा, इसी क्रम में, इसलिए नीचे दिए दोनों मान तैयार रखें।
|
|
1123
1233
|
Schema: स्कीमा
|
|
1124
1234
|
Select: चुनें
|
|
1125
1235
|
Select a farm above to see its nodes.: इसके नोड्स देखने के लिए ऊपर एक फार्म चुनें।
|
|
@@ -1140,6 +1250,7 @@ HI:
|
|
|
1140
1250
|
SHT30: एसएचटी30
|
|
1141
1251
|
Sign In: साइन इन करें
|
|
1142
1252
|
Sign in: साइन इन करें
|
|
1253
|
+
Site: साइट
|
|
1143
1254
|
Soil: मिट्टी
|
|
1144
1255
|
Soil Moisture: मिट्टी की नमी
|
|
1145
1256
|
Soil Temperature: मिट्टी का तापमान
|
|
@@ -1156,6 +1267,8 @@ HI:
|
|
|
1156
1267
|
Temperature: तापमान
|
|
1157
1268
|
temperature: तापमान
|
|
1158
1269
|
That code is not valid or has expired: यह कोड मान्य नहीं है या समाप्त हो गया है
|
|
1270
|
+
The broker reports this bridge connected: ब्रोकर बताता है कि यह ब्रिज जुड़ा हुआ है
|
|
1271
|
+
The broker reports this bridge not connected: ब्रोकर बताता है कि यह ब्रिज जुड़ा हुआ नहीं है
|
|
1159
1272
|
This field has no invocation URL (forms[0].href) in its schema: इस फ़ील्ड के स्कीमा में कोई इनवोकेशन यूआरएल (forms[0].href) नहीं है
|
|
1160
1273
|
This node has no actions in its schema.: इस नोड के स्कीमा में कोई क्रिया नहीं है।
|
|
1161
1274
|
This node has no actions or writable properties in its schema.: इस नोड के स्कीमा में कोई क्रिया या लिखने योग्य गुण नहीं है।
|
|
@@ -1166,6 +1279,7 @@ HI:
|
|
|
1166
1279
|
Topic: टॉपिक
|
|
1167
1280
|
Topic and Value are required: टॉपिक और मान आवश्यक हैं
|
|
1168
1281
|
TVOC: टीवीओसी
|
|
1282
|
+
'Two credentials for two different connections: the password is what the MQTT bridge logs in with on port 8883, and the token is what lets that Pi pull this organization''s logins over HTTPS, so the same people can log in there too. The token can be skipped - press Enter at its prompt - and added later by doing this again. Neither is asked for on the command line, so that neither ends up in the Pi''s shell history.': 'दो अलग-अलग कनेक्शनों के लिए दो क्रेडेंशियल: पासवर्ड वह है जिससे MQTT ब्रिज पोर्ट 8883 पर लॉग इन करता है, और टोकन वह है जो उस Pi को इस संगठन के लॉगिन HTTPS पर लाने देता है, ताकि वही लोग वहाँ भी लॉग इन कर सकें। टोकन को छोड़ा जा सकता है - उसके प्रॉम्प्ट पर Enter दबाएँ - और बाद में यही दोबारा करके जोड़ा जा सकता है। इनमें से कोई भी कमांड लाइन पर नहीं पूछा जाता, ताकि कोई भी Pi के शेल इतिहास में न पहुँचे।'
|
|
1169
1283
|
Unable to find node: नोड नहीं मिल सका
|
|
1170
1284
|
Unable to find project: प्रोजेक्ट नहीं मिल सका
|
|
1171
1285
|
Unauthorized: अनधिकृत
|
|
@@ -1173,9 +1287,12 @@ HI:
|
|
|
1173
1287
|
Unknown: अज्ञात
|
|
1174
1288
|
Unsupported board: असमर्थित बोर्ड
|
|
1175
1289
|
Unused: अप्रयुक्त
|
|
1290
|
+
Up: चालू
|
|
1176
1291
|
Updating the app only: केवल ऐप अपडेट हो रहा है
|
|
1177
1292
|
Updating the app only - the existing configuration will be preserved: केवल ऐप अपडेट हो रहा है - मौजूदा कॉन्फ़िगरेशन सुरक्षित रहेगी
|
|
1178
1293
|
Upload: अपलोड
|
|
1294
|
+
Upload finished - check the list below: अपलोड पूरा हुआ - नीचे दी गई सूची देखें
|
|
1295
|
+
Uploading: अपलोड हो रहा है
|
|
1179
1296
|
Username: उपयोगकर्ता नाम
|
|
1180
1297
|
Username or email: उपयोगकर्ता नाम या ईमेल
|
|
1181
1298
|
Value: मान
|
|
@@ -1186,24 +1303,30 @@ HI:
|
|
|
1186
1303
|
We will email you a code and a link to choose a new password.: हम आपको नया पासवर्ड चुनने के लिए एक कोड और एक लिंक ईमेल करेंगे।
|
|
1187
1304
|
When: कब
|
|
1188
1305
|
WiFi: वाई-फ़ाई
|
|
1306
|
+
Withdraw this enrolment secret?: क्या यह पंजीकरण सीक्रेट वापस लें?
|
|
1189
1307
|
Withdrawn: वापस लिया गया
|
|
1190
1308
|
Yes: हाँ
|
|
1191
1309
|
You do not have permission for this organization: इस संगठन के लिए आपके पास अनुमति नहीं है
|
|
1192
1310
|
ID:
|
|
1311
|
+
'"%s" already exists.': '"%s" sudah ada.'
|
|
1193
1312
|
"+ matches one level, # matches the rest. Look before deleting.": "+ cocok dengan satu tingkat, # dengan sisanya. Lihat dulu sebelum menghapus."
|
|
1194
1313
|
_nameAndFlag: Bahasa Indonesia 🇮🇩
|
|
1195
1314
|
_thisLanguage: Bahasa Indonesia
|
|
1196
1315
|
(Max 4MB, .bin only, typically frugal-iot.ino.bin or firmware.bin): (Maks 4MB, hanya .bin, biasanya frugal-iot.ino.bin atau firmware.bin)
|
|
1316
|
+
A bridge relays a Pi's readings to this server, so its nodes appear here too, while the Pi carries on recording and serving on its own whenever the link is down. "Bridge" is the broker's live view of the relay; "Last check-in" is when that Pi last collected this organization's logins, which it does over HTTP - so a Pi can be checking in while its bridge is down, and the two together say which half is broken.: Sebuah jembatan meneruskan pembacaan Pi ke server ini, sehingga node-nya muncul di sini juga, sementara Pi tetap merekam dan melayani sendiri setiap kali tautannya putus. « Jembatan » adalah tampilan langsung relai menurut broker; « Kontak terakhir » adalah saat Pi itu terakhir mengambil login organisasi ini, yang dilakukannya lewat HTTP - jadi sebuah Pi bisa berkontak sementara jembatannya mati, dan keduanya bersama-sama menunjukkan bagian mana yang rusak.
|
|
1197
1317
|
Action: Aksi
|
|
1198
1318
|
Action *: Aksi *
|
|
1199
1319
|
Add: Tambah
|
|
1320
|
+
Add a bridge: Tambah jembatan
|
|
1200
1321
|
Add another enrolment secret: Tambah rahasia pendaftaran lain
|
|
1201
1322
|
Added: Ditambahkan
|
|
1323
|
+
Adding it again issues a new broker password and a new replica token, and the ones that Pi is using now stop working. It will stay disconnected until you put the new ones into its configuration and restart its broker.: Menambahkannya lagi menerbitkan kata sandi broker dan token replika yang baru, dan yang sedang dipakai Pi itu berhenti bekerja. Pi akan tetap terputus sampai Anda memasukkan yang baru ke konfigurasinya dan memulai ulang brokernya.
|
|
1202
1324
|
Admin: Admin
|
|
1203
1325
|
Advanced: Lanjutan
|
|
1204
1326
|
All: Semua
|
|
1205
1327
|
Already have an account?: Sudah punya akun?
|
|
1206
1328
|
"And these two, if you are not building against the production server:": "Dan dua ini, jika Anda tidak membangun untuk server produksi:"
|
|
1329
|
+
Any node flashed with it that has not enrolled yet will be refused and will need reflashing. Nodes that have already enrolled are unaffected - they never present it again.: Node mana pun yang diflash dengannya dan belum terdaftar akan ditolak dan perlu diflash ulang. Node yang sudah terdaftar tidak terpengaruh - node itu tidak pernah menyajikannya lagi.
|
|
1207
1330
|
API: API
|
|
1208
1331
|
Approved: Disetujui
|
|
1209
1332
|
AQI: Indeks Kualitas Udara
|
|
@@ -1214,8 +1337,13 @@ ID:
|
|
|
1214
1337
|
Base URL: URL Dasar
|
|
1215
1338
|
Battery: Baterai
|
|
1216
1339
|
Board: Papan
|
|
1340
|
+
Bridge: Jembatan
|
|
1341
|
+
Bridged Pis: Pi yang dijembatani
|
|
1342
|
+
Bridges: Jembatan
|
|
1217
1343
|
Brightness: Kecerahan
|
|
1218
1344
|
Broker: Broker
|
|
1345
|
+
Broker account: Akun broker
|
|
1346
|
+
Broker password: Kata sandi broker
|
|
1219
1347
|
Built in LED: LED bawaan
|
|
1220
1348
|
buttons: tombol
|
|
1221
1349
|
Choose a project to see its devices: Pilih proyek untuk melihat perangkatnya
|
|
@@ -1231,15 +1359,20 @@ ID:
|
|
|
1231
1359
|
connecting: menghubungkan
|
|
1232
1360
|
Control: Kontrol
|
|
1233
1361
|
Cookie Name: Nama Cookie
|
|
1362
|
+
Copy these now - they are not shown again: Salin sekarang - ini tidak akan ditampilkan lagi
|
|
1234
1363
|
Could not read the board - assuming it is already provisioned: Tidak dapat membaca papan - dianggap sudah diprovisioning
|
|
1235
1364
|
Create an account: Buat akun
|
|
1236
1365
|
Dashboard: Dasbor
|
|
1237
1366
|
Data: Data
|
|
1238
1367
|
Delete these: Hapus ini
|
|
1368
|
+
Delete this firmware: Hapus firmware ini
|
|
1239
1369
|
Denied: Ditolak
|
|
1370
|
+
Deny %s?: Tolak %s?
|
|
1240
1371
|
Description: Deskripsi
|
|
1241
1372
|
Device: Perangkat
|
|
1242
1373
|
Display carousel: Karosel tampilan
|
|
1374
|
+
DOWN: MATI
|
|
1375
|
+
Download this firmware: Unduh firmware ini
|
|
1243
1376
|
Done: Selesai
|
|
1244
1377
|
ds18b20: ds18b20
|
|
1245
1378
|
e.g. LiteFarm: misalnya LiteFarm
|
|
@@ -1269,6 +1402,7 @@ ID:
|
|
|
1269
1402
|
Flashing needs the Web Serial API - use Chrome, Edge or Opera on a desktop computer: Flashing memerlukan Web Serial API - gunakan Chrome, Edge atau Opera di komputer desktop
|
|
1270
1403
|
for node: untuk node
|
|
1271
1404
|
Forget: Lupakan
|
|
1405
|
+
Forget %s?: Lupakan %s?
|
|
1272
1406
|
Forget this node, so it is issued a new credential: Lupakan node ini, agar diberi kredensial baru
|
|
1273
1407
|
Forgot password?: Lupa kata sandi?
|
|
1274
1408
|
From: Dari
|
|
@@ -1276,6 +1410,8 @@ ID:
|
|
|
1276
1410
|
Frugal-IoT Username *: Nama Pengguna Frugal-IoT *
|
|
1277
1411
|
Full provision - all configuration on the board will be erased: Provisioning penuh - semua konfigurasi pada papan akan dihapus
|
|
1278
1412
|
Gas Resistance: Resistansi gas
|
|
1413
|
+
Give the Pi a short name - it becomes its broker account and cannot be changed later without reconfiguring that Pi. Lower-case letters, digits and hyphens.: Beri Pi nama pendek - nama itu menjadi akun brokernya dan tidak dapat diubah nanti tanpa mengonfigurasi ulang Pi tersebut. Huruf kecil, angka, dan tanda hubung.
|
|
1414
|
+
Give the Pi a short name first: Beri Pi nama pendek terlebih dahulu
|
|
1279
1415
|
Graph: Grafik
|
|
1280
1416
|
Greater Than: Lebih dari
|
|
1281
1417
|
Has its own broker credential. Click to deny it.: Memiliki kredensial broker sendiri. Klik untuk menolaknya.
|
|
@@ -1295,9 +1431,12 @@ ID:
|
|
|
1295
1431
|
Incorrect username or password: Nama pengguna atau kata sandi salah
|
|
1296
1432
|
Info: Info
|
|
1297
1433
|
Input: Masukan
|
|
1434
|
+
It will be issued a new broker credential the next time it asks. A node that is running will be offline for a minute or two while it notices; a node whose filesystem was erased needs this before it can rejoin at all.: Node itu akan diberi kredensial broker baru saat berikutnya meminta. Node yang sedang berjalan akan offline satu dua menit sampai menyadarinya; node yang sistem berkasnya terhapus memerlukan ini agar bisa bergabung kembali.
|
|
1435
|
+
Its broker account is deleted, so it stops being able to publish or subscribe, and it cannot enrol again until you clear this. Use it for a node sending bad readings.: Akun brokernya dihapus, sehingga ia berhenti dapat menerbitkan atau berlangganan, dan tidak bisa mendaftar lagi sampai Anda membatalkan ini. Gunakan untuk node yang mengirim pembacaan yang salah.
|
|
1298
1436
|
Its next request will be accepted. Click to deny it.: Permintaan berikutnya akan diterima. Klik untuk menolaknya.
|
|
1299
1437
|
Key: Kunci
|
|
1300
1438
|
Last asked: Terakhir meminta
|
|
1439
|
+
Last check-in: Kontak terakhir
|
|
1301
1440
|
Last Seen: Terakhir Dilihat
|
|
1302
1441
|
Last seen: Terakhir terlihat
|
|
1303
1442
|
LED: LED
|
|
@@ -1328,9 +1467,11 @@ ID:
|
|
|
1328
1467
|
No organization: Tidak ada organisasi
|
|
1329
1468
|
No organization selected: Tidak ada organisasi yang dipilih
|
|
1330
1469
|
No OTA files uploaded yet.: Belum ada berkas OTA yang diunggah.
|
|
1470
|
+
No Pi bridges to this server for this organization. A bridge relays a Pi's readings here while the Pi carries on working on its own - see INSTALLATION.md step 11.: Tidak ada jembatan Pi ke server ini untuk organisasi ini. Sebuah jembatan meneruskan pembacaan Pi ke sini sementara Pi tetap bekerja sendiri - lihat INSTALLATION.md langkah 11.
|
|
1331
1471
|
No platforms registered yet.: Belum ada platform yang terdaftar.
|
|
1332
1472
|
No projects added for this organization yet.: Belum ada proyek yang ditambahkan untuk organisasi ini.
|
|
1333
1473
|
No projects to display until organization selected: Tidak ada proyek untuk ditampilkan sampai organisasi dipilih
|
|
1474
|
+
No state received from the broker yet: Belum ada status yang diterima dari broker
|
|
1334
1475
|
Nobody added for this organization yet.: Belum ada yang ditambahkan untuk organisasi ini.
|
|
1335
1476
|
Node: Node
|
|
1336
1477
|
Node Actions: Aksi Node
|
|
@@ -1391,12 +1532,14 @@ ID:
|
|
|
1391
1532
|
Registration failed: Pendaftaran gagal
|
|
1392
1533
|
Registration successful - please login: Pendaftaran berhasil - silakan masuk
|
|
1393
1534
|
Relay: Relay
|
|
1535
|
+
Replica token: Token replika
|
|
1394
1536
|
Reporting every: Melapor setiap
|
|
1395
1537
|
Reset code: Kode reset
|
|
1396
1538
|
Reset password: Setel ulang kata sandi
|
|
1397
1539
|
Retain: Simpan
|
|
1398
1540
|
Retained: Tersimpan
|
|
1399
1541
|
Retained messages: Pesan tersimpan
|
|
1542
|
+
Run this on the Pi, in the directory the server is installed in. Replace the placeholder with this server's fully-qualified name - the one on its certificate, which you can check by opening https:// that name in a browser. It will then ask for the broker password and for the replica token, in that order, so have both of the values below to hand.: Jalankan ini di Pi, di direktori tempat server dipasang. Ganti placeholder dengan nama lengkap server ini - nama yang ada pada sertifikatnya, yang bisa Anda periksa dengan membuka https:// nama itu di peramban. Setelah itu akan diminta kata sandi broker lalu token replika, dalam urutan tersebut, jadi siapkan kedua nilai di bawah ini.
|
|
1400
1543
|
Schema: Skema
|
|
1401
1544
|
Select: Pilih
|
|
1402
1545
|
Select a farm above to see its nodes.: Pilih farm di atas untuk melihat node-nodenya.
|
|
@@ -1417,6 +1560,7 @@ ID:
|
|
|
1417
1560
|
SHT30: SHT30
|
|
1418
1561
|
Sign In: Masuk
|
|
1419
1562
|
Sign in: Masuk
|
|
1563
|
+
Site: Situs
|
|
1420
1564
|
Soil: Tanah
|
|
1421
1565
|
Soil Moisture: Kelembapan Tanah
|
|
1422
1566
|
Soil Temperature: Suhu Tanah
|
|
@@ -1433,6 +1577,8 @@ ID:
|
|
|
1433
1577
|
Temperature: Suhu
|
|
1434
1578
|
temperature: suhu
|
|
1435
1579
|
That code is not valid or has expired: Kode itu tidak valid atau sudah kedaluwarsa
|
|
1580
|
+
The broker reports this bridge connected: Broker melaporkan jembatan ini terhubung
|
|
1581
|
+
The broker reports this bridge not connected: Broker melaporkan jembatan ini tidak terhubung
|
|
1436
1582
|
This field has no invocation URL (forms[0].href) in its schema: Bidang ini tidak memiliki URL pemanggilan (forms[0].href) dalam skemanya
|
|
1437
1583
|
This node has no actions in its schema.: Node ini tidak memiliki aksi dalam skemanya.
|
|
1438
1584
|
This node has no actions or writable properties in its schema.: Node ini tidak memiliki aksi atau properti yang dapat ditulis dalam skemanya.
|
|
@@ -1443,6 +1589,7 @@ ID:
|
|
|
1443
1589
|
Topic: Topik
|
|
1444
1590
|
Topic and Value are required: Topik dan Nilai wajib diisi
|
|
1445
1591
|
TVOC: TVOC
|
|
1592
|
+
'Two credentials for two different connections: the password is what the MQTT bridge logs in with on port 8883, and the token is what lets that Pi pull this organization''s logins over HTTPS, so the same people can log in there too. The token can be skipped - press Enter at its prompt - and added later by doing this again. Neither is asked for on the command line, so that neither ends up in the Pi''s shell history.': 'Dua kredensial untuk dua koneksi berbeda: kata sandi adalah yang dipakai jembatan MQTT untuk masuk di port 8883, dan token adalah yang memungkinkan Pi itu menarik login organisasi ini lewat HTTPS, sehingga orang yang sama bisa masuk di sana juga. Token boleh dilewati - tekan Enter pada promptnya - dan ditambahkan nanti dengan mengulangi langkah ini. Keduanya tidak diminta di baris perintah, agar tidak ada yang tersimpan di riwayat shell Pi.'
|
|
1446
1593
|
Unable to find node: Tidak dapat menemukan node
|
|
1447
1594
|
Unable to find project: Tidak dapat menemukan proyek
|
|
1448
1595
|
Unauthorized: Tidak sah
|
|
@@ -1450,9 +1597,12 @@ ID:
|
|
|
1450
1597
|
Unknown: Tidak diketahui
|
|
1451
1598
|
Unsupported board: Papan tidak didukung
|
|
1452
1599
|
Unused: Tidak digunakan
|
|
1600
|
+
Up: Aktif
|
|
1453
1601
|
Updating the app only: Hanya memperbarui aplikasi
|
|
1454
1602
|
Updating the app only - the existing configuration will be preserved: Hanya memperbarui aplikasi - konfigurasi yang ada akan dipertahankan
|
|
1455
1603
|
Upload: Unggah
|
|
1604
|
+
Upload finished - check the list below: Unggahan selesai - periksa daftar di bawah
|
|
1605
|
+
Uploading: Mengunggah
|
|
1456
1606
|
Username: Nama Pengguna
|
|
1457
1607
|
Username or email: Nama pengguna atau email
|
|
1458
1608
|
Value: Nilai
|
|
@@ -1463,6 +1613,7 @@ ID:
|
|
|
1463
1613
|
We will email you a code and a link to choose a new password.: Kami akan mengirim kode dan tautan lewat email untuk memilih kata sandi baru.
|
|
1464
1614
|
When: Ketika
|
|
1465
1615
|
WiFi: WiFi
|
|
1616
|
+
Withdraw this enrolment secret?: Cabut rahasia pendaftaran ini?
|
|
1466
1617
|
|
|
1467
1618
|
Withdrawn: Dicabut
|
|
1468
1619
|
Yes: Ya
|
|
@@ -1507,6 +1658,11 @@ function getStringFrom(langs, tag) {
|
|
|
1507
1658
|
function getString(tag) {
|
|
1508
1659
|
return getStringFrom(languages, tag) || languages.EN[tag] || tag;
|
|
1509
1660
|
}
|
|
1661
|
+
// A name dropped into translated prose. The placeholder rather than concatenation, because where
|
|
1662
|
+
// the name falls in the sentence is the translation's decision, not this caller's.
|
|
1663
|
+
function getStringWith(tag, value) {
|
|
1664
|
+
return getString(tag).replace('%s', value);
|
|
1665
|
+
}
|
|
1510
1666
|
|
|
1511
1667
|
// server_config is assigned from /config.json in normal use; funnelled through here so a mock or
|
|
1512
1668
|
// test can supply the same shape without a server.
|
|
@@ -2061,10 +2217,13 @@ class MqttTopic {
|
|
|
2061
2217
|
type: this.type === 'exponential' ? 'logarithmic' : 'linear',
|
|
2062
2218
|
display: this.type !== 'bool',
|
|
2063
2219
|
title: {
|
|
2220
|
+
display: true, // Chart.js hides a scale title unless asked - without this the axis has no label at all
|
|
2064
2221
|
// noinspection JSUnresolvedReference
|
|
2065
2222
|
color: this.color, // The family colour; the per-line variation happens in MqttGraph.addDataset
|
|
2223
|
+
font: { size: 20 },
|
|
2224
|
+
// The unit is what tells two axes apart when both read as a number - "Temperature (°C)"
|
|
2066
2225
|
// noinspection JSUnresolvedReference
|
|
2067
|
-
text: getString(this.name.replace(/[0-9]+$/,'')),
|
|
2226
|
+
text: getString(this.name.replace(/[0-9]+$/,'')) + (unitSymbol(this.units) ? ` (${unitSymbol(this.units)})` : ''),
|
|
2068
2227
|
},
|
|
2069
2228
|
// 0 is not valid on a logarithmic axis, so fall back to auto-scaling (undefined) rather than 0
|
|
2070
2229
|
// noinspection JSUnresolvedReference
|
|
@@ -2829,9 +2988,7 @@ class MqttClient extends HTMLElementExtended {
|
|
|
2829
2988
|
mqtt_subscriptions.forEach((s) => {
|
|
2830
2989
|
if (!mqtt_client._resubscribeTopics[s.topic]) { // Not really public interface but cleaner console as not needed
|
|
2831
2990
|
console.log("Now connected, subscribing to", s.topic);
|
|
2832
|
-
mqtt_client.subscribe(s.topic, (err) =>
|
|
2833
|
-
if (err) console.error(err);
|
|
2834
|
-
});
|
|
2991
|
+
mqtt_client.subscribe(s.topic, (err, granted) => subscribeResult(s.topic, err, granted));
|
|
2835
2992
|
}
|
|
2836
2993
|
})
|
|
2837
2994
|
} else {
|
|
@@ -3162,6 +3319,7 @@ export {
|
|
|
3162
3319
|
configSet,
|
|
3163
3320
|
el,
|
|
3164
3321
|
getString,
|
|
3322
|
+
getStringWith,
|
|
3165
3323
|
getStringFrom,
|
|
3166
3324
|
isEditableTarget,
|
|
3167
3325
|
leafAttribute,
|