Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Cubinote Drucker Bring Einkaufsliste drucken

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Cubinote Drucker Bring Einkaufsliste drucken

    This topic has been deleted. Only users with topic management privileges can see it.
    • toni
      toni last edited by

      Hallo, leider kenne ich mich zu wenig aus. Vielleicht kann mir jemand dabei helfen, folgendes Script so anzupassen, das es möglich ist die Bring Einkaufsliste zu drucken. Cubinote Script.pdf
      Vielleicht kann ja jemand von den Profis helfen 🙂 .

      OliverIO 1 Reply Last reply Reply Quote 0
      • OliverIO
        OliverIO @toni last edited by OliverIO

        @toni

        do ist noch zuviele magic drin, was sich aus dem skript nicht ablesen lässt.
        was ist den bspw die 0_userdata.0.cubinote.apiurl
        ist das ein gerät oder ein service im internet?

        da eingebundenes pdf ebenso ungünstig ist wie ein screenshot, habe ich das mal hier mit spoiler eingebunden

        um mal die einkaufsliste zu bekommen, könntest du bei zeile 80 zumindest mal den Inhalt von
        printList in einen Datenpunkt schreiben.

        Das automatische Ansteuern eines Druckers ist nicht ganz so einfach, da es hier verschiedene Wege gibt die alle so ihre vor und Nachteile haben

        1. Browser
          Der Browser befindet sich in einer Sandbox und kann nicht automatisiert auf Geräte zugreifen.
          Aber du könntest eine Seite anzeigen (formatiert mit HTML oder unformatiert einfach nur Text und du drückst selber den Drcukknopf
        2. über Server an Drucker standard, als Text oder auch Datei (die muss aber erst generiert werden)
          Das ist ein wenig Betriebssystemabhängig. Du könntest eine node Bibliothekt verwenden, bei der du in einem Skript den entsprechenden Drucker angibts, ggfs konfigurierst (Seiteneinstellungen und all die anderen Optionen, die dir normalerweise beim Drucken zur Auswahl angeboten wird) und dann den Inhalt an den Drucker sendets. Ich gehe mal davon aus, das der Drucker im Betriebssystem schon vorkonfiguriert sein muss. Habe die Doku bspw von dieser Bibliothek nicht im Detail studiert.
          https://www.npmjs.com/package/node-native-printer
          oder
          https://www.npmjs.com/package/ipp

        const moment = require('moment');
        const fs = require('fs');
        var aApiSettings = {
            //Echo Gerät für Sprachausgabe
            'echodevice': 'alexa2.0.Echo-Devices.G090XG12211700GD',
            '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 = '&timestamp=' + 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,
                            "pri
                            ntcontentid": 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;bitteschön!');
        
                            });
                        }
                    }
                });
                setStateDelayed(state, false, 2000, false);
            });
        

        1 Reply Last reply Reply Quote 0
        • toni
          toni last edited by

          Zu erst danke... wenn du im Forum nach dem Cubinote Drucker suchst findest du eine Anleitung wie man damit Alexa Einkaufslisten bzw. ToDolisten drucken kann. Das sollte einige Fragen von dir beantworten.
          Danke soweit für die Hilfe.

          OliverIO 1 Reply Last reply Reply Quote 0
          • OliverIO
            OliverIO @toni last edited by

            @toni
            ich will aber ja nicht deinen kompletten lösungsweg nachvollziehen wollen nur um dir bei deinem detailproblem zu helfen. kostet ja alles ein wenig zeit, oder?

            toni 1 Reply Last reply Reply Quote 1
            • toni
              toni @OliverIO last edited by

              @oliverio ja das stimmt, ich dachte es wäre eher leicht, das Alexa Script zu verwenden, leider hab ich zu wenig Ahnung und aus diesem Grund habe ich um Hilfe gebeten.
              Bitte versteh mich nicht falsch...

              1 Reply Last reply Reply Quote 0
              • First post
                Last post

              Support us

              ioBroker
              Community Adapters
              Donate

              414
              Online

              31.7k
              Users

              79.9k
              Topics

              1.3m
              Posts

              2
              5
              286
              Loading More Posts
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes
              Reply
              • Reply as topic
              Log in to reply
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
              The ioBroker Community 2014-2023
              logo