Example #1
0
        public void SetBridgeConfig(string configJson, out bool isJoinAllowed, out MqttLogLevel logLevel)
        {
            var json = JObject.Parse(configJson);

            var    version     = json["version"]?.Value <string>();
            var    coordinator = json["coordinator"];
            string coordinatorVersion;
            var    coordinatorType = "zStack";

            switch (coordinator?.Type)
            {
            case JTokenType.String:
            {
                coordinatorVersion = coordinator.Value <string>();
                break;
            }

            case JTokenType.Object:
            {
                coordinatorVersion = coordinator["meta"]?["revision"]?.Value <string>();
                coordinatorType    = coordinator["type"]?.Value <string>();
                break;
            }

            default:
            {
                coordinatorVersion = default;
                break;
            }
            }

            var permitJoin = json["permit_join"]?.Value <bool>() ?? false;
            var logLevel2  = logLevel = json["log_level"]?.ToObject <MqttLogLevel>() ?? MqttLogLevel.Info;

            isJoinAllowed = permitJoin;

            Bridge Update(Bridge state)
            {
                state = state
                        .WithZigbee2MqttVersion(version)
                        .WithCoordinatorVersion(coordinatorVersion)
                        .WithCoordinatorType(coordinatorType)
                        .WithPermitJoin(permitJoin)
                        .WithLogLevel(logLevel2);

                return(state);
            }

            UpdateState(Update);
        }
        public void SetBridgeConfig(string configJson, out bool isJoinAllowed, out MqttLogLevel logLevel)
        {
            var json = JObject.Parse(configJson);

            var version     = json["version"]?.Value <string>();
            var coordinator = json["coordinator"]?.Value <string>();
            var permitJoin  = json["permit_join"]?.Value <bool>() ?? false;
            var logLevel2   = logLevel = json["log_level"]?.ToObject <MqttLogLevel>() ?? MqttLogLevel.Info;

            isJoinAllowed = permitJoin;

            Bridge Update(Bridge state)
            {
                state = state
                        .WithZigbee2MqttVersion(version)
                        .WithCoordinatorVersion(coordinator)
                        .WithPermitJoin(permitJoin)
                        .WithLogLevel(logLevel2);

                return(state);
            }

            ImmutableInterlocked.Update(ref _currentState, Update);
        }