Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

巴法云 C#/.NET SDK。支持TCP和MQTT协议接入,并提供超级简单的设备操作API。跨平台,支持Linux、Windows、OSX,支持树莓派。

License

Notifications You must be signed in to change notification settings

withsalt/BemfaCloud

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

23 Commits

Repository files navigation

BemfaCloud

巴法云 C#/.NET SDK。支持TCP和MQTT协议接入,并提供超级简单的设备操作API。跨平台,支持Linux、Windows、OSX,支持树莓派。

特别鸣谢

巴法云:https://cloud.bemfa.com/
MQTTnet: https://github.com/dotnet/MQTTnet
GodSharp.Socket: https://github.com/godsharp/GodSharp.Socket

构建状态

包名 版本 说明
BemfaCloud NuGet Version 基础包,如果只是使用TCP或MQTT连接,只需使用这个库。
BemfaCloud.Devices NuGet Version 设备操作API,提供简单易用的设备操作API。

快速开始

新建主题

登录到巴法云之后,点击新建主题。
Tips:
巴发云通过主题名称后三位判断主题类型

  • 001: 插座设备;
  • 002: 灯泡设备;
  • 003: 风扇设备;
  • 004: 传感器设备;
  • 005: 空调设备;
  • 006: 开关设备;
  • 009: 窗帘设备;

testSwitch006,创建之后即为开关设备。

安装Nuget包

通过Nuget包管理器安装BemfaCloud NuGet VersionBemfaCloud.Devices NuGet Version

通过Terminal安装:

dotnet add package BemfaCloud
dotnet add package BemfaCloud.Devices

使用一个开关设备

控制一个开关关设备testSwitchMqtt001TCP接入完整示例。

using System;
using System.Threading.Tasks;
using BemfaCloud;
using BemfaCloud.Connectors.Builder;
using BemfaCloud.Devices;
using BemfaCloud.Models;
namespace ConsoleApp7
{
 internal class Program
 {
 static async Task Main(string[] args)
 {
 //构建一个Connector对象
 using IBemfaConnector connector = new BemfaConnectorBuilder()
 .WithTcp()
 .WithSecret("在此处填写你的私钥")
 .WithTopics("testSwitch001") //可订阅多个
 .WithErrorHandler((e) =>
 {
 Console.WriteLine($"[LOG][{DateTime.Now}] {e.Message}");
 })
 .WithMessageHandler((MessageEventArgs e) =>
 {
 if (e.Type == CommandType.GetTimestamp)
 {
 Console.WriteLine($"收到消息:" + e);
 }
 })
 .Build();
 //连接到服务器
 bool isConnect = await connector.ConnectAsync();
 if (!isConnect)
 {
 throw new Exception("Connect with server faild.");
 }
 //使用开关设备
 BemfaSwitch @switch = new BemfaSwitch("testSwitch001", connector);
 @switch.On += (e) =>
 {
 //执行开关打开动作
 Console.WriteLine("哦呦~需要打开开关");
 return true;
 };
 @switch.Off += (e) =>
 {
 //执行开关关闭动作
 Console.WriteLine("哦呦~需要关闭开关");
 return true;
 };
 @switch.OnException += (e) =>
 {
 Console.WriteLine($"发生了异常:{e.Message}");
 };
 @switch.OnMessage += (e) =>
 {
 Console.WriteLine($"收到无法解析的消息:{e.ToString()}");
 };
 while (true)
 {
 string readStr = Console.ReadLine();
 if (readStr.Equals("q", StringComparison.OrdinalIgnoreCase)
 || readStr.Equals("exit", StringComparison.OrdinalIgnoreCase))
 {
 break;
 }
 }
 await connector.DisconnectAsync();
 Console.WriteLine($"OK");
 }
 }
}

示例

使用TCP连接

using IBemfaConnector connector = new BemfaConnectorBuilder()
 .WithTcp()
 .WithSecret("在此处填写你的私钥")
 .WithTopics("testSwitchMqtt001") //可订阅多个
 .WithErrorHandler((e) =>
 {
 Console.WriteLine($"[LOG][{DateTime.Now}] {e.Message}");
 })
 .WithMessageHandler((MessageEventArgs e) =>
 {
 Console.WriteLine($"收到消息:" + e);
 })
 .Build();
//连接到服务器
bool isConnect = await connector.ConnectAsync();
if (!isConnect)
{
 throw new Exception("Connect with server faild.");
}

使用MQTT

using IBemfaConnector connector = new BemfaConnectorBuilder()
 .WithMqtt()
 .WithSecret("在此处填写你的私钥")
 .WithTopics("testSwitchMqtt001") //可订阅多个
 .WithErrorHandler((e) =>
 {
 Console.WriteLine($"[LOG][{DateTime.Now}] {e.Message}");
 })
 .WithMessageHandler((MessageEventArgs e) =>
 {
 Console.WriteLine($"收到消息:" + e);
 })
 .Build();
//连接到服务器
bool isConnect = await connector.ConnectAsync();
if (!isConnect)
{
 throw new Exception("Connect with server faild.");
}

支持的设备类型

支持巴法云常见的设备。

设备 枚举
插座 001 BemfaSocket
002 BemfaLight
风扇 003 BemfaFan
传感器 004 BemfaSensor
空调 005 BemfaAircon
开关 006 BemfaSwitch
窗帘 009 BemfaCurtain

插座示例

static void Socket(IBemfaConnector connector)
{
 BemfaSocket socket = new BemfaSocket("填写设备主题", connector);
 socket.On += (e) =>
 {
 //执行打开插座动作
 Console.WriteLine("哦呦~需要打开插座");
 return true;
 };
 socket.Off += (e) =>
 {
 //执行关闭插座动作
 Console.WriteLine("哦呦~需要关闭插座");
 return true;
 };
 socket.OnException += (e) =>
 {
 Console.WriteLine($"发生了异常:{e.Message}");
 };
 socket.OnMessage += (e) =>
 {
 Console.WriteLine($"收到无法解析的消息:{e.ToString()}");
 };
}

对于OnOff一类的操作,在操作完成之后,需要返回操作是否成功,用于向服务器指示当前设备状态。比如成功之后返回true,会像服务器指示已经完成操作且成功了。

更多完整示例

https://github.com/withsalt/BemfaCloud/tree/main/src/Examples

树莓派

得益于.NET的完全跨平台特性,且微软提供的用于直接访问GPIO的库(System.Device.Gpio)。我们可以C#基于树莓派搭建一个强大的智能家居控制中心。
树莓派示例:https://github.com/withsalt/BemfaCloud/blob/main/src/Examples/BemfaCloud.Example.RaspberryPi/Program.cs

About

巴法云 C#/.NET SDK。支持TCP和MQTT协议接入,并提供超级简单的设备操作API。跨平台,支持Linux、Windows、OSX,支持树莓派。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

AltStyle によって変換されたページ (->オリジナル) /