E-reader info display (narrowcasting)

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • entragan
  • Registratie: Oktober 2023
  • Laatst online: 09-09-2024
Briljant idee in de voorlaatste podcast, om e-book readers te gaan gebruiken voor info display!
Zoals die supermarkt kaartjes, maar dan uitgebreider. Ter info: het idee in de podcast was vergaderkamer displays bij de deur om te kunnen zien of ze zijn gereserveerd.

Ik begon veel te moeilijk te denken, mijn tamelijk nieuwe Kobo Sage e-reader heeft een draak van een (experimentele) browser, die niks kan, niks wil en sites met ook maar een beetje javascript niet wil laten zien.

Na wat zoekwerk kwam ik op een pagina waar iemand opperde gewoon een image te genereren van je data en die in de simpelste vorm mogelijk te tonen. html pagina, image op 100%, elke 30s refreshen en klaar! Nu hoef je alleen nog maar ca. elke 30s dat plaatje opnieuw te maken.

En dat kan dan weer vrij makkelijk met elke backend software, bijv. node i.c.m. node-canvas.
Even zorgen dat je image niet gecachet wordt en klaar ben je.

Maar, mijn experimentele e-reader browser kan niet fullscreen. En na een tijdje gaat die e-reader op standby. Ben erg benieuwd naar jullie experimenten op dit gebied.

Acties:
  • 0 Henk 'm!

  • entragan
  • Registratie: Oktober 2023
  • Laatst online: 09-09-2024
Hier setup code voor een node servertje

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# server.js
const express = require( 'express' );
const render = require( './render' );
const app = express();

const SRC_DIR = __dirname;
const PUBLIC_DIR = SRC_DIR + '/../public';

app.use( express.static( PUBLIC_DIR ) );

app.listen( 3001, () => {
    console.log( 'Server is running on port 3001' );
} );

render( SRC_DIR, PUBLIC_DIR );
setInterval( () => render( SRC_DIR, PUBLIC_DIR ), 10000 );


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# render.js
module.exports = ( SRC_DIR, PUBLIC_DIR ) => {
    const { registerFont, createCanvas } = require( 'canvas' )
    const fs = require( "fs" );
    const moment = require( "moment" );
    moment.locale( 'nl' );

    registerFont( SRC_DIR + '/font/Roboto-Regular.ttf', { family: 'RobotoRegular' } );

    const width = 768;
    const height = 1024;

    const canvas = createCanvas( width, height );
    const ctx = canvas.getContext( "2d" );
    
    // bg
    ctx.fillStyle = "#000000";
    ctx.fillRect( 0, 0, width, height );
    
    // date
    ctx.font = "24px RobotoRegular";
    ctx.textAlign = 'left';
    ctx.textBaseline = 'top'
    ctx.fillStyle = "#fff";
    ctx.fillText( moment().format( 'LL' ), 10, 10 );
    
    // time
    ctx.font = "24px RobotoRegular";
    ctx.textAlign = 'right';
    ctx.textBaseline = 'top'
    ctx.fillStyle = "#fff";
    ctx.fillText( moment().format( 'HH:mm:ss' ), canvas.width - 10, 10 );

    // header line
    ctx.strokeStyle = 'white';
    ctx.lineWidth = 2;
    ctx.beginPath();
    ctx.moveTo( 10, 48 );
    ctx.lineTo( canvas.width - 10, 48 );
    ctx.stroke();

    const buffer = canvas.toBuffer( "image/png" );
    fs.writeFileSync( PUBLIC_DIR + "/image.png", buffer );
}

Acties:
  • 0 Henk 'm!

  • entragan
  • Registratie: Oktober 2023
  • Laatst online: 09-09-2024
Simpele setup op Github

Acties:
  • 0 Henk 'm!

  • entragan
  • Registratie: Oktober 2023
  • Laatst online: 09-09-2024
Vanaf hier kun je natuurlijk alles binnentrekken van alle mogelijke API's en in je display verwerken, bijv. agenda's, weer, verkeer, etc.

Acties:
  • +1 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 14:54

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Er zijn talloze epaper modules , hang er een ESP'tje aan, 3D print een lijstje en Bob is je oom. Maar ik snap even de insteek van je topic niet; ik zie geen vraag en/of (aanzet tot) discussie?

Verder: Gebruik a.u.b. de wijzig-link (rechtsbovenaan je post) als je iets toe te voegen hebt en je de laatste bent die heeft gepost in het topic; je topic herhaaldelijk omhoogschoppen is niet nodig ;)

[ Voor 59% gewijzigd door RobIII op 09-01-2024 09:44 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Barryke
  • Registratie: Augustus 2003
  • Laatst online: 10-05 21:27

Barryke

blauw

entragan schreef op dinsdag 9 januari 2024 @ 09:01:
Ik begon veel te moeilijk te denken
Doe je nog steeds. Bekijk het zo: als je toch al een computer en webbrowser gebruikt, gebruik dan ook gewoon een LCD/TFT monitor zodat je de functionaliteit kan benutten.

Mijn experimenten op dit gebied zijn met een microcontroller met Wifi aan boord. Je kan gewoon een Arduino gebruiken, die zelf het beeld tekent, of ophaalt van een webpagina.

In het bijzonder raad ik aan ESPHome (zit ook in Home Assistant, erg handig) en vrijwel detzelfde setup als https://esphome.io/cookbook/display_time_temp_oled

Maar er zijn ook epapers die je kan aansturen, zoals producten van Waveshare of M5Stack.

Mocht je ESPHome nog niet kennen: het is eigenlijk gewoon een Arduino-code generator. Leuk speelgoed, want na eerste keer "programmeren" via USB, kan die ook Over The Air (OTA) de code op de chip updaten. En alles wat jij daarvoor hoeft te doen is de configuratie in YAML.

Error 304: Please hit any user to continue.

Pagina: 1