实例介绍
Wirehome.Core是一个专为.NET Core设计的开源智能家居系统。该系统使用C#编写,目标框架为.NET Standard 2.0+,可在Windows、macOS和Linux(例如Raspberry Pi 2 Model B+)上运行。
该系统通过Python编写的适配器与物理智能家居硬件进行交互。这些适配器存放在单独的仓库中,可以下载到Wirehome.Core的本地实例中。Python代码的执行引擎为IronPython。
Python适配器可以访问广泛的模块(Wirehome.API),这些模块提供了对GPIO、I2C、MQTT、HTTP、COAP等的访问。
Wirehome.Core还包括一个功能齐全的MQTT代理和HTTP服务器,可用于托管用户内容或与设备进行交互。
自动化和自定义服务也是用Python编写的。Open Weather Map的集成完全用Python编写,并且可以从官方Wirehome.Repository下载。版本更新也从该仓库分发。
此外,该项目还包括由Wirehome.Core托管的Web App,它几乎可以在所有当前设备上运行,如智能手机、平板电脑、PC等。
【实例截图】
【核心代码】
文件清单
└── Wirehome.Core-c0f178677b93da74dd19af756e68543b5f1d19c8
├── Build
│ └── CreatePackage.ps1
├── docs
│ ├── Commands.md
│ ├── Configuration.md
│ ├── _config.yml
│ ├── ControlTypes.md
│ ├── Devices.md
│ ├── drawings
│ │ ├── ComponentArchitecture.png
│ │ └── ComponentArchitecture.xml
│ ├── exampleConfiguration
│ │ ├── Automations
│ │ │ ├── bathroom_lower.auto_light
│ │ │ │ └── Configuration.json
│ │ │ ├── bathroom_upper.auto_light
│ │ │ │ └── Configuration.json
│ │ │ ├── bathroom_upper.auto_ventilation
│ │ │ │ └── Configuration.json
│ │ │ ├── bedroom.auto_light
│ │ │ │ └── Configuration.json
│ │ │ ├── bedroom.lamp_bed_left_by_button
│ │ │ │ └── Configuration.json
│ │ │ ├── bedroom.lamp_bed_right_by_button
│ │ │ │ └── Configuration.json
│ │ │ ├── bedroom.roller_shutter_left_buttons
│ │ │ │ └── Configuration.json
│ │ │ ├── bedroom.roller_shutter_right_buttons
│ │ │ │ └── Configuration.json
│ │ │ ├── bedroom.spots_by_buttons
│ │ │ │ └── Configuration.json
│ │ │ ├── children_1.lamp_by_button
│ │ │ │ └── Configuration.json
│ │ │ ├── children1.roller_shutter_buttons
│ │ │ │ └── Configuration.json
│ │ │ ├── children_2.lamp_by_button
│ │ │ │ └── Configuration.json
│ │ │ ├── children2.roller_shutter_buttons
│ │ │ │ └── Configuration.json
│ │ │ ├── circulation_pump
│ │ │ │ └── Configuration.json
│ │ │ ├── floor_lower.auto_light
│ │ │ │ └── Configuration.json
│ │ │ ├── floor_upper.auto_light_spots
│ │ │ │ └── Configuration.json
│ │ │ ├── kitchen.auto_light_spots
│ │ │ │ └── Configuration.json
│ │ │ ├── kitchen.lamp_by_button
│ │ │ │ └── Configuration.json
│ │ │ ├── kitchen.roller_shutter_buttons
│ │ │ │ └── Configuration.json
│ │ │ ├── living_room.lamp_couch_by_button
│ │ │ │ └── Configuration.json
│ │ │ ├── living_room.lamp_dining_table_by_button
│ │ │ │ └── Configuration.json
│ │ │ ├── living_room.lamp_edge_by_button
│ │ │ │ └── Configuration.json
│ │ │ ├── office.button.door_top_left
│ │ │ │ └── Configuration.json
│ │ │ ├── office.tradfri_by_button
│ │ │ │ └── Configuration.json
│ │ │ ├── roller_shutter_assistant.bedroom
│ │ │ │ ├── Configuration.json
│ │ │ │ └── Settings.json
│ │ │ ├── roller_shutter_assistant.children_2
│ │ │ │ ├── Configuration.json
│ │ │ │ └── Settings.json
│ │ │ ├── roller_shutter_assistant.default
│ │ │ │ ├── Configuration.json
│ │ │ │ └── Settings.json
│ │ │ ├── stairway.auto_light
│ │ │ │ └── Configuration.json
│ │ │ ├── stairway.roller_shutter_buttons
│ │ │ │ └── Configuration.json
│ │ │ ├── storeroom.auto_light
│ │ │ │ └── Configuration.json
│ │ │ └── storeroom.cat_litter_box_auto_ventilation
│ │ │ └── Configuration.json
│ │ ├── ComponentGroups
│ │ │ ├── bathroom_lower
│ │ │ │ ├── Components
│ │ │ │ │ ├── bathroom_lower.lamp.mirror
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── bathroom_lower.lamp.spots
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── bathroom_lower.sensor.humidity
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ └── bathroom_lower.sensor.temperature
│ │ │ │ │ └── Settings.json
│ │ │ │ ├── Configuration.json
│ │ │ │ └── Settings.json
│ │ │ ├── bathroom_upper
│ │ │ │ ├── Components
│ │ │ │ │ ├── bathroom_upper.fan
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── bathroom_upper.lamp.cabinet
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── bathroom_upper.lamp.spots
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── bathroom_upper.motion_detector
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── bathroom_upper.sensor.humidity
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ └── bathroom_upper.sensor.temperature
│ │ │ │ │ └── Settings.json
│ │ │ │ ├── Configuration.json
│ │ │ │ └── Settings.json
│ │ │ ├── bedroom
│ │ │ │ ├── Components
│ │ │ │ │ ├── bedroom.bed.rgb
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── bedroom.button.bed_left_left
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── bedroom.button.bed_left_right
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── bedroom.button.bed_right_left
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── bedroom.button.bed_right_right
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── bedroom.button_door
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── bedroom.button_window_lower
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── bedroom.button_window_upper
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── bedroom.fan
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── bedroom.lamp
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── bedroom.lamp.bed_left
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── bedroom.lamp.bed_right
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── bedroom.lamp.spots
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── bedroom.motion_detector
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── bedroom.roller_shutter_left
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── bedroom.roller_shutter_right
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── bedroom.sensor.humidity
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ └── bedroom.sensor.temperature
│ │ │ │ │ └── Settings.json
│ │ │ │ ├── Configuration.json
│ │ │ │ └── Settings.json
│ │ │ ├── children_1
│ │ │ │ ├── Components
│ │ │ │ │ ├── children_1.lamp
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── children_1.roller_shutter
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── children_1.sensor.humidity
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── children_1.sensor.temperature
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── children_1.socket.wall_left
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── children_1.socket.wall_right
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ └── children_1.socket.window
│ │ │ │ │ └── Settings.json
│ │ │ │ ├── Configuration.json
│ │ │ │ └── Settings.json
│ │ │ ├── children_2
│ │ │ │ ├── Components
│ │ │ │ │ ├── children_2.button_door
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── children_2.lamp
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── children_2.roller_shutter
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── children_2.sensor.humidity
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── children_2.sensor.temperature
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── children_2.socket.wall_left
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── children_2.socket.wall_right
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ └── children_2.socket.window
│ │ │ │ │ └── Settings.json
│ │ │ │ ├── Configuration.json
│ │ │ │ └── Settings.json
│ │ │ ├── floor_lower
│ │ │ │ ├── Components
│ │ │ │ │ ├── floor_lower.button.bathroom
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── floor_lower.button.kitchen_lower
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── floor_lower.button.kitchen_upper
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── floor_lower.button.main_door_lower
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── floor_lower.button.main_door_upper
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── floor_lower.button.stairs_lower
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── floor_lower.button.stairs_upper
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── floor_lower.lamp
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── floor_lower.lamp.stairway
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── floor_lower.sensor.humidity
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ └── floor_lower.sensor.temperature
│ │ │ │ │ └── Settings.json
│ │ │ │ ├── Configuration.json
│ │ │ │ └── Settings.json
│ │ │ ├── floor_upper
│ │ │ │ ├── Components
│ │ │ │ │ ├── floor_upper.button
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── floor_upper.lamp
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── floor_upper.motion_detector_lower
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── floor_upper.motion_detector_upper
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ └── floor_upper.stairs
│ │ │ │ │ └── Settings.json
│ │ │ │ ├── Configuration.json
│ │ │ │ └── Settings.json
│ │ │ ├── garden
│ │ │ │ ├── Components
│ │ │ │ │ ├── garden.button.default
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── garden.lamp.garage
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── garden.lamp.parking_lot
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── garden.lamp.pavillion
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── garden.lamp.rear_area
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── garden.lamp.roof
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── garden.lamp.tap
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── garden.lamp.terrace
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── garden.sensor.humidity
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ └── garden.sensor.temperature
│ │ │ │ │ └── Settings.json
│ │ │ │ ├── Configuration.json
│ │ │ │ └── Settings.json
│ │ │ ├── heating
│ │ │ │ ├── Components
│ │ │ │ │ ├── bathroom_lower.sensor.temperature
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── bathroom_upper.sensor.temperature
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── bedroom.sensor.temperature
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── children_1.sensor.temperature
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── children_2.sensor.temperature
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── floor_lower.sensor.temperature
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── garden.sensor.temperature
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── heating.circulation_pump
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── heating.room_temperature
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── heating.water_source
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── heating.water_temperature.external_tank_1
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── heating.water_temperature.external_tank_2
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── heating.water_temperature.own_tank
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── kitchen.sensor.temperature
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── living_room.sensor.temperature
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ └── office.sensor.temperature
│ │ │ │ │ └── Settings.json
│ │ │ │ ├── Configuration.json
│ │ │ │ └── Settings.json
│ │ │ ├── kitchen
│ │ │ │ ├── Components
│ │ │ │ │ ├── kitchen.lamp
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── kitchen.motion_detector
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── kitchen.roller_shutter
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── kitchen.sensor.humidity
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── kitchen.sensor.temperature
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ └── kitchen.socket.kitchenette
│ │ │ │ │ └── Settings.json
│ │ │ │ ├── Configuration.json
│ │ │ │ └── Settings.json
│ │ │ ├── living_room
│ │ │ │ ├── Components
│ │ │ │ │ ├── living_room.button_center
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── living_room.button_lower
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── living_room.button_passage
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── living_room.button_upper
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── living_room.lamp.couch
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── living_room.lamp.dining_table
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── living_room.sensor.humidity
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── living_room.sensor.temperature
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── living_room.socket.wall_right_edge_left
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── living_room.socket.wall_right_edge_right
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── living_room.socket.window_center_lower
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── living_room.socket.window_left_lower
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── living_room.socket.window_left_upper
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── living_room.socket.window_right_lower
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── living_room.socket.window_right_upper
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── tradfri.lamp.1
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ └── tradfri.lamp.2
│ │ │ │ │ └── Settings.json
│ │ │ │ ├── Configuration.json
│ │ │ │ └── Settings.json
│ │ │ ├── office
│ │ │ │ ├── Components
│ │ │ │ │ ├── office.button.door_bottom_left
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── office.button.door_bottom_right
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── office.button.door_top_left
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── office.button.door_top_right
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── office.button.edge_left
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── office.button.edge_right
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── office.lamp
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── office.motion_detector
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── office.sensor.humidity
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── office.sensor.temperature
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── office.socket.front_left
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── office.socket.front_right
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── office.socket.rear_left
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── office.socket.rear_left_edge
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── office.socket.rear_right
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── office.socket.window_left
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── office.socket.window_right
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ └── tradfri.lamp.3
│ │ │ │ │ └── Settings.json
│ │ │ │ ├── Configuration.json
│ │ │ │ └── Settings.json
│ │ │ ├── other
│ │ │ │ ├── Components
│ │ │ │ │ ├── shared.sensor.humidity1
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── shared.sensor.temperature1a
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── shared.sensor.temperature1b
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── shared.socket.tasmota1
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ └── shared.socket.tasmota2
│ │ │ │ │ └── Settings.json
│ │ │ │ ├── Configuration.json
│ │ │ │ └── Settings.json
│ │ │ ├── stairway
│ │ │ │ ├── Components
│ │ │ │ │ ├── stairway.button.entry_door
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── stairway.button.roller_shutter_down
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── stairway.button.roller_shutter_up
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ ├── stairway.lamp
│ │ │ │ │ │ └── Settings.json
│ │ │ │ │ └── stairway.roller_shutter
│ │ │ │ │ └── Settings.json
│ │ │ │ ├── Configuration.json
│ │ │ │ └── Settings.json
│ │ │ └── storeroom
│ │ │ ├── Components
│ │ │ │ ├── storeroom.fan.cat_litter_box
│ │ │ │ │ └── Settings.json
│ │ │ │ ├── storeroom.lamp
│ │ │ │ │ └── Settings.json
│ │ │ │ ├── storeroom.motion_detector
│ │ │ │ │ └── Settings.json
│ │ │ │ └── storeroom.motion_detector_cat_litter_box
│ │ │ │ └── Settings.json
│ │ │ ├── Configuration.json
│ │ │ └── Settings.json
│ │ ├── Components
│ │ │ ├── bathroom_lower.lamp.mirror
│ │ │ │ └── Configuration.json
│ │ │ ├── bathroom_lower.lamp.spots
│ │ │ │ └── Configuration.json
│ │ │ ├── bathroom_lower.motion_detector
│ │ │ │ └── Configuration.json
│ │ │ ├── bathroom_lower.sensor.humidity
│ │ │ │ └── Configuration.json
│ │ │ ├── bathroom_lower.sensor.temperature
│ │ │ │ └── Configuration.json
│ │ │ ├── bathroom_upper.fan
│ │ │ │ └── Configuration.json
│ │ │ ├── bathroom_upper.lamp.cabinet
│ │ │ │ └── Configuration.json
│ │ │ ├── bathroom_upper.lamp.spots
│ │ │ │ └── Configuration.json
│ │ │ ├── bathroom_upper.motion_detector
│ │ │ │ └── Configuration.json
│ │ │ ├── bathroom_upper.sensor.humidity
│ │ │ │ └── Configuration.json
│ │ │ ├── bathroom_upper.sensor.temperature
│ │ │ │ └── Configuration.json
│ │ │ ├── bedroom.bed.rgb
│ │ │ │ └── Configuration.json
│ │ │ ├── bedroom.button.bed_left_left
│ │ │ │ └── Configuration.json
│ │ │ ├── bedroom.button.bed_left_right
│ │ │ │ └── Configuration.json
│ │ │ ├── bedroom.button.bed_right_left
│ │ │ │ └── Configuration.json
│ │ │ ├── bedroom.button.bed_right_right
│ │ │ │ └── Configuration.json
│ │ │ ├── bedroom.button_door
│ │ │ │ └── Configuration.json
│ │ │ ├── bedroom.button.lower_down
│ │ │ │ └── Configuration.json
│ │ │ ├── bedroom.button.lower_up
│ │ │ │ └── Configuration.json
│ │ │ ├── bedroom.button.upper_down
│ │ │ │ └── Configuration.json
│ │ │ ├── bedroom.button.upper_up
│ │ │ │ └── Configuration.json
│ │ │ ├── bedroom.button_window_lower
│ │ │ │ └── Configuration.json
│ │ │ ├── bedroom.button_window_upper
│ │ │ │ └── Configuration.json
│ │ │ ├── bedroom.fan
│ │ │ │ └── Configuration.json
│ │ │ ├── bedroom.lamp
│ │ │ │ └── Configuration.json
│ │ │ ├── bedroom.lamp.bed_left
│ │ │ │ └── Configuration.json
│ │ │ ├── bedroom.lamp.bed_right
│ │ │ │ └── Configuration.json
│ │ │ ├── bedroom.lamp.spots
│ │ │ │ └── Configuration.json
│ │ │ ├── bedroom.motion_detector
│ │ │ │ └── Configuration.json
│ │ │ ├── bedroom.roller_shutter_left
│ │ │ │ └── Configuration.json
│ │ │ ├── bedroom.roller_shutter_right
│ │ │ │ └── Configuration.json
│ │ │ ├── bedroom.sensor.humidity
│ │ │ │ └── Configuration.json
│ │ │ ├── bedroom.sensor.temperature
│ │ │ │ └── Configuration.json
│ │ │ ├── children_1.button_door
│ │ │ │ └── Configuration.json
│ │ │ ├── children_1.button.down
│ │ │ │ └── Configuration.json
│ │ │ ├── children_1.button.up
│ │ │ │ └── Configuration.json
│ │ │ ├── children_1.lamp
│ │ │ │ └── Configuration.json
│ │ │ ├── children_1.roller_shutter
│ │ │ │ └── Configuration.json
│ │ │ ├── children_1.sensor.humidity
│ │ │ │ └── Configuration.json
│ │ │ ├── children_1.sensor.temperature
│ │ │ │ └── Configuration.json
│ │ │ ├── children_1.socket.wall_left
│ │ │ │ └── Configuration.json
│ │ │ ├── children_1.socket.wall_right
│ │ │ │ └── Configuration.json
│ │ │ ├── children_1.socket.window
│ │ │ │ └── Configuration.json
│ │ │ ├── children_2.button_door
│ │ │ │ └── Configuration.json
│ │ │ ├── children_2.button.down
│ │ │ │ └── Configuration.json
│ │ │ ├── children_2.button.up
│ │ │ │ └── Configuration.json
│ │ │ ├── children_2.lamp
│ │ │ │ └── Configuration.json
│ │ │ ├── children_2.roller_shutter
│ │ │ │ └── Configuration.json
│ │ │ ├── children_2.sensor.humidity
│ │ │ │ └── Configuration.json
│ │ │ ├── children_2.sensor.temperature
│ │ │ │ └── Configuration.json
│ │ │ ├── children_2.socket.wall_left
│ │ │ │ └── Configuration.json
│ │ │ ├── children_2.socket.wall_right
│ │ │ │ └── Configuration.json
│ │ │ ├── children_2.socket.window
│ │ │ │ └── Configuration.json
│ │ │ ├── floor_lower.button.bathroom
│ │ │ │ └── Configuration.json
│ │ │ ├── floor_lower.button.kitchen_lower
│ │ │ │ └── Configuration.json
│ │ │ ├── floor_lower.button.kitchen_upper
│ │ │ │ └── Configuration.json
│ │ │ ├── floor_lower.button.main_door_lower
│ │ │ │ └── Configuration.json
│ │ │ ├── floor_lower.button.main_door_upper
│ │ │ │ └── Configuration.json
│ │ │ ├── floor_lower.button.stairs_lower
│ │ │ │ └── Configuration.json
│ │ │ ├── floor_lower.button.stairs_upper
│ │ │ │ └── Configuration.json
│ │ │ ├── floor_lower.lamp
│ │ │ │ └── Configuration.json
│ │ │ ├── floor_lower.motion_detector
│ │ │ │ └── Configuration.json
│ │ │ ├── floor_lower.motion_detector.stairway
│ │ │ │ └── Configuration.json
│ │ │ ├── floor_lower.sensor.humidity
│ │ │ │ └── Configuration.json
│ │ │ ├── floor_lower.sensor.temperature
│ │ │ │ └── Configuration.json
│ │ │ ├── floor_upper.button
│ │ │ │ └── Configuration.json
│ │ │ ├── floor_upper.lamp
│ │ │ │ └── Configuration.json
│ │ │ ├── floor_upper.motion_detector_lower
│ │ │ │ └── Configuration.json
│ │ │ ├── floor_upper.motion_detector_upper
│ │ │ │ └── Configuration.json
│ │ │ ├── floor_upper.stairs
│ │ │ │ └── Configuration.json
│ │ │ ├── garden.button.default
│ │ │ │ └── Configuration.json
│ │ │ ├── garden.lamp.garage
│ │ │ │ └── Configuration.json
│ │ │ ├── garden.lamp.parking_lot
│ │ │ │ └── Configuration.json
│ │ │ ├── garden.lamp.pavillion
│ │ │ │ └── Configuration.json
│ │ │ ├── garden.lamp.rear_area
│ │ │ │ └── Configuration.json
│ │ │ ├── garden.lamp.roof
│ │ │ │ └── Configuration.json
│ │ │ ├── garden.lamp.tap
│ │ │ │ └── Configuration.json
│ │ │ ├── garden.lamp.terrace
│ │ │ │ └── Configuration.json
│ │ │ ├── garden.sensor.humidity
│ │ │ │ └── Configuration.json
│ │ │ ├── garden.sensor.temperature
│ │ │ │ └── Configuration.json
│ │ │ ├── heating.circulation_pump
│ │ │ │ └── Configuration.json
│ │ │ ├── heating.room_temperature
│ │ │ │ └── Configuration.json
│ │ │ ├── heating.water_source
│ │ │ │ └── Configuration.json
│ │ │ ├── heating.water_temperature.external_tank_1
│ │ │ │ └── Configuration.json
│ │ │ ├── heating.water_temperature.external_tank_2
│ │ │ │ └── Configuration.json
│ │ │ ├── heating.water_temperature.own_tank
│ │ │ │ └── Configuration.json
│ │ │ ├── kitchen.button_door_upper
│ │ │ │ └── Configuration.json
│ │ │ ├── kitchen.button.down
│ │ │ │ └── Configuration.json
│ │ │ ├── kitchen.button_passage_lower
│ │ │ │ └── Configuration.json
│ │ │ ├── kitchen.button_passage_upper
│ │ │ │ └── Configuration.json
│ │ │ ├── kitchen.button.up
│ │ │ │ └── Configuration.json
│ │ │ ├── kitchen.lamp
│ │ │ │ └── Configuration.json
│ │ │ ├── kitchen.motion_detector
│ │ │ │ └── Configuration.json
│ │ │ ├── kitchen.roller_shutter
│ │ │ │ └── Configuration.json
│ │ │ ├── kitchen.sensor.humidity
│ │ │ │ └── Configuration.json
│ │ │ ├── kitchen.sensor.temperature
│ │ │ │ └── Configuration.json
│ │ │ ├── kitchen.socket.ceiling1
│ │ │ │ └── Configuration.json
│ │ │ ├── kitchen.socket.ceiling2
│ │ │ │ └── Configuration.json
│ │ │ ├── kitchen.socket.kitchenette
│ │ │ │ └── Configuration.json
│ │ │ ├── kitchen.socket.wall
│ │ │ │ └── Configuration.json
│ │ │ ├── living_room.button_center
│ │ │ │ └── Configuration.json
│ │ │ ├── living_room.button_lower
│ │ │ │ └── Configuration.json
│ │ │ ├── living_room.button_upper
│ │ │ │ └── Configuration.json
│ │ │ ├── living_room.lamp.couch
│ │ │ │ └── Configuration.json
│ │ │ ├── living_room.lamp.dining_table
│ │ │ │ └── Configuration.json
│ │ │ ├── living_room.sensor.humidity
│ │ │ │ └── Configuration.json
│ │ │ ├── living_room.sensor.temperature
│ │ │ │ └── Configuration.json
│ │ │ ├── living_room.socket.wall_right_edge_left
│ │ │ │ └── Configuration.json
│ │ │ ├── living_room.socket.wall_right_edge_right
│ │ │ │ └── Configuration.json
│ │ │ ├── living_room.socket.window_center_lower
│ │ │ │ └── Configuration.json
│ │ │ ├── living_room.socket.window_left_lower
│ │ │ │ └── Configuration.json
│ │ │ ├── living_room.socket.window_left_upper
│ │ │ │ └── Configuration.json
│ │ │ ├── living_room.socket.window_right_lower
│ │ │ │ └── Configuration.json
│ │ │ ├── living_room.socket.window_right_upper
│ │ │ │ └── Configuration.json
│ │ │ ├── office.button.door_bottom_left
│ │ │ │ └── Configuration.json
│ │ │ ├── office.button.door_bottom_right
│ │ │ │ └── Configuration.json
│ │ │ ├── office.button.door_top_left
│ │ │ │ └── Configuration.json
│ │ │ ├── office.button.door_top_right
│ │ │ │ └── Configuration.json
│ │ │ ├── office.button.edge_left
│ │ │ │ └── Configuration.json
│ │ │ ├── office.button.edge_right
│ │ │ │ └── Configuration.json
│ │ │ ├── office.lamp
│ │ │ │ └── Configuration.json
│ │ │ ├── office.motion_detector
│ │ │ │ └── Configuration.json
│ │ │ ├── office.sensor.humidity
│ │ │ │ └── Configuration.json
│ │ │ ├── office.sensor.temperature
│ │ │ │ └── Configuration.json
│ │ │ ├── office.socket.front_left
│ │ │ │ └── Configuration.json
│ │ │ ├── office.socket.front_right
│ │ │ │ └── Configuration.json
│ │ │ ├── office.socket.rear_left
│ │ │ │ └── Configuration.json
│ │ │ ├── office.socket.rear_left_edge
│ │ │ │ └── Configuration.json
│ │ │ ├── office.socket.rear_right
│ │ │ │ └── Configuration.json
│ │ │ ├── office.socket.window_left
│ │ │ │ └── Configuration.json
│ │ │ ├── office.socket.window_right
│ │ │ │ └── Configuration.json
│ │ │ ├── shared.sensor.humidity1
│ │ │ │ └── Configuration.json
│ │ │ ├── shared.sensor.temperature1a
│ │ │ │ └── Configuration.json
│ │ │ ├── shared.sensor.temperature1b
│ │ │ │ └── Configuration.json
│ │ │ ├── shared.socket.tasmota1
│ │ │ │ └── Configuration.json
│ │ │ ├── shared.socket.tasmota2
│ │ │ │ └── Configuration.json
│ │ │ ├── stairway.button.entry_door
│ │ │ │ └── Configuration.json
│ │ │ ├── stairway.button.roller_shutter_down
│ │ │ │ └── Configuration.json
│ │ │ ├── stairway.button.roller_shutter_up
│ │ │ │ └── Configuration.json
│ │ │ ├── stairway.lamp
│ │ │ │ └── Configuration.json
│ │ │ ├── stairway.motion_detector
│ │ │ │ └── Configuration.json
│ │ │ ├── stairway.roller_shutter
│ │ │ │ └── Configuration.json
│ │ │ ├── storeroom.fan.cat_litter_box
│ │ │ │ └── Configuration.json
│ │ │ ├── storeroom.lamp
│ │ │ │ └── Configuration.json
│ │ │ ├── storeroom.motion_detector
│ │ │ │ └── Configuration.json
│ │ │ ├── storeroom.motion_detector_cat_litter_box
│ │ │ │ └── Configuration.json
│ │ │ ├── tradfri.lamp.1
│ │ │ │ └── Configuration.json
│ │ │ ├── tradfri.lamp.2
│ │ │ │ └── Configuration.json
│ │ │ └── tradfri.lamp.3
│ │ │ └── Configuration.json
│ │ ├── Notes.md
│ │ ├── Services
│ │ │ ├── service.wirehome.cc_tools.board_manager
│ │ │ │ └── Configuration.json
│ │ │ ├── service.wirehome.homebridge_adapter
│ │ │ │ └── Configuration.json
│ │ │ ├── service.wirehome.open_weather_map_importer
│ │ │ │ └── Configuration.json
│ │ │ └── service.wirehome.tradfri.gateway_manager
│ │ │ └── Configuration.json
│ │ └── StartupScripts
│ │ └── default
│ │ ├── Configuration.json
│ │ └── script.py
│ ├── images
│ │ ├── app_screen_1.png
│ │ ├── app_screen_2.png
│ │ ├── app_screen_3.png
│ │ ├── cloud128.png
│ │ ├── gitHubLogo.png
│ │ ├── icon.png
│ │ ├── logo256_cloud_square.png
│ │ ├── logo256_round.png
│ │ ├── logo256_square.png
│ │ └── touch-icon.png
│ ├── Messages.md
│ ├── Settings.md
│ └── Status.md
├── LICENSE
├── README.md
├── StartupScripts
│ ├── rund.sh
│ └── run.sh
├── Wirehome.Cloud
│ ├── Controllers
│ │ ├── AccountController.cs
│ │ ├── AppController.cs
│ │ ├── ChannelController.cs
│ │ ├── CloudController.cs
│ │ └── Models
│ │ ├── ChannelsModel.cs
│ │ └── LoginModel.cs
│ ├── Filters
│ │ └── DefaultExceptionFilter.cs
│ ├── Program.cs
│ ├── Properties
│ │ └── launchSettings.json
│ ├── SampleConfiguration
│ │ ├── CloudServiceConfiguration.json
│ │ └── Identities
│ │ └── user@wirehome.com
│ │ ├── Configuration.json
│ │ └── Readme.txt
│ ├── Services
│ │ ├── Authorization
│ │ │ └── AuthorizationService.cs
│ │ ├── DeviceConnector
│ │ │ ├── ChannelIdentifier.cs
│ │ │ ├── DeviceConnectorService.cs
│ │ │ ├── OpenChannel.cs
│ │ │ └── OpenChannelNotFoundException.cs
│ │ └── Repository
│ │ ├── Entities
│ │ │ ├── AccessTokenEntity.cs
│ │ │ ├── AllowedIdentityEntity.cs
│ │ │ ├── ChannelEntity.cs
│ │ │ └── IdentityEntity.cs
│ │ └── RepositoryService.cs
│ ├── Startup.cs
│ ├── Views
│ │ ├── Account
│ │ │ └── Index.cshtml
│ │ ├── Channel
│ │ │ ├── DeviceNotConnected.cshtml
│ │ │ └── Index.cshtml
│ │ └── Layout.cshtml
│ ├── Wirehome.Cloud.csproj
│ └── wwwroot
│ ├── app
│ │ ├── icon.png
│ │ └── touch-icon.png
│ ├── images
│ │ └── Banner.png
│ ├── jquery
│ │ └── jquery-3.3.1.min.js
│ ├── semantic-ui
│ │ ├── LICENSE
│ │ ├── semantic.min.css
│ │ ├── semantic.min.js
│ │ └── themes
│ │ └── default
│ │ └── assets
│ │ ├── fonts
│ │ │ ├── brand-icons.eot
│ │ │ ├── brand-icons.svg
│ │ │ ├── brand-icons.ttf
│ │ │ ├── brand-icons.woff
│ │ │ ├── brand-icons.woff2
│ │ │ ├── icons.eot
│ │ │ ├── icons.otf
│ │ │ ├── icons.svg
│ │ │ ├── icons.ttf
│ │ │ ├── icons.woff
│ │ │ ├── icons.woff2
│ │ │ ├── outline-icons.eot
│ │ │ ├── outline-icons.svg
│ │ │ ├── outline-icons.ttf
│ │ │ ├── outline-icons.woff
│ │ │ └── outline-icons.woff2
│ │ └── images
│ │ └── flags.png
│ └── style.css
├── Wirehome.Core
│ ├── App
│ │ ├── AppPanelDefinition.cs
│ │ ├── AppService.cs
│ │ └── AppServicePythonProxy.cs
│ ├── Backup
│ │ └── BackupService.cs
│ ├── Cloud
│ │ ├── Channel
│ │ │ ├── ConnectorChannel.cs
│ │ │ ├── ConnectorChannelOptions.cs
│ │ │ ├── ConnectorChannelReceiveResult.cs
│ │ │ └── ConnectorChannelStatistics.cs
│ │ ├── CloudServiceConfiguration.cs
│ │ ├── CloudService.cs
│ │ ├── CloudServicePythonProxy.cs
│ │ ├── Protocol
│ │ │ ├── CloudCookieNames.cs
│ │ │ ├── CloudHeaderNames.cs
│ │ │ ├── CloudMessage.cs
│ │ │ ├── CloudMessageFactory.cs
│ │ │ ├── CloudMessageSerializer.cs
│ │ │ ├── CloudMessageType.cs
│ │ │ ├── Content
│ │ │ │ ├── ExceptionCloudMessageContent.cs
│ │ │ │ ├── HttpRequestCloudMessageContent.cs
│ │ │ │ └── HttpResponseCloudMessageContent.cs
│ │ │ └── TransportCloudMessage.cs
│ │ └── RawCloudMessageHandler.cs
│ ├── Components
│ │ ├── Adapters
│ │ │ ├── EmptyComponentAdapter.cs
│ │ │ ├── IComponentAdapter.cs
│ │ │ └── ScriptComponentAdapter.cs
│ │ ├── Component.cs
│ │ ├── ComponentInitializer.cs
│ │ ├── ComponentPythonProxy.cs
│ │ ├── ComponentRegistryMessageBusAdapter.cs
│ │ ├── ComponentRegistryService.cs
│ │ ├── ComponentRegistryServicePythonProxy.cs
│ │ ├── ComponentStatusChangedEventArgs.cs
│ │ ├── ComponentStatusChangingEventArgs.cs
│ │ ├── Configuration
│ │ │ ├── ComponentAdapterConfiguration.cs
│ │ │ ├── ComponentConfiguration.cs
│ │ │ └── ComponentLogicConfiguration.cs
│ │ ├── Exceptions
│ │ │ ├── ComponentGroupNotFoundException.cs
│ │ │ └── ComponentNotFoundException.cs
│ │ ├── Groups
│ │ │ ├── ComponentGroupAssociation.cs
│ │ │ ├── ComponentGroupConfiguration.cs
│ │ │ ├── ComponentGroup.cs
│ │ │ └── ComponentGroupRegistryService.cs
│ │ ├── History
│ │ │ ├── ComponentHistoryService.cs
│ │ │ ├── ComponentHistoryServiceOptions.cs
│ │ │ └── ComponentStatusHistoryWorkItem.cs
│ │ ├── Logic
│ │ │ ├── EmptyLogic.cs
│ │ │ ├── IComponentLogic.cs
│ │ │ └── ScriptComponentLogic.cs
│ │ └── SetValueResult.cs
│ ├── Constants
│ │ ├── ControlType.cs
│ │ ├── GlobalVariableUids.cs
│ │ └── NotificationResourceUids.cs
│ ├── Contracts
│ │ └── WirehomeCoreService.cs
│ ├── Devices
│ │ ├── BuiltInDevicePropertyNames.cs
│ │ ├── Device.cs
│ │ ├── DeviceProperty.cs
│ │ ├── DeviceRegistryService.cs
│ │ ├── DeviceRegistryServicePythonProxy.cs
│ │ ├── DeviceRepository.cs
│ │ └── Exceptions
│ │ └── DeviceNotFoundException.cs
│ ├── Diagnostics
│ │ ├── DiagnosticsService.cs
│ │ ├── Log
│ │ │ ├── LogEntry.cs
│ │ │ ├── LogEntryFilter.cs
│ │ │ ├── LogReceiver.cs
│ │ │ ├── LogSender.cs
│ │ │ ├── LogService.cs
│ │ │ ├── LogServiceLogger.cs
│ │ │ ├── LogServiceLoggerProvider.cs
│ │ │ └── LogServiceOptions.cs
│ │ ├── OperationsPerSecondCounter.cs
│ │ ├── SystemStatusPythonProxy.cs
│ │ └── SystemStatusService.cs
│ ├── Exceptions
│ │ ├── ConfigurationException.cs
│ │ ├── HardwareException.cs
│ │ ├── NotFoundException.cs
│ │ └── WirehomeException.cs
│ ├── Extensions
│ │ ├── ArraySegmentExtensions.cs
│ │ ├── DictionaryExtensions.cs
│ │ ├── ParallelTask.cs
│ │ ├── Reflection.cs
│ │ ├── StreamExtensions.cs
│ │ └── TaskExtensions.cs
│ ├── Foundation
│ │ ├── AsyncLock.cs
│ │ ├── Model
│ │ │ └── WirehomeConvert.cs
│ │ └── ThreadSafeDictionary.cs
│ ├── FunctionPool
│ │ ├── FunctionPoolService.cs
│ │ └── FunctionPoolServicePythonProxy.cs
│ ├── GlobalVariables
│ │ ├── GlobalVariablesService.cs
│ │ └── GlobalVariablesServicePythonProxy.cs
│ ├── Hardware
│ │ ├── CoAP
│ │ │ └── CoapServicePythonProxy.cs
│ │ ├── GPIO
│ │ │ ├── Adapters
│ │ │ │ ├── GpioAdapterStateChangedEventArgs.cs
│ │ │ │ ├── Gpio.cs
│ │ │ │ ├── GpioInterruptMonitor.cs
│ │ │ │ ├── GpioStateChangedEventArgs.cs
│ │ │ │ ├── IGpioAdapter.cs
│ │ │ │ ├── LinuxGpioAdapter.cs
│ │ │ │ └── TestGpioAdapter.cs
│ │ │ ├── GpioDirection.cs
│ │ │ ├── GpioInterruptEdge.cs
│ │ │ ├── GpioRegistryService.cs
│ │ │ ├── GpioRegistryServicePythonProxy.cs
│ │ │ ├── GpioState.cs
│ │ │ ├── Interrupt.cs
│ │ │ └── InterruptEvent.cs
│ │ ├── I2C
│ │ │ ├── Adapters
│ │ │ │ ├── II2CBusAdapter.cs
│ │ │ │ ├── LinuxI2CBusAdapter.cs
│ │ │ │ ├── LiveI2CBusAdapter.cs
│ │ │ │ ├── SafeNativeMethods.cs
│ │ │ │ └── TestI2CBusAdapter.cs
│ │ │ ├── I2CBusService.cs
│ │ │ └── I2CBusServicePythonProxy.cs
│ │ └── MQTT
│ │ ├── BlockedMqttMessage.cs
│ │ ├── IncomingMqttMessage.cs
│ │ ├── LoggerAdapter.cs
│ │ ├── MqttImportTopicParameters.cs
│ │ ├── MqttPublishParameters.cs
│ │ ├── MqttRetainedMessageModel.cs
│ │ ├── MqttServerStorage.cs
│ │ ├── MqttService.cs
│ │ ├── MqttServiceOptions.cs
│ │ ├── MqttServicePythonProxy.cs
│ │ ├── MqttSubscriber.cs
│ │ ├── MqttTopicImporter.cs
│ │ └── MqttTopicImportManager.cs
│ ├── History
│ │ ├── Extract
│ │ │ ├── HistoryExtractBuilder.cs
│ │ │ ├── HistoryExtract.cs
│ │ │ ├── HistoryExtractDataPoint.cs
│ │ │ └── HistoryExtractDataType.cs
│ │ ├── HistoryService.cs
│ │ ├── HistoryServiceOptions.cs
│ │ ├── HistoryServicePythonProxy.cs
│ │ ├── HistoryUpdateOperation.cs
│ │ ├── HistoryValueFormatter.cs
│ │ ├── HistoryValueFormatterOptions.cs
│ │ ├── HistoryValueFormatterOptionsFactory.cs
│ │ └── Repository
│ │ ├── BeginToken.cs
│ │ ├── DayPath.cs
│ │ ├── EndToken.cs
│ │ ├── HistoryReadOperation.cs
│ │ ├── HistoryRepository.cs
│ │ ├── HistoryRepositoryUpdateOperation.cs
│ │ ├── HistorySettingName.cs
│ │ ├── HistoryValueElement.cs
│ │ ├── HistoryValuesStream.cs
│ │ ├── HistoryValueStreamSerializer.cs
│ │ ├── Token.cs
│ │ └── ValueToken.cs
│ ├── HTTP
│ │ ├── Controllers
│ │ │ ├── AppController.cs
│ │ │ ├── BackupController.cs
│ │ │ ├── CloudController.cs
│ │ │ ├── ComponentGroupsController.cs
│ │ │ ├── ComponentsController.cs
│ │ │ ├── DevicesController.cs
│ │ │ ├── FirmwareController.cs
│ │ │ ├── FunctionPoolController.cs
│ │ │ ├── GlobalVariablesController.cs
│ │ │ ├── GpioController.cs
│ │ │ ├── HistoryController.cs
│ │ │ ├── I2CController.cs
│ │ │ ├── LogController.cs
│ │ │ ├── MacrosController.cs
│ │ │ ├── MessageBusController.cs
│ │ │ ├── Models
│ │ │ │ ├── ActiveCountdownModel.cs
│ │ │ │ ├── ActiveThreadModel.cs
│ │ │ │ ├── ActiveTimerModel.cs
│ │ │ │ ├── MessageBusSubscriberModel.cs
│ │ │ │ └── MqttSubscriberModel.cs
│ │ │ ├── MqttController.cs
│ │ │ ├── NotesController.cs
│ │ │ ├── NotificationsController.cs
│ │ │ ├── PackageManagerController.cs
│ │ │ ├── PythonApiController.cs
│ │ │ ├── PythonScratchpadController.cs
│ │ │ ├── ResourcesController.cs
│ │ │ ├── SchedulerController.cs
│ │ │ ├── ServicesController.cs
│ │ │ ├── StartupScriptsController.cs
│ │ │ ├── StorageController.cs
│ │ │ ├── SystemController.cs
│ │ │ ├── ToolsController.cs
│ │ │ ├── ValueStorageController.cs
│ │ │ └── WirehomeControllerFeatureProvider.cs
│ │ ├── Filters
│ │ │ ├── BinaryContentAttribute.cs
│ │ │ ├── BinaryContentFilter.cs
│ │ │ └── DefaultExceptionFilterAttribute.cs
│ │ ├── HttpRequestConverter.cs
│ │ ├── HttpServerService.cs
│ │ ├── PackageFileProvider.cs
│ │ ├── PythonProxies
│ │ │ ├── HttpClientPythonProxy.cs
│ │ │ ├── HttpRequestInterceptor.cs
│ │ │ └── HttpServerPythonProxy.cs
│ │ └── Startup.cs
│ ├── Licenses.txt
│ ├── Macros
│ │ ├── Configuration
│ │ │ ├── MacroActionConfiguration.cs
│ │ │ ├── MacroConfiguration.cs
│ │ │ └── SendComponentMessageMacroActionConfiguration.cs
│ │ ├── Exceptions
│ │ │ └── MacroNotFoundException.cs
│ │ ├── MacroInstance.cs
│ │ ├── MacroRegistryMessageBusWrapper.cs
│ │ ├── MacroRegistryService.cs
│ │ └── MacroRegistryServicePythonProxy.cs
│ ├── MessageBus
│ │ ├── MessageBusFilterComparer.cs
│ │ ├── MessageBusMessage.cs
│ │ ├── MessageBusMessageHistory.cs
│ │ ├── MessageBusSender.cs
│ │ ├── MessageBusService.cs
│ │ ├── MessageBusServicePythonProxy.cs
│ │ └── MessageBusSubscriber.cs
│ ├── Notifications
│ │ ├── Notification.cs
│ │ ├── NotificationsService.cs
│ │ ├── NotificationsServiceOptions.cs
│ │ ├── NotificationsServicePythonProxy.cs
│ │ ├── NotificationType.cs
│ │ └── PublishFromResourceParameters.cs
│ ├── Packages
│ │ ├── Exceptions
│ │ │ ├── WirehomePackageException.cs
│ │ │ └── WirehomePackageNotFoundException.cs
│ │ ├── GitHub
│ │ │ ├── GitHubItem.cs
│ │ │ └── GitHubRepositoryPackageDownloader.cs
│ │ ├── Package.cs
│ │ ├── PackageManagerService.cs
│ │ ├── PackageManagerServiceOptions.cs
│ │ ├── PackageManagerServicePythonProxy.cs
│ │ ├── PackageMetaData.cs
│ │ └── PackageUid.cs
│ ├── Python
│ │ ├── Exceptions
│ │ │ └── PythonProxyException.cs
│ │ ├── IInjectedPythonProxy.cs
│ │ ├── IPythonConvertible.cs
│ │ ├── IPythonProxy.cs
│ │ ├── Models
│ │ │ └── ExceptionPythonModel.cs
│ │ ├── Proxies
│ │ │ ├── ConverterPythonProxy.cs
│ │ │ ├── DebuggerPythonProxy.cs
│ │ │ ├── LogPythonProxy.cs
│ │ │ ├── OS
│ │ │ │ ├── ExecuteResult.cs
│ │ │ │ ├── LaunchParamters.cs
│ │ │ │ ├── LaunchResult.cs
│ │ │ │ └── OSPythonProxy.cs
│ │ │ ├── ResponseCreatorPythonProxy.cs
│ │ │ ├── ResponseValidatorPythonProxy.cs
│ │ │ └── StopwatchPythonProxy.cs
│ │ ├── PythonConvert.cs
│ │ ├── PythonDelegates.cs
│ │ ├── PythonEngineService.cs
│ │ ├── PythonIOStream.cs
│ │ ├── PythonProxyFactory.cs
│ │ ├── PythonProxyReferenceGenerator.cs
│ │ ├── PythonScriptHost.cs
│ │ └── PythonScriptHostFactoryService.cs
│ ├── Resources
│ │ ├── Exceptions
│ │ │ └── ResourceNotFoundException.cs
│ │ ├── ResourceService.cs
│ │ └── ResourceServicePythonProxy.cs
│ ├── Resources.json
│ ├── Scheduler
│ │ ├── ActiveCountdown.cs
│ │ ├── ActiveThread.cs
│ │ ├── ActiveTimer.cs
│ │ ├── CountdownElapsedParameters.cs
│ │ ├── SchedulerService.cs
│ │ ├── SchedulerServicePythonProxy.cs
│ │ ├── StartThreadCallbackParameters.cs
│ │ └── TimerTickCallbackParameters.cs
│ ├── ServiceHost
│ │ ├── Configuration
│ │ │ └── ServiceConfiguration.cs
│ │ ├── Exceptions
│ │ │ ├── ServiceNotFoundException.cs
│ │ │ └── ServiceNotStartedException.cs
│ │ ├── ServiceHostService.cs
│ │ ├── ServiceHostServicePythonProxy.cs
│ │ └── ServiceInstance.cs
│ ├── Storage
│ │ ├── DefaultDirectoryNames.cs
│ │ ├── DefaultFilenames.cs
│ │ ├── JsonSerializerService.cs
│ │ ├── RelativeValueStoragePath.cs
│ │ ├── StoragePaths.cs
│ │ ├── StorageService.cs
│ │ ├── ValueStoragePythonProxy.cs
│ │ └── ValueStorageService.cs
│ ├── System
│ │ ├── StartupScripts
│ │ │ ├── StartupScriptConfiguration.cs
│ │ │ ├── StartupScriptInstance.cs
│ │ │ ├── StartupScriptNotFoundException.cs
│ │ │ └── StartupScriptsService.cs
│ │ ├── SystemCancellationToken.cs
│ │ ├── SystemLaunchArguments.cs
│ │ └── SystemService.cs
│ ├── Wirehome.Core.csproj
│ ├── WirehomeCoreHost.cs
│ └── WirehomeCoreVersion.cs
├── Wirehome.Core.Hosts.Console
│ ├── Program.cs
│ └── Wirehome.Core.Hosts.Console.csproj
├── Wirehome.sln
├── Wirehome.sln.DotSettings
└── Wirehome.Tests
├── History
│ ├── HistoryExtractTests.cs
│ └── HistoryValuesStreamTests.cs
├── MessageBus
│ └── MessageBusFilterComparerTests.cs
├── Model
│ └── WirehomeDictionaryTests.cs
├── Python
│ └── PythonConverterTests.cs
└── Wirehome.Tests.csproj
462 directories, 731 files
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论