iobroker.parcel 0.0.2
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/LICENSE +21 -0
- package/README.md +140 -0
- package/admin/index_m.html +157 -0
- package/admin/parcel.png +0 -0
- package/admin/style.css +32 -0
- package/admin/words.js +53 -0
- package/io-package.json +270 -0
- package/lib/adapter-config.d.ts +19 -0
- package/lib/json2iob.js +290 -0
- package/lib/tools.js +100 -0
- package/main.js +1210 -0
- package/package.json +77 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2022 TA2k <tombox2020@gmail.com>
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+

|
|
2
|
+
|
|
3
|
+
# ioBroker.parcel
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/iobroker.parcel)
|
|
6
|
+
[](https://www.npmjs.com/package/iobroker.parcel)
|
|
7
|
+

|
|
8
|
+

|
|
9
|
+
[](https://david-dm.org/TA2k/iobroker.parcel)
|
|
10
|
+
|
|
11
|
+
[](https://nodei.co/npm/iobroker.parcel/)
|
|
12
|
+
|
|
13
|
+
**Tests:** 
|
|
14
|
+
|
|
15
|
+
## parcel adapter for ioBroker
|
|
16
|
+
|
|
17
|
+
Parcel tracking
|
|
18
|
+
|
|
19
|
+
## Loginablauf
|
|
20
|
+
|
|
21
|
+
DHL:
|
|
22
|
+
|
|
23
|
+
* DHL App Login eingeben
|
|
24
|
+
* SMS/EMail Code erhalten
|
|
25
|
+
* In die Instanzeinstellungen eingeben und speichern
|
|
26
|
+
|
|
27
|
+
## Amazon Vorbedingungen
|
|
28
|
+
|
|
29
|
+
Es müssen auf Linuxsysteme Pakete installiert werden.
|
|
30
|
+
Nach jeder Variante den Adapter neustarten um zu sehen ob der Login funktioniert.
|
|
31
|
+
|
|
32
|
+
Variante #1 minimal
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
sudo apt-get install -y libnss3 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm-dev libxkbcommon-dev libxcomposite1 libxdamage1 libxfixes3 libxrandr2 libgbm-dev libpango-1.0-0
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Variante #2 falls Variante #1 nicht funktioniert
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
sudo apt-get install -yq \
|
|
42
|
+
gconf-service libasound2 libatk1.0-0 libatk-bridge2.0-0 libc6 libcairo2 libcups2 libdbus-1-3 \
|
|
43
|
+
libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 \
|
|
44
|
+
libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 \
|
|
45
|
+
libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates \
|
|
46
|
+
fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Variante #3 **Nur Falls Variante #2 nicht funktioniert**
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
sudo apt-get install -y chromium-browser
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Skripte
|
|
56
|
+
|
|
57
|
+
### Telegram Benachrichtigung bei Statusänderung via Javascript Skript:
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
const alreadySentMessages = {}
|
|
61
|
+
on({ id: "parcel.0.allProviderObjects", change: "ne" }, function (obj) {
|
|
62
|
+
const sendungen = JSON.parse(obj.state.val)
|
|
63
|
+
const ids = Object.keys(sendungen)
|
|
64
|
+
for (const id of ids) {
|
|
65
|
+
if (alreadySentMessages[id] === sendungen[id].status) {
|
|
66
|
+
return
|
|
67
|
+
}
|
|
68
|
+
sendTo('telegram.0', sendungen[id].name + '\n' + sendungen[id].status);
|
|
69
|
+
alreadySentMessages[id] = sendungen[id].status
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### DHL Briefverfolgung Telegram versenden via Javascript Skript:
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
const alreadySent = {}
|
|
78
|
+
const fs = require('fs')
|
|
79
|
+
on({id:/^parcel\.0\.dhl\.briefe.*image$/, change: "ne"}, async function(obj){
|
|
80
|
+
|
|
81
|
+
const parentId = obj.id.split(".")
|
|
82
|
+
parentId.splice(-1)
|
|
83
|
+
parentId.push("image_url")
|
|
84
|
+
const urlState = await getStateAsync(parentId.join("."))
|
|
85
|
+
|
|
86
|
+
if (alreadySent[urlState.val]) {
|
|
87
|
+
return
|
|
88
|
+
}
|
|
89
|
+
const base64Data = obj.state.val.split("base64,")[1]
|
|
90
|
+
fs.writeFile("/tmp/snapshot.jpg", base64Data, 'base64', function(err) {
|
|
91
|
+
if (err) {
|
|
92
|
+
console.error(err);
|
|
93
|
+
} else {
|
|
94
|
+
sendTo('telegram.0', 'Briefankündigung');
|
|
95
|
+
sendTo('telegram.0', '/tmp/snapshot.jpg');
|
|
96
|
+
alreadySent[urlState.val] = true
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### DHL Briefverfolgung in der Vis anzeigen.
|
|
105
|
+
|
|
106
|
+
Den Datenpunkt image ein "String img src" element als Object ID zuordnen
|
|
107
|
+
|
|
108
|
+
## Diskussion und Fragen
|
|
109
|
+
|
|
110
|
+
<https://forum.iobroker.net/topic/51795/test-adapter-parcel-paketverfolgung-dhl-v0-0-1>
|
|
111
|
+
|
|
112
|
+
## Changelog
|
|
113
|
+
|
|
114
|
+
### 0.0.1
|
|
115
|
+
|
|
116
|
+
* (TA2k) initial release
|
|
117
|
+
|
|
118
|
+
## License
|
|
119
|
+
|
|
120
|
+
MIT License
|
|
121
|
+
|
|
122
|
+
Copyright (c) 2022 TA2k <tombox2020@gmail.com>
|
|
123
|
+
|
|
124
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
125
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
126
|
+
in the Software without restriction, including without limitation the rights
|
|
127
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
128
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
129
|
+
furnished to do so, subject to the following conditions:
|
|
130
|
+
|
|
131
|
+
The above copyright notice and this permission notice shall be included in all
|
|
132
|
+
copies or substantial portions of the Software.
|
|
133
|
+
|
|
134
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
135
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
136
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
137
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
138
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
139
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
140
|
+
SOFTWARE.
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
<html>
|
|
2
|
+
<head>
|
|
3
|
+
<!-- Load ioBroker scripts and styles-->
|
|
4
|
+
<link rel="stylesheet" type="text/css" href="../../css/adapter.css" />
|
|
5
|
+
<link rel="stylesheet" type="text/css" href="../../lib/css/materialize.css" />
|
|
6
|
+
|
|
7
|
+
<script type="text/javascript" src="../../lib/js/jquery-3.2.1.min.js"></script>
|
|
8
|
+
<script type="text/javascript" src="../../socket.io/socket.io.js"></script>
|
|
9
|
+
|
|
10
|
+
<script type="text/javascript" src="../../js/translate.js"></script>
|
|
11
|
+
<script type="text/javascript" src="../../lib/js/materialize.js"></script>
|
|
12
|
+
<script type="text/javascript" src="../../js/adapter-settings.js"></script>
|
|
13
|
+
|
|
14
|
+
<!-- Load our own files -->
|
|
15
|
+
<link rel="stylesheet" type="text/css" href="style.css" />
|
|
16
|
+
<script type="text/javascript" src="words.js"></script>
|
|
17
|
+
|
|
18
|
+
<script type="text/javascript">
|
|
19
|
+
// This will be called by the admin adapter when the settings page loads
|
|
20
|
+
function load(settings, onChange) {
|
|
21
|
+
// example: select elements with id=key and class=value and insert value
|
|
22
|
+
if (!settings) return;
|
|
23
|
+
$(".value").each(function () {
|
|
24
|
+
var $key = $(this);
|
|
25
|
+
var id = $key.attr("id");
|
|
26
|
+
if ($key.attr("type") === "checkbox") {
|
|
27
|
+
// do not call onChange direct, because onChange could expect some arguments
|
|
28
|
+
$key.prop("checked", settings[id]).on("change", () => onChange());
|
|
29
|
+
} else {
|
|
30
|
+
// do not call onChange direct, because onChange could expect some arguments
|
|
31
|
+
$key.val(settings[id])
|
|
32
|
+
.on("change", () => onChange())
|
|
33
|
+
.on("keyup", () => onChange());
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
onChange(false);
|
|
37
|
+
// reinitialize all the Materialize labels on the page if you are dynamically adding inputs:
|
|
38
|
+
if (M) M.updateTextFields();
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// This will be called by the admin adapter when the user presses the save button
|
|
42
|
+
function save(callback) {
|
|
43
|
+
// example: select elements with class=value and build settings object
|
|
44
|
+
var obj = {};
|
|
45
|
+
$(".value").each(function () {
|
|
46
|
+
var $this = $(this);
|
|
47
|
+
if ($this.attr("type") === "checkbox") {
|
|
48
|
+
obj[$this.attr("id")] = $this.prop("checked");
|
|
49
|
+
} else if ($this.attr("type") === "number") {
|
|
50
|
+
obj[$this.attr("id")] = parseFloat($this.val());
|
|
51
|
+
} else {
|
|
52
|
+
obj[$this.attr("id")] = $this.val();
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
callback(obj);
|
|
56
|
+
}
|
|
57
|
+
</script>
|
|
58
|
+
</head>
|
|
59
|
+
|
|
60
|
+
<body>
|
|
61
|
+
<div class="m adapter-container">
|
|
62
|
+
<div class="row">
|
|
63
|
+
<div class="col s12 m4 l2">
|
|
64
|
+
<img src="parcel.png" class="logo" />
|
|
65
|
+
</div>
|
|
66
|
+
</div>
|
|
67
|
+
|
|
68
|
+
<!-- Put your content here -->
|
|
69
|
+
<div class="row">
|
|
70
|
+
<div class="col">DHL</div>
|
|
71
|
+
</div>
|
|
72
|
+
<div class="row">
|
|
73
|
+
<div class="col s6 input-field">
|
|
74
|
+
<input type="text" class="value" id="dhlusername" />
|
|
75
|
+
<label for="dhlusername" class="translate">App Email</label>
|
|
76
|
+
</div>
|
|
77
|
+
</div>
|
|
78
|
+
<div class="row">
|
|
79
|
+
<div class="col s6 input-field">
|
|
80
|
+
<input type="password" class="value" id="dhlpassword" />
|
|
81
|
+
<label for="dhlpassword" class="translate">App Password</label>
|
|
82
|
+
</div>
|
|
83
|
+
</div>
|
|
84
|
+
<div class="row">
|
|
85
|
+
<div class="col s6 input-field">
|
|
86
|
+
<input type="text" class="value" id="dhlMfa" />
|
|
87
|
+
<label for="dhlMfa" class="translate">SMS/Mail Pin nach erstem Start</label>
|
|
88
|
+
</div>
|
|
89
|
+
</div>
|
|
90
|
+
<div class="row">
|
|
91
|
+
<div class="col">Amazon (erhöhter RAM Verbrauch)</div>
|
|
92
|
+
<a href="https://github.com/TA2k/ioBroker.parcel/blob/master/README.md#amazon-vorbedingungen" target="_blank">Linux Zusatzpakete installieren</a>
|
|
93
|
+
</div>
|
|
94
|
+
<div class="row">
|
|
95
|
+
<div class="col s6 input-field">
|
|
96
|
+
<input type="text" class="value" id="amzusername" />
|
|
97
|
+
<label for="amzusername" class="translate">App Email</label>
|
|
98
|
+
</div>
|
|
99
|
+
</div>
|
|
100
|
+
<div class="row">
|
|
101
|
+
<div class="col s6 input-field">
|
|
102
|
+
<input type="password" class="value" id="amzpassword" />
|
|
103
|
+
<label for="amzpassword" class="translate">App Password</label>
|
|
104
|
+
</div>
|
|
105
|
+
</div>
|
|
106
|
+
<div class="row">
|
|
107
|
+
<div class="col">DPD</div>
|
|
108
|
+
</div>
|
|
109
|
+
<div class="row">
|
|
110
|
+
<div class="col s6 input-field">
|
|
111
|
+
<input type="text" class="value" id="dpdusername" />
|
|
112
|
+
<label for="dpdusername" class="translate">App Email</label>
|
|
113
|
+
</div>
|
|
114
|
+
</div>
|
|
115
|
+
<div class="row">
|
|
116
|
+
<div class="col s6 input-field">
|
|
117
|
+
<input type="password" class="value" id="dpdpassword" />
|
|
118
|
+
<label for="dpdpassword" class="translate">App Password</label>
|
|
119
|
+
</div>
|
|
120
|
+
</div>
|
|
121
|
+
<div class="row">
|
|
122
|
+
<div class="col">17Track Normal User</div>
|
|
123
|
+
</div>
|
|
124
|
+
<div class="row">
|
|
125
|
+
<div class="col s6 input-field">
|
|
126
|
+
<input type="text" class="value" id="t17username" />
|
|
127
|
+
<label for="t17username" class="translate">App Email</label>
|
|
128
|
+
</div>
|
|
129
|
+
</div>
|
|
130
|
+
<div class="row">
|
|
131
|
+
<div class="col s6 input-field">
|
|
132
|
+
<input type="password" class="value" id="t17password" />
|
|
133
|
+
<label for="t17password" class="translate">App Password</label>
|
|
134
|
+
</div>
|
|
135
|
+
</div>
|
|
136
|
+
<div class="row">
|
|
137
|
+
<div class="col">
|
|
138
|
+
<div>17Track</div>
|
|
139
|
+
<a href="https://api.17track.net/en/admin/settings" target="_blank">Register HERE to receive a API Key</a>
|
|
140
|
+
</div>
|
|
141
|
+
</div>
|
|
142
|
+
<div class="row">
|
|
143
|
+
<div class="col s6 input-field">
|
|
144
|
+
<input type="text" class="value" id="17trackKey" />
|
|
145
|
+
<label for="17trackKey" class="translate">17Track API Key</label>
|
|
146
|
+
</div>
|
|
147
|
+
</div>
|
|
148
|
+
|
|
149
|
+
<div class="row">
|
|
150
|
+
<div class="col s2 input-field">
|
|
151
|
+
<input type="number" class="value" id="interval" />
|
|
152
|
+
<label for="interval" class="translate">Update interval in minutes</label>
|
|
153
|
+
</div>
|
|
154
|
+
</div>
|
|
155
|
+
</div>
|
|
156
|
+
</body>
|
|
157
|
+
</html>
|
package/admin/parcel.png
ADDED
|
Binary file
|
package/admin/style.css
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/* You can delete those if you want. I just found them very helpful */
|
|
2
|
+
* {
|
|
3
|
+
box-sizing: border-box
|
|
4
|
+
}
|
|
5
|
+
.m {
|
|
6
|
+
/* Don't cut off dropdowns! */
|
|
7
|
+
overflow: initial;
|
|
8
|
+
}
|
|
9
|
+
.m.adapter-container,
|
|
10
|
+
.m.adapter-container > div.App {
|
|
11
|
+
/* Fix layout/scrolling issues with tabs */
|
|
12
|
+
height: 100%;
|
|
13
|
+
width: 100%;
|
|
14
|
+
position: relative;
|
|
15
|
+
}
|
|
16
|
+
.m .select-wrapper + label {
|
|
17
|
+
/* The positioning for dropdown labels is messed up */
|
|
18
|
+
transform: none !important;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
label > i[title] {
|
|
22
|
+
/* Display the help cursor for the tooltip icons and fix their positioning */
|
|
23
|
+
cursor: help;
|
|
24
|
+
margin-left: 0.25em;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.dropdown-content {
|
|
28
|
+
/* Don't wrap text in dropdowns */
|
|
29
|
+
white-space: nowrap;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/* Add your styles here */
|
package/admin/words.js
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/*global systemDictionary:true */
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
systemDictionary = {
|
|
5
|
+
"parcel adapter settings": {
|
|
6
|
+
en: "Adapter settings for parcel",
|
|
7
|
+
de: "Adaptereinstellungen für parcel",
|
|
8
|
+
ru: "Настройки адаптера для parcel",
|
|
9
|
+
pt: "Configurações do adaptador para parcel",
|
|
10
|
+
nl: "Adapterinstellingen voor parcel",
|
|
11
|
+
fr: "Paramètres d'adaptateur pour parcel",
|
|
12
|
+
it: "Impostazioni dell'adattatore per parcel",
|
|
13
|
+
es: "Ajustes del adaptador para parcel",
|
|
14
|
+
pl: "Ustawienia adaptera dla parcel",
|
|
15
|
+
"zh-cn": "parcel的适配器设置",
|
|
16
|
+
},
|
|
17
|
+
"App Email": {
|
|
18
|
+
en: "App Email",
|
|
19
|
+
de: "App-E-Mail",
|
|
20
|
+
ru: "Электронная почта приложения",
|
|
21
|
+
pt: "Email do aplicativo",
|
|
22
|
+
nl: "App-e-mail",
|
|
23
|
+
fr: "Courriel de l'application",
|
|
24
|
+
it: "E-mail dell'app",
|
|
25
|
+
es: "Correo electrónico de la aplicación",
|
|
26
|
+
pl: "E-mail aplikacji",
|
|
27
|
+
"zh-cn": "应用电子邮件",
|
|
28
|
+
},
|
|
29
|
+
"App Password": {
|
|
30
|
+
en: "App Password",
|
|
31
|
+
de: "App-Passwort",
|
|
32
|
+
ru: "Пароль приложения",
|
|
33
|
+
pt: "Senha de app",
|
|
34
|
+
nl: "App-wachtwoord",
|
|
35
|
+
fr: "Mot de passe de l'application",
|
|
36
|
+
it: "Password dell'app",
|
|
37
|
+
es: "Contraseña de la aplicación",
|
|
38
|
+
pl: "Hasło do aplikacji",
|
|
39
|
+
"zh-cn": "应用密码",
|
|
40
|
+
},
|
|
41
|
+
"Update interval (in minutes)": {
|
|
42
|
+
en: "Update interval (in minutes)",
|
|
43
|
+
de: "Aktualisierungsintervall (in Minuten)",
|
|
44
|
+
ru: "Интервал обновления (в минутах)",
|
|
45
|
+
pt: "Intervalo de atualização (em minutos)",
|
|
46
|
+
nl: "Update-interval (in minuten)",
|
|
47
|
+
fr: "Intervalle de mise à jour (en minutes)",
|
|
48
|
+
it: "Intervallo di aggiornamento (in minuti)",
|
|
49
|
+
es: "Intervalo de actualización (en minutos)",
|
|
50
|
+
pl: "Interwał aktualizacji (w minutach)",
|
|
51
|
+
"zh-cn": "更新间隔(分钟)",
|
|
52
|
+
},
|
|
53
|
+
};
|
package/io-package.json
ADDED
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
{
|
|
2
|
+
"common": {
|
|
3
|
+
"name": "parcel",
|
|
4
|
+
"version": "0.0.2",
|
|
5
|
+
"news": {
|
|
6
|
+
"0.0.2": {
|
|
7
|
+
"en": "initial release",
|
|
8
|
+
"de": "Erstveröffentlichung",
|
|
9
|
+
"ru": "Начальная версия",
|
|
10
|
+
"pt": "lançamento inicial",
|
|
11
|
+
"nl": "Eerste uitgave",
|
|
12
|
+
"fr": "Première version",
|
|
13
|
+
"it": "Versione iniziale",
|
|
14
|
+
"es": "Versión inicial",
|
|
15
|
+
"pl": "Pierwsze wydanie",
|
|
16
|
+
"zh-cn": "首次出版"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"title": "Parcel tracking",
|
|
20
|
+
"titleLang": {
|
|
21
|
+
"en": "Parcel tracking",
|
|
22
|
+
"de": "Paket Sendungsverfolgung",
|
|
23
|
+
"ru": "Отслеживание посылок",
|
|
24
|
+
"pt": "Rastreamento de encomendas",
|
|
25
|
+
"nl": "Pakket volgen",
|
|
26
|
+
"fr": "Suivi colis",
|
|
27
|
+
"it": "Tracciamento del pacco",
|
|
28
|
+
"es": "Seguimiento de paquetes",
|
|
29
|
+
"pl": "Śledzenie przesyłek",
|
|
30
|
+
"zh-cn": "包裹追踪"
|
|
31
|
+
},
|
|
32
|
+
"desc": {
|
|
33
|
+
"en": "Parcel tracking",
|
|
34
|
+
"de": "Paket Sendungsverfolgung",
|
|
35
|
+
"ru": "Отслеживание посылок",
|
|
36
|
+
"pt": "Rastreamento de encomendas",
|
|
37
|
+
"nl": "Pakket volgen",
|
|
38
|
+
"fr": "Suivi colis",
|
|
39
|
+
"it": "Tracciamento del pacco",
|
|
40
|
+
"es": "Seguimiento de paquetes",
|
|
41
|
+
"pl": "Śledzenie przesyłek",
|
|
42
|
+
"zh-cn": "包裹追踪"
|
|
43
|
+
},
|
|
44
|
+
"authors": [
|
|
45
|
+
"TA2k <tombox2020@gmail.com>"
|
|
46
|
+
],
|
|
47
|
+
"keywords": [
|
|
48
|
+
"parcel",
|
|
49
|
+
"tracking",
|
|
50
|
+
"dhl",
|
|
51
|
+
"paket",
|
|
52
|
+
"17Track",
|
|
53
|
+
"Amazon",
|
|
54
|
+
"dpd",
|
|
55
|
+
"briefe"
|
|
56
|
+
],
|
|
57
|
+
"license": "MIT",
|
|
58
|
+
"platform": "Javascript/Node.js",
|
|
59
|
+
"main": "main.js",
|
|
60
|
+
"icon": "parcel.png",
|
|
61
|
+
"enabled": true,
|
|
62
|
+
"extIcon": "https://raw.githubusercontent.com/TA2k/ioBroker.parcel/master/admin/parcel.png",
|
|
63
|
+
"readme": "https://github.com/TA2k/ioBroker.parcel/blob/master/README.md",
|
|
64
|
+
"loglevel": "info",
|
|
65
|
+
"mode": "daemon",
|
|
66
|
+
"type": "misc-data",
|
|
67
|
+
"compact": true,
|
|
68
|
+
"connectionType": "cloud",
|
|
69
|
+
"dataSource": "poll",
|
|
70
|
+
"materialize": true,
|
|
71
|
+
"plugins": {
|
|
72
|
+
"sentry": {
|
|
73
|
+
"dsn": ""
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
"dependencies": [
|
|
77
|
+
{
|
|
78
|
+
"js-controller": ">=3.2.0"
|
|
79
|
+
}
|
|
80
|
+
],
|
|
81
|
+
"globalDependencies": [
|
|
82
|
+
{
|
|
83
|
+
"admin": ">=4.0.9"
|
|
84
|
+
}
|
|
85
|
+
]
|
|
86
|
+
},
|
|
87
|
+
"encryptedNative": [
|
|
88
|
+
"dhlpassword",
|
|
89
|
+
"amzpassword",
|
|
90
|
+
"dpdpassword",
|
|
91
|
+
"t17password"
|
|
92
|
+
],
|
|
93
|
+
"protectedNative": [
|
|
94
|
+
"dhlpassword",
|
|
95
|
+
"amzpassword",
|
|
96
|
+
"dpdpassword",
|
|
97
|
+
"t17password"
|
|
98
|
+
],
|
|
99
|
+
"native": {
|
|
100
|
+
"amzusername": "",
|
|
101
|
+
"amzpassword": "",
|
|
102
|
+
"t17username": "",
|
|
103
|
+
"t17password": "",
|
|
104
|
+
"dpdusername": "",
|
|
105
|
+
"dpdpassword": "",
|
|
106
|
+
"dhlusername": "",
|
|
107
|
+
"dhlpassword": "",
|
|
108
|
+
"dhlMfa": "",
|
|
109
|
+
"17trackKey": "",
|
|
110
|
+
"interval": 10
|
|
111
|
+
},
|
|
112
|
+
"objects": [],
|
|
113
|
+
"instanceObjects": [
|
|
114
|
+
{
|
|
115
|
+
"_id": "info",
|
|
116
|
+
"type": "channel",
|
|
117
|
+
"common": {
|
|
118
|
+
"name": "Information"
|
|
119
|
+
},
|
|
120
|
+
"native": {}
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"_id": "allProviderJson",
|
|
124
|
+
"type": "state",
|
|
125
|
+
"common": {
|
|
126
|
+
"role": "state",
|
|
127
|
+
"name": "Tracking List of all Providers",
|
|
128
|
+
"type": "json",
|
|
129
|
+
"read": true,
|
|
130
|
+
"write": false
|
|
131
|
+
},
|
|
132
|
+
"native": {}
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"_id": "allProviderObjects",
|
|
136
|
+
"type": "state",
|
|
137
|
+
"common": {
|
|
138
|
+
"role": "state",
|
|
139
|
+
"name": "Tracking Dictionary of all Providers",
|
|
140
|
+
"type": "json",
|
|
141
|
+
"read": true,
|
|
142
|
+
"write": false
|
|
143
|
+
},
|
|
144
|
+
"native": {}
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"_id": "17t",
|
|
148
|
+
"type": "channel",
|
|
149
|
+
"common": {
|
|
150
|
+
"name": "17Track API key Tracking"
|
|
151
|
+
},
|
|
152
|
+
"native": {}
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"_id": "17t.trackinginfo",
|
|
156
|
+
"type": "channel",
|
|
157
|
+
"common": {
|
|
158
|
+
"name": "17Track Tracking Info"
|
|
159
|
+
},
|
|
160
|
+
"native": {}
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"_id": "17t.register",
|
|
164
|
+
"type": "state",
|
|
165
|
+
"common": {
|
|
166
|
+
"role": "state",
|
|
167
|
+
"name": "Register a new tracking id",
|
|
168
|
+
"type": "mixed",
|
|
169
|
+
"read": true,
|
|
170
|
+
"write": true
|
|
171
|
+
},
|
|
172
|
+
"native": {}
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
"_id": "17t.trackinginfo.json",
|
|
176
|
+
"type": "state",
|
|
177
|
+
"common": {
|
|
178
|
+
"role": "state",
|
|
179
|
+
"name": "Json tracking info",
|
|
180
|
+
"type": "mixed",
|
|
181
|
+
"read": true,
|
|
182
|
+
"write": false,
|
|
183
|
+
"def": false
|
|
184
|
+
},
|
|
185
|
+
"native": {}
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"_id": "17t.deleteTrack",
|
|
189
|
+
"type": "state",
|
|
190
|
+
"common": {
|
|
191
|
+
"role": "state",
|
|
192
|
+
"name": "Unregister a tracking id",
|
|
193
|
+
"type": "mixed",
|
|
194
|
+
"read": true,
|
|
195
|
+
"write": true
|
|
196
|
+
},
|
|
197
|
+
"native": {}
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
"_id": "17t.trackList",
|
|
201
|
+
"type": "state",
|
|
202
|
+
"common": {
|
|
203
|
+
"role": "state",
|
|
204
|
+
"name": "Registered tracking ids",
|
|
205
|
+
"type": "object",
|
|
206
|
+
"read": true,
|
|
207
|
+
"write": false
|
|
208
|
+
},
|
|
209
|
+
"native": {}
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"_id": "auth",
|
|
213
|
+
"type": "channel",
|
|
214
|
+
"common": {
|
|
215
|
+
"name": "Auth Information"
|
|
216
|
+
},
|
|
217
|
+
"native": {}
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
"_id": "auth.dhlMfaToken",
|
|
221
|
+
"type": "state",
|
|
222
|
+
"common": {
|
|
223
|
+
"role": "state",
|
|
224
|
+
"name": "DHL Mfa Token",
|
|
225
|
+
"type": "string",
|
|
226
|
+
"read": true,
|
|
227
|
+
"write": false
|
|
228
|
+
},
|
|
229
|
+
"native": {}
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
"_id": "auth.cookie",
|
|
233
|
+
"type": "state",
|
|
234
|
+
"common": {
|
|
235
|
+
"role": "state",
|
|
236
|
+
"name": "Cookie state",
|
|
237
|
+
"type": "string",
|
|
238
|
+
"read": true,
|
|
239
|
+
"write": false
|
|
240
|
+
},
|
|
241
|
+
"native": {}
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
"_id": "info.connection",
|
|
245
|
+
"type": "state",
|
|
246
|
+
"common": {
|
|
247
|
+
"role": "indicator.connected",
|
|
248
|
+
"name": "Device or service connected",
|
|
249
|
+
"type": "boolean",
|
|
250
|
+
"read": true,
|
|
251
|
+
"write": false,
|
|
252
|
+
"def": false
|
|
253
|
+
},
|
|
254
|
+
"native": {}
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"_id": "refresh",
|
|
258
|
+
"type": "state",
|
|
259
|
+
"common": {
|
|
260
|
+
"role": "boolean",
|
|
261
|
+
"name": "Force data refresh",
|
|
262
|
+
"type": "boolean",
|
|
263
|
+
"read": true,
|
|
264
|
+
"write": true,
|
|
265
|
+
"def": false
|
|
266
|
+
},
|
|
267
|
+
"native": {}
|
|
268
|
+
}
|
|
269
|
+
]
|
|
270
|
+
}
|