Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Yr værradar


Anbefalte innlegg

Jeg har laget mitt eget hack med en cron-jobb, wget og Python både for meteogram og for værradar. 

 

For meteogram, så gjør jeg i praksis et screenshot av yr-nettsida for Bergen. For å få til et 'screenshot' kjørt headless hvert kvarter har jeg tatt i bruk 'xvfb-run wkhtmltoimage'. Selvsagt penere om man klarer embedde HTML og CSS, men jeg endte altså opp med å generere en statisk PNG-fil som vises i mitt HABPanel.

 

For værradar så har jeg tilsvarende løsning, med statisk bilde, men også innzoomet. Ønsker ikke å se radar for hele vestlandet hele tida, bare rett rundt Bergen.

 

Bash-kode som kjøres via Cron:

#!/bin/bash

bergenmeteogram=/var/www/html/bergenmeteogram.png
bergenradar=/var/www/html/bergenradar

xvfb-run wkhtmltoimage --quiet http://localhost/yrbergen.html $bergenmeteogram
convert -crop $((846-19))x$((338-67))+19+67  -level 0%,100%,0.4 $bergenmeteogram $bergenmeteogram

wget --quiet "https://www.yr.no/_/proxy/met_images.aspx?radarsite=western_norway;size=large;type=reflectivity;content=image" -O ${bergenradar}.png

python /home/berland/bin/radarcrop.py ${bergenradar}.png ${bergenradar}cropped.png

Python-koden som gjør crop/zoom: 

# Klipper ut et område rundt Bergen fra radarbildet
# og legger på klokkeslettet innenfor samme område
#
# Bruk:
#  python radarcrop.py origimage.png newimage.png

import sys
import math
import Image, ImageFilter, ImageEnhance

poi_coords = (289, 472) # Point of interest location in pixels

timestamp_ul = (552, 5)  # upper left
timestamp_lr = (627, 50) # lower right
timestamp_width = timestamp_lr[0] - timestamp_ul[0]
timestamp_height = timestamp_lr[1] - timestamp_ul[1]
timestamp_aspect = float(timestamp_width) / float(timestamp_height)
newtimestampwidth = 50
orig_width = 320 # width in pixels in original image
new_width = 250 
aspect = 1

orig_image = Image.open(sys.argv[1]).convert('RGBA')

new_image = Image.new('RGBA', (new_width, new_width/aspect))

zoomedradar = orig_image.crop( 
    (poi_coords[0] - orig_width/2,
    poi_coords[1] - orig_width/aspect/2,
    poi_coords[0] + orig_width/2,
    poi_coords[1] + orig_width/aspect/2))\
    .resize((new_width, new_width/aspect), Image.ANTIALIAS)\
    .filter(ImageFilter.SHARPEN)

timestamp = orig_image.crop(
    (timestamp_ul + timestamp_lr))\
    .resize((newtimestampwidth, int(newtimestampwidth/timestamp_aspect)))\
    .filter(ImageFilter.SHARPEN)

mask = Image.new('L', timestamp.size, color=150)

timestamp.putalpha(mask)

zoomedradar.paste(timestamp, (10,10), mask)

contrast = ImageEnhance.Contrast(zoomedradar)
zoomedradar = contrast.enhance(1.2)

zoomedradar = zoomedradar.point(lambda x: math.pow(x/float(256), 1.8)*256)

zoomedradar.convert('RGB').save(sys.argv[2])

Og så ser jeg at bash-koden refererer til ei lokal html-fil for å lage screenshot, den fila inneholder:

<script src="http://www.yr.no/sted/Norge/Hordaland/Bergen/Bergen/ekstern_boks_time_for_time.js"></script><noscript><a href="http://www.yr.no/sted/Norge/Hordaland/Bergen/Bergen/">yr.no: Værvarsel for Bergen</a></noscript>

 

Eksempel fra mitt HABpanel finnes her:

 

  • Like 2
Lenke til kommentar
Del på andre sider

  • 2 måneder senere...
  • 4 måneder senere...

Tar opp denne tråden selv om den er litt gammel. Fikk litt inspirasjon her, og har prøvd å implementer nåvarselet til yr. De som viser antatt nedbør de neste 90 min. De viste seg at mobil siden til yr viser grafen som en svg fil. Det ble en del styr og for å få det til å se sånn noenlunde ut. Har laget et skript som kjører på en raspberry pi via cron hvert 5 minutt. Sender så nåvarselet som bildefil via mqtt som vises i home assistant som mqtt camera. Lekte meg litt med imagemagick for noen år siden, så det var litt skøy og ta det opp igjen. ?

 

#!/bin/bash

#Nødvendige tilegg
#https://github.com/EricChiang/pup
#wget https://github.com/ericchiang/pup/releases/download/v0.4.0/pup_v0.4.0_linux_arm.zip

