Epson TSE Fehlermeldung Rückgabe JSON

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
tse_est
Rookie
Rookie
Beiträge: 9
Registriert: Di, 27. Okt 2020 16:19

Epson TSE Fehlermeldung Rückgabe JSON

Beitrag von tse_est »

Hallo zusammen, ich versuche die TSE zum laufen zu kriegen in unserem Epson TM-m30.

Die TSE ist tau-frisch, ich konnte sie aber bereits über die Funktion "function": "GetStorageInfo", ansprechen um die Informationen aus dem Drucker bzw. der darin befindlichen TSE auszulesen. Das ist aber auch das Einzige, was funktioniert. Alle weitere Funktionen, die ich hinsende, laufen auf einen Fehler.

Meine Befehle bisher:

Hinsendebefehl:

Code: Alles auswählen

<open_device><device_id>local_TSE</device_id><data><type>type_storage</type></data></open_device>
Rückgabe:

Code: Alles auswählen

<connect><data><client_id>sock6002400922</client_id><protocol_version>2</protocol_version></data></connect>
Funktioniert also.

Dann:

Hinsendebefehl:

Code: Alles auswählen

<device_data>
   <device_id>local_TSE</device_id>
   <data>
      <type>operate</type>
      <timeout>50000</timeout>
      <requestdata>{"storage":{"type":"TSE","vendor":"TSE1"},"function":"SetUp","input":{"puk":"123456","adminPIN":"12345","timeAdminPIN":"54321"},"compress":{"required":false,"type":""}}</requestdata>
   </data>
</device_data>
Rückgabe:

Code: Alles auswählen

{"error":{"errorinfo":"","fact":"adminPin"},"function":"SetUp","output":{},"result":"JSON_ERROR_NOT_ENOUGH_CONTENTS"}
Funktioniert also nicht.

Könnt ihr mir hier weiterhelfen? Wo könnte der Fehler liegen? Wie gesagt, ich habe noch gar nichts mit der TSE gemacht, außer deren Infos auszulesen, um überhaupt zu erkennen, ob meine Befehle die TSE ansprechen können. Ich denke, dass die nächsten Schritte dann genau diese wie oben wären? PIN, PUK setzen... Sich als Admin anmelden und dann Bon Inhalte hinsenden mit der processdata Funktion. Aber soweit komme ich ja gar nicht.

Wenn ich absichtlich den JSON Code verfälsche, eine Klammer weglasse oder ein Komma, dann erhalte ich auch die Fehlermeldung, dass das JSON Argument nicht korrekt formatiert ist usw... ist also ein Unterschied zu meiner ursprünglichen Fehlermeldung. Habe auch schon versucht das XML und das JSON komplett ohne Leerzeichen und Umbrüche etc. hinzusenden, macht keinen Unterschied. Habe auch den Compression Type geändert auf zip_deflate. Rückgabe ist dann kodiert, wenn ich sie decode, steht genau der selbe Fehler da.

HELP! :)
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Epson TSE Fehlermeldung Rückgabe JSON

Beitrag von Jan »

Moin,

mein Request sieht z. B. so aus:

Code: Alles auswählen

<device_data>
<device_id>TSE_D74A8C2F27F6F738D5D0A1B2C7C625729168E89C3A4360E69A4CBEC05EA54257_8</device_id>
   <data>
      <type>operate</type>
      <timeout>10000</timeout>
      <requestdata>
         {"storage":{"type":"TSE","vendor":"TSE1"}, "function": "SetUp", "input": {"puk": "123456", "adminPin": "12345", "timeAdminPin": "54321"},"compress":{"required":false,"type":""}}
      </requestdata>
   </data>
</device_data>
Die DeviceID ist bei mir anders, weil ich mit einem TSE-Server mit 8 TSE drin arbeite. Da muß ich die mit ihrer ID ansprechen.

Die Rückgabe darauf ist natürlich der Hinweis auf einen Fehler:

Code: Alles auswählen

<device_data><sequence>0</sequence><device_id>TSE_D74A8C2F27F6F738D5D0A1B2C7C625729168E89C3A4360E69A4CBEC05EA54257_8</device_id><data><type>operateresult</type><success>true</success><code>SUCCESS</code><resultdata>{"error":{"errorinfo":"","fact":""},"function":"SetUp","output":{},"result":"OTHER_ERROR_TSE_ALREADY_SET_UP"}
</resultdata><resultformat>string</resultformat></data><data_id>0</data_id></device_data>
Weil das Teil schon das Setup erledigt hat. Aber auf jeden Fall kommt nicht Deine Fehlermeldung.

