Każdy z nas – rozwijających swój inteligentny dom, chciałby mieć podgląd na ulice wokół swojego domu. Cel? Podgląd korków, obserwacja sąsiadów etc.
Na szczęście jest coś takiego jak traxelektronik.pl.
To firma która regularnie pokrywa nasz kraj kamerami a co więcej obraz z nich udostępnia na swoich stornach internetowych.
Dodając do tego HOME ASSISTANT i scrape sensor – możemy uzyskać to co chcemy.
Jak to zrobić?
Na początku wyszukujemy interesujące nas kamery na stronie: https://www.traxelektronik.pl/pogoda/kamery/index.php
Następnie wybieramy interesującą nas miejscowość i zapamiętujemy adres z przeglądarki
W demonstrowanym przypadku naszym adresem będzie:
https://www.traxelektronik.pl/pogoda/kamery/kamera.php?pkamnum=1960
No i teraz do dzieła. W home assistant definiujemy sensory typu scrape jak w poniższym listingu:
# kamerki zewnętrzne, skrapowanie # https://www.traxelektronik.pl/pogoda/kamery/ - platform: scrape resource: https://www.traxelektronik.pl/pogoda/kamery/kamera.php?pkamnum=1960 name: Url kamera traxel skawina (na rzeszów) id: url_kamera_traxel_skawina_na_rzeszow select: "#kam1 ~ a:nth-of-type(4)" #kam1 - numer kolejnej kamery value_template: >- {{ value.split("'")[1] }} attribute: href scan_interval: 60 - platform: scrape resource: https://www.traxelektronik.pl/pogoda/kamery/kamera.php?pkamnum=1960 name: Url kamera traxel skawina (na katowice) id: url_kamera_traxel_skawina_na_katowice select: "#kam0 ~ a:nth-of-type(4)" #kam1 - numer kolejnej kamery value_template: >- {{ value.split("'")[1] }} attribute: href scan_interval: 60
U mnie definicja sensorów znajduje się w pliku sensor.yaml (polecam osobny plik).
Jeżeli u Ciebie sensory definiowane są w pliku configuration.yaml – musisz dodać wpis:
sensor:
przed definicją sensorów.
Nie będę opisywał szczegółowo jak działa sensor scrape. W skrócie… wykorzystując tak zwane selektory CSS wyszukujemy zdjęcie kamery:
select: “#kam0 ~ a:nth-of-type(4)”
A następnie wyciągamy potrzebną informację za pomocą:
value_template: >- {{ value.split(“‘”)[1] }} attribute: href
I proces ten przeprowadzamy dla każdej kamery którą chcemy mieć w swoim systemie inteligentnego domu.
Pozostaje kwestia definicji kamer. Realizujemy to za pomocą standardowej kamery HA generic. Poniżej skrypt:
# drogowe - platform: generic name: skawina (na rzeszów) id: traxel_skawina_na_rzeszow still_image_url: >- {{ states('sensor.url_kamera_traxel_skawina_na_rzeszow') }} - platform: generic name: skawina (na katowice) id: traxel_skawina_na_katowice still_image_url: >- {{ states('sensor.url_kamera_traxel_skawina_na_katowice') }}
U mnie definicja kamer znajduje się w pliku camera.yaml (polecam osobny plik).
Jeżeli u Ciebie kamery definiowane są w pliku configuration.yaml – musisz dodać wpis:
camera:
przed definicją kamer.
Tak zdefiniowane kamery stają się widoczne w naszym panelu home assistant. U mnie dziś pada:-)
Pliki do artykułu:
camera.yaml, sensor.yaml > homeasistant-kamery-scrap-sensor
Witam
Co prawda u mnie jest aż jedna kamera, ale z ciekawości sprawdziłem i działa 🙂
Dzięki 🙂
Cześć, wkleiłem Twoje configi do siebie, niestety nic nie wyświetla, w logach “ERROR (MainThread) [homeassistant.components.generic.camera] Error getting new camera image: unknown”.
Próbowałem również na zwykłym http, to samo. Jakaś podpowiedź?
u mnie działa:-) może jakaś pomoc zdalnie?
Witam
Posiadam kamerę dachua czy ktoś wie jak ją połączyć z HA?
https://community.home-assistant.io/t/dahua-ip-camera-component/32004/23
wrzucam, może coś znajdziesz.
Cześć,
Świetny pomysł, posiadam czystą instancje HA z obrazem Hassio na dockerze.
Po utworzeniu osobnych plików sensor.yaml, camera.yaml wraz z !include w configuration.yaml, wklejeniu kodu z pobranego archiwum podczas walidacji konfiguracji otrzymuję następujący błąd:
Invalid config for [sensor.scrape]: [id] is an invalid option for [sensor.scrape]. Check: sensor.scrape->id. (See ?, line ?).
Invalid config for [sensor.scrape]: [id] is an invalid option for [sensor.scrape]. Check: sensor.scrape->id. (See ?, line ?).
Invalid config for [camera.generic]: [id] is an invalid option for [camera.generic]. Check: camera.generic->id. (See ?, line ?).
Invalid config for [camera.generic]: [id] is an invalid option for [camera.generic]. Check: camera.generic->id. (See ?, line ?).
Czy spotkałeś się może z takim problemem?
Wrzucam na priv pliki źródłowe
Podzielisz się kodem?
Wrzuciłem na GH
Wszystko ładnie działało od miesięcy, jednak najprawdopodobniej ostatnio administratorzy strony coś pozmieniali i nie mogę już wydobyć zdjęć.
Problem był zarówno z modułem scrape który wycina link do najnowszego zdjęcia oraz z modułem camera generic który wyświetla zdjęcie z linku.
Problem ze scrapem rozwiązałem poprzez dodanie :
headers:
User-Agent: Mozilla/5.0
Niestety camera generic nie obsługuje takich warunków.I otrzymuje poniższy błąd.
Ktoś ma pomysł jak to rozwiązać ? Linki wklejone w przeglądarkę pokazują obraz, jednak strona nie przepuszcza HA.
Logger: homeassistant.components.generic.camera
Source: components/generic/camera.py:155
Integration: generic (documentation, issues)
First occurred: 15:35:40 (45 occurrences)
Last logged: 15:37:20
Error getting new camera image from S8 Węzeł Wisłostrada 2: Client error ‘403 Forbidden’ for url
Dorzucili niestety logowanie. Tych kamerek nie się już scrapować. Chyba, że ktoś ma dane dostępowe.