<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Smart Home &#8211; tyminski.dev</title>
	<atom:link href="https://tyminski.dev/category/smart_home/feed/" rel="self" type="application/rss+xml" />
	<link>https://tyminski.dev</link>
	<description>Praktyczna strona technologii</description>
	<lastBuildDate>Thu, 13 Aug 2026 12:42:25 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>

<image>
	<url>https://tyminski.dev/wp-content/uploads/2026/04/cropped-logo_big_tracs_600x600-2-32x32.png</url>
	<title>Smart Home &#8211; tyminski.dev</title>
	<link>https://tyminski.dev</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Stacja pogodowa Garni INT 5 podłączona do Home Assistant za pomocą RTL-SDR V4</title>
		<link>https://tyminski.dev/stacja-pogodowa-garni-int-5-podlaczona-do-home-assistant-za-pomoca-rtl-sdr-v4/</link>
					<comments>https://tyminski.dev/stacja-pogodowa-garni-int-5-podlaczona-do-home-assistant-za-pomoca-rtl-sdr-v4/#respond</comments>
		
		<dc:creator><![CDATA[Łukasz Tymiński]]></dc:creator>
		<pubDate>Mon, 10 Aug 2026 15:24:30 +0000</pubDate>
				<category><![CDATA[Smart Home]]></category>
		<category><![CDATA[Czujniki]]></category>
		<category><![CDATA[Home Assistant]]></category>
		<category><![CDATA[Garni]]></category>
		<category><![CDATA[homeassistant]]></category>
		<category><![CDATA[mqtt]]></category>
		<category><![CDATA[rtl_433]]></category>
		<category><![CDATA[RTL-SDR]]></category>
		<guid isPermaLink="false">https://tyminski.dev/?p=2253</guid>

					<description><![CDATA[W przypadkowej rozmowie ze znajomy dowiedziałem się, że na zlocie krótkofalowców na jakimś targu kupił stacje meteo z demontażu i podłączył ją radiowo do Home Assistanta. Od razu powiedziałem, że jak tylko będzie miał jeszcze możliwość zakupu to od razu niech mi kupuje dwie. W razie jakby coś nie działało to będzie dawca części. Po&#8230; <br> <a class="read-more" href="https://tyminski.dev/stacja-pogodowa-garni-int-5-podlaczona-do-home-assistant-za-pomoca-rtl-sdr-v4/">Czytaj dalej</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">W przypadkowej rozmowie ze znajomy dowiedziałem się, że na zlocie krótkofalowców na jakimś targu kupił stacje meteo z demontażu i podłączył ją radiowo do Home Assistanta. Od razu powiedziałem, że jak tylko będzie miał jeszcze możliwość zakupu to od razu niech mi kupuje dwie. W razie jakby coś nie działało to będzie dawca części. Po 3 miesiącach miałem w ręku. Klasyczna, analogowa stacja pogodowa Garni z czujnikami (temperatura, wilgotność, wiatr, deszcz, nasłonecznienie, UV) — urządzenie, które samo w sobie nie ma żadnego protokołu komunikacji tylko puszcza w eter sygnał raz na 12 sekund. Jedyne co trzeba zrobić to <strong>podsłuchać jej transmisję radiową</strong> i wciągnąć dane do Home Assistant. Do tego zadania niezbędny jest dongiel RTL-SDR V4.</p>



<figure data-wp-context="{&quot;galleryId&quot;:&quot;6a8c4b27cf2ef&quot;}" data-wp-interactive="core/gallery" class="wp-block-gallery has-nested-images columns-3 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure data-wp-context="{&quot;imageId&quot;:&quot;6a8c4b27cff7e&quot;}" data-wp-interactive="core/image" data-wp-key="6a8c4b27cff7e" class="wp-block-image size-large wp-lightbox-container"><img fetchpriority="high" decoding="async" width="1024" height="1024" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" data-id="2261" src="https://tyminski.dev/wp-content/uploads/2026/08/MVIMG_20260810_144612-1024x1024.jpg" alt="" class="wp-image-2261" style="aspect-ratio:1" srcset="https://tyminski.dev/wp-content/uploads/2026/08/MVIMG_20260810_144612-1024x1024.jpg 1024w, https://tyminski.dev/wp-content/uploads/2026/08/MVIMG_20260810_144612-300x300.jpg 300w, https://tyminski.dev/wp-content/uploads/2026/08/MVIMG_20260810_144612-150x150.jpg 150w, https://tyminski.dev/wp-content/uploads/2026/08/MVIMG_20260810_144612-768x768.jpg 768w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6a8c4b27d0402&quot;}" data-wp-interactive="core/image" data-wp-key="6a8c4b27d0402" class="wp-block-image size-large wp-lightbox-container"><img decoding="async" width="1024" height="1024" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" data-id="2260" src="https://tyminski.dev/wp-content/uploads/2026/08/MVIMG_20260810_144617-1024x1024.jpg" alt="" class="wp-image-2260" style="aspect-ratio:1" srcset="https://tyminski.dev/wp-content/uploads/2026/08/MVIMG_20260810_144617-1024x1024.jpg 1024w, https://tyminski.dev/wp-content/uploads/2026/08/MVIMG_20260810_144617-300x300.jpg 300w, https://tyminski.dev/wp-content/uploads/2026/08/MVIMG_20260810_144617-150x150.jpg 150w, https://tyminski.dev/wp-content/uploads/2026/08/MVIMG_20260810_144617-768x768.jpg 768w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6a8c4b27d07aa&quot;}" data-wp-interactive="core/image" data-wp-key="6a8c4b27d07aa" class="wp-block-image size-large wp-lightbox-container"><img decoding="async" width="1024" height="1024" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" data-id="2262" src="https://tyminski.dev/wp-content/uploads/2026/08/MVIMG_20260810_144628-1024x1024.jpg" alt="" class="wp-image-2262" style="aspect-ratio:1" srcset="https://tyminski.dev/wp-content/uploads/2026/08/MVIMG_20260810_144628-1024x1024.jpg 1024w, https://tyminski.dev/wp-content/uploads/2026/08/MVIMG_20260810_144628-300x300.jpg 300w, https://tyminski.dev/wp-content/uploads/2026/08/MVIMG_20260810_144628-150x150.jpg 150w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</figure>



<h2 class="wp-block-heading">O co chodzi z RTL-SDR?</h2>



<p class="wp-block-paragraph">RTL-SDR to odbiornik radiowy USB (pierwotnie tunery do telewizji cyfrowej DVB-T), który dzięki społecznościowym sterownikom da się przerobić na uniwersalny odbiornik radiowy szerokiego pasma. W praktyce: jeden mały dongiel potrafi &#8222;słuchać&#8221; niemal wszystkiego, co nadaje w zakresie kilkudziesięciu MHz do ponad 1 GHz — w tym popularne pasma ISM 433 MHz i 868 MHz, na których pracuje mnóstwo czujników, stacji pogodowych, pilotów czy liczników mediów.</p>



<p class="wp-block-paragraph">Do dekodowania tych transmisji służy otwarte narzędzie <strong>rtl_433</strong> — program, który rozpoznaje kilkadziesiąt popularnych protokołów urządzeń i zamienia surowy sygnał radiowy na czytelny JSON.</p>



<h2 class="wp-block-heading">Konfiguracja: Docker + MQTT</h2>



<p class="wp-block-paragraph">Całość postawiłem w Dockerze na swoim domowym serwerze:</p>



<pre class="wp-block-code"><code>services:
  rtl_433:
    image: bademux/rtl_433tomqtt:latest
    container_name: rtl_433
    restart: unless-stopped
    volumes:
      - ./rtl_433.conf:/etc/rtl_433/rtl_433.conf:ro
      - /etc/localtime:/etc/localtime:ro
    devices:
      - /dev/bus/usb:/dev/bus/usb
    environment:
      - TZ=Europe/Warsaw
</code></pre>



<p class="wp-block-paragraph">Konfigurację samego rtl_433 trzymam w prostym pliku tekstowym — częstotliwość, wzmocnienie i adres brokera MQTT:</p>



<pre class="wp-block-code"><code>output mqtt://192.168.0.125:1883,user=xxx,pass=xxx,retain=0,events=rtl_433&#91;/model]&#91;/id]
device 0
frequency 868.3M
gain 0
report_meta time:local
</code></pre>



<p class="wp-block-paragraph">Dane z każdego wykrytego urządzenia trafiają na osobny temat MQTT (np. rtl_433/Bresser-7in1/44028), co ułatwia dalszą obróbkę. Aplikacja ma szablony sygnałów dla prawie 200 urządzeń. Moje Garni INT 5 jest rebrandem jednego z obsługiwanych nadajników <strong>Bresser &#8211; 7in1</strong></p>



<h2 class="wp-block-heading">Pułapka, na którą warto uważać: RTL-SDR Blog V4</h2>



<p class="wp-block-paragraph">Tu natrafiłem na najciekawszy problem całego projektu. Mój dongiel to nowsza wersja <strong>RTL-SDR</strong> <strong>Blog V4</strong><sub>,</sub> która wymaga specjalnego, poprawionego sterownika &#8211; standardowa biblioteka librtlsdr dostępna w repozytoriach Ubuntu go nie obsługuje w pełni. Efekt? Odbiornik &#8222;widział&#8221; sygnał (potwierdziłem to wizualnie w programie SDR++ na Macu — wyraźna smuga w waterfallu co ~12 sekund, dokładnie zgodnie z cyklem transmisji stacji), ale rtl_433 uparcie nic nie dekodował.</p>



<figure class="wp-block-gallery has-nested-images columns-3 is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1440" height="2560" data-id="2274" src="https://tyminski.dev/wp-content/uploads/2026/08/MVIMG_20260810_174507-scaled.jpg" alt="" class="wp-image-2274" style="aspect-ratio:1" srcset="https://tyminski.dev/wp-content/uploads/2026/08/MVIMG_20260810_174507-scaled.jpg 1440w, https://tyminski.dev/wp-content/uploads/2026/08/MVIMG_20260810_174507-864x1536.jpg 864w, https://tyminski.dev/wp-content/uploads/2026/08/MVIMG_20260810_174507-1152x2048.jpg 1152w, https://tyminski.dev/wp-content/uploads/2026/08/MVIMG_20260810_174507-1024x1820.jpg 1024w, https://tyminski.dev/wp-content/uploads/2026/08/MVIMG_20260810_174507-608x1080.jpg 608w" sizes="auto, (max-width: 1440px) 100vw, 1440px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1258" height="1198" data-id="2271" src="https://tyminski.dev/wp-content/uploads/2026/08/image-2.png" alt="" class="wp-image-2271" style="aspect-ratio:1" srcset="https://tyminski.dev/wp-content/uploads/2026/08/image-2.png 1258w, https://tyminski.dev/wp-content/uploads/2026/08/image-2-1024x975.png 1024w, https://tyminski.dev/wp-content/uploads/2026/08/image-2-1134x1080.png 1134w" sizes="auto, (max-width: 1258px) 100vw, 1258px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="2560" height="1440" data-id="2275" src="https://tyminski.dev/wp-content/uploads/2026/08/MVIMG_20260810_175816-scaled.jpg" alt="" class="wp-image-2275" style="aspect-ratio:1" srcset="https://tyminski.dev/wp-content/uploads/2026/08/MVIMG_20260810_175816-scaled.jpg 2560w, https://tyminski.dev/wp-content/uploads/2026/08/MVIMG_20260810_175816-1536x864.jpg 1536w, https://tyminski.dev/wp-content/uploads/2026/08/MVIMG_20260810_175816-2048x1152.jpg 2048w, https://tyminski.dev/wp-content/uploads/2026/08/MVIMG_20260810_175816-1024x576.jpg 1024w, https://tyminski.dev/wp-content/uploads/2026/08/MVIMG_20260810_175816-1920x1080.jpg 1920w" sizes="auto, (max-width: 2560px) 100vw, 2560px" /></figure>
</figure>



<p class="wp-block-paragraph">Rozwiązanie: zbudowanie sterownika ze źródeł producenta i podmienienie systemowej biblioteki:</p>



<pre class="wp-block-code"><code>git clone https://github.com/rtlsdrblog/rtl-sdr-blog
cd rtl-sdr-blog &amp;&amp; mkdir build &amp;&amp; cd build
cmake ../ -DINSTALL_UDEV_RULES=ON
make &amp;&amp; sudo make install
sudo cp ../rtl-sdr.rules /etc/udev/rules.d/
sudo ldconfig
</code></pre>



<p class="wp-block-paragraph">Po tej zmianie dane popłynęły od razu — pierwszy poprawny odczyt: temperatura, wilgotność, wiatr, opady, UV, wszystko z poprawną sumą kontrolną CRC.</p>



<p class="wp-block-paragraph"><strong>Wniosek:</strong> jeśli masz nowszy dongiel RTL-SDR Blog V4, a program &#8222;widzi&#8221; sygnał, ale nic nie dekoduje — sprawdź wersję sterownika, zanim zaczniesz podejrzewać config czy antenę.</p>



<p class="wp-block-paragraph">Przez to, że kompilowanie sterownika i robienie swojego obrazu nie było w moim planie to zostawiłem zainstalowany rtl_433 bezpośrednio w systemie. Kiedyś będzie czas to faktycznie przygotuję obraz pod odpowiedni kontener. Możliwe jest też, że ktoś to w międzyczasie zrobi <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p class="wp-block-paragraph">Przygotowanie pliku rtl_433.service do automatycznego uruchamiania aplikacji przy starcie systemu:</p>



<pre class="wp-block-code"><code>&#91;Unit]
Description=rtl_433 - RTL-SDR generic RF receiver and decoder
After=network-online.target
Wants=network-online.target

&#91;Service]
Type=simple
User=linux_user
ExecStart=/usr/bin/rtl_433 -c /iot/rtl433/rtl_433.conf
Restart=on-failure
RestartSec=10

&#91;Install]
WantedBy=multi-user.target
</code></pre>



<p class="wp-block-paragraph">Uruchomienie serwisu:</p>



<pre class="wp-block-code"><code>sudo cp rtl_433.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable rtl_433
sudo systemctl start rtl_433</code></pre>



<h2 class="wp-block-heading">Integracja z Home Assistant</h2>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6a8c4b27d15e7&quot;}" data-wp-interactive="core/image" data-wp-key="6a8c4b27d15e7" class="wp-block-image size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="2020" height="1208" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://tyminski.dev/wp-content/uploads/2026/08/image.png" alt="" class="wp-image-2255" srcset="https://tyminski.dev/wp-content/uploads/2026/08/image.png 2020w, https://tyminski.dev/wp-content/uploads/2026/08/image-1536x919.png 1536w, https://tyminski.dev/wp-content/uploads/2026/08/image-1024x612.png 1024w, https://tyminski.dev/wp-content/uploads/2026/08/image-1806x1080.png 1806w" sizes="auto, (max-width: 2020px) 100vw, 2020px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<p class="wp-block-paragraph">Zamiast automatycznego discovery, wybrałem prostsze podejście — zwykłe <strong>sensory MQTT</strong> z szablonami wyciągającymi konkretne wartości z JSON-a:</p>



<pre class="wp-block-code"><code>mqtt:
  sensor:
    - name: "Balkon Temperatura"
      state_topic: "rtl_433/Bresser-7in1/44028"
      value_template: "{{ value_json.temperature_C }}"
      unit_of_measurement: "°C"
      device_class: temperature
      state_class: measurement
</code></pre>



<p class="wp-block-paragraph">Analogicznie dla wilgotności, wiatru, opadów i nasłonecznienia. Dodatkowo, template sensor zamienia kierunek wiatru ze stopni na czytelną różę wiatrów (N, NE, E&#8230;), żeby dashboard był bardziej czytelny na pierwszy rzut oka.</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6a8c4b27d1a35&quot;}" data-wp-interactive="core/image" data-wp-key="6a8c4b27d1a35" class="wp-block-image size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="1920" height="811" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://tyminski.dev/wp-content/uploads/2026/08/image-1.png" alt="" class="wp-image-2266" srcset="https://tyminski.dev/wp-content/uploads/2026/08/image-1.png 1920w, https://tyminski.dev/wp-content/uploads/2026/08/image-1-1536x649.png 1536w, https://tyminski.dev/wp-content/uploads/2026/08/image-1-1024x433.png 1024w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<h2 class="wp-block-heading">Stylizacja prezentacji danych</h2>



<p class="wp-block-paragraph">Tu dwie rzeczy do usprawnienia. Kierunek wiatru odbierany ze stacji jest w stopniach. Nie bardzo wiadomo w którą stronę wieje wiatr 252° <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Trzeba to sobie ograć template sensorem:</p>



<pre class="wp-block-code"><code>  - name: "Garni Kierunek Wiatru Róża"
    unique_id: balkon_bresser_wind_dir_rose
    state: &gt;
      {% set deg = states('sensor.balkon_garni_kierunek_wiatru') | float(0) %}
      {% set kierunki = &#91;'N','NNE','NE','ENE','E','ESE','SE','SSE',
                          'S','SSW','SW','WSW','W','WNW','NW','NNW'] %}
      {{ kierunki&#91; ((deg + 11.25) / 22.5) | int % 16 ] }}</code></pre>



<p class="wp-block-paragraph">W przyszłości chciałbym zrobić różę wiatru z obracającą się igłą i miniaturą mieszkania. Dzięki czemu będzie można od razu wyobrazić sobie, z której strony wieje wiatr <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </p>



<p class="wp-block-paragraph">Drugi temat do dopieszczenia to opady. Miernik opadów nalicza narastająco opady. Nie zeruje ich co dobę, tydzień czy miesiąc. Tu Home Assistant przychodzi z pomocą i swoimi <strong>utility_meter</strong>:</p>



<pre class="wp-block-code"><code>utility_meter:
  balkon_opady_dzienne:
    source: sensor.balkon_garni_opady
    unique_id: balkon_opady_dzienne
    cycle: daily
  balkon_opady_miesieczne:
    source: sensor.balkon_garni_opady
    unique_id: balkon_opady_miesieczne
    cycle: monthly</code></pre>



<p class="wp-block-paragraph">W ten sposób mamy kolejne dwie encje, które agregują dane dzienne i miesięczne. Ułatwia to prezentację danych na dashboardach.</p>



<h2 class="wp-block-heading">Kwestia zasięgu</h2>



<p class="wp-block-paragraph">Ostatnia przeszkoda była czysto fizyczna: dongiel stał w korytarzu, a stacja na balkonie — kilka metrów i ściana wystarczyły, żeby sygnał zniknął. Zamiast stawiać osobne urządzenie (miałem pod ręką wolne Raspberry Pi Zero, ale wolałem zostać przy jednym punkcie zarządzania), rozwiązaniem okazało się po prostu wydłużenie kabla USB w stronę balkonu i&#8230; zmiana wzmocnienia z ustawionego na sztywno na tryb automatyczny. Czasem najprostsze rozwiązanie leży najbliżej.</p>



<h2 class="wp-block-heading">Co dalej</h2>



<p class="wp-block-paragraph">Ten sam dongiel, ten sam pipeline (rtl_433 → MQTT → Home Assistant) obsłuży w praktyce dowolne urządzenie nadające w pasmach ISM — kolejne czujniki, piloty, a nawet niektóre liczniki mediów (choć te bywają szyfrowane, o czym może przy okazji innego artykułu). Do obsługi 433 MHz osobno planuję jeszcze przerobiony Sonoff RF Bridge z firmware ESPHome — ale to już temat na kolejny wpis.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph"><em>Masz w domu jakieś radiowe urządzenie, które chciałbyś wciągnąć do swojego Home Assistant? Napisz w komentarzu — może da się je podsłuchać tą samą metodą.</em></p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://tyminski.dev/stacja-pogodowa-garni-int-5-podlaczona-do-home-assistant-za-pomoca-rtl-sdr-v4/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Smart dzwonek w bloku z wielkiej płyty</title>
		<link>https://tyminski.dev/smart-dzwonek-w-bloku-z-wielkiej-plyty/</link>
					<comments>https://tyminski.dev/smart-dzwonek-w-bloku-z-wielkiej-plyty/#respond</comments>
		
		<dc:creator><![CDATA[Łukasz Tymiński]]></dc:creator>
		<pubDate>Tue, 28 Jul 2026 19:42:33 +0000</pubDate>
				<category><![CDATA[Smart Home]]></category>
		<category><![CDATA[aqara]]></category>
		<category><![CDATA[remont]]></category>
		<category><![CDATA[zamel]]></category>
		<category><![CDATA[zigbee]]></category>
		<guid isPermaLink="false">https://tyminski.dev/?p=2054</guid>

					<description><![CDATA[Pojawił się pomysł, żeby dołożyć teściowi dodatkowy dzwonek w salonie, żeby lepiej słyszał, jak ktoś dzwoni do drzwi. Najważniejszym warunkiem, jaki musiałem spełnić, był brak kucia i puszczania kabli po ścianach — bo w bloku z wielkiej płyty każda dziura w ścianie to nieprzewidywalna niespodzianka (a czasem i zbrojenie). To akurat klasyczny problem w takich&#8230; <br> <a class="read-more" href="https://tyminski.dev/smart-dzwonek-w-bloku-z-wielkiej-plyty/">Czytaj dalej</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Pojawił się pomysł, żeby dołożyć teściowi dodatkowy dzwonek w salonie, żeby lepiej słyszał, jak ktoś dzwoni do drzwi. Najważniejszym warunkiem, jaki musiałem spełnić, był brak kucia i puszczania kabli po ścianach — bo w bloku z wielkiej płyty każda dziura w ścianie to nieprzewidywalna niespodzianka (a czasem i zbrojenie).</p>



<figure data-wp-context="{&quot;galleryId&quot;:&quot;6a8c4b27d67b6&quot;}" data-wp-interactive="core/gallery" class="wp-block-gallery has-nested-images columns-3 is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex">
<figure data-wp-context="{&quot;imageId&quot;:&quot;6a8c4b27d6d4a&quot;}" data-wp-interactive="core/image" data-wp-key="6a8c4b27d6d4a" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="1024" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" data-id="2059" src="https://tyminski.dev/wp-content/uploads/2026/07/IMG_20260728_213803-1-1024x1024.jpg" alt="" class="wp-image-2059" style="aspect-ratio:1" srcset="https://tyminski.dev/wp-content/uploads/2026/07/IMG_20260728_213803-1-1024x1024.jpg 1024w, https://tyminski.dev/wp-content/uploads/2026/07/IMG_20260728_213803-1-300x300.jpg 300w, https://tyminski.dev/wp-content/uploads/2026/07/IMG_20260728_213803-1-150x150.jpg 150w, https://tyminski.dev/wp-content/uploads/2026/07/IMG_20260728_213803-1-768x768.jpg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6a8c4b27d71f7&quot;}" data-wp-interactive="core/image" data-wp-key="6a8c4b27d71f7" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="932" height="1024" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" data-id="2057" src="https://tyminski.dev/wp-content/uploads/2026/07/MVIMG_20260728_154642-932x1024.jpg" alt="" class="wp-image-2057" style="aspect-ratio:1"/><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6a8c4b27d7681&quot;}" data-wp-interactive="core/image" data-wp-key="6a8c4b27d7681" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="1024" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" data-id="2058" src="https://tyminski.dev/wp-content/uploads/2026/07/MVIMG_20260728_164851-1024x1024.jpg" alt="" class="wp-image-2058" style="aspect-ratio:1" srcset="https://tyminski.dev/wp-content/uploads/2026/07/MVIMG_20260728_164851-1024x1024.jpg 1024w, https://tyminski.dev/wp-content/uploads/2026/07/MVIMG_20260728_164851-300x300.jpg 300w, https://tyminski.dev/wp-content/uploads/2026/07/MVIMG_20260728_164851-150x150.jpg 150w, https://tyminski.dev/wp-content/uploads/2026/07/MVIMG_20260728_164851-768x768.jpg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</figure>



<p class="wp-block-paragraph">To akurat klasyczny problem w takich blokach: instalacja dzwonkowa jest zwykle poprowadzona jednym, sztywnym torem od domofonu/przycisku przy drzwiach klatki aż po dzwonek w mieszkaniu, bez żadnych dodatkowych gniazd czy odgałęzień po drodze. Chcesz dodatkowy dzwonek w innym pokoju? Teoretycznie zostaje Ci albo kucie i ciągnięcie nowego przewodu, albo — jak w moim przypadku — podłączenie się bezprzewodowo do istniejącego sygnału.</p>



<p class="wp-block-paragraph">Wybór padł na system <strong>Aqara</strong> z protokołem <strong>Zigbee</strong> — głównie dlatego, że pozwala odczytać sygnał elektryczny z istniejącej instalacji dzwonkowej bez ingerencji w ściany, a jednocześnie jest na tyle prosty w konfiguracji, że nie trzeba stawiać całego środowiska smart home tylko pod tę jedną funkcję.</p>



<h2 class="wp-block-heading">Dlaczego bez Home Assistanta</h2>



<p class="wp-block-paragraph">Wiadomo, że pod tak prostą funkcję nie warto bawić się z Home Assistantem — sama aplikacja Aqara w zupełności wystarczy. To ważne rozróżnienie, bo część osób zaczynających przygodę ze smart home ma odruch &#8222;wszystko musi iść przez HA&#8221;. Czasem prostsze rozwiązanie jest po prostu lepsze: mniej punktów awarii, mniej zależności, łatwiejsza obsługa dla kogoś, kto nie jest entuzjastą automatyki (a teść niekoniecznie musi nim być).</p>



<h2 class="wp-block-heading">Sprzęt: dwa moduły, dwie role</h2>



<p class="wp-block-paragraph">Do zbudowania takiego mostka wystarczą dwa urządzenia, każde z inną rolą:</p>



<ul class="wp-block-list">
<li><strong>Dual Relay Module T2 Aqara (DCM-K01)</strong> — jako &#8222;zbieracz sygnału&#8221;. Jego zadaniem jest wykrycie momentu, w którym ktoś wciska przycisk dzwonka przy wejściu do mieszkania, i przekazanie tej informacji dalej w sieci Zigbee.</li>



<li><strong>Aqara Hub M1S Gen 2</strong> — jako fizyczny dzwonek w salonie teścia. Bramka ta ma wbudowany głośnik i potrafi odtwarzać dźwięki na żądanie, a przy okazji pełni funkcję koordynatora sieci Zigbee dla całej instalacji.</li>
</ul>



<p class="wp-block-paragraph">Ten podział jest kluczowy: moduł relay tylko &#8222;słucha&#8221; istniejącego obwodu elektrycznego i informuje sieć Zigbee o zdarzeniu, a hub — fizycznie umieszczony tam, gdzie ma być słyszalny — reaguje dźwiękiem. Między nimi nie ma żadnego nowego przewodu — cała komunikacja idzie bezprzewodowo.</p>



<h2 class="wp-block-heading">Nie obyło się bez komplikacji</h2>



<p class="wp-block-paragraph">Niestety, z rozpędu jeden moduł zabiłem. Nie wziąłem pod uwagę tego, że napięcie na przewodach podpiętych do dzwonka jest wzięte z innego, klatkowego obwodu — czyli innego niż ten, z którego zasilany jest sam moduł. To dość podstępna pułapka w instalacjach z wielkiej płyty: obwód dzwonkowy bywa zasilany z rozdzielni klatkowej, a nie z instalacji mieszkaniowej, i ma inne parametry napięciowe, niż mogłoby się wydawać na pierwszy rzut oka.</p>



<p class="wp-block-paragraph">Rozwiązaniem okazał się dodatkowy moduł przekaźnika <strong>Zamel PEM-01</strong>, który wysterowuje styki S0 i S1 na module T2. Innymi słowy: zamiast podłączać moduł Aqara bezpośrednio pod nieprzewidywalne napięcie z klatki, przekaźnik Zamela pełni rolę bezpiecznego pośrednika — odseparowuje elektrycznie oba obwody i przekazuje modułowi T2 już czysty, kontrolowany sygnał &#8222;ktoś nacisnął przycisk&#8221;.</p>



<p class="wp-block-paragraph">To dobra lekcja przy tego typu projektach: zanim podłączysz cokolwiek do istniejącej instalacji dzwonkowej w starszym bloku, warto najpierw zmierzyć napięcie i sprawdzić, z jakiego obwodu faktycznie ono pochodzi — szczególnie gdy dzwonek dzieli infrastrukturę z częścią wspólną budynku.</p>



<h2 class="wp-block-heading">Automatyzacja w aplikacji Aqara</h2>



<p class="wp-block-paragraph">Logika działania jest celowo bardzo prosta: kliknięcie dzwonka poza drzwiami w rozdzielnicy odpala automatyzację, która uruchamia dzwonek w bramce M1S. Cała automatyzacja mieści się w standardowej aplikacji Aqara — bez żadnych zewnętrznych integracji.</p>



<p class="wp-block-paragraph">Dodatkowo zabezpieczyłem się przed przypadkowym zostawieniem modułu włączonego na stałe (co w praktyce oznaczałoby ciągle grający dzwonek w rozdzielnicy). Przełącznik jest automatycznie wyłączany zaraz po odtworzeniu dźwięku na Aqara Hub M1S — czyli cały cykl &#8222;wykryj → zagraj → zresetuj&#8221; zamyka się sam, bez ręcznej interwencji.</p>



<h2 class="wp-block-heading">Podsumowanie</h2>



<p class="wp-block-paragraph">Ten projekt to dobry przykład na to, że nie każda automatyzacja smart home musi być rozbudowana. Czasem cel jest bardzo konkretny — &#8222;teść ma lepiej słyszeć dzwonek&#8221; — i najlepszym rozwiązaniem jest dwa niedrogie moduły Zigbee plus jeden przekaźnik zabezpieczający, bez kucia ścian, bez Home Assistanta, bez nowej instalacji. Dla kogoś, kto mieszka w bloku z wielkiej płyty i staje przed podobnym problemem, to gotowy przepis: Dual Relay Module T2 do przechwycenia sygnału, Aqara Hub M1S jako dodatkowy dzwonek, i — jeśli napięcie na dzwonkowym obwodzie okaże się nietypowe — przekaźnik separujący typu Zamel PEM-01 jako bezpiecznik na start.</p>



<div class="tym-cta">
  <p class="tym-cta__question">Budujesz dom albo planujesz w końcu ogarnąć automatykę w mieszkaniu?</p>
  <a href="mailto:lukasz@tyminski.dev" class="tym-cta__btn">Napisz do mnie!</a>
  <p class="tym-cta__followup">pogadamy o Twoim projekcie.</p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://tyminski.dev/smart-dzwonek-w-bloku-z-wielkiej-plyty/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Życie kota w smart domu &#8211; kici-automatyzacje</title>
		<link>https://tyminski.dev/zycie-kota-w-smart-domu-kici-automatyzacje/</link>
					<comments>https://tyminski.dev/zycie-kota-w-smart-domu-kici-automatyzacje/#respond</comments>
		
		<dc:creator><![CDATA[Łukasz Tymiński]]></dc:creator>
		<pubDate>Mon, 27 Jul 2026 12:13:56 +0000</pubDate>
				<category><![CDATA[Smart Home]]></category>
		<category><![CDATA[Home Assistant]]></category>
		<category><![CDATA[grohe]]></category>
		<category><![CDATA[haker]]></category>
		<category><![CDATA[homeassistant]]></category>
		<category><![CDATA[tablet]]></category>
		<category><![CDATA[xiaomi]]></category>
		<guid isPermaLink="false">https://tyminski.dev/?p=1992</guid>

					<description><![CDATA[Psy mają właścicieli. Koty mają personel. A skoro i tak jesteśmy na stanowisku &#8222;personelu&#8221;, czemu by nie zautomatyzować obowiązków? Oto jak smart home może obsłużyć kota lepiej, niż my sami — i to bez wstawania w nocy, bo ktoś miauczy pod drzwiami łazienki. Automatyczna bateria w zlewie zamiast miski z wodą czy fontanny Koty od&#8230; <br> <a class="read-more" href="https://tyminski.dev/zycie-kota-w-smart-domu-kici-automatyzacje/">Czytaj dalej</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Psy mają właścicieli. Koty mają personel. A skoro i tak jesteśmy na stanowisku &#8222;personelu&#8221;, czemu by nie zautomatyzować obowiązków? Oto jak smart home może obsłużyć kota lepiej, niż my sami — i to bez wstawania w nocy, bo ktoś miauczy pod drzwiami łazienki.</p>



<figure data-wp-context="{&quot;galleryId&quot;:&quot;6a8c4b27d8834&quot;}" data-wp-interactive="core/gallery" class="wp-block-gallery has-nested-images columns-3 is-cropped wp-block-gallery-4 is-layout-flex wp-block-gallery-is-layout-flex">
<figure data-wp-context="{&quot;imageId&quot;:&quot;6a8c4b27d8c77&quot;}" data-wp-interactive="core/image" data-wp-key="6a8c4b27d8c77" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="1024" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" data-id="1999" src="https://tyminski.dev/wp-content/uploads/2026/07/IMG_20260726_175857-1-1024x1024.jpg" alt="" class="wp-image-1999" style="aspect-ratio:1" srcset="https://tyminski.dev/wp-content/uploads/2026/07/IMG_20260726_175857-1-1024x1024.jpg 1024w, https://tyminski.dev/wp-content/uploads/2026/07/IMG_20260726_175857-1-300x300.jpg 300w, https://tyminski.dev/wp-content/uploads/2026/07/IMG_20260726_175857-1-150x150.jpg 150w, https://tyminski.dev/wp-content/uploads/2026/07/IMG_20260726_175857-1-768x768.jpg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6a8c4b27d912f&quot;}" data-wp-interactive="core/image" data-wp-key="6a8c4b27d912f" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="1024" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" data-id="1997" src="https://tyminski.dev/wp-content/uploads/2026/07/IMG_20260701_190102-1024x1024.jpg" alt="" class="wp-image-1997" style="aspect-ratio:1" srcset="https://tyminski.dev/wp-content/uploads/2026/07/IMG_20260701_190102-1024x1024.jpg 1024w, https://tyminski.dev/wp-content/uploads/2026/07/IMG_20260701_190102-300x300.jpg 300w, https://tyminski.dev/wp-content/uploads/2026/07/IMG_20260701_190102-150x150.jpg 150w, https://tyminski.dev/wp-content/uploads/2026/07/IMG_20260701_190102-768x768.jpg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6a8c4b27d95a5&quot;}" data-wp-interactive="core/image" data-wp-key="6a8c4b27d95a5" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="1024" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" data-id="1996" src="https://tyminski.dev/wp-content/uploads/2026/07/IMG_20251030_120910-1024x1024.jpg" alt="" class="wp-image-1996" style="aspect-ratio:1" srcset="https://tyminski.dev/wp-content/uploads/2026/07/IMG_20251030_120910-1024x1024.jpg 1024w, https://tyminski.dev/wp-content/uploads/2026/07/IMG_20251030_120910-300x300.jpg 300w, https://tyminski.dev/wp-content/uploads/2026/07/IMG_20251030_120910-150x150.jpg 150w, https://tyminski.dev/wp-content/uploads/2026/07/IMG_20251030_120910-768x768.jpg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</figure>



<h2 class="wp-block-heading">Automatyczna bateria w zlewie zamiast miski z wodą czy fontanny</h2>



<p class="wp-block-paragraph">Koty od natury wolą pić wodę płynącą — w dziczy stojąca woda kojarzy się z zastałą i potencjalnie niebezpieczną. Haker od początku miał problem z piciem ze zwykłej miski. Musieliśmy mu, przy okazji wizyt w łazience przy których zawsze nam towarzyszył, odkręcać delikatnie kran i wtedy sobie pił.</p>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:47% auto"><figure class="wp-block-media-text__media"><video controls src="https://tyminski.dev/wp-content/uploads/2026/07/haker1bateria.mp4"></video></figure><div class="wp-block-media-text__content">
<p class="pl10 wp-block-paragraph">Pierwotnym rozwiązaniem była dedykowana fontanna dla kota z czujnikiem ruchu. Nie było to jednak optymalne i bezobsługowe rozwiązanie, ponieważ woda w tym pojemniku, pomimo, że się ruszała, szybko traciła status płynącej i kot tracił zainteresowanie. Dodatkowo jakieś filterki do wymiany, ciągle nachlapane, plastiki zaczęły matowieć i kamienieć&#8230; same problemy i ciągła obsługa.</p>



<p class="pl10 wp-block-paragraph">Ostatecznym rozwiązaniem stała się bateria bezdotykowa w łazience. Na początku kupiliśmy baterię Deante Hiacynt, ale producent nie wziął pod uwagę, że kot będzie odpalał baterię kilkadziesiąt razy dziennie. Bateria padła (przekaźnik), przestał się zawór otwierać. Wymieniliśmy baterię na taką, jaką często spotykaliśmy na lotniskach, na Grohe Bau Cosmopolitan E. Ta, miała może trochę łatwiejszy start, bo kot nie wpadał w szał zabawy przy wodzie, a po prostu przychodził się napić <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
</div></div>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading">Automatyczny podajnik karmy — Xiaomi Smart Pet Food Feeder 2</h2>



<p class="wp-block-paragraph">Szukałem podajnika, który będzie wyglądał stylowo, a jednocześnie będę mógł go maksymalnie sensownie wysterować Home Assistantem. Aktualnie podajnik działa według harmonogramu: mamy 3 karmienia na dobę. Dodatkowo, jeżeli Haker danego dnia zje więcej i waga karmy w miseczce spadnie poniżej 3g, to automatycznie dosypujemy porcję. Porcja nie jest tutaj mierzona według wagi, a w ilości obrotów ślimaka podającego. Więc, ile karmy wyleci, zależy w dużej mierze od kształtu, rozmiaru i wagi pojedynczego chrupka. W przypadku karmy Hakera, czyli <strong>Acana Indoor entrée&nbsp;</strong>pojedyncza porcja to 8g.</p>



<p class="wp-block-paragraph">Niektóre karmniki posiadają wbudowaną kamerę, ten nie posiadał, więc wzbogaciłem trochę możliwości tego podajnika i dokupiłem kamerkę Wi-Fi TP-LINK Tapo C110 i zamontowałem nad urządzeniem. Działa to zdecydowanie lepiej niż kamery wbudowane gdzieś przy miseczce, gdzie nie widać nawet zawartości miseczki, a głowę kota <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f61b.png" alt="😛" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p class="wp-block-paragraph">Logowanie każdego wydania porcji — przydatne, jeśli kot jest na diecie i kilka osób w domu go dokarmia &#8222;przy okazji&#8221;. Powiadomienie push, gdy poziom karmy jest niski, Zarówno w miseczce jak i w podajniku.</p>



<figure data-wp-context="{&quot;galleryId&quot;:&quot;6a8c4b27d993f&quot;}" data-wp-interactive="core/gallery" class="wp-block-gallery has-nested-images columns-3 is-cropped wp-block-gallery-5 is-layout-flex wp-block-gallery-is-layout-flex">
<figure data-wp-context="{&quot;imageId&quot;:&quot;6a8c4b27d9ea6&quot;}" data-wp-interactive="core/image" data-wp-key="6a8c4b27d9ea6" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="1024" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" data-id="2007" src="https://tyminski.dev/wp-content/uploads/2026/07/IMG_20251030_120910-1-1024x1024.jpg" alt="" class="wp-image-2007" style="aspect-ratio:1" srcset="https://tyminski.dev/wp-content/uploads/2026/07/IMG_20251030_120910-1-1024x1024.jpg 1024w, https://tyminski.dev/wp-content/uploads/2026/07/IMG_20251030_120910-1-300x300.jpg 300w, https://tyminski.dev/wp-content/uploads/2026/07/IMG_20251030_120910-1-150x150.jpg 150w, https://tyminski.dev/wp-content/uploads/2026/07/IMG_20251030_120910-1-768x768.jpg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6a8c4b27da40f&quot;}" data-wp-interactive="core/image" data-wp-key="6a8c4b27da40f" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="1024" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" data-id="2009" src="https://tyminski.dev/wp-content/uploads/2026/07/IMG_20260425_220235-2-1024x1024.jpg" alt="" class="wp-image-2009" style="aspect-ratio:1" srcset="https://tyminski.dev/wp-content/uploads/2026/07/IMG_20260425_220235-2-1024x1024.jpg 1024w, https://tyminski.dev/wp-content/uploads/2026/07/IMG_20260425_220235-2-300x300.jpg 300w, https://tyminski.dev/wp-content/uploads/2026/07/IMG_20260425_220235-2-150x150.jpg 150w, https://tyminski.dev/wp-content/uploads/2026/07/IMG_20260425_220235-2-768x768.jpg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6a8c4b27daa0a&quot;}" data-wp-interactive="core/image" data-wp-key="6a8c4b27daa0a" class="wp-block-image size-full wp-lightbox-container"><img decoding="async" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" data-id="2011" src="https://tyminski.dev/wp-content/uploads/2026/07/IMG_20260701_190133-scaled.jpg" alt="" class="wp-image-2011" style="aspect-ratio:1"/><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</figure>



<h2 class="wp-block-heading">Kontaktron w drzwiach łazienki i czujnik położenia klapy WC + głosowe ostrzeżenie</h2>



<p class="wp-block-paragraph">To jedna z moich ulubionych automatyzacji i jedna z tych, co najczęściej szokuje gości, bo pokazuje, jak smart home może rozwiązywać problemy międzyludzkie (a właściwie międzygatunkowe).</p>



<p class="wp-block-paragraph">Kuweta w łazience, drzwi się zamykają, gasi się światło — i mamy kota uwięzionego w łazience albo kota, który w razie potrzeby, będzie miał problem z załatwieniem swoich potrzeb. Automatyzacja:</p>



<ol class="wp-block-list">
<li>Czujnik kontaktron (Satel Integra) wbudowany w drzwi łazienki, tak samo, jak zresztą we wszystkich drzwiach</li>



<li>Wyzwalacz: wyłączenie światła w łazience przy <strong>zamkniętych</strong> drzwiach.</li>



<li>Akcja: komunikat głosowy <em>&#8222;Nie zamykaj drzwi, kot ma tam kuwetę&#8221;</em>.</li>
</ol>



<figure data-wp-context="{&quot;galleryId&quot;:&quot;6a8c4b27dad00&quot;}" data-wp-interactive="core/gallery" class="wp-block-gallery has-nested-images columns-3 is-cropped wp-block-gallery-6 is-layout-flex wp-block-gallery-is-layout-flex">
<figure data-wp-context="{&quot;imageId&quot;:&quot;6a8c4b27db2e2&quot;}" data-wp-interactive="core/image" data-wp-key="6a8c4b27db2e2" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="1024" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" data-id="2027" src="https://tyminski.dev/wp-content/uploads/2026/07/IMG_20260727_175512-1024x1024.jpg" alt="" class="wp-image-2027" style="aspect-ratio:1" srcset="https://tyminski.dev/wp-content/uploads/2026/07/IMG_20260727_175512-1024x1024.jpg 1024w, https://tyminski.dev/wp-content/uploads/2026/07/IMG_20260727_175512-300x300.jpg 300w, https://tyminski.dev/wp-content/uploads/2026/07/IMG_20260727_175512-150x150.jpg 150w, https://tyminski.dev/wp-content/uploads/2026/07/IMG_20260727_175512-768x768.jpg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6a8c4b27db906&quot;}" data-wp-interactive="core/image" data-wp-key="6a8c4b27db906" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="1024" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" data-id="2028" src="https://tyminski.dev/wp-content/uploads/2026/07/IMG_20260727_175712-1024x1024.jpg" alt="" class="wp-image-2028" style="aspect-ratio:1" srcset="https://tyminski.dev/wp-content/uploads/2026/07/IMG_20260727_175712-1024x1024.jpg 1024w, https://tyminski.dev/wp-content/uploads/2026/07/IMG_20260727_175712-300x300.jpg 300w, https://tyminski.dev/wp-content/uploads/2026/07/IMG_20260727_175712-150x150.jpg 150w, https://tyminski.dev/wp-content/uploads/2026/07/IMG_20260727_175712-768x768.jpg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6a8c4b27dbf49&quot;}" data-wp-interactive="core/image" data-wp-key="6a8c4b27dbf49" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="1024" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" data-id="2033" src="https://tyminski.dev/wp-content/uploads/2026/07/IMG_20251030_120910-2-1024x1024.jpg" alt="" class="wp-image-2033" style="aspect-ratio:1" srcset="https://tyminski.dev/wp-content/uploads/2026/07/IMG_20251030_120910-2-1024x1024.jpg 1024w, https://tyminski.dev/wp-content/uploads/2026/07/IMG_20251030_120910-2-300x300.jpg 300w, https://tyminski.dev/wp-content/uploads/2026/07/IMG_20251030_120910-2-150x150.jpg 150w, https://tyminski.dev/wp-content/uploads/2026/07/IMG_20251030_120910-2-768x768.jpg 768w, https://tyminski.dev/wp-content/uploads/2026/07/IMG_20251030_120910-2-1080x1080.jpg 1080w, https://tyminski.dev/wp-content/uploads/2026/07/IMG_20251030_120910-2.jpg 1212w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</figure>



<p class="wp-block-paragraph">Drugim tematem, analizowanym podczas gaszenia światła w łazience, jest sprawdzenie, czy klapa została opuszczona. Jak kot był młodszy to zdarzyło mu się wskoczyć z rozpędu do otwartej toalety. I tu, analogicznie, leci komunikat głosowy, jeżeli ktoś deski nie opuści. Dzięki temu kot może bez problemu wskakiwać na pralkę, czy do zlewu, korzystając z toalety jako podestu <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f638.png" alt="😸" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<h2 class="wp-block-heading">Sprzątanie po kocie &#8211; automatyczne i doraźne</h2>



<p class="wp-block-paragraph">Kuweta to nie tylko piasek do wymiany, ale też nieunikniony bałagan wokół &#8211; a to akurat świetnie nadaje się do automatyzacji na dwóch poziomach.</p>



<p class="wp-block-paragraph"><strong>Sprzątanie ogólne</strong> &#8211; codzienne, całościowe odkurzanie mieszkania robi <strong>Dreame X40 Master</strong> według standardowego harmonogramu. To poziom &#8222;porządek na co dzień&#8221;, niezwiązany bezpośrednio z kotem, ale mający też znaczenie przy alergiach na sierść czy pyłek z kuwety.</p>



<p class="wp-block-paragraph"><strong>Sprzątanie doraźne</strong> &#8211; do szybkich, punktowych interwencji wokół kuwety (rozsypany żwirek, ślady łapek) lub podajnika karmy sięgam po <strong>Xiaomi Vacuum Cleaner G20 Lite</strong> &#8211; ręczny odkurzacz pionowy. Nie fatyguję robota. To świadomy wybór: zamiast czekać, aż robot dojedzie i zrobi rundę po całym pokoju, biorę odkurzacz do ręki i w kilka sekund sprzątam konkretny fragment podłogi tuż przy kuwecie. Przy rozsypanym żwirku to po prostu szybsze i skuteczniejsze rozwiązanie niż automatyzacja.</p>



<p class="wp-block-paragraph">Podział ról między tymi dwoma sprzętami sprawdza się lepiej niż poleganie tylko na jednym rozwiązaniu &#8211; X40 Master robi swoje, generalne sprzątanie na harmonogramie, a G20 Lite jest pod ręką na te sytuacje, gdzie liczy się refleks, nie automatyzacja.</p>



<h2 class="wp-block-heading">Analiza innych danych</h2>



<p class="wp-block-paragraph">W Home Assistant, poza sprzętową obsługą, mam kilka ciekawych bajerów. Poza monitoringiem stanu miseczki dodatkowo obliczam: ile dzisiaj wsypano do miseczki, ile kot zjadł oraz ile średnio zjada w ostatnim tygodniu. Na podstawie średniego spożycia obliczam na ile dni starczy karmy w podajniku. Jest też utworzony pomocnik, przetrzymujący obecność kota w domu. Jak kot jest poza domem, wyłączamy harmonogram i alerty. Mam też KiciLog, czyli log zdarzeń z HA dotyczących kocich spraw, oraz licznik czasu od wymiany kuwety z przypomnieniem o konieczności wymiany. Są też guziczki do obsługi listy zakupów.</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6a8c4b27dc81e&quot;}" data-wp-interactive="core/image" data-wp-key="6a8c4b27dc81e" class="wp-block-image size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="1730" height="762" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://tyminski.dev/wp-content/uploads/2026/07/ha_kotek.jpg" alt="" class="wp-image-2037" srcset="https://tyminski.dev/wp-content/uploads/2026/07/ha_kotek.jpg 1730w, https://tyminski.dev/wp-content/uploads/2026/07/ha_kotek-1536x677.jpg 1536w, https://tyminski.dev/wp-content/uploads/2026/07/ha_kotek-1024x451.jpg 1024w" sizes="auto, (max-width: 1730px) 100vw, 1730px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<p class="wp-block-paragraph">Tak, jak wszystkim pozostałym mieszkańcom staram się życie ułatwić, tak i życie kota musi być maksymalnie wypieszczone. Nie trzeba się martwić o picie, bo jest pod dostatkiem, karma zawsze w miseczce, drzwi do łazienki zawsze otwarte. Czego chcieć więcej? <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f60a.png" alt="😊" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<div class="tym-cta">
  <p class="tym-cta__question">Chcesz aby Twój pupil też doświadczył życia z gadżetami w nowoczesnym domu?</p>
  <a href="mailto:lukasz@tyminski.dev" class="tym-cta__btn">Napisz do mnie!</a>
  <p class="tym-cta__followup">pogadamy o Twoim projekcie.</p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://tyminski.dev/zycie-kota-w-smart-domu-kici-automatyzacje/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://tyminski.dev/wp-content/uploads/2026/07/haker1bateria.mp4" length="25678785" type="video/mp4" />

			</item>
		<item>
		<title>Drzwi, które wiedzą, kiedy wracam do domu</title>
		<link>https://tyminski.dev/zrobilem-drzwi-ktore-same-wiedza-kiedy-wracam-do-domu/</link>
					<comments>https://tyminski.dev/zrobilem-drzwi-ktore-same-wiedza-kiedy-wracam-do-domu/#respond</comments>
		
		<dc:creator><![CDATA[Łukasz Tymiński]]></dc:creator>
		<pubDate>Thu, 23 Jul 2026 06:44:15 +0000</pubDate>
				<category><![CDATA[Smart Home]]></category>
		<category><![CDATA[doorbell]]></category>
		<category><![CDATA[drzwi]]></category>
		<category><![CDATA[gerda]]></category>
		<category><![CDATA[homeassistant]]></category>
		<category><![CDATA[unifi]]></category>
		<guid isPermaLink="false">https://tyminski.dev/?p=1921</guid>

					<description><![CDATA[Inteligentne wejście do mieszkania — jak to powstało ? Wejście do mieszkania to jedno z tych miejsc, które w większości smart home traktuje się po macoszemu — może jakiś inteligentny zamek, może kamera, i tyle. U mnie to osobny, przemyślany projekt, złożony z kilku elementów, które razem dają coś więcej niż suma części. Punkt wyjścia&#8230; <br> <a class="read-more" href="https://tyminski.dev/zrobilem-drzwi-ktore-same-wiedza-kiedy-wracam-do-domu/">Czytaj dalej</a>]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Inteligentne wejście do mieszkania — jak to powstało ?</h2>



<p class="wp-block-paragraph">Wejście do mieszkania to jedno z tych miejsc, które w większości smart home traktuje się po macoszemu — może jakiś inteligentny zamek, może kamera, i tyle. U mnie to osobny, przemyślany projekt, złożony z kilku elementów, które razem dają coś więcej niż suma części.</p>



<h2 class="wp-block-heading">Punkt wyjścia</h2>



<p class="wp-block-paragraph">Chciałem czegoś, co realnie ułatwia życie (koniec z szukaniem kluczy), ale jednocześnie nie robi kompromisu na bezpieczeństwie i nie jest zależne od jednego producenta czy jednej chmury. Zamiast kupować gotowy, zamknięty ekosystem, połączyłem kilka sprawdzonych elementów własnym kodem.</p>



<h2 class="wp-block-heading">Z czego się to składa</h2>



<p class="wp-block-paragraph"><strong>UniFi Doorbell G4 Pro PoE</strong> — wideodomofon z czytnikiem odcisku palca i NFC. To pierwszy punkt styku: rozpoznaje, kto stoi pod drzwiami, zanim jeszcze dotknie klamki. Atutem jest zasilanie PoE wparte UPS więc domofon działa nawet jak zabraknie prądu.</p>



<p class="wp-block-paragraph"><strong>Zamek Tedee Pro</strong> — elektroniczny zamek, który fizycznie otwiera i zamyka drzwi na sygnał, bez majstrowania przy oryginalnym mechanizmie. Sam zamek sygnowany przez Gerdę &#8211; polskie&nbsp;przedsiębiorstwo&nbsp;działające na rynku zabezpieczeń od 1987 roku. Dodatkowym atutem i cechą, która była kluczowa przy wyborze jest sterowanie lokalne po adresie IP. Totalna odporność na awarię chmury czy brak internetu.</p>



<p class="wp-block-paragraph"><strong>Kontaktrony przy zamkach na ryglach</strong> — proste, ale niezawodne czujniki magnetyczne monitorujące stan samego zamknięcia (czy rygle są faktycznie zatrzaśnięte), niezależnie od tego, co &#8222;myśli&#8221; sam zamek elektroniczny. Kontagtrony podpięte do systemu alarmowego Satel Integra. </p>



<p class="wp-block-paragraph"><strong>Kontaktron monitorujący otwarcie drzwi</strong> — osobny czujnik na samym skrzydle drzwiowym, który mówi systemowi po prostu: drzwi są otwarte albo zamknięte, tu i teraz. Tak jak kontaktrony od rygli wpuszczone w futrynę. Z zewnątrz totalnie nic nie widać, estetyka na najwyższym poziomie.</p>



<p class="wp-block-paragraph"><strong>Kamera robiąca snapshot po wejściu</strong> — automatyczne zdjęcie w momencie wejścia do mieszkania, trafiające prosto do mojego systemu powiadomień.</p>



<h2 class="wp-block-heading">Jak to wszystko się spina</h2>



<p class="wp-block-paragraph">Sercem układu sterującego zamkiem jest Raspberry Pi z własnym mostkiem napisanym w PHP. Ścieżka wygląda tak: dzwonek (G4) rozpoznaje palec albo kartę → Unifi Protect uruchamia lokalnie webhookiem skrypt na Raspberry Pi → stamtąd leci do lokalnego API bridge&#8217;a Tedee, które fizycznie otwiera zamek. Nie potrzeba internetu, żeby wszystko działało.</p>



<p class="wp-block-paragraph">W Unifi Protect mam skonfigurowane różne eventy w zależności czyj token lub palec został zeskanowany. Dzięki temu wiemy kto wchodzi. W przypadku zeskanowania palca przez osobę trzecią doorbell ma konfigurowany oddzielny event przy okazji którego dostajemy informację, że ktoś majstruje przy zamku.</p>



<p class="wp-block-paragraph">Świadomie zaprojektowałem to jako <strong>niezależną ścieżkę krytyczną</strong> — działa poza moim głównym stosem Proxmox/Docker/Home Assistant. Jeśli coś padnie w reszcie infrastruktury (aktualizacja, restart kontenera, cokolwiek), wejście do własnego mieszkania i tak działa.</p>



<h2 class="wp-block-heading">Więcej niż jeden czynnik</h2>



<p class="wp-block-paragraph">Rozpoznanie nie opiera się na jednej metodzie. Odcisk palca, karta NFC (DESFire) i dodatkowo heurystyka obecności po Wi-Fi razem budują coś w rodzaju dwuskładnikowej weryfikacji — nie wystarczy jedna metoda, żeby system uznał, że to naprawdę ja.</p>



<p class="wp-block-paragraph">Kontaktrony dokładają do tego kolejną warstwę — niezależnie od tego, co zgłasza elektronika zamka, fizyczny czujnik magnetyczny potwierdza rzeczywisty stan rygli i samych drzwi. To rozdzielenie &#8222;co system myśli, że się stało&#8221; od &#8222;co faktycznie się stało&#8221; jest moim zdaniem kluczowe w każdym systemie bezpieczeństwa.</p>



<h2 class="wp-block-heading">Powiadomienia i pełny obraz sytuacji</h2>



<p class="wp-block-paragraph">Wszystkie zdarzenia — otwarcie, zamknięcie, rozpoznanie na dzwonku, snapshot z kamery — trafiają do mojego własnego huba powiadomień, który napisałem, bo żadne gotowe rozwiązanie nie ogarniało tego w sposób, jakiego szukałem. Telegram, powiadomienia push z Home Assistanta, komunikaty głosowe — wszystko z jednego miejsca, ze zdjęciem z kamery dołączonym automatycznie do zdarzenia wejścia.</p>



<p class="wp-block-paragraph">W Home Assistant dodatkowo dzwonek wywołuje popup z podglądem kamery na tablecie ściennym czy telefonie — więc zanim ktokolwiek otworzy drzwi, widzę, kto stoi na progu.</p>



<h2 class="wp-block-heading">Detal, który pokazuje, że to naprawdę projekt pasji</h2>



<p class="wp-block-paragraph">Sam bridge do zamka Tedee siedzi w customowym, drukowanym na własnej drukarce 3D uchwycie ściennym — który przeszedł przez kilkanaście iteracji, zanim pasował dokładnie tak, jak chciałem. Bo skoro już się robi coś porządnie, to porządnie do samego końca.</p>



<h2 class="wp-block-heading">Efekt końcowy</h2>



<p class="wp-block-paragraph">Wchodzę do mieszkania palcem albo kartą, drzwi się otwierają, system wie, że to ja, kontaktrony potwierdzają, że wszystko fizycznie się domknęło, a ja dostaję zdjęcie i powiadomienie — wszystko bez jednej chmurowej zależności, którą mógłby wyłączyć jakiś producent następnym update&#8217;em.</p>



<div class="tym-cta">
  <p class="tym-cta__question">Jeśli budujesz coś podobnego u siebie lub zastanawiasz się, jak to sensownie zrobić</p>
  <a href="mailto:lukasz@tyminski.dev" class="tym-cta__btn">Napisz do mnie!</a>
  <p class="tym-cta__followup">pogadamy o Twoim projekcie.</p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://tyminski.dev/zrobilem-drzwi-ktore-same-wiedza-kiedy-wracam-do-domu/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>HomeAssistant dashboard &#8211; czyli tablet na ścianie</title>
		<link>https://tyminski.dev/homeassistant-dashboard-czyli-tablet-na-scianie/</link>
					<comments>https://tyminski.dev/homeassistant-dashboard-czyli-tablet-na-scianie/#respond</comments>
		
		<dc:creator><![CDATA[Łukasz Tymiński]]></dc:creator>
		<pubDate>Tue, 04 Mar 2025 07:35:47 +0000</pubDate>
				<category><![CDATA[Elektryka]]></category>
		<category><![CDATA[Home Assistant]]></category>
		<category><![CDATA[Smart Home]]></category>
		<category><![CDATA[homeassistant]]></category>
		<category><![CDATA[kiosk]]></category>
		<category><![CDATA[lenovo]]></category>
		<category><![CDATA[nodered]]></category>
		<category><![CDATA[remont]]></category>
		<category><![CDATA[sonoff]]></category>
		<category><![CDATA[tablet]]></category>
		<guid isPermaLink="false">https://www.devpower.pl/?p=1533</guid>

					<description><![CDATA[Marzyłem od zawsze o centrum sterującym w postaci tabletu zamontowanego na ścianie w salonie, żeby zawsze mieć podgląd w całość systemu. Wszystkie włączniki i czujniki na wyciągnięcie ręki. Rewelacja. Pomyślałem sobie: &#8222;co stoi na przeszkodzie?&#8222;. Odpowiedź brzmiała nic 🙂 Dwa rzepy na plecy i tablet wisi. Byłem wstępnie na taką okoliczność przygotowany ale mimo wszystko&#8230; <br> <a class="read-more" href="https://tyminski.dev/homeassistant-dashboard-czyli-tablet-na-scianie/">Czytaj dalej</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Marzyłem od zawsze o centrum sterującym w postaci tabletu zamontowanego na ścianie w salonie, żeby zawsze mieć podgląd w całość systemu. Wszystkie włączniki i czujniki na wyciągnięcie ręki. Rewelacja. Pomyślałem sobie: &#8222;<strong>co stoi na przeszkodzie?</strong>&#8222;. Odpowiedź brzmiała <strong>nic</strong> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img decoding="async" src="https://www.tyminski.dev/wp-content/uploads/2025/02/1740725166817-scaled-e1741083933201-1024x1024.jpg" alt="tablet na ścianie" class="wp-image-1504 size-full"/></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph">Dwa rzepy na plecy i tablet wisi. Byłem wstępnie na taką okoliczność przygotowany ale mimo wszystko układ kart wymagał podszlifowania. Dla bezpiecznej obsługi tabletu na ścianie, musiałem uniemożliwić osobom postronnym grzebanie w ustawieniach tabletu jak i samego HomeAssistanta. Samo &#8222;zabezpieczenie&#8221; HA to utworzenie nowego użytkownika z odpowiednimi uprawnieniami. Do zablokowania dostępu poza aplilacją użyłem Fully Kiosk Browser.</p>
</div></div>



<h2 class="wp-block-heading">Fully Kiosk Browser </h2>



<div class="wp-block-media-text has-media-on-the-right is-stacked-on-mobile"><div class="wp-block-media-text__content">
<p class="wp-block-paragraph">Sama konfiguracja aplikacji jest bardzo prosta. Podajemy lokalny adres naszego homassistanta, logujemy się i już <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <br>Home assistant wykryje instancje aplikacji i doda nam do systemu encje z nią związane.<br>możemy włączać lub wyłączać ekran, możemy sterować funkcją wykrywania ruchu. I co najważniejsze mamy dostęp do encji monitorującej stan baterii tabletu. </p>
</div><figure class="wp-block-media-text__media"><img decoding="async" src="https://www.tyminski.dev/wp-content/uploads/2025/03/image.png" alt="integracja Fully Kiosk Browser" class="wp-image-1549 size-full"/></figure></div>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img decoding="async" src="https://www.tyminski.dev/wp-content/uploads/2025/03/image-1.png" alt="ustawienia tabletu" class="wp-image-1550 size-full"/></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph">Dzięki tym wymienionym encjom możemy wykonać w pełni zautomatyzowany proces obsługi ładowania ekranu. Wiadomym jest, że tablet musi być na stałe podłączone do ładowarki, żeby nie trzeba było pamiętać o ładowaniu. Wiemy też, że urządzenie nie może być ciągle ładowane bo zabija to baterie. Nowe urządzenia mają co prawda rozwiązane to programowo i same przestają się ładować.</p>
</div></div>



<div class="wp-block-media-text has-media-on-the-right is-stacked-on-mobile"><div class="wp-block-media-text__content">
<p class="wp-block-paragraph">Mój tablet niby reguluje sobie ładowanie sam jednak mimo to chciałem zrobić to tak jak internet poleca, czyli odcinam prąd jak poziom baterii przekroczy 80% i zaczynam ładować jak spadnie poniżej 20%.</p>
</div><figure class="wp-block-media-text__media"><img decoding="async" src="https://www.tyminski.dev/wp-content/uploads/2025/03/image-2.png" alt="Node-red ładowanie baterii" class="wp-image-1552 size-full"/></figure></div>



<h2 class="wp-block-heading">Sterowanie wybudzaniem ekranu</h2>



<p class="wp-block-paragraph">Sterowanie wybudzaniem ekranu opiera się o 2 czujniki ruchu. Czujnik ruchu w salonie oraz czujnik ruchu z kamery tabletu. Wyłączyłem włączanie ekranu w aplikacji a jedynie przekazuję stan z czujnika ruchu w tablecie. Dzięki takiemu zabiegowy mam pełną kontrolę nad wybudzaniem ekranu. Dodatkowo wybudzenie jest uzależnione od kilku pomocników. Między innymi jest blokada wybudzania w godzinach nocnych oraz podczas zajęć.</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://www.tyminski.dev/wp-content/uploads/2025/03/image-3-1024x153.png" alt="Node-red wybudzanie ekranu" class="wp-image-1554"/></figure>



<h2 class="wp-block-heading">Sprzęt użyty do wykonania projektu</h2>



<p class="wp-block-paragraph">Tablet <strong>Lenovo Tab m10</strong>, który leżał zapomniany w komodzie dostał nowe życie. W końcu stał się przydatny. Jako uchwyt do tabletu wykorzystałem plecki od etui z klapką. Rewelacyjnie się spisały w tej roli. Bardzo dobrze trzyma tablet. Nie wiem nawet czy nie za mocno i czy on w ogóle jest jeszcze wyciągalny <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f61b.png" alt="😛" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </p>



<div class="wp-block-media-text has-media-on-the-right is-stacked-on-mobile"><div class="wp-block-media-text__content">
<p class="wp-block-paragraph">Do obsługi zasilania użyłem zbmini Extreme  od sonoff. Działa bez zarzutu po integracji <strong>zigbee2mqtt</strong>. Wszystko co mogę puszczam przez <strong>mqtt</strong> pomaga to w znaczny sposób ograniczyć ilość integracji podpiętych do homeassistanta.</p>
</div><figure class="wp-block-media-text__media"><img decoding="async" src="https://www.tyminski.dev/wp-content/uploads/2025/03/image-5.png" alt="" class="wp-image-1580 size-full"/></figure></div>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img decoding="async" src="https://www.tyminski.dev/wp-content/uploads/2025/03/image-4.png" alt="" class="wp-image-1579 size-full"/></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph">No i ostatnim elementem jest kostka ładowarki. Nie ma tu potrzeby w sumie kupowania takiego elementu ale, żeby zaoszczędzić trochę miejsca, nie robić gniazda i używać zwykłej ładowarki znalazła się na liście zakupów. Jeszcze zapomniałem o kabelku kątowym micro usb, którego użyłem aby zminimalizować przestrzeń, którą zajmuje cała instalacja. </p>
</div></div>



<h2 class="wp-block-heading">Montaż tabletu na ścianie</h2>



<p class="wp-block-paragraph">Jestem programistą z mocno rozbudowanymi umiejętnościami remontowymi jak już nie raz napomniałem. Mam też strasznie mocno wyczulone poczucie estetyki związanej z rurkami i kablami prowadzonymi natynkowo. Wszystko musi być wkute w ścianę. Nie mogłem wobec tego zostawić tabletu na rzepach z wiszącą ładowarką. </p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img decoding="async" src="https://www.tyminski.dev/wp-content/uploads/2025/03/1740865124263-scaled-e1741088773163-1024x1024.jpg" alt="" class="wp-image-1513 size-full"/></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph">Pierwsze koty za płoty. Podkułem tynk na wymiar tabletu. I stało się to czego w sumie się spodziewałem czyli kable, które skutecznie utrudniły zadanie zlicowania tabletu ze ścianą. Na szczęście udało się podkuć pod przewodami i cofnąć je oraz dołożyć przewód do ładowarki. Osadzenie puszki z miejscem na ładowarkę i sonoffa poszło bardzo sprawnie. Gipsowanie, osadzanie narożników, gładziowanie, szlifowanie oraz malowanie zajęło praktycznie cały weekend. Było warto. <br>Poniżej fotorelacja z prac remontowych:</p>
</div></div>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-7 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img decoding="async" data-id="1559" src="https://www.tyminski.dev/wp-content/uploads/2025/03/1741088974343-1024x1024.jpg" alt="" class="wp-image-1559"/></figure>



<figure class="wp-block-image size-large"><img decoding="async" data-id="1560" src="https://www.tyminski.dev/wp-content/uploads/2025/03/1741088996145-1024x1024.jpg" alt="" class="wp-image-1560"/></figure>



<figure class="wp-block-image size-large"><img decoding="async" data-id="1561" src="https://www.tyminski.dev/wp-content/uploads/2025/03/1741089045870-1024x1024.jpg" alt="" class="wp-image-1561"/></figure>



<figure class="wp-block-image size-large"><img decoding="async" data-id="1562" src="https://www.tyminski.dev/wp-content/uploads/2025/03/1741089089376-1024x1024.jpg" alt="" class="wp-image-1562"/></figure>



<figure class="wp-block-image size-large"><img decoding="async" data-id="1563" src="https://www.tyminski.dev/wp-content/uploads/2025/03/1741089141898-1024x1024.jpg" alt="" class="wp-image-1563"/></figure>



<figure class="wp-block-image size-large"><img decoding="async" data-id="1564" src="https://www.tyminski.dev/wp-content/uploads/2025/03/1741089200382-1024x1024.jpg" alt="" class="wp-image-1564"/></figure>
</figure>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img decoding="async" src="https://www.tyminski.dev/wp-content/uploads/2025/03/image-8.png" alt="" class="wp-image-1602 size-full"/></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph">Oto efekt prac remontowo budowlanych. Koszt z jakim trzeba się liczyć, zakładając, że mamy tablet to około 200zł. Moduł sonoff, plus ładowarka i kabelek kontowy to około 100zł. Druga stówka na materiały: gips, gładź, kawałek przewodu, puszka, narożnik. </p>
</div></div>



<p class="wp-block-paragraph">Jeżeli natomiast nie mamy tabletu do dyspozycji to koszt takiego dashboard&#8217;u jest uzależniony od tego jakiej klasy urządzenie się kupi. Trzeba jednak pamiętać, że najtańsze tablety będą działać i zniszczy to cały efekt.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-8 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img decoding="async" data-id="1566" src="https://www.tyminski.dev/wp-content/uploads/2025/03/1741089316130-1024x1024.jpg" alt="" class="wp-image-1566"/></figure>



<figure class="wp-block-image size-large"><img decoding="async" data-id="1565" src="https://www.tyminski.dev/wp-content/uploads/2025/03/1741089257378-1024x1024.jpg" alt="" class="wp-image-1565"/></figure>
</figure>



<p class="wp-block-paragraph">Brakuje jeszcze estetycznej ramki&#8230; niestety jestem teraz na etapie myślenia o wymianie włączników więc ramka musi poczekać aż zdecydujemy się na włączniki, żeby ramka tabletu była jak najbardziej zbliżona do osprzętu elektroinstalacyjnego.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://tyminski.dev/homeassistant-dashboard-czyli-tablet-na-scianie/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Kontrolka sygnalizująca spotkanie w pracy :)</title>
		<link>https://tyminski.dev/kontrolka-sygnalizujaca-spotkanie-w-pracy/</link>
					<comments>https://tyminski.dev/kontrolka-sygnalizujaca-spotkanie-w-pracy/#respond</comments>
		
		<dc:creator><![CDATA[Łukasz Tymiński]]></dc:creator>
		<pubDate>Thu, 27 Feb 2025 23:03:43 +0000</pubDate>
				<category><![CDATA[Smart Home]]></category>
		<guid isPermaLink="false">https://www.devpower.pl/?p=1474</guid>

					<description><![CDATA[Popełniłem ciekawy i jednocześnie bardzo prosty projekt. Rozbudowałem smart drzwi do biura o nową funkcjonalność. Tak jak w tytule dorobiłem kontrolkę sygnalizującą uruchomienie na komputerze oprogramowania korzystającego z kamery lub mikrofonu. Na komputerze mam zainstalowaną aplikację HomeAssistanta, która udostępnia do systemu kilka przydatnych czujników, między innymi te wspomniane wcześniej jak i bardzo przydatną informację o&#8230; <br> <a class="read-more" href="https://tyminski.dev/kontrolka-sygnalizujaca-spotkanie-w-pracy/">Czytaj dalej</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Popełniłem ciekawy i jednocześnie bardzo prosty projekt. Rozbudowałem smart drzwi do biura o nową funkcjonalność. Tak jak w tytule dorobiłem kontrolkę sygnalizującą uruchomienie na komputerze oprogramowania korzystającego z kamery lub mikrofonu. Na komputerze mam zainstalowaną aplikację HomeAssistanta, która udostępnia do systemu kilka przydatnych czujników, między innymi te wspomniane wcześniej jak i bardzo przydatną informację o sieci WiFi do jakiej jesteśmy aktualnie podłączeni.</p>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:18% auto"><figure class="wp-block-media-text__media"><img decoding="async" src="https://www.tyminski.dev/wp-content/uploads/2025/02/image.png" alt="dioda czerwona w futrynie" class="wp-image-1486 size-full"/></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph">W pierwszej kolejności chciałem zainstalować jakiś ciekawy neon &#8222;on air&#8221; żeby nie wchodził nikt w czasie spotkań. Ostatecznie skończyło się na małej 22mm lampce kontrolnej. W końcu to nie publiczne miejsce i tylko żona i syn mogą wtargnąć na spotkanie <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f61b.png" alt="😛" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </p>
</div></div>



<figure class="wp-block-gallery has-nested-images columns-3 is-cropped wp-block-gallery-9 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img decoding="async" data-id="1490" src="https://www.tyminski.dev/wp-content/uploads/2025/02/1740725166886-scaled.jpg" alt="kontrolka meet" class="wp-image-1490" style="aspect-ratio:16/9"/></figure>



<figure class="wp-block-image size-large"><img decoding="async" data-id="1491" src="https://www.tyminski.dev/wp-content/uploads/2025/02/1740726836849-1-1024x576.jpg" alt="kontrolka spotknia w pracy" class="wp-image-1491" style="aspect-ratio:16/9"/></figure>



<figure class="wp-block-image size-large"><img decoding="async" data-id="1489" src="https://www.tyminski.dev/wp-content/uploads/2025/02/1740726836836-1024x576.jpg" alt="proszę nie wchodzić" class="wp-image-1489" style="aspect-ratio:16/9"/></figure>
</figure>



<p class="wp-block-paragraph">Efekt wizualny jest w moim odczuciu rewelacyjny <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img decoding="async" src="https://www.tyminski.dev/wp-content/uploads/2025/02/image-1-1024x667.png" alt="moduł dopuszkowy" class="wp-image-1495 size-full"/></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph">Dioda zasilana jest zasilaczem 12V podłączonym do jednego z 4 wyjść modułu dopuszkowego <strong>Avatto ZWSM16-W4</strong>. W sumie to ostatnio zakupiłem dużo modułów tego producenta. Bardzo mi się spodobała ich bezproblemowa praca z z2m. Wyjście sterowane automatycznie przez czujnik użycia mikrofonu lub kamery lub ręcznie bezpośrednio z HomeAssistant. Na wypadek gdyby na przykład ktoś inny korzystał mojego biurka i chciałby oznaczyć pokój jako zajęty <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
</div></div>



<p class="wp-block-paragraph">Rozwojowo w blacie pojawi się przycisk i kontrolka informująca o aktywności systemu zajętości. Przy okazji wykrycia spotkania mogę sobie pozwolić na dodatkowe przygotowanie pomieszczenia. Przymknąć rolety czy wyłączyć odtwarzanie muzyki na aleksie. </p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://www.tyminski.dev/wp-content/uploads/2025/02/image-2-1024x138.png" alt="node-red" class="wp-image-1497"/></figure>



<p class="wp-block-paragraph">Prosta automatyzacja w Node-red i wszystko śmiga jak trzeba. </p>
]]></content:encoded>
					
					<wfw:commentRss>https://tyminski.dev/kontrolka-sygnalizujaca-spotkanie-w-pracy/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Usmartowiona toaleta. Przycisk LED :)</title>
		<link>https://tyminski.dev/spluczka-led-smart-toaleta/</link>
					<comments>https://tyminski.dev/spluczka-led-smart-toaleta/#respond</comments>
		
		<dc:creator><![CDATA[Łukasz Tymiński]]></dc:creator>
		<pubDate>Sun, 24 Apr 2022 08:46:00 +0000</pubDate>
				<category><![CDATA[Smart Home]]></category>
		<guid isPermaLink="false">https://www.devpower.pl/?p=1448</guid>

					<description><![CDATA[Remont łazienki to dobry moment na rozprowadzenia nowych przewodów. Jeszcze lepsza jest sytuacja kiedy dostajemy mieszkanie w stanie deweloperskim. Tak było w moim przypadku. Kupiłem karton skrętki i poprowadziłem z szafy do wielu miejsc przewody na zasadzie &#8222;kiedyś coś wymyślę&#8221; albo &#8222;napewno się przyda&#8221;. Jeden z takich przewodów wylądował w spłuczce i tak zaczęła powstawać&#8230; <br> <a class="read-more" href="https://tyminski.dev/spluczka-led-smart-toaleta/">Czytaj dalej</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Remont łazienki to dobry moment na rozprowadzenia nowych przewodów. Jeszcze lepsza jest sytuacja kiedy dostajemy mieszkanie w stanie deweloperskim. Tak było w moim przypadku. Kupiłem karton skrętki i poprowadziłem z szafy do wielu miejsc przewody na zasadzie &#8222;kiedyś coś wymyślę&#8221; albo &#8222;napewno się przyda&#8221;. Jeden z takich przewodów wylądował w spłuczce i tak zaczęła powstawać smart toaleta <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<div class="wp-block-media-text has-media-on-the-right is-stacked-on-mobile"><div class="wp-block-media-text__content">
<p class="wp-block-paragraph">Jest w głowie kilka pomysłów na przyciskowe czujniki ale na ten moment jedyne co spłuczka robi to świeci na niebiesko. Efekt bardzo fajny. Dyskretne podświetlenie robi robotę.</p>
</div><figure class="wp-block-media-text__media"><img decoding="async" src="https://www.tyminski.dev/wp-content/uploads/2022/04/spl1-1024x576.png" alt="smart przycisk " class="wp-image-1449 size-full"/></figure></div>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img decoding="async" src="https://www.tyminski.dev/wp-content/uploads/2022/04/1740869005594-1024x576.jpg" alt="smart łazienka" class="wp-image-1518 size-full"/></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph">Dodatkowym ciekawym gadżetem związanym z toaletą jest czujnik położenia deski toaletowej. Pomysł urodził się po zakupie kota, który był nieco niesforny i wskakiwał na toaletę i nie zwracał uwagi czy klapa jest opuszczona <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f61b.png" alt="😛" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </p>
</div></div>



<p class="m4_p">Nie było z tym problemu jeżeli chodzi o mieszkańców ale goście często nie opuszczali klapy. Dlatego założyłem czujnik i po zgaszeniu światła w łazience po 5 sekundach wykonywany jest test nachylenia. Jeżeli klapa nie jest opuszczona dostajemy powiadomienie o tym fakcie. Był też komunikat głosowy ale wprowadzało to za dużo sensacji wśród gości <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f61b.png" alt="😛" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </p>



<h2 class="wp-block-heading">Czujnik wibracji AQARA DJT11LM ZigBee</h2>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img decoding="async" src="https://www.tyminski.dev/wp-content/uploads/2022/04/i-aqara-vibration-sensor-czujnik-wibracji-bialy-djt11lm.webp" alt="Czujnik wibracji AQARA DJT11LM na ZigBee" class="wp-image-1522 size-full"/></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph">Czujnik jaki zastosowałem to <strong><a href="/aqara-vibration-sensor-czujnik-wibracji/">AQARA DJT11LM</a></strong> na <strong>ZigBee</strong>. Jest to w sumie czujnik wibracji ale dzięki wbudowanym żyroskopom i encjom wskazującym nachylenie idealnie nadaje się do mojego zastosowania. Czujnik posiada także wbudowany termometr. Ja akurat mam termometry na ścianie, ale jak ktoś nie potrzebuje mieć wyświetlacza to można śmiało z tego czujnika temperaturę pobierać.</p>



<p class="wp-block-paragraph"></p>
</div></div>



<div class="wp-block-media-text has-media-on-the-right is-stacked-on-mobile"><div class="wp-block-media-text__content">
<p class="wp-block-paragraph">Poprzedni czujnik miałem 2 lata. Żyroskopy przestały działać. Bardzo lubię firmę <strong>Aqara</strong> więc dałem czujnikowi drugą szansę i kupiłem drugi taki sam. Tym bardziej, że na 90% to ja osobiście przyczyniłem się do jego uszkodzenia przy sprzątaniu łazienki. Z drugiej strony na rynku nie ma godnego zastępcy dla tego czujnika <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
</div><figure class="wp-block-media-text__media"><img decoding="async" src="https://www.tyminski.dev/wp-content/uploads/2022/04/image-1.png" alt="" class="wp-image-1528 size-full"/></figure></div>



<p class="m4_p">Podsumowując. Nie wiedziałem, że sprawdzanie przy pomocy Home Assistanta czy deska jest opuszczona da mi tyle frajdy. Poza komunikatem w przypadku nie zamknięcia smart deska realizuje kilka innych funkcji, o których szerzej opowiem przy opisie całej <a href="/smart-lazienka-przeglad-instalacji/">smart łazienki</a> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
]]></content:encoded>
					
					<wfw:commentRss>https://tyminski.dev/spluczka-led-smart-toaleta/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Aqara Vibration Sensor &#8211; czujnik wibracji (DJT11LM)</title>
		<link>https://tyminski.dev/aqara-vibration-sensor-czujnik-wibracji/</link>
					<comments>https://tyminski.dev/aqara-vibration-sensor-czujnik-wibracji/#respond</comments>
		
		<dc:creator><![CDATA[Łukasz Tymiński]]></dc:creator>
		<pubDate>Sun, 06 Feb 2022 22:17:00 +0000</pubDate>
				<category><![CDATA[Czujniki]]></category>
		<category><![CDATA[Smart Home]]></category>
		<category><![CDATA[aqara]]></category>
		<category><![CDATA[z2m]]></category>
		<category><![CDATA[zigbee]]></category>
		<guid isPermaLink="false">https://www.devpower.pl/?p=1594</guid>

					<description><![CDATA[Czujnik wibracji, temperatury oraz odchylenia w jednej, malutkiej obudowie. Bardzo dobry sensor — praktycznie nie ma dla niego sensownego zamiennika w tej cenie i wielkości. Działa po Zigbee i doskonale współpracuje z zigbee2mqtt, więc integracja z Home Assistantem to formalność. Co właściwie mierzy Nazwa &#8222;czujnik wibracji&#8221; trochę spłyca to, co ten sensor naprawdę potrafi. W&#8230; <br> <a class="read-more" href="https://tyminski.dev/aqara-vibration-sensor-czujnik-wibracji/">Czytaj dalej</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Czujnik wibracji, temperatury oraz odchylenia w jednej, malutkiej obudowie. Bardzo dobry sensor — praktycznie nie ma dla niego sensownego zamiennika w tej cenie i wielkości. Działa po Zigbee i doskonale współpracuje z zigbee2mqtt, więc integracja z Home Assistantem to formalność.</p>



<h2 class="wp-block-heading">Co właściwie mierzy</h2>



<div class="wp-block-media-text has-media-on-the-right is-stacked-on-mobile" style="grid-template-columns:auto 27%"><div class="wp-block-media-text__content">
<p class="wp-block-paragraph">Nazwa &#8222;czujnik wibracji&#8221; trochę spłyca to, co ten sensor naprawdę potrafi. W środku siedzi żyroskop i akcelerometr, dzięki czemu w zigbee2mqtt dostajemy trzy różne typy zdarzeń:</p>



<p class="wp-block-paragraph"><strong>vibration</strong> &#8211; sam fakt wykrycia drgań (np. ktoś stuknął w przedmiot, na którym siedzi czujnik)</p>



<p class="wp-block-paragraph"><strong>tilt</strong> &#8211; zmianę kąta nachylenia względem pozycji wyjściowej</p>



<p class="wp-block-paragraph"><strong>drop</strong> &#8211; nagły, gwałtowny ruch (np. upadek albo szarpnięcie)</p>



<p class="wp-block-paragraph">Do tego dochodzi konkretny <strong>kąt nachylenia w stopniach</strong> oraz <strong>siła wibracji</strong>, więc automatyzacje nie muszą opierać się wyłącznie na &#8222;coś drgnęło&#8221;, tylko mogą reagować na konkretne wartości — co robi ogromną różnicę przy dopracowywaniu logiki.</p>
</div><figure class="wp-block-media-text__media"><img decoding="async" src="https://www.tyminski.dev/wp-content/uploads/2025/03/image-6.png" alt="Czujnik wibracji" class="wp-image-1596 size-full"/></figure></div>



<h2 class="wp-block-heading">Moje zastosowanie: deska toaletowa</h2>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:34% auto"><figure class="wp-block-media-text__media"><img decoding="async" src="https://www.tyminski.dev/wp-content/uploads/2025/03/image-7.png" alt="aqara zigbee2mqtt" class="wp-image-1598 size-full"/></figure><div class="wp-block-media-text__content">
<p class="pl10 wp-block-paragraph">Osobiście wykorzystuję żyroskop do badania kąta nachylenia deski toaletowej <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Dzięki temu wiem, kiedy deska nie została opuszczona — a to ważne, bo w naszym domu oznacza to, że kot jest zagrożony (temat rozwijałem szerzej w <a href="https://tyminski.dev/spluczka-led-smart-toaleta/">tekście o usmartowionej toalecie</a>). Dodatkowo po opuszczeniu deski leci automatyczne psiknięcie odświeżaczem powietrza — drobiazg, ale porządkuje atmosferę bez konieczności pamiętania o tym samemu.</p>
</div></div>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading">Inne pomysły na wykorzystanie</h2>



<p class="wp-block-paragraph">Czujnik jest na tyle uniwersalny, że warto go trzymać &#8222;w zapasie&#8221; na nietypowe sytuacje. Kilka przykładów, gdzie sprawdza się równie dobrze:</p>



<p class="wp-block-paragraph"><strong>Skrzynka pocztowa</strong> &#8211; wibracja przy otwarciu klapki jako powiadomienie &#8222;przyszła poczta&#8221;, bez konieczności montowania osobnego kontaktronu</p>



<p class="wp-block-paragraph"><strong>Pralka lub suszarka</strong> &#8211; wykrycie końca prania po ustaniu wibracji, jako tańsza alternatywa dla dedykowanych czujników zużycia energii</p>



<p class="wp-block-paragraph"><strong>Drzwi wejściowe do szafek/schowków</strong> &#8211; tam, gdzie klasyczny kontaktron trudno zamontować estetycznie, a wystarczy wykryć samo &#8222;ktoś tym ruszył&#8221;</p>



<p class="wp-block-paragraph"><strong>Ochrona sprzętu</strong> &#8211; na wartościowym przedmiocie (np. rowerze w garażu) jako prosty alarm antywłamaniowy niezależny od głównego systemu alarmowego</p>



<h2 class="wp-block-heading">Czułość i strojenie</h2>



<p class="wp-block-paragraph">Domyślna czułość czujnika bywa zbyt wysoka do niektórych zastosowań — w zigbee2mqtt da się to skorygować parametrem <strong>sensitivity</strong> (niska/średnia/wysoka), a przy zastosowaniach typu deska toaletowa warto też przetestować próg kąta, od którego automatyzacja faktycznie ma reagować, żeby drobne drgnięcia nie wywoływały fałszywych alarmów.</p>



<h2 class="wp-block-heading">Podsumowanie</h2>



<p class="wp-block-paragraph">Za tę cenę i rozmiar trudno o równie uniwersalny sensor — jeden mały czujnik, trzy różne typy zdarzeń, i masa nietypowych zastosowań, które w standardowym katalogu &#8222;czujnik ruchu / kontaktron / czujnik zalania&#8221; po prostu nie mieszczą się. Jeśli szukasz czegoś do rozwiązania nietypowego problemu w automatyce domowej — to często właśnie ten sensor okazuje się najprostszym rozwiązaniem.</p>



<div class="tym-cta">
  <p class="tym-cta__question">Masz nietypowy problem do rozwiązania automatyką i nie wiesz, jaki czujnik się sprawdzi?</p>
  <a href="mailto:lukasz@tyminski.dev" class="tym-cta__btn">Napisz do mnie!</a>
  <p class="tym-cta__followup">pogadamy o Twoim projekcie.</p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://tyminski.dev/aqara-vibration-sensor-czujnik-wibracji/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Filtr wody typu TapOn Philips</title>
		<link>https://tyminski.dev/filtr-wody-typu-tapon-philips/</link>
					<comments>https://tyminski.dev/filtr-wody-typu-tapon-philips/#respond</comments>
		
		<dc:creator><![CDATA[Łukasz Tymiński]]></dc:creator>
		<pubDate>Tue, 16 Nov 2021 22:31:47 +0000</pubDate>
				<category><![CDATA[Smart Home]]></category>
		<guid isPermaLink="false">https://www.devpower.pl/?p=1385</guid>

					<description><![CDATA[Jakiś czas temu w internecie znalazłem a w sumie przypadkiem natknąłem się na wzmiankę o nakranowych filtrach. Konkretnie na filtr od firmy Brita za około 250zł. Pomyślałem sobie, że bardzo fajna opcja, że filtrowana woda leci bezpośrednio z kranu do szklanki czyli zawsze świeża. Nie trzeba się zastanawiać kiedy był napełniony dzbanek. Poza tym kranowa&#8230; <br> <a class="read-more" href="https://tyminski.dev/filtr-wody-typu-tapon-philips/">Czytaj dalej</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Jakiś czas temu w internecie znalazłem a w sumie przypadkiem natknąłem się na wzmiankę o nakranowych filtrach. Konkretnie na filtr od firmy Brita za około 250zł. Pomyślałem sobie, że bardzo fajna opcja, że filtrowana woda leci bezpośrednio z kranu do szklanki czyli zawsze świeża. Nie trzeba się zastanawiać kiedy był napełniony dzbanek. Poza tym kranowa woda bezpośrednio z instalacji jest  chłodniejsza od wody w temperaturze pokojowej z dzbanka. Generalnie same plusy <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Ale z racji, że temat nie należy do priorytetów został odłożony na bliżej nieokreślony termin.</p>



<h2 class="wp-block-heading" id="filtr-nakranowy-tapon-w-biedronce">Filtr nakranowy TapOn w biedronce</h2>



<p class="wp-block-paragraph">Nie minął miesiąc jak znalazłem w biedronce na urządzenie o identycznym zastosowaniu od firmy Philips za 100-150zł już nie pamiętam. Cena urządzenia z filtrem wydawała się bardzo atrakcyjna. Bez większego wahania umieściłem produkt w koszyku <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-10 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><a href="https://www.tyminski.dev/wp-content/uploads/2021/11/IMG_20211114_164315.jpg"><img decoding="async" data-id="1388" src="https://www.tyminski.dev/wp-content/uploads/2021/11/IMG_20211114_164315-1024x969.jpg" alt="" class="wp-image-1388"/></a></figure>



<figure class="wp-block-image size-large"><a href="https://www.tyminski.dev/wp-content/uploads/2021/11/IMG_20211114_164323.jpg"><img decoding="async" data-id="1389" src="https://www.tyminski.dev/wp-content/uploads/2021/11/IMG_20211114_164323-1000x1024.jpg" alt="" class="wp-image-1389"/></a></figure>



<figure class="wp-block-image size-large"><a href="https://www.tyminski.dev/wp-content/uploads/2021/11/IMG_20211114_164332.jpg"><img decoding="async" data-id="1390" src="https://www.tyminski.dev/wp-content/uploads/2021/11/IMG_20211114_164332-1024x707.jpg" alt="" class="wp-image-1390"/></a></figure>



<figure class="wp-block-image size-large"><a href="https://www.tyminski.dev/wp-content/uploads/2021/11/IMG_20211114_164805.jpg"><img decoding="async" data-id="1391" src="https://www.tyminski.dev/wp-content/uploads/2021/11/IMG_20211114_164805-1024x1002.jpg" alt="" class="wp-image-1391"/></a></figure>
</figure>



<p class="wp-block-paragraph">Filtr do tego urządzenia kosztuje około 80zł i starcza na 5-6miesiecy przy mini rodzinie <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Nie wychodzi to taniej niż filtry do dzbanków, ale komfort użytkowania i napełnianie szklanki bezpośrednio z kranu ma to rekompensować. Dodatkowo dzbanek to dodatkowe urządzenie, które musi gdzieś stać a taki nakranowy filtr praktycznie nie zajmuje miejsca.</p>



<h2 class="wp-block-heading" id="po-dwoch-miesiacach-uzywania">Po dwóch miesiącach używania&#8230;</h2>



<p class="wp-block-paragraph">Chciałbym napisać coś innego niż to, że po 2 miesiącach straciłem cierpliwość i urządzenie zdemontowałem, założyłem zwykły perlator i zaczęliśmy ponownie korzystać ze dzbanka od <strong>Brita</strong>.</p>



<p class="wp-block-paragraph">Nie wiem może mam za twardą wodę ale wydajność tego urządzeniu w porównaniu do dzbanka filtrującego jest nieporównywalna. Do czajnika od roku wlewałem wodę z dzbanka i nigdy nie zaobserwowałem, żeby na drugi dzień w czajniku robił się nalot &#8222;kamienny&#8221; na powierzchni. Dobra nie mogę mieć do filtra o to pretensji bo nie jest to urządzenie zmiękczające wodę ale jednak dzbanek jakoś to odkamienia. Zwiększona produkcja kamienia i częstsze zalewanie czajnika octem nie było jednak tym co przelało czarę goryczy.</p>



<p class="wp-block-paragraph">Najgorsze w tym urządzeniu było zachodzenie kamieniem dysz w oby trybach. Co powodowało rozpryskiwanie się wody w losowych kierunkach. Przy myciu naczyń blat i podłoga były opryskane po około pół metra od zlewu :/ Podstawiając szklankę po filtrowaną wodę, obrywało się po rękach wodą.</p>



<p class="wp-block-paragraph">Walczyłem, namaczałem całość w occie ale z racji na nierozbieralną konstrukcję ciężko było to dokładnie wyczyścić wewnątrz i każde czyszczenie przynosiło coraz mniejszy efekt i starczało na krócej. </p>



<p class="wp-block-paragraph">Nie wiem czy to kwestia tego konkretnego modelu. Może nakranowy filtr od <strong>Brita </strong>czy <strong>Aquaphor</strong> działały by lepiej. Nie wiem. Raczej tego nie sprawdzę, ale chętnie usłyszę wasze opinie w tym temacie.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://tyminski.dev/filtr-wody-typu-tapon-philips/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Smart świeczki w Home Assistant</title>
		<link>https://tyminski.dev/smart-swieczki-home-assistant/</link>
					<comments>https://tyminski.dev/smart-swieczki-home-assistant/#respond</comments>
		
		<dc:creator><![CDATA[Łukasz Tymiński]]></dc:creator>
		<pubDate>Mon, 15 Nov 2021 18:37:09 +0000</pubDate>
				<category><![CDATA[Smart Home]]></category>
		<guid isPermaLink="false">https://www.devpower.pl/?p=1361</guid>

					<description><![CDATA[Parę dobrych miesięcy temu widziałem w biedronce zestaw 3 świeczek sterowanych pilotem. Obejrzałem i odłożyłem na półkę. Nie widziałem żadnego zastosowania. Ostatnio jednak zacząłem wieczorem odpalać świece zapachowe i bardzo mi się świeczkowy wieczorny klimat spodobał. I przypominałem sobie o świeczkach LED sterowanych pilotem z biedronki. Oczami wyobraźni widziałem już wieczorny tryb spa z lampą&#8230; <br> <a class="read-more" href="https://tyminski.dev/smart-swieczki-home-assistant/">Czytaj dalej</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Parę dobrych miesięcy temu widziałem w biedronce zestaw 3 <strong>świeczek </strong>sterowanych pilotem. Obejrzałem i odłożyłem na półkę. Nie widziałem żadnego zastosowania. Ostatnio jednak zacząłem wieczorem odpalać świece zapachowe i bardzo mi się świeczkowy wieczorny klimat spodobał. I przypominałem sobie o <strong>świeczkach LED</strong> sterowanych pilotem z biedronki. Oczami wyobraźni widziałem już wieczorny tryb spa z lampą solną, przyciemnionym oświetleniem i smart świecami. Jedno kliknięcie w aplikacji i już mamy klimat na miły wieczór <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<h2 class="wp-block-heading">Gdzie kupić świeczki sterowane pilotem?</h2>



<p class="wp-block-paragraph">Ja po raz pierwszy zobaczyłem je w napomnianej już biedronce. Niestety jak to zwykle z dyskontami bywa oferta jest sezonowa i jak nie kupisz od razu to po kilku dniach już możesz nie kupić. Na szczęście nasz największy portal aukcyjny aż pęka od ofert na tego typu gadżety. Ceny są różne od 25zł do nawet 100zł. Te najdroższe podobno wykonane były z wosku. Ja przy wyborze kierowałem się też ceną dlatego mam plastikowe :P, ale nie najtańsze ponieważ mają one prosty kształt, trochę droższe są stylizowane na upalone. Patrzyłem też na &#8222;<strong>RGB</strong>&#8221; i tym żeby pilot miał oddzielny przycisk do włączania i wyłączania. Ułatwiło to znacznie oprogramowanie. No i oczywiście, żeby załapać się na darmową wysyłkę SMART :). P</p>



<figure class="wp-block-gallery has-nested-images columns-3 is-cropped wp-block-gallery-11 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img decoding="async" data-id="1362" src="https://tyminski.dev/wp-content/uploads/2021/11/IMG_20211114_164353.jpg" alt="" class="wp-image-1362" style="aspect-ratio:1"/></figure>



<figure class="wp-block-image size-large"><img decoding="async" data-id="1363" src="https://tyminski.dev/wp-content/uploads/2021/11/IMG_20211114_164427.jpg" alt="" class="wp-image-1363" style="aspect-ratio:1"/></figure>



<figure class="wp-block-image size-large"><img decoding="async" data-id="1365" src="https://tyminski.dev/wp-content/uploads/2021/11/IMG_20211114_164530.jpg" alt="" class="wp-image-1365" style="aspect-ratio:1"/></figure>
</figure>



<h2 class="wp-block-heading">Integracja z Home Assistant</h2>



<p class="wp-block-paragraph">Świeczki sterowane pilotem na podczerwień więc sposób integracji jest oczywisty. Przydał tu się <a href="https://www.devpower.pl/broadlink-pilot-uniwersalny-ir/" target="_blank" rel="noopener"><strong>broadlink</strong></a>. Na początek tylko włącz i wyłącz, ale jak tylko znajdę trochę wolnego czasu to sczytam pozostałe kody aby mieć pełną obsługę świec. Cała integracja to tak naprawdę pobranie kodów i utworzenie switcha w yaml:</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://www.tyminski.dev/wp-content/uploads/2021/11/broadlink2-1024x177.png" alt="" class="wp-image-1345"/></figure>



<p class="wp-block-paragraph">Po restarcie Home Assistanta pojawi się nam nowa encja włącznika. Wystarczy dać ikonkę nazwę i mamy gotowy włącznik do świeczek. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> bardzo fajnie to działa a to, że mamy na pilocie dwa oddzielne fizyczne przyciski obsługujące włączanie i wyłączanie świec sprawia, że bardzo łatwo zapanować nad stanem świec. Oczywiście pod warunkiem, że nie korzystamy w międzyczasie ze standardowego pilota.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-12 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img decoding="async" data-id="1378" src="https://tyminski.dev/wp-content/uploads/2021/11/swieczki.png" alt="" class="wp-image-1378"/></figure>



<figure class="wp-block-image size-large"><img decoding="async" data-id="1377" src="https://tyminski.dev/wp-content/uploads/2021/11/swieczki2.png" alt="" class="wp-image-1377"/></figure>
</figure>



<h2 class="wp-block-heading">Podsumowanie</h2>



<p class="wp-block-paragraph">Osobiście polecam ten gadżet. Jest to niedroga zabawka, która pomaga stworzyć nastrój w pomieszczeniu, w którym stoi. Jak to często powtarzam, rzeczy sterowanych telefonem nigdy za wiele :P. Dziękuję za uwagę i pozdrawiam <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </p>
]]></content:encoded>
					
					<wfw:commentRss>https://tyminski.dev/smart-swieczki-home-assistant/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