#bruker arial
#sudo wget https://github.com/JotJunior/PHP-Boleto-ZF2/blob/master/public/assets/fonts/arial.ttf?raw=true -O /usr/share/fonts/truetype/arial.ttf

#sudo apt-get install librsvg2-bin
#sudo apt install imagemagick
#sudo apt install mosquitto-clients

#sletter denne fila for å bruke den som en sjekk senere
rm yrlive.svg



curl https://www.yr.no/en/overview/daily/1-15183/Norway/Rogaland/Stavanger/Stavanger |/Usr/local/bin/pup svg[class="now-graph__svg"] > yrlive.svg


if [ -s yrlive.svg ]
then
	rsvg-convert  -w 377 -h 78  yrlive.svg  -o yrlive.png
else
	convert -background none -fill black  -font Arial           -size 377x78  -pointsize 12  -gravity center           label:"Ingen nedbør neste 90min"     yrlive.png
fi


#Disse kan kommenteres vekk, trenger bare å kjøre disse engang
wget https://www.yr.no/assets/images/100/icon-precipitation-half.png
wget https://www.yr.no/assets/images/100/icon-precipitation-full.png
wget https://www.yr.no/assets/images/100/icon-precipitation-small.png


#konverterer regndråpesymbolene til 12x12, og gjør dem blå
#Disse kan og kommenteres vekk når skriptet har kjørt en gang.

convert icon-precipitation-small.png -fuzz 100% -alpha on -fill 'rgba(21, 117, 207, 255)' -opaque '#000' -resize 12x12  icon-precipitation-small-12.png

convert icon-precipitation-half.png -fuzz 100% -alpha on -fill 'rgba(21, 117, 207, 255)' -opaque '#000' -resize 12x12  icon-precipitation-half-12.png

convert icon-precipitation-full.png -fuzz 100% -alpha on -fill 'rgba(21, 117, 207, 255)' -opaque '#000' -resize 12x12  icon-precipitation-full-12.png

#lager venstrestolpen med regndråpene over
convert -size 25x78 canvas:white  -alpha transparent    icon-precipitation-full-12.png        -geometry +5+22  -composite  icon-precipitation-half-12.png    -geometry +5+40 -composite   icon-precipitation-small-12.png -geometry +5+60  -composite  sidestolpe.png

#lager bunnen
convert -background none  -fill black -font Arial  -pointsize 16   label:"Nå"   now.png
convert -background none  -fill black         -font Arial  -pointsize 16   label:"30"   30.png
convert -background none  -fill black          -font Arial  -pointsize 16   label:"60"   60.png
convert -background none  -fill black          -font Arial  -pointsize 16   label:"90"   90.png
convert -background none  -fill black           -font Arial  -pointsize 16   label:"'"   mark.png


#bunnlinje
#lager denne litt høyere en planlagt siden kamera implementasjonen i ha  tegner et grått bånd over nedre del av bildet. 
# 

convert -size 402x80 canvas:white  -alpha transparent   now.png -geometry +16+15  -composite 30.png -geometry +142+15 -composite 60.png -geometry +266+15  -composite 90.png -geometry +382+15  -composite  mark.png -geometry +25+5 -composite mark.png -geometry +87+5 -composite   mark.png -geometry +149+5 -composite  mark.png -geometry +211+5 -composite mark.png -geometry +273+5 -composite  mark.png -geometry +335+5 -composite mark.png -geometry +398+5 -composite  bunn.png


#settser sammen sidestolpene og nåvisningen
convert sidestolpe.png yrlive.png +append  yrlivehoved.png

#legger på bunnen og gjør bildebakgrunnen hvit
#slett -background white  -alpha remove  -alpha off  for å beholde bilde gjennomsiktig. evt forandre white til en annen farge eller  -background  "#d5d5d5" 
convert yrlivehoved.png bunn.png -background  white  -alpha remove  -alpha off   -append  yrliveferdig.png


#sende bildefila med mqtt
/usr/bin/mosquitto_pub -h 192.168.1.9 -i yrlive1234 -u username -P password  -V mqttv311  -t "homeassistant/yrlive/hjemme" -f yrliveferdig.png 

#i home assistant
#camera:
#  - platform: mqtt
#    name: yrlive
#    topic: homeassistant/yrlive/hjemme 
#

 

yrliveferdig.png

  • Like 4
Lenke til kommentar
Del på andre sider

  • 1 år senere...

En annen veldig enkel mulighet er å bruke windy.com

 

Her er kartet og punktmeldingen jeg har i min HA. Kartet viser animasjon av de prikkene. Fargen viser "nedbøren", zoomet ut ser man snøikoner i fjellene. Man legger opp til kartutsnitt osv selv hos windy.com

 

Det er basically en iFrame (lovelaceui) med url fra delefunksjonen hos windy.com (min konfig under)

image.png.64104c35be3ae9f397b5dfcfbddefad1.png

image.png

Lenke til kommentar
Del på andre sider

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.