Compare commits
12 Commits
439a6b6a1f
...
v0.3.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
eeb6bd846c | ||
|
|
71a3a48af7 | ||
|
|
33a5bbbc24 | ||
|
|
6c1134ca3a | ||
|
|
08b845f792 | ||
|
|
82342b82a5 | ||
|
|
309fef8c1d | ||
|
|
d71e334bd8 | ||
|
|
e1331d6266 | ||
|
|
74175ab241 | ||
|
|
4d9767edda | ||
|
|
e99422412e |
69
CHANGELOG.md
@@ -26,3 +26,72 @@ All notable changes to this project will be documented in this file.
|
||||
### Changed
|
||||
|
||||
- Heater of humidiy sensor only on when humidity is above 96% (was 80%). When heater is on temperature sensor also heats up, so use temperature sensor of BMP280 when heater is on.
|
||||
|
||||
## [0.2.1] - 2024-01-17
|
||||
|
||||
### Changed
|
||||
|
||||
- Heater algorithm updated. Idea from datasheet of humidity sensor from Temco Controls HUM-M2 humidity sensor module.
|
||||
- ModBus read register 1: Scaled wind direction by 10 in order to also get the decimal position of the direction
|
||||
|
||||
### Added
|
||||
|
||||
- ModBus read register 12: Raw rain meter
|
||||
- ModBus read register 13: Temperature from pressure sensor
|
||||
- ModBus read register 14: Status bits
|
||||
- ModBus coil register 0 : enable/disable heather algorithm
|
||||
|
||||
## [0.2.2] - 2024-01-21
|
||||
|
||||
### Fixed
|
||||
|
||||
- Buffer overflow when calculating average wind speed in AverageOfArray(). Fix: use 32 bit register for average_value.
|
||||
|
||||
### Changed
|
||||
|
||||
- Changed some variables to the propper standard (uint8_t, uint16_t, etc.)
|
||||
- SparkFun wind interrupt now calculates over 3 seconds in stead of 1 second (KNMI standard)]
|
||||
|
||||
## [0.2.3] - 2024-02-28
|
||||
|
||||
### Changed
|
||||
|
||||
- Humidity often got stuck at 100%. Heater algorithm now heats for 10 minutes and cools down for 10 minutes (was 5min/15min)
|
||||
|
||||
## [0.2.4] - 2024-03-08
|
||||
|
||||
### Changed
|
||||
|
||||
- Humidity timer back to 5/15 minutes: shorter cooling times give false temperature readings.
|
||||
|
||||
### Fixed
|
||||
|
||||
- Classic 0/1 error in max and average calculating routine, which resulted in a buffer overflow.
|
||||
|
||||
## [0.2.5] - 2024-03-11
|
||||
|
||||
### Fixed
|
||||
|
||||
- 0/1 error in max and average (again, or better said: still!).
|
||||
|
||||
### Changed
|
||||
|
||||
- Humidity threshold heater is now a define instead of hard coded numbers in the source.
|
||||
|
||||
## [0.2.6] - 2024-03-13
|
||||
|
||||
### Fixed
|
||||
|
||||
There is a bug in the Si7021 chip: when the sensor is exposed to extreme environmental conditions for a longer period (very high or very low humidity), the humidity register will wrap around and give wrong values. (https://community.silabs.com/s/question/0D51M00007xeOo9SAE/si7021-relative-humidity-reading-underflowing-?language=en_US).
|
||||
Workaround: let's assume the humidity will never go below 15%. In the Netherlands a humidity below 20% is rare, but can occur and the minimum value ever measured in De Bilt was 6% (on 1 april 1965). At several other sites in the Netherlands the humidity went as low as 10%. But as this was a one time event and the measurements are doubtful, this event was not registered in the original database. (https://nl.wikipedia.org/wiki/Relatieve_luchtvochtigheid)
|
||||
In rare cases, the humidity value could creep up above 15% (when the actual humidity is 100%) and still give wrong values.
|
||||
|
||||
## [0.3.0] - 2024-05-02
|
||||
|
||||
### Added
|
||||
|
||||
Support for HYT-221 humidity sensor
|
||||
|
||||
### Removed
|
||||
|
||||
Support for si7021 humidity sensor (this sensor was not suited for outdoor measurments)
|
||||
|
||||
@@ -8,8 +8,7 @@ A weather station build around a SparkFun Weather Meter Kit (SEN-15901). The tem
|
||||
|
||||
## Documentation
|
||||
|
||||
An apprehensive description of the project can be found here: https://meezenest.nl/mees/projects/weather_station/weather_station.html
|
||||
|
||||
An apprehensive description of the project can be found here: [https://meezenest.nl/mees/weather_station.html](https://meezenest.nl/mees/weather_station.html)
|
||||
## Sensors
|
||||
|
||||
- SparkFun SEN-15901 Weather Station (wind speed, wind direction and rain fall)
|
||||
@@ -45,6 +44,12 @@ An apprehensive description of the project can be found here: https://meezenest.
|
||||
|
||||
Libraries are included with the source code of this project
|
||||
|
||||
## Known bugs
|
||||
|
||||
There is a bug in the Si7021 chip: when the sensor is exposed to extreme environmental conditions for a longer period (very high or very low humidity), the humidity register will wrap around and give wrong values. (https://community.silabs.com/s/question/0D51M00007xeOo9SAE/si7021-relative-humidity-reading-underflowing-?language=en_US).
|
||||
Workaround: let's assume the humidity will never go below 15%. In the Netherlands a humidity below 20% is rare, but can occur and the minimum value ever measured in De Bilt was 6% (on 1 april 1965). At several other sites in the Netherlands the humidity went as low as 10%. But as this was a one time event and the measurements are doubtful, this event was not registered in the original database. (https://nl.wikipedia.org/wiki/Relatieve_luchtvochtigheid)
|
||||
In rare cases, the humidity value could creep up above 15% (when the actual humidity is 100%) and still give wrong values.
|
||||
|
||||
## License
|
||||
|
||||
Copyright (C) 2023, 2024 M.T. Konstapel
|
||||
|
||||
12
TODO.md
Normal file
@@ -0,0 +1,12 @@
|
||||
# Todo list for weather station with ModBus over RS-485
|
||||
|
||||
## Reset firmware via ModBus coil bit
|
||||
|
||||
Soemtimes the weater station needs to be reset. For example if the I2C communication with the sensors is lost. The pressure sensor tends to have this probem occacionally.
|
||||
|
||||
## Implement support for new humidity sensor
|
||||
|
||||
Heater function of former sensor needs to be disabled as the new sensor does not have (or need) a heater.
|
||||
|
||||
|
||||
|
||||
9
article/Makefile
Normal file
@@ -0,0 +1,9 @@
|
||||
html:
|
||||
pandoc -s weather_station_article.md --toc --toc-depth=1 -c ./css/mvp.css \
|
||||
--template ./template/template.html -o weather_station_article.html
|
||||
|
||||
pdf:
|
||||
pandoc weather_station_article.md --toc -o weather_station_article.pdf --pdf-engine=xelatex -H ./template/custom_settings.tex
|
||||
|
||||
clean:
|
||||
rm -rvf build
|
||||
563
article/css/mvp.css
Normal file
@@ -0,0 +1,563 @@
|
||||
/* MVP.css v1.14 - https://github.com/andybrewer/mvp */
|
||||
/* Edited by Konstapel https://meezenest.nl/mees */
|
||||
|
||||
:root {
|
||||
--active-brightness: 0.85;
|
||||
--border-radius: 5px;
|
||||
--box-shadow: 2px 2px 10px;
|
||||
--color-accent: #f4f0ec;
|
||||
--color-bg: #fff;
|
||||
--color-bg-secondary: #e9e9e9;
|
||||
--color-link: #a9a9a9;
|
||||
--color-secondary: #3366FF;
|
||||
--color-secondary-accent: #920de90b;
|
||||
--color-shadow: #f4f4f4;
|
||||
--color-table: #a9a9a9;
|
||||
--color-text: #000;
|
||||
--color-text-secondary: #999;
|
||||
--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
|
||||
--hover-brightness: 1.2;
|
||||
--justify-important: center;
|
||||
--justify-normal: left;
|
||||
--line-height: 1.5;
|
||||
--width-card: 285px;
|
||||
--width-card-medium: 460px;
|
||||
--width-card-wide: 1080px;
|
||||
--width-content: 1080px;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root[color-mode="user"] {
|
||||
--color-accent: #0097fc4f;
|
||||
--color-bg: #333;
|
||||
--color-bg-secondary: #555;
|
||||
--color-link: #0097fc;
|
||||
--color-secondary: #e20de9;
|
||||
--color-secondary-accent: #e20de94f;
|
||||
--color-shadow: #bbbbbb20;
|
||||
--color-table: #0097fc;
|
||||
--color-text: #f7f7f7;
|
||||
--color-text-secondary: #aaa;
|
||||
}
|
||||
}
|
||||
|
||||
html {
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
html {
|
||||
scroll-behavior: auto;
|
||||
}
|
||||
}
|
||||
|
||||
/* Layout */
|
||||
article aside {
|
||||
background: var(--color-secondary-accent);
|
||||
border-left: 4px solid var(--color-secondary);
|
||||
padding: 0.01rem 0.8rem;
|
||||
}
|
||||
|
||||
body {
|
||||
background: var(--color-bg);
|
||||
color: var(--color-text);
|
||||
font-family: var(--font-family);
|
||||
line-height: var(--line-height);
|
||||
margin: 0;
|
||||
overflow-x: hidden;
|
||||
padding: 0;
|
||||
font-size: 110%;
|
||||
}
|
||||
|
||||
footer,
|
||||
header,
|
||||
main {
|
||||
margin: 0 auto;
|
||||
max-width: var(--width-content);
|
||||
padding: 3rem 1rem;
|
||||
}
|
||||
|
||||
main {
|
||||
border: 1px solid lightgray;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
footer {
|
||||
font-size: 0.7em;
|
||||
}
|
||||
|
||||
hr {
|
||||
background-color: var(--color-bg-secondary);
|
||||
border: none;
|
||||
height: 1px;
|
||||
margin: 4rem 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
section {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: var(--justify-important);
|
||||
}
|
||||
|
||||
section img,
|
||||
article img {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
section pre {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
section aside {
|
||||
border: 1px solid var(--color-bg-secondary);
|
||||
border-radius: var(--border-radius);
|
||||
box-shadow: var(--box-shadow) var(--color-shadow);
|
||||
margin: 1rem;
|
||||
padding: 1.25rem;
|
||||
width: var(--width-card);
|
||||
}
|
||||
|
||||
section aside:hover {
|
||||
box-shadow: var(--box-shadow) var(--color-bg-secondary);
|
||||
}
|
||||
|
||||
[hidden] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Headers */
|
||||
article header,
|
||||
div header,
|
||||
main header {
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
header {
|
||||
text-align: var(--justify-important);
|
||||
}
|
||||
|
||||
header a b,
|
||||
header a em,
|
||||
header a i,
|
||||
header a strong {
|
||||
margin-left: 0.5rem;
|
||||
margin-right: 0.5rem;
|
||||
}
|
||||
|
||||
header nav img {
|
||||
margin: 1rem 0;
|
||||
}
|
||||
|
||||
section header {
|
||||
padding-top: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* Nav */
|
||||
nav {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
font-weight: bold;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 7rem;
|
||||
}
|
||||
|
||||
nav ul {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
nav ul li {
|
||||
display: inline-block;
|
||||
margin: 0 0.5rem;
|
||||
position: relative;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
/* Nav Dropdown */
|
||||
nav ul li:hover ul {
|
||||
display: block;
|
||||
}
|
||||
|
||||
nav ul li ul {
|
||||
background: var(--color-bg);
|
||||
border: 1px solid var(--color-bg-secondary);
|
||||
border-radius: var(--border-radius);
|
||||
box-shadow: var(--box-shadow) var(--color-shadow);
|
||||
display: none;
|
||||
height: auto;
|
||||
left: -2px;
|
||||
padding: .5rem 1rem;
|
||||
position: absolute;
|
||||
top: 1.7rem;
|
||||
white-space: nowrap;
|
||||
width: auto;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
nav ul li ul::before {
|
||||
/* fill gap above to make mousing over them easier */
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: -0.5rem;
|
||||
height: 0.5rem;
|
||||
}
|
||||
|
||||
nav ul li ul li,
|
||||
nav ul li ul li a {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* Typography */
|
||||
code,
|
||||
samp {
|
||||
background-color: var(--color-accent);
|
||||
border-radius: var(--border-radius);
|
||||
color: var(--color-text);
|
||||
display: inline-block;
|
||||
margin: 0 0.1rem;
|
||||
padding: 0 0.5rem;
|
||||
}
|
||||
|
||||
details {
|
||||
margin: 1.3rem 0;
|
||||
}
|
||||
|
||||
details summary {
|
||||
font-weight: bold;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
line-height: var(--line-height);
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 1.875em;
|
||||
border-bottom: 1px solid lightgray;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.4em;
|
||||
}
|
||||
|
||||
mark {
|
||||
padding: 0.1rem;
|
||||
}
|
||||
|
||||
ol li,
|
||||
ul li {
|
||||
padding: 0.2rem 0;
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 0.75rem 0;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
pre {
|
||||
margin: 1rem 0;
|
||||
max-width: var(--width-card-wide);
|
||||
padding: 1rem 0;
|
||||
}
|
||||
|
||||
pre code,
|
||||
pre samp {
|
||||
display: block;
|
||||
max-width: var(--width-card-wide);
|
||||
padding: 0.8rem 2rem;
|
||||
/*white-space: pre-wrap;*/
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
small {
|
||||
color: var(--color-text-secondary);
|
||||
}
|
||||
|
||||
sup {
|
||||
background-color: var(--color-secondary);
|
||||
border-radius: var(--border-radius);
|
||||
color: var(--color-bg);
|
||||
font-size: xx-small;
|
||||
font-weight: bold;
|
||||
margin: 0.2rem;
|
||||
padding: 0.2rem 0.3rem;
|
||||
position: relative;
|
||||
top: -2px;
|
||||
}
|
||||
|
||||
/* Links */
|
||||
a {
|
||||
color: var(--color-link);
|
||||
display: inline-block;
|
||||
font-weight: bold;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
a:active {
|
||||
filter: brightness(var(--active-brightness));
|
||||
}
|
||||
|
||||
a:hover {
|
||||
filter: brightness(var(--hover-brightness));
|
||||
}
|
||||
|
||||
a b,
|
||||
a em,
|
||||
a i,
|
||||
a strong,
|
||||
button,
|
||||
input[type="submit"] {
|
||||
border-radius: var(--border-radius);
|
||||
display: inline-block;
|
||||
font-size: medium;
|
||||
font-weight: bold;
|
||||
line-height: var(--line-height);
|
||||
margin: 0.5rem 0;
|
||||
padding: 1rem 2rem;
|
||||
}
|
||||
|
||||
button,
|
||||
input[type="submit"] {
|
||||
font-family: var(--font-family);
|
||||
}
|
||||
|
||||
button:active,
|
||||
input[type="submit"]:active {
|
||||
filter: brightness(var(--active-brightness));
|
||||
}
|
||||
|
||||
button:hover,
|
||||
input[type="submit"]:hover {
|
||||
cursor: pointer;
|
||||
filter: brightness(var(--hover-brightness));
|
||||
}
|
||||
|
||||
a b,
|
||||
a strong,
|
||||
button,
|
||||
input[type="submit"] {
|
||||
background-color: var(--color-link);
|
||||
border: 2px solid var(--color-link);
|
||||
color: var(--color-bg);
|
||||
}
|
||||
|
||||
a em,
|
||||
a i {
|
||||
border: 2px solid var(--color-link);
|
||||
border-radius: var(--border-radius);
|
||||
color: var(--color-link);
|
||||
display: inline-block;
|
||||
padding: 1rem 2rem;
|
||||
}
|
||||
|
||||
article aside a {
|
||||
color: var(--color-secondary);
|
||||
}
|
||||
|
||||
/* Images */
|
||||
figure {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
figure img {
|
||||
max-width: 100%;
|
||||
max-height: 500px;
|
||||
}
|
||||
|
||||
figure figcaption {
|
||||
color: var(--color-text-secondary);
|
||||
}
|
||||
|
||||
/* Forms */
|
||||
button:disabled,
|
||||
input:disabled {
|
||||
background: var(--color-bg-secondary);
|
||||
border-color: var(--color-bg-secondary);
|
||||
color: var(--color-text-secondary);
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
button[disabled]:hover,
|
||||
input[type="submit"][disabled]:hover {
|
||||
filter: none;
|
||||
}
|
||||
|
||||
form {
|
||||
border: 1px solid var(--color-bg-secondary);
|
||||
border-radius: var(--border-radius);
|
||||
box-shadow: var(--box-shadow) var(--color-shadow);
|
||||
display: block;
|
||||
max-width: var(--width-card-wide);
|
||||
min-width: var(--width-card);
|
||||
padding: 1.5rem;
|
||||
text-align: var(--justify-normal);
|
||||
}
|
||||
|
||||
form header {
|
||||
margin: 1.5rem 0;
|
||||
padding: 1.5rem 0;
|
||||
}
|
||||
|
||||
input,
|
||||
label,
|
||||
select,
|
||||
textarea {
|
||||
display: block;
|
||||
font-size: inherit;
|
||||
max-width: var(--width-card-wide);
|
||||
}
|
||||
|
||||
input[type="checkbox"],
|
||||
input[type="radio"] {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
input[type="checkbox"]+label,
|
||||
input[type="radio"]+label {
|
||||
display: inline-block;
|
||||
font-weight: normal;
|
||||
position: relative;
|
||||
top: 1px;
|
||||
}
|
||||
|
||||
input[type="range"] {
|
||||
padding: 0.4rem 0;
|
||||
}
|
||||
|
||||
input,
|
||||
select,
|
||||
textarea {
|
||||
border: 1px solid var(--color-bg-secondary);
|
||||
border-radius: var(--border-radius);
|
||||
margin-bottom: 1rem;
|
||||
padding: 0.4rem 0.8rem;
|
||||
}
|
||||
|
||||
input[type="text"],
|
||||
textarea {
|
||||
width: calc(100% - 1.6rem);
|
||||
}
|
||||
|
||||
input[readonly],
|
||||
textarea[readonly] {
|
||||
background-color: var(--color-bg-secondary);
|
||||
}
|
||||
|
||||
label {
|
||||
font-weight: bold;
|
||||
margin-bottom: 0.2rem;
|
||||
}
|
||||
|
||||
/* Popups */
|
||||
dialog {
|
||||
border: 1px solid var(--color-bg-secondary);
|
||||
border-radius: var(--border-radius);
|
||||
box-shadow: var(--box-shadow) var(--color-shadow);
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
width: 50%;
|
||||
z-index: 999;
|
||||
}
|
||||
|
||||
/* Tables */
|
||||
table {
|
||||
border: 1px solid var(--color-bg-secondary);
|
||||
border-radius: var(--border-radius);
|
||||
border-spacing: 0;
|
||||
display: inline-block;
|
||||
max-width: 100%;
|
||||
overflow-x: auto;
|
||||
padding: 0;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
table td,
|
||||
table th,
|
||||
table tr {
|
||||
padding: 0.4rem 0.8rem;
|
||||
text-align: var(--justify-important);
|
||||
}
|
||||
|
||||
table thead {
|
||||
background-color: var(--color-table);
|
||||
border-collapse: collapse;
|
||||
border-radius: var(--border-radius);
|
||||
/*color: var(--color-bg);*/
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
table thead th:first-child {
|
||||
border-top-left-radius: var(--border-radius);
|
||||
}
|
||||
|
||||
table thead th:last-child {
|
||||
border-top-right-radius: var(--border-radius);
|
||||
}
|
||||
|
||||
table thead th:first-child,
|
||||
table tr td:first-child {
|
||||
text-align: var(--justify-normal);
|
||||
}
|
||||
|
||||
table tr:nth-child(even) {
|
||||
background-color: var(--color-accent);
|
||||
}
|
||||
|
||||
/* Quotes */
|
||||
blockquote {
|
||||
display: block;
|
||||
font-size: x-large;
|
||||
line-height: var(--line-height);
|
||||
margin: 1rem auto;
|
||||
max-width: var(--width-card-medium);
|
||||
padding: 1.5rem 1rem;
|
||||
text-align: var(--justify-important);
|
||||
}
|
||||
|
||||
blockquote footer {
|
||||
color: var(--color-text-secondary);
|
||||
display: block;
|
||||
font-size: small;
|
||||
line-height: var(--line-height);
|
||||
padding: 1.5rem 0;
|
||||
}
|
||||
|
||||
/* Scrollbars */
|
||||
* {
|
||||
scrollbar-width: thin;
|
||||
scrollbar-color: rgb(202, 202, 232) auto;
|
||||
}
|
||||
|
||||
*::-webkit-scrollbar {
|
||||
width: 5px;
|
||||
height: 5px;
|
||||
}
|
||||
|
||||
*::-webkit-scrollbar-track {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
*::-webkit-scrollbar-thumb {
|
||||
background-color: rgb(202, 202, 232);
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
h1.title {
|
||||
border-bottom: 0px solid white;
|
||||
}
|
||||
|
||||
33282
article/images/weather_station_schematic.svg
Normal file
|
After Width: | Height: | Size: 586 KiB |
16
article/template/custom_settings.tex
Normal file
@@ -0,0 +1,16 @@
|
||||
% Override default figure placement To be within the flow of the text rather
|
||||
% than on it's own page.
|
||||
\usepackage{float}
|
||||
\usepackage{graphicx}
|
||||
\makeatletter
|
||||
\def\fps@figure{H}
|
||||
\makeatother
|
||||
|
||||
% Scale all large images to 50% of twext width
|
||||
\makeatletter
|
||||
\setkeys{Gin}{width=\ifdim\Gin@nat@width>\linewidth
|
||||
0.5\linewidth
|
||||
\else
|
||||
\Gin@nat@width
|
||||
\fi}
|
||||
\makeatother
|
||||
120
article/template/template.html
Normal file
@@ -0,0 +1,120 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="$lang$" xml:lang="$lang$"$if(dir)$ dir="$dir$"$endif$>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="generator" content="pandoc" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||||
$for(author-meta)$
|
||||
<meta name="author" content="$author-meta$" />
|
||||
$endfor$
|
||||
$if(date-meta)$
|
||||
<meta name="dcterms.date" content="$date-meta$" />
|
||||
$endif$
|
||||
$if(keywords)$
|
||||
<meta name="keywords" content="$for(keywords)$$keywords$$sep$, $endfor$" />
|
||||
$endif$
|
||||
<title>$if(title-prefix)$$title-prefix$ – $endif$$pagetitle$</title>
|
||||
$if(highlighting-css)$
|
||||
<style type="text/css">
|
||||
$highlighting-css$
|
||||
</style>
|
||||
$endif$
|
||||
$for(css)$
|
||||
<link rel="stylesheet" href="$css$" />
|
||||
$endfor$
|
||||
<style type="text/css">
|
||||
:root {
|
||||
--width-content: 1080px;
|
||||
}
|
||||
|
||||
nav {
|
||||
justify-content: space-around;
|
||||
}
|
||||
|
||||
$if(quotes)$
|
||||
q { quotes: "“" "”" "‘" "’"; }
|
||||
$endif$
|
||||
</style>
|
||||
$if(math)$
|
||||
$math$
|
||||
$endif$
|
||||
$for(header-includes)$
|
||||
$header-includes$
|
||||
$endfor$
|
||||
</head>
|
||||
<body>
|
||||
$for(include-before)$
|
||||
$include-before$
|
||||
$endfor$
|
||||
$if(title)$
|
||||
<header id="title-block-header">
|
||||
<nav id="$idprefix$TOC">
|
||||
<ul>
|
||||
$if(toc)$
|
||||
<li>
|
||||
<a href="#">Index</a>
|
||||
$table-of-contents$
|
||||
</li>
|
||||
$endif$
|
||||
$if(pdf_version)$
|
||||
<li>
|
||||
<a href="$pdf_version$">PDF version</a>
|
||||
</li>
|
||||
$endif$
|
||||
$if(git_repo)$
|
||||
<li>
|
||||
<a href="$git_repo$">Git repo</a>
|
||||
</li>
|
||||
$endif$
|
||||
$if(website)$
|
||||
<li>
|
||||
<a href="$page_back$">Back</a>
|
||||
</li>
|
||||
$endif$
|
||||
</ul>
|
||||
|
||||
<a href="https://www.meezenest.nl/mees/"><img alt="Logo" src="$logo$" height="70"></a>
|
||||
</nav>
|
||||
<h1 class="title">$title$</h1>
|
||||
$if(subtitle)$
|
||||
<p class="subtitle">$subtitle$</p>
|
||||
$endif$
|
||||
$for(author)$
|
||||
<p class="author">$author$</p>
|
||||
$endfor$
|
||||
$if(date)$
|
||||
<p class="date">$date$</p>
|
||||
$endif$
|
||||
$if(pdf_version)$
|
||||
<p><a href="$pdf_version$"><i>PDF version</i></a></p>
|
||||
$endif$
|
||||
</header>
|
||||
$endif$
|
||||
<main>
|
||||
<article>
|
||||
$if(abstract)$
|
||||
<p><b>Abstract </b>$abstract$</p>
|
||||
$endif$
|
||||
$body$
|
||||
$for(include-after)$
|
||||
$include-after$
|
||||
$endfor$
|
||||
<hr>
|
||||
</article>
|
||||
</main>
|
||||
<footer>
|
||||
<p>©
|
||||
$if(date)$
|
||||
$date$
|
||||
$endif$
|
||||
$for(author)$
|
||||
$author$
|
||||
$endfor$
|
||||
$if(website)$
|
||||
<a href="$website$">$website$</a>
|
||||
$endif$
|
||||
</p><p>This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.
|
||||
</p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
205
article/weather_station_article.html
Normal file
@@ -0,0 +1,205 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="generator" content="pandoc" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||||
<meta name="author" content="M.T. Konstapel" />
|
||||
<meta name="dcterms.date" content="2024-02-03" />
|
||||
<title>APRS weerstation</title>
|
||||
<link rel="stylesheet" href="./css/mvp.css" />
|
||||
<style type="text/css">
|
||||
:root {
|
||||
--width-content: 1080px;
|
||||
}
|
||||
|
||||
nav {
|
||||
justify-content: space-around;
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<header id="title-block-header">
|
||||
<nav id="TOC">
|
||||
<ul>
|
||||
<li>
|
||||
<a href="#">Index</a>
|
||||
<ul>
|
||||
<li><a href="#weerstation"
|
||||
id="toc-weerstation">Weerstation</a></li>
|
||||
<li><a href="#aprs" id="toc-aprs">APRS</a></li>
|
||||
<li><a href="#hamnet" id="toc-hamnet">HamNet</a></li>
|
||||
<li><a href="#meer-informatie" id="toc-meer-informatie">Meer
|
||||
informatie</a></li>
|
||||
<li><a href="#verantwoording"
|
||||
id="toc-verantwoording">Verantwoording</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<a href="./weather_station_article.pdf">PDF version</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://git.meezenest.nl/marcel/weather_station">Git repo</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://meezenest.nl/mees/weather_station.html">Back</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<a href="https://www.meezenest.nl/mees/"><img alt="Logo" src="./images/mees_logo.svg" height="70"></a>
|
||||
</nav>
|
||||
<h1 class="title">APRS weerstation</h1>
|
||||
<p class="subtitle">met hamnet verbinding</p>
|
||||
<p class="author">M.T. Konstapel</p>
|
||||
<p class="date">2024-02-03</p>
|
||||
<p><a href="./weather_station_article.pdf"><i>PDF version</i></a></p>
|
||||
</header>
|
||||
<main>
|
||||
<article>
|
||||
<p><b>Abstract </b><p>Ik maak veel gebruik van het APRS netwerk:
|
||||
positiebepaling, telemetry en berichten versturen; ik doe het allemaal.
|
||||
Dit kan omdat ik dicht bij de Duitse grens woon: anders dan in Nederland
|
||||
waar het APRS netwerk dankzij lastige regelgeving nagenoeg is verdwenen,
|
||||
is in Duitsland het netwerk nog springlevend. Ik maak gebruik van Duitse
|
||||
digipeaters en iGates, die gewoon berichten vanaf het internet mogen
|
||||
doorzenden. Wat een geluk! Het enige wat ik nog niet kon, was
|
||||
weergegevens delen via het netwerk. Om daar verandering in te brengen
|
||||
heb ik een weerstation ontworpen dat elke 10 minuten een weerbericht kan
|
||||
uitzenden via het APRS netwerk. En omdat het systeem zo’n 100 meter van
|
||||
mijn huis in de acchtertuin staat, heb ik er ook een 5 GHz hamnet
|
||||
verbinding naar toe gemaakt, zodat ik het systeem op afstand kan
|
||||
bedienen. Het hamnet gebruik ik ook om de weermetingen naar mijn Grafana
|
||||
dashboard te sturen. Oh, en omdat twee beter is dan een heb ik er ook
|
||||
een 20KB/s hamnet link over 70cm LoRa als backup in geknutseld.</p></p>
|
||||
<h1 id="weerstation">Weerstation</h1>
|
||||
<p>Als uitgangspunt van het weerstation gebruik ik de SparkFun Weather
|
||||
Meter. Dit is een kit met drie sensors: een windvaan, een anemometer en
|
||||
een regenmeter. Deze kit heb ik aangevuld met sensors voor temperatuur,
|
||||
luchtdruk en luctvochtigheid. Al deze sensors zijn rechtstreeks
|
||||
aangesloten op een Arduino Mini Pro. Ik heb daar een RS-485 driverchip
|
||||
en een ompoolbeveiliging aan toegevoegd. Het uiteindelijke schema is
|
||||
hieronder te zien. Ingewikkeld is de hardware niet, want alle
|
||||
fuctionaliteit zit in de software.</p>
|
||||
<figure>
|
||||
<img src="./images/weather_station_schematic.svg" title="Schema"
|
||||
alt="Schema" />
|
||||
<figcaption aria-hidden="true">Schema</figcaption>
|
||||
</figure>
|
||||
<p>Het weerstation is uit te lezen via een ModBus interface. Dit is een
|
||||
industriestandaard, dus er zijn legio mogelijkheden om met het
|
||||
weerstation te communiceren. De ModBus registers bevatten de meetwaarden
|
||||
van de sensors en worden elke twee seconde ververst. Dit bepaald dus de
|
||||
maximale uitleesfrequentie. De volgende gegevens zijn beschikbaar:</p>
|
||||
<ul>
|
||||
<li>Windrichting in graden</li>
|
||||
<li>Gemiddelde wind snelheid van de laatste 10 minuten in m/s</li>
|
||||
<li>Maximale windstoot van de laatste 10 minuten in m/s</li>
|
||||
<li>Hoeveelheid regen in het afgelopen uur in mm</li>
|
||||
<li>Hoeveelheid regen in de afgelopen 24 uur in mm</li>
|
||||
<li>Temperatuur in graden C</li>
|
||||
<li>Luchtvochtigheid in %</li>
|
||||
<li>Luchtdruk in hPa</li>
|
||||
</ul>
|
||||
<p>Daarnaast zijn er nog een aantal statusregisters beschikbaar. Deze
|
||||
worden besproken in de uitgebreide bouwbeschrijving die beschikbaar is
|
||||
op mijn website.</p>
|
||||
<p>De luchtvochtigheidssensor kan bij een hoge luchtvochtigheid
|
||||
verzadigd raken en zo blijven steken op 100%. Om dit te voorkomen is het
|
||||
mogelijk om de sensor automatisch te laten verwarmen wanneer de
|
||||
luchtvochtigheid langer dan een uur boven de 96% is. De verwarming wordt
|
||||
dan elke 20 minuten voor 5 minuten aangezet. In de 15 minuten die
|
||||
overblijven koelt de sensor weer af tot de omgevingstemperatuur. Dit
|
||||
proces wordt heraald totdat de sensor weer een waarde beneden de 96%
|
||||
aangeeft. Tijdens het opwarmen en afkoelen kan de luchtvochtigheid en
|
||||
temperatuur maar eens in de 20 minuten worden gemeten. Dit is de prijs
|
||||
die betaald moet worden wanneer we een goedkope luchtvochtigheidssensor
|
||||
gebruiken.</p>
|
||||
<h1 id="aprs">APRS</h1>
|
||||
<p>Om de weermetingen te kunnen uitzenden via het APRS netwerk is er een
|
||||
2 meter FM zender (een oude Alinco portofoon) en een 1200baud modem (een
|
||||
variant op het MicroModem van markqvist) nodig. En een computer om de
|
||||
gegevens via de ModBus uit het weerstation te lezen en door te sturen
|
||||
naar het modem. Een Raspberry Pi Zero 2W is daar perfect geschikt voor.
|
||||
Deze is goedkoop, klein en verbruikt weinig energie. Omdat een APRS
|
||||
weerstation ook zijn positie en tijd moet doorgeven om op de kaart gezet
|
||||
te kunnen worden is er een GPS module via USB aangesloten op de
|
||||
Raspberry Pi. Strikt genomen is de tijd niet noodzakelijk en omdat het
|
||||
station vast is opgesteld kan de positie ook handmatig worden ingesteld,
|
||||
maar een gps module voegt weer extra complexiteit toe en dat maakt het
|
||||
project net weer wat interessanter. Een eenvoudig Python programma leest
|
||||
het weerstation uit, vraagt de positie en de tijd van de gps ontvanger
|
||||
op en construeerd het APRS frame dat uitgezonden moet worden. Dit frame
|
||||
wordt vervolgens via de Linux AX.25 stack naar het modem gestuurd.</p>
|
||||
<p>Omdat APRS over LoRa op de 70cm band steeds poulairder wordt heb ik
|
||||
ook een LoRa module op de Raspberry Pi aangeloten. Het weerbericht kan
|
||||
zo ook via LoRa worden uitgezonden. De software hiervoor is een in
|
||||
Python geschreven KISS interface. Via deze software kan de LoRa module
|
||||
gekoppeld worden aan de AX.25 stack. De Raspberry Pi ziet het modem als
|
||||
elk ander KISS compatible modem.</p>
|
||||
<p>Met een diplexer worden de signalen van beide zenders samengevoegd en
|
||||
gaan zo naar een dualband antene.</p>
|
||||
<h1 id="hamnet">HamNet</h1>
|
||||
<p>Het syteem kan autonoom werken, maar het is handig (en noodzakelijk)
|
||||
om het systeem van afstand te kunnen bedienen en wanneer dat nodig is
|
||||
ook uit te kunnen schakelen. Daarvoor heb ik een 5GHz HamLink tussen het
|
||||
huis en het weerstation aangelegt. Op deze manier heb ik een snelle
|
||||
netwerkverbinding naar de Raspberry Pi en kan ik via telnet inloggen en
|
||||
het systeem bedienen. De verbindig wordt ook gebruikt om verbindig te
|
||||
maken met het APRS-IS netwerk op het internet. Zo doet mijn weerstation
|
||||
ook dienst als RX-only iGate voor zowel traditioneel APRS als LoRa APRS.
|
||||
De HamNet link maakt gebruik van commercieel verkrijgbare schotels. Ik
|
||||
gebruik apparatuur van Unifi Ubiquiti, maar apparatuur van Mikrotik is
|
||||
even goed geschikt.</p>
|
||||
<p>De snelle netwerkverbinding is handig, maar wanneer het systeem
|
||||
autonoom werkt is het wel een beetje een overkill, want de verbinding
|
||||
wordt dan enkel gebruikt om APRS berichten door te sturen naar het
|
||||
APRS-IS netwerk. Daarom heb ik ook nog een lage snelheid
|
||||
netwerkverbinding geintegreerd. Deze heeft een doorvoersnelheid van iets
|
||||
meer dan 20KB/s, wat genoeg is voor de toepassing. Het is zelfs mogelijk
|
||||
om via deze langzame verbinding in te loggen via telnet. Dat gaat dan
|
||||
wat trager, maar als backup is het prima geschikt. Zo heb ik twee
|
||||
manieren om het systeem van afstand te beheren. De verbinding gaat over
|
||||
LoRa via de 70cm band. Hiervoor gebruik ik een kant en klaar board, een
|
||||
LilyGO TTGO T3 LoRa32 433MHz V1.6.1 ESP32. Hierop heb ik de Rnode
|
||||
firmware van unsigned.io gezet. Met de bijbehorende Linux software
|
||||
(tncattach) wordt dit een netwerkinterface onder Linux waarover ik het
|
||||
netwerkverkeer kan leiden.</p>
|
||||
<h1 id="meer-informatie">Meer informatie</h1>
|
||||
<p>Dit artikel is slechts een introductie van het APRS weerstation. Meer
|
||||
informatie is te vinden op mijn website https://meezenest.nl/mees Daar
|
||||
vind je uitgebreide documentatie en alle ontwerpbestanden en broncode
|
||||
die je nodig hebt om zelf aan deslag te gaan.</p>
|
||||
<h1 id="verantwoording">Verantwoording</h1>
|
||||
<p><a
|
||||
href="https://www.meezenest.nl/mees-elektronica/projects/weather_station/build_doc/weather_station.html">Bouwbeschrijving
|
||||
weerstation:
|
||||
https://www.meezenest.nl/mees-elektronica/projects/weather_station/build_doc/weather_station.html</a></p>
|
||||
<p><a
|
||||
href="https://www.meezenest.nl/mees-elektronica/packetmodem_nano.html">1200bd
|
||||
modem:
|
||||
https://www.meezenest.nl/mees-elektronica/packetmodem_nano.html</a></p>
|
||||
<p><a href="https://git.meezenest.nl/marcel/RPi-LoRa-KISS-TNC">LoRa KISS
|
||||
software: https://git.meezenest.nl/marcel/RPi-LoRa-KISS-TNC</a></p>
|
||||
<p><a
|
||||
href="https://www.meezenest.nl/mees-elektronica/RPi_LoRa_shield.html">Raspberry
|
||||
Pi met LoRa module:
|
||||
https://www.meezenest.nl/mees-elektronica/RPi_LoRa_shield.html</a></p>
|
||||
<p>Copyright (C) 2023, 2024 M.T. Konstapel - PE1RXF</p>
|
||||
<p><a
|
||||
href="https://meezenest.nl/mees/">https://meezenest.nl/mees/</a></p>
|
||||
<p>This work is licensed under a Creative Commons Attribution-ShareAlike
|
||||
4.0 International License.</p>
|
||||
<hr>
|
||||
</article>
|
||||
</main>
|
||||
<footer>
|
||||
<p>©
|
||||
2024-02-03
|
||||
M.T. Konstapel
|
||||
<a href="https://meezenest.nl/mees/">https://meezenest.nl/mees/</a>
|
||||
</p><p>This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.
|
||||
</p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
71
article/weather_station_article.md
Normal file
@@ -0,0 +1,71 @@
|
||||
---
|
||||
title: APRS weerstation
|
||||
subtitle: met hamnet verbinding
|
||||
author: M.T. Konstapel
|
||||
date: 2024-02-03
|
||||
website: https://meezenest.nl/mees/
|
||||
page_back: https://meezenest.nl/mees/weather_station.html
|
||||
logo: ./images/mees_logo.svg
|
||||
pdf_version: ./weather_station_article.pdf
|
||||
git_repo: https://git.meezenest.nl/marcel/weather_station
|
||||
numbersections: true
|
||||
# Formatting:
|
||||
geometry: "a4paper, left=2.0cm, right=2.0cm, top=1.9cm, bottom=2.54cm"
|
||||
abstract: >
|
||||
Ik maak veel gebruik van het APRS netwerk: positiebepaling, telemetry en berichten versturen; ik doe het allemaal. Dit kan omdat ik dicht bij de Duitse grens woon: anders dan in Nederland waar het APRS netwerk dankzij lastige regelgeving nagenoeg is verdwenen, is in Duitsland het netwerk nog springlevend. Ik maak gebruik van Duitse digipeaters en iGates, die gewoon berichten vanaf het internet mogen doorzenden. Wat een geluk! Het enige wat ik nog niet kon, was weergegevens delen via het netwerk. Om daar verandering in te brengen heb ik een weerstation ontworpen dat elke 10 minuten een weerbericht kan uitzenden via het APRS netwerk. En omdat het systeem zo'n 100 meter van mijn huis in de acchtertuin staat, heb ik er ook een 5 GHz hamnet verbinding naar toe gemaakt, zodat ik het systeem op afstand kan bedienen. Het hamnet gebruik ik ook om de weermetingen naar mijn Grafana dashboard te sturen. Oh, en omdat twee beter is dan een heb ik er ook een 20KB/s hamnet link over 70cm LoRa als backup in geknutseld.
|
||||
---
|
||||
|
||||
# Weerstation
|
||||
|
||||
Als uitgangspunt van het weerstation gebruik ik de SparkFun Weather Meter. Dit is een kit met drie sensors: een windvaan, een anemometer en een regenmeter. Deze kit heb ik aangevuld met sensors voor temperatuur, luchtdruk en luctvochtigheid. Al deze sensors zijn rechtstreeks aangesloten op een Arduino Mini Pro. Ik heb daar een RS-485 driverchip en een ompoolbeveiliging aan toegevoegd. Het uiteindelijke schema is hieronder te zien. Ingewikkeld is de hardware niet, want alle fuctionaliteit zit in de software.
|
||||
|
||||

|
||||
|
||||
Het weerstation is uit te lezen via een ModBus interface. Dit is een industriestandaard, dus er zijn legio mogelijkheden om met het weerstation te communiceren. De ModBus registers bevatten de meetwaarden van de sensors en worden elke twee seconde ververst. Dit bepaald dus de maximale uitleesfrequentie. De volgende gegevens zijn beschikbaar:
|
||||
|
||||
- Windrichting in graden
|
||||
- Gemiddelde wind snelheid van de laatste 10 minuten in m/s
|
||||
- Maximale windstoot van de laatste 10 minuten in m/s
|
||||
- Hoeveelheid regen in het afgelopen uur in mm
|
||||
- Hoeveelheid regen in de afgelopen 24 uur in mm
|
||||
- Temperatuur in graden C
|
||||
- Luchtvochtigheid in %
|
||||
- Luchtdruk in hPa
|
||||
|
||||
Daarnaast zijn er nog een aantal statusregisters beschikbaar. Deze worden besproken in de uitgebreide bouwbeschrijving die beschikbaar is op mijn website.
|
||||
|
||||
De luchtvochtigheidssensor kan bij een hoge luchtvochtigheid verzadigd raken en zo blijven steken op 100%. Om dit te voorkomen is het mogelijk om de sensor automatisch te laten verwarmen wanneer de luchtvochtigheid langer dan een uur boven de 96% is. De verwarming wordt dan elke 20 minuten voor 5 minuten aangezet. In de 15 minuten die overblijven koelt de sensor weer af tot de omgevingstemperatuur. Dit proces wordt heraald totdat de sensor weer een waarde beneden de 96% aangeeft. Tijdens het opwarmen en afkoelen kan de luchtvochtigheid en temperatuur maar eens in de 20 minuten worden gemeten. Dit is de prijs die betaald moet worden wanneer we een goedkope luchtvochtigheidssensor gebruiken.
|
||||
|
||||
# APRS
|
||||
|
||||
Om de weermetingen te kunnen uitzenden via het APRS netwerk is er een 2 meter FM zender (een oude Alinco portofoon) en een 1200baud modem (een variant op het MicroModem van markqvist) nodig. En een computer om de gegevens via de ModBus uit het weerstation te lezen en door te sturen naar het modem. Een Raspberry Pi Zero 2W is daar perfect geschikt voor. Deze is goedkoop, klein en verbruikt weinig energie. Omdat een APRS weerstation ook zijn positie en tijd moet doorgeven om op de kaart gezet te kunnen worden is er een GPS module via USB aangesloten op de Raspberry Pi. Strikt genomen is de tijd niet noodzakelijk en omdat het station vast is opgesteld kan de positie ook handmatig worden ingesteld, maar een gps module voegt weer extra complexiteit toe en dat maakt het project net weer wat interessanter. Een eenvoudig Python programma leest het weerstation uit, vraagt de positie en de tijd van de gps ontvanger op en construeerd het APRS frame dat uitgezonden moet worden. Dit frame wordt vervolgens via de Linux AX.25 stack naar het modem gestuurd.
|
||||
|
||||
Omdat APRS over LoRa op de 70cm band steeds poulairder wordt heb ik ook een LoRa module op de Raspberry Pi aangeloten. Het weerbericht kan zo ook via LoRa worden uitgezonden. De software hiervoor is een in Python geschreven KISS interface. Via deze software kan de LoRa module gekoppeld worden aan de AX.25 stack. De Raspberry Pi ziet het modem als elk ander KISS compatible modem.
|
||||
|
||||
Met een diplexer worden de signalen van beide zenders samengevoegd en gaan zo naar een dualband antene.
|
||||
|
||||
# HamNet
|
||||
|
||||
Het syteem kan autonoom werken, maar het is handig (en noodzakelijk) om het systeem van afstand te kunnen bedienen en wanneer dat nodig is ook uit te kunnen schakelen. Daarvoor heb ik een 5GHz HamLink tussen het huis en het weerstation aangelegt. Op deze manier heb ik een snelle netwerkverbinding naar de Raspberry Pi en kan ik via telnet inloggen en het systeem bedienen. De verbindig wordt ook gebruikt om verbindig te maken met het APRS-IS netwerk op het internet. Zo doet mijn weerstation ook dienst als RX-only iGate voor zowel traditioneel APRS als LoRa APRS. De HamNet link maakt gebruik van commercieel verkrijgbare schotels. Ik gebruik apparatuur van Unifi Ubiquiti, maar apparatuur van Mikrotik is even goed geschikt.
|
||||
|
||||
De snelle netwerkverbinding is handig, maar wanneer het systeem autonoom werkt is het wel een beetje een overkill, want de verbinding wordt dan enkel gebruikt om APRS berichten door te sturen naar het APRS-IS netwerk. Daarom heb ik ook nog een lage snelheid netwerkverbinding geintegreerd. Deze heeft een doorvoersnelheid van iets meer dan 20KB/s, wat genoeg is voor de toepassing. Het is zelfs mogelijk om via deze langzame verbinding in te loggen via telnet. Dat gaat dan wat trager, maar als backup is het prima geschikt. Zo heb ik twee manieren om het systeem van afstand te beheren. De verbinding gaat over LoRa via de 70cm band. Hiervoor gebruik ik een kant en klaar board, een LilyGO TTGO T3 LoRa32 433MHz V1.6.1 ESP32. Hierop heb ik de Rnode firmware van unsigned.io gezet. Met de bijbehorende Linux software (tncattach) wordt dit een netwerkinterface onder Linux waarover ik het netwerkverkeer kan leiden.
|
||||
|
||||
# Meer informatie
|
||||
|
||||
Dit artikel is slechts een introductie van het APRS weerstation. Meer informatie is te vinden op mijn website https://meezenest.nl/mees Daar vind je uitgebreide documentatie en alle ontwerpbestanden en broncode die je nodig hebt om zelf aan de slag te gaan.
|
||||
|
||||
# Verantwoording
|
||||
|
||||
[Bouwbeschrijving weerstation: https://www.meezenest.nl/mees-elektronica/projects/weather_station/build_doc/weather_station.html](https://www.meezenest.nl/mees-elektronica/projects/weather_station/build_doc/weather_station.html)
|
||||
|
||||
[1200bd modem: https://www.meezenest.nl/mees-elektronica/packetmodem_nano.html](https://www.meezenest.nl/mees-elektronica/packetmodem_nano.html)
|
||||
|
||||
[LoRa KISS software: https://git.meezenest.nl/marcel/RPi-LoRa-KISS-TNC](https://git.meezenest.nl/marcel/RPi-LoRa-KISS-TNC)
|
||||
|
||||
[Raspberry Pi met LoRa module: https://www.meezenest.nl/mees-elektronica/RPi_LoRa_shield.html](https://www.meezenest.nl/mees-elektronica/RPi_LoRa_shield.html)
|
||||
|
||||
Copyright (C) 2023, 2024 M.T. Konstapel - PE1RXF
|
||||
|
||||
[https://meezenest.nl/mees/](https://meezenest.nl/mees/)
|
||||
|
||||
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
|
||||
@@ -1,264 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="297mm"
|
||||
height="210mm"
|
||||
viewBox="0 0 297 210"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
|
||||
sodipodi:docname="block_diagram.svg">
|
||||
<defs
|
||||
id="defs2" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.7"
|
||||
inkscape:cx="400"
|
||||
inkscape:cy="560"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:document-rotation="0"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1008"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<g
|
||||
transform="matrix(0.0015313,0,0,-0.0015313,36.549533,137.12808)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g10">
|
||||
<path
|
||||
d="m 6095,12794 c -27,-2 -115,-8 -195,-14 C 4030,12643 2289,11657 1185,10109 -320,7999 -397,5162 992,2977 1816,1681 3084,716 4540,276 5466,-3 6424,-71 7380,76 c 761,117 1520,381 2180,759 1230,704 2185,1777 2734,3070 866,2040 607,4403 -679,6204 -886,1241 -2181,2128 -3645,2496 -340,86 -633,135 -1005,171 -150,14 -756,27 -870,18 z m 547,-984 c 776,-36 1477,-217 2158,-556 560,-279 978,-580 1426,-1028 435,-435 743,-858 1008,-1386 325,-645 500,-1269 567,-2020 26,-288 14,-767 -27,-1095 -128,-1030 -548,-1992 -1224,-2805 -133,-160 -427,-458 -591,-601 -792,-688 -1757,-1133 -2774,-1278 -283,-41 -469,-53 -785,-53 -880,0 -1667,187 -2450,582 -738,373 -1398,931 -1901,1605 -552,742 -909,1630 -1023,2550 -55,438 -55,912 0,1350 115,926 471,1810 1031,2560 163,219 293,368 522,596 241,240 338,325 576,504 863,649 1910,1026 2980,1075 238,10 281,10 507,0 z"
|
||||
id="path4" />
|
||||
<path
|
||||
d="m 6240,10996 v -214 l -77,-6 c -431,-34 -740,-89 -1062,-191 -611,-193 -1123,-482 -1608,-908 l -130,-114 -155,148 -156,149 -110,-119 -111,-118 151,-151 152,-150 -75,-89 C 2395,8455 2022,7447 2020,6428 v -167 l -52,-5 c -29,-3 -125,-11 -213,-17 -88,-6 -161,-11 -162,-12 -4,-5 21,-313 26,-319 3,-4 96,0 205,8 110,8 205,13 213,10 7,-3 13,-20 13,-40 0,-63 60,-392 101,-552 80,-317 220,-686 361,-954 156,-298 322,-544 561,-831 82,-100 146,-184 140,-188 -25,-17 -313,-262 -313,-267 0,-11 204,-244 211,-242 4,2 169,138 365,303 197,165 364,305 372,310 11,9 -37,71 -233,305 -135,162 -281,344 -324,405 -372,523 -598,1102 -688,1765 -22,168 -26,712 -5,880 108,876 465,1631 1062,2244 627,643 1406,1026 2320,1138 66,8 223,13 420,13 197,0 354,-5 420,-13 755,-93 1397,-361 1980,-826 150,-120 433,-400 553,-547 423,-520 699,-1118 811,-1759 45,-260 51,-338 51,-680 -1,-280 -4,-347 -23,-481 -66,-466 -197,-882 -403,-1278 -151,-288 -279,-471 -609,-866 -192,-230 -239,-291 -228,-300 8,-5 175,-145 372,-310 196,-165 361,-301 365,-303 7,-2 211,231 211,242 0,5 -288,251 -314,268 -5,3 44,71 110,150 203,244 309,388 426,578 245,399 417,806 529,1253 42,166 99,481 99,543 0,20 6,37 13,40 8,3 103,-2 213,-10 109,-8 202,-12 205,-8 5,6 30,314 26,319 -1,1 -74,6 -162,12 -88,6 -183,14 -211,17 l -51,5 -6,247 c -11,459 -76,838 -217,1262 -183,555 -439,1011 -824,1468 l -70,84 152,150 151,151 -111,118 -110,119 -156,-149 -155,-148 -130,114 c -484,426 -997,715 -1608,908 -322,102 -631,157 -1061,191 l -78,6 v 214 214 h -160 -160 z"
|
||||
id="path6" />
|
||||
<path
|
||||
d="m 8385,8348 c -165,-138 -605,-505 -978,-816 l -679,-565 -56,27 c -31,15 -82,33 -112,41 -74,20 -246,19 -323,-1 -229,-59 -412,-243 -471,-472 -21,-80 -22,-229 -1,-317 8,-38 12,-71 7,-74 -5,-3 -151,-125 -326,-270 l -317,-264 98,-101 c 54,-56 156,-161 226,-233 70,-73 130,-133 132,-133 2,0 131,140 286,311 198,218 287,309 298,305 118,-37 270,-48 371,-26 193,43 359,175 445,355 52,107 65,166 65,285 0,103 -13,173 -47,249 l -23,54 23,26 c 121,131 1675,1850 1681,1859 4,7 6,12 4,11 -2,0 -138,-113 -303,-251 z"
|
||||
id="path8" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.00216713,0,0,-0.00216713,32.113648,120.65624)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g10-1">
|
||||
<path
|
||||
d="m 11241,8109 c -271,-58 -564,-218 -911,-498 -368,-296 -560,-417 -825,-516 -295,-111 -619,-116 -920,-13 -249,84 -471,218 -796,479 -80,65 -195,151 -255,192 -567,389 -1112,468 -1676,241 -220,-88 -427,-217 -703,-439 -306,-246 -562,-400 -795,-479 -271,-91 -558,-90 -827,5 -239,85 -461,223 -828,518 -377,302 -681,456 -1010,508 -131,21 -373,13 -496,-16 -271,-62 -582,-223 -863,-446 -47,-38 -86,-72 -86,-77 0,-11 280,-428 288,-428 2,0 48,33 101,74 507,388 882,458 1315,248 160,-78 291,-166 521,-351 236,-190 430,-320 627,-421 223,-114 394,-172 618,-211 106,-19 383,-16 500,4 385,66 763,260 1215,622 209,168 346,260 490,330 203,99 352,135 552,135 335,0 615,-123 1023,-451 424,-340 748,-519 1105,-609 164,-42 280,-53 483,-48 286,8 495,64 797,213 206,101 411,236 635,416 227,183 346,270 455,335 292,171 519,202 786,104 144,-52 333,-168 522,-320 48,-38 91,-70 95,-70 4,0 72,97 152,216 l 145,215 -25,20 c -364,290 -605,428 -885,506 -129,36 -387,42 -524,12 z"
|
||||
id="path4-7" />
|
||||
<path
|
||||
d="m 11276,6634 c -219,-40 -480,-162 -741,-348 -38,-28 -146,-111 -240,-186 -364,-290 -581,-420 -841,-506 -158,-51 -259,-68 -424,-68 -228,0 -404,42 -640,155 -201,97 -336,185 -590,389 -248,198 -368,278 -571,379 -508,253 -993,254 -1504,2 -175,-86 -336,-192 -530,-347 -296,-237 -424,-323 -620,-419 -238,-117 -407,-159 -630,-158 -212,1 -375,42 -600,153 -188,92 -343,198 -635,433 -341,276 -648,436 -960,503 -118,26 -389,26 -514,1 -214,-43 -462,-152 -686,-302 -167,-111 -295,-213 -294,-233 0,-10 64,-111 141,-225 l 141,-208 34,29 c 18,16 76,60 128,99 477,349 841,406 1266,198 145,-71 280,-163 489,-330 198,-159 350,-268 490,-352 600,-360 1161,-407 1751,-145 238,106 469,256 788,514 194,157 399,283 566,347 256,99 535,106 795,20 202,-67 391,-181 670,-405 322,-258 636,-446 905,-541 708,-251 1374,-75 2155,569 280,231 474,351 665,413 123,40 283,46 415,16 167,-39 385,-161 619,-347 l 105,-83 146,215 c 171,252 172,209 -8,346 -398,303 -726,440 -1051,437 -61,0 -147,-7 -190,-15 z"
|
||||
id="path6-5" />
|
||||
<path
|
||||
d="m 11300,5155 c -299,-49 -631,-227 -1015,-545 -364,-302 -694,-480 -1005,-546 -41,-8 -131,-18 -200,-21 -393,-18 -784,146 -1260,527 -277,222 -434,327 -626,416 -669,310 -1303,197 -1990,-358 -247,-199 -344,-268 -517,-368 -359,-206 -697,-266 -1029,-181 -275,69 -526,211 -878,496 -413,334 -692,486 -1024,557 -143,30 -389,30 -529,0 -230,-50 -457,-152 -687,-306 -139,-94 -290,-211 -290,-225 0,-6 271,-415 285,-429 2,-2 46,30 98,71 258,202 483,316 705,358 38,7 112,10 195,6 160,-6 257,-31 427,-113 148,-71 273,-155 487,-326 195,-157 311,-242 431,-317 310,-194 593,-304 879,-342 131,-17 399,-6 528,21 369,78 726,268 1155,614 319,258 548,383 812,442 101,23 345,23 448,0 119,-26 196,-54 325,-116 146,-70 275,-156 460,-304 333,-267 541,-400 801,-512 537,-233 1046,-217 1589,51 241,118 397,222 702,466 357,286 563,402 781,440 87,15 238,6 332,-21 157,-45 370,-168 585,-338 55,-44 103,-78 107,-76 3,2 70,99 148,215 138,205 142,212 124,229 -45,43 -229,180 -339,253 -135,89 -342,194 -455,231 -178,58 -396,78 -560,51 z"
|
||||
id="path8-9" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.0021812,0,0,-0.0021812,39.444752,171.47037)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g6">
|
||||
<path
|
||||
d="m 2998,12790 c -315,-57 -548,-268 -644,-585 -18,-58 -19,-222 -22,-4115 l -3,-4055 -72,-50 c -86,-60 -250,-215 -323,-306 -379,-473 -476,-1119 -253,-1683 195,-493 612,-859 1134,-995 213,-56 533,-66 747,-22 221,45 468,151 648,279 114,81 297,259 372,362 150,206 250,425 299,655 94,445 5,902 -248,1285 -93,140 -292,344 -425,435 l -87,60 -3,4045 -3,4045 -23,73 c -85,276 -283,473 -554,553 -62,18 -103,22 -283,25 -115,1 -231,-1 -257,-6 z"
|
||||
id="path4-1" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.00179894,0,0,-0.00179894,34.443075,39.477629)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g10-7">
|
||||
<path
|
||||
d="m 6950,10549 c -782,-79 -1408,-535 -1640,-1194 -48,-139 -99,-382 -100,-482 v -23 h 994 994 l 31,-26 c 59,-49 65,-162 11,-216 l -28,-28 H 3606 0 v -98 c 0,-122 15,-369 36,-572 42,-430 118,-803 260,-1292 5,-17 181,-18 3519,-18 3851,0 3610,-4 3856,59 661,167 1188,657 1399,1299 273,833 -24,1729 -745,2243 -232,166 -522,283 -825,334 -116,19 -420,27 -550,14 z"
|
||||
id="path4-8" />
|
||||
<path
|
||||
d="M 10600,8243 C 9884,8170 9320,7808 9039,7242 8948,7058 8879,6810 8864,6617 l -7,-87 h 1013 1013 l 23,-21 c 44,-41 43,-171 -1,-215 l -24,-24 H 5650 c -2876,0 -5230,-2 -5230,-5 0,-2 22,-60 49,-127 246,-616 588,-1196 1025,-1735 l 91,-112 4668,-1 c 3217,0 4698,3 4765,11 456,49 849,233 1176,549 314,303 506,670 583,1115 24,138 24,470 -1,610 -73,427 -258,793 -547,1083 -324,325 -715,519 -1162,577 -106,13 -370,18 -467,8 z"
|
||||
id="path6-57" />
|
||||
<path
|
||||
d="m 1890,3956 c 0,-10 365,-343 485,-443 962,-801 2115,-1308 3345,-1472 391,-53 429,-54 1699,-60 l 1194,-6 20,-26 c 44,-59 38,-181 -10,-219 -25,-20 -39,-20 -1022,-20 h -997 l 8,-82 c 51,-531 322,-983 768,-1282 108,-73 337,-185 460,-226 457,-152 939,-158 1364,-19 803,263 1354,1018 1358,1859 0,224 -18,366 -73,560 -100,349 -287,656 -550,904 -285,267 -609,429 -1026,513 -83,17 -275,18 -3555,21 -1908,1 -3468,0 -3468,-2 z"
|
||||
id="path8-4" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(-0.00273933,0,0,-0.00273933,63.532847,64.839589)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g6-5">
|
||||
<path
|
||||
d="m 7360,7349 c -704,-67 -1328,-436 -1670,-987 -110,-179 -180,-348 -237,-580 -45,-184 -49,-296 -16,-480 26,-140 39,-293 29,-344 -3,-18 -19,-49 -35,-68 -27,-33 -32,-35 -104,-38 -69,-4 -80,-1 -134,27 -136,73 -330,254 -419,391 -82,127 -164,330 -164,406 0,22 0,22 68,-6 93,-40 179,-52 327,-48 125,3 127,3 151,31 54,63 21,126 -142,273 -146,131 -144,129 -144,168 0,19 4,47 10,61 l 10,26 49,-26 c 27,-15 81,-56 119,-91 l 71,-64 30,43 c 143,209 59,553 -184,750 -107,87 -214,132 -350,147 -81,9 -114,-1 -181,-55 -23,-19 -46,-35 -50,-35 -4,0 -4,34 0,76 l 7,77 -68,-7 c -99,-10 -179,-33 -257,-74 -184,-96 -275,-254 -249,-430 6,-35 6,-62 1,-62 -5,0 -31,11 -58,25 -74,38 -194,75 -239,75 -33,0 -41,-4 -41,-18 0,-40 57,-129 137,-213 l 85,-89 h -52 c -28,0 -97,11 -152,25 -55,14 -103,24 -105,21 -10,-9 52,-109 82,-131 16,-13 51,-33 77,-44 52,-22 63,-37 72,-101 l 6,-45 -95,-75 c -143,-112 -256,-185 -392,-251 -67,-32 -127,-67 -133,-78 -13,-25 -13,-92 -1,-125 6,-13 37,-43 71,-66 74,-51 100,-89 100,-151 0,-49 -4,-56 -99,-171 -52,-63 -132,-227 -155,-318 -9,-36 -19,-110 -22,-165 -5,-84 -2,-120 20,-230 63,-306 163,-492 381,-711 179,-179 366,-295 605,-375 93,-30 100,-31 295,-33 178,-2 208,-5 270,-25 190,-63 322,-161 434,-323 45,-65 65,-84 140,-132 127,-81 210,-177 247,-289 13,-40 40,-75 139,-177 170,-178 220,-267 246,-444 12,-81 7,-128 -31,-265 -11,-41 -20,-96 -20,-123 v -48 H 3854 2068 l 50,63 c 40,50 779,1007 816,1056 6,8 7,12 1,9 -5,-3 -608,-259 -1340,-568 C 864,1611 211,1335 144,1306 77,1278 23,1251 24,1245 25,1240 266,1133 560,1009 2512,183 2923,10 2927,14 c 2,2 -189,253 -425,557 l -429,554 3774,3 3773,2 683,-411 c 375,-226 696,-420 713,-430 30,-18 66,-19 903,-19 479,0 871,3 871,8 0,4 -216,223 -480,487 l -480,480 480,480 c 264,264 480,483 480,488 0,4 -393,7 -873,7 h -873 l -712,-430 -713,-430 H 8061 6502 l -6,23 c -3,12 -28,61 -57,107 -79,131 -96,170 -113,259 -35,181 -23,236 108,494 94,186 105,213 133,338 35,150 91,302 155,418 43,77 216,312 253,343 48,41 112,53 285,53 142,0 176,-3 244,-23 170,-49 322,-139 444,-263 95,-98 112,-124 112,-179 0,-124 -68,-278 -165,-376 -81,-81 -148,-113 -276,-130 -56,-7 -103,-15 -106,-17 -2,-3 13,-19 34,-36 72,-60 254,-138 449,-192 98,-27 369,-38 496,-20 250,36 447,132 604,293 95,98 131,149 184,260 54,113 81,221 86,348 l 4,105 62,38 c 222,135 371,414 354,662 -3,50 -9,115 -12,145 -6,51 -3,60 35,126 59,103 85,213 78,329 -12,171 -72,354 -164,493 -21,31 -80,101 -131,154 l -93,96 31,24 c 41,30 114,127 151,200 92,182 97,405 14,649 -56,162 -151,297 -354,499 -406,404 -922,667 -1492,760 -131,21 -324,25 -489,9 z"
|
||||
id="path4-3" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.00194266,0,0,-0.00194266,33.521214,95.401876)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g32">
|
||||
<path
|
||||
d="m 6710,12673 c -25,-2 -90,-10 -145,-19 -533,-81 -1001,-335 -1367,-742 l -65,-73 -84,45 c -869,470 -1958,306 -2664,-399 -315,-316 -513,-683 -619,-1147 -5,-23 -15,-30 -64,-43 -136,-38 -306,-101 -427,-160 C 605,9807 139,9173 24,8430 2,8288 -1,7939 18,7805 163,6801 900,6037 1895,5859 c 113,-21 162,-24 380,-23 266,0 345,8 545,59 229,58 493,173 681,296 l 93,61 51,-12 c 284,-67 433,-84 678,-77 181,5 335,26 492,65 l 70,18 75,-60 c 307,-244 686,-408 1083,-466 150,-23 445,-27 587,-10 416,52 839,229 1148,481 l 73,60 89,-51 c 268,-153 567,-253 875,-291 117,-14 417,-14 525,0 225,30 486,103 667,186 l 83,38 127,-19 c 170,-25 470,-25 633,0 515,79 970,315 1323,686 325,342 525,752 603,1235 22,136 25,485 6,620 -99,685 -474,1268 -1050,1632 -320,202 -774,341 -1120,343 h -72 l -113,113 c -388,393 -872,620 -1432,672 l -70,7 -56,102 c -268,481 -730,863 -1260,1039 -272,91 -610,132 -899,110 z"
|
||||
id="path4-88" />
|
||||
<path
|
||||
d="m 3943,5543 c -60,-12 -557,-585 -717,-828 -121,-183 -153,-279 -143,-435 17,-274 207,-501 474,-565 101,-24 243,-17 340,17 182,65 322,205 385,388 34,96 32,291 -5,496 -41,230 -114,542 -187,794 -38,134 -56,151 -147,133 z"
|
||||
id="path6-3" />
|
||||
<path
|
||||
d="m 7553,5543 c -44,-9 -441,-455 -632,-712 -183,-246 -226,-345 -225,-521 1,-87 5,-119 27,-183 71,-205 236,-360 442,-412 76,-19 214,-19 290,0 114,29 203,81 290,169 87,88 133,167 161,278 42,162 -10,521 -156,1079 -84,320 -86,323 -197,302 z"
|
||||
id="path8-1" />
|
||||
<path
|
||||
d="m 11163,5542 c -43,-13 -429,-447 -608,-684 -112,-148 -183,-261 -217,-348 -19,-47 -22,-75 -23,-190 0,-116 3,-145 23,-202 83,-241 300,-403 555,-416 288,-14 526,153 623,438 52,154 -10,582 -171,1167 -58,213 -75,244 -129,242 -17,-1 -41,-4 -53,-7 z"
|
||||
id="path10-8" />
|
||||
<path
|
||||
d="m 5303,4620 c -32,-7 -108,-82 -289,-285 -275,-308 -453,-545 -526,-702 -160,-341 44,-750 422,-844 30,-7 98,-13 150,-13 257,3 483,165 572,410 57,160 23,475 -107,991 -115,455 -122,467 -222,443 z"
|
||||
id="path12-9" />
|
||||
<path
|
||||
d="m 8918,4623 c -62,-10 -548,-565 -723,-828 -117,-174 -145,-252 -145,-404 0,-166 54,-301 169,-423 117,-125 263,-190 431,-192 109,-1 176,13 275,59 161,73 293,232 336,405 38,151 -2,451 -127,955 -76,304 -102,388 -130,413 -25,22 -32,23 -86,15 z"
|
||||
id="path14-6" />
|
||||
<path
|
||||
d="m 6664,3698 c -36,-8 -56,-24 -141,-116 -446,-484 -663,-775 -717,-961 -26,-88 -21,-243 9,-339 38,-120 119,-237 214,-307 249,-182 575,-163 794,45 154,146 210,310 186,544 -23,233 -110,641 -210,986 -41,140 -62,163 -135,148 z"
|
||||
id="path16-4" />
|
||||
<path
|
||||
d="m 10275,3696 c -33,-9 -64,-36 -167,-146 -229,-245 -448,-510 -562,-680 -118,-176 -152,-277 -143,-435 11,-209 121,-393 298,-498 393,-232 898,31 926,482 9,154 -46,484 -152,896 -81,315 -95,356 -130,376 -25,13 -37,14 -70,5 z"
|
||||
id="path18-3" />
|
||||
<path
|
||||
d="m 3024,3691 c -21,-9 -181,-177 -320,-336 -334,-382 -485,-607 -520,-775 -66,-312 148,-639 466,-714 320,-76 654,127 737,447 33,128 3,402 -83,776 -61,263 -142,554 -162,580 -20,28 -78,38 -118,22 z"
|
||||
id="path20-3" />
|
||||
<path
|
||||
d="m 4393,2773 c -52,-10 -509,-527 -687,-776 -73,-102 -134,-214 -157,-287 -26,-81 -28,-236 -4,-324 55,-207 237,-387 444,-441 80,-20 226,-21 304,0 214,56 381,217 442,430 38,130 13,383 -76,779 -42,185 -130,519 -150,569 -20,48 -52,62 -116,50 z"
|
||||
id="path22-3" />
|
||||
<path
|
||||
d="m 8008,2773 c -20,-3 -62,-41 -146,-131 -367,-391 -619,-720 -689,-897 -24,-63 -27,-83 -28,-195 0,-106 4,-136 24,-199 51,-154 171,-292 316,-361 105,-49 159,-62 276,-61 171,1 306,58 430,181 132,131 188,282 176,474 -12,181 -60,441 -147,786 -65,257 -98,362 -121,387 -22,22 -34,25 -91,16 z"
|
||||
id="path24" />
|
||||
<path
|
||||
d="m 2140,1850 c -38,-9 -111,-81 -304,-300 -315,-356 -486,-591 -536,-733 -64,-182 -38,-378 72,-543 120,-179 332,-285 545,-271 268,18 498,208 563,465 16,62 14,241 -5,362 -43,285 -196,924 -238,990 -9,15 -52,43 -60,39 -1,-1 -18,-5 -37,-9 z"
|
||||
id="path26" />
|
||||
<path
|
||||
d="m 5754,1848 c -37,-8 -57,-26 -177,-156 -415,-451 -636,-753 -682,-929 -20,-75 -19,-210 1,-292 41,-165 176,-333 326,-405 151,-72 315,-84 465,-33 99,34 156,69 233,143 109,104 175,239 187,378 15,179 -82,690 -222,1171 -36,124 -52,139 -131,123 z"
|
||||
id="path28" />
|
||||
<path
|
||||
d="m 9371,1850 c -41,-10 -105,-72 -291,-280 -375,-422 -535,-650 -576,-827 -33,-139 1,-322 82,-451 170,-269 502,-365 789,-229 142,68 265,205 316,354 21,60 24,85 23,218 -1,187 -36,394 -135,785 -72,288 -105,393 -134,418 -14,12 -29,22 -33,21 -4,-1 -22,-5 -41,-9 z"
|
||||
id="path30" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.0034974,0,0,-0.0034974,224.36301,104.36607)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g30">
|
||||
<path
|
||||
d="M 815,5855 C 501,5811 237,5619 100,5337 73,5281 41,5197 28,5150 L 5,5065 V 3205 C 5,1461 6,1341 23,1276 116,912 382,647 740,563 c 71,-17 345,-18 5660,-18 5315,0 5589,1 5660,18 358,84 624,349 717,713 17,65 18,185 18,1929 v 1860 l -23,85 c -105,388 -422,663 -817,709 -143,17 -11021,13 -11140,-4 z m 11188,-364 c 90,-24 133,-44 212,-104 97,-73 176,-191 212,-318 17,-61 18,-152 18,-1864 0,-1688 -1,-1804 -18,-1864 -58,-210 -218,-370 -428,-428 -61,-17 -345,-18 -5599,-18 -5254,0 -5538,1 -5599,18 -210,58 -370,218 -428,428 -17,60 -18,176 -18,1864 0,1712 1,1803 18,1864 47,165 162,307 310,383 22,11 71,28 110,38 70,18 228,19 5603,19 5440,1 5532,1 5607,-18 z"
|
||||
id="path4-86" />
|
||||
<path
|
||||
d="m 3719,5115 c -335,-53 -612,-289 -718,-613 -46,-140 -53,-242 -30,-452 85,-796 191,-1806 199,-1900 5,-63 19,-150 30,-194 88,-332 358,-588 695,-657 84,-17 194,-19 1635,-29 850,-6 1991,-12 2535,-13 943,-2 993,-1 1060,17 385,104 647,410 684,798 6,57 31,238 55,403 25,165 82,543 126,840 44,297 91,613 105,702 29,187 31,274 9,380 -35,170 -108,313 -223,435 -155,165 -333,257 -554,287 -54,8 -932,11 -2800,10 -2220,-1 -2738,-3 -2808,-14 z m 5626,-280 c 275,-57 495,-316 495,-581 0,-34 -18,-181 -39,-326 -143,-948 -261,-1754 -266,-1818 -21,-230 -150,-419 -349,-515 -50,-24 -118,-49 -151,-56 -62,-12 -1014,-10 -3830,11 -1341,10 -1269,6 -1415,78 -56,27 -96,57 -155,117 -97,97 -148,190 -170,310 -8,44 -42,343 -75,665 -33,322 -83,799 -111,1060 -50,469 -51,476 -36,554 41,206 192,393 378,467 126,50 -11,47 2914,48 2369,1 2749,-1 2810,-14 z"
|
||||
id="path6-0" />
|
||||
<path
|
||||
d="m 4148,4229 c -113,-17 -218,-96 -267,-199 -22,-47 -26,-69 -26,-150 0,-81 4,-103 26,-150 33,-70 99,-136 169,-169 47,-22 69,-26 150,-26 81,0 103,4 150,26 195,92 261,339 139,523 -69,104 -212,165 -341,145 z"
|
||||
id="path8-48" />
|
||||
<path
|
||||
d="m 5280,4228 c -95,-15 -179,-69 -233,-151 -46,-70 -59,-115 -59,-203 1,-189 144,-334 337,-342 113,-5 180,21 261,102 75,75 104,143 104,246 0,221 -189,382 -410,348 z"
|
||||
id="path10" />
|
||||
<path
|
||||
d="m 6318,4229 c -286,-44 -401,-393 -196,-599 63,-63 135,-94 233,-98 114,-5 180,21 261,102 75,75 104,143 104,246 0,217 -190,382 -402,349 z"
|
||||
id="path12" />
|
||||
<path
|
||||
d="m 7474,4229 c -172,-22 -304,-173 -304,-349 0,-101 42,-193 120,-263 153,-138 405,-109 521,60 45,65 61,119 62,203 0,103 -29,175 -96,243 -86,86 -185,121 -303,106 z"
|
||||
id="path14" />
|
||||
<path
|
||||
d="m 8578,4229 c -113,-18 -218,-96 -267,-199 -22,-47 -26,-69 -26,-150 0,-81 4,-103 26,-150 33,-70 99,-136 169,-169 47,-22 69,-26 150,-26 81,0 103,4 150,26 286,135 261,559 -39,653 -64,20 -108,24 -163,15 z"
|
||||
id="path16" />
|
||||
<path
|
||||
d="m 4718,2946 c -74,-30 -128,-74 -167,-134 -152,-237 15,-544 294,-544 208,0 369,173 352,378 -8,111 -68,210 -162,269 -98,61 -215,73 -317,31 z"
|
||||
id="path18" />
|
||||
<path
|
||||
d="m 5749,2947 c -75,-31 -122,-69 -162,-130 -47,-71 -61,-119 -60,-202 1,-103 32,-176 104,-246 72,-72 143,-101 245,-101 155,0 288,94 335,239 50,151 -6,314 -140,404 -95,64 -219,78 -322,36 z"
|
||||
id="path20" />
|
||||
<path
|
||||
d="m 6900,2948 c -78,-30 -169,-123 -199,-203 -31,-82 -27,-196 10,-275 56,-119 179,-201 307,-203 87,-1 144,15 211,62 235,161 191,521 -75,621 -74,27 -180,26 -254,-2 z"
|
||||
id="path22" />
|
||||
<path
|
||||
d="m 8008,2947 c -216,-91 -290,-352 -153,-539 68,-92 165,-140 288,-140 65,0 87,5 140,30 77,36 142,100 176,172 22,47 26,69 26,150 0,81 -4,103 -25,145 -34,70 -99,136 -167,171 -48,24 -72,29 -143,32 -71,2 -94,-1 -142,-21 z"
|
||||
id="path24-8" />
|
||||
<path
|
||||
d="m 1230,4060 c -336,-73 -601,-331 -681,-665 -27,-110 -29,-284 -6,-392 96,-444 510,-745 962,-701 539,53 909,578 775,1102 -119,467 -584,757 -1050,656 z m 390,-293 c 423,-150 547,-689 230,-1008 -194,-195 -464,-240 -709,-118 -216,107 -354,347 -337,585 16,214 140,407 325,503 110,57 173,71 306,67 88,-2 125,-8 185,-29 z"
|
||||
id="path26-8" />
|
||||
<path
|
||||
d="m 11365,4074 c -11,-2 -47,-10 -80,-16 -71,-14 -207,-66 -267,-104 -299,-186 -462,-512 -427,-854 12,-115 32,-189 80,-289 165,-348 514,-546 894,-509 207,20 388,105 533,249 166,164 256,365 269,599 21,410 -253,784 -659,900 -71,21 -293,36 -343,24 z m 315,-307 c 91,-32 195,-102 256,-171 56,-64 122,-193 140,-277 78,-364 -180,-709 -556,-744 -165,-16 -351,55 -475,179 -188,189 -235,462 -120,701 76,158 234,287 403,330 91,23 259,15 352,-18 z"
|
||||
id="path28-9" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.0082441,0,0,-0.0082441,107.86104,145.26348)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g12">
|
||||
<path
|
||||
d="m 7484,12789 c -67,-19 -123,-121 -109,-198 15,-81 61,-135 125,-148 l 30,-6 -2,-2120 -3,-2121 -47,3 -48,3 v -166 -166 h -195 -195 l -2,163 -3,162 -55,1 -55,1 -3,1128 c -2,1114 -2,1127 18,1152 27,35 43,99 35,142 -10,57 -50,116 -91,136 -49,23 -148,17 -186,-10 -65,-48 -90,-154 -55,-236 20,-50 76,-90 132,-97 l 45,-5 -2,-1104 -3,-1105 -85,-2 -85,-1 -3,-162 -2,-163 h -195 -194 v 163 162 h -83 -83 l -5,720 -5,720 -542,3 -543,2 v 755 755 l 28,42 c 23,36 27,52 27,113 0,63 -3,76 -28,108 -38,50 -75,67 -145,67 -45,0 -67,-6 -93,-23 -67,-44 -98,-153 -65,-230 17,-41 76,-93 115,-102 l 31,-7 v -789 -789 h 555 555 v -672 -673 h -52 -53 l -3,-162 -2,-163 h -195 -195 l -2,163 -3,162 h -48 -47 v 418 417 h -633 -634 l -24,26 c -37,40 -73,54 -137,54 -45,0 -67,-5 -93,-23 -110,-74 -104,-253 11,-314 109,-58 238,3 257,122 l 6,35 h 553 554 l -2,-366 -3,-367 -70,-1 -70,-1 -3,-162 -2,-163 h -195 -195 l -2,163 -3,162 h -30 l -30,1 -3,182 -2,182 H 3527 2435 l -50,26 c -123,63 -255,-19 -255,-159 0,-62 19,-105 63,-144 93,-82 246,-32 279,91 l 12,46 h 1003 1004 l -3,-111 -3,-111 -95,-1 -95,-2 -3,-162 -2,-163 h -240 -240 v -345 -345 h -165 -165 v -40 -40 H 2442 1403 l -33,41 c -94,117 -272,81 -310,-63 -21,-77 10,-159 79,-205 26,-17 48,-23 91,-23 67,0 111,25 149,83 l 24,37 h 1039 1038 v -90 -90 h 165 165 v -195 -195 h -165 -165 v -70 -70 H 1870 260 v 930 930 l 25,16 c 41,27 68,96 63,165 -5,62 -23,97 -69,132 -56,41 -152,41 -208,0 -58,-42 -85,-139 -60,-214 13,-38 63,-96 91,-105 17,-5 18,-51 20,-997 l 3,-992 1677,-3 1678,-2 v -60 -60 h 165 165 v -195 -195 h -164 -165 l -3,-47 -3,-48 -1037,-3 -1036,-2 -31,-39 -31,-39 v -740 -740 l -35,-6 c -110,-21 -168,-180 -101,-278 35,-51 70,-71 134,-76 100,-7 158,35 184,133 13,50 0,125 -28,156 -12,13 -14,125 -14,753 0,489 -3,744 -10,757 -11,19 4,19 1000,19 h 1010 v -95 -95 h 165 165 v -285 -285 h 300 300 v -165 -165 h 40 40 v -779 c 0,-772 0,-779 -21,-805 l -20,-26 h -657 l -657,1 -20,31 c -30,48 -78,71 -145,71 -104,0 -173,-71 -174,-178 -1,-197 249,-255 334,-78 l 25,53 h 674 673 l 59,51 59,51 v 804 804 h 90 90 v 165 165 h 195 195 v -161 c 0,-152 1,-161 20,-166 20,-5 20,-14 20,-1818 V 691 l -26,-20 c -26,-21 -36,-21 -550,-21 -330,0 -524,4 -524,10 0,18 -65,83 -97,96 -80,34 -178,2 -221,-71 -33,-58 -28,-157 11,-209 41,-53 78,-69 151,-64 74,4 116,30 143,88 l 18,39 541,1 h 541 l 74,53 74,53 3,1837 2,1836 108,3 107,3 3,163 2,162 h 195 195 v -165 -165 h 50 50 V 2800 1281 l -42,-12 c -110,-29 -154,-161 -94,-277 32,-62 117,-93 197,-72 116,31 163,186 88,291 -18,26 -19,71 -19,1568 v 1541 h 80 80 v 165 165 h 195 195 v -165 -165 h 80 80 V 2325 c 0,-1961 0,-1994 -19,-2005 -13,-6 -241,-10 -671,-10 -647,0 -651,0 -679,21 -78,57 -194,37 -255,-44 -32,-43 -34,-150 -4,-202 41,-71 143,-104 221,-71 44,18 95,78 103,121 l 6,35 h 650 651 l 68,56 69,56 v 2019 2019 h 45 45 v 165 165 h 195 195 l 2,-163 3,-162 h 195 195 l 3,163 2,162 h 195 195 v -165 -165 h 195 195 v 165 165 h 195 195 l 2,-162 3,-163 192,-3 193,-2 2,162 3,163 393,3 392,2 v 490 490 h 160 160 v 60 60 h 660 660 v -770 -770 l -39,-24 c -77,-49 -103,-161 -58,-247 58,-109 218,-122 293,-23 26,34 29,45 29,114 0,69 -3,80 -29,114 -16,21 -44,44 -62,52 l -34,14 -2,838 -3,837 -707,3 -708,2 v 68 67 l -160,-3 -160,-3 v 201 200 h 160 159 l 3,88 3,87 801,3 801,2 18,-41 c 61,-134 254,-130 316,6 65,143 -52,291 -201,255 -44,-11 -110,-59 -110,-81 0,-5 -344,-8 -812,-7 l -813,3 -3,38 -3,37 h -160 -159 v 530 530 h -450 -450 l -2,163 c -2,123 -6,161 -15,160 -10,-2 -13,184 -13,907 v 910 h 900 899 l 19,-43 c 28,-63 72,-91 152,-95 55,-3 70,0 99,20 62,42 76,70 76,156 0,90 -21,129 -85,162 -70,36 -149,24 -205,-31 l -31,-29 -964,-2 -965,-3 -3,-975 -2,-975 -125,3 -125,3 v -165 -166 h -197 -198 v 163 162 l -45,1 -45,1 -3,1581 -2,1582 727,2 727,3 -3,446 -3,446 34,24 c 46,33 65,58 78,106 31,109 -40,220 -148,231 -65,6 -114,-11 -151,-53 -79,-90 -56,-233 46,-287 l 43,-23 v -398 -399 l -740,3 -740,2 -3,-1632 -2,-1633 -80,-1 -80,-2 -3,-162 -2,-163 h -195 -195 l -2,163 -3,162 -73,1 -72,2 v 2137 c 0,2120 0,2137 20,2165 31,44 44,117 31,168 -28,103 -126,153 -237,121 z"
|
||||
id="path4-77" />
|
||||
<path
|
||||
d="m 7670,4298 c 0,-2 -1,-621 -3,-1377 l -2,-1374 -44,-13 c -80,-23 -123,-83 -124,-173 0,-77 32,-134 95,-167 39,-20 122,-18 167,6 98,49 120,206 41,287 l -30,31 -2,1388 -3,1389 -47,3 c -27,2 -48,2 -48,0 z"
|
||||
id="path6-6" />
|
||||
<path
|
||||
d="M 8510,2775 V 1250 h 873 l 872,-1 20,-41 c 31,-65 63,-83 150,-83 59,0 79,4 102,21 104,77 95,255 -17,312 -25,12 -62,22 -85,22 -51,-1 -119,-31 -140,-64 l -17,-26 h -809 -809 l -2,1453 -3,1452 -67,3 -68,3 z"
|
||||
id="path8-43" />
|
||||
<path
|
||||
d="m 9255,4288 c -3,-7 -4,-495 -3,-1083 l 3,-1070 932,-5 933,-5 22,-45 c 33,-65 76,-90 153,-90 68,0 110,21 149,73 32,43 34,150 4,202 -41,71 -143,104 -221,71 -32,-13 -97,-78 -97,-96 0,-6 -323,-10 -885,-10 h -885 l -2,1033 -3,1032 -48,3 c -32,2 -49,-1 -52,-10 z"
|
||||
id="path10-0" />
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:7.05556px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
|
||||
x="66.262383"
|
||||
y="59.720398"
|
||||
id="text1011"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1009"
|
||||
x="66.262383"
|
||||
y="59.720398"
|
||||
style="stroke-width:0.264583">wind direction</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:7.05556px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
|
||||
x="66.133461"
|
||||
y="33.495533"
|
||||
id="text1011-0"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1009-9"
|
||||
x="66.133461"
|
||||
y="33.495533"
|
||||
style="stroke-width:0.264583">wind speed</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:7.05556px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
|
||||
x="-99.34082"
|
||||
y="65.733406"
|
||||
id="text1011-2"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1009-5"
|
||||
x="-99.34082"
|
||||
y="65.733406"
|
||||
style="stroke-width:0.264583">rain fall</tspan></text>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 28 KiB |
@@ -1,284 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="297mm"
|
||||
height="210mm"
|
||||
viewBox="0 0 297 210"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
|
||||
sodipodi:docname="block_diagram.svg">
|
||||
<defs
|
||||
id="defs2" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.24748737"
|
||||
inkscape:cx="400"
|
||||
inkscape:cy="560"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:document-rotation="0"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1008"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<g
|
||||
transform="matrix(0.0015313,0,0,-0.0015313,26.988838,142.55503)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g10">
|
||||
<path
|
||||
d="m 6095,12794 c -27,-2 -115,-8 -195,-14 C 4030,12643 2289,11657 1185,10109 -320,7999 -397,5162 992,2977 1816,1681 3084,716 4540,276 5466,-3 6424,-71 7380,76 c 761,117 1520,381 2180,759 1230,704 2185,1777 2734,3070 866,2040 607,4403 -679,6204 -886,1241 -2181,2128 -3645,2496 -340,86 -633,135 -1005,171 -150,14 -756,27 -870,18 z m 547,-984 c 776,-36 1477,-217 2158,-556 560,-279 978,-580 1426,-1028 435,-435 743,-858 1008,-1386 325,-645 500,-1269 567,-2020 26,-288 14,-767 -27,-1095 -128,-1030 -548,-1992 -1224,-2805 -133,-160 -427,-458 -591,-601 -792,-688 -1757,-1133 -2774,-1278 -283,-41 -469,-53 -785,-53 -880,0 -1667,187 -2450,582 -738,373 -1398,931 -1901,1605 -552,742 -909,1630 -1023,2550 -55,438 -55,912 0,1350 115,926 471,1810 1031,2560 163,219 293,368 522,596 241,240 338,325 576,504 863,649 1910,1026 2980,1075 238,10 281,10 507,0 z"
|
||||
id="path4" />
|
||||
<path
|
||||
d="m 6240,10996 v -214 l -77,-6 c -431,-34 -740,-89 -1062,-191 -611,-193 -1123,-482 -1608,-908 l -130,-114 -155,148 -156,149 -110,-119 -111,-118 151,-151 152,-150 -75,-89 C 2395,8455 2022,7447 2020,6428 v -167 l -52,-5 c -29,-3 -125,-11 -213,-17 -88,-6 -161,-11 -162,-12 -4,-5 21,-313 26,-319 3,-4 96,0 205,8 110,8 205,13 213,10 7,-3 13,-20 13,-40 0,-63 60,-392 101,-552 80,-317 220,-686 361,-954 156,-298 322,-544 561,-831 82,-100 146,-184 140,-188 -25,-17 -313,-262 -313,-267 0,-11 204,-244 211,-242 4,2 169,138 365,303 197,165 364,305 372,310 11,9 -37,71 -233,305 -135,162 -281,344 -324,405 -372,523 -598,1102 -688,1765 -22,168 -26,712 -5,880 108,876 465,1631 1062,2244 627,643 1406,1026 2320,1138 66,8 223,13 420,13 197,0 354,-5 420,-13 755,-93 1397,-361 1980,-826 150,-120 433,-400 553,-547 423,-520 699,-1118 811,-1759 45,-260 51,-338 51,-680 -1,-280 -4,-347 -23,-481 -66,-466 -197,-882 -403,-1278 -151,-288 -279,-471 -609,-866 -192,-230 -239,-291 -228,-300 8,-5 175,-145 372,-310 196,-165 361,-301 365,-303 7,-2 211,231 211,242 0,5 -288,251 -314,268 -5,3 44,71 110,150 203,244 309,388 426,578 245,399 417,806 529,1253 42,166 99,481 99,543 0,20 6,37 13,40 8,3 103,-2 213,-10 109,-8 202,-12 205,-8 5,6 30,314 26,319 -1,1 -74,6 -162,12 -88,6 -183,14 -211,17 l -51,5 -6,247 c -11,459 -76,838 -217,1262 -183,555 -439,1011 -824,1468 l -70,84 152,150 151,151 -111,118 -110,119 -156,-149 -155,-148 -130,114 c -484,426 -997,715 -1608,908 -322,102 -631,157 -1061,191 l -78,6 v 214 214 h -160 -160 z"
|
||||
id="path6" />
|
||||
<path
|
||||
d="m 8385,8348 c -165,-138 -605,-505 -978,-816 l -679,-565 -56,27 c -31,15 -82,33 -112,41 -74,20 -246,19 -323,-1 -229,-59 -412,-243 -471,-472 -21,-80 -22,-229 -1,-317 8,-38 12,-71 7,-74 -5,-3 -151,-125 -326,-270 l -317,-264 98,-101 c 54,-56 156,-161 226,-233 70,-73 130,-133 132,-133 2,0 131,140 286,311 198,218 287,309 298,305 118,-37 270,-48 371,-26 193,43 359,175 445,355 52,107 65,166 65,285 0,103 -13,173 -47,249 l -23,54 23,26 c 121,131 1675,1850 1681,1859 4,7 6,12 4,11 -2,0 -138,-113 -303,-251 z"
|
||||
id="path8" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.00216713,0,0,-0.00216713,22.552953,126.08319)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g10-1">
|
||||
<path
|
||||
d="m 11241,8109 c -271,-58 -564,-218 -911,-498 -368,-296 -560,-417 -825,-516 -295,-111 -619,-116 -920,-13 -249,84 -471,218 -796,479 -80,65 -195,151 -255,192 -567,389 -1112,468 -1676,241 -220,-88 -427,-217 -703,-439 -306,-246 -562,-400 -795,-479 -271,-91 -558,-90 -827,5 -239,85 -461,223 -828,518 -377,302 -681,456 -1010,508 -131,21 -373,13 -496,-16 -271,-62 -582,-223 -863,-446 -47,-38 -86,-72 -86,-77 0,-11 280,-428 288,-428 2,0 48,33 101,74 507,388 882,458 1315,248 160,-78 291,-166 521,-351 236,-190 430,-320 627,-421 223,-114 394,-172 618,-211 106,-19 383,-16 500,4 385,66 763,260 1215,622 209,168 346,260 490,330 203,99 352,135 552,135 335,0 615,-123 1023,-451 424,-340 748,-519 1105,-609 164,-42 280,-53 483,-48 286,8 495,64 797,213 206,101 411,236 635,416 227,183 346,270 455,335 292,171 519,202 786,104 144,-52 333,-168 522,-320 48,-38 91,-70 95,-70 4,0 72,97 152,216 l 145,215 -25,20 c -364,290 -605,428 -885,506 -129,36 -387,42 -524,12 z"
|
||||
id="path4-7" />
|
||||
<path
|
||||
d="m 11276,6634 c -219,-40 -480,-162 -741,-348 -38,-28 -146,-111 -240,-186 -364,-290 -581,-420 -841,-506 -158,-51 -259,-68 -424,-68 -228,0 -404,42 -640,155 -201,97 -336,185 -590,389 -248,198 -368,278 -571,379 -508,253 -993,254 -1504,2 -175,-86 -336,-192 -530,-347 -296,-237 -424,-323 -620,-419 -238,-117 -407,-159 -630,-158 -212,1 -375,42 -600,153 -188,92 -343,198 -635,433 -341,276 -648,436 -960,503 -118,26 -389,26 -514,1 -214,-43 -462,-152 -686,-302 -167,-111 -295,-213 -294,-233 0,-10 64,-111 141,-225 l 141,-208 34,29 c 18,16 76,60 128,99 477,349 841,406 1266,198 145,-71 280,-163 489,-330 198,-159 350,-268 490,-352 600,-360 1161,-407 1751,-145 238,106 469,256 788,514 194,157 399,283 566,347 256,99 535,106 795,20 202,-67 391,-181 670,-405 322,-258 636,-446 905,-541 708,-251 1374,-75 2155,569 280,231 474,351 665,413 123,40 283,46 415,16 167,-39 385,-161 619,-347 l 105,-83 146,215 c 171,252 172,209 -8,346 -398,303 -726,440 -1051,437 -61,0 -147,-7 -190,-15 z"
|
||||
id="path6-5" />
|
||||
<path
|
||||
d="m 11300,5155 c -299,-49 -631,-227 -1015,-545 -364,-302 -694,-480 -1005,-546 -41,-8 -131,-18 -200,-21 -393,-18 -784,146 -1260,527 -277,222 -434,327 -626,416 -669,310 -1303,197 -1990,-358 -247,-199 -344,-268 -517,-368 -359,-206 -697,-266 -1029,-181 -275,69 -526,211 -878,496 -413,334 -692,486 -1024,557 -143,30 -389,30 -529,0 -230,-50 -457,-152 -687,-306 -139,-94 -290,-211 -290,-225 0,-6 271,-415 285,-429 2,-2 46,30 98,71 258,202 483,316 705,358 38,7 112,10 195,6 160,-6 257,-31 427,-113 148,-71 273,-155 487,-326 195,-157 311,-242 431,-317 310,-194 593,-304 879,-342 131,-17 399,-6 528,21 369,78 726,268 1155,614 319,258 548,383 812,442 101,23 345,23 448,0 119,-26 196,-54 325,-116 146,-70 275,-156 460,-304 333,-267 541,-400 801,-512 537,-233 1046,-217 1589,51 241,118 397,222 702,466 357,286 563,402 781,440 87,15 238,6 332,-21 157,-45 370,-168 585,-338 55,-44 103,-78 107,-76 3,2 70,99 148,215 138,205 142,212 124,229 -45,43 -229,180 -339,253 -135,89 -342,194 -455,231 -178,58 -396,78 -560,51 z"
|
||||
id="path8-9" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.0021812,0,0,-0.0021812,29.884057,176.89732)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g6">
|
||||
<path
|
||||
d="m 2998,12790 c -315,-57 -548,-268 -644,-585 -18,-58 -19,-222 -22,-4115 l -3,-4055 -72,-50 c -86,-60 -250,-215 -323,-306 -379,-473 -476,-1119 -253,-1683 195,-493 612,-859 1134,-995 213,-56 533,-66 747,-22 221,45 468,151 648,279 114,81 297,259 372,362 150,206 250,425 299,655 94,445 5,902 -248,1285 -93,140 -292,344 -425,435 l -87,60 -3,4045 -3,4045 -23,73 c -85,276 -283,473 -554,553 -62,18 -103,22 -283,25 -115,1 -231,-1 -257,-6 z"
|
||||
id="path4-1" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.00179894,0,0,-0.00179894,24.88238,44.904584)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g10-7">
|
||||
<path
|
||||
d="m 6950,10549 c -782,-79 -1408,-535 -1640,-1194 -48,-139 -99,-382 -100,-482 v -23 h 994 994 l 31,-26 c 59,-49 65,-162 11,-216 l -28,-28 H 3606 0 v -98 c 0,-122 15,-369 36,-572 42,-430 118,-803 260,-1292 5,-17 181,-18 3519,-18 3851,0 3610,-4 3856,59 661,167 1188,657 1399,1299 273,833 -24,1729 -745,2243 -232,166 -522,283 -825,334 -116,19 -420,27 -550,14 z"
|
||||
id="path4-8" />
|
||||
<path
|
||||
d="M 10600,8243 C 9884,8170 9320,7808 9039,7242 8948,7058 8879,6810 8864,6617 l -7,-87 h 1013 1013 l 23,-21 c 44,-41 43,-171 -1,-215 l -24,-24 H 5650 c -2876,0 -5230,-2 -5230,-5 0,-2 22,-60 49,-127 246,-616 588,-1196 1025,-1735 l 91,-112 4668,-1 c 3217,0 4698,3 4765,11 456,49 849,233 1176,549 314,303 506,670 583,1115 24,138 24,470 -1,610 -73,427 -258,793 -547,1083 -324,325 -715,519 -1162,577 -106,13 -370,18 -467,8 z"
|
||||
id="path6-57" />
|
||||
<path
|
||||
d="m 1890,3956 c 0,-10 365,-343 485,-443 962,-801 2115,-1308 3345,-1472 391,-53 429,-54 1699,-60 l 1194,-6 20,-26 c 44,-59 38,-181 -10,-219 -25,-20 -39,-20 -1022,-20 h -997 l 8,-82 c 51,-531 322,-983 768,-1282 108,-73 337,-185 460,-226 457,-152 939,-158 1364,-19 803,263 1354,1018 1358,1859 0,224 -18,366 -73,560 -100,349 -287,656 -550,904 -285,267 -609,429 -1026,513 -83,17 -275,18 -3555,21 -1908,1 -3468,0 -3468,-2 z"
|
||||
id="path8-4" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(-0.00273933,0,0,-0.00273933,53.972152,70.266544)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g6-5">
|
||||
<path
|
||||
d="m 7360,7349 c -704,-67 -1328,-436 -1670,-987 -110,-179 -180,-348 -237,-580 -45,-184 -49,-296 -16,-480 26,-140 39,-293 29,-344 -3,-18 -19,-49 -35,-68 -27,-33 -32,-35 -104,-38 -69,-4 -80,-1 -134,27 -136,73 -330,254 -419,391 -82,127 -164,330 -164,406 0,22 0,22 68,-6 93,-40 179,-52 327,-48 125,3 127,3 151,31 54,63 21,126 -142,273 -146,131 -144,129 -144,168 0,19 4,47 10,61 l 10,26 49,-26 c 27,-15 81,-56 119,-91 l 71,-64 30,43 c 143,209 59,553 -184,750 -107,87 -214,132 -350,147 -81,9 -114,-1 -181,-55 -23,-19 -46,-35 -50,-35 -4,0 -4,34 0,76 l 7,77 -68,-7 c -99,-10 -179,-33 -257,-74 -184,-96 -275,-254 -249,-430 6,-35 6,-62 1,-62 -5,0 -31,11 -58,25 -74,38 -194,75 -239,75 -33,0 -41,-4 -41,-18 0,-40 57,-129 137,-213 l 85,-89 h -52 c -28,0 -97,11 -152,25 -55,14 -103,24 -105,21 -10,-9 52,-109 82,-131 16,-13 51,-33 77,-44 52,-22 63,-37 72,-101 l 6,-45 -95,-75 c -143,-112 -256,-185 -392,-251 -67,-32 -127,-67 -133,-78 -13,-25 -13,-92 -1,-125 6,-13 37,-43 71,-66 74,-51 100,-89 100,-151 0,-49 -4,-56 -99,-171 -52,-63 -132,-227 -155,-318 -9,-36 -19,-110 -22,-165 -5,-84 -2,-120 20,-230 63,-306 163,-492 381,-711 179,-179 366,-295 605,-375 93,-30 100,-31 295,-33 178,-2 208,-5 270,-25 190,-63 322,-161 434,-323 45,-65 65,-84 140,-132 127,-81 210,-177 247,-289 13,-40 40,-75 139,-177 170,-178 220,-267 246,-444 12,-81 7,-128 -31,-265 -11,-41 -20,-96 -20,-123 v -48 H 3854 2068 l 50,63 c 40,50 779,1007 816,1056 6,8 7,12 1,9 -5,-3 -608,-259 -1340,-568 C 864,1611 211,1335 144,1306 77,1278 23,1251 24,1245 25,1240 266,1133 560,1009 2512,183 2923,10 2927,14 c 2,2 -189,253 -425,557 l -429,554 3774,3 3773,2 683,-411 c 375,-226 696,-420 713,-430 30,-18 66,-19 903,-19 479,0 871,3 871,8 0,4 -216,223 -480,487 l -480,480 480,480 c 264,264 480,483 480,488 0,4 -393,7 -873,7 h -873 l -712,-430 -713,-430 H 8061 6502 l -6,23 c -3,12 -28,61 -57,107 -79,131 -96,170 -113,259 -35,181 -23,236 108,494 94,186 105,213 133,338 35,150 91,302 155,418 43,77 216,312 253,343 48,41 112,53 285,53 142,0 176,-3 244,-23 170,-49 322,-139 444,-263 95,-98 112,-124 112,-179 0,-124 -68,-278 -165,-376 -81,-81 -148,-113 -276,-130 -56,-7 -103,-15 -106,-17 -2,-3 13,-19 34,-36 72,-60 254,-138 449,-192 98,-27 369,-38 496,-20 250,36 447,132 604,293 95,98 131,149 184,260 54,113 81,221 86,348 l 4,105 62,38 c 222,135 371,414 354,662 -3,50 -9,115 -12,145 -6,51 -3,60 35,126 59,103 85,213 78,329 -12,171 -72,354 -164,493 -21,31 -80,101 -131,154 l -93,96 31,24 c 41,30 114,127 151,200 92,182 97,405 14,649 -56,162 -151,297 -354,499 -406,404 -922,667 -1492,760 -131,21 -324,25 -489,9 z"
|
||||
id="path4-3" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.00194266,0,0,-0.00194266,23.960519,100.82883)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g32">
|
||||
<path
|
||||
d="m 6710,12673 c -25,-2 -90,-10 -145,-19 -533,-81 -1001,-335 -1367,-742 l -65,-73 -84,45 c -869,470 -1958,306 -2664,-399 -315,-316 -513,-683 -619,-1147 -5,-23 -15,-30 -64,-43 -136,-38 -306,-101 -427,-160 C 605,9807 139,9173 24,8430 2,8288 -1,7939 18,7805 163,6801 900,6037 1895,5859 c 113,-21 162,-24 380,-23 266,0 345,8 545,59 229,58 493,173 681,296 l 93,61 51,-12 c 284,-67 433,-84 678,-77 181,5 335,26 492,65 l 70,18 75,-60 c 307,-244 686,-408 1083,-466 150,-23 445,-27 587,-10 416,52 839,229 1148,481 l 73,60 89,-51 c 268,-153 567,-253 875,-291 117,-14 417,-14 525,0 225,30 486,103 667,186 l 83,38 127,-19 c 170,-25 470,-25 633,0 515,79 970,315 1323,686 325,342 525,752 603,1235 22,136 25,485 6,620 -99,685 -474,1268 -1050,1632 -320,202 -774,341 -1120,343 h -72 l -113,113 c -388,393 -872,620 -1432,672 l -70,7 -56,102 c -268,481 -730,863 -1260,1039 -272,91 -610,132 -899,110 z"
|
||||
id="path4-88" />
|
||||
<path
|
||||
d="m 3943,5543 c -60,-12 -557,-585 -717,-828 -121,-183 -153,-279 -143,-435 17,-274 207,-501 474,-565 101,-24 243,-17 340,17 182,65 322,205 385,388 34,96 32,291 -5,496 -41,230 -114,542 -187,794 -38,134 -56,151 -147,133 z"
|
||||
id="path6-3" />
|
||||
<path
|
||||
d="m 7553,5543 c -44,-9 -441,-455 -632,-712 -183,-246 -226,-345 -225,-521 1,-87 5,-119 27,-183 71,-205 236,-360 442,-412 76,-19 214,-19 290,0 114,29 203,81 290,169 87,88 133,167 161,278 42,162 -10,521 -156,1079 -84,320 -86,323 -197,302 z"
|
||||
id="path8-1" />
|
||||
<path
|
||||
d="m 11163,5542 c -43,-13 -429,-447 -608,-684 -112,-148 -183,-261 -217,-348 -19,-47 -22,-75 -23,-190 0,-116 3,-145 23,-202 83,-241 300,-403 555,-416 288,-14 526,153 623,438 52,154 -10,582 -171,1167 -58,213 -75,244 -129,242 -17,-1 -41,-4 -53,-7 z"
|
||||
id="path10-8" />
|
||||
<path
|
||||
d="m 5303,4620 c -32,-7 -108,-82 -289,-285 -275,-308 -453,-545 -526,-702 -160,-341 44,-750 422,-844 30,-7 98,-13 150,-13 257,3 483,165 572,410 57,160 23,475 -107,991 -115,455 -122,467 -222,443 z"
|
||||
id="path12-9" />
|
||||
<path
|
||||
d="m 8918,4623 c -62,-10 -548,-565 -723,-828 -117,-174 -145,-252 -145,-404 0,-166 54,-301 169,-423 117,-125 263,-190 431,-192 109,-1 176,13 275,59 161,73 293,232 336,405 38,151 -2,451 -127,955 -76,304 -102,388 -130,413 -25,22 -32,23 -86,15 z"
|
||||
id="path14-6" />
|
||||
<path
|
||||
d="m 6664,3698 c -36,-8 -56,-24 -141,-116 -446,-484 -663,-775 -717,-961 -26,-88 -21,-243 9,-339 38,-120 119,-237 214,-307 249,-182 575,-163 794,45 154,146 210,310 186,544 -23,233 -110,641 -210,986 -41,140 -62,163 -135,148 z"
|
||||
id="path16-4" />
|
||||
<path
|
||||
d="m 10275,3696 c -33,-9 -64,-36 -167,-146 -229,-245 -448,-510 -562,-680 -118,-176 -152,-277 -143,-435 11,-209 121,-393 298,-498 393,-232 898,31 926,482 9,154 -46,484 -152,896 -81,315 -95,356 -130,376 -25,13 -37,14 -70,5 z"
|
||||
id="path18-3" />
|
||||
<path
|
||||
d="m 3024,3691 c -21,-9 -181,-177 -320,-336 -334,-382 -485,-607 -520,-775 -66,-312 148,-639 466,-714 320,-76 654,127 737,447 33,128 3,402 -83,776 -61,263 -142,554 -162,580 -20,28 -78,38 -118,22 z"
|
||||
id="path20-3" />
|
||||
<path
|
||||
d="m 4393,2773 c -52,-10 -509,-527 -687,-776 -73,-102 -134,-214 -157,-287 -26,-81 -28,-236 -4,-324 55,-207 237,-387 444,-441 80,-20 226,-21 304,0 214,56 381,217 442,430 38,130 13,383 -76,779 -42,185 -130,519 -150,569 -20,48 -52,62 -116,50 z"
|
||||
id="path22-3" />
|
||||
<path
|
||||
d="m 8008,2773 c -20,-3 -62,-41 -146,-131 -367,-391 -619,-720 -689,-897 -24,-63 -27,-83 -28,-195 0,-106 4,-136 24,-199 51,-154 171,-292 316,-361 105,-49 159,-62 276,-61 171,1 306,58 430,181 132,131 188,282 176,474 -12,181 -60,441 -147,786 -65,257 -98,362 -121,387 -22,22 -34,25 -91,16 z"
|
||||
id="path24" />
|
||||
<path
|
||||
d="m 2140,1850 c -38,-9 -111,-81 -304,-300 -315,-356 -486,-591 -536,-733 -64,-182 -38,-378 72,-543 120,-179 332,-285 545,-271 268,18 498,208 563,465 16,62 14,241 -5,362 -43,285 -196,924 -238,990 -9,15 -52,43 -60,39 -1,-1 -18,-5 -37,-9 z"
|
||||
id="path26" />
|
||||
<path
|
||||
d="m 5754,1848 c -37,-8 -57,-26 -177,-156 -415,-451 -636,-753 -682,-929 -20,-75 -19,-210 1,-292 41,-165 176,-333 326,-405 151,-72 315,-84 465,-33 99,34 156,69 233,143 109,104 175,239 187,378 15,179 -82,690 -222,1171 -36,124 -52,139 -131,123 z"
|
||||
id="path28" />
|
||||
<path
|
||||
d="m 9371,1850 c -41,-10 -105,-72 -291,-280 -375,-422 -535,-650 -576,-827 -33,-139 1,-322 82,-451 170,-269 502,-365 789,-229 142,68 265,205 316,354 21,60 24,85 23,218 -1,187 -36,394 -135,785 -72,288 -105,393 -134,418 -14,12 -29,22 -33,21 -4,-1 -22,-5 -41,-9 z"
|
||||
id="path30" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.0034974,0,0,-0.0034974,260.93273,105.32701)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g30">
|
||||
<path
|
||||
d="M 815,5855 C 501,5811 237,5619 100,5337 73,5281 41,5197 28,5150 L 5,5065 V 3205 C 5,1461 6,1341 23,1276 116,912 382,647 740,563 c 71,-17 345,-18 5660,-18 5315,0 5589,1 5660,18 358,84 624,349 717,713 17,65 18,185 18,1929 v 1860 l -23,85 c -105,388 -422,663 -817,709 -143,17 -11021,13 -11140,-4 z m 11188,-364 c 90,-24 133,-44 212,-104 97,-73 176,-191 212,-318 17,-61 18,-152 18,-1864 0,-1688 -1,-1804 -18,-1864 -58,-210 -218,-370 -428,-428 -61,-17 -345,-18 -5599,-18 -5254,0 -5538,1 -5599,18 -210,58 -370,218 -428,428 -17,60 -18,176 -18,1864 0,1712 1,1803 18,1864 47,165 162,307 310,383 22,11 71,28 110,38 70,18 228,19 5603,19 5440,1 5532,1 5607,-18 z"
|
||||
id="path4-86" />
|
||||
<path
|
||||
d="m 3719,5115 c -335,-53 -612,-289 -718,-613 -46,-140 -53,-242 -30,-452 85,-796 191,-1806 199,-1900 5,-63 19,-150 30,-194 88,-332 358,-588 695,-657 84,-17 194,-19 1635,-29 850,-6 1991,-12 2535,-13 943,-2 993,-1 1060,17 385,104 647,410 684,798 6,57 31,238 55,403 25,165 82,543 126,840 44,297 91,613 105,702 29,187 31,274 9,380 -35,170 -108,313 -223,435 -155,165 -333,257 -554,287 -54,8 -932,11 -2800,10 -2220,-1 -2738,-3 -2808,-14 z m 5626,-280 c 275,-57 495,-316 495,-581 0,-34 -18,-181 -39,-326 -143,-948 -261,-1754 -266,-1818 -21,-230 -150,-419 -349,-515 -50,-24 -118,-49 -151,-56 -62,-12 -1014,-10 -3830,11 -1341,10 -1269,6 -1415,78 -56,27 -96,57 -155,117 -97,97 -148,190 -170,310 -8,44 -42,343 -75,665 -33,322 -83,799 -111,1060 -50,469 -51,476 -36,554 41,206 192,393 378,467 126,50 -11,47 2914,48 2369,1 2749,-1 2810,-14 z"
|
||||
id="path6-0" />
|
||||
<path
|
||||
d="m 4148,4229 c -113,-17 -218,-96 -267,-199 -22,-47 -26,-69 -26,-150 0,-81 4,-103 26,-150 33,-70 99,-136 169,-169 47,-22 69,-26 150,-26 81,0 103,4 150,26 195,92 261,339 139,523 -69,104 -212,165 -341,145 z"
|
||||
id="path8-48" />
|
||||
<path
|
||||
d="m 5280,4228 c -95,-15 -179,-69 -233,-151 -46,-70 -59,-115 -59,-203 1,-189 144,-334 337,-342 113,-5 180,21 261,102 75,75 104,143 104,246 0,221 -189,382 -410,348 z"
|
||||
id="path10" />
|
||||
<path
|
||||
d="m 6318,4229 c -286,-44 -401,-393 -196,-599 63,-63 135,-94 233,-98 114,-5 180,21 261,102 75,75 104,143 104,246 0,217 -190,382 -402,349 z"
|
||||
id="path12" />
|
||||
<path
|
||||
d="m 7474,4229 c -172,-22 -304,-173 -304,-349 0,-101 42,-193 120,-263 153,-138 405,-109 521,60 45,65 61,119 62,203 0,103 -29,175 -96,243 -86,86 -185,121 -303,106 z"
|
||||
id="path14" />
|
||||
<path
|
||||
d="m 8578,4229 c -113,-18 -218,-96 -267,-199 -22,-47 -26,-69 -26,-150 0,-81 4,-103 26,-150 33,-70 99,-136 169,-169 47,-22 69,-26 150,-26 81,0 103,4 150,26 286,135 261,559 -39,653 -64,20 -108,24 -163,15 z"
|
||||
id="path16" />
|
||||
<path
|
||||
d="m 4718,2946 c -74,-30 -128,-74 -167,-134 -152,-237 15,-544 294,-544 208,0 369,173 352,378 -8,111 -68,210 -162,269 -98,61 -215,73 -317,31 z"
|
||||
id="path18" />
|
||||
<path
|
||||
d="m 5749,2947 c -75,-31 -122,-69 -162,-130 -47,-71 -61,-119 -60,-202 1,-103 32,-176 104,-246 72,-72 143,-101 245,-101 155,0 288,94 335,239 50,151 -6,314 -140,404 -95,64 -219,78 -322,36 z"
|
||||
id="path20" />
|
||||
<path
|
||||
d="m 6900,2948 c -78,-30 -169,-123 -199,-203 -31,-82 -27,-196 10,-275 56,-119 179,-201 307,-203 87,-1 144,15 211,62 235,161 191,521 -75,621 -74,27 -180,26 -254,-2 z"
|
||||
id="path22" />
|
||||
<path
|
||||
d="m 8008,2947 c -216,-91 -290,-352 -153,-539 68,-92 165,-140 288,-140 65,0 87,5 140,30 77,36 142,100 176,172 22,47 26,69 26,150 0,81 -4,103 -25,145 -34,70 -99,136 -167,171 -48,24 -72,29 -143,32 -71,2 -94,-1 -142,-21 z"
|
||||
id="path24-8" />
|
||||
<path
|
||||
d="m 1230,4060 c -336,-73 -601,-331 -681,-665 -27,-110 -29,-284 -6,-392 96,-444 510,-745 962,-701 539,53 909,578 775,1102 -119,467 -584,757 -1050,656 z m 390,-293 c 423,-150 547,-689 230,-1008 -194,-195 -464,-240 -709,-118 -216,107 -354,347 -337,585 16,214 140,407 325,503 110,57 173,71 306,67 88,-2 125,-8 185,-29 z"
|
||||
id="path26-8" />
|
||||
<path
|
||||
d="m 11365,4074 c -11,-2 -47,-10 -80,-16 -71,-14 -207,-66 -267,-104 -299,-186 -462,-512 -427,-854 12,-115 32,-189 80,-289 165,-348 514,-546 894,-509 207,20 388,105 533,249 166,164 256,365 269,599 21,410 -253,784 -659,900 -71,21 -293,36 -343,24 z m 315,-307 c 91,-32 195,-102 256,-171 56,-64 122,-193 140,-277 78,-364 -180,-709 -556,-744 -165,-16 -351,55 -475,179 -188,189 -235,462 -120,701 76,158 234,287 403,330 91,23 259,15 352,-18 z"
|
||||
id="path28-9" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.0107659,0,0,-0.0107659,102.50482,163.97367)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g12">
|
||||
<path
|
||||
d="m 7484,12789 c -67,-19 -123,-121 -109,-198 15,-81 61,-135 125,-148 l 30,-6 -2,-2120 -3,-2121 -47,3 -48,3 v -166 -166 h -195 -195 l -2,163 -3,162 -55,1 -55,1 -3,1128 c -2,1114 -2,1127 18,1152 27,35 43,99 35,142 -10,57 -50,116 -91,136 -49,23 -148,17 -186,-10 -65,-48 -90,-154 -55,-236 20,-50 76,-90 132,-97 l 45,-5 -2,-1104 -3,-1105 -85,-2 -85,-1 -3,-162 -2,-163 h -195 -194 v 163 162 h -83 -83 l -5,720 -5,720 -542,3 -543,2 v 755 755 l 28,42 c 23,36 27,52 27,113 0,63 -3,76 -28,108 -38,50 -75,67 -145,67 -45,0 -67,-6 -93,-23 -67,-44 -98,-153 -65,-230 17,-41 76,-93 115,-102 l 31,-7 v -789 -789 h 555 555 v -672 -673 h -52 -53 l -3,-162 -2,-163 h -195 -195 l -2,163 -3,162 h -48 -47 v 418 417 h -633 -634 l -24,26 c -37,40 -73,54 -137,54 -45,0 -67,-5 -93,-23 -110,-74 -104,-253 11,-314 109,-58 238,3 257,122 l 6,35 h 553 554 l -2,-366 -3,-367 -70,-1 -70,-1 -3,-162 -2,-163 h -195 -195 l -2,163 -3,162 h -30 l -30,1 -3,182 -2,182 H 3527 2435 l -50,26 c -123,63 -255,-19 -255,-159 0,-62 19,-105 63,-144 93,-82 246,-32 279,91 l 12,46 h 1003 1004 l -3,-111 -3,-111 -95,-1 -95,-2 -3,-162 -2,-163 h -240 -240 v -345 -345 h -165 -165 v -40 -40 H 2442 1403 l -33,41 c -94,117 -272,81 -310,-63 -21,-77 10,-159 79,-205 26,-17 48,-23 91,-23 67,0 111,25 149,83 l 24,37 h 1039 1038 v -90 -90 h 165 165 v -195 -195 h -165 -165 v -70 -70 H 1870 260 v 930 930 l 25,16 c 41,27 68,96 63,165 -5,62 -23,97 -69,132 -56,41 -152,41 -208,0 -58,-42 -85,-139 -60,-214 13,-38 63,-96 91,-105 17,-5 18,-51 20,-997 l 3,-992 1677,-3 1678,-2 v -60 -60 h 165 165 v -195 -195 h -164 -165 l -3,-47 -3,-48 -1037,-3 -1036,-2 -31,-39 -31,-39 v -740 -740 l -35,-6 c -110,-21 -168,-180 -101,-278 35,-51 70,-71 134,-76 100,-7 158,35 184,133 13,50 0,125 -28,156 -12,13 -14,125 -14,753 0,489 -3,744 -10,757 -11,19 4,19 1000,19 h 1010 v -95 -95 h 165 165 v -285 -285 h 300 300 v -165 -165 h 40 40 v -779 c 0,-772 0,-779 -21,-805 l -20,-26 h -657 l -657,1 -20,31 c -30,48 -78,71 -145,71 -104,0 -173,-71 -174,-178 -1,-197 249,-255 334,-78 l 25,53 h 674 673 l 59,51 59,51 v 804 804 h 90 90 v 165 165 h 195 195 v -161 c 0,-152 1,-161 20,-166 20,-5 20,-14 20,-1818 V 691 l -26,-20 c -26,-21 -36,-21 -550,-21 -330,0 -524,4 -524,10 0,18 -65,83 -97,96 -80,34 -178,2 -221,-71 -33,-58 -28,-157 11,-209 41,-53 78,-69 151,-64 74,4 116,30 143,88 l 18,39 541,1 h 541 l 74,53 74,53 3,1837 2,1836 108,3 107,3 3,163 2,162 h 195 195 v -165 -165 h 50 50 V 2800 1281 l -42,-12 c -110,-29 -154,-161 -94,-277 32,-62 117,-93 197,-72 116,31 163,186 88,291 -18,26 -19,71 -19,1568 v 1541 h 80 80 v 165 165 h 195 195 v -165 -165 h 80 80 V 2325 c 0,-1961 0,-1994 -19,-2005 -13,-6 -241,-10 -671,-10 -647,0 -651,0 -679,21 -78,57 -194,37 -255,-44 -32,-43 -34,-150 -4,-202 41,-71 143,-104 221,-71 44,18 95,78 103,121 l 6,35 h 650 651 l 68,56 69,56 v 2019 2019 h 45 45 v 165 165 h 195 195 l 2,-163 3,-162 h 195 195 l 3,163 2,162 h 195 195 v -165 -165 h 195 195 v 165 165 h 195 195 l 2,-162 3,-163 192,-3 193,-2 2,162 3,163 393,3 392,2 v 490 490 h 160 160 v 60 60 h 660 660 v -770 -770 l -39,-24 c -77,-49 -103,-161 -58,-247 58,-109 218,-122 293,-23 26,34 29,45 29,114 0,69 -3,80 -29,114 -16,21 -44,44 -62,52 l -34,14 -2,838 -3,837 -707,3 -708,2 v 68 67 l -160,-3 -160,-3 v 201 200 h 160 159 l 3,88 3,87 801,3 801,2 18,-41 c 61,-134 254,-130 316,6 65,143 -52,291 -201,255 -44,-11 -110,-59 -110,-81 0,-5 -344,-8 -812,-7 l -813,3 -3,38 -3,37 h -160 -159 v 530 530 h -450 -450 l -2,163 c -2,123 -6,161 -15,160 -10,-2 -13,184 -13,907 v 910 h 900 899 l 19,-43 c 28,-63 72,-91 152,-95 55,-3 70,0 99,20 62,42 76,70 76,156 0,90 -21,129 -85,162 -70,36 -149,24 -205,-31 l -31,-29 -964,-2 -965,-3 -3,-975 -2,-975 -125,3 -125,3 v -165 -166 h -197 -198 v 163 162 l -45,1 -45,1 -3,1581 -2,1582 727,2 727,3 -3,446 -3,446 34,24 c 46,33 65,58 78,106 31,109 -40,220 -148,231 -65,6 -114,-11 -151,-53 -79,-90 -56,-233 46,-287 l 43,-23 v -398 -399 l -740,3 -740,2 -3,-1632 -2,-1633 -80,-1 -80,-2 -3,-162 -2,-163 h -195 -195 l -2,163 -3,162 -73,1 -72,2 v 2137 c 0,2120 0,2137 20,2165 31,44 44,117 31,168 -28,103 -126,153 -237,121 z"
|
||||
id="path4-76" />
|
||||
<path
|
||||
d="m 7670,4298 c 0,-2 -1,-621 -3,-1377 l -2,-1374 -44,-13 c -80,-23 -123,-83 -124,-173 0,-77 32,-134 95,-167 39,-20 122,-18 167,6 98,49 120,206 41,287 l -30,31 -2,1388 -3,1389 -47,3 c -27,2 -48,2 -48,0 z"
|
||||
id="path6-31" />
|
||||
<path
|
||||
d="M 8510,2775 V 1250 h 873 l 872,-1 20,-41 c 31,-65 63,-83 150,-83 59,0 79,4 102,21 104,77 95,255 -17,312 -25,12 -62,22 -85,22 -51,-1 -119,-31 -140,-64 l -17,-26 h -809 -809 l -2,1453 -3,1452 -67,3 -68,3 z"
|
||||
id="path8-7" />
|
||||
<path
|
||||
d="m 9255,4288 c -3,-7 -4,-495 -3,-1083 l 3,-1070 932,-5 933,-5 22,-45 c 33,-65 76,-90 153,-90 68,0 110,21 149,73 32,43 34,150 4,202 -41,71 -143,104 -221,71 -32,-13 -97,-78 -97,-96 0,-6 -323,-10 -885,-10 h -885 l -2,1033 -3,1032 -48,3 c -32,2 -49,-1 -52,-10 z"
|
||||
id="path10-5" />
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:7.05556px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
|
||||
x="-79.636681"
|
||||
y="59.676682"
|
||||
id="text1496"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1494"
|
||||
x="-79.636681"
|
||||
y="59.676682"
|
||||
style="stroke-width:0.264583">wind speed</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:7.05556px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
|
||||
x="-79.275375"
|
||||
y="76.304565"
|
||||
id="text1500"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1498"
|
||||
x="-79.275375"
|
||||
y="76.304565"
|
||||
style="stroke-width:0.264583">wind direction</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:7.05556px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
|
||||
x="-77.63871"
|
||||
y="89.558937"
|
||||
id="text1504"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1502"
|
||||
x="-77.63871"
|
||||
y="89.558937"
|
||||
style="stroke-width:0.264583">rain fall</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:7.05556px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
|
||||
x="-74.587128"
|
||||
y="102.40005"
|
||||
id="text1508"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1506"
|
||||
x="-74.587128"
|
||||
y="102.40005"
|
||||
style="stroke-width:0.264583">humidity</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:7.05556px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
|
||||
x="-73.550102"
|
||||
y="128.35326"
|
||||
id="text1512"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1510"
|
||||
x="-73.550102"
|
||||
y="128.35326"
|
||||
style="stroke-width:0.264583">pressure</tspan></text>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 28 KiB |
@@ -1,295 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="297mm"
|
||||
height="210mm"
|
||||
viewBox="0 0 297 210"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
|
||||
sodipodi:docname="block_diagram.svg.2024_01_15_14_00_17.0.svg">
|
||||
<defs
|
||||
id="defs2" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.24748737"
|
||||
inkscape:cx="400"
|
||||
inkscape:cy="560"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:document-rotation="0"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1008"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<g
|
||||
transform="matrix(0.0015313,0,0,-0.0015313,26.988838,142.55503)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g10">
|
||||
<path
|
||||
d="m 6095,12794 c -27,-2 -115,-8 -195,-14 C 4030,12643 2289,11657 1185,10109 -320,7999 -397,5162 992,2977 1816,1681 3084,716 4540,276 5466,-3 6424,-71 7380,76 c 761,117 1520,381 2180,759 1230,704 2185,1777 2734,3070 866,2040 607,4403 -679,6204 -886,1241 -2181,2128 -3645,2496 -340,86 -633,135 -1005,171 -150,14 -756,27 -870,18 z m 547,-984 c 776,-36 1477,-217 2158,-556 560,-279 978,-580 1426,-1028 435,-435 743,-858 1008,-1386 325,-645 500,-1269 567,-2020 26,-288 14,-767 -27,-1095 -128,-1030 -548,-1992 -1224,-2805 -133,-160 -427,-458 -591,-601 -792,-688 -1757,-1133 -2774,-1278 -283,-41 -469,-53 -785,-53 -880,0 -1667,187 -2450,582 -738,373 -1398,931 -1901,1605 -552,742 -909,1630 -1023,2550 -55,438 -55,912 0,1350 115,926 471,1810 1031,2560 163,219 293,368 522,596 241,240 338,325 576,504 863,649 1910,1026 2980,1075 238,10 281,10 507,0 z"
|
||||
id="path4" />
|
||||
<path
|
||||
d="m 6240,10996 v -214 l -77,-6 c -431,-34 -740,-89 -1062,-191 -611,-193 -1123,-482 -1608,-908 l -130,-114 -155,148 -156,149 -110,-119 -111,-118 151,-151 152,-150 -75,-89 C 2395,8455 2022,7447 2020,6428 v -167 l -52,-5 c -29,-3 -125,-11 -213,-17 -88,-6 -161,-11 -162,-12 -4,-5 21,-313 26,-319 3,-4 96,0 205,8 110,8 205,13 213,10 7,-3 13,-20 13,-40 0,-63 60,-392 101,-552 80,-317 220,-686 361,-954 156,-298 322,-544 561,-831 82,-100 146,-184 140,-188 -25,-17 -313,-262 -313,-267 0,-11 204,-244 211,-242 4,2 169,138 365,303 197,165 364,305 372,310 11,9 -37,71 -233,305 -135,162 -281,344 -324,405 -372,523 -598,1102 -688,1765 -22,168 -26,712 -5,880 108,876 465,1631 1062,2244 627,643 1406,1026 2320,1138 66,8 223,13 420,13 197,0 354,-5 420,-13 755,-93 1397,-361 1980,-826 150,-120 433,-400 553,-547 423,-520 699,-1118 811,-1759 45,-260 51,-338 51,-680 -1,-280 -4,-347 -23,-481 -66,-466 -197,-882 -403,-1278 -151,-288 -279,-471 -609,-866 -192,-230 -239,-291 -228,-300 8,-5 175,-145 372,-310 196,-165 361,-301 365,-303 7,-2 211,231 211,242 0,5 -288,251 -314,268 -5,3 44,71 110,150 203,244 309,388 426,578 245,399 417,806 529,1253 42,166 99,481 99,543 0,20 6,37 13,40 8,3 103,-2 213,-10 109,-8 202,-12 205,-8 5,6 30,314 26,319 -1,1 -74,6 -162,12 -88,6 -183,14 -211,17 l -51,5 -6,247 c -11,459 -76,838 -217,1262 -183,555 -439,1011 -824,1468 l -70,84 152,150 151,151 -111,118 -110,119 -156,-149 -155,-148 -130,114 c -484,426 -997,715 -1608,908 -322,102 -631,157 -1061,191 l -78,6 v 214 214 h -160 -160 z"
|
||||
id="path6" />
|
||||
<path
|
||||
d="m 8385,8348 c -165,-138 -605,-505 -978,-816 l -679,-565 -56,27 c -31,15 -82,33 -112,41 -74,20 -246,19 -323,-1 -229,-59 -412,-243 -471,-472 -21,-80 -22,-229 -1,-317 8,-38 12,-71 7,-74 -5,-3 -151,-125 -326,-270 l -317,-264 98,-101 c 54,-56 156,-161 226,-233 70,-73 130,-133 132,-133 2,0 131,140 286,311 198,218 287,309 298,305 118,-37 270,-48 371,-26 193,43 359,175 445,355 52,107 65,166 65,285 0,103 -13,173 -47,249 l -23,54 23,26 c 121,131 1675,1850 1681,1859 4,7 6,12 4,11 -2,0 -138,-113 -303,-251 z"
|
||||
id="path8" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.00216713,0,0,-0.00216713,22.552953,126.08319)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g10-1">
|
||||
<path
|
||||
d="m 11241,8109 c -271,-58 -564,-218 -911,-498 -368,-296 -560,-417 -825,-516 -295,-111 -619,-116 -920,-13 -249,84 -471,218 -796,479 -80,65 -195,151 -255,192 -567,389 -1112,468 -1676,241 -220,-88 -427,-217 -703,-439 -306,-246 -562,-400 -795,-479 -271,-91 -558,-90 -827,5 -239,85 -461,223 -828,518 -377,302 -681,456 -1010,508 -131,21 -373,13 -496,-16 -271,-62 -582,-223 -863,-446 -47,-38 -86,-72 -86,-77 0,-11 280,-428 288,-428 2,0 48,33 101,74 507,388 882,458 1315,248 160,-78 291,-166 521,-351 236,-190 430,-320 627,-421 223,-114 394,-172 618,-211 106,-19 383,-16 500,4 385,66 763,260 1215,622 209,168 346,260 490,330 203,99 352,135 552,135 335,0 615,-123 1023,-451 424,-340 748,-519 1105,-609 164,-42 280,-53 483,-48 286,8 495,64 797,213 206,101 411,236 635,416 227,183 346,270 455,335 292,171 519,202 786,104 144,-52 333,-168 522,-320 48,-38 91,-70 95,-70 4,0 72,97 152,216 l 145,215 -25,20 c -364,290 -605,428 -885,506 -129,36 -387,42 -524,12 z"
|
||||
id="path4-7" />
|
||||
<path
|
||||
d="m 11276,6634 c -219,-40 -480,-162 -741,-348 -38,-28 -146,-111 -240,-186 -364,-290 -581,-420 -841,-506 -158,-51 -259,-68 -424,-68 -228,0 -404,42 -640,155 -201,97 -336,185 -590,389 -248,198 -368,278 -571,379 -508,253 -993,254 -1504,2 -175,-86 -336,-192 -530,-347 -296,-237 -424,-323 -620,-419 -238,-117 -407,-159 -630,-158 -212,1 -375,42 -600,153 -188,92 -343,198 -635,433 -341,276 -648,436 -960,503 -118,26 -389,26 -514,1 -214,-43 -462,-152 -686,-302 -167,-111 -295,-213 -294,-233 0,-10 64,-111 141,-225 l 141,-208 34,29 c 18,16 76,60 128,99 477,349 841,406 1266,198 145,-71 280,-163 489,-330 198,-159 350,-268 490,-352 600,-360 1161,-407 1751,-145 238,106 469,256 788,514 194,157 399,283 566,347 256,99 535,106 795,20 202,-67 391,-181 670,-405 322,-258 636,-446 905,-541 708,-251 1374,-75 2155,569 280,231 474,351 665,413 123,40 283,46 415,16 167,-39 385,-161 619,-347 l 105,-83 146,215 c 171,252 172,209 -8,346 -398,303 -726,440 -1051,437 -61,0 -147,-7 -190,-15 z"
|
||||
id="path6-5" />
|
||||
<path
|
||||
d="m 11300,5155 c -299,-49 -631,-227 -1015,-545 -364,-302 -694,-480 -1005,-546 -41,-8 -131,-18 -200,-21 -393,-18 -784,146 -1260,527 -277,222 -434,327 -626,416 -669,310 -1303,197 -1990,-358 -247,-199 -344,-268 -517,-368 -359,-206 -697,-266 -1029,-181 -275,69 -526,211 -878,496 -413,334 -692,486 -1024,557 -143,30 -389,30 -529,0 -230,-50 -457,-152 -687,-306 -139,-94 -290,-211 -290,-225 0,-6 271,-415 285,-429 2,-2 46,30 98,71 258,202 483,316 705,358 38,7 112,10 195,6 160,-6 257,-31 427,-113 148,-71 273,-155 487,-326 195,-157 311,-242 431,-317 310,-194 593,-304 879,-342 131,-17 399,-6 528,21 369,78 726,268 1155,614 319,258 548,383 812,442 101,23 345,23 448,0 119,-26 196,-54 325,-116 146,-70 275,-156 460,-304 333,-267 541,-400 801,-512 537,-233 1046,-217 1589,51 241,118 397,222 702,466 357,286 563,402 781,440 87,15 238,6 332,-21 157,-45 370,-168 585,-338 55,-44 103,-78 107,-76 3,2 70,99 148,215 138,205 142,212 124,229 -45,43 -229,180 -339,253 -135,89 -342,194 -455,231 -178,58 -396,78 -560,51 z"
|
||||
id="path8-9" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.0021812,0,0,-0.0021812,29.884057,176.89732)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g6">
|
||||
<path
|
||||
d="m 2998,12790 c -315,-57 -548,-268 -644,-585 -18,-58 -19,-222 -22,-4115 l -3,-4055 -72,-50 c -86,-60 -250,-215 -323,-306 -379,-473 -476,-1119 -253,-1683 195,-493 612,-859 1134,-995 213,-56 533,-66 747,-22 221,45 468,151 648,279 114,81 297,259 372,362 150,206 250,425 299,655 94,445 5,902 -248,1285 -93,140 -292,344 -425,435 l -87,60 -3,4045 -3,4045 -23,73 c -85,276 -283,473 -554,553 -62,18 -103,22 -283,25 -115,1 -231,-1 -257,-6 z"
|
||||
id="path4-1" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.00179894,0,0,-0.00179894,24.88238,44.904584)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g10-7">
|
||||
<path
|
||||
d="m 6950,10549 c -782,-79 -1408,-535 -1640,-1194 -48,-139 -99,-382 -100,-482 v -23 h 994 994 l 31,-26 c 59,-49 65,-162 11,-216 l -28,-28 H 3606 0 v -98 c 0,-122 15,-369 36,-572 42,-430 118,-803 260,-1292 5,-17 181,-18 3519,-18 3851,0 3610,-4 3856,59 661,167 1188,657 1399,1299 273,833 -24,1729 -745,2243 -232,166 -522,283 -825,334 -116,19 -420,27 -550,14 z"
|
||||
id="path4-8" />
|
||||
<path
|
||||
d="M 10600,8243 C 9884,8170 9320,7808 9039,7242 8948,7058 8879,6810 8864,6617 l -7,-87 h 1013 1013 l 23,-21 c 44,-41 43,-171 -1,-215 l -24,-24 H 5650 c -2876,0 -5230,-2 -5230,-5 0,-2 22,-60 49,-127 246,-616 588,-1196 1025,-1735 l 91,-112 4668,-1 c 3217,0 4698,3 4765,11 456,49 849,233 1176,549 314,303 506,670 583,1115 24,138 24,470 -1,610 -73,427 -258,793 -547,1083 -324,325 -715,519 -1162,577 -106,13 -370,18 -467,8 z"
|
||||
id="path6-57" />
|
||||
<path
|
||||
d="m 1890,3956 c 0,-10 365,-343 485,-443 962,-801 2115,-1308 3345,-1472 391,-53 429,-54 1699,-60 l 1194,-6 20,-26 c 44,-59 38,-181 -10,-219 -25,-20 -39,-20 -1022,-20 h -997 l 8,-82 c 51,-531 322,-983 768,-1282 108,-73 337,-185 460,-226 457,-152 939,-158 1364,-19 803,263 1354,1018 1358,1859 0,224 -18,366 -73,560 -100,349 -287,656 -550,904 -285,267 -609,429 -1026,513 -83,17 -275,18 -3555,21 -1908,1 -3468,0 -3468,-2 z"
|
||||
id="path8-4" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(-0.00273933,0,0,-0.00273933,53.972152,70.266544)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g6-5">
|
||||
<path
|
||||
d="m 7360,7349 c -704,-67 -1328,-436 -1670,-987 -110,-179 -180,-348 -237,-580 -45,-184 -49,-296 -16,-480 26,-140 39,-293 29,-344 -3,-18 -19,-49 -35,-68 -27,-33 -32,-35 -104,-38 -69,-4 -80,-1 -134,27 -136,73 -330,254 -419,391 -82,127 -164,330 -164,406 0,22 0,22 68,-6 93,-40 179,-52 327,-48 125,3 127,3 151,31 54,63 21,126 -142,273 -146,131 -144,129 -144,168 0,19 4,47 10,61 l 10,26 49,-26 c 27,-15 81,-56 119,-91 l 71,-64 30,43 c 143,209 59,553 -184,750 -107,87 -214,132 -350,147 -81,9 -114,-1 -181,-55 -23,-19 -46,-35 -50,-35 -4,0 -4,34 0,76 l 7,77 -68,-7 c -99,-10 -179,-33 -257,-74 -184,-96 -275,-254 -249,-430 6,-35 6,-62 1,-62 -5,0 -31,11 -58,25 -74,38 -194,75 -239,75 -33,0 -41,-4 -41,-18 0,-40 57,-129 137,-213 l 85,-89 h -52 c -28,0 -97,11 -152,25 -55,14 -103,24 -105,21 -10,-9 52,-109 82,-131 16,-13 51,-33 77,-44 52,-22 63,-37 72,-101 l 6,-45 -95,-75 c -143,-112 -256,-185 -392,-251 -67,-32 -127,-67 -133,-78 -13,-25 -13,-92 -1,-125 6,-13 37,-43 71,-66 74,-51 100,-89 100,-151 0,-49 -4,-56 -99,-171 -52,-63 -132,-227 -155,-318 -9,-36 -19,-110 -22,-165 -5,-84 -2,-120 20,-230 63,-306 163,-492 381,-711 179,-179 366,-295 605,-375 93,-30 100,-31 295,-33 178,-2 208,-5 270,-25 190,-63 322,-161 434,-323 45,-65 65,-84 140,-132 127,-81 210,-177 247,-289 13,-40 40,-75 139,-177 170,-178 220,-267 246,-444 12,-81 7,-128 -31,-265 -11,-41 -20,-96 -20,-123 v -48 H 3854 2068 l 50,63 c 40,50 779,1007 816,1056 6,8 7,12 1,9 -5,-3 -608,-259 -1340,-568 C 864,1611 211,1335 144,1306 77,1278 23,1251 24,1245 25,1240 266,1133 560,1009 2512,183 2923,10 2927,14 c 2,2 -189,253 -425,557 l -429,554 3774,3 3773,2 683,-411 c 375,-226 696,-420 713,-430 30,-18 66,-19 903,-19 479,0 871,3 871,8 0,4 -216,223 -480,487 l -480,480 480,480 c 264,264 480,483 480,488 0,4 -393,7 -873,7 h -873 l -712,-430 -713,-430 H 8061 6502 l -6,23 c -3,12 -28,61 -57,107 -79,131 -96,170 -113,259 -35,181 -23,236 108,494 94,186 105,213 133,338 35,150 91,302 155,418 43,77 216,312 253,343 48,41 112,53 285,53 142,0 176,-3 244,-23 170,-49 322,-139 444,-263 95,-98 112,-124 112,-179 0,-124 -68,-278 -165,-376 -81,-81 -148,-113 -276,-130 -56,-7 -103,-15 -106,-17 -2,-3 13,-19 34,-36 72,-60 254,-138 449,-192 98,-27 369,-38 496,-20 250,36 447,132 604,293 95,98 131,149 184,260 54,113 81,221 86,348 l 4,105 62,38 c 222,135 371,414 354,662 -3,50 -9,115 -12,145 -6,51 -3,60 35,126 59,103 85,213 78,329 -12,171 -72,354 -164,493 -21,31 -80,101 -131,154 l -93,96 31,24 c 41,30 114,127 151,200 92,182 97,405 14,649 -56,162 -151,297 -354,499 -406,404 -922,667 -1492,760 -131,21 -324,25 -489,9 z"
|
||||
id="path4-3" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.00194266,0,0,-0.00194266,23.960519,100.82883)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g32">
|
||||
<path
|
||||
d="m 6710,12673 c -25,-2 -90,-10 -145,-19 -533,-81 -1001,-335 -1367,-742 l -65,-73 -84,45 c -869,470 -1958,306 -2664,-399 -315,-316 -513,-683 -619,-1147 -5,-23 -15,-30 -64,-43 -136,-38 -306,-101 -427,-160 C 605,9807 139,9173 24,8430 2,8288 -1,7939 18,7805 163,6801 900,6037 1895,5859 c 113,-21 162,-24 380,-23 266,0 345,8 545,59 229,58 493,173 681,296 l 93,61 51,-12 c 284,-67 433,-84 678,-77 181,5 335,26 492,65 l 70,18 75,-60 c 307,-244 686,-408 1083,-466 150,-23 445,-27 587,-10 416,52 839,229 1148,481 l 73,60 89,-51 c 268,-153 567,-253 875,-291 117,-14 417,-14 525,0 225,30 486,103 667,186 l 83,38 127,-19 c 170,-25 470,-25 633,0 515,79 970,315 1323,686 325,342 525,752 603,1235 22,136 25,485 6,620 -99,685 -474,1268 -1050,1632 -320,202 -774,341 -1120,343 h -72 l -113,113 c -388,393 -872,620 -1432,672 l -70,7 -56,102 c -268,481 -730,863 -1260,1039 -272,91 -610,132 -899,110 z"
|
||||
id="path4-88" />
|
||||
<path
|
||||
d="m 3943,5543 c -60,-12 -557,-585 -717,-828 -121,-183 -153,-279 -143,-435 17,-274 207,-501 474,-565 101,-24 243,-17 340,17 182,65 322,205 385,388 34,96 32,291 -5,496 -41,230 -114,542 -187,794 -38,134 -56,151 -147,133 z"
|
||||
id="path6-3" />
|
||||
<path
|
||||
d="m 7553,5543 c -44,-9 -441,-455 -632,-712 -183,-246 -226,-345 -225,-521 1,-87 5,-119 27,-183 71,-205 236,-360 442,-412 76,-19 214,-19 290,0 114,29 203,81 290,169 87,88 133,167 161,278 42,162 -10,521 -156,1079 -84,320 -86,323 -197,302 z"
|
||||
id="path8-1" />
|
||||
<path
|
||||
d="m 11163,5542 c -43,-13 -429,-447 -608,-684 -112,-148 -183,-261 -217,-348 -19,-47 -22,-75 -23,-190 0,-116 3,-145 23,-202 83,-241 300,-403 555,-416 288,-14 526,153 623,438 52,154 -10,582 -171,1167 -58,213 -75,244 -129,242 -17,-1 -41,-4 -53,-7 z"
|
||||
id="path10-8" />
|
||||
<path
|
||||
d="m 5303,4620 c -32,-7 -108,-82 -289,-285 -275,-308 -453,-545 -526,-702 -160,-341 44,-750 422,-844 30,-7 98,-13 150,-13 257,3 483,165 572,410 57,160 23,475 -107,991 -115,455 -122,467 -222,443 z"
|
||||
id="path12-9" />
|
||||
<path
|
||||
d="m 8918,4623 c -62,-10 -548,-565 -723,-828 -117,-174 -145,-252 -145,-404 0,-166 54,-301 169,-423 117,-125 263,-190 431,-192 109,-1 176,13 275,59 161,73 293,232 336,405 38,151 -2,451 -127,955 -76,304 -102,388 -130,413 -25,22 -32,23 -86,15 z"
|
||||
id="path14-6" />
|
||||
<path
|
||||
d="m 6664,3698 c -36,-8 -56,-24 -141,-116 -446,-484 -663,-775 -717,-961 -26,-88 -21,-243 9,-339 38,-120 119,-237 214,-307 249,-182 575,-163 794,45 154,146 210,310 186,544 -23,233 -110,641 -210,986 -41,140 -62,163 -135,148 z"
|
||||
id="path16-4" />
|
||||
<path
|
||||
d="m 10275,3696 c -33,-9 -64,-36 -167,-146 -229,-245 -448,-510 -562,-680 -118,-176 -152,-277 -143,-435 11,-209 121,-393 298,-498 393,-232 898,31 926,482 9,154 -46,484 -152,896 -81,315 -95,356 -130,376 -25,13 -37,14 -70,5 z"
|
||||
id="path18-3" />
|
||||
<path
|
||||
d="m 3024,3691 c -21,-9 -181,-177 -320,-336 -334,-382 -485,-607 -520,-775 -66,-312 148,-639 466,-714 320,-76 654,127 737,447 33,128 3,402 -83,776 -61,263 -142,554 -162,580 -20,28 -78,38 -118,22 z"
|
||||
id="path20-3" />
|
||||
<path
|
||||
d="m 4393,2773 c -52,-10 -509,-527 -687,-776 -73,-102 -134,-214 -157,-287 -26,-81 -28,-236 -4,-324 55,-207 237,-387 444,-441 80,-20 226,-21 304,0 214,56 381,217 442,430 38,130 13,383 -76,779 -42,185 -130,519 -150,569 -20,48 -52,62 -116,50 z"
|
||||
id="path22-3" />
|
||||
<path
|
||||
d="m 8008,2773 c -20,-3 -62,-41 -146,-131 -367,-391 -619,-720 -689,-897 -24,-63 -27,-83 -28,-195 0,-106 4,-136 24,-199 51,-154 171,-292 316,-361 105,-49 159,-62 276,-61 171,1 306,58 430,181 132,131 188,282 176,474 -12,181 -60,441 -147,786 -65,257 -98,362 -121,387 -22,22 -34,25 -91,16 z"
|
||||
id="path24" />
|
||||
<path
|
||||
d="m 2140,1850 c -38,-9 -111,-81 -304,-300 -315,-356 -486,-591 -536,-733 -64,-182 -38,-378 72,-543 120,-179 332,-285 545,-271 268,18 498,208 563,465 16,62 14,241 -5,362 -43,285 -196,924 -238,990 -9,15 -52,43 -60,39 -1,-1 -18,-5 -37,-9 z"
|
||||
id="path26" />
|
||||
<path
|
||||
d="m 5754,1848 c -37,-8 -57,-26 -177,-156 -415,-451 -636,-753 -682,-929 -20,-75 -19,-210 1,-292 41,-165 176,-333 326,-405 151,-72 315,-84 465,-33 99,34 156,69 233,143 109,104 175,239 187,378 15,179 -82,690 -222,1171 -36,124 -52,139 -131,123 z"
|
||||
id="path28" />
|
||||
<path
|
||||
d="m 9371,1850 c -41,-10 -105,-72 -291,-280 -375,-422 -535,-650 -576,-827 -33,-139 1,-322 82,-451 170,-269 502,-365 789,-229 142,68 265,205 316,354 21,60 24,85 23,218 -1,187 -36,394 -135,785 -72,288 -105,393 -134,418 -14,12 -29,22 -33,21 -4,-1 -22,-5 -41,-9 z"
|
||||
id="path30" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.0034974,0,0,-0.0034974,260.93273,105.32701)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g30">
|
||||
<path
|
||||
d="M 815,5855 C 501,5811 237,5619 100,5337 73,5281 41,5197 28,5150 L 5,5065 V 3205 C 5,1461 6,1341 23,1276 116,912 382,647 740,563 c 71,-17 345,-18 5660,-18 5315,0 5589,1 5660,18 358,84 624,349 717,713 17,65 18,185 18,1929 v 1860 l -23,85 c -105,388 -422,663 -817,709 -143,17 -11021,13 -11140,-4 z m 11188,-364 c 90,-24 133,-44 212,-104 97,-73 176,-191 212,-318 17,-61 18,-152 18,-1864 0,-1688 -1,-1804 -18,-1864 -58,-210 -218,-370 -428,-428 -61,-17 -345,-18 -5599,-18 -5254,0 -5538,1 -5599,18 -210,58 -370,218 -428,428 -17,60 -18,176 -18,1864 0,1712 1,1803 18,1864 47,165 162,307 310,383 22,11 71,28 110,38 70,18 228,19 5603,19 5440,1 5532,1 5607,-18 z"
|
||||
id="path4-86" />
|
||||
<path
|
||||
d="m 3719,5115 c -335,-53 -612,-289 -718,-613 -46,-140 -53,-242 -30,-452 85,-796 191,-1806 199,-1900 5,-63 19,-150 30,-194 88,-332 358,-588 695,-657 84,-17 194,-19 1635,-29 850,-6 1991,-12 2535,-13 943,-2 993,-1 1060,17 385,104 647,410 684,798 6,57 31,238 55,403 25,165 82,543 126,840 44,297 91,613 105,702 29,187 31,274 9,380 -35,170 -108,313 -223,435 -155,165 -333,257 -554,287 -54,8 -932,11 -2800,10 -2220,-1 -2738,-3 -2808,-14 z m 5626,-280 c 275,-57 495,-316 495,-581 0,-34 -18,-181 -39,-326 -143,-948 -261,-1754 -266,-1818 -21,-230 -150,-419 -349,-515 -50,-24 -118,-49 -151,-56 -62,-12 -1014,-10 -3830,11 -1341,10 -1269,6 -1415,78 -56,27 -96,57 -155,117 -97,97 -148,190 -170,310 -8,44 -42,343 -75,665 -33,322 -83,799 -111,1060 -50,469 -51,476 -36,554 41,206 192,393 378,467 126,50 -11,47 2914,48 2369,1 2749,-1 2810,-14 z"
|
||||
id="path6-0" />
|
||||
<path
|
||||
d="m 4148,4229 c -113,-17 -218,-96 -267,-199 -22,-47 -26,-69 -26,-150 0,-81 4,-103 26,-150 33,-70 99,-136 169,-169 47,-22 69,-26 150,-26 81,0 103,4 150,26 195,92 261,339 139,523 -69,104 -212,165 -341,145 z"
|
||||
id="path8-48" />
|
||||
<path
|
||||
d="m 5280,4228 c -95,-15 -179,-69 -233,-151 -46,-70 -59,-115 -59,-203 1,-189 144,-334 337,-342 113,-5 180,21 261,102 75,75 104,143 104,246 0,221 -189,382 -410,348 z"
|
||||
id="path10" />
|
||||
<path
|
||||
d="m 6318,4229 c -286,-44 -401,-393 -196,-599 63,-63 135,-94 233,-98 114,-5 180,21 261,102 75,75 104,143 104,246 0,217 -190,382 -402,349 z"
|
||||
id="path12" />
|
||||
<path
|
||||
d="m 7474,4229 c -172,-22 -304,-173 -304,-349 0,-101 42,-193 120,-263 153,-138 405,-109 521,60 45,65 61,119 62,203 0,103 -29,175 -96,243 -86,86 -185,121 -303,106 z"
|
||||
id="path14" />
|
||||
<path
|
||||
d="m 8578,4229 c -113,-18 -218,-96 -267,-199 -22,-47 -26,-69 -26,-150 0,-81 4,-103 26,-150 33,-70 99,-136 169,-169 47,-22 69,-26 150,-26 81,0 103,4 150,26 286,135 261,559 -39,653 -64,20 -108,24 -163,15 z"
|
||||
id="path16" />
|
||||
<path
|
||||
d="m 4718,2946 c -74,-30 -128,-74 -167,-134 -152,-237 15,-544 294,-544 208,0 369,173 352,378 -8,111 -68,210 -162,269 -98,61 -215,73 -317,31 z"
|
||||
id="path18" />
|
||||
<path
|
||||
d="m 5749,2947 c -75,-31 -122,-69 -162,-130 -47,-71 -61,-119 -60,-202 1,-103 32,-176 104,-246 72,-72 143,-101 245,-101 155,0 288,94 335,239 50,151 -6,314 -140,404 -95,64 -219,78 -322,36 z"
|
||||
id="path20" />
|
||||
<path
|
||||
d="m 6900,2948 c -78,-30 -169,-123 -199,-203 -31,-82 -27,-196 10,-275 56,-119 179,-201 307,-203 87,-1 144,15 211,62 235,161 191,521 -75,621 -74,27 -180,26 -254,-2 z"
|
||||
id="path22" />
|
||||
<path
|
||||
d="m 8008,2947 c -216,-91 -290,-352 -153,-539 68,-92 165,-140 288,-140 65,0 87,5 140,30 77,36 142,100 176,172 22,47 26,69 26,150 0,81 -4,103 -25,145 -34,70 -99,136 -167,171 -48,24 -72,29 -143,32 -71,2 -94,-1 -142,-21 z"
|
||||
id="path24-8" />
|
||||
<path
|
||||
d="m 1230,4060 c -336,-73 -601,-331 -681,-665 -27,-110 -29,-284 -6,-392 96,-444 510,-745 962,-701 539,53 909,578 775,1102 -119,467 -584,757 -1050,656 z m 390,-293 c 423,-150 547,-689 230,-1008 -194,-195 -464,-240 -709,-118 -216,107 -354,347 -337,585 16,214 140,407 325,503 110,57 173,71 306,67 88,-2 125,-8 185,-29 z"
|
||||
id="path26-8" />
|
||||
<path
|
||||
d="m 11365,4074 c -11,-2 -47,-10 -80,-16 -71,-14 -207,-66 -267,-104 -299,-186 -462,-512 -427,-854 12,-115 32,-189 80,-289 165,-348 514,-546 894,-509 207,20 388,105 533,249 166,164 256,365 269,599 21,410 -253,784 -659,900 -71,21 -293,36 -343,24 z m 315,-307 c 91,-32 195,-102 256,-171 56,-64 122,-193 140,-277 78,-364 -180,-709 -556,-744 -165,-16 -351,55 -475,179 -188,189 -235,462 -120,701 76,158 234,287 403,330 91,23 259,15 352,-18 z"
|
||||
id="path28-9" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.0107659,0,0,-0.0107659,102.50482,163.97367)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g12">
|
||||
<path
|
||||
d="m 7484,12789 c -67,-19 -123,-121 -109,-198 15,-81 61,-135 125,-148 l 30,-6 -2,-2120 -3,-2121 -47,3 -48,3 v -166 -166 h -195 -195 l -2,163 -3,162 -55,1 -55,1 -3,1128 c -2,1114 -2,1127 18,1152 27,35 43,99 35,142 -10,57 -50,116 -91,136 -49,23 -148,17 -186,-10 -65,-48 -90,-154 -55,-236 20,-50 76,-90 132,-97 l 45,-5 -2,-1104 -3,-1105 -85,-2 -85,-1 -3,-162 -2,-163 h -195 -194 v 163 162 h -83 -83 l -5,720 -5,720 -542,3 -543,2 v 755 755 l 28,42 c 23,36 27,52 27,113 0,63 -3,76 -28,108 -38,50 -75,67 -145,67 -45,0 -67,-6 -93,-23 -67,-44 -98,-153 -65,-230 17,-41 76,-93 115,-102 l 31,-7 v -789 -789 h 555 555 v -672 -673 h -52 -53 l -3,-162 -2,-163 h -195 -195 l -2,163 -3,162 h -48 -47 v 418 417 h -633 -634 l -24,26 c -37,40 -73,54 -137,54 -45,0 -67,-5 -93,-23 -110,-74 -104,-253 11,-314 109,-58 238,3 257,122 l 6,35 h 553 554 l -2,-366 -3,-367 -70,-1 -70,-1 -3,-162 -2,-163 h -195 -195 l -2,163 -3,162 h -30 l -30,1 -3,182 -2,182 H 3527 2435 l -50,26 c -123,63 -255,-19 -255,-159 0,-62 19,-105 63,-144 93,-82 246,-32 279,91 l 12,46 h 1003 1004 l -3,-111 -3,-111 -95,-1 -95,-2 -3,-162 -2,-163 h -240 -240 v -345 -345 h -165 -165 v -40 -40 H 2442 1403 l -33,41 c -94,117 -272,81 -310,-63 -21,-77 10,-159 79,-205 26,-17 48,-23 91,-23 67,0 111,25 149,83 l 24,37 h 1039 1038 v -90 -90 h 165 165 v -195 -195 h -165 -165 v -70 -70 H 1870 260 v 930 930 l 25,16 c 41,27 68,96 63,165 -5,62 -23,97 -69,132 -56,41 -152,41 -208,0 -58,-42 -85,-139 -60,-214 13,-38 63,-96 91,-105 17,-5 18,-51 20,-997 l 3,-992 1677,-3 1678,-2 v -60 -60 h 165 165 v -195 -195 h -164 -165 l -3,-47 -3,-48 -1037,-3 -1036,-2 -31,-39 -31,-39 v -740 -740 l -35,-6 c -110,-21 -168,-180 -101,-278 35,-51 70,-71 134,-76 100,-7 158,35 184,133 13,50 0,125 -28,156 -12,13 -14,125 -14,753 0,489 -3,744 -10,757 -11,19 4,19 1000,19 h 1010 v -95 -95 h 165 165 v -285 -285 h 300 300 v -165 -165 h 40 40 v -779 c 0,-772 0,-779 -21,-805 l -20,-26 h -657 l -657,1 -20,31 c -30,48 -78,71 -145,71 -104,0 -173,-71 -174,-178 -1,-197 249,-255 334,-78 l 25,53 h 674 673 l 59,51 59,51 v 804 804 h 90 90 v 165 165 h 195 195 v -161 c 0,-152 1,-161 20,-166 20,-5 20,-14 20,-1818 V 691 l -26,-20 c -26,-21 -36,-21 -550,-21 -330,0 -524,4 -524,10 0,18 -65,83 -97,96 -80,34 -178,2 -221,-71 -33,-58 -28,-157 11,-209 41,-53 78,-69 151,-64 74,4 116,30 143,88 l 18,39 541,1 h 541 l 74,53 74,53 3,1837 2,1836 108,3 107,3 3,163 2,162 h 195 195 v -165 -165 h 50 50 V 2800 1281 l -42,-12 c -110,-29 -154,-161 -94,-277 32,-62 117,-93 197,-72 116,31 163,186 88,291 -18,26 -19,71 -19,1568 v 1541 h 80 80 v 165 165 h 195 195 v -165 -165 h 80 80 V 2325 c 0,-1961 0,-1994 -19,-2005 -13,-6 -241,-10 -671,-10 -647,0 -651,0 -679,21 -78,57 -194,37 -255,-44 -32,-43 -34,-150 -4,-202 41,-71 143,-104 221,-71 44,18 95,78 103,121 l 6,35 h 650 651 l 68,56 69,56 v 2019 2019 h 45 45 v 165 165 h 195 195 l 2,-163 3,-162 h 195 195 l 3,163 2,162 h 195 195 v -165 -165 h 195 195 v 165 165 h 195 195 l 2,-162 3,-163 192,-3 193,-2 2,162 3,163 393,3 392,2 v 490 490 h 160 160 v 60 60 h 660 660 v -770 -770 l -39,-24 c -77,-49 -103,-161 -58,-247 58,-109 218,-122 293,-23 26,34 29,45 29,114 0,69 -3,80 -29,114 -16,21 -44,44 -62,52 l -34,14 -2,838 -3,837 -707,3 -708,2 v 68 67 l -160,-3 -160,-3 v 201 200 h 160 159 l 3,88 3,87 801,3 801,2 18,-41 c 61,-134 254,-130 316,6 65,143 -52,291 -201,255 -44,-11 -110,-59 -110,-81 0,-5 -344,-8 -812,-7 l -813,3 -3,38 -3,37 h -160 -159 v 530 530 h -450 -450 l -2,163 c -2,123 -6,161 -15,160 -10,-2 -13,184 -13,907 v 910 h 900 899 l 19,-43 c 28,-63 72,-91 152,-95 55,-3 70,0 99,20 62,42 76,70 76,156 0,90 -21,129 -85,162 -70,36 -149,24 -205,-31 l -31,-29 -964,-2 -965,-3 -3,-975 -2,-975 -125,3 -125,3 v -165 -166 h -197 -198 v 163 162 l -45,1 -45,1 -3,1581 -2,1582 727,2 727,3 -3,446 -3,446 34,24 c 46,33 65,58 78,106 31,109 -40,220 -148,231 -65,6 -114,-11 -151,-53 -79,-90 -56,-233 46,-287 l 43,-23 v -398 -399 l -740,3 -740,2 -3,-1632 -2,-1633 -80,-1 -80,-2 -3,-162 -2,-163 h -195 -195 l -2,163 -3,162 -73,1 -72,2 v 2137 c 0,2120 0,2137 20,2165 31,44 44,117 31,168 -28,103 -126,153 -237,121 z"
|
||||
id="path4-76" />
|
||||
<path
|
||||
d="m 7670,4298 c 0,-2 -1,-621 -3,-1377 l -2,-1374 -44,-13 c -80,-23 -123,-83 -124,-173 0,-77 32,-134 95,-167 39,-20 122,-18 167,6 98,49 120,206 41,287 l -30,31 -2,1388 -3,1389 -47,3 c -27,2 -48,2 -48,0 z"
|
||||
id="path6-31" />
|
||||
<path
|
||||
d="M 8510,2775 V 1250 h 873 l 872,-1 20,-41 c 31,-65 63,-83 150,-83 59,0 79,4 102,21 104,77 95,255 -17,312 -25,12 -62,22 -85,22 -51,-1 -119,-31 -140,-64 l -17,-26 h -809 -809 l -2,1453 -3,1452 -67,3 -68,3 z"
|
||||
id="path8-7" />
|
||||
<path
|
||||
d="m 9255,4288 c -3,-7 -4,-495 -3,-1083 l 3,-1070 932,-5 933,-5 22,-45 c 33,-65 76,-90 153,-90 68,0 110,21 149,73 32,43 34,150 4,202 -41,71 -143,104 -221,71 -32,-13 -97,-78 -97,-96 0,-6 -323,-10 -885,-10 h -885 l -2,1033 -3,1032 -48,3 c -32,2 -49,-1 -52,-10 z"
|
||||
id="path10-5" />
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:7.05556px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
|
||||
x="57.779884"
|
||||
y="38.736076"
|
||||
id="text1496"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1494"
|
||||
x="57.779884"
|
||||
y="38.736076"
|
||||
style="stroke-width:0.264583">wind speed</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:7.05556px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
|
||||
x="-79.275375"
|
||||
y="76.304565"
|
||||
id="text1500"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1498"
|
||||
x="-79.275375"
|
||||
y="76.304565"
|
||||
style="stroke-width:0.264583">wind direction</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:7.05556px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
|
||||
x="-77.63871"
|
||||
y="89.558937"
|
||||
id="text1504"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1502"
|
||||
x="-77.63871"
|
||||
y="89.558937"
|
||||
style="stroke-width:0.264583">rain fall</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:7.05556px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
|
||||
x="-74.587128"
|
||||
y="102.40005"
|
||||
id="text1508"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1506"
|
||||
x="-74.587128"
|
||||
y="102.40005"
|
||||
style="stroke-width:0.264583">humidity</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:7.05556px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
|
||||
x="-73.550102"
|
||||
y="128.35326"
|
||||
id="text1512"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1510"
|
||||
x="-73.550102"
|
||||
y="128.35326"
|
||||
style="stroke-width:0.264583">pressure</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:7.05556px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
|
||||
x="-71.119621"
|
||||
y="115.4705"
|
||||
id="text892"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan890"
|
||||
x="-71.119621"
|
||||
y="115.4705"
|
||||
style="stroke-width:0.264583">temperature</tspan></text>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 29 KiB |
@@ -1,955 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.1"
|
||||
width="29.700220cm"
|
||||
height="21.000720cm"
|
||||
viewBox="0 0 116930 82680"
|
||||
id="svg23721"
|
||||
sodipodi:docname="diagram_rain_meter.svg"
|
||||
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
|
||||
<metadata
|
||||
id="metadata23727">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title>SVG Picture created as ds-15901_interface.svg date 2024/01/14 11:34:22 </dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs23725">
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Mstart"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Mstart"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="scale(0.4) translate(10,0)"
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
|
||||
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
|
||||
id="path1309" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lstart"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lstart"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="scale(0.8) translate(12.5,0)"
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
|
||||
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
|
||||
id="path1303" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="marker1211"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow2Lstart"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="scale(1.1) translate(1,0)"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
|
||||
id="path1209" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow2Lstart"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow2Lstart"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
transform="scale(1.1) translate(1,0)"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
|
||||
id="path24981" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible;"
|
||||
id="marker26404"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Mend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="scale(0.4) rotate(180) translate(10,0)"
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
|
||||
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
|
||||
id="path26402" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible;"
|
||||
id="Arrow2Mend"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow2Mend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="scale(0.6) rotate(180) translate(0,0)"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
|
||||
id="path24990" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible;"
|
||||
id="marker26278"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Send"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="scale(0.2) rotate(180) translate(6,0)"
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
|
||||
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
|
||||
id="path26276" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Sstart"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Sstart"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="scale(0.2) translate(6,0)"
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
|
||||
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
|
||||
id="path24975" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible;"
|
||||
id="Arrow1Mend"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Mend"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
transform="scale(0.4) rotate(180) translate(10,0)"
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
|
||||
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
|
||||
id="path24972" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible;"
|
||||
id="Arrow1Send"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Send"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="scale(0.2) rotate(180) translate(6,0)"
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
|
||||
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
|
||||
id="path24978" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible;"
|
||||
id="marker26011"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow2Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="scale(1.1) rotate(180) translate(1,0)"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
|
||||
id="path26009" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible;"
|
||||
id="marker25975"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow2Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="scale(1.1) rotate(180) translate(1,0)"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
|
||||
id="path25973" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible;"
|
||||
id="marker25397"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow2Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="scale(1.1) rotate(180) translate(1,0)"
|
||||
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
|
||||
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
|
||||
id="path25395" />
|
||||
</marker>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1008"
|
||||
id="namedview23723"
|
||||
showgrid="false"
|
||||
inkscape:snap-smooth-nodes="true"
|
||||
inkscape:zoom="1.6176436"
|
||||
inkscape:cx="740.66844"
|
||||
inkscape:cy="405.40385"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="g26776"
|
||||
inkscape:document-rotation="0" />
|
||||
<title
|
||||
id="title12307">SVG Picture created as ds-15901_interface.svg date 2024/01/14 11:34:22 </title>
|
||||
<desc
|
||||
id="desc12309">Picture generated by Eeschema-SVG </desc>
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:1.000000;stroke:#000000; stroke-opacity:1.000000; stroke-linecap:round; stroke-linejoin:round;"
|
||||
transform="translate(0 0) scale(1 1)"
|
||||
id="g12311" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:0.000000; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g12313" />
|
||||
<g
|
||||
id="g17993"
|
||||
style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:60;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
transform="translate(71905.019,20149.055)" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:62.519685; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g18217" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:62.519685; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g18235" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:62.519685; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g18253" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:62.519685; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g18273" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:62.519685; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g18293" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:62.519685; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g18313" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:62.519685; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g18333" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:62.519685; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g18353" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:62.519685; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g18373" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:62.519685; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g18391" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:62.519685; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g18409" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:62.519685; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g18429" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:62.519685; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g18487" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:62.519685; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g18513" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:62.519685; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g18567" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:62.519685; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g18841" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:62.519685; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g19061" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:62.519685; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g19113" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:62.519685; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g20339" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:62.519685; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g20447" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:62.519685; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g20697" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:62.519685; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g20955" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:62.519685; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g20997" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:62.519685; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g21031" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:62.519685; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g21079" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:62.519685; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g21139" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:62.519685; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g21439" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:62.519685; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g21489" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:60.000000; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g21531" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:60.000000; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g21537" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:60.000000; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g21543" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:60.000000; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g21549" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:60.000000; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g21555" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:60.000000; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g21561" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:60.000000; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g21567" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:60.000000; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g21573" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:60.000000; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g21579" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:60.000000; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g21585" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:60.000000; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g21591" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:60.000000; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g21597" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:60.000000; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g21603" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:60.000000; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g21609" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:60.000000; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g21615" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:60.000000; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g21621" />
|
||||
<g
|
||||
style="fill:#000000; fill-opacity:0.0; stroke:#000000; stroke-width:60.000000; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
|
||||
id="g21627" />
|
||||
<g
|
||||
id="g26776"
|
||||
transform="matrix(3.4773861,0,0,3.4773861,-152237.77,-97119.484)">
|
||||
<g
|
||||
id="g3803">
|
||||
<g
|
||||
style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:60;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="g17883"
|
||||
transform="matrix(0.91371899,0,0,0.91371899,72312.783,22417.078)">
|
||||
<g
|
||||
id="g17823" />
|
||||
<g
|
||||
style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:100;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="g17827">
|
||||
<rect
|
||||
x="-17400"
|
||||
y="15250"
|
||||
width="800"
|
||||
height="2000"
|
||||
rx="0.000000"
|
||||
id="rect17825" />
|
||||
</g>
|
||||
<g
|
||||
style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:60;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="g17881">
|
||||
<path
|
||||
d="m -17000,15250 v -500"
|
||||
id="path17829" />
|
||||
<path
|
||||
d="m -17000,17250 v 500"
|
||||
id="path17831" />
|
||||
<text
|
||||
x="-12980.669"
|
||||
y="16499.961"
|
||||
textLength="6036.1812"
|
||||
font-size="666.654px"
|
||||
lengthAdjust="spacingAndGlyphs"
|
||||
text-anchor="middle"
|
||||
opacity="0"
|
||||
id="text17833">Pull up resistor</text>
|
||||
<g
|
||||
class="stroked-text"
|
||||
id="g17879">
|
||||
<desc
|
||||
id="desc17835">Pull up resistor</desc>
|
||||
<path
|
||||
d="m -15849,16476 v -500 h 190 l 48,23 24,24 24,48 v 71 l -24,48 -24,24 -48,24 h -190"
|
||||
id="path17837" />
|
||||
<path
|
||||
d="m -15135,16142 v 334"
|
||||
id="path17839" />
|
||||
<path
|
||||
d="m -15349,16142 v 262 l 24,48 47,24 h 72 l 47,-24 24,-24"
|
||||
id="path17841" />
|
||||
<path
|
||||
d="m -14825,16476 -48,-24 -24,-48 v -428"
|
||||
id="path17843" />
|
||||
<path
|
||||
d="m -14563,16476 -48,-24 -24,-48 v -428"
|
||||
id="path17845" />
|
||||
<path
|
||||
d="m -13778,16142 v 334"
|
||||
id="path17847" />
|
||||
<path
|
||||
d="m -13992,16142 v 262 l 24,48 47,24 h 72 l 47,-24 24,-24"
|
||||
id="path17849" />
|
||||
<path
|
||||
d="m -13540,16142 v 500"
|
||||
id="path17851" />
|
||||
<path
|
||||
d="m -13540,16166 48,-24 h 95 l 48,24 24,24 23,48 v 142 l -23,48 -24,24 -48,24 h -95 l -48,-24"
|
||||
id="path17853" />
|
||||
<path
|
||||
d="m -12706,16476 v -334"
|
||||
id="path17855" />
|
||||
<path
|
||||
d="m -12706,16238 23,-48 24,-24 48,-24 h 48"
|
||||
id="path17857" />
|
||||
<path
|
||||
d="m -12206,16452 -48,24 h -95 l -48,-24 -24,-48 v -190 l 24,-48 48,-24 h 95 l 48,24 23,48 v 47 l -238,48"
|
||||
id="path17859" />
|
||||
<path
|
||||
d="m -11992,16452 48,24 h 95 l 47,-24 24,-48 v -24 l -24,-47 -47,-24 h -72 l -47,-24 -24,-47 v -24 l 24,-48 47,-24 h 72 l 47,24"
|
||||
id="path17861" />
|
||||
<path
|
||||
d="m -11563,16476 v -334"
|
||||
id="path17863" />
|
||||
<path
|
||||
d="m -11563,15976 -24,23 24,24 23,-24 -23,-23 v 47"
|
||||
id="path17865" />
|
||||
<path
|
||||
d="m -11349,16452 47,24 h 96 l 47,-24 24,-48 v -24 l -24,-47 -47,-24 h -72 l -47,-24 -24,-47 v -24 l 24,-48 47,-24 h 72 l 47,24"
|
||||
id="path17867" />
|
||||
<path
|
||||
d="m -10992,16142 h 190"
|
||||
id="path17869" />
|
||||
<path
|
||||
d="m -10921,15976 v 428 l 24,48 48,24 h 47"
|
||||
id="path17871" />
|
||||
<path
|
||||
d="m -10563,16476 -48,-24 -24,-24 -24,-48 v -142 l 24,-48 24,-24 48,-24 h 71 l 48,24 23,24 24,48 v 142 l -24,48 -23,24 -48,24 h -71"
|
||||
id="path17873" />
|
||||
<path
|
||||
d="m -10183,16476 v -334"
|
||||
id="path17875" />
|
||||
<path
|
||||
d="m -10183,16238 24,-48 24,-24 48,-24 h 47"
|
||||
id="path17877" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:60;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="g17905"
|
||||
transform="matrix(0.91371899,0,0,0.91371899,72312.783,22417.078)">
|
||||
<g
|
||||
id="g17903">
|
||||
<path
|
||||
style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:60;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="m -17300,13000 300,-500"
|
||||
id="path17885" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:60;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="M -17000,13500 V 12500"
|
||||
id="path17887" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:60;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="m -17000,12500 300,500"
|
||||
id="path17889" />
|
||||
<text
|
||||
x="-17000"
|
||||
y="11749.961"
|
||||
textLength="1488.5826"
|
||||
font-size="666.654px"
|
||||
lengthAdjust="spacingAndGlyphs"
|
||||
text-anchor="middle"
|
||||
opacity="0"
|
||||
id="text17891">VCC</text>
|
||||
<g
|
||||
class="stroked-text"
|
||||
id="g17901">
|
||||
<desc
|
||||
id="desc17893">VCC</desc>
|
||||
<path
|
||||
d="m -17666,11226 166,500 167,-500"
|
||||
id="path17895" />
|
||||
<path
|
||||
d="m -16880,11678 -24,24 -72,24 h -47 l -72,-24 -47,-48 -24,-47 -24,-96 v -71 l 24,-95 24,-48 47,-48 72,-23 h 47 l 72,23 24,24"
|
||||
id="path17897" />
|
||||
<path
|
||||
d="m -16380,11678 -24,24 -72,24 h -47 l -72,-24 -47,-48 -24,-47 -24,-96 v -71 l 24,-95 24,-48 47,-48 72,-23 h 47 l 72,23 24,24"
|
||||
id="path17899" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:60;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="g17973"
|
||||
transform="matrix(0.91371899,0,0,0.91371899,72312.783,22417.078)">
|
||||
<g
|
||||
id="g17907" />
|
||||
<g
|
||||
style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:100;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="g17911">
|
||||
<path
|
||||
d="m -17549.999,21850.96 a 550,550 0 0 0 1099.998,0"
|
||||
id="path17909" />
|
||||
</g>
|
||||
<g
|
||||
style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:60;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="g17915">
|
||||
<path
|
||||
style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:60;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="m -17000,22000 -300,-1500"
|
||||
id="path17913" />
|
||||
</g>
|
||||
<g
|
||||
style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:100;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="g17921">
|
||||
<path
|
||||
style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:100;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="M -16450,21850 V 20100"
|
||||
id="path17917" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:100;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="m -17550,20150 v 1700"
|
||||
id="path17919" />
|
||||
</g>
|
||||
<g
|
||||
style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:60;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="g17925">
|
||||
<path
|
||||
style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:60;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="m -17000,20000 300,1500"
|
||||
id="path17923" />
|
||||
</g>
|
||||
<g
|
||||
style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:100;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="g17929">
|
||||
<path
|
||||
d="m -16450.001,20149.04 a 550,550 0 0 0 -1099.998,0"
|
||||
id="path17927" />
|
||||
</g>
|
||||
<g
|
||||
style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:60;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="g17971">
|
||||
<path
|
||||
d="m -17000,22000 v 1000"
|
||||
id="path17931" />
|
||||
<path
|
||||
d="M -17000,20000 V 19000"
|
||||
id="path17933" />
|
||||
<text
|
||||
x="-13706.851"
|
||||
y="21250"
|
||||
textLength="4583.8188"
|
||||
font-size="666.654px"
|
||||
lengthAdjust="spacingAndGlyphs"
|
||||
text-anchor="middle"
|
||||
opacity="0"
|
||||
id="text17935">Reed switch</text>
|
||||
<g
|
||||
class="stroked-text"
|
||||
id="g17969">
|
||||
<desc
|
||||
id="desc17937">Reed switch</desc>
|
||||
<path
|
||||
d="m -15563,21226 -167,-238"
|
||||
id="path17939" />
|
||||
<path
|
||||
d="m -15849,21226 v -500 h 190 l 48,24 24,23 24,48 v 71 l -24,48 -24,24 -48,24 h -190"
|
||||
id="path17941" />
|
||||
<path
|
||||
d="m -15159,21202 -47,24 h -96 l -47,-24 -24,-48 v -190 l 24,-48 47,-24 h 96 l 47,24 24,48 v 47 l -238,48"
|
||||
id="path17943" />
|
||||
<path
|
||||
d="m -14730,21202 -48,24 h -95 l -48,-24 -23,-48 v -190 l 23,-48 48,-24 h 95 l 48,24 24,48 v 47 l -238,48"
|
||||
id="path17945" />
|
||||
<path
|
||||
d="m -14278,21226 v -500"
|
||||
id="path17947" />
|
||||
<path
|
||||
d="m -14278,21202 -47,24 h -96 l -47,-24 -24,-24 -24,-48 v -142 l 24,-48 24,-24 47,-24 h 96 l 47,24"
|
||||
id="path17949" />
|
||||
<path
|
||||
d="m -13683,21202 48,24 h 95 l 48,-24 24,-48 v -24 l -24,-47 -48,-24 h -71 l -48,-24 -24,-47 v -24 l 24,-48 48,-24 h 71 l 48,24"
|
||||
id="path17951" />
|
||||
<path
|
||||
d="m -13302,20892 96,334 95,-238 95,238 95,-334"
|
||||
id="path17953" />
|
||||
<path
|
||||
d="m -12730,21226 v -334"
|
||||
id="path17955" />
|
||||
<path
|
||||
d="m -12730,20726 -24,24 24,23 24,-23 -24,-24 v 47"
|
||||
id="path17957" />
|
||||
<path
|
||||
d="m -12563,20892 h 190"
|
||||
id="path17959" />
|
||||
<path
|
||||
d="m -12492,20726 v 428 l 24,48 47,24 h 48"
|
||||
id="path17961" />
|
||||
<path
|
||||
d="m -11992,21202 -48,24 h -95 l -48,-24 -23,-24 -24,-48 v -142 l 24,-48 23,-24 48,-24 h 95 l 48,24"
|
||||
id="path17963" />
|
||||
<path
|
||||
d="m -11778,21226 v -500"
|
||||
id="path17965" />
|
||||
<path
|
||||
d="m -11563,21226 v -262 l -24,-48 -48,-24 h -71 l -48,24 -24,24"
|
||||
id="path17967" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:60;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="g18081"
|
||||
transform="matrix(0.91371899,0,0,0.91371899,72312.783,22417.078)">
|
||||
<g
|
||||
id="g18079">
|
||||
<path
|
||||
style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:60;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="m -17000,24250 v 500 h 500 l -500,500 -500,-500 h 500"
|
||||
id="path18065" />
|
||||
<text
|
||||
x="-17000"
|
||||
y="26249.961"
|
||||
textLength="1583.8188"
|
||||
font-size="666.654px"
|
||||
lengthAdjust="spacingAndGlyphs"
|
||||
text-anchor="middle"
|
||||
opacity="0"
|
||||
id="text18067">GND</text>
|
||||
<g
|
||||
class="stroked-text"
|
||||
id="g18077">
|
||||
<desc
|
||||
id="desc18069">GND</desc>
|
||||
<path
|
||||
d="m -17380,25749 -48,-23 h -72 l -71,23 -48,48 -23,48 -24,95 v 71 l 24,96 23,47 48,48 71,24 h 48 l 72,-24 23,-24 v -167 h -95"
|
||||
id="path18071" />
|
||||
<path
|
||||
d="m -17142,26226 v -500 l 285,500 v -500"
|
||||
id="path18073" />
|
||||
<path
|
||||
d="m -16619,26226 v -500 h 119 l 72,23 48,48 23,48 24,95 v 71 l -24,96 -23,47 -48,48 -72,24 h -119"
|
||||
id="path18075" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:60;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="g18311"
|
||||
transform="matrix(0.91371899,0,0,0.91371899,72312.783,22417.078)">
|
||||
<text
|
||||
x="-11250"
|
||||
y="18535.748"
|
||||
textLength="1491.1024"
|
||||
font-size="666.654px"
|
||||
lengthAdjust="spacingAndGlyphs"
|
||||
text-anchor="start"
|
||||
opacity="0"
|
||||
id="text18295">OUT</text>
|
||||
<g
|
||||
class="stroked-text"
|
||||
id="g18307">
|
||||
<desc
|
||||
id="desc18297">OUT</desc>
|
||||
<path
|
||||
d="m -11005,18011 h 95 l 48,24 47,48 24,95 v 167 l -24,95 -47,48 -48,23 h -95 l -48,-23 -47,-48 -24,-95 v -167 l 24,-95 47,-48 48,-24"
|
||||
id="path18299" />
|
||||
<path
|
||||
d="m -10577,18011 v 405 l 24,48 24,24 48,23 h 95 l 47,-23 24,-24 24,-48 v -405"
|
||||
id="path18301" />
|
||||
<path
|
||||
d="m -10124,18011 h 285"
|
||||
id="path18303" />
|
||||
<path
|
||||
d="m -9981,18511 v -500"
|
||||
id="path18305" />
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:60;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="m -11750,18250 375,437.638 h 1803.7402 V 18250 17812.362 H -11375 Z"
|
||||
id="path18309" />
|
||||
</g>
|
||||
<path
|
||||
d="m 56779.56,38635.59 v 456.86"
|
||||
id="path21639"
|
||||
style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:54.8231;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
|
||||
<path
|
||||
d="m 56779.56,34752.285 v 1142.148"
|
||||
id="path21641"
|
||||
style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:54.8231;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
|
||||
<path
|
||||
d="m 56779.56,39092.45 h 4797.025"
|
||||
id="path21665"
|
||||
style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:54.8231;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
|
||||
<path
|
||||
d="m 56779.56,43432.615 v 1142.149"
|
||||
id="path21667"
|
||||
style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:54.8231;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
|
||||
<path
|
||||
d="m 56779.56,39092.45 v 685.289"
|
||||
id="path21691"
|
||||
style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:54.8231;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
|
||||
<circle
|
||||
cx="56779.562"
|
||||
cy="39092.449"
|
||||
r="164.46942"
|
||||
id="circle23717"
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:54.8231;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:47.5895;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 66152.601,39062.427 h 1665.998 v -2471.203 h 1801.661 v 2460.267 l 31.77,-18.342"
|
||||
id="path26185" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:47.5895;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 69620.26,39051.491 h 1665.998 v -2471.204 h 1801.662 v 2460.267 l 31.769,-18.342"
|
||||
id="path26185-0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:47.5895;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 73119.689,39022.212 h 1665.998 v -2471.204 h 1801.662 v 2460.268 l 31.769,-18.342"
|
||||
id="path26185-4" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:761.432px;line-height:1.25;font-family:sans-serif;stroke-width:95.1794"
|
||||
x="64831.664"
|
||||
y="39254.566"
|
||||
id="text26210"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan26208"
|
||||
x="64831.664"
|
||||
y="39254.566"
|
||||
style="stroke-width:95.1794">0V</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:761.432px;line-height:1.25;font-family:sans-serif;stroke-width:95.1794"
|
||||
x="64833.359"
|
||||
y="36919.105"
|
||||
id="text26210-8"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan26208-8"
|
||||
x="64833.359"
|
||||
y="36919.105"
|
||||
style="stroke-width:95.1794">VCC</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:28.1631;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow2Lstart);marker-end:url(#marker26011)"
|
||||
d="M 69630.394,39579.617 H 73069.14"
|
||||
id="path26230" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:583.912px;line-height:1.25;font-family:sans-serif;stroke-width:95.1794"
|
||||
x="68928.836"
|
||||
y="40392.414"
|
||||
id="text26566"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan26564"
|
||||
x="68928.836"
|
||||
y="40392.414"
|
||||
style="font-size:583.912px;stroke-width:95.1794">bucket tipping over</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:139.439px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend)"
|
||||
d="M 49867.049,43664.206 C 46459.42,43383.883 45672.188,41348.505 45262.862,39060.019"
|
||||
id="path26007"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<circle
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:14.8171;stroke-linecap:round"
|
||||
id="path24784"
|
||||
cx="47910.336"
|
||||
cy="41585.172"
|
||||
r="443.30615" />
|
||||
<g
|
||||
id="g24819"
|
||||
transform="matrix(0.91371899,0,0,0.91371899,10087.91,5020.0101)">
|
||||
<g
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:60;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="g17997"
|
||||
transform="translate(71905.019,20149.055)">
|
||||
<rect
|
||||
x="-23220"
|
||||
y="21250"
|
||||
width="440"
|
||||
height="500"
|
||||
rx="0.000000"
|
||||
id="rect17995" />
|
||||
</g>
|
||||
<g
|
||||
style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:60;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="g18001"
|
||||
transform="translate(71905.019,20149.055)">
|
||||
<rect
|
||||
x="-23220"
|
||||
y="20960"
|
||||
width="440"
|
||||
height="500"
|
||||
rx="0.000000"
|
||||
id="rect17999" />
|
||||
</g>
|
||||
<g
|
||||
style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:500;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="g18005"
|
||||
transform="translate(71905.019,20149.055)">
|
||||
<path
|
||||
d="m -22999.999,21750.873 a 500,500 0 0 0 999.998,0"
|
||||
id="path18003" />
|
||||
</g>
|
||||
<g
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:60;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="g18013"
|
||||
transform="translate(71905.019,20149.055)">
|
||||
<rect
|
||||
x="-22220"
|
||||
y="21250"
|
||||
width="440"
|
||||
height="500"
|
||||
rx="0.000000"
|
||||
id="rect18011" />
|
||||
</g>
|
||||
<g
|
||||
style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:60;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="g18017"
|
||||
transform="translate(71905.019,20149.055)">
|
||||
<rect
|
||||
x="-22220"
|
||||
y="20960"
|
||||
width="440"
|
||||
height="500"
|
||||
rx="0.000000"
|
||||
id="rect18015" />
|
||||
</g>
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:218.967;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 46030.263,37949.247 1800.24,3720.611 3729.049,-1804.323"
|
||||
id="path1146" />
|
||||
<ellipse
|
||||
style="fill:none;stroke:#000000;stroke-width:218.967;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path1148"
|
||||
cx="55942.801"
|
||||
cy="20019.52"
|
||||
rx="1133.9928"
|
||||
ry="700.84607"
|
||||
transform="rotate(19.17971)" />
|
||||
<ellipse
|
||||
style="fill:none;stroke:#000000;stroke-width:218.967;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path1148-7"
|
||||
cx="61794.734"
|
||||
cy="20012.893"
|
||||
rx="1133.9929"
|
||||
ry="700.84619"
|
||||
transform="rotate(19.17971)" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:218.967;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="rect1165"
|
||||
width="9124"
|
||||
height="1104.5175"
|
||||
x="54626.047"
|
||||
y="18716.713"
|
||||
transform="rotate(19.17971)" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:175.783;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="rect1188"
|
||||
width="583.17365"
|
||||
height="973.73267"
|
||||
x="52411.383"
|
||||
y="39129.633" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:218.967;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="rect1190"
|
||||
width="1072.691"
|
||||
height="811.55652"
|
||||
x="44790.098"
|
||||
y="36532.289" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:136.854;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 48056.296,41805.777 c 1468.458,304.755 6298.227,1294.688 6298.227,1294.688"
|
||||
id="path1201" />
|
||||
<g
|
||||
id="g2009"
|
||||
transform="matrix(6.6344785,0,0,6.6344785,44800.399,34458.719)">
|
||||
<g
|
||||
id="g2007">
|
||||
<path
|
||||
d="m 5.595,254.875 c -17.185,46.513 6.539,98.118 53.048,115.317 46.474,17.203 98.103,-6.577 115.312,-53.046 17.175,-46.468 -31.479,-173.544 -31.479,-173.544 0,0 -119.655,64.77 -136.881,111.273 z m 29.459,18.266 c 5.685,50.553 34.358,67.908 34.358,67.908 C 18.311,325.793 35.054,273.141 35.054,273.141 Z"
|
||||
id="path2001" />
|
||||
<path
|
||||
d="m 395.391,259.702 c 0,0 -52.531,28.454 -60.083,48.864 -7.54,20.411 2.873,43.066 23.285,50.616 20.399,7.535 43.06,-2.884 50.614,-23.278 7.554,-20.399 -13.816,-76.202 -13.816,-76.202 z m -47.159,56.87 c 2.503,22.202 15.086,29.817 15.086,29.817 -22.429,-6.67 -15.086,-29.817 -15.086,-29.817 z"
|
||||
id="path2003" />
|
||||
<path
|
||||
d="M 368.837,177.115 C 382.898,139.058 343.059,35.032 343.059,35.032 c 0,0 -97.944,53.086 -112.03,91.106 -14.074,38.028 5.364,80.34 43.398,94.384 38.046,14.102 80.319,-5.352 94.41,-43.407 z M 255.121,141.088 c 4.663,41.38 28.137,55.596 28.137,55.596 -41.842,-12.479 -28.137,-55.596 -28.137,-55.596 z"
|
||||
id="path2005" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:798.813px;line-height:1.25;font-family:sans-serif;stroke-width:29.9555"
|
||||
x="66061.227"
|
||||
y="41947.137"
|
||||
id="text1122"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1120"
|
||||
x="66061.227"
|
||||
y="41947.137"
|
||||
style="stroke-width:29.9555">one pulse = 0.2794mm of rain</tspan></text>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 41 KiB |
441
build-doc/images/prototype_block_diagram.svg
Normal file
@@ -0,0 +1,441 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="218.61101mm"
|
||||
height="124.75518mm"
|
||||
viewBox="0 0 218.61101 124.75518"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
|
||||
sodipodi:docname="prototype_block_diagram.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="marker2390"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path2388" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="marker2356"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow2Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="path2354" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow2Lend"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow2Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="path2053" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lend"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path2035" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lstart"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lstart"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(0.8,0,0,0.8,10,0)"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path2032" />
|
||||
</marker>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.7"
|
||||
inkscape:cx="446.70641"
|
||||
inkscape:cy="393.22346"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:document-rotation="0"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1008"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-45.049301,-43.859024)">
|
||||
<g
|
||||
id="g2628">
|
||||
<rect
|
||||
style="fill:none;fill-opacity:0.987705;stroke:#000000;stroke-width:1.3098;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833"
|
||||
width="58.864391"
|
||||
height="31.584869"
|
||||
x="45.704201"
|
||||
y="44.513924" />
|
||||
<g
|
||||
id="g1858"
|
||||
transform="matrix(0.57471392,0,0,0.57471392,1.8673903,24.522091)">
|
||||
<g
|
||||
transform="matrix(0.0015313,0,0,-0.0015313,152.71076,61.064121)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g10">
|
||||
<path
|
||||
d="m 6095,12794 c -27,-2 -115,-8 -195,-14 C 4030,12643 2289,11657 1185,10109 -320,7999 -397,5162 992,2977 1816,1681 3084,716 4540,276 5466,-3 6424,-71 7380,76 c 761,117 1520,381 2180,759 1230,704 2185,1777 2734,3070 866,2040 607,4403 -679,6204 -886,1241 -2181,2128 -3645,2496 -340,86 -633,135 -1005,171 -150,14 -756,27 -870,18 z m 547,-984 c 776,-36 1477,-217 2158,-556 560,-279 978,-580 1426,-1028 435,-435 743,-858 1008,-1386 325,-645 500,-1269 567,-2020 26,-288 14,-767 -27,-1095 -128,-1030 -548,-1992 -1224,-2805 -133,-160 -427,-458 -591,-601 -792,-688 -1757,-1133 -2774,-1278 -283,-41 -469,-53 -785,-53 -880,0 -1667,187 -2450,582 -738,373 -1398,931 -1901,1605 -552,742 -909,1630 -1023,2550 -55,438 -55,912 0,1350 115,926 471,1810 1031,2560 163,219 293,368 522,596 241,240 338,325 576,504 863,649 1910,1026 2980,1075 238,10 281,10 507,0 z"
|
||||
id="path4" />
|
||||
<path
|
||||
d="m 6240,10996 v -214 l -77,-6 c -431,-34 -740,-89 -1062,-191 -611,-193 -1123,-482 -1608,-908 l -130,-114 -155,148 -156,149 -110,-119 -111,-118 151,-151 152,-150 -75,-89 C 2395,8455 2022,7447 2020,6428 v -167 l -52,-5 c -29,-3 -125,-11 -213,-17 -88,-6 -161,-11 -162,-12 -4,-5 21,-313 26,-319 3,-4 96,0 205,8 110,8 205,13 213,10 7,-3 13,-20 13,-40 0,-63 60,-392 101,-552 80,-317 220,-686 361,-954 156,-298 322,-544 561,-831 82,-100 146,-184 140,-188 -25,-17 -313,-262 -313,-267 0,-11 204,-244 211,-242 4,2 169,138 365,303 197,165 364,305 372,310 11,9 -37,71 -233,305 -135,162 -281,344 -324,405 -372,523 -598,1102 -688,1765 -22,168 -26,712 -5,880 108,876 465,1631 1062,2244 627,643 1406,1026 2320,1138 66,8 223,13 420,13 197,0 354,-5 420,-13 755,-93 1397,-361 1980,-826 150,-120 433,-400 553,-547 423,-520 699,-1118 811,-1759 45,-260 51,-338 51,-680 -1,-280 -4,-347 -23,-481 -66,-466 -197,-882 -403,-1278 -151,-288 -279,-471 -609,-866 -192,-230 -239,-291 -228,-300 8,-5 175,-145 372,-310 196,-165 361,-301 365,-303 7,-2 211,231 211,242 0,5 -288,251 -314,268 -5,3 44,71 110,150 203,244 309,388 426,578 245,399 417,806 529,1253 42,166 99,481 99,543 0,20 6,37 13,40 8,3 103,-2 213,-10 109,-8 202,-12 205,-8 5,6 30,314 26,319 -1,1 -74,6 -162,12 -88,6 -183,14 -211,17 l -51,5 -6,247 c -11,459 -76,838 -217,1262 -183,555 -439,1011 -824,1468 l -70,84 152,150 151,151 -111,118 -110,119 -156,-149 -155,-148 -130,114 c -484,426 -997,715 -1608,908 -322,102 -631,157 -1061,191 l -78,6 v 214 214 h -160 -160 z"
|
||||
id="path6" />
|
||||
<path
|
||||
d="m 8385,8348 c -165,-138 -605,-505 -978,-816 l -679,-565 -56,27 c -31,15 -82,33 -112,41 -74,20 -246,19 -323,-1 -229,-59 -412,-243 -471,-472 -21,-80 -22,-229 -1,-317 8,-38 12,-71 7,-74 -5,-3 -151,-125 -326,-270 l -317,-264 98,-101 c 54,-56 156,-161 226,-233 70,-73 130,-133 132,-133 2,0 131,140 286,311 198,218 287,309 298,305 118,-37 270,-48 371,-26 193,43 359,175 445,355 52,107 65,166 65,285 0,103 -13,173 -47,249 l -23,54 23,26 c 121,131 1675,1850 1681,1859 4,7 6,12 4,11 -2,0 -138,-113 -303,-251 z"
|
||||
id="path8" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.00216713,0,0,-0.00216713,121.36416,90.871607)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g10-1">
|
||||
<path
|
||||
d="m 11241,8109 c -271,-58 -564,-218 -911,-498 -368,-296 -560,-417 -825,-516 -295,-111 -619,-116 -920,-13 -249,84 -471,218 -796,479 -80,65 -195,151 -255,192 -567,389 -1112,468 -1676,241 -220,-88 -427,-217 -703,-439 -306,-246 -562,-400 -795,-479 -271,-91 -558,-90 -827,5 -239,85 -461,223 -828,518 -377,302 -681,456 -1010,508 -131,21 -373,13 -496,-16 -271,-62 -582,-223 -863,-446 -47,-38 -86,-72 -86,-77 0,-11 280,-428 288,-428 2,0 48,33 101,74 507,388 882,458 1315,248 160,-78 291,-166 521,-351 236,-190 430,-320 627,-421 223,-114 394,-172 618,-211 106,-19 383,-16 500,4 385,66 763,260 1215,622 209,168 346,260 490,330 203,99 352,135 552,135 335,0 615,-123 1023,-451 424,-340 748,-519 1105,-609 164,-42 280,-53 483,-48 286,8 495,64 797,213 206,101 411,236 635,416 227,183 346,270 455,335 292,171 519,202 786,104 144,-52 333,-168 522,-320 48,-38 91,-70 95,-70 4,0 72,97 152,216 l 145,215 -25,20 c -364,290 -605,428 -885,506 -129,36 -387,42 -524,12 z"
|
||||
id="path4-7" />
|
||||
<path
|
||||
d="m 11276,6634 c -219,-40 -480,-162 -741,-348 -38,-28 -146,-111 -240,-186 -364,-290 -581,-420 -841,-506 -158,-51 -259,-68 -424,-68 -228,0 -404,42 -640,155 -201,97 -336,185 -590,389 -248,198 -368,278 -571,379 -508,253 -993,254 -1504,2 -175,-86 -336,-192 -530,-347 -296,-237 -424,-323 -620,-419 -238,-117 -407,-159 -630,-158 -212,1 -375,42 -600,153 -188,92 -343,198 -635,433 -341,276 -648,436 -960,503 -118,26 -389,26 -514,1 -214,-43 -462,-152 -686,-302 -167,-111 -295,-213 -294,-233 0,-10 64,-111 141,-225 l 141,-208 34,29 c 18,16 76,60 128,99 477,349 841,406 1266,198 145,-71 280,-163 489,-330 198,-159 350,-268 490,-352 600,-360 1161,-407 1751,-145 238,106 469,256 788,514 194,157 399,283 566,347 256,99 535,106 795,20 202,-67 391,-181 670,-405 322,-258 636,-446 905,-541 708,-251 1374,-75 2155,569 280,231 474,351 665,413 123,40 283,46 415,16 167,-39 385,-161 619,-347 l 105,-83 146,215 c 171,252 172,209 -8,346 -398,303 -726,440 -1051,437 -61,0 -147,-7 -190,-15 z"
|
||||
id="path6-5" />
|
||||
<path
|
||||
d="m 11300,5155 c -299,-49 -631,-227 -1015,-545 -364,-302 -694,-480 -1005,-546 -41,-8 -131,-18 -200,-21 -393,-18 -784,146 -1260,527 -277,222 -434,327 -626,416 -669,310 -1303,197 -1990,-358 -247,-199 -344,-268 -517,-368 -359,-206 -697,-266 -1029,-181 -275,69 -526,211 -878,496 -413,334 -692,486 -1024,557 -143,30 -389,30 -529,0 -230,-50 -457,-152 -687,-306 -139,-94 -290,-211 -290,-225 0,-6 271,-415 285,-429 2,-2 46,30 98,71 258,202 483,316 705,358 38,7 112,10 195,6 160,-6 257,-31 427,-113 148,-71 273,-155 487,-326 195,-157 311,-242 431,-317 310,-194 593,-304 879,-342 131,-17 399,-6 528,21 369,78 726,268 1155,614 319,258 548,383 812,442 101,23 345,23 448,0 119,-26 196,-54 325,-116 146,-70 275,-156 460,-304 333,-267 541,-400 801,-512 537,-233 1046,-217 1589,51 241,118 397,222 702,466 357,286 563,402 781,440 87,15 238,6 332,-21 157,-45 370,-168 585,-338 55,-44 103,-78 107,-76 3,2 70,99 148,215 138,205 142,212 124,229 -45,43 -229,180 -339,253 -135,89 -342,194 -455,231 -178,58 -396,78 -560,51 z"
|
||||
id="path8-9" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.00150459,0,0,-0.00150459,156.66338,86.748355)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g6">
|
||||
<path
|
||||
d="m 2998,12790 c -315,-57 -548,-268 -644,-585 -18,-58 -19,-222 -22,-4115 l -3,-4055 -72,-50 c -86,-60 -250,-215 -323,-306 -379,-473 -476,-1119 -253,-1683 195,-493 612,-859 1134,-995 213,-56 533,-66 747,-22 221,45 468,151 648,279 114,81 297,259 372,362 150,206 250,425 299,655 94,445 5,902 -248,1285 -93,140 -292,344 -425,435 l -87,60 -3,4045 -3,4045 -23,73 c -85,276 -283,473 -554,553 -62,18 -103,22 -283,25 -115,1 -231,-1 -257,-6 z"
|
||||
id="path4-1" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.00179894,0,0,-0.00179894,89.758717,59.062409)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g10-7">
|
||||
<path
|
||||
d="m 6950,10549 c -782,-79 -1408,-535 -1640,-1194 -48,-139 -99,-382 -100,-482 v -23 h 994 994 l 31,-26 c 59,-49 65,-162 11,-216 l -28,-28 H 3606 0 v -98 c 0,-122 15,-369 36,-572 42,-430 118,-803 260,-1292 5,-17 181,-18 3519,-18 3851,0 3610,-4 3856,59 661,167 1188,657 1399,1299 273,833 -24,1729 -745,2243 -232,166 -522,283 -825,334 -116,19 -420,27 -550,14 z"
|
||||
id="path4-8" />
|
||||
<path
|
||||
d="M 10600,8243 C 9884,8170 9320,7808 9039,7242 8948,7058 8879,6810 8864,6617 l -7,-87 h 1013 1013 l 23,-21 c 44,-41 43,-171 -1,-215 l -24,-24 H 5650 c -2876,0 -5230,-2 -5230,-5 0,-2 22,-60 49,-127 246,-616 588,-1196 1025,-1735 l 91,-112 4668,-1 c 3217,0 4698,3 4765,11 456,49 849,233 1176,549 314,303 506,670 583,1115 24,138 24,470 -1,610 -73,427 -258,793 -547,1083 -324,325 -715,519 -1162,577 -106,13 -370,18 -467,8 z"
|
||||
id="path6-57" />
|
||||
<path
|
||||
d="m 1890,3956 c 0,-10 365,-343 485,-443 962,-801 2115,-1308 3345,-1472 391,-53 429,-54 1699,-60 l 1194,-6 20,-26 c 44,-59 38,-181 -10,-219 -25,-20 -39,-20 -1022,-20 h -997 l 8,-82 c 51,-531 322,-983 768,-1282 108,-73 337,-185 460,-226 457,-152 939,-158 1364,-19 803,263 1354,1018 1358,1859 0,224 -18,366 -73,560 -100,349 -287,656 -550,904 -285,267 -609,429 -1026,513 -83,17 -275,18 -3555,21 -1908,1 -3468,0 -3468,-2 z"
|
||||
id="path8-4" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(-0.00273933,0,0,-0.00273933,118.84849,84.424368)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g6-5">
|
||||
<path
|
||||
d="m 7360,7349 c -704,-67 -1328,-436 -1670,-987 -110,-179 -180,-348 -237,-580 -45,-184 -49,-296 -16,-480 26,-140 39,-293 29,-344 -3,-18 -19,-49 -35,-68 -27,-33 -32,-35 -104,-38 -69,-4 -80,-1 -134,27 -136,73 -330,254 -419,391 -82,127 -164,330 -164,406 0,22 0,22 68,-6 93,-40 179,-52 327,-48 125,3 127,3 151,31 54,63 21,126 -142,273 -146,131 -144,129 -144,168 0,19 4,47 10,61 l 10,26 49,-26 c 27,-15 81,-56 119,-91 l 71,-64 30,43 c 143,209 59,553 -184,750 -107,87 -214,132 -350,147 -81,9 -114,-1 -181,-55 -23,-19 -46,-35 -50,-35 -4,0 -4,34 0,76 l 7,77 -68,-7 c -99,-10 -179,-33 -257,-74 -184,-96 -275,-254 -249,-430 6,-35 6,-62 1,-62 -5,0 -31,11 -58,25 -74,38 -194,75 -239,75 -33,0 -41,-4 -41,-18 0,-40 57,-129 137,-213 l 85,-89 h -52 c -28,0 -97,11 -152,25 -55,14 -103,24 -105,21 -10,-9 52,-109 82,-131 16,-13 51,-33 77,-44 52,-22 63,-37 72,-101 l 6,-45 -95,-75 c -143,-112 -256,-185 -392,-251 -67,-32 -127,-67 -133,-78 -13,-25 -13,-92 -1,-125 6,-13 37,-43 71,-66 74,-51 100,-89 100,-151 0,-49 -4,-56 -99,-171 -52,-63 -132,-227 -155,-318 -9,-36 -19,-110 -22,-165 -5,-84 -2,-120 20,-230 63,-306 163,-492 381,-711 179,-179 366,-295 605,-375 93,-30 100,-31 295,-33 178,-2 208,-5 270,-25 190,-63 322,-161 434,-323 45,-65 65,-84 140,-132 127,-81 210,-177 247,-289 13,-40 40,-75 139,-177 170,-178 220,-267 246,-444 12,-81 7,-128 -31,-265 -11,-41 -20,-96 -20,-123 v -48 H 3854 2068 l 50,63 c 40,50 779,1007 816,1056 6,8 7,12 1,9 -5,-3 -608,-259 -1340,-568 C 864,1611 211,1335 144,1306 77,1278 23,1251 24,1245 25,1240 266,1133 560,1009 2512,183 2923,10 2927,14 c 2,2 -189,253 -425,557 l -429,554 3774,3 3773,2 683,-411 c 375,-226 696,-420 713,-430 30,-18 66,-19 903,-19 479,0 871,3 871,8 0,4 -216,223 -480,487 l -480,480 480,480 c 264,264 480,483 480,488 0,4 -393,7 -873,7 h -873 l -712,-430 -713,-430 H 8061 6502 l -6,23 c -3,12 -28,61 -57,107 -79,131 -96,170 -113,259 -35,181 -23,236 108,494 94,186 105,213 133,338 35,150 91,302 155,418 43,77 216,312 253,343 48,41 112,53 285,53 142,0 176,-3 244,-23 170,-49 322,-139 444,-263 95,-98 112,-124 112,-179 0,-124 -68,-278 -165,-376 -81,-81 -148,-113 -276,-130 -56,-7 -103,-15 -106,-17 -2,-3 13,-19 34,-36 72,-60 254,-138 449,-192 98,-27 369,-38 496,-20 250,36 447,132 604,293 95,98 131,149 184,260 54,113 81,221 86,348 l 4,105 62,38 c 222,135 371,414 354,662 -3,50 -9,115 -12,145 -6,51 -3,60 35,126 59,103 85,213 78,329 -12,171 -72,354 -164,493 -21,31 -80,101 -131,154 l -93,96 31,24 c 41,30 114,127 151,200 92,182 97,405 14,649 -56,162 -151,297 -354,499 -406,404 -922,667 -1492,760 -131,21 -324,25 -489,9 z"
|
||||
id="path4-3" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.00194266,0,0,-0.00194266,122.77173,65.617247)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g32">
|
||||
<path
|
||||
d="m 6710,12673 c -25,-2 -90,-10 -145,-19 -533,-81 -1001,-335 -1367,-742 l -65,-73 -84,45 c -869,470 -1958,306 -2664,-399 -315,-316 -513,-683 -619,-1147 -5,-23 -15,-30 -64,-43 -136,-38 -306,-101 -427,-160 C 605,9807 139,9173 24,8430 2,8288 -1,7939 18,7805 163,6801 900,6037 1895,5859 c 113,-21 162,-24 380,-23 266,0 345,8 545,59 229,58 493,173 681,296 l 93,61 51,-12 c 284,-67 433,-84 678,-77 181,5 335,26 492,65 l 70,18 75,-60 c 307,-244 686,-408 1083,-466 150,-23 445,-27 587,-10 416,52 839,229 1148,481 l 73,60 89,-51 c 268,-153 567,-253 875,-291 117,-14 417,-14 525,0 225,30 486,103 667,186 l 83,38 127,-19 c 170,-25 470,-25 633,0 515,79 970,315 1323,686 325,342 525,752 603,1235 22,136 25,485 6,620 -99,685 -474,1268 -1050,1632 -320,202 -774,341 -1120,343 h -72 l -113,113 c -388,393 -872,620 -1432,672 l -70,7 -56,102 c -268,481 -730,863 -1260,1039 -272,91 -610,132 -899,110 z"
|
||||
id="path4-88" />
|
||||
<path
|
||||
d="m 3943,5543 c -60,-12 -557,-585 -717,-828 -121,-183 -153,-279 -143,-435 17,-274 207,-501 474,-565 101,-24 243,-17 340,17 182,65 322,205 385,388 34,96 32,291 -5,496 -41,230 -114,542 -187,794 -38,134 -56,151 -147,133 z"
|
||||
id="path6-3" />
|
||||
<path
|
||||
d="m 7553,5543 c -44,-9 -441,-455 -632,-712 -183,-246 -226,-345 -225,-521 1,-87 5,-119 27,-183 71,-205 236,-360 442,-412 76,-19 214,-19 290,0 114,29 203,81 290,169 87,88 133,167 161,278 42,162 -10,521 -156,1079 -84,320 -86,323 -197,302 z"
|
||||
id="path8-1" />
|
||||
<path
|
||||
d="m 11163,5542 c -43,-13 -429,-447 -608,-684 -112,-148 -183,-261 -217,-348 -19,-47 -22,-75 -23,-190 0,-116 3,-145 23,-202 83,-241 300,-403 555,-416 288,-14 526,153 623,438 52,154 -10,582 -171,1167 -58,213 -75,244 -129,242 -17,-1 -41,-4 -53,-7 z"
|
||||
id="path10-8" />
|
||||
<path
|
||||
d="m 5303,4620 c -32,-7 -108,-82 -289,-285 -275,-308 -453,-545 -526,-702 -160,-341 44,-750 422,-844 30,-7 98,-13 150,-13 257,3 483,165 572,410 57,160 23,475 -107,991 -115,455 -122,467 -222,443 z"
|
||||
id="path12-9" />
|
||||
<path
|
||||
d="m 8918,4623 c -62,-10 -548,-565 -723,-828 -117,-174 -145,-252 -145,-404 0,-166 54,-301 169,-423 117,-125 263,-190 431,-192 109,-1 176,13 275,59 161,73 293,232 336,405 38,151 -2,451 -127,955 -76,304 -102,388 -130,413 -25,22 -32,23 -86,15 z"
|
||||
id="path14-6" />
|
||||
<path
|
||||
d="m 6664,3698 c -36,-8 -56,-24 -141,-116 -446,-484 -663,-775 -717,-961 -26,-88 -21,-243 9,-339 38,-120 119,-237 214,-307 249,-182 575,-163 794,45 154,146 210,310 186,544 -23,233 -110,641 -210,986 -41,140 -62,163 -135,148 z"
|
||||
id="path16-4" />
|
||||
<path
|
||||
d="m 10275,3696 c -33,-9 -64,-36 -167,-146 -229,-245 -448,-510 -562,-680 -118,-176 -152,-277 -143,-435 11,-209 121,-393 298,-498 393,-232 898,31 926,482 9,154 -46,484 -152,896 -81,315 -95,356 -130,376 -25,13 -37,14 -70,5 z"
|
||||
id="path18-3" />
|
||||
<path
|
||||
d="m 3024,3691 c -21,-9 -181,-177 -320,-336 -334,-382 -485,-607 -520,-775 -66,-312 148,-639 466,-714 320,-76 654,127 737,447 33,128 3,402 -83,776 -61,263 -142,554 -162,580 -20,28 -78,38 -118,22 z"
|
||||
id="path20-3" />
|
||||
<path
|
||||
d="m 4393,2773 c -52,-10 -509,-527 -687,-776 -73,-102 -134,-214 -157,-287 -26,-81 -28,-236 -4,-324 55,-207 237,-387 444,-441 80,-20 226,-21 304,0 214,56 381,217 442,430 38,130 13,383 -76,779 -42,185 -130,519 -150,569 -20,48 -52,62 -116,50 z"
|
||||
id="path22-3" />
|
||||
<path
|
||||
d="m 8008,2773 c -20,-3 -62,-41 -146,-131 -367,-391 -619,-720 -689,-897 -24,-63 -27,-83 -28,-195 0,-106 4,-136 24,-199 51,-154 171,-292 316,-361 105,-49 159,-62 276,-61 171,1 306,58 430,181 132,131 188,282 176,474 -12,181 -60,441 -147,786 -65,257 -98,362 -121,387 -22,22 -34,25 -91,16 z"
|
||||
id="path24" />
|
||||
<path
|
||||
d="m 2140,1850 c -38,-9 -111,-81 -304,-300 -315,-356 -486,-591 -536,-733 -64,-182 -38,-378 72,-543 120,-179 332,-285 545,-271 268,18 498,208 563,465 16,62 14,241 -5,362 -43,285 -196,924 -238,990 -9,15 -52,43 -60,39 -1,-1 -18,-5 -37,-9 z"
|
||||
id="path26" />
|
||||
<path
|
||||
d="m 5754,1848 c -37,-8 -57,-26 -177,-156 -415,-451 -636,-753 -682,-929 -20,-75 -19,-210 1,-292 41,-165 176,-333 326,-405 151,-72 315,-84 465,-33 99,34 156,69 233,143 109,104 175,239 187,378 15,179 -82,690 -222,1171 -36,124 -52,139 -131,123 z"
|
||||
id="path28" />
|
||||
<path
|
||||
d="m 9371,1850 c -41,-10 -105,-72 -291,-280 -375,-422 -535,-650 -576,-827 -33,-139 1,-322 82,-451 170,-269 502,-365 789,-229 142,68 265,205 316,354 21,60 24,85 23,218 -1,187 -36,394 -135,785 -72,288 -105,393 -134,418 -14,12 -29,22 -33,21 -4,-1 -22,-5 -41,-9 z"
|
||||
id="path30" />
|
||||
</g>
|
||||
</g>
|
||||
<rect
|
||||
style="fill:none;fill-opacity:0.987705;stroke:#000000;stroke-width:1.3098;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833-7"
|
||||
width="58.864395"
|
||||
height="31.584871"
|
||||
x="128.95422"
|
||||
y="44.513924" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:7.05556px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583"
|
||||
x="158.6059"
|
||||
y="57.954487"
|
||||
id="text1877"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1875"
|
||||
x="158.6059"
|
||||
y="57.954487"
|
||||
style="text-align:center;text-anchor:middle;stroke-width:0.264583">Weather station</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="158.6059"
|
||||
y="66.773933"
|
||||
style="text-align:center;text-anchor:middle;stroke-width:0.264583"
|
||||
id="tspan1879">electronics</tspan></text>
|
||||
<rect
|
||||
style="fill:none;fill-opacity:0.987705;stroke:#000000;stroke-width:1.3098;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833-7-8"
|
||||
width="58.864395"
|
||||
height="31.584871"
|
||||
x="45.704201"
|
||||
y="118.9275" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:7.05556px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583"
|
||||
x="75.355873"
|
||||
y="132.36807"
|
||||
id="text1877-5"><tspan
|
||||
sodipodi:role="line"
|
||||
x="75.355873"
|
||||
y="132.36807"
|
||||
style="text-align:center;text-anchor:middle;stroke-width:0.264583"
|
||||
id="tspan1879-4">Raspberry Pi</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="75.355873"
|
||||
y="141.18752"
|
||||
style="text-align:center;text-anchor:middle;stroke-width:0.264583"
|
||||
id="tspan1907">digipeater</tspan></text>
|
||||
<rect
|
||||
style="fill:none;fill-opacity:0.987705;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect1909"
|
||||
width="24.854864"
|
||||
height="15.933182"
|
||||
x="45.704201"
|
||||
y="150.28822" />
|
||||
<rect
|
||||
style="fill:none;fill-opacity:0.987705;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect1909-1"
|
||||
width="24.854864"
|
||||
height="15.933183"
|
||||
x="79.71373"
|
||||
y="150.51237" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:7.05556px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
|
||||
x="51.467823"
|
||||
y="160.71069"
|
||||
id="text1930"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1928"
|
||||
x="51.467823"
|
||||
y="160.71069"
|
||||
style="stroke-width:0.264583">GPS</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:7.05556px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
|
||||
x="83.897125"
|
||||
y="160.83328"
|
||||
id="text1934"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1932"
|
||||
x="83.897125"
|
||||
y="160.83328"
|
||||
style="stroke-width:0.264583">LoRa</tspan></text>
|
||||
<rect
|
||||
style="fill:none;fill-opacity:0.987705;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect1909-8"
|
||||
width="24.854864"
|
||||
height="15.933183"
|
||||
x="104.5686"
|
||||
y="118.9275" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:7.05556px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
|
||||
x="106.98031"
|
||||
y="129.11786"
|
||||
id="text1930-5"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1928-9"
|
||||
x="106.98031"
|
||||
y="129.11786"
|
||||
style="stroke-width:0.264583">RS485</tspan></text>
|
||||
<rect
|
||||
style="fill:none;fill-opacity:0.987705;stroke:#000000;stroke-width:1.3098;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833-7-8-7"
|
||||
width="58.864395"
|
||||
height="31.584871"
|
||||
x="204.14101"
|
||||
y="134.86069" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:7.05556px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583"
|
||||
x="233.71611"
|
||||
y="153.54735"
|
||||
id="text1877-5-5"><tspan
|
||||
sodipodi:role="line"
|
||||
x="233.71611"
|
||||
y="153.54735"
|
||||
style="text-align:center;text-anchor:middle;stroke-width:0.264583"
|
||||
id="tspan1907-8">Server</tspan></text>
|
||||
<rect
|
||||
style="fill:none;fill-opacity:0.987705;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect1909-1-8"
|
||||
width="24.854864"
|
||||
height="15.933183"
|
||||
x="179.28615"
|
||||
y="150.51237" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:7.05556px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
|
||||
x="183.46953"
|
||||
y="160.83328"
|
||||
id="text1934-3"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1932-1"
|
||||
x="183.46953"
|
||||
y="160.83328"
|
||||
style="stroke-width:0.264583">LoRa</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 129.57349,126.78493 v 0 c 0,0 17.18795,-0.78329 22.86071,-8.75263 5.68599,-7.98792 8.95704,-22.592233 17.11796,-25.270443 16.20967,-5.319611 37.95573,-1.984681 42.88026,-6.879226 5.574,-5.54005 5.84896,-15.404034 0.3126,-22.14993 -5.45444,-6.646079 -24.65105,-5.336384 -24.65105,-5.336384 v 0"
|
||||
id="path2022"
|
||||
sodipodi:nodetypes="ccsssscc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.64444px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
|
||||
x="165.41978"
|
||||
y="101.26621"
|
||||
id="text2026"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2024"
|
||||
x="165.41978"
|
||||
y="101.26621"
|
||||
style="font-size:5.64444px;stroke-width:0.264583"
|
||||
rotate="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0">RS-485 interface</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 104.65146,60.520678 h 24.4619"
|
||||
id="path2028" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2390)"
|
||||
d="m 104.71342,158.9698 37.30912,-8.299 -14.71437,17.55993 51.3985,-10.20781"
|
||||
id="path2030"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<rect
|
||||
style="fill:none;fill-opacity:0.987705;stroke:#000000;stroke-width:1.20267;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833-7-8-7-8"
|
||||
width="58.971523"
|
||||
height="26.581226"
|
||||
x="204.08745"
|
||||
y="108.33302" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:7.05556px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;stroke-width:0.264583"
|
||||
x="233.40955"
|
||||
y="121.15633"
|
||||
id="text1877-5-5-9"><tspan
|
||||
sodipodi:role="line"
|
||||
x="233.40955"
|
||||
y="121.15633"
|
||||
style="text-align:center;text-anchor:middle;stroke-width:0.264583"
|
||||
id="tspan1907-8-6">Grafana</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="233.40955"
|
||||
y="129.97577"
|
||||
style="text-align:center;text-anchor:middle;stroke-width:0.264583"
|
||||
id="tspan2549">dashboard</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 28 KiB |
BIN
build-doc/images/prototype_inside.jpg
Normal file
|
After Width: | Height: | Size: 3.5 MiB |
BIN
build-doc/images/prototype_inside_annotations.jpg
Normal file
|
After Width: | Height: | Size: 3.5 MiB |
BIN
build-doc/images/prototype_inside_annotations_small.jpg
Normal file
|
After Width: | Height: | Size: 360 KiB |
BIN
build-doc/images/prototype_inside_small.jpg
Normal file
|
After Width: | Height: | Size: 184 KiB |
BIN
build-doc/images/prototype_overview.jpg
Normal file
|
After Width: | Height: | Size: 2.6 MiB |
BIN
build-doc/images/prototype_overview_small.jpg
Normal file
|
After Width: | Height: | Size: 206 KiB |
BIN
build-doc/images/prototype_sensors.jpg
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
build-doc/images/prototype_sensors_small.jpg
Normal file
|
After Width: | Height: | Size: 92 KiB |
BIN
build-doc/images/smart_heater.odg
Normal file
1258
build-doc/images/smart_heater.svg
Normal file
|
After Width: | Height: | Size: 47 KiB |
@@ -9,9 +9,9 @@
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.2"
|
||||
width="125.34mm"
|
||||
height="165.31999mm"
|
||||
viewBox="0 0 12534 16531.999"
|
||||
width="60.926762mm"
|
||||
height="80.360718mm"
|
||||
viewBox="0 0 6092.6763 8036.0717"
|
||||
preserveAspectRatio="xMidYMid"
|
||||
fill-rule="evenodd"
|
||||
stroke-width="28.222"
|
||||
@@ -22,7 +22,7 @@
|
||||
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"><metadata
|
||||
id="metadata443"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
@@ -39,13 +39,14 @@
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:zoom="0.63695988"
|
||||
inkscape:cx="274.62047"
|
||||
inkscape:cy="401.19685"
|
||||
inkscape:zoom="2.5478395"
|
||||
inkscape:cx="160.34529"
|
||||
inkscape:cy="152.1883"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg439" />
|
||||
inkscape:current-layer="g435"
|
||||
inkscape:document-rotation="0" />
|
||||
<defs
|
||||
class="ClipPathGroup"
|
||||
id="defs8">
|
||||
@@ -69,7 +70,33 @@
|
||||
height="29641"
|
||||
id="rect5" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</defs>
|
||||
<defs
|
||||
id="defs83">
|
||||
<font
|
||||
@@ -347,7 +374,7 @@
|
||||
</defs>
|
||||
<g
|
||||
id="g124"
|
||||
transform="translate(-3234,-4235)">
|
||||
transform="translate(-3234,-4234.9999)">
|
||||
<g
|
||||
id="id2"
|
||||
class="Master_Slide">
|
||||
@@ -362,21 +389,13 @@
|
||||
<g
|
||||
class="SlideGroup"
|
||||
id="g437"
|
||||
transform="translate(-3234,-4235)">
|
||||
transform="matrix(0.48609191,0,0,0.48609191,-1572.0212,-2058.5992)">
|
||||
<g
|
||||
id="g435">
|
||||
<g
|
||||
id="container-id1">
|
||||
<g
|
||||
id="id1"
|
||||
class="Slide"
|
||||
clip-path="url(#presentation_clip_path)">
|
||||
<g
|
||||
class="Page"
|
||||
id="g431">
|
||||
<g
|
||||
class="com.sun.star.drawing.CustomShape"
|
||||
id="g147">
|
||||
id="g1721"><g
|
||||
class="com.sun.star.drawing.CustomShape"
|
||||
id="g147">
|
||||
<g
|
||||
id="id3">
|
||||
<rect
|
||||
@@ -430,10 +449,9 @@
|
||||
style="white-space:pre"
|
||||
id="tspan138">wind meter</tspan></tspan></tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
class="com.sun.star.drawing.CustomShape"
|
||||
id="g164">
|
||||
</g><g
|
||||
class="com.sun.star.drawing.CustomShape"
|
||||
id="g164">
|
||||
<g
|
||||
id="id4">
|
||||
<rect
|
||||
@@ -474,10 +492,9 @@
|
||||
style="white-space:pre"
|
||||
id="tspan155">count++</tspan></tspan></tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
class="com.sun.star.drawing.CustomShape"
|
||||
id="g187">
|
||||
</g><g
|
||||
class="com.sun.star.drawing.CustomShape"
|
||||
id="g187">
|
||||
<g
|
||||
id="id5">
|
||||
<rect
|
||||
@@ -531,10 +548,9 @@
|
||||
style="white-space:pre"
|
||||
id="tspan178">count = 0</tspan></tspan></tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
class="com.sun.star.drawing.CustomShape"
|
||||
id="g210">
|
||||
</g><g
|
||||
class="com.sun.star.drawing.CustomShape"
|
||||
id="g210">
|
||||
<g
|
||||
id="id6">
|
||||
<rect
|
||||
@@ -588,10 +604,9 @@
|
||||
style="white-space:pre"
|
||||
id="tspan201">count = 0</tspan></tspan></tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
class="com.sun.star.drawing.CustomShape"
|
||||
id="g227">
|
||||
</g><g
|
||||
class="com.sun.star.drawing.CustomShape"
|
||||
id="g227">
|
||||
<g
|
||||
id="id7">
|
||||
<rect
|
||||
@@ -632,10 +647,9 @@
|
||||
style="white-space:pre"
|
||||
id="tspan218">End</tspan></tspan></tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
class="com.sun.star.drawing.CustomShape"
|
||||
id="g244">
|
||||
</g><g
|
||||
class="com.sun.star.drawing.CustomShape"
|
||||
id="g244">
|
||||
<g
|
||||
id="id8">
|
||||
<rect
|
||||
@@ -676,10 +690,9 @@
|
||||
style="white-space:pre"
|
||||
id="tspan235">Save wind speed</tspan></tspan></tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
class="com.sun.star.drawing.CustomShape"
|
||||
id="g261">
|
||||
</g><g
|
||||
class="com.sun.star.drawing.CustomShape"
|
||||
id="g261">
|
||||
<g
|
||||
id="id9">
|
||||
<rect
|
||||
@@ -720,10 +733,9 @@
|
||||
style="white-space:pre"
|
||||
id="tspan252">No wind</tspan></tspan></tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
class="com.sun.star.drawing.CustomShape"
|
||||
id="g278">
|
||||
</g><g
|
||||
class="com.sun.star.drawing.CustomShape"
|
||||
id="g278">
|
||||
<g
|
||||
id="id10">
|
||||
<rect
|
||||
@@ -764,10 +776,9 @@
|
||||
style="white-space:pre"
|
||||
id="tspan269">Still measuring...</tspan></tspan></tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
class="TextShape"
|
||||
id="g291">
|
||||
</g><g
|
||||
class="TextShape"
|
||||
id="g291">
|
||||
<g
|
||||
id="id11">
|
||||
<rect
|
||||
@@ -794,12 +805,11 @@
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
style="white-space:pre"
|
||||
id="tspan282">< 1 second</tspan></tspan></tspan></text>
|
||||
id="tspan282">< 3 second</tspan></tspan></tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
class="com.sun.star.drawing.ConnectorShape"
|
||||
id="g300">
|
||||
</g><g
|
||||
class="com.sun.star.drawing.ConnectorShape"
|
||||
id="g300">
|
||||
<g
|
||||
id="id12">
|
||||
<rect
|
||||
@@ -824,10 +834,9 @@
|
||||
d="m 4900,14450 -150,300 -150,-300 z"
|
||||
id="path297" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
class="com.sun.star.drawing.ConnectorShape"
|
||||
id="g309">
|
||||
</g><g
|
||||
class="com.sun.star.drawing.ConnectorShape"
|
||||
id="g309">
|
||||
<g
|
||||
id="id13">
|
||||
<rect
|
||||
@@ -852,10 +861,9 @@
|
||||
d="m 14400,14450 -150,300 -150,-300 z"
|
||||
id="path306" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
class="TextShape"
|
||||
id="g322">
|
||||
</g><g
|
||||
class="TextShape"
|
||||
id="g322">
|
||||
<g
|
||||
id="id14">
|
||||
<rect
|
||||
@@ -882,12 +890,11 @@
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
style="white-space:pre"
|
||||
id="tspan313">> 2 second</tspan></tspan></tspan></text>
|
||||
id="tspan313">> 6 second</tspan></tspan></tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
class="com.sun.star.drawing.CustomShape"
|
||||
id="g339">
|
||||
</g><g
|
||||
class="com.sun.star.drawing.CustomShape"
|
||||
id="g339">
|
||||
<g
|
||||
id="id15">
|
||||
<rect
|
||||
@@ -928,10 +935,9 @@
|
||||
style="white-space:pre"
|
||||
id="tspan330">Do nothing</tspan></tspan></tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
class="com.sun.star.drawing.ConnectorShape"
|
||||
id="g348">
|
||||
</g><g
|
||||
class="com.sun.star.drawing.ConnectorShape"
|
||||
id="g348">
|
||||
<g
|
||||
id="id16">
|
||||
<rect
|
||||
@@ -956,10 +962,9 @@
|
||||
d="m 9650,14450 -150,300 -150,-300 z"
|
||||
id="path345" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
class="com.sun.star.drawing.CustomShape"
|
||||
id="g371">
|
||||
</g><g
|
||||
class="com.sun.star.drawing.CustomShape"
|
||||
id="g371">
|
||||
<g
|
||||
id="id17">
|
||||
<rect
|
||||
@@ -1013,10 +1018,9 @@
|
||||
style="white-space:pre"
|
||||
id="tspan362">interrupt</tspan></tspan></tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
class="TextShape"
|
||||
id="g384">
|
||||
</g><g
|
||||
class="TextShape"
|
||||
id="g384">
|
||||
<g
|
||||
id="id18">
|
||||
<rect
|
||||
@@ -1045,10 +1049,9 @@
|
||||
style="white-space:pre"
|
||||
id="tspan375">else</tspan></tspan></tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
class="com.sun.star.drawing.ConnectorShape"
|
||||
id="g393">
|
||||
</g><g
|
||||
class="com.sun.star.drawing.ConnectorShape"
|
||||
id="g393">
|
||||
<g
|
||||
id="id19">
|
||||
<rect
|
||||
@@ -1073,10 +1076,9 @@
|
||||
d="m 9650,9450 -150,300 -150,-300 z"
|
||||
id="path390" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
class="com.sun.star.drawing.ConnectorShape"
|
||||
id="g402">
|
||||
</g><g
|
||||
class="com.sun.star.drawing.ConnectorShape"
|
||||
id="g402">
|
||||
<g
|
||||
id="id20">
|
||||
<rect
|
||||
@@ -1101,10 +1103,9 @@
|
||||
d="m 9650,6450 -150,300 -150,-300 z"
|
||||
id="path399" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
class="com.sun.star.drawing.ConnectorShape"
|
||||
id="g411">
|
||||
</g><g
|
||||
class="com.sun.star.drawing.ConnectorShape"
|
||||
id="g411">
|
||||
<g
|
||||
id="id21">
|
||||
<rect
|
||||
@@ -1129,10 +1130,9 @@
|
||||
d="m 9650,18950 -150,300 -150,-300 z"
|
||||
id="path408" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
class="com.sun.star.drawing.ConnectorShape"
|
||||
id="g420">
|
||||
</g><g
|
||||
class="com.sun.star.drawing.ConnectorShape"
|
||||
id="g420">
|
||||
<g
|
||||
id="id22">
|
||||
<rect
|
||||
@@ -1157,10 +1157,9 @@
|
||||
d="m 7700,19850 300,150 -300,150 z"
|
||||
id="path417" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
class="com.sun.star.drawing.ConnectorShape"
|
||||
id="g429">
|
||||
</g><g
|
||||
class="com.sun.star.drawing.ConnectorShape"
|
||||
id="g429">
|
||||
<g
|
||||
id="id23">
|
||||
<rect
|
||||
@@ -1185,10 +1184,7 @@
|
||||
d="m 11300,20150 -300,-150 300,-150 z"
|
||||
id="path426" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g></g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |
@@ -68,7 +68,7 @@ $if(title)$
|
||||
$endif$
|
||||
$if(website)$
|
||||
<li>
|
||||
<a href="$website$">Back</a>
|
||||
<a href="$page_back$">Back</a>
|
||||
</li>
|
||||
$endif$
|
||||
</ul>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<meta name="generator" content="pandoc" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||||
<meta name="author" content="M.T. Konstapel" />
|
||||
<meta name="dcterms.date" content="2024-01-15" />
|
||||
<meta name="dcterms.date" content="2024-05-02" />
|
||||
<title>Weather station</title>
|
||||
<link rel="stylesheet" href="./css/mvp.css" />
|
||||
<style type="text/css">
|
||||
@@ -47,8 +47,15 @@
|
||||
<li><a href="#theory-of-operation---software"
|
||||
id="toc-theory-of-operation---software">Theory of operation
|
||||
- Software</a></li>
|
||||
<li><a href="#prototype"
|
||||
id="toc-prototype">Prototype</a></li>
|
||||
<li><a href="#specifications"
|
||||
id="toc-specifications">Specifications</a></li>
|
||||
<li><a href="#schematic"
|
||||
id="toc-schematic">Schematic</a></li>
|
||||
<li><a href="#problems-i-encounter-after-four-months-of-use"
|
||||
id="toc-problems-i-encounter-after-four-months-of-use">Problems
|
||||
I encounter after four months of use</a></li>
|
||||
<li><a href="#software-dependencies"
|
||||
id="toc-software-dependencies">Software
|
||||
dependencies</a></li>
|
||||
@@ -59,10 +66,10 @@
|
||||
<a href="./weather_station.pdf">PDF version</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://git.meezenest.nl/">Git repo</a>
|
||||
<a href="https://git.meezenest.nl/marcel/weather_station">Git repo</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://meezenest.nl/mees/">Back</a>
|
||||
<a href="https://meezenest.nl/mees/weather_station.html">Back</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
@@ -71,7 +78,7 @@
|
||||
<h1 class="title">Weather station</h1>
|
||||
<p class="subtitle">with ModBus RTU interface</p>
|
||||
<p class="author">M.T. Konstapel</p>
|
||||
<p class="date">2024-01-15</p>
|
||||
<p class="date">2024-05-02</p>
|
||||
<p><a href="./weather_station.pdf"><i>PDF version</i></a></p>
|
||||
</header>
|
||||
<main>
|
||||
@@ -89,7 +96,7 @@ people are obsessed with the weather. When I was a child, my grandmother
|
||||
was measuring the temperature and rainfall on a daily basis. My
|
||||
grandfather had an allotment, so he also was very interested in the
|
||||
weather. The first thing my father read in the newspaper was the weather
|
||||
report and the last thing he watched in the television was… the weather
|
||||
report and the last thing he watched on the television was… the weather
|
||||
report. And every hour he listed to the weather report on the radio. If
|
||||
he talked to someone he always started the conversation by talking about
|
||||
the weather. And when I open a new browser window, it automatically
|
||||
@@ -508,7 +515,8 @@ alt="Microcontroller" />
|
||||
</figure>
|
||||
<p>Both the signals from the rain meter and the cup anemometer are
|
||||
connected to interrupt pins of the micro-controller. The signal from the
|
||||
rain meter is lightly filtered by C8.</p>
|
||||
rain meter is lightly filtered by C8. The output of the wind vane is
|
||||
connectd to an analog input of the micro-controller.</p>
|
||||
<p>The ModBus address can be set by DIP switch J9.</p>
|
||||
<h1 id="theory-of-operation---software">Theory of operation -
|
||||
Software</h1>
|
||||
@@ -517,12 +525,14 @@ Software</h1>
|
||||
of the micro-controller. Every time its logic level changes an interrupt
|
||||
routine is called. This routine increments a counter and checks how many
|
||||
time has passed since the previous interrupt call. If the previous call
|
||||
was more than 2 seconds ago, the wind speed is (almost) zero. If the
|
||||
previous call was just over a second ago the interrupt counter now holds
|
||||
the amount of pulses in one second. This value is stored and from that
|
||||
value the wind speed can be calculated. If the previous call was under a
|
||||
second ago the measurement is still in progress and no further action is
|
||||
taken.</p>
|
||||
was more than 6 seconds ago, the wind speed is (almost) zero. If the
|
||||
previous call was just over 3 second ago the interrupt counter now holds
|
||||
the amount of pulses in three seconds. This value is stored and from
|
||||
that value the wind speed can be calculated. If the previous call was
|
||||
less than 3 seconds ago the measurement is still in progress and no
|
||||
further action is taken. A measurment period of three seconds is choosen
|
||||
because it is the standard as used by the Dutch meteorological institute
|
||||
(KNMI).</p>
|
||||
<figure>
|
||||
<img src="./images/wind_speed_diagram.svg" title="Wind speed interrupt"
|
||||
alt="Wind speed interrupt" />
|
||||
@@ -552,19 +562,30 @@ sensor can become saturated with moisture it can get stuck at 100%. This
|
||||
happens in particular with fog or other high humidity and condensing
|
||||
weather types. The sensor has a build in heater to drive of moisture and
|
||||
thus preventing this problem. Because the temperature of the sensor
|
||||
rises when the heater is turned on, accurate ambient temperature
|
||||
readings are no longer possible. But with a smart algorithm it is
|
||||
possible to get the benefits of the build in heater while still being
|
||||
rises when the heater is turned on, accurate ambient temperature and
|
||||
humidity readings are no longer possible. But with a smart algorithm it
|
||||
is possible to get the benefits of the build in heater while still being
|
||||
able to use the sensor as an ambient thermometer.</p>
|
||||
<p>When the humidity rises above 95% for more than an hour the current
|
||||
temperature is stored and the heater is switched on for 10 minutes. Than
|
||||
the heater is switched off again. If after 10 minutes the humidity is
|
||||
still above 95% the heater is turned on again for another 10 minutes.
|
||||
But not before the temperature is measured and stored, as the sensor is
|
||||
now cooled off to ambient temperature. If the humidity is below 95% the
|
||||
sensor is free from moisture and the process is not repeated for another
|
||||
hour.</p>
|
||||
<p>Flow chart under development.</p>
|
||||
temperature and humidity are stored and the heater is switched on for 5
|
||||
minutes. Than the heater is switched off again. If after 15 minutes the
|
||||
humidity is still above 95% the heater is turned on again for another 5
|
||||
minutes. But not before the temperature and humidity are measured and
|
||||
stored, as the sensor is now cooled off to ambient temperature. If the
|
||||
humidity is below 95% the sensor is free from moisture and the process
|
||||
is not repeated for another hour.</p>
|
||||
<p>When the heater algorithm is active, the temperature and humidity
|
||||
values are updated every 20 minutes instead of every 2 seconds. Statis
|
||||
bit 0 (ModBus register 30014) indicated if the heater is on or off and
|
||||
status bit 1 gives the update rate of the temperature and humidity
|
||||
values.</p>
|
||||
<p>This algorithm can be enabled by setting the HeaterCoil (see ModBus
|
||||
secion).</p>
|
||||
<figure>
|
||||
<img src="./images/smart_heater.svg" title="Heater algorithm"
|
||||
alt="Heater algorithm" />
|
||||
<figcaption aria-hidden="true">Heater algorithm</figcaption>
|
||||
</figure>
|
||||
<h2 id="temperature-1">Temperature</h2>
|
||||
<p>The temperature is read from the humidity sensor as this sensor gives
|
||||
the most accurate temperature readings. When the heater is on (see
|
||||
@@ -582,8 +603,8 @@ boring.</p>
|
||||
now, the ModBus address is hard coded as 14 in the software. The values
|
||||
are available in the input registers and can be read via function code
|
||||
04.</p>
|
||||
<p>Below an example of how to read the wind direction in Python using
|
||||
the minimalmodbus library.</p>
|
||||
<p>Below an example of how to read the wind direction and enable the
|
||||
heater algorithm in Python using the minimalmodbus library.</p>
|
||||
<pre><code>#!/usr/bin/env python3
|
||||
import minimalmodbus
|
||||
|
||||
@@ -591,11 +612,15 @@ import minimalmodbus
|
||||
instrument = minimalmodbus.Instrument('/dev/ttyUSB1', 14)
|
||||
|
||||
# register number, number of decimals, function code
|
||||
wind_direction = instrument.read_register(1, 0, 4)
|
||||
print(wind_direction)</code></pre>
|
||||
<h3 id="input-registers">Input registers</h3>
|
||||
<p>The measurements and order of the measurements are the same as for
|
||||
APRS weather reports. But of course we use SI units.</p>
|
||||
wind_direction = instrument.read_register(1, 1, 4)
|
||||
print(wind_direction)
|
||||
|
||||
# register address, value, function code
|
||||
instrument.write_bit(0, 1, 5)</code></pre>
|
||||
<h3 id="input-registers-read-only">Input registers (read only)</h3>
|
||||
<p>Input registers are numbered 30001 to 39999 but have data addresses
|
||||
0x000 to 0x270E. The measurements and order of the measurements are the
|
||||
same as for APRS weather reports. But of course we use SI units.</p>
|
||||
<table>
|
||||
<colgroup>
|
||||
<col style="width: 13%" />
|
||||
@@ -611,85 +636,91 @@ APRS weather reports. But of course we use SI units.</p>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="odd">
|
||||
<td>30000</td>
|
||||
<td>00</td>
|
||||
<td>Device ID (0x5758)</td>
|
||||
<td>NO UNIT</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td>30001</td>
|
||||
<td>01</td>
|
||||
<td>Wind direction</td>
|
||||
<td>degrees</td>
|
||||
<td>degrees * 10</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td>30002</td>
|
||||
<td>02</td>
|
||||
<td>Wind speed (average of 10 minutes)</td>
|
||||
<td>m/s * 100</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td>30003</td>
|
||||
<td>03</td>
|
||||
<td>Wind gust (peak of last 10 minutes)</td>
|
||||
<td>m/s * 100</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td>30004</td>
|
||||
<td>04</td>
|
||||
<td>Temperature (two’s complement)</td>
|
||||
<td>degrees Celcius * 100</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td>30005</td>
|
||||
<td>05</td>
|
||||
<td>Rain last hour</td>
|
||||
<td>l/m2 * 100</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td>30006</td>
|
||||
<td>06</td>
|
||||
<td>Rain last 24 hours</td>
|
||||
<td>l/m2 * 100</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td>30007</td>
|
||||
<td>07</td>
|
||||
<td>Rain since midnight</td>
|
||||
<td>NOT IMPLEMENTED</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td>30008</td>
|
||||
<td>08</td>
|
||||
<td>Humidity</td>
|
||||
<td>percent * 100</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td>30009</td>
|
||||
<td>09</td>
|
||||
<td>Barometric pressure</td>
|
||||
<td>hPa * 10</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td>30010</td>
|
||||
<td>10</td>
|
||||
<td>Luminosity</td>
|
||||
<td>W/m2</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td>30011</td>
|
||||
<td>11</td>
|
||||
<td>Snow fall</td>
|
||||
<td>NOT IMPLEMENTED</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td>30012</td>
|
||||
<td>12</td>
|
||||
<td>Raw rain counter</td>
|
||||
<td>NOT IMPLEMENTED</td>
|
||||
<td>l/m2 * 100</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td>30013</td>
|
||||
<td>13</td>
|
||||
<td>Temperature (two’s complement)</td>
|
||||
<td>degrees Celcius * 100</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td>30014</td>
|
||||
<td>14</td>
|
||||
<td>Status bits</td>
|
||||
<td>see table below</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><sup>NOTE</sup> Register 30013 holds the backup temperature reading
|
||||
from the pressure sensor.</p>
|
||||
<p><sup>NOTE</sup> Register 13 holds the backup temperature reading from
|
||||
the pressure sensor.</p>
|
||||
<table>
|
||||
<colgroup>
|
||||
<col style="width: 18%" />
|
||||
<col style="width: 31%" />
|
||||
<col style="width: 25%" />
|
||||
<col style="width: 24%" />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr class="header">
|
||||
<th>Status bits</th>
|
||||
@@ -705,15 +736,164 @@ from the pressure sensor.</p>
|
||||
<td>heater off</td>
|
||||
<td>heater on</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td>1</td>
|
||||
<td>Temp/humidity update</td>
|
||||
<td>every 20 minutes</td>
|
||||
<td>every 2 seconds</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td>2</td>
|
||||
<td>Heater algorithm</td>
|
||||
<td>disabled</td>
|
||||
<td>enabled</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>The ModBus registers are 16 bit wide. For better precision, some
|
||||
units are scaled by a factor of 10 or 100. This way, values with up to
|
||||
two decimal points can be stored as 16 bit integer values. Just divide
|
||||
by 10 or 100 to get the floating point values.</p>
|
||||
<h3 id="output-coils-write-only">Output coils (write only)</h3>
|
||||
<p>Output coils registers are numbered 1 to 9999 but have data addresses
|
||||
0x000 to 0x270E. The default value of a register is 0.</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr class="header">
|
||||
<th>Address</th>
|
||||
<th>Description</th>
|
||||
<th>logic 0</th>
|
||||
<th>logic 1</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="odd">
|
||||
<td>0</td>
|
||||
<td>Heater algorithm</td>
|
||||
<td>disabled</td>
|
||||
<td>enabled</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h1 id="prototype">Prototype</h1>
|
||||
<p>I wanted to locate the weather station at about 100 meters from the
|
||||
house. That meant that interfacing the weather station was not just a
|
||||
matter of connecting a wire to it. And 100 meters is also a bit much for
|
||||
a wifi connection. As I already had experience with LoRa I opted for
|
||||
that. But not LoRaWAN, but LoRa APRS. This is a ham radio network that I
|
||||
often use. I even run my own digipeater. So LoRa APRS it is.</p>
|
||||
<figure>
|
||||
<img src="./images/prototype_block_diagram.svg"
|
||||
title="Block diagram of the prototype"
|
||||
alt="Block diagram of the prototype" />
|
||||
<figcaption aria-hidden="true">Block diagram of the
|
||||
prototype</figcaption>
|
||||
</figure>
|
||||
<p>The weather station’s RS-485 interface is connected to a Raspberry Pi
|
||||
Zero 2W running the aprx digipeater software, as well as some specially
|
||||
written Python programs to interface the build in LoRa transceiver, the
|
||||
GPS module and the weather station itself. Every 10 minutes the
|
||||
digipeater will read the weather station’s registers and sends the data
|
||||
as PE1RXF telemetry messages (see <a
|
||||
href="https://www.meezenest.nl/mees-elektronica/projects/aprs_telemetry/APRS_protocol_nodes_PE1RXF.pdf">https://www.meezenest.nl/mees-elektronica/projects/aprs_telemetry/APRS_protocol_nodes_PE1RXF.pdf</a>)
|
||||
over the APRS network to a server, which presents the data in a Grafana
|
||||
dashboard. The digipeater can also send standardized APRS weather
|
||||
reports over the APRS network. But more about this project can be found
|
||||
here: <a
|
||||
href="https://www.meezenest.nl/mees-elektronica/RPi_LoRa_shield.html">https://www.meezenest.nl/mees-elektronica/RPi_LoRa_shield.html</a></p>
|
||||
<figure>
|
||||
<img src="./images/prototype_overview_small.jpg"
|
||||
title="The prototype in the garden" alt="The prototype in the garden" />
|
||||
<figcaption aria-hidden="true">The prototype in the garden</figcaption>
|
||||
</figure>
|
||||
<p>As a housing for the prototype, I used an old beehive. These are
|
||||
weatherproof and I had one laying around.</p>
|
||||
<figure>
|
||||
<img src="./images/prototype_sensors_small.jpg"
|
||||
title="Closeup of the sensors" alt="Closeup of the sensors" />
|
||||
<figcaption aria-hidden="true">Closeup of the sensors</figcaption>
|
||||
</figure>
|
||||
<figure>
|
||||
<img src="./images/prototype_inside_annotations_small.jpg"
|
||||
title="Inside the beehive" alt="Inside the beehive" />
|
||||
<figcaption aria-hidden="true">Inside the beehive</figcaption>
|
||||
</figure>
|
||||
<h1 id="specifications">Specifications</h1>
|
||||
<h2 id="wind">Wind</h2>
|
||||
<ul>
|
||||
<li><p>Wind speed is measured by taking 3 second averages from the cup
|
||||
anemometer and using these samples to calculate the average over a 10
|
||||
minute periode.</p></li>
|
||||
<li><p>Wind gust is measured by taking 3 second averages from the cup
|
||||
anemometer.</p></li>
|
||||
<li><p>Wind vane has 8 main directions and another 8 directions in
|
||||
between. But these last do not have the same weight, eg. these positions
|
||||
are not as likely to be measured as the main directions. This is due to
|
||||
the construction of the wind vane: it has eight reed switches for the
|
||||
main directions and if the wind direction happens to sit exactly in
|
||||
between two reed switches, both switches are closed giving the extra 8
|
||||
sub directions. Not great, but it is what it is…</p></li>
|
||||
</ul>
|
||||
<h2 id="rain">Rain</h2>
|
||||
<pre><code>Resolution: 0.2794 mm/impulse</code></pre>
|
||||
<h2 id="humidity-2">Humidity</h2>
|
||||
<pre><code>Operating range : 0 - 100 % RH
|
||||
Recommended range : 20 - 80 % RH
|
||||
Accuracy : +/- 3 % RH (0-80 % RH)
|
||||
+/- 4.5 % (max when > 80 % RH)
|
||||
|
||||
Heater to drive of moisture (can be enabled via ModBus)</code></pre>
|
||||
<h2 id="pressure">Pressure</h2>
|
||||
<pre><code>Operating range : 300 - 1100 hPa
|
||||
Accuracy : +/- 1.0 hPa (0 - 65 °C)
|
||||
+/- 1.7 hPa (-20 - 0 °C)</code></pre>
|
||||
<h2 id="temperature-2">Temperature</h2>
|
||||
<pre><code>Main sensor
|
||||
-----------
|
||||
|
||||
Operating range : -10 - 85 °C (typ)
|
||||
-40 - 85 °C (max)
|
||||
Accuracy : +/- 0.3 °C (typ)
|
||||
+/- 0.4 °C (max)
|
||||
+/- 0.5 °C (max when < -10°C)
|
||||
|
||||
Backup sensor
|
||||
-------------
|
||||
|
||||
Operating range : 0 - 65 °C (typ)
|
||||
-40 - 85 °C (max)
|
||||
Accuracy : +/- 0.5 °C (25 °C)
|
||||
+/- 1.0 °C (0 - 65 °C)</code></pre>
|
||||
<h2 id="modbus-1">ModBus</h2>
|
||||
<pre><code>Physical : RS-485 simplex RTU
|
||||
Settings : 9600 bd 8N1
|
||||
Address : 14</code></pre>
|
||||
<h1 id="schematic">Schematic</h1>
|
||||
<p><a href="./images/weather_station_schematic.pdf"><img
|
||||
src="./images/weather_station_schematic.svg" alt="Schematic" /></a></p>
|
||||
<h1 id="problems-i-encounter-after-four-months-of-use">Problems I
|
||||
encounter after four months of use</h1>
|
||||
<p>The Si7021 humidity sensor is not made for outdoor use. The datasheet
|
||||
is clear about that. But a lot of people use this cheap sensor for
|
||||
weather stations anyway. So I choose this sensor for my design. But that
|
||||
was not smart. After an initial time without any problems, the sensor
|
||||
started to saturate. This happened during a very wet and mild winter we
|
||||
had. My first solution was to utilize the build in heater to drive of
|
||||
the moisture. That worked, but only for a short period. The heater blew
|
||||
up and the sensor started to report humidity levels above 100% and
|
||||
because of a bug in the firmware of the sensor, the humidity register
|
||||
wrapped around and the sensor reported humidity levels of 0-30%. I tried
|
||||
to find a software solution, which worked for a while, but the sensor
|
||||
deteriorated even more. To the point of being totally useless. So I
|
||||
searched for another, better sensor. And I found the HYT-221 from
|
||||
Innovative Sensor Technology. This sensor is designed to work outdoors
|
||||
and can even be used in saunas, where the humidity levels are always
|
||||
high and the air is condensating. The datasheet specifically mentions
|
||||
outdoor weather stations as an application. The only downside is its
|
||||
price: it is ten times more expensive than the Si7021.</p>
|
||||
<p>The sensor can be controlled via the I2C bus, so implementing the new
|
||||
sensor in the firmware was very easy. From version 0.3.0 onward, this
|
||||
sensor is used. The Si7021 is removed from the code.</p>
|
||||
<!---
|
||||
# Bill of materials
|
||||
|
||||
@@ -735,6 +915,8 @@ src="./images/weather_station_schematic.svg" alt="Schematic" /></a></p>
|
||||
<p>Libraries are included with the source code of this project</p>
|
||||
<h1 id="license">License</h1>
|
||||
<p>Copyright (C) 2023, 2024 M.T. Konstapel</p>
|
||||
<p><a
|
||||
href="https://meezenest.nl/mees/">https://meezenest.nl/mees/</a></p>
|
||||
<p>The software is published as open-source software (GPL). The hardware
|
||||
is published as open-source hardware (OSH).</p>
|
||||
<h2 id="software">Software</h2>
|
||||
@@ -750,7 +932,7 @@ option) any later version.</p>
|
||||
</main>
|
||||
<footer>
|
||||
<p>©
|
||||
2024-01-15
|
||||
2024-05-02
|
||||
M.T. Konstapel
|
||||
<a href="https://meezenest.nl/mees/">https://meezenest.nl/mees/</a>
|
||||
</p><p>This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.
|
||||
|
||||
@@ -2,11 +2,12 @@
|
||||
title: Weather station
|
||||
subtitle: with ModBus RTU interface
|
||||
author: M.T. Konstapel
|
||||
date: 2024-01-15
|
||||
date: 2024-05-02
|
||||
website: https://meezenest.nl/mees/
|
||||
page_back: https://meezenest.nl/mees/weather_station.html
|
||||
logo: ./images/mees_logo.svg
|
||||
pdf_version: ./weather_station.pdf
|
||||
git_repo: https://git.meezenest.nl/
|
||||
git_repo: https://git.meezenest.nl/marcel/weather_station
|
||||
numbersections: true
|
||||
# Formatting:
|
||||
geometry: "a4paper, left=2.0cm, right=2.0cm, top=1.9cm, bottom=2.54cm"
|
||||
@@ -16,7 +17,7 @@ abstract: >
|
||||
|
||||
# Why do you need a weather station?
|
||||
|
||||
Well, you don't...because if you want to know the weather, you look on your phone. So why bother than? Because since the beginning of time, people are obsessed with the weather. When I was a child, my grandmother was measuring the temperature and rainfall on a daily basis. My grandfather had an allotment, so he also was very interested in the weather. The first thing my father read in the newspaper was the weather report and the last thing he watched in the television was... the weather report. And every hour he listed to the weather report on the radio. If he talked to someone he always started the conversation by talking about the weather. And when I open a new browser window, it automatically opens the weather page.
|
||||
Well, you don't...because if you want to know the weather, you look on your phone. So why bother than? Because since the beginning of time, people are obsessed with the weather. When I was a child, my grandmother was measuring the temperature and rainfall on a daily basis. My grandfather had an allotment, so he also was very interested in the weather. The first thing my father read in the newspaper was the weather report and the last thing he watched on the television was... the weather report. And every hour he listed to the weather report on the radio. If he talked to someone he always started the conversation by talking about the weather. And when I open a new browser window, it automatically opens the weather page.
|
||||
|
||||
So the weather is fascinating and taking your own measurements is a lot of fun.
|
||||
|
||||
@@ -210,7 +211,7 @@ The heart of the circuit is an Arduino Pro Mini, which is basically an Atmel ATm
|
||||
|
||||

|
||||
|
||||
Both the signals from the rain meter and the cup anemometer are connected to interrupt pins of the micro-controller. The signal from the rain meter is lightly filtered by C8.
|
||||
Both the signals from the rain meter and the cup anemometer are connected to interrupt pins of the micro-controller. The signal from the rain meter is lightly filtered by C8. The output of the wind vane is connectd to an analog input of the micro-controller.
|
||||
|
||||
The ModBus address can be set by DIP switch J9.
|
||||
|
||||
@@ -218,7 +219,7 @@ The ModBus address can be set by DIP switch J9.
|
||||
|
||||
## Wind speed
|
||||
|
||||
The pulse from the cup anemometer is connected to an interrupt input of the micro-controller. Every time its logic level changes an interrupt routine is called. This routine increments a counter and checks how many time has passed since the previous interrupt call. If the previous call was more than 2 seconds ago, the wind speed is (almost) zero. If the previous call was just over a second ago the interrupt counter now holds the amount of pulses in one second. This value is stored and from that value the wind speed can be calculated. If the previous call was under a second ago the measurement is still in progress and no further action is taken.
|
||||
The pulse from the cup anemometer is connected to an interrupt input of the micro-controller. Every time its logic level changes an interrupt routine is called. This routine increments a counter and checks how many time has passed since the previous interrupt call. If the previous call was more than 6 seconds ago, the wind speed is (almost) zero. If the previous call was just over 3 second ago the interrupt counter now holds the amount of pulses in three seconds. This value is stored and from that value the wind speed can be calculated. If the previous call was less than 3 seconds ago the measurement is still in progress and no further action is taken. A measurment period of three seconds is choosen because it is the standard as used by the Dutch meteorological institute (KNMI).
|
||||
|
||||

|
||||
|
||||
@@ -236,11 +237,15 @@ The pulse from the rain meter is connected to an interrupt input of the micro-co
|
||||
|
||||
## Humidity
|
||||
|
||||
Via the I²C bus, the humidity value of the sensor is read. As the sensor can become saturated with moisture it can get stuck at 100%. This happens in particular with fog or other high humidity and condensing weather types. The sensor has a build in heater to drive of moisture and thus preventing this problem. Because the temperature of the sensor rises when the heater is turned on, accurate ambient temperature readings are no longer possible. But with a smart algorithm it is possible to get the benefits of the build in heater while still being able to use the sensor as an ambient thermometer.
|
||||
Via the I²C bus, the humidity value of the sensor is read. As the sensor can become saturated with moisture it can get stuck at 100%. This happens in particular with fog or other high humidity and condensing weather types. The sensor has a build in heater to drive of moisture and thus preventing this problem. Because the temperature of the sensor rises when the heater is turned on, accurate ambient temperature and humidity readings are no longer possible. But with a smart algorithm it is possible to get the benefits of the build in heater while still being able to use the sensor as an ambient thermometer.
|
||||
|
||||
When the humidity rises above 95% for more than an hour the current temperature is stored and the heater is switched on for 10 minutes. Than the heater is switched off again. If after 10 minutes the humidity is still above 95% the heater is turned on again for another 10 minutes. But not before the temperature is measured and stored, as the sensor is now cooled off to ambient temperature. If the humidity is below 95% the sensor is free from moisture and the process is not repeated for another hour.
|
||||
When the humidity rises above 95% for more than an hour the current temperature and humidity are stored and the heater is switched on for 5 minutes. Than the heater is switched off again. If after 15 minutes the humidity is still above 95% the heater is turned on again for another 5 minutes. But not before the temperature and humidity are measured and stored, as the sensor is now cooled off to ambient temperature. If the humidity is below 95% the sensor is free from moisture and the process is not repeated for another hour.
|
||||
|
||||
Flow chart under development.
|
||||
When the heater algorithm is active, the temperature and humidity values are updated every 20 minutes instead of every 2 seconds. Statis bit 0 (ModBus register 30014) indicated if the heater is on or off and status bit 1 gives the update rate of the temperature and humidity values.
|
||||
|
||||
This algorithm can be enabled by setting the HeaterCoil (see ModBus secion).
|
||||
|
||||

|
||||
|
||||
## Temperature
|
||||
|
||||
@@ -258,7 +263,7 @@ This sensor is still under development.
|
||||
|
||||
The weather station uses ModBus RTU over a simplex RS-485 line. For now, the ModBus address is hard coded as 14 in the software. The values are available in the input registers and can be read via function code 04.
|
||||
|
||||
Below an example of how to read the wind direction in Python using the minimalmodbus library.
|
||||
Below an example of how to read the wind direction and enable the heater algorithm in Python using the minimalmodbus library.
|
||||
|
||||
#!/usr/bin/env python3
|
||||
import minimalmodbus
|
||||
@@ -267,43 +272,132 @@ Below an example of how to read the wind direction in Python using the minimalmo
|
||||
instrument = minimalmodbus.Instrument('/dev/ttyUSB1', 14)
|
||||
|
||||
# register number, number of decimals, function code
|
||||
wind_direction = instrument.read_register(1, 0, 4)
|
||||
wind_direction = instrument.read_register(1, 1, 4)
|
||||
print(wind_direction)
|
||||
|
||||
### Input registers
|
||||
# register address, value, function code
|
||||
instrument.write_bit(0, 1, 5)
|
||||
|
||||
The measurements and order of the measurements are the same as for APRS weather reports. But of course we use SI units.
|
||||
### Input registers (read only)
|
||||
|
||||
Input registers are numbered 30001 to 39999 but have data addresses 0x000 to 0x270E. The measurements and order of the measurements are the same as for APRS weather reports. But of course we use SI units.
|
||||
|
||||
| Address | Description | Units |
|
||||
|---------|-------------------------------------|-----------------------|
|
||||
| 30000 | Device ID (0x5758) | NO UNIT |
|
||||
| 30001 | Wind direction | degrees |
|
||||
| 30002 | Wind speed (average of 10 minutes) | m/s * 100 |
|
||||
| 30003 | Wind gust (peak of last 10 minutes) | m/s * 100 |
|
||||
| 30004 | Temperature (two's complement) | degrees Celcius * 100 |
|
||||
| 30005 | Rain last hour | l/m2 * 100 |
|
||||
| 30006 | Rain last 24 hours | l/m2 * 100 |
|
||||
| 30007 | Rain since midnight | NOT IMPLEMENTED |
|
||||
| 30008 | Humidity | percent * 100 |
|
||||
| 30009 | Barometric pressure | hPa * 10 |
|
||||
| 30010 | Luminosity | W/m2 |
|
||||
| 30011 | Snow fall | NOT IMPLEMENTED |
|
||||
| 30012 | Raw rain counter | NOT IMPLEMENTED |
|
||||
| 30013 | Temperature (two's complement) | degrees Celcius * 100 |
|
||||
| 30014 | Status bits | see table below |
|
||||
| 00 | Device ID (0x5758) | NO UNIT |
|
||||
| 01 | Wind direction | degrees * 10 |
|
||||
| 02 | Wind speed (average of 10 minutes) | m/s * 100 |
|
||||
| 03 | Wind gust (peak of last 10 minutes) | m/s * 100 |
|
||||
| 04 | Temperature (two's complement) | degrees Celcius * 100 |
|
||||
| 05 | Rain last hour | l/m2 * 100 |
|
||||
| 06 | Rain last 24 hours | l/m2 * 100 |
|
||||
| 07 | Rain since midnight | NOT IMPLEMENTED |
|
||||
| 08 | Humidity | percent * 100 |
|
||||
| 09 | Barometric pressure | hPa * 10 |
|
||||
| 10 | Luminosity | W/m2 |
|
||||
| 11 | Snow fall | NOT IMPLEMENTED |
|
||||
| 12 | Raw rain counter | l/m2 * 100 |
|
||||
| 13 | Temperature (two's complement) | degrees Celcius * 100 |
|
||||
| 14 | Status bits | see table below |
|
||||
|
||||
^NOTE^ Register 30013 holds the backup temperature reading from the pressure sensor.
|
||||
^NOTE^ Register 13 holds the backup temperature reading from the pressure sensor.
|
||||
|
||||
| Status bits | Description | logic 0 | logic 1 |
|
||||
|-------------|---------------|------------|-----------|
|
||||
| 0 | Heater status | heater off | heater on |
|
||||
| Status bits | Description | logic 0 | logic 1 |
|
||||
|-------------|----------------------|------------------|-----------------|
|
||||
| 0 | Heater status | heater off | heater on |
|
||||
| 1 | Temp/humidity update | every 20 minutes | every 2 seconds |
|
||||
| 2 | Heater algorithm | disabled | enabled |
|
||||
|
||||
The ModBus registers are 16 bit wide. For better precision, some units are scaled by a factor of 10 or 100. This way, values with up to two decimal points can be stored as 16 bit integer values. Just divide by 10 or 100 to get the floating point values.
|
||||
|
||||
### Output coils (write only)
|
||||
|
||||
Output coils registers are numbered 1 to 9999 but have data addresses 0x000 to 0x270E. The default value of a register is 0.
|
||||
|
||||
| Address | Description | logic 0 | logic 1 |
|
||||
|---------|------------------|----------|---------|
|
||||
| 0 | Heater algorithm | disabled | enabled |
|
||||
|
||||
# Prototype
|
||||
|
||||
I wanted to locate the weather station at about 100 meters from the house. That meant that interfacing the weather station was not just a matter of connecting a wire to it. And 100 meters is also a bit much for a wifi connection. As I already had experience with LoRa I opted for that. But not LoRaWAN, but LoRa APRS. This is a ham radio network that I often use. I even run my own digipeater. So LoRa APRS it is.
|
||||
|
||||

|
||||
|
||||
The weather station's RS-485 interface is connected to a Raspberry Pi Zero 2W running the aprx digipeater software, as well as some specially written Python programs to interface the build in LoRa transceiver, the GPS module and the weather station itself. Every 10 minutes the digipeater will read the weather station's registers and sends the data as PE1RXF telemetry messages (see [https://www.meezenest.nl/mees-elektronica/projects/aprs_telemetry/APRS_protocol_nodes_PE1RXF.pdf](https://www.meezenest.nl/mees-elektronica/projects/aprs_telemetry/APRS_protocol_nodes_PE1RXF.pdf)) over the APRS network to a server, which presents the data in a Grafana dashboard. The digipeater can also send standardized APRS weather reports over the APRS network. But more about this project can be found here: [https://www.meezenest.nl/mees-elektronica/RPi_LoRa_shield.html](https://www.meezenest.nl/mees-elektronica/RPi_LoRa_shield.html)
|
||||
|
||||

|
||||
|
||||
As a housing for the prototype, I used an old beehive. These are weatherproof and I had one laying around.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
# Specifications
|
||||
|
||||
## Wind
|
||||
|
||||
- Wind speed is measured by taking 3 second averages from the cup anemometer and using these samples to calculate the average over a 10 minute periode.
|
||||
|
||||
- Wind gust is measured by taking 3 second averages from the cup anemometer.
|
||||
|
||||
- Wind vane has 8 main directions and another 8 directions in between. But these last do not have the same weight, eg. these positions are not as likely to be measured as the main directions. This is due to the construction of the wind vane: it has eight reed switches for the main directions and if the wind direction happens to sit exactly in between two reed switches, both switches are closed giving the extra 8 sub directions. Not great, but it is what it is...
|
||||
|
||||
## Rain
|
||||
|
||||
Resolution: 0.2794 mm/impulse
|
||||
|
||||
## Humidity
|
||||
|
||||
Operating range : 0 - 100 % RH
|
||||
Recommended range : 20 - 80 % RH
|
||||
Accuracy : +/- 3 % RH (0-80 % RH)
|
||||
+/- 4.5 % (max when > 80 % RH)
|
||||
|
||||
Heater to drive of moisture (can be enabled via ModBus)
|
||||
|
||||
## Pressure
|
||||
|
||||
Operating range : 300 - 1100 hPa
|
||||
Accuracy : +/- 1.0 hPa (0 - 65 °C)
|
||||
+/- 1.7 hPa (-20 - 0 °C)
|
||||
|
||||
## Temperature
|
||||
|
||||
Main sensor
|
||||
-----------
|
||||
|
||||
Operating range : -10 - 85 °C (typ)
|
||||
-40 - 85 °C (max)
|
||||
Accuracy : +/- 0.3 °C (typ)
|
||||
+/- 0.4 °C (max)
|
||||
+/- 0.5 °C (max when < -10°C)
|
||||
|
||||
Backup sensor
|
||||
-------------
|
||||
|
||||
Operating range : 0 - 65 °C (typ)
|
||||
-40 - 85 °C (max)
|
||||
Accuracy : +/- 0.5 °C (25 °C)
|
||||
+/- 1.0 °C (0 - 65 °C)
|
||||
|
||||
## ModBus
|
||||
|
||||
Physical : RS-485 simplex RTU
|
||||
Settings : 9600 bd 8N1
|
||||
Address : 14
|
||||
|
||||
# Schematic
|
||||
|
||||
[](./images/weather_station_schematic.pdf)
|
||||
|
||||
# Problems I encounter after four months of use
|
||||
|
||||
The Si7021 humidity sensor is not made for outdoor use. The datasheet is clear about that. But a lot of people use this cheap sensor for weather stations anyway. So I choose this sensor for my design. But that was not smart. After an initial time without any problems, the sensor started to saturate. This happened during a very wet and mild winter we had. My first solution was to utilize the build in heater to drive of the moisture. That worked, but only for a short period. The heater blew up and the sensor started to report humidity levels above 100% and because of a bug in the firmware of the sensor, the humidity register wrapped around and the sensor reported humidity levels of 0-30%. I tried to find a software solution, which worked for a while, but the sensor deteriorated even more. To the point of being totally useless. So I searched for another, better sensor. And I found the HYT-221 from Innovative Sensor Technology. This sensor is designed to work outdoors and can even be used in saunas, where the humidity levels are always high and the air is condensating. The datasheet specifically mentions outdoor weather stations as an application. The only downside is its price: it is ten times more expensive than the Si7021.
|
||||
|
||||
The sensor can be controlled via the I2C bus, so implementing the new sensor in the firmware was very easy. From version 0.3.0 onward, this sensor is used. The Si7021 is removed from the code.
|
||||
|
||||
<!---
|
||||
# Bill of materials
|
||||
|
||||
@@ -329,6 +423,8 @@ Libraries are included with the source code of this project
|
||||
|
||||
Copyright (C) 2023, 2024 M.T. Konstapel
|
||||
|
||||
[https://meezenest.nl/mees/](https://meezenest.nl/mees/)
|
||||
|
||||
The software is published as open-source software (GPL). The hardware is published as open-source hardware (OSH).
|
||||
|
||||
## Software
|
||||
|
||||
57
build-doc/weather_station_article.md
Normal file
@@ -0,0 +1,57 @@
|
||||
---
|
||||
title: APRS weerstation
|
||||
subtitle: met hamnet verbinding
|
||||
author: M.T. Konstapel
|
||||
date: 2024-02-03
|
||||
website: https://meezenest.nl/mees/
|
||||
page_back: https://meezenest.nl/mees/weather_station.html
|
||||
logo: ./images/mees_logo.svg
|
||||
pdf_version: ./weather_station_article.pdf
|
||||
git_repo: https://git.meezenest.nl/marcel/weather_station
|
||||
numbersections: true
|
||||
# Formatting:
|
||||
geometry: "a4paper, left=2.0cm, right=2.0cm, top=1.9cm, bottom=2.54cm"
|
||||
abstract: >
|
||||
Ik maak veel gebruik van het APRS netwerk: positiebepaling, telemetry en berichten versturen; ik doe het allemaal. Dit kan omdat ik dicht bij de Duitse grens woon: anders dan in Nederland waar het APRS netwerk dankzij lastige regelgeving nagenoeg is verdwenen, is in Duitsland het netwerk nog springlevend. Ik maak gebruik van Duitse digipeaters en iGates, die gewoon berichten vanaf het internet mogen doorzenden. Wat een geluk! Het enige wat ik nog niet kon, was weergegevens delen via het netwerk. Om daar verandering in te brengen heb ik een weerstation ontworpen dat elke 10 minuten een weerbericht kan uitzenden via het APRS netwerk. En omdat het systeem zo'n 100 meter van mijn huis in de acchtertuin staat, heb ik er ook een 5 GHz hamnet verbinding naar toe gemaakt, zodat ik het systeem op afstand kan bedienen. Oh, en omdat twee beter is dan een heb ik er ook een 20KB/s hamnet link over 70cm LoRa als backup in geknutseld. Het hamnet gebruik ik ook om de weermetingen naar mijn Grafana dashboard te sturen.
|
||||
---
|
||||
|
||||
# Weerstation
|
||||
|
||||
Als uitgangspunt van het weerstation gebruik ik de SparkFun Weather Meter. Dit is een kit met drie sensors: een windvaan, een anemometer en een regenmeter. Deze kit heb ik aangevuld met sensors voor temperatuur, luchtdruk en luctvochtigheid. Al deze sensors zijn rechtstreeks aangesloten op een Arduino Mini Pro. Ik heb daar een RS-485 driverchip en een ompoolbeveiliging aan toegevoegd. Het uiteindelijke schema is hieronder te zien. Ingewikkeld is de hardware niet, want alle fuctionaliteit zit in de software.
|
||||
|
||||
Het weerstation is uit te lezen via een ModBus interface. Dit is een industriestandaard, dus er zijn legio mogelijkheden om met het weerstation te communiceren. De ModBus registers bevatten de meetwaarden van de sensors en worden elke twee seconde ververst. Dit bepaald dus de maximale uitleesfrequentie. De volgende gegevens zijn beschikbaar:
|
||||
|
||||
- Windrichting in graden
|
||||
- Gemiddelde wind snelheid van de laatste 10 minuten in m/s
|
||||
- Maximale windstoot van de laatste 10 minuten in m/s
|
||||
- Hoeveelheid regen in het afgelopen uur in mm
|
||||
- Hoeveelheid regen in de afgelopen 24 uur in mm
|
||||
- Temperatuur in graden C
|
||||
- Luchtvochtigheid in %
|
||||
- Luchtdruk in hPa
|
||||
|
||||
Daarnaast zijn er nog een aantal statusregisters beschikbaar. Deze worden besproken in de uitgebreide bouwbeschrijving die beschikbaar is op mijn website.
|
||||
|
||||
De Luchtvochtigheidssensor kan bij een hoge Luchtvochtigheid verzadigd raken en zo blijven steken op 100%. Om dit te voorkomen is het mogelijk om de sensor automatisch te laten verwarmen wanneer de luchtvochtigheid langer dan een uur boven de 96% is. De verwarming wordt dan elke 20 minuten voor 5 minuten aangezet. In de 15 minuten die overblijven koelt de sensor weer af tot de omgevingstemperatuur. Dit proces wordt heraald totdat de sensor weer een waarde beneden de 96% aangeeft. Tijdens het opwarmen en afkoelen kan de luchtvochtigheid en temperatuur maar eens in de 20 minuten worden gemeten. Dit is de prijs die betaald moet worden wanneer we een goedkope luchtvochtigheidssensor gebruiken.
|
||||
|
||||
# APRS iGate
|
||||
|
||||
Om de weermetingen te kunnen uitzenden via het APRS netwerk is er een 2 meter FM zender en een 1200baud modem nodig. En een computer om de gegevens via de ModBus uit het weerstation te lezen en door te sturen naar het modem. Een Raspberry Pi Zero 2W is daar perfect geschikt voor. Deze is goedkoop, klein en verbruikt weinig energie. Omdat een APRS weerstation ook zijn positie en tijd moet doorgeven om op de kaart gezet te kunnen worden gezet is er een GPS module via USB aangesloten op de Raspberry Pi. Strikt genomen is de tijd niet noodzakelijk en omdat het station vast is opgesteld kan de positie ook handmatig worden ingesteld. Een eenvoudig Python programma leest het weerstation uit, vraagt de positie en de tijd van de gps ontvanger op en construeerd het APRS frame dat uitgezonden moet worden. Dit frame wordt vervolgens via de AX.25 stack naar het modem gestuurd.
|
||||
|
||||
Omdat APRS over LoRa op de 70cm band steeds poulairder wordt heb ik ook een LoRa module op de Raspberry Pi aangeloten. Het weerbericht kan zo ook via LoRa worden uitgezonden. Met een diplexer worden de signalen van beide zenders samengevoegd en gaan zo naar een dualband antene. De software hiervoor is een in Python geschreven KISS interface. Via deze software kan de LoRa module gekoppeld worden aan de AX.25 stack. De Raspberry Pi ziet het modem als elk ander KISS compatible modem.
|
||||
|
||||
# HamNet
|
||||
|
||||
Het syteem kan autonoom werken, maar het is handig (en noodzakelijk) om het systeem van afstand te kunnen bedienen en wanneer dat nodig is ook uit te kunnen schakelen. Daarvoor heb ik een 5GHz HamLink tussen het huis en de Raspberry Pi aangelegt. Op deze manier heb ik een snelle netwerkverbinding naar het weerstation en kan ik via telnet inloggen en het systeem bedienen. De HamNet link maakt gebruik van commercieel verkrijgbare schotels. Ik gebruik apparatuur van Unifi Ubiquiti, maar apparatuur van Mikrotik is even goed geschikt. Deze verbindig wordt ook gebruikt om verbindig te maken met et APRS-IS netwerk op het internet. Zo doet mijn weerstation ook dienst als RX-only iGate voor zowel traditioneel APRS als LoRa APRS.
|
||||
|
||||
De snelle netwerkverbinding is handog, maar wanneer het systeem autonoom werkt is het wel een beetje een overkill, want de verbinding wordt dan enkel gebruikt om APRS berichten door te sturen naar het APRS-IS netwerk. Daarom heb ik ook nog een lage snelheid netwerkverbinding geintegreerd. Deze heeft een doorvoersnelheid van iets meer dan 20KB/s, wat genoeg is voor de toepassing. Het is zelfs mogelijk om daarnaast ook nog in te loggen via telnet. Dat gaat dan wat trager, maar als backup is het prima geschikt. Zo heb ik twee manieren om het systeem van afstand te beheren. De verbinding gaat over LoRa via de 70cm band. Hiervoor gebruik ik een kant en klaar board, een LilyGO TTGO T3 LoRa32 433MHz V1.6.1 ESP32. Hierom heb ik firmware van unsigned.io gezet. Met de bijbehorende Linux software (tncattach) wordt dit een netwerkinterface onder Linux waarover ik het netwerkverkeer kan leiden.
|
||||
|
||||

|
||||
|
||||
# Verantwoording
|
||||
|
||||
Copyright (C) 2023, 2024 M.T. Konstapel - PE1RXF
|
||||
|
||||
[https://meezenest.nl/mees/](https://meezenest.nl/mees/)
|
||||
|
||||
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
|
||||
BIN
datasheet/HYT 221_application_note.pdf
Normal file
BIN
datasheet/HYT 221_datasheet.pdf
Normal file
BIN
datasheet/Handboek_H05_knmi_definities.pdf
Normal file
@@ -27,6 +27,16 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with weather_station. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
* 2023-01-21: - Buffer overflow when calculating average wind speed in AverageOfArray()
|
||||
* Fix: use 32 bit register for average_value.
|
||||
* - Changed some variables to the propper standard (uint8_t, uint16_t, etc.)
|
||||
* - SparkFun wind interrupt now calculates over 3 seconds in stead of 1 second (KNMI standard)
|
||||
*
|
||||
* 2-24-05-02: - Removed cope for si7021
|
||||
* - Added code for HYT221 humidity sensor
|
||||
*
|
||||
* See CHANGELOG.md
|
||||
*
|
||||
**********************************************************************************/
|
||||
#include <ModbusSerial.h>
|
||||
#include "SparkFun_Weather_Meter_Kit_Arduino_Library.h"
|
||||
@@ -36,8 +46,7 @@
|
||||
#include "i2c.h"
|
||||
|
||||
//Temperature and humidity sensor
|
||||
#include "i2c_SI7021.h"
|
||||
SI7021 si7021;
|
||||
#define HYT_ADDR 0x28 // I2C address of the HYT 221, 271, 371 and most likely the rest of the family
|
||||
|
||||
// Pressure sensor
|
||||
#include "i2c_BMP280.h"
|
||||
@@ -67,9 +76,14 @@ const byte SlaveId = 14;
|
||||
* 30004: Temperature (degrees Celcius)
|
||||
* 30005: Rain last hour (l/m2)
|
||||
* 30006: Rain last 24 hours (l/m2)
|
||||
* 30007: Rain since midnight (l/m2)
|
||||
* 30007: Rain since midnight (l/m2) [NOT IMPLEMENTED, always 0]
|
||||
* 30008: Humidity (percent)
|
||||
* 30009: Barometric pressure (hPa)
|
||||
* 30010: Luminosity (W/m2)
|
||||
* 30011: Snow fall [NOT IMPLEMENTED, always 0]
|
||||
* 30012: Raw rainfall counter (mm)
|
||||
* 30013: Temperature pressure sensor (degrees Celsius)
|
||||
* 30014: Status bits 0=heater, 1-15: reserved
|
||||
*
|
||||
*/
|
||||
const int SensorIDIreg = 0;
|
||||
@@ -82,6 +96,19 @@ const int SensorRainLast24Ireg = 6;
|
||||
const int SensorRainSinceMidnightIreg = 7;
|
||||
const int SensorHumidityIreg = 8;
|
||||
const int SensorPressureIreg = 9;
|
||||
const int SensorLuminosityIreg = 10;
|
||||
const int SensorSnowFallIreg = 11;
|
||||
const int SensorRainfallRawIreg = 12;
|
||||
const int SensorTemperatureBackupIreg = 13;
|
||||
const int SensorStatusBitsIreg = 14;
|
||||
|
||||
/* Modbus Registers Offsets (0-9999)
|
||||
* Coils
|
||||
* 0 = Heater algorithm (0 = disable, 1 = enable)
|
||||
*/
|
||||
const int HeaterCoil = 0;
|
||||
float HUMIDITY_THRESHOLD = 92.0;
|
||||
|
||||
// RS-485 serial port
|
||||
#define MySerial Serial // define serial port used, Serial most of the time, or Serial1, Serial2 ... if available
|
||||
const unsigned long Baudrate = 9600;
|
||||
@@ -97,109 +124,125 @@ ModbusSerial mb (MySerial, SlaveId, TxenPin);
|
||||
|
||||
unsigned long ts;
|
||||
unsigned long HourTimer;
|
||||
int WindGustData1[30];
|
||||
unsigned char WindGustData1Counter=0;
|
||||
int WindGustData2[10];
|
||||
unsigned char WindGustData2Counter=0;
|
||||
int WindAverageData1[30];
|
||||
unsigned char WindAverageData1Counter=0;
|
||||
int WindAverageData2[10];
|
||||
unsigned char WindAverageData2Counter=0;
|
||||
int RainPerHour[24];
|
||||
unsigned char RainPerHourCounter=0;
|
||||
uint16_t WindGustData1[30];
|
||||
uint8_t WindGustData1Counter=0;
|
||||
uint16_t WindGustData2[10];
|
||||
uint8_t WindGustData2Counter=0;
|
||||
uint16_t WindAverageData1[30];
|
||||
uint8_t WindAverageData1Counter=0;
|
||||
uint16_t WindAverageData2[10];
|
||||
uint8_t WindAverageData2Counter=0;
|
||||
uint16_t RainPerHour[24];
|
||||
uint8_t RainPerHourCounter=0;
|
||||
|
||||
struct MeasuredData {
|
||||
int WindDirection;
|
||||
int WindSpeed;
|
||||
int WindGust;
|
||||
int Rain;
|
||||
int RainLast24;
|
||||
int SensorRainSinceMidnight;
|
||||
int Pressure;
|
||||
uint16_t WindDirection;
|
||||
uint16_t WindSpeed;
|
||||
uint16_t WindGust;
|
||||
uint16_t Rain;
|
||||
uint16_t RainLast24;
|
||||
uint16_t SensorRainSinceMidnight;
|
||||
uint16_t Pressure;
|
||||
uint16_t Luminosity;
|
||||
uint16_t StatusBits = 0;
|
||||
uint16_t RainfallCounter = 0;
|
||||
|
||||
float Temperature;
|
||||
float Humidity;
|
||||
float TemperatureBackup;
|
||||
|
||||
bool HeaterStatus = 0;
|
||||
} MeasuredData;
|
||||
|
||||
// Read Si7021 sensor and process data
|
||||
void ReadSi7021 (void)
|
||||
void ReadHYT221 (void)
|
||||
{
|
||||
si7021.triggerMeasurement();
|
||||
si7021.getHumidity(MeasuredData.Humidity);
|
||||
si7021.getTemperature(MeasuredData.Temperature);
|
||||
|
||||
if (MeasuredData.Humidity>100 || MeasuredData.Humidity<0)
|
||||
MeasuredData.Humidity = 100;
|
||||
|
||||
//If humidity is larger than 96% switch on heater to get more acurate measurement and prevent memory offset
|
||||
//Switch off when lower than 94% (hysteresis)
|
||||
if (MeasuredData.Humidity > 96 && !MeasuredData.HeaterStatus) {
|
||||
Serial.print(F("Heater on."));
|
||||
MeasuredData.HeaterStatus = 1;
|
||||
si7021.setHeater(MeasuredData.HeaterStatus);
|
||||
}
|
||||
if (MeasuredData.Humidity < 94 && MeasuredData.HeaterStatus) {
|
||||
Serial.print(F("Heater off."));
|
||||
MeasuredData.HeaterStatus = 0;
|
||||
si7021.setHeater(MeasuredData.HeaterStatus);
|
||||
}
|
||||
double humidity;
|
||||
double temperature;
|
||||
|
||||
Wire.beginTransmission(HYT_ADDR); // Begin transmission with given device on I2C bus
|
||||
Wire.requestFrom(HYT_ADDR, 4); // Request 4 bytes
|
||||
|
||||
// Read the bytes if they are available
|
||||
// The first two bytes are humidity the last two are temperature
|
||||
if(Wire.available() == 4) {
|
||||
int b1 = Wire.read();
|
||||
int b2 = Wire.read();
|
||||
int b3 = Wire.read();
|
||||
int b4 = Wire.read();
|
||||
|
||||
Wire.endTransmission(); // End transmission and release I2C bus
|
||||
|
||||
// combine humidity bytes and calculate humidity
|
||||
int rawHumidity = b1 << 8 | b2;
|
||||
// compound bitwise to get 14 bit measurement first two bits
|
||||
// are status/stall bit (see intro text)
|
||||
rawHumidity = (rawHumidity &= 0x3FFF);
|
||||
humidity = 100.0 / pow(2,14) * rawHumidity;
|
||||
|
||||
// Scale for more decimal positions when converted to integer value for ModBus
|
||||
MeasuredData.Humidity *= 100;
|
||||
MeasuredData.Temperature *= 100;
|
||||
MeasuredData.Humidity = 100 * humidity;
|
||||
|
||||
// combine temperature bytes and calculate temperature
|
||||
b4 = (b4 >> 2); // Mask away 2 least significant bits see HYT 221 doc
|
||||
int rawTemperature = b3 << 6 | b4;
|
||||
temperature = 165.0 / pow(2,14) * rawTemperature - 40;
|
||||
|
||||
// Scale for more decimal positions when converted to integer value for ModBus
|
||||
MeasuredData.Temperature = 100 * temperature;
|
||||
|
||||
//Serial.print(MeasuredData.Humidity);
|
||||
//Serial.print("% - Temperature: ");
|
||||
//Serial.println(MeasuredData.Temperature);
|
||||
}
|
||||
else {
|
||||
Serial.println("Not enough bytes available on wire.");
|
||||
}
|
||||
}
|
||||
|
||||
// Read BMP280
|
||||
void ReadBMP280 (void)
|
||||
{
|
||||
// MeasuredData.Pressure=0;
|
||||
|
||||
bmp280.awaitMeasurement();
|
||||
|
||||
float temperature;
|
||||
bmp280.getTemperature(temperature);
|
||||
|
||||
float pascal;
|
||||
bmp280.getPressure(pascal);
|
||||
|
||||
pascal = (pascal - PRESSURE_OFFSET) / 10; // Convert to hPa
|
||||
|
||||
MeasuredData.Pressure = pascal;
|
||||
|
||||
bmp280.getTemperature(MeasuredData.TemperatureBackup);
|
||||
// Scale for more decimal positions when converted to integer value for ModBus
|
||||
MeasuredData.TemperatureBackup *= 100;
|
||||
|
||||
bmp280.triggerMeasurement();
|
||||
|
||||
// When humidity is high, the heater of the Si7021 is on. This causes the temperature sensor of the humidity sensor to heat up.
|
||||
// Use temperature sensor of BMP280 instead.
|
||||
if (MeasuredData.HeaterStatus) {
|
||||
bmp280.getTemperature(MeasuredData.Temperature);
|
||||
// Scale for more decimal positions when converted to integer value for ModBus
|
||||
MeasuredData.Temperature *= 100;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int MaxOfArray (int array[], unsigned int length)
|
||||
int MaxOfArray (int array[], uint16_t length)
|
||||
{
|
||||
int maximum_value = 0;
|
||||
|
||||
while (length--)
|
||||
|
||||
while (length)
|
||||
{
|
||||
// decrement length, because 0/1 problem: if lenght = n, than last position off array is n-1
|
||||
length--;
|
||||
|
||||
if (array[length] > maximum_value)
|
||||
maximum_value = array[length];
|
||||
}
|
||||
return maximum_value;
|
||||
}
|
||||
|
||||
int AverageOfArray (int array[], unsigned int length)
|
||||
uint16_t AverageOfArray (uint16_t array[], uint16_t length)
|
||||
{
|
||||
int tmp_value = 0;
|
||||
unsigned char tmp_length = length;
|
||||
int average_value = 0;
|
||||
|
||||
while (length--)
|
||||
uint32_t tmp_value = 0;
|
||||
uint8_t tmp_length = length;
|
||||
uint16_t average_value = 0;
|
||||
|
||||
while (length)
|
||||
{
|
||||
// decrement length, because 0/1 problem: if lenght = n, than last position off array is n-1
|
||||
length--;
|
||||
|
||||
tmp_value += array[length];
|
||||
}
|
||||
average_value = tmp_value/tmp_length;
|
||||
@@ -214,14 +257,15 @@ void ReadSparkfunWeatherStation (void)
|
||||
|
||||
float tmpRegister;
|
||||
|
||||
MeasuredData.WindDirection = weatherMeterKit.getWindDirection();
|
||||
tmpRegister = 10*weatherMeterKit.getWindDirection(); // Use float for conversion to degrees times 10, than put it in integer register for ModBus
|
||||
MeasuredData.WindDirection = tmpRegister;
|
||||
tmpRegister = 100*(weatherMeterKit.getWindSpeed())/3.6; // Use float for conversion to m/s times 100, than put it in integer register for ModBus
|
||||
MeasuredData.WindSpeed = tmpRegister;
|
||||
tmpRegister = 100*weatherMeterKit.getTotalRainfall(); // Use float for conversion to l/m2 times 100, than put it in integer register for ModBus
|
||||
MeasuredData.Rain = tmpRegister;
|
||||
|
||||
// FIFO for calculating wind gust of last 10 minutes
|
||||
// to preserve valuable RAM we caanot store all measurements of the last 10 minutes.
|
||||
// to preserve valuable RAM we cannot store all measurements of the last 10 minutes.
|
||||
// So we use a hack: store the last 30 values in a FIFO and every minute we store the maximum value from this FIFO in another FIFO.
|
||||
// This second FIFO is 10 deep: it stores the maximum values of the last 10 minutes.
|
||||
// The maximum value from this FIFO is the maximum wind gust of the last 10 minutes.
|
||||
@@ -279,6 +323,9 @@ void ReadSparkfunWeatherStation (void)
|
||||
RainPerHourCounter=0;
|
||||
}
|
||||
RainPerHour[RainPerHourCounter] = MeasuredData.Rain;
|
||||
// Every time before we reset the TotalRainCounter we add the amount to the RawRainCounter.
|
||||
// This 16 bit register will eventually overflow, but 655.35mm of rain fall is a lot!
|
||||
MeasuredData.RainfallCounter += MeasuredData.Rain; // We don't care about the rounding error due to the convertion from float to int
|
||||
weatherMeterKit.resetTotalRainfall();
|
||||
|
||||
// Calculate rain fall in the last 24 hours
|
||||
@@ -320,31 +367,33 @@ void setup() {
|
||||
mb.addIreg (SensorRainSinceMidnightIreg);
|
||||
mb.addIreg (SensorHumidityIreg);
|
||||
mb.addIreg (SensorPressureIreg);
|
||||
mb.addIreg (SensorLuminosityIreg);
|
||||
mb.addIreg (SensorSnowFallIreg);
|
||||
mb.addIreg (SensorRainfallRawIreg);
|
||||
mb.addIreg (SensorTemperatureBackupIreg);
|
||||
mb.addIreg (SensorStatusBitsIreg);
|
||||
|
||||
// Add HeaterCoil register
|
||||
mb.addCoil (HeaterCoil);
|
||||
|
||||
// Set Weather station ID
|
||||
mb.Ireg (SensorIDIreg, 0x5758);
|
||||
// Set unused register to zero
|
||||
mb.Ireg (SensorRainSinceMidnightIreg, 0);
|
||||
mb.Ireg (SensorSnowFallIreg, 0);
|
||||
|
||||
Serial.println(F("Weather station v0.1.0"));
|
||||
Serial.println(F("Weather station v0.3.0"));
|
||||
Serial.println(F("(C)2024 M.T. Konstapel"));
|
||||
Serial.println(F("This project is free and open source"));
|
||||
Serial.println(F("More details: https://meezenest.nl/mees/"));
|
||||
|
||||
//Initialize Si7021 sensor
|
||||
Serial.print(F("Humidity sensor SI7021 "));
|
||||
if (si7021.initialize())
|
||||
Serial.println(F("found"));
|
||||
else
|
||||
{
|
||||
Serial.println(F("missing"));
|
||||
while(1) {
|
||||
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
|
||||
delay(500); // wait for half a second
|
||||
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
|
||||
delay(500);
|
||||
}
|
||||
}
|
||||
// The standard library of the Si7021 sets the heater element to the default 3.1mA, but we want the full power
|
||||
// We could alter the library, but than we break compatibility. So for this one time we do a raw-write to the
|
||||
// heater register.
|
||||
const uint8_t SI7021_I2C_ADDRESS =(0x40);
|
||||
const uint8_t SI7021_CMD_WRITE_HEATER_CONTROL_REG =(0x51);
|
||||
const uint8_t SI7021_HEATER_FULL_BLAST =(0x0F); // Set heater to 94mA
|
||||
i2c.writeByte(SI7021_I2C_ADDRESS, SI7021_CMD_WRITE_HEATER_CONTROL_REG, SI7021_HEATER_FULL_BLAST);
|
||||
|
||||
// Initialize BMP280 pressure sensor
|
||||
Serial.print(F("Pressure sensor BMP280 "));
|
||||
@@ -425,7 +474,9 @@ void setup() {
|
||||
// is implemented in the library that averages the wind speed over a certain
|
||||
// time period, which defaults to 1 second. Longer intervals result in more
|
||||
// accurate measurements, but cause delay in the measurement
|
||||
calibrationParams.windSpeedMeasurementPeriodMillis = 1000;
|
||||
// Dutch metrology institute (KNMI) defines that the windspeed and gust should
|
||||
// be calculated from 3 seconds measurements.
|
||||
calibrationParams.windSpeedMeasurementPeriodMillis = 3000;
|
||||
|
||||
// Now we can set all the calibration parameters at once
|
||||
weatherMeterKit.setCalibrationParams(calibrationParams);
|
||||
@@ -450,7 +501,7 @@ void loop() {
|
||||
digitalWrite(LED_BUILTIN, HIGH); // LED as heartbeat
|
||||
|
||||
// Read temperature and humidity
|
||||
ReadSi7021();
|
||||
ReadHYT221();
|
||||
|
||||
// Read pressure and temperature
|
||||
ReadBMP280();
|
||||
@@ -467,11 +518,22 @@ void loop() {
|
||||
mb.Ireg (SensorTemperatureIreg, MeasuredData.Temperature);
|
||||
mb.Ireg (SensorHumidityIreg, MeasuredData.Humidity);
|
||||
mb.Ireg (SensorPressureIreg, MeasuredData.Pressure);
|
||||
mb.Ireg (SensorTemperatureBackupIreg, MeasuredData.TemperatureBackup);
|
||||
mb.Ireg (SensorLuminosityIreg, MeasuredData.Luminosity);
|
||||
mb.Ireg (SensorRainfallRawIreg, MeasuredData.RainfallCounter);
|
||||
mb.Ireg (SensorStatusBitsIreg, MeasuredData.StatusBits);
|
||||
|
||||
// Debug wind vane
|
||||
//Serial.print(F("\n Measured ADC: "));
|
||||
//Serial.print(analogRead(windDirectionPin));
|
||||
|
||||
// enable or disable smart heater
|
||||
if (mb.Coil (HeaterCoil)) {
|
||||
MeasuredData.StatusBits |= 0x04; // Set bit
|
||||
} else {
|
||||
MeasuredData.StatusBits &= 0x0B; // Reset bit
|
||||
}
|
||||
|
||||
digitalWrite(LED_BUILTIN, LOW); // LED as heartbeat
|
||||
|
||||
|
||||
|
||||
@@ -43,15 +43,19 @@ class EpeverChargeController(minimalmodbus.Instrument):
|
||||
|
||||
@retry(wait_fixed=200, stop_max_attempt_number=5)
|
||||
def retriable_read_register(
|
||||
self, registeraddress, number_of_decimals, functioncode
|
||||
self, registeraddress, number_of_decimals, functioncode, signed=False
|
||||
):
|
||||
return self.read_register(
|
||||
registeraddress, number_of_decimals, functioncode, False
|
||||
registeraddress, number_of_decimals, functioncode, signed
|
||||
)
|
||||
|
||||
@retry(wait_fixed=200, stop_max_attempt_number=5)
|
||||
def retriable_read_bit(self, registeraddress, functioncode):
|
||||
return self.read_bit(registeraddress, functioncode)
|
||||
|
||||
@retry(wait_fixed=200, stop_max_attempt_number=5)
|
||||
def retriable_write_bit(self, registeraddress, data, functioncode):
|
||||
return self.write_bit(registeraddress, data, functioncode)
|
||||
|
||||
#Address range 0x3000
|
||||
def get_id(self):
|
||||
@@ -60,7 +64,7 @@ class EpeverChargeController(minimalmodbus.Instrument):
|
||||
|
||||
def get_wind_direction(self):
|
||||
"""PV array rated current"""
|
||||
return self.retriable_read_register(1, 0, 4)
|
||||
return self.retriable_read_register(1, 1, 4)
|
||||
|
||||
def get_wind_speedl(self):
|
||||
"""PV array rated power (low 16 bits)"""
|
||||
@@ -72,7 +76,7 @@ class EpeverChargeController(minimalmodbus.Instrument):
|
||||
|
||||
def get_temperature(self):
|
||||
"""Rated Battery's voltage"""
|
||||
return self.retriable_read_register(4, 2, 4)
|
||||
return self.retriable_read_register(4, 2, 4, True)
|
||||
|
||||
def get_rain(self):
|
||||
"""Rated charging current to battery"""
|
||||
@@ -93,3 +97,17 @@ class EpeverChargeController(minimalmodbus.Instrument):
|
||||
def get_pressure(self):
|
||||
"""Charging mode: 0x0001 = PWM"""
|
||||
return self.retriable_read_register(9, 1, 4)
|
||||
|
||||
def get_temperature_backup(self):
|
||||
"""Charging mode: 0x0001 = PWM"""
|
||||
return self.retriable_read_register(13, 2, 4,True)
|
||||
|
||||
def get_status_bits(self):
|
||||
"""Charging mode: 0x0001 = PWM"""
|
||||
return self.retriable_read_register(14, 0, 4)
|
||||
|
||||
def enable_heater(self):
|
||||
self.retriable_write_bit(0, 1, 5)
|
||||
|
||||
def disable_heater(self):
|
||||
self.retriable_write_bit(0, 0, 5)
|
||||
|
||||
@@ -594,7 +594,9 @@ elif dump_file:
|
||||
dump_all_registers()
|
||||
|
||||
else:
|
||||
|
||||
status = 1
|
||||
print("Enable heater function")
|
||||
controller.enable_heater()
|
||||
while (1):
|
||||
time.sleep(3) # Sleep for 3 seconds
|
||||
print ("Retrieving all known registers.")
|
||||
@@ -608,6 +610,8 @@ else:
|
||||
rawdat['Temperature'] = controller.get_temperature()
|
||||
rawdat['Humidity'] = controller.get_humidity()
|
||||
rawdat['Pressure'] = controller.get_pressure()
|
||||
rawdat['Temp backup'] = controller.get_temperature_backup()
|
||||
rawdat['Status bits'] = controller.get_status_bits()
|
||||
|
||||
print (json.dumps(rawdat, indent=1, sort_keys=False))
|
||||
|
||||
|
||||