NEWS
[Projekt] Integr. Cubinote - Alexa Sprache drucken - Listen
-
@mcchickents ich habe das jetzt auch mal direkt in der url eingegeben und als rückgabe im Browser bekomme ich als json format folgende Ausgabe:
showapi_res_code 1 showapi_res_error "ok" showapi_devicetype 602 showapi_bindid 807927
Und der Drucker printet:
App name: iobroker-cubinote
Developer: sebastian_io
Verification-Code: .....Bei dir müsste also dein App Name, Developer etc drin stehen und wenn du das über iobroker machst und den Datenpunkt 0_userdata.0.cubinote.actionStates.check_binding_state auf true setzt, dann sollte eine Sprachausgabe über deine ausgewählte alexa kommen, aber ohne Ausdruck!
-
das funktioniert schon ich bekomme nur immer von der netten alexa gesagt verbindungsstatus nicht erfolgreich^^
wenn ich write_binding_state drücke, druckt der drucker zweimal hintereinder und alexa sagt verbindung erfolgreich.
Interresanter weiße stehen auf den ausdrucken aber unterschiedliche sachen. als würde er im iobroker den user namen nicht verwenden.
-
@mcchickents druckt cubinote deine Shoppingliste oder deine Todoliste aus? sprich über:
0_userdata.0.cubinote.actionStates.print_shoppinglist_state auf true oder
0_userdata.0.cubinote.actionStates.print_todolist_state auf true ? -
@sebastian-io nein druckt er nicht
-
@mcchickents und im javascript protokoll steht auch nichts? eventuell den javascript adapter neustarten! Werden die obengenannten actionStates wieder automatisch auf false gesetzt? Es kann prinzipiell nur eine Kleinigkeit sein!
-
kompletten iobroker neu gestartet = kein erfolg
check binding wird von true automatisch auf false gesetzt
write binding ebenfalls
die beiden print states bleiben auf true stehen -
@mcchickents Hast du alle scripte eingebunden? als bsp für die alexa listen nochmal:
Wird ein Fehler im javascript Protokoll ausgeworfen?const moment = require('moment'); const fs = require('fs'); var aApiSettings = { //Echo Gerät für Sprachausgabe 'echodevice': 'YOUR ECHO DEVICE', 'url': getState("0_userdata.0.cubinote.apiurl").val, 'action': { 'print': 'printpaper', 'devicestatus': 'getdeviceinfo', 'printstatus': 'getprintstat', 'requestbind': 'requestbind', 'requestbindstatus': 'getbindrequeststatus' }, 'appid': '?appID=' + getState("0_userdata.0.cubinote.appid").val, 'accesskey': '&ak=' + getState("0_userdata.0.cubinote.accesskey").val, 'deviceid': '&deviceID=' + getState("0_userdata.0.cubinote.deviceid").val, 'bindid': '&bindID=' + getState("0_userdata.0.cubinote.bindid").val, 'userid': '&useridentifying' + getState("0_userdata.0.cubinote.userid").val, 'liststates': { '0_userdata.0.cubinote.actionStates.print_shoppinglist_state': 'alexa2.0.Lists.SHOPPING_LIST.json', '0_userdata.0.cubinote.actionStates.print_todolist_state': 'alexa2.0.Lists.TO_DO.json' } } /**Print States */ for (const [state, list] of Object.entries(aApiSettings.liststates)) { on({ id: state, val: true }, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; moment.locale('de'); // de var TimeStamp = moment().format('YYYY-MM-DD hh:mm:ss'); var sTimestamp = '×tamp=' + TimeStamp; var apiUrl = aApiSettings.url + aApiSettings.action.print + aApiSettings.appid + aApiSettings.accesskey + sTimestamp + aApiSettings.deviceid + aApiSettings.bindid; apiUrl += '&printcontent=T:'; var aLists = JSON.parse(getState(list).val); var printList = ''; var TimeStampList = moment().format('DD.MM.YYYY HH:mm'); if(list == 'alexa2.0.Lists.SHOPPING_LIST.json'){ printList = 'Einkaufsliste '+TimeStampList+'\n\r'; printList += '================================\n\n\r'; } if(list == 'alexa2.0.Lists.TO_DO.json'){ printList = 'TODO Liste '+TimeStampList+'\n\r'; printList += '================================\n\n\r'; } printList += aLists.map(function (val) { var item = val.value item = item[0].toUpperCase() + item.substring(1); return (val.completed ? '[X] ' : '[ ] ') + item; }).join('\n\n\r'); //es sind keine Umlaute zulässig somit müssen diese ersetzt werden printList = printList.replace(/Ä/g, 'Ae'); printList = printList.replace(/ä/g, 'ae'); printList = printList.replace(/Ö/g, 'Oe'); printList = printList.replace(/ö/g, 'oe'); printList = printList.replace(/Ü/g, 'Ue'); printList = printList.replace(/ü/g, 'ue'); printList = printList.replace(/ß/g, 'ss'); var base64 = new Buffer(printList).toString('base64'); apiUrl += base64; //console.log(apiUrl); const request = require('request'); request({ 'uri': apiUrl}, function (error, response, json) { if (!error && response.statusCode === 200) { var aReturn = JSON.parse(json); //{"showapi_res_code":1,"showapi_res_error":"ok","result":2,"printcontentid":52476} if (aReturn.result == 2) { var statusUrl = aApiSettings.url + aApiSettings.action.printstatus + aApiSettings.appid + aApiSettings.accesskey + sTimestamp; statusUrl += '&printcontentid=' + aReturn.printcontentid; request({ 'uri': statusUrl }, function (err, resp, jsonStatus) { //{"showapi_res_code":1,"showapi_res_error":"ok","printflag":1,"printcontentid":52476} var outputDevice = aApiSettings.echodevice; setState(outputDevice + ".Commands.speak", '50; Drucken Liste erfolgreich'); }); } } }); setStateDelayed(state, false, 2000, false); }); }
-
@sebastian-io 75) You are assigning a number to the state "0_userdata.0.cubinote.bindid" which expects a string. Please fix your code to use a string or change the state type to number. This warning might becom
habe 4 javascripte von dir am laufen. habe aber lediglich die alexa eingebunden sonst habe ich an den scripten nix gemacht.
Gruss Julian
-
So, vielleicht kann ich helfen, nochmal auf Anfang: Führe mal bitte die Punkte im Spoiler aus:
Im oberen Bereich (Das wird benötigt) alle Info´s sammeln und eintragen (aufschreiben) --Jeweils aus der App, Developer Seite, A=Anwtort der links, Printer Zettel) kommen die Info´s herBitte in den Links die XXX jeweils mit deinen gesammelten Info´s ersetzten!
/Cubinote task....
///Das wird benötigt !
// APP ID: 10X
// Access Key AK: XXXXXXXXXXX
// Device ID: XXXXXXXX
// Cubinote ID: XXXXX
// App name: XXX
// Developer: XXX
// Verification Code: z.b.:XXX
// Bind ID: XXX
// useridentifying: XXXXX
// printcontentid“: XXXXX//1.) http://api.cubinote.com/home/requestbind?appID=XXX&ak=XXX×tamp=2014-11-14 14:22:39&deviceID=XXX&useridentifying=108XX
//A: {"showapi_res_code":1,"showapi_res_error":"ok","showapi_devicetype":602,"showapi_bindid“:XXXXXX}//2.) http://api.cubinote.com/home/getbindrequeststatus?appID=XX&ak=XXXtimestamp=2014-11-14 14:22:39&deviceID=XX&bindID=XXXXX
//A: {"showapi_res_code":0,"showapi_res_error":"ok","showapi_devicetype":602}//(3.) http://api.cubinote.com/home/verifybind?appID=XXX&ak=XXX×tamp=2014-11-14 14:22:39&deviceID=9XXX&bindID=807XXX&verifyCode=XXX&enablePush=1
//A: {"showapi_res_code":1,"showapi_res_error":"ok"}//4.) http://api.cubinote.com/home/getbindlist?appID=XXX&ak=XXX×tamp=2021-04-04 21:20:39
//A: {"showapi_res_code":1,"showapi_res_error":"ok","showapi_bindlist":"{"ds":[{"bindID\“:XXX,\“deviceID\“:\“XXX\“,\“useridentifying\“:\“XXXXX\“,\“deviceType":602,"enablePush":true}]}"}//5.) http://api.cubinote.com/home/getbindlistbyuseridentifying?appID=XXX&ak=XXX×tamp=2014-11-14 14:22:39&useridentifying=1
//A: {"showapi_res_code":1,"showapi_res_error":"ok","showapi_bindlist":"{"ds":[]}"}//7.) http://api.cubinote.com/home/getdeviceinfo?appID=XXX&ak=XXX×tamp=2014-11-14 14:22:39&deviceID=XXX&bindID=XXXXX
//A: {"showapi_res_code":1,"showapi_res_error":"ok","showapi_devicetype":602,"showapi_state":3,"showapi_isOnline":1}//8.) http://api.cubinote.com/home/printpaper?appID=XXX&ak=XXX×tamp=2017-11-20 14:43:56&deviceID=XXX&bindID=XXXXXX&printcontent=T:dGVzdA==
//A: {"showapi_res_code":1,"showapi_res_error":"ok","result":2,"printcontentid“:XXXX}//9.) http://api.cubinote.com/home/getprintstatus?appID=XXX&ak=XXX×tamp=2017-11-20 14:43:56&printcontentid=XXX
//A: {"showapi_res_code":1,"showapi_res_error":"ok","printflag":1,"printcontentid“:XXX}//10.) http://api.cubinote.com/home/getSignalBase64Pic?appID=XXX&ak=XXX&imgBase64String=xxx
//A: —— {"showapi_res_code":0,"showapi_res_error":"pic change error"}
//A {„showapi_res_code":1,"showapi_res_error":"ok","result":"xxx"}
Wenn du alle Info´s hast, dann die DP, die vom Script angelegt wurden per Hand füllen und wie sebastion-io geschrieben hat vorgehen
write & check binding state script:
0_userdata.0.cubinote.actionStates.write_binding_state (einmal auf true setzen) deine binding id bekommen, diese wird dann in den definierten Datenpunkt geschrieben.
0_userdata.0.cubinote.actionStates.check_binding_state (einmal auf true setzen) hier bekommst du dann eine Sprachausgabe ob die Verbindung erfolgreich war. Beide Datenpunkte brauchst du nur einmal ausführen, letztlich brauchen wir ja nur die bindid.
-
@sebastian-io: Ich hab´s nochmal etwas optimiert, da doch einige Drucke im laufe des Tages kamen... daher habe ich einen seperaten DP zum drucken genommen... und mal ne schnelle Vis zusammen gebastelt...
So wird der gesprochene Text geschrieben und erst gedruckt, wenn ich (IOT) sagen, Fax an Oma Ella sendenHintergrund ist der, das der Drucker als Fax für meine Oma gedacht ist, da die Corona Zeit doch sehr einsam macht und mit 91 Jahren Whatsapp doch zu komplex für sie ist, dachte ich mir, mit einem guten Zettel kann man sie doch glücklich stimmen..die gute Oma Ella da spreche ich kurz mit Alexa, oder schreibe per App, oder per Computer, oder nehme vordefinierte Texte per VIS...ist egal, geht ja alles... und die Frau ist happy, wenn der Drucker brummt....
Maximal komfortabel !!! Dank deine Idee... daher, nochmals vielen Dank für deine Hilfe zu meinem Projekt "Mach Oma Ella glücklich" -
@agria4800 said in [Projekt] Integr. Cubinote - Alexa Sprache drucken - Listen:
http://api.cubinote.com/home/printpaper?appID=XXX&ak=XXX×tamp=2017-11-20 14:43:56&deviceID=XXX&bindID=XXXXXX&printcontent=T:dGVzdA==
bei Punkt 8 bekomme ich
{"showapi_res_code":0,"showapi_res_error":"Not a valid bind device"} -
@mcchickents :
Du hast du bindid aus link nr. 1 benutzt, oder ?Dann scheint deine BindID vielleicht nicht zu passen... ist nur ein Versuch : erhöhe die Zahl mal um 1:
zb.Bind ID: 806938 ---> 806939 und trage diese mal ein und teste erneut... Ich denke, es ist so wie @sebastian-io meinte, ist nur ne Kleinigkeit, die nicht passt.. aber den muss man erst mal finden -
so fortschritt
Status vom Drucker ist hergestellt. Habe nochmal alles gelöscht. Iobroker neu gestartet und neu angefangen nun geht es.
Text drucken aus variable geht auch schon^^
Jetzt fehlt nur noch das Drucken der Listen. Ich ändere aktuell den Status manuell im Iobroker von false auf true. true bleibt stehen es wird nur leider noch nix gedruckt. Vieleicht habt ihr zwei auch noch eine idee an was das liegen kann. Ich sag schonmal vielen dank bis hier her:-)
gruss Julian
-
Es geht alles.
Vielen lieben dank euch zwei.
Schönen abend euch noch.
Gruss Julian
-
@mcchickents: sauber, super, nie aufgeben und immer dran bleiben...
Für mich war das auch das erste "komplizierte Project als nicht programmiererfahrerner Laborant aber nach über 2 Jahren Iobroker traut man sich irgendwann immer mehr.... -
@agria4800 ja immer weiter machen irgentwann kalppt es schon^^.
ich habe noch das problem das er die einkaufliste und die doto liste zweimal hintereinader druckt^^. mal schauen wie ich das weg bekomme.
-
@agria4800
Hallo, ich klinke mich mal ein, habe die ganze Zeit im hintergrund still mit gelesen und bin gerade dabei das ganze auch um zu setzten.
Da ich leider mit den Skripten im ioBroker noch nicht viel gemacht habe, habe ich hier ein Paar verständnissfragen.
Das Sammel der Daten hat soweit geklappt, ich kann über die API (Link) auch Drucken. Die Datenpunkte sind angelegt und auch entsprechend gefüllt.
Jetzt zu den Skripten. Hier bin ich mir nicht sicher ob ich alles richtig gemacht habe, muss von den DP nicht irgendwo ein Bezug zu dem jeweiligen Script sein? ist die Namensgebung der Scripte wichtig?
Egal welche tests ich im ioBroker mache, der Drucker zuckt sich nicht. Könnt Ihr mir hier weiter helfen?Hier ein Screenshot der DP und der angelegten Scripte:
dankeschön
-
@thorstenstr Eigentlich musst du nix einrichten, die Scripte von Sebastion-io sind einsatzbereit bis auf die Echo ID (aber nur für die Ansage durch Alexa)
Der Pfad ist bei dir auch so: alexa2.0.Lists.SHOPPING_LIST?
Geht der DP wieder zurück auf false nach 2 sek. ? 0_userdata.0.cubinote.actionStates.print_shoppinglist_state
Hast du das letzte Scritp von Ihm mal getestet --> Notizen drucken ?
-
@agria4800 Ja, der Pfad zur Shoppinglist passt bei mir.
der DP bleibt bei mir auf True stehen wenn ich ihn setze.
ich bin mir nicht sicher ob ich die Scripte richtig angelegt habe.
[+] Neues Script -> Javascript -> einen Namen vergeben (egal welcher?) -> Inhalt in das Script kopiert und aktiviert.
passt das so ? -
@thorstenstr: Ja, das passt so.
Villeicht einen past & copy fehler, lege das Script nochmal neu an und kopiere es aus dem Forum neu.
Analog bitte auch mal das probieren aus dem post --> 7. Apr. 2021, 17:28
DP: 0_userdata.0.cubinote.Notizen.notizenText
Das hier kannst du noch in das script einfügen, dann erstellt er dir auch den DPcreateState('0_userdata.0.cubinote.Notizen.notizenText', {name: 'Text drucken', type: 'string', def: '0',unit: '', desc: 'Beschreibung', role: 'value'});