Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Entwicklung
  4. Adapter für den Drucker Brother HL-4150 CDN (Probleme)

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    10
    1
    140

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.4k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.4k

Adapter für den Drucker Brother HL-4150 CDN (Probleme)

Geplant Angeheftet Gesperrt Verschoben Entwicklung
4 Beiträge 2 Kommentatoren 1.1k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • M Offline
    M Offline
    MueThoS
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    nach dem Tutorial von haus-automatisierung.com habe ich mich auch gleich dran gemacht etwas zu basteln.

    Ich wollte schon lange die Daten aus meinem Drucker aus lesen. Leider scheint dieser nur CSV aus zu spucken.

    Müsste ja auch gehen.

    Was ich mache:

    Ich hole die csv Daten mit request und pipe die durch csv-stream

    request({
                     url: printer_url,
                      rejectUnauthorized: false
                     }).pipe(csvStream)
    

    Dann versuche ich die weg zu schreiben:

              .on('column',function(key,value){
                     // outputs the column name associated with the value found
                     adapter.log.info('#' + key + ' = ' + value);
    
                     adapter.setObjectNotExists(key, {
                         type: 'state',
                         common: {
                             name: key,
                             type: 'text',
                             role: 'value'
                         },
                         native: {}
                     });
    
                     adapter.setState(key, {val: String(value), ack: true});
    

    So ganz falsch scheint es nicht zu sein da mir

    1. Die Datenpunkte angelegt werden und

    2. zumindest ein paar Werte eingetragen werden:
    1631_objekte.png

    Nur warum:

    1. Werden zwei komische Ordner angelegt?

    2. und vor allem warum nur ein paar Werte übernommen?

    Hier noch die Daten wie sie vom Drucker kommen

    ! "Node Name","Model Name","Location","Contact","IP Address","Serial No.","Firmware Version","Sub Firmware Version","Memory Size","Tontal Page Count","Color Page Count","Monochrome Page Count","Image Count Total","Image Count Cyan (C)","Image Count Magenta (M)","Image Count Yellow (Y)","Image Count Black (K)","Drum Count","Remaining Life(Drum Unit)","% of Life Remaining(Drum Unit)","Remaining Life(Belt Unit)","% of Life Remaining(Belt Unit) ","Remaining Life(Fuser Unit)","% of Life Remaining(Fuser Unit) ","Remaining Life(Laser Unit)","% of Life Remaining(Laser Unit) ","Remaining Life(PF Kit MP)","% of Life Remaining(PF Kit MP) ","Remaining Life(PF Kit 1)","% of Life Remaining(PF Kit 1) ","A4/Letter","Legal/Folio","B5/Executive","Envelope","A5","Others","Plain/Thin/Recycled","Thick/Thicker/Bond","Envelopes/Env. Thick/Env. Thin","Label","Hagaki","Glossy","Number of times replaced(Drum Unit)","Number of times replaced(Belt Unit)","Number of times replaced(Fuser Unit)","Number of times replaced(Laser Unit)","Number of times replaced(PF Kit MP)","Number of times replaced(PF Kit 1)","Number of times replaced(Waste Toner Box)","Number of times replaced(Cyan (C))","Number of times replaced(Magenta (M))","Number of times replaced(Yellow (Y))","Number of times replaced(Black (K))","Total Paper Jams","Jam MP Tray","Jam Tray 1","Jam Inside","Jam Rear","Jam Duplex","Error 1","Error 2","Error 3","Error 4","Error 5","Error 6","Error 7","Error 8","Error 9","Error 10","Error Page Count 1","Error Page Count 2","Error Page Count 3","Error Page Count 4","Error Page Count 5","Error Page Count 6","Error Page Count 7","Error Page Count 8","Error Page Count 9","Error Page Count 10",
    ! "BRN30055C0FB30C","Brother HL-4150CDN series","Büro","Thorsten","192.168.178.21","E68020H3J373512","1.19","1.03","128","1863","1170","693","5222","1147","1148","1145","1782","1863","23137","93","46183","93","98137","99","98137","99","49966","100","98581","99","1847","0","0","7","3","6","1856","0","7","0","0","0","0","0","0","0","0","0","0","0","2","0","0","2","0","0","0","0","2","Stau Duplex","Toner ersetzen (M)","Toner ersetzen (C)","Toner bestell. K","Toner bestell. M","Toner bestell. Y","Toner bestell. C","","","","1835","1804","1546","1540","1481","1461","1251","0","0","0",

    Ich habe eben eine Pause gemacht und mal die Finger davon gelassen und da waren dann auf einmal alle Werte da.

    im Log kommen die Daten alle an:
    1631_log.png

    1 Antwort Letzte Antwort
    0
    • apollon77A Offline
      apollon77A Offline
      apollon77
      schrieb am zuletzt editiert von
      #2

      Hey,

      das ganze ist denke ich nur eine Anzeige-Thematik in Admin3. Erst wenn Admin3 einen State aufgeklappt hat registriert sich Admin um State-Werte zu empfangen. In dem Fall kann es bei neu angelegten States durchaus sein das da der aktuelle State Wert (der auch noch asynchron gesetzt wird und so) nicht gelesen wird. Das ganze sollte, sobald mal alle Objekte da und in Admin angezeigt werden, nicht mehr passieren. Dann sollten die Updates immer direkt kommen.

      Lad mal neu und teste es dann.

      Warum am Anfang zwei Ordner angelegt werden kann ich nur vermuten: Im Namen sind Punkt drin. Diese gelten in ioBroker zur Abtrennung von "Strukturen" und sollten in normalen Objektnamen daher ausgefiltert werden - es sei denn man will einen "Ordner" haben.

      Alles in allem solltest Du die Namen der State-IDs in jedem Fall noch filtern und dort Leerzeichen, Prozente, Slash und Backslash und alles mögliche rausnehmen.Betrachte die ID bitte als sehr wichtig weil es der eindeutige Identifier ist. Der Name kann dann wieder so aussehen wir du es willst und alles enthalten.

      Weiterhin alle Werte als text anzulegen auch wenn Zahlen drin stehen ist eher unschön. vllt kannst DU das noch optimieren - kommt aber natürlich darauf an ob du weisst was normalerweise wo drin steht. Genau das macht aber einen Adapter im Gegensatz zu einem einfachen JavaScript aus - der Adapter bereitet alles so auf das alle User mit den Daten und so arbeiten können und konvertiert alles wie es nötig ist zurecht.

      Ingo F

      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
      1 Antwort Letzte Antwort
      0
      • M Offline
        M Offline
        MueThoS
        schrieb am zuletzt editiert von
        #3

        Hallo Ingo,

        also Aufgabe für mich:

        1. Sonderzeichen mit str replace oder ähnlichem austauschen

        Zum Beispiel durch _ ersetzen

        Das denke ich bekomme ich hin.

        2. Die Datentypen richtig setzen.

        Das wird schon schwieriger.

        Das jetzt alles Text ist war eine Notlösung weil ich nicht wusste wo das Problem lag.

        Am Besten wäre wenn ich die Values prüfe. Muss ich mal überlegen wie man das am besten macht.

        Bin kein coder deshalb ist alles immer eine Bastelei.

        Wie sieht es aus mit Sowas wie:

        if wert = float.wert dann ist es float

        if wert = int.wert dann ist es int

        sonst text

        oder so in der Art?

        1 Antwort Letzte Antwort
        0
        • apollon77A Offline
          apollon77A Offline
          apollon77
          schrieb am zuletzt editiert von
          #4

          @MueThoS:

          2. Die Datentypen richtig setzen.

          Das wird schon schwieriger.

          Das jetzt alles Text ist war eine Notlösung weil ich nicht wusste wo das Problem lag.

          Am Besten wäre wenn ich die Values prüfe. Muss ich mal überlegen wie man das am besten macht.

          Bin kein coder deshalb ist alles immer eine Bastelei.

          Wie sieht es aus mit Sowas wie:

          if wert = float.wert dann ist es float

          if wert = int.wert dann ist es int

          sonst text

          oder so in der Art? `
          Also ja automatisch erkennen geht z.B.so https://github.com/ioBroker/ioBroker.hi … ry.js#L563

          Aber jetzt komme ich wieder zum Thema "Was ist der Mehrwert eines Adapters" ... wenn ich es richtig verstehe und der Name vermuten lässt ist der Adapter für dieses Druckermodel ... also wird das CSV bei diesen Geräten so sein.

          Was spricht also dagegen basierend auf der CSV-Definition im Code zu definieren welche Spalte welcher Datentyp ist und ggf danach auch zu konvertieren und so und ggf auch basierend auf https://github.com/ioBroker/ioBroker/bl ... E_ROLES.md allen States die korrekten Rollen zu geben.

          Rollen sind essentiell für die Anzeige in Visualisierungen.

          Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

          • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
          • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
          1 Antwort Letzte Antwort
          0
          Antworten
          • In einem neuen Thema antworten
          Anmelden zum Antworten
          • Älteste zuerst
          • Neuste zuerst
          • Meiste Stimmen


          Support us

          ioBroker
          Community Adapters
          Donate

          842

          Online

          32.5k

          Benutzer

          81.7k

          Themen

          1.3m

          Beiträge
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
          ioBroker Community 2014-2025
          logo
          • Anmelden

          • Du hast noch kein Konto? Registrieren

          • Anmelden oder registrieren, um zu suchen
          • Erster Beitrag
            Letzter Beitrag
          0
          • Home
          • Aktuell
          • Tags
          • Ungelesen 0
          • Kategorien
          • Unreplied
          • Beliebt
          • GitHub
          • Docu
          • Hilfe