Screenly--用树莓派让任何屏幕变为可编程的数字标牌

对计算机的访问应该是完全不受限制的。任何人都有动手尝试的权利. 黑客们相信,通过将东西拆开,了解它们的工作原理,并根据这种理解创造新奇的甚至更有趣的东西,可以学习到关于系统的重要知识。他们痛恨一切试图阻止他们这么做的人、物理障碍或者法律。 --《黑客: 计算机革命的英雄》

关于screenly

screenly是个很酷的项目,它让制作数字标牌(Digital signage)变得简单,并且它推出了开源版本!在我们开始介绍screenly之前,我们先来了解一下数字标牌(Digital signage)是什么。

如果你对数字标牌行业兴趣不大,只对动手用树莓派构建它感兴趣,那你只需要知道数字标牌就是可以播放内容的屏幕就行了,然后直接跳到screenly部分.

数字标牌(Digital signage

当你在肯德基里点了一对辣翅、一份土豆泥、一杯玉米饮,拿到2099编号的小票,等待柜台前的屏幕告知你领餐;
当你在招商银行取号排队办理挂失,看着柜台前的红色数字从20慢慢变到30;
当你在盛夏的午后,站在奶茶店门口,看着屏幕上琳琅满目的新品,犯了选择困难症;
当你拉着漂亮小姐姐,在电影开始前最后1分钟,奔往5号厅,在影院长廊里,身边飞过一个个播着不通预告片的屏幕;

上边出现的这些屏幕,都是数字标牌

数字标牌有些像一个小电脑,店家将它们希望呈现给用户的内容投射到屏幕上。

我们来看看维基百科上更为专业的介绍(这个词条写得十分精彩,我对数字标牌行业的理解,主要也是基于这个词条,目前这个词条还没有中文版本,在阅读的时候,顺便也翻译一下,做了些微调,引述如下):

数字标牌是电子标牌的一个子概念。数字显示器使用诸如LCD,LED,投影和电子纸等技术来显示数字图像、视频、网页、天气数据、或文本。它们可以在交通系统、博物馆、体育场馆、零售店、酒店、餐馆等地方找到,以提供路标、展览、营销和户外广告。

数字标牌被定义为:

通常与销售、广告和营销紧密相关的数字显示器

角色和功能

数字标牌有许多功能与目标,最常见的包括:

  • 公共信息 - 新闻、天气、交通和本地(特定位置)信息,如地图、火警出口和旅客信息等。
  • 内部信息 - 公司信息,如健康和安全项目、新闻等。
  • 产品信息 - 定价、产品照片、原材料或配料等 - 特别适用于食品营销,其中标牌可能包括营养成分或建议的用途、配方。
  • 提高客户服务体验的信息 - 博物馆、画廊、动物园、公园和花园,展览,旅游和文化景点的解说标牌。
  • 广告和促销 - 宣传产品或服务
  • 品牌建设 - 店内数字标牌,以促进品牌和建立品牌标识。
  • 影响顾客的行为 - 导航,指导顾客到不同的地方,增加店面的“停留时间”,以及为这种影响服务的其他用途。
  • 影响产品或品牌决策 - 在销售点设计影响选择的标牌,例如标牌,以帮助购物者选择时装店内的服装或帮助顾客找到产品、查看价格、访问产品信息
  • 增强客户体验 - 应用包括餐厅、银行等候区提示客户等待时间
  • 导航 - 交互式屏幕的屏幕
  • 预约 - 墙壁或桌面上的小型互动屏幕,与资源调度平台相集成。

行业概览

全球有200多家不同的公司销售数字标牌解决方案,数字标牌市场预计到2020年将增长到219.2亿美元。美国占据市场份额的大部分。亚太和欧洲地区已经显示出前景,欧洲的德国和英国,亚太地区的日本和韩国。预计这四个国家到2020年的增长率最高

数字标牌的主要目标客户是餐馆、零售商、办公楼、地方规划机构、公共交通服务等。这些行业对数字标牌的具体应用,就不一一引述了,参考:Digital signage

数字内容

数字内容通过显示控制软件进行管理。控制软件可以是独立的专用程序,也可以与硬件集成。程序可以从音频、视频、图像、文本清单中创建新消息,这些消息以不同的组合和排列组合以实时产生新消息。

数字标牌上显示的数字内容往往属于以下形式之一:

  • 文本 - 滚动文本。滚动固定的文本或动态更新的文本。
  • 图像 - 滚动图像,通常是广告海报
  • 视频 - 可自定义视频
  • 交互式界面 - 将标牌与触摸屏、传感器、RFID技术集成,以便与用户进行双向通信。交互式数字标牌有助于吸引用户,也可以帮助广告商了解客户行为。
  • 上下文感知接口 - 将标牌与摄像头、传感器集成,以监控周围环境,根据观众信息、天气状况或其他外部因素更新标牌内容。

显示内容控制软件

对于小面积区域内使用的设备,可以采用U盘和SD来更新内容。对于分布在不同区域的大型网络,往往使用DAN(数字广告网络)播放器,它们直接连到监视器和互联网,允许最终用户从任何位置管理多个DAN播放器

技术

  • 互动层面,交互式数字标牌允许用户通过触摸屏,体感设备或手机扫码与数字内容交互
  • 上下文感知数字标牌利用传感器、摄像头、RFID技术、物联网(IoT)等硬件设施来观察周围环境,处理信息并根据环境决定展示的内容。许多数字标牌产品携带摄像头,通过估算路人的年龄、性别和经济状况来收集购物者的统计数据,并使用这些信息更新标牌内容或进行数据分析

标准

JPEG图像和MPEG4视频仍然是数字标牌行业的主流数字内容格式。对于交互式内容,HTML5和Unity3D由于其在Web开发人员和多媒体设计人员中的流行而广泛使用。

screenly提供的解决方案

Digital signage made easy.

前边的部分里,维基百科对数字标牌进行了多视角的介绍和分析,我们对这个行业也有了整体的了解。这是一个非常有趣的行业,计算机技术是数字标牌的基础(从名字我们就可以看出),借助技术和想象力,有很多有趣的事情可以做。

但如何介入这个领域呢?毕竟我们不可能从硬件开始制作一个数字标牌。即便我们购买了一个数字标牌的解决方案,在应用它的时候,某天灵机一动,想对其它做些改进,也基本是不可能的。除非它们开放源代码。我们才可能改进它,把创意融入其中。

我喜欢《黑客: 计算机革命的英雄》中的这段话:

对计算机的访问应该是不受限制的、完全的。任何人都有动手尝试的权利. 黑客们相信,通过将东西拆开,了解它们的工作原理,并根据这种理解创造新奇的甚至更有趣的东西,可以学习到关于系统的重要知识。他们痛恨一切试图阻止他们这么做的人、物理障碍或者法律。

screenly给了我们这种机会,screenly是数字标牌的解决方案,他们除了推出商业版本之外,也推出了社区版,将源代码开放了出来。

screenly提供的商业版本在此不多介绍,感兴趣的小伙伴可以到他们主页去看,下边重点说说开源的社区版

screenly社区版介绍

Screenly OSE/Open Source Edition是由社区支持并由Screenly维护的免费数字标牌软件。

介绍视频在这里:这里,你也可以直观地体验线上demo

线上demo

Screenly OSE使用树莓派作为它们的载体,由于树莓派有HDMI接口,所以你可以将任何支持HDMI接口的屏幕变为可编程的数字标牌!成本低到令人震惊!以至于我觉得Screenly是来搅局的哈哈

技术上,Screenly OSE在树莓派中只是作为一个普通的软件存在,你依然可以在操作系统中做任何你想做的事。诸如你可以让Screenly OSE与opencv结合,做出一些令人惊叹的交互式数字标牌,诸如我在scratch3-adapter文档中写的:

当穿着裙子的姑娘走近屏幕,屏幕立马给她安利新款纪梵希,而穿着格子衬衫的大叔靠近时,屏幕则以机械键盘蛊惑他

事实上scratch3-adapter文档中屏幕与门的互动例子,就是用Screenly OSE + home assistant+ scratch3.0实现的

Screenly OSE中有很多有趣的技术工作。诸如它集成了resin-wifi-connect, 如此一来Screenly OSE的无线连接将变得极其简易。对于面向非技术的用户的产品,简单的初始化无线连接至关重要

安装

Screenly OSE的安装十分简单,与安装普通树莓派镜像几乎无差别。我们在此假设你对树莓派并不熟悉,你需要以下清单里的东西:

  • 一个树莓派,推荐3B
  • 一个大于4GB的SD卡
  • 一根HDMI高清线
  • 一个无线网络(不是必须的,你也可以离线使用它)
  • 一个支持HDMI的屏幕(可以直接用电视)

结下来我们有两种方式使用Screenly OSE,一种方法是直接烧录官方提供的镜像,这种方式最为简单,如何烧录镜像我就不赘述了,可以google一下。

另一种方式需要你有技术背景,由于Screenly OSE只是一个软件,所以你可以在raspbian中手动安装它,安装已经一键化了,切换到root用户(sudo -i),然后在tmux里运行:

bash <(curl -sL https://www.screenly.io/install-ose.sh)

如果中途失败(国内网络你懂的),重新执行就行

安装完成之后,配置好wifi,将树莓派用高清线连接屏幕,重启,连上Screenly OSE发射的热点(名字里包含Screenly),屏幕会显示web控制平台的入口地址(默认是:http://raspberrypi.local/)

使用

登陆web控制平台,你就进入了前头线上demo展示的页面,你可以上传需要展示的内容啦!

线上demo

在web控制平台里,你可以设置内容的展示时间和可见性等属性,使用简单,页面基本是自说明的。

enjoy it!

API

Screenly OSE提供了RESTful风格的API,文档参考:api/docs

有了API,你可以轻松做出交互式的数字标牌,大多数时候不需要入侵 Screenly OSE的源码。如果你想对Screenly OSE做二次开发,建议使用docker,具体参考项目主页

由于源码是开放的,所以

Do What The Fuck You Want To

互动实例

我们前段时间布置了一个展厅,展厅内使用了很多智能设备,整个空间可以使用scratch3.0来编程,关于这个想法参考我之前的文章:积木化编程与智能家居

在这个展厅里,我们准备实践空间编程的概念,通过拖拽积木,我们可以赋予一个空间以智能

其中有一个场景是: 使用scratch3.0 + Screenly OSE制作一个互动的数字标牌,当门被打开,有人进入房间的时候,标牌上由休眠背景图片切到宣传片播放;当人们离开,门被关上的时候,屏幕切换到休眠状态.演示如下

技术上的实现十分简单,我们使用门窗感应器来感知门的开闭,根据门的开闭状态来决定屏幕播放的内容。

具体而言用到如下三个api接口:

curl -s "http://localhost:8080/api/v1/assets"  # 列出所有资源
curl -s "http://localhost:8080/api/v1/assets/control/asset&fddd611fc45844788d9cbad32d761f82"  # 切换到背景图片
curl -s "http://localhost:8080/api/v1/assets/control/asset&e19c9e1525cd4e968c5433199dcf24ac"  # 切换到视频
# 注意: 目前接口只能在树莓派内部访问(安全性),如果你要把它暴露出来,需要修改源码

《三体》有句名言

给岁月以文明,而不是给文明以岁月

我们模仿这句作为文章的结尾

给空间以智能 ,而不是给智能以空间

参考




Fork me on GitHub