diff --git a/apcups/README.md b/apcups/README.md index 5ca32912b..5e6e74ba9 100644 --- a/apcups/README.md +++ b/apcups/README.md @@ -19,7 +19,7 @@ Should work on all APC UPS devices. Tested only on a "smartUPS". ## Configuration -### plugin.conf +### plugin.yaml Add the following lines to activate the plugin: @@ -31,24 +31,13 @@ ApcUps: port: 3551 ``` -or the same for deprecated *.conf file format: - -```ini -[apcups] - class_name = APCUPS - class_path = plugins.apcups -# host = localhost -# port = 3551 -# cycle = 300 -``` - Description of the attributes: * __host__: ip address of the NIS (optional, default: localhost) * __port__: port of the NIS (optional, default: 3551) * __cycle__: time to update the items with values from apcaccess -### items.conf +### items.yaml There is only one attribute: **apcups** @@ -138,28 +127,6 @@ serverroom: apcups: timeleft ``` -or in (deprecated) *.conf format: - -```ini -# items/apcups.conf -[serverroom] - [[apcups]] - [[[linev]]] - visu_acl = ro - type = num - apcups = linev - - [[[status]]] - # will be 'ONLINE', 'ONBATT', or in case of a problem simply empty - visu_acl = ro - type = str - apcups = status - - [[[timeleft]]] - visu_acl = ro - type = num - apcups = timeleft -``` **type** depends on the values. ### Status Report Fields diff --git a/artnet/README.md b/artnet/README.md index 3f3cbeb99..31c6bdfac 100644 --- a/artnet/README.md +++ b/artnet/README.md @@ -8,22 +8,11 @@ OLA supports most USB -> DMX Adapters available at the moment. ## Supported Hardware -* Hardware supported by OLA. See Link above. +* Hardware supported by OLA. See Link above. ## Configuration -### plugin.conf (deprecated) / .yaml - -``` -[dmx1] - class_name = ArtNet - class_path = plugins.artnet - artnet_subnet = 0 - artnet_net = 0 - artnet_universe = 0 - ip = 192.168.1.123 - port = 6454 -``` +### plugin.yaml ``` dmx1: @@ -36,14 +25,14 @@ dmx1: port: 6454 ``` -### items.conf +### items.yaml Not needed yet. -### logic.conf +### logic.yaml Notice: First DMX channel is 1! Not 0! -To send DMX Data to the universe set in plugin.conf you have 3 possibilities: +To send DMX Data to the universe set in plugin.yaml you have 3 possibilities: #### 1) Send single value ``sh.dmx1(, )`` @@ -52,7 +41,7 @@ Sets DMX_CHAN to value DMX_VALUE. Example: ``sh.dmx1(12,255)`` If channels 1-11 are already set, they will not change. -If channels 1-11 are not set till now, the will be set to value 0. +If channels 1-11 are not set till now, the will be set to value 0. This is needed because on a DMX bus you can not set just one specific channel. You have to begin at first channel setting your values. @@ -63,7 +52,7 @@ Sends to DMX Bus starting at Example: ``sh.dmx1(10,[0,33,44,55,99])`` If channels 1-9 are already set, they will not change. -If channels 1-9 are not set till now, the will be set to value 0. +If channels 1-9 are not set till now, the will be set to value 0. This is needed because on a DMX bus you can not set just one specific channel. You have to begin at first channel setting your values. Values in square brackets will be written to channel (10-14) @@ -80,4 +69,3 @@ Example: ``sh.dmx1([0,33,44,55,99])`` Values in Square brackets will be written to channel (1-5) - diff --git a/asterisk/README.md b/asterisk/README.md index ee10687d5..9b3baa777 100644 --- a/asterisk/README.md +++ b/asterisk/README.md @@ -8,26 +8,28 @@ In manager.config its required to enable at least: ## Configuration -### plugin.conf +### plugin.yaml -The plugin needs the username and password of the AMI and a IP and port address if asterisk does not run on localhost. +The plugin needs the username and password of the AMI and a IP and port address if asterisk does not run on localhost. + +```yaml +ast: + class_name: Asterisk + class_path: plugins.asterisk + username: admin + password: secret + host: 127.0.0.1 # default + port: 5038 # default -``` -[ast] - class_name = Asterisk - class_path = plugins.asterisk - username = admin - password = secret - host = 127.0.0.1 # default - port = 5038 # default ``` -### items.conf +### items.yaml #### ast_dev -Its possible to specify the ``ast_dev`` attribute to an bool item in items.conf. The argument could be a number or string and corrospond to thhe asterisk device configuration. -E.g. ``2222`` for the following device in asterisk sip.conf: +It is possible to specify the ``ast_dev`` attribute to an bool item in items.yaml. +The argument could be a number or string and correspond to the asterisk device configuration. +E.g. ``2222`` for the following device in asterisk ``sip.conf``: ``` [2222] @@ -41,32 +43,35 @@ The mailbox number of this phone. It will be set to the number of new messages i #### ast_db Specify the database entry which will be updated at an item change. -In items.conf: +In items.yaml: -``` -[office] - [[fon]] - type = bool - ast_dev = 2222 - ast_db = active/office - [[[box]]] - type = num - ast_box = 22 +```yaml +office: + + fon: + type: bool + ast_dev: 2222 + ast_db: active/office + + box: + type: num + ast_box: 22 ``` -Calling the '2222' from sip client or making a call from it, ``office.fon`` will be set to True. After finishing the call, it will be set to False. +Calling the '2222' from sip client or making a call from it, item ``office.fon`` will be set to True. +After finishing the call, it will be set to False. -### logic.conf +### logic.yaml -It is possible to specify the `ast_userevent` keyword to every logic in logic.conf. +It is possible to specify the `ast_userevent` keyword to every logic in logic.yaml. ``` -[logic1] - ast_userevent = Call +logic1: + ast_userevent: Call -[logic2] - ast_userevent = Action +logic2: + ast_userevent: Action ``` In the asterisk extensions.conf ``exten => _X.,n,UserEvent(Call,Source: ${CALLERID(num)},Value: ${CALLERID(name)})`` would trigger 'logic1' every time, this UserEvent is sent. diff --git a/avm/README.md b/avm/README.md index f86938dc1..9d4b3db40 100644 --- a/avm/README.md +++ b/avm/README.md @@ -4,7 +4,7 @@ The AVM Plugin can be used to connect to a device from AVM (e.g. the Fritzbox). You can control functionality and read data from the device. Moreover you can connect to the live call monitor and monitor incoming or outgoing calls and trigger items based on these events. ## Requirements -This plugin requires lib requests. You can install this lib with: +This plugin requires lib requests. You can install this lib with: ``` sudo pip3 install requests --upgrade @@ -29,36 +29,7 @@ The version is tested with new multi-instance functionality of SmartHomeNG. ## Configuration -### plugin.conf (deprecated) / plugin.yaml - -``` -[fb1] - class_name = AVM - class_path = plugins.avm - username = ... # optional - password = ... - host = fritz.box - port = 49443 - cycle = 300 - ssl = True # use https or not - verify = False # verify ssl certificate - call_monitor = True - call_monitor_incoming_filter = ... #optional, don't set if you don't want to watch only one specific number with your call monitor - instance = fritzbox_7490 -[fb2] - class_name = AVM - class_path = plugins.avm - username = ... # optional - password = ... - host = ... - port = 49443 - cycle = 300 - ssl = True # use https or not - verify = False # verify ssl certificate - call_monitor = True - instance = wlan_repeater_1750 -[...] -``` +### plugin.yaml ```yaml fb1: @@ -103,7 +74,7 @@ If cycle time is reduced, please carefully watch your device and your sh.log. In * `call_monitor`: True or False => Activates or deactivates the MonitoringService, which connects to the FritzDevice's call monitor * `instance`: Unique identifier for each FritzDevice / each instance of the plugin -### items.conf (deprecated) / items.yaml +### items.yaml #### avm_data_type This attribute defines supported functions that can be set for an item. Full set see example below. @@ -112,429 +83,6 @@ are parsed as child items. In the example below there is a comment in the respec ### Example: -``` -[avm] - [[uptime_7490]] - type = num - visu_acl = ro - avm_data_type@fritzbox_7490 = uptime - [[uptime_1750]] - type = num - visu_acl = ro - avm_data_type@wlan_repeater_1750 = uptime - [[serial_number_7490]] - type = str - visu_acl = ro - avm_data_type@fritzbox_7490 = serial_number - [[serial_number_1750]] - type = str - visu_acl = ro - avm_data_type@wlan_repeater_1750 = serial_number - [[firmware_7490]] - type = str - visu_acl = ro - avm_data_type@fritzbox_7490 = software_version - [[firmware_1750]] - type = str - visu_acl = ro - avm_data_type@wlan_repeater_1750 = software_version - [[hardware_version_7490]] - type = str - visu_acl = ro - avm_data_type@fritzbox_7490 = hardware_version - [[hardware_version_1750]] - type = str - visu_acl = ro - avm_data_type@wlan_repeater_1750 = hardware_version - [[myfritz]] - type = bool - avm_data_type@fritzbox_7490 = myfritz_status - [[monitor]] - [[[trigger]]] - type = bool - avm_data_type@fritzbox_7490 = monitor_trigger - avm_incoming_allowed = xxxxxxxx - avm_target_number = xxxxxxxx - enforce_updates = yes - [[[trigger2]]] - type = bool - avm_data_type@fritzbox_7490 = monitor_trigger - avm_incoming_allowed = xxxxxxxx - avm_target_number = xxxxxxxx - enforce_updates = yes - [[[trigger3]]] - type = bool - avm_data_type@fritzbox_7490 = monitor_trigger - avm_incoming_allowed = xxxxxxxx - avm_target_number = xxxxxxxx - enforce_updates = yes - [[[trigger4]]] - type = bool - avm_data_type@fritzbox_7490 = monitor_trigger - avm_incoming_allowed = xxxxxxxx - avm_target_number = xxxxxxxx - enforce_updates = yes - [[[incoming]]] - [[[[is_call_incoming]]]] - type = bool - avm_data_type@fritzbox_7490 = is_call_incoming - [[[[duration]]]] - type = num - avm_data_type@fritzbox_7490 = call_duration_incoming - [[[[last_caller]]]] - type = str - avm_data_type@fritzbox_7490 = last_caller_incoming - [[[[last_calling_number]]]] - type = str - avm_data_type@fritzbox_7490 = last_number_incoming - [[[[last_called_number]]]] - type = str - avm_data_type@fritzbox_7490 = last_called_number_incoming - [[[[last_call_date]]]] - type = str - avm_data_type@fritzbox_7490 = last_call_date_incoming - [[[[event]]]] - type = str - avm_data_type@fritzbox_7490 = call_event_incoming - [[[outgoing]]] - [[[[is_call_outgoing]]]] - type = bool - avm_data_type@fritzbox_7490 = is_call_outgoing - [[[[duration]]]] - type = num - avm_data_type@fritzbox_7490 = call_duration_outgoing - [[[[last_caller]]]] - type = str - avm_data_type@fritzbox_7490 = last_caller_outgoing - [[[[last_calling_number]]]] - type = str - avm_data_type@fritzbox_7490 = last_number_outgoing - [[[[last_called_number]]]] - type = str - avm_data_type@fritzbox_7490 = last_called_number_outgoing - [[[[last_call_date]]]] - type = str - avm_data_type@fritzbox_7490 = last_call_date_outgoing - [[[[event]]]] - type = str - avm_data_type@fritzbox_7490 = call_event_outgoing - [[[newest]]] - [[[[direction]]]] - type = str - avm_data_type@fritzbox_7490 = call_direction - cache = yes - [[[[event]]]] - type = str - avm_data_type@fritzbox_7490 = call_event - cache = yes - [[tam]] - index = 1 - type = bool - visu_acl = rw - avm_data_type@fritzbox_7490 = tam - [[[name]]] - type = str - visu_acl = ro - avm_data_type@fritzbox_7490 = tam_name - [[[message_number_old]]] - type = num - visu_acl = ro - avm_data_type@fritzbox_7490 = tam_old_message_number - eval = (sh.avm.tam.message_number_total()-sh.avm.tam.message_number_new()) - eval_trigger = avm.tam.message_number_total | avm.tam.message_number_new - [[[message_number_new]]] - type = num - visu_acl = ro - avm_data_type@fritzbox_7490 = tam_new_message_number - [[[message_number_total]]] - type = num - visu_acl = ro - avm_data_type@fritzbox_7490 = tam_total_message_number - [[wan]] - [[[connection_status]]] - type = str - visu_acl = ro - avm_data_type@fritzbox_7490 = wan_connection_status - [[[connection_error]]] - type = str - visu_acl = ro - avm_data_type@fritzbox_7490 = wan_connection_error - [[[is_connected]]] - type = bool - visu_acl = ro - avm_data_type@fritzbox_7490 = wan_is_connected - [[[uptime]]] - type = num - visu_acl = ro - avm_data_type@fritzbox_7490 = wan_uptime - [[[ip]]] - type = str - visu_acl = ro - avm_data_type@fritzbox_7490 = wan_ip - [[[upstream]]] - type = num - visu_acl = ro - avm_data_type@fritzbox_7490 = wan_upstream - [[[downstream]]] - type = num - visu_acl = ro - avm_data_type@fritzbox_7490 = wan_downstream - [[[total_packets_sent]]] - type = num - visu_acl = ro - avm_data_type@fritzbox_7490 = wan_total_packets_sent - [[[total_packets_received]]] - type = num - visu_acl = ro - avm_data_type@fritzbox_7490 = wan_total_packets_received - [[[current_packets_sent]]] - type = num - visu_acl = ro - avm_data_type@fritzbox_7490 = wan_current_packets_sent - [[[current_packets_received]]] - type = num - visu_acl = ro - avm_data_type@fritzbox_7490 = wan_current_packets_received - [[[total_bytes_sent]]] - type = num - visu_acl = ro - avm_data_type@fritzbox_7490 = wan_total_bytes_sent - [[[total_bytes_received]]] - type = num - visu_acl = ro - avm_data_type@fritzbox_7490 = wan_total_bytes_received - [[[current_bytes_sent]]] - type = num - visu_acl = ro - avm_data_type@fritzbox_7490 = wan_current_bytes_sent - [[[current_bytes_received]]] - type = num - visu_acl = ro - avm_data_type@fritzbox_7490 = wan_current_bytes_received - [[[link]]] - type = bool - visu_acl = ro - avm_data_type@fritzbox_7490 = wan_link - [[wlan]] - [[[gf_wlan_1]]] - type = bool - visu_acl = rw - avm_data_type@fritzbox_7490 = wlanconfig #2,4ghz - avm_wlan_index = 1 - [[[gf_wlan_1_ssid]]] - type = str - visu_acl = ro - avm_data_type@fritzbox_7490 = wlanconfig_ssid #2,4ghz - avm_wlan_index = 1 - [[[gf_wlan_2]]] - type = bool - visu_acl = rw - avm_data_type@fritzbox_7490 = wlanconfig #5 GHz - avm_wlan_index = 2 - [[[gf_wlan_3]]] - type = bool - visu_acl = rw - avm_data_type@fritzbox_7490 = wlanconfig # Guest - avm_wlan_index = 3 - [[[gf_wlan_3_ssid]]] - type = str - visu_acl = ro - avm_data_type@fritzbox_7490 = wlanconfig_ssid #2,4ghz - avm_wlan_index = 3 - [[[gf_wlan_3_tr]]] - type = num - visu_acl = rw - avm_data_type@fritzbox_7490 = wlan_guest_time_remaining # Guest - avm_wlan_index = 3 - [[[uf_wlan_1]]] - type = bool - visu_acl = rw - avm_data_type@wlan_repeater_1750 = wlanconfig #2,4ghz - avm_wlan_index = 1 - [[[uf_wlan_1_ssid]]] - type = str - visu_acl = ro - avm_data_type@wlan_repeater_1750 = wlanconfig_ssid #2,4ghz - avm_wlan_index = 1 - [[[uf_wlan_2]]] - type = bool - visu_acl = rw - avm_data_type@wlan_repeater_1750 = wlanconfig #5 GHz - avm_wlan_index = 2 - [[[uf_wlan_3]]] - type = bool - visu_acl = rw - avm_data_type@wlan_repeater_1750 = wlanconfig # Guest - avm_wlan_index = 3 - [[devices]] - [[[wlan_repeater_1750]]] - [[[[GalaxyS5]]]] - mac = xx:xx:xx:xx:xx:xx - avm_data_type@wlan_repeater_1750 = network_device - type = bool - cache = yes - visu_acl = ro - [[[[[ip]]]]] # these items need to be child items from network_device, an @... must not be set - type = str - avm_data_type = device_ip - visu_acl = ro - [[[[[connection_type]]]]] # these items need to be child items from network_device, an @... must not be set - type = str - avm_data_type = device_connection_type - visu_acl = ro - [[[[[hostname]]]]] # these items need to be child items from network_device, an @... must not be set - type = str - avm_data_type = device_hostname - visu_acl = ro - [[[[iPhone]]]] - mac = xx:xx:xx:xx:xx:xx - avm_data_type@wlan_repeater_1750 = network_device - type = bool - cache = yes - visu_acl = ro - [[[[[ip]]]]] # these items need to be child items from network_device, an @... must not be set - type = str - avm_data_type = device_ip - visu_acl = ro - [[[[[connection_type]]]]] # these items need to be child items from network_device, an @... must not be set - type = str - avm_data_type = device_connection_type - visu_acl = ro - [[[[[hostname]]]]] # these items need to be child items from network_device, an @... must not be set - type = str - avm_data_type = device_hostname - visu_acl = ro - [[[fritzbox_7490]]] - [[[[iPad]]]] - mac = xx:xx:xx:xx:xx:xx - avm_data_type@fritzbox_7490 = network_device - type = bool - visu_acl = ro - [[[[[ip]]]]] # these items need to be child items from network_device, an @... must not be set - type = str - avm_data_type = device_ip - visu_acl = ro - [[[[[connection_type]]]]] # these items need to be child items from network_device, an @... must not be set - type = str - avm_data_type = device_connection_type - visu_acl = ro - [[[[[hostname]]]]] # these items need to be child items from network_device, an @... must not be set - type = str - avm_data_type = device_hostname - visu_acl = ro - [[[[hauptrechner]]]] - mac = xx:xx:xx:xx:xx:xx - avm_data_type@fritzbox_7490 = network_device - type = bool - visu_acl = ro - [[[[[ip]]]]] # these items need to be child items from network_device, an @... must not be set - type = str - avm_data_type = device_ip - visu_acl = ro - [[[[[connection_type]]]]] # these items need to be child items from network_device, an @... must not be set - type = str - avm_data_type = device_connection_type - visu_acl = ro - [[[[[hostname]]]]] # these items need to be child items from network_device, an @... must not be set - type = str - avm_data_type = device_hostname - visu_acl = ro - [[[[GalaxyS5]]]] - mac = xx:xx:xx:xx:xx:xx - avm_data_type@fritzbox_7490 = network_device - type = bool - cache = yes - visu_acl = ro - [[[[[ip]]]]] # these items need to be child items from network_device, an @... must not be set - type = str - avm_data_type = device_ip - visu_acl = ro - [[[[[connection_type]]]]] # these items need to be child items from network_device, an @... must not be set - type = str - avm_data_type = device_connection_type - visu_acl = ro - [[[[[hostname]]]]] # these items need to be child items from network_device, an @... must not be set - type = str - avm_data_type = device_hostname - visu_acl = ro - [[[[GalaxyTabS2]]]] - mac = xx:xx:xx:xx:xx:xx - avm_data_type@fritzbox_7490 = network_device - type = bool - visu_acl = ro - [[[[[ip]]]]] # these items need to be child items from network_device, an @... must not be set - type = str - avm_data_type = device_ip - visu_acl = ro - [[[[[connection_type]]]]] # these items need to be child items from network_device, an @... must not be set - type = str - avm_data_type = device_connection_type - visu_acl = ro - [[[[[hostname]]]]] # these items need to be child items from network_device, an @... must not be set - type = str - avm_data_type = device_hostname - visu_acl = ro - [[[[iPhone]]]] - mac = xx:xx:xx:xx:xx:xx - avm_data_type@fritzbox_7490 = network_device - type = bool - cache = yes - visu_acl = ro - [[[[[ip]]]]] # these items need to be child items from network_device, an @... must not be set - type = str - avm_data_type = device_ip - visu_acl = ro - [[[[[connection_type]]]]] # these items need to be child items from network_device, an @... must not be set - type = str - avm_data_type = device_connection_type - visu_acl = ro - [[[[[hostname]]]]] # these items need to be child items from network_device, an @... must not be set - type = str - avm_data_type = device_hostname - visu_acl = ro - [[dect]] - [[[socket_living]]] - type = bool - avm_data_type@fritzbox_7490 = aha_device - ain = 14324 0432601 # has to be identical to id in fritzbox (also with spaces!) - visu_acl = rw - [[[[energy]]]] # these items need to be child items from aha_device, an @... must not be set - avm_data_type@fritzbox_7490 = energy - type = num - visu_acl = ro - [[[[power]]]] # these items need to be child items from aha_device, an @... must not be set - avm_data_type@fritzbox_7490 = power - type = num - sqlite = yes - enforce_updates=true - visu_acl = ro - eval = value / 100 - [[[[temperature]]]] # these items need to be child items from aha_device, an @... must not be set - avm_data_type@fritzbox_7490 = temperature - type = num - visu_acl = ro - [[[socket_office]]] - type = bool - avm_data_type@fritzbox_7490 = aha_device - ain = 03456 0221393 # has to be identical to id in fritzbox (also with spaces!) - visu_acl = rw - [[[[energy]]]] # these items need to be child items from aha_device, an @... must not be set - avm_data_type@fritzbox_7490 = energy - type = num - visu_acl = ro - [[[[power]]]] # these items need to be child items from aha_device, an @... must not be set - avm_data_type@fritzbox_7490 = power - type = num - sqlite = yes - enforce_updates=true - visu_acl = ro - eval = value / 100 - [[[[temperature]]]] # these items need to be child items from aha_device, an @... must not be set - avm_data_type@fritzbox_7490 = temperature - type = num - visu_acl = ro -``` - ```yaml avm: diff --git a/backend/README.md b/backend/README.md old mode 100755 new mode 100644 index f79587da9..725e09bcc --- a/backend/README.md +++ b/backend/README.md @@ -15,7 +15,7 @@ There is however only basic protection against unauthorized access or use of the Call the backend-webserver: **```http://:8383```** -Support is provided trough the support thread within the smarthomeNG forum: +Support is provided trough the support thread within the smarthomeNG forum: [knx-user-forum.de/forum/supportforen/smarthome-py/959964-support-thread-f%C3%BCr-das-backend-plugin](https://knx-user-forum.de/forum/supportforen/smarthome-py/959964-support-thread-für-das-backend-plugin) @@ -42,7 +42,7 @@ To support visualization, the visu_websocket plugin has to be used. It has to be ## Configuration -### plugin.yaml / plugin.conf (deprecated) +### plugin.yaml ```yaml # /etc/plugin.yaml @@ -53,16 +53,6 @@ BackendServer: #pypi_timeout: 5 ``` -``` -# /etc/plugin.conf -[BackendServer] - class_name = BackendServer - class_path = plugins.backend - #updates_allowed = True - #developer_mode = on - #pypi_timeout = 5 -``` - #### updates_allowed diff --git a/backend/_pv_1_3_5/README.md b/backend/_pv_1_3_5/README.md old mode 100755 new mode 100644 index 9d06592c8..ac606aed8 --- a/backend/_pv_1_3_5/README.md +++ b/backend/_pv_1_3_5/README.md @@ -15,7 +15,7 @@ There is however only basic protection against unauthorized access or use of the Call the backend-webserver: **```http://:8383```** -Support is provided trough the support thread within the smarthomeNG forum: +Support is provided through the support thread within the smarthomeNG forum: [knx-user-forum.de/forum/supportforen/smarthome-py/959964-support-thread-f%C3%BCr-das-backend-plugin](https://knx-user-forum.de/forum/supportforen/smarthome-py/959964-support-thread-für-das-backend-plugin) @@ -48,23 +48,7 @@ To support visualization, the visu_websocket plugin has to be used. It has to be ## Configuration -### plugin.conf (deprecated) / plugin.yaml - -``` -[BackendServer] - class_name = BackendServer - class_path = plugins.backend - #ip = xxx.xxx.xxx.xxx - #port = 8383 - #updates_allowed = True - #threads = 8 - #user = admin - #password = very_secure_password - #hashed_password = 1245a9633edf47b7091f37c4d294b5be5a9936c81c5359b16d1c4833729965663f1943ef240959c53803fedef7ac19bd59c66ad7e7092d7dbf155ce45884607d - #language = en - #developer_mode = on - #pypi_timeout = 5 -``` +### plugin.yaml ```yaml BackendServer: diff --git a/backend/_pv_1_4_9/README.md b/backend/_pv_1_4_9/README.md old mode 100755 new mode 100644 index f79587da9..f264fdcb7 --- a/backend/_pv_1_4_9/README.md +++ b/backend/_pv_1_4_9/README.md @@ -15,7 +15,7 @@ There is however only basic protection against unauthorized access or use of the Call the backend-webserver: **```http://:8383```** -Support is provided trough the support thread within the smarthomeNG forum: +Support is provided trough the support thread within the smarthomeNG forum: [knx-user-forum.de/forum/supportforen/smarthome-py/959964-support-thread-f%C3%BCr-das-backend-plugin](https://knx-user-forum.de/forum/supportforen/smarthome-py/959964-support-thread-für-das-backend-plugin) @@ -42,7 +42,7 @@ To support visualization, the visu_websocket plugin has to be used. It has to be ## Configuration -### plugin.yaml / plugin.conf (deprecated) +### plugin.yaml ```yaml # /etc/plugin.yaml @@ -53,17 +53,6 @@ BackendServer: #pypi_timeout: 5 ``` -``` -# /etc/plugin.conf -[BackendServer] - class_name = BackendServer - class_path = plugins.backend - #updates_allowed = True - #developer_mode = on - #pypi_timeout = 5 -``` - - #### updates_allowed By default, the backend server allows updates to the running smarthomeNG instance. For instance, it is possible to trigger or to reload a logic. Setting **`updates_allowed`** to **`False`**, you can disable these features. diff --git a/blockly/README.md b/blockly/README.md index d2b963044..d9d1e6e3b 100644 --- a/blockly/README.md +++ b/blockly/README.md @@ -17,17 +17,10 @@ And please pay attention that the libs are installed for Python3 and not an olde ## Configuration -### plugin.conf (deprecated) / plugin.yaml - -``` -# /etc/plugin.conf -[Blockly] - plugin_name = blockly -``` +### plugin.yaml ```yaml # /etc/plugin.yaml Blockly: plugin_name: blockly ``` - diff --git a/boxcar/README.md b/boxcar/README.md index 32b0b1387..76bf3e204 100644 --- a/boxcar/README.md +++ b/boxcar/README.md @@ -7,28 +7,29 @@ In addition you need the free Boxcar App from Apple Appstore on your iOS Device. ## Supported Hardware -* Hardware supported by Boxcar.io Service (ATM only iOS, Android comming soon - perhaps) +* Hardware supported by Boxcar.io Service (ATM only iOS, Android coming soon - perhaps) ## Configuration -### plugin.conf +### plugin.yaml -Please provide a plugin.conf snippet for your plugin with ever option your plugin supports. Optional attributes should be commented out. +The following snippet can be used within the plugin.yaml. ``` -[bc] - class_name = Boxcar - class_path = plugins.boxcar - apikey = abcdefghij123456 # Get it from your Boxcar Account - email = your@mail.org # Registered with Boxcar +bc: + class_name: Boxcar + class_path: plugins.boxcar + apikey: abcdefghij123456 # Get it from your Boxcar Account + email: your@mail.org # Registered with Boxcar ``` +Attributes apikey and email need to be set. -### items.conf +### items.yaml Not needed yet. -### logic.conf +### logic.yaml To push a message to your iOS Device just call @@ -36,7 +37,8 @@ To push a message to your iOS Device just call sh.bc('House at Tulpenstrasse',' Waschmaschine fertig!') ``` -sh is the main smarthome instance. -bc is the name of the plugin instance (defined in plugins.conf in the square brackets). +``sh`` is the main smarthome instance. +``bc`` is the name of the plugin instance (defined in plugins.yaml). + Two parameters with text to be send are supported. If you only want to send one string, set the second string to an empty string. diff --git a/buderus/README.md b/buderus/README.md index af8c91836..afe6bb6c4 100644 --- a/buderus/README.md +++ b/buderus/README.md @@ -1,18 +1,24 @@ # buderus -Plugin to control Buderus boilers using an additional Logamatic web KM200 module. Logamatic web KM50 and KM300 modules should also be supported. +Plugin to control Buderus boilers using an additional Logamatic web KM200 module. +Logamatic web KM50 and KM300 modules should also be supported. ## Notes -This plugin is still __under development__! I use this plugin to lower heating when no presence is detected for longer period or when the alarm system is activated. + +This plugin is still __under development__! The original author used this plugin +to lower heating when no presence is detected for longer period or +when the alarm system is activated. ## Prerequisite + The following python packages need to be installed on your system: - urllib - crypto -You need to generate a key from your a) device password, printed on a sticker and b) from your user defined password used to access EasyControl App for example. - +A key needs to be generated from +a) device password, printed on a sticker and +b) from user defined password used to access EasyControl App. ## Installation @@ -22,101 +28,101 @@ cd plugins git clone https://github.com/rthill/buderus.git ``` -### plugin.conf +### plugin.yaml ``` -[buderus] -class_name = Buderus -class_path = plugins.buderus -host = -key = -cycle = 900 # default every 15 minutes +buderus: + class_name: Buderus + class_path: plugins.buderus + host: + key: + cycle: 900 # default every 15 minutes ``` -### items.conf +### items.yaml + +```yaml + +buderus: + + info: + + datetime: + type: str + km_id: /gateway/DateTime + + firmware: + type: str + km_id: /gateway/versionFirmware + + hardware: + type: str + km_id: /gateway/versionHardware + + brand: + type: str + km_id: /system/brand + + health: + type: str + km_id: /system/healthStatus + + sensors: + outside: + type: num + km_id: /system/sensors/temperatures/outdoor_t1 + supply: + type: num + km_id: /system/sensors/temperatures/supply_t1 + hotwater: + type: num + km_id: /system/sensors/temperatures/hotWater_t2 + boiler: + flame: + type: str + km_id: /heatSources/flameStatus + starts: + type: num + km_id: /heatSources/hs1/numberOfStarts -``` -[buderus] - [[info]] - [[[datetime]]] - type = str - km_id = "/gateway/DateTime" - [[[firmware]]] - type = str - km_id = "/gateway/versionFirmware" - [[[hardware]]] - type = str - km_id = "/gateway/versionHardware" - [[[brand]]] - type = str - km_id = "/system/brand" - [[[health]]] - type = str - km_id = "/system/healthStatus" - [[sensors]] - [[[outside]]] - type = num - km_id = "/system/sensors/temperatures/outdoor_t1" - Influx = true - [[[supply]]] - type = num - km_id = "/system/sensors/temperatures/supply_t1" - Influx = true - [[[hotwater]]] - type = num - km_id = "/system/sensors/temperatures/hotWater_t2" - Influx = true - [[boiler]] - [[[flame]]] - type = str - km_id = "/heatSources/flameStatus" - [[[starts]]] - type = num - km_id = "/heatSources/hs1/numberOfStarts" # Heating circuit 1 - [[hc1]] - [[[room_set]]] - type = num - km_id = "/heatingCircuits/hc1/currentRoomSetpoint" - Influx = true - [[[manual_set]]] - type = num - km_id = "/heatingCircuits/hc1/manualRoomSetpoint" - [[[temporary_set]]] - type = num - km_id = "/heatingCircuits/hc1/temporaryRoomSetpoint" - [[[temp_eco]]] - type = num - km_id = "/heatingCircuits/hc1/temperatureLevels/eco" - Influx = true - [[[temp_comfort]]] - type = num - km_id = "/heatingCircuits/hc1/temperatureLevels/comfort2" - Influx = true - [[[active_program]]] - type = str - km_id = "/heatingCircuits/hc1/activeSwitchProgram" - [[[mode]]] - type = str - km_id = "/heatingCircuits/hc1/operationMode" + hc1: + room_set: + type: num + km_id: /heatingCircuits/hc1/currentRoomSetpoint + manual_set: + type: num + km_id: /heatingCircuits/hc1/manualRoomSetpoint + temporary_set: + type: num + km_id: /heatingCircuits/hc1/temporaryRoomSetpoint + temp_eco: + type: num + km_id: /heatingCircuits/hc1/temperatureLevels/eco + temp_comfort: + type: num + km_id: /heatingCircuits/hc1/temperatureLevels/comfort2 + active_program: + type: str + km_id: /heatingCircuits/hc1/activeSwitchProgram + mode: + type: str + km_id: /heatingCircuits/hc1/operationMode + # Hot water circuit 1 - [[hw1]] - [[[temp]]] - type = num - km_id = "/dhwCircuits/dhw1/actualTemp" - Influx = true - [[[set]]] - type = num - km_id = "/dhwCircuits/dhw1/currentSetpoint" - Influx = true - [[[flow]]] - type = num - km_id = "/dhwCircuits/dhw1/waterFlow" - Influx = true - [[[time]]] - type = num - km_id = "/dhwCircuits/dhw1/workingTime" - Influx = true + hw1: + temp: + type: num + km_id: /dhwCircuits/dhw1/actualTemp + set: + type: num + km_id: /dhwCircuits/dhw1/currentSetpoint + flow: + type: num + km_id: /dhwCircuits/dhw1/waterFlow + time: + type: num + km_id: /dhwCircuits/dhw1/workingTime ``` -See [URLs](URLs.md) for more valid km_id's. \ No newline at end of file +See [URLs](URLs.md) for more valid km_id's. diff --git a/cli/README.md b/cli/README.md index a4f217681..ea0f7a853 100644 --- a/cli/README.md +++ b/cli/README.md @@ -2,17 +2,7 @@ ## Configuration -### plugin.conf (deprecated) / plugin.yaml - -``` -[cli] - class_name = CLI - class_path = plugins.cli - #ip = 127.0.0.1 - #port = 2323 - #update = false - #hashed_password = 1245a9633edf47b7091f37c4d294b5be5a9936c81c5359b16d1c4833729965663f1943ef240959c53803fedef7ac19bd59c66ad7e7092d7dbf155ce45884607d -``` +### plugin.yaml ``` cli: @@ -31,13 +21,15 @@ This plugin listens for a telnet connection. ``update =`` restrict the access of the items to read only (false, default) or allows read/write access (true) ``hashed_password = `` password that needs to be entered on login. SHA-512 hashed. Value shown above is "very_secure_password" +The hashed_password can be obtained by using the backend's service page and the hash generator. + ## Usage -Telnet to the configured IP adress and port. +Telnet to the configured IP adress and port. Enter ``help`` for a list of available commands. -You can enter ``help [commandgroup]`` to see only commands belonging to that group (and global commands). Commandgroups are ``item``, ``logic``, ``log`` and ``scheduler``. +You can enter ``help [commandgroup]`` to see only commands belonging to that group (and global commands). Commandgroups are ``item``, ``logic``, ``log`` and ``scheduler``. command | function --- | --- diff --git a/cli/_pv_1_3_0/README.md b/cli/_pv_1_3_0/README.md old mode 100755 new mode 100644 index 32ce491ac..e3dbd5372 --- a/cli/_pv_1_3_0/README.md +++ b/cli/_pv_1_3_0/README.md @@ -2,19 +2,9 @@ ## Configuration -### plugin.conf (deprecated) / plugin.yaml +### plugin.yaml -``` -[cli] - class_name = CLI - class_path = plugins.cli - #ip = 127.0.0.1 - #port = 2323 - #update = false - #hashed_password = 1245a9633edf47b7091f37c4d294b5be5a9936c81c5359b16d1c4833729965663f1943ef240959c53803fedef7ac19bd59c66ad7e7092d7dbf155ce45884607d -``` - -``` +```yaml cli: class_name: CLI class_path: plugins.cli @@ -31,9 +21,11 @@ This plugin listens for a telnet connection. ``update =`` restrict the access of the items to read only (false, default) or allows read/write access (true) ``hashed_password = `` password that needs to be entered on login. SHA-512 hashed. Value shown above is "very_secure_password" +The hashed_password can be obtained by using the backend's service page and the hash generator. + ## Usage -Telnet to the configured IP adress and port. +Telnet to the configured IP adress and port. Enter ``help`` for a list of available commands. diff --git a/comfoair/README.md b/comfoair/README.md old mode 100755 new mode 100644 index 82a0715dd..64678f799 --- a/comfoair/README.md +++ b/comfoair/README.md @@ -6,7 +6,7 @@ There exist identical systems from different manufactures which use the exact sa Additional support for the ComfoAir 500 was added but the protocol is not fully investigated yet: http://matsab.de/images/comfoair/Protokoll_CA500_Avignon.pdf -The ComfoAir plugin uses a separate commands.py file which contains the different control- (control characters like start sequence, acknowledge etc.) and commandsets for the supported systems. +The ComfoAir plugin uses a separate commands.py file which contains the different control- (control characters like start sequence, acknowledge etc.) and commandsets for the supported systems. You can configure the plugin to connect by TCP (host and port) using a TCP to serial (RS232 for ComfoAir 350 or RS485 for ComfoAir 500) converter or provide a direct serial connection on the host system. @@ -19,17 +19,7 @@ This plugin has no requirements or dependencies. ## Configuration -### plugin.conf (deprecated) / .yaml - -``` -[comfoair] - class_name = ComfoAir - class_path = plugins.comfoair - kwltype = comfoair350 # Currently supported: comfoair350 and comfoair500 - host = 192.168.123.6 # Provide host and port if you want to use TCP connection (for a TCP to serial converter) - port = 5555 # Port - #serialport = /dev/ttyUSB0 # Enable this if you want to use a serial connection -``` +### plugin.yaml ``` comfoair: @@ -41,201 +31,80 @@ comfoair: #serialport: /dev/ttyUSB0 # Enable this if you want to use a serial connection ``` -### items.conf +### items.yaml The plugin is completely flexible in which commands you use and when you want the read out which parameters. Everything is configured by adding new items in a SmartHomeNG item configuration file. -The following item attributes are supported: +The following item attributes are supported: #### comfoair_send Changes to this item result in sending the configured command to the KWL system. The command is complemented by the item value in a pre-configured way (see commands.py). -e.g. comfoair_send = WriteVentilationLevel +```yaml +comfoair_send: WriteVentilationLevel +``` #### comfoair_read The item value should be read by using the configured command. -e.g. comfoair_read = ReadVentilationLevel +```yaml +comfoair_read: ReadVentilationLevel +``` #### comfoair_read_afterwrite A timespan (seconds) can be configured. If a value for this attribute is set, the plugin will wait the configured delay after the write command and then issue the configured read command to update the items value. This attribute has no default value. If the attribute is not set, no read will be issued after write. -e.g. comfoair_read_afterwrite = 1 # seconds +```yaml +comfoair_read_afterwrite: 1 # seconds +``` #### comfoair_read_cycle With this attribute a read cycle for this item can be configured (timespan between cycles in seconds). -e.g. comfoair_read_cycle = 3600 # every hour +```yaml +comfoair_read_cycle: 3600 # every hour +``` #### comfoair_init If this attribute is set to a value (e.g. 'true'), the plugin will use the read command at startup to get an initial value. -e.g. comfoair_init = true +```yaml +comfoair_init: true +``` #### comfoair_trigger This attribute can contain a list of commands, which will be issued if the item is updated. Useful for instance: If the ventilation level is changed, get updated ventilator RPM values. -e.g. comfoair_trigger = ReadSupplyAirRPM | ReadExtractAirRPM +```yaml +comfoair_trigger: + - ReadSupplyAirRPM + - ReadExtractAirRPM +``` #### comfoair_trigger_afterwrite A timespan (seconds) can be configured. After an update to this item, the commands configured in comfoair_trigger will be issued. Before triggering the here configured delay will be waited for. Default value: 5 seconds. -e.g. comfoair_trigger_afterwrite = 10 # seconds +```yaml +comfoair_trigger_afterwrite: 10 # seconds +``` #### Example Here you can find a sample configuration using the ComfoAir 350 commands: -``` -# .conf (deprecated) -[kwl] - [[level]] - type = num - comfoair_send = WriteVentilationLevel - comfoair_read = ReadCurrentVentilationLevel - comfoair_read_afterwrite = 1 # seconds - comfoair_trigger = ReadSupplyAirRPM - comfoair_trigger_afterwrite = 6 # seconds - comfoair_init = true - sqlite = yes - [[extractair]] - [[[rpm]]] - type = num - comfoair_read = ReadExtractAirRPM - comfoair_read_cycle = 60 # seconds - comfoair_init = true - [[[level]]] - type = num - comfoair_read = ReadExtractAirPercentage - comfoair_read_cycle = 60 # seconds - comfoair_init = true - [[supplyair]] - [[[rpm]]] - type = num - comfoair_read = ReadSupplyAirRPM - comfoair_read_cycle = 60 # seconds - comfoair_init = true - [[[level]]] - type = num - comfoair_read = ReadSupplyAirPercentage - comfoair_read_cycle = 60 # seconds - comfoair_init = true - [[filter]] - [[[reset]]] - type = bool - comfoair_send = WriteFilterReset - [[temp]] - [[[comfort]]] - type = num - comfoair_send = WriteComfortTemperature - comfoair_read = ReadComfortTemperature - comfoair_read_cycle = 60 # seconds - comfoair_init = true - [[[freshair]]] - type = num - comfoair_read = ReadFreshAirTemperature - comfoair_read_cycle = 60 # seconds - comfoair_init = true - sqlite = yes - [[[supplyair]]] - type = num - comfoair_read = ReadSupplyAirTemperature - comfoair_read_cycle = 60 # seconds - comfoair_init = true - sqlite = yes - [[[extractair]]] - type = num - comfoair_read = ReadExtractAirTemperature - comfoair_read_cycle = 60 # seconds - comfoair_init = true - sqlite = yes - [[[exhaustair]]] - type = num - comfoair_read = ReadExhaustAirTemperature - comfoair_read_cycle = 60 # seconds - comfoair_init = true - sqlite = yes - [[[preheater]]] - type = num - comfoair_read = ReadPreHeatingTemperature - comfoair_read_cycle = 60 # seconds - comfoair_init = true - [[[groundheat]]] - type = num - comfoair_read = ReadGroundHeatTemperature - comfoair_read_cycle = 60 # seconds - comfoair_init = true - [[bypass]] - type = num - comfoair_read = ReadBypassPercentage - comfoair_read_cycle = 600 # seconds - comfoair_init = true - [[preheater]] - type = num - comfoair_read = ReadPreHeatingStatus - comfoair_read_cycle = 600 # seconds - comfoair_init = true - [[operatinghours]] - [[[away]]] - type = num - comfoair_read = ReadOperatingHoursAway - comfoair_read_cycle = 3600 # seconds - comfoair_init = true - [[[low]]] - type = num - comfoair_read = ReadOperatingHoursLow - comfoair_read_cycle = 3600 # seconds - comfoair_init = true - [[[medium]]] - type = num - comfoair_read = ReadOperatingHoursMedium - comfoair_read_cycle = 3600 # seconds - comfoair_init = true - [[[high]]] - type = num - comfoair_read = ReadOperatingHoursHigh - comfoair_read_cycle = 3600 # seconds - comfoair_init = true - [[[antifreeze]]] - type = num - comfoair_read = ReadOperatingHoursAntiFreeze - comfoair_read_cycle = 3600 # seconds - comfoair_init = true - [[[preheater]]] - type = num - comfoair_read = ReadOperatingHoursPreHeating - comfoair_read_cycle = 3600 # seconds - comfoair_init = true - [[[bypass]]] - type = num - comfoair_read = ReadOperatingHoursBypass - comfoair_read_cycle = 3600 # seconds - comfoair_init = true - [[[filter]]] - type = num - comfoair_read = ReadOperatingHoursFilter - comfoair_read_cycle = 3600 # seconds - comfoair_init = true - [[heatpreparationratio]] - type = num - eval = (sh.kwl.temp.supplyair() - sh.kwl.temp.freshair()) / (sh.kwl.temp.extractair() - sh.kwl.temp.exhaustair()) * 100 - eval_trigger = kwl.temp.supplyair | kwl.temp.freshair | kwl.temp.extractair | kwl.temp.exhaustair -``` - -``` -# .yaml +```yaml kwl: level: type: num @@ -375,7 +244,7 @@ kwl: ``` -### logic.conf +### logic.yaml Currently there is no logic configuration for this plugin. diff --git a/dashbutton/README.md b/dashbutton/README.md index 2e0ae5b34..bb34e5fde 100644 --- a/dashbutton/README.md +++ b/dashbutton/README.md @@ -4,9 +4,9 @@ Configure your Amazon Dashbutton. After this, you have to make sure that the Button cannot access the internet. Within the popular AVM Fritzbox you have to activate the "Parental Lock" / "No Internet Policy" for your Dashbutton. - + [How-To in German language](https://blog.thesen.eu/aktuellen-dash-button-oder-ariel-etc-von-amazon-jk29lp-mit-dem-raspberry-pi-nutzen-hacken/) - + ## Requirements ### 1. Install scapy @@ -27,28 +27,22 @@ sudo setcap cap_net_raw=eip /usr/bin/python3.4 sudo setcap cap_net_raw=eip /usr/sbin/tcpdump ``` - Change the python and/or the path to the tcpdump binary to your needs. If you're using the pre-configured + Change the python and/or the path to the tcpdump binary to your needs. If you're using the pre-configured [Smarthome-NG image from Onkelandy](https://knx-user-forum.de/forum/supportforen/smarthome-py/979095-smarthomeng-image-file#post979095) the correct command should be - + ```shell - sudo setcap cap_net_raw=eip /usr/local/bin/python3.5 + sudo setcap cap_net_raw=eip /usr/local/bin/python3.5 ``` - + ## Item setup ### Activate plugin - Activate plugin via plugin.conf (deprecated) or plugin.yaml: - -``` -[dashbutton] - class_name = Dashbutton - class_path = plugins.dashbutton -``` +Activate plugin via plugin.yaml: -``` +```yaml dashbutton: class_name: Dashbutton class_path: plugins.dashbutton @@ -58,41 +52,29 @@ dashbutton: **dashbutton_mac** [required]

