Initial commit
BIN
3D_Printable_Models/HASwitchPlate.skp
Normal file
BIN
3D_Printable_Models/HASwitchPlate_assembly_jig.stl
Normal file
67244
3D_Printable_Models/HASwitchPlate_desktop_base.stl
Normal file
27652
3D_Printable_Models/HASwitchPlate_desktop_front.stl
Normal file
21142
3D_Printable_Models/HASwitchPlate_desktop_minibase.stl
Normal file
49184
3D_Printable_Models/HASwitchPlate_desktop_rear.stl
Normal file
BIN
3D_Printable_Models/HASwitchPlate_front_2x_decora_hasp.stl
Normal file
BIN
3D_Printable_Models/HASwitchPlate_front_2x_hasp_decora.stl
Normal file
BIN
3D_Printable_Models/HASwitchPlate_front_2x_hasp_toggle.stl
Normal file
BIN
3D_Printable_Models/HASwitchPlate_front_2x_toggle_hasp.stl
Normal file
BIN
3D_Printable_Models/HASwitchPlate_front_single.stl
Normal file
49366
3D_Printable_Models/HASwitchPlate_front_single_UK-UNTESTED.stl
Normal file
52656
3D_Printable_Models/HASwitchPlate_front_single_dev.stl
Normal file
51382
3D_Printable_Models/HASwitchPlate_rear_dev.stl
Normal file
BIN
3D_Printable_Models/HASwitchPlate_rear_lcdmod.stl
Normal file
49870
3D_Printable_Models/HASwitchPlate_rear_nolcdmod.stl
Normal file
50
3D_Printable_Models/README.md
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
# Switch Plate model for single-gang workbox
|
||||||
|
|
||||||
|
## 3D Printed Enclosure
|
||||||
|
|
||||||
|
Above you'll find STL files ready for slicing and the source models editable in the free edition of [SketchUp Make](https://www.sketchup.com/download). There are several models presented here for various plate configurations on the front and two options for the rear enclosure.
|
||||||
|
|
||||||
|
For most users, you'll want to print [HASwitchPlate_front_single.stl](HASwitchPlate_front_single.stl) and [HASwitchPlate_rear_nolcdmod.stl](HASwitchPlate_rear_nolcdmod.stl).
|
||||||
|
|
||||||
|
### Front plate models
|
||||||
|
|
||||||
|
* **[HASwitchPlate_front_single.stl](HASwitchPlate_front_single.stl)** Standard single-wide plate. `[HASP]`
|
||||||
|
* **[HASwitchPlate_front_2x_hasp_decora.stl](HASwitchPlate_front_2x_hasp_decora.stl)** Double-wide plate with Decora switch to the right `[HASP|Decora]`
|
||||||
|
* **[HASwitchPlate_front_2x_hasp_toggle.stl](HASwitchPlate_front_2x_hasp_toggle.stl)** Double-wide plate with toggle switch to the right `[HASP|toggle]`
|
||||||
|
* **[HASwitchPlate_front_3x_hasp_decora_decora.stl](HASwitchPlate_front_3x_hasp_decora_decora.stl)** Triple-wide plate with Decora switches to the right `[HASP|Decora|Decora]`
|
||||||
|
* **[HASwitchPlate_front_3x_hasp_toggle_toggle.stl](HASwitchPlate_front_3x_hasp_toggle_toggle.stl)** Triple-wide plate with toggle switches to the right `[HASP|toggle|toggle]`
|
||||||
|
* **[HASwitchPlate_front_5x_decora_decora_hasp_decora_decora.stl](HASwitchPlate_front_5x_decora_decora_hasp_decora_decora.stl)** 5-wide plate with 4x Decora switches and HASP in center `[Decora|Decora|HASP|Decora|Decora]`
|
||||||
|
* **[HASwitchPlate_front_single_dev.stl](HASwitchPlate_front_single_dev.stl)** Standard single-wide plate with SD card exposed for development use (unsafe!) `[HASP]`
|
||||||
|
|
||||||
|
### Rear enclosure models
|
||||||
|
|
||||||
|
* **[HASwitchPlate_rear_lcdmod.stl](HASwitchPlate_rear_lcdmod.stl)** The `lcdmod` enclosure requires the removal of the 4-pin XHP connector from the Nextion LCD panel. This option allows for better clearance around the screw posts which may help in tight work boxes, but the process of safely removing the connecter may require a hot air station.
|
||||||
|
* **[HASwitchPlate_rear_nolcdmod.stl](HASwitchPlate_rear_nolcdmod.stl)** The `nolcdmod` enclosure does not require removing the 4-pin XHP connector from the Nextion LCD panel. This simplifies the build process but has just a little less room behind the device for the work box screws. We're not talking a lot here, so if you don't have the hot air station this option will probably work fine for you.
|
||||||
|
* **[HASwitchPlate_rear_lcdmod_minimum_clearance.stl](HASwitchPlate_rear_lcdmod_minimum_clearance.stl)** The `lcdmod_minimum_clearance` rear enclosure has been modified to provide the tightest fit around the HASP components that I can work out. The walls are flimsy and thin, it will require supports to print, and you'll need 4 x [4mm M2 countersunk screws](https://amzn.to/2Eaz9wl) to assemble. I don't recommend this enclosure unless you can't get the standard enclosure to fit in your workbox.
|
||||||
|
* **[HASwitchPlate_rear_dev.stl](HASwitchPlate_rear_dev.stl)** The `dev` enclosure has USB, SD card, and Nextion XHP connector exposed for development/test purposes. This is unsafe to install in your workbox.
|
||||||
|
|
||||||
|
### Desktop models
|
||||||
|
|
||||||
|
An enclosure designed for desktop (table, bedstand, etc) use has been developed. The enclosure will fit the standard PCB, WeMos D1 Mini, and Nextion 2.4" but will not allow installation or use of the AC PSU. Power is provided by USB connection to the WeMos D1 Mini.
|
||||||
|
|
||||||
|
* **[HASwitchPlate_desktop_front.stl](HASwitchPlate_desktop_front.stl)** Front panel for desktop use with opening for SD card access
|
||||||
|
* **[HASwitchPlate_desktop_rear.stl](HASwitchPlate_desktop_rear.stl)** Rear enclosure for desktop use with openings for SD card, USB, and Nextion Serial access
|
||||||
|
* **[HASwitchPlate_desktop_base.stl](HASwitchPlate_desktop_base.stl)** Handy base for desktop use. Print with higher infill to add mass to weigh it down a bit.
|
||||||
|
|
||||||
|
## 3D Printing Notes
|
||||||
|
|
||||||
|
### FDM affordance
|
||||||
|
|
||||||
|
The careful observer might note that the dimensions of the model vary just slightly from the [published dimensions](https://www.itead.cc/wiki/images/a/ad/2.4%27%27_Nextion_Dimension.pdf) of the panel used in this project. This has been done to accommodate the nature of FDM 3D printing, which means that other production technologies may require slight modifications to make everything fit snug. The STLs are published in the correct orientation for printing.
|
||||||
|
|
||||||
|
### Filament
|
||||||
|
|
||||||
|
I printed these two parts with [AmazonBasics White PETG](https://amzn.to/2I6ctPd) on a [Prusa i3 MK3](https://shop.prusa3d.com/en/3d-printers/180-original-prusa-i3-mk3-kit.html) with 20% infill, .15mm layers, no supports, and 6 bottom layers. PETG provides good flexibility when mounting the device into your wall, as sometimes the drywall, workbox, etc require a little bit of flex. PLA might work, but may crack in some installations. If you have both on hand, print the front in PETG and the back in PLA.
|
||||||
|
|
||||||
|
### Inserts
|
||||||
|
|
||||||
|
The mounting holes for the Nextion panel are sized to fit [M2 x 3mm threaded inserts](https://amzn.to/2N511Fh) but should accept an M3 screw (tightly). See [the enclosure build documentation](../Documentation/04_Project_Enclosure.md#threaded-inserts) for more details.
|
||||||
|
|
||||||
|
### SketchUp
|
||||||
|
|
||||||
|
The SketchUp file included here is dimensioned in meters but 1m == 1mm due to issues with how SketchUp (doesn't) handle small dimensions. If you intend to modify the provided SketchUp model, export to STL in meters then import for print in mm (the standard setting for most slicers) and you'll be fine. The included STLs are ready to slice as-is.
|
BIN
Arduino_Sketch/HASwitchPlate.ino.d1_mini.bin
Normal file
3526
Arduino_Sketch/HASwitchPlate/HASwitchPlate.ino
Normal file
5
Arduino_Sketch/README.md
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# HASwitchPlate Arduino Sketch
|
||||||
|
|
||||||
|
Here you'll find the [Arduino source code](./HASwitchPlate/HASwitchPlate.ino) for the microcontroller firmware along with [a pre-compiled binary image](https://github.com/aderusha/HASwitchPlate/raw/master/Arduino_Sketch/HASwitchPlate.ino.d1_mini.bin) which can be [flashed directly to your ESP8266](../Documentation/01_Arduino_Sketch.md#nodemcu-flasher).
|
||||||
|
|
||||||
|
Please [check the Arduino Sketch documentation](../Documentation/01_Arduino_Sketch.md) for additional deployment details.
|
881
Home_Assistant/blueprints/hasp_Core_Functionality.yaml
Normal file
@ -0,0 +1,881 @@
|
|||||||
|
blueprint:
|
||||||
|
name: "HASP Core functionality"
|
||||||
|
description: |
|
||||||
|
|
||||||
|
# Description
|
||||||
|
|
||||||
|
Provides core HASP functionality. Deploy one copy of this blueprint for each HASP device.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## HASP Page and Button Reference
|
||||||
|
|
||||||
|
The images below show each available HASP page along with the layout of available button objects.
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
| Page 0 | Pages 1-3 | Pages 4-5 |
|
||||||
|
|--------|-----------|-----------|
|
||||||
|
|  |  |  |
|
||||||
|
|
||||||
|
| Page 6 | Page 7 | Page 8 |
|
||||||
|
|--------|--------|--------|
|
||||||
|
|  |  |  |
|
||||||
|
|
||||||
|
| Page 9 | Page 10 | Page 11 |
|
||||||
|
|--------|---------|---------|
|
||||||
|
|  |  | 
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
## HASP Font Reference
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
The Nextion display supports monospaced and proportional fonts. For monospace fonts, the HASP project includes [Consolas](https://docs.microsoft.com/en-us/typography/font-list/consolas) monospace in 4 sizes, [Webdings](https://en.wikipedia.org/wiki/Webdings#Character_set) in 1 size, and [Google's "Noto Sans"](https://github.com/googlefonts/noto-fonts) proportional in 5 sizes
|
||||||
|
|
||||||
|
| Font | Name | Characters per line | Lines per button |
|
||||||
|
| :--- | :---------------- | :-------------------| :--------------- |
|
||||||
|
| 0 | Consolas 24 | 20 characters | 2 lines |
|
||||||
|
| 1 | Consolas 32 | 15 characters | 2 lines |
|
||||||
|
| 2 | Consolas 48 | 10 characters | 1 line |
|
||||||
|
| 3 | Consolas 80 | 6 characters | 1 line |
|
||||||
|
| 4 | Webdings 56 | 8 characters | 1 line |
|
||||||
|
| 5 | Noto Sans 24 | Proportional | 2 lines |
|
||||||
|
| 6 | Noto Sans 32 | Proportional | 2 lines |
|
||||||
|
| 7 | Noto Sans 48 | Proportional | 1 line |
|
||||||
|
| 8 | Noto Sans 64 | Proportional | 1 line |
|
||||||
|
| 9 | Noto Sans 80 | Proportional | 1 line |
|
||||||
|
| 10 | Noto Sans Bold 80 | Proportional | 1 line |
|
||||||
|
|
||||||
|
### Icons
|
||||||
|
|
||||||
|
Fonts 5-10 also include [1400+ icons which you can copy and paste from here](https://htmlpreview.github.io/?https://github.com/aderusha/HASwitchPlate/blob/master/Documentation/Images/hasp-fontawesome5.html)
|
||||||
|
|
||||||
|
### Font examples
|
||||||
|
|
||||||
|
  
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
source_url: "https://github.com/HASwitchPlate/Blueprints/blob/main/hasp_Core_Functionality.yaml"
|
||||||
|
domain: automation
|
||||||
|
input:
|
||||||
|
haspdevice:
|
||||||
|
name: "HASP Device"
|
||||||
|
description: "Select the HASP device"
|
||||||
|
selector:
|
||||||
|
device:
|
||||||
|
integration: mqtt
|
||||||
|
manufacturer: "HASwitchPlate"
|
||||||
|
model: "HASPone v1.0.0"
|
||||||
|
page1text:
|
||||||
|
name: "Page select button 1 text"
|
||||||
|
description: "Enter text to appear on the left-most page select button #1. It's a small button, so keep it short. 6 character (or shorter) words are crisp and legible."
|
||||||
|
default: "Page 1"
|
||||||
|
selector:
|
||||||
|
text:
|
||||||
|
page1font_select:
|
||||||
|
name: "Page select button 1 font"
|
||||||
|
description: "Select the font for page select button #1. Font 6 might be a good starting point. You can refer to the HASP Font Reference above to see what the available options look like."
|
||||||
|
default: "6 - Noto Sans 32"
|
||||||
|
selector:
|
||||||
|
select:
|
||||||
|
options:
|
||||||
|
- "0 - Consolas 24"
|
||||||
|
- "1 - Consolas 32"
|
||||||
|
- "2 - Consolas 48"
|
||||||
|
- "3 - Consolas 80"
|
||||||
|
- "4 - Webdings 56"
|
||||||
|
- "5 - Noto Sans 24"
|
||||||
|
- "6 - Noto Sans 32"
|
||||||
|
- "7 - Noto Sans 48"
|
||||||
|
- "8 - Noto Sans 64"
|
||||||
|
- "9 - Noto Sans 80"
|
||||||
|
- "10 - Noto Sans Bold 80"
|
||||||
|
page1page:
|
||||||
|
name: "Page select button 1 page"
|
||||||
|
description: "Select the destination page for page select button #1. When you click the left-most page button on the HASP, the HASP will flip to the page number you select here. If this is your first time here, try page 1."
|
||||||
|
default: 1
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 0
|
||||||
|
max: 11
|
||||||
|
mode: slider
|
||||||
|
page2text:
|
||||||
|
name: "Page select button 2 text"
|
||||||
|
description: "Enter text to appear on the center page select button #2. If page scrolling is enabled, use the Page Names list below."
|
||||||
|
default: "Page 2"
|
||||||
|
selector:
|
||||||
|
text:
|
||||||
|
page2font_select:
|
||||||
|
name: "Page select button 2 font"
|
||||||
|
description: "Select the font for page select button #2."
|
||||||
|
default: "6 - Noto Sans 32"
|
||||||
|
selector:
|
||||||
|
select:
|
||||||
|
options:
|
||||||
|
- "0 - Consolas 24"
|
||||||
|
- "1 - Consolas 32"
|
||||||
|
- "2 - Consolas 48"
|
||||||
|
- "3 - Consolas 80"
|
||||||
|
- "4 - Webdings 56"
|
||||||
|
- "5 - Noto Sans 24"
|
||||||
|
- "6 - Noto Sans 32"
|
||||||
|
- "7 - Noto Sans 48"
|
||||||
|
- "8 - Noto Sans 64"
|
||||||
|
- "9 - Noto Sans 80"
|
||||||
|
- "10 - Noto Sans Bold 80"
|
||||||
|
page2page:
|
||||||
|
name: "Page select button 2 page"
|
||||||
|
description: "Select the destination page for page select button #2"
|
||||||
|
default: 2
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 0
|
||||||
|
max: 11
|
||||||
|
mode: slider
|
||||||
|
page3text:
|
||||||
|
name: "Page select button 3 text"
|
||||||
|
description: "Enter text to appear on the right-most page select button #3"
|
||||||
|
default: "Page 3"
|
||||||
|
selector:
|
||||||
|
text:
|
||||||
|
page3font_select:
|
||||||
|
name: "Page select button 3 font"
|
||||||
|
description: "Select the font for page select button #3"
|
||||||
|
default: "6 - Noto Sans 32"
|
||||||
|
selector:
|
||||||
|
select:
|
||||||
|
options:
|
||||||
|
- "0 - Consolas 24"
|
||||||
|
- "1 - Consolas 32"
|
||||||
|
- "2 - Consolas 48"
|
||||||
|
- "3 - Consolas 80"
|
||||||
|
- "4 - Webdings 56"
|
||||||
|
- "5 - Noto Sans 24"
|
||||||
|
- "6 - Noto Sans 32"
|
||||||
|
- "7 - Noto Sans 48"
|
||||||
|
- "8 - Noto Sans 64"
|
||||||
|
- "9 - Noto Sans 80"
|
||||||
|
- "10 - Noto Sans Bold 80"
|
||||||
|
page3page:
|
||||||
|
name: "Page select button 3 page"
|
||||||
|
description: "Select the destination page for page select button #3"
|
||||||
|
default: 3
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 0
|
||||||
|
max: 11
|
||||||
|
mode: slider
|
||||||
|
page_scroll:
|
||||||
|
name: "Enable page scrolling instead of page select"
|
||||||
|
description: "If enabled, page buttons 1 and 3 will scroll up and down through available pages. The middle page button 2 will continue to select its assigned page number, but the label for page button 2 will be determined based on the Page Names defined below."
|
||||||
|
default: false
|
||||||
|
selector:
|
||||||
|
boolean:
|
||||||
|
page_scroll_list:
|
||||||
|
name: "Page scroll list"
|
||||||
|
description: "If page scrolling is enabled, set this list to include all active pages eligible for scrolling in the desired order. If a page is not being used, remove it from the list to skip it while scrolling up/down."
|
||||||
|
default: "1,2,3,4,5,6,7,8,9,10,11"
|
||||||
|
selector:
|
||||||
|
text:
|
||||||
|
page_names:
|
||||||
|
name: "Page names"
|
||||||
|
description: 'If page scrolling is enabled, the list here assigns the label seen on Page Button 2 for each page. For example, if "page9" is set to "HVAC", when page 9 is selected the text "HVAC" will appear on the middle page select button. If you prefer one single label for the page2 button on all pages, simply set each page to the same value.'
|
||||||
|
default:
|
||||||
|
page0: Page 0
|
||||||
|
page1: Page 1
|
||||||
|
page2: Page 2
|
||||||
|
page3: Page 3
|
||||||
|
page4: Page 4
|
||||||
|
page5: Page 5
|
||||||
|
page6: Page 6
|
||||||
|
page7: Page 7
|
||||||
|
page8: Page 8
|
||||||
|
page9: Page 9
|
||||||
|
page10: Page 10
|
||||||
|
page11: Page 11
|
||||||
|
selector:
|
||||||
|
object:
|
||||||
|
show_lovelace:
|
||||||
|
name: "Show lovelace configuration notification"
|
||||||
|
description: "Turn this on to have a ready-made entities card configuration presented when you click RUN ACTIONS. Toggle this back off once you've added the code to your dashboard."
|
||||||
|
default: true
|
||||||
|
selector:
|
||||||
|
boolean:
|
||||||
|
reset_hasp:
|
||||||
|
name: "First-time HASP setup or reset"
|
||||||
|
description: "Turn this on if this is a brand-new HASP (or you'd like to reset some default theme settings). Turn it on, hit save, and click RUN ACTIONS to setup your HASP. After the first run you can toggle this back off."
|
||||||
|
default: true
|
||||||
|
selector:
|
||||||
|
boolean:
|
||||||
|
|
||||||
|
mode: parallel
|
||||||
|
max_exceeded: silent
|
||||||
|
|
||||||
|
variables:
|
||||||
|
haspdevice: !input haspdevice
|
||||||
|
haspname: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^sensor\.") -%}
|
||||||
|
{{- entity|regex_replace(find="^sensor\.", replace="", ignorecase=true)|regex_replace(find="_sensor(?:_\d+|)$", replace="", ignorecase=true) -}}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
page1text: !input page1text
|
||||||
|
page1font_select: !input page1font_select
|
||||||
|
page1font: "{{ page1font_select.split(' - ')[0] | int }}"
|
||||||
|
page1page: !input page1page
|
||||||
|
page2text: !input page2text
|
||||||
|
page2font_select: !input page2font_select
|
||||||
|
page2font: "{{ page2font_select.split(' - ')[0] | int }}"
|
||||||
|
page2page: !input page2page
|
||||||
|
page3text: !input page3text
|
||||||
|
page3font_select: !input page3font_select
|
||||||
|
page3font: "{{ page3font_select.split(' - ')[0] | int }}"
|
||||||
|
page3page: !input page3page
|
||||||
|
page_scroll: !input page_scroll
|
||||||
|
page_scroll_list: !input page_scroll_list
|
||||||
|
page_names: !input page_names
|
||||||
|
show_lovelace: !input show_lovelace
|
||||||
|
reset_hasp: !input reset_hasp
|
||||||
|
activepage: >-
|
||||||
|
{%- set activepage = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^number\..*_active_page(?:_\d+|)$") -%}
|
||||||
|
{%- set activepage.entity=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{% if states(activepage.entity)|lower == "none" %}-1{% else %}{{ states(activepage.entity) | int }}{% endif %}
|
||||||
|
statetopic: '{{ "hasp/" ~ haspname ~ "/state" }}'
|
||||||
|
commandtopic: '{{ "hasp/" ~ haspname ~ "/command/" ~ haspobject }}'
|
||||||
|
jsontopic: '{{ "hasp/" ~ haspname ~ "/state/json" }}'
|
||||||
|
jsoncommandtopic: '{{ "hasp/" ~ haspname ~ "/command/json" }}'
|
||||||
|
haspsensor: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^sensor\..+_sensor(?:_\d+|)$") -%}
|
||||||
|
{{ entity }}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
haspIP: '{{state_attr(haspsensor, "haspIP")}}'
|
||||||
|
haspClientId: '{{state_attr(haspsensor, "haspClientID")}}'
|
||||||
|
haspMac: '{{state_attr(haspsensor, "haspMac")}}'
|
||||||
|
haspManufacturer: '{{state_attr(haspsensor, "haspManufacturer")}}'
|
||||||
|
haspModel: '{{state_attr(haspsensor, "haspModel")}}'
|
||||||
|
sw_version: '{{state_attr(haspsensor, "espVersion")}}'
|
||||||
|
default_selected_foreground_brightness: "1"
|
||||||
|
default_selected_foreground_color: "[0, 0, 0]"
|
||||||
|
default_selected_background_brightness: "255"
|
||||||
|
default_selected_background_color: "[255, 255, 255]"
|
||||||
|
default_unselected_foreground_brightness: "224"
|
||||||
|
default_unselected_foreground_color: "[255, 255, 255]"
|
||||||
|
default_unselected_background_brightness: "64"
|
||||||
|
default_unselected_background_color: "[255, 255, 255]"
|
||||||
|
selectedfgtopic: '{{ "hasp/" ~ haspname ~ "/light/selectedforegroundcolor/rgb" }}'
|
||||||
|
selectedbgtopic: '{{ "hasp/" ~ haspname ~ "/light/selectedbackgroundcolor/rgb" }}'
|
||||||
|
unselectedfgtopic: '{{ "hasp/" ~ haspname ~ "/light/unselectedforegroundcolor/rgb" }}'
|
||||||
|
unselectedbgtopic: '{{ "hasp/" ~ haspname ~ "/light/unselectedbackgroundcolor/rgb" }}'
|
||||||
|
page_button_trigger: "OFF"
|
||||||
|
page_list: '{{page_scroll_list.split(",")}}'
|
||||||
|
page_previous: >
|
||||||
|
{%- set page = namespace() -%}
|
||||||
|
{%- set page.previous = page_list[(page_list|length)-1]|int -%}
|
||||||
|
{%- set page.next = page_list[0]|int -%}
|
||||||
|
{%- for item in page_list -%}
|
||||||
|
{%- if item|int == activepage -%}
|
||||||
|
{%- if not loop.first -%}
|
||||||
|
{%- set page.previous = loop.previtem|int -%}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- if not loop.last -%}
|
||||||
|
{%- set page.next = loop.nextitem|int -%}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}{{page.previous}}
|
||||||
|
page_next: >
|
||||||
|
{%- set page = namespace() -%}
|
||||||
|
{%- set page.previous = page_list[(page_list|length)-1]|int -%}
|
||||||
|
{%- set page.next = page_list[0]|int -%}
|
||||||
|
{%- for item in page_list -%}
|
||||||
|
{%- if item|int == activepage -%}
|
||||||
|
{%- if not loop.first -%}
|
||||||
|
{%- set page.previous = loop.previtem|int -%}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- if not loop.last -%}
|
||||||
|
{%- set page.next = loop.nextitem|int -%}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}{{page.next}}
|
||||||
|
|
||||||
|
trigger_variables:
|
||||||
|
haspdevice: !input haspdevice
|
||||||
|
haspname: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^sensor\.") -%}
|
||||||
|
{{- entity|regex_replace(find="^sensor\.", replace="", ignorecase=true)|regex_replace(find="_sensor(?:_\d+|)$", replace="", ignorecase=true) -}}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
statetopic: '{{ "hasp/" ~ haspname ~ "/state" }}'
|
||||||
|
jsontopic: '{{ "hasp/" ~ haspname ~ "/state/json" }}'
|
||||||
|
selectedfgtopic: '{{ "hasp/" ~ haspname ~ "/light/selectedforegroundcolor/rgb" }}'
|
||||||
|
selectedbgtopic: '{{ "hasp/" ~ haspname ~ "/light/selectedbackgroundcolor/rgb" }}'
|
||||||
|
unselectedfgtopic: '{{ "hasp/" ~ haspname ~ "/light/unselectedforegroundcolor/rgb" }}'
|
||||||
|
unselectedbgtopic: '{{ "hasp/" ~ haspname ~ "/light/unselectedbackgroundcolor/rgb" }}'
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{jsontopic}}"
|
||||||
|
payload: "online"
|
||||||
|
value_template: "{{ value_json.event }}"
|
||||||
|
- platform: homeassistant
|
||||||
|
event: start
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{jsontopic}}"
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{selectedfgtopic}}"
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{selectedbgtopic}}"
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{unselectedfgtopic}}"
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{unselectedbgtopic}}"
|
||||||
|
|
||||||
|
action:
|
||||||
|
- choose:
|
||||||
|
#########################################################################
|
||||||
|
# Create required helpers and apply HASP defaults when "RUN ACTIONS" is pressed by the user
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ trigger is not defined }}"
|
||||||
|
sequence:
|
||||||
|
# Push discovery messages for RGB lights used to configure themes
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "homeassistant/light/{{haspname}}/selectedforegroundcolor/config"
|
||||||
|
payload: >-
|
||||||
|
{"name":"{{haspname}} selected foreground color",
|
||||||
|
"command_topic":"hasp/{{haspname}}/light/selectedforegroundcolor/switch",
|
||||||
|
"state_topic":"hasp/{{haspname}}/alwayson",
|
||||||
|
"rgb_command_topic":"hasp/{{haspname}}/light/selectedforegroundcolor/rgb",
|
||||||
|
"rgb_command_template": {% raw %}"{{ (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int }}",{% endraw %}
|
||||||
|
"retain":false,
|
||||||
|
"unique_id":"{{haspClientId}}-selectedforegroundcolor",
|
||||||
|
"device":{"identifiers":["{{haspClientId}}"],
|
||||||
|
"name":"{{haspname}}",
|
||||||
|
"manufacturer":"{{haspManufacturer}}",
|
||||||
|
"model":"{{haspModel}}",
|
||||||
|
"sw_version":{{sw_version}}
|
||||||
|
}}
|
||||||
|
retain: true
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "homeassistant/light/{{haspname}}/selectedbackgroundcolor/config"
|
||||||
|
payload: >-
|
||||||
|
{"name":"{{haspname}} selected background color",
|
||||||
|
"command_topic":"hasp/{{haspname}}/light/selectedbackgroundcolor/switch",
|
||||||
|
"state_topic":"hasp/{{haspname}}/alwayson",
|
||||||
|
"rgb_command_topic":"hasp/{{haspname}}/light/selectedbackgroundcolor/rgb",
|
||||||
|
"rgb_command_template": {% raw %}"{{ (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int }}",{% endraw %}
|
||||||
|
"retain":false,
|
||||||
|
"unique_id":"{{haspClientId}}-selectedbackgroundcolor",
|
||||||
|
"device":{
|
||||||
|
"identifiers":["{{haspClientId}}"],
|
||||||
|
"name":"{{haspname}}",
|
||||||
|
"manufacturer":"{{haspManufacturer}}",
|
||||||
|
"model":"{{haspModel}}",
|
||||||
|
"sw_version":{{sw_version}}
|
||||||
|
}}
|
||||||
|
retain: true
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "homeassistant/light/{{haspname}}/unselectedforegroundcolor/config"
|
||||||
|
payload: >-
|
||||||
|
{"name":"{{haspname}} unselected foreground color",
|
||||||
|
"command_topic":"hasp/{{haspname}}/light/unselectedforegroundcolor/switch",
|
||||||
|
"state_topic":"hasp/{{haspname}}/alwayson",
|
||||||
|
"rgb_command_topic":"hasp/{{haspname}}/light/unselectedforegroundcolor/rgb",
|
||||||
|
"rgb_command_template": {% raw %}"{{ (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int }}",{% endraw %}
|
||||||
|
"retain":false,
|
||||||
|
"unique_id":"{{haspClientId}}-unselectedforegroundcolor",
|
||||||
|
"device":{"identifiers":["{{haspClientId}}"],
|
||||||
|
"name":"{{haspname}}",
|
||||||
|
"manufacturer":"{{haspManufacturer}}",
|
||||||
|
"model":"{{haspModel}}",
|
||||||
|
"sw_version":{{sw_version}}
|
||||||
|
}}
|
||||||
|
retain: true
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "homeassistant/light/{{haspname}}/unselectedbackgroundcolor/config"
|
||||||
|
payload: >-
|
||||||
|
{"name":"{{haspname}} unselected background color",
|
||||||
|
"command_topic":"hasp/{{haspname}}/light/unselectedbackgroundcolor/switch",
|
||||||
|
"state_topic":"hasp/{{haspname}}/alwayson",
|
||||||
|
"rgb_command_topic":"hasp/{{haspname}}/light/unselectedbackgroundcolor/rgb",
|
||||||
|
"rgb_command_template": {% raw %}"{{ (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int }}",{% endraw %}
|
||||||
|
"retain":false,
|
||||||
|
"unique_id":"{{haspClientId}}-unselectedbackgroundcolor",
|
||||||
|
"device":{"identifiers":["{{haspClientId}}"],
|
||||||
|
"name":"{{haspname}}",
|
||||||
|
"manufacturer":"{{haspManufacturer}}",
|
||||||
|
"model":"{{haspModel}}",
|
||||||
|
"sw_version":{{sw_version}}
|
||||||
|
}}
|
||||||
|
retain: true
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "hasp/{{haspname}}/alwayson"
|
||||||
|
payload: "ON"
|
||||||
|
retain: true
|
||||||
|
# Send page select button config
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: >-
|
||||||
|
[{% for p in range(1,12) %}"p[{{p}}].b[1].font={{page1font}}","p[{{p}}].b[1].txt=\"{{page1text}}\"",{% endfor %}
|
||||||
|
{% for p in range(1,12) %}"p[{{p}}].b[2].font={{page2font}}","p[{{p}}].b[2].txt=\"{% if page_scroll %}{{page_names.get("page" ~ p)}}{% else %}{{page2text}}{% endif %}\"",{% endfor %}
|
||||||
|
{% for p in range(1,12) %}"p[{{p}}].b[3].font={{page3font}}","p[{{p}}].b[3].txt=\"{{page3text}}\""{% if not loop.last %},{% endif %}{% endfor %}]
|
||||||
|
- choose:
|
||||||
|
#########################################################################
|
||||||
|
# Create a notification with the lovelace entity card YAML
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ show_lovelace }}"
|
||||||
|
sequence:
|
||||||
|
- delay: "00:00:01"
|
||||||
|
- service: persistent_notification.create
|
||||||
|
data:
|
||||||
|
title: "{{haspname}} Lovelace Card"
|
||||||
|
notification_id: "{{haspname}} Lovelace Configuration"
|
||||||
|
message: >-
|
||||||
|
{%- set haspentities = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^number\..*_active_page(?:_\d+|)$") -%}
|
||||||
|
{%- set haspentities.activepage=entity -%}
|
||||||
|
{%- elif entity|regex_search("^light\..*_backlight(?:_\d+|)$") -%}
|
||||||
|
{%- set haspentities.backlight=entity -%}
|
||||||
|
{%- elif entity|regex_search("^light\..*_selected_foreground_color(?:_\d+|)$") -%}
|
||||||
|
{%- set haspentities.selectedforeground=entity -%}
|
||||||
|
{%- elif entity|regex_search("^light\..*_selected_background_color(?:_\d+|)$") -%}
|
||||||
|
{%- set haspentities.selectedbackground=entity -%}
|
||||||
|
{%- elif entity|regex_search("^light\..*_unselected_foreground_color(?:_\d+|)$") -%}
|
||||||
|
{%- set haspentities.unselectedforeground=entity -%}
|
||||||
|
{%- elif entity|regex_search("^light\..*_unselected_background_color(?:_\d+|)$") -%}
|
||||||
|
{%- set haspentities.unselectedbackground=entity -%}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
To [create a Lovelace card](https://www.home-assistant.io/lovelace/) for HASP {{haspname}},
|
||||||
|
add a manual card and then paste in the code you see below.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
|
||||||
|
type: entities
|
||||||
|
|
||||||
|
title: HASP {{haspname}}
|
||||||
|
|
||||||
|
show_header_toggle: false
|
||||||
|
|
||||||
|
state_color: true
|
||||||
|
|
||||||
|
entities:
|
||||||
|
- entity: number.{{haspentities.activepage}}
|
||||||
|
- type: divider
|
||||||
|
- entity: light.{{haspentities.backlight}}
|
||||||
|
secondary_info: brightness
|
||||||
|
- type: divider
|
||||||
|
- entity: light.{{haspentities.selectedforeground}}
|
||||||
|
icon: 'mdi:palette'
|
||||||
|
name: Selected Foreground Color
|
||||||
|
secondary_info: brightness
|
||||||
|
- entity: light.{{haspentities.selectedbackground}}
|
||||||
|
icon: 'mdi:palette'
|
||||||
|
name: Selected Background Color
|
||||||
|
secondary_info: brightness
|
||||||
|
- entity: light.{{haspentities.unselectedforeground}}
|
||||||
|
icon: 'mdi:palette'
|
||||||
|
name: Unselected Foreground Color
|
||||||
|
secondary_info: brightness
|
||||||
|
- entity: light.{{haspentities.unselectedbackground}}
|
||||||
|
icon: 'mdi:palette'
|
||||||
|
name: Unselected Background Color
|
||||||
|
secondary_info: brightness
|
||||||
|
- type: divider
|
||||||
|
footer:
|
||||||
|
type: buttons
|
||||||
|
entities:
|
||||||
|
- entity: {{haspsensor}}
|
||||||
|
name: Blueprints
|
||||||
|
icon: 'mdi:palette-swatch'
|
||||||
|
tap_action:
|
||||||
|
action: navigate
|
||||||
|
navigation_path: /config/blueprint/dashboard
|
||||||
|
- entity: {{haspsensor}}
|
||||||
|
name: Automations
|
||||||
|
icon: 'mdi:robot'
|
||||||
|
tap_action:
|
||||||
|
action: navigate
|
||||||
|
navigation_path: /config/automation/dashboard
|
||||||
|
- entity: {{haspsensor}}
|
||||||
|
name: HASP Admin
|
||||||
|
icon: 'mdi:cellphone-text'
|
||||||
|
tap_action:
|
||||||
|
action: url
|
||||||
|
url_path: http://{{haspIP}}
|
||||||
|
```
|
||||||
|
|
||||||
|
- choose:
|
||||||
|
#########################################################################
|
||||||
|
# Push some defaults to the device
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ reset_hasp }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["p[0].b[1].font=6","p[0].b[1].txt=\" Setting up\\rHome Assistant\"","page 0"]'
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "hasp/{{haspname}}/state/page"
|
||||||
|
payload: "0"
|
||||||
|
- delay: "00:00:01"
|
||||||
|
- service: light.turn_on
|
||||||
|
data:
|
||||||
|
entity_id: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_selected_foreground_color(?:_\d+|)$") -%}
|
||||||
|
{{ entity }}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
rgb_color: "{{default_selected_foreground_color}}"
|
||||||
|
- service: light.turn_on
|
||||||
|
data:
|
||||||
|
entity_id: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_selected_foreground_color(?:_\d+|)$") -%}
|
||||||
|
{{ entity }}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
brightness: "{{default_selected_foreground_brightness}}"
|
||||||
|
- service: light.turn_on
|
||||||
|
data:
|
||||||
|
entity_id: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_selected_background_color(?:_\d+|)$") -%}
|
||||||
|
{{ entity }}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
rgb_color: "{{default_selected_background_color}}"
|
||||||
|
- service: light.turn_on
|
||||||
|
data:
|
||||||
|
entity_id: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_selected_background_color(?:_\d+|)$") -%}
|
||||||
|
{{ entity }}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
brightness: "{{default_selected_background_brightness}}"
|
||||||
|
- service: light.turn_on
|
||||||
|
data:
|
||||||
|
entity_id: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_unselected_foreground_color(?:_\d+|)$") -%}
|
||||||
|
{{ entity }}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
rgb_color: "{{default_unselected_foreground_color}}"
|
||||||
|
- service: light.turn_on
|
||||||
|
data:
|
||||||
|
entity_id: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_unselected_foreground_color(?:_\d+|)$") -%}
|
||||||
|
{{ entity }}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
brightness: "{{default_unselected_foreground_brightness}}"
|
||||||
|
- service: light.turn_on
|
||||||
|
data:
|
||||||
|
entity_id: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_unselected_background_color(?:_\d+|)$") -%}
|
||||||
|
{{ entity }}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
rgb_color: "{{default_unselected_background_color}}"
|
||||||
|
- service: light.turn_on
|
||||||
|
data:
|
||||||
|
entity_id: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_unselected_background_color(?:_\d+|)$") -%}
|
||||||
|
{{ entity }}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
brightness: "{{default_unselected_background_brightness}}"
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "hasp/{{haspname}}/command/reboot"
|
||||||
|
payload: ""
|
||||||
|
- delay: "00:00:02"
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "hasp/{{haspname}}/command/page"
|
||||||
|
payload: "{% if page_scroll %}{{page2page}}{% else %}{{page1page}}{% endif %}"
|
||||||
|
retain: true
|
||||||
|
|
||||||
|
#########################################################################
|
||||||
|
# Push configuration to device when it connects or Home Assistant starts
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ is_state(haspsensor, 'ON') and ((trigger.platform == 'homeassistant') and (trigger.event == 'start')) or ((trigger.platform == 'mqtt') and (trigger.topic == jsontopic) and (trigger.payload_json.event == 'online'))}}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish # send page button text
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: >-
|
||||||
|
[{% for p in range(1,12) %}"p[{{p}}].b[1].font={{page1font}}","p[{{p}}].b[1].txt=\"{{page1text}}\"",{% endfor %}
|
||||||
|
{% for p in range(1,12) %}"p[{{p}}].b[2].font={{page2font}}","p[{{p}}].b[2].txt=\"{% if page_scroll %}{{page_names.get("page" ~ p)}}{% else %}{{page2text}}{% endif %}\"",{% endfor %}
|
||||||
|
{% for p in range(1,12) %}"p[{{p}}].b[3].font={{page3font}}","p[{{p}}].b[3].txt=\"{{page3text}}\""{% if not loop.last %},{% endif %}{% endfor %}]
|
||||||
|
- service: mqtt.publish # apply selected foreground color to page select buttons
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: >-
|
||||||
|
{%- set color = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_selected_foreground_color(?:_\d+|)$") -%}
|
||||||
|
{%- set color.source=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- set brightness = state_attr(color.source, "brightness")|int / 255 -%}
|
||||||
|
{%- set red=(state_attr(color.source, "rgb_color")[0] * brightness)|int -%}
|
||||||
|
{%- set green=(state_attr(color.source, "rgb_color")[1] * brightness)|int -%}
|
||||||
|
{%- set blue=(state_attr(color.source, "rgb_color")[2] * brightness)|int -%}
|
||||||
|
{%- set colorcode = (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int -%}
|
||||||
|
[{%- if not page_scroll -%}{%- for p in range(1,12) %}{%- if p == page1page|int %}"p[{{p}}].b[1].pco={{colorcode}}"{%- else -%}"p[{{p}}].b[1].pco2={{colorcode}}"{%- endif -%},{%- endfor -%}
|
||||||
|
{%- else -%}{%- for p in range(1,12) %}"p[{{p}}].b[1].pco2={{colorcode}}",{%- endfor -%}{%- endif -%}
|
||||||
|
{%- for p in range(1,12) %}{%- if p == page2page|int %}"p[{{p}}].b[2].pco={{colorcode}}"{%- else -%}"p[{{p}}].b[2].pco2={{colorcode}}"{%- endif -%},{%- endfor -%}
|
||||||
|
{%- if not page_scroll -%}{%- for p in range(1,12) %}{%- if p == page3page|int %}"p[{{p}}].b[3].pco={{colorcode}}"{%- else -%}"p[{{p}}].b[3].pco2={{colorcode}}"{%- endif -%}{% if not loop.last %},{% endif %}{%- endfor -%}
|
||||||
|
{%- else -%}{%- for p in range(1,12) %}"p[{{p}}].b[3].pco2={{colorcode}}"{% if not loop.last %},{% endif %}{%- endfor -%}{%- endif -%}]
|
||||||
|
- service: mqtt.publish # apply selected background color to page select buttons
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: >-
|
||||||
|
{%- set color = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_selected_background_color(?:_\d+|)$") -%}
|
||||||
|
{%- set color.source=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- set brightness = state_attr(color.source, "brightness")|int / 255 -%}
|
||||||
|
{%- set red=(state_attr(color.source, "rgb_color")[0] * brightness)|int -%}
|
||||||
|
{%- set green=(state_attr(color.source, "rgb_color")[1] * brightness)|int -%}
|
||||||
|
{%- set blue=(state_attr(color.source, "rgb_color")[2] * brightness)|int -%}
|
||||||
|
{%- set colorcode = (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int -%}
|
||||||
|
[{%- if not page_scroll -%}{%- for p in range(1,12) %}{%- if p == page1page|int %}"p[{{p}}].b[1].bco={{colorcode}}"{%- else -%}"p[{{p}}].b[1].bco2={{colorcode}}"{%- endif -%},{%- endfor -%}
|
||||||
|
{% else %}{%- for p in range(1,12) %}"p[{{p}}].b[1].bco2={{colorcode}}",{%- endfor -%}{%- endif -%}
|
||||||
|
{%- for p in range(1,12) %}{%- if p == page2page|int %}"p[{{p}}].b[2].bco={{colorcode}}"{%- else -%}"p[{{p}}].b[2].bco2={{colorcode}}"{%- endif -%},{%- endfor -%}
|
||||||
|
{%- if not page_scroll -%}{%- for p in range(1,12) %}{%- if p == page3page|int %}"p[{{p}}].b[3].bco={{colorcode}}"{%- else -%}"p[{{p}}].b[3].bco2={{colorcode}}"{%- endif -%}{% if not loop.last %},{% endif %}{%- endfor -%}
|
||||||
|
{% else %}{%- for p in range(1,12) %}"p[{{p}}].b[3].bco2={{colorcode}}"{% if not loop.last %},{% endif %}{%- endfor -%}{%- endif -%}]
|
||||||
|
- service: mqtt.publish # apply unselected foreground color to page select buttons
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: >-
|
||||||
|
{%- set color = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_unselected_foreground_color(?:_\d+|)$") -%}
|
||||||
|
{%- set color.source=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- set brightness = state_attr(color.source, "brightness")|int / 255 -%}
|
||||||
|
{%- set red=(state_attr(color.source, "rgb_color")[0] * brightness)|int -%}
|
||||||
|
{%- set green=(state_attr(color.source, "rgb_color")[1] * brightness)|int -%}
|
||||||
|
{%- set blue=(state_attr(color.source, "rgb_color")[2] * brightness)|int -%}
|
||||||
|
{%- set colorcode = (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int -%}
|
||||||
|
[{%- if not page_scroll -%}{%- for p in range(1,12) %}{%- if p == page1page|int %}"p[{{p}}].b[1].pco2={{colorcode}}"{%- else -%}"p[{{p}}].b[1].pco={{colorcode}}"{%- endif -%},{%- endfor -%}
|
||||||
|
{% else %}{%- for p in range(1,12) %}"p[{{p}}].b[1].pco={{colorcode}}",{%- endfor -%}{%- endif -%}
|
||||||
|
{%- for p in range(1,12) %}{%- if p == page2page|int %}"p[{{p}}].b[2].pco2={{colorcode}}"{%- else -%}"p[{{p}}].b[2].pco={{colorcode}}"{%- endif -%},{%- endfor -%}
|
||||||
|
{%- if not page_scroll -%}{%- for p in range(1,12) %}{%- if p == page3page|int %}"p[{{p}}].b[3].pco2={{colorcode}}"{%- else -%}"p[{{p}}].b[3].pco={{colorcode}}"{%- endif -%}{% if not loop.last %},{% endif %}{%- endfor -%}
|
||||||
|
{% else %}{%- for p in range(1,12) %}"p[{{p}}].b[3].pco={{colorcode}}"{% if not loop.last %},{% endif %}{%- endfor -%}{%- endif -%}]
|
||||||
|
- service: mqtt.publish # apply unselected background color to page select buttons
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: >-
|
||||||
|
{%- set color = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_unselected_background_color(?:_\d+|)$") -%}
|
||||||
|
{%- set color.source=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- set brightness = state_attr(color.source, "brightness")|int / 255 -%}
|
||||||
|
{%- set red=(state_attr(color.source, "rgb_color")[0] * brightness)|int -%}
|
||||||
|
{%- set green=(state_attr(color.source, "rgb_color")[1] * brightness)|int -%}
|
||||||
|
{%- set blue=(state_attr(color.source, "rgb_color")[2] * brightness)|int -%}
|
||||||
|
{%- set colorcode = (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int -%}
|
||||||
|
[{%- if not page_scroll -%}{%- for p in range(1,12) %}{%- if p == page1page|int %}"p[{{p}}].b[1].bco2={{colorcode}}"{%- else -%}"p[{{p}}].b[1].bco={{colorcode}}"{%- endif -%},{%- endfor -%}
|
||||||
|
{% else %}{%- for p in range(1,12) %}"p[{{p}}].b[1].bco={{colorcode}}",{%- endfor -%}{%- endif -%}
|
||||||
|
{%- for p in range(1,12) %}{%- if p == page2page|int %}"p[{{p}}].b[2].bco2={{colorcode}}"{%- else -%}"p[{{p}}].b[2].bco={{colorcode}}"{%- endif -%},{%- endfor -%}
|
||||||
|
{%- if not page_scroll -%}{%- for p in range(1,12) %}{%- if p == page3page|int %}"p[{{p}}].b[3].bco2={{colorcode}}"{%- else -%}"p[{{p}}].b[3].bco={{colorcode}}"{%- endif -%}{% if not loop.last %},{% endif %}{%- endfor -%}
|
||||||
|
{% else %}{%- for p in range(1,12) %}"p[{{p}}].b[3].bco={{colorcode}}"{% if not loop.last %},{% endif %}{%- endfor -%}{%- endif -%}]
|
||||||
|
- service: mqtt.publish # request sensor update
|
||||||
|
data:
|
||||||
|
topic: "hasp/{{haspname}}/command"
|
||||||
|
payload: ""
|
||||||
|
|
||||||
|
#########################################################################
|
||||||
|
# Catch incoming JSON messages
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ (trigger.platform == 'mqtt') and (trigger.topic == jsontopic) and (trigger.payload_json is defined) }}"
|
||||||
|
sequence:
|
||||||
|
- choose:
|
||||||
|
#########################################################################
|
||||||
|
# Page control buttons
|
||||||
|
- conditions: # catch p[x].b[1] and send the command to switch to the selected page
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ (trigger.payload_json.event | regex_match("p\[\d+\].b\[1\]")) and (trigger.payload_json.value == page_button_trigger) and not page_scroll}}'
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "hasp/{{haspname}}/command/page"
|
||||||
|
payload: !input page1page
|
||||||
|
retain: true
|
||||||
|
- conditions: # catch p[x].b[1] and send the command to switch to the previous page if page_scroll == true
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ (trigger.payload_json.event | regex_match("p\[\d+\].b\[1\]")) and (trigger.payload_json.value == page_button_trigger) and page_scroll}}'
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "hasp/{{haspname}}/command/page"
|
||||||
|
payload: "{{page_previous}}"
|
||||||
|
retain: true
|
||||||
|
- conditions: # catch p[x].b[2]
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ (trigger.payload_json.event | regex_match("p\[\d+\].b\[2\]")) and (trigger.payload_json.value == page_button_trigger) }}'
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "hasp/{{haspname}}/command/page"
|
||||||
|
payload: !input page2page
|
||||||
|
retain: true
|
||||||
|
- conditions: # catch p[x].b[3] and send the command to switch to the selected page
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ (trigger.payload_json.event | regex_match("p\[\d+\].b\[3\]")) and (trigger.payload_json.value == page_button_trigger) and not page_scroll}}'
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "hasp/{{haspname}}/command/page"
|
||||||
|
payload: !input page3page
|
||||||
|
retain: true
|
||||||
|
- conditions: # catch p[x].b[3] and send the command to switch to the next page if page_scroll == true
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ (trigger.payload_json.event | regex_match("p\[\d+\].b\[3\]")) and (trigger.payload_json.value == page_button_trigger) and page_scroll }}'
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "hasp/{{haspname}}/command/page"
|
||||||
|
payload: "{{page_next}}"
|
||||||
|
retain: true
|
||||||
|
#########################################################################
|
||||||
|
# Apply selected theme colors to the page select buttons when theme colors are published
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ (trigger.platform == 'mqtt') and (trigger.topic == selectedfgtopic) and not page_scroll }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: >-
|
||||||
|
[{%- for p in range(1,12) %}{%- if p == page1page|int %}"p[{{p}}].b[1].pco={{trigger.payload}}"{%- else -%}"p[{{p}}].b[1].pco2={{trigger.payload}}"{%- endif -%},{%- endfor -%}
|
||||||
|
{%- for p in range(1,12) %}{%- if p == page2page|int %}"p[{{p}}].b[2].pco={{trigger.payload}}"{%- else -%}"p[{{p}}].b[2].pco2={{trigger.payload}}"{%- endif -%},{%- endfor -%}
|
||||||
|
{%- for p in range(1,12) %}{%- if p == page3page|int %}"p[{{p}}].b[3].pco={{trigger.payload}}"{%- else -%}"p[{{p}}].b[3].pco2={{trigger.payload}}"{%- endif -%}{% if not loop.last %},{% endif %}{%- endfor -%}]
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ (trigger.platform == 'mqtt') and (trigger.topic == selectedfgtopic) and page_scroll }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: >-
|
||||||
|
[{%- for p in range(1,12) %}"p[{{p}}].b[1].pco2={{trigger.payload}}",{%- endfor -%}
|
||||||
|
{%- for p in range(1,12) %}{%- if p == page2page|int %}"p[{{p}}].b[2].pco={{trigger.payload}}"{%- else -%}"p[{{p}}].b[2].pco2={{trigger.payload}}"{%- endif -%},{%- endfor -%}
|
||||||
|
{%- for p in range(1,12) %}"p[{{p}}].b[3].pco2={{trigger.payload}}"{% if not loop.last %},{% endif %}{%- endfor -%}]
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ (trigger.platform == 'mqtt') and (trigger.topic == selectedbgtopic) and not page_scroll }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: >-
|
||||||
|
[{%- for p in range(1,12) %}{%- if p == page1page|int %}"p[{{p}}].b[1].bco={{trigger.payload}}"{%- else -%}"p[{{p}}].b[1].bco2={{trigger.payload}}"{%- endif -%},{%- endfor -%}
|
||||||
|
{%- for p in range(1,12) %}{%- if p == page2page|int %}"p[{{p}}].b[2].bco={{trigger.payload}}"{%- else -%}"p[{{p}}].b[2].bco2={{trigger.payload}}"{%- endif -%},{%- endfor -%}
|
||||||
|
{%- for p in range(1,12) %}{%- if p == page3page|int %}"p[{{p}}].b[3].bco={{trigger.payload}}"{%- else -%}"p[{{p}}].b[3].bco2={{trigger.payload}}"{%- endif -%}{% if not loop.last %},{% endif %}{%- endfor -%}]
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ (trigger.platform == 'mqtt') and (trigger.topic == selectedbgtopic) and page_scroll }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: >-
|
||||||
|
[{%- for p in range(1,12) %}"p[{{p}}].b[1].bco2={{trigger.payload}}",{%- endfor -%}
|
||||||
|
{%- for p in range(1,12) %}{%- if p == page2page|int %}"p[{{p}}].b[2].bco={{trigger.payload}}"{%- else -%}"p[{{p}}].b[2].bco2={{trigger.payload}}"{%- endif -%},{%- endfor -%}
|
||||||
|
{%- for p in range(1,12) %}"p[{{p}}].b[3].bco2={{trigger.payload}}"{% if not loop.last %},{% endif %}{%- endfor -%}]
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ (trigger.platform == 'mqtt') and (trigger.topic == unselectedfgtopic) and not page_scroll }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: >-
|
||||||
|
[{%- for p in range(1,12) %}{%- if p == page1page|int %}"p[{{p}}].b[1].pco2={{trigger.payload}}"{%- else -%}"p[{{p}}].b[1].pco={{trigger.payload}}"{%- endif -%},{%- endfor -%}
|
||||||
|
{%- for p in range(1,12) %}{%- if p == page2page|int %}"p[{{p}}].b[2].pco2={{trigger.payload}}"{%- else -%}"p[{{p}}].b[2].pco={{trigger.payload}}"{%- endif -%},{%- endfor -%}
|
||||||
|
{%- for p in range(1,12) %}{%- if p == page3page|int %}"p[{{p}}].b[3].pco2={{trigger.payload}}"{%- else -%}"p[{{p}}].b[3].pco={{trigger.payload}}"{%- endif -%}{% if not loop.last %},{% endif %}{%- endfor -%}]
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ (trigger.platform == 'mqtt') and (trigger.topic == unselectedfgtopic) and page_scroll }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: >-
|
||||||
|
[{%- for p in range(1,12) %}"p[{{p}}].b[1].pco={{trigger.payload}}",{%- endfor -%}
|
||||||
|
{%- for p in range(1,12) %}{%- if p == page2page|int %}"p[{{p}}].b[2].pco2={{trigger.payload}}"{%- else -%}"p[{{p}}].b[2].pco={{trigger.payload}}"{%- endif -%},{%- endfor -%}
|
||||||
|
{%- for p in range(1,12) %}"p[{{p}}].b[3].pco={{trigger.payload}}"{% if not loop.last %},{% endif %}{%- endfor -%}]
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ (trigger.platform == 'mqtt') and (trigger.topic == unselectedbgtopic) and not page_scroll }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: >-
|
||||||
|
[{%- for p in range(1,12) %}{%- if p == page1page|int %}"p[{{p}}].b[1].bco2={{trigger.payload}}"{%- else -%}"p[{{p}}].b[1].bco={{trigger.payload}}"{%- endif -%},{%- endfor -%}
|
||||||
|
{%- for p in range(1,12) %}{%- if p == page2page|int %}"p[{{p}}].b[2].bco2={{trigger.payload}}"{%- else -%}"p[{{p}}].b[2].bco={{trigger.payload}}"{%- endif -%},{%- endfor -%}
|
||||||
|
{%- for p in range(1,12) %}{%- if p == page3page|int %}"p[{{p}}].b[3].bco2={{trigger.payload}}"{%- else -%}"p[{{p}}].b[3].bco={{trigger.payload}}"{%- endif -%}{% if not loop.last %},{% endif %}{%- endfor -%}]
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ (trigger.platform == 'mqtt') and (trigger.topic == unselectedbgtopic) and page_scroll }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: >-
|
||||||
|
[{%- for p in range(1,12) %}"p[{{p}}].b[1].bco={{trigger.payload}}",{%- endfor -%}
|
||||||
|
{%- for p in range(1,12) %}{%- if p == page2page|int %}"p[{{p}}].b[2].bco2={{trigger.payload}}"{%- else -%}"p[{{p}}].b[2].bco={{trigger.payload}}"{%- endif -%},{%- endfor -%}
|
||||||
|
{%- for p in range(1,12) %}"p[{{p}}].b[3].bco={{trigger.payload}}"{% if not loop.last %},{% endif %}{%- endfor -%}]
|
145
Home_Assistant/blueprints/hasp_Create_Device_Triggers.yaml
Normal file
@ -0,0 +1,145 @@
|
|||||||
|
blueprint:
|
||||||
|
name: "HASP create device triggers"
|
||||||
|
description: |
|
||||||
|
|
||||||
|
# Description
|
||||||
|
|
||||||
|
Create [Device Triggers](https://www.home-assistant.io/integrations/device_trigger.mqtt/) for each of the HASP buttons defined below. Device triggers can be utilized while creating your own automations through the Home Assistant UI.
|
||||||
|
|
||||||
|
This allows for the easy creation of automations which will be triggered when pressing buttons on your HASP.
|
||||||
|
|
||||||
|
## HASP Page and Button Reference
|
||||||
|
|
||||||
|
The images below show each available HASP page along with the layout of available button objects.
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
| Page 0 | Pages 1-3 | Pages 4-5 |
|
||||||
|
|--------|-----------|-----------|
|
||||||
|
|  |  |  |
|
||||||
|
|
||||||
|
| Page 6 | Page 7 | Page 8 |
|
||||||
|
|--------|--------|--------|
|
||||||
|
|  |  |  |
|
||||||
|
|
||||||
|
| Page 9 | Page 10 | Page 11 |
|
||||||
|
|--------|---------|---------|
|
||||||
|
|  |  | 
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
source_url: "https://github.com/HASwitchPlate/Blueprints/blob/main/hasp_Create_Device_Triggers.yaml"
|
||||||
|
domain: automation
|
||||||
|
input:
|
||||||
|
haspdevice:
|
||||||
|
name: "HASP Device"
|
||||||
|
description: "Select the HASP device"
|
||||||
|
selector:
|
||||||
|
device:
|
||||||
|
integration: mqtt
|
||||||
|
manufacturer: "HASwitchPlate"
|
||||||
|
model: "HASPone v1.0.0"
|
||||||
|
objects:
|
||||||
|
name: "HASP buttons"
|
||||||
|
description: "Create one device trigger for each button in this list."
|
||||||
|
default:
|
||||||
|
- p[1].b[4]
|
||||||
|
- p[1].b[5]
|
||||||
|
- p[1].b[6]
|
||||||
|
- p[1].b[7]
|
||||||
|
selector:
|
||||||
|
object:
|
||||||
|
|
||||||
|
mode: parallel
|
||||||
|
max_exceeded: silent
|
||||||
|
|
||||||
|
variables:
|
||||||
|
haspdevice: !input haspdevice
|
||||||
|
objects: !input objects
|
||||||
|
haspname: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^sensor\.") -%}
|
||||||
|
{{- entity|regex_replace(find="^sensor\.", replace="", ignorecase=true)|regex_replace(find="_sensor(?:_\d+|)$", replace="", ignorecase=true) -}}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
statetopic: '{{ "hasp/" ~ haspname ~ "/state" }}'
|
||||||
|
haspsensor: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^sensor\..+_sensor(?:_\d+|)$") -%}
|
||||||
|
{{ entity }}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
haspClientId: '{{state_attr(haspsensor, "haspClientID")}}'
|
||||||
|
haspManufacturer: '{{state_attr(haspsensor, "haspManufacturer")}}'
|
||||||
|
haspModel: '{{state_attr(haspsensor, "haspModel")}}'
|
||||||
|
sw_version: '{{state_attr(haspsensor, "espVersion")}}'
|
||||||
|
|
||||||
|
trigger_variables:
|
||||||
|
haspdevice: !input haspdevice
|
||||||
|
haspname: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^sensor\.") -%}
|
||||||
|
{{- entity|regex_replace(find="^sensor\.", replace="", ignorecase=true)|regex_replace(find="_sensor(?:_\d+|)$", replace="", ignorecase=true) -}}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
haspsensor: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^sensor\..+_sensor(?:_\d+|)$") -%}
|
||||||
|
{{ entity }}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
jsontopic: '{{ "hasp/" ~ haspname ~ "/state/json" }}'
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{jsontopic}}"
|
||||||
|
payload: "online"
|
||||||
|
value_template: "{{ value_json.event }}"
|
||||||
|
- platform: homeassistant
|
||||||
|
event: start
|
||||||
|
|
||||||
|
condition:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ is_state(haspsensor, 'ON') }}"
|
||||||
|
|
||||||
|
action:
|
||||||
|
- repeat:
|
||||||
|
count: "{{objects|length}}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "homeassistant/device_automation/{{haspname}}/{{objects[repeat.index-1]|replace('.','')|replace('[','')|replace(']','')}}-ON/config"
|
||||||
|
payload: >-
|
||||||
|
{"automation_type":"trigger",
|
||||||
|
"payload":"ON",
|
||||||
|
"topic":"hasp/{{haspname}}/state/{{objects[repeat.index-1]}}",
|
||||||
|
"type":"button_short_press",
|
||||||
|
"subtype":"{{objects[repeat.index-1]}}",
|
||||||
|
"device":{
|
||||||
|
"identifiers":["{{haspClientId}}"],
|
||||||
|
"name":"{{haspname}}",
|
||||||
|
"manufacturer":"{{haspManufacturer}}",
|
||||||
|
"model":"{{haspModel}}",
|
||||||
|
"sw_version":{{sw_version}}
|
||||||
|
}}
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "homeassistant/device_automation/{{haspname}}/{{objects[repeat.index-1]|replace('.','')|replace('[','')|replace(']','')}}-OFF/config"
|
||||||
|
payload: >-
|
||||||
|
{"automation_type":"trigger",
|
||||||
|
"payload":"OFF",
|
||||||
|
"topic":"hasp/{{haspname}}/state/{{objects[repeat.index-1]}}",
|
||||||
|
"type":"button_short_release",
|
||||||
|
"subtype":"{{objects[repeat.index-1]}}",
|
||||||
|
"device":{
|
||||||
|
"identifiers":["{{haspClientId}}"],
|
||||||
|
"name":"{{haspname}}",
|
||||||
|
"manufacturer":"{{haspManufacturer}}",
|
||||||
|
"model":"{{haspModel}}",
|
||||||
|
"sw_version":{{sw_version}}
|
||||||
|
}}
|
||||||
|
|
469
Home_Assistant/blueprints/hasp_Display_Alarm_Control_page7.yaml
Normal file
@ -0,0 +1,469 @@
|
|||||||
|
blueprint:
|
||||||
|
name: "HASP p[7].b[all] displays an alarm control panel"
|
||||||
|
description: |
|
||||||
|
|
||||||
|
# Description
|
||||||
|
|
||||||
|
Page 7 controls a selected alarm panel for code entry and arm/disarm.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## HASP Page and Button Reference
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
This automation is designed to work with the controls found on page 7:
|
||||||
|
|
||||||
|
| Page 7 |
|
||||||
|
|--------|
|
||||||
|
|  |
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
source_url: "https://github.com/HASwitchPlate/Blueprints/blob/main/hasp_Display_Alarm_Control_page7.yaml"
|
||||||
|
domain: automation
|
||||||
|
input:
|
||||||
|
haspdevice:
|
||||||
|
name: "HASP Device"
|
||||||
|
description: "Select the HASP device"
|
||||||
|
selector:
|
||||||
|
device:
|
||||||
|
integration: mqtt
|
||||||
|
manufacturer: "HASwitchPlate"
|
||||||
|
model: "HASPone v1.0.0"
|
||||||
|
alarmpanel:
|
||||||
|
name: "Alarm panel to control"
|
||||||
|
description: "Select an alarm panel to control"
|
||||||
|
selector:
|
||||||
|
entity:
|
||||||
|
domain: alarm_control_panel
|
||||||
|
codelength:
|
||||||
|
name: "Alarm code length"
|
||||||
|
description: "Select the alarm code length for your alarm (usually 4 digits)."
|
||||||
|
default: 4
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 2
|
||||||
|
max: 10
|
||||||
|
mode: slider
|
||||||
|
armservice:
|
||||||
|
name: "Alarm arm service"
|
||||||
|
description: 'Enter the alarm service call to issue when the ARM button is pressed. Typically this is one of "alarm_arm_away", "alarm_arm_home", "alarm_arm_night", or "alarm_arm_custom_bypass".'
|
||||||
|
default: "alarm_arm_away"
|
||||||
|
selector:
|
||||||
|
text:
|
||||||
|
|
||||||
|
mode: parallel
|
||||||
|
max_exceeded: silent
|
||||||
|
|
||||||
|
variables:
|
||||||
|
haspdevice: !input haspdevice
|
||||||
|
haspname: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^sensor\.") -%}
|
||||||
|
{{- entity|regex_replace(find="^sensor\.", replace="", ignorecase=true)|regex_replace(find="_sensor(?:_\d+|)$", replace="", ignorecase=true) -}}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
alarmpanel: !input alarmpanel
|
||||||
|
codelength: !input codelength
|
||||||
|
armservice: !input armservice
|
||||||
|
commandtopic: '{{ "hasp/" ~ haspname ~ "/command/" }}'
|
||||||
|
jsontopic: '{{ "hasp/" ~ haspname ~ "/state/json" }}'
|
||||||
|
jsoncommandtopic: '{{ "hasp/" ~ haspname ~ "/command/json" }}'
|
||||||
|
haspsensor: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^sensor\..+_sensor(?:_\d+|)$") -%}
|
||||||
|
{{ entity }}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
haspIP: '{{state_attr(haspsensor, "haspIP")}}'
|
||||||
|
haspClientId: '{{state_attr(haspsensor, "haspClientID")}}'
|
||||||
|
haspMac: '{{state_attr(haspsensor, "haspMac")}}'
|
||||||
|
haspManufacturer: '{{state_attr(haspsensor, "haspManufacturer")}}'
|
||||||
|
haspModel: '{{state_attr(haspsensor, "haspModel")}}'
|
||||||
|
sw_version: '{{state_attr(haspsensor, "espVersion")}}'
|
||||||
|
selectedfgtopic: '{{ "hasp/" ~ haspname ~ "/light/selectedforegroundcolor/rgb" }}'
|
||||||
|
selectedbgtopic: '{{ "hasp/" ~ haspname ~ "/light/selectedbackgroundcolor/rgb" }}'
|
||||||
|
unselectedfgtopic: '{{ "hasp/" ~ haspname ~ "/light/unselectedforegroundcolor/rgb" }}'
|
||||||
|
unselectedbgtopic: '{{ "hasp/" ~ haspname ~ "/light/unselectedbackgroundcolor/rgb" }}'
|
||||||
|
selectedfg: >-
|
||||||
|
{%- set color = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_selected_foreground_color(?:_\d+|)$") -%}
|
||||||
|
{%- set color.source=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- set brightness = state_attr(color.source, "brightness")|int / 255 -%}
|
||||||
|
{%- set red=(state_attr(color.source, "rgb_color")[0] * brightness)|int -%}
|
||||||
|
{%- set green=(state_attr(color.source, "rgb_color")[1] * brightness)|int -%}
|
||||||
|
{%- set blue=(state_attr(color.source, "rgb_color")[2] * brightness)|int -%}
|
||||||
|
{{ (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int }}
|
||||||
|
selectedbg: >-
|
||||||
|
{%- set color = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_selected_background_color(?:_\d+|)$") -%}
|
||||||
|
{%- set color.source=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- set brightness = state_attr(color.source, "brightness")|int / 255 -%}
|
||||||
|
{%- set red=(state_attr(color.source, "rgb_color")[0] * brightness)|int -%}
|
||||||
|
{%- set green=(state_attr(color.source, "rgb_color")[1] * brightness)|int -%}
|
||||||
|
{%- set blue=(state_attr(color.source, "rgb_color")[2] * brightness)|int -%}
|
||||||
|
{{ (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int }}
|
||||||
|
unselectedfg: >-
|
||||||
|
{%- set color = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_unselected_foreground_color(?:_\d+|)$") -%}
|
||||||
|
{%- set color.source=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- set brightness = state_attr(color.source, "brightness")|int / 255 -%}
|
||||||
|
{%- set red=(state_attr(color.source, "rgb_color")[0] * brightness)|int -%}
|
||||||
|
{%- set green=(state_attr(color.source, "rgb_color")[1] * brightness)|int -%}
|
||||||
|
{%- set blue=(state_attr(color.source, "rgb_color")[2] * brightness)|int -%}
|
||||||
|
{{ (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int }}
|
||||||
|
unselectedbg: >-
|
||||||
|
{%- set color = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_unselected_background_color(?:_\d+|)$") -%}
|
||||||
|
{%- set color.source=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- set brightness = state_attr(color.source, "brightness")|int / 255 -%}
|
||||||
|
{%- set red=(state_attr(color.source, "rgb_color")[0] * brightness)|int -%}
|
||||||
|
{%- set green=(state_attr(color.source, "rgb_color")[1] * brightness)|int -%}
|
||||||
|
{%- set blue=(state_attr(color.source, "rgb_color")[2] * brightness)|int -%}
|
||||||
|
{{ (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int }}
|
||||||
|
alarmstate: '{% if states(alarmpanel)|lower == "disarmed" %}disarmed{% elif states(alarmpanel)|lower == "arming" %}arming{% else %}armed{% endif %}'
|
||||||
|
alarmstate_text: '{% if alarmstate == "disarmed" %}not\\rarmed{% elif alarmstate == "arming" %}arming{% else %}armed{% endif %}'
|
||||||
|
alarmaction_text: '{% if alarmstate == "disarmed" %}arm{% else %}disarm{% endif %}'
|
||||||
|
armservice_name: '{{"alarm_control_panel." ~ armservice}}'
|
||||||
|
|
||||||
|
trigger_variables:
|
||||||
|
haspdevice: !input haspdevice
|
||||||
|
haspname: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^sensor\.") -%}
|
||||||
|
{{- entity|regex_replace(find="^sensor\.", replace="", ignorecase=true)|regex_replace(find="_sensor(?:_\d+|)$", replace="", ignorecase=true) -}}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
haspsensor: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^sensor\..+_sensor(?:_\d+|)$") -%}
|
||||||
|
{{ entity }}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
jsontopic: '{{ "hasp/" ~ haspname ~ "/state/json" }}'
|
||||||
|
selectedfgtopic: '{{ "hasp/" ~ haspname ~ "/light/selectedforegroundcolor/rgb" }}'
|
||||||
|
selectedbgtopic: '{{ "hasp/" ~ haspname ~ "/light/selectedbackgroundcolor/rgb" }}'
|
||||||
|
unselectedfgtopic: '{{ "hasp/" ~ haspname ~ "/light/unselectedforegroundcolor/rgb" }}'
|
||||||
|
unselectedbgtopic: '{{ "hasp/" ~ haspname ~ "/light/unselectedbackgroundcolor/rgb" }}'
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
- platform: state
|
||||||
|
entity_id: !input alarmpanel
|
||||||
|
- platform: homeassistant
|
||||||
|
event: start
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{jsontopic}}"
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{selectedfgtopic}}"
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{selectedbgtopic}}"
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{unselectedfgtopic}}"
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{unselectedbgtopic}}"
|
||||||
|
|
||||||
|
condition:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ is_state(haspsensor, 'ON') }}"
|
||||||
|
|
||||||
|
action:
|
||||||
|
- choose:
|
||||||
|
#########################################################################
|
||||||
|
# RUN ACTIONS or Home Assistant Startup or HASP Connect
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ (trigger is not defined) or ((trigger.platform == 'homeassistant') and (trigger.event == 'start')) or ((trigger.platform == 'mqtt') and (trigger.topic == jsontopic) and (trigger.payload_json.event == 'online'))}}"
|
||||||
|
sequence:
|
||||||
|
# Apply themes and set numbered button labels
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: >-
|
||||||
|
[{%- for i in range(4,15) if not i == 13 -%}
|
||||||
|
"p[7].b[{{i}}].pco={{selectedfg}}",
|
||||||
|
"p[7].b[{{i}}].bco={{selectedbg}}",
|
||||||
|
"p[7].b[{{i}}].pco2={{unselectedfg}}",
|
||||||
|
"p[7].b[{{i}}].bco2={{unselectedbg}}",
|
||||||
|
"p[7].b[{{i}}].font=3",{%- endfor -%}
|
||||||
|
{%- for i in range(4,13) -%}
|
||||||
|
"p[7].b[{{i}}].txt=\"{{i-3}}\"",{%- endfor -%}
|
||||||
|
"p[7].b[14].txt=\"0\""]
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: >-
|
||||||
|
["p[7].b[13].font=6",
|
||||||
|
"p[7].b[15].font=6",
|
||||||
|
{%- if alarmstate == "disarmed" -%}
|
||||||
|
"p[7].b[13].pco={{selectedfg}}",
|
||||||
|
"p[7].b[13].bco={{selectedbg}}",
|
||||||
|
"p[7].b[13].pco2={{unselectedfg}}",
|
||||||
|
"p[7].b[13].bco2={{unselectedbg}}",
|
||||||
|
"p[7].b[15].pco={{selectedfg}}",
|
||||||
|
"p[7].b[15].bco={{selectedbg}}",
|
||||||
|
"p[7].b[15].pco2={{unselectedfg}}",
|
||||||
|
"p[7].b[15].bco2={{unselectedbg}}",
|
||||||
|
{%- else -%}
|
||||||
|
"p[7].b[13].pco={{unselectedfg}}",
|
||||||
|
"p[7].b[13].bco={{unselectedbg}}",
|
||||||
|
"p[7].b[13].pco2={{selectedfg}}",
|
||||||
|
"p[7].b[13].bco2={{selectedbg}}",
|
||||||
|
"p[7].b[15].pco={{unselectedfg}}",
|
||||||
|
"p[7].b[15].bco={{unselectedbg}}",
|
||||||
|
"p[7].b[15].pco2={{selectedfg}}",
|
||||||
|
"p[7].b[15].bco2={{selectedbg}}",
|
||||||
|
{%- endif -%}
|
||||||
|
"p[7].b[13].txt=\"{{alarmstate_text}}\"",
|
||||||
|
"p[7].b[15].txt=\"{{alarmaction_text}}\""]
|
||||||
|
- repeat:
|
||||||
|
count: "{{codelength}}"
|
||||||
|
sequence:
|
||||||
|
# create number objects for each digit in codelength
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "homeassistant/number/{{haspname}}/alarmcode_{{repeat.index}}/config"
|
||||||
|
payload: >-
|
||||||
|
{"name":"{{haspname}} alarmcode {{repeat.index}}",
|
||||||
|
"command_topic":"hasp/{{haspname}}/alarmcode/{{repeat.index}}",
|
||||||
|
"availability":{"topic":"hasp/{{haspname}}/alwayson","payload_available":"ON"},
|
||||||
|
"optimistic":"true",
|
||||||
|
"icon":"mdi:bell-plus-outline",
|
||||||
|
"unique_id":"{{haspClientId}}-alarmcode_{{repeat.index}}",
|
||||||
|
"device":{
|
||||||
|
"identifiers":["{{haspClientId}}"],
|
||||||
|
"name":"{{haspname}}",
|
||||||
|
"manufacturer":"{{haspManufacturer}}",
|
||||||
|
"model":"{{haspModel}}",
|
||||||
|
"sw_version":{{sw_version}}
|
||||||
|
}}
|
||||||
|
- delay: "00:00:01"
|
||||||
|
- repeat:
|
||||||
|
count: "{{codelength}}"
|
||||||
|
sequence:
|
||||||
|
# set initial bogus value for each digit in codelength
|
||||||
|
- service: number.set_value
|
||||||
|
data:
|
||||||
|
entity_id: "number.{{haspname}}_alarmcode_{{repeat.index}}"
|
||||||
|
value: -1
|
||||||
|
|
||||||
|
#########################################################################
|
||||||
|
# Update alarm state if the selected alarm panel entity changes state
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ (trigger.platform == "state") and (trigger.entity_id == alarmpanel) }}'
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: >-
|
||||||
|
[{%- if alarmstate == "disarmed" -%}
|
||||||
|
"p[7].b[13].pco={{selectedfg}}",
|
||||||
|
"p[7].b[13].bco={{selectedbg}}",
|
||||||
|
"p[7].b[13].pco2={{unselectedfg}}",
|
||||||
|
"p[7].b[13].bco2={{unselectedbg}}",
|
||||||
|
"p[7].b[15].pco={{selectedfg}}",
|
||||||
|
"p[7].b[15].bco={{selectedbg}}",
|
||||||
|
"p[7].b[15].pco2={{unselectedfg}}",
|
||||||
|
"p[7].b[15].bco2={{unselectedbg}}",
|
||||||
|
{%- else -%}
|
||||||
|
"p[7].b[13].pco={{unselectedfg}}",
|
||||||
|
"p[7].b[13].bco={{unselectedbg}}",
|
||||||
|
"p[7].b[13].pco2={{selectedfg}}",
|
||||||
|
"p[7].b[13].bco2={{selectedbg}}",
|
||||||
|
"p[7].b[15].pco={{unselectedfg}}",
|
||||||
|
"p[7].b[15].bco={{unselectedbg}}",
|
||||||
|
"p[7].b[15].pco2={{selectedfg}}",
|
||||||
|
"p[7].b[15].bco2={{selectedbg}}",
|
||||||
|
{%- endif -%}
|
||||||
|
"p[7].b[13].txt=\"{{alarmstate_text}}\"",
|
||||||
|
"p[7].b[15].txt=\"{{alarmaction_text}}\""]
|
||||||
|
|
||||||
|
#########################################################################
|
||||||
|
# Handle MQTT message triggers
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ trigger.platform == "mqtt" }}'
|
||||||
|
sequence:
|
||||||
|
- choose:
|
||||||
|
#########################################################################
|
||||||
|
# Catch incoming JSON button presses
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ (trigger.topic == jsontopic) and (trigger.payload_json is defined) and (trigger.payload_json.event_type is defined) and (trigger.payload_json.event_type == "button_short_press") }}'
|
||||||
|
sequence:
|
||||||
|
- choose:
|
||||||
|
#########################################################################
|
||||||
|
# Catch a number button
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: >-
|
||||||
|
{% set page = trigger.payload_json.event.split("].b[")[0] | replace("p[","") | int %}
|
||||||
|
{% set button = trigger.payload_json.event.split("].b[")[1] | replace("]","") | int %}
|
||||||
|
{% if page == 7 and (button >= 4 and button <= 12) or button == 14%}{{true}}{% endif %}
|
||||||
|
sequence:
|
||||||
|
- repeat:
|
||||||
|
count: "{{(codelength|int) - 1}}"
|
||||||
|
sequence:
|
||||||
|
# roll existing number entries forward into the next number
|
||||||
|
- service: number.set_value
|
||||||
|
data:
|
||||||
|
entity_id: "number.{{haspname}}_alarmcode_{{(codelength|int) - repeat.index + 1}}"
|
||||||
|
value: '{{states("number." ~ haspname ~ "_alarmcode_" ~ ((codelength|int) - repeat.index))|int}}'
|
||||||
|
- service: number.set_value
|
||||||
|
data:
|
||||||
|
entity_id: "number.{{haspname}}_alarmcode_1"
|
||||||
|
value: >-
|
||||||
|
{%- set button = trigger.payload_json.event.split("].b[")[1] | replace("]","") | int - 3 -%}
|
||||||
|
{%- if button == 11 %}{% set button = 0 -%}{%- endif -%}
|
||||||
|
{{button|int}}
|
||||||
|
|
||||||
|
#########################################################################
|
||||||
|
# Arm was pressed
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ (trigger.topic == jsontopic) and (trigger.payload_json.event == "p[7].b[15]") and (trigger.payload_json.value == "ON") and (alarmstate == "disarmed")}}'
|
||||||
|
sequence:
|
||||||
|
- service_template: "{{armservice_name}}"
|
||||||
|
data:
|
||||||
|
entity_id: !input alarmpanel
|
||||||
|
code: >-
|
||||||
|
{%- set code = namespace() -%}
|
||||||
|
{%- set code.value = states("number.plate01_alarmcode_" ~ codelength)|int -%}
|
||||||
|
{%- for i in range(1,codelength|int) -%}
|
||||||
|
{%- set code.value = code.value|int * 10 + (states("number.plate01_alarmcode_" ~ (codelength|int - i))|int) -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{{code.value|int}}
|
||||||
|
- repeat:
|
||||||
|
count: "{{codelength}}"
|
||||||
|
sequence:
|
||||||
|
# clear out code entry after arm attempt
|
||||||
|
- service: number.set_value
|
||||||
|
data:
|
||||||
|
entity_id: "number.{{haspname}}_alarmcode_{{repeat.index}}"
|
||||||
|
value: -1
|
||||||
|
|
||||||
|
#########################################################################
|
||||||
|
# Disarm was pressed
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ (trigger.topic == jsontopic) and (trigger.payload_json.event == "p[7].b[15]") and (trigger.payload_json.value == "ON")}}'
|
||||||
|
sequence:
|
||||||
|
- service: alarm_control_panel.alarm_disarm
|
||||||
|
data:
|
||||||
|
entity_id: !input alarmpanel
|
||||||
|
code: >-
|
||||||
|
{%- set code = namespace() -%}
|
||||||
|
{%- set code.value = states("number.plate01_alarmcode_" ~ codelength)|int -%}
|
||||||
|
{%- for i in range(1,codelength|int) -%}
|
||||||
|
{%- set code.value = code.value|int * 10 + (states("number.plate01_alarmcode_" ~ (codelength|int - i))|int) -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{{code.value|int}}
|
||||||
|
- repeat:
|
||||||
|
count: "{{codelength}}"
|
||||||
|
sequence:
|
||||||
|
# clear out code entry after disarm attempt
|
||||||
|
- service: number.set_value
|
||||||
|
data:
|
||||||
|
entity_id: "number.{{haspname}}_alarmcode_{{repeat.index}}"
|
||||||
|
value: -1
|
||||||
|
|
||||||
|
#########################################################################
|
||||||
|
# Theme: Apply selected foreground color when it changes.
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ trigger.topic == selectedfgtopic }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: >-
|
||||||
|
[{%- for i in range(4,15) if not i == 13 -%}
|
||||||
|
"p[7].b[{{i}}].pco={{selectedfg}}",{%- endfor -%}
|
||||||
|
{%- if alarmstate == "disarmed" -%}
|
||||||
|
"p[7].b[13].pco={{selectedfg}}",
|
||||||
|
"p[7].b[15].pco={{selectedfg}}"
|
||||||
|
{%- else -%}
|
||||||
|
"p[7].b[13].pco2={{selectedfg}}",
|
||||||
|
"p[7].b[15].pco2={{selectedfg}}"
|
||||||
|
{%- endif -%}]
|
||||||
|
|
||||||
|
#########################################################################
|
||||||
|
# Theme: Apply selected background color on change
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ trigger.topic == selectedbgtopic }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: >-
|
||||||
|
[{%- for i in range(4,15) if not i == 13 -%}
|
||||||
|
"p[7].b[{{i}}].bco={{selectedbg}}",{%- endfor -%}
|
||||||
|
{%- if alarmstate == "disarmed" -%}
|
||||||
|
"p[7].b[13].bco={{selectedbg}}",
|
||||||
|
"p[7].b[15].bco={{selectedbg}}"
|
||||||
|
{%- else -%}
|
||||||
|
"p[7].b[13].bco2={{selectedbg}}",
|
||||||
|
"p[7].b[15].bco2={{selectedbg}}"
|
||||||
|
{%- endif -%}]
|
||||||
|
|
||||||
|
#########################################################################
|
||||||
|
# Theme: Apply unselected foreground color on change
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ trigger.topic == unselectedfgtopic }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: >-
|
||||||
|
[{%- for i in range(4,15) if not i == 13 -%}
|
||||||
|
"p[7].b[{{i}}].pco2={{unselectedfg}}",{%- endfor -%}
|
||||||
|
{%- if alarmstate == "disarmed" -%}
|
||||||
|
"p[7].b[13].pco2={{unselectedfg}}",
|
||||||
|
"p[7].b[15].pco2={{unselectedfg}}"
|
||||||
|
{%- else -%}
|
||||||
|
"p[7].b[13].pco={{unselectedfg}}",
|
||||||
|
"p[7].b[15].pco={{unselectedfg}}"
|
||||||
|
{%- endif -%}]
|
||||||
|
|
||||||
|
#########################################################################
|
||||||
|
# Theme: Apply unselected background color on change
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ trigger.topic == unselectedbgtopic }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: >-
|
||||||
|
[{%- for i in range(4,15) if not i == 13 -%}
|
||||||
|
"p[7].b[{{i}}].bco2={{unselectedbg}}",{%- endfor -%}
|
||||||
|
{%- if alarmstate == "disarmed" -%}
|
||||||
|
"p[7].b[13].bco2={{unselectedbg}}",
|
||||||
|
"p[7].b[15].bco2={{unselectedbg}}"
|
||||||
|
{%- else -%}
|
||||||
|
"p[7].b[13].bco={{unselectedbg}}",
|
||||||
|
"p[7].b[15].bco={{unselectedbg}}"
|
||||||
|
{%- endif -%}]
|
332
Home_Assistant/blueprints/hasp_Display_Calendar_with_Icon.yaml
Normal file
@ -0,0 +1,332 @@
|
|||||||
|
blueprint:
|
||||||
|
name: "HASP p[x].b[y] displays the month + date with a calendar icon"
|
||||||
|
description: |
|
||||||
|
|
||||||
|
# Description
|
||||||
|
|
||||||
|
A HASP button displays month + date on the right with a calendar icon on the left.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## HASP Page and Button Reference
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
This automation is designed to work with the full-width buttons found on pages 1-3
|
||||||
|
|
||||||
|
| Pages 1-3 |
|
||||||
|
|-----------|
|
||||||
|
|  |
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
source_url: "https://github.com/HASwitchPlate/Blueprints/blob/main/hasp_Display_Calendar_with_Icon.yaml"
|
||||||
|
domain: automation
|
||||||
|
input:
|
||||||
|
haspdevice:
|
||||||
|
name: "HASP Device"
|
||||||
|
description: "Select the HASP device"
|
||||||
|
selector:
|
||||||
|
device:
|
||||||
|
integration: mqtt
|
||||||
|
manufacturer: "HASwitchPlate"
|
||||||
|
model: "HASPone v1.0.0"
|
||||||
|
hasppage:
|
||||||
|
name: "HASP Page"
|
||||||
|
description: "Select the HASP page (1-3) for the calendar. Refer to the HASP Page and Button reference above."
|
||||||
|
default: 1
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 1
|
||||||
|
max: 3
|
||||||
|
mode: slider
|
||||||
|
haspbutton:
|
||||||
|
name: "HASP Button"
|
||||||
|
description: "Select the HASP button (4-7) for the calendar. Refer to the HASP Page and Button reference above."
|
||||||
|
default: 4
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 4
|
||||||
|
max: 7
|
||||||
|
mode: slider
|
||||||
|
|
||||||
|
mode: parallel
|
||||||
|
max_exceeded: silent
|
||||||
|
|
||||||
|
variables:
|
||||||
|
haspdevice: !input haspdevice
|
||||||
|
haspname: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^sensor\.") -%}
|
||||||
|
{{- entity|regex_replace(find="^sensor\.", replace="", ignorecase=true)|regex_replace(find="_sensor(?:_\d+|)$", replace="", ignorecase=true) -}}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
hasppage: !input hasppage
|
||||||
|
haspbutton: !input haspbutton
|
||||||
|
haspobject: '{{ "p[" ~ hasppage ~ "].b[" ~ haspbutton ~ "]" }}'
|
||||||
|
commandtopic: '{{ "hasp/" ~ haspname ~ "/command/" ~ haspobject }}'
|
||||||
|
jsontopic: '{{ "hasp/" ~ haspname ~ "/state/json" }}'
|
||||||
|
jsoncommandtopic: '{{ "hasp/" ~ haspname ~ "/command/json" }}'
|
||||||
|
selectedfgtopic: '{{ "hasp/" ~ haspname ~ "/light/selectedforegroundcolor/rgb" }}'
|
||||||
|
selectedbgtopic: '{{ "hasp/" ~ haspname ~ "/light/selectedbackgroundcolor/rgb" }}'
|
||||||
|
unselectedfgtopic: '{{ "hasp/" ~ haspname ~ "/light/unselectedforegroundcolor/rgb" }}'
|
||||||
|
unselectedbgtopic: '{{ "hasp/" ~ haspname ~ "/light/unselectedbackgroundcolor/rgb" }}'
|
||||||
|
activepage: >-
|
||||||
|
{%- set activepage = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^number\..*_active_page(?:_\d+|)$") -%}
|
||||||
|
{%- set activepage.entity=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{% if states(activepage.entity)|lower == "none" %}-1{% else %}{{ states(activepage.entity) | int }}{% endif %}
|
||||||
|
selectedfg: >-
|
||||||
|
{%- set color = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_selected_foreground_color(?:_\d+|)$") -%}
|
||||||
|
{%- set color.source=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- set brightness = state_attr(color.source, "brightness")|int / 255 -%}
|
||||||
|
{%- set red=(state_attr(color.source, "rgb_color")[0] * brightness)|int -%}
|
||||||
|
{%- set green=(state_attr(color.source, "rgb_color")[1] * brightness)|int -%}
|
||||||
|
{%- set blue=(state_attr(color.source, "rgb_color")[2] * brightness)|int -%}
|
||||||
|
{{ (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int }}
|
||||||
|
selectedbg: >-
|
||||||
|
{%- set color = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_selected_background_color(?:_\d+|)$") -%}
|
||||||
|
{%- set color.source=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- set brightness = state_attr(color.source, "brightness")|int / 255 -%}
|
||||||
|
{%- set red=(state_attr(color.source, "rgb_color")[0] * brightness)|int -%}
|
||||||
|
{%- set green=(state_attr(color.source, "rgb_color")[1] * brightness)|int -%}
|
||||||
|
{%- set blue=(state_attr(color.source, "rgb_color")[2] * brightness)|int -%}
|
||||||
|
{{ (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int }}
|
||||||
|
unselectedfg: >-
|
||||||
|
{%- set color = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_unselected_foreground_color(?:_\d+|)$") -%}
|
||||||
|
{%- set color.source=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- set brightness = state_attr(color.source, "brightness")|int / 255 -%}
|
||||||
|
{%- set red=(state_attr(color.source, "rgb_color")[0] * brightness)|int -%}
|
||||||
|
{%- set green=(state_attr(color.source, "rgb_color")[1] * brightness)|int -%}
|
||||||
|
{%- set blue=(state_attr(color.source, "rgb_color")[2] * brightness)|int -%}
|
||||||
|
{{ (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int }}
|
||||||
|
unselectedbg: >-
|
||||||
|
{%- set color = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_unselected_background_color(?:_\d+|)$") -%}
|
||||||
|
{%- set color.source=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- set brightness = state_attr(color.source, "brightness")|int / 255 -%}
|
||||||
|
{%- set red=(state_attr(color.source, "rgb_color")[0] * brightness)|int -%}
|
||||||
|
{%- set green=(state_attr(color.source, "rgb_color")[1] * brightness)|int -%}
|
||||||
|
{%- set blue=(state_attr(color.source, "rgb_color")[2] * brightness)|int -%}
|
||||||
|
{{ (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int }}
|
||||||
|
text: '{{(now().strftime("%b "))~now().day}}'
|
||||||
|
font: 9
|
||||||
|
ypos: "{{(haspbutton|int - 4) * 67 + 2}}" # calculate the top pixel position based on the selected button
|
||||||
|
xpos: 0
|
||||||
|
icon: ""
|
||||||
|
iconwidth: 50
|
||||||
|
iconheight: 65
|
||||||
|
iconfont: 8
|
||||||
|
|
||||||
|
trigger_variables:
|
||||||
|
haspdevice: !input haspdevice
|
||||||
|
haspname: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^sensor\.") -%}
|
||||||
|
{{- entity|regex_replace(find="^sensor\.", replace="", ignorecase=true)|regex_replace(find="_sensor(?:_\d+|)$", replace="", ignorecase=true) -}}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
haspsensor: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^sensor\..+_sensor(?:_\d+|)$") -%}
|
||||||
|
{{ entity }}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
jsontopic: '{{ "hasp/" ~ haspname ~ "/state/json" }}'
|
||||||
|
selectedfgtopic: '{{ "hasp/" ~ haspname ~ "/light/selectedforegroundcolor/rgb" }}'
|
||||||
|
selectedbgtopic: '{{ "hasp/" ~ haspname ~ "/light/selectedbackgroundcolor/rgb" }}'
|
||||||
|
unselectedfgtopic: '{{ "hasp/" ~ haspname ~ "/light/unselectedforegroundcolor/rgb" }}'
|
||||||
|
unselectedbgtopic: '{{ "hasp/" ~ haspname ~ "/light/unselectedbackgroundcolor/rgb" }}'
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
- platform: time
|
||||||
|
at: "00:00:00"
|
||||||
|
- platform: homeassistant
|
||||||
|
event: start
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{jsontopic}}"
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{selectedfgtopic}}"
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{selectedbgtopic}}"
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{unselectedfgtopic}}"
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{unselectedbgtopic}}"
|
||||||
|
|
||||||
|
condition:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ is_state(haspsensor, 'ON') }}"
|
||||||
|
|
||||||
|
action:
|
||||||
|
- choose:
|
||||||
|
#########################################################################
|
||||||
|
# RUN ACTIONS or Home Assistant Startup or HASP Connect
|
||||||
|
# Apply styles, place text, and then place icon if our target page is currently active
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: >-
|
||||||
|
{{-
|
||||||
|
(trigger is not defined)
|
||||||
|
or
|
||||||
|
((trigger.platform == 'homeassistant') and (trigger.event == 'start'))
|
||||||
|
or
|
||||||
|
((trigger.platform == 'mqtt') and (trigger.topic == jsontopic) and (trigger.payload_json.event == 'online'))
|
||||||
|
-}}
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: >-
|
||||||
|
["{{haspobject}}.font={{font}}",
|
||||||
|
"{{haspobject}}.xcen=2",
|
||||||
|
"{{haspobject}}.ycen=1",
|
||||||
|
"{{haspobject}}.pco={{selectedfg}}",
|
||||||
|
"{{haspobject}}.bco={{selectedbg}}",
|
||||||
|
"{{haspobject}}.pco2={{unselectedfg}}",
|
||||||
|
"{{haspobject}}.bco2={{unselectedbg}}",
|
||||||
|
"{{haspobject}}.txt=\"{{text}} \""
|
||||||
|
{%- if activepage|int == hasppage|int -%}
|
||||||
|
,"delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{selectedfg}},0,1,1,3,\"{{icon}}\""
|
||||||
|
{%- endif -%}]
|
||||||
|
#########################################################################
|
||||||
|
# Update the calendar text every day at midnight. If the selected page is currently active, also place the icon.
|
||||||
|
- conditions: #
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ trigger.platform == "time" }}'
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: >-
|
||||||
|
["{{haspobject}}.txt=\"{{text}} \""
|
||||||
|
{%- if activepage|int == hasppage|int -%}
|
||||||
|
,"delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{selectedfg}},0,1,1,3,\"{{icon}}\""
|
||||||
|
{%- endif -%}]
|
||||||
|
#########################################################################
|
||||||
|
# Catch MQTT events
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ trigger.platform == "mqtt" }}'
|
||||||
|
sequence:
|
||||||
|
- choose:
|
||||||
|
#########################################################################
|
||||||
|
# Catch incoming JSON messages
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ (trigger.topic == jsontopic) and trigger.payload_json is defined }}"
|
||||||
|
sequence:
|
||||||
|
- choose:
|
||||||
|
#########################################################################
|
||||||
|
# Icon overlay
|
||||||
|
- conditions: # Somebody pressed our button which hides the overlaid icon. Put it back.
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ (trigger.topic == jsontopic ) and (trigger.payload_json.event == haspobject ) and (trigger.payload_json.value == "OFF") }}'
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{selectedfg}},0,1,1,3,\"{{icon}}\""]'
|
||||||
|
- conditions: # Page changed to our page, so place the icon on the screen.
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ (trigger.topic == jsontopic ) and (trigger.payload_json.event == "page" ) and (trigger.payload_json.value == hasppage|int) }}'
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{selectedfg}},0,1,1,3,\"{{icon}}\""]'
|
||||||
|
#########################################################################
|
||||||
|
# Theme: Apply selected foreground color when it changes.
|
||||||
|
# Any change to the button will remove the overlaid icon.
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ trigger.topic == selectedfgtopic }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{commandtopic}}.pco"
|
||||||
|
payload: "{{trigger.payload}}"
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ activepage|int == hasppage|int }}"
|
||||||
|
- delay: "00:00:00.5"
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{trigger.payload}},0,1,1,3,\"{{icon}}\""]'
|
||||||
|
#########################################################################
|
||||||
|
# Theme: Apply selected background color on change
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ trigger.topic == selectedbgtopic }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{commandtopic}}.bco"
|
||||||
|
payload: "{{trigger.payload}}"
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ activepage|int == hasppage|int }}"
|
||||||
|
- delay: "00:00:00.5"
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{selectedfg}},0,1,1,3,\"{{icon}}\""]'
|
||||||
|
#########################################################################
|
||||||
|
# Theme: Apply unselected foreground color on change
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ trigger.topic == unselectedfgtopic }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{commandtopic}}.pco2"
|
||||||
|
payload: "{{trigger.payload}}"
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ activepage|int == hasppage|int }}"
|
||||||
|
- delay: "00:00:00.5"
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{selectedfg}},0,1,1,3,\"{{icon}}\""]'
|
||||||
|
#########################################################################
|
||||||
|
# Theme: Apply unselected background color on change
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ trigger.topic == unselectedbgtopic }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{commandtopic}}.bco2"
|
||||||
|
payload: "{{trigger.payload}}"
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ activepage|int == hasppage|int }}"
|
||||||
|
- delay: "00:00:00.5"
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{selectedfg}},0,1,1,3,\"{{icon}}\""]'
|
362
Home_Assistant/blueprints/hasp_Display_Clock.yaml
Normal file
@ -0,0 +1,362 @@
|
|||||||
|
blueprint:
|
||||||
|
name: "HASP p[x].b[y] displays a clock"
|
||||||
|
description: |
|
||||||
|
|
||||||
|
# Description
|
||||||
|
|
||||||
|
A HASP button displays a clock with configurable text options.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## HASP Page and Button Reference
|
||||||
|
|
||||||
|
The images below show each available HASP page along with the layout of available button objects.
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
| Page 0 | Pages 1-3 | Pages 4-5 |
|
||||||
|
|--------|-----------|-----------|
|
||||||
|
|  |  |  |
|
||||||
|
|
||||||
|
| Page 6 | Page 7 | Page 8 |
|
||||||
|
|--------|--------|--------|
|
||||||
|
|  |  |  |
|
||||||
|
|
||||||
|
| Page 9 | Page 10 | Page 11 |
|
||||||
|
|--------|---------|---------|
|
||||||
|
|  |  | 
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
## HASP Font Reference
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
The Nextion display supports monospaced and proportional fonts. For monospace fonts, the HASP project includes [Consolas](https://docs.microsoft.com/en-us/typography/font-list/consolas) monospace in 4 sizes, [Webdings](https://en.wikipedia.org/wiki/Webdings#Character_set) in 1 size, and [Google's "Noto Sans"](https://github.com/googlefonts/noto-fonts) proportional in 5 sizes
|
||||||
|
|
||||||
|
| Font | Name | Characters per line | Lines per button |
|
||||||
|
| :--- | :---------------- | :-------------------| :--------------- |
|
||||||
|
| 0 | Consolas 24 | 20 characters | 2 lines |
|
||||||
|
| 1 | Consolas 32 | 15 characters | 2 lines |
|
||||||
|
| 2 | Consolas 48 | 10 characters | 1 line |
|
||||||
|
| 3 | Consolas 80 | 6 characters | 1 line |
|
||||||
|
| 4 | Webdings 56 | 8 characters | 1 line |
|
||||||
|
| 5 | Noto Sans 24 | Proportional | 2 lines |
|
||||||
|
| 6 | Noto Sans 32 | Proportional | 2 lines |
|
||||||
|
| 7 | Noto Sans 48 | Proportional | 1 line |
|
||||||
|
| 8 | Noto Sans 64 | Proportional | 1 line |
|
||||||
|
| 9 | Noto Sans 80 | Proportional | 1 line |
|
||||||
|
| 10 | Noto Sans Bold 80 | Proportional | 1 line |
|
||||||
|
|
||||||
|
### Icons
|
||||||
|
|
||||||
|
Fonts 5-10 also include [1400+ icons which you can copy and paste from here](https://htmlpreview.github.io/?https://github.com/aderusha/HASwitchPlate/blob/master/Documentation/Images/hasp-fontawesome5.html)
|
||||||
|
|
||||||
|
### Font examples
|
||||||
|
|
||||||
|
  
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
source_url: "https://github.com/HASwitchPlate/Blueprints/blob/main/hasp_Display_Clock.yaml"
|
||||||
|
domain: automation
|
||||||
|
input:
|
||||||
|
haspdevice:
|
||||||
|
name: "HASP Device"
|
||||||
|
description: "Select the HASP device"
|
||||||
|
selector:
|
||||||
|
device:
|
||||||
|
integration: mqtt
|
||||||
|
manufacturer: "HASwitchPlate"
|
||||||
|
model: "HASPone v1.0.0"
|
||||||
|
hasppage:
|
||||||
|
name: "HASP Page"
|
||||||
|
description: "Select the HASP page (1-11) for the clock. Refer to the HASP Page and Button reference above."
|
||||||
|
default: 1
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 1
|
||||||
|
max: 11
|
||||||
|
mode: slider
|
||||||
|
haspbutton:
|
||||||
|
name: "HASP Button"
|
||||||
|
description: "Select the HASP button (4-15) for the clock. Refer to the HASP Page and Button reference above."
|
||||||
|
default: 4
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 4
|
||||||
|
max: 15
|
||||||
|
mode: slider
|
||||||
|
font_select:
|
||||||
|
name: "Clock Font"
|
||||||
|
description: "Select the font for the clock. Refer to the HASP Font reference above."
|
||||||
|
default: "8 - Noto Sans 64"
|
||||||
|
selector:
|
||||||
|
select:
|
||||||
|
options:
|
||||||
|
- "0 - Consolas 24"
|
||||||
|
- "1 - Consolas 32"
|
||||||
|
- "2 - Consolas 48"
|
||||||
|
- "3 - Consolas 80"
|
||||||
|
- "4 - Webdings 56"
|
||||||
|
- "5 - Noto Sans 24"
|
||||||
|
- "6 - Noto Sans 32"
|
||||||
|
- "7 - Noto Sans 48"
|
||||||
|
- "8 - Noto Sans 64"
|
||||||
|
- "9 - Noto Sans 80"
|
||||||
|
- "10 - Noto Sans Bold 80"
|
||||||
|
xcen_select:
|
||||||
|
name: "Text horizontal alignment"
|
||||||
|
description: "Horizontal text alignment: 0=Left 1=Center 2=Right"
|
||||||
|
default: "1 - Centered"
|
||||||
|
selector:
|
||||||
|
select:
|
||||||
|
options:
|
||||||
|
- "0 - Left aligned"
|
||||||
|
- "1 - Centered"
|
||||||
|
- "2 - Right aligned"
|
||||||
|
ycen_select:
|
||||||
|
name: "Text vertical alignment"
|
||||||
|
description: "Vertical text alignment: 0=Top 1=Center 2=Bottom"
|
||||||
|
default: "1 - Centered"
|
||||||
|
selector:
|
||||||
|
select:
|
||||||
|
options:
|
||||||
|
- "0 - Top aligned"
|
||||||
|
- "1 - Centered"
|
||||||
|
- "2 - Bottom aligned"
|
||||||
|
hour24:
|
||||||
|
name: "24 hour clock display"
|
||||||
|
default: false
|
||||||
|
selector:
|
||||||
|
boolean:
|
||||||
|
ampm:
|
||||||
|
name: "AM/PM suffix"
|
||||||
|
default: false
|
||||||
|
selector:
|
||||||
|
boolean:
|
||||||
|
wrap:
|
||||||
|
name: "Text wrap"
|
||||||
|
default: false
|
||||||
|
description: "Enable line-wrapping text if too long to fit in the button."
|
||||||
|
selector:
|
||||||
|
boolean:
|
||||||
|
|
||||||
|
mode: parallel
|
||||||
|
max_exceeded: silent
|
||||||
|
|
||||||
|
variables:
|
||||||
|
haspdevice: !input haspdevice
|
||||||
|
haspname: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^sensor\.") -%}
|
||||||
|
{{- entity|regex_replace(find="^sensor\.", replace="", ignorecase=true)|regex_replace(find="_sensor(?:_\d+|)$", replace="", ignorecase=true) -}}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
haspsensor: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^sensor\..+_sensor(?:_\d+|)$") -%}
|
||||||
|
{{ entity }}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
hasppage: !input hasppage
|
||||||
|
haspbutton: !input haspbutton
|
||||||
|
font_select: !input font_select
|
||||||
|
font: '{{ font_select.split(" - ")[0] | int }}'
|
||||||
|
xcen_select: !input xcen_select
|
||||||
|
xcen: '{{ xcen_select.split(" - ")[0] | int }}'
|
||||||
|
ycen_select: !input ycen_select
|
||||||
|
ycen: '{{ ycen_select.split(" - ")[0] | int }}'
|
||||||
|
hour24: !input hour24
|
||||||
|
ampm: !input ampm
|
||||||
|
wrap: !input wrap
|
||||||
|
isbr: "{% if wrap == true %}1{% else %}0{% endif %}"
|
||||||
|
haspobject: '{{ "p[" ~ hasppage ~ "].b[" ~ haspbutton ~ "]" }}'
|
||||||
|
commandtopic: '{{ "hasp/" ~ haspname ~ "/command/" ~ haspobject }}'
|
||||||
|
jsontopic: '{{ "hasp/" ~ haspname ~ "/state/json" }}'
|
||||||
|
statetopic: '{{ "hasp/" ~ haspname ~ "/state" }}'
|
||||||
|
jsoncommandtopic: '{{ "hasp/" ~ haspname ~ "/command/json" }}'
|
||||||
|
text: '{%- if hour24 == true -%}{%- set hourformat="%-H" -%}{%- else %}{%- set hourformat="%I" -%}{%- endif -%}{{(now().strftime(hourformat)|int)~now().strftime(":%M")}} {% if ampm == true %}{{now().strftime("%p")|lower}}{% endif %}'
|
||||||
|
selectedfgtopic: '{{ "hasp/" ~ haspname ~ "/light/selectedforegroundcolor/rgb" }}'
|
||||||
|
selectedbgtopic: '{{ "hasp/" ~ haspname ~ "/light/selectedbackgroundcolor/rgb" }}'
|
||||||
|
unselectedfgtopic: '{{ "hasp/" ~ haspname ~ "/light/unselectedforegroundcolor/rgb" }}'
|
||||||
|
unselectedbgtopic: '{{ "hasp/" ~ haspname ~ "/light/unselectedbackgroundcolor/rgb" }}'
|
||||||
|
selectedfg: >-
|
||||||
|
{%- set color = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_selected_foreground_color(?:_\d+|)$") -%}
|
||||||
|
{%- set color.source=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- set brightness = state_attr(color.source, "brightness")|int / 255 -%}
|
||||||
|
{%- set red=(state_attr(color.source, "rgb_color")[0] * brightness)|int -%}
|
||||||
|
{%- set green=(state_attr(color.source, "rgb_color")[1] * brightness)|int -%}
|
||||||
|
{%- set blue=(state_attr(color.source, "rgb_color")[2] * brightness)|int -%}
|
||||||
|
{{ (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int }}
|
||||||
|
selectedbg: >-
|
||||||
|
{%- set color = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_selected_background_color(?:_\d+|)$") -%}
|
||||||
|
{%- set color.source=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- set brightness = state_attr(color.source, "brightness")|int / 255 -%}
|
||||||
|
{%- set red=(state_attr(color.source, "rgb_color")[0] * brightness)|int -%}
|
||||||
|
{%- set green=(state_attr(color.source, "rgb_color")[1] * brightness)|int -%}
|
||||||
|
{%- set blue=(state_attr(color.source, "rgb_color")[2] * brightness)|int -%}
|
||||||
|
{{ (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int }}
|
||||||
|
unselectedfg: >-
|
||||||
|
{%- set color = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_unselected_foreground_color(?:_\d+|)$") -%}
|
||||||
|
{%- set color.source=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- set brightness = state_attr(color.source, "brightness")|int / 255 -%}
|
||||||
|
{%- set red=(state_attr(color.source, "rgb_color")[0] * brightness)|int -%}
|
||||||
|
{%- set green=(state_attr(color.source, "rgb_color")[1] * brightness)|int -%}
|
||||||
|
{%- set blue=(state_attr(color.source, "rgb_color")[2] * brightness)|int -%}
|
||||||
|
{{ (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int }}
|
||||||
|
unselectedbg: >-
|
||||||
|
{%- set color = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_unselected_background_color(?:_\d+|)$") -%}
|
||||||
|
{%- set color.source=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- set brightness = state_attr(color.source, "brightness")|int / 255 -%}
|
||||||
|
{%- set red=(state_attr(color.source, "rgb_color")[0] * brightness)|int -%}
|
||||||
|
{%- set green=(state_attr(color.source, "rgb_color")[1] * brightness)|int -%}
|
||||||
|
{%- set blue=(state_attr(color.source, "rgb_color")[2] * brightness)|int -%}
|
||||||
|
{{ (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int }}
|
||||||
|
|
||||||
|
trigger_variables:
|
||||||
|
haspdevice: !input haspdevice
|
||||||
|
haspname: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^sensor\.") -%}
|
||||||
|
{{- entity|regex_replace(find="^sensor\.", replace="", ignorecase=true)|regex_replace(find="_sensor(?:_\d+|)$", replace="", ignorecase=true) -}}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
haspsensor: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^sensor\..+_sensor(?:_\d+|)$") -%}
|
||||||
|
{{ entity }}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
jsontopic: '{{ "hasp/" ~ haspname ~ "/state/json" }}'
|
||||||
|
selectedfgtopic: '{{ "hasp/" ~ haspname ~ "/light/selectedforegroundcolor/rgb" }}'
|
||||||
|
selectedbgtopic: '{{ "hasp/" ~ haspname ~ "/light/selectedbackgroundcolor/rgb" }}'
|
||||||
|
unselectedfgtopic: '{{ "hasp/" ~ haspname ~ "/light/unselectedforegroundcolor/rgb" }}'
|
||||||
|
unselectedbgtopic: '{{ "hasp/" ~ haspname ~ "/light/unselectedbackgroundcolor/rgb" }}'
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
- platform: time_pattern
|
||||||
|
seconds: 0
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{jsontopic}}"
|
||||||
|
payload: "online"
|
||||||
|
value_template: "{{ value_json.event }}"
|
||||||
|
- platform: homeassistant
|
||||||
|
event: start
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{selectedfgtopic}}"
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{selectedbgtopic}}"
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{unselectedfgtopic}}"
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{unselectedbgtopic}}"
|
||||||
|
|
||||||
|
|
||||||
|
condition:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ is_state(haspsensor, 'ON') }}"
|
||||||
|
|
||||||
|
action:
|
||||||
|
- choose:
|
||||||
|
#########################################################################
|
||||||
|
# RUN ACTIONS or Home Assistant Startup or HASP Connect
|
||||||
|
# Display clock and apply text style
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: >-
|
||||||
|
{{-
|
||||||
|
(trigger is not defined)
|
||||||
|
or
|
||||||
|
((trigger.platform == 'homeassistant') and (trigger.event == 'start'))
|
||||||
|
or
|
||||||
|
((trigger.platform == 'mqtt') and (trigger.topic == jsontopic) and (trigger.payload_json.event == 'online'))
|
||||||
|
-}}
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: >-
|
||||||
|
["{{haspobject}}.font={{font}}",
|
||||||
|
"{{haspobject}}.xcen={{xcen}}",
|
||||||
|
"{{haspobject}}.ycen={{ycen}}",
|
||||||
|
"{{haspobject}}.isbr={{isbr}}",
|
||||||
|
"{{haspobject}}.pco={{selectedfg}}",
|
||||||
|
"{{haspobject}}.bco={{selectedbg}}",
|
||||||
|
"{{haspobject}}.pco2={{unselectedfg}}",
|
||||||
|
"{{haspobject}}.bco2={{unselectedbg}}",
|
||||||
|
"{{haspobject}}.txt=\"{{text}}\""]
|
||||||
|
#########################################################################
|
||||||
|
# Update the clock text
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ trigger.platform == 'time_pattern' }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{commandtopic}}.txt"
|
||||||
|
payload: '"{{text}}"'
|
||||||
|
#########################################################################
|
||||||
|
# Theme: Apply selected foreground color
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ trigger.platform == 'mqtt' and trigger.topic == selectedfgtopic }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{commandtopic}}.pco"
|
||||||
|
payload: "{{trigger.payload}}"
|
||||||
|
#########################################################################
|
||||||
|
# Theme: Apply selected background color
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ trigger.platform == 'mqtt' and trigger.topic == selectedbgtopic }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{commandtopic}}.bco"
|
||||||
|
payload: "{{trigger.payload}}"
|
||||||
|
#########################################################################
|
||||||
|
# Theme: Apply unselected foreground color
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ trigger.platform == 'mqtt' and trigger.topic == unselectedfgtopic }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{commandtopic}}.pco2"
|
||||||
|
payload: "{{trigger.payload}}"
|
||||||
|
#########################################################################
|
||||||
|
# Theme: Apply unselected background color
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ trigger.platform == 'mqtt' and trigger.topic == unselectedbgtopic }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{commandtopic}}.bco2"
|
||||||
|
payload: "{{trigger.payload}}"
|
335
Home_Assistant/blueprints/hasp_Display_Clock_with_Icon.yaml
Normal file
@ -0,0 +1,335 @@
|
|||||||
|
blueprint:
|
||||||
|
name: "HASP p[x].b[y] displays a clock with a clock icon"
|
||||||
|
description: |
|
||||||
|
|
||||||
|
# Description
|
||||||
|
|
||||||
|
A HASP button displays a clock on the right with a clock icon on the left.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## HASP Page and Button reference
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
This automation is designed to work with the full-width buttons found on pages 1-3
|
||||||
|
|
||||||
|
| Pages 1-3 |
|
||||||
|
|-----------|
|
||||||
|
|  |
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
source_url: "https://github.com/HASwitchPlate/Blueprints/blob/main/hasp_Display_Clock_with_Icon.yaml"
|
||||||
|
domain: automation
|
||||||
|
input:
|
||||||
|
haspdevice:
|
||||||
|
name: "HASP Device"
|
||||||
|
description: "Select the HASP device"
|
||||||
|
selector:
|
||||||
|
device:
|
||||||
|
integration: mqtt
|
||||||
|
manufacturer: "HASwitchPlate"
|
||||||
|
model: "HASPone v1.0.0"
|
||||||
|
hasppage:
|
||||||
|
name: "HASP Page"
|
||||||
|
description: "Select the HASP page (1-3) for the clock. Refer to the HASP Page and Button reference above."
|
||||||
|
default: 1
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 1
|
||||||
|
max: 3
|
||||||
|
mode: slider
|
||||||
|
haspbutton:
|
||||||
|
name: "HASP Button"
|
||||||
|
description: "Select the HASP button (4-7) for the clock. Refer to the HASP Page and Button reference above."
|
||||||
|
default: 4
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 4
|
||||||
|
max: 7
|
||||||
|
mode: slider
|
||||||
|
hour24:
|
||||||
|
name: "24 hour clock display"
|
||||||
|
default: false
|
||||||
|
selector:
|
||||||
|
boolean:
|
||||||
|
|
||||||
|
mode: parallel
|
||||||
|
max_exceeded: silent
|
||||||
|
|
||||||
|
variables:
|
||||||
|
haspdevice: !input haspdevice
|
||||||
|
haspname: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^sensor\.") -%}
|
||||||
|
{{- entity|regex_replace(find="^sensor\.", replace="", ignorecase=true)|regex_replace(find="_sensor(?:_\d+|)$", replace="", ignorecase=true) -}}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
hasppage: !input hasppage
|
||||||
|
haspbutton: !input haspbutton
|
||||||
|
hour24: !input hour24
|
||||||
|
haspobject: '{{ "p[" ~ hasppage ~ "].b[" ~ haspbutton ~ "]" }}'
|
||||||
|
commandtopic: '{{ "hasp/" ~ haspname ~ "/command/" ~ haspobject }}'
|
||||||
|
jsontopic: '{{ "hasp/" ~ haspname ~ "/state/json" }}'
|
||||||
|
jsoncommandtopic: '{{ "hasp/" ~ haspname ~ "/command/json" }}'
|
||||||
|
activepage: >-
|
||||||
|
{%- set activepage = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^number\..*_active_page(?:_\d+|)$") -%}
|
||||||
|
{%- set activepage.entity=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{% if states(activepage.entity)|lower == "none" %}-1{% else %}{{ states(activepage.entity) | int }}{% endif %}
|
||||||
|
selectedfgtopic: '{{ "hasp/" ~ haspname ~ "/light/selectedforegroundcolor/rgb" }}'
|
||||||
|
selectedbgtopic: '{{ "hasp/" ~ haspname ~ "/light/selectedbackgroundcolor/rgb" }}'
|
||||||
|
unselectedfgtopic: '{{ "hasp/" ~ haspname ~ "/light/unselectedforegroundcolor/rgb" }}'
|
||||||
|
unselectedbgtopic: '{{ "hasp/" ~ haspname ~ "/light/unselectedbackgroundcolor/rgb" }}'
|
||||||
|
selectedfg: >-
|
||||||
|
{%- set color = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_selected_foreground_color(?:_\d+|)$") -%}
|
||||||
|
{%- set color.source=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- set brightness = state_attr(color.source, "brightness")|int / 255 -%}
|
||||||
|
{%- set red=(state_attr(color.source, "rgb_color")[0] * brightness)|int -%}
|
||||||
|
{%- set green=(state_attr(color.source, "rgb_color")[1] * brightness)|int -%}
|
||||||
|
{%- set blue=(state_attr(color.source, "rgb_color")[2] * brightness)|int -%}
|
||||||
|
{{ (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int }}
|
||||||
|
selectedbg: >-
|
||||||
|
{%- set color = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_selected_background_color(?:_\d+|)$") -%}
|
||||||
|
{%- set color.source=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- set brightness = state_attr(color.source, "brightness")|int / 255 -%}
|
||||||
|
{%- set red=(state_attr(color.source, "rgb_color")[0] * brightness)|int -%}
|
||||||
|
{%- set green=(state_attr(color.source, "rgb_color")[1] * brightness)|int -%}
|
||||||
|
{%- set blue=(state_attr(color.source, "rgb_color")[2] * brightness)|int -%}
|
||||||
|
{{ (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int }}
|
||||||
|
unselectedfg: >-
|
||||||
|
{%- set color = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_unselected_foreground_color(?:_\d+|)$") -%}
|
||||||
|
{%- set color.source=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- set brightness = state_attr(color.source, "brightness")|int / 255 -%}
|
||||||
|
{%- set red=(state_attr(color.source, "rgb_color")[0] * brightness)|int -%}
|
||||||
|
{%- set green=(state_attr(color.source, "rgb_color")[1] * brightness)|int -%}
|
||||||
|
{%- set blue=(state_attr(color.source, "rgb_color")[2] * brightness)|int -%}
|
||||||
|
{{ (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int }}
|
||||||
|
unselectedbg: >-
|
||||||
|
{%- set color = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_unselected_background_color(?:_\d+|)$") -%}
|
||||||
|
{%- set color.source=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- set brightness = state_attr(color.source, "brightness")|int / 255 -%}
|
||||||
|
{%- set red=(state_attr(color.source, "rgb_color")[0] * brightness)|int -%}
|
||||||
|
{%- set green=(state_attr(color.source, "rgb_color")[1] * brightness)|int -%}
|
||||||
|
{%- set blue=(state_attr(color.source, "rgb_color")[2] * brightness)|int -%}
|
||||||
|
{{ (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int }}
|
||||||
|
text: '{%- if hour24 == true -%}{%- set hourformat="%-H" -%}{%- else %}{%- set hourformat="%I" -%}{%- endif -%}{{(now().strftime(hourformat)|int)~now().strftime(":%M")}}'
|
||||||
|
font: 10
|
||||||
|
ypos: "{{(haspbutton|int - 4) * 67 + 2}}" # calculate the top pixel position based on the selected button
|
||||||
|
xpos: 0
|
||||||
|
icon: ""
|
||||||
|
iconwidth: 50
|
||||||
|
iconheight: 65
|
||||||
|
iconfont: 8
|
||||||
|
|
||||||
|
trigger_variables:
|
||||||
|
haspdevice: !input haspdevice
|
||||||
|
haspname: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^sensor\.") -%}
|
||||||
|
{{- entity|regex_replace(find="^sensor\.", replace="", ignorecase=true)|regex_replace(find="_sensor(?:_\d+|)$", replace="", ignorecase=true) -}}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
haspsensor: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^sensor\..+_sensor(?:_\d+|)$") -%}
|
||||||
|
{{ entity }}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
jsontopic: '{{ "hasp/" ~ haspname ~ "/state/json" }}'
|
||||||
|
selectedfgtopic: '{{ "hasp/" ~ haspname ~ "/light/selectedforegroundcolor/rgb" }}'
|
||||||
|
selectedbgtopic: '{{ "hasp/" ~ haspname ~ "/light/selectedbackgroundcolor/rgb" }}'
|
||||||
|
unselectedfgtopic: '{{ "hasp/" ~ haspname ~ "/light/unselectedforegroundcolor/rgb" }}'
|
||||||
|
unselectedbgtopic: '{{ "hasp/" ~ haspname ~ "/light/unselectedbackgroundcolor/rgb" }}'
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
- platform: time_pattern
|
||||||
|
seconds: 0
|
||||||
|
- platform: homeassistant
|
||||||
|
event: start
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{jsontopic}}"
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{selectedfgtopic}}"
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{selectedbgtopic}}"
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{unselectedfgtopic}}"
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{unselectedbgtopic}}"
|
||||||
|
|
||||||
|
condition:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ is_state(haspsensor, 'ON') }}"
|
||||||
|
|
||||||
|
action:
|
||||||
|
- choose:
|
||||||
|
#########################################################################
|
||||||
|
# RUN ACTIONS or Home Assistant Startup or HASP Connect
|
||||||
|
# Apply styles, place text, and then place icon if our target page is currently active
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: >-
|
||||||
|
{{-
|
||||||
|
(trigger is not defined)
|
||||||
|
or
|
||||||
|
((trigger.platform == 'homeassistant') and (trigger.event == 'start'))
|
||||||
|
or
|
||||||
|
((trigger.platform == 'mqtt') and (trigger.topic == jsontopic) and (trigger.payload_json.event == 'online'))
|
||||||
|
-}}
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: >-
|
||||||
|
["{{haspobject}}.font={{font}}",
|
||||||
|
"{{haspobject}}.xcen=2",
|
||||||
|
"{{haspobject}}.ycen=1",
|
||||||
|
"{{haspobject}}.pco={{selectedfg}}",
|
||||||
|
"{{haspobject}}.bco={{selectedbg}}",
|
||||||
|
"{{haspobject}}.pco2={{unselectedfg}}",
|
||||||
|
"{{haspobject}}.bco2={{unselectedbg}}",
|
||||||
|
"{{haspobject}}.txt=\"{{text}} \""
|
||||||
|
{%- if activepage|int == hasppage|int -%}
|
||||||
|
,"delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{selectedfg}},0,1,1,3,\"{{icon}}\""
|
||||||
|
{%- endif -%}]
|
||||||
|
#########################################################################
|
||||||
|
# Every minute, update the clock text. If the selected page is currently active, also place the icon.
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ trigger.platform == "time_pattern" }}'
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["{{haspobject}}.txt=\"{{text}} \""{%- if activepage|int == hasppage|int -%},"delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{selectedfg}},0,1,1,3,\"{{icon}}\""{%- endif -%}]'
|
||||||
|
|
||||||
|
#########################################################################
|
||||||
|
# Catch MQTT events
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ trigger.platform == "mqtt" }}'
|
||||||
|
sequence:
|
||||||
|
- choose:
|
||||||
|
#########################################################################
|
||||||
|
# Catch incoming JSON messages
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ (trigger.topic == jsontopic) and trigger.payload_json is defined }}"
|
||||||
|
sequence:
|
||||||
|
- choose:
|
||||||
|
#########################################################################
|
||||||
|
# Icon overlay
|
||||||
|
- conditions: # Somebody pressed our button which hides the overlaid icon. Put it back.
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ (trigger.topic == jsontopic ) and (trigger.payload_json.event == haspobject ) and (trigger.payload_json.value == "OFF") }}'
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{selectedfg}},0,1,1,3,\"{{icon}}\""]'
|
||||||
|
- conditions: # Page changed to our page, so place the icon on the screen.
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ (trigger.topic == jsontopic ) and (trigger.payload_json.event == "page" ) and (trigger.payload_json.value == hasppage|int) }}'
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{selectedfg}},0,1,1,3,\"{{icon}}\""]'
|
||||||
|
#########################################################################
|
||||||
|
# Theme: Apply selected foreground color when it changes.
|
||||||
|
# Any change to the button will remove the overlaid icon.
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ trigger.topic == selectedfgtopic }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{commandtopic}}.pco"
|
||||||
|
payload: "{{trigger.payload}}"
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ activepage|int == hasppage|int }}"
|
||||||
|
- delay: "00:00:00.5"
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{trigger.payload}},0,1,1,3,\"{{icon}}\""]'
|
||||||
|
#########################################################################
|
||||||
|
# Theme: Apply selected background color on change
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ trigger.topic == selectedbgtopic }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{commandtopic}}.bco"
|
||||||
|
payload: "{{trigger.payload}}"
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ activepage|int == hasppage|int }}"
|
||||||
|
- delay: "00:00:00.5"
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{selectedfg}},0,1,1,3,\"{{icon}}\""]'
|
||||||
|
#########################################################################
|
||||||
|
# Theme: Apply unselected foreground color on change
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ trigger.topic == unselectedfgtopic }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{commandtopic}}.pco2"
|
||||||
|
payload: "{{trigger.payload}}"
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ activepage|int == hasppage|int }}"
|
||||||
|
- delay: "00:00:00.5"
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{selectedfg}},0,1,1,3,\"{{icon}}\""]'
|
||||||
|
#########################################################################
|
||||||
|
# Theme: Apply unselected background color on change
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ trigger.topic == unselectedbgtopic }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{commandtopic}}.bco2"
|
||||||
|
payload: "{{trigger.payload}}"
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ activepage|int == hasppage|int }}"
|
||||||
|
- delay: "00:00:00.5"
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{selectedfg}},0,1,1,3,\"{{icon}}\""]'
|
453
Home_Assistant/blueprints/hasp_Display_Dimmer_with_Icon.yaml
Normal file
@ -0,0 +1,453 @@
|
|||||||
|
blueprint:
|
||||||
|
name: "HASP p[x].b[y] displays a dimmer with a toggle on/off icon"
|
||||||
|
description: |
|
||||||
|
|
||||||
|
# Description
|
||||||
|
|
||||||
|
A HASP button displays a dimmer control on page 4 and 5 with a toggle on/off icon to the left.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## HASP Page and Button reference
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
This automation is designed to work with the silders and buttons found on pages 4 and 5
|
||||||
|
|
||||||
|
| Pages 4-5 |
|
||||||
|
|-----------|
|
||||||
|
|  |
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
source_url: "https://github.com/HASwitchPlate/Blueprints/blob/main/hasp_Display_Dimmer_with_Icon.yaml"
|
||||||
|
domain: automation
|
||||||
|
input:
|
||||||
|
haspdevice:
|
||||||
|
name: "HASP Device"
|
||||||
|
description: "Select the HASP device"
|
||||||
|
selector:
|
||||||
|
device:
|
||||||
|
integration: mqtt
|
||||||
|
manufacturer: "HASwitchPlate"
|
||||||
|
model: "HASPone v1.0.0"
|
||||||
|
hasppage:
|
||||||
|
name: "HASP Page"
|
||||||
|
description: "Select the HASP page (4 or 5) for the dimmer. Refer to the HASP Page and Button reference above."
|
||||||
|
default: 4
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 4
|
||||||
|
max: 5
|
||||||
|
mode: slider
|
||||||
|
haspbutton:
|
||||||
|
name: "HASP Button"
|
||||||
|
description: "Select the HASP button (7-9) for the dimmer. Refer to the HASP Page and Button reference above."
|
||||||
|
default: 7
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 7
|
||||||
|
max: 9
|
||||||
|
mode: slider
|
||||||
|
dimmer:
|
||||||
|
name: "Light to control"
|
||||||
|
description: "Select a light device which supports dimming"
|
||||||
|
selector:
|
||||||
|
entity:
|
||||||
|
domain: light
|
||||||
|
text_on:
|
||||||
|
name: "HASP Button Text On"
|
||||||
|
description: "Enter text to appear on the button above the dimmer when the selected device is ON."
|
||||||
|
default: "Dimmer"
|
||||||
|
selector:
|
||||||
|
text:
|
||||||
|
text_off:
|
||||||
|
name: "HASP Button Text Off"
|
||||||
|
description: "Enter text to appear on the button when the selected device is OFF. The default value of {{text_on}} will leave the text unchanged when the device turns on/off"
|
||||||
|
default: "{{text_on}}"
|
||||||
|
selector:
|
||||||
|
text:
|
||||||
|
font_select:
|
||||||
|
name: "HASP Button Font"
|
||||||
|
description: "Select the text font for this button label. Refer to the HASP Font reference above."
|
||||||
|
default: "6 - Noto Sans 32"
|
||||||
|
selector:
|
||||||
|
select:
|
||||||
|
options:
|
||||||
|
- "0 - Consolas 24"
|
||||||
|
- "1 - Consolas 32"
|
||||||
|
- "2 - Consolas 48"
|
||||||
|
- "3 - Consolas 80"
|
||||||
|
- "4 - Webdings 56"
|
||||||
|
- "5 - Noto Sans 24"
|
||||||
|
- "6 - Noto Sans 32"
|
||||||
|
- "7 - Noto Sans 48"
|
||||||
|
- "8 - Noto Sans 64"
|
||||||
|
- "9 - Noto Sans 80"
|
||||||
|
- "10 - Noto Sans Bold 80"
|
||||||
|
xcen_select:
|
||||||
|
name: "Text horizontal alignment"
|
||||||
|
description: "Horizontal text alignment: 0=Left 1=Center 2=Right"
|
||||||
|
default: "1 - Centered"
|
||||||
|
selector:
|
||||||
|
select:
|
||||||
|
options:
|
||||||
|
- "0 - Left aligned"
|
||||||
|
- "1 - Centered"
|
||||||
|
- "2 - Right aligned"
|
||||||
|
ycen_select:
|
||||||
|
name: "Text vertical alignment"
|
||||||
|
description: "Vertical text alignment: 0=Top 1=Center 2=Bottom"
|
||||||
|
default: "0 - Top aligned"
|
||||||
|
selector:
|
||||||
|
select:
|
||||||
|
options:
|
||||||
|
- "0 - Top aligned"
|
||||||
|
- "1 - Centered"
|
||||||
|
- "2 - Bottom aligned"
|
||||||
|
wrap:
|
||||||
|
name: "Text wrap"
|
||||||
|
description: "Enable line-wrapping text if too long to fit in the button."
|
||||||
|
default: false
|
||||||
|
selector:
|
||||||
|
boolean:
|
||||||
|
icon_on:
|
||||||
|
name: '"On" state icon'
|
||||||
|
description: 'Enter the icon to be shown when the selected entity is "on"'
|
||||||
|
default: ""
|
||||||
|
selector:
|
||||||
|
text:
|
||||||
|
icon_off:
|
||||||
|
name: '"Off" state icon'
|
||||||
|
description: 'Enter the icon to be shown when the selected entity is "off"'
|
||||||
|
default: ""
|
||||||
|
selector:
|
||||||
|
text:
|
||||||
|
|
||||||
|
mode: parallel
|
||||||
|
max_exceeded: silent
|
||||||
|
|
||||||
|
variables:
|
||||||
|
haspdevice: !input haspdevice
|
||||||
|
haspname: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^sensor\.") -%}
|
||||||
|
{{- entity|regex_replace(find="^sensor\.", replace="", ignorecase=true)|regex_replace(find="_sensor(?:_\d+|)$", replace="", ignorecase=true) -}}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
hasppage: !input hasppage
|
||||||
|
haspbutton: !input haspbutton
|
||||||
|
dimmer: !input dimmer
|
||||||
|
text_on: !input text_on
|
||||||
|
text_off: !input text_off
|
||||||
|
font_select: !input font_select
|
||||||
|
font: '{{ font_select.split(" - ")[0] | int }}'
|
||||||
|
xcen_select: !input xcen_select
|
||||||
|
xcen: '{{ xcen_select.split(" - ")[0] | int }}'
|
||||||
|
ycen_select: !input ycen_select
|
||||||
|
ycen: '{{ ycen_select.split(" - ")[0] | int }}'
|
||||||
|
wrap: !input wrap
|
||||||
|
icon_on: !input icon_on
|
||||||
|
icon_off: !input icon_off
|
||||||
|
dimmerbutton: "{{haspbutton|int}}"
|
||||||
|
togglebutton: "{{dimmerbutton-3}}"
|
||||||
|
dimmerobject: '{{ "p[" ~ hasppage ~ "].b[" ~ haspbutton ~ "]" }}'
|
||||||
|
toggleobject: '{{ "p[" ~ hasppage ~ "].b[" ~ togglebutton ~ "]" }}'
|
||||||
|
commandtopic: '{{ "hasp/" ~ haspname ~ "/command/" ~ dimmerobject }}'
|
||||||
|
togglecommandtopic: '{{ "hasp/" ~ haspname ~ "/command/" ~ toggleobject }}'
|
||||||
|
jsontopic: '{{ "hasp/" ~ haspname ~ "/state/json" }}'
|
||||||
|
jsoncommandtopic: '{{ "hasp/" ~ haspname ~ "/command/json" }}'
|
||||||
|
isbr: "{% if wrap == true %}1{% else %}0{% endif %}"
|
||||||
|
activepage: >-
|
||||||
|
{%- set activepage = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^number\..*_active_page(?:_\d+|)$") -%}
|
||||||
|
{%- set activepage.entity=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{% if states(activepage.entity)|lower == "none" %}-1{% else %}{{ states(activepage.entity) | int }}{% endif %}
|
||||||
|
selectedfgtopic: '{{ "hasp/" ~ haspname ~ "/light/selectedforegroundcolor/rgb" }}'
|
||||||
|
selectedbgtopic: '{{ "hasp/" ~ haspname ~ "/light/selectedbackgroundcolor/rgb" }}'
|
||||||
|
unselectedfgtopic: '{{ "hasp/" ~ haspname ~ "/light/unselectedforegroundcolor/rgb" }}'
|
||||||
|
unselectedbgtopic: '{{ "hasp/" ~ haspname ~ "/light/unselectedbackgroundcolor/rgb" }}'
|
||||||
|
selectedfg: >-
|
||||||
|
{%- set color = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_selected_foreground_color(?:_\d+|)$") -%}
|
||||||
|
{%- set color.source=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- set brightness = state_attr(color.source, "brightness")|int / 255 -%}
|
||||||
|
{%- set red=(state_attr(color.source, "rgb_color")[0] * brightness)|int -%}
|
||||||
|
{%- set green=(state_attr(color.source, "rgb_color")[1] * brightness)|int -%}
|
||||||
|
{%- set blue=(state_attr(color.source, "rgb_color")[2] * brightness)|int -%}
|
||||||
|
{{ (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int }}
|
||||||
|
selectedbg: >-
|
||||||
|
{%- set color = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_selected_background_color(?:_\d+|)$") -%}
|
||||||
|
{%- set color.source=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- set brightness = state_attr(color.source, "brightness")|int / 255 -%}
|
||||||
|
{%- set red=(state_attr(color.source, "rgb_color")[0] * brightness)|int -%}
|
||||||
|
{%- set green=(state_attr(color.source, "rgb_color")[1] * brightness)|int -%}
|
||||||
|
{%- set blue=(state_attr(color.source, "rgb_color")[2] * brightness)|int -%}
|
||||||
|
{{ (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int }}
|
||||||
|
unselectedfg: >-
|
||||||
|
{%- set color = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_unselected_foreground_color(?:_\d+|)$") -%}
|
||||||
|
{%- set color.source=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- set brightness = state_attr(color.source, "brightness")|int / 255 -%}
|
||||||
|
{%- set red=(state_attr(color.source, "rgb_color")[0] * brightness)|int -%}
|
||||||
|
{%- set green=(state_attr(color.source, "rgb_color")[1] * brightness)|int -%}
|
||||||
|
{%- set blue=(state_attr(color.source, "rgb_color")[2] * brightness)|int -%}
|
||||||
|
{{ (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int }}
|
||||||
|
unselectedbg: >-
|
||||||
|
{%- set color = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_unselected_background_color(?:_\d+|)$") -%}
|
||||||
|
{%- set color.source=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- set brightness = state_attr(color.source, "brightness")|int / 255 -%}
|
||||||
|
{%- set red=(state_attr(color.source, "rgb_color")[0] * brightness)|int -%}
|
||||||
|
{%- set green=(state_attr(color.source, "rgb_color")[1] * brightness)|int -%}
|
||||||
|
{%- set blue=(state_attr(color.source, "rgb_color")[2] * brightness)|int -%}
|
||||||
|
{{ (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int }}
|
||||||
|
|
||||||
|
ypos: "{{(haspbutton|int - 7) * 90 + 32}}" # calculate the top pixel position based on the selected button
|
||||||
|
xpos: 0
|
||||||
|
icon: '{% if states(dimmer) == "on" %}{{icon_on}}{% else %}{{icon_off}}{% endif %}'
|
||||||
|
text: '{% if states(dimmer) == "on" %}{{text_on}}{% else %}{{text_off}}{% endif %}'
|
||||||
|
iconwidth: 60
|
||||||
|
iconheight: 65
|
||||||
|
iconfont: 8
|
||||||
|
brightness: '{{state_attr(dimmer, "brightness")|int}}'
|
||||||
|
|
||||||
|
trigger_variables:
|
||||||
|
haspdevice: !input haspdevice
|
||||||
|
haspname: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^sensor\.") -%}
|
||||||
|
{{- entity|regex_replace(find="^sensor\.", replace="", ignorecase=true)|regex_replace(find="_sensor(?:_\d+|)$", replace="", ignorecase=true) -}}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
haspsensor: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^sensor\..+_sensor(?:_\d+|)$") -%}
|
||||||
|
{{ entity }}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
jsontopic: '{{ "hasp/" ~ haspname ~ "/state/json" }}'
|
||||||
|
selectedfgtopic: '{{ "hasp/" ~ haspname ~ "/light/selectedforegroundcolor/rgb" }}'
|
||||||
|
selectedbgtopic: '{{ "hasp/" ~ haspname ~ "/light/selectedbackgroundcolor/rgb" }}'
|
||||||
|
unselectedfgtopic: '{{ "hasp/" ~ haspname ~ "/light/unselectedforegroundcolor/rgb" }}'
|
||||||
|
unselectedbgtopic: '{{ "hasp/" ~ haspname ~ "/light/unselectedbackgroundcolor/rgb" }}'
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
- platform: state
|
||||||
|
entity_id: !input dimmer
|
||||||
|
- platform: homeassistant
|
||||||
|
event: start
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{jsontopic}}"
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{selectedfgtopic}}"
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{selectedbgtopic}}"
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{unselectedfgtopic}}"
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{unselectedbgtopic}}"
|
||||||
|
|
||||||
|
condition:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ is_state(haspsensor, 'ON') }}"
|
||||||
|
|
||||||
|
action:
|
||||||
|
- choose:
|
||||||
|
#########################################################################
|
||||||
|
# RUN ACTIONS or Home Assistant Startup or HASP Connect
|
||||||
|
# Apply styles, place text, and then place icon if our target page is currently active
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: >-
|
||||||
|
{{-
|
||||||
|
(trigger is not defined)
|
||||||
|
or
|
||||||
|
((trigger.platform == 'homeassistant') and (trigger.event == 'start'))
|
||||||
|
or
|
||||||
|
((trigger.platform == 'mqtt') and (trigger.topic == jsontopic) and (trigger.payload_json.event == 'online'))
|
||||||
|
-}}
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: >-
|
||||||
|
["{{toggleobject}}.txt=\"{{text}}\"",
|
||||||
|
"{{toggleobject}}.font={{font}}",
|
||||||
|
"{{toggleobject}}.xcen={{xcen}}",
|
||||||
|
"{{toggleobject}}.ycen={{ycen}}",
|
||||||
|
"{{toggleobject}}.pco={{selectedfg}}",
|
||||||
|
"{{toggleobject}}.bco={{selectedbg}}",
|
||||||
|
"{{toggleobject}}.pco2={{unselectedfg}}",
|
||||||
|
"{{toggleobject}}.bco2={{unselectedbg}}",
|
||||||
|
"{{dimmerobject}}.pco={{unselectedfg}}",
|
||||||
|
"{{dimmerobject}}.bco={{unselectedbg}}",
|
||||||
|
"{{dimmerobject}}.val={{brightness}}"
|
||||||
|
{%- if activepage|int == hasppage|int -%}
|
||||||
|
,"delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{selectedfg}},0,1,1,3,\"{{icon}}\"","vis {{dimmerbutton}},1"
|
||||||
|
{%- endif -%}]
|
||||||
|
|
||||||
|
#########################################################################
|
||||||
|
# Update display if our entity has changed state
|
||||||
|
- conditions: # dimmer has changed value, on/off state has also changed, and we're currently on the selected page
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ (trigger.platform == "state") and (trigger.entity_id == dimmer) and (trigger.from_state.state != trigger.to_state.state) and (activepage|int == hasppage|int) }}'
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["{{toggleobject}}.txt=\"{{text}}\"","{{dimmerobject}}.val={{brightness}}","delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{selectedfg}},0,1,1,3,\"{{icon}}\""]'
|
||||||
|
- conditions: # dimmer has changed value, on/off state has also changed
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ (trigger.platform == "state") and (trigger.entity_id == dimmer) and (trigger.from_state.state != trigger.to_state.state) }}'
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["{{toggleobject}}.txt=\"{{text}}\"","{{dimmerobject}}.val={{brightness}}"]'
|
||||||
|
- conditions: # dimmer has changed value
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ (trigger.platform == "state") and (trigger.entity_id == dimmer) }}'
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["{{dimmerobject}}.val={{brightness}}"]'
|
||||||
|
|
||||||
|
#########################################################################
|
||||||
|
# Handle MQTT message triggers
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ trigger.platform == "mqtt" }}'
|
||||||
|
sequence:
|
||||||
|
- choose:
|
||||||
|
#########################################################################
|
||||||
|
# Catch incoming JSON messages
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ (trigger.topic == jsontopic) and trigger.payload_json is defined }}"
|
||||||
|
sequence:
|
||||||
|
- choose:
|
||||||
|
#########################################################################
|
||||||
|
# Primary function: Toggle a light when we press the button
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ (trigger.topic == jsontopic) and (trigger.payload_json.event == toggleobject) and (trigger.payload_json.value == "OFF") }}'
|
||||||
|
sequence:
|
||||||
|
- service: homeassistant.toggle
|
||||||
|
entity_id: !input dimmer
|
||||||
|
#########################################################################
|
||||||
|
# Primary function: Set the dimmer value when the HASP slider has moved
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ (trigger.topic == jsontopic) and (trigger.payload_json.event == dimmerobject ~ ".val") }}'
|
||||||
|
sequence:
|
||||||
|
- service: light.turn_on
|
||||||
|
entity_id: !input dimmer
|
||||||
|
data:
|
||||||
|
brightness: "{{trigger.payload_json.value}}"
|
||||||
|
#########################################################################
|
||||||
|
# Icon overlay
|
||||||
|
- conditions: # Page changed to our page, so place the icon on the screen.
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ (trigger.topic == jsontopic ) and (trigger.payload_json.event == "page" ) and (trigger.payload_json.value == hasppage|int) }}'
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["ref {{togglebutton}}","delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{selectedfg}},0,1,1,3,\"{{icon}}\"","delay=1","vis {{dimmerbutton}},1"]'
|
||||||
|
|
||||||
|
#########################################################################
|
||||||
|
# Theme: Apply selected foreground color when it changes.
|
||||||
|
# Any change to the button will remove the overlaid icon.
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ trigger.topic == selectedfgtopic }}"
|
||||||
|
sequence:
|
||||||
|
- delay: "00:00:00.5"
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{togglecommandtopic}}.pco"
|
||||||
|
payload: "{{trigger.payload}}"
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ activepage|int == hasppage|int }}"
|
||||||
|
- delay: "00:00:00.5"
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{trigger.payload}},0,1,1,3,\"{{icon}}\"","delay=1","vis {{dimmerbutton}},1"]'
|
||||||
|
#########################################################################
|
||||||
|
# Theme: Apply selected background color on change
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ trigger.topic == selectedbgtopic }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{togglecommandtopic}}.bco"
|
||||||
|
payload: "{{trigger.payload}}"
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ activepage|int == hasppage|int }}"
|
||||||
|
- delay: "00:00:00.5"
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{fgcolor}},0,1,1,3,\"{{icon}}\"","delay=1","vis {{dimmerbutton}},1"]'
|
||||||
|
#########################################################################
|
||||||
|
# Theme: Apply unselected foreground color on change
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ trigger.topic == unselectedfgtopic }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["{{toggleobject}}.pco2={{trigger.payload}}","{{dimmerobject}}.pco={{trigger.payload}}"]'
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ activepage|int == hasppage|int }}"
|
||||||
|
- delay: "00:00:00.5"
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{fgcolor}},0,1,1,3,\"{{icon}}\"","delay=1","vis {{dimmerbutton}},1"]'
|
||||||
|
#########################################################################
|
||||||
|
# Theme: Apply unselected background color on change
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ trigger.topic == unselectedbgtopic }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["{{toggleobject}}.bco2={{trigger.payload}}","{{dimmerobject}}.bco={{trigger.payload}}"]'
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ activepage|int == hasppage|int }}"
|
||||||
|
- delay: "00:00:00.5"
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{fgcolor}},0,1,1,3,\"{{icon}}\"","delay=1","vis {{dimmerbutton}},1"]'
|
@ -0,0 +1,540 @@
|
|||||||
|
blueprint:
|
||||||
|
name: "HASP p[x].b[y] displays the current temperature with icon and colors"
|
||||||
|
description: |
|
||||||
|
|
||||||
|
# Description
|
||||||
|
|
||||||
|
A HASP button displays the current temperature on the right with a dynamic thermometer icon on the left and (optional) colors.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## HASP Page and Button reference
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
This automation is designed to work with the full-width buttons found on pages 1-3
|
||||||
|
|
||||||
|
| Pages 1-3 |
|
||||||
|
|-----------|
|
||||||
|
|  |
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
## Nextion color codes
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
The Nextion environment utilizes RGB 565 encoding. [Use this handy convertor](https://nodtem66.github.io/nextion-hmi-color-convert/index.html) to select your colors and convert to the RGB 565 format.
|
||||||
|
|
||||||
|
Here are some example colors:
|
||||||
|
|
||||||
|
| Color | Code |
|
||||||
|
|--------|-------|
|
||||||
|
| White | 65535 |
|
||||||
|
| Black | 0 |
|
||||||
|
| Grey | 25388 |
|
||||||
|
| Red | 63488 |
|
||||||
|
| Green | 2016 |
|
||||||
|
| Blue | 31 |
|
||||||
|
| Yellow | 65504 |
|
||||||
|
| Orange | 64512 |
|
||||||
|
| Brown | 48192 |
|
||||||
|
|
||||||
|
</details>
|
||||||
|
source_url: "https://github.com/HASwitchPlate/Blueprints/blob/main/hasp_Display_Temperature_with_Icon_and_Colors.yaml"
|
||||||
|
domain: automation
|
||||||
|
input:
|
||||||
|
haspdevice:
|
||||||
|
name: "HASP Device"
|
||||||
|
description: "Select the HASP device"
|
||||||
|
selector:
|
||||||
|
device:
|
||||||
|
integration: mqtt
|
||||||
|
manufacturer: "HASwitchPlate"
|
||||||
|
model: "HASPone v1.0.0"
|
||||||
|
hasppage:
|
||||||
|
name: "HASP Page"
|
||||||
|
description: "Select the HASP page (1-3) for the temperature. Refer to the HASP Page and Button reference above."
|
||||||
|
default: 1
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 1
|
||||||
|
max: 3
|
||||||
|
mode: slider
|
||||||
|
haspbutton:
|
||||||
|
name: "HASP Button"
|
||||||
|
description: "Select the HASP button (4-7) for the temperature. Refer to the HASP Page and Button reference above."
|
||||||
|
default: 4
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 4
|
||||||
|
max: 7
|
||||||
|
mode: slider
|
||||||
|
weather_provider:
|
||||||
|
name: "Weather provider"
|
||||||
|
description: "Select the weather provider to obtain the current outdoor temperature. If a temperature sensor is selected below, that will override this selection."
|
||||||
|
default:
|
||||||
|
selector:
|
||||||
|
entity:
|
||||||
|
domain: weather
|
||||||
|
temperature_sensor:
|
||||||
|
name: "Temperature sensor"
|
||||||
|
description: "Select a temperature sensor. If selected, this state of this sensor will be displayed instead of the weather provider selected above."
|
||||||
|
default:
|
||||||
|
selector:
|
||||||
|
entity:
|
||||||
|
domain: sensor
|
||||||
|
temperature_attribute:
|
||||||
|
name: "Temperature sensor state or attribute to monitor"
|
||||||
|
description: 'Enter "state" to track the state of the sensor above, or enter an attribute name if the sensor has a specific attribute you want to track. Most uses will leave this set to "state".'
|
||||||
|
default: "state"
|
||||||
|
selector:
|
||||||
|
text:
|
||||||
|
suffix_select:
|
||||||
|
name: "Temperature display suffix"
|
||||||
|
description: "Suffix for temperature display."
|
||||||
|
default: "°"
|
||||||
|
selector:
|
||||||
|
select:
|
||||||
|
options:
|
||||||
|
- "No suffix"
|
||||||
|
- "°"
|
||||||
|
- "°F"
|
||||||
|
- "°C"
|
||||||
|
thermometer_empty_color:
|
||||||
|
name: "Thermometer empty color"
|
||||||
|
description: 'Icon color for an empty thermometer in Nextion RGB565 format (see "Nextion color codes" above for reference). -1 = Current theme foreground color, or 2047 = Ice blue'
|
||||||
|
default: 2047
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: -1
|
||||||
|
max: 65535
|
||||||
|
mode: slider
|
||||||
|
thermometer_quarter_threshold:
|
||||||
|
name: "Thermometer one quarter threshold"
|
||||||
|
description: "Temperatures above this threshold will show a one-quarter full thermometer. Below, show an empty thermometer."
|
||||||
|
default: 0
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: -20
|
||||||
|
max: 125
|
||||||
|
mode: slider
|
||||||
|
thermometer_quarter_color:
|
||||||
|
name: "Thermometer one quarter color"
|
||||||
|
description: "Icon color for a one-quarter full thermometer in Nextion RGB565 format. -1 = Current theme foreground color, or 31 = Blue"
|
||||||
|
default: 31
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: -1
|
||||||
|
max: 65535
|
||||||
|
mode: slider
|
||||||
|
thermometer_half_threshold:
|
||||||
|
name: "Thermometer half threshold"
|
||||||
|
description: "Temperatures above this threshold will show a half full thermometer. This value must be higher than the value selected above."
|
||||||
|
default: 32
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: -10
|
||||||
|
max: 125
|
||||||
|
mode: slider
|
||||||
|
thermometer_half_color:
|
||||||
|
name: "Thermometer half color"
|
||||||
|
description: "Icon color for a half full thermometer in Nextion RGB565 format. -1 = Current theme foreground color, or 1536 = Green"
|
||||||
|
default: 1536
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: -1
|
||||||
|
max: 65535
|
||||||
|
mode: slider
|
||||||
|
thermometer_three_quarter_threshold:
|
||||||
|
name: "Thermometer three quarter threshold"
|
||||||
|
description: "Temperatures above this threshold will show a three-quarters full thermometer. This value must be higher than the value selected above."
|
||||||
|
default: 80
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 0
|
||||||
|
max: 125
|
||||||
|
mode: slider
|
||||||
|
thermometer_three_quarter_color:
|
||||||
|
name: "Thermometer three quarter color"
|
||||||
|
description: "Icon color for a three-quarter full thermometer in Nextion RGB565 format. -1 = Current theme foreground color, or 64512 = Orange"
|
||||||
|
default: 64512
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: -1
|
||||||
|
max: 65535
|
||||||
|
mode: slider
|
||||||
|
thermometer_full_threshold:
|
||||||
|
name: "Thermometer full threshold"
|
||||||
|
description: "Temperatures above this threshold will show a full thermometer. This value must be higher than the value selected above."
|
||||||
|
default: 95
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 10
|
||||||
|
max: 125
|
||||||
|
mode: slider
|
||||||
|
thermometer_full_color:
|
||||||
|
name: "Thermometer full color"
|
||||||
|
description: "Icon color for a full thermometer in Nextion RGB565 format. -1 = Current theme foreground color, or 63488 = Red"
|
||||||
|
default: 63488
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: -1
|
||||||
|
max: 65535
|
||||||
|
mode: slider
|
||||||
|
colortemp:
|
||||||
|
name: "Colorize temperature text"
|
||||||
|
description: "Also apply icon colors to text"
|
||||||
|
default: false
|
||||||
|
selector:
|
||||||
|
boolean:
|
||||||
|
|
||||||
|
mode: parallel
|
||||||
|
max_exceeded: silent
|
||||||
|
|
||||||
|
variables:
|
||||||
|
haspname: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^sensor\.") -%}
|
||||||
|
{{- entity|regex_replace(find="^sensor\.", replace="", ignorecase=true)|regex_replace(find="_sensor(?:_\d+|)$", replace="", ignorecase=true) -}}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
haspsensor: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^sensor\..+_sensor(?:_\d+|)$") -%}
|
||||||
|
{{ entity }}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
hasppage: !input hasppage
|
||||||
|
haspbutton: !input haspbutton
|
||||||
|
weather_provider: !input weather_provider
|
||||||
|
temperature_sensor: !input temperature_sensor
|
||||||
|
temperature_attribute: !input temperature_attribute
|
||||||
|
suffix_select: !input suffix_select
|
||||||
|
thermometer_empty_color: !input thermometer_empty_color
|
||||||
|
thermometer_quarter_threshold: !input thermometer_quarter_threshold
|
||||||
|
thermometer_quarter_color: !input thermometer_quarter_color
|
||||||
|
thermometer_half_threshold: !input thermometer_half_threshold
|
||||||
|
thermometer_half_color: !input thermometer_half_color
|
||||||
|
thermometer_three_quarter_threshold: !input thermometer_three_quarter_threshold
|
||||||
|
thermometer_three_quarter_color: !input thermometer_three_quarter_color
|
||||||
|
thermometer_full_threshold: !input thermometer_full_threshold
|
||||||
|
thermometer_full_color: !input thermometer_full_color
|
||||||
|
colortemp: !input colortemp
|
||||||
|
haspobject: '{{ "p[" ~ hasppage ~ "].b[" ~ haspbutton ~ "]" }}'
|
||||||
|
commandtopic: '{{ "hasp/" ~ haspname ~ "/command/" ~ haspobject }}'
|
||||||
|
jsoncommandtopic: '{{ "hasp/" ~ haspname ~ "/command/json" }}'
|
||||||
|
jsontopic: '{{ "hasp/" ~ haspname ~ "/state/json" }}'
|
||||||
|
# temperature: '{{state_attr(weather_provider, "temperature")|int}}'
|
||||||
|
temperature: >-
|
||||||
|
{%- if temperature_sensor|lower == "none" -%}
|
||||||
|
{{- state_attr(weather_provider, "temperature") -}}
|
||||||
|
{%- elif temperature_attribute|lower == "state" -%}
|
||||||
|
{{- states(temperature_sensor) -}}
|
||||||
|
{%- else -%}
|
||||||
|
{{- state_attr(temperature_sensor, temperature_attribute) -}}
|
||||||
|
{%- endif -%}
|
||||||
|
icon: >-
|
||||||
|
{%- set temp = temperature|int -%}
|
||||||
|
{%- if temp <= thermometer_quarter_threshold|int -%}
|
||||||
|
|
||||||
|
{%- elif temp < thermometer_half_threshold|int -%}
|
||||||
|
|
||||||
|
{% elif temp < thermometer_three_quarter_threshold|int -%}
|
||||||
|
|
||||||
|
{%- elif temp < thermometer_full_threshold|int -%}
|
||||||
|
|
||||||
|
{%- else -%}
|
||||||
|
|
||||||
|
{%- endif -%}
|
||||||
|
suffixstring: "{% if suffix_select != 'No suffix' %}{{ suffix_select }}{% endif %}"
|
||||||
|
text: "{{temperature}}{{suffixstring}}"
|
||||||
|
font: 10
|
||||||
|
ypos: "{{(haspbutton|int - 4) * 67 + 2}}"
|
||||||
|
xpos: 0
|
||||||
|
iconwidth: 40
|
||||||
|
iconheight: 65
|
||||||
|
iconfont: 8
|
||||||
|
xcen: 2
|
||||||
|
ycen: 1
|
||||||
|
activepage: >-
|
||||||
|
{%- set activepage = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^number\..*_active_page(?:_\d+|)$") -%}
|
||||||
|
{%- set activepage.entity=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{% if states(activepage.entity)|lower == "none" %}-1{% else %}{{ states(activepage.entity) | int }}{% endif %}
|
||||||
|
selectedfgtopic: '{{ "hasp/" ~ haspname ~ "/light/selectedforegroundcolor/rgb" }}'
|
||||||
|
selectedbgtopic: '{{ "hasp/" ~ haspname ~ "/light/selectedbackgroundcolor/rgb" }}'
|
||||||
|
unselectedfgtopic: '{{ "hasp/" ~ haspname ~ "/light/unselectedforegroundcolor/rgb" }}'
|
||||||
|
unselectedbgtopic: '{{ "hasp/" ~ haspname ~ "/light/unselectedbackgroundcolor/rgb" }}'
|
||||||
|
selectedfg: >-
|
||||||
|
{%- set color = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_selected_foreground_color(?:_\d+|)$") -%}
|
||||||
|
{%- set color.source=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- set brightness = state_attr(color.source, "brightness")|int / 255 -%}
|
||||||
|
{%- set red=(state_attr(color.source, "rgb_color")[0] * brightness)|int -%}
|
||||||
|
{%- set green=(state_attr(color.source, "rgb_color")[1] * brightness)|int -%}
|
||||||
|
{%- set blue=(state_attr(color.source, "rgb_color")[2] * brightness)|int -%}
|
||||||
|
{{ (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int }}
|
||||||
|
selectedbg: >-
|
||||||
|
{%- set color = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_selected_background_color(?:_\d+|)$") -%}
|
||||||
|
{%- set color.source=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- set brightness = state_attr(color.source, "brightness")|int / 255 -%}
|
||||||
|
{%- set red=(state_attr(color.source, "rgb_color")[0] * brightness)|int -%}
|
||||||
|
{%- set green=(state_attr(color.source, "rgb_color")[1] * brightness)|int -%}
|
||||||
|
{%- set blue=(state_attr(color.source, "rgb_color")[2] * brightness)|int -%}
|
||||||
|
{{ (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int }}
|
||||||
|
unselectedfg: >-
|
||||||
|
{%- set color = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_unselected_foreground_color(?:_\d+|)$") -%}
|
||||||
|
{%- set color.source=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- set brightness = state_attr(color.source, "brightness")|int / 255 -%}
|
||||||
|
{%- set red=(state_attr(color.source, "rgb_color")[0] * brightness)|int -%}
|
||||||
|
{%- set green=(state_attr(color.source, "rgb_color")[1] * brightness)|int -%}
|
||||||
|
{%- set blue=(state_attr(color.source, "rgb_color")[2] * brightness)|int -%}
|
||||||
|
{{ (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int }}
|
||||||
|
unselectedbg: >-
|
||||||
|
{%- set color = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_unselected_background_color(?:_\d+|)$") -%}
|
||||||
|
{%- set color.source=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- set brightness = state_attr(color.source, "brightness")|int / 255 -%}
|
||||||
|
{%- set red=(state_attr(color.source, "rgb_color")[0] * brightness)|int -%}
|
||||||
|
{%- set green=(state_attr(color.source, "rgb_color")[1] * brightness)|int -%}
|
||||||
|
{%- set blue=(state_attr(color.source, "rgb_color")[2] * brightness)|int -%}
|
||||||
|
{{ (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int }}
|
||||||
|
tempcolor: >-
|
||||||
|
{%- set temp = temperature|int -%}
|
||||||
|
{%- if temp <= thermometer_quarter_threshold|int -%}
|
||||||
|
{%- set color = thermometer_empty_color -%}
|
||||||
|
{%- elif temp < thermometer_half_threshold|int -%}
|
||||||
|
{%- set color = thermometer_quarter_color -%}
|
||||||
|
{%- elif temp < thermometer_three_quarter_threshold|int -%}
|
||||||
|
{%- set color = thermometer_half_color -%}
|
||||||
|
{%- elif temp < thermometer_full_threshold|int -%}
|
||||||
|
{%- set color = thermometer_three_quarter_color -%}
|
||||||
|
{%- else -%}
|
||||||
|
{%- set color = thermometer_full_color -%}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- if color|int < 0 -%}
|
||||||
|
{{- selectedfg -}}
|
||||||
|
{%- else -%}
|
||||||
|
{{- color -}}
|
||||||
|
{%- endif -%}
|
||||||
|
textcolor: >-
|
||||||
|
{%- if colortemp == true -%}
|
||||||
|
{{- tempcolor -}}
|
||||||
|
{%- else -%}
|
||||||
|
{{- selectedfg -}}
|
||||||
|
{%- endif -%}
|
||||||
|
|
||||||
|
trigger_variables:
|
||||||
|
haspdevice: !input haspdevice
|
||||||
|
haspname: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^sensor\.") -%}
|
||||||
|
{{- entity|regex_replace(find="^sensor\.", replace="", ignorecase=true)|regex_replace(find="_sensor(?:_\d+|)$", replace="", ignorecase=true) -}}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
haspsensor: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^sensor\..+_sensor(?:_\d+|)$") -%}
|
||||||
|
{{ entity }}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
jsontopic: '{{ "hasp/" ~ haspname ~ "/state/json" }}'
|
||||||
|
selectedfgtopic: '{{ "hasp/" ~ haspname ~ "/light/selectedforegroundcolor/rgb" }}'
|
||||||
|
selectedbgtopic: '{{ "hasp/" ~ haspname ~ "/light/selectedbackgroundcolor/rgb" }}'
|
||||||
|
unselectedfgtopic: '{{ "hasp/" ~ haspname ~ "/light/unselectedforegroundcolor/rgb" }}'
|
||||||
|
unselectedbgtopic: '{{ "hasp/" ~ haspname ~ "/light/unselectedbackgroundcolor/rgb" }}'
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
- platform: state
|
||||||
|
entity_id: !input weather_provider
|
||||||
|
- platform: homeassistant
|
||||||
|
event: start
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{jsontopic}}"
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{selectedfgtopic}}"
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{selectedbgtopic}}"
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{unselectedfgtopic}}"
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{unselectedbgtopic}}"
|
||||||
|
|
||||||
|
condition:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ is_state(haspsensor, 'ON') }}"
|
||||||
|
|
||||||
|
action:
|
||||||
|
- choose:
|
||||||
|
#########################################################################
|
||||||
|
# RUN ACTIONS or Home Assistant Startup or HASP Connect
|
||||||
|
# Apply styles, place text, and then place icon if our target page is currently active
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: >-
|
||||||
|
{{-
|
||||||
|
(trigger is not defined)
|
||||||
|
or
|
||||||
|
((trigger.platform == 'homeassistant') and (trigger.event == 'start'))
|
||||||
|
or
|
||||||
|
((trigger.platform == 'mqtt') and (trigger.topic == jsontopic) and (trigger.payload_json.event == 'online'))
|
||||||
|
-}}
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: >-
|
||||||
|
["{{haspobject}}.font={{font}}",
|
||||||
|
"{{haspobject}}.xcen={{xcen}}",
|
||||||
|
"{{haspobject}}.ycen={{ycen}}",
|
||||||
|
"{{haspobject}}.pco={{textcolor}}",
|
||||||
|
"{{haspobject}}.bco={{selectedbg}}",
|
||||||
|
"{{haspobject}}.pco2={{unselectedfg}}",
|
||||||
|
"{{haspobject}}.bco2={{unselectedbg}}",
|
||||||
|
"{{haspobject}}.txt=\"{{text}} \""
|
||||||
|
{%- if activepage|int == hasppage|int -%}
|
||||||
|
,"delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{tempcolor}},0,1,1,3,\"{{icon}}\""
|
||||||
|
{%- endif -%}]
|
||||||
|
#########################################################################
|
||||||
|
# Update temperature if our weather provider changed state
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ (trigger.platform == "state") and (trigger.entity_id == weather_provider) }}'
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: >-
|
||||||
|
["{{haspobject}}.pco={{textcolor}}",
|
||||||
|
"{{haspobject}}.txt=\"{{text}} \""
|
||||||
|
{%- if activepage|int == hasppage|int -%}
|
||||||
|
,"delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{tempcolor}},0,1,1,3,\"{{icon}}\""
|
||||||
|
{%- endif -%}]
|
||||||
|
#########################################################################
|
||||||
|
# Catch triggers fired by incoming MQTT messages
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ trigger.platform == "mqtt" }}'
|
||||||
|
sequence:
|
||||||
|
- choose:
|
||||||
|
#########################################################################
|
||||||
|
# Catch incoming JSON messages
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ (trigger.topic == jsontopic) and trigger.payload_json is defined }}"
|
||||||
|
sequence:
|
||||||
|
- choose:
|
||||||
|
#########################################################################
|
||||||
|
# Icon overlay
|
||||||
|
- conditions: # Somebody pressed our button which hides the overlaid icon. Put it back.
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ (trigger.topic == jsontopic ) and (trigger.payload_json.event == haspobject ) and (trigger.payload_json.value == "OFF") and (activepage|int == hasppage|int)}}'
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{tempcolor}},0,1,1,3,\"{{icon}}\""]'
|
||||||
|
- conditions: # Page changed to our page, so place the icon on the screen.
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ (trigger.topic == jsontopic ) and (trigger.payload_json.event == "page" ) and (trigger.payload_json.value == hasppage|int) }}'
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{tempcolor}},0,1,1,3,\"{{icon}}\""]'
|
||||||
|
#########################################################################
|
||||||
|
# Theme: Apply selected foreground color when it changes.
|
||||||
|
# Any change to the button will remove the overlaid icon.
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ trigger.topic == selectedfgtopic }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{commandtopic}}.pco"
|
||||||
|
payload: "{{trigger.payload}}"
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ activepage|int == hasppage|int }}"
|
||||||
|
- delay: "00:00:00.5"
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{tempcolor}},0,1,1,3,\"{{icon}}\""]'
|
||||||
|
#########################################################################
|
||||||
|
# Theme: Apply selected background color on change
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ trigger.topic == selectedbgtopic }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{commandtopic}}.bco"
|
||||||
|
payload: "{{trigger.payload}}"
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ activepage|int == hasppage|int }}"
|
||||||
|
- delay: "00:00:00.5"
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{tempcolor}},0,1,1,3,\"{{icon}}\""]'
|
||||||
|
#########################################################################
|
||||||
|
# Theme: Apply unselected foreground color on change
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ trigger.topic == unselectedfgtopic }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{commandtopic}}.pco2"
|
||||||
|
payload: "{{trigger.payload}}"
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ activepage|int == hasppage|int }}"
|
||||||
|
- delay: "00:00:00.5"
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{tempcolor}},0,1,1,3,\"{{icon}}\""]'
|
||||||
|
#########################################################################
|
||||||
|
# Theme: Apply unselected background color on change
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ trigger.topic == unselectedbgtopic }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{commandtopic}}.bco2"
|
||||||
|
payload: "{{trigger.payload}}"
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ activepage|int == hasppage|int }}"
|
||||||
|
- delay: "00:00:00.5"
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{tempcolor}},0,1,1,3,\"{{icon}}\""]'
|
@ -0,0 +1,392 @@
|
|||||||
|
blueprint:
|
||||||
|
name: "HASP p[x].b[y] displays the current weather condition with icons"
|
||||||
|
description: |
|
||||||
|
|
||||||
|
# Description
|
||||||
|
|
||||||
|
A HASP button displays the current weather condition on the right with a matching icon on the left
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## HASP Page and Button reference
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
This automation is designed to work with the full-width buttons found on pages 1-3
|
||||||
|
|
||||||
|
| Pages 1-3 |
|
||||||
|
|-----------|
|
||||||
|
|  |
|
||||||
|
|
||||||
|
</details>
|
||||||
|
source_url: "https://github.com/HASwitchPlate/Blueprints/blob/main/hasp_Display_Weather_Condition_with_Icon.yaml"
|
||||||
|
domain: automation
|
||||||
|
input:
|
||||||
|
haspdevice:
|
||||||
|
name: "HASP Device"
|
||||||
|
description: "Select the HASP device"
|
||||||
|
selector:
|
||||||
|
device:
|
||||||
|
integration: mqtt
|
||||||
|
manufacturer: "HASwitchPlate"
|
||||||
|
model: "HASPone v1.0.0"
|
||||||
|
hasppage:
|
||||||
|
name: "HASP Page"
|
||||||
|
description: "Select the HASP page (1-3) for the temperature"
|
||||||
|
default: 1
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 1
|
||||||
|
max: 3
|
||||||
|
mode: slider
|
||||||
|
haspbutton:
|
||||||
|
name: "HASP Button"
|
||||||
|
description: "Select the HASP button (4-7) for the temperature. Refer to the object map in the HASP documentation."
|
||||||
|
default: 4
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 4
|
||||||
|
max: 7
|
||||||
|
mode: slider
|
||||||
|
weather_provider:
|
||||||
|
name: "Weather provider"
|
||||||
|
description: "Select the weather provider to obtain the temperature"
|
||||||
|
selector:
|
||||||
|
entity:
|
||||||
|
domain: weather
|
||||||
|
|
||||||
|
mode: parallel
|
||||||
|
max_exceeded: silent
|
||||||
|
|
||||||
|
variables:
|
||||||
|
haspname: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^sensor\.") -%}
|
||||||
|
{{- entity|regex_replace(find="^sensor\.", replace="", ignorecase=true)|regex_replace(find="_sensor(?:_\d+|)$", replace="", ignorecase=true) -}}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
haspsensor: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^sensor\..+_sensor(?:_\d+|)$") -%}
|
||||||
|
{{ entity }}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
hasppage: !input hasppage
|
||||||
|
haspbutton: !input haspbutton
|
||||||
|
weather_provider: !input weather_provider
|
||||||
|
haspobject: '{{ "p[" ~ hasppage ~ "].b[" ~ haspbutton ~ "]" }}'
|
||||||
|
commandtopic: '{{ "hasp/" ~ haspname ~ "/command/" ~ haspobject }}'
|
||||||
|
jsoncommandtopic: '{{ "hasp/" ~ haspname ~ "/command/json" }}'
|
||||||
|
jsontopic: '{{ "hasp/" ~ haspname ~ "/state/json" }}'
|
||||||
|
icon: >-
|
||||||
|
{%- set condition=states(weather_provider) -%}
|
||||||
|
{%- if condition == "clear-night" -%}
|
||||||
|
|
||||||
|
{%- elif condition == "cloudy" -%}
|
||||||
|
|
||||||
|
{%- elif condition == "fog" -%}
|
||||||
|
|
||||||
|
{%- elif condition == "hail" -%}
|
||||||
|
|
||||||
|
{%- elif condition == "lightning" -%}
|
||||||
|
|
||||||
|
{%- elif condition == "lightning-rainy" -%}
|
||||||
|
|
||||||
|
{%- elif condition == "partlycloudy" -%}
|
||||||
|
|
||||||
|
{%- elif condition == "pouring" -%}
|
||||||
|
|
||||||
|
{%- elif condition == "rainy" -%}
|
||||||
|
|
||||||
|
{%- elif condition == "snowy" -%}
|
||||||
|
|
||||||
|
{%- elif condition == "snowy-rainy" -%}
|
||||||
|
|
||||||
|
{%- elif condition == "sunny" -%}
|
||||||
|
|
||||||
|
{%- elif condition == "windy" -%}
|
||||||
|
|
||||||
|
{%- elif condition == "windy-variant" -%}
|
||||||
|
|
||||||
|
{%- elif condition == "exceptional" -%}
|
||||||
|
|
||||||
|
{%- else -%}
|
||||||
|
|
||||||
|
{%- endif -%}
|
||||||
|
text: >-
|
||||||
|
{{-
|
||||||
|
states(weather_provider) |
|
||||||
|
replace("windy-variant","windy") |
|
||||||
|
replace("clear-night","clear night") |
|
||||||
|
replace("partlycloudy","partly cloudy") |
|
||||||
|
replace("lightning-rainy","lightning & rain") |
|
||||||
|
replace("snowy-rainy","snow & rain") |
|
||||||
|
title
|
||||||
|
-}}
|
||||||
|
font: '{%set weatherlength=states(weather_provider)|length %}{% if weatherlength < 7 -%}8{% elif weatherlength < 12 %}7{% else %}6{%- endif %}'
|
||||||
|
ypos: "{{(haspbutton|int - 4) * 67 + 2}}"
|
||||||
|
xpos: 0
|
||||||
|
iconwidth: 65
|
||||||
|
iconheight: 65
|
||||||
|
iconfont: 8
|
||||||
|
xcen: 2
|
||||||
|
ycen: 1
|
||||||
|
activepage: >-
|
||||||
|
{%- set activepage = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^number\..*_active_page(?:_\d+|)$") -%}
|
||||||
|
{%- set activepage.entity=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{% if states(activepage.entity)|lower == "none" %}-1{% else %}{{ states(activepage.entity) | int }}{% endif %}
|
||||||
|
selectedfgtopic: '{{ "hasp/" ~ haspname ~ "/light/selectedforegroundcolor/rgb" }}'
|
||||||
|
selectedbgtopic: '{{ "hasp/" ~ haspname ~ "/light/selectedbackgroundcolor/rgb" }}'
|
||||||
|
unselectedfgtopic: '{{ "hasp/" ~ haspname ~ "/light/unselectedforegroundcolor/rgb" }}'
|
||||||
|
unselectedbgtopic: '{{ "hasp/" ~ haspname ~ "/light/unselectedbackgroundcolor/rgb" }}'
|
||||||
|
selectedfg: >-
|
||||||
|
{%- set color = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_selected_foreground_color(?:_\d+|)$") -%}
|
||||||
|
{%- set color.source=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- set brightness = state_attr(color.source, "brightness")|int / 255 -%}
|
||||||
|
{%- set red=(state_attr(color.source, "rgb_color")[0] * brightness)|int -%}
|
||||||
|
{%- set green=(state_attr(color.source, "rgb_color")[1] * brightness)|int -%}
|
||||||
|
{%- set blue=(state_attr(color.source, "rgb_color")[2] * brightness)|int -%}
|
||||||
|
{{ (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int }}
|
||||||
|
selectedbg: >-
|
||||||
|
{%- set color = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_selected_background_color(?:_\d+|)$") -%}
|
||||||
|
{%- set color.source=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- set brightness = state_attr(color.source, "brightness")|int / 255 -%}
|
||||||
|
{%- set red=(state_attr(color.source, "rgb_color")[0] * brightness)|int -%}
|
||||||
|
{%- set green=(state_attr(color.source, "rgb_color")[1] * brightness)|int -%}
|
||||||
|
{%- set blue=(state_attr(color.source, "rgb_color")[2] * brightness)|int -%}
|
||||||
|
{{ (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int }}
|
||||||
|
unselectedfg: >-
|
||||||
|
{%- set color = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_unselected_foreground_color(?:_\d+|)$") -%}
|
||||||
|
{%- set color.source=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- set brightness = state_attr(color.source, "brightness")|int / 255 -%}
|
||||||
|
{%- set red=(state_attr(color.source, "rgb_color")[0] * brightness)|int -%}
|
||||||
|
{%- set green=(state_attr(color.source, "rgb_color")[1] * brightness)|int -%}
|
||||||
|
{%- set blue=(state_attr(color.source, "rgb_color")[2] * brightness)|int -%}
|
||||||
|
{{ (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int }}
|
||||||
|
unselectedbg: >-
|
||||||
|
{%- set color = namespace() -%}
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_unselected_background_color(?:_\d+|)$") -%}
|
||||||
|
{%- set color.source=entity -%}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- set brightness = state_attr(color.source, "brightness")|int / 255 -%}
|
||||||
|
{%- set red=(state_attr(color.source, "rgb_color")[0] * brightness)|int -%}
|
||||||
|
{%- set green=(state_attr(color.source, "rgb_color")[1] * brightness)|int -%}
|
||||||
|
{%- set blue=(state_attr(color.source, "rgb_color")[2] * brightness)|int -%}
|
||||||
|
{{ (red|bitwise_and(248)*256) + (green|bitwise_and(252)*8) + (blue|bitwise_and(248)/8)|int }}
|
||||||
|
|
||||||
|
trigger_variables:
|
||||||
|
haspdevice: !input haspdevice
|
||||||
|
haspname: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^sensor\.") -%}
|
||||||
|
{{- entity|regex_replace(find="^sensor\.", replace="", ignorecase=true)|regex_replace(find="_sensor(?:_\d+|)$", replace="", ignorecase=true) -}}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
haspsensor: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^sensor\..+_sensor(?:_\d+|)$") -%}
|
||||||
|
{{ entity }}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
jsontopic: '{{ "hasp/" ~ haspname ~ "/state/json" }}'
|
||||||
|
selectedfgtopic: '{{ "hasp/" ~ haspname ~ "/light/selectedforegroundcolor/rgb" }}'
|
||||||
|
selectedbgtopic: '{{ "hasp/" ~ haspname ~ "/light/selectedbackgroundcolor/rgb" }}'
|
||||||
|
unselectedfgtopic: '{{ "hasp/" ~ haspname ~ "/light/unselectedforegroundcolor/rgb" }}'
|
||||||
|
unselectedbgtopic: '{{ "hasp/" ~ haspname ~ "/light/unselectedbackgroundcolor/rgb" }}'
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
- platform: state
|
||||||
|
entity_id: !input weather_provider
|
||||||
|
- platform: homeassistant
|
||||||
|
event: start
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{jsontopic}}"
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{selectedfgtopic}}"
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{selectedbgtopic}}"
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{unselectedfgtopic}}"
|
||||||
|
- platform: mqtt
|
||||||
|
topic: "{{unselectedbgtopic}}"
|
||||||
|
|
||||||
|
condition:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ is_state(haspsensor, 'ON') }}"
|
||||||
|
|
||||||
|
action:
|
||||||
|
- choose:
|
||||||
|
#########################################################################
|
||||||
|
# RUN ACTIONS or Home Assistant Startup or HASP Connect
|
||||||
|
# Apply styles, place text, and then place icon if our target page is currently active
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: >-
|
||||||
|
{{-
|
||||||
|
(trigger is not defined)
|
||||||
|
or
|
||||||
|
((trigger.platform == 'homeassistant') and (trigger.event == 'start'))
|
||||||
|
or
|
||||||
|
((trigger.platform == 'mqtt') and (trigger.topic == jsontopic) and (trigger.payload_json.event == 'online'))
|
||||||
|
-}}
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: >-
|
||||||
|
["{{haspobject}}.font={{font}}",
|
||||||
|
"{{haspobject}}.xcen={{xcen}}",
|
||||||
|
"{{haspobject}}.ycen={{ycen}}",
|
||||||
|
"{{haspobject}}.pco={{selectedfg}}",
|
||||||
|
"{{haspobject}}.bco={{selectedbg}}",
|
||||||
|
"{{haspobject}}.pco2={{unselectedfg}}",
|
||||||
|
"{{haspobject}}.bco2={{unselectedbg}}",
|
||||||
|
"{{haspobject}}.txt=\"{{text}} \""
|
||||||
|
{%- if activepage|int == hasppage|int -%}
|
||||||
|
,"delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{selectedfg}},0,1,1,3,\"{{icon}}\""
|
||||||
|
{%- endif -%}]
|
||||||
|
#########################################################################
|
||||||
|
# Update weather condition if our weather provider changed state
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ (trigger.platform == "state") and (trigger.entity_id == weather_provider) }}'
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: >-
|
||||||
|
["{{haspobject}}.pco={{selectedfg}}",
|
||||||
|
"{{haspobject}}.font={{font}}",
|
||||||
|
"{{haspobject}}.txt=\"{{text}} \""
|
||||||
|
{%- if activepage|int == hasppage|int -%}
|
||||||
|
,"delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{selectedfg}},0,1,1,3,\"{{icon}}\""
|
||||||
|
{%- endif -%}]
|
||||||
|
|
||||||
|
#########################################################################
|
||||||
|
# Catch triggers fired by incoming MQTT messages
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ trigger.platform == "mqtt" }}'
|
||||||
|
sequence:
|
||||||
|
- choose:
|
||||||
|
#########################################################################
|
||||||
|
# Catch incoming JSON messages
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ (trigger.topic == jsontopic) and trigger.payload_json is defined }}"
|
||||||
|
sequence:
|
||||||
|
- choose:
|
||||||
|
#########################################################################
|
||||||
|
# Icon overlay
|
||||||
|
- conditions: # Somebody pressed our button which hides the overlaid icon. Put it back.
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ (trigger.topic == jsontopic ) and (trigger.payload_json.event == haspobject ) and (trigger.payload_json.value == "OFF") and (activepage|int == hasppage|int)}}'
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{selectedfg}},0,1,1,3,\"{{icon}}\""]'
|
||||||
|
- conditions: # Page changed to our page, so place the icon on the screen.
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ (trigger.topic == jsontopic ) and (trigger.payload_json.event == "page" ) and (trigger.payload_json.value == hasppage|int) }}'
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{selectedfg}},0,1,1,3,\"{{icon}}\""]'
|
||||||
|
#########################################################################
|
||||||
|
# Theme: Apply selected foreground color when it changes.
|
||||||
|
# Any change to the button will remove the overlaid icon.
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ trigger.topic == selectedfgtopic }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{commandtopic}}.pco"
|
||||||
|
payload: "{{trigger.payload}}"
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ activepage|int == hasppage|int }}"
|
||||||
|
- delay: "00:00:00.5"
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{trigger.payload}},0,1,1,3,\"{{icon}}\""]'
|
||||||
|
#########################################################################
|
||||||
|
# Theme: Apply selected background color on change
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ trigger.topic == selectedbgtopic }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{commandtopic}}.bco"
|
||||||
|
payload: "{{trigger.payload}}"
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ activepage|int == hasppage|int }}"
|
||||||
|
- delay: "00:00:00.5"
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{selectedfg}},0,1,1,3,\"{{icon}}\""]'
|
||||||
|
#########################################################################
|
||||||
|
# Theme: Apply unselected foreground color on change
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ trigger.topic == unselectedfgtopic }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{commandtopic}}.pco2"
|
||||||
|
payload: "{{trigger.payload}}"
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ activepage|int == hasppage|int }}"
|
||||||
|
- delay: "00:00:00.5"
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{selectedfg}},0,1,1,3,\"{{icon}}\""]'
|
||||||
|
#########################################################################
|
||||||
|
# Theme: Apply unselected background color on change
|
||||||
|
- conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ trigger.topic == unselectedbgtopic }}"
|
||||||
|
sequence:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{commandtopic}}.bco2"
|
||||||
|
payload: "{{trigger.payload}}"
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ activepage|int == hasppage|int }}"
|
||||||
|
- delay: "00:00:00.5"
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "{{jsoncommandtopic}}"
|
||||||
|
payload: '["delay=1","xstr {{xpos}},{{ypos}},{{iconwidth}},{{iconheight}},{{iconfont}},{{selectedfg}},0,1,1,3,\"{{icon}}\""]'
|
@ -0,0 +1,139 @@
|
|||||||
|
blueprint:
|
||||||
|
name: "HASP Remove MQTT discovery messages"
|
||||||
|
description: "Press RUN ACTIONS to remove retained MQTT discovery messages for a decommissioned HASP"
|
||||||
|
source_url: "https://github.com/HASwitchPlate/Blueprints/blob/main/hasp_Remove_MQTT_Discovery_Devices.yaml"
|
||||||
|
domain: automation
|
||||||
|
input:
|
||||||
|
haspname:
|
||||||
|
name: "HASP device name to remove"
|
||||||
|
description: "Enter the name of the HASP device to remove the MQTT discovery messages"
|
||||||
|
|
||||||
|
mode: single
|
||||||
|
max_exceeded: silent
|
||||||
|
|
||||||
|
variables:
|
||||||
|
haspname: !input haspname
|
||||||
|
|
||||||
|
trigger: []
|
||||||
|
|
||||||
|
action:
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "hasp/{{haspname}}/status"
|
||||||
|
payload: ""
|
||||||
|
retain: true
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "hasp/{{haspname}}/command"
|
||||||
|
payload: ""
|
||||||
|
retain: true
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "hasp/{{haspname}}/command/page"
|
||||||
|
payload: ""
|
||||||
|
retain: true
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "hasp/{{haspname}}/state/page"
|
||||||
|
payload: ""
|
||||||
|
retain: true
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "hasp/{{haspname}}/sensor"
|
||||||
|
payload: ""
|
||||||
|
retain: true
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "hasp/{{haspname}}/light/state"
|
||||||
|
payload: ""
|
||||||
|
retain: true
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "hasp/{{haspname}}/brightness/state"
|
||||||
|
payload: ""
|
||||||
|
retain: true
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "homeassistant/binary_sensor/{{haspname}}/config"
|
||||||
|
payload: ""
|
||||||
|
retain: true
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "homeassistant/light/{{haspname}}/config"
|
||||||
|
payload: ""
|
||||||
|
retain: true
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "homeassistant/sensor/{{haspname}}/config"
|
||||||
|
payload: ""
|
||||||
|
retain: true
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "homeassistant/number/{{haspname}}/config"
|
||||||
|
payload: ""
|
||||||
|
retain: true
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "homeassistant/light/{{haspname}}/selectedforegroundcolor/config"
|
||||||
|
payload: ""
|
||||||
|
retain: true
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "homeassistant/light/{{haspname}}/selectedbackgroundcolor/config"
|
||||||
|
payload: ""
|
||||||
|
retain: true
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "homeassistant/light/{{haspname}}/unselectedforegroundcolor/config"
|
||||||
|
payload: ""
|
||||||
|
retain: true
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "homeassistant/light/{{haspname}}/unselectedbackgroundcolor/config"
|
||||||
|
payload: ""
|
||||||
|
retain: true
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "hasp/{{haspname}}/light/selectedforegroundcolor/switch"
|
||||||
|
payload: ""
|
||||||
|
retain: true
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "hasp/{{haspname}}/light/selectedforegroundcolor/rgb"
|
||||||
|
payload: ""
|
||||||
|
retain: true
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "hasp/{{haspname}}/light/selectedbackgroundcolor/switch"
|
||||||
|
payload: ""
|
||||||
|
retain: true
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "hasp/{{haspname}}/light/selectedbackgroundcolor/rgb"
|
||||||
|
payload: ""
|
||||||
|
retain: true
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "hasp/{{haspname}}/light/unselectedforegroundcolor/switch"
|
||||||
|
payload: ""
|
||||||
|
retain: true
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "hasp/{{haspname}}/light/unselectedforegroundcolor/rgb"
|
||||||
|
payload: ""
|
||||||
|
retain: true
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "hasp/{{haspname}}/light/unselectedbackgroundcolor/switch"
|
||||||
|
payload: ""
|
||||||
|
retain: true
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "hasp/{{haspname}}/light/unselectedbackgroundcolor/rgb"
|
||||||
|
payload: ""
|
||||||
|
retain: true
|
||||||
|
- service: mqtt.publish
|
||||||
|
data:
|
||||||
|
topic: "hasp/{{haspname}}/alwayson"
|
||||||
|
payload: ""
|
||||||
|
retain: true
|
99
Home_Assistant/blueprints/hasp_Theme_Dark_on_Light.yaml
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
blueprint:
|
||||||
|
name: "HASP Theme Dark on Light"
|
||||||
|
description: |
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
Press RUN ACTIONS to apply the theme Dark on Light to the selected HASP device
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
source_url: "https://github.com/HASwitchPlate/Blueprints/blob/main/hasp_Theme_Dark_on_Light.yaml"
|
||||||
|
domain: automation
|
||||||
|
input:
|
||||||
|
haspdevice:
|
||||||
|
name: "HASP Device"
|
||||||
|
description: "Select the HASP device"
|
||||||
|
selector:
|
||||||
|
device:
|
||||||
|
integration: mqtt
|
||||||
|
manufacturer: "HASwitchPlate"
|
||||||
|
model: "HASPone v1.0.0"
|
||||||
|
|
||||||
|
mode: single
|
||||||
|
max_exceeded: silent
|
||||||
|
|
||||||
|
variables:
|
||||||
|
haspdevice: !input haspdevice
|
||||||
|
selectedfg_entity: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_selected_foreground_color(?:_\d+|)$") -%}
|
||||||
|
{{ entity }}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
selectedbg_entity: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_selected_background_color(?:_\d+|)$") -%}
|
||||||
|
{{ entity }}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
unselectedfg_entity: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_unselected_foreground_color(?:_\d+|)$") -%}
|
||||||
|
{{ entity }}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
unselectedbg_entity: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_unselected_background_color(?:_\d+|)$") -%}
|
||||||
|
{{ entity }}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
selected_foreground_brightness: "1"
|
||||||
|
selected_foreground_color: "[255, 255, 255]"
|
||||||
|
selected_background_brightness: "255"
|
||||||
|
selected_background_color: "[255, 255, 255]"
|
||||||
|
unselected_foreground_brightness: "224"
|
||||||
|
unselected_foreground_color: "[255, 255, 255]"
|
||||||
|
unselected_background_brightness: "96"
|
||||||
|
unselected_background_color: "[255, 255, 255]"
|
||||||
|
|
||||||
|
trigger: []
|
||||||
|
|
||||||
|
action:
|
||||||
|
- service: light.turn_on
|
||||||
|
data:
|
||||||
|
entity_id: "{{selectedfg_entity}}"
|
||||||
|
rgb_color: "{{selected_foreground_color}}"
|
||||||
|
- service: light.turn_on
|
||||||
|
data:
|
||||||
|
entity_id: "{{selectedfg_entity}}"
|
||||||
|
brightness: "{{selected_foreground_brightness}}"
|
||||||
|
- service: light.turn_on
|
||||||
|
data:
|
||||||
|
entity_id: "{{selectedbg_entity}}"
|
||||||
|
rgb_color: "{{selected_background_color}}"
|
||||||
|
- service: light.turn_on
|
||||||
|
data:
|
||||||
|
entity_id: "{{selectedbg_entity}}"
|
||||||
|
brightness: "{{selected_background_brightness}}"
|
||||||
|
- service: light.turn_on
|
||||||
|
data:
|
||||||
|
entity_id: "{{unselectedfg_entity}}"
|
||||||
|
rgb_color: "{{unselected_foreground_color}}"
|
||||||
|
- service: light.turn_on
|
||||||
|
data:
|
||||||
|
entity_id: "{{unselectedfg_entity}}"
|
||||||
|
brightness: "{{unselected_foreground_brightness}}"
|
||||||
|
- service: light.turn_on
|
||||||
|
data:
|
||||||
|
entity_id: "{{unselectedbg_entity}}"
|
||||||
|
rgb_color: "{{unselected_background_color}}"
|
||||||
|
- service: light.turn_on
|
||||||
|
data:
|
||||||
|
entity_id: "{{unselectedbg_entity}}"
|
||||||
|
brightness: "{{unselected_background_brightness}}"
|
99
Home_Assistant/blueprints/hasp_Theme_Light_on_Dark.yaml
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
blueprint:
|
||||||
|
name: "HASP Theme Light on Dark"
|
||||||
|
description: |
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
Press RUN ACTIONS to apply the theme Light on Dark to the selected HASP device
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
source_url: "https://github.com/HASwitchPlate/Blueprints/blob/main/hasp_Theme_Light_on_Dark.yaml"
|
||||||
|
domain: automation
|
||||||
|
input:
|
||||||
|
haspdevice:
|
||||||
|
name: "HASP Device"
|
||||||
|
description: "Select the HASP device"
|
||||||
|
selector:
|
||||||
|
device:
|
||||||
|
integration: mqtt
|
||||||
|
manufacturer: "HASwitchPlate"
|
||||||
|
model: "HASPone v1.0.0"
|
||||||
|
|
||||||
|
mode: single
|
||||||
|
max_exceeded: silent
|
||||||
|
|
||||||
|
variables:
|
||||||
|
haspdevice: !input haspdevice
|
||||||
|
selectedfg_entity: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_selected_foreground_color(?:_\d+|)$") -%}
|
||||||
|
{{ entity }}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
selectedbg_entity: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_selected_background_color(?:_\d+|)$") -%}
|
||||||
|
{{ entity }}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
unselectedfg_entity: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_unselected_foreground_color(?:_\d+|)$") -%}
|
||||||
|
{{ entity }}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
unselectedbg_entity: >-
|
||||||
|
{%- for entity in device_entities(haspdevice) -%}
|
||||||
|
{%- if entity|regex_search("^light\..*_unselected_background_color(?:_\d+|)$") -%}
|
||||||
|
{{ entity }}
|
||||||
|
{{ break }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
selected_foreground_brightness: "255"
|
||||||
|
selected_foreground_color: "[255, 255, 255]"
|
||||||
|
selected_background_brightness: "1"
|
||||||
|
selected_background_color: "[255, 255, 255]"
|
||||||
|
unselected_foreground_brightness: "224"
|
||||||
|
unselected_foreground_color: "[255, 255, 255]"
|
||||||
|
unselected_background_brightness: "64"
|
||||||
|
unselected_background_color: "[255, 255, 255]"
|
||||||
|
|
||||||
|
trigger: []
|
||||||
|
|
||||||
|
action:
|
||||||
|
- service: light.turn_on
|
||||||
|
data:
|
||||||
|
entity_id: "{{selectedfg_entity}}"
|
||||||
|
rgb_color: "{{selected_foreground_color}}"
|
||||||
|
- service: light.turn_on
|
||||||
|
data:
|
||||||
|
entity_id: "{{selectedfg_entity}}"
|
||||||
|
brightness: "{{selected_foreground_brightness}}"
|
||||||
|
- service: light.turn_on
|
||||||
|
data:
|
||||||
|
entity_id: "{{selectedbg_entity}}"
|
||||||
|
rgb_color: "{{selected_background_color}}"
|
||||||
|
- service: light.turn_on
|
||||||
|
data:
|
||||||
|
entity_id: "{{selectedbg_entity}}"
|
||||||
|
brightness: "{{selected_background_brightness}}"
|
||||||
|
- service: light.turn_on
|
||||||
|
data:
|
||||||
|
entity_id: "{{unselectedfg_entity}}"
|
||||||
|
rgb_color: "{{unselected_foreground_color}}"
|
||||||
|
- service: light.turn_on
|
||||||
|
data:
|
||||||
|
entity_id: "{{unselectedfg_entity}}"
|
||||||
|
brightness: "{{unselected_foreground_brightness}}"
|
||||||
|
- service: light.turn_on
|
||||||
|
data:
|
||||||
|
entity_id: "{{unselectedbg_entity}}"
|
||||||
|
rgb_color: "{{unselected_background_color}}"
|
||||||
|
- service: light.turn_on
|
||||||
|
data:
|
||||||
|
entity_id: "{{unselectedbg_entity}}"
|
||||||
|
brightness: "{{unselected_background_brightness}}"
|
BIN
Nextion_HMI/HASwitchPlate-Enhanced.tft
Normal file
BIN
Nextion_HMI/HASwitchPlate-Inverted.tft
Normal file
BIN
Nextion_HMI/HASwitchPlate-TJC.HMI
Normal file
BIN
Nextion_HMI/HASwitchPlate-TJC.tft
Normal file
BIN
Nextion_HMI/HASwitchPlate.HMI
Normal file
BIN
Nextion_HMI/HASwitchPlate.tft
Normal file
15
Nextion_HMI/README.md
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
# Nextion HMI
|
||||||
|
|
||||||
|
The Nextion panel ships with a default demo configuration which we need to overwrite with the included compiled code. The file [HASwitchPlate.tft](HASwitchPlate.tft) can be saved to a FAT32-formatted microSD card and placed into the panel before power on. The panel will recognize the code update and load it automatically, after which you're ready to connect to the microcontroller. Note that some users have reported problems with cards formatted under Linux, so use a Windows system for this process and it should work without trouble.
|
||||||
|
|
||||||
|
If you want to manually edit your own panels, [download the editor from Nextion](https://nextion.itead.cc/resource/download/nextion-editor/) and you can flash the panel directly via serial.
|
||||||
|
|
||||||
|
Please [check the Nextion HMI documentation](../Documentation/02_Nextion_HMI.md) for additional details.
|
||||||
|
|
||||||
|
## Nextion Files Explained
|
||||||
|
|
||||||
|
* **[HASwitchPlate.hmi](HASwitchPlate.hmi)** This is the "source" file which you can modify in the [Nextion editor](https://nextion.itead.cc/resource/download/nextion-editor/). If you want to make your own Nextion HMI, I'd recommend starting with this file, keeping Page 0 (`p0`), then start your own design on pages 1+.
|
||||||
|
* **[HASwitchPlate.tft](HASwitchPlate.tft)** This is the compiled Nextion firmware for the HASwitchPlate usable on a standard Nextion 2.4" LCD, model `NX3224T024_011R`
|
||||||
|
* **[HASwitchPlate-Enhanced.tft](HASwitchPlate-Enhanced.tft)** This is the compiled Nextion firmware for the HASwitchPlate usable on an enhanced Nextion 2.4" LCD, model `NX4024K032_011R`. This panel will not fit in the provided 3D printed enclosure and no enhanced features are used in this project. **Don't buy this panel**, but if you did (*and you shouldn't*), you can use this firmware.
|
||||||
|
* **[HASwitchPlate-TJC.hmi](HASwitchPlate-TJC.hmi)** This is the "source" file for the Chinese-market TJC LCD model `TJC3224T024_011`. This file cannot be used with the english language editor. If you purchase this panel, you will need to use the Chinese-language "USART HMI" editor to modify this file. **Don't buy this panel**.
|
||||||
|
* **[HASwitchPlate-TJC.tft](HASwitchPlate-TJC.tft)** This is the compiled Nextion firmware for the HASwitchPlate usable on a Chinese market TJC 2.4" LCD, model `TJC3224T024_011`.
|
200
PCB/HASwitchPlate-cache.lib
Normal file
@ -0,0 +1,200 @@
|
|||||||
|
EESchema-LIBRARY Version 2.4
|
||||||
|
#encoding utf-8
|
||||||
|
#
|
||||||
|
# Device_R_US
|
||||||
|
#
|
||||||
|
DEF Device_R_US R 0 0 N Y 1 F N
|
||||||
|
F0 "R" 100 0 50 V V C CNN
|
||||||
|
F1 "Device_R_US" -100 0 50 V V C CNN
|
||||||
|
F2 "" 40 -10 50 V I C CNN
|
||||||
|
F3 "" 0 0 50 H I C CNN
|
||||||
|
$FPLIST
|
||||||
|
R_*
|
||||||
|
$ENDFPLIST
|
||||||
|
DRAW
|
||||||
|
P 2 0 1 0 0 -90 0 -100 N
|
||||||
|
P 2 0 1 0 0 90 0 100 N
|
||||||
|
P 5 0 1 0 0 -30 40 -45 0 -60 -40 -75 0 -90 N
|
||||||
|
P 5 0 1 0 0 30 40 15 0 0 -40 -15 0 -30 N
|
||||||
|
P 5 0 1 0 0 90 40 75 0 60 -40 45 0 30 N
|
||||||
|
X ~ 1 0 150 50 D 50 50 1 1 P
|
||||||
|
X ~ 2 0 -150 50 U 50 50 1 1 P
|
||||||
|
ENDDRAW
|
||||||
|
ENDDEF
|
||||||
|
#
|
||||||
|
# HASwitchPlate-library_Conn_01x08-conn-HASwitchPlate
|
||||||
|
#
|
||||||
|
DEF HASwitchPlate-library_Conn_01x08-conn-HASwitchPlate J 0 40 Y N 1 F N
|
||||||
|
F0 "J" 0 400 50 H V C CNN
|
||||||
|
F1 "HASwitchPlate-library_Conn_01x08-conn-HASwitchPlate" 0 -500 50 H V C CNN
|
||||||
|
F2 "" 0 0 50 H I C CNN
|
||||||
|
F3 "" 0 0 50 H I C CNN
|
||||||
|
$FPLIST
|
||||||
|
Connector*:*_??x*mm*
|
||||||
|
Connector*:*1x??x*mm*
|
||||||
|
Pin?Header?Straight?1X*
|
||||||
|
Pin?Header?Angled?1X*
|
||||||
|
Socket?Strip?Straight?1X*
|
||||||
|
Socket?Strip?Angled?1X*
|
||||||
|
$ENDFPLIST
|
||||||
|
DRAW
|
||||||
|
S -50 -395 0 -405 1 1 6 N
|
||||||
|
S -50 -295 0 -305 1 1 6 N
|
||||||
|
S -50 -195 0 -205 1 1 6 N
|
||||||
|
S -50 -95 0 -105 1 1 6 N
|
||||||
|
S -50 5 0 -5 1 1 6 N
|
||||||
|
S -50 105 0 95 1 1 6 N
|
||||||
|
S -50 205 0 195 1 1 6 N
|
||||||
|
S -50 305 0 295 1 1 6 N
|
||||||
|
S -50 350 50 -450 1 1 10 f
|
||||||
|
X Pin_1 1 -200 300 150 R 50 50 1 1 P
|
||||||
|
X Pin_2 2 -200 200 150 R 50 50 1 1 P
|
||||||
|
X Pin_3 3 -200 100 150 R 50 50 1 1 P
|
||||||
|
X Pin_4 4 -200 0 150 R 50 50 1 1 P
|
||||||
|
X Pin_5 5 -200 -100 150 R 50 50 1 1 P
|
||||||
|
X Pin_6 6 -200 -200 150 R 50 50 1 1 P
|
||||||
|
X Pin_7 7 -200 -300 150 R 50 50 1 1 P
|
||||||
|
X Pin_8 8 -200 -400 150 R 50 50 1 1 P
|
||||||
|
ENDDRAW
|
||||||
|
ENDDEF
|
||||||
|
#
|
||||||
|
# HASwitchPlate-library_IRM-03-5-HASwitchPlate-library
|
||||||
|
#
|
||||||
|
DEF HASwitchPlate-library_IRM-03-5-HASwitchPlate-library U 0 40 Y Y 1 F N
|
||||||
|
F0 "U" 400 250 50 H V C CNN
|
||||||
|
F1 "HASwitchPlate-library_IRM-03-5-HASwitchPlate-library" 400 -150 50 H V C CNN
|
||||||
|
F2 "HASwitchPlate:ACDC-Converter_MeanWell-IRM-03-x" 400 -250 50 H I C CNN
|
||||||
|
F3 "" 400 -350 50 H I C CNN
|
||||||
|
$FPLIST
|
||||||
|
ACDC?Converter?MeanWell?IRM?03?x*
|
||||||
|
$ENDFPLIST
|
||||||
|
DRAW
|
||||||
|
S 100 200 700 -100 0 1 0 f
|
||||||
|
X AC/L 1 0 100 100 R 50 50 1 1 W
|
||||||
|
X AC/N 2 0 0 100 R 50 50 1 1 W
|
||||||
|
X +Vout 3 800 100 100 L 50 50 1 1 w
|
||||||
|
X -Vout 4 800 0 100 L 50 50 1 1 w
|
||||||
|
ENDDRAW
|
||||||
|
ENDDEF
|
||||||
|
#
|
||||||
|
# HASwitchPlate-library_SLC03-series
|
||||||
|
#
|
||||||
|
DEF HASwitchPlate-library_SLC03-series U 0 40 Y Y 1 F N
|
||||||
|
F0 "U" 400 250 50 H V C CNN
|
||||||
|
F1 "HASwitchPlate-library_SLC03-series" 400 -150 50 H V C CNN
|
||||||
|
F2 "" 400 -250 50 H I C CNN
|
||||||
|
F3 "" 400 -350 50 H I C CNN
|
||||||
|
DRAW
|
||||||
|
S 100 200 700 -100 0 1 0 f
|
||||||
|
X -Vin 1 0 0 100 R 50 50 1 1 W
|
||||||
|
X -Vout 10 800 0 100 L 50 50 1 1 w
|
||||||
|
X +Vin 16 0 100 100 R 50 50 1 1 W
|
||||||
|
X +Vout 9 800 100 100 L 50 50 1 1 w
|
||||||
|
ENDDRAW
|
||||||
|
ENDDEF
|
||||||
|
#
|
||||||
|
# HASwitchPlate-library_Screw_Terminal_01x02-HASwitchPlate-library
|
||||||
|
#
|
||||||
|
DEF HASwitchPlate-library_Screw_Terminal_01x02-HASwitchPlate-library J 0 40 Y N 1 F N
|
||||||
|
F0 "J" 0 100 50 H V C CNN
|
||||||
|
F1 "HASwitchPlate-library_Screw_Terminal_01x02-HASwitchPlate-library" 0 -200 50 H V C CNN
|
||||||
|
F2 "" 0 0 50 H I C CNN
|
||||||
|
F3 "" 0 0 50 H I C CNN
|
||||||
|
$FPLIST
|
||||||
|
Connector*Terminal*Block*:*
|
||||||
|
TerminalBlock*
|
||||||
|
$ENDFPLIST
|
||||||
|
DRAW
|
||||||
|
C 0 -100 25 1 1 6 N
|
||||||
|
C 0 0 25 1 1 6 N
|
||||||
|
S -50 50 50 -150 1 1 10 f
|
||||||
|
P 2 1 1 6 -21 -87 13 -120 N
|
||||||
|
P 2 1 1 6 -21 13 13 -20 N
|
||||||
|
P 2 1 1 6 -14 -80 20 -113 N
|
||||||
|
P 2 1 1 6 -14 20 20 -13 N
|
||||||
|
X Pin_1 1 -200 0 150 R 50 50 1 1 P
|
||||||
|
X Pin_2 2 -200 -100 150 R 50 50 1 1 P
|
||||||
|
ENDDRAW
|
||||||
|
ENDDEF
|
||||||
|
#
|
||||||
|
# HASwitchPlate-library_WeMos_mini-HASwitchPlate
|
||||||
|
#
|
||||||
|
DEF HASwitchPlate-library_WeMos_mini-HASwitchPlate U 0 40 Y Y 1 F N
|
||||||
|
F0 "U" 0 500 60 H V C CNN
|
||||||
|
F1 "HASwitchPlate-library_WeMos_mini-HASwitchPlate" 0 -500 60 H V C CNN
|
||||||
|
F2 "" 550 -700 60 H V C CNN
|
||||||
|
F3 "" 550 -700 60 H V C CNN
|
||||||
|
DRAW
|
||||||
|
S -300 450 300 -550 0 1 0 N
|
||||||
|
X 5V 1 -500 350 200 R 50 50 1 1 W
|
||||||
|
X A0 10 500 -250 200 L 50 50 1 1 B
|
||||||
|
X D0 11 500 -150 200 L 50 50 1 1 B
|
||||||
|
X D5 12 500 -50 200 L 50 50 1 1 B
|
||||||
|
X D6 13 500 50 200 L 50 50 1 1 B
|
||||||
|
X D7 14 500 150 200 L 50 50 1 1 B
|
||||||
|
X D8 15 500 250 200 L 50 50 1 1 B
|
||||||
|
X 3.3V 16 500 350 200 L 50 50 1 1 w
|
||||||
|
X GND 2 -500 250 200 R 50 50 1 1 W
|
||||||
|
X D4 3 -500 150 200 R 50 50 1 1 B
|
||||||
|
X D3 4 -500 50 200 R 50 50 1 1 B
|
||||||
|
X D2 5 -500 -50 200 R 50 50 1 1 B
|
||||||
|
X D1 6 -500 -150 200 R 50 50 1 1 B
|
||||||
|
X Rx 7 -500 -250 200 R 50 50 1 1 B
|
||||||
|
X Tx 8 -500 -350 200 R 50 50 1 1 B
|
||||||
|
X Rst 9 500 -350 200 L 50 50 1 1 B
|
||||||
|
ENDDRAW
|
||||||
|
ENDDEF
|
||||||
|
#
|
||||||
|
# HASwitchPlate-library_XH2.54-4P-HASwitchPlate-library
|
||||||
|
#
|
||||||
|
DEF HASwitchPlate-library_XH2.54-4P-HASwitchPlate-library J 0 40 Y Y 1 F N
|
||||||
|
F0 "J" 0 200 50 H V C CNN
|
||||||
|
F1 "HASwitchPlate-library_XH2.54-4P-HASwitchPlate-library" 0 -300 50 H V C CNN
|
||||||
|
F2 "" 0 0 50 H I C CNN
|
||||||
|
F3 "" 0 0 50 H I C CNN
|
||||||
|
$FPLIST
|
||||||
|
Connector*:*_??x*mm*
|
||||||
|
Connector*:*1x??x*mm*
|
||||||
|
Pin?Header?Straight?1X*
|
||||||
|
Pin?Header?Angled?1X*
|
||||||
|
$ENDFPLIST
|
||||||
|
DRAW
|
||||||
|
S 34 -195 0 -205 1 1 6 F
|
||||||
|
S 34 -95 0 -105 1 1 6 F
|
||||||
|
S 34 5 0 -5 1 1 6 F
|
||||||
|
S 34 105 0 95 1 1 6 F
|
||||||
|
P 2 1 1 6 50 -200 34 -200 N
|
||||||
|
P 2 1 1 6 50 -100 34 -100 N
|
||||||
|
P 2 1 1 6 50 0 34 0 N
|
||||||
|
P 2 1 1 6 50 100 34 100 N
|
||||||
|
X GND 1 200 100 150 L 50 50 1 1 I
|
||||||
|
X RX 2 200 0 150 L 50 50 1 1 I
|
||||||
|
X TX 3 200 -100 150 L 50 50 1 1 O
|
||||||
|
X +5V 4 200 -200 150 L 50 50 1 1 P
|
||||||
|
ENDDRAW
|
||||||
|
ENDDEF
|
||||||
|
#
|
||||||
|
# Transistor_BJT_S8050
|
||||||
|
#
|
||||||
|
DEF Transistor_BJT_S8050 Q 0 0 Y N 1 F N
|
||||||
|
F0 "Q" 200 75 50 H V L CNN
|
||||||
|
F1 "Transistor_BJT_S8050" 200 0 50 H V L CNN
|
||||||
|
F2 "Package_TO_SOT_THT:TO-92_Inline" 200 -75 50 H I L CIN
|
||||||
|
F3 "" 0 0 50 H I L CNN
|
||||||
|
$FPLIST
|
||||||
|
TO?92*
|
||||||
|
$ENDFPLIST
|
||||||
|
DRAW
|
||||||
|
C 50 0 111 0 1 10 N
|
||||||
|
P 2 0 1 0 0 0 25 0 N
|
||||||
|
P 2 0 1 0 25 25 100 100 N
|
||||||
|
P 3 0 1 0 25 -25 100 -100 100 -100 N
|
||||||
|
P 3 0 1 20 25 75 25 -75 25 -75 N
|
||||||
|
P 5 0 1 0 50 -70 70 -50 90 -90 50 -70 50 -70 F
|
||||||
|
X E 1 100 -200 100 U 50 50 1 1 P
|
||||||
|
X B 2 -200 0 200 R 50 50 1 1 I
|
||||||
|
X C 3 100 200 100 D 50 50 1 1 P
|
||||||
|
ENDDRAW
|
||||||
|
ENDDEF
|
||||||
|
#
|
||||||
|
#End Library
|
3
PCB/HASwitchPlate-library.dcm
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
EESchema-DOCLIB Version 2.0
|
||||||
|
#
|
||||||
|
#End Doc Library
|
156
PCB/HASwitchPlate-library.lib
Normal file
@ -0,0 +1,156 @@
|
|||||||
|
EESchema-LIBRARY Version 2.4
|
||||||
|
#encoding utf-8
|
||||||
|
#
|
||||||
|
# Conn_01x08-conn-HASwitchPlate
|
||||||
|
#
|
||||||
|
DEF Conn_01x08-conn-HASwitchPlate J 0 40 Y N 1 F N
|
||||||
|
F0 "J" 0 400 50 H V C CNN
|
||||||
|
F1 "Conn_01x08-conn-HASwitchPlate" 0 -500 50 H V C CNN
|
||||||
|
F2 "" 0 0 50 H I C CNN
|
||||||
|
F3 "" 0 0 50 H I C CNN
|
||||||
|
$FPLIST
|
||||||
|
Connector*:*_??x*mm*
|
||||||
|
Connector*:*1x??x*mm*
|
||||||
|
Pin?Header?Straight?1X*
|
||||||
|
Pin?Header?Angled?1X*
|
||||||
|
Socket?Strip?Straight?1X*
|
||||||
|
Socket?Strip?Angled?1X*
|
||||||
|
$ENDFPLIST
|
||||||
|
DRAW
|
||||||
|
S -50 -395 0 -405 1 1 6 N
|
||||||
|
S -50 -295 0 -305 1 1 6 N
|
||||||
|
S -50 -195 0 -205 1 1 6 N
|
||||||
|
S -50 -95 0 -105 1 1 6 N
|
||||||
|
S -50 5 0 -5 1 1 6 N
|
||||||
|
S -50 105 0 95 1 1 6 N
|
||||||
|
S -50 205 0 195 1 1 6 N
|
||||||
|
S -50 305 0 295 1 1 6 N
|
||||||
|
S -50 350 50 -450 1 1 10 f
|
||||||
|
X Pin_1 1 -200 300 150 R 50 50 1 1 P
|
||||||
|
X Pin_2 2 -200 200 150 R 50 50 1 1 P
|
||||||
|
X Pin_3 3 -200 100 150 R 50 50 1 1 P
|
||||||
|
X Pin_4 4 -200 0 150 R 50 50 1 1 P
|
||||||
|
X Pin_5 5 -200 -100 150 R 50 50 1 1 P
|
||||||
|
X Pin_6 6 -200 -200 150 R 50 50 1 1 P
|
||||||
|
X Pin_7 7 -200 -300 150 R 50 50 1 1 P
|
||||||
|
X Pin_8 8 -200 -400 150 R 50 50 1 1 P
|
||||||
|
ENDDRAW
|
||||||
|
ENDDEF
|
||||||
|
#
|
||||||
|
# IRM-03-5-HASwitchPlate-library
|
||||||
|
#
|
||||||
|
DEF IRM-03-5-HASwitchPlate-library U 0 40 Y Y 1 F N
|
||||||
|
F0 "U" 400 250 50 H V C CNN
|
||||||
|
F1 "IRM-03-5-HASwitchPlate-library" 400 -150 50 H V C CNN
|
||||||
|
F2 "HASwitchPlate:ACDC-Converter_MeanWell-IRM-03-x" 400 -250 50 H I C CNN
|
||||||
|
F3 "" 400 -350 50 H I C CNN
|
||||||
|
$FPLIST
|
||||||
|
ACDC?Converter?MeanWell?IRM?03?x*
|
||||||
|
$ENDFPLIST
|
||||||
|
DRAW
|
||||||
|
S 100 200 700 -100 0 1 0 f
|
||||||
|
X AC/L 1 0 100 100 R 50 50 1 1 W
|
||||||
|
X AC/N 2 0 0 100 R 50 50 1 1 W
|
||||||
|
X +Vout 3 800 100 100 L 50 50 1 1 w
|
||||||
|
X -Vout 4 800 0 100 L 50 50 1 1 w
|
||||||
|
ENDDRAW
|
||||||
|
ENDDEF
|
||||||
|
#
|
||||||
|
# SLC03-series
|
||||||
|
#
|
||||||
|
DEF SLC03-series U 0 40 Y Y 1 F N
|
||||||
|
F0 "U" 400 250 50 H V C CNN
|
||||||
|
F1 "SLC03-series" 400 -150 50 H V C CNN
|
||||||
|
F2 "" 400 -250 50 H I C CNN
|
||||||
|
F3 "" 400 -350 50 H I C CNN
|
||||||
|
DRAW
|
||||||
|
S 100 200 700 -100 0 1 0 f
|
||||||
|
X -Vin 1 0 0 100 R 50 50 1 1 W
|
||||||
|
X -Vout 10 800 0 100 L 50 50 1 1 w
|
||||||
|
X +Vin 16 0 100 100 R 50 50 1 1 W
|
||||||
|
X +Vout 9 800 100 100 L 50 50 1 1 w
|
||||||
|
ENDDRAW
|
||||||
|
ENDDEF
|
||||||
|
#
|
||||||
|
# Screw_Terminal_01x02-HASwitchPlate-library
|
||||||
|
#
|
||||||
|
DEF Screw_Terminal_01x02-HASwitchPlate-library J 0 40 Y N 1 F N
|
||||||
|
F0 "J" 0 100 50 H V C CNN
|
||||||
|
F1 "Screw_Terminal_01x02-HASwitchPlate-library" 0 -200 50 H V C CNN
|
||||||
|
F2 "" 0 0 50 H I C CNN
|
||||||
|
F3 "" 0 0 50 H I C CNN
|
||||||
|
$FPLIST
|
||||||
|
Connector*Terminal*Block*:*
|
||||||
|
TerminalBlock*
|
||||||
|
$ENDFPLIST
|
||||||
|
DRAW
|
||||||
|
C 0 -100 25 1 1 6 N
|
||||||
|
C 0 0 25 1 1 6 N
|
||||||
|
S -50 50 50 -150 1 1 10 f
|
||||||
|
P 2 1 1 6 -21 -87 13 -120 N
|
||||||
|
P 2 1 1 6 -21 13 13 -20 N
|
||||||
|
P 2 1 1 6 -14 -80 20 -113 N
|
||||||
|
P 2 1 1 6 -14 20 20 -13 N
|
||||||
|
X Pin_1 1 -200 0 150 R 50 50 1 1 P
|
||||||
|
X Pin_2 2 -200 -100 150 R 50 50 1 1 P
|
||||||
|
ENDDRAW
|
||||||
|
ENDDEF
|
||||||
|
#
|
||||||
|
# WeMos_mini-HASwitchPlate
|
||||||
|
#
|
||||||
|
DEF WeMos_mini-HASwitchPlate U 0 40 Y Y 1 F N
|
||||||
|
F0 "U" 0 500 60 H V C CNN
|
||||||
|
F1 "WeMos_mini-HASwitchPlate" 0 -500 60 H V C CNN
|
||||||
|
F2 "" 550 -700 60 H V C CNN
|
||||||
|
F3 "" 550 -700 60 H V C CNN
|
||||||
|
DRAW
|
||||||
|
S -300 450 300 -550 0 1 0 N
|
||||||
|
X 5V 1 -500 350 200 R 50 50 1 1 W
|
||||||
|
X A0 10 500 -250 200 L 50 50 1 1 B
|
||||||
|
X D0 11 500 -150 200 L 50 50 1 1 B
|
||||||
|
X D5 12 500 -50 200 L 50 50 1 1 B
|
||||||
|
X D6 13 500 50 200 L 50 50 1 1 B
|
||||||
|
X D7 14 500 150 200 L 50 50 1 1 B
|
||||||
|
X D8 15 500 250 200 L 50 50 1 1 B
|
||||||
|
X 3.3V 16 500 350 200 L 50 50 1 1 w
|
||||||
|
X GND 2 -500 250 200 R 50 50 1 1 W
|
||||||
|
X D4 3 -500 150 200 R 50 50 1 1 B
|
||||||
|
X D3 4 -500 50 200 R 50 50 1 1 B
|
||||||
|
X D2 5 -500 -50 200 R 50 50 1 1 B
|
||||||
|
X D1 6 -500 -150 200 R 50 50 1 1 B
|
||||||
|
X Rx 7 -500 -250 200 R 50 50 1 1 B
|
||||||
|
X Tx 8 -500 -350 200 R 50 50 1 1 B
|
||||||
|
X Rst 9 500 -350 200 L 50 50 1 1 B
|
||||||
|
ENDDRAW
|
||||||
|
ENDDEF
|
||||||
|
#
|
||||||
|
# XH2.54-4P-HASwitchPlate-library
|
||||||
|
#
|
||||||
|
DEF XH2.54-4P-HASwitchPlate-library J 0 40 Y Y 1 F N
|
||||||
|
F0 "J" 0 200 50 H V C CNN
|
||||||
|
F1 "XH2.54-4P-HASwitchPlate-library" 0 -300 50 H V C CNN
|
||||||
|
F2 "" 0 0 50 H I C CNN
|
||||||
|
F3 "" 0 0 50 H I C CNN
|
||||||
|
$FPLIST
|
||||||
|
Connector*:*_??x*mm*
|
||||||
|
Connector*:*1x??x*mm*
|
||||||
|
Pin?Header?Straight?1X*
|
||||||
|
Pin?Header?Angled?1X*
|
||||||
|
$ENDFPLIST
|
||||||
|
DRAW
|
||||||
|
S 34 -195 0 -205 1 1 6 F
|
||||||
|
S 34 -95 0 -105 1 1 6 F
|
||||||
|
S 34 5 0 -5 1 1 6 F
|
||||||
|
S 34 105 0 95 1 1 6 F
|
||||||
|
P 2 1 1 6 50 -200 34 -200 N
|
||||||
|
P 2 1 1 6 50 -100 34 -100 N
|
||||||
|
P 2 1 1 6 50 0 34 0 N
|
||||||
|
P 2 1 1 6 50 100 34 100 N
|
||||||
|
X GND 1 200 100 150 L 50 50 1 1 I
|
||||||
|
X RX 2 200 0 150 L 50 50 1 1 I
|
||||||
|
X TX 3 200 -100 150 L 50 50 1 1 O
|
||||||
|
X +5V 4 200 -200 150 L 50 50 1 1 P
|
||||||
|
ENDDRAW
|
||||||
|
ENDDEF
|
||||||
|
#
|
||||||
|
#End Library
|
BIN
PCB/HASwitchPlate.gerbers.zip
Normal file
2219
PCB/HASwitchPlate.gerbers/HASwitchPlate-B.Cu.gbr
Normal file
2076
PCB/HASwitchPlate.gerbers/HASwitchPlate-B.Mask.gbr
Normal file
7486
PCB/HASwitchPlate.gerbers/HASwitchPlate-B.SilkS.gbr
Normal file
88
PCB/HASwitchPlate.gerbers/HASwitchPlate-Edge.Cuts.gbr
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.0.2)-1*
|
||||||
|
G04 #@! TF.CreationDate,2019-02-07T08:47:28-05:00*
|
||||||
|
G04 #@! TF.ProjectId,HASwitchPlate,48415377-6974-4636-9850-6c6174652e6b,rev?*
|
||||||
|
G04 #@! TF.SameCoordinates,Original*
|
||||||
|
G04 #@! TF.FileFunction,Profile,NP*
|
||||||
|
%FSLAX46Y46*%
|
||||||
|
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||||
|
G04 Created by KiCad (PCBNEW (5.0.2)-1) date 2/7/2019 8:47:28 AM*
|
||||||
|
%MOMM*%
|
||||||
|
%LPD*%
|
||||||
|
G01*
|
||||||
|
G04 APERTURE LIST*
|
||||||
|
%ADD10C,0.150000*%
|
||||||
|
G04 APERTURE END LIST*
|
||||||
|
D10*
|
||||||
|
X160000000Y-101000000D02*
|
||||||
|
X160000000Y-122000000D01*
|
||||||
|
X160000000Y-132100000D02*
|
||||||
|
X160000000Y-124000000D01*
|
||||||
|
X141500000Y-123000000D02*
|
||||||
|
G75*
|
||||||
|
G03X142500000Y-124000000I1000000J0D01*
|
||||||
|
G01*
|
||||||
|
X142500000Y-122000000D02*
|
||||||
|
G75*
|
||||||
|
G03X141500000Y-123000000I0J-1000000D01*
|
||||||
|
G01*
|
||||||
|
X142500000Y-122000000D02*
|
||||||
|
X160000000Y-122000000D01*
|
||||||
|
X142500000Y-124000000D02*
|
||||||
|
X160000000Y-124000000D01*
|
||||||
|
X118500000Y-140000000D02*
|
||||||
|
X159000000Y-140000000D01*
|
||||||
|
X101000000Y-140000000D02*
|
||||||
|
X106000000Y-140000000D01*
|
||||||
|
X108000000Y-138000000D02*
|
||||||
|
X116500000Y-138000000D01*
|
||||||
|
X117500000Y-139000000D02*
|
||||||
|
G75*
|
||||||
|
G03X118500000Y-140000000I1000000J0D01*
|
||||||
|
G01*
|
||||||
|
X117500000Y-139000000D02*
|
||||||
|
G75*
|
||||||
|
G03X116500000Y-138000000I-1000000J0D01*
|
||||||
|
G01*
|
||||||
|
X107998255Y-138000002D02*
|
||||||
|
G75*
|
||||||
|
G03X107000000Y-139000000I1745J-999998D01*
|
||||||
|
G01*
|
||||||
|
X106000000Y-140000000D02*
|
||||||
|
G75*
|
||||||
|
G03X107000000Y-139000000I0J1000000D01*
|
||||||
|
G01*
|
||||||
|
X101000000Y-100000000D02*
|
||||||
|
G75*
|
||||||
|
G03X100000000Y-101000000I0J-1000000D01*
|
||||||
|
G01*
|
||||||
|
X100000000Y-139000000D02*
|
||||||
|
G75*
|
||||||
|
G03X101000000Y-140000000I1000000J0D01*
|
||||||
|
G01*
|
||||||
|
X159000000Y-140000000D02*
|
||||||
|
G75*
|
||||||
|
G03X160000000Y-139000000I0J1000000D01*
|
||||||
|
G01*
|
||||||
|
X160000000Y-101000000D02*
|
||||||
|
G75*
|
||||||
|
G03X159000000Y-100000000I-1000000J0D01*
|
||||||
|
G01*
|
||||||
|
X141500000Y-133100000D02*
|
||||||
|
G75*
|
||||||
|
G03X142500000Y-134100000I1000000J0D01*
|
||||||
|
G01*
|
||||||
|
X142500000Y-132100000D02*
|
||||||
|
G75*
|
||||||
|
G03X141500000Y-133100000I0J-1000000D01*
|
||||||
|
G01*
|
||||||
|
X160000000Y-134100000D02*
|
||||||
|
X160000000Y-139000000D01*
|
||||||
|
X142500000Y-134100000D02*
|
||||||
|
X160000000Y-134100000D01*
|
||||||
|
X142500000Y-132100000D02*
|
||||||
|
X160000000Y-132100000D01*
|
||||||
|
X101000000Y-100000000D02*
|
||||||
|
X159000000Y-100000000D01*
|
||||||
|
X100000000Y-101000000D02*
|
||||||
|
X100000000Y-139000000D01*
|
||||||
|
M02*
|
2035
PCB/HASwitchPlate.gerbers/HASwitchPlate-F.Cu.gbr
Normal file
2076
PCB/HASwitchPlate.gerbers/HASwitchPlate-F.Mask.gbr
Normal file
7096
PCB/HASwitchPlate.gerbers/HASwitchPlate-F.SilkS.gbr
Normal file
15
PCB/HASwitchPlate.gerbers/HASwitchPlate-NPTH.drl
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
M48
|
||||||
|
;DRILL file {KiCad (5.0.2)-1} date 2/7/2019 8:47:16 AM
|
||||||
|
;FORMAT={-:-/ absolute / inch / decimal}
|
||||||
|
FMAT,2
|
||||||
|
INCH,TZ
|
||||||
|
T1C0.0866
|
||||||
|
%
|
||||||
|
G90
|
||||||
|
G05
|
||||||
|
T1
|
||||||
|
X4.0157Y-5.4331
|
||||||
|
X6.2205Y-4.0157
|
||||||
|
X4.0157Y-4.012
|
||||||
|
T0
|
||||||
|
M30
|
76
PCB/HASwitchPlate.gerbers/HASwitchPlate-PTH.drl
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
M48
|
||||||
|
;DRILL file {KiCad (5.0.2)-1} date 2/7/2019 8:47:16 AM
|
||||||
|
;FORMAT={-:-/ absolute / inch / decimal}
|
||||||
|
FMAT,2
|
||||||
|
INCH,TZ
|
||||||
|
T1C0.0157
|
||||||
|
T2C0.0260
|
||||||
|
T3C0.0295
|
||||||
|
T4C0.0299
|
||||||
|
T5C0.0315
|
||||||
|
T6C0.0394
|
||||||
|
T7C0.0400
|
||||||
|
T8C0.0598
|
||||||
|
%
|
||||||
|
G90
|
||||||
|
G05
|
||||||
|
T1
|
||||||
|
X4.142Y-4.9335
|
||||||
|
X4.402Y-4.812
|
||||||
|
X5.352Y-4.532
|
||||||
|
X6.047Y-4.4808
|
||||||
|
T2
|
||||||
|
X5.0874Y-4.9406
|
||||||
|
X5.0874Y-5.3406
|
||||||
|
X5.1874Y-4.9406
|
||||||
|
X5.1874Y-5.3406
|
||||||
|
X5.7874Y-4.9406
|
||||||
|
T3
|
||||||
|
X5.987Y-4.127
|
||||||
|
X6.037Y-4.077
|
||||||
|
X6.087Y-4.127
|
||||||
|
T4
|
||||||
|
X5.7874Y-5.3406
|
||||||
|
X5.0906Y-4.1406
|
||||||
|
X5.0906Y-4.3406
|
||||||
|
X5.7874Y-4.1406
|
||||||
|
X5.7874Y-5.1406
|
||||||
|
X5.7874Y-5.3406
|
||||||
|
T5
|
||||||
|
X5.982Y-4.272
|
||||||
|
X5.982Y-4.672
|
||||||
|
T6
|
||||||
|
X4.1535Y-4.0157
|
||||||
|
X4.2535Y-4.0157
|
||||||
|
X4.3535Y-4.0157
|
||||||
|
X4.4535Y-4.0157
|
||||||
|
X4.5535Y-4.0157
|
||||||
|
X4.6535Y-4.0157
|
||||||
|
X4.7535Y-4.0157
|
||||||
|
X4.8535Y-4.0157
|
||||||
|
X6.212Y-4.362
|
||||||
|
X6.212Y-4.462
|
||||||
|
X6.212Y-4.562
|
||||||
|
X6.212Y-4.662
|
||||||
|
T7
|
||||||
|
X3.9988Y-4.4335
|
||||||
|
X3.9988Y-4.5335
|
||||||
|
X3.9988Y-4.6335
|
||||||
|
X3.9988Y-4.7335
|
||||||
|
X3.9988Y-4.8335
|
||||||
|
X3.9988Y-4.9335
|
||||||
|
X3.9988Y-5.0335
|
||||||
|
X3.9988Y-5.1335
|
||||||
|
X4.8988Y-4.4335
|
||||||
|
X4.8988Y-4.5335
|
||||||
|
X4.8988Y-4.6335
|
||||||
|
X4.8988Y-4.7335
|
||||||
|
X4.8988Y-4.8335
|
||||||
|
X4.8988Y-4.9335
|
||||||
|
X4.8988Y-5.0335
|
||||||
|
X4.8988Y-5.1335
|
||||||
|
T8
|
||||||
|
X6.122Y-5.1406
|
||||||
|
X6.122Y-5.3406
|
||||||
|
T0
|
||||||
|
M30
|
2789
PCB/HASwitchPlate.kicad_pcb
Normal file
251
PCB/HASwitchPlate.net
Normal file
@ -0,0 +1,251 @@
|
|||||||
|
(export (version D)
|
||||||
|
(design
|
||||||
|
(source C:\Sync\Dev\HASwitchPlate\Dev\PCB2\HASwitchPlate.sch)
|
||||||
|
(date "1/25/2019 5:20:01 PM")
|
||||||
|
(tool "Eeschema (5.0.2)-1")
|
||||||
|
(sheet (number 1) (name /) (tstamps /)
|
||||||
|
(title_block
|
||||||
|
(title "HA SwitchPlate")
|
||||||
|
(company https://github.com/aderusha/HASwitchPlate)
|
||||||
|
(rev)
|
||||||
|
(date)
|
||||||
|
(source HASwitchPlate.sch)
|
||||||
|
(comment (number 1) (value allen@derusha.org))
|
||||||
|
(comment (number 2) (value ""))
|
||||||
|
(comment (number 3) (value ""))
|
||||||
|
(comment (number 4) (value "")))))
|
||||||
|
(components
|
||||||
|
(comp (ref U2)
|
||||||
|
(value WeMos_mini)
|
||||||
|
(footprint wemos-d1-mini:wemos-d1-mini-with-pin-header-and-connector)
|
||||||
|
(libsource (lib HASwitchPlate-library) (part WeMos_mini-HASwitchPlate) (description ""))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 59E27669))
|
||||||
|
(comp (ref J1)
|
||||||
|
(value "Screw Term.")
|
||||||
|
(footprint Connectors_Terminal_Blocks:TerminalBlock_bornier-2_P5.08mm)
|
||||||
|
(libsource (lib HASwitchPlate-library) (part Screw_Terminal_01x02-HASwitchPlate-library) (description ""))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 59E27A1F))
|
||||||
|
(comp (ref J2)
|
||||||
|
(value XH2.54-4P)
|
||||||
|
(footprint HASwitchPlate:JST_XH2.54_04x2.54mm_Straight)
|
||||||
|
(libsource (lib HASwitchPlate-library) (part XH2.54-4P-HASwitchPlate-library) (description ""))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 59E297BA))
|
||||||
|
(comp (ref U1)
|
||||||
|
(value IRM-03-5)
|
||||||
|
(footprint HASwitchPlate:ACDC-Converter_MeanWell-IRM-03-x)
|
||||||
|
(datasheet https://www.meanwell.com/Upload/PDF/IRM-03/IRM-03-SPEC.PDF)
|
||||||
|
(libsource (lib HASwitchPlate-library) (part IRM-03-5-HASwitchPlate-library) (description ""))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 59E37A8B))
|
||||||
|
(comp (ref J3)
|
||||||
|
(value Breakout)
|
||||||
|
(footprint Pin_Headers:Pin_Header_Straight_1x08_Pitch2.54mm)
|
||||||
|
(libsource (lib HASwitchPlate-library) (part Conn_01x08-conn-HASwitchPlate) (description ""))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5AB13587))
|
||||||
|
(comp (ref U3)
|
||||||
|
(value SLC03-series)
|
||||||
|
(footprint HASwitchPlate:ACDC-Converter_MeanWell-SLC03-series)
|
||||||
|
(datasheet http://www.meanwellusa.com/productPdf.aspx?i=786)
|
||||||
|
(libsource (lib HASwitchPlate-library) (part SLC03-series) (description ""))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5C2FF5D5))
|
||||||
|
(comp (ref Q1)
|
||||||
|
(value S8050)
|
||||||
|
(footprint Package_TO_SOT_THT:TO-92L_HandSolder)
|
||||||
|
(datasheet http://www.unisonic.com.tw/datasheet/S8050.pdf)
|
||||||
|
(libsource (lib Transistor_BJT) (part S8050) (description "0.7A Ic, 20V Vce, Low Voltage High Current NPN Transistor, TO-92"))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5C306D5D))
|
||||||
|
(comp (ref R1)
|
||||||
|
(value 1k)
|
||||||
|
(footprint Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal)
|
||||||
|
(datasheet ~)
|
||||||
|
(libsource (lib Device) (part R_US) (description "Resistor, US symbol"))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5C306DF8)))
|
||||||
|
(libparts
|
||||||
|
(libpart (lib Device) (part R_US)
|
||||||
|
(description "Resistor, US symbol")
|
||||||
|
(docs ~)
|
||||||
|
(footprints
|
||||||
|
(fp R_*))
|
||||||
|
(fields
|
||||||
|
(field (name Reference) R)
|
||||||
|
(field (name Value) R_US))
|
||||||
|
(pins
|
||||||
|
(pin (num 1) (name ~) (type passive))
|
||||||
|
(pin (num 2) (name ~) (type passive))))
|
||||||
|
(libpart (lib HASwitchPlate-library) (part Conn_01x08-conn-HASwitchPlate)
|
||||||
|
(footprints
|
||||||
|
(fp Connector*:*_??x*mm*)
|
||||||
|
(fp Connector*:*1x??x*mm*)
|
||||||
|
(fp Pin?Header?Straight?1X*)
|
||||||
|
(fp Pin?Header?Angled?1X*)
|
||||||
|
(fp Socket?Strip?Straight?1X*)
|
||||||
|
(fp Socket?Strip?Angled?1X*))
|
||||||
|
(fields
|
||||||
|
(field (name Reference) J)
|
||||||
|
(field (name Value) Conn_01x08-conn-HASwitchPlate))
|
||||||
|
(pins
|
||||||
|
(pin (num 1) (name Pin_1) (type passive))
|
||||||
|
(pin (num 2) (name Pin_2) (type passive))
|
||||||
|
(pin (num 3) (name Pin_3) (type passive))
|
||||||
|
(pin (num 4) (name Pin_4) (type passive))
|
||||||
|
(pin (num 5) (name Pin_5) (type passive))
|
||||||
|
(pin (num 6) (name Pin_6) (type passive))
|
||||||
|
(pin (num 7) (name Pin_7) (type passive))
|
||||||
|
(pin (num 8) (name Pin_8) (type passive))))
|
||||||
|
(libpart (lib HASwitchPlate-library) (part IRM-03-5-HASwitchPlate-library)
|
||||||
|
(footprints
|
||||||
|
(fp ACDC?Converter?MeanWell?IRM?03?x*))
|
||||||
|
(fields
|
||||||
|
(field (name Reference) U)
|
||||||
|
(field (name Value) IRM-03-5-HASwitchPlate-library)
|
||||||
|
(field (name Footprint) HASwitchPlate:ACDC-Converter_MeanWell-IRM-03-x))
|
||||||
|
(pins
|
||||||
|
(pin (num 1) (name AC/L) (type power_in))
|
||||||
|
(pin (num 2) (name AC/N) (type power_in))
|
||||||
|
(pin (num 3) (name +Vout) (type power_out))
|
||||||
|
(pin (num 4) (name -Vout) (type power_out))))
|
||||||
|
(libpart (lib HASwitchPlate-library) (part SLC03-series)
|
||||||
|
(fields
|
||||||
|
(field (name Reference) U)
|
||||||
|
(field (name Value) SLC03-series))
|
||||||
|
(pins
|
||||||
|
(pin (num 1) (name -Vin) (type power_in))
|
||||||
|
(pin (num 9) (name +Vout) (type power_out))
|
||||||
|
(pin (num 10) (name -Vout) (type power_out))
|
||||||
|
(pin (num 16) (name +Vin) (type power_in))))
|
||||||
|
(libpart (lib HASwitchPlate-library) (part Screw_Terminal_01x02-HASwitchPlate-library)
|
||||||
|
(footprints
|
||||||
|
(fp Connector*Terminal*Block*:*)
|
||||||
|
(fp TerminalBlock*))
|
||||||
|
(fields
|
||||||
|
(field (name Reference) J)
|
||||||
|
(field (name Value) Screw_Terminal_01x02-HASwitchPlate-library))
|
||||||
|
(pins
|
||||||
|
(pin (num 1) (name Pin_1) (type passive))
|
||||||
|
(pin (num 2) (name Pin_2) (type passive))))
|
||||||
|
(libpart (lib HASwitchPlate-library) (part WeMos_mini-HASwitchPlate)
|
||||||
|
(fields
|
||||||
|
(field (name Reference) U)
|
||||||
|
(field (name Value) WeMos_mini-HASwitchPlate))
|
||||||
|
(pins
|
||||||
|
(pin (num 1) (name 5V) (type power_in))
|
||||||
|
(pin (num 2) (name GND) (type power_in))
|
||||||
|
(pin (num 3) (name D4) (type BiDi))
|
||||||
|
(pin (num 4) (name D3) (type BiDi))
|
||||||
|
(pin (num 5) (name D2) (type BiDi))
|
||||||
|
(pin (num 6) (name D1) (type BiDi))
|
||||||
|
(pin (num 7) (name Rx) (type BiDi))
|
||||||
|
(pin (num 8) (name Tx) (type BiDi))
|
||||||
|
(pin (num 9) (name Rst) (type BiDi))
|
||||||
|
(pin (num 10) (name A0) (type BiDi))
|
||||||
|
(pin (num 11) (name D0) (type BiDi))
|
||||||
|
(pin (num 12) (name D5) (type BiDi))
|
||||||
|
(pin (num 13) (name D6) (type BiDi))
|
||||||
|
(pin (num 14) (name D7) (type BiDi))
|
||||||
|
(pin (num 15) (name D8) (type BiDi))
|
||||||
|
(pin (num 16) (name 3.3V) (type power_out))))
|
||||||
|
(libpart (lib HASwitchPlate-library) (part XH2.54-4P-HASwitchPlate-library)
|
||||||
|
(footprints
|
||||||
|
(fp Connector*:*_??x*mm*)
|
||||||
|
(fp Connector*:*1x??x*mm*)
|
||||||
|
(fp Pin?Header?Straight?1X*)
|
||||||
|
(fp Pin?Header?Angled?1X*))
|
||||||
|
(fields
|
||||||
|
(field (name Reference) J)
|
||||||
|
(field (name Value) XH2.54-4P-HASwitchPlate-library))
|
||||||
|
(pins
|
||||||
|
(pin (num 1) (name GND) (type input))
|
||||||
|
(pin (num 2) (name RX) (type input))
|
||||||
|
(pin (num 3) (name TX) (type output))
|
||||||
|
(pin (num 4) (name +5V) (type passive))))
|
||||||
|
(libpart (lib Transistor_BJT) (part S8050)
|
||||||
|
(description "0.7A Ic, 20V Vce, Low Voltage High Current NPN Transistor, TO-92")
|
||||||
|
(docs http://www.unisonic.com.tw/datasheet/S8050.pdf)
|
||||||
|
(footprints
|
||||||
|
(fp TO?92*))
|
||||||
|
(fields
|
||||||
|
(field (name Reference) Q)
|
||||||
|
(field (name Value) S8050)
|
||||||
|
(field (name Footprint) Package_TO_SOT_THT:TO-92_Inline))
|
||||||
|
(pins
|
||||||
|
(pin (num 1) (name E) (type passive))
|
||||||
|
(pin (num 2) (name B) (type input))
|
||||||
|
(pin (num 3) (name C) (type passive)))))
|
||||||
|
(libraries
|
||||||
|
(library (logical Device)
|
||||||
|
(uri "C:\\Program Files\\KiCad\\share\\kicad\\library/Device.lib"))
|
||||||
|
(library (logical HASwitchPlate-library)
|
||||||
|
(uri C:\Sync\Dev\HASwitchPlate\Dev\PCB2/HASwitchPlate-library.lib))
|
||||||
|
(library (logical Transistor_BJT)
|
||||||
|
(uri "C:\\Program Files\\KiCad\\share\\kicad\\library/Transistor_BJT.lib")))
|
||||||
|
(nets
|
||||||
|
(net (code 1) (name /D8_DBG)
|
||||||
|
(node (ref J3) (pin 8))
|
||||||
|
(node (ref U2) (pin 15)))
|
||||||
|
(net (code 2) (name /D0)
|
||||||
|
(node (ref U2) (pin 11))
|
||||||
|
(node (ref J3) (pin 5)))
|
||||||
|
(net (code 3) (name /D1)
|
||||||
|
(node (ref U2) (pin 6))
|
||||||
|
(node (ref J3) (pin 6)))
|
||||||
|
(net (code 4) (name /D2)
|
||||||
|
(node (ref J3) (pin 7))
|
||||||
|
(node (ref U2) (pin 5)))
|
||||||
|
(net (code 5) (name "Net-(R1-Pad1)")
|
||||||
|
(node (ref U2) (pin 13))
|
||||||
|
(node (ref R1) (pin 1)))
|
||||||
|
(net (code 6) (name /LCD_CTL)
|
||||||
|
(node (ref Q1) (pin 2))
|
||||||
|
(node (ref R1) (pin 2)))
|
||||||
|
(net (code 7) (name /LCD_GND)
|
||||||
|
(node (ref J2) (pin 1))
|
||||||
|
(node (ref Q1) (pin 3)))
|
||||||
|
(net (code 8) (name /LCD_RX)
|
||||||
|
(node (ref U2) (pin 3))
|
||||||
|
(node (ref J2) (pin 2)))
|
||||||
|
(net (code 9) (name /AC_N)
|
||||||
|
(node (ref U3) (pin 1))
|
||||||
|
(node (ref J1) (pin 2))
|
||||||
|
(node (ref U1) (pin 2)))
|
||||||
|
(net (code 10) (name /+3.3V)
|
||||||
|
(node (ref U2) (pin 16))
|
||||||
|
(node (ref J3) (pin 3)))
|
||||||
|
(net (code 11) (name /A0)
|
||||||
|
(node (ref U2) (pin 10))
|
||||||
|
(node (ref J3) (pin 4)))
|
||||||
|
(net (code 12) (name "Net-(U2-Pad12)")
|
||||||
|
(node (ref U2) (pin 12)))
|
||||||
|
(net (code 13) (name /GND)
|
||||||
|
(node (ref U2) (pin 2))
|
||||||
|
(node (ref J3) (pin 1))
|
||||||
|
(node (ref U1) (pin 4))
|
||||||
|
(node (ref U3) (pin 10))
|
||||||
|
(node (ref Q1) (pin 1)))
|
||||||
|
(net (code 14) (name "Net-(U2-Pad4)")
|
||||||
|
(node (ref U2) (pin 4)))
|
||||||
|
(net (code 15) (name "Net-(U2-Pad7)")
|
||||||
|
(node (ref U2) (pin 7)))
|
||||||
|
(net (code 16) (name "Net-(U2-Pad8)")
|
||||||
|
(node (ref U2) (pin 8)))
|
||||||
|
(net (code 17) (name "Net-(U2-Pad9)")
|
||||||
|
(node (ref U2) (pin 9)))
|
||||||
|
(net (code 18) (name /AC_L)
|
||||||
|
(node (ref U3) (pin 16))
|
||||||
|
(node (ref U1) (pin 1))
|
||||||
|
(node (ref J1) (pin 1)))
|
||||||
|
(net (code 19) (name /+5V)
|
||||||
|
(node (ref U2) (pin 1))
|
||||||
|
(node (ref U3) (pin 9))
|
||||||
|
(node (ref J2) (pin 4))
|
||||||
|
(node (ref J3) (pin 2))
|
||||||
|
(node (ref U1) (pin 3)))
|
||||||
|
(net (code 20) (name /LCD_TX)
|
||||||
|
(node (ref J2) (pin 3))
|
||||||
|
(node (ref U2) (pin 14)))))
|
@ -0,0 +1,32 @@
|
|||||||
|
(module HASwitchPlate:ACDC-Converter_MeanWell-IRM-03-x (layer F.Cu) (tedit 5AC6543F)
|
||||||
|
(descr "ACDC-Converter, 3W, Meanwell, IRM-03, THT")
|
||||||
|
(fp_text reference U1 (at -15 -5) (layer F.SilkS) hide
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(fp_text value IRM-03-5 (at -15 19) (layer F.Fab)
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(fp_circle (center -2 -2) (end -1.9 -1.9) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start 3.26 -3.11) (end -33.74 -3.11) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start 3.26 -3.11) (end 3.26 20.89) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start -33.74 -3.11) (end -33.74 20.89) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start 3.26 20.89) (end -33.74 20.89) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start 3.76 21.39) (end -34.24 21.39) (layer Eco1.User) (width 0.12))
|
||||||
|
(fp_line (start 3.76 -3.61) (end -34.24 -3.61) (layer Eco1.User) (width 0.12))
|
||||||
|
(fp_line (start -34.24 -3.61) (end -34.24 21.39) (layer Eco1.User) (width 0.12))
|
||||||
|
(fp_line (start 3.76 -3.61) (end 3.76 21.39) (layer Eco1.User) (width 0.12))
|
||||||
|
(fp_line (start 4.01 21.64) (end -34.49 21.64) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start -34.49 -3.86) (end -34.49 21.64) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start 4.01 -3.86) (end -34.49 -3.86) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start 4.01 -3.86) (end 4.01 21.64) (layer F.CrtYd) (width 0.05))
|
||||||
|
(pad 4 thru_hole circle (at -30.48 17.7) (size 2.29 2.29) (drill 0.76) (layers *.Cu *.Mask))
|
||||||
|
(pad 3 thru_hole circle (at -25.4 17.7) (size 2.29 2.29) (drill 0.76) (layers *.Cu *.Mask))
|
||||||
|
(pad 2 thru_hole circle (at -5.08 0) (size 2.29 2.29) (drill 0.76) (layers *.Cu *.Mask))
|
||||||
|
(pad 1 thru_hole circle (at 0 0) (size 2.29 2.29) (drill 0.76) (layers *.Cu *.Mask))
|
||||||
|
(pad 5 thru_hole circle (at -30.48 0) (size 2.29 2.29) (drill 0.76) (layers *.Cu *.Mask))
|
||||||
|
(model "shapes3D/Mean Well IRM-03 Series.wrl"
|
||||||
|
(offset (xyz -33.78199949264526 3.047999954223633 0))
|
||||||
|
(scale (xyz 0.393 0.393 0.393))
|
||||||
|
(rotate (xyz 0 0 90))
|
||||||
|
)
|
||||||
|
)
|
@ -0,0 +1,18 @@
|
|||||||
|
(module ACDC-Converter_MeanWell-SLC03-series (layer F.Cu) (tedit 5C316393)
|
||||||
|
(fp_text reference U3 (at 9.144 10.287) (layer F.SilkS) hide
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(fp_text value SLC03-series (at 8.509 -0.127) (layer F.Fab)
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(fp_line (start -2.16 -1.87) (end -2.16 11.93) (layer F.SilkS) (width 0.15))
|
||||||
|
(fp_line (start 19.941 -1.87) (end 19.941 11.93) (layer F.SilkS) (width 0.15))
|
||||||
|
(fp_line (start -2.16 -1.87) (end 19.94 -1.87) (layer F.SilkS) (width 0.15))
|
||||||
|
(fp_line (start -2.16 11.93) (end 19.94 11.93) (layer F.SilkS) (width 0.15))
|
||||||
|
(pad 7 thru_hole circle (at 15.24 10.16) (size 1.524 1.524) (drill 0.66) (layers *.Cu *.Mask))
|
||||||
|
(pad 1 thru_hole circle (at 0 10.16) (size 1.524 1.524) (drill 0.66) (layers *.Cu *.Mask))
|
||||||
|
(pad 10 thru_hole circle (at 15.24 0) (size 1.524 1.524) (drill 0.66) (layers *.Cu *.Mask))
|
||||||
|
(pad 16 thru_hole circle (at 0 0) (size 2.29 2.29) (drill 0.76) (layers *.Cu *.Mask))
|
||||||
|
(pad 9 thru_hole circle (at 17.78 0) (size 1.524 1.524) (drill 0.66) (layers *.Cu *.Mask))
|
||||||
|
(pad 8 thru_hole circle (at 17.78 10.16) (size 1.524 1.524) (drill 0.66) (layers *.Cu *.Mask))
|
||||||
|
)
|
@ -0,0 +1,42 @@
|
|||||||
|
(module HASwitchPlate:JST_XH2.54_04x2.54mm_Straight (layer F.Cu) (tedit 59E398E1)
|
||||||
|
(descr "JST XH series connector, B04B-XH-A, top entry type, through hole")
|
||||||
|
(tags "connector jst xh tht top vertical 2.50mm")
|
||||||
|
(fp_text reference J2 (at 3.81 1.778) (layer F.SilkS)
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(fp_text value XH2.54-4P (at 3.75 4.5) (layer F.Fab)
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(fp_text user %R (at 3.81 3.048) (layer F.Fab)
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(fp_line (start 9.3 2.75) (end 3.75 2.75) (layer F.SilkS) (width 0.12))
|
||||||
|
(fp_line (start 9.42 -0.2) (end 9.42 2.75) (layer F.SilkS) (width 0.12))
|
||||||
|
(fp_line (start 10.17 -0.2) (end 9.42 -0.2) (layer F.SilkS) (width 0.12))
|
||||||
|
(fp_line (start -1.8 2.75) (end 3.75 2.75) (layer F.SilkS) (width 0.12))
|
||||||
|
(fp_line (start -1.8 -0.2) (end -1.8 2.75) (layer F.SilkS) (width 0.12))
|
||||||
|
(fp_line (start -2.55 -0.2) (end -1.8 -0.2) (layer F.SilkS) (width 0.12))
|
||||||
|
(fp_line (start 8.38 -1.7) (end 10.17 -1.7) (layer F.SilkS) (width 0.12))
|
||||||
|
(fp_line (start -2.55 -1.7) (end -0.75 -1.7) (layer F.SilkS) (width 0.12))
|
||||||
|
(fp_line (start 0.75 -1.7) (end 6.83 -1.7) (layer F.SilkS) (width 0.12))
|
||||||
|
(fp_line (start 10.17 3.5) (end 10.17 -1.7) (layer F.SilkS) (width 0.12))
|
||||||
|
(fp_line (start -2.55 3.5) (end 10.17 3.5) (layer F.SilkS) (width 0.12))
|
||||||
|
(fp_line (start -2.55 -1.7) (end -2.55 3.5) (layer F.SilkS) (width 0.12))
|
||||||
|
(fp_line (start 10.57 -2.85) (end -2.95 -2.85) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start 10.57 3.9) (end 10.57 -2.85) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start -2.95 3.9) (end 10.57 3.9) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start -2.95 -2.85) (end -2.95 3.9) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start 10.07 -2.35) (end -2.45 -2.35) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start 10.07 3.4) (end 10.07 -2.35) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start -2.45 3.4) (end 10.07 3.4) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start -2.45 -2.35) (end -2.45 3.4) (layer F.Fab) (width 0.1))
|
||||||
|
(pad 1 thru_hole rect (at 7.62 0) (size 1.75 1.75) (drill 1) (layers *.Cu *.Mask))
|
||||||
|
(pad 2 thru_hole circle (at 5.08 0) (size 1.75 1.75) (drill 1) (layers *.Cu *.Mask))
|
||||||
|
(pad 3 thru_hole circle (at 2.54 0) (size 1.75 1.75) (drill 1) (layers *.Cu *.Mask))
|
||||||
|
(pad 4 thru_hole circle (at 0 0) (size 1.75 1.75) (drill 1) (layers *.Cu *.Mask))
|
||||||
|
(model ${KISYS3DMOD}/Connector_JST.3dshapes/JST_XH_B04B-XH-A_1x04_P2.50mm_Vertical.wrl
|
||||||
|
(at (xyz 0 0 0))
|
||||||
|
(scale (xyz 1 1 1))
|
||||||
|
(rotate (xyz 0 0 0))
|
||||||
|
)
|
||||||
|
)
|
482
PCB/HASwitchPlate.pretty/KiCad-Logo2_12mm_SilkScreen.kicad_mod
Normal file
@ -0,0 +1,482 @@
|
|||||||
|
(module Symbol:KiCad-Logo2_12mm_SilkScreen (layer F.Cu) (tedit 0)
|
||||||
|
(descr "KiCad Logo")
|
||||||
|
(tags "Logo KiCad")
|
||||||
|
(attr virtual)
|
||||||
|
(fp_text reference REF** (at 0 0) (layer F.SilkS) hide
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(fp_text value KiCad-Logo2_12mm_SilkScreen (at 0.75 0) (layer F.Fab) hide
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -12.297397 4.558391) (xy -12.21808 4.559197) (xy -11.985669 4.564805) (xy -11.791026 4.581462)
|
||||||
|
(xy -11.627516 4.610957) (xy -11.488506 4.655074) (xy -11.367361 4.715602) (xy -11.257449 4.794327)
|
||||||
|
(xy -11.218191 4.828525) (xy -11.153069 4.908542) (xy -11.094348 5.017123) (xy -11.049089 5.13748)
|
||||||
|
(xy -11.024355 5.252824) (xy -11.021785 5.295446) (xy -11.03789 5.413599) (xy -11.081047 5.542659)
|
||||||
|
(xy -11.143524 5.664819) (xy -11.217587 5.762269) (xy -11.229617 5.774027) (xy -11.331519 5.856671)
|
||||||
|
(xy -11.443108 5.921186) (xy -11.570818 5.96926) (xy -11.721082 6.002584) (xy -11.900334 6.022849)
|
||||||
|
(xy -12.115007 6.031746) (xy -12.213337 6.0325) (xy -12.33836 6.031898) (xy -12.426282 6.029381)
|
||||||
|
(xy -12.485353 6.023881) (xy -12.52382 6.014332) (xy -12.549932 5.999666) (xy -12.563928 5.987143)
|
||||||
|
(xy -12.577149 5.971929) (xy -12.58752 5.952302) (xy -12.595385 5.923005) (xy -12.601091 5.87878)
|
||||||
|
(xy -12.604981 5.814369) (xy -12.6074 5.724514) (xy -12.608694 5.603959) (xy -12.609206 5.447444)
|
||||||
|
(xy -12.609285 5.295446) (xy -12.609785 5.092717) (xy -12.609677 4.930768) (xy -12.607748 4.853214)
|
||||||
|
(xy -12.314464 4.853214) (xy -12.314464 5.737679) (xy -12.127366 5.737507) (xy -12.014784 5.734278)
|
||||||
|
(xy -11.896872 5.72596) (xy -11.798493 5.714325) (xy -11.7955 5.713846) (xy -11.6365 5.675404)
|
||||||
|
(xy -11.513174 5.615533) (xy -11.419363 5.530335) (xy -11.359757 5.438091) (xy -11.32303 5.335766)
|
||||||
|
(xy -11.325878 5.239686) (xy -11.368502 5.136696) (xy -11.451874 5.030153) (xy -11.567406 4.951204)
|
||||||
|
(xy -11.717577 4.898433) (xy -11.817939 4.879758) (xy -11.931863 4.866643) (xy -12.052605 4.85715)
|
||||||
|
(xy -12.155301 4.853204) (xy -12.161384 4.853185) (xy -12.314464 4.853214) (xy -12.607748 4.853214)
|
||||||
|
(xy -12.606549 4.805059) (xy -12.597986 4.711048) (xy -12.581578 4.644197) (xy -12.55491 4.599963)
|
||||||
|
(xy -12.515571 4.573806) (xy -12.461148 4.561186) (xy -12.389227 4.557561) (xy -12.297397 4.558391)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy -9.467666 4.558552) (xy -9.32823 4.5593) (xy -9.222983 4.56104) (xy -9.146344 4.564177)
|
||||||
|
(xy -9.09273 4.569113) (xy -9.056557 4.576253) (xy -9.032241 4.586001) (xy -9.014201 4.598761)
|
||||||
|
(xy -9.007669 4.604633) (xy -8.967942 4.667027) (xy -8.960789 4.738718) (xy -8.986923 4.802364)
|
||||||
|
(xy -8.999007 4.815227) (xy -9.018552 4.827698) (xy -9.050023 4.83732) (xy -9.099256 4.844559)
|
||||||
|
(xy -9.172086 4.849883) (xy -9.274349 4.853762) (xy -9.411882 4.856664) (xy -9.537623 4.858429)
|
||||||
|
(xy -10.035268 4.864554) (xy -10.042069 4.994955) (xy -10.04887 5.125357) (xy -9.711075 5.125357)
|
||||||
|
(xy -9.564426 5.126622) (xy -9.457064 5.131914) (xy -9.382957 5.143478) (xy -9.336069 5.163558)
|
||||||
|
(xy -9.310367 5.194398) (xy -9.299816 5.238244) (xy -9.298214 5.278937) (xy -9.303193 5.328868)
|
||||||
|
(xy -9.321984 5.36566) (xy -9.360367 5.391235) (xy -9.42412 5.407516) (xy -9.519024 5.416426)
|
||||||
|
(xy -9.650858 5.419887) (xy -9.722814 5.420179) (xy -10.046607 5.420179) (xy -10.046607 5.737679)
|
||||||
|
(xy -9.547678 5.737679) (xy -9.384133 5.737906) (xy -9.259837 5.738929) (xy -9.168686 5.741256)
|
||||||
|
(xy -9.104572 5.745395) (xy -9.06139 5.751857) (xy -9.033033 5.761148) (xy -9.013395 5.773779)
|
||||||
|
(xy -9.003393 5.783036) (xy -8.969082 5.837063) (xy -8.958035 5.885089) (xy -8.973809 5.943751)
|
||||||
|
(xy -9.003393 5.987143) (xy -9.019176 6.000803) (xy -9.039551 6.01141) (xy -9.069998 6.019348)
|
||||||
|
(xy -9.115997 6.025003) (xy -9.18303 6.028759) (xy -9.276578 6.031) (xy -9.40212 6.032111)
|
||||||
|
(xy -9.565138 6.032476) (xy -9.649732 6.0325) (xy -9.830888 6.03234) (xy -9.972168 6.031602)
|
||||||
|
(xy -10.079052 6.029904) (xy -10.157022 6.026859) (xy -10.211559 6.022083) (xy -10.248142 6.015192)
|
||||||
|
(xy -10.272253 6.005801) (xy -10.289373 5.993525) (xy -10.296071 5.987143) (xy -10.309328 5.971882)
|
||||||
|
(xy -10.319719 5.952193) (xy -10.327591 5.922801) (xy -10.333293 5.87843) (xy -10.337172 5.813803)
|
||||||
|
(xy -10.339577 5.723644) (xy -10.340856 5.602678) (xy -10.341355 5.445628) (xy -10.341428 5.2994)
|
||||||
|
(xy -10.341361 5.112134) (xy -10.34089 4.964928) (xy -10.339613 4.852482) (xy -10.337129 4.769499)
|
||||||
|
(xy -10.333036 4.71068) (xy -10.326931 4.670727) (xy -10.318412 4.644341) (xy -10.307078 4.626225)
|
||||||
|
(xy -10.292525 4.61108) (xy -10.28894 4.607703) (xy -10.271541 4.592755) (xy -10.251325 4.58118)
|
||||||
|
(xy -10.222684 4.572545) (xy -10.180009 4.566422) (xy -10.117695 4.562379) (xy -10.030132 4.559986)
|
||||||
|
(xy -9.911713 4.558811) (xy -9.756831 4.558425) (xy -9.646877 4.558393) (xy -9.467666 4.558552)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy -7.416366 4.560973) (xy -7.266068 4.57148) (xy -7.126283 4.587891) (xy -7.005137 4.609587)
|
||||||
|
(xy -6.910754 4.63595) (xy -6.851261 4.666364) (xy -6.842129 4.675317) (xy -6.810375 4.744788)
|
||||||
|
(xy -6.820004 4.816108) (xy -6.869257 4.877127) (xy -6.871607 4.878875) (xy -6.900577 4.897676)
|
||||||
|
(xy -6.930819 4.907562) (xy -6.973001 4.908763) (xy -7.037792 4.901507) (xy -7.135861 4.886024)
|
||||||
|
(xy -7.14375 4.884721) (xy -7.289877 4.866769) (xy -7.447534 4.857913) (xy -7.605656 4.857827)
|
||||||
|
(xy -7.75318 4.866185) (xy -7.87904 4.882659) (xy -7.972172 4.906923) (xy -7.978291 4.909362)
|
||||||
|
(xy -8.045855 4.947217) (xy -8.069593 4.985527) (xy -8.05101 5.023204) (xy -7.991611 5.05916)
|
||||||
|
(xy -7.892901 5.092306) (xy -7.756385 5.121554) (xy -7.665357 5.135636) (xy -7.476138 5.162723)
|
||||||
|
(xy -7.325645 5.187484) (xy -7.207466 5.212063) (xy -7.115191 5.238605) (xy -7.04241 5.269253)
|
||||||
|
(xy -6.98271 5.306152) (xy -6.929682 5.351445) (xy -6.887069 5.395923) (xy -6.836514 5.457895)
|
||||||
|
(xy -6.811635 5.511184) (xy -6.803854 5.576839) (xy -6.803571 5.600883) (xy -6.809415 5.680671)
|
||||||
|
(xy -6.832771 5.74003) (xy -6.873193 5.792716) (xy -6.955344 5.873254) (xy -7.046952 5.934674)
|
||||||
|
(xy -7.154824 5.978979) (xy -7.285765 6.008172) (xy -7.446584 6.024256) (xy -7.644086 6.029233)
|
||||||
|
(xy -7.676696 6.029149) (xy -7.808401 6.026419) (xy -7.939015 6.020216) (xy -8.054301 6.01143)
|
||||||
|
(xy -8.14002 6.00095) (xy -8.146953 5.999747) (xy -8.232179 5.979558) (xy -8.304467 5.954055)
|
||||||
|
(xy -8.34539 5.930739) (xy -8.383474 5.869229) (xy -8.386125 5.797602) (xy -8.353295 5.733771)
|
||||||
|
(xy -8.34595 5.726553) (xy -8.315588 5.705107) (xy -8.277618 5.695867) (xy -8.218852 5.69744)
|
||||||
|
(xy -8.147512 5.705613) (xy -8.067797 5.712914) (xy -7.956049 5.719074) (xy -7.825592 5.723544)
|
||||||
|
(xy -7.689746 5.725776) (xy -7.654018 5.725923) (xy -7.517666 5.725373) (xy -7.417876 5.722726)
|
||||||
|
(xy -7.345868 5.717063) (xy -7.29286 5.707466) (xy -7.250073 5.693017) (xy -7.22436 5.680982)
|
||||||
|
(xy -7.167857 5.647565) (xy -7.131833 5.617301) (xy -7.126568 5.608722) (xy -7.137675 5.573296)
|
||||||
|
(xy -7.190477 5.539001) (xy -7.281316 5.507394) (xy -7.406532 5.480031) (xy -7.443424 5.473936)
|
||||||
|
(xy -7.636118 5.44367) (xy -7.789904 5.418373) (xy -7.910717 5.396206) (xy -8.004495 5.37533)
|
||||||
|
(xy -8.077171 5.353907) (xy -8.134683 5.330099) (xy -8.182965 5.302068) (xy -8.227953 5.267975)
|
||||||
|
(xy -8.275583 5.225982) (xy -8.291611 5.211259) (xy -8.347806 5.156314) (xy -8.377552 5.112781)
|
||||||
|
(xy -8.389189 5.062965) (xy -8.391071 5.000189) (xy -8.370351 4.877085) (xy -8.308429 4.772491)
|
||||||
|
(xy -8.205659 4.686745) (xy -8.062398 4.620184) (xy -7.960178 4.590329) (xy -7.849083 4.571047)
|
||||||
|
(xy -7.715999 4.560139) (xy -7.569052 4.556987) (xy -7.416366 4.560973)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy -5.87375 4.60375) (xy -5.860529 4.618964) (xy -5.850159 4.638591) (xy -5.842293 4.667888)
|
||||||
|
(xy -5.836587 4.712113) (xy -5.832697 4.776524) (xy -5.830278 4.866378) (xy -5.828984 4.986934)
|
||||||
|
(xy -5.828472 5.143448) (xy -5.828393 5.295446) (xy -5.828533 5.483978) (xy -5.829182 5.63241)
|
||||||
|
(xy -5.830686 5.746001) (xy -5.833389 5.830009) (xy -5.837636 5.88969) (xy -5.843772 5.930302)
|
||||||
|
(xy -5.852141 5.957104) (xy -5.863089 5.975353) (xy -5.87375 5.987143) (xy -5.940051 6.02668)
|
||||||
|
(xy -6.010696 6.023131) (xy -6.073904 5.980011) (xy -6.088427 5.963177) (xy -6.099777 5.943644)
|
||||||
|
(xy -6.108345 5.916015) (xy -6.114522 5.874889) (xy -6.118698 5.814868) (xy -6.121265 5.730551)
|
||||||
|
(xy -6.122612 5.61654) (xy -6.123132 5.467434) (xy -6.123214 5.298623) (xy -6.123214 4.669724)
|
||||||
|
(xy -6.067548 4.614058) (xy -5.998934 4.567225) (xy -5.932377 4.565538) (xy -5.87375 4.60375)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy -3.917573 4.569506) (xy -3.779928 4.592602) (xy -3.674214 4.628505) (xy -3.60544 4.675778)
|
||||||
|
(xy -3.586699 4.702748) (xy -3.567641 4.765475) (xy -3.580466 4.822222) (xy -3.620953 4.876035)
|
||||||
|
(xy -3.683862 4.90121) (xy -3.775143 4.899165) (xy -3.845744 4.885526) (xy -4.002626 4.85954)
|
||||||
|
(xy -4.162954 4.85707) (xy -4.342409 4.878163) (xy -4.391978 4.8871) (xy -4.558843 4.934146)
|
||||||
|
(xy -4.689386 5.004129) (xy -4.782176 5.095856) (xy -4.835781 5.208134) (xy -4.846868 5.266182)
|
||||||
|
(xy -4.839611 5.383953) (xy -4.792759 5.48815) (xy -4.710582 5.576742) (xy -4.597349 5.647698)
|
||||||
|
(xy -4.457329 5.698987) (xy -4.294791 5.728579) (xy -4.114005 5.734443) (xy -3.919238 5.714548)
|
||||||
|
(xy -3.908241 5.712672) (xy -3.830774 5.698243) (xy -3.787822 5.684306) (xy -3.769205 5.663626)
|
||||||
|
(xy -3.764744 5.62897) (xy -3.764643 5.610618) (xy -3.764643 5.533571) (xy -3.902205 5.533571)
|
||||||
|
(xy -4.023682 5.52525) (xy -4.106581 5.498732) (xy -4.154814 5.451689) (xy -4.172296 5.38179)
|
||||||
|
(xy -4.17251 5.372667) (xy -4.162281 5.312922) (xy -4.127208 5.270261) (xy -4.06193 5.242029)
|
||||||
|
(xy -3.96109 5.225571) (xy -3.863415 5.21952) (xy -3.721451 5.216048) (xy -3.618477 5.221346)
|
||||||
|
(xy -3.548247 5.240893) (xy -3.504514 5.280173) (xy -3.48103 5.344666) (xy -3.471549 5.439854)
|
||||||
|
(xy -3.469821 5.564875) (xy -3.472652 5.704423) (xy -3.481167 5.799347) (xy -3.495406 5.850024)
|
||||||
|
(xy -3.498169 5.853993) (xy -3.57635 5.917316) (xy -3.690975 5.967462) (xy -3.83478 6.003362)
|
||||||
|
(xy -4.000496 6.023944) (xy -4.180858 6.028137) (xy -4.368598 6.014869) (xy -4.479018 5.998572)
|
||||||
|
(xy -4.652208 5.949551) (xy -4.813174 5.86941) (xy -4.947944 5.765398) (xy -4.968428 5.744609)
|
||||||
|
(xy -5.034981 5.657213) (xy -5.095031 5.548898) (xy -5.141564 5.43534) (xy -5.167563 5.332217)
|
||||||
|
(xy -5.170696 5.292611) (xy -5.157356 5.209994) (xy -5.1219 5.107203) (xy -5.071131 4.999006)
|
||||||
|
(xy -5.011852 4.900169) (xy -4.959479 4.834152) (xy -4.837026 4.735952) (xy -4.678732 4.657792)
|
||||||
|
(xy -4.490269 4.601439) (xy -4.27731 4.568663) (xy -4.082143 4.560654) (xy -3.917573 4.569506)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy -2.611835 4.567195) (xy -2.564493 4.594967) (xy -2.502592 4.640385) (xy -2.422923 4.705589)
|
||||||
|
(xy -2.32228 4.792717) (xy -2.197452 4.90391) (xy -2.045232 5.041307) (xy -1.870982 5.199276)
|
||||||
|
(xy -1.508125 5.528327) (xy -1.496785 5.086665) (xy -1.492691 4.934634) (xy -1.488742 4.821417)
|
||||||
|
(xy -1.484062 4.74048) (xy -1.477779 4.685293) (xy -1.469018 4.649322) (xy -1.456906 4.626035)
|
||||||
|
(xy -1.440569 4.608899) (xy -1.431907 4.601698) (xy -1.362537 4.563623) (xy -1.296527 4.56919)
|
||||||
|
(xy -1.244164 4.601717) (xy -1.190625 4.645042) (xy -1.183966 5.277759) (xy -1.182123 5.463841)
|
||||||
|
(xy -1.181185 5.610021) (xy -1.181477 5.721751) (xy -1.183323 5.804482) (xy -1.18705 5.863666)
|
||||||
|
(xy -1.19298 5.904753) (xy -1.20144 5.933196) (xy -1.212753 5.954445) (xy -1.2253 5.971488)
|
||||||
|
(xy -1.252444 6.003095) (xy -1.279453 6.024046) (xy -1.31007 6.032088) (xy -1.348043 6.024965)
|
||||||
|
(xy -1.397118 6.000426) (xy -1.46104 5.956214) (xy -1.543555 5.890076) (xy -1.64841 5.799759)
|
||||||
|
(xy -1.779351 5.683008) (xy -1.927678 5.548859) (xy -2.460625 5.065429) (xy -2.471964 5.505647)
|
||||||
|
(xy -2.476065 5.657401) (xy -2.480025 5.770354) (xy -2.484721 5.851052) (xy -2.491033 5.906041)
|
||||||
|
(xy -2.499837 5.941865) (xy -2.512012 5.96507) (xy -2.528437 5.982201) (xy -2.536843 5.989183)
|
||||||
|
(xy -2.611134 6.027534) (xy -2.681332 6.021749) (xy -2.742461 5.972745) (xy -2.756445 5.95303)
|
||||||
|
(xy -2.767344 5.930006) (xy -2.775541 5.898149) (xy -2.78142 5.851935) (xy -2.785364 5.78584)
|
||||||
|
(xy -2.787756 5.694339) (xy -2.788979 5.571911) (xy -2.789418 5.413029) (xy -2.789464 5.295446)
|
||||||
|
(xy -2.789317 5.111533) (xy -2.788619 4.967452) (xy -2.786987 4.85768) (xy -2.784039 4.776693)
|
||||||
|
(xy -2.779389 4.718968) (xy -2.772657 4.678981) (xy -2.763457 4.651207) (xy -2.751406 4.630123)
|
||||||
|
(xy -2.742461 4.618148) (xy -2.719786 4.58978) (xy -2.698595 4.568362) (xy -2.675678 4.556032)
|
||||||
|
(xy -2.647828 4.55493) (xy -2.611835 4.567195)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 0.462743 4.55878) (xy 0.616142 4.560617) (xy 0.733695 4.564911) (xy 0.820156 4.572672)
|
||||||
|
(xy 0.88028 4.58491) (xy 0.91882 4.602635) (xy 0.940532 4.626856) (xy 0.95017 4.658582)
|
||||||
|
(xy 0.952488 4.698823) (xy 0.9525 4.703575) (xy 0.950488 4.749091) (xy 0.940975 4.784269)
|
||||||
|
(xy 0.918751 4.810528) (xy 0.878602 4.829289) (xy 0.815316 4.841973) (xy 0.723682 4.849999)
|
||||||
|
(xy 0.598487 4.854789) (xy 0.434519 4.857761) (xy 0.384263 4.85842) (xy -0.102053 4.864554)
|
||||||
|
(xy -0.108855 4.994955) (xy -0.115656 5.125357) (xy 0.222139 5.125357) (xy 0.354107 5.125844)
|
||||||
|
(xy 0.448337 5.127903) (xy 0.512445 5.132432) (xy 0.554044 5.14033) (xy 0.58075 5.152495)
|
||||||
|
(xy 0.600178 5.169825) (xy 0.600302 5.169963) (xy 0.635537 5.237501) (xy 0.634263 5.310498)
|
||||||
|
(xy 0.597284 5.372725) (xy 0.589965 5.379121) (xy 0.56399 5.395605) (xy 0.528397 5.407073)
|
||||||
|
(xy 0.475253 5.414388) (xy 0.396628 5.418415) (xy 0.28459 5.420017) (xy 0.212934 5.420179)
|
||||||
|
(xy -0.113393 5.420179) (xy -0.113393 5.737679) (xy 0.382021 5.737679) (xy 0.545586 5.737965)
|
||||||
|
(xy 0.669797 5.739134) (xy 0.760655 5.741654) (xy 0.82416 5.745992) (xy 0.866313 5.752614)
|
||||||
|
(xy 0.893116 5.761987) (xy 0.910569 5.774579) (xy 0.914967 5.779152) (xy 0.94744 5.842526)
|
||||||
|
(xy 0.949816 5.914624) (xy 0.923175 5.977135) (xy 0.902097 5.997196) (xy 0.88017 6.00824)
|
||||||
|
(xy 0.846195 6.016785) (xy 0.794798 6.023129) (xy 0.720605 6.027572) (xy 0.618241 6.030413)
|
||||||
|
(xy 0.482333 6.031952) (xy 0.307505 6.032487) (xy 0.26798 6.0325) (xy 0.090224 6.032384)
|
||||||
|
(xy -0.047758 6.031742) (xy -0.151544 6.030134) (xy -0.226717 6.027121) (xy -0.278859 6.022263)
|
||||||
|
(xy -0.313549 6.015121) (xy -0.33637 6.005254) (xy -0.352903 5.992223) (xy -0.361973 5.982866)
|
||||||
|
(xy -0.375626 5.966294) (xy -0.386292 5.945764) (xy -0.39434 5.915893) (xy -0.400136 5.871298)
|
||||||
|
(xy -0.404047 5.806594) (xy -0.406443 5.716397) (xy -0.40769 5.595324) (xy -0.408156 5.43799)
|
||||||
|
(xy -0.408214 5.305568) (xy -0.408071 5.120012) (xy -0.407394 4.974342) (xy -0.405808 4.863088)
|
||||||
|
(xy -0.402939 4.780778) (xy -0.398413 4.721943) (xy -0.391856 4.681111) (xy -0.382894 4.652812)
|
||||||
|
(xy -0.371153 4.631575) (xy -0.361211 4.618148) (xy -0.314208 4.558393) (xy 0.268743 4.558393)
|
||||||
|
(xy 0.462743 4.55878)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 2.04571 4.558811) (xy 2.304821 4.567572) (xy 2.525206 4.59414) (xy 2.710499 4.640105)
|
||||||
|
(xy 2.864335 4.70706) (xy 2.990346 4.796593) (xy 3.092167 4.910296) (xy 3.173431 5.049759)
|
||||||
|
(xy 3.17503 5.05316) (xy 3.223529 5.177979) (xy 3.240809 5.288523) (xy 3.226805 5.399774)
|
||||||
|
(xy 3.181448 5.52671) (xy 3.172846 5.546026) (xy 3.114186 5.659083) (xy 3.04826 5.746442)
|
||||||
|
(xy 2.963174 5.820704) (xy 2.847034 5.894468) (xy 2.840287 5.898319) (xy 2.739184 5.946885)
|
||||||
|
(xy 2.624909 5.983156) (xy 2.490121 6.008383) (xy 2.327475 6.023816) (xy 2.129629 6.030708)
|
||||||
|
(xy 2.059727 6.031307) (xy 1.726864 6.0325) (xy 1.679861 5.972745) (xy 1.665918 5.953096)
|
||||||
|
(xy 1.655041 5.93015) (xy 1.646851 5.898406) (xy 1.640967 5.852359) (xy 1.637011 5.78651)
|
||||||
|
(xy 1.635721 5.737679) (xy 1.950357 5.737679) (xy 2.13896 5.737679) (xy 2.249325 5.734451)
|
||||||
|
(xy 2.362621 5.725958) (xy 2.455605 5.71398) (xy 2.461218 5.712971) (xy 2.62637 5.668665)
|
||||||
|
(xy 2.75447 5.602099) (xy 2.84957 5.510184) (xy 2.915723 5.389832) (xy 2.927227 5.357935)
|
||||||
|
(xy 2.938502 5.308257) (xy 2.93362 5.259177) (xy 2.909867 5.193884) (xy 2.895549 5.161809)
|
||||||
|
(xy 2.848662 5.076574) (xy 2.792171 5.016776) (xy 2.730015 4.975134) (xy 2.605512 4.920945)
|
||||||
|
(xy 2.446174 4.881692) (xy 2.260553 4.859089) (xy 2.126116 4.854114) (xy 1.950357 4.853214)
|
||||||
|
(xy 1.950357 5.737679) (xy 1.635721 5.737679) (xy 1.634602 5.695355) (xy 1.633361 5.573392)
|
||||||
|
(xy 1.632908 5.415118) (xy 1.632857 5.291357) (xy 1.632857 4.669724) (xy 1.688523 4.614058)
|
||||||
|
(xy 1.713228 4.591495) (xy 1.739941 4.576043) (xy 1.777244 4.566375) (xy 1.833723 4.561164)
|
||||||
|
(xy 1.917958 4.559082) (xy 2.038535 4.558801) (xy 2.04571 4.558811)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 7.522765 4.562345) (xy 7.562119 4.576409) (xy 7.563638 4.577097) (xy 7.61708 4.617881)
|
||||||
|
(xy 7.646525 4.659832) (xy 7.652287 4.679501) (xy 7.652002 4.705637) (xy 7.643895 4.742868)
|
||||||
|
(xy 7.626188 4.795828) (xy 7.597104 4.869145) (xy 7.554867 4.967451) (xy 7.4977 5.095376)
|
||||||
|
(xy 7.423826 5.257552) (xy 7.383164 5.346193) (xy 7.309739 5.504435) (xy 7.240811 5.649957)
|
||||||
|
(xy 7.179012 5.777437) (xy 7.126971 5.881556) (xy 7.087321 5.956993) (xy 7.062691 5.998428)
|
||||||
|
(xy 7.057817 6.004152) (xy 6.995458 6.029402) (xy 6.92502 6.02602) (xy 6.868528 5.99531)
|
||||||
|
(xy 6.866226 5.992812) (xy 6.843754 5.958792) (xy 6.806058 5.892528) (xy 6.757786 5.802549)
|
||||||
|
(xy 6.703588 5.697386) (xy 6.68411 5.658633) (xy 6.537082 5.36414) (xy 6.376823 5.684049)
|
||||||
|
(xy 6.319621 5.794583) (xy 6.266551 5.890444) (xy 6.221949 5.964293) (xy 6.19015 6.008793)
|
||||||
|
(xy 6.179373 6.018229) (xy 6.095606 6.031009) (xy 6.026484 6.004152) (xy 6.006151 5.975449)
|
||||||
|
(xy 5.970966 5.911658) (xy 5.923799 5.819056) (xy 5.86752 5.70392) (xy 5.804999 5.572526)
|
||||||
|
(xy 5.739107 5.431152) (xy 5.672714 5.286074) (xy 5.60869 5.14357) (xy 5.549906 5.009917)
|
||||||
|
(xy 5.499232 4.891391) (xy 5.459538 4.794269) (xy 5.433695 4.724829) (xy 5.424572 4.689347)
|
||||||
|
(xy 5.424665 4.688062) (xy 5.446861 4.643414) (xy 5.491226 4.59794) (xy 5.493839 4.595962)
|
||||||
|
(xy 5.548366 4.56514) (xy 5.598801 4.565438) (xy 5.617704 4.571249) (xy 5.640739 4.583807)
|
||||||
|
(xy 5.6652 4.608511) (xy 5.694022 4.650484) (xy 5.73014 4.714852) (xy 5.776488 4.80674)
|
||||||
|
(xy 5.835999 4.931271) (xy 5.889667 5.046223) (xy 5.951412 5.179472) (xy 6.00674 5.2993)
|
||||||
|
(xy 6.052777 5.399448) (xy 6.08665 5.473655) (xy 6.105482 5.515661) (xy 6.108229 5.522232)
|
||||||
|
(xy 6.120582 5.51149) (xy 6.148973 5.466513) (xy 6.189625 5.393865) (xy 6.238759 5.300111)
|
||||||
|
(xy 6.258311 5.261429) (xy 6.324545 5.130812) (xy 6.375624 5.035688) (xy 6.41574 4.970529)
|
||||||
|
(xy 6.449084 4.929802) (xy 6.479849 4.907978) (xy 6.512225 4.899526) (xy 6.533324 4.898571)
|
||||||
|
(xy 6.570542 4.901869) (xy 6.603156 4.915509) (xy 6.635562 4.945111) (xy 6.672156 4.996293)
|
||||||
|
(xy 6.717334 5.074675) (xy 6.775492 5.185877) (xy 6.80758 5.249135) (xy 6.859628 5.349952)
|
||||||
|
(xy 6.905024 5.433557) (xy 6.93976 5.492897) (xy 6.959833 5.520916) (xy 6.962563 5.522083)
|
||||||
|
(xy 6.975526 5.500031) (xy 7.004549 5.44277) (xy 7.046725 5.356293) (xy 7.099148 5.246593)
|
||||||
|
(xy 7.158911 5.119663) (xy 7.188309 5.056616) (xy 7.264788 4.893907) (xy 7.326372 4.768706)
|
||||||
|
(xy 7.376258 4.676928) (xy 7.417643 4.614487) (xy 7.453724 4.5773) (xy 7.487699 4.561281)
|
||||||
|
(xy 7.522765 4.562345)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 8.414627 4.572074) (xy 8.462265 4.601746) (xy 8.515804 4.6451) (xy 8.515804 5.291062)
|
||||||
|
(xy 8.515633 5.480015) (xy 8.514903 5.628881) (xy 8.513285 5.742932) (xy 8.510451 5.827436)
|
||||||
|
(xy 8.506072 5.887663) (xy 8.499821 5.928885) (xy 8.491369 5.95637) (xy 8.480388 5.97539)
|
||||||
|
(xy 8.472601 5.984762) (xy 8.409443 6.025931) (xy 8.337523 6.024252) (xy 8.274522 5.989147)
|
||||||
|
(xy 8.220982 5.945793) (xy 8.220982 4.6451) (xy 8.274522 4.601746) (xy 8.326195 4.57021)
|
||||||
|
(xy 8.368393 4.558393) (xy 8.414627 4.572074)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 9.970443 4.558587) (xy 10.128561 4.559347) (xy 10.251288 4.560937) (xy 10.343606 4.563622)
|
||||||
|
(xy 10.410499 4.567667) (xy 10.456948 4.573337) (xy 10.487937 4.580897) (xy 10.508448 4.590612)
|
||||||
|
(xy 10.518374 4.59808) (xy 10.569891 4.663442) (xy 10.576123 4.731305) (xy 10.544287 4.792954)
|
||||||
|
(xy 10.523468 4.817589) (xy 10.501065 4.834387) (xy 10.468597 4.844847) (xy 10.417586 4.850472)
|
||||||
|
(xy 10.33955 4.85276) (xy 10.22601 4.853212) (xy 10.203711 4.853214) (xy 9.910536 4.853214)
|
||||||
|
(xy 9.910536 5.3975) (xy 9.910343 5.569059) (xy 9.909466 5.701066) (xy 9.907458 5.799322)
|
||||||
|
(xy 9.903874 5.869633) (xy 9.898267 5.9178) (xy 9.890191 5.949628) (xy 9.879198 5.970919)
|
||||||
|
(xy 9.865179 5.987143) (xy 9.799019 6.027011) (xy 9.729954 6.023869) (xy 9.66732 5.978382)
|
||||||
|
(xy 9.662718 5.972745) (xy 9.647737 5.951435) (xy 9.636323 5.926502) (xy 9.627994 5.891886)
|
||||||
|
(xy 9.622267 5.84153) (xy 9.618659 5.769375) (xy 9.616686 5.669363) (xy 9.615866 5.535435)
|
||||||
|
(xy 9.615715 5.383102) (xy 9.615715 4.853214) (xy 9.335747 4.853214) (xy 9.215602 4.852401)
|
||||||
|
(xy 9.132425 4.849233) (xy 9.077843 4.842616) (xy 9.043486 4.831456) (xy 9.02098 4.814661)
|
||||||
|
(xy 9.018247 4.811741) (xy 8.985386 4.744967) (xy 8.988292 4.669477) (xy 9.026072 4.60375)
|
||||||
|
(xy 9.040682 4.591001) (xy 9.05952 4.580892) (xy 9.087608 4.573117) (xy 9.12997 4.567372)
|
||||||
|
(xy 9.19163 4.563351) (xy 9.277612 4.560749) (xy 9.392938 4.559259) (xy 9.542632 4.558576)
|
||||||
|
(xy 9.731718 4.558396) (xy 9.771952 4.558393) (xy 9.970443 4.558587)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 12.513262 4.569374) (xy 12.576299 4.614058) (xy 12.631965 4.669724) (xy 12.631965 5.291357)
|
||||||
|
(xy 12.631819 5.475936) (xy 12.63113 5.62066) (xy 12.629517 5.731032) (xy 12.6266 5.812553)
|
||||||
|
(xy 12.622002 5.870726) (xy 12.615341 5.911054) (xy 12.606238 5.939037) (xy 12.594314 5.96018)
|
||||||
|
(xy 12.584961 5.972745) (xy 12.523225 6.022112) (xy 12.452337 6.02747) (xy 12.387546 5.997196)
|
||||||
|
(xy 12.366137 5.979323) (xy 12.351826 5.955582) (xy 12.343194 5.917352) (xy 12.338822 5.85601)
|
||||||
|
(xy 12.33729 5.762937) (xy 12.337143 5.691035) (xy 12.337143 5.420179) (xy 11.339286 5.420179)
|
||||||
|
(xy 11.339286 5.666584) (xy 11.338254 5.779259) (xy 11.334126 5.856695) (xy 11.325351 5.908985)
|
||||||
|
(xy 11.310382 5.946221) (xy 11.292283 5.972745) (xy 11.230201 6.021973) (xy 11.159992 6.027802)
|
||||||
|
(xy 11.092779 5.992812) (xy 11.074428 5.97447) (xy 11.061468 5.950154) (xy 11.052919 5.912278)
|
||||||
|
(xy 11.047805 5.853255) (xy 11.045149 5.765499) (xy 11.043971 5.641423) (xy 11.043834 5.612946)
|
||||||
|
(xy 11.042862 5.379169) (xy 11.042361 5.186505) (xy 11.042524 5.030712) (xy 11.043545 4.907548)
|
||||||
|
(xy 11.045617 4.81277) (xy 11.048933 4.742136) (xy 11.053687 4.691403) (xy 11.060071 4.656329)
|
||||||
|
(xy 11.06828 4.63267) (xy 11.078507 4.616186) (xy 11.089822 4.60375) (xy 11.153829 4.563971)
|
||||||
|
(xy 11.220583 4.569374) (xy 11.28362 4.614058) (xy 11.309129 4.642887) (xy 11.325389 4.674732)
|
||||||
|
(xy 11.334461 4.720085) (xy 11.338406 4.789443) (xy 11.339285 4.893299) (xy 11.339286 4.897541)
|
||||||
|
(xy 11.339286 5.125357) (xy 12.337143 5.125357) (xy 12.337143 4.887232) (xy 12.338161 4.777528)
|
||||||
|
(xy 12.342251 4.703453) (xy 12.350965 4.655304) (xy 12.365855 4.623378) (xy 12.3825 4.60375)
|
||||||
|
(xy 12.446507 4.563971) (xy 12.513262 4.569374)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy -5.919107 -5.044311) (xy -5.89728 -4.815415) (xy -5.833763 -4.599209) (xy -5.731503 -4.400327)
|
||||||
|
(xy -5.593446 -4.223403) (xy -5.422538 -4.073071) (xy -5.227698 -3.956819) (xy -5.014212 -3.877223)
|
||||||
|
(xy -4.799229 -3.83992) (xy -4.586986 -3.842209) (xy -4.381724 -3.881391) (xy -4.18768 -3.954766)
|
||||||
|
(xy -4.009093 -4.059632) (xy -3.850204 -4.193292) (xy -3.71525 -4.353043) (xy -3.608471 -4.536186)
|
||||||
|
(xy -3.534105 -4.740022) (xy -3.496392 -4.961849) (xy -3.4925 -5.062086) (xy -3.4925 -5.23875)
|
||||||
|
(xy -3.388178 -5.23875) (xy -3.315239 -5.233035) (xy -3.261204 -5.209331) (xy -3.20675 -5.161643)
|
||||||
|
(xy -3.129643 -5.084536) (xy -3.129643 -0.681827) (xy -3.129661 -0.155211) (xy -3.129726 0.327939)
|
||||||
|
(xy -3.129854 0.769515) (xy -3.130062 1.171409) (xy -3.130366 1.535512) (xy -3.130783 1.863715)
|
||||||
|
(xy -3.131328 2.157911) (xy -3.132019 2.41999) (xy -3.132872 2.651845) (xy -3.133902 2.855366)
|
||||||
|
(xy -3.135127 3.032446) (xy -3.136563 3.184976) (xy -3.138226 3.314847) (xy -3.140133 3.423951)
|
||||||
|
(xy -3.142299 3.514179) (xy -3.144742 3.587424) (xy -3.147478 3.645576) (xy -3.150523 3.690528)
|
||||||
|
(xy -3.153893 3.72417) (xy -3.157606 3.748395) (xy -3.161676 3.765093) (xy -3.166122 3.776157)
|
||||||
|
(xy -3.168296 3.779874) (xy -3.176659 3.79396) (xy -3.18376 3.806911) (xy -3.191453 3.818772)
|
||||||
|
(xy -3.201593 3.829593) (xy -3.216034 3.83942) (xy -3.236631 3.8483) (xy -3.265239 3.856282)
|
||||||
|
(xy -3.303711 3.863412) (xy -3.353903 3.869738) (xy -3.417669 3.875308) (xy -3.496864 3.880168)
|
||||||
|
(xy -3.593342 3.884366) (xy -3.708958 3.88795) (xy -3.845565 3.890968) (xy -4.00502 3.893465)
|
||||||
|
(xy -4.189175 3.89549) (xy -4.399886 3.897091) (xy -4.639008 3.898314) (xy -4.908395 3.899208)
|
||||||
|
(xy -5.2099 3.899819) (xy -5.54538 3.900194) (xy -5.916688 3.900383) (xy -6.325679 3.900431)
|
||||||
|
(xy -6.774208 3.900386) (xy -7.264128 3.900295) (xy -7.797295 3.900207) (xy -7.874405 3.900198)
|
||||||
|
(xy -8.410745 3.900111) (xy -8.903575 3.899969) (xy -9.354742 3.899758) (xy -9.766093 3.899462)
|
||||||
|
(xy -10.139476 3.899067) (xy -10.476738 3.898559) (xy -10.779725 3.897924) (xy -11.050286 3.897146)
|
||||||
|
(xy -11.290267 3.896211) (xy -11.501515 3.895105) (xy -11.685878 3.893813) (xy -11.845202 3.89232)
|
||||||
|
(xy -11.981335 3.890613) (xy -12.096125 3.888676) (xy -12.191417 3.886496) (xy -12.26906 3.884057)
|
||||||
|
(xy -12.3309 3.881345) (xy -12.378785 3.878346) (xy -12.414562 3.875045) (xy -12.440078 3.871427)
|
||||||
|
(xy -12.457181 3.867479) (xy -12.465935 3.864127) (xy -12.482935 3.856954) (xy -12.498542 3.851659)
|
||||||
|
(xy -12.512816 3.846362) (xy -12.525816 3.839188) (xy -12.5376 3.828256) (xy -12.548228 3.811691)
|
||||||
|
(xy -12.557759 3.787614) (xy -12.566253 3.754147) (xy -12.573769 3.709413) (xy -12.580366 3.651533)
|
||||||
|
(xy -12.586104 3.578631) (xy -12.59104 3.488828) (xy -12.595236 3.380246) (xy -12.59875 3.251007)
|
||||||
|
(xy -12.601641 3.099235) (xy -12.603968 2.92305) (xy -12.605791 2.720576) (xy -12.60717 2.489935)
|
||||||
|
(xy -12.608162 2.229248) (xy -12.608828 1.936638) (xy -12.609227 1.610227) (xy -12.609417 1.248138)
|
||||||
|
(xy -12.609459 0.848492) (xy -12.609412 0.409412) (xy -12.609334 -0.07098) (xy -12.609286 -0.594562)
|
||||||
|
(xy -12.609285 -0.679241) (xy -12.609313 -1.207382) (xy -12.609363 -1.692057) (xy -12.609385 -2.135159)
|
||||||
|
(xy -12.609326 -2.538579) (xy -12.609136 -2.904209) (xy -12.608763 -3.23394) (xy -12.608154 -3.529666)
|
||||||
|
(xy -12.60726 -3.793276) (xy -12.606096 -4.014107) (xy -11.997716 -4.014107) (xy -11.917781 -3.897902)
|
||||||
|
(xy -11.89534 -3.866225) (xy -11.875109 -3.838177) (xy -11.856973 -3.811372) (xy -11.84082 -3.783429)
|
||||||
|
(xy -11.826534 -3.751964) (xy -11.814001 -3.714594) (xy -11.803107 -3.668934) (xy -11.793739 -3.612601)
|
||||||
|
(xy -11.785782 -3.543213) (xy -11.779122 -3.458386) (xy -11.773644 -3.355736) (xy -11.769236 -3.23288)
|
||||||
|
(xy -11.765782 -3.087434) (xy -11.763168 -2.917016) (xy -11.761281 -2.719241) (xy -11.760006 -2.491726)
|
||||||
|
(xy -11.75923 -2.232089) (xy -11.758837 -1.937945) (xy -11.758714 -1.60691) (xy -11.758747 -1.236603)
|
||||||
|
(xy -11.758822 -0.824639) (xy -11.758839 -0.578304) (xy -11.758791 -0.142468) (xy -11.758723 0.250396)
|
||||||
|
(xy -11.758747 0.602675) (xy -11.758977 0.916756) (xy -11.759525 1.195025) (xy -11.760504 1.439867)
|
||||||
|
(xy -11.762028 1.653669) (xy -11.764209 1.838817) (xy -11.76716 1.997696) (xy -11.770994 2.132694)
|
||||||
|
(xy -11.775825 2.246196) (xy -11.781765 2.340588) (xy -11.788926 2.418257) (xy -11.797423 2.481588)
|
||||||
|
(xy -11.807368 2.532968) (xy -11.818873 2.574783) (xy -11.832053 2.609418) (xy -11.847019 2.639261)
|
||||||
|
(xy -11.863885 2.666696) (xy -11.882764 2.694111) (xy -11.903768 2.723891) (xy -11.916004 2.741752)
|
||||||
|
(xy -11.993897 2.8575) (xy -10.926023 2.8575) (xy -10.678425 2.85743) (xy -10.472518 2.857128)
|
||||||
|
(xy -10.304637 2.856452) (xy -10.171116 2.855261) (xy -10.06829 2.853415) (xy -9.992492 2.850772)
|
||||||
|
(xy -9.940057 2.847193) (xy -9.90732 2.842535) (xy -9.890614 2.836659) (xy -9.886275 2.829423)
|
||||||
|
(xy -9.890636 2.820686) (xy -9.893039 2.817812) (xy -9.943563 2.743339) (xy -9.99559 2.637265)
|
||||||
|
(xy -10.043019 2.512708) (xy -10.059631 2.459646) (xy -10.068906 2.423603) (xy -10.076744 2.381293)
|
||||||
|
(xy -10.08331 2.328526) (xy -10.088769 2.261113) (xy -10.093288 2.174863) (xy -10.09703 2.065588)
|
||||||
|
(xy -10.100161 1.929098) (xy -10.102845 1.761203) (xy -10.105249 1.557714) (xy -10.107537 1.314441)
|
||||||
|
(xy -10.108295 1.224643) (xy -10.110337 0.973223) (xy -10.111861 0.763557) (xy -10.11275 0.592046)
|
||||||
|
(xy -10.112886 0.455088) (xy -10.112152 0.349082) (xy -10.11043 0.270429) (xy -10.107604 0.215527)
|
||||||
|
(xy -10.103555 0.180776) (xy -10.098166 0.162575) (xy -10.091321 0.157323) (xy -10.082901 0.16142)
|
||||||
|
(xy -10.073913 0.170089) (xy -10.053111 0.196075) (xy -10.008798 0.254483) (xy -9.944109 0.341033)
|
||||||
|
(xy -9.862179 0.451443) (xy -9.766144 0.58143) (xy -9.659139 0.726714) (xy -9.544299 0.883013)
|
||||||
|
(xy -9.42476 1.046045) (xy -9.303658 1.211529) (xy -9.184127 1.375183) (xy -9.069304 1.532725)
|
||||||
|
(xy -8.962322 1.679874) (xy -8.866318 1.812349) (xy -8.784428 1.925866) (xy -8.719786 2.016146)
|
||||||
|
(xy -8.675528 2.078907) (xy -8.666351 2.092231) (xy -8.620303 2.166366) (xy -8.566447 2.262774)
|
||||||
|
(xy -8.515423 2.362292) (xy -8.508953 2.375713) (xy -8.465404 2.472534) (xy -8.440119 2.547992)
|
||||||
|
(xy -8.428608 2.619963) (xy -8.426362 2.70442) (xy -8.427635 2.8575) (xy -6.10845 2.8575)
|
||||||
|
(xy -6.291591 2.669201) (xy -6.385603 2.568967) (xy -6.486627 2.455504) (xy -6.579127 2.34648)
|
||||||
|
(xy -6.62016 2.295549) (xy -6.681309 2.216105) (xy -6.761775 2.109207) (xy -6.859207 1.978126)
|
||||||
|
(xy -6.971252 1.826138) (xy -7.095557 1.656516) (xy -7.229769 1.472532) (xy -7.371536 1.277462)
|
||||||
|
(xy -7.518505 1.074577) (xy -7.668322 0.867153) (xy -7.818636 0.658462) (xy -7.967094 0.451779)
|
||||||
|
(xy -8.111342 0.250376) (xy -8.249029 0.057527) (xy -8.377801 -0.123494) (xy -8.495306 -0.289414)
|
||||||
|
(xy -8.59919 -0.436959) (xy -8.687102 -0.562855) (xy -8.756688 -0.663829) (xy -8.805595 -0.736607)
|
||||||
|
(xy -8.831472 -0.777916) (xy -8.835004 -0.786157) (xy -8.819014 -0.808911) (xy -8.777239 -0.863514)
|
||||||
|
(xy -8.712416 -0.946549) (xy -8.627284 -1.0546) (xy -8.524581 -1.184251) (xy -8.407045 -1.332086)
|
||||||
|
(xy -8.277416 -1.494688) (xy -8.138432 -1.66864) (xy -7.99283 -1.850528) (xy -7.84335 -2.036934)
|
||||||
|
(xy -7.723358 -2.186313) (xy -5.692321 -2.186313) (xy -5.680449 -2.160283) (xy -5.651662 -2.115586)
|
||||||
|
(xy -5.649558 -2.112608) (xy -5.611816 -2.052033) (xy -5.572347 -1.978041) (xy -5.564514 -1.961696)
|
||||||
|
(xy -5.55741 -1.944763) (xy -5.551132 -1.924435) (xy -5.545618 -1.897914) (xy -5.540809 -1.862402)
|
||||||
|
(xy -5.536644 -1.815099) (xy -5.533061 -1.753206) (xy -5.530001 -1.673926) (xy -5.527404 -1.574459)
|
||||||
|
(xy -5.525208 -1.452007) (xy -5.523353 -1.303772) (xy -5.521779 -1.126954) (xy -5.520424 -0.918754)
|
||||||
|
(xy -5.51923 -0.676375) (xy -5.518134 -0.397017) (xy -5.517077 -0.077882) (xy -5.516004 0.281428)
|
||||||
|
(xy -5.514923 0.653317) (xy -5.51405 0.982658) (xy -5.513521 1.272261) (xy -5.513471 1.524935)
|
||||||
|
(xy -5.514036 1.74349) (xy -5.51535 1.930735) (xy -5.51755 2.08948) (xy -5.520771 2.222535)
|
||||||
|
(xy -5.525149 2.332708) (xy -5.530818 2.422809) (xy -5.537914 2.495648) (xy -5.546573 2.554034)
|
||||||
|
(xy -5.55693 2.600777) (xy -5.569121 2.638686) (xy -5.58328 2.67057) (xy -5.599544 2.69924)
|
||||||
|
(xy -5.618047 2.727504) (xy -5.635124 2.75255) (xy -5.669549 2.805373) (xy -5.689932 2.840698)
|
||||||
|
(xy -5.692321 2.847168) (xy -5.67041 2.849332) (xy -5.607745 2.851342) (xy -5.50893 2.85315)
|
||||||
|
(xy -5.378569 2.854708) (xy -5.221265 2.855967) (xy -5.041621 2.85688) (xy -4.844241 2.857398)
|
||||||
|
(xy -4.705803 2.8575) (xy -4.49488 2.857057) (xy -4.300331 2.855788) (xy -4.126554 2.853782)
|
||||||
|
(xy -3.977944 2.851126) (xy -3.858898 2.84791) (xy -3.773812 2.844223) (xy -3.727084 2.840153)
|
||||||
|
(xy -3.719285 2.837598) (xy -3.734749 2.807659) (xy -3.750818 2.791527) (xy -3.777279 2.757121)
|
||||||
|
(xy -3.811912 2.696349) (xy -3.835862 2.647009) (xy -3.889375 2.528661) (xy -3.895552 0.16442)
|
||||||
|
(xy -3.90173 -2.199822) (xy -4.797026 -2.199821) (xy -4.993532 -2.199491) (xy -5.175127 -2.19855)
|
||||||
|
(xy -5.336979 -2.19707) (xy -5.474253 -2.195125) (xy -5.58212 -2.192786) (xy -5.655745 -2.190128)
|
||||||
|
(xy -5.690297 -2.187223) (xy -5.692321 -2.186313) (xy -7.723358 -2.186313) (xy -7.692729 -2.224442)
|
||||||
|
(xy -7.543707 -2.409636) (xy -7.399021 -2.589099) (xy -7.261411 -2.759416) (xy -7.133614 -2.917169)
|
||||||
|
(xy -7.018369 -3.058943) (xy -6.918414 -3.181321) (xy -6.836488 -3.280888) (xy -6.802006 -3.322411)
|
||||||
|
(xy -6.628651 -3.524632) (xy -6.474769 -3.691891) (xy -6.336528 -3.828137) (xy -6.210095 -3.937321)
|
||||||
|
(xy -6.19125 -3.952122) (xy -6.111875 -4.013604) (xy -7.248687 -4.013856) (xy -8.3855 -4.014107)
|
||||||
|
(xy -8.374874 -3.917723) (xy -8.38151 -3.802524) (xy -8.424764 -3.665365) (xy -8.505071 -3.505154)
|
||||||
|
(xy -8.596089 -3.359943) (xy -8.628671 -3.31445) (xy -8.685028 -3.239003) (xy -8.761801 -3.137905)
|
||||||
|
(xy -8.855631 -3.015456) (xy -8.963158 -2.87596) (xy -9.081022 -2.723717) (xy -9.205865 -2.563031)
|
||||||
|
(xy -9.334327 -2.398203) (xy -9.463048 -2.233535) (xy -9.588669 -2.073329) (xy -9.70783 -1.921888)
|
||||||
|
(xy -9.817172 -1.783513) (xy -9.913336 -1.662506) (xy -9.992962 -1.563169) (xy -10.052691 -1.489805)
|
||||||
|
(xy -10.089162 -1.446715) (xy -10.095306 -1.440089) (xy -10.101051 -1.456174) (xy -10.105498 -1.517032)
|
||||||
|
(xy -10.10864 -1.622098) (xy -10.110468 -1.770808) (xy -10.110977 -1.962596) (xy -10.110159 -2.196897)
|
||||||
|
(xy -10.108333 -2.437946) (xy -10.105676 -2.703349) (xy -10.102613 -2.927824) (xy -10.098644 -3.115799)
|
||||||
|
(xy -10.093269 -3.271702) (xy -10.085989 -3.399964) (xy -10.076304 -3.505011) (xy -10.063714 -3.591273)
|
||||||
|
(xy -10.04772 -3.663179) (xy -10.027822 -3.725157) (xy -10.00352 -3.781636) (xy -9.974316 -3.837044)
|
||||||
|
(xy -9.94482 -3.887345) (xy -9.868487 -4.014107) (xy -11.997716 -4.014107) (xy -12.606096 -4.014107)
|
||||||
|
(xy -12.606029 -4.026663) (xy -12.604409 -4.231719) (xy -12.602349 -4.410335) (xy -12.599798 -4.564404)
|
||||||
|
(xy -12.596704 -4.695816) (xy -12.593016 -4.806465) (xy -12.588683 -4.89824) (xy -12.583653 -4.973035)
|
||||||
|
(xy -12.577875 -5.032741) (xy -12.571298 -5.07925) (xy -12.563869 -5.114453) (xy -12.555539 -5.140243)
|
||||||
|
(xy -12.546255 -5.15851) (xy -12.535966 -5.171148) (xy -12.524621 -5.180046) (xy -12.512168 -5.187098)
|
||||||
|
(xy -12.498556 -5.194196) (xy -12.48651 -5.201364) (xy -12.475998 -5.206539) (xy -12.459573 -5.211217)
|
||||||
|
(xy -12.435038 -5.215423) (xy -12.400193 -5.219182) (xy -12.352839 -5.222517) (xy -12.290778 -5.225456)
|
||||||
|
(xy -12.211811 -5.228021) (xy -12.113738 -5.230238) (xy -11.994361 -5.232132) (xy -11.851481 -5.233727)
|
||||||
|
(xy -11.682898 -5.235049) (xy -11.486415 -5.236122) (xy -11.259832 -5.236971) (xy -11.00095 -5.23762)
|
||||||
|
(xy -10.70757 -5.238096) (xy -10.377493 -5.238422) (xy -10.008521 -5.238623) (xy -9.598454 -5.238724)
|
||||||
|
(xy -9.17428 -5.23875) (xy -5.919107 -5.23875) (xy -5.919107 -5.044311)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 0.659791 -4.12017) (xy 0.981503 -4.077634) (xy 1.310847 -3.996995) (xy 1.651969 -3.877456)
|
||||||
|
(xy 2.009015 -3.718217) (xy 2.031651 -3.707078) (xy 2.147556 -3.650777) (xy 2.251111 -3.602407)
|
||||||
|
(xy 2.33476 -3.565348) (xy 2.390951 -3.542975) (xy 2.410179 -3.537857) (xy 2.448784 -3.527797)
|
||||||
|
(xy 2.458048 -3.519348) (xy 2.447796 -3.498389) (xy 2.415573 -3.445578) (xy 2.365088 -3.366449)
|
||||||
|
(xy 2.300051 -3.266537) (xy 2.224172 -3.151375) (xy 2.141161 -3.026499) (xy 2.054729 -2.897442)
|
||||||
|
(xy 1.968583 -2.769739) (xy 1.886436 -2.648924) (xy 1.811996 -2.540531) (xy 1.748974 -2.450095)
|
||||||
|
(xy 1.701079 -2.383149) (xy 1.672021 -2.345229) (xy 1.668033 -2.340831) (xy 1.647706 -2.350169)
|
||||||
|
(xy 1.602825 -2.384676) (xy 1.541411 -2.437955) (xy 1.509783 -2.467037) (xy 1.315943 -2.618272)
|
||||||
|
(xy 1.101569 -2.729649) (xy 0.869529 -2.800164) (xy 0.622692 -2.828812) (xy 0.483272 -2.82646)
|
||||||
|
(xy 0.239913 -2.791985) (xy 0.020502 -2.7199) (xy -0.175615 -2.60968) (xy -0.349095 -2.460797)
|
||||||
|
(xy -0.500593 -2.272725) (xy -0.630766 -2.044936) (xy -0.705935 -1.870982) (xy -0.794032 -1.598371)
|
||||||
|
(xy -0.858961 -1.302087) (xy -0.90089 -0.989771) (xy -0.919987 -0.669062) (xy -0.916418 -0.3476)
|
||||||
|
(xy -0.890351 -0.033025) (xy -0.841953 0.267022) (xy -0.771391 0.544901) (xy -0.678833 0.792973)
|
||||||
|
(xy -0.646124 0.861786) (xy -0.509022 1.090977) (xy -0.347384 1.284824) (xy -0.163585 1.441748)
|
||||||
|
(xy 0.040001 1.560168) (xy 0.261001 1.638506) (xy 0.49704 1.675181) (xy 0.580346 1.677879)
|
||||||
|
(xy 0.824548 1.65594) (xy 1.066498 1.590014) (xy 1.303125 1.481463) (xy 1.531362 1.331648)
|
||||||
|
(xy 1.714993 1.174296) (xy 1.808469 1.084837) (xy 2.172623 1.682017) (xy 2.263221 1.831004)
|
||||||
|
(xy 2.346065 1.968039) (xy 2.418218 2.088199) (xy 2.476741 2.186558) (xy 2.518695 2.258194)
|
||||||
|
(xy 2.541142 2.298182) (xy 2.544059 2.304399) (xy 2.527527 2.323764) (xy 2.476141 2.358479)
|
||||||
|
(xy 2.396398 2.405256) (xy 2.294794 2.460805) (xy 2.177828 2.521839) (xy 2.051996 2.58507)
|
||||||
|
(xy 1.923794 2.647209) (xy 1.79972 2.704968) (xy 1.686271 2.75506) (xy 1.589944 2.794196)
|
||||||
|
(xy 1.54283 2.81113) (xy 1.274105 2.887097) (xy 0.997086 2.937326) (xy 0.700357 2.96345)
|
||||||
|
(xy 0.445648 2.968127) (xy 0.30913 2.965928) (xy 0.177342 2.961714) (xy 0.061969 2.956005)
|
||||||
|
(xy -0.025305 2.94932) (xy -0.053641 2.945938) (xy -0.332912 2.88801) (xy -0.617229 2.797368)
|
||||||
|
(xy -0.893421 2.679408) (xy -1.148314 2.539527) (xy -1.304018 2.433697) (xy -1.55997 2.216328)
|
||||||
|
(xy -1.797632 1.962063) (xy -2.012601 1.677187) (xy -2.200475 1.367982) (xy -2.356853 1.040731)
|
||||||
|
(xy -2.444954 0.805089) (xy -2.545898 0.436195) (xy -2.613194 0.045364) (xy -2.646865 -0.358945)
|
||||||
|
(xy -2.646931 -0.768278) (xy -2.613412 -1.174177) (xy -2.546331 -1.568186) (xy -2.445708 -1.941848)
|
||||||
|
(xy -2.438041 -1.965128) (xy -2.311713 -2.290682) (xy -2.157533 -2.587837) (xy -1.970272 -2.865004)
|
||||||
|
(xy -1.744699 -3.130592) (xy -1.656577 -3.221521) (xy -1.383077 -3.470511) (xy -1.101915 -3.676511)
|
||||||
|
(xy -0.808773 -3.841763) (xy -0.499335 -3.96851) (xy -0.169287 -4.058995) (xy 0.022679 -4.094131)
|
||||||
|
(xy 0.341565 -4.125403) (xy 0.659791 -4.12017)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 5.371019 -2.277016) (xy 5.676212 -2.236808) (xy 5.947948 -2.169238) (xy 6.187981 -2.073767)
|
||||||
|
(xy 6.398066 -1.949857) (xy 6.553978 -1.822169) (xy 6.692274 -1.673239) (xy 6.800236 -1.512983)
|
||||||
|
(xy 6.886427 -1.327719) (xy 6.917514 -1.241195) (xy 6.943347 -1.162885) (xy 6.965851 -1.090268)
|
||||||
|
(xy 6.985286 -1.019664) (xy 7.001912 -0.94739) (xy 7.015989 -0.869766) (xy 7.027779 -0.78311)
|
||||||
|
(xy 7.03754 -0.683741) (xy 7.045535 -0.567978) (xy 7.052022 -0.432139) (xy 7.057264 -0.272543)
|
||||||
|
(xy 7.061519 -0.085509) (xy 7.065048 0.132644) (xy 7.068112 0.385598) (xy 7.070972 0.677033)
|
||||||
|
(xy 7.073487 0.963839) (xy 7.076152 1.277615) (xy 7.078574 1.549364) (xy 7.081004 1.782413)
|
||||||
|
(xy 7.083695 1.98009) (xy 7.086899 2.145722) (xy 7.090866 2.282636) (xy 7.095851 2.39416)
|
||||||
|
(xy 7.102103 2.483622) (xy 7.109876 2.554348) (xy 7.11942 2.609666) (xy 7.130989 2.652903)
|
||||||
|
(xy 7.144834 2.687388) (xy 7.161207 2.716446) (xy 7.180359 2.743406) (xy 7.202543 2.771594)
|
||||||
|
(xy 7.211183 2.782509) (xy 7.242963 2.82839) (xy 7.257098 2.859635) (xy 7.257143 2.860558)
|
||||||
|
(xy 7.235292 2.864975) (xy 7.173044 2.869045) (xy 7.075361 2.872652) (xy 6.947204 2.875683)
|
||||||
|
(xy 6.793532 2.878023) (xy 6.619307 2.879558) (xy 6.42949 2.880172) (xy 6.40758 2.880179)
|
||||||
|
(xy 5.558016 2.880179) (xy 5.551464 2.687188) (xy 5.544911 2.494197) (xy 5.420179 2.596627)
|
||||||
|
(xy 5.22465 2.732257) (xy 5.003866 2.842129) (xy 4.830165 2.902857) (xy 4.691407 2.932365)
|
||||||
|
(xy 4.523958 2.95244) (xy 4.343624 2.962458) (xy 4.166207 2.96179) (xy 4.007513 2.949812)
|
||||||
|
(xy 3.934732 2.938334) (xy 3.653445 2.862272) (xy 3.399465 2.752096) (xy 3.174629 2.609446)
|
||||||
|
(xy 2.980774 2.435962) (xy 2.819734 2.233284) (xy 2.693346 2.003054) (xy 2.604199 1.749745)
|
||||||
|
(xy 2.57942 1.636073) (xy 2.564133 1.511119) (xy 2.556843 1.360774) (xy 2.555849 1.292679)
|
||||||
|
(xy 2.55598 1.28628) (xy 4.082641 1.28628) (xy 4.101312 1.437053) (xy 4.157937 1.565277)
|
||||||
|
(xy 4.255307 1.67705) (xy 4.265466 1.685914) (xy 4.362486 1.755879) (xy 4.466365 1.801244)
|
||||||
|
(xy 4.588371 1.825192) (xy 4.73977 1.830904) (xy 4.776147 1.83009) (xy 4.884264 1.824761)
|
||||||
|
(xy 4.964681 1.81388) (xy 5.035027 1.793462) (xy 5.112931 1.75952) (xy 5.13431 1.749117)
|
||||||
|
(xy 5.256154 1.677141) (xy 5.350209 1.591496) (xy 5.375797 1.560884) (xy 5.465536 1.447356)
|
||||||
|
(xy 5.465536 1.053855) (xy 5.46446 0.89586) (xy 5.461065 0.779441) (xy 5.455102 0.700865)
|
||||||
|
(xy 5.446321 0.656399) (xy 5.438115 0.643408) (xy 5.406122 0.637052) (xy 5.338254 0.631784)
|
||||||
|
(xy 5.243987 0.628101) (xy 5.1328 0.626499) (xy 5.114945 0.626469) (xy 4.872316 0.637023)
|
||||||
|
(xy 4.666059 0.669502) (xy 4.492179 0.725145) (xy 4.346681 0.805195) (xy 4.236331 0.899514)
|
||||||
|
(xy 4.146839 1.015804) (xy 4.09717 1.142463) (xy 4.082641 1.28628) (xy 2.55598 1.28628)
|
||||||
|
(xy 2.559733 1.104331) (xy 2.576496 0.945828) (xy 2.609133 0.802747) (xy 2.660635 0.660665)
|
||||||
|
(xy 2.708842 0.555454) (xy 2.826603 0.364009) (xy 2.983494 0.187171) (xy 3.174741 0.02816)
|
||||||
|
(xy 3.395569 -0.109808) (xy 3.641205 -0.223512) (xy 3.906874 -0.309735) (xy 4.036786 -0.339747)
|
||||||
|
(xy 4.310365 -0.384154) (xy 4.608582 -0.413451) (xy 4.912846 -0.426269) (xy 5.167093 -0.42299)
|
||||||
|
(xy 5.492312 -0.409371) (xy 5.477406 -0.527855) (xy 5.438648 -0.727047) (xy 5.376103 -0.889208)
|
||||||
|
(xy 5.288041 -1.015582) (xy 5.172732 -1.10741) (xy 5.028446 -1.165937) (xy 4.853453 -1.192406)
|
||||||
|
(xy 4.646022 -1.188059) (xy 4.569732 -1.180021) (xy 4.286091 -1.129461) (xy 4.011243 -1.047026)
|
||||||
|
(xy 3.82134 -0.970684) (xy 3.730617 -0.931762) (xy 3.653409 -0.900482) (xy 3.600471 -0.881107)
|
||||||
|
(xy 3.585026 -0.876993) (xy 3.56545 -0.895231) (xy 3.531864 -0.953429) (xy 3.48395 -1.052243)
|
||||||
|
(xy 3.421393 -1.192331) (xy 3.343877 -1.374351) (xy 3.330623 -1.406071) (xy 3.270242 -1.551351)
|
||||||
|
(xy 3.216042 -1.682629) (xy 3.170364 -1.794163) (xy 3.135548 -1.880213) (xy 3.113936 -1.935039)
|
||||||
|
(xy 3.107695 -1.952796) (xy 3.127782 -1.962348) (xy 3.18057 -1.972949) (xy 3.237366 -1.980341)
|
||||||
|
(xy 3.29795 -1.989897) (xy 3.393951 -2.008872) (xy 3.516856 -2.035406) (xy 3.65815 -2.067639)
|
||||||
|
(xy 3.80932 -2.103711) (xy 3.866697 -2.117818) (xy 4.077757 -2.169223) (xy 4.253867 -2.209527)
|
||||||
|
(xy 4.403709 -2.240018) (xy 4.535967 -2.261984) (xy 4.659324 -2.276711) (xy 4.78246 -2.285489)
|
||||||
|
(xy 4.914061 -2.289603) (xy 5.030614 -2.290402) (xy 5.371019 -2.277016)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 12.428251 -1.060223) (xy 12.42829 -0.589295) (xy 12.428342 -0.161512) (xy 12.428488 0.225338)
|
||||||
|
(xy 12.428805 0.573466) (xy 12.429371 0.885085) (xy 12.430265 1.162406) (xy 12.431565 1.40764)
|
||||||
|
(xy 12.433349 1.623001) (xy 12.435697 1.8107) (xy 12.438685 1.972948) (xy 12.442393 2.111957)
|
||||||
|
(xy 12.446899 2.22994) (xy 12.452282 2.329109) (xy 12.458619 2.411674) (xy 12.465988 2.479848)
|
||||||
|
(xy 12.47447 2.535843) (xy 12.484141 2.58187) (xy 12.495079 2.620143) (xy 12.507365 2.652871)
|
||||||
|
(xy 12.521075 2.682268) (xy 12.536288 2.710544) (xy 12.553083 2.739913) (xy 12.563516 2.758207)
|
||||||
|
(xy 12.632352 2.880179) (xy 10.908393 2.880179) (xy 10.908393 2.687411) (xy 10.906923 2.600296)
|
||||||
|
(xy 10.903002 2.533671) (xy 10.897359 2.49795) (xy 10.894864 2.494643) (xy 10.871918 2.508472)
|
||||||
|
(xy 10.826286 2.544317) (xy 10.780684 2.583239) (xy 10.671027 2.665072) (xy 10.53145 2.747445)
|
||||||
|
(xy 10.376659 2.822791) (xy 10.22136 2.883543) (xy 10.15938 2.902926) (xy 10.021773 2.932188)
|
||||||
|
(xy 9.855331 2.952199) (xy 9.675746 2.962331) (xy 9.498713 2.961956) (xy 9.339925 2.950445)
|
||||||
|
(xy 9.264197 2.938777) (xy 8.98677 2.862314) (xy 8.731031 2.746351) (xy 8.498355 2.591942)
|
||||||
|
(xy 8.290119 2.400144) (xy 8.107701 2.172012) (xy 7.973501 1.949426) (xy 7.863276 1.714872)
|
||||||
|
(xy 7.7789 1.475108) (xy 7.718639 1.221996) (xy 7.680759 0.947398) (xy 7.663526 0.643174)
|
||||||
|
(xy 7.662066 0.487589) (xy 7.666274 0.373527) (xy 9.331909 0.373527) (xy 9.332327 0.560495)
|
||||||
|
(xy 9.338179 0.736658) (xy 9.349554 0.891506) (xy 9.36654 1.014527) (xy 9.37173 1.039319)
|
||||||
|
(xy 9.435616 1.254843) (xy 9.519306 1.42967) (xy 9.623498 1.564237) (xy 9.748891 1.658983)
|
||||||
|
(xy 9.896185 1.71435) (xy 10.066077 1.730774) (xy 10.259267 1.708695) (xy 10.386786 1.677111)
|
||||||
|
(xy 10.485511 1.640569) (xy 10.594252 1.588642) (xy 10.675938 1.541026) (xy 10.817679 1.447877)
|
||||||
|
(xy 10.817679 -0.862775) (xy 10.682262 -0.950299) (xy 10.52451 -1.03251) (xy 10.355387 -1.086049)
|
||||||
|
(xy 10.184379 -1.110004) (xy 10.020971 -1.103461) (xy 9.874647 -1.065507) (xy 9.810454 -1.03423)
|
||||||
|
(xy 9.694088 -0.947852) (xy 9.595736 -0.833801) (xy 9.51306 -0.687908) (xy 9.443721 -0.506008)
|
||||||
|
(xy 9.38538 -0.283931) (xy 9.382806 -0.272143) (xy 9.362374 -0.147079) (xy 9.347021 0.009229)
|
||||||
|
(xy 9.336837 0.186268) (xy 9.331909 0.373527) (xy 7.666274 0.373527) (xy 7.677839 0.060058)
|
||||||
|
(xy 7.721924 -0.333363) (xy 7.794214 -0.692413) (xy 7.894606 -1.01683) (xy 8.022995 -1.306354)
|
||||||
|
(xy 8.179278 -1.560724) (xy 8.36335 -1.779679) (xy 8.575107 -1.962958) (xy 8.665839 -2.025136)
|
||||||
|
(xy 8.868638 -2.137932) (xy 9.076141 -2.217508) (xy 9.2973 -2.266043) (xy 9.541066 -2.28572)
|
||||||
|
(xy 9.726903 -2.28362) (xy 9.987369 -2.26159) (xy 10.213562 -2.217764) (xy 10.412027 -2.150128)
|
||||||
|
(xy 10.589306 -2.056669) (xy 10.687473 -1.98794) (xy 10.746468 -1.943915) (xy 10.790043 -1.91384)
|
||||||
|
(xy 10.806536 -1.905) (xy 10.80978 -1.926755) (xy 10.812373 -1.988335) (xy 10.81434 -2.084212)
|
||||||
|
(xy 10.815705 -2.208859) (xy 10.816495 -2.35675) (xy 10.816735 -2.522356) (xy 10.81645 -2.700151)
|
||||||
|
(xy 10.815665 -2.884607) (xy 10.814406 -3.070197) (xy 10.812698 -3.251394) (xy 10.810567 -3.42267)
|
||||||
|
(xy 10.808037 -3.578499) (xy 10.805135 -3.713352) (xy 10.801886 -3.821703) (xy 10.798315 -3.898025)
|
||||||
|
(xy 10.797327 -3.912054) (xy 10.782105 -4.053514) (xy 10.758879 -4.164304) (xy 10.723243 -4.258968)
|
||||||
|
(xy 10.670791 -4.352048) (xy 10.658201 -4.371295) (xy 10.609118 -4.445) (xy 12.427857 -4.445)
|
||||||
|
(xy 12.428251 -1.060223)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy -4.56638 -5.973406) (xy -4.37297 -5.924714) (xy -4.199029 -5.838668) (xy -4.04874 -5.718579)
|
||||||
|
(xy -3.926284 -5.567757) (xy -3.835845 -5.389514) (xy -3.783086 -5.196033) (xy -3.771332 -5.000636)
|
||||||
|
(xy -3.801173 -4.81208) (xy -3.868874 -4.635581) (xy -3.970703 -4.476355) (xy -4.102925 -4.339615)
|
||||||
|
(xy -4.261808 -4.230578) (xy -4.443617 -4.15446) (xy -4.546606 -4.129502) (xy -4.635999 -4.114392)
|
||||||
|
(xy -4.704909 -4.108421) (xy -4.771124 -4.112087) (xy -4.852434 -4.125887) (xy -4.918922 -4.1399)
|
||||||
|
(xy -5.106588 -4.2032) (xy -5.274681 -4.305904) (xy -5.419416 -4.444898) (xy -5.537007 -4.617065)
|
||||||
|
(xy -5.565029 -4.671786) (xy -5.598051 -4.744845) (xy -5.61876 -4.806197) (xy -5.629941 -4.870748)
|
||||||
|
(xy -5.63438 -4.953401) (xy -5.634939 -5.045982) (xy -5.626729 -5.215451) (xy -5.599779 -5.354627)
|
||||||
|
(xy -5.549174 -5.476418) (xy -5.470002 -5.593728) (xy -5.392562 -5.682651) (xy -5.248136 -5.814875)
|
||||||
|
(xy -5.097279 -5.906145) (xy -4.931038 -5.960792) (xy -4.775078 -5.981433) (xy -4.56638 -5.973406)) (layer F.SilkS) (width 0.01))
|
||||||
|
)
|
225
PCB/HASwitchPlate.pretty/MeanWell_logo_18mm.kicad_mod
Normal file
@ -0,0 +1,225 @@
|
|||||||
|
(module HASwitchPlate:MeanWell_logo_18mm (layer F.Cu) (tedit 0)
|
||||||
|
(fp_text reference G*** (at 0 0) (layer F.SilkS) hide
|
||||||
|
(effects (font (size 1.524 1.524) (thickness 0.3)))
|
||||||
|
)
|
||||||
|
(fp_text value LOGO (at 0.75 0) (layer F.SilkS) hide
|
||||||
|
(effects (font (size 1.524 1.524) (thickness 0.3)))
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 6.588606 3.879272) (xy 7.450667 3.879272) (xy 7.450667 4.248727) (xy 6.219152 4.248727)
|
||||||
|
(xy 6.219152 2.339878) (xy 6.588606 2.339878) (xy 6.588606 3.879272)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 4.898187 2.3458) (xy 5.064606 2.355272) (xy 5.081381 3.109575) (xy 5.086261 3.318201)
|
||||||
|
(xy 5.091097 3.50525) (xy 5.095634 3.662296) (xy 5.099616 3.780915) (xy 5.102786 3.852681)
|
||||||
|
(xy 5.104471 3.870682) (xy 5.135797 3.873805) (xy 5.217133 3.87757) (xy 5.336923 3.881549)
|
||||||
|
(xy 5.483611 3.885311) (xy 5.518727 3.886076) (xy 5.926667 3.894666) (xy 5.9359 4.071697)
|
||||||
|
(xy 5.945134 4.248727) (xy 4.679758 4.248727) (xy 4.680229 3.332787) (xy 4.681179 3.100019)
|
||||||
|
(xy 4.683638 2.886343) (xy 4.687388 2.699763) (xy 4.692211 2.548287) (xy 4.697889 2.43992)
|
||||||
|
(xy 4.704205 2.382668) (xy 4.706234 2.376588) (xy 4.756007 2.350548) (xy 4.861226 2.344243)
|
||||||
|
(xy 4.898187 2.3458)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 4.33493 2.532303) (xy 4.344164 2.709333) (xy 3.448243 2.709333) (xy 3.448243 3.078787)
|
||||||
|
(xy 4.248727 3.078787) (xy 4.248727 3.448242) (xy 3.448243 3.448242) (xy 3.448243 3.879272)
|
||||||
|
(xy 4.371879 3.879272) (xy 4.371879 4.248727) (xy 3.04711 4.248727) (xy 3.055252 3.302)
|
||||||
|
(xy 3.063394 2.355272) (xy 4.325697 2.355272) (xy 4.33493 2.532303)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 0.834943 2.345827) (xy 1.000606 2.355272) (xy 1.039781 2.509212) (xy 1.060308 2.596315)
|
||||||
|
(xy 1.089254 2.727713) (xy 1.123151 2.887284) (xy 1.158535 3.058905) (xy 1.167657 3.104037)
|
||||||
|
(xy 1.209047 3.303825) (xy 1.241321 3.445346) (xy 1.2653 3.531099) (xy 1.281811 3.563585)
|
||||||
|
(xy 1.291675 3.545305) (xy 1.295447 3.491858) (xy 1.300961 3.409673) (xy 1.309089 3.355878)
|
||||||
|
(xy 1.322025 3.294624) (xy 1.342658 3.187592) (xy 1.368219 3.049687) (xy 1.395936 2.89581)
|
||||||
|
(xy 1.417855 2.770909) (xy 1.439561 2.647885) (xy 1.461518 2.527004) (xy 1.470606 2.478424)
|
||||||
|
(xy 1.494034 2.355272) (xy 1.686249 2.346101) (xy 1.782225 2.343577) (xy 1.848091 2.353519)
|
||||||
|
(xy 1.892243 2.385905) (xy 1.923077 2.450712) (xy 1.948992 2.557918) (xy 1.972852 2.686651)
|
||||||
|
(xy 1.997007 2.821023) (xy 2.021932 2.959151) (xy 2.035239 3.032606) (xy 2.056201 3.151501)
|
||||||
|
(xy 2.075731 3.267783) (xy 2.081416 3.303367) (xy 2.104144 3.43705) (xy 2.122897 3.511906)
|
||||||
|
(xy 2.140197 3.530342) (xy 2.158567 3.494763) (xy 2.180531 3.407575) (xy 2.182283 3.399533)
|
||||||
|
(xy 2.209213 3.275239) (xy 2.23555 3.15384) (xy 2.24851 3.094181) (xy 2.270821 2.989778)
|
||||||
|
(xy 2.297304 2.863396) (xy 2.310051 2.801697) (xy 2.337949 2.674326) (xy 2.368951 2.544936)
|
||||||
|
(xy 2.382213 2.493818) (xy 2.419615 2.355272) (xy 2.584264 2.345814) (xy 2.681583 2.345232)
|
||||||
|
(xy 2.753459 2.353949) (xy 2.776095 2.363537) (xy 2.778338 2.402073) (xy 2.765392 2.490959)
|
||||||
|
(xy 2.738967 2.621335) (xy 2.700769 2.784337) (xy 2.676319 2.880995) (xy 2.63125 3.055536)
|
||||||
|
(xy 2.589602 3.21774) (xy 2.55474 3.354436) (xy 2.530028 3.452454) (xy 2.52159 3.486727)
|
||||||
|
(xy 2.491455 3.610218) (xy 2.456288 3.7505) (xy 2.41187 3.924307) (xy 2.381797 4.040909)
|
||||||
|
(xy 2.328079 4.248727) (xy 2.134444 4.248727) (xy 2.027842 4.246674) (xy 1.967698 4.237158)
|
||||||
|
(xy 1.93894 4.215139) (xy 1.927238 4.179454) (xy 1.883428 3.952496) (xy 1.841848 3.730874)
|
||||||
|
(xy 1.804088 3.523639) (xy 1.77174 3.339843) (xy 1.746392 3.188538) (xy 1.729637 3.078776)
|
||||||
|
(xy 1.723064 3.019609) (xy 1.723026 3.017212) (xy 1.718737 2.967825) (xy 1.701963 2.974014)
|
||||||
|
(xy 1.693333 2.986424) (xy 1.671574 3.049665) (xy 1.663017 3.128072) (xy 1.653163 3.231416)
|
||||||
|
(xy 1.635275 3.312799) (xy 1.619418 3.377157) (xy 1.596234 3.48699) (xy 1.5688 3.627083)
|
||||||
|
(xy 1.540194 3.782222) (xy 1.539358 3.786909) (xy 1.512444 3.936096) (xy 1.488672 4.064739)
|
||||||
|
(xy 1.470476 4.159874) (xy 1.460292 4.208536) (xy 1.459837 4.210242) (xy 1.421268 4.235196)
|
||||||
|
(xy 1.324777 4.247468) (xy 1.265344 4.248727) (xy 1.157722 4.245139) (xy 1.097002 4.231798)
|
||||||
|
(xy 1.06879 4.204834) (xy 1.064921 4.194848) (xy 1.050213 4.142754) (xy 1.02451 4.047088)
|
||||||
|
(xy 0.992102 3.923926) (xy 0.972507 3.848484) (xy 0.885895 3.513219) (xy 0.813631 3.23263)
|
||||||
|
(xy 0.754587 3.001793) (xy 0.707637 2.815785) (xy 0.671652 2.669681) (xy 0.645507 2.558557)
|
||||||
|
(xy 0.628074 2.477491) (xy 0.618226 2.421559) (xy 0.614835 2.385836) (xy 0.616776 2.365398)
|
||||||
|
(xy 0.622919 2.355323) (xy 0.629832 2.351519) (xy 0.681333 2.344627) (xy 0.770454 2.343405)
|
||||||
|
(xy 0.834943 2.345827)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy -1.518214 2.454014) (xy -1.449647 2.586322) (xy -1.365061 2.746885) (xy -1.273149 2.919464)
|
||||||
|
(xy -1.182606 3.087824) (xy -1.102126 3.235725) (xy -1.040404 3.34693) (xy -1.03533 3.355878)
|
||||||
|
(xy -0.93903 3.525212) (xy -0.921913 2.940242) (xy -0.916275 2.757348) (xy -0.910783 2.596856)
|
||||||
|
(xy -0.905813 2.468418) (xy -0.901738 2.381685) (xy -0.898935 2.346308) (xy -0.898822 2.346039)
|
||||||
|
(xy -0.867536 2.342529) (xy -0.792717 2.342966) (xy -0.715818 2.346039) (xy -0.538788 2.355272)
|
||||||
|
(xy -0.530644 3.303416) (xy -0.5225 4.251561) (xy -0.730201 4.242447) (xy -0.937901 4.233333)
|
||||||
|
(xy -1.056452 4.017818) (xy -1.126239 3.89014) (xy -1.211886 3.732244) (xy -1.304443 3.560753)
|
||||||
|
(xy -1.394958 3.392291) (xy -1.47448 3.243483) (xy -1.534058 3.130951) (xy -1.537195 3.124969)
|
||||||
|
(xy -1.553716 3.096738) (xy -1.566168 3.088255) (xy -1.575284 3.106171) (xy -1.581793 3.157135)
|
||||||
|
(xy -1.586429 3.247799) (xy -1.589922 3.38481) (xy -1.593004 3.574821) (xy -1.593923 3.640666)
|
||||||
|
(xy -1.602271 4.248727) (xy -2.002102 4.248727) (xy -1.99396 3.302) (xy -1.985818 2.355272)
|
||||||
|
(xy -1.78187 2.346257) (xy -1.577921 2.337241) (xy -1.518214 2.454014)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy -2.914367 2.346088) (xy -2.834028 2.363456) (xy -2.811277 2.378363) (xy -2.796535 2.413663)
|
||||||
|
(xy -2.765473 2.498772) (xy -2.721024 2.625008) (xy -2.666122 2.783691) (xy -2.603699 2.966141)
|
||||||
|
(xy -2.53669 3.163678) (xy -2.468026 3.367621) (xy -2.400642 3.569291) (xy -2.337471 3.760005)
|
||||||
|
(xy -2.281445 3.931085) (xy -2.235498 4.07385) (xy -2.202563 4.17962) (xy -2.202191 4.180854)
|
||||||
|
(xy -2.193852 4.217198) (xy -2.204212 4.237613) (xy -2.245193 4.245755) (xy -2.328715 4.245279)
|
||||||
|
(xy -2.40297 4.242429) (xy -2.625038 4.233333) (xy -2.675976 4.064) (xy -2.726913 3.894666)
|
||||||
|
(xy -3.368748 3.894666) (xy -3.38921 3.98703) (xy -3.420477 4.113254) (xy -3.454527 4.190654)
|
||||||
|
(xy -3.504486 4.231107) (xy -3.583479 4.246489) (xy -3.678389 4.248727) (xy -3.798531 4.244196)
|
||||||
|
(xy -3.863108 4.229913) (xy -3.878381 4.210242) (xy -3.868524 4.170843) (xy -3.841453 4.082313)
|
||||||
|
(xy -3.800097 3.953708) (xy -3.747387 3.794083) (xy -3.686252 3.612496) (xy -3.661758 3.540606)
|
||||||
|
(xy -3.640258 3.477612) (xy -3.223798 3.477612) (xy -3.210563 3.498351) (xy -3.164038 3.507492)
|
||||||
|
(xy -3.071864 3.509767) (xy -3.035113 3.509818) (xy -2.833349 3.509818) (xy -2.890635 3.348181)
|
||||||
|
(xy -2.93464 3.219712) (xy -2.979119 3.083341) (xy -2.99495 3.032606) (xy -3.024093 2.953106)
|
||||||
|
(xy -3.047654 2.918175) (xy -3.057923 2.924848) (xy -3.074892 2.977634) (xy -3.105081 3.074902)
|
||||||
|
(xy -3.144039 3.202147) (xy -3.187319 3.344865) (xy -3.216107 3.440545) (xy -3.223798 3.477612)
|
||||||
|
(xy -3.640258 3.477612) (xy -3.597932 3.353606) (xy -3.540813 3.18575) (xy -3.493426 3.04597)
|
||||||
|
(xy -3.458797 2.943195) (xy -3.43995 2.886356) (xy -3.437557 2.878666) (xy -3.392275 2.729524)
|
||||||
|
(xy -3.355324 2.632363) (xy -3.325834 2.563195) (xy -3.288579 2.472126) (xy -3.28186 2.455333)
|
||||||
|
(xy -3.235869 2.339878) (xy -3.037947 2.339878) (xy -2.914367 2.346088)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy -4.533665 2.339943) (xy -4.368833 2.341617) (xy -4.250368 2.347126) (xy -4.170665 2.35869)
|
||||||
|
(xy -4.122123 2.378534) (xy -4.097137 2.40888) (xy -4.088106 2.451951) (xy -4.087425 2.509971)
|
||||||
|
(xy -4.087752 2.534221) (xy -4.089379 2.615512) (xy -4.091782 2.670848) (xy -4.109519 2.686867)
|
||||||
|
(xy -4.164283 2.698138) (xy -4.262764 2.705233) (xy -4.411648 2.708724) (xy -4.541212 2.709333)
|
||||||
|
(xy -4.987636 2.709333) (xy -4.987636 3.077) (xy -4.579697 3.085591) (xy -4.171757 3.094181)
|
||||||
|
(xy -4.171757 3.432848) (xy -4.579697 3.441439) (xy -4.987636 3.450029) (xy -4.987636 3.877668)
|
||||||
|
(xy -4.048606 3.894666) (xy -4.039373 4.071697) (xy -4.030139 4.248727) (xy -5.418667 4.248727)
|
||||||
|
(xy -5.418667 3.343002) (xy -5.41805 3.111042) (xy -5.416308 2.897733) (xy -5.413599 2.71123)
|
||||||
|
(xy -5.410083 2.559686) (xy -5.40592 2.451256) (xy -5.401269 2.394092) (xy -5.399979 2.388578)
|
||||||
|
(xy -5.386705 2.371938) (xy -5.356219 2.359505) (xy -5.300718 2.350694) (xy -5.212402 2.344916)
|
||||||
|
(xy -5.08347 2.341585) (xy -4.906119 2.340115) (xy -4.752467 2.339878) (xy -4.533665 2.339943)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy -6.080832 2.343956) (xy -6.0076 2.346431) (xy -5.741939 2.355272) (xy -5.733797 3.302)
|
||||||
|
(xy -5.725655 4.248727) (xy -6.096 4.248727) (xy -6.096 3.632969) (xy -6.097145 3.445821)
|
||||||
|
(xy -6.10034 3.281572) (xy -6.105224 3.149439) (xy -6.111436 3.058638) (xy -6.118615 3.018386)
|
||||||
|
(xy -6.120107 3.017212) (xy -6.136741 3.04513) (xy -6.158489 3.11886) (xy -6.181036 3.223362)
|
||||||
|
(xy -6.18416 3.240424) (xy -6.207979 3.368585) (xy -6.231686 3.488127) (xy -6.249746 3.571393)
|
||||||
|
(xy -6.271361 3.665348) (xy -6.297842 3.784562) (xy -6.311702 3.848484) (xy -6.338338 3.968852)
|
||||||
|
(xy -6.365386 4.085234) (xy -6.377136 4.133272) (xy -6.406252 4.248727) (xy -6.6046 4.248727)
|
||||||
|
(xy -6.712842 4.246745) (xy -6.77454 4.237556) (xy -6.804679 4.216294) (xy -6.817954 4.179454)
|
||||||
|
(xy -6.857528 3.994931) (xy -6.898388 3.80126) (xy -6.937778 3.611807) (xy -6.972944 3.43994)
|
||||||
|
(xy -7.001133 3.299025) (xy -7.01959 3.202428) (xy -7.021741 3.190351) (xy -7.040045 3.100162)
|
||||||
|
(xy -7.057409 3.038076) (xy -7.064578 3.023583) (xy -7.0696 3.04765) (xy -7.074013 3.124439)
|
||||||
|
(xy -7.077575 3.245095) (xy -7.080041 3.400766) (xy -7.081168 3.582598) (xy -7.081212 3.627838)
|
||||||
|
(xy -7.081212 4.248727) (xy -7.482344 4.248727) (xy -7.474202 3.302) (xy -7.46606 2.355272)
|
||||||
|
(xy -6.911879 2.355272) (xy -6.87488 2.478424) (xy -6.847791 2.579677) (xy -6.818172 2.706705)
|
||||||
|
(xy -6.80155 2.786303) (xy -6.776024 2.911203) (xy -6.743474 3.063855) (xy -6.710779 3.212024)
|
||||||
|
(xy -6.709581 3.217333) (xy -6.680378 3.348197) (xy -6.654031 3.469022) (xy -6.635552 3.556772)
|
||||||
|
(xy -6.633554 3.566739) (xy -6.612543 3.633024) (xy -6.588257 3.638488) (xy -6.561322 3.583765)
|
||||||
|
(xy -6.532367 3.469486) (xy -6.531166 3.463636) (xy -6.510222 3.362916) (xy -6.481173 3.225793)
|
||||||
|
(xy -6.449064 3.076019) (xy -6.436347 3.017212) (xy -6.404942 2.871686) (xy -6.37501 2.73174)
|
||||||
|
(xy -6.351352 2.619863) (xy -6.344343 2.586181) (xy -6.319546 2.469803) (xy -6.294412 2.397085)
|
||||||
|
(xy -6.255326 2.358334) (xy -6.188671 2.343856) (xy -6.080832 2.343956)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 9.020849 5.326303) (xy -8.99006 5.326303) (xy -8.99006 1.908848) (xy -8.251151 1.908848)
|
||||||
|
(xy -8.251151 4.618181) (xy 8.251152 4.618181) (xy 8.251152 1.908848) (xy -8.251151 1.908848)
|
||||||
|
(xy -8.99006 1.908848) (xy -8.99006 1.169939) (xy -8.192402 1.169939) (xy -7.18897 1.169421)
|
||||||
|
(xy -7.108989 1.023438) (xy -7.054313 0.924893) (xy -6.9829 0.797859) (xy -6.908743 0.667205)
|
||||||
|
(xy -6.89694 0.646545) (xy -6.724734 0.344905) (xy -6.577659 0.086018) (xy -6.449813 -0.140548)
|
||||||
|
(xy -6.335297 -0.345225) (xy -6.296155 -0.415637) (xy -6.240647 -0.513689) (xy -6.172383 -0.63164)
|
||||||
|
(xy -6.131119 -0.70178) (xy -6.080347 -0.789566) (xy -6.045329 -0.854327) (xy -6.034424 -0.87947)
|
||||||
|
(xy -6.019491 -0.912141) (xy -5.981878 -0.977161) (xy -5.962228 -1.008964) (xy -5.916456 -1.084796)
|
||||||
|
(xy -5.851037 -1.197041) (xy -5.776093 -1.328211) (xy -5.726556 -1.416243) (xy -5.652784 -1.547823)
|
||||||
|
(xy -5.585062 -1.667493) (xy -5.515565 -1.788857) (xy -5.436468 -1.925522) (xy -5.339944 -2.091092)
|
||||||
|
(xy -5.248426 -2.247516) (xy -5.181842 -2.363703) (xy -5.103792 -2.503494) (xy -5.033479 -2.632364)
|
||||||
|
(xy -4.97549 -2.737873) (xy -4.926247 -2.823093) (xy -4.894725 -2.872596) (xy -4.89109 -2.877128)
|
||||||
|
(xy -4.886405 -2.852397) (xy -4.88201 -2.770703) (xy -4.877968 -2.636654) (xy -4.874339 -2.454862)
|
||||||
|
(xy -4.871184 -2.229938) (xy -4.868565 -1.966493) (xy -4.866542 -1.669137) (xy -4.865177 -1.342481)
|
||||||
|
(xy -4.86453 -0.991137) (xy -4.864485 -0.867492) (xy -4.864485 1.171393) (xy -3.808367 1.154545)
|
||||||
|
(xy -3.724798 1.000606) (xy -3.664133 0.890869) (xy -3.603262 0.783867) (xy -3.576907 0.738909)
|
||||||
|
(xy -3.530006 0.658245) (xy -3.466574 0.54647) (xy -3.399607 0.426506) (xy -3.3936 0.415636)
|
||||||
|
(xy -3.349387 0.335865) (xy -3.297324 0.242578) (xy -3.234358 0.130363) (xy -3.157433 -0.00619)
|
||||||
|
(xy -3.063496 -0.172492) (xy -2.949492 -0.373956) (xy -2.812366 -0.615992) (xy -2.649064 -0.904012)
|
||||||
|
(xy -2.576815 -1.031394) (xy -2.45142 -1.253007) (xy -2.35492 -1.424841) (xy -2.285376 -1.550415)
|
||||||
|
(xy -2.24085 -1.633249) (xy -2.219403 -1.676863) (xy -2.216727 -1.685148) (xy -2.200946 -1.717528)
|
||||||
|
(xy -2.162678 -1.776863) (xy -2.15985 -1.780945) (xy -2.113676 -1.853043) (xy -2.053845 -1.95387)
|
||||||
|
(xy -2.009737 -2.032) (xy -1.870002 -2.284615) (xy -1.756676 -2.486692) (xy -1.667417 -2.642142)
|
||||||
|
(xy -1.599879 -2.754878) (xy -1.55172 -2.828812) (xy -1.520595 -2.867855) (xy -1.504168 -2.875924)
|
||||||
|
(xy -1.499639 -2.843134) (xy -1.495356 -2.753918) (xy -1.491386 -2.613427) (xy -1.487796 -2.426812)
|
||||||
|
(xy -1.484652 -2.199223) (xy -1.482022 -1.93581) (xy -1.479972 -1.641724) (xy -1.478568 -1.322115)
|
||||||
|
(xy -1.477879 -0.982134) (xy -1.477818 -0.84485) (xy -1.477818 1.169939) (xy -0.554182 1.169939)
|
||||||
|
(xy 0.49229 1.169939) (xy 1.555708 1.169939) (xy 1.63608 1.023697) (xy 1.690935 0.924951)
|
||||||
|
(xy 1.762407 0.797727) (xy 1.836476 0.666962) (xy 1.848105 0.646545) (xy 1.927017 0.506988)
|
||||||
|
(xy 2.018353 0.343738) (xy 2.105122 0.187195) (xy 2.123413 0.153939) (xy 2.199807 0.016489)
|
||||||
|
(xy 2.278603 -0.122476) (xy 2.346333 -0.239286) (xy 2.365049 -0.270749) (xy 2.416416 -0.358395)
|
||||||
|
(xy 2.451892 -0.423125) (xy 2.46303 -0.44844) (xy 2.478032 -0.481062) (xy 2.515821 -0.545992)
|
||||||
|
(xy 2.53568 -0.577933) (xy 2.573236 -0.640448) (xy 2.634637 -0.746304) (xy 2.713879 -0.884987)
|
||||||
|
(xy 2.804956 -1.045981) (xy 2.901862 -1.218773) (xy 2.908975 -1.231516) (xy 3.010069 -1.412307)
|
||||||
|
(xy 3.109414 -1.589288) (xy 3.199931 -1.749894) (xy 3.274538 -1.881563) (xy 3.325399 -1.970425)
|
||||||
|
(xy 3.399605 -2.100263) (xy 3.477055 -2.238235) (xy 3.533014 -2.339879) (xy 3.646339 -2.544938)
|
||||||
|
(xy 3.734563 -2.695735) (xy 3.798654 -2.793792) (xy 3.83958 -2.840631) (xy 3.854043 -2.844444)
|
||||||
|
(xy 3.858396 -2.811768) (xy 3.862511 -2.722684) (xy 3.866323 -2.582361) (xy 3.869769 -2.395967)
|
||||||
|
(xy 3.872782 -2.16867) (xy 3.875299 -1.905639) (xy 3.877255 -1.612042) (xy 3.878585 -1.293047)
|
||||||
|
(xy 3.879224 -0.953822) (xy 3.879273 -0.829456) (xy 3.879273 1.169939) (xy 4.914656 1.169939)
|
||||||
|
(xy 4.969008 1.055962) (xy 5.011253 0.974763) (xy 5.07394 0.862874) (xy 5.144927 0.741856)
|
||||||
|
(xy 5.159437 0.71782) (xy 5.221261 0.613903) (xy 5.268404 0.530717) (xy 5.293386 0.481621)
|
||||||
|
(xy 5.295515 0.474791) (xy 5.311427 0.438877) (xy 5.349966 0.377711) (xy 5.352393 0.374207)
|
||||||
|
(xy 5.398588 0.30214) (xy 5.458501 0.201355) (xy 5.502756 0.123151) (xy 5.564827 0.011596)
|
||||||
|
(xy 5.641991 -0.125858) (xy 5.718773 -0.261659) (xy 5.727543 -0.277091) (xy 5.850193 -0.492811)
|
||||||
|
(xy 5.948118 -0.665119) (xy 6.027048 -0.804123) (xy 6.092712 -0.919929) (xy 6.15084 -1.022644)
|
||||||
|
(xy 6.207161 -1.122373) (xy 6.267405 -1.229224) (xy 6.280727 -1.252869) (xy 6.358745 -1.391585)
|
||||||
|
(xy 6.434246 -1.526246) (xy 6.496892 -1.638388) (xy 6.52703 -1.69265) (xy 6.587741 -1.800235)
|
||||||
|
(xy 6.649464 -1.906267) (xy 6.669467 -1.939637) (xy 6.697859 -1.986817) (xy 6.728079 -2.038305)
|
||||||
|
(xy 6.765204 -2.103075) (xy 6.814315 -2.190101) (xy 6.880489 -2.308356) (xy 6.968808 -2.466815)
|
||||||
|
(xy 7.025226 -2.56818) (xy 7.084613 -2.673319) (xy 7.134685 -2.759102) (xy 7.16624 -2.809827)
|
||||||
|
(xy 7.169596 -2.814483) (xy 7.197454 -2.857874) (xy 7.243666 -2.936868) (xy 7.288717 -3.017213)
|
||||||
|
(xy 7.350609 -3.128902) (xy 7.427435 -3.266517) (xy 7.503761 -3.402416) (xy 7.512243 -3.417455)
|
||||||
|
(xy 7.587496 -3.551276) (xy 7.665178 -3.690163) (xy 7.72983 -3.806472) (xy 7.736032 -3.817697)
|
||||||
|
(xy 7.796223 -3.923259) (xy 7.85406 -4.019077) (xy 7.886395 -4.068753) (xy 7.9257 -4.129962)
|
||||||
|
(xy 7.943214 -4.166603) (xy 7.943273 -4.167459) (xy 7.9577 -4.201178) (xy 7.994956 -4.270534)
|
||||||
|
(xy 8.032074 -4.33505) (xy 8.093593 -4.438816) (xy 8.132855 -4.513621) (xy 8.14386 -4.564182)
|
||||||
|
(xy 8.120609 -4.595217) (xy 8.057103 -4.611444) (xy 7.947343 -4.61758) (xy 7.78533 -4.618344)
|
||||||
|
(xy 7.672026 -4.618182) (xy 7.467359 -4.616581) (xy 7.318387 -4.611493) (xy 7.219305 -4.602488)
|
||||||
|
(xy 7.164309 -4.589138) (xy 7.150678 -4.579697) (xy 7.119364 -4.532562) (xy 7.071031 -4.45203)
|
||||||
|
(xy 7.034014 -4.387273) (xy 6.972499 -4.277838) (xy 6.897857 -4.145588) (xy 6.834217 -4.033213)
|
||||||
|
(xy 6.773502 -3.925961) (xy 6.689331 -3.776905) (xy 6.588399 -3.597931) (xy 6.477398 -3.400926)
|
||||||
|
(xy 6.363021 -3.197775) (xy 6.251961 -3.000365) (xy 6.150913 -2.820582) (xy 6.066568 -2.670312)
|
||||||
|
(xy 6.029981 -2.605009) (xy 5.974359 -2.504699) (xy 5.932697 -2.427781) (xy 5.91223 -2.387667)
|
||||||
|
(xy 5.911273 -2.384944) (xy 5.896482 -2.356816) (xy 5.8573 -2.289507) (xy 5.801511 -2.196337)
|
||||||
|
(xy 5.788121 -2.174249) (xy 5.729602 -2.075915) (xy 5.686149 -1.999073) (xy 5.66563 -1.957732)
|
||||||
|
(xy 5.66497 -1.954927) (xy 5.649999 -1.921025) (xy 5.612302 -1.855195) (xy 5.592773 -1.823522)
|
||||||
|
(xy 5.54524 -1.744695) (xy 5.476351 -1.62635) (xy 5.394337 -1.482971) (xy 5.307425 -1.329041)
|
||||||
|
(xy 5.223846 -1.179046) (xy 5.15183 -1.047469) (xy 5.151462 -1.046788) (xy 5.054164 -0.871268)
|
||||||
|
(xy 4.969194 -0.727084) (xy 4.900433 -0.620294) (xy 4.851764 -0.556955) (xy 4.828088 -0.542255)
|
||||||
|
(xy 4.823777 -0.574912) (xy 4.819698 -0.664016) (xy 4.815916 -0.80444) (xy 4.812493 -0.991056)
|
||||||
|
(xy 4.809493 -1.218735) (xy 4.806978 -1.48235) (xy 4.805012 -1.776772) (xy 4.803658 -2.096875)
|
||||||
|
(xy 4.802978 -2.437529) (xy 4.802909 -2.587999) (xy 4.802909 -4.618182) (xy 3.802303 -4.618036)
|
||||||
|
(xy 3.710669 -4.441079) (xy 3.645932 -4.319159) (xy 3.577189 -4.194374) (xy 3.537853 -4.125576)
|
||||||
|
(xy 3.4141 -3.912761) (xy 3.295361 -3.705571) (xy 3.190903 -3.520288) (xy 3.117272 -3.386667)
|
||||||
|
(xy 3.061697 -3.28572) (xy 2.987068 -3.152373) (xy 2.905131 -3.007543) (xy 2.857929 -2.924849)
|
||||||
|
(xy 2.74339 -2.724241) (xy 2.622035 -2.510427) (xy 2.503034 -2.299654) (xy 2.395556 -2.108167)
|
||||||
|
(xy 2.308773 -1.952213) (xy 2.301828 -1.939637) (xy 2.240896 -1.831399) (xy 2.168814 -1.706384)
|
||||||
|
(xy 2.128695 -1.6381) (xy 2.077923 -1.550313) (xy 2.042905 -1.485553) (xy 2.032 -1.46041)
|
||||||
|
(xy 2.016966 -1.427811) (xy 1.979088 -1.362926) (xy 1.959126 -1.330916) (xy 1.915997 -1.259631)
|
||||||
|
(xy 1.851692 -1.149208) (xy 1.774734 -1.014448) (xy 1.693645 -0.870152) (xy 1.689732 -0.863125)
|
||||||
|
(xy 1.493212 -0.510128) (xy 1.462424 -4.602788) (xy 0.508 -4.602788) (xy 0.500145 -1.716425)
|
||||||
|
(xy 0.49229 1.169939) (xy -0.554182 1.169939) (xy -0.554182 -4.618182) (xy -1.054485 -4.617988)
|
||||||
|
(xy -1.554788 -4.617793) (xy -1.613465 -4.517927) (xy -1.702808 -4.36395) (xy -1.810685 -4.175036)
|
||||||
|
(xy -1.926231 -3.970352) (xy -2.038581 -3.769064) (xy -2.062788 -3.725334) (xy -2.14634 -3.575078)
|
||||||
|
(xy -2.238507 -3.410803) (xy -2.322262 -3.26283) (xy -2.339438 -3.232728) (xy -2.411816 -3.105381)
|
||||||
|
(xy -2.482994 -2.978852) (xy -2.53944 -2.877219) (xy -2.547075 -2.863273) (xy -2.606568 -2.756857)
|
||||||
|
(xy -2.678403 -2.631931) (xy -2.723394 -2.555394) (xy -2.797565 -2.428359) (xy -2.876784 -2.289186)
|
||||||
|
(xy -2.917089 -2.216728) (xy -3.024337 -2.022414) (xy -3.122126 -1.847199) (xy -3.205191 -1.700408)
|
||||||
|
(xy -3.268265 -1.591364) (xy -3.299642 -1.539394) (xy -3.338549 -1.473519) (xy -3.394154 -1.374458)
|
||||||
|
(xy -3.454493 -1.263523) (xy -3.455146 -1.262303) (xy -3.51379 -1.153244) (xy -3.566336 -1.057367)
|
||||||
|
(xy -3.622252 -0.957794) (xy -3.691009 -0.837651) (xy -3.774739 -0.692728) (xy -3.863879 -0.538788)
|
||||||
|
(xy -3.894667 -4.602788) (xy -4.936387 -4.602788) (xy -5.064603 -4.385704) (xy -5.144868 -4.247886)
|
||||||
|
(xy -5.230802 -4.097363) (xy -5.301948 -3.970067) (xy -5.415541 -3.764403) (xy -5.517598 -3.581594)
|
||||||
|
(xy -5.603422 -3.429951) (xy -5.66832 -3.317785) (xy -5.701096 -3.263516) (xy -5.74007 -3.197721)
|
||||||
|
(xy -5.795902 -3.098781) (xy -5.856602 -2.98795) (xy -5.857424 -2.986425) (xy -5.930091 -2.853161)
|
||||||
|
(xy -6.014426 -2.700816) (xy -6.08742 -2.570788) (xy -6.152023 -2.456684) (xy -6.235694 -2.308711)
|
||||||
|
(xy -6.327259 -2.146639) (xy -6.409352 -2.001213) (xy -6.493523 -1.852069) (xy -6.575534 -1.706816)
|
||||||
|
(xy -6.646061 -1.581964) (xy -6.69578 -1.494024) (xy -6.696239 -1.493213) (xy -6.753303 -1.392003)
|
||||||
|
(xy -6.826571 -1.261543) (xy -6.902269 -1.126366) (xy -6.919238 -1.096) (xy -6.984992 -0.979053)
|
||||||
|
(xy -7.043566 -0.876251) (xy -7.085459 -0.80422) (xy -7.095185 -0.788122) (xy -7.131435 -0.726484)
|
||||||
|
(xy -7.183955 -0.633553) (xy -7.227806 -0.554182) (xy -7.289396 -0.442617) (xy -7.366144 -0.305151)
|
||||||
|
(xy -7.442654 -0.169343) (xy -7.451386 -0.15394) (xy -7.527901 -0.018205) (xy -7.618258 0.143408)
|
||||||
|
(xy -7.706744 0.302759) (xy -7.735064 0.35406) (xy -7.80133 0.473248) (xy -7.858048 0.573241)
|
||||||
|
(xy -7.89776 0.641004) (xy -7.911183 0.661939) (xy -7.935721 0.701658) (xy -7.981062 0.781233)
|
||||||
|
(xy -8.039023 0.886191) (xy -8.063526 0.931333) (xy -8.192402 1.169939) (xy -8.99006 1.169939)
|
||||||
|
(xy -8.99006 -5.326303) (xy 9.020849 -5.326303) (xy 9.020849 5.326303)) (layer F.SilkS) (width 0.01))
|
||||||
|
)
|
17
PCB/HASwitchPlate.pretty/MountingHole_2.2mm_M2.kicad_mod
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
(module Mounting_Holes:MountingHole_2.2mm_M2 (layer F.Cu) (tedit 5ACD3107)
|
||||||
|
(descr "Mounting Hole 2.2mm, no annular, M2")
|
||||||
|
(tags "mounting hole 2.2mm no annular m2")
|
||||||
|
(attr virtual)
|
||||||
|
(fp_text reference REF** (at 0 -3.2) (layer F.SilkS) hide
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(fp_text value MountingHole_2.2mm_M2 (at 0 3.2) (layer F.Fab)
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(fp_circle (center 0 0) (end 2.45 0) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_circle (center 0 0) (end 2.2 0) (layer Cmts.User) (width 0.15))
|
||||||
|
(fp_text user %R (at 0.3 0) (layer F.Fab)
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(pad 1 np_thru_hole circle (at 0 0) (size 2.2 2.2) (drill 2.2) (layers *.Cu *.Mask))
|
||||||
|
)
|
@ -0,0 +1,350 @@
|
|||||||
|
(module Symbol:OSHW-Logo_11.4x12mm_SilkScreen (layer F.Cu) (tedit 0)
|
||||||
|
(descr "Open Source Hardware Logo")
|
||||||
|
(tags "Logo OSHW")
|
||||||
|
(attr virtual)
|
||||||
|
(fp_text reference REF** (at 0 0) (layer F.SilkS) hide
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(fp_text value OSHW-Logo_11.4x12mm_SilkScreen (at 0.75 0) (layer F.Fab) hide
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -3.780091 2.90956) (xy -3.727588 2.935499) (xy -3.662842 2.9807) (xy -3.615653 3.029991)
|
||||||
|
(xy -3.583335 3.091885) (xy -3.563203 3.174896) (xy -3.55257 3.287538) (xy -3.548753 3.438324)
|
||||||
|
(xy -3.54853 3.503149) (xy -3.549182 3.645221) (xy -3.551888 3.746757) (xy -3.557776 3.817015)
|
||||||
|
(xy -3.567973 3.865256) (xy -3.583606 3.900738) (xy -3.599872 3.924943) (xy -3.703705 4.027929)
|
||||||
|
(xy -3.825979 4.089874) (xy -3.957886 4.108506) (xy -4.090616 4.081549) (xy -4.132667 4.062486)
|
||||||
|
(xy -4.233334 4.010015) (xy -4.233334 4.832259) (xy -4.159865 4.794267) (xy -4.063059 4.764872)
|
||||||
|
(xy -3.944072 4.757342) (xy -3.825255 4.771245) (xy -3.735527 4.802476) (xy -3.661101 4.861954)
|
||||||
|
(xy -3.59751 4.947066) (xy -3.592729 4.955805) (xy -3.572563 4.996966) (xy -3.557835 5.038454)
|
||||||
|
(xy -3.547697 5.088713) (xy -3.541301 5.156184) (xy -3.537799 5.249309) (xy -3.536342 5.376531)
|
||||||
|
(xy -3.536079 5.519701) (xy -3.536079 5.976471) (xy -3.81 5.976471) (xy -3.81 5.134231)
|
||||||
|
(xy -3.886617 5.069763) (xy -3.966207 5.018194) (xy -4.041578 5.008818) (xy -4.117367 5.032947)
|
||||||
|
(xy -4.157759 5.056574) (xy -4.187821 5.090227) (xy -4.209203 5.141087) (xy -4.22355 5.216334)
|
||||||
|
(xy -4.23251 5.323146) (xy -4.23773 5.468704) (xy -4.239569 5.565588) (xy -4.245785 5.96402)
|
||||||
|
(xy -4.37652 5.971547) (xy -4.507255 5.979073) (xy -4.507255 3.506582) (xy -4.233334 3.506582)
|
||||||
|
(xy -4.22635 3.644423) (xy -4.202818 3.740107) (xy -4.158865 3.799641) (xy -4.090618 3.829029)
|
||||||
|
(xy -4.021667 3.834902) (xy -3.943614 3.828154) (xy -3.891811 3.801594) (xy -3.859417 3.766499)
|
||||||
|
(xy -3.833916 3.728752) (xy -3.818735 3.6867) (xy -3.811981 3.627779) (xy -3.811759 3.539428)
|
||||||
|
(xy -3.814032 3.465448) (xy -3.819251 3.354) (xy -3.827021 3.280833) (xy -3.840105 3.234422)
|
||||||
|
(xy -3.861268 3.203244) (xy -3.88124 3.185223) (xy -3.964686 3.145925) (xy -4.063449 3.139579)
|
||||||
|
(xy -4.120159 3.153116) (xy -4.176308 3.201233) (xy -4.213501 3.294833) (xy -4.231528 3.433254)
|
||||||
|
(xy -4.233334 3.506582) (xy -4.507255 3.506582) (xy -4.507255 2.888628) (xy -4.370295 2.888628)
|
||||||
|
(xy -4.288065 2.891879) (xy -4.24564 2.903426) (xy -4.233339 2.925952) (xy -4.233334 2.92662)
|
||||||
|
(xy -4.227626 2.948681) (xy -4.202453 2.946176) (xy -4.152402 2.921935) (xy -4.035781 2.884851)
|
||||||
|
(xy -3.904571 2.880953) (xy -3.780091 2.90956)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy -2.74128 4.765922) (xy -2.62413 4.79718) (xy -2.534949 4.853837) (xy -2.472016 4.928045)
|
||||||
|
(xy -2.452452 4.959716) (xy -2.438008 4.992891) (xy -2.427911 5.035329) (xy -2.421385 5.094788)
|
||||||
|
(xy -2.417658 5.179029) (xy -2.415954 5.29581) (xy -2.4155 5.45289) (xy -2.415491 5.494565)
|
||||||
|
(xy -2.415491 5.976471) (xy -2.53502 5.976471) (xy -2.611261 5.971131) (xy -2.667634 5.957604)
|
||||||
|
(xy -2.681758 5.949262) (xy -2.72037 5.934864) (xy -2.759808 5.949262) (xy -2.824738 5.967237)
|
||||||
|
(xy -2.919055 5.974472) (xy -3.023593 5.971333) (xy -3.119189 5.958186) (xy -3.175 5.941318)
|
||||||
|
(xy -3.283002 5.871986) (xy -3.350497 5.775772) (xy -3.380841 5.647844) (xy -3.381123 5.644559)
|
||||||
|
(xy -3.37846 5.587808) (xy -3.137647 5.587808) (xy -3.116595 5.652358) (xy -3.082303 5.688686)
|
||||||
|
(xy -3.013468 5.716162) (xy -2.92261 5.727129) (xy -2.829958 5.721731) (xy -2.755744 5.70011)
|
||||||
|
(xy -2.734951 5.686239) (xy -2.698619 5.622143) (xy -2.689412 5.549278) (xy -2.689412 5.45353)
|
||||||
|
(xy -2.827173 5.45353) (xy -2.958047 5.463605) (xy -3.057259 5.492148) (xy -3.118977 5.536639)
|
||||||
|
(xy -3.137647 5.587808) (xy -3.37846 5.587808) (xy -3.374564 5.50479) (xy -3.328466 5.394282)
|
||||||
|
(xy -3.2418 5.310712) (xy -3.229821 5.30311) (xy -3.178345 5.278357) (xy -3.114632 5.263368)
|
||||||
|
(xy -3.025565 5.256082) (xy -2.919755 5.254407) (xy -2.689412 5.254314) (xy -2.689412 5.157755)
|
||||||
|
(xy -2.699183 5.082836) (xy -2.724116 5.032644) (xy -2.727035 5.029972) (xy -2.782519 5.008015)
|
||||||
|
(xy -2.866273 4.999505) (xy -2.958833 5.003687) (xy -3.04073 5.019809) (xy -3.089327 5.04399)
|
||||||
|
(xy -3.115659 5.063359) (xy -3.143465 5.067057) (xy -3.181839 5.051188) (xy -3.239875 5.011855)
|
||||||
|
(xy -3.326669 4.945164) (xy -3.334635 4.938916) (xy -3.330553 4.9158) (xy -3.296499 4.877352)
|
||||||
|
(xy -3.24474 4.834627) (xy -3.187545 4.798679) (xy -3.169575 4.790191) (xy -3.104028 4.773252)
|
||||||
|
(xy -3.00798 4.76117) (xy -2.900671 4.756323) (xy -2.895653 4.756313) (xy -2.74128 4.765922)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy -1.967236 4.758921) (xy -1.92997 4.770091) (xy -1.917957 4.794633) (xy -1.917451 4.805712)
|
||||||
|
(xy -1.915296 4.836572) (xy -1.900449 4.841417) (xy -1.860343 4.82026) (xy -1.83652 4.805806)
|
||||||
|
(xy -1.761362 4.77485) (xy -1.671594 4.759544) (xy -1.577471 4.758367) (xy -1.489246 4.769799)
|
||||||
|
(xy -1.417174 4.79232) (xy -1.371508 4.824409) (xy -1.362502 4.864545) (xy -1.367047 4.875415)
|
||||||
|
(xy -1.400179 4.920534) (xy -1.451555 4.976026) (xy -1.460848 4.984996) (xy -1.509818 5.026245)
|
||||||
|
(xy -1.552069 5.039572) (xy -1.611159 5.030271) (xy -1.634831 5.02409) (xy -1.708496 5.009246)
|
||||||
|
(xy -1.76029 5.015921) (xy -1.804031 5.039465) (xy -1.844098 5.071061) (xy -1.873608 5.110798)
|
||||||
|
(xy -1.894116 5.166252) (xy -1.907176 5.245003) (xy -1.914344 5.354629) (xy -1.917176 5.502706)
|
||||||
|
(xy -1.917451 5.592111) (xy -1.917451 5.976471) (xy -2.166471 5.976471) (xy -2.166471 4.756275)
|
||||||
|
(xy -2.041961 4.756275) (xy -1.967236 4.758921)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy -0.398432 5.976471) (xy -0.535393 5.976471) (xy -0.614889 5.97414) (xy -0.656292 5.964488)
|
||||||
|
(xy -0.671199 5.943525) (xy -0.672353 5.929351) (xy -0.674867 5.900927) (xy -0.69072 5.895475)
|
||||||
|
(xy -0.732379 5.912998) (xy -0.764776 5.929351) (xy -0.889151 5.968103) (xy -1.024354 5.970346)
|
||||||
|
(xy -1.134274 5.941444) (xy -1.236634 5.871619) (xy -1.31466 5.768555) (xy -1.357386 5.646989)
|
||||||
|
(xy -1.358474 5.640192) (xy -1.364822 5.566032) (xy -1.367979 5.45957) (xy -1.367725 5.379052)
|
||||||
|
(xy -1.095711 5.379052) (xy -1.08941 5.48607) (xy -1.075075 5.574278) (xy -1.055669 5.62409)
|
||||||
|
(xy -0.982254 5.692162) (xy -0.895086 5.716564) (xy -0.805196 5.696831) (xy -0.728383 5.637968)
|
||||||
|
(xy -0.699292 5.598379) (xy -0.682283 5.551138) (xy -0.674316 5.482181) (xy -0.672353 5.378607)
|
||||||
|
(xy -0.675866 5.276039) (xy -0.685143 5.185921) (xy -0.698294 5.125613) (xy -0.700486 5.120208)
|
||||||
|
(xy -0.753522 5.05594) (xy -0.830933 5.020656) (xy -0.917546 5.014959) (xy -0.998193 5.039453)
|
||||||
|
(xy -1.057703 5.094742) (xy -1.063876 5.105743) (xy -1.083199 5.172827) (xy -1.093726 5.269284)
|
||||||
|
(xy -1.095711 5.379052) (xy -1.367725 5.379052) (xy -1.367596 5.338225) (xy -1.365806 5.272918)
|
||||||
|
(xy -1.353627 5.111355) (xy -1.328315 4.990053) (xy -1.286207 4.900379) (xy -1.223641 4.833699)
|
||||||
|
(xy -1.1629 4.794557) (xy -1.078036 4.76704) (xy -0.972485 4.757603) (xy -0.864402 4.76529)
|
||||||
|
(xy -0.771942 4.789146) (xy -0.72309 4.817685) (xy -0.672353 4.863601) (xy -0.672353 4.283137)
|
||||||
|
(xy -0.398432 4.283137) (xy -0.398432 5.976471)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 0.557528 4.761332) (xy 0.656014 4.768726) (xy 0.784776 5.154706) (xy 0.913537 5.540686)
|
||||||
|
(xy 0.953911 5.403726) (xy 0.978207 5.319083) (xy 1.010167 5.204697) (xy 1.044679 5.078963)
|
||||||
|
(xy 1.062928 5.01152) (xy 1.131571 4.756275) (xy 1.414773 4.756275) (xy 1.330122 5.023971)
|
||||||
|
(xy 1.288435 5.155638) (xy 1.238074 5.314458) (xy 1.185481 5.480128) (xy 1.13853 5.627843)
|
||||||
|
(xy 1.031589 5.96402) (xy 0.800661 5.979044) (xy 0.73805 5.772316) (xy 0.699438 5.643896)
|
||||||
|
(xy 0.6573 5.502322) (xy 0.620472 5.377285) (xy 0.619018 5.372309) (xy 0.591511 5.287586)
|
||||||
|
(xy 0.567242 5.229778) (xy 0.550243 5.207918) (xy 0.54675 5.210446) (xy 0.53449 5.244336)
|
||||||
|
(xy 0.511195 5.31693) (xy 0.4797 5.419101) (xy 0.442842 5.54172) (xy 0.422899 5.609167)
|
||||||
|
(xy 0.314895 5.976471) (xy 0.085679 5.976471) (xy -0.097561 5.3975) (xy -0.149037 5.235091)
|
||||||
|
(xy -0.19593 5.087602) (xy -0.236023 4.96196) (xy -0.267103 4.865095) (xy -0.286955 4.803934)
|
||||||
|
(xy -0.292989 4.786065) (xy -0.288212 4.767768) (xy -0.250703 4.759755) (xy -0.172645 4.760557)
|
||||||
|
(xy -0.160426 4.761163) (xy -0.015674 4.768726) (xy 0.07913 5.117353) (xy 0.113977 5.244497)
|
||||||
|
(xy 0.145117 5.356265) (xy 0.169809 5.442953) (xy 0.185312 5.494856) (xy 0.188176 5.503318)
|
||||||
|
(xy 0.200046 5.493587) (xy 0.223983 5.443172) (xy 0.257239 5.358935) (xy 0.297064 5.247741)
|
||||||
|
(xy 0.33073 5.147297) (xy 0.459041 4.753939) (xy 0.557528 4.761332)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 2.056459 4.763669) (xy 2.16142 4.789163) (xy 2.191761 4.802669) (xy 2.250573 4.838046)
|
||||||
|
(xy 2.295709 4.87789) (xy 2.329106 4.92912) (xy 2.352701 4.998654) (xy 2.368433 5.093409)
|
||||||
|
(xy 2.378239 5.220305) (xy 2.384057 5.386258) (xy 2.386266 5.497108) (xy 2.394396 5.976471)
|
||||||
|
(xy 2.255531 5.976471) (xy 2.171287 5.972938) (xy 2.127884 5.960866) (xy 2.116666 5.940594)
|
||||||
|
(xy 2.110744 5.918674) (xy 2.084266 5.922865) (xy 2.048186 5.940441) (xy 1.957862 5.967382)
|
||||||
|
(xy 1.841777 5.974642) (xy 1.71968 5.962767) (xy 1.611321 5.932305) (xy 1.601602 5.928077)
|
||||||
|
(xy 1.502568 5.858505) (xy 1.437281 5.761789) (xy 1.40724 5.648738) (xy 1.409535 5.608122)
|
||||||
|
(xy 1.654633 5.608122) (xy 1.676229 5.662782) (xy 1.740259 5.701952) (xy 1.843565 5.722974)
|
||||||
|
(xy 1.898774 5.725766) (xy 1.990782 5.71862) (xy 2.051941 5.690848) (xy 2.066862 5.677647)
|
||||||
|
(xy 2.107287 5.605829) (xy 2.116666 5.540686) (xy 2.116666 5.45353) (xy 1.995269 5.45353)
|
||||||
|
(xy 1.854153 5.460722) (xy 1.755173 5.483345) (xy 1.692633 5.522964) (xy 1.678631 5.540628)
|
||||||
|
(xy 1.654633 5.608122) (xy 1.409535 5.608122) (xy 1.413941 5.530157) (xy 1.45888 5.416855)
|
||||||
|
(xy 1.520196 5.340285) (xy 1.557332 5.307181) (xy 1.593687 5.285425) (xy 1.64099 5.272161)
|
||||||
|
(xy 1.710973 5.264528) (xy 1.815364 5.25967) (xy 1.85677 5.258273) (xy 2.116666 5.24978)
|
||||||
|
(xy 2.116285 5.171116) (xy 2.106219 5.088428) (xy 2.069829 5.038431) (xy 1.996311 5.006489)
|
||||||
|
(xy 1.994339 5.00592) (xy 1.890105 4.993361) (xy 1.788108 5.009766) (xy 1.712305 5.049657)
|
||||||
|
(xy 1.68189 5.069354) (xy 1.649132 5.066629) (xy 1.598721 5.038091) (xy 1.569119 5.01795)
|
||||||
|
(xy 1.511218 4.974919) (xy 1.475352 4.942662) (xy 1.469597 4.933427) (xy 1.493295 4.885636)
|
||||||
|
(xy 1.563313 4.828562) (xy 1.593725 4.809305) (xy 1.681155 4.77614) (xy 1.798983 4.75735)
|
||||||
|
(xy 1.929866 4.753129) (xy 2.056459 4.763669)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 3.238446 4.755883) (xy 3.334177 4.774755) (xy 3.388677 4.802699) (xy 3.446008 4.849123)
|
||||||
|
(xy 3.364441 4.952111) (xy 3.31415 5.014479) (xy 3.280001 5.044907) (xy 3.246063 5.049555)
|
||||||
|
(xy 3.196406 5.034586) (xy 3.173096 5.026117) (xy 3.078063 5.013622) (xy 2.991032 5.040406)
|
||||||
|
(xy 2.927138 5.100915) (xy 2.916759 5.120208) (xy 2.905456 5.171314) (xy 2.896732 5.2655)
|
||||||
|
(xy 2.890997 5.396089) (xy 2.88866 5.556405) (xy 2.888627 5.579211) (xy 2.888627 5.976471)
|
||||||
|
(xy 2.614705 5.976471) (xy 2.614705 4.756275) (xy 2.751666 4.756275) (xy 2.830638 4.758337)
|
||||||
|
(xy 2.871779 4.767513) (xy 2.886992 4.78829) (xy 2.888627 4.807886) (xy 2.888627 4.859497)
|
||||||
|
(xy 2.95424 4.807886) (xy 3.029475 4.772675) (xy 3.130544 4.755265) (xy 3.238446 4.755883)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 4.025307 4.762784) (xy 4.144337 4.793731) (xy 4.244021 4.8576) (xy 4.292288 4.905313)
|
||||||
|
(xy 4.371408 5.018106) (xy 4.416752 5.14895) (xy 4.43233 5.309792) (xy 4.43241 5.322794)
|
||||||
|
(xy 4.432549 5.45353) (xy 3.680091 5.45353) (xy 3.69613 5.52201) (xy 3.725091 5.584031)
|
||||||
|
(xy 3.775778 5.648654) (xy 3.786379 5.658971) (xy 3.877494 5.714805) (xy 3.9814 5.724275)
|
||||||
|
(xy 4.101 5.68754) (xy 4.121274 5.677647) (xy 4.183456 5.647574) (xy 4.225106 5.63044)
|
||||||
|
(xy 4.232373 5.628855) (xy 4.25774 5.644242) (xy 4.30612 5.681887) (xy 4.330679 5.702459)
|
||||||
|
(xy 4.38157 5.749714) (xy 4.398281 5.780917) (xy 4.386683 5.80962) (xy 4.380483 5.817468)
|
||||||
|
(xy 4.338493 5.851819) (xy 4.269206 5.893565) (xy 4.220882 5.917935) (xy 4.083711 5.960873)
|
||||||
|
(xy 3.931847 5.974786) (xy 3.788024 5.9583) (xy 3.747745 5.946496) (xy 3.623078 5.879689)
|
||||||
|
(xy 3.530671 5.776892) (xy 3.46999 5.637105) (xy 3.440498 5.45933) (xy 3.43726 5.366373)
|
||||||
|
(xy 3.446714 5.231033) (xy 3.68549 5.231033) (xy 3.708584 5.241038) (xy 3.770662 5.248888)
|
||||||
|
(xy 3.860914 5.253521) (xy 3.922058 5.254314) (xy 4.03204 5.253549) (xy 4.101457 5.24997)
|
||||||
|
(xy 4.139538 5.241649) (xy 4.155515 5.226657) (xy 4.158627 5.204903) (xy 4.137278 5.137892)
|
||||||
|
(xy 4.083529 5.071664) (xy 4.012822 5.020832) (xy 3.942089 5.000038) (xy 3.846016 5.018484)
|
||||||
|
(xy 3.762849 5.071811) (xy 3.705186 5.148677) (xy 3.68549 5.231033) (xy 3.446714 5.231033)
|
||||||
|
(xy 3.451028 5.169291) (xy 3.49352 5.012271) (xy 3.565635 4.894069) (xy 3.668273 4.81344)
|
||||||
|
(xy 3.802332 4.769139) (xy 3.874957 4.760607) (xy 4.025307 4.762784)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy -5.026753 2.901568) (xy -4.896478 2.959163) (xy -4.797581 3.055334) (xy -4.729918 3.190229)
|
||||||
|
(xy -4.693345 3.363996) (xy -4.690724 3.391126) (xy -4.68867 3.582408) (xy -4.715301 3.750073)
|
||||||
|
(xy -4.768999 3.885967) (xy -4.797753 3.929681) (xy -4.897909 4.022198) (xy -5.025463 4.082119)
|
||||||
|
(xy -5.168163 4.106985) (xy -5.31376 4.094339) (xy -5.424438 4.055391) (xy -5.519616 3.989755)
|
||||||
|
(xy -5.597406 3.903699) (xy -5.598751 3.901685) (xy -5.630343 3.84857) (xy -5.650873 3.79516)
|
||||||
|
(xy -5.663305 3.727754) (xy -5.670603 3.632653) (xy -5.673818 3.554666) (xy -5.675156 3.483944)
|
||||||
|
(xy -5.426186 3.483944) (xy -5.423753 3.554348) (xy -5.41492 3.648068) (xy -5.399336 3.708214)
|
||||||
|
(xy -5.371234 3.751006) (xy -5.344914 3.776002) (xy -5.251608 3.828338) (xy -5.15398 3.835333)
|
||||||
|
(xy -5.063058 3.797676) (xy -5.017598 3.755479) (xy -4.984838 3.712956) (xy -4.965677 3.672267)
|
||||||
|
(xy -4.957267 3.619314) (xy -4.956763 3.539997) (xy -4.959355 3.46695) (xy -4.964929 3.362601)
|
||||||
|
(xy -4.973766 3.29492) (xy -4.989693 3.250774) (xy -5.016538 3.217031) (xy -5.037811 3.197746)
|
||||||
|
(xy -5.126794 3.147086) (xy -5.222789 3.14456) (xy -5.303281 3.174567) (xy -5.371947 3.237231)
|
||||||
|
(xy -5.412856 3.340168) (xy -5.426186 3.483944) (xy -5.675156 3.483944) (xy -5.676754 3.399582)
|
||||||
|
(xy -5.67174 3.2836) (xy -5.656717 3.196367) (xy -5.629624 3.12753) (xy -5.5884 3.066737)
|
||||||
|
(xy -5.573115 3.048686) (xy -5.477546 2.958746) (xy -5.375039 2.906211) (xy -5.249679 2.884201)
|
||||||
|
(xy -5.18855 2.882402) (xy -5.026753 2.901568)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy -2.686796 2.916354) (xy -2.661981 2.928037) (xy -2.576094 2.990951) (xy -2.494879 3.082769)
|
||||||
|
(xy -2.434236 3.183868) (xy -2.416988 3.230349) (xy -2.401251 3.313376) (xy -2.391867 3.413713)
|
||||||
|
(xy -2.390728 3.455147) (xy -2.390589 3.585882) (xy -3.143047 3.585882) (xy -3.127007 3.654363)
|
||||||
|
(xy -3.087637 3.735355) (xy -3.018806 3.805351) (xy -2.936919 3.850441) (xy -2.884737 3.859804)
|
||||||
|
(xy -2.813971 3.848441) (xy -2.72954 3.819943) (xy -2.700858 3.806831) (xy -2.594791 3.753858)
|
||||||
|
(xy -2.504272 3.822901) (xy -2.452039 3.869597) (xy -2.424247 3.90814) (xy -2.42284 3.919452)
|
||||||
|
(xy -2.447668 3.946868) (xy -2.502083 3.988532) (xy -2.551472 4.021037) (xy -2.684748 4.079468)
|
||||||
|
(xy -2.834161 4.105915) (xy -2.982249 4.099039) (xy -3.100295 4.063096) (xy -3.221982 3.986101)
|
||||||
|
(xy -3.30846 3.884728) (xy -3.362559 3.75357) (xy -3.387109 3.587224) (xy -3.389286 3.511108)
|
||||||
|
(xy -3.380573 3.336685) (xy -3.379503 3.331611) (xy -3.130173 3.331611) (xy -3.123306 3.347968)
|
||||||
|
(xy -3.095083 3.356988) (xy -3.036873 3.360854) (xy -2.940042 3.361749) (xy -2.902757 3.361765)
|
||||||
|
(xy -2.789317 3.360413) (xy -2.717378 3.355505) (xy -2.678687 3.34576) (xy -2.664995 3.329899)
|
||||||
|
(xy -2.66451 3.324805) (xy -2.680137 3.284326) (xy -2.719247 3.227621) (xy -2.736061 3.207766)
|
||||||
|
(xy -2.798481 3.151611) (xy -2.863547 3.129532) (xy -2.898603 3.127686) (xy -2.993442 3.150766)
|
||||||
|
(xy -3.072973 3.212759) (xy -3.123423 3.302802) (xy -3.124317 3.305735) (xy -3.130173 3.331611)
|
||||||
|
(xy -3.379503 3.331611) (xy -3.351601 3.199343) (xy -3.29941 3.089461) (xy -3.235579 3.011461)
|
||||||
|
(xy -3.117567 2.926882) (xy -2.978842 2.881686) (xy -2.83129 2.8776) (xy -2.686796 2.916354)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 0.027759 2.884345) (xy 0.122059 2.902229) (xy 0.21989 2.939633) (xy 0.230343 2.944402)
|
||||||
|
(xy 0.304531 2.983412) (xy 0.35591 3.019664) (xy 0.372517 3.042887) (xy 0.356702 3.080761)
|
||||||
|
(xy 0.318288 3.136644) (xy 0.301237 3.157505) (xy 0.230969 3.239618) (xy 0.140379 3.186168)
|
||||||
|
(xy 0.054164 3.150561) (xy -0.045451 3.131529) (xy -0.140981 3.130326) (xy -0.214939 3.14821)
|
||||||
|
(xy -0.232688 3.159373) (xy -0.266488 3.210553) (xy -0.270596 3.269509) (xy -0.245304 3.315567)
|
||||||
|
(xy -0.230344 3.324499) (xy -0.185514 3.335592) (xy -0.106714 3.34863) (xy -0.009574 3.361088)
|
||||||
|
(xy 0.008346 3.363042) (xy 0.164365 3.39003) (xy 0.277523 3.435873) (xy 0.352569 3.504803)
|
||||||
|
(xy 0.394253 3.601054) (xy 0.407238 3.718617) (xy 0.389299 3.852254) (xy 0.33105 3.957195)
|
||||||
|
(xy 0.232255 4.03363) (xy 0.092682 4.081748) (xy -0.062255 4.100732) (xy -0.188602 4.100504)
|
||||||
|
(xy -0.291087 4.083262) (xy -0.361079 4.059457) (xy -0.449517 4.017978) (xy -0.531246 3.969842)
|
||||||
|
(xy -0.560295 3.948655) (xy -0.635 3.887676) (xy -0.544902 3.796508) (xy -0.454804 3.705339)
|
||||||
|
(xy -0.352368 3.773128) (xy -0.249626 3.824042) (xy -0.139913 3.850673) (xy -0.034449 3.853483)
|
||||||
|
(xy 0.055546 3.832935) (xy 0.118854 3.789493) (xy 0.139296 3.752838) (xy 0.136229 3.694053)
|
||||||
|
(xy 0.085434 3.649099) (xy -0.012952 3.618057) (xy -0.120744 3.60371) (xy -0.286635 3.576337)
|
||||||
|
(xy -0.409876 3.524693) (xy -0.492114 3.447266) (xy -0.534999 3.342544) (xy -0.54094 3.218387)
|
||||||
|
(xy -0.511594 3.088702) (xy -0.444691 2.990677) (xy -0.339629 2.923866) (xy -0.19581 2.88782)
|
||||||
|
(xy -0.089262 2.880754) (xy 0.027759 2.884345)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 1.209547 2.903364) (xy 1.335502 2.971959) (xy 1.434047 3.080245) (xy 1.480478 3.168315)
|
||||||
|
(xy 1.500412 3.246101) (xy 1.513328 3.356993) (xy 1.518863 3.484738) (xy 1.516654 3.613084)
|
||||||
|
(xy 1.506337 3.725779) (xy 1.494286 3.785969) (xy 1.453634 3.868311) (xy 1.38323 3.95577)
|
||||||
|
(xy 1.298382 4.032251) (xy 1.214397 4.081655) (xy 1.212349 4.082439) (xy 1.108134 4.104027)
|
||||||
|
(xy 0.984627 4.104562) (xy 0.867261 4.084908) (xy 0.821942 4.069155) (xy 0.70522 4.002966)
|
||||||
|
(xy 0.621624 3.916246) (xy 0.566701 3.801438) (xy 0.535995 3.650982) (xy 0.529047 3.572173)
|
||||||
|
(xy 0.529933 3.473145) (xy 0.796862 3.473145) (xy 0.805854 3.617645) (xy 0.831736 3.72776)
|
||||||
|
(xy 0.872868 3.798116) (xy 0.902172 3.818235) (xy 0.977251 3.832265) (xy 1.066494 3.828111)
|
||||||
|
(xy 1.14365 3.807922) (xy 1.163883 3.796815) (xy 1.217265 3.732123) (xy 1.2525 3.633119)
|
||||||
|
(xy 1.267498 3.512632) (xy 1.260172 3.383494) (xy 1.243799 3.305775) (xy 1.19679 3.215771)
|
||||||
|
(xy 1.122582 3.159509) (xy 1.033209 3.140057) (xy 0.940707 3.160481) (xy 0.869653 3.210437)
|
||||||
|
(xy 0.832312 3.251655) (xy 0.810518 3.292281) (xy 0.80013 3.347264) (xy 0.797006 3.431549)
|
||||||
|
(xy 0.796862 3.473145) (xy 0.529933 3.473145) (xy 0.53093 3.361874) (xy 0.56518 3.189423)
|
||||||
|
(xy 0.631802 3.054814) (xy 0.730799 2.95804) (xy 0.862175 2.899094) (xy 0.890385 2.892259)
|
||||||
|
(xy 1.059926 2.876213) (xy 1.209547 2.903364)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 1.967254 3.276245) (xy 1.969608 3.458879) (xy 1.978207 3.5976) (xy 1.99536 3.698147)
|
||||||
|
(xy 2.023374 3.766254) (xy 2.064557 3.807659) (xy 2.121217 3.828097) (xy 2.191372 3.833318)
|
||||||
|
(xy 2.264848 3.827468) (xy 2.320657 3.806093) (xy 2.361109 3.763458) (xy 2.388509 3.693825)
|
||||||
|
(xy 2.405167 3.59146) (xy 2.413389 3.450624) (xy 2.41549 3.276245) (xy 2.41549 2.888628)
|
||||||
|
(xy 2.689411 2.888628) (xy 2.689411 4.083922) (xy 2.552451 4.083922) (xy 2.469884 4.080576)
|
||||||
|
(xy 2.427368 4.068826) (xy 2.41549 4.04652) (xy 2.408336 4.026654) (xy 2.379865 4.030857)
|
||||||
|
(xy 2.322476 4.058971) (xy 2.190945 4.102342) (xy 2.051438 4.09927) (xy 1.917765 4.052174)
|
||||||
|
(xy 1.854108 4.014971) (xy 1.805553 3.974691) (xy 1.770081 3.924291) (xy 1.745674 3.856729)
|
||||||
|
(xy 1.730313 3.764965) (xy 1.721982 3.641955) (xy 1.718662 3.480659) (xy 1.718235 3.355928)
|
||||||
|
(xy 1.718235 2.888628) (xy 1.967254 2.888628) (xy 1.967254 3.276245)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 4.390976 2.899056) (xy 4.535256 2.960348) (xy 4.580699 2.990185) (xy 4.638779 3.036036)
|
||||||
|
(xy 4.675238 3.072089) (xy 4.681568 3.083832) (xy 4.663693 3.109889) (xy 4.61795 3.154105)
|
||||||
|
(xy 4.581328 3.184965) (xy 4.481088 3.26552) (xy 4.401935 3.198918) (xy 4.340769 3.155921)
|
||||||
|
(xy 4.281129 3.141079) (xy 4.212872 3.144704) (xy 4.104482 3.171652) (xy 4.029872 3.227587)
|
||||||
|
(xy 3.98453 3.318014) (xy 3.963947 3.448435) (xy 3.963942 3.448517) (xy 3.965722 3.59429)
|
||||||
|
(xy 3.993387 3.701245) (xy 4.048571 3.774064) (xy 4.086192 3.798723) (xy 4.186105 3.829431)
|
||||||
|
(xy 4.292822 3.829449) (xy 4.385669 3.799655) (xy 4.407647 3.785098) (xy 4.462765 3.747914)
|
||||||
|
(xy 4.505859 3.74182) (xy 4.552335 3.769496) (xy 4.603716 3.819205) (xy 4.685046 3.903116)
|
||||||
|
(xy 4.594749 3.977546) (xy 4.455236 4.061549) (xy 4.297912 4.102947) (xy 4.133503 4.09995)
|
||||||
|
(xy 4.025531 4.0725) (xy 3.899331 4.00462) (xy 3.798401 3.897831) (xy 3.752548 3.822451)
|
||||||
|
(xy 3.71541 3.714297) (xy 3.696827 3.577318) (xy 3.696684 3.428864) (xy 3.714865 3.286281)
|
||||||
|
(xy 3.751255 3.166918) (xy 3.756987 3.15468) (xy 3.841865 3.034655) (xy 3.956782 2.947267)
|
||||||
|
(xy 4.092659 2.894329) (xy 4.240417 2.877654) (xy 4.390976 2.899056)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 5.303287 2.884355) (xy 5.367051 2.899845) (xy 5.4893 2.956569) (xy 5.593834 3.043202)
|
||||||
|
(xy 5.66618 3.147074) (xy 5.676119 3.170396) (xy 5.689754 3.231484) (xy 5.699298 3.321853)
|
||||||
|
(xy 5.702549 3.41319) (xy 5.702549 3.585882) (xy 5.34147 3.585882) (xy 5.192546 3.586445)
|
||||||
|
(xy 5.087632 3.589864) (xy 5.020937 3.598731) (xy 4.986666 3.615641) (xy 4.979028 3.643189)
|
||||||
|
(xy 4.992229 3.683968) (xy 5.015877 3.731683) (xy 5.081843 3.811314) (xy 5.173512 3.850987)
|
||||||
|
(xy 5.285555 3.849695) (xy 5.412472 3.806514) (xy 5.522158 3.753224) (xy 5.613173 3.825191)
|
||||||
|
(xy 5.704188 3.897157) (xy 5.618563 3.976269) (xy 5.50425 4.051017) (xy 5.363666 4.096084)
|
||||||
|
(xy 5.212449 4.108696) (xy 5.066236 4.086079) (xy 5.042647 4.078405) (xy 4.914141 4.011296)
|
||||||
|
(xy 4.818551 3.911247) (xy 4.753861 3.775271) (xy 4.718057 3.60038) (xy 4.71764 3.596632)
|
||||||
|
(xy 4.714434 3.406032) (xy 4.727393 3.338035) (xy 4.980392 3.338035) (xy 5.003627 3.348491)
|
||||||
|
(xy 5.06671 3.3565) (xy 5.159706 3.361073) (xy 5.218638 3.361765) (xy 5.328537 3.361332)
|
||||||
|
(xy 5.397252 3.358578) (xy 5.433405 3.351321) (xy 5.445615 3.337376) (xy 5.442504 3.314562)
|
||||||
|
(xy 5.439894 3.305735) (xy 5.395344 3.2228) (xy 5.325279 3.15596) (xy 5.263446 3.126589)
|
||||||
|
(xy 5.181301 3.128362) (xy 5.098062 3.16499) (xy 5.028238 3.225634) (xy 4.986337 3.299456)
|
||||||
|
(xy 4.980392 3.338035) (xy 4.727393 3.338035) (xy 4.746385 3.238395) (xy 4.809773 3.097711)
|
||||||
|
(xy 4.900878 2.987974) (xy 5.015978 2.913174) (xy 5.151355 2.877304) (xy 5.303287 2.884355)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy -1.49324 2.909199) (xy -1.431264 2.938802) (xy -1.371241 2.981561) (xy -1.325514 3.030775)
|
||||||
|
(xy -1.292207 3.093544) (xy -1.269445 3.176971) (xy -1.255353 3.288159) (xy -1.248058 3.434209)
|
||||||
|
(xy -1.245682 3.622223) (xy -1.245645 3.641912) (xy -1.245098 4.083922) (xy -1.51902 4.083922)
|
||||||
|
(xy -1.51902 3.676435) (xy -1.519215 3.525471) (xy -1.520564 3.416056) (xy -1.524212 3.339933)
|
||||||
|
(xy -1.531304 3.288848) (xy -1.542987 3.254545) (xy -1.560406 3.228768) (xy -1.584671 3.203298)
|
||||||
|
(xy -1.669565 3.148571) (xy -1.762239 3.138416) (xy -1.850527 3.173017) (xy -1.88123 3.19877)
|
||||||
|
(xy -1.903771 3.222982) (xy -1.919954 3.248912) (xy -1.930832 3.284708) (xy -1.937458 3.338519)
|
||||||
|
(xy -1.940885 3.418493) (xy -1.942166 3.532779) (xy -1.942353 3.671907) (xy -1.942353 4.083922)
|
||||||
|
(xy -2.216275 4.083922) (xy -2.216275 2.888628) (xy -2.079314 2.888628) (xy -1.997084 2.891879)
|
||||||
|
(xy -1.95466 2.903426) (xy -1.942359 2.925952) (xy -1.942353 2.92662) (xy -1.936646 2.948681)
|
||||||
|
(xy -1.911473 2.946177) (xy -1.861422 2.921937) (xy -1.747906 2.886271) (xy -1.618055 2.882305)
|
||||||
|
(xy -1.49324 2.909199)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 3.563637 2.887472) (xy 3.64929 2.913641) (xy 3.704437 2.946707) (xy 3.722401 2.972855)
|
||||||
|
(xy 3.717457 3.003852) (xy 3.685372 3.052547) (xy 3.658243 3.087035) (xy 3.602317 3.149383)
|
||||||
|
(xy 3.560299 3.175615) (xy 3.52448 3.173903) (xy 3.418224 3.146863) (xy 3.340189 3.148091)
|
||||||
|
(xy 3.27682 3.178735) (xy 3.255546 3.19667) (xy 3.187451 3.259779) (xy 3.187451 4.083922)
|
||||||
|
(xy 2.913529 4.083922) (xy 2.913529 2.888628) (xy 3.05049 2.888628) (xy 3.132719 2.891879)
|
||||||
|
(xy 3.175144 2.903426) (xy 3.187445 2.925952) (xy 3.187451 2.92662) (xy 3.19326 2.950215)
|
||||||
|
(xy 3.219531 2.947138) (xy 3.255931 2.930115) (xy 3.331111 2.898439) (xy 3.392158 2.879381)
|
||||||
|
(xy 3.470708 2.874496) (xy 3.563637 2.887472)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 0.746535 -5.366828) (xy 0.859117 -4.769637) (xy 1.274531 -4.59839) (xy 1.689944 -4.427143)
|
||||||
|
(xy 2.188302 -4.766022) (xy 2.327868 -4.860378) (xy 2.454028 -4.944625) (xy 2.560895 -5.014917)
|
||||||
|
(xy 2.642582 -5.067408) (xy 2.693201 -5.098251) (xy 2.706986 -5.104902) (xy 2.73182 -5.087797)
|
||||||
|
(xy 2.784888 -5.040511) (xy 2.86024 -4.969083) (xy 2.951929 -4.879555) (xy 3.054007 -4.777966)
|
||||||
|
(xy 3.160526 -4.670357) (xy 3.265536 -4.562768) (xy 3.363091 -4.46124) (xy 3.447242 -4.371814)
|
||||||
|
(xy 3.51204 -4.300529) (xy 3.551538 -4.253427) (xy 3.56098 -4.237663) (xy 3.547391 -4.208602)
|
||||||
|
(xy 3.509293 -4.144934) (xy 3.450694 -4.052888) (xy 3.375597 -3.938691) (xy 3.288009 -3.808571)
|
||||||
|
(xy 3.237254 -3.734354) (xy 3.144745 -3.598833) (xy 3.06254 -3.476539) (xy 2.99463 -3.37356)
|
||||||
|
(xy 2.945 -3.295982) (xy 2.91764 -3.249894) (xy 2.913529 -3.240208) (xy 2.922849 -3.212681)
|
||||||
|
(xy 2.948254 -3.148527) (xy 2.985911 -3.056765) (xy 3.031986 -2.946416) (xy 3.082646 -2.8265)
|
||||||
|
(xy 3.134059 -2.706036) (xy 3.182389 -2.594046) (xy 3.223806 -2.499548) (xy 3.254474 -2.431563)
|
||||||
|
(xy 3.270562 -2.399112) (xy 3.271511 -2.397835) (xy 3.296772 -2.391638) (xy 3.364046 -2.377815)
|
||||||
|
(xy 3.46636 -2.357723) (xy 3.596741 -2.332721) (xy 3.748216 -2.304169) (xy 3.836594 -2.287704)
|
||||||
|
(xy 3.998452 -2.256886) (xy 4.144649 -2.227561) (xy 4.267787 -2.201334) (xy 4.360469 -2.179809)
|
||||||
|
(xy 4.415301 -2.16459) (xy 4.426323 -2.159762) (xy 4.437119 -2.127081) (xy 4.445829 -2.05327)
|
||||||
|
(xy 4.45246 -1.946963) (xy 4.457018 -1.816788) (xy 4.459509 -1.671379) (xy 4.459938 -1.519365)
|
||||||
|
(xy 4.458311 -1.369378) (xy 4.454635 -1.230049) (xy 4.448915 -1.11001) (xy 4.441158 -1.01789)
|
||||||
|
(xy 4.431368 -0.962323) (xy 4.425496 -0.950755) (xy 4.390399 -0.93689) (xy 4.316028 -0.917067)
|
||||||
|
(xy 4.212223 -0.893616) (xy 4.088819 -0.868864) (xy 4.045741 -0.860857) (xy 3.838047 -0.822814)
|
||||||
|
(xy 3.673984 -0.792176) (xy 3.54813 -0.767726) (xy 3.455065 -0.748246) (xy 3.389367 -0.732519)
|
||||||
|
(xy 3.345617 -0.719327) (xy 3.318392 -0.707451) (xy 3.302272 -0.695675) (xy 3.300017 -0.693347)
|
||||||
|
(xy 3.277503 -0.655855) (xy 3.243158 -0.58289) (xy 3.200411 -0.483388) (xy 3.152692 -0.366282)
|
||||||
|
(xy 3.10343 -0.240507) (xy 3.056055 -0.114998) (xy 3.013995 0.00131) (xy 2.98068 0.099484)
|
||||||
|
(xy 2.959541 0.170588) (xy 2.954005 0.205687) (xy 2.954466 0.206917) (xy 2.973223 0.235606)
|
||||||
|
(xy 3.015776 0.29873) (xy 3.077653 0.389718) (xy 3.154382 0.502) (xy 3.241491 0.629005)
|
||||||
|
(xy 3.266299 0.665098) (xy 3.354753 0.795948) (xy 3.432588 0.915336) (xy 3.495566 1.016407)
|
||||||
|
(xy 3.539445 1.092304) (xy 3.559985 1.136172) (xy 3.56098 1.141562) (xy 3.543722 1.169889)
|
||||||
|
(xy 3.496036 1.226006) (xy 3.42405 1.303882) (xy 3.333897 1.397485) (xy 3.231705 1.500786)
|
||||||
|
(xy 3.123606 1.607751) (xy 3.015728 1.712351) (xy 2.914204 1.808554) (xy 2.825162 1.890329)
|
||||||
|
(xy 2.754733 1.951645) (xy 2.709047 1.986471) (xy 2.696409 1.992157) (xy 2.666991 1.978765)
|
||||||
|
(xy 2.606761 1.942644) (xy 2.52553 1.889881) (xy 2.46303 1.847412) (xy 2.349785 1.769485)
|
||||||
|
(xy 2.215674 1.677729) (xy 2.081155 1.58612) (xy 2.008833 1.537091) (xy 1.764038 1.371515)
|
||||||
|
(xy 1.558551 1.48262) (xy 1.464936 1.531293) (xy 1.38533 1.569126) (xy 1.331467 1.590703)
|
||||||
|
(xy 1.317757 1.593706) (xy 1.30127 1.571538) (xy 1.268745 1.508894) (xy 1.222609 1.411554)
|
||||||
|
(xy 1.16529 1.285294) (xy 1.099216 1.135895) (xy 1.026815 0.969133) (xy 0.950516 0.790787)
|
||||||
|
(xy 0.872746 0.606636) (xy 0.795934 0.422457) (xy 0.722506 0.24403) (xy 0.654892 0.077132)
|
||||||
|
(xy 0.59552 -0.072458) (xy 0.546816 -0.198962) (xy 0.51121 -0.296601) (xy 0.49113 -0.359598)
|
||||||
|
(xy 0.4879 -0.381234) (xy 0.513496 -0.408831) (xy 0.569539 -0.45363) (xy 0.644311 -0.506321)
|
||||||
|
(xy 0.650587 -0.51049) (xy 0.843845 -0.665186) (xy 0.999674 -0.845664) (xy 1.116724 -1.046153)
|
||||||
|
(xy 1.193645 -1.260881) (xy 1.229086 -1.484078) (xy 1.221697 -1.709974) (xy 1.170127 -1.932796)
|
||||||
|
(xy 1.073026 -2.146776) (xy 1.044458 -2.193591) (xy 0.895868 -2.382637) (xy 0.720327 -2.534443)
|
||||||
|
(xy 0.52391 -2.648221) (xy 0.312693 -2.72318) (xy 0.092753 -2.758533) (xy -0.129837 -2.753488)
|
||||||
|
(xy -0.348999 -2.707256) (xy -0.558658 -2.619049) (xy -0.752739 -2.488076) (xy -0.812774 -2.434918)
|
||||||
|
(xy -0.965565 -2.268516) (xy -1.076903 -2.093343) (xy -1.153277 -1.896989) (xy -1.195813 -1.702538)
|
||||||
|
(xy -1.206314 -1.483913) (xy -1.171299 -1.264203) (xy -1.094327 -1.050835) (xy -0.978953 -0.851233)
|
||||||
|
(xy -0.828734 -0.672826) (xy -0.647227 -0.523038) (xy -0.623373 -0.507249) (xy -0.547799 -0.455543)
|
||||||
|
(xy -0.490349 -0.410743) (xy -0.462883 -0.382138) (xy -0.462483 -0.381234) (xy -0.46838 -0.350291)
|
||||||
|
(xy -0.491755 -0.280064) (xy -0.530179 -0.17633) (xy -0.581223 -0.044865) (xy -0.642458 0.108552)
|
||||||
|
(xy -0.711456 0.278146) (xy -0.785786 0.458138) (xy -0.863022 0.642753) (xy -0.940732 0.826213)
|
||||||
|
(xy -1.016489 1.002741) (xy -1.087863 1.166559) (xy -1.152426 1.311892) (xy -1.207748 1.432962)
|
||||||
|
(xy -1.2514 1.523992) (xy -1.280954 1.579205) (xy -1.292856 1.593706) (xy -1.329223 1.582414)
|
||||||
|
(xy -1.39727 1.55213) (xy -1.485263 1.508265) (xy -1.533649 1.48262) (xy -1.739137 1.371515)
|
||||||
|
(xy -1.983932 1.537091) (xy -2.108894 1.621915) (xy -2.245705 1.715261) (xy -2.373911 1.803153)
|
||||||
|
(xy -2.438129 1.847412) (xy -2.528449 1.908063) (xy -2.604929 1.956126) (xy -2.657593 1.985515)
|
||||||
|
(xy -2.674698 1.991727) (xy -2.699595 1.974968) (xy -2.754695 1.928181) (xy -2.834657 1.856225)
|
||||||
|
(xy -2.934139 1.763957) (xy -3.0478 1.656235) (xy -3.119685 1.587071) (xy -3.245449 1.463502)
|
||||||
|
(xy -3.354137 1.352979) (xy -3.441355 1.26023) (xy -3.502711 1.189982) (xy -3.533809 1.146965)
|
||||||
|
(xy -3.536792 1.138235) (xy -3.522947 1.105029) (xy -3.484688 1.037887) (xy -3.426258 0.943608)
|
||||||
|
(xy -3.351903 0.82899) (xy -3.265865 0.700828) (xy -3.241397 0.665098) (xy -3.152245 0.535234)
|
||||||
|
(xy -3.072262 0.418314) (xy -3.00592 0.320907) (xy -2.957689 0.249584) (xy -2.932043 0.210915)
|
||||||
|
(xy -2.929565 0.206917) (xy -2.933271 0.1761) (xy -2.952939 0.108344) (xy -2.98514 0.012584)
|
||||||
|
(xy -3.026445 -0.102246) (xy -3.073425 -0.227211) (xy -3.122651 -0.353376) (xy -3.170692 -0.471807)
|
||||||
|
(xy -3.214119 -0.57357) (xy -3.249504 -0.649729) (xy -3.273416 -0.691351) (xy -3.275116 -0.693347)
|
||||||
|
(xy -3.289738 -0.705242) (xy -3.314435 -0.717005) (xy -3.354628 -0.729854) (xy -3.415737 -0.745006)
|
||||||
|
(xy -3.503183 -0.763679) (xy -3.622388 -0.78709) (xy -3.778773 -0.816458) (xy -3.977757 -0.853)
|
||||||
|
(xy -4.02084 -0.860857) (xy -4.148529 -0.885528) (xy -4.259847 -0.909662) (xy -4.344955 -0.930931)
|
||||||
|
(xy -4.394017 -0.947007) (xy -4.400595 -0.950755) (xy -4.411436 -0.983982) (xy -4.420247 -1.058234)
|
||||||
|
(xy -4.427024 -1.164879) (xy -4.43176 -1.295288) (xy -4.43445 -1.440828) (xy -4.435087 -1.592869)
|
||||||
|
(xy -4.433666 -1.742779) (xy -4.43018 -1.881927) (xy -4.424624 -2.001683) (xy -4.416992 -2.093414)
|
||||||
|
(xy -4.407278 -2.148489) (xy -4.401422 -2.159762) (xy -4.36882 -2.171132) (xy -4.294582 -2.189631)
|
||||||
|
(xy -4.186104 -2.213653) (xy -4.050783 -2.241593) (xy -3.896015 -2.271847) (xy -3.811692 -2.287704)
|
||||||
|
(xy -3.651704 -2.317611) (xy -3.509033 -2.344705) (xy -3.390652 -2.367624) (xy -3.303535 -2.385012)
|
||||||
|
(xy -3.254655 -2.395508) (xy -3.24661 -2.397835) (xy -3.233013 -2.424069) (xy -3.204271 -2.48726)
|
||||||
|
(xy -3.164215 -2.578378) (xy -3.116676 -2.688398) (xy -3.065485 -2.80829) (xy -3.014474 -2.929028)
|
||||||
|
(xy -2.967474 -3.041584) (xy -2.928316 -3.136929) (xy -2.900831 -3.206038) (xy -2.888851 -3.239881)
|
||||||
|
(xy -2.888628 -3.24136) (xy -2.902209 -3.268058) (xy -2.940285 -3.329495) (xy -2.998853 -3.419566)
|
||||||
|
(xy -3.073912 -3.532165) (xy -3.16146 -3.661185) (xy -3.212353 -3.735294) (xy -3.305091 -3.871178)
|
||||||
|
(xy -3.387459 -3.994546) (xy -3.455439 -4.099158) (xy -3.505012 -4.178772) (xy -3.532158 -4.227148)
|
||||||
|
(xy -3.536079 -4.237993) (xy -3.519225 -4.263235) (xy -3.472632 -4.317131) (xy -3.402251 -4.393642)
|
||||||
|
(xy -3.314035 -4.486732) (xy -3.213935 -4.59036) (xy -3.107902 -4.698491) (xy -3.001889 -4.805085)
|
||||||
|
(xy -2.901848 -4.904105) (xy -2.81373 -4.989513) (xy -2.743487 -5.05527) (xy -2.697072 -5.095339)
|
||||||
|
(xy -2.681544 -5.104902) (xy -2.656261 -5.091455) (xy -2.595789 -5.05368) (xy -2.506008 -4.99542)
|
||||||
|
(xy -2.392797 -4.920521) (xy -2.262036 -4.83283) (xy -2.1634 -4.766022) (xy -1.665043 -4.427143)
|
||||||
|
(xy -1.249629 -4.59839) (xy -0.834216 -4.769637) (xy -0.721634 -5.366828) (xy -0.609051 -5.96402)
|
||||||
|
(xy 0.633952 -5.96402) (xy 0.746535 -5.366828)) (layer F.SilkS) (width 0.01))
|
||||||
|
)
|
350
PCB/HASwitchPlate.pretty/OSHW-Logo_19x20mm_SilkScreen.kicad_mod
Normal file
@ -0,0 +1,350 @@
|
|||||||
|
(module Symbols:OSHW-Logo_19x20mm_SilkScreen (layer F.Cu) (tedit 0)
|
||||||
|
(descr "Open Source Hardware Logo")
|
||||||
|
(tags "Logo OSHW")
|
||||||
|
(attr virtual)
|
||||||
|
(fp_text reference REF*** (at 0 0) (layer F.SilkS) hide
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(fp_text value OSHW-Logo_19x20mm_SilkScreen (at 0.75 0) (layer F.Fab) hide
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.248305 -8.97404) (xy 1.436557 -7.975458) (xy 2.131183 -7.689111) (xy 2.825808 -7.402763)
|
||||||
|
(xy 3.659128 -7.969414) (xy 3.892501 -8.127189) (xy 4.103457 -8.268061) (xy 4.282153 -8.385599)
|
||||||
|
(xy 4.418744 -8.473371) (xy 4.503386 -8.524945) (xy 4.526437 -8.536065) (xy 4.567963 -8.507465)
|
||||||
|
(xy 4.656698 -8.428396) (xy 4.782697 -8.308959) (xy 4.936014 -8.159256) (xy 5.106702 -7.989385)
|
||||||
|
(xy 5.284814 -7.809449) (xy 5.460406 -7.629546) (xy 5.62353 -7.459778) (xy 5.764241 -7.310246)
|
||||||
|
(xy 5.872592 -7.191048) (xy 5.938637 -7.112287) (xy 5.954426 -7.085928) (xy 5.931703 -7.037334)
|
||||||
|
(xy 5.867999 -6.930874) (xy 5.770013 -6.776961) (xy 5.644441 -6.586009) (xy 5.497982 -6.368431)
|
||||||
|
(xy 5.413115 -6.244329) (xy 5.258426 -6.017721) (xy 5.12097 -5.81323) (xy 5.007414 -5.641035)
|
||||||
|
(xy 4.924428 -5.511315) (xy 4.878678 -5.434249) (xy 4.871803 -5.418053) (xy 4.887388 -5.372025)
|
||||||
|
(xy 4.929868 -5.26475) (xy 4.992835 -5.111313) (xy 5.069879 -4.926794) (xy 5.15459 -4.726279)
|
||||||
|
(xy 5.240558 -4.524848) (xy 5.321373 -4.337585) (xy 5.390627 -4.179572) (xy 5.441908 -4.065893)
|
||||||
|
(xy 5.468809 -4.01163) (xy 5.470396 -4.009494) (xy 5.512635 -3.999133) (xy 5.625126 -3.976018)
|
||||||
|
(xy 5.796209 -3.942421) (xy 6.014223 -3.900615) (xy 6.267509 -3.852873) (xy 6.415288 -3.825341)
|
||||||
|
(xy 6.685938 -3.77381) (xy 6.930397 -3.724775) (xy 7.1363 -3.680919) (xy 7.291277 -3.644926)
|
||||||
|
(xy 7.382962 -3.619479) (xy 7.401393 -3.611405) (xy 7.419445 -3.556758) (xy 7.43401 -3.433338)
|
||||||
|
(xy 7.445098 -3.255577) (xy 7.452719 -3.037909) (xy 7.456884 -2.794765) (xy 7.457602 -2.540577)
|
||||||
|
(xy 7.454882 -2.28978) (xy 7.448735 -2.056804) (xy 7.439171 -1.856082) (xy 7.426199 -1.702046)
|
||||||
|
(xy 7.409829 -1.60913) (xy 7.400011 -1.589787) (xy 7.341323 -1.566602) (xy 7.216966 -1.533456)
|
||||||
|
(xy 7.04339 -1.494242) (xy 6.837042 -1.452855) (xy 6.765011 -1.439466) (xy 6.417719 -1.375853)
|
||||||
|
(xy 6.143383 -1.324622) (xy 5.932939 -1.283739) (xy 5.777322 -1.251166) (xy 5.667467 -1.224868)
|
||||||
|
(xy 5.594311 -1.202808) (xy 5.548787 -1.182951) (xy 5.521833 -1.163259) (xy 5.518061 -1.159368)
|
||||||
|
(xy 5.480415 -1.096676) (xy 5.422986 -0.974669) (xy 5.351508 -0.808288) (xy 5.271715 -0.612471)
|
||||||
|
(xy 5.189343 -0.40216) (xy 5.110125 -0.192292) (xy 5.039796 0.002191) (xy 4.984089 0.16635)
|
||||||
|
(xy 4.948741 0.285245) (xy 4.939484 0.343936) (xy 4.940256 0.345992) (xy 4.97162 0.393964)
|
||||||
|
(xy 5.042774 0.499516) (xy 5.14624 0.65166) (xy 5.27454 0.83941) (xy 5.420199 1.05178)
|
||||||
|
(xy 5.46168 1.11213) (xy 5.609587 1.330929) (xy 5.739739 1.530562) (xy 5.845045 1.699565)
|
||||||
|
(xy 5.918416 1.826475) (xy 5.952763 1.899829) (xy 5.954426 1.908841) (xy 5.925569 1.956207)
|
||||||
|
(xy 5.845831 2.050042) (xy 5.725462 2.180261) (xy 5.574713 2.336779) (xy 5.403836 2.50951)
|
||||||
|
(xy 5.223079 2.688371) (xy 5.042694 2.863276) (xy 4.872932 3.02414) (xy 4.724042 3.160878)
|
||||||
|
(xy 4.606276 3.263407) (xy 4.529883 3.32164) (xy 4.50875 3.331148) (xy 4.45956 3.308754)
|
||||||
|
(xy 4.358847 3.248356) (xy 4.223017 3.160129) (xy 4.11851 3.089115) (xy 3.929149 2.958811)
|
||||||
|
(xy 3.704899 2.805384) (xy 3.479964 2.652201) (xy 3.359032 2.570218) (xy 2.949704 2.293353)
|
||||||
|
(xy 2.606102 2.479136) (xy 2.449565 2.560523) (xy 2.316454 2.623784) (xy 2.226389 2.659865)
|
||||||
|
(xy 2.203463 2.664885) (xy 2.175895 2.627817) (xy 2.121508 2.523069) (xy 2.044363 2.360303)
|
||||||
|
(xy 1.948518 2.149181) (xy 1.838034 1.899365) (xy 1.716971 1.620517) (xy 1.589389 1.322299)
|
||||||
|
(xy 1.459347 1.014374) (xy 1.330906 0.706404) (xy 1.208126 0.40805) (xy 1.095067 0.128975)
|
||||||
|
(xy 0.995788 -0.121159) (xy 0.914349 -0.33269) (xy 0.854811 -0.495957) (xy 0.821234 -0.601295)
|
||||||
|
(xy 0.815834 -0.637473) (xy 0.858634 -0.683619) (xy 0.952344 -0.758528) (xy 1.077373 -0.846636)
|
||||||
|
(xy 1.087867 -0.853606) (xy 1.41102 -1.112279) (xy 1.671587 -1.414062) (xy 1.86731 -1.749305)
|
||||||
|
(xy 1.995932 -2.108358) (xy 2.055195 -2.481574) (xy 2.042839 -2.8593) (xy 1.956607 -3.231889)
|
||||||
|
(xy 1.794241 -3.58969) (xy 1.746472 -3.667973) (xy 1.498009 -3.984081) (xy 1.204481 -4.237921)
|
||||||
|
(xy 0.876047 -4.428173) (xy 0.522865 -4.553515) (xy 0.155095 -4.612628) (xy -0.217103 -4.604193)
|
||||||
|
(xy -0.583571 -4.526888) (xy -0.934149 -4.379394) (xy -1.258677 -4.16039) (xy -1.359064 -4.071502)
|
||||||
|
(xy -1.614551 -3.793256) (xy -1.800722 -3.500344) (xy -1.92843 -3.172014) (xy -1.999556 -2.846867)
|
||||||
|
(xy -2.017114 -2.481298) (xy -1.958566 -2.113914) (xy -1.829858 -1.757134) (xy -1.636938 -1.423374)
|
||||||
|
(xy -1.385752 -1.125053) (xy -1.082248 -0.874589) (xy -1.04236 -0.848187) (xy -0.915991 -0.761728)
|
||||||
|
(xy -0.819927 -0.686816) (xy -0.774 -0.638985) (xy -0.773332 -0.637473) (xy -0.783192 -0.585733)
|
||||||
|
(xy -0.822278 -0.468304) (xy -0.886528 -0.294846) (xy -0.97188 -0.075021) (xy -1.074273 0.181513)
|
||||||
|
(xy -1.189646 0.465096) (xy -1.313937 0.766067) (xy -1.443084 1.074767) (xy -1.573026 1.381536)
|
||||||
|
(xy -1.699702 1.676714) (xy -1.819049 1.95064) (xy -1.927006 2.193656) (xy -2.019512 2.396101)
|
||||||
|
(xy -2.092504 2.548315) (xy -2.141923 2.640638) (xy -2.161823 2.664885) (xy -2.222634 2.646004)
|
||||||
|
(xy -2.336418 2.595364) (xy -2.483555 2.522017) (xy -2.564462 2.479136) (xy -2.908065 2.293353)
|
||||||
|
(xy -3.317393 2.570218) (xy -3.526346 2.712054) (xy -3.755113 2.868141) (xy -3.969491 3.015109)
|
||||||
|
(xy -4.076871 3.089115) (xy -4.227898 3.190531) (xy -4.355782 3.270898) (xy -4.443842 3.320041)
|
||||||
|
(xy -4.472445 3.330429) (xy -4.514076 3.302405) (xy -4.606211 3.224172) (xy -4.739918 3.103852)
|
||||||
|
(xy -4.906265 2.949568) (xy -5.09632 2.769443) (xy -5.216521 2.65379) (xy -5.426815 2.447167)
|
||||||
|
(xy -5.608556 2.262358) (xy -5.754397 2.10727) (xy -5.856991 1.989807) (xy -5.908991 1.917875)
|
||||||
|
(xy -5.91398 1.903278) (xy -5.890829 1.847753) (xy -5.826854 1.735484) (xy -5.729153 1.577837)
|
||||||
|
(xy -5.60482 1.386179) (xy -5.460954 1.171876) (xy -5.420041 1.11213) (xy -5.270967 0.894982)
|
||||||
|
(xy -5.137225 0.699475) (xy -5.026291 0.536599) (xy -4.945644 0.417337) (xy -4.902759 0.352678)
|
||||||
|
(xy -4.898617 0.345992) (xy -4.904812 0.294462) (xy -4.9377 0.181166) (xy -4.991545 0.021042)
|
||||||
|
(xy -5.060613 -0.170968) (xy -5.139169 -0.379926) (xy -5.22148 -0.590891) (xy -5.301811 -0.788924)
|
||||||
|
(xy -5.374428 -0.959084) (xy -5.433595 -1.086433) (xy -5.47358 -1.156029) (xy -5.476422 -1.159368)
|
||||||
|
(xy -5.500873 -1.179258) (xy -5.542169 -1.198927) (xy -5.609377 -1.220411) (xy -5.711559 -1.245747)
|
||||||
|
(xy -5.857781 -1.276971) (xy -6.057107 -1.316118) (xy -6.318603 -1.365225) (xy -6.651331 -1.426328)
|
||||||
|
(xy -6.723372 -1.439466) (xy -6.936885 -1.480718) (xy -7.123022 -1.521074) (xy -7.265334 -1.556639)
|
||||||
|
(xy -7.347371 -1.58352) (xy -7.358372 -1.589787) (xy -7.376498 -1.645346) (xy -7.391233 -1.769505)
|
||||||
|
(xy -7.402564 -1.947831) (xy -7.410484 -2.165891) (xy -7.414981 -2.409254) (xy -7.416046 -2.663486)
|
||||||
|
(xy -7.41367 -2.914155) (xy -7.407841 -3.146829) (xy -7.398551 -3.347076) (xy -7.385789 -3.500462)
|
||||||
|
(xy -7.369546 -3.592556) (xy -7.359754 -3.611405) (xy -7.305239 -3.630418) (xy -7.181104 -3.66135)
|
||||||
|
(xy -6.999715 -3.701518) (xy -6.77344 -3.748238) (xy -6.514647 -3.798827) (xy -6.373649 -3.825341)
|
||||||
|
(xy -6.106127 -3.87535) (xy -5.867562 -3.920654) (xy -5.669614 -3.958979) (xy -5.523943 -3.988053)
|
||||||
|
(xy -5.442209 -4.005603) (xy -5.428757 -4.009494) (xy -5.406021 -4.053362) (xy -5.35796 -4.159024)
|
||||||
|
(xy -5.290981 -4.311387) (xy -5.21149 -4.495354) (xy -5.125892 -4.69583) (xy -5.040595 -4.897719)
|
||||||
|
(xy -4.962005 -5.085927) (xy -4.896527 -5.245358) (xy -4.850569 -5.360916) (xy -4.830537 -5.417506)
|
||||||
|
(xy -4.830164 -5.419979) (xy -4.852874 -5.464621) (xy -4.916541 -5.567353) (xy -5.014475 -5.717963)
|
||||||
|
(xy -5.139983 -5.906243) (xy -5.286374 -6.121982) (xy -5.371475 -6.245902) (xy -5.526545 -6.473117)
|
||||||
|
(xy -5.664275 -6.679405) (xy -5.777947 -6.854329) (xy -5.860839 -6.987455) (xy -5.906231 -7.068347)
|
||||||
|
(xy -5.912787 -7.08648) (xy -5.884605 -7.128688) (xy -5.806696 -7.218809) (xy -5.68901 -7.346746)
|
||||||
|
(xy -5.5415 -7.502404) (xy -5.374119 -7.675685) (xy -5.196819 -7.856493) (xy -5.019552 -8.034733)
|
||||||
|
(xy -4.85227 -8.200307) (xy -4.704925 -8.34312) (xy -4.58747 -8.453075) (xy -4.509857 -8.520076)
|
||||||
|
(xy -4.483892 -8.536065) (xy -4.441616 -8.513581) (xy -4.340499 -8.450415) (xy -4.190373 -8.352997)
|
||||||
|
(xy -4.00107 -8.227757) (xy -3.782421 -8.081125) (xy -3.617489 -7.969414) (xy -2.784169 -7.402763)
|
||||||
|
(xy -2.089544 -7.689111) (xy -1.394918 -7.975458) (xy -1.206666 -8.97404) (xy -1.018413 -9.972623)
|
||||||
|
(xy 1.060052 -9.972623) (xy 1.248305 -8.97404)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 5.958869 4.828231) (xy 6.102092 4.871989) (xy 6.194306 4.92728) (xy 6.224344 4.971004)
|
||||||
|
(xy 6.216076 5.022834) (xy 6.162427 5.104259) (xy 6.117063 5.161927) (xy 6.023546 5.266182)
|
||||||
|
(xy 5.953287 5.310045) (xy 5.893393 5.307182) (xy 5.71572 5.261967) (xy 5.585234 5.26402)
|
||||||
|
(xy 5.479273 5.315261) (xy 5.4437 5.345252) (xy 5.329836 5.450778) (xy 5.329836 6.828853)
|
||||||
|
(xy 4.871803 6.828853) (xy 4.871803 4.830164) (xy 5.10082 4.830164) (xy 5.238318 4.835602)
|
||||||
|
(xy 5.309258 4.854909) (xy 5.329827 4.892576) (xy 5.329836 4.893692) (xy 5.33955 4.933146)
|
||||||
|
(xy 5.383478 4.928) (xy 5.444344 4.899536) (xy 5.570054 4.846569) (xy 5.672134 4.814703)
|
||||||
|
(xy 5.80348 4.806533) (xy 5.958869 4.828231)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy -2.496892 4.864563) (xy -2.39326 4.914062) (xy -2.292894 4.985561) (xy -2.216432 5.067853)
|
||||||
|
(xy -2.160738 5.172811) (xy -2.122677 5.312313) (xy -2.099115 5.498233) (xy -2.086915 5.742448)
|
||||||
|
(xy -2.082944 6.056833) (xy -2.082882 6.089754) (xy -2.081967 6.828853) (xy -2.54 6.828853)
|
||||||
|
(xy -2.54 6.147481) (xy -2.540326 5.89505) (xy -2.542581 5.712093) (xy -2.548681 5.584807)
|
||||||
|
(xy -2.560541 5.499386) (xy -2.580076 5.442026) (xy -2.609203 5.398924) (xy -2.649776 5.356334)
|
||||||
|
(xy -2.791731 5.264824) (xy -2.946694 5.247843) (xy -3.094323 5.305701) (xy -3.145663 5.348763)
|
||||||
|
(xy -3.183353 5.389249) (xy -3.210413 5.432607) (xy -3.228603 5.492463) (xy -3.239684 5.582441)
|
||||||
|
(xy -3.245414 5.716168) (xy -3.247556 5.90727) (xy -3.247869 6.139911) (xy -3.247869 6.828853)
|
||||||
|
(xy -3.705902 6.828853) (xy -3.705902 4.830164) (xy -3.476885 4.830164) (xy -3.339386 4.835602)
|
||||||
|
(xy -3.268447 4.854909) (xy -3.247878 4.892576) (xy -3.247869 4.893692) (xy -3.238325 4.930581)
|
||||||
|
(xy -3.196233 4.926395) (xy -3.112541 4.885861) (xy -2.922727 4.826224) (xy -2.705599 4.819591)
|
||||||
|
(xy -2.496892 4.864563)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 8.867792 4.823019) (xy 8.974414 4.848922) (xy 9.17883 4.943772) (xy 9.353625 5.088633)
|
||||||
|
(xy 9.474597 5.26232) (xy 9.491217 5.301317) (xy 9.514016 5.403465) (xy 9.529975 5.554573)
|
||||||
|
(xy 9.53541 5.707301) (xy 9.53541 5.996066) (xy 8.931639 5.996066) (xy 8.682619 5.997007)
|
||||||
|
(xy 8.507189 6.002723) (xy 8.395665 6.01755) (xy 8.33836 6.045827) (xy 8.325588 6.09189)
|
||||||
|
(xy 8.347662 6.160077) (xy 8.387205 6.239863) (xy 8.497509 6.373017) (xy 8.650792 6.439355)
|
||||||
|
(xy 8.838141 6.437194) (xy 9.050363 6.364991) (xy 9.233773 6.275883) (xy 9.385962 6.39622)
|
||||||
|
(xy 9.538151 6.516558) (xy 9.394974 6.648843) (xy 9.203828 6.773832) (xy 8.968753 6.849189)
|
||||||
|
(xy 8.715898 6.870278) (xy 8.471413 6.83246) (xy 8.431967 6.819628) (xy 8.21709 6.707414)
|
||||||
|
(xy 8.05725 6.540118) (xy 7.94908 6.312748) (xy 7.88921 6.020308) (xy 7.888513 6.01404)
|
||||||
|
(xy 7.883152 5.695332) (xy 7.904823 5.581632) (xy 8.327869 5.581632) (xy 8.366722 5.599116)
|
||||||
|
(xy 8.472205 5.612508) (xy 8.627707 5.620155) (xy 8.726249 5.621312) (xy 8.910013 5.620588)
|
||||||
|
(xy 9.024914 5.615983) (xy 9.085366 5.603848) (xy 9.105783 5.58053) (xy 9.100581 5.542382)
|
||||||
|
(xy 9.096217 5.527623) (xy 9.021724 5.388944) (xy 8.904566 5.277179) (xy 8.801173 5.228066)
|
||||||
|
(xy 8.663816 5.231032) (xy 8.524629 5.292278) (xy 8.407874 5.393683) (xy 8.33781 5.517122)
|
||||||
|
(xy 8.327869 5.581632) (xy 7.904823 5.581632) (xy 7.936579 5.41502) (xy 8.042572 5.17978)
|
||||||
|
(xy 8.194911 4.996284) (xy 8.387374 4.871209) (xy 8.613742 4.811229) (xy 8.867792 4.823019)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 7.342288 4.847602) (xy 7.583543 4.95009) (xy 7.659531 4.999981) (xy 7.756648 5.076651)
|
||||||
|
(xy 7.817612 5.136936) (xy 7.828197 5.156571) (xy 7.798308 5.200142) (xy 7.721819 5.274077)
|
||||||
|
(xy 7.660582 5.325679) (xy 7.492967 5.460378) (xy 7.360614 5.34901) (xy 7.258336 5.277113)
|
||||||
|
(xy 7.15861 5.252296) (xy 7.044475 5.258357) (xy 6.863234 5.303418) (xy 6.738475 5.396949)
|
||||||
|
(xy 6.662658 5.548154) (xy 6.62824 5.766236) (xy 6.628231 5.766373) (xy 6.631208 6.010124)
|
||||||
|
(xy 6.677467 6.188966) (xy 6.769742 6.31073) (xy 6.83265 6.351964) (xy 6.999717 6.403311)
|
||||||
|
(xy 7.178162 6.403342) (xy 7.333415 6.353522) (xy 7.370164 6.32918) (xy 7.46233 6.267004)
|
||||||
|
(xy 7.534387 6.256813) (xy 7.612102 6.303092) (xy 7.698018 6.386212) (xy 7.834011 6.526521)
|
||||||
|
(xy 7.683023 6.650978) (xy 7.44974 6.791443) (xy 7.186673 6.860666) (xy 6.91176 6.855653)
|
||||||
|
(xy 6.731216 6.809755) (xy 6.520194 6.696249) (xy 6.351426 6.517685) (xy 6.274753 6.391639)
|
||||||
|
(xy 6.212654 6.210791) (xy 6.181581 5.981745) (xy 6.181342 5.73351) (xy 6.211743 5.495093)
|
||||||
|
(xy 6.272592 5.295503) (xy 6.282176 5.275039) (xy 6.424102 5.074341) (xy 6.616259 4.928217)
|
||||||
|
(xy 6.843464 4.839698) (xy 7.090535 4.811815) (xy 7.342288 4.847602)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 3.289508 5.478311) (xy 3.293444 5.783698) (xy 3.307823 6.01566) (xy 3.336504 6.183786)
|
||||||
|
(xy 3.383348 6.297671) (xy 3.452211 6.366905) (xy 3.546954 6.40108) (xy 3.664262 6.409811)
|
||||||
|
(xy 3.787123 6.400028) (xy 3.880444 6.364287) (xy 3.948084 6.292995) (xy 3.993901 6.176561)
|
||||||
|
(xy 4.021755 6.005391) (xy 4.035504 5.769896) (xy 4.039016 5.478311) (xy 4.039016 4.830164)
|
||||||
|
(xy 4.497049 4.830164) (xy 4.497049 6.828853) (xy 4.268033 6.828853) (xy 4.129971 6.823258)
|
||||||
|
(xy 4.058878 6.803611) (xy 4.039016 6.766313) (xy 4.027054 6.733094) (xy 3.979447 6.740121)
|
||||||
|
(xy 3.883485 6.787132) (xy 3.663548 6.859654) (xy 3.430274 6.854516) (xy 3.206755 6.775766)
|
||||||
|
(xy 3.100313 6.713558) (xy 3.019122 6.646204) (xy 2.959808 6.561928) (xy 2.918996 6.448957)
|
||||||
|
(xy 2.893312 6.295515) (xy 2.879381 6.089827) (xy 2.873829 5.820118) (xy 2.873115 5.611551)
|
||||||
|
(xy 2.873115 4.830164) (xy 3.289508 4.830164) (xy 3.289508 5.478311)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 2.022521 4.854805) (xy 2.233136 4.969505) (xy 2.397915 5.150574) (xy 2.475554 5.297838)
|
||||||
|
(xy 2.508886 5.427907) (xy 2.530483 5.613333) (xy 2.539739 5.826939) (xy 2.536045 6.04155)
|
||||||
|
(xy 2.518794 6.229991) (xy 2.498643 6.330637) (xy 2.430667 6.468323) (xy 2.312942 6.614566)
|
||||||
|
(xy 2.171065 6.742452) (xy 2.030632 6.825063) (xy 2.027207 6.826373) (xy 1.852945 6.862472)
|
||||||
|
(xy 1.646427 6.863365) (xy 1.450174 6.830501) (xy 1.374396 6.804161) (xy 1.179221 6.693484)
|
||||||
|
(xy 1.039438 6.548478) (xy 0.947599 6.356503) (xy 0.896254 6.10492) (xy 0.884637 5.973142)
|
||||||
|
(xy 0.886119 5.807553) (xy 1.332459 5.807553) (xy 1.347494 6.049177) (xy 1.390772 6.233303)
|
||||||
|
(xy 1.459551 6.350949) (xy 1.50855 6.38459) (xy 1.634093 6.40805) (xy 1.783318 6.401104)
|
||||||
|
(xy 1.912333 6.367345) (xy 1.946166 6.348772) (xy 2.035428 6.240599) (xy 2.094345 6.075051)
|
||||||
|
(xy 2.119424 5.873581) (xy 2.107174 5.657646) (xy 2.079796 5.52769) (xy 2.001191 5.377191)
|
||||||
|
(xy 1.877104 5.283114) (xy 1.727661 5.250587) (xy 1.572987 5.284738) (xy 1.454174 5.368273)
|
||||||
|
(xy 1.391735 5.437193) (xy 1.355293 5.505126) (xy 1.337923 5.597064) (xy 1.332699 5.737999)
|
||||||
|
(xy 1.332459 5.807553) (xy 0.886119 5.807553) (xy 0.887785 5.621495) (xy 0.945056 5.333134)
|
||||||
|
(xy 1.056457 5.108049) (xy 1.221993 4.94623) (xy 1.44167 4.847666) (xy 1.488842 4.836236)
|
||||||
|
(xy 1.772336 4.809406) (xy 2.022521 4.854805)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 0.046418 4.823003) (xy 0.2041 4.852907) (xy 0.367685 4.915452) (xy 0.385164 4.923426)
|
||||||
|
(xy 0.509217 4.988656) (xy 0.595129 5.049274) (xy 0.622898 5.088106) (xy 0.596453 5.151437)
|
||||||
|
(xy 0.53222 5.244881) (xy 0.503708 5.279762) (xy 0.386211 5.417066) (xy 0.234732 5.327691)
|
||||||
|
(xy 0.09057 5.268152) (xy -0.076 5.236326) (xy -0.235738 5.234316) (xy -0.359406 5.264221)
|
||||||
|
(xy -0.389084 5.282886) (xy -0.445602 5.368466) (xy -0.452471 5.467049) (xy -0.41018 5.544062)
|
||||||
|
(xy -0.385164 5.558998) (xy -0.310204 5.577547) (xy -0.178439 5.599348) (xy -0.016009 5.62018)
|
||||||
|
(xy 0.013956 5.623447) (xy 0.27484 5.668575) (xy 0.464055 5.74523) (xy 0.589543 5.860491)
|
||||||
|
(xy 0.659243 6.021435) (xy 0.680956 6.218015) (xy 0.650961 6.441473) (xy 0.553559 6.616949)
|
||||||
|
(xy 0.388361 6.744758) (xy 0.154977 6.825218) (xy -0.104098 6.856962) (xy -0.315367 6.85658)
|
||||||
|
(xy -0.486735 6.827749) (xy -0.60377 6.787944) (xy -0.75165 6.718587) (xy -0.888313 6.638097)
|
||||||
|
(xy -0.936885 6.60267) (xy -1.061803 6.500705) (xy -0.760491 6.195813) (xy -0.589204 6.309165)
|
||||||
|
(xy -0.417406 6.3943) (xy -0.233952 6.43883) (xy -0.057603 6.443528) (xy 0.092881 6.40917)
|
||||||
|
(xy 0.19874 6.336529) (xy 0.232921 6.275238) (xy 0.227794 6.176941) (xy 0.142857 6.101773)
|
||||||
|
(xy -0.021657 6.049866) (xy -0.201899 6.025875) (xy -0.479291 5.980104) (xy -0.685365 5.893748)
|
||||||
|
(xy -0.822878 5.76428) (xy -0.894587 5.589172) (xy -0.904521 5.381565) (xy -0.855452 5.164714)
|
||||||
|
(xy -0.74358 5.000805) (xy -0.567903 4.889088) (xy -0.327419 4.828814) (xy -0.149257 4.816999)
|
||||||
|
(xy 0.046418 4.823003)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy -4.492675 4.876526) (xy -4.451181 4.896061) (xy -4.307566 5.001263) (xy -4.171764 5.154793)
|
||||||
|
(xy -4.070362 5.323845) (xy -4.04152 5.401567) (xy -4.015206 5.540398) (xy -3.999515 5.708177)
|
||||||
|
(xy -3.997609 5.777459) (xy -3.997377 5.996066) (xy -5.255585 5.996066) (xy -5.228766 6.110574)
|
||||||
|
(xy -5.162934 6.246004) (xy -5.047839 6.363046) (xy -4.910913 6.438442) (xy -4.823658 6.454098)
|
||||||
|
(xy -4.705328 6.435099) (xy -4.564149 6.387446) (xy -4.516189 6.365521) (xy -4.338829 6.276944)
|
||||||
|
(xy -4.18747 6.392391) (xy -4.100131 6.470474) (xy -4.053658 6.534922) (xy -4.051305 6.553837)
|
||||||
|
(xy -4.092822 6.599681) (xy -4.18381 6.669349) (xy -4.266395 6.7237) (xy -4.489249 6.821405)
|
||||||
|
(xy -4.739087 6.865628) (xy -4.98671 6.85413) (xy -5.184098 6.794029) (xy -5.387576 6.665284)
|
||||||
|
(xy -5.532179 6.495774) (xy -5.622639 6.276462) (xy -5.663689 5.998309) (xy -5.667329 5.871034)
|
||||||
|
(xy -5.652761 5.579375) (xy -5.650972 5.570891) (xy -5.234059 5.570891) (xy -5.222577 5.598242)
|
||||||
|
(xy -5.175384 5.613324) (xy -5.078049 5.619788) (xy -4.916136 5.621285) (xy -4.85379 5.621312)
|
||||||
|
(xy -4.664103 5.619052) (xy -4.543811 5.610844) (xy -4.479116 5.59455) (xy -4.45622 5.568027)
|
||||||
|
(xy -4.45541 5.55951) (xy -4.48154 5.491825) (xy -4.546937 5.397005) (xy -4.575052 5.363805)
|
||||||
|
(xy -4.679426 5.269906) (xy -4.788225 5.232988) (xy -4.846843 5.229902) (xy -5.005426 5.268493)
|
||||||
|
(xy -5.138413 5.372155) (xy -5.222772 5.522717) (xy -5.224267 5.527623) (xy -5.234059 5.570891)
|
||||||
|
(xy -5.650972 5.570891) (xy -5.604316 5.349722) (xy -5.517045 5.165983) (xy -5.410311 5.035557)
|
||||||
|
(xy -5.21298 4.894131) (xy -4.981015 4.818556) (xy -4.734288 4.811724) (xy -4.492675 4.876526)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy -8.40539 4.851802) (xy -8.187553 4.948108) (xy -8.022184 5.108919) (xy -7.909043 5.334482)
|
||||||
|
(xy -7.847888 5.625042) (xy -7.843505 5.670408) (xy -7.84007 5.990256) (xy -7.884602 6.270614)
|
||||||
|
(xy -7.974391 6.497847) (xy -8.022471 6.570941) (xy -8.189945 6.725643) (xy -8.403232 6.825838)
|
||||||
|
(xy -8.641846 6.867418) (xy -8.885303 6.846272) (xy -9.07037 6.781145) (xy -9.229521 6.671393)
|
||||||
|
(xy -9.359596 6.527496) (xy -9.361846 6.52413) (xy -9.41467 6.435314) (xy -9.448999 6.346005)
|
||||||
|
(xy -9.469788 6.233294) (xy -9.481991 6.074273) (xy -9.487367 5.943868) (xy -9.489605 5.825611)
|
||||||
|
(xy -9.073294 5.825611) (xy -9.069225 5.943335) (xy -9.054455 6.100049) (xy -9.028398 6.200621)
|
||||||
|
(xy -8.981407 6.272173) (xy -8.937397 6.313971) (xy -8.781377 6.401484) (xy -8.618131 6.413179)
|
||||||
|
(xy -8.466096 6.350212) (xy -8.39008 6.279653) (xy -8.335303 6.20855) (xy -8.303263 6.140512)
|
||||||
|
(xy -8.2892 6.051967) (xy -8.288358 5.919339) (xy -8.292691 5.797195) (xy -8.302011 5.62271)
|
||||||
|
(xy -8.316788 5.509538) (xy -8.34342 5.435721) (xy -8.388309 5.379298) (xy -8.42388 5.34705)
|
||||||
|
(xy -8.572671 5.26234) (xy -8.733187 5.258117) (xy -8.86778 5.308292) (xy -8.9826 5.413075)
|
||||||
|
(xy -9.051004 5.585198) (xy -9.073294 5.825611) (xy -9.489605 5.825611) (xy -9.492276 5.684548)
|
||||||
|
(xy -9.483893 5.49061) (xy -9.458772 5.344745) (xy -9.413468 5.229641) (xy -9.344536 5.127986)
|
||||||
|
(xy -9.318978 5.097802) (xy -9.159175 4.947412) (xy -8.987769 4.859566) (xy -8.778151 4.822762)
|
||||||
|
(xy -8.675936 4.819754) (xy -8.40539 4.851802)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 6.730842 7.963999) (xy 6.929876 8.015746) (xy 7.096561 8.122544) (xy 7.177269 8.202326)
|
||||||
|
(xy 7.309568 8.390931) (xy 7.38539 8.60972) (xy 7.411438 8.878668) (xy 7.411571 8.90041)
|
||||||
|
(xy 7.411803 9.119017) (xy 6.153595 9.119017) (xy 6.180415 9.233525) (xy 6.228841 9.337232)
|
||||||
|
(xy 6.313596 9.44529) (xy 6.331323 9.462541) (xy 6.48368 9.555904) (xy 6.657424 9.571738)
|
||||||
|
(xy 6.857411 9.510313) (xy 6.891311 9.493771) (xy 6.995288 9.443484) (xy 7.064931 9.414834)
|
||||||
|
(xy 7.077083 9.412184) (xy 7.119501 9.437913) (xy 7.200399 9.500861) (xy 7.241465 9.535259)
|
||||||
|
(xy 7.32656 9.614276) (xy 7.354503 9.666451) (xy 7.33511 9.714446) (xy 7.324743 9.72757)
|
||||||
|
(xy 7.254531 9.785008) (xy 7.138674 9.854813) (xy 7.057869 9.895564) (xy 6.828501 9.967362)
|
||||||
|
(xy 6.574564 9.990625) (xy 6.334074 9.963059) (xy 6.266721 9.943321) (xy 6.058262 9.831612)
|
||||||
|
(xy 5.903746 9.659721) (xy 5.802278 9.425979) (xy 5.752965 9.128716) (xy 5.747551 8.973279)
|
||||||
|
(xy 5.763359 8.746973) (xy 6.162623 8.746973) (xy 6.20124 8.763702) (xy 6.305042 8.776829)
|
||||||
|
(xy 6.455956 8.784575) (xy 6.558197 8.785902) (xy 6.742101 8.784623) (xy 6.858174 8.778638)
|
||||||
|
(xy 6.921852 8.764724) (xy 6.948567 8.739655) (xy 6.95377 8.70328) (xy 6.918073 8.591229)
|
||||||
|
(xy 6.828196 8.480488) (xy 6.709966 8.395489) (xy 6.59169 8.360718) (xy 6.431044 8.391563)
|
||||||
|
(xy 6.291978 8.480732) (xy 6.195557 8.609263) (xy 6.162623 8.746973) (xy 5.763359 8.746973)
|
||||||
|
(xy 5.770572 8.643733) (xy 5.841624 8.381175) (xy 5.96221 8.183525) (xy 6.133834 8.048702)
|
||||||
|
(xy 6.357998 7.974626) (xy 6.479438 7.96036) (xy 6.730842 7.963999)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 5.415107 7.95246) (xy 5.575182 7.984017) (xy 5.666312 8.030743) (xy 5.762179 8.10837)
|
||||||
|
(xy 5.625787 8.280579) (xy 5.541694 8.384867) (xy 5.484592 8.435746) (xy 5.427844 8.443519)
|
||||||
|
(xy 5.344811 8.418488) (xy 5.305833 8.404327) (xy 5.146926 8.383433) (xy 5.001399 8.42822)
|
||||||
|
(xy 4.89456 8.529399) (xy 4.877205 8.561659) (xy 4.858303 8.647115) (xy 4.843716 8.804606)
|
||||||
|
(xy 4.834126 9.022969) (xy 4.830219 9.291038) (xy 4.830164 9.329172) (xy 4.830164 9.993443)
|
||||||
|
(xy 4.372131 9.993443) (xy 4.372131 7.953115) (xy 4.601148 7.953115) (xy 4.733199 7.956563)
|
||||||
|
(xy 4.801992 7.971907) (xy 4.82743 8.006648) (xy 4.830164 8.039416) (xy 4.830164 8.125717)
|
||||||
|
(xy 4.939878 8.039416) (xy 5.06568 7.980538) (xy 5.234681 7.951426) (xy 5.415107 7.95246)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 3.43867 7.96548) (xy 3.614179 8.008109) (xy 3.664912 8.030693) (xy 3.763254 8.089847)
|
||||||
|
(xy 3.838727 8.156472) (xy 3.894571 8.242135) (xy 3.934026 8.358405) (xy 3.960332 8.516848)
|
||||||
|
(xy 3.976729 8.729034) (xy 3.986457 9.006529) (xy 3.990151 9.191885) (xy 4.003745 9.993443)
|
||||||
|
(xy 3.771544 9.993443) (xy 3.630677 9.987536) (xy 3.558102 9.96735) (xy 3.539344 9.933453)
|
||||||
|
(xy 3.529441 9.896799) (xy 3.485166 9.903807) (xy 3.424836 9.933197) (xy 3.273803 9.978246)
|
||||||
|
(xy 3.079693 9.990385) (xy 2.875531 9.970529) (xy 2.69434 9.919592) (xy 2.678089 9.912522)
|
||||||
|
(xy 2.512491 9.796188) (xy 2.403324 9.634467) (xy 2.353091 9.44543) (xy 2.356928 9.377515)
|
||||||
|
(xy 2.766763 9.377515) (xy 2.802875 9.468914) (xy 2.909942 9.534411) (xy 3.082684 9.569563)
|
||||||
|
(xy 3.175 9.574231) (xy 3.32885 9.562282) (xy 3.431115 9.515844) (xy 3.456066 9.493771)
|
||||||
|
(xy 3.523661 9.373681) (xy 3.539344 9.264754) (xy 3.539344 9.119017) (xy 3.336352 9.119017)
|
||||||
|
(xy 3.100387 9.131043) (xy 2.934881 9.168871) (xy 2.830305 9.235121) (xy 2.806891 9.264656)
|
||||||
|
(xy 2.766763 9.377515) (xy 2.356928 9.377515) (xy 2.364295 9.247148) (xy 2.43944 9.057692)
|
||||||
|
(xy 2.541968 8.929656) (xy 2.604065 8.874302) (xy 2.664855 8.837924) (xy 2.743952 8.815744)
|
||||||
|
(xy 2.860971 8.802982) (xy 3.035527 8.794857) (xy 3.104763 8.792521) (xy 3.539344 8.778321)
|
||||||
|
(xy 3.538707 8.646784) (xy 3.521876 8.508519) (xy 3.461026 8.424917) (xy 3.338095 8.371507)
|
||||||
|
(xy 3.334797 8.370555) (xy 3.160504 8.349555) (xy 2.989952 8.376985) (xy 2.8632 8.443689)
|
||||||
|
(xy 2.812342 8.476625) (xy 2.757565 8.472068) (xy 2.673272 8.424349) (xy 2.623773 8.390671)
|
||||||
|
(xy 2.526955 8.318716) (xy 2.466982 8.264779) (xy 2.457359 8.249337) (xy 2.496985 8.169424)
|
||||||
|
(xy 2.614064 8.073989) (xy 2.664918 8.041789) (xy 2.811113 7.986332) (xy 3.008137 7.954913)
|
||||||
|
(xy 3.226989 7.947855) (xy 3.43867 7.96548)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 1.096942 7.973935) (xy 1.312248 8.619344) (xy 1.527555 9.264754) (xy 1.595064 9.035738)
|
||||||
|
(xy 1.635691 8.894204) (xy 1.689133 8.702936) (xy 1.746842 8.492693) (xy 1.777355 8.379918)
|
||||||
|
(xy 1.892136 7.953115) (xy 2.365687 7.953115) (xy 2.224139 8.400738) (xy 2.154433 8.620903)
|
||||||
|
(xy 2.070223 8.886471) (xy 1.982281 9.163492) (xy 1.903772 9.410492) (xy 1.724952 9.972623)
|
||||||
|
(xy 1.531882 9.985185) (xy 1.338811 9.997746) (xy 1.234118 9.65207) (xy 1.169553 9.437335)
|
||||||
|
(xy 1.099092 9.200604) (xy 1.037511 8.991526) (xy 1.035081 8.983205) (xy 0.989085 8.841537)
|
||||||
|
(xy 0.948503 8.744874) (xy 0.92008 8.708321) (xy 0.914239 8.712549) (xy 0.893738 8.769217)
|
||||||
|
(xy 0.854785 8.890605) (xy 0.802122 9.061448) (xy 0.740491 9.266482) (xy 0.707143 9.379262)
|
||||||
|
(xy 0.526546 9.993443) (xy 0.143267 9.993443) (xy -0.163133 9.025328) (xy -0.249209 8.753759)
|
||||||
|
(xy -0.32762 8.507138) (xy -0.394661 8.297048) (xy -0.446631 8.135076) (xy -0.479826 8.032808)
|
||||||
|
(xy -0.489916 8.002928) (xy -0.481928 7.972334) (xy -0.419208 7.958935) (xy -0.288685 7.960275)
|
||||||
|
(xy -0.268253 7.961288) (xy -0.026208 7.973935) (xy 0.132317 8.556885) (xy 0.190585 8.769486)
|
||||||
|
(xy 0.242655 8.956377) (xy 0.283944 9.101331) (xy 0.309866 9.18812) (xy 0.314656 9.202269)
|
||||||
|
(xy 0.334504 9.185998) (xy 0.37453 9.101697) (xy 0.430138 8.960842) (xy 0.496731 8.774911)
|
||||||
|
(xy 0.553024 8.606956) (xy 0.767578 7.949209) (xy 1.096942 7.973935)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy -0.66623 9.993443) (xy -0.895246 9.993443) (xy -1.028175 9.989546) (xy -1.097405 9.973407)
|
||||||
|
(xy -1.122332 9.938354) (xy -1.124262 9.914653) (xy -1.128466 9.867123) (xy -1.154974 9.858008)
|
||||||
|
(xy -1.224633 9.887308) (xy -1.278804 9.914653) (xy -1.486777 9.979451) (xy -1.712853 9.983201)
|
||||||
|
(xy -1.896655 9.934873) (xy -2.067813 9.818118) (xy -2.198284 9.645781) (xy -2.269727 9.442506)
|
||||||
|
(xy -2.271546 9.431141) (xy -2.282161 9.307136) (xy -2.28744 9.129117) (xy -2.287016 8.99448)
|
||||||
|
(xy -1.832172 8.99448) (xy -1.821635 9.173428) (xy -1.797666 9.320924) (xy -1.765217 9.404217)
|
||||||
|
(xy -1.642456 9.518041) (xy -1.496701 9.558845) (xy -1.346393 9.525848) (xy -1.217951 9.427422)
|
||||||
|
(xy -1.169308 9.361224) (xy -1.140866 9.282231) (xy -1.127544 9.166926) (xy -1.124262 8.993736)
|
||||||
|
(xy -1.130135 8.822229) (xy -1.145647 8.67154) (xy -1.167638 8.570698) (xy -1.171303 8.561659)
|
||||||
|
(xy -1.259988 8.454195) (xy -1.389428 8.395195) (xy -1.534257 8.385669) (xy -1.669109 8.426626)
|
||||||
|
(xy -1.768617 8.519076) (xy -1.77894 8.537473) (xy -1.81125 8.649646) (xy -1.828852 8.810934)
|
||||||
|
(xy -1.832172 8.99448) (xy -2.287016 8.99448) (xy -2.2868 8.926212) (xy -2.283806 8.81701)
|
||||||
|
(xy -2.263442 8.546856) (xy -2.221117 8.344024) (xy -2.150706 8.194077) (xy -2.046088 8.082579)
|
||||||
|
(xy -1.944521 8.017127) (xy -1.802616 7.971117) (xy -1.626121 7.955336) (xy -1.445393 7.96819)
|
||||||
|
(xy -1.290787 8.008081) (xy -1.209101 8.055801) (xy -1.124262 8.132579) (xy -1.124262 7.161967)
|
||||||
|
(xy -0.66623 7.161967) (xy -0.66623 9.993443)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy -3.289475 7.95754) (xy -3.227163 7.976218) (xy -3.207075 8.017255) (xy -3.20623 8.035782)
|
||||||
|
(xy -3.202625 8.087383) (xy -3.1778 8.095484) (xy -3.110737 8.060108) (xy -3.070902 8.035937)
|
||||||
|
(xy -2.945227 7.984175) (xy -2.795123 7.958581) (xy -2.637737 7.956613) (xy -2.490214 7.975729)
|
||||||
|
(xy -2.3697 8.013387) (xy -2.29334 8.067044) (xy -2.278281 8.134158) (xy -2.285881 8.152333)
|
||||||
|
(xy -2.341282 8.227777) (xy -2.42719 8.320568) (xy -2.442728 8.335568) (xy -2.524612 8.40454)
|
||||||
|
(xy -2.595263 8.426825) (xy -2.694068 8.411272) (xy -2.733652 8.400938) (xy -2.856828 8.376116)
|
||||||
|
(xy -2.943436 8.387278) (xy -3.016576 8.426646) (xy -3.083574 8.479479) (xy -3.132918 8.545924)
|
||||||
|
(xy -3.167209 8.638652) (xy -3.189048 8.770334) (xy -3.201034 8.953641) (xy -3.205769 9.201246)
|
||||||
|
(xy -3.20623 9.350744) (xy -3.20623 9.993443) (xy -3.622623 9.993443) (xy -3.622623 7.953115)
|
||||||
|
(xy -3.414426 7.953115) (xy -3.289475 7.95754)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy -4.583779 7.969247) (xy -4.387889 8.021514) (xy -4.238767 8.116253) (xy -4.133535 8.240338)
|
||||||
|
(xy -4.100821 8.293296) (xy -4.076669 8.348768) (xy -4.059784 8.41973) (xy -4.048873 8.519154)
|
||||||
|
(xy -4.04264 8.660016) (xy -4.039791 8.855289) (xy -4.039032 9.117948) (xy -4.039016 9.187633)
|
||||||
|
(xy -4.039016 9.993443) (xy -4.238885 9.993443) (xy -4.36637 9.984515) (xy -4.460634 9.961896)
|
||||||
|
(xy -4.484251 9.947946) (xy -4.548815 9.92387) (xy -4.614759 9.947946) (xy -4.723332 9.978003)
|
||||||
|
(xy -4.881042 9.9901) (xy -5.055844 9.984851) (xy -5.215693 9.962869) (xy -5.309016 9.934663)
|
||||||
|
(xy -5.489609 9.818731) (xy -5.60247 9.657847) (xy -5.653209 9.443936) (xy -5.65368 9.438443)
|
||||||
|
(xy -5.649227 9.343547) (xy -5.246557 9.343547) (xy -5.211354 9.451484) (xy -5.154014 9.512229)
|
||||||
|
(xy -5.038913 9.558172) (xy -4.886986 9.576512) (xy -4.732061 9.567485) (xy -4.607964 9.531332)
|
||||||
|
(xy -4.573197 9.508137) (xy -4.512444 9.40096) (xy -4.497049 9.27912) (xy -4.497049 9.119017)
|
||||||
|
(xy -4.727403 9.119017) (xy -4.946241 9.135863) (xy -5.112137 9.183593) (xy -5.215338 9.257986)
|
||||||
|
(xy -5.246557 9.343547) (xy -5.649227 9.343547) (xy -5.642713 9.204731) (xy -5.565631 9.019946)
|
||||||
|
(xy -5.420714 8.880206) (xy -5.400683 8.867495) (xy -5.31461 8.826105) (xy -5.208073 8.801041)
|
||||||
|
(xy -5.059141 8.788858) (xy -4.882213 8.786057) (xy -4.497049 8.785902) (xy -4.497049 8.624443)
|
||||||
|
(xy -4.513387 8.499168) (xy -4.555078 8.415241) (xy -4.559959 8.410773) (xy -4.652736 8.374059)
|
||||||
|
(xy -4.792784 8.359828) (xy -4.947555 8.366821) (xy -5.084499 8.39378) (xy -5.165759 8.434212)
|
||||||
|
(xy -5.20979 8.466601) (xy -5.256285 8.472784) (xy -5.320451 8.446248) (xy -5.417495 8.380479)
|
||||||
|
(xy -5.562626 8.268963) (xy -5.575947 8.258516) (xy -5.569121 8.219862) (xy -5.512178 8.155572)
|
||||||
|
(xy -5.42563 8.084131) (xy -5.329992 8.024021) (xy -5.299944 8.009827) (xy -5.190341 7.981503)
|
||||||
|
(xy -5.029735 7.9613) (xy -4.850302 7.953196) (xy -4.841911 7.95318) (xy -4.583779 7.969247)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy -6.320808 4.865166) (xy -6.233015 4.90854) (xy -6.124751 4.984122) (xy -6.045845 5.066542)
|
||||||
|
(xy -5.991805 5.170037) (xy -5.958141 5.308843) (xy -5.940363 5.497194) (xy -5.93398 5.749328)
|
||||||
|
(xy -5.933607 5.857724) (xy -5.934696 6.095287) (xy -5.939222 6.265068) (xy -5.949068 6.38255)
|
||||||
|
(xy -5.966118 6.463215) (xy -5.992259 6.522545) (xy -6.019458 6.56302) (xy -6.19308 6.735225)
|
||||||
|
(xy -6.397538 6.838806) (xy -6.618104 6.86996) (xy -6.840046 6.824885) (xy -6.91036 6.793009)
|
||||||
|
(xy -7.078689 6.705271) (xy -7.078689 8.080172) (xy -6.955838 8.016643) (xy -6.793967 7.967491)
|
||||||
|
(xy -6.595005 7.9549) (xy -6.396328 7.978147) (xy -6.24629 8.03037) (xy -6.121841 8.129826)
|
||||||
|
(xy -6.015508 8.272143) (xy -6.007513 8.286755) (xy -5.973793 8.355582) (xy -5.949166 8.424956)
|
||||||
|
(xy -5.932214 8.508996) (xy -5.921519 8.621816) (xy -5.915662 8.777533) (xy -5.913227 8.990265)
|
||||||
|
(xy -5.912787 9.229664) (xy -5.912787 9.993443) (xy -6.37082 9.993443) (xy -6.37082 8.585108)
|
||||||
|
(xy -6.498933 8.477308) (xy -6.632018 8.391079) (xy -6.758048 8.375401) (xy -6.884778 8.415747)
|
||||||
|
(xy -6.952317 8.455254) (xy -7.002586 8.511527) (xy -7.038338 8.596572) (xy -7.062328 8.722394)
|
||||||
|
(xy -7.077311 8.900998) (xy -7.08604 9.144391) (xy -7.089114 9.306394) (xy -7.099508 9.972623)
|
||||||
|
(xy -7.318115 9.985209) (xy -7.536721 9.997795) (xy -7.536721 5.863464) (xy -7.078689 5.863464)
|
||||||
|
(xy -7.067011 6.093953) (xy -7.027662 6.25395) (xy -6.954166 6.353497) (xy -6.840049 6.402639)
|
||||||
|
(xy -6.724754 6.412459) (xy -6.594238 6.401175) (xy -6.507617 6.356764) (xy -6.453451 6.298081)
|
||||||
|
(xy -6.41081 6.234962) (xy -6.385426 6.164645) (xy -6.374131 6.066123) (xy -6.37376 5.918387)
|
||||||
|
(xy -6.37756 5.794683) (xy -6.386288 5.608328) (xy -6.39928 5.485982) (xy -6.421159 5.408377)
|
||||||
|
(xy -6.456546 5.356245) (xy -6.489941 5.326111) (xy -6.629475 5.260399) (xy -6.794619 5.249787)
|
||||||
|
(xy -6.889446 5.272423) (xy -6.983334 5.352881) (xy -7.045526 5.509392) (xy -7.075669 5.740852)
|
||||||
|
(xy -7.078689 5.863464) (xy -7.536721 5.863464) (xy -7.536721 4.830164) (xy -7.307705 4.830164)
|
||||||
|
(xy -7.170206 4.835602) (xy -7.099267 4.854909) (xy -7.078697 4.892576) (xy -7.078689 4.893692)
|
||||||
|
(xy -7.069145 4.930581) (xy -7.027051 4.926393) (xy -6.943361 4.885859) (xy -6.748354 4.82385)
|
||||||
|
(xy -6.528954 4.817332) (xy -6.320808 4.865166)) (layer F.SilkS) (width 0.01))
|
||||||
|
)
|
@ -0,0 +1,41 @@
|
|||||||
|
(module Pin_Headers:Pin_Header_Straight_1x08_Pitch2.54mm (layer F.Cu) (tedit 5AB15CDB)
|
||||||
|
(descr "Through hole straight pin header, 1x08, 2.54mm pitch, single row")
|
||||||
|
(tags "Through hole pin header THT 1x08 2.54mm single row")
|
||||||
|
(fp_text reference J3 (at 0 -2.33) (layer F.SilkS) hide
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(fp_text value Breakout (at 0 20.11) (layer F.Fab)
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(fp_text user %R (at 0 8.89 90) (layer F.Fab)
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(fp_line (start 1.8 -1.8) (end -1.8 -1.8) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start 1.8 19.55) (end 1.8 -1.8) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start -1.8 19.55) (end 1.8 19.55) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start -1.8 -1.8) (end -1.8 19.55) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start -1.33 -1.33) (end 0 -1.33) (layer F.SilkS) (width 0.12))
|
||||||
|
(fp_line (start -1.33 0) (end -1.33 -1.33) (layer F.SilkS) (width 0.12))
|
||||||
|
(fp_line (start -1.33 1.27) (end 1.33 1.27) (layer F.SilkS) (width 0.12))
|
||||||
|
(fp_line (start 1.33 1.27) (end 1.33 19.11) (layer F.SilkS) (width 0.12))
|
||||||
|
(fp_line (start -1.33 1.27) (end -1.33 19.11) (layer F.SilkS) (width 0.12))
|
||||||
|
(fp_line (start -1.33 19.11) (end 1.33 19.11) (layer F.SilkS) (width 0.12))
|
||||||
|
(fp_line (start -1.27 -0.635) (end -0.635 -1.27) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start -1.27 19.05) (end -1.27 -0.635) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start 1.27 19.05) (end -1.27 19.05) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start 1.27 -1.27) (end 1.27 19.05) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start -0.635 -1.27) (end 1.27 -1.27) (layer F.Fab) (width 0.1))
|
||||||
|
(pad 8 thru_hole oval (at 0 17.78) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||||
|
(pad 7 thru_hole oval (at 0 15.24) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||||
|
(pad 6 thru_hole oval (at 0 12.7) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||||
|
(pad 5 thru_hole oval (at 0 10.16) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||||
|
(pad 4 thru_hole oval (at 0 7.62) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||||
|
(pad 3 thru_hole oval (at 0 5.08) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||||
|
(pad 2 thru_hole oval (at 0 2.54) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||||
|
(pad 1 thru_hole rect (at 0 0) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||||
|
(model ${KISYS3DMOD}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x08_P2.54mm_Vertical.wrl
|
||||||
|
(at (xyz 0 0 0))
|
||||||
|
(scale (xyz 1 1 1))
|
||||||
|
(rotate (xyz 0 0 0))
|
||||||
|
)
|
||||||
|
)
|
@ -0,0 +1,36 @@
|
|||||||
|
(module Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal (layer F.Cu) (tedit 5C3015E3)
|
||||||
|
(descr "Resistor, Axial_DIN0207 series, Axial, Horizontal, pin pitch=10.16mm, 0.25W = 1/4W, length*diameter=6.3*2.5mm^2, http://cdn-reichelt.de/documents/datenblatt/B400/1_4W%23YAG.pdf")
|
||||||
|
(tags "Resistor Axial_DIN0207 series Axial Horizontal pin pitch 10.16mm 0.25W = 1/4W length 6.3mm diameter 2.5mm")
|
||||||
|
(fp_text reference R1 (at 5.08 -2.37) (layer F.SilkS) hide
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(fp_text value 1k (at 5.08 2.37) (layer F.Fab)
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(fp_line (start 1.93 -1.25) (end 1.93 1.25) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start 1.93 1.25) (end 8.23 1.25) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start 8.23 1.25) (end 8.23 -1.25) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start 8.23 -1.25) (end 1.93 -1.25) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start 0 0) (end 1.93 0) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start 10.16 0) (end 8.23 0) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start 1.81 -1.37) (end 1.81 1.37) (layer F.SilkS) (width 0.12))
|
||||||
|
(fp_line (start 1.81 1.37) (end 8.35 1.37) (layer F.SilkS) (width 0.12))
|
||||||
|
(fp_line (start 8.35 1.37) (end 8.35 -1.37) (layer F.SilkS) (width 0.12))
|
||||||
|
(fp_line (start 8.35 -1.37) (end 1.81 -1.37) (layer F.SilkS) (width 0.12))
|
||||||
|
(fp_line (start 1.04 0) (end 1.81 0) (layer F.SilkS) (width 0.12))
|
||||||
|
(fp_line (start 9.12 0) (end 8.35 0) (layer F.SilkS) (width 0.12))
|
||||||
|
(fp_line (start -1.05 -1.5) (end -1.05 1.5) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start -1.05 1.5) (end 11.21 1.5) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start 11.21 1.5) (end 11.21 -1.5) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start 11.21 -1.5) (end -1.05 -1.5) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_text user %R (at 5.08 0) (layer F.Fab)
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(pad 1 thru_hole circle (at 0 0) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
|
||||||
|
(pad 2 thru_hole oval (at 10.16 0) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
|
||||||
|
(model ${KISYS3DMOD}/Resistor_THT.3dshapes/R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal.wrl
|
||||||
|
(at (xyz 0 0 0))
|
||||||
|
(scale (xyz 1 1 1))
|
||||||
|
(rotate (xyz 0 0 0))
|
||||||
|
)
|
||||||
|
)
|
31
PCB/HASwitchPlate.pretty/TO-92L_HandSolder.kicad_mod
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
(module Package_TO_SOT_THT:TO-92L_HandSolder (layer F.Cu) (tedit 5C39FB0E)
|
||||||
|
(descr "TO-92L leads in-line (large body variant of TO-92), also known as TO-226, wide, drill 0.75mm, hand-soldering variant with enlarged pads (see https://www.diodes.com/assets/Package-Files/TO92L.pdf and http://www.ti.com/lit/an/snoa059/snoa059.pdf)")
|
||||||
|
(tags "to-92 sc-43 sc-43a sot54 PA33 transistor")
|
||||||
|
(fp_text reference Q1 (at 1.27 -3.8) (layer F.SilkS) hide
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(fp_text value S8050 (at 1.27 2.79) (layer F.Fab)
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(fp_text user %R (at 1.27 0) (layer F.Fab)
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(fp_line (start -0.53 1.85) (end 3.07 1.85) (layer F.SilkS) (width 0.12))
|
||||||
|
(fp_line (start -0.5 1.75) (end 3 1.75) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start -1.46 -3.05) (end 4 -3.05) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start -1.45 -3.05) (end -1.46 2.01) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start 4 2.01) (end 4 -3.05) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start 4 2.01) (end -1.46 2.01) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_arc (start 1.27 0) (end 1.27 -2.48) (angle 135) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_arc (start 1.27 0) (end 0.45 -2.45) (angle -116.9763941) (layer F.SilkS) (width 0.12))
|
||||||
|
(fp_arc (start 1.27 0) (end 1.27 -2.48) (angle -135) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_arc (start 1.27 0) (end 2.05 -2.45) (angle 117.6433766) (layer F.SilkS) (width 0.12))
|
||||||
|
(pad 2 thru_hole roundrect (at 1.27 -1.27) (size 1.1 1.8) (drill 0.75 (offset 0 -0.4)) (layers *.Cu *.Mask) (roundrect_rratio 0.25))
|
||||||
|
(pad 3 thru_hole roundrect (at 2.54 0) (size 1.1 1.8) (drill 0.75 (offset 0 0.4)) (layers *.Cu *.Mask) (roundrect_rratio 0.25))
|
||||||
|
(pad 1 thru_hole rect (at 0 0) (size 1.1 1.8) (drill 0.75 (offset 0 0.4)) (layers *.Cu *.Mask))
|
||||||
|
(model ${KISYS3DMOD}/Package_TO_SOT_THT.3dshapes/TO-92L.wrl
|
||||||
|
(at (xyz 0 0 0))
|
||||||
|
(scale (xyz 1 1 1))
|
||||||
|
(rotate (xyz 0 0 0))
|
||||||
|
)
|
||||||
|
)
|
@ -0,0 +1,34 @@
|
|||||||
|
(module Connectors_Terminal_Blocks:TerminalBlock_bornier-2_P5.08mm (layer F.Cu) (tedit 59FF03AB)
|
||||||
|
(descr "simple 2-pin terminal block, pitch 5.08mm, revamped version of bornier2")
|
||||||
|
(tags "terminal block bornier2")
|
||||||
|
(fp_text reference J1 (at 2.54 -5.08) (layer F.SilkS)
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(fp_text value "Screw Term." (at 2.54 5.08) (layer F.Fab)
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(fp_line (start 7.79 4) (end -2.71 4) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start 7.79 4) (end 7.79 -4) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start -2.71 -4) (end -2.71 4) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start -2.71 -4) (end 7.79 -4) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start -2.54 3.81) (end 7.62 3.81) (layer F.SilkS) (width 0.12))
|
||||||
|
(fp_line (start -2.54 -3.81) (end -2.54 3.81) (layer F.SilkS) (width 0.12))
|
||||||
|
(fp_line (start 7.62 -3.81) (end -2.54 -3.81) (layer F.SilkS) (width 0.12))
|
||||||
|
(fp_line (start 7.62 3.81) (end 7.62 -3.81) (layer F.SilkS) (width 0.12))
|
||||||
|
(fp_line (start 7.62 2.54) (end -2.54 2.54) (layer F.SilkS) (width 0.12))
|
||||||
|
(fp_line (start 7.54 -3.75) (end -2.46 -3.75) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start 7.54 3.75) (end 7.54 -3.75) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start -2.46 3.75) (end 7.54 3.75) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start -2.46 -3.75) (end -2.46 3.75) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start -2.41 2.55) (end 7.49 2.55) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_text user %R (at 2.54 0) (layer F.Fab)
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(pad 2 thru_hole circle (at 5.08 0) (size 3 3) (drill 1.52) (layers *.Cu *.Mask))
|
||||||
|
(pad 1 thru_hole rect (at 0 0) (size 3 3) (drill 1.52) (layers *.Cu *.Mask))
|
||||||
|
(model Connectors_Phoenix.3dshapes/PhoenixContact_MCV-G_02x5.08mm_Vertical.wrl
|
||||||
|
(at (xyz 0 0 0))
|
||||||
|
(scale (xyz 1 1 1))
|
||||||
|
(rotate (xyz 0 0 0))
|
||||||
|
)
|
||||||
|
)
|
144
PCB/HASwitchPlate.pretty/WeMos_logo_18mm.kicad_mod
Normal file
@ -0,0 +1,144 @@
|
|||||||
|
(module HASwitchPlate:WeMos_logo_18mm (layer F.Cu) (tedit 0)
|
||||||
|
(fp_text reference G*** (at 0 0) (layer F.SilkS) hide
|
||||||
|
(effects (font (size 1.524 1.524) (thickness 0.3)))
|
||||||
|
)
|
||||||
|
(fp_text value LOGO (at 0.75 0) (layer F.SilkS) hide
|
||||||
|
(effects (font (size 1.524 1.524) (thickness 0.3)))
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 6.475156 -2.630428) (xy 6.743521 -2.579028) (xy 7.150167 -2.447789) (xy 7.553407 -2.264679)
|
||||||
|
(xy 7.932686 -2.040704) (xy 8.267446 -1.786873) (xy 8.333734 -1.727509) (xy 8.518847 -1.556197)
|
||||||
|
(xy 8.303696 -1.344388) (xy 8.088546 -1.13258) (xy 7.952248 -1.272839) (xy 7.681976 -1.501699)
|
||||||
|
(xy 7.357781 -1.690745) (xy 6.986775 -1.8375) (xy 6.576067 -1.939489) (xy 6.132768 -1.994237)
|
||||||
|
(xy 5.853864 -2.00338) (xy 5.375958 -1.970551) (xy 4.923502 -1.871353) (xy 4.493344 -1.704718)
|
||||||
|
(xy 4.082335 -1.46958) (xy 3.906021 -1.343592) (xy 3.791007 -1.25688) (xy 3.700212 -1.189659)
|
||||||
|
(xy 3.646591 -1.15146) (xy 3.637712 -1.146228) (xy 3.612887 -1.171825) (xy 3.552594 -1.238681)
|
||||||
|
(xy 3.468288 -1.334041) (xy 3.438116 -1.368484) (xy 3.245106 -1.5893) (xy 3.438116 -1.762151)
|
||||||
|
(xy 3.665663 -1.943237) (xy 3.93446 -2.121332) (xy 4.215718 -2.278831) (xy 4.474291 -2.395694)
|
||||||
|
(xy 4.85329 -2.516706) (xy 5.260938 -2.602145) (xy 5.679173 -2.650551) (xy 6.089932 -2.660465)
|
||||||
|
(xy 6.475156 -2.630428)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 6.406377 -1.584776) (xy 6.797311 -1.476269) (xy 6.929234 -1.425514) (xy 7.101454 -1.34299)
|
||||||
|
(xy 7.290551 -1.234632) (xy 7.475873 -1.113896) (xy 7.636767 -0.994243) (xy 7.752583 -0.88913)
|
||||||
|
(xy 7.752948 -0.888734) (xy 7.832235 -0.802886) (xy 7.60029 -0.595428) (xy 7.493357 -0.503551)
|
||||||
|
(xy 7.405934 -0.43542) (xy 7.351662 -0.401377) (xy 7.342125 -0.399689) (xy 7.301114 -0.422499)
|
||||||
|
(xy 7.215246 -0.472784) (xy 7.100859 -0.540947) (xy 7.064301 -0.562919) (xy 6.696163 -0.750092)
|
||||||
|
(xy 6.323924 -0.873289) (xy 5.953759 -0.932665) (xy 5.591843 -0.928373) (xy 5.24435 -0.860567)
|
||||||
|
(xy 4.917456 -0.729401) (xy 4.617335 -0.535027) (xy 4.575709 -0.501019) (xy 4.411277 -0.362758)
|
||||||
|
(xy 4.169047 -0.606858) (xy 3.926818 -0.850957) (xy 4.136719 -1.016294) (xy 4.361179 -1.172619)
|
||||||
|
(xy 4.622921 -1.32224) (xy 4.896088 -1.452127) (xy 5.154826 -1.549247) (xy 5.245862 -1.575331)
|
||||||
|
(xy 5.614322 -1.635761) (xy 6.006604 -1.638425) (xy 6.406377 -1.584776)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 6.001073 -0.56031) (xy 6.313258 -0.501647) (xy 6.608601 -0.394222) (xy 6.868763 -0.241954)
|
||||||
|
(xy 6.938878 -0.186703) (xy 7.062686 -0.081735) (xy 6.835 0.129062) (xy 6.730268 0.223673)
|
||||||
|
(xy 6.645605 0.295774) (xy 6.594265 0.334259) (xy 6.585981 0.337748) (xy 6.545276 0.322031)
|
||||||
|
(xy 6.459364 0.282923) (xy 6.35 0.230424) (xy 6.228966 0.176032) (xy 6.122764 0.144181)
|
||||||
|
(xy 6.003183 0.129151) (xy 5.842012 0.12522) (xy 5.831268 0.125212) (xy 5.672531 0.128018)
|
||||||
|
(xy 5.558899 0.140293) (xy 5.464021 0.16782) (xy 5.361548 0.216381) (xy 5.324407 0.236452)
|
||||||
|
(xy 5.121631 0.347693) (xy 4.90146 0.125548) (xy 4.68129 -0.096597) (xy 4.794347 -0.191728)
|
||||||
|
(xy 5.06138 -0.373882) (xy 5.359604 -0.503419) (xy 5.399521 -0.515675) (xy 5.690381 -0.566292)
|
||||||
|
(xy 6.001073 -0.56031)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 6.087685 0.840444) (xy 6.306594 0.923017) (xy 6.480938 1.056598) (xy 6.605603 1.236388)
|
||||||
|
(xy 6.675471 1.457587) (xy 6.689074 1.620228) (xy 6.659776 1.852792) (xy 6.570383 2.047357)
|
||||||
|
(xy 6.423493 2.201084) (xy 6.225779 2.311521) (xy 5.994569 2.376592) (xy 5.754176 2.392485)
|
||||||
|
(xy 5.528912 2.355388) (xy 5.50028 2.34586) (xy 5.281786 2.235676) (xy 5.119955 2.082596)
|
||||||
|
(xy 5.016674 1.889253) (xy 4.973829 1.658279) (xy 4.972676 1.609859) (xy 5.003573 1.36901)
|
||||||
|
(xy 5.093104 1.165777) (xy 5.23653 1.004567) (xy 5.42911 0.889784) (xy 5.666106 0.825834)
|
||||||
|
(xy 5.829329 0.813679) (xy 6.087685 0.840444)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 4.185634 1.229263) (xy 4.185385 1.587171) (xy 4.184465 1.880042) (xy 4.182618 2.114391)
|
||||||
|
(xy 4.179585 2.296728) (xy 4.175111 2.433566) (xy 4.168936 2.531418) (xy 4.160805 2.596796)
|
||||||
|
(xy 4.15046 2.636211) (xy 4.137643 2.656177) (xy 4.129046 2.661384) (xy 4.067739 2.671711)
|
||||||
|
(xy 3.95671 2.679376) (xy 3.817774 2.682986) (xy 3.788492 2.683099) (xy 3.504526 2.683099)
|
||||||
|
(xy 3.528053 1.726127) (xy 3.533231 1.474635) (xy 3.535925 1.249848) (xy 3.536185 1.060675)
|
||||||
|
(xy 3.534064 0.916025) (xy 3.529614 0.824808) (xy 3.522885 0.795933) (xy 3.522652 0.79612)
|
||||||
|
(xy 3.501069 0.834736) (xy 3.454694 0.930162) (xy 3.387542 1.073715) (xy 3.303625 1.256711)
|
||||||
|
(xy 3.206959 1.470467) (xy 3.101557 1.706299) (xy 3.092689 1.726261) (xy 2.691655 2.629437)
|
||||||
|
(xy 2.428011 2.638939) (xy 2.164366 2.648442) (xy 1.755858 1.716118) (xy 1.649569 1.475215)
|
||||||
|
(xy 1.5515 1.256132) (xy 1.465554 1.067336) (xy 1.395635 0.917294) (xy 1.345643 0.81447)
|
||||||
|
(xy 1.319482 0.76733) (xy 1.317618 0.76542) (xy 1.309745 0.794637) (xy 1.302655 0.886353)
|
||||||
|
(xy 1.296635 1.03152) (xy 1.291976 1.221087) (xy 1.288963 1.446008) (xy 1.287887 1.697233)
|
||||||
|
(xy 1.287887 2.650218) (xy 0.992747 2.639827) (xy 0.697606 2.629437) (xy 0.688821 2.128592)
|
||||||
|
(xy 0.687424 1.943906) (xy 0.688406 1.70594) (xy 0.691535 1.432916) (xy 0.696577 1.143056)
|
||||||
|
(xy 0.703297 0.854581) (xy 0.706709 0.733381) (xy 0.73338 -0.160986) (xy 1.688621 -0.160986)
|
||||||
|
(xy 2.065297 0.780606) (xy 2.18108 1.066027) (xy 2.280386 1.302574) (xy 2.361457 1.486361)
|
||||||
|
(xy 2.422539 1.613502) (xy 2.461875 1.680111) (xy 2.47553 1.688639) (xy 2.498961 1.648594)
|
||||||
|
(xy 2.548358 1.55229) (xy 2.619513 1.408347) (xy 2.708216 1.225381) (xy 2.810259 1.012009)
|
||||||
|
(xy 2.921433 0.776848) (xy 2.935434 0.747048) (xy 3.36178 -0.160986) (xy 4.185634 -0.181144)
|
||||||
|
(xy 4.185634 1.229263)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy -0.583805 0.582491) (xy -0.323776 0.630475) (xy -0.117037 0.72488) (xy 0.038229 0.867244)
|
||||||
|
(xy 0.143841 1.059106) (xy 0.201615 1.302004) (xy 0.214648 1.521765) (xy 0.214648 1.788733)
|
||||||
|
(xy -0.36669 1.793733) (xy -0.574624 1.794957) (xy -0.76738 1.795057) (xy -0.929134 1.794101)
|
||||||
|
(xy -1.044064 1.792158) (xy -1.082183 1.790657) (xy -1.170007 1.790002) (xy -1.207716 1.812301)
|
||||||
|
(xy -1.216273 1.872298) (xy -1.216338 1.88502) (xy -1.18231 2.025558) (xy -1.086153 2.14437)
|
||||||
|
(xy -1.001295 2.200345) (xy -0.873993 2.238385) (xy -0.701158 2.252157) (xy -0.504391 2.242141)
|
||||||
|
(xy -0.30529 2.208817) (xy -0.208891 2.182715) (xy -0.092834 2.14666) (xy -0.008015 2.120922)
|
||||||
|
(xy 0.026831 2.111166) (xy 0.031738 2.143259) (xy 0.034987 2.226498) (xy 0.035775 2.30664)
|
||||||
|
(xy 0.024859 2.439916) (xy -0.016764 2.530459) (xy -0.102407 2.593937) (xy -0.245386 2.646019)
|
||||||
|
(xy -0.254977 2.648806) (xy -0.371651 2.671343) (xy -0.533101 2.688372) (xy -0.716868 2.699086)
|
||||||
|
(xy -0.900495 2.702675) (xy -1.061524 2.69833) (xy -1.177497 2.685243) (xy -1.189653 2.682467)
|
||||||
|
(xy -1.372024 2.620124) (xy -1.540591 2.53372) (xy -1.675134 2.435209) (xy -1.746087 2.353459)
|
||||||
|
(xy -1.846717 2.133665) (xy -1.908912 1.875946) (xy -1.926854 1.606059) (xy -1.925101 1.561121)
|
||||||
|
(xy -1.89471 1.340106) (xy -1.208892 1.340106) (xy -1.183548 1.371472) (xy -1.111776 1.387921)
|
||||||
|
(xy -0.984826 1.394237) (xy -0.822817 1.395212) (xy -0.650379 1.39431) (xy -0.537162 1.39017)
|
||||||
|
(xy -0.470846 1.380637) (xy -0.439111 1.363557) (xy -0.429638 1.336776) (xy -0.429296 1.326407)
|
||||||
|
(xy -0.459313 1.232768) (xy -0.535369 1.135527) (xy -0.636473 1.056105) (xy -0.732059 1.017465)
|
||||||
|
(xy -0.882611 1.022578) (xy -1.027337 1.084111) (xy -1.139998 1.189912) (xy -1.155304 1.213493)
|
||||||
|
(xy -1.19656 1.289041) (xy -1.208892 1.340106) (xy -1.89471 1.340106) (xy -1.891699 1.318214)
|
||||||
|
(xy -1.815761 1.11797) (xy -1.688648 0.940044) (xy -1.639361 0.888094) (xy -1.472259 0.74574)
|
||||||
|
(xy -1.296301 0.652227) (xy -1.090396 0.598761) (xy -0.898942 0.57939) (xy -0.583805 0.582491)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy 8.28107 0.616561) (xy 8.332717 0.619334) (xy 8.539185 0.631162) (xy 8.68485 0.644143)
|
||||||
|
(xy 8.780312 0.663999) (xy 8.836171 0.69645) (xy 8.863027 0.747218) (xy 8.87148 0.822025)
|
||||||
|
(xy 8.872113 0.910464) (xy 8.868758 1.030474) (xy 8.860029 1.119732) (xy 8.84969 1.155287)
|
||||||
|
(xy 8.805599 1.156709) (xy 8.733385 1.129162) (xy 8.596166 1.078479) (xy 8.443189 1.053659)
|
||||||
|
(xy 8.290041 1.052959) (xy 8.152314 1.074635) (xy 8.045595 1.116944) (xy 7.985475 1.178141)
|
||||||
|
(xy 7.977747 1.213688) (xy 7.990294 1.266262) (xy 8.034248 1.315981) (xy 8.119074 1.368847)
|
||||||
|
(xy 8.254237 1.430864) (xy 8.430894 1.50105) (xy 8.656721 1.597964) (xy 8.819703 1.695816)
|
||||||
|
(xy 8.928102 1.803517) (xy 8.990175 1.929981) (xy 9.014184 2.084119) (xy 9.015211 2.131523)
|
||||||
|
(xy 9.009287 2.233498) (xy 8.98286 2.310263) (xy 8.92295 2.389069) (xy 8.862892 2.451311)
|
||||||
|
(xy 8.68667 2.589204) (xy 8.51409 2.662835) (xy 8.319001 2.706789) (xy 8.098459 2.733057)
|
||||||
|
(xy 7.877871 2.740442) (xy 7.682642 2.727744) (xy 7.577278 2.707011) (xy 7.436975 2.660379)
|
||||||
|
(xy 7.35321 2.606899) (xy 7.311813 2.528797) (xy 7.298612 2.408296) (xy 7.298028 2.356747)
|
||||||
|
(xy 7.300465 2.246183) (xy 7.315928 2.17917) (xy 7.356646 2.150903) (xy 7.434849 2.156579)
|
||||||
|
(xy 7.562765 2.191395) (xy 7.650018 2.21849) (xy 7.843278 2.266489) (xy 8.020367 2.287217)
|
||||||
|
(xy 8.165967 2.280311) (xy 8.264761 2.245409) (xy 8.279276 2.23336) (xy 8.331893 2.160347)
|
||||||
|
(xy 8.332035 2.093553) (xy 8.275528 2.028954) (xy 8.158199 1.962527) (xy 7.975877 1.890248)
|
||||||
|
(xy 7.894581 1.862371) (xy 7.663654 1.772336) (xy 7.49643 1.673233) (xy 7.385066 1.556317)
|
||||||
|
(xy 7.321717 1.412845) (xy 7.298539 1.234072) (xy 7.298028 1.197367) (xy 7.328989 1.038314)
|
||||||
|
(xy 7.423621 0.898349) (xy 7.584548 0.774458) (xy 7.732528 0.69815) (xy 7.836545 0.65361)
|
||||||
|
(xy 7.922414 0.625938) (xy 8.011129 0.612377) (xy 8.123683 0.61017) (xy 8.28107 0.616561)) (layer F.SilkS) (width 0.01))
|
||||||
|
(fp_poly (pts (xy -7.676529 -2.837639) (xy -7.570931 -2.776068) (xy -7.477385 -2.694398) (xy -7.417042 -2.609769)
|
||||||
|
(xy -7.405573 -2.564226) (xy -7.420521 -2.507138) (xy -7.461778 -2.398153) (xy -7.524196 -2.249635)
|
||||||
|
(xy -7.602625 -2.07395) (xy -7.669475 -1.930493) (xy -7.822348 -1.601389) (xy -7.943725 -1.320512)
|
||||||
|
(xy -8.037138 -1.073701) (xy -8.106118 -0.846792) (xy -8.154195 -0.625626) (xy -8.184901 -0.396039)
|
||||||
|
(xy -8.201766 -0.143869) (xy -8.208322 0.145045) (xy -8.208786 0.232536) (xy -8.207325 0.48103)
|
||||||
|
(xy -8.200618 0.674108) (xy -8.187394 0.827792) (xy -8.166377 0.958104) (xy -8.143348 1.055352)
|
||||||
|
(xy -8.042412 1.363382) (xy -7.919107 1.606449) (xy -7.768463 1.788995) (xy -7.585509 1.915458)
|
||||||
|
(xy -7.365277 1.990278) (xy -7.102797 2.017895) (xy -7.065493 2.01825) (xy -6.807833 1.998248)
|
||||||
|
(xy -6.586201 1.9327) (xy -6.375526 1.813294) (xy -6.315951 1.769736) (xy -6.21238 1.673205)
|
||||||
|
(xy -6.113205 1.551513) (xy -6.032147 1.424956) (xy -5.982923 1.313827) (xy -5.974366 1.264431)
|
||||||
|
(xy -5.951226 1.186103) (xy -5.893611 1.093067) (xy -5.872827 1.068051) (xy -5.797129 0.995755)
|
||||||
|
(xy -5.720499 0.963391) (xy -5.608749 0.956874) (xy -5.603108 0.956951) (xy -5.490744 0.967478)
|
||||||
|
(xy -5.403561 0.991065) (xy -5.381852 1.003543) (xy -5.342253 1.053882) (xy -5.281471 1.151042)
|
||||||
|
(xy -5.210052 1.277715) (xy -5.178322 1.33767) (xy -5.020737 1.606995) (xy -4.859063 1.809992)
|
||||||
|
(xy -4.686564 1.951831) (xy -4.496504 2.037685) (xy -4.282147 2.072725) (xy -4.219057 2.074144)
|
||||||
|
(xy -3.957044 2.040557) (xy -3.722695 1.945172) (xy -3.524876 1.793264) (xy -3.372451 1.590107)
|
||||||
|
(xy -3.35702 1.561348) (xy -3.280746 1.363566) (xy -3.224867 1.11313) (xy -3.192402 0.826798)
|
||||||
|
(xy -3.18522 0.608169) (xy -3.211994 0.113435) (xy -3.290181 -0.363926) (xy -3.416731 -0.814986)
|
||||||
|
(xy -3.588593 -1.23082) (xy -3.802716 -1.6025) (xy -4.045933 -1.910277) (xy -4.180902 -2.059344)
|
||||||
|
(xy -4.272263 -2.171792) (xy -4.327991 -2.260588) (xy -4.35606 -2.338697) (xy -4.364444 -2.419086)
|
||||||
|
(xy -4.364507 -2.428295) (xy -4.333662 -2.538899) (xy -4.244642 -2.612664) (xy -4.102721 -2.64582)
|
||||||
|
(xy -4.058089 -2.647324) (xy -3.885042 -2.619726) (xy -3.712286 -2.534955) (xy -3.536464 -2.390047)
|
||||||
|
(xy -3.354216 -2.182038) (xy -3.162186 -1.907962) (xy -3.09016 -1.79279) (xy -2.863149 -1.359833)
|
||||||
|
(xy -2.678842 -0.8817) (xy -2.541266 -0.373408) (xy -2.45445 0.150022) (xy -2.42242 0.673574)
|
||||||
|
(xy -2.42233 0.697606) (xy -2.443037 1.099003) (xy -2.508132 1.450401) (xy -2.620674 1.760209)
|
||||||
|
(xy -2.783723 2.036833) (xy -3.000338 2.288683) (xy -3.001898 2.290228) (xy -3.197586 2.463107)
|
||||||
|
(xy -3.400723 2.595607) (xy -3.632351 2.699079) (xy -3.913517 2.78487) (xy -3.924272 2.78763)
|
||||||
|
(xy -4.12261 2.833204) (xy -4.279371 2.853857) (xy -4.41996 2.849821) (xy -4.569786 2.821324)
|
||||||
|
(xy -4.668591 2.794359) (xy -4.880312 2.722046) (xy -5.07197 2.630299) (xy -5.268557 2.505873)
|
||||||
|
(xy -5.411695 2.400526) (xy -5.643183 2.2231) (xy -5.835605 2.3688) (xy -6.150961 2.57015)
|
||||||
|
(xy -6.481544 2.712297) (xy -6.819224 2.795282) (xy -7.155868 2.819144) (xy -7.483345 2.783923)
|
||||||
|
(xy -7.793524 2.689658) (xy -8.078271 2.536391) (xy -8.297301 2.356745) (xy -8.498729 2.13641)
|
||||||
|
(xy -8.654417 1.911201) (xy -8.772378 1.664559) (xy -8.860628 1.379927) (xy -8.92373 1.062449)
|
||||||
|
(xy -8.971964 0.58148) (xy -8.969892 0.071552) (xy -8.919322 -0.447268) (xy -8.822061 -0.954914)
|
||||||
|
(xy -8.705855 -1.357268) (xy -8.638825 -1.544822) (xy -8.559391 -1.751667) (xy -8.472953 -1.965312)
|
||||||
|
(xy -8.38491 -2.173267) (xy -8.300661 -2.363043) (xy -8.225607 -2.522148) (xy -8.165147 -2.638094)
|
||||||
|
(xy -8.127238 -2.695705) (xy -8.003252 -2.792973) (xy -7.855253 -2.851881) (xy -7.773026 -2.861971)
|
||||||
|
(xy -7.676529 -2.837639)) (layer F.SilkS) (width 0.01))
|
||||||
|
)
|
@ -0,0 +1,61 @@
|
|||||||
|
(module HASwitchPlate:wemos-d1-mini-with-pin-header-and-connector (layer F.Cu) (tedit 5AC65BB6)
|
||||||
|
(fp_text reference U2 (at -19.3 0 90) (layer F.SilkS) hide
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(fp_text value WeMos_mini (at 0 0) (layer F.Fab)
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(fp_arc (start -12.48 -12.33) (end -11.48 -12.33) (angle 90) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start -18.46 -11.33) (end -12.48 -11.33) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start -11.48 -13.5) (end -11.48 -12.33) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start -11.3 -12.17) (end -11.3 -13.33) (layer Eco1.User) (width 0.15))
|
||||||
|
(fp_arc (start -12.3 -12.18) (end -11.3 -12.18) (angle 90) (layer Eco1.User) (width 0.15))
|
||||||
|
(fp_line (start -18.3 -11.18) (end -12.3 -11.18) (layer Eco1.User) (width 0.15))
|
||||||
|
(fp_arc (start 14.94 -11.5) (end 14.85 -13.5) (angle 92.57657183) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_arc (start 14.94 11.5) (end 16.94 11.5) (angle 90) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_arc (start 14.78 11.33) (end 16.78 11.33) (angle 90) (layer Eco1.User) (width 0.15))
|
||||||
|
(fp_arc (start 14.78 -11.33) (end 14.78 -13.33) (angle 90) (layer Eco1.User) (width 0.15))
|
||||||
|
(fp_line (start -18.46 13.5) (end -18.46 -11.33) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start 14.94 13.5) (end -18.46 13.5) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start 16.94 -11.5) (end 16.94 11.5) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start -11.48 -13.5) (end 14.85 -13.5) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start -18.3 4.9) (end -18.3 13.329999) (layer Eco1.User) (width 0.15))
|
||||||
|
(fp_line (start -17.3 4.9) (end -18.3 4.9) (layer Eco1.User) (width 0.15))
|
||||||
|
(fp_line (start -17.3 -3.32) (end -17.3 4.9) (layer Eco1.User) (width 0.15))
|
||||||
|
(fp_line (start -18.3 -3.32) (end -17.3 -3.32) (layer Eco1.User) (width 0.15))
|
||||||
|
(fp_line (start -18.3 -11.18) (end -18.3 -3.32) (layer Eco1.User) (width 0.15))
|
||||||
|
(fp_line (start 14.78 -13.33) (end -11.3 -13.33) (layer Eco1.User) (width 0.15))
|
||||||
|
(fp_line (start 16.78 11.33) (end 16.78 -11.33) (layer Eco1.User) (width 0.15))
|
||||||
|
(fp_line (start -18.3 13.33) (end 14.78 13.33) (layer Eco1.User) (width 0.15))
|
||||||
|
(pad 8 thru_hole circle (at 8.89 11.43) (size 1.8 1.8) (drill 1.016) (layers *.Cu *.Mask))
|
||||||
|
(pad 9 thru_hole circle (at 8.89 -11.43) (size 1.8 1.8) (drill 1.016) (layers *.Cu *.Mask))
|
||||||
|
(pad 7 thru_hole circle (at 6.35 11.43) (size 1.8 1.8) (drill 1.016) (layers *.Cu *.Mask))
|
||||||
|
(pad 10 thru_hole circle (at 6.35 -11.43) (size 1.8 1.8) (drill 1.016) (layers *.Cu *.Mask))
|
||||||
|
(pad 6 thru_hole circle (at 3.81 11.43) (size 1.8 1.8) (drill 1.016) (layers *.Cu *.Mask))
|
||||||
|
(pad 11 thru_hole circle (at 3.81 -11.43) (size 1.8 1.8) (drill 1.016) (layers *.Cu *.Mask))
|
||||||
|
(pad 5 thru_hole circle (at 1.27 11.43) (size 1.8 1.8) (drill 1.016) (layers *.Cu *.Mask))
|
||||||
|
(pad 12 thru_hole circle (at 1.27 -11.43) (size 1.8 1.8) (drill 1.016) (layers *.Cu *.Mask))
|
||||||
|
(pad 4 thru_hole circle (at -1.27 11.43) (size 1.8 1.8) (drill 1.016) (layers *.Cu *.Mask))
|
||||||
|
(pad 13 thru_hole circle (at -1.27 -11.43) (size 1.8 1.8) (drill 1.016) (layers *.Cu *.Mask))
|
||||||
|
(pad 3 thru_hole circle (at -3.81 11.43) (size 1.8 1.8) (drill 1.016) (layers *.Cu *.Mask))
|
||||||
|
(pad 14 thru_hole circle (at -3.81 -11.43) (size 1.8 1.8) (drill 1.016) (layers *.Cu *.Mask))
|
||||||
|
(pad 2 thru_hole circle (at -6.35 11.43) (size 1.8 1.8) (drill 1.016) (layers *.Cu *.Mask))
|
||||||
|
(pad 15 thru_hole circle (at -6.35 -11.43) (size 1.8 1.8) (drill 1.016) (layers *.Cu *.Mask))
|
||||||
|
(pad 1 thru_hole circle (at -8.89 11.43) (size 1.8 1.8) (drill 1.016) (layers *.Cu *.Mask))
|
||||||
|
(pad 16 thru_hole circle (at -8.89 -11.43) (size 1.8 1.8) (drill 1.016) (layers *.Cu *.Mask))
|
||||||
|
(model ${KIPRJMOD}/3dshapes/wemos_d1_mini.3dshapes/d1_mini_shield.wrl
|
||||||
|
(offset (xyz -17.9 -12.8 3.5))
|
||||||
|
(scale (xyz 0.3937 0.3937 0.3937))
|
||||||
|
(rotate (xyz 0 180 90))
|
||||||
|
)
|
||||||
|
(model ${KIPRJMOD}/3dshapes/wemos_d1_mini.3dshapes/TSW-108-05-G-S.wrl
|
||||||
|
(offset (xyz 0 -11.4 2.5))
|
||||||
|
(scale (xyz 0.3937 0.3937 0.3937))
|
||||||
|
(rotate (xyz 90 0 0))
|
||||||
|
)
|
||||||
|
(model ${KIPRJMOD}/3dshapes/wemos_d1_mini.3dshapes/TSW-108-05-G-S.wrl
|
||||||
|
(offset (xyz 0 11.4 2.5))
|
||||||
|
(scale (xyz 0.3937 0.3937 0.3937))
|
||||||
|
(rotate (xyz 90 0 0))
|
||||||
|
)
|
||||||
|
)
|
40
PCB/HASwitchPlate.pro
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
update=12/3/2018 11:52:06 AM
|
||||||
|
version=1
|
||||||
|
last_client=kicad
|
||||||
|
[pcbnew]
|
||||||
|
version=1
|
||||||
|
LastNetListRead=
|
||||||
|
UseCmpFile=1
|
||||||
|
PadDrill=0.600000000000
|
||||||
|
PadDrillOvalY=0.600000000000
|
||||||
|
PadSizeH=1.500000000000
|
||||||
|
PadSizeV=1.500000000000
|
||||||
|
PcbTextSizeV=1.500000000000
|
||||||
|
PcbTextSizeH=1.500000000000
|
||||||
|
PcbTextThickness=0.300000000000
|
||||||
|
ModuleTextSizeV=1.000000000000
|
||||||
|
ModuleTextSizeH=1.000000000000
|
||||||
|
ModuleTextSizeThickness=0.150000000000
|
||||||
|
SolderMaskClearance=0.000000000000
|
||||||
|
SolderMaskMinWidth=0.000000000000
|
||||||
|
DrawSegmentWidth=0.200000000000
|
||||||
|
BoardOutlineThickness=0.100000000000
|
||||||
|
ModuleOutlineThickness=0.150000000000
|
||||||
|
[cvpcb]
|
||||||
|
version=1
|
||||||
|
NetIExt=net
|
||||||
|
[general]
|
||||||
|
version=1
|
||||||
|
[schematic_editor]
|
||||||
|
version=1
|
||||||
|
PageLayoutDescrFile=
|
||||||
|
PlotDirectoryName=./
|
||||||
|
SubpartIdSeparator=0
|
||||||
|
SubpartFirstId=65
|
||||||
|
NetFmtName=Pcbnew
|
||||||
|
SpiceForceRefPrefix=0
|
||||||
|
SpiceUseNetNumbers=0
|
||||||
|
LabSize=60
|
||||||
|
[eeschema]
|
||||||
|
version=1
|
||||||
|
LibDir=
|
299
PCB/HASwitchPlate.sch
Normal file
@ -0,0 +1,299 @@
|
|||||||
|
EESchema Schematic File Version 4
|
||||||
|
LIBS:HASwitchPlate-cache
|
||||||
|
EELAYER 26 0
|
||||||
|
EELAYER END
|
||||||
|
$Descr A4 11693 8268
|
||||||
|
encoding utf-8
|
||||||
|
Sheet 1 1
|
||||||
|
Title "HA SwitchPlate"
|
||||||
|
Date ""
|
||||||
|
Rev ""
|
||||||
|
Comp "https://github.com/aderusha/HASwitchPlate"
|
||||||
|
Comment1 "allen@derusha.org"
|
||||||
|
Comment2 ""
|
||||||
|
Comment3 ""
|
||||||
|
Comment4 ""
|
||||||
|
$EndDescr
|
||||||
|
$Comp
|
||||||
|
L HASwitchPlate-library:WeMos_mini-HASwitchPlate U2
|
||||||
|
U 1 1 59E27669
|
||||||
|
P 5850 3800
|
||||||
|
F 0 "U2" H 5850 4300 60 0000 C CNN
|
||||||
|
F 1 "WeMos_mini" H 5850 3300 60 0000 C CNN
|
||||||
|
F 2 "wemos-d1-mini:wemos-d1-mini-with-pin-header-and-connector" H 6400 3100 60 0001 C CNN
|
||||||
|
F 3 "" H 6400 3100 60 0000 C CNN
|
||||||
|
1 5850 3800
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L HASwitchPlate-library:Screw_Terminal_01x02-HASwitchPlate-library J1
|
||||||
|
U 1 1 59E27A1F
|
||||||
|
P 3600 3450
|
||||||
|
F 0 "J1" H 3600 3550 50 0000 C CNN
|
||||||
|
F 1 "Screw Term." H 3600 3250 50 0001 C CNN
|
||||||
|
F 2 "Connectors_Terminal_Blocks:TerminalBlock_bornier-2_P5.08mm" H 3600 3450 50 0001 C CNN
|
||||||
|
F 3 "" H 3600 3450 50 0001 C CNN
|
||||||
|
1 3600 3450
|
||||||
|
-1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L HASwitchPlate-library:XH2.54-4P-HASwitchPlate-library J2
|
||||||
|
U 1 1 59E297BA
|
||||||
|
P 7150 3650
|
||||||
|
F 0 "J2" H 7150 3250 50 0000 C CNN
|
||||||
|
F 1 "XH2.54-4P" H 7150 3350 50 0000 C CNN
|
||||||
|
F 2 "HASwitchPlate:JST_XH2.54_04x2.54mm_Straight" H 7150 3650 50 0001 C CNN
|
||||||
|
F 3 "" H 7150 3650 50 0001 C CNN
|
||||||
|
1 7150 3650
|
||||||
|
-1 0 0 1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L HASwitchPlate-library:IRM-03-5-HASwitchPlate-library U1
|
||||||
|
U 1 1 59E37A8B
|
||||||
|
P 4150 3550
|
||||||
|
F 0 "U1" H 4550 3800 50 0000 C CNN
|
||||||
|
F 1 "IRM-03-5" H 4550 3400 50 0000 C CNN
|
||||||
|
F 2 "HASwitchPlate:ACDC-Converter_MeanWell-IRM-03-x" H 4550 3300 50 0001 C CNN
|
||||||
|
F 3 "https://www.meanwell.com/Upload/PDF/IRM-03/IRM-03-SPEC.PDF" H 4550 3200 50 0001 C CNN
|
||||||
|
1 4150 3550
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L HASwitchPlate-library:Conn_01x08-conn-HASwitchPlate J3
|
||||||
|
U 1 1 5AB13587
|
||||||
|
P 5750 2350
|
||||||
|
F 0 "J3" H 5750 2775 50 0000 C CNN
|
||||||
|
F 1 "Breakout" V 5750 1700 50 0000 C CNN
|
||||||
|
F 2 "Pin_Headers:Pin_Header_Straight_1x08_Pitch2.54mm" H 5750 2350 50 0001 C CNN
|
||||||
|
F 3 "" H 5750 2350 50 0001 C CNN
|
||||||
|
1 5750 2350
|
||||||
|
0 -1 -1 0
|
||||||
|
$EndComp
|
||||||
|
Text Notes 5475 2275 1 60 ~ 0
|
||||||
|
GND
|
||||||
|
Text Notes 5575 2300 1 60 ~ 0
|
||||||
|
+5V
|
||||||
|
Text Notes 5675 2300 1 60 ~ 0
|
||||||
|
+3.3V
|
||||||
|
Text Notes 5775 2275 1 60 ~ 0
|
||||||
|
A0
|
||||||
|
Text Notes 5875 2275 1 60 ~ 0
|
||||||
|
D0
|
||||||
|
Text Notes 5975 2275 1 60 ~ 0
|
||||||
|
D1
|
||||||
|
Text Notes 6075 2275 1 60 ~ 0
|
||||||
|
D2
|
||||||
|
Text Notes 6175 2275 1 60 ~ 0
|
||||||
|
DBG
|
||||||
|
Text Label 6650 4500 0 60 ~ 0
|
||||||
|
GND
|
||||||
|
Text Label 6950 3650 2 60 ~ 0
|
||||||
|
LCD_RX
|
||||||
|
Text Label 6925 3550 2 60 ~ 0
|
||||||
|
LCD_TX
|
||||||
|
Text Label 6850 3450 2 60 ~ 0
|
||||||
|
+5V
|
||||||
|
Wire Wire Line
|
||||||
|
6425 3550 6950 3550
|
||||||
|
Wire Wire Line
|
||||||
|
6425 3650 6425 3550
|
||||||
|
Wire Wire Line
|
||||||
|
6350 3650 6425 3650
|
||||||
|
Wire Wire Line
|
||||||
|
4950 3550 5050 3550
|
||||||
|
Wire Wire Line
|
||||||
|
4950 3450 5000 3450
|
||||||
|
Wire Wire Line
|
||||||
|
5350 3650 5300 3650
|
||||||
|
Wire Wire Line
|
||||||
|
5300 3650 5300 4400
|
||||||
|
Wire Wire Line
|
||||||
|
5300 4400 6525 4400
|
||||||
|
Wire Wire Line
|
||||||
|
6525 4400 6525 3650
|
||||||
|
Wire Wire Line
|
||||||
|
6525 3650 6950 3650
|
||||||
|
Wire Wire Line
|
||||||
|
5200 3200 5550 3200
|
||||||
|
Wire Wire Line
|
||||||
|
6525 3200 6525 3450
|
||||||
|
Wire Wire Line
|
||||||
|
6525 3450 6950 3450
|
||||||
|
Wire Wire Line
|
||||||
|
5200 3550 5200 4500
|
||||||
|
Connection ~ 5200 3550
|
||||||
|
Wire Wire Line
|
||||||
|
3800 3550 4075 3550
|
||||||
|
Wire Wire Line
|
||||||
|
3800 3450 4125 3450
|
||||||
|
Wire Wire Line
|
||||||
|
5200 3200 5200 3450
|
||||||
|
Connection ~ 5200 3450
|
||||||
|
Wire Wire Line
|
||||||
|
5275 3550 5275 3075
|
||||||
|
Wire Wire Line
|
||||||
|
5275 3075 5450 3075
|
||||||
|
Connection ~ 5275 3550
|
||||||
|
Wire Wire Line
|
||||||
|
5550 2550 5550 3200
|
||||||
|
Connection ~ 5550 3200
|
||||||
|
Wire Wire Line
|
||||||
|
5650 2550 5650 3250
|
||||||
|
Wire Wire Line
|
||||||
|
5650 3250 6350 3250
|
||||||
|
Wire Wire Line
|
||||||
|
6350 3250 6350 3450
|
||||||
|
Wire Wire Line
|
||||||
|
6350 4050 6400 4050
|
||||||
|
Wire Wire Line
|
||||||
|
6400 4050 6400 3175
|
||||||
|
Wire Wire Line
|
||||||
|
6400 3175 5750 3175
|
||||||
|
Wire Wire Line
|
||||||
|
5750 3175 5750 2550
|
||||||
|
Wire Wire Line
|
||||||
|
6350 3950 6450 3950
|
||||||
|
Wire Wire Line
|
||||||
|
6450 3950 6450 3150
|
||||||
|
Wire Wire Line
|
||||||
|
6450 3150 5850 3150
|
||||||
|
Wire Wire Line
|
||||||
|
5850 3150 5850 2550
|
||||||
|
Wire Wire Line
|
||||||
|
5350 3950 5325 3950
|
||||||
|
Wire Wire Line
|
||||||
|
5325 3950 5325 3125
|
||||||
|
Wire Wire Line
|
||||||
|
5325 3125 5950 3125
|
||||||
|
Wire Wire Line
|
||||||
|
5950 3125 5950 2550
|
||||||
|
Wire Wire Line
|
||||||
|
5350 3850 5275 3850
|
||||||
|
Wire Wire Line
|
||||||
|
5275 3850 5275 3600
|
||||||
|
Wire Wire Line
|
||||||
|
5275 3600 5300 3600
|
||||||
|
Wire Wire Line
|
||||||
|
5300 3600 5300 3100
|
||||||
|
Wire Wire Line
|
||||||
|
5300 3100 6050 3100
|
||||||
|
Wire Wire Line
|
||||||
|
6050 3100 6050 2550
|
||||||
|
Wire Wire Line
|
||||||
|
6350 3550 6375 3550
|
||||||
|
Wire Wire Line
|
||||||
|
6375 3550 6375 3075
|
||||||
|
Wire Wire Line
|
||||||
|
6375 3075 6150 3075
|
||||||
|
Wire Wire Line
|
||||||
|
5450 3075 5450 2550
|
||||||
|
Wire Wire Line
|
||||||
|
6150 3075 6150 2550
|
||||||
|
Text Label 6150 2950 1 60 ~ 0
|
||||||
|
D8_DBG
|
||||||
|
Text Label 6050 2950 1 60 ~ 0
|
||||||
|
D2
|
||||||
|
Text Label 5950 2950 1 60 ~ 0
|
||||||
|
D1
|
||||||
|
Text Label 5850 2950 1 60 ~ 0
|
||||||
|
D0
|
||||||
|
Text Label 5750 2950 1 60 ~ 0
|
||||||
|
A0
|
||||||
|
Text Label 5650 2975 1 60 ~ 0
|
||||||
|
+3.3V
|
||||||
|
Text Label 4050 3550 2 60 ~ 0
|
||||||
|
AC_N
|
||||||
|
Text Label 3825 3450 0 60 ~ 0
|
||||||
|
AC_L
|
||||||
|
Wire Wire Line
|
||||||
|
5200 3550 5275 3550
|
||||||
|
Wire Wire Line
|
||||||
|
5200 3450 5350 3450
|
||||||
|
Wire Wire Line
|
||||||
|
5275 3550 5350 3550
|
||||||
|
Wire Wire Line
|
||||||
|
5550 3200 6525 3200
|
||||||
|
$Comp
|
||||||
|
L HASwitchPlate-library:SLC03-series U3
|
||||||
|
U 1 1 5C2FF5D5
|
||||||
|
P 4150 4150
|
||||||
|
F 0 "U3" H 4550 4400 50 0000 C CNN
|
||||||
|
F 1 "SLC03-series" H 4550 4000 50 0000 C CNN
|
||||||
|
F 2 "HASwitchPlate:ACDC-Converter_MeanWell-SLC03-series" H 4550 3900 50 0001 C CNN
|
||||||
|
F 3 "http://www.meanwellusa.com/productPdf.aspx?i=786" H 4550 3800 50 0001 C CNN
|
||||||
|
1 4150 4150
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
Wire Wire Line
|
||||||
|
4125 3450 4125 4050
|
||||||
|
Wire Wire Line
|
||||||
|
4125 4050 4150 4050
|
||||||
|
Connection ~ 4125 3450
|
||||||
|
Wire Wire Line
|
||||||
|
4125 3450 4150 3450
|
||||||
|
Wire Wire Line
|
||||||
|
4075 3550 4075 4150
|
||||||
|
Wire Wire Line
|
||||||
|
4075 4150 4150 4150
|
||||||
|
Connection ~ 4075 3550
|
||||||
|
Wire Wire Line
|
||||||
|
4075 3550 4150 3550
|
||||||
|
Wire Wire Line
|
||||||
|
4950 4050 5000 4050
|
||||||
|
Wire Wire Line
|
||||||
|
5000 4050 5000 3450
|
||||||
|
Connection ~ 5000 3450
|
||||||
|
Wire Wire Line
|
||||||
|
5000 3450 5200 3450
|
||||||
|
Wire Wire Line
|
||||||
|
4950 4150 5050 4150
|
||||||
|
Wire Wire Line
|
||||||
|
5050 4150 5050 3550
|
||||||
|
Connection ~ 5050 3550
|
||||||
|
Wire Wire Line
|
||||||
|
5050 3550 5200 3550
|
||||||
|
$Comp
|
||||||
|
L Transistor_BJT:S8050 Q1
|
||||||
|
U 1 1 5C306D5D
|
||||||
|
P 7050 4150
|
||||||
|
F 0 "Q1" H 7241 4196 50 0000 L CNN
|
||||||
|
F 1 "S8050" H 7241 4105 50 0000 L CNN
|
||||||
|
F 2 "Package_TO_SOT_THT:TO-92L_HandSolder" H 7250 4075 50 0001 L CIN
|
||||||
|
F 3 "http://www.unisonic.com.tw/datasheet/S8050.pdf" H 7050 4150 50 0001 L CNN
|
||||||
|
1 7050 4150
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L Device:R_US R1
|
||||||
|
U 1 1 5C306DF8
|
||||||
|
P 6600 3900
|
||||||
|
F 0 "R1" H 6668 3946 50 0000 L CNN
|
||||||
|
F 1 "1k" H 6668 3855 50 0000 L CNN
|
||||||
|
F 2 "Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal" V 6640 3890 50 0001 C CNN
|
||||||
|
F 3 "~" H 6600 3900 50 0001 C CNN
|
||||||
|
1 6600 3900
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
Wire Wire Line
|
||||||
|
6350 3750 6600 3750
|
||||||
|
Wire Wire Line
|
||||||
|
6600 4050 6600 4150
|
||||||
|
Wire Wire Line
|
||||||
|
6600 4150 6850 4150
|
||||||
|
Wire Wire Line
|
||||||
|
7150 3950 6850 3950
|
||||||
|
Wire Wire Line
|
||||||
|
6850 3950 6850 3750
|
||||||
|
Wire Wire Line
|
||||||
|
6850 3750 6950 3750
|
||||||
|
Text Label 6850 3900 0 60 ~ 0
|
||||||
|
LCD_GND
|
||||||
|
Text Label 6600 4150 0 60 ~ 0
|
||||||
|
LCD_CTL
|
||||||
|
Wire Wire Line
|
||||||
|
5200 4500 7150 4500
|
||||||
|
Wire Wire Line
|
||||||
|
7150 4500 7150 4350
|
||||||
|
Text Notes 4225 3175 0 60 ~ 0
|
||||||
|
Choose one PSU\noption below
|
||||||
|
$EndSCHEMATC
|
9
PCB/README.md
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
# PCB source files and Gerber outputs
|
||||||
|
|
||||||
|
Above you'll find [KiCad](http://kicad-pcb.org/) [schematic](https://github.com/aderusha/HASwitchPlate/blob/master/PCB/HASwitchPlate.sch) and [PCB](https://github.com/aderusha/HASwitchPlate/blob/master/PCB/HASwitchPlate.kicad_pcb) files along with [a ZIP bundle containing complete gerber outputs](https://github.com/aderusha/HASwitchPlate/raw/master/PCB/HASwitchPlate.gerbers.zip) ready to send to [your favorite PCB shop](https://www.allpcb.com/?Mb_InviteId=34099).
|
||||||
|
|
||||||
|
I had these manufactured by [AllPCB](https://www.allpcb.com/?Mb_InviteId=34099) and I'm very happy with the results. The quality has been perfect and their shipping time to the US has been under a week across several orders. [If you sign up through this link](https://www.allpcb.com/?Mb_InviteId=34099) they credit me some cash that I can use for future projects which helps me out a bit.
|
||||||
|
|
||||||
|
If you aren't looking to buy a zillion boards, I may have some ready for US orders in [my Tindie store](https://www.tindie.com/products/luma/ha-switchplate-hasp-pcb/).
|
||||||
|
|
||||||
|

|
BIN
images/NextionUI_Fonts_0-3.png
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
images/NextionUI_Fonts_4-7.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
images/NextionUI_Fonts_8-10.png
Normal file
After Width: | Height: | Size: 4.6 KiB |
BIN
images/NextionUI_p0_Init_Screen.png
Normal file
After Width: | Height: | Size: 4.9 KiB |
BIN
images/NextionUI_p1-p3_4buttons.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
images/NextionUI_p10_5buttons.png
Normal file
After Width: | Height: | Size: 2.2 KiB |
BIN
images/NextionUI_p11_1button+1slider.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
images/NextionUI_p4-p5_3sliders.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
images/NextionUI_p6_8buttons.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
images/NextionUI_p7_12buttons.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
images/NextionUI_p8_5buttons+1slider.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
images/NextionUI_p9_9buttons.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
images/hasp_Core_Functionality.png
Normal file
After Width: | Height: | Size: 3.2 KiB |
BIN
images/hasp_Display_Calendar_with_Icon.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
images/hasp_Display_Clock.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
images/hasp_Display_Clock_with_Icon.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
images/hasp_Display_Dimmer_with_Icon.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
images/hasp_Display_Entity_State_or_Attribute.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
BIN
images/hasp_Display_Media_Control_page8.png
Normal file
After Width: | Height: | Size: 7.0 KiB |
BIN
images/hasp_Display_Temperature_with_Icon_and_Colors.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
images/hasp_Display_Template.png
Normal file
After Width: | Height: | Size: 2.1 KiB |