Werkstattbericht B-Screen

20230711_121303

problem:
als frisch gebackener grundschulimker erzählte ich vergangenes schuljahr bei jeder gelegenheit von der bienenwaage. konnte bisher aber nur auf den hiveeyes-link verweisen. leute ohne tragbares, internetverbundenes gerät konnten damit wenig anfangen.
hier fehlte eindeutig eine benutzerschnittstelle!

lösung:
vorort-anzeigeterminal für die bienenwaage zum aufstellen direkt am bienenstand - hergestellt aus altem monitor mit raspberry pi zero.
(für mehr bilder auch aus dem innenleben des anzeigeschränkchens: bild verlinkt zur gallery).

bastelbericht:

installation auf der mikro-sd via rpi-imager

monitor anschließen, pi und monitor mit strom versorgen, zur konfiguration maus und tastatur anschließen (dafür ist eine usb-hub hilfreich: micro-usb auf mehrfach usb. der zero hat nur einen freien micro-usb-anschluss).

als erstes die monitoreinstellungen, hochkant ein und energiespar aus via raspberry pi os screen config:
:ballot_box_with_check: screen orientiation: left (1024x1280)
:ballot_box_with_check: screen blanking aus

hauptproblem: auf dem raspi zero gehen firefox und chrome gar nicht!

einziger hiveeyes-tauglicher browser, der auch auf dem zero hochkommt: midori
sudo apt install midori x11-apps xdotool unclutter

midori mit vollbild grafana-desktop einrichten:

einen maßgeschneiderten hiveeyes-desktop im grafana-kiosk-mode (d.h. ohne den grafana-toolbar links) zusammenstellen. damit der dann automatisch ohne weitere eingaben nach dem power-on dargestellt wird:

in den midori-einstellungen:
:ballot_box_with_check: hiveeyes-kiosk als startseite
:ballot_box_with_check: browser mit startseite starten

midori in den autostart:
edit /etc/xdg/autostart/midori.desktop

[Desktop Entry]
Type=Application
Name=Midori
Comment=Midori Webbrowser per Shellskript starten
NoDisplay=false
Exec=/bin/bash /home/kux/startMidori.sh &

dieser autostart-eintrag führt beim systemstart startMidori.sh aus:

#!/bin/bash
midori &
sleep 20
window_id=$(xdotool search --onlyvisible midori)
xdotool windowactivate --sync $window_id key F11  # midori in fullscreen schalten
unclutter &					                   	  # mauspfeil verstecken

[danke wiki LeRalf]

push-button(s) zum sauber runterfahren

zwei mal zwei steckkontakte auf die entsprechenden pinouts aufgelötet:
pin21+gnd,
pin3+gnd
zur verbindung mit je einem push-button

in der /boot/config.txt eintragen:

# added manually, 200230709, mois:
dtoverlay=gpio-shutdown,gpio_pin=3,active_low=1,gpio_pull=off   # shutdown, bootup
dtoverlay=gpio-shutdown,gpio_pin=21			                	# kann nur shutdown

(...) — Raspberry pi powerdown and powerup button
Raspberry Pi über GPIO-Eingang herunterfahren
pi 3 - Raspberry Pi 3 model B "dtoverlay=gpio-shutdown" - Raspberry Pi Stack Exchange

change/add wifi-network via ssh:

sudo raspi-config
oder
via wpa_supplicant
Changing Wifi networks from the command line interface - Raspberry Pi Forums
Raspberry Pi OS: WLAN konfigurieren
How To Configure WiFi on Raspberry Pi: Step By Step Tutorial - Latest Open Tech From Seeed

wpa_supplicant.conf, abspeichern in /boot:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=DE

network={
     ssid="ssid"
     psk="password"
     scan_ssid=1
}

bonus: fensterbasierte programme entfernt starten und temperaturkontrolle

da der b-screen keine maus und keine tastatur hat und direkt in die graphische oberfläche bootet, kann es hilfreich sein, per ssh dort graphische programme laufen UND anzeigen lassen:
ssh -X [username]@[hostname]

abgekürzt in .ssh/config

  Host b-screen-x
    User [username]
    HostName [hostname]
    ForwardX11 yes
    IdentityFile [path-to-private-key]

(public-key in die authorized_keys auf dem b-screen nicht vergessen)

:grey_exclamation:wichtig: damit es wie vorgesehen funktioniert, noch in der .bashrc auf dem b-screen eintragen:

export DISPLAY=:0                  # ohne läuft xeyes zwar remote, wird aber lokal angezeigt
alias temp="vcgencmd measure_temp" # raspi-temperatur anzeigen

