Playful 项目使用教程

Playful 项目使用教程

playful A Ruby implementation of UPnP that works with Ruby >= 1.9.x 项目地址: https://gitcode.com/gh_mirrors/pl/playful

1. 项目介绍

Playful 是一个 Ruby 实现的 UPnP(Universal Plug and Play)库,适用于 Ruby 1.9 及以上版本。该项目旨在填补 Ruby 1.9 中因 Soap4r 支持被移除而导致的 UPnP 实现空白。Playful 允许用户进行 SSDP 搜索、发现、广告,并能够作为 UPnP 控制点,提供 UPnP 设备和服务。该项目使用 EventMachine,因此熟悉 EventMachine 的概念将有助于更好地使用 Playful。

2. 项目快速启动

安装 Playful

首先,确保你已经安装了 Ruby 1.9 或更高版本。然后,使用以下命令安装 Playful:

gem install playful --pre

基本使用示例

以下是一个简单的示例,展示如何使用 Playful 进行 SSDP 搜索并发现设备:

require 'playful/ssdp'

# 搜索所有设备
all_devices = Playful::SSDP.search

# 搜索根设备
root_devices = Playful::SSDP.search 'upnp:rootdevices'

# 搜索特定 UUID 的设备
my_device = Playful::SSDP.search 'uuid:3c202906-992d-3f0f-b94c-90e1902a136d'

# 搜索特定类型的设备
my_media_server = Playful::SSDP.search 'urn:schemas-upnp-org:device:MediaServer:1'

# 输出搜索结果
all_devices.each do |device|
  puts device
end

使用 EventMachine 进行异步搜索

如果你希望在 EventMachine 中进行异步搜索,可以使用以下代码:

require 'playful/ssdp'
require 'playful/control_point/device'

EM.run do
  searcher = Playful::SSDP.search 'uuid:3c202906-992d-3f0f-b94c-90e1902a136d'

  searcher.discovery_responses.pop do |notification|
    device_creator = Playful::ControlPoint::Device.new(ssdp_notification: notification)

    device_creator.errback do
      puts "Failed creating the device"
      exit
    end

    device_creator.callback do |built_device|
      puts "Device has been created now"
      p built_device.service_list.first.class
      p built_device.service_list.first.service_type
      p built_device.service_list.first.singleton_methods
      p built_device.service_list.first.GetSystemUpdateID
    end

    device_creator.fetch
  end
end

3. 应用案例和最佳实践

媒体服务器控制

Playful 可以用于控制 UPnP 媒体服务器,例如 Plex、Twonky 等。以下是一个简单的示例,展示如何搜索并控制媒体服务器:

require 'playful/ssdp'
require 'playful/control_point/device'

EM.run do
  searcher = Playful::SSDP.search 'urn:schemas-upnp-org:device:MediaServer:1'

  searcher.discovery_responses.pop do |notification|
    device_creator = Playful::ControlPoint::Device.new(ssdp_notification: notification)

    device_creator.errback do
      puts "Failed creating the device"
      exit
    end

    device_creator.callback do |built_device|
      puts "Media Server has been created now"
      p built_device.service_list.first.class
      p built_device.service_list.first.service_type
      p built_device.service_list.first.singleton_methods
      p built_device.service_list.first.GetSystemUpdateID
    end

    device_creator.fetch
  end
end

家庭自动化

Playful 还可以用于控制家庭自动化设备,例如 Philips Hue 灯泡。以下是一个简单的示例,展示如何搜索并控制 Philips Hue 灯泡:

require 'playful/ssdp'
require 'playful/control_point/device'

EM.run do
  searcher = Playful::SSDP.search 'urn:schemas-upnp-org:device:HVAC_System:1'

  searcher.discovery_responses.pop do |notification|
    device_creator = Playful::ControlPoint::Device.new(ssdp_notification: notification)

    device_creator.errback do
      puts "Failed creating the device"
      exit
    end

    device_creator.callback do |built_device|
      puts "HVAC System has been created now"
      p built_device.service_list.first.class
      p built_device.service_list.first.service_type
      p built_device.service_list.first.singleton_methods
      p built_device.service_list.first.GetSystemUpdateID
    end

    device_creator.fetch
  end
end

4. 典型生态项目

UPnP 控制点在 Sinatra 中的应用

Playful 提供了 Rack 中间件,可以轻松地将 UPnP 控制点集成到 Sinatra 应用中。以下是一个简单的示例,展示如何在 Sinatra 应用中使用 Playful:

require 'sinatra'
require 'playful/control_point'

get '/' do
  control_point = Playful::ControlPoint.new
  devices = control_point.search_and_create_devices
  devices.map { |device| device.name }.join(', ')
end

UPnP 设备和服务开发

Playful 不仅支持控制现有的 UPnP 设备,还可以用于开发新的 UPnP 设备和服务。以下是一个简单的示例,展示如何使用 Playful 创建一个简单的 UPnP 设备:

require 'playful/device'

class MyDevice < Playful::Device
  service_type 'urn:schemas-upnp-org:service:MyService:1'

  action :MyAction do
    argument :input, :in
    argument :output, :out
  end
end

device = MyDevice.new
device.start

通过以上示例,你可以轻松地创建和控制 UPnP 设备和服务,实现各种智能家居和媒体控制应用。

playful A Ruby implementation of UPnP that works with Ruby >= 1.9.x 项目地址: https://gitcode.com/gh_mirrors/pl/playful

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金畏战Goddard

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值