夸克之书

  • 首页
  • 科普
  • 笔记
  • .NET/C#
  • 物联网
  • 算法
  • Linux
  • 树莓派
夸克之内,别有洞天
  1. 首页
  2. 默认
  3. 正文

C#连接到巴法云

2023-07-18 8813点热度 0人点赞 0条评论

项目地址:https://github.com/withsalt/BemfaCloud

新建主题

登录到巴法云之后,点击新建主题。

%title插图%num


 Tips:
巴发云通过主题名称后三位判断主题类型

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

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

安装Nuget包

通过Nuget包管理器安装BemfaCloud  和BemfaCloud.Devices 
或
通过Terminal安装:

dotnet add package BemfaCloud
dotnet add package BemfaCloud.Devices

使用一个开关设备

控制一个开关关设备testSwitchMqtt001的完整示例。

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("testSwitchMqtt001")  //可订阅多个
                .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("testSwitchMqtt001", 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");
        }
    }
}

本作品采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2023-07-18

afirefish

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论
放松一下
https://www.quarkbook.com/wp-content/uploads/2021/05/凤凰传奇-海底(Live).flac
分类
  • .NET/C#
  • Linux
  • 树莓派
  • 物联网
  • 科普
  • 笔记
  • 算法
  • 默认
最新 热点 随机
最新 热点 随机
在代码中判断龙芯新旧世界平台 Windows获取固定后缀的IPv6地址 目前为止,你可能找不到第二台支持志强的1L小主机(P350 Tiny+W-1350+ECC+双NVME+PCIE扩展)!!! iKuai(爱快)实现成都移动IPTV IPoE拨号 Linux EXT4分区误删除后数据恢复 C#连接到巴法云
在代码中判断龙芯新旧世界平台
Debian 9开启Google BBR 23种常见的设计模式(7):原型模式 iKuai(爱快)实现成都移动IPTV IPoE拨号 这10本物理科普书籍,足以回答你的N多问题!(转) Windows移除多余输入法'Unknown Locale (qaa-Latn)' 利用URL Protocol实现网页调用本地应用程序
最近评论
Eagle 发布于 7 个月前(10月21日) 参考博主教程成功搞定了成都移动IPTV组播转单播,电脑、手机都可以播放了。但目前有个问题,原IPTV...
rundoze 发布于 9 个月前(08月31日) 牛逼
cc21216695 发布于 2 年前(09月27日) 试了一下,加入启动项也无效,压根没有用
afirefish 发布于 3 年前(11月28日) 非常感谢,非常棒!
》随缘《 发布于 3 年前(11月20日) 最新【一键处理】方法: https://github.com/MrXhh/VSTools/rele...
书签
  • 打赏
  • 毒鸡汤
  • 米店
  • 金鱼直播间

COPYRIGHT © 2023 quarkbook.com. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

蜀ICP备15036129号-9

登录
注册|忘记密码?