Ein paar allgemeine Hinweise:
  • Den Support von Epson kannst Du knicken. Nicht existent, und wenn die Antworten ohne Sinn.
  • Im Epson-Forum bekommst Du gute Hinweise von anderen Entwicklern. Ab und an meldet sich auch der Support dort, dann aber wiederum vollkommen unnütze Antworten.
  • Die Doku strotzt vor Fehlern und fehlenden Angaben.
  • Die Schnittstelle ist Case-sensitiv! Du mußt also zwingend immer auf Groß/Kleinschreibung achten. Das ist nicht immer einfach, weil die Doku selber das oftmals falsch darstellt. Da hilft dann manchmal der Response der TSE, weil das da korrekt aufgeführt ist.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Epson TSE Fehlermeldung Rückgabe JSON

Beitrag von Jan »

Ich seh gerade: Du hast genau den Fehler gemacht, den die Doku vorgibt: Da steht drin das heißt adminPIN. Und so schreibst Du das auch in Deinen Request rein. Dein Response gibt Dir aber die Lösung: Korrekt ist adminPin.

Gleiches gilt für die timeAdminPin.

Genau da bin ich auch rein gelaufen. Und hab mich dann darüber mit dem Support gezofft, weil deren Doku das so sagt.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
tse_est
Rookie
Rookie
Beiträge: 9
Registriert: Di, 27. Okt 2020 16:19

Re: Epson TSE Fehlermeldung Rückgabe JSON

Beitrag von tse_est »

Hallo Jan,

Vielen Dank für dein Feedback, das werde ich gleich morgen früh probieren!

Dachte zuerst vielleicht gebe ich am Ende der Nachricht noch ein falsches Byte an den Socket mit, keine Null oder irgendwas anderes. Sende danach noch ein socket.writebyte mit dem Wert 0 über meine Lösung an das TSE. Beim getstorageinformation funktionierts ohne nicht.

Aber deine Lösung scheint mir plausibel. Werde morgen früh berichten!
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Epson TSE Fehlermeldung Rückgabe JSON

Beitrag von Jan »

Hallo,

ja, grundsätzlich alle Requests müssen zwingend ein Chr(0) am Ende haben. Sonst denkt die TSE da käme noch was.

Wie fragst Du den Response ab?

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
tse_est
Rookie
Rookie
Beiträge: 9
Registriert: Di, 27. Okt 2020 16:19

Re: Epson TSE Fehlermeldung Rückgabe JSON

Beitrag von tse_est »

Hallo Jan,

ich nutze für alles ein Filemaker Plugin, da wir die Anbindung darüber realisieren. Das Plugin kann an Sockets lesen und schreiben. Den Response frage ich ab über "socketread.all“ an der zuvor angesprochenen URL:Port. Ist ein ganz simpler Befehl des Plugins, der einfach die Infos der zuvor geöffneten Sockets abfragt.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Epson TSE Fehlermeldung Rückgabe JSON

Beitrag von Jan »

Von Xbase++ über Filemaker auf die Sockets? Find ich jetzt gelinde gesagt ganz leicht kompliziert. Warum denn nicht direkt?

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
tse_est
Rookie
Rookie
Beiträge: 9
Registriert: Di, 27. Okt 2020 16:19

Re: Epson TSE Fehlermeldung Rückgabe JSON

Beitrag von tse_est »

Ich komme aus der Filemaker Welt und habe mit Xbase nichts am Hut 😅 Bin hier aber auf das Thema gestoßen und hier einen ähnlichen Beitrag gefunden. Sorry wenn ich mich hier parasitär dran gehängt habe 🙊
tse_est
Rookie
Rookie
Beiträge: 9
Registriert: Di, 27. Okt 2020 16:19

Re: Epson TSE Fehlermeldung Rückgabe JSON

Beitrag von tse_est »

Jan hat geschrieben: Di, 27. Okt 2020 16:55 Ich seh gerade: Du hast genau den Fehler gemacht, den die Doku vorgibt: Da steht drin das heißt adminPIN. Und so schreibst Du das auch in Deinen Request rein. Dein Response gibt Dir aber die Lösung: Korrekt ist adminPin.

Gleiches gilt für die timeAdminPin.

Genau da bin ich auch rein gelaufen. Und hab mich dann darüber mit dem Support gezofft, weil deren Doku das so sagt.

Jan
Das war's! Unglaublich dass die TSE Doku hier falsch ist und den User in die Falle laufen lässt.

Bin jetzt aber zumindest weiter! Jetzt heißt es "TSE needs self-test" als Response. Darüber bin ich auch schon irgendwo gestolpert.
tse_est
Rookie
Rookie
Beiträge: 9
Registriert: Di, 27. Okt 2020 16:19

Re: Epson TSE Fehlermeldung Rückgabe JSON

Beitrag von tse_est »

Hallo Jan,

habe nochmal eine Frage. Ich versuche nun inital und erstmalig die Zeit auf der TSE zu setzen, damit ich dann Transaktionen an die TSE senden kann.

Mein Code:

Code: Alles auswählen

<device_data><device_id>local_TSE</device_id><data><type>operate</type><timeout>10000</timeout><requestdata>
{
   "storage":{
      "type":"TSE",
      "vendor":"TSE1"
   },
   "function":"UpdateTimeForFirst",
 	"input": {
		"userId":  "POS5_SHOP23",
		"newDateTime":  "2020-10-28T16:10:01Z",
		"useTimeSync":  "false"
},
   "compress":{
      "required":false,
      "type":""
   }
}
</requestdata></data></device_data>
Als Response erhalte ich nur:

Code: Alles auswählen

{"error":{"errorinfo":"","fact":"useTimeSync"},"function":"UpdateTimeForFirst","output":{},"result":"JSON_ERROR_UNEXPECTED_PARAM_TYPE"}
Wenn ich aber am Datums-String etwas bewusst auf falsch ändere, zB Tag und Monat vertausche, so dass das Datum nicht sein kann (10.28.2020) im Hinsende-Code, dann erhalte ich :

Code: Alles auswählen

{"error":{"errorinfo":"","fact":"newDateTime"},"function":"UpdateTimeForFirst","output":{},"result":"JSON_ERROR_INVALID_TIME_FORMAT"}
Hast du eine Idee warum der vermeintlich korrekte Code oben zum Fehler JSON_ERROR_UNEXPECTED_PARAM_TYPE führt?
Zuletzt geändert von tse_est am Mi, 28. Okt 2020 16:50, insgesamt 1-mal geändert.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Epson TSE Fehlermeldung Rückgabe JSON

Beitrag von Jan »

Moin,

kann es sein das Du den falschen User nimmst? Die Funktion geht nur als Admin oder TimeAdmin.

Nebenbei: Es wäre nett wenn ich wüßte mit wem ich da eigentlich rede.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
tse_est
Rookie
Rookie
Beiträge: 9
Registriert: Di, 27. Okt 2020 16:19

Re: Epson TSE Fehlermeldung Rückgabe JSON

Beitrag von tse_est »

Ich habe mich an die Angaben aus der Doku gehalten, diese geben an:

Code: Alles auswählen

"function": "UpdateTimeForFirst",
"input": {
"userId": "POS5_SHOP23", (also nicht Admin oder TimeAdmin, hier wird ein User angegeben, der vorher als Client registriert wurde in der Doku)
"newDateTime":"2020-01-01T05:23:17Z",
"useTimeSync":"false"
},
Teile aus der Doku bezüglich des Users der zuvor über andere Teile registriert bzw. zur Anmeldung genutzt wird, daher dachte ich ich kann beim Zeit setzen auch einen eigenen User nehmen, so wie eben in den Doku Beispielen:

Code: Alles auswählen

"function": "RegisterClient", "input": { "clientId": "POS5_SHOP23" },
und:

Code: Alles auswählen

"function": "AuthenticateUserForTimeAdmin", "input": { "clientId": "POS5_SHOP23", "pin":"54321", "hash":"{base64 encoded hash}" },
Daher dachte ich, dass ich diesen auch zum Zeit setzen nehmen muss. Wie eben im Beispiel UdateTimeforFirst.
Zuletzt geändert von tse_est am Mi, 28. Okt 2020 17:02, insgesamt 2-mal geändert.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Epson TSE Fehlermeldung Rückgabe JSON

Beitrag von Jan »

Christian,

die Doku "JSON Specification" gibt auf Seite 15 an, das für UpdateTimeForFirst das als Admin oder TimeAdmin geht.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
tse_est
Rookie
Rookie
Beiträge: 9
Registriert: Di, 27. Okt 2020 16:19

Re: Epson TSE Fehlermeldung Rückgabe JSON

Beitrag von tse_est »

Hallo Jan,

Nachtrag!

Habe nun nochmal die Anmeldung als TimeAdmin (den Namen dieses Users setze ich ja selbst) durchgeführt, daraufhin versucht die Zeit zu setzen über eben diesen TimeAdmin. Nun erhalte ich weiterhin:

Code: Alles auswählen

{"error":{"errorinfo":"","fact":"useTimeSync"},"function":"UpdateTimeForFirst","output":{},"result":"JSON_ERROR_UNEXPECTED_PARAM_TYPE"}
tse_est
Rookie
Rookie
Beiträge: 9
Registriert: Di, 27. Okt 2020 16:19

Re: Epson TSE Fehlermeldung Rückgabe JSON

Beitrag von tse_est »

Hallo Jan,

ich weiß nicht genau warum, aber als ich den Code aus derDoku genommen habe (Ordner 05 - JSONCommandSamples), hat es funktioniert, eventuell irgendein verstecktes Zeichen oder Leerzeichen was sich bei mir eingeschlichen hat, oder welches ich nicht beachtet hatte. Mit folgendem Code funktioniert es jedenfalls jetzt, angepasst auf meinen TimeAdmin.

Code: Alles auswählen

{
  "storage": {
    "type": "TSE",
    "vendor": "TSE1"
  },
  "function": "UpdateTimeForFirst",
  "input": {
    "userId":"ClientId_POS1",
		"newDateTime":"2019-05-21T18:08:00Z",
		"useTimeSync":false
  },
  "compress": {
    "required": false,
    "type": ""
  }
}
Antworten