(mehr erklärung zu export DISPLAY=:0)

und weiter??

auf die idee gekommen bin ich durch das “Grafana Chart Magic Mirror Module”. tatsächlich wäre ein magic mirror jetzt noch die coole ausbauform: lass dein lieblings-hiveeyes-panel in deinem badezimmerspiegel anzeigen. das entsprechende einweg-spiegelglas gibts hier und hier und hier.

4 Likes

Falls jemand so was mit einem RasPi 4 – statt einem Zero, wie von @mois versendet – und zwei Monitoren vor hat, kann hier schauen: Grafana-Grafiken mit Raspberry Pi 4 auf 2 Monitoren und Browser autostart / fullscreen

ja, stimmt! ich sollte mich öfter an wegweisende threads hier im forum erinnern!
ab raspi 2b funktionieren auch firefox und chrome. das spart das ganze gefummel mit dem midori-browser.

1 Like

hmm. mal wieder eine sd-karte abgeraucht, diesmal hier auf dem b-screen. aber was solls: neuinstallation mit dietpi (mal was neues probieren…). alles reproduzierbar.

ABER: am ende hängt sich midori (der einzige browser mit auch in armv6 funktionierendem kiosk-mode) am grafana-lade-rad auf. :roll_eyes:

kann es sein, dass grafana in der zwischenzeit (seit juli 23) für armv6 (ich arbeite immer noch mit dem pi zero, daher auch armv6 als limitierender faktor) unverdaulich geworden ist?

oder fehlt meinem setup auf dem dietpi irgendwas, was der midori zur seitendarstellung von grafana-dashboards braucht (ohne dass er das kommuniziert, indem er z.b. mit einer fehlermeldung abbricht)?

gibts eigentlich sowas wie einen proxy-dienst, den ich auf einem dritten rechner installieren kann, der grafana-seiten abruft und in schöne statische html-seiten umrechnet, die dann auch wirklich jeder uraltbrowser am proxy abrufen und darstellen kann, sobald er grafik kann?

Was wir bei der documenta gemacht haben war die grafana-Diagramme als Grafiken zu exportieren, und zwar mit grafana-Bordmittel. Aber "Panel-als-Bild" funktioniert nicht mehr (Stand 05,/2024,).

von dort aus habe ich amotls imagecast gefunden. damit sollte ich hier weiterkommen. kommt auf den experimentierzettel ganz oben drauf. danke für den hinweis!

Ja, allerdings ist das Ergebnis eine Bitmap statt HTML, so dass es wirklich jedes Gerät darstellen kann, das irgendwie Bitmaps auf einen Schirm oder ein elektronisches Papier bringen, oder sonstwie Pixel darstellen kann.

Das ist das richtige Fundstück, genau. Seit Version 0.6.0 kann es Inhalte bzw. Fragmente aus HTML Seiten ausschneiden.

Wir haben das auch als Service laufen, so dass man es nicht selbst hosten muss. Die entsprechende Funktionalität war bisher aber noch unzureichend dokumentiert, was hiermit nachgeholt wurde.

1 Like

der imagecast ist ja wirklich geilofant. vielen dank auch für die doku! der kann ja den ganzen dashboard:

http://imagecast.hiveeyes.org/?uri=https%3A%2F%2Fswarm.hiveeyes.org%2Fgrafana%2Fd%2F4xcQYu94z%2Fmois-b-screen%3ForgId%3D2%26refresh%3D1m

jetzt muss ich nur noch rauskriegen, wie ich ihn nicht landscape sondern hochkant rendern lassen kann.
kann ich dem irgendwie höhe und breite des gewünschten bilds mitgeben?
(auf den ersten blick find ich das nicht in den features).
der b-screen ist ja ein hochkant-screen.

aber sehr cool: damit wäre dann das kein-browser-mit-kiosk-mode-auf-dem-raspi-zero gelöst.

Firefox does not, at this time of writing, expose DeviceOrientation events on any Desktop platform. Your event handler is not triggered in Firefox simply for the reason that the API is not enabled in their Desktop browser builds.
Quelle: javascript - 'deviceorientation' in Firefox? - Stack Overflow

also der schalter existiert, aber nicht in den browsern? wäre ja egal, wenn ich ihn in zusammenhang mit imagecast schalten könnte.
oder gehe ich da in die irre?

Es scheint kein Schalter zu sein, sondern ein Ereignis, das man abonnieren kann, um damit festzustellen, wie das Gerät orientiert ist.

Schau mal dort:

1 Like

A post was merged into an existing topic: “Panel-als-Bild” funktioniert nicht mehr