The mac address of the dash button. You can add as many mac addresses you want to your item, separated by '|'. - + **dashbutton_mode** [required]

The value can be 'flip' or 'value. If 'flip' mode is chosen, the item type has to be 'bool' and the attribute - 'dashbutton_value' will be ignored. If the configured button was pressed in this mode, the current item value is - flipped. (0->1 or 1->0) - + 'dashbutton_value' will be ignored. If the configured button was pressed in this mode, the current item value is + flipped. (0->1 or 1->0) + **dashbutton_value** [optional]

If 'dashbutton_mode' is set to 'value', the attribute 'dashbutton_value' has to be set. It can be a single value or a list af values. If the attribute value is a list, the values will be processed in the given order. After the last element of the list is reached, the next button press triggers the first element of the list. If a item value is changed by another action than a button press and the new item value is not in the configured list, the next dashbutton press triggers the first element. - + **dashbutton_reset** [optional]

- It is possible to configure a reset timer (in seconds). If there is no item value change after the configured time in - seconds (neither a button press nor another action), the first element of the list is taken when the item is triggered + It is possible to configure a reset timer (in seconds). If there is no item value change after the configured time in + seconds (neither a button press nor another action), the first element of the list is taken when the item is triggered the next time. This attribute will be ignored, if no list is passed to the attribute 'dashbutton_value'. - -### Examples (in .conf (deprecated) and .yaml) - - **'flip' mode** -``` -[Room] - [[Dining_Room]] - name = "Light DiningRoom" - type = bool - knx_dpt = 1 - knx_send = 1/1/1 - knx_listen = 1/1/1 - dashbutton_mac = cc:66:de:dd:55:11 | xx:xx:xx:xx:xx:01 | xx:xx:xx:xx:xx:02 - dashbutton_mode = 'flip' -``` +### Examples -``` +**'flip' mode** + +```yaml Room: Dining_Room: @@ -107,34 +89,10 @@ Room: - xx:xx:xx:xx:xx:02 dashbutton_mode: flip ``` - - **'value' mode** -``` - [Room] - [[Dining_Room]] - name = "Light Dimm DiningRoom" - type = num - knx_dpt = 5 - knx_send = 1/2/1 - knx_listen = 1/2/1 - dashbutton_mac = cc:66:de:dd:55:11 - dashbutton_mode = 'value' - dashbutton_value = 30 - - [Room] - [[Kitchen]] - name = "Light Dimm Kitchen" - type = num - knx_dpt = 5 - knx_send = 1/2/1 - knx_listen = 1/2/1 - dashbutton_mac = dd:11:12:55:55:22 | cc:66:de:dd:55:11 - dashbutton_mode = 'value' - dashbutton_value = 30|10|20|0 - dashbutton_reset = 240 -``` -``` +**'value' mode** + +```yaml Room: Dining_Room: diff --git a/database/README.md b/database/README.md old mode 100755 new mode 100644 index 3b0595e0d..c159141d2 --- a/database/README.md +++ b/database/README.md @@ -51,18 +51,9 @@ Tested drivers (other may work too): ## Configuration -### plugin.conf (deprecated) / .yaml - -

-[database]
-    class_name = Database
-    class_path = plugins.database
-    driver = sqlite3
-    connect = database:/path/to/log.db | check_same_thread:0
-    #prefix = log
-
- -
+### plugin.yaml
+
+```yaml
 database:
     class_name: Database
     class_path: plugins.database
@@ -71,7 +62,7 @@ database:
       - database:/path/to/log.db
       - check_same_thread:0
     # prefix: log
-
+``` The following attributes can be used in the plugin configuration: @@ -86,7 +77,7 @@ The following attributes can be used in the plugin configuration: * `prefix` - if you want to log into an existing database with other tables you can specify a prefix for the plugins' tables -### items.conf +### items.yaml The plugin supports the types `str`, `num` and `bool` which can be logged into the database. @@ -94,24 +85,13 @@ into the database. #### database This attribute enables the database logging when set (just use value `yes`). -
-#.conf (deprecated)
-[some]
-    [[item]]
-        type = num
-        database = yes
-        #database_acl = rw
-
- -
-#.yaml
+```yaml
 some:
-
     item:
         type: num
         database: 'yes'
         # database_acl: rw
-
+``` #### database_acl Specifies if the Database plugin should be used for read only or read and write values (which is @@ -151,22 +131,20 @@ The time point could be specified with ``, where interval coul + `m`: month * `y`: year -e.g. -
+```python
 sh.outside.temperature.db('min', '1d')  # returns the minimum temperature within the last day
 sh.outside.temperature.db('avg', '2w', '1w')  # returns the average temperature of the week before last week
-
+``` ### sh.item.series(function, start, end='now', count=100) This method returns historical values for the specified function and timeframe. Supported functions and timeframes are same as supported in the `db` function. -e.g. -
+```python
 sh.outside.temperature.series('min', '1d', count=10)  # returns 10 minimum values within the last day
 sh.outside.temperature.series('avg', '2w', '1w')  # returns the average values of the week before last week
-
+``` Additionally to the aggregation function a finalizer function can be specified when fetching series to apply to the results before returning them. Specify the function @@ -176,43 +154,42 @@ Supported finalizer functions are: * `diff`: return the differences between values -e.g. -
+```python
 sh.outside.temperature.series('diff:avg', '2w', '1w')  # returns the differences between average values
-
+``` ### sh.item.dbplugin This property returns the associated `database` plugin instance. See the list of method below to know what you can do with this instance. -e.g. -
+```python
 dbplugin = sh.outside.temperature.dbplugin   # get associated database plugin instance
-
+``` ## dbplugin.id(item) This method returns the ID in the database for the given item. -e.g. -
+```python
 dbplugin = sh.outside.temperature.dbplugin   # get associated database plugin instance
 dbplugin.id(sh.outside.temperature)          # returns the ID for the given item
-
+``` ### dbplugin.db() + This method will return the associated database connection object. This can be used to execute native query, but you should use the plugin methods below. The database connection object can be used for locking. -
+```python
 dbplugin = sh.outside.temperature.dbplugin   # get associated database plugin instance
 dbplugin.db().lock()                         # lock the connection for processing
-... do something
+#... do something
 dbplugin.db().release()                      # release lock again after processing
-
+``` ### dbplugin.dump(dumpfile, id = None, time = None, time_start = None, time_end = None, changed = None, changed_start = None, changed_end = None, cur = None) + This method will dump the complete log table if not restricted by some argument. The restriction can be specified by specifying some of the criteria arguments (e.g. id, time_start, time_end, ...). These arguments only allow one value to @@ -221,15 +198,15 @@ multiple times). The parameters have the same meaning as described in `readLogs()` method. -e.g. -
+```python
 dbplugin = sh.outside.temperature.dbplugin   # get associated database plugin instance
 dbplugin.dump("/path/dump.csv")              # dump all items
 dbplugin.dump("/path/dump.csv", id=1)        # only dump item with id 1
 dbplugin.dump("/path/dump.csv", id="test")   # only dump item with name "test"
-
+``` #### dbplugin.insertLog(id, time, duration=0, val=None, it=None, changed=None, cur=None) + This method will insert a new log entry for the given item with the following data (in the `log` database table): * `id` - the item ID to insert an item for @@ -241,14 +218,17 @@ data (in the `log` database table): * `cur` - specifies an existing cursor #### dbplugin.updateLog(id, time, duration=0, val=None, it=None, changed=None, cur=None) + This method will update an existing log entry (in the `log` database table) identified by item id and time. See `insertLog()` method for the details of the parameters. #### dbplugin.readLog(id, time, cur = None) + This method will read existing log data for given item and time. #### dbplugin.readLogs(id, time = None, time_start = None, time_end = None, changed = None, changed_start = None, changed_end = None, cur = None) + This method will read existing log data for given item and parameters. If you omit the parameters it will completely ignored. @@ -259,77 +239,71 @@ you omit the parameters it will completely ignored. * `changed_start` / `changed_end` - can be used instead of `changed` parameter to specify a time range * `cur` - specifies an existing cursor -e.g. -
+```python
 dbplugin.readLogs(1)             # read ALL log entries for item 1
 dbplugin.readLogs(1, 12345)      # read log entry for item 1 and timestamp 12345
-
+``` #### dbplugin.deleteLog(id, time = None, time_start = None, time_end = None, changed = None, changed_start = None, changed_end = None, cur = None) This method will delete the given items identified by the given parameters. The parameters have the same meaning as described in `readLogs()` method. -e.g. -
+```python
 dbplugin.deleteLog(1)            # delete ALL log entries for item 1
 dbplugin.deleteLog(1, 12345)     # delete log entry for item 1 and timestamp 12345
-
+``` #### dbplugin.insertItem(name, cur=None) + This method will insert a new item entry with the given name/id and return the ID of the newly inserted item. -e.g. -
+```python
 id = dbplugin.insertItem("some.test.item")   # insert new item
-
+``` #### dbplugin.updateItem(id, time, duration=0, val=None, it=None, changed=None, cur=None) + This method will register the given value as the last/current value of the item (in the `item` database table). -e.g. -
+```python
 dbplugin.updateItem(id, 12345, 0, 100)       # update item value in database for timestamp 12345, duration 0, value 100
-
- +``` #### dbplugin.readItem(id, cur=None) + This method will read the item data including all fields. When the id parameter is a string it is assumed that the item should be selected by the items name and not by the items ID. -e.g. -
+```python
 data = dbplugin.readItem(1)                  # read all fields of item with ID 1 which contains the last item status
 data = dbplugin.readItem("test.item")        # read all fields of item with name test.item which contains the last item status
-
+``` #### dbplugin.readItems(cur=None) + This method will read all items data including all fields. -e.g. -
+```python
 items = dbplugin.readItems()                 # read all fields of all item which contains the last item status
-
- +``` #### dbplugin.deleteItem(id, cur=None) + This method will delete the item and its log data. -e.g. -
+```python
 dbplugin.deleteItem(id)                      # delete the item and log data from database
-
+``` #### dbplugin.cleanup() + This method will remove all items and logs from database of items which are currenlty not configured to be logged to database. Beware of this using in a multi-instance setup, since one instance does not know the item of the other instance! -e.g. -
+```python
 dbplugin.cleanup()                           # cleanup database, remove non-database item from database
-
- - +``` diff --git a/datalog/README.md b/datalog/README.md old mode 100755 new mode 100644 index 62d343fd8..157243e9d --- a/datalog/README.md +++ b/datalog/README.md @@ -12,20 +12,10 @@ No special hardware required. ## Configuration -### plugin.conf (deprecated) / .yaml +### plugin.yaml The plugin can be configured using the following settings: -``` -[datalog] - class_name = DataLog - class_path = plugins.datalog -# path = var/log/data -# filepatterns = default:{log}-{year}-{month}-{day}.csv | yearly:{log}-{year}.csv -# logpatterns = csv:{time};{item};{value}\n -# cycle = 300 -``` - ``` datalog: class_name: DataLog @@ -64,23 +54,12 @@ Placeholders which can be used in the `logpatterns` option: Example: -``` -# .conf (deprecated) -[datalog] - class_name = DataLog - class_path = plugins.datalog - filepatterns = default:{log}-{year}-{month}-{day}.csv | custom:{log}-{year}-{month}-{day}.txt - logpatterns = csv:{time};{item};{value}\n -``` - -``` -# .yaml +```yaml datalog: class_name = DataLog class_path = plugins.datalog filepatterns = default:{log}-{year}-{month}-{day}.csv | custom:{log}-{year}-{month}-{day}.txt logpatterns = csv:{time};{item};{value}\n - ``` In this example the `default` log file will use the configured log pattern. The @@ -115,26 +94,11 @@ A log pattern is used for logging when a file pattern is configured, where the extension (part behind the last `.`) matches the key. -### items.conf +### items.yaml Example configuration using the plugin configuration on top of the page. -``` -# .conf (deprecated) -[some] - [[item1]] - type = str - datalog = default - [[item2]] - type = num - datalog = default | custom - [[item3]] - type = num - datalog = custom -``` - -``` -# .yaml +```yaml some: item1: type: str @@ -152,14 +116,13 @@ some: This will log the items * `some.item1` to the `default` log - * `some.item2` to the `default` and `custom` log + * `some.item2` to the `default` and `custom` log * `some.item3` to the `custom` log -### logic.conf +### logic.yaml No logic related stuff implemented. ## Methods No methods provided currently. - diff --git a/deprecated_plugins/jointspace/README.md b/deprecated_plugins/jointspace/README.md index 1c8730381..14e6c9e0b 100644 --- a/deprecated_plugins/jointspace/README.md +++ b/deprecated_plugins/jointspace/README.md @@ -9,14 +9,14 @@ Should work with all Philips TV sets > 2010 (http://jointspace.sourceforge.net) ## Configuration -### plugin.conf +### plugin.yaml -``` -[jointspace] - class_name = Jointspace - class_path = plugins.jointspace - host = <ip> -# port = <port> +```yaml +jointspace: + class_name: Jointspace + class_path: plugins.jointspace + host: '' + # port = ``` Description of the attributes: @@ -24,75 +24,88 @@ Description of the attributes: * __host__: IP or hostname of the TV set * __port__: Port number of Jointspace running on the TV set, default port 1925 -### items.conf example +### items.yaml example -``` -[TV] - type = bool - visu_acl = rw - jointspace_cmd = power - enforce_updates = on - [[Mute]] - type = bool - visu_acl = rw - jointspace_cmd = mute - enforce_updates = on - [[Volume]] - type = num - visu_acl = rw - jointspace_cmd = volume - enforce_updates = on - [[Channel]] - type = str - jointspace_listen = channel - enforce_updates = on - [[Source]] - type = str - jointspace_cmd = source - enforce_updates = on - [[Keys]] - [[[Standby]]] - type = bool - visu_acl = rw - enforce_updates = on - jointspace_cmd = sendkey Standby - [[[VolumeUp]]] - type = bool - visu_acl = rw - enforce_updates = on - jointspace_cmd = sendkey VolumeUp - [[[VolumeDown]]] - type = bool - visu_acl = rw - enforce_updates = on - jointspace_cmd = sendkey VolumeDown - [[[ChannelUp]]] - type = bool - visu_acl = rw - enforce_updates = on - jointspace_cmd = sendkey ChannelStepUp - [[[ChannelDown]]] - type = bool - visu_acl = rw - enforce_updates = on - jointspace_cmd = sendkey ChannelStepDown - [...] u.s.w. Liste hier: http://jointspace.sourceforge.net/projectdata/documentation/jasonApi/1/doc/API-Method-input-key-POST.html - [[Channels]] - [[[ARD]]] - type = bool - visu_acl = rw - enforce_updates = on - jointspace_cmd = channel 1 - [[[SUPERRTL]]] - type = bool - visu_acl = rw - enforce_updates = on - jointspace_cmd = channel 675 - [...] u.s.w. +```yaml +TV: + type: bool + visu_acl: rw + jointspace_cmd: power + enforce_updates: 'on' + + Mute: + type: bool + visu_acl: rw + jointspace_cmd: mute + enforce_updates: 'on' + + Volume: + type: num + visu_acl: rw + jointspace_cmd: volume + enforce_updates: 'on' + + Channel: + type: str + jointspace_listen: channel + enforce_updates: 'on' + + Source: + type: str + jointspace_cmd: source + enforce_updates: 'on' + + Keys: + + Standby: + type: bool + visu_acl: rw + enforce_updates: 'on' + jointspace_cmd: sendkey Standby + VolumeUp: + type: bool + visu_acl: rw + enforce_updates: 'on' + jointspace_cmd: sendkey VolumeUp + + VolumeDown: + type: bool + visu_acl: rw + enforce_updates: 'on' + jointspace_cmd: sendkey VolumeDown + + ChannelUp: + type: bool + visu_acl: rw + enforce_updates: 'on' + jointspace_cmd: sendkey ChannelStepUp + + ChannelDown: + type: bool + visu_acl: rw + enforce_updates: 'on' + jointspace_cmd: sendkey ChannelStepDown + + # etc. list here: http://jointspace.sourceforge.net/projectdata/documentation/jasonApi/1/doc/API-Method-input-key-POST.html' + Channels: + + ARD: + type: bool + visu_acl: rw + enforce_updates: 'on' + jointspace_cmd: channel 1 + + SUPERRTL: + type: bool + visu_acl: rw + enforce_updates: 'on' + jointspace_cmd: channel 675 ``` -### pages example +### SmartVISU integration + +An example to be placed within a SmartVISU html page. ```html {{ multimedia.station('TV.ARD', 'TV.Channels.ARD','pics/station/tv/das-erste_s.png', 1, 'midi') }} @@ -100,4 +113,4 @@ Description of the attributes: {{ basic.button('MuteTV', 'Tv.Keys.Mute', ' Mute ', 'alert', '', 'midi') }} {{ basic.button('VolDownTV', 'TV.Keys.VolumeDown', ' Leiser ', 'minus', '', 'midi') }} -``` \ No newline at end of file +``` diff --git a/deprecated_plugins/modbus_shng_1_2/README.md b/deprecated_plugins/modbus_shng_1_2/README.md index afe2ad80d..aef39e577 100644 --- a/deprecated_plugins/modbus_shng_1_2/README.md +++ b/deprecated_plugins/modbus_shng_1_2/README.md @@ -6,19 +6,19 @@ Not specified so far but the ``pymodbus`` module seems to be needed ## Supported Hardware -Waterkotte Sole-WP with RTU Modbus +Waterkotte Sole-WP with RTU Modbus ## Configuration -### plugin.conf +### plugin.yaml -``` -[modbus] - class_name = Modbus - class_path = plugins.modbus - serialport = - # slave_address = 1 - # update_cycle = 30 +```yaml +modbus: + class_name: Modbus + class_path: plugins.modbus + serialport: '' + # slave_address = 1 + # update_cycle = 30 ``` The ``serialport`` needs to be given for communication with the modbus device. @@ -26,7 +26,7 @@ The ``serialport`` needs to be given for communication with the modbus device. Optional are ``slave_address`` and ``update_cycle`` for the query time in seconds -### items.conf +### items.yaml There are three attributes: @@ -48,16 +48,15 @@ Mask to isolate date Please provide an item configuration with every attribute and usefull settings. -``` -# items/my.conf +```yaml +someroom: -[someroom] - [[mydevice]] - type = bool - my_attr = setting + mydevice: + type: bool + my_attr: setting ``` -### logic.conf +### logic.yaml If your plugin support item triggers as well, please describe the attributes like the item attributes. diff --git a/deprecated_plugins/visu_shng_1_2/README.md b/deprecated_plugins/visu_shng_1_2/README.md index 2f1259e99..83d82378e 100644 --- a/deprecated_plugins/visu_shng_1_2/README.md +++ b/deprecated_plugins/visu_shng_1_2/README.md @@ -10,49 +10,50 @@ None. ## Configuration -### plugin.conf - -``` -[visu] - class_name = WebSocket - class_path = plugins.visu -# ip='0.0.0.0' -# port=2424 -# acl = ro -# smartvisu_dir = False +### plugin.yaml + +```yaml +visu: + class_name: WebSocket + class_path: plugins.visu + # ip: '0.0.0.0' + # port: 2424 + # acl: ro + # smartvisu_dir: False ``` This plugins listens by default on every IP address of the host on the TCP port 2424. -It provides read only access to every item. By changing the `acl` attribute to `rw` or `no` you could modify this default +It provides read only access to every item. By changing the `acl` attribute to `rw` or `no` you could modify this default The `smartvisu_dir` attribute is described in the smartVISU section. -### items.conf +### items.yaml Simply set the ``visu_acl`` attribute to something to allow read/write access to the item. -``` -[example] - [[toggle]] - value = True - type = bool - visu_acl = rw +```yaml +example: + + toggle: + value: 'True' + type: bool + visu_acl: rw ``` -### logic.conf +### logic.yaml -You could specify the `visu_acl` attribute to every logic in your logic.conf. This way you could trigger the logic via the interface. +You could specify the `visu_acl` attribute to every logic in your logic.yaml. This way you could trigger the logic via the interface. -``` -[dialog] - filename = 'dialog.py' - visu_acl = true +```yaml +dialog: + filename: dialog.py + visu_acl: 'true' ``` ## smartVISU You could generate pages for the [smartVISU](http://code.google.com/p/smartvisu/) visualisation if you specify the `smartvisu_dir` which should be set to the root directory of your smartVISU installation. -In the examples directory you could find a configuration with every supported element. `examples/items/smartvisu.conf` +In the examples directory you could find a configuration with every supported element. `examples/items/smartvisu.yaml` The attribute keywords are: @@ -60,50 +61,55 @@ The attribute keywords are: * sv_img: with this attribute you could assign an icon or picture for a page or widget. * sv_widget: This has to be a double quoted encapsulated string with the smartVISU widget. You could define multiple widgets by separating them by a comma. See the example below: -``` -[second] - [[sleeping]] - name = Sleeping Room - sv_page = room - sv_img = scene_sleeping.png - [[[light]]] - name = Light - type = bool - visu_acl = rw - sv_widget = {{ device.dimmer('second.sleeping.light', 'Light', 'second.sleeping.light', 'second.sleeping.light.level') }} - knx_dpt = 1 - knx_listen = 3/2/12 - knx_send = 3/2/12 - [[[[level]]]] - type = num - visu_acl = rw - knx_dpt = 5 - knx_listen = 3/2/14 - knx_send = 3/2/14 +```yaml +second: + + sleeping: + name: Sleeping Room + sv_page: room + sv_img: scene_sleeping.png + + light: + name: Light + type: bool + visu_acl: rw + sv_widget: "& ## 123;{ device.dimmer('second.sleeping.light', 'Light', 'second.sleeping.light', 'second.sleeping.light.level') }}" + knx_dpt: 1 + knx_listen: 3/2/12 + knx_send: 3/2/12 + + level: + type: num + visu_acl: rw + knx_dpt: 5 + knx_listen: 3/2/14 + knx_send: 3/2/14 ``` But instead of giving the widget distinct options you could use `item` as a keyword. The page generator will replace it with the current path. This way you could easily copy widget calls and don't type the item path every time. +```yaml +second: + + sleeping: + name: Sleeping Room + sv_page: room + sv_img: scene_sleeping.png + + light: + name: Light + type: bool + visu_acl: rw + sv_widget: "& ## 123;{ device.dimmer('item', 'item.name', 'item', 'item.level') }}" + knx_dpt: 1 + knx_listen: 3/2/12 + knx_send: 3/2/12 + + level: + type: num + visu_acl: rw + knx_dpt: 5 + knx_listen: 3/2/14 + knx_send: 3/2/14 ``` -[second] - [[sleeping]] - name = Sleeping Room - sv_page = room - sv_img = scene_sleeping.png - [[[light]]] - name = Light - type = bool - visu_acl = rw - sv_widget = {{ device.dimmer('item', 'item.name', 'item', 'item.level') }} - knx_dpt = 1 - knx_listen = 3/2/12 - knx_send = 3/2/12 - [[[[level]]]] - type = num - visu_acl = rw - knx_dpt = 5 - knx_listen = 3/2/14 - knx_send = 3/2/14 -``` - diff --git a/dmx/README.md b/dmx/README.md index 1d454839b..0502e2a4f 100644 --- a/dmx/README.md +++ b/dmx/README.md @@ -15,14 +15,14 @@ apt-get install python-serial ## Configuration -### plugin.conf - -``` -[dmx] - class_name = DMX - class_path = plugins.dmx - tty = /dev/usbtty... -# interface = nanodmx +### plugin.yaml + +```yaml +dmx: + class_name: DMX + class_path: plugins.dmx + tty: /dev/usbtty... + # interface = nanodmx ``` With ``interface`` you could choose between ``nanodmx`` and ``enttec``. By default nanodmx is used. @@ -34,18 +34,22 @@ You have to adapt the tty to your local enviroment. In my case it's ``/dev/usbtt SUBSYSTEMS=="usb",KERNEL=="ttyACM*",ATTRS{product}=="NanoDMX Interface",SYMLINK+="usbtty-%b" ``` -### items.conf +### items.yaml #### dmx_ch With this attribute you could specify one or more DMX channels. ### Example -``` -[living_room] - [[dimlight]] - type = num - dmx_ch = 10 | 11 + +```yaml +living_room: + + dimlight: + type: num + dmx_ch: + - '10' + - '11' ``` Now you could simply use: diff --git a/drexelundweiss/README.md b/drexelundweiss/README.md index 7f0f66caf..634d0dcfe 100644 --- a/drexelundweiss/README.md +++ b/drexelundweiss/README.md @@ -36,36 +36,24 @@ The plugin detects the connected device type automatically: ## Configuration -### plugin.conf (deprecated) / plugin.yaml +### plugin.yaml -``` -[DuW] - class_name = DuW - class_path = plugins.drexelundweiss - tty = /dev/ttyUSB0 -# Busmonitor = 1 -# LU_ID = 130 -# WP_ID = 140 -# device = 14 # x2 plus as standard device -# retrylimit = 100 # number of retries to get answer right -``` - -``` +```yaml DuW: class_name: DuW class_path: plugins.drexelundweiss tty: /dev/ttyUSB0 - # Busmonitor = 1 - # LU_ID = 130 - # WP_ID = 140 - # device = 14 # x2 plus as standard device - # retrylimit = 100 # number of retries to get answer right + # Busmonitor: 1 + # LU_ID: 130 + # WP_ID: 140 + # device: 14 # x2 plus as standard device + # retrylimit: 100 # number of retries to get answer right ``` You have to adapt the tty to your local environment and change LU_ID and WP_ID if not D&W default is used. Busmonitor mode will output all activity on Service Interface to smarthome.py log if started in debug mode, default is Busmonitor off. -### items.conf +### items.yaml #### DuW_LU_register / DuW_WP_register @@ -76,19 +64,7 @@ Values are calculated automatically regarding the register depending divisor and #### Example -``` -#.conf -[KWL] - [[MODE]] - name = Betriebsart - visu_acl = rw - type = num - DuW_LU_register = 5002 - sv_widget = {{ basic.slider('item', 'item', 0, 5, 1) }} -``` - -``` -# .yaml +```yaml KWL: MODE: @@ -99,8 +75,8 @@ KWL: sv_widget: "{{ basic.slider('item', 'item', 0, 5, 1) }}" ``` -Find a full conf file example in plugin folder +A full .yaml file example can be found in plugin folder. ## Functions -...... +None so far diff --git a/easymeter/README.md b/easymeter/README.md index d62007dd4..0e303c01b 100644 --- a/easymeter/README.md +++ b/easymeter/README.md @@ -1,18 +1,37 @@ # Easymeter ## Requirements + +* smartmeter using DLMS (Device Language Message Specification) IEC 62056-21 +* USB IR-Reader e.g. from volkszaehler.org + +install with +``` +sudo python3 -m pip install pyserial +``` + +make sure the serial port can be used by the user executing smarthome.py + +Example for a recent version of the Volkszaehler IR-Reader, please adapt the vendor- and product-id for your own readers: + +``` +echo 'SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ATTRS{serial}=="0092C9FE", MODE="0666", GROUP="dialout", SYMLINK+="dlms0"' > /etc/udev/rules.d/11-dlms.rules +udevadm trigger +``` +If you like, you can also give the serial port a descriptive name with this. + ## Supported Hardware * Easymeter Q3D with ir-reader from volkszaehler.org ## Configuration -### plugin.conf +### plugin.yaml -``` -[easymeter] - class_name = easymeter - class_path = plugins.easymeter +```yaml +easymeter: + class_name: easymeter + class_path: plugins.easymeter ``` Parameter for serial device are currently set to fix 9600/7E1. @@ -21,7 +40,7 @@ Description of the attributes: * none -### items.conf +### items.yaml * __easymeter_code__: obis protocol code @@ -29,16 +48,13 @@ Description of the attributes: ### Example +```yaml +output: + easymeter_code: 1-0:21.7.0*255 + device: /dev/ttyUSB0 + type: num ``` -# items/easymeter.conf - -[output] - easymeter_code = 1-0:21.7.0*255 - device = /dev/ttyUSB0 - type = num -``` - Please take care, there are different obis codes for different versions of Easymeter Q3D. -For example Version 3.02 reports obis code 1-0:21.7.0*255, version 3.04 +For example Version 3.02 reports obis code 1-0:21.7.0*255, version 3.04 reports 1-0:21.7.255*255. diff --git a/ebus/README.md b/ebus/README.md index 2bc06fd66..aaf192c09 100644 --- a/ebus/README.md +++ b/ebus/README.md @@ -11,18 +11,18 @@ I.e. Vaillant, Wolf, Kromschroeder or other eBus-heatings ## Configuration -### plugin.conf +### plugin.yaml +```yaml +ebus: + class_name: eBus + class_path: plugins.ebus + host: localhost # ip of ebusd + port: 8888 # port of ebusd + cycle: 240 # cycle of each item ``` -[ebus] - class_name = eBus - class_path = plugins.ebus - host = localhost # ip of ebusd - port = 8888 # port of ebusd - cycle = 240 # cycle of each item -``` -### items.conf +### items.yaml Items need parameter "ebus_cmd" and "ebus_type". ebus_cmd is the command you use for telnet-connection to ebusd. @@ -36,32 +36,32 @@ Items are read/write. All "set"-items will be read cyclic too! Items will only be readable, i.e. sensors. -``` -[ebus] - [[hk_pumpe_perc]] - type = num - knx_dpt = 5 - knx_send = 8/6/110 - knx_reply = 8/6/110 - ebus_cmd = "cir2 heat_pump_curr" - ebus_type = "get" - comment = akt. PWM-Wert Heizkreizpumpe +```yaml +ebus: + + hk_pumpe_perc: + type: num + knx_dpt: 5 + knx_send: 8/6/110 + knx_reply: 8/6/110 + ebus_cmd: cir2 heat_pump_curr + ebus_type: get + # akt. PWM-Wert Heizkreizpumpe - [[ernergie_summe]] - type = num - knx_dpt = 12 - knx_send = 8/6/22 - knx_reply = 8/6/22 - ebus_cmd = "mv yield_sum" - ebus_type = "get" - comment = Energieertrag - - [[speicherladung]] - type = bool - knx_dpt = 1 - knx_listen = 8/7/1 - ebus_cmd = "short hw_load" - ebus_type = "set" - comment = Quick - WW Speicherladung -``` - + ernergie_summe: + type: num + knx_dpt: 12 + knx_send: 8/6/22 + knx_reply: 8/6/22 + ebus_cmd: mv yield_sum + ebus_type: get + # Energieertrag + + speicherladung: + type: bool + knx_dpt: 1 + knx_listen: 8/7/1 + ebus_cmd: short hw_load + ebus_type: set + # Quick - WW Speicherladung +``` diff --git a/ecmd/README.md b/ecmd/README.md index a9ac10df6..c006f67f5 100644 --- a/ecmd/README.md +++ b/ecmd/README.md @@ -2,13 +2,13 @@ ## Requirements -The ECMD plugin connects to an AVR microcontroller board with ethersex firmware via network. +The ECMD plugin connects to an AVR microcontroller board with ethersex firmware via network. The ECMD protocoll provides access to attached 1wire temperature sensors DS1820. ## Supported Hardware * 8-bit AVR microcontroller boards with network support, like NetIO (Pollin), Etherrape (lochraster.org), etc. -* 1-wire temperature and other sensors +* 1-wire temperature and other sensors * - DS1820 (temperature sensor) * - DS18B20 (temperature sensor) * - DS1822 (temperature sensor) @@ -17,44 +17,45 @@ The ECMD protocoll provides access to attached 1wire temperature sensors DS1820. ## Configuration -### plugin.conf +### plugin.yaml You can specify the host ip of your ethersex device. -``` -[ecmd] - class_name = ECMD - class_path = plugins.ecmd - host = 10.10.10.10 -# port = 2701 +```yaml +ecmd: + class_name: ECMD + class_path: plugins.ecmd + host: 10.10.10.10 + # port: 2701 ``` This plugin needs an host attribute and you could specify a port attribute which differs from the default '1010'. -### items.conf +### items.yaml The item needs to define the 1-wire address of the sensor. -#### ecmd1wire_addr - -ecmd1wire_addr = 10f01929020800dc -type = num +#### ecmd1wire_addr +```yaml +mysensor: + ecmd1wire_addr: 10f01929020800dc + type: num +``` #### Example Please provide an item configuration with every attribute and usefull settings. -``` -# items/my.conf - -[someroom] - [[temperature]] - name = Raumtemperatur - ecmd1wire_addr = 10f01929020800dc - type = num - sqlite = yes - history = yes - visu = yes - sv_widget = "{{ basic.float('item', 'item', '°') }}" , "{{ plot.period('item-plot', 'item') }}" +```yaml +someroom: + + temperature: + name: Raumtemperatur + ecmd1wire_addr: 10f01929020800dc + type: num + sqlite: 'yes' + history: 'yes' + visu: 'yes' + sv_widget: "\"{{ basic.float('item', 'item', '°') }}\" , \"{{ plot.period('item-plot', 'item') }}\"" ``` diff --git a/elro/README.md b/elro/README.md index fd15e61e5..a0d7f0213 100644 --- a/elro/README.md +++ b/elro/README.md @@ -2,8 +2,8 @@ ## Description -You can use this Plugin to control elro (or elro-based) remote-control-switches (rc-switches). -If the backend-server uses the same command-syntax as the rc_switch_server project, +You can use this Plugin to control elro (or elro-based) remote-control-switches (rc-switches). +If the backend-server uses the same command-syntax as the rc_switch_server project, you can even control non-elro rc-switches too! (Or everything other that can be switched on and off) For rc_switch_server command-syntax look at https://github.com/Brootux/rc_switch_server.py (Server-Clients) @@ -13,56 +13,60 @@ For rc_switch_server command-syntax look at https://github.com/Brootux/rc_switch * Installed and running rc_switch_server (https://github.com/Brootux/rc_switch_server.py) ## Configuration -### plugin.conf -You have to just simply copy the following into your plugin.conf file. The ip-address/hostname of the rc_switch_server has to be setup later in the items.conf! +### plugin.yaml -``` -[elro] - class_name = Elro - class_path = plugins.elro +You have to just simply copy the following into your plugin.yaml file. The ip-address/hostname of the rc_switch_server has to be setup later in the items.yaml! + +```yaml +elro: + class_name: Elro + class_path: plugins.elro ``` -### items.conf +### items.yaml The most item-fields of this plugin are mandatory. So you should always use all of the fields showed in the following example. #### Example -``` -# items/rc_switches.conf -[RCS] - type = str - elro_host = localhost - elro_port = 6700 - [[A]] - type = bool - elro_system_code = 0.0.0.0.1 - elro_unit_code = 1 - elro_send = value - enforce_updates = yes - visu_acl = rw - [[B]] - type = bool - elro_system_code = 0.0.0.0.1 - elro_unit_code = 2 - elro_send = value - enforce_updates = yes - visu_acl = rw - [[C]] - type = bool - elro_system_code = 0.0.0.0.1 - elro_unit_code = 4 - elro_send = value - enforce_updates = yes - visu_acl = rw - [[D]] - type = bool - elro_system_code = 0.0.0.0.1 - elro_unit_code = 8 - elro_send = value - enforce_updates = yes - visu_acl = rw +```yaml +RCS: + type: str + elro_host: localhost + elro_port: 6700 + + A: + type: bool + elro_system_code: 0.0.0.0.1 + elro_unit_code: 1 + elro_send: value + enforce_updates: 'yes' + visu_acl: rw + + B: + type: bool + elro_system_code: 0.0.0.0.1 + elro_unit_code: 2 + elro_send: value + enforce_updates: 'yes' + visu_acl: rw + + C: + type: bool + elro_system_code: 0.0.0.0.1 + elro_unit_code: 4 + elro_send: value + enforce_updates: 'yes' + visu_acl: rw + + D: + type: bool + elro_system_code: 0.0.0.0.1 + elro_unit_code: 8 + elro_send: value + enforce_updates: 'yes' + visu_acl: rw ``` Description of the attributes: @@ -81,40 +85,36 @@ Hints: ### Example for multiple rc_switch_server´s -``` -# items/rc_switches.conf -[RCS-1] - type = str - elro_host = localhost - elro_port = 6700 - [[A]] - type = bool - elro_system_code = 0.0.0.0.1 - elro_unit_code = 1 - elro_send = value - enforce_updates = yes - visu_acl = rw - ... - -[RCS-2] - type = str - elro_host = 192.168.0.100 - elro_port = 6666 - [[A]] - type = bool - elro_system_code = 0.0.0.0.2 - elro_unit_code = 1 - elro_send = value - enforce_updates = yes - visu_acl = rw - ... +```yaml +RCS1: + type: str + elro_host: localhost + elro_port: 6700 + A: + type: bool + elro_system_code: '0.0.0.0.1' + elro_unit_code: 1 + elro_send: value + enforce_updates: yes + visu_acl: rw + +RCS2: + type: str + elro_host: 192.168.0.100 + elro_port: 6666 + A: + type: bool + elro_system_code: '0.0.0.0.2' + elro_unit_code: 1 + elro_send: value + enforce_updates: yes + visu_acl: rw ``` ### SmartVisu I suggest you to use the following setup per rc-switch: - ```html

TV-Center

diff --git a/enigma2/README.md b/enigma2/README.md index 3cc08ebe8..a70bdc624 100644 --- a/enigma2/README.md +++ b/enigma2/README.md @@ -4,7 +4,7 @@ The Enigma2 plugin allows to control and read info from linux based Enigma2 satellite receivers, on which the OpenWebIF is installed. ## Requirements -This plugin requires lib requests. You can install this lib with: +This plugin requires lib requests. You can install this lib with:
 sudo pip3 install requests --upgrade
 
@@ -20,30 +20,9 @@ The version is tested with new multi-instance functionality of SmartHomeNG. ## Configuration -### plugin.conf (deprecated) / plugin.yaml (both use multi-instance feature of SmartHomeNG) -``` -[vusolo4k] - class_name = Enigma2 - class_path = plugins.enigma2 - host = xxx.xxx.xxx.xxx - port = 81 # 81 for "vu"-boxes, it may be port 80 for a dreambox - cycle = 240 - fast_cycle = 30 - ssl = False # use https or not - verify = False # verify ssl certificate - instance = vusolo4k -[vusolo2] - class_name = Enigma2 - class_path = plugins.enigma2 - host = xxx.xxx.xxx.xxx - port = 81 # 81 for "vu"-boxes, it may be port 80 for a dreambox - cycle = 240 - fast_cycle = 30 - ssl = False # use https or not - verify = False # verify ssl certificate - instance = vusolo2 -[...] -``` +### plugin.yaml + +The samples use multi-instance feature of SmartHomeNG. ```yaml vusolo4k: @@ -67,7 +46,6 @@ vusolo2: ssl: False # use https or not verify: False # verify ssl certificate instance: vusolo2 -[...] ``` Note: Depending on the device a shorter cycle time can result in problems with CPU rating and, in consequence with the accessibility of the services on the device. @@ -83,372 +61,9 @@ If cycle time is reduced, please carefully watch your device and your sh.log. In * `verify`: True or False => Turns certificate verification on or off. Typically False * `instance`: Unique identifier for each Enigma2Device / each instance of the plugin -### items.conf (deprecated) / items.yaml +### items.yaml #### Example: -``` -[enigma2] - [[vusolo2]] - [[[disc_model]]] - type = str - enigma2_data_type@vusolo2 = e2hdd/e2model - enigma2_page@vusolo2 = deviceinfo - visu_acl = ro - [[[disc_capacity]]] - type = num - enigma2_data_type@vusolo2 = e2capacity - enigma2_page@vusolo2 = deviceinfo - visu_acl = ro - [[[disc_free_space]]] - type = num - enigma2_data_type@vusolo2 = e2free - enigma2_page@vusolo2 = deviceinfo - visu_acl = ro - [[[e2ip]]] - type = str - enigma2_data_type@vusolo2 = e2ip - enigma2_page@vusolo2 = deviceinfo - visu_acl = ro - [[[e2dhcp]]] - type = str - enigma2_data_type@vusolo2 = e2dhcp - enigma2_page@vusolo2 = deviceinfo - visu_acl = ro - [[[e2mac]]] - type = str - enigma2_data_type@vusolo2 = e2mac - enigma2_page@vusolo2 = deviceinfo - visu_acl = ro - [[[e2gateway]]] - type = str - enigma2_data_type@vusolo2 = e2gateway - enigma2_page@vusolo2 = deviceinfo - visu_acl = ro - [[[e2netmask]]] - type = str - enigma2_data_type@vusolo2 = e2netmask - enigma2_page@vusolo2 = deviceinfo - visu_acl = ro - [[[e2enigmaversion]]] - type = str - enigma2_data_type@vusolo2 = e2enigmaversion - enigma2_page@vusolo2 = deviceinfo - visu_acl = ro - [[[e2imageversion]]] - type = str - enigma2_data_type@vusolo2 = e2imageversion - enigma2_page@vusolo2 = deviceinfo - visu_acl = ro - [[[e2webifversion]]] - type = str - enigma2_data_type@vusolo2 = e2webifversion - enigma2_page@vusolo2 = deviceinfo - visu_acl = ro - [[[e2model]]] - type = str - enigma2_data_type@vusolo2 = e2model - enigma2_page@vusolo2 = about - visu_acl = ro - [[[e2apid]]] - type = num - enigma2_data_type@vusolo2 = e2apid - enigma2_page@vusolo2 = about - visu_acl = ro - [[[e2vpid]]] - type = num - enigma2_data_type@vusolo2 = e2vpid - enigma2_page@vusolo2 = about - visu_acl = ro - [[[e2instandby]]] - type = bool - enigma2_data_type@vusolo2 = e2instandby - enigma2_page@vusolo2 = powerstate - visu_acl = ro - [[[current]]] - [[[[e2videowidth]]]] - type = str - enigma2_data_type@vusolo2 = e2videowidth - enigma2_page@vusolo2 = about - visu_acl = ro - [[[[e2videoheight]]]] - type = str - enigma2_data_type@vusolo2 = e2videoheight - enigma2_page@vusolo2 = about - visu_acl = ro - [[[[eventtitle]]]] - type = str - enigma2_data_type@vusolo2 = current_eventtitle - visu_acl = ro - [[[[eventdescription]]]] # more complex logic behind that data type - type = str - enigma2_data_type@vusolo2 = current_eventdescription - visu_acl = ro - [[[[eventdescriptionextended]]]] - type = str - enigma2_data_type@vusolo2 = current_eventdescriptionextended - visu_acl = ro - [[[[currentvolume]]]] - type = num - enigma2_data_type@vusolo2 = current_volume - visu_acl = rw - [[[[servicename]]]] - type = str - enigma2_data_type@vusolo2 = e2servicename - enigma2_page@vusolo2 = subservices - visu_acl = ro - [[[[servicereference]]]] - type = str - enigma2_data_type@vusolo2 = e2servicereference - enigma2_page@vusolo2 = subservices - visu_acl = rw - [[[[servicestream]]]] - type = str - visu_acl = rw - eval = 'Processing...' - eval_trigger = init | enigma2.vusolo2.current.servicereference - [[[services]]] - [[[[DasErste_HD]]]] - type = bool - sref@vusolo2 = 1:0:19:283D:3FB:1:C00000:0:0:0: - enforce_updates = true - visu_acl = rw - [[[[ZDF_HD]]]] - type = bool - sref@vusolo2 = 1:0:19:2B66:3F3:1:C00000:0:0:0: - enforce_updates = true - visu_acl = rw - [[[[DREI_SAT]]]] - type = bool - sref@vusolo2 = 1:0:19:2B8E:3F2:1:C00000:0:0:0: - enforce_updates = true - visu_acl = rw - [[[[PHOENIX]]]] - type = bool - sref@vusolo2 = 1:0:19:285B:401:1:C00000:0:0:0: - enforce_updates = true - visu_acl = rw - [[[[ARTE]]]] - type = bool - sref@vusolo2 = 1:0:19:283E:3FB:1:C00000:0:0:0: - enforce_updates = true - visu_acl = rw - [[[[KIKA]]]] - type = bool - sref@vusolo2 = 1:0:19:2B98:3F2:1:C00000:0:0:0: - enforce_updates = true - visu_acl = rw - [[[[BR]]]] - type = bool - sref@vusolo2 = 1:0:19:2855:401:1:C00000:0:0:0: - enforce_updates = true - visu_acl = rw - [[[[EINSPLUS]]]] - type = bool - sref@vusolo2 = 1:0:19:2889:40F:1:C00000:0:0:0: - enforce_updates = true - visu_acl = rw - [[[[ZDFNEO]]]] - type = bool - sref@vusolo2 = 1:0:19:2B7A:3F3:1:C00000:0:0:0: - enforce_updates = true - visu_acl = rw - [[[[SERVUSTV]]]] - type = bool - sref@vusolo2 = 1:0:19:1332:3EF:1:C00000:0:0:0: - enforce_updates = true - visu_acl = rw - [[[remote]]] # see http://dream.reichholf.net/wiki/Enigma2:WebInterface#RemoteControl - [[[[TEXT]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 388 - enforce_updates = true - [[[[RED]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 398 - enforce_updates = true - [[[[GREEN]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 399 - enforce_updates = true - [[[[YELLOW]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 400 - enforce_updates = true - [[[[BLUE]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 401 - enforce_updates = true - [[[[PAUSE]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 119 - enforce_updates = true - [[[[STOP]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 128 - enforce_updates = true - [[[[PLAY]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 207 - enforce_updates = true - [[[[FF]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 159 - enforce_updates = true - [[[[REWIND]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 168 - enforce_updates = true - [[[[POWER]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 116 - enforce_updates = true - [[[[OK]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 352 - enforce_updates = true - [[[[EXIT]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 174 - enforce_updates = true - [[[[INFO]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 352 - enforce_updates = true - [[[[AUDIO]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 392 - enforce_updates = true - [[[[VIDEO]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 393 - enforce_updates = true - [[[[EPG]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 358 - enforce_updates = true - [[[[MENU]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 139 - enforce_updates = true - [[[[SUBTITLE]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 370 - enforce_updates = true - [[[[UP]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 103 - enforce_updates = true - [[[[DOWN]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 108 - enforce_updates = true - [[[[LEFT]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 105 - enforce_updates = true - [[[[RIGHT]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 106 - enforce_updates = true - [[[[VolUP]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 115 - enforce_updates = true - [[[[VolDOWN]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 114 - enforce_updates = true - [[[[MUTE]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 113 - enforce_updates = true - [[[[NEXT]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 407 - enforce_updates = true - [[[[PREVIOUS]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 412 - enforce_updates = true - [[[[KEY_0]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 11 - enforce_updates = true - [[[[KEY_1]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 2 - enforce_updates = true - [[[[KEY_2]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 3 - enforce_updates = true - [[[[KEY_3]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 4 - enforce_updates = true - [[[[KEY_4]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 5 - enforce_updates = true - [[[[KEY_5]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 6 - enforce_updates = true - [[[[KEY_6]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 7 - enforce_updates = true - [[[[KEY_7]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 8 - enforce_updates = true - [[[[KEY_8]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 9 - enforce_updates = true - [[[[KEY_9]]]] - type = bool - visu_acl = rw - enigma2_remote_command_id@vusolo2 = 10 - enforce_updates = true -``` ```yaml enigma2: @@ -906,9 +521,10 @@ sh.vusolo2.get_audio_tracks() Sets a message to the device messagetype: Number from 0 to 3, 0= Yes/No, 1= Info, 2=Message, 3=Attention timeout: Number of seconds the message should stay on the device, default: 10 -
+
+```python
 sh.vusolo2.send_message("Testnachricht",1,10)
-
+``` ### set_power_state(value) Sets the power state to a specific value: @@ -920,13 +536,13 @@ Sets the power state to a specific value: 5 = Standby E.g. toggle standby: -
+```python
 sh.vusolo2.set_power_state(0)
-
+``` ### get_answer() This function checks for an answer to a sent message. If you call this method, take into account the timeout until the message can be answered and e.g. set a "while (count < 0)" -
-sh.vusolo2.get_answer()
-
+```python +sh.vusolo2.get_answer() +``` diff --git a/enocean/README.md b/enocean/README.md index 39d1a569f..48e9e6a0b 100644 --- a/enocean/README.md +++ b/enocean/README.md @@ -22,16 +22,19 @@ For use of this plugin you need an EnOcean radio transceiver module like: ## Configuration -### plugin.yaml / plugin.conf (deprecated) -Add the following lines to your `plugin.yaml` or `plugin.conf`. +### plugin.yaml + +Add the following lines to your `plugin.yaml`: #### Parameters + ##### serialport + You have to specify the `serialport` to your port name of your EnOcean-adpater. Creating **udev-rules** for the EnOcean-adapter is recommend, when using different uart devices. ##### tx_id -The specification of the EnOcean `tx_id` is optional **but** mandatory for sending control commands from the enocean-adapter to an EnOcean device. +The specification of the EnOcean `tx_id` is optional **but** mandatory for sending control commands from the enocean-adapter to an EnOcean device. It is defined as a 8-digit hex value. When controlling multiple devices, it is recommended to use the EnOcean-adapter's Base-ID (not Unique-ID or Chip-ID) as transmitting ID. @@ -45,35 +48,27 @@ With the specification of the Base-ID, 128 different transmit ID's are available 1. reboot the pi or restart the smarthome (`sudo reboot` or `sudo systemctl restart smarthome`) 2. wait some time for comming up of the service 3. have a look into the log file an look for `enocean: Base ID = 0xYYYYZZZZ` -4. now you have the right Base-ID and you can place it into the plugin.yaml/plugin.conf file. +4. now you have the right Base-ID and you can place it into the plugin.yaml file. 5. alternating you will also find the EnOcean-adapter's Unique-ID / Chip-ID in the log-file. #### Example plugin.yaml -``` -[enocean] +```yaml +enocean: class_name: EnOcean class_path: plugins.enocean serialport: /dev/ttyUSB0 tx_id: FFFF4680 ``` -#### Example plugin.conf (deprecated) -``` -[enocean] - class_name = EnOcean - class_path = plugins.enocean - serialport = /dev/ttyUSB0 - tx_id = FFFF4680 -``` - ### Items + #### enocean_rx_id, enocean_rx_eep and enocean_tx_id_offset An EnOcean item must specify at minimum an `enocean_rx_id` (EnOcean Identification Number (hex code)) and an `enocean_rx_eep` (EnOcean Equipment Profile). Send items additionally hold an `enocean_tx_id_offset`. #### enocean_rx_key The status of an EnOcean device can be read by using the shortcut names of the Button which should be defined under `enocean_rx_key`. -Therefor see [EnOcean Equippment Profile](http://www.enocean-alliance.org/eep/) +Therefore see [EnOcean Equippment Profile](http://www.enocean-alliance.org/eep/) The following example explaines the button shortcut and its meaning for a rocker/switch with two rocker (EEP-Profile: F6_02_01 or F6_02_02). @@ -100,7 +95,7 @@ Example of a mechanical handle (F6_10_0): STATUS = handle_status ``` -### items.yaml / items.conf (deprecated) +### items.yaml #### Attributes For attributes have a look to the examples. @@ -113,14 +108,14 @@ EnOcean_Item: enocean_rx_id: 0180924D enocean_rx_eep: A5_02_05 enocean_rx_key: TMP - + Door: enocean_rx_id: 01234567 enocean_rx_eep: D5_00_01 status: type: bool enocean_rx_key: STATUS - + FT55switch: enocean_rx_id: 012345AA enocean_rx_eep: F6_02_03 @@ -130,7 +125,7 @@ EnOcean_Item: down: type: bool enocean_rx_key: BI - + Brightness_Sensor: name: brightness_sensor_east remark: Eltako FAH60 @@ -140,9 +135,9 @@ EnOcean_Item: enocean_rx_key: BRI visu_acl: rw sqlite: 'yes' - + dimmer1: - remark: Eltako FDG14 - Dimmer + remark: Eltako FDG14 - Dimmer enocean_rx_id: 00112233 enocean_rx_eep: A5_11_04 light: @@ -158,21 +153,21 @@ EnOcean_Item: ref_level: 80 dim_speed: 100 block_dim_value: 'False' - + handle: enocean_rx_id: 01234567 enocean_rx_eep: F6_10_00 status: type: num enocean_rx_key: STATUS - + actor1: enocean_rx_id: FFAABBCC enocean_rx_eep: A5_12_01 power: type: num enocean_rx_key: VALUE - + actor1B: remark: Eltako FSR61, FSR61NP, FSR61G, FSR61LN, FLC61NP - Switch for Ligths enocean_rx_id: 1A794D3 @@ -186,7 +181,7 @@ EnOcean_Item: cache: 'True' enforce_updates: 'True' visu_acl: rw - + actor_D2: remark: Actor with VLD Command enocean_rx_id: FFDB7381 @@ -198,7 +193,7 @@ EnOcean_Item: enocean_tx_id_offset: 1 # pulsewith-attribute removed use autotimer functionality instead autotimer: 1 = 0 - + awning: remark: Eltako FSB14, FSB61, FSB71 - actor for Shutter type: str @@ -215,7 +210,7 @@ EnOcean_Item: enforce_updates: 'True' cache: 'True' visu_acl: rw - + rocker: enocean_rx_id: 0029894A enocean_rx_eep: F6_02_01 @@ -226,7 +221,7 @@ EnOcean_Item: enocean_rocker_sequence: released **within** 0.8 knx_dpt: 1 knx_send: 3/0/60 - + long_800ms_directly_to_knx: type: bool enocean_rx_key: AI @@ -234,7 +229,7 @@ EnOcean_Item: enocean_rocker_sequence: released **after** 0.8 knx_dpt: 1 knx_send: 3/0/61 - + rocker_double_800ms_to_knx_send_1: type: bool enforce_updates: true @@ -243,33 +238,33 @@ EnOcean_Item: enocean_rocker_sequence: **released within 0.4, pressed within 0.4** knx_dpt: 1 knx_send: 3/0/62 - + brightness_sensor: enocean_rx_id: 01234567 enocean_rx_eep: A5_08_01 lux: type: num enocean_rx_key: BRI - + movement: type: bool enocean_rx_key: MOV - + temperature_sensor: enocean_rx_id: 01234567 enocean_rx_eep: A5_04_02 temperature: type: num enocean_rx_key: TMP - + humidity: type: num enocean_rx_key: HUM - + power_status: type: num enocean_rx_key: ENG - + sunblind: remark: Eltako FSB14, FSB61, FSB71 - actor for Shutter type: str @@ -286,10 +281,10 @@ EnOcean_Item: enforce_updates: 'True' cache: 'True' visu_acl: rw - + RGBdimmer: type: num - remark: Eltako FRGBW71L - RGB Dimmer + remark: Eltako FRGBW71L - RGB Dimmer enocean_rx_id: 1A869C3 enocean_rx_eep: A5_3F_7F enocean_rx_key: DI_0 @@ -327,223 +322,9 @@ EnOcean_Item: color: white ``` -#### Example item.conf (deprecated) -``` -[EnOcean_Item] - [[Outside_Temperature]] - type = num - enocean_rx_id = 0180924D - enocean_rx_eep = A5_02_05 - enocean_rx_key = TMP - - [[Door]] - enocean_rx_id = 01234567 - enocean_rx_eep = D5_00_01 - [[[status]]] - type = bool - enocean_rx_key = STATUS - - [[FT55switch]] - enocean_rx_id = 012345AA - enocean_rx_eep = F6_02_03 - [[[up]]] - type = bool - enocean_rx_key = BO - [[[down]]] - type = bool - enocean_rx_key = BI - - [[Brightness_Sensor]] - name = brightness_sensor_east - remark = Eltako FAH60 - type = num - enocean_rx_id = 01A51DE6 - enocean_rx_eep = A5_06_01 - enocean_rx_key = BRI - visu_acl = rw - sqlite = yes - - [[dimmer1]] - enocean_rx_id = 00112233 - enocean_rx_eep = A5_11_04 - [[[light]]] - type = bool - enocean_rx_key = STAT - enocean_tx_eep = A5_38_08_02 - enocean_tx_id_offset = 1 - [[[[level]]]] - type = num - enocean_rx_key = D - enocean_tx_eep = A5_38_08_03 - enocean_tx_id_offset = 1 - ref_level = 80 - - [[handle]] - enocean_rx_id = 01234567 - enocean_rx_eep = F6_10_00 - [[[status]]] - type = num - enocean_rx_key = STATUS - - [[actor1]] - enocean_rx_id = FFAABBCC - enocean_rx_eep = A5_12_01 - [[[power]]] - type = num - enocean_rx_key = VALUE - - [[actor1B]] - remark = Eltako FSR61, FSR61NP, FSR61G, FSR61LN, FLC61NP - Switch for Ligths - enocean_rx_id = 1A794D3 - enocean_rx_eep = F6_02_03 - [[[light]]] - type = bool - enocean_tx_eep = A5_38_08_01 - enocean_tx_id_offset = 1 - enocean_rx_key = B - block_switch = False - cache = 'True' - enforce_updates = True - visu_acl = rw - - [[actorD2]] - remark = Actor with VLD Command - enocean_rx_id = FFDB7381 - enocean_rx_eep = D2_01_07 - [[[move]]] - type = bool - enocean_rx_key = STAT - enocean_tx_eep = D2_01_07 - enocean_tx_id_offset = 1 - # pulsewith-attribute removed use autotimer functionality instead - autotimer = 1 = 0 - - [[awning]] - remark = Eltako FSB14, FSB61, FSB71 - actor for Shutter - type = str - enocean_rx_id = 1A869C3 - enocean_rx_eep = F6_02_03_01 - enocean_rx_key = STATUS - [[[move]]] - type = num - enocean_tx_eep = A5_3F_7F - enocean_tx_id_offset = 0 - enocean_rx_key = B - enocean_rtime = 60 - block_switch = False - enforce_updates = True - cache = True - visu_acl = rw - - [[rocker]] - enocean_rx_id = 0029894A - enocean_rx_eep = F6_02_01 - [[[short_800ms_directly_to_knx]]] - type = bool - enocean_rx_key = AI - enocean_rocker_action = **toggle** - enocean_rocker_sequence = released **within** 0.8 - knx_dpt = 1 - knx_send = 3/0/60 - [[[long_800ms_directly_to_knx]]] - type = bool - enocean_rx_key = AI - enocean_rocker_action = toggle - enocean_rocker_sequence = released **after** 0.8 - knx_dpt = 1 - knx_send = 3/0/61 - [[[rocker_double_800ms_to_knx_send_1]]] - type = bool - enforce_updates = true - enocean_rx_key = AI - enocean_rocker_action = **set** - enocean_rocker_sequence = **released within 0.4, pressed within 0.4** - knx_dpt = 1 - knx_send = 3/0/62 - - [[brightness_sensor]] - enocean_rx_id = 01234567 - enocean_rx_eep = A5_08_01 - [[[lux]]] - type = num - enocean_rx_key = BRI - [[[movement]]] - type = bool - enocean_rx_key = MOV - - [[temperature_sensor]] - enocean_rx_id = 01234567 - enocean_rx_eep = A5_04_02 - [[[temperature]]] - type = num - enocean_rx_key = TMP - [[[humidity]]] - type = num - enocean_rx_key = HUM - [[[power_status]]] - type = num - enocean_rx_key = ENG - - [[sunblind]] - remark = Eltako FSB14, FSB61, FSB71 - actor for Shutter - type = str - enocean_rx_id = 1A869C3 - enocean_rx_eep = F6_02_03_01 - enocean_rx_key = STATUS - [[[move]]] - type = num - enocean_tx_eep = A5_3F_7F - enocean_tx_id_offset = 0 - enocean_rx_key = B - enocean_rtime = 60 - block_switch = False - enforce_updates = True - cache = True - visu_acl = rw - - [[RGBdimmer]] - type = num - remark = Eltako FRGBW71L - RGB Dimmer - enocean_rx_id = 1A869C3 - enocean_rx_eep = A5_3F_7F - enocean_rx_key = DI_0 - [[[red]]] - type = num - enocean_tx_eep = 07_3F_7F - enocean_tx_id_offset = 1 - enocean_rx_key = DI_0 - ref_level = 80 - dim_speed = 100 - color = red - [[[green]]] - type = num - enocean_tx_eep = 07_3F_7F - enocean_tx_id_offset = 1 - enocean_rx_key = DI_1 - ref_level = 80 - dim_speed = 100 - color = green - [[[blue]]] - type = num - enocean_tx_eep = 07_3F_7F - enocean_tx_id_offset = 1 - enocean_rx_key = DI_2 - ref_level = 80 - dim_speed = 100 - color = blue - [[[white]]] - type = num - enocean_tx_eep = 07_3F_7F - enocean_tx_id_offset = 1 - enocean_rx_key = DI_3 - ref_level = 80 - dim_speed = 100 - color = white -``` - ### Add new listening EnOcean devices -You have to know about the EnOcean RORG of your device (please search the internet or ask the vendor). +You have to know about the EnOcean RORG of your device (please search the internet or ask the vendor). Further the RORG must be declared in the plugin. @@ -632,7 +413,7 @@ After complete the teach-in procedure, leave the interactive console by `STRG+C` UTE does mean "Universal Uni- and Bidirectional Teach in". When activated on EnOcean device the device will send a `D4` teach in request. An automatic answer within 500 ms is expected. -To do so enable the UTE learnmode prior to the activation on the device: Start smarthome with the interactive console - see above. +To do so enable the UTE learnmode prior to the activation on the device: Start smarthome with the interactive console - see above. `sh.enocean.start_UTE_learnmode(ID_Offset)` diff --git a/eta_pu/README.md b/eta_pu/README.md index 0d7386780..d62f6b607 100644 --- a/eta_pu/README.md +++ b/eta_pu/README.md @@ -7,17 +7,8 @@ * ETA Pellet Unit PU (http://www.eta.at) with remote access enabled (there are 3 modes available: none, readonly, read/write) ## Configuration -### plugin.conf (deprecated) / plugin.yaml -``` -[eta_pu] - class_name = ETA_PU - class_path = plugins.eta_pu - address = 192.168.179.15 - port = 8080 - setpath = '/user/vars' - setname = 'smarthome' -``` +### plugin.yaml ```yaml eta_pu: @@ -36,7 +27,7 @@ Description of the attributes: * __setpath__: path to the presaved sets of CAN-bus-uri * __setname__: the name of the set, used by this plugin -### items.conf (deprecated) / items.yaml +### items.yaml The ETA pellet unit organises the data with so calles "uri" (unified ressource identifier). Every uri is readable, some are also writable. Every uri represents a CAN-bus-id of all internal parts of the pellet unit. @@ -69,39 +60,8 @@ There is a second item type available for reading error messages from the pellet The __visu__ elements are optional. -``` -# items/eta_pu.conf (deprecated) -[eta_unit] - [[boiler]] - [[[emission_temperature]]] - eta_pu_uri = 112/10021/0/0/12162 - type = str - [[[[Value]]]] - eta_pu_type = calc - type = num - [[[[unit]]]] - eta_pu_type = unit - type = str - [[warmwater]] - [[[state]]] - eta_pu_uri = 112/10111/0/0/12129 - [[[[text]]]] - visu_acl = ro - type = str - eta_pu_type = strValue - [[[extra_loading_button]]] - eta_pu_uri = 112/10111/0/0/12134 - [[[[number]]]] - visu_acl = rw - type = num - eta_pu_type = calc - [[error]] - eta_pu_error = yes - type = str -``` ```yaml -# items/eta_pu.yaml eta_unit: boiler: @@ -141,8 +101,6 @@ eta_unit: type: str ``` -### logic.conf +### logic.yaml No special logic functions available in the moment - -