NEWS
Hilfe bei der Script erstellung
-
@t0bit3ch
Steht doch dain Zeile 2 ist ein Fehler. Da fehlen die Klammer setState().val
-
@ticaki
wenn ich es so machevar alarmmeldung = getState("javascript.0.emmesage.alarmtext").val;
bekomme ich den log
warn javascript.0 (13740) at script.js.Pager_Alarmierung.emessage_send_test1:2:20 21:09:20.934 warn javascript.0 (13740) at script.js.Pager_Alarmierung.emessage_send_test1:49:3 21:09:20.935 info javascript.0 (13740) script.js.Pager_Alarmierung.emessage_send_test1: registered 0 subscriptions and 0 schedules 21:09:21.235 info javascript.0 (13740) script.js.Pager_Alarmierung.emessage_send_test1: {'message':'Request failed with status code 400','name':'Error','stack':'Error: Request failed with status code 400\n at createError (/opt/iobroker/node_modules/iobroker.javascript/node_modules/axios/lib/core/createError.js:16:15)\n at settle (/opt/iobroker/node_modules/iobroker.javascript/node_modules/axios/lib/core/settle.js:17:12)\n at IncomingMessage.handleStreamEnd (/opt/iobroker/node_modules/iobroker.javascript/node_modules/axios/lib/adapters/http.js:260:11)\n at IncomingMessage.emit (events.js:326:22)\n at IncomingMessage.EventEmitter.emit (domain.js:483:12)\n at endReadableNT (_stream_readable.js:1241:12)\n at processTicksAndRejections (internal/process/task_queues.js:84:21)','config':{'url':'https://api.emessage.de/rs/eSendMessages','method':'post','data':'{\'messageText\':null,\'recipients\':[{\'serviceName\':\'eCityruf\',\'identifier\':\'*******\'}]}','headers':{'Content-Type':'application/json','Authorization':'Bearer TOKEN','User-Agent':'axios/0.21.1','Content-Length':85},'transformRequest':[null],'transformResponse':[null],'timeout':0,'xsrfCookieName':'XSRF-TOKEN','xsrfHeaderName':'X-XSRF-TOKEN','maxContentLength':-1,'maxBodyLength':-1}}
aber in zeile 3 steht ja garnichts
-
@t0bit3ch
In Zeile 3 steht die Funktion in der eine Warnung ausgelöst wird. In Zeile 20 rufst du console.log(error) auf. Keine Ahnung was in error drin steht, aber scheinbar kann die log funktion das nicht verarbeiten. -
hab es jetzt so probiert
var alarmmeldung = "javascript.0.E_Message.Alarmtext";
"messageText": getState(alarmmeldung).val,
jetzt kommt kein fehler mehr im log aber der pager wird auch nicht mehr ausgelöst
-
@t0bit3ch
Versuche mal folgende:const axios = require('axios'); var alarmmeldung = getState("javascript.0.emmesage.alarmtext").val; if (typeof alarmmeldung !== 'string' || alarmmeldung == '') log('das ist kein string'); log(alarmmeldung); function auth() { axios.post('https://api.emessage.de/auth/login',{ username: 'USERNAME', //* E*Message Benutzername */ password: 'PASSWORD' //* E*Message Kennwort */ },{ headers: { 'Authorization': 'Basic Og==', 'Content-Type': 'application/json' } }).then(function (response) { if (response.status==200) { var token = response.data.data.jwt; sendMessage(token); } }) .catch(function (error) { log('fehler in post'); console.log(error); }); } function sendMessage(token) { axios.post('https://api.emessage.de/rs/eSendMessages',{ "messageText": alarmmeldung + ' ', //* Pocsag Nachricht an Pager */ //* bei mir durch einen Datenpunkt ersetzt */ "recipients": [ { "serviceName": "eCityruf", //* Alarmierungstyp */ //* eCityruf - eBos - 2wayS */ "identifier": "*******" //* E*Message Funkrufnummer */ } ] },{ headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + token } }) .catch(function (error) { log('fehler in send'); console.log(error); }); }
Das bekommen wir schon ans laufen
EDIT: Da waren noch ein paar Komma drin, die da nichts zu suchen haben. -
@ticaki
jetzt kommt das in der loginfo javascript.0 (13740) Start javascript script.js.Pager_Alarmierung.emessage_send_test2 warn javascript.0 (13740) at script.js.Pager_Alarmierung.emessage_send_test2:2:20 warn javascript.0 (13740) at script.js.Pager_Alarmierung.emessage_send_test2:49:3 info javascript.0 (13740) script.js.Pager_Alarmierung.emessage_send_test2: das ist kein string info javascript.0 (13740) script.js.Pager_Alarmierung.emessage_send_test2: registered 0 subscriptions and 0 schedules
-
Was steht in "javascript.0.emmesage.alarmtext"? Ist der Datenpunkt als String definiert?
füge in Zeile 4 folgendes ein:
log(alarmmeldung);
Du hättest jetzt aber entweder mehr Logmeldungen oder eine pagernachricht bekommen sollen. Ich hab oben den Code editiert.
-
@ticaki
also im log kommt jetzt die meldung aus dem datenpunkt so wie es sein soll.
der pager bleibt aber ruhig -
@ticaki
hatte grad nochmal diesen code probiertconst axios = require('axios'); var alarmmeldung = "javascript.0.emmesage.alarmtext"; function auth() { axios.post('https://api.emessage.de/auth/login',{ username: 'USERNAME', //* E*Message Benutzername */ password: 'PASSWORD' //* E*Message Kennwort */ },{ headers: { 'Authorization': 'Basic Og==', 'Content-Type': 'application/json', } }).then(function (response) { if (response.status==200) { var token = response.data.data.jwt; sendMessage(token) } }) .catch(function (error) { console.log(error); }); } function sendMessage(token) { axios.post('https://api.emessage.de/rs/eSendMessages',{ "messageText": getState(alarmmeldung).val, //* Pocsag Nachricht an Pager */ //* bei mir durch einen Datenpunkt ersetzt */ "recipients": [ { "serviceName": "eCityruf", //* Alarmierungstyp */ //* eCityruf - eBos - 2wayS */ "identifier": "******" //* E*Message Funkrufnummer */ } ] },{ headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + token, } }) .catch(function (error) { console.log(error); }); } console.log(getState("javascript.0.emmesage.alarmtext").val); auth();
damit funktionert es
-
-
super das es letztendlich doch geklappt hat.
-
@oliverio
Moin Moin,
Ich bin zwischendurch noch ein bisschen am probieren den status vom pager abzurufen.
ich hänge grad wieder bei einem problem. ich lasse mir einen datenpunkt schreiben der so aussieht"46b61d10-10c3-11ec-8787-7dd1f95191be"
ich möchte das die " am anfang und ende nicht mit in den datenpunkt geschrieben werden. wie bekomme ich das hin?
hab schon so einiges probiert, aber nichts hat bisher funktioniert.
hier mal eins von meinen versuchensetState("0_userdata.0.E-Message.E-Message-TrackingID", trid).val.replace('"');
-
@t0bit3ch sagte in Hilfe bei der Script erstellung:
@oliverio
Moin Moin,
Ich bin zwischendurch noch ein bisschen am probieren den status vom pager abzurufen.
ich hänge grad wieder bei einem problem. ich lasse mir einen datenpunkt schreiben der so aussieht"46b61d10-10c3-11ec-8787-7dd1f95191be"
ich möchte das die " am anfang und ende nicht mit in den datenpunkt geschrieben werden. wie bekomme ich das hin?
hab schon so einiges probiert, aber nichts hat bisher funktioniert.
hier mal eins von meinen versuchensetState("0_userdata.0.E-Message.E-Message-TrackingID", trid).val.replace('"');
hab es hinbekommen
so langsam verstehe ich das JS
-
@t0bit3ch
Das gequotete Beispiel sieht aber nicht aus als wenns funktionieren würde. -
@ticaki sagte in Hilfe bei der Script erstellung:
@t0bit3ch
Das gequotete Beispiel sieht aber nicht aus als wenns funktionieren würde.hatte das funktionierende beispiel wohl vergessen
var trid = JSON.stringify(response.data.data.trackingId); var tridneu = trid.substr(1, trid.length - 2); setState("0_userdata.0.E-Message.E-Message-TrackingID", tridneu);
-
@t0bit3ch sagte in Hilfe bei der Script erstellung:
@ticaki sagte in Hilfe bei der Script erstellung:
@t0bit3ch
Das gequotete Beispiel sieht aber nicht aus als wenns funktionieren würde.hatte das funktionierende beispiel wohl vergessen
var trid = JSON.stringify(response.data.data.trackingId); var tridneu = trid.substr(1, trid.length - 2); setState("0_userdata.0.E-Message.E-Message-TrackingID", tridneu);
Eigentor! Du hast dir die Hochkommas selbst reingebastelt, durch das nicht notwendige JSON.stringify(). das hier reicht völlig
let trid=response.data.data.trackingId; setState("0_userdata.0.E-Message.E-Message-TrackingID", trid);
-
@fastfoot
Danke für den Tipp. Werde es morgen mal versuchenMan lernt nie aus
-
setState("0_userdata.0.E-Message.E-Message-TrackingID", response.data.data.trackingId);
-
@ticaki sagte in Hilfe bei der Script erstellung:
setState("0_userdata.0.E-Message.E-Message-TrackingID", response.data.data.trackingId);
klar doch, ich halte es aber für einen Anfänger für besser das aufzusplitten. Dadurch ist es besser nachvollziehbar was da passiert. Der kürzeste Code ist halt nicht immer der Beste...
-