none
Sonnenauf- und Untergang in Powershell RRS feed

  • Frage

  • Hallo in die Runde,

    ich bin hier vermutlich ein wenig OT aber ich kämpfe schon eine Weile mit diesem Problem...

    für ein kleines "Homeprojekt" möchte ich per Powershell die Jalousien rauf und runterfahren, sobald die Sonne auf- bzw. untergegangen ist.

    Gebe ich bei Google in der Suche "Sonnenaufgang Berlin" ein, erhalte ich die Uhrzeit der voraussichtlichen Sonnenaufgangs - allerdings nur als Preview in der Suchergebnisliste und ohne einen Link welchen man direkt benutzen könnte.

    Ich möchte jetzt nicht den gesamten HTML Code nach den richtigen Daten durchsuchen und suche nach einer kurzen und einfachen Lösung, die Sonnen Auf- bzw. Untergangszeiten per Powershell abzufragen - muss auch nicht google sein - bin für alles offen...

    Hat jemand eine Idee?

    Vielen Dank

    Liebe Grüße

    Martin

    Mittwoch, 19. Februar 2020 09:23

Antworten

  • Oder halt "brute-force" :) Wenn du nicht Google nimmst, sondern eine Seite die sich relativ simpel durchsuchen lässt, ist es recht einfach:

    $url = "http://wetterstation-berlin.de/sonnenaufgang"
    $result = Invoke-WebRequest $url
    $result.ParsedHtml.body.outerText   | Select-String -AllMatches "(?ms)heute in Berlin.*?:[0-9]{2}" | Select-Object -Expand matches | Select-Object -Expand value
     

    Grüße, denniver

     


    Blog: http://www.bytecookie.de

    Powershell Code Manager: Link
    (u.a. Codesnippets verwalten + komplexe Scripte graphisch darstellen)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.


    Mittwoch, 19. Februar 2020 16:10
    Moderator
  • Moin,

    https://www.sonnenverlauf.de/ hat eine API.


    Evgenij Smirnov

    http://evgenij.smirnov.de

    Mittwoch, 19. Februar 2020 09:54
  • Hallo in die Runde,

    ich bin hier vermutlich ein wenig OT aber ich kämpfe schon eine Weile mit diesem Problem...

    für ein kleines "Homeprojekt" möchte ich per Powershell die Jalousien rauf und runterfahren, sobald die Sonne auf- bzw. untergegangen ist.

    Gebe ich bei Google in der Suche "Sonnenaufgang Berlin" ein, erhalte ich die Uhrzeit der voraussichtlichen Sonnenaufgangs - allerdings nur als Preview in der Suchergebnisliste und ohne einen Link welchen man direkt benutzen könnte.

    Ich möchte jetzt nicht den gesamten HTML Code nach den richtigen Daten durchsuchen und suche nach einer kurzen und einfachen Lösung, die Sonnen Auf- bzw. Untergangszeiten per Powershell abzufragen - muss auch nicht google sein - bin für alles offen...

    Hat jemand eine Idee?

    Vielen Dank

    Liebe Grüße

    Martin

    function Convert-DegreesToRadians($angle) { $angle / 360 * (2 * [Math]::Pi) }
    # ==========================================
    
    # France  'DEG (°)'
    $XLatDeg = "47"
    $XLatMin = "39"
    
    # 254 + 10 [ start: winterDateTime is 21.12.2012 - to 20.12.2013 include ]
    # and so .... and not from 1.1. to 31.12 
    $XDayOfYYYY = [string](((get-date).dayOfYear) + 10)
    ""
    Write-Host "DayOfYYYY :" $XDayOfYYYY
    
    # Obliquity of the ecliptic 'Constant' ok
    $XObliquity = "23.439"
    Write-Host "Obliquity :" $XObliquity
    
    # 0,0172024238389585 ok
    $XConstant_J = [math]::PI / 182.625
    Write-Host "Constant_J :" $XConstant_J
    
    # 0.409087723374951 ok
    [string]$XRadiansObliquity = Convert-DegreesToRadians $XObliquity
    Write-Host "RadiansObliquity : " $XRadiansObliquity
    
    # 0.821439212451131 ok
    [string]$XRadians_Lat = (Convert-DegreesToRadians ($XLatDeg + ($XLatMin/60))) / 10
    Write-Host "Radians_Lat : " $XRadians_Lat
    
    # Time Length of the Day in decimal for [24 hours] :
    [string]$XTimeLengthOfDay = 24 * (
    [math]::ACOS(
    1-(
    1-[math]::TAN(
    [int]$XRadians_Lat) * [math]::TAN(
    [int]$XRadiansObliquity * [math]::COS(
    [int]$XConstant_J * [int]$XdayOfYYYY)
    )
    )
    )/[math]::PI)
    
    # NB : Comming from ! Dirk_74
    # $XTimeLengthOfDay = 12.58477
    $Xhour = [Math]::Truncate($XTimeLengthOfDay)
    $Xminute = ($XTimeLengthOfDay - $Xhour) * 60
    $Xsecond = [int](($minute - ([Math]::Truncate($Xminute))) * 60)
    $Xminute=[Math]::Truncate($Xminute)
    $Xdate=[datetime]::Parse("$hour`:$minute`:$second")
    ""
    # $Xdate.Hour
    # $Xdate.Minute
    # $Xdate.Second
    
    Write-Host "The Length of Day is :"$Xdate.ToLongTimeString()

    Versuch mal das. Für mich ist es OK (Aber Achtung, die "LatDeg's" sind für Frankreich

    Viel Gluck

    @r

    Samstag, 22. Februar 2020 13:47

Alle Antworten

  • Moin,

    https://www.sonnenverlauf.de/ hat eine API.


    Evgenij Smirnov

    http://evgenij.smirnov.de

    Mittwoch, 19. Februar 2020 09:54
  • Oder halt "brute-force" :) Wenn du nicht Google nimmst, sondern eine Seite die sich relativ simpel durchsuchen lässt, ist es recht einfach:

    $url = "http://wetterstation-berlin.de/sonnenaufgang"
    $result = Invoke-WebRequest $url
    $result.ParsedHtml.body.outerText   | Select-String -AllMatches "(?ms)heute in Berlin.*?:[0-9]{2}" | Select-Object -Expand matches | Select-Object -Expand value
     

    Grüße, denniver

     


    Blog: http://www.bytecookie.de

    Powershell Code Manager: Link
    (u.a. Codesnippets verwalten + komplexe Scripte graphisch darstellen)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.


    Mittwoch, 19. Februar 2020 16:10
    Moderator
  • Prima. Vielen Dank. Seh ich mir gleich mal an
    Donnerstag, 20. Februar 2020 07:20
  • Genial. Vielen Dank
    Donnerstag, 20. Februar 2020 07:21
  • Hallo in die Runde,

    ich bin hier vermutlich ein wenig OT aber ich kämpfe schon eine Weile mit diesem Problem...

    für ein kleines "Homeprojekt" möchte ich per Powershell die Jalousien rauf und runterfahren, sobald die Sonne auf- bzw. untergegangen ist.

    Gebe ich bei Google in der Suche "Sonnenaufgang Berlin" ein, erhalte ich die Uhrzeit der voraussichtlichen Sonnenaufgangs - allerdings nur als Preview in der Suchergebnisliste und ohne einen Link welchen man direkt benutzen könnte.

    Ich möchte jetzt nicht den gesamten HTML Code nach den richtigen Daten durchsuchen und suche nach einer kurzen und einfachen Lösung, die Sonnen Auf- bzw. Untergangszeiten per Powershell abzufragen - muss auch nicht google sein - bin für alles offen...

    Hat jemand eine Idee?

    Vielen Dank

    Liebe Grüße

    Martin

    function Convert-DegreesToRadians($angle) { $angle / 360 * (2 * [Math]::Pi) }
    # ==========================================
    
    # France  'DEG (°)'
    $XLatDeg = "47"
    $XLatMin = "39"
    
    # 254 + 10 [ start: winterDateTime is 21.12.2012 - to 20.12.2013 include ]
    # and so .... and not from 1.1. to 31.12 
    $XDayOfYYYY = [string](((get-date).dayOfYear) + 10)
    ""
    Write-Host "DayOfYYYY :" $XDayOfYYYY
    
    # Obliquity of the ecliptic 'Constant' ok
    $XObliquity = "23.439"
    Write-Host "Obliquity :" $XObliquity
    
    # 0,0172024238389585 ok
    $XConstant_J = [math]::PI / 182.625
    Write-Host "Constant_J :" $XConstant_J
    
    # 0.409087723374951 ok
    [string]$XRadiansObliquity = Convert-DegreesToRadians $XObliquity
    Write-Host "RadiansObliquity : " $XRadiansObliquity
    
    # 0.821439212451131 ok
    [string]$XRadians_Lat = (Convert-DegreesToRadians ($XLatDeg + ($XLatMin/60))) / 10
    Write-Host "Radians_Lat : " $XRadians_Lat
    
    # Time Length of the Day in decimal for [24 hours] :
    [string]$XTimeLengthOfDay = 24 * (
    [math]::ACOS(
    1-(
    1-[math]::TAN(
    [int]$XRadians_Lat) * [math]::TAN(
    [int]$XRadiansObliquity * [math]::COS(
    [int]$XConstant_J * [int]$XdayOfYYYY)
    )
    )
    )/[math]::PI)
    
    # NB : Comming from ! Dirk_74
    # $XTimeLengthOfDay = 12.58477
    $Xhour = [Math]::Truncate($XTimeLengthOfDay)
    $Xminute = ($XTimeLengthOfDay - $Xhour) * 60
    $Xsecond = [int](($minute - ([Math]::Truncate($Xminute))) * 60)
    $Xminute=[Math]::Truncate($Xminute)
    $Xdate=[datetime]::Parse("$hour`:$minute`:$second")
    ""
    # $Xdate.Hour
    # $Xdate.Minute
    # $Xdate.Second
    
    Write-Host "The Length of Day is :"$Xdate.ToLongTimeString()

    Versuch mal das. Für mich ist es OK (Aber Achtung, die "LatDeg's" sind für Frankreich

    Viel Gluck

    @r

    Samstag, 22. Februar 2020 13:47
  • Wow... das funktioniert prima und vor allem auch ohne Internet Zugang! Prima! Vielen Dank
    Montag, 24. Februar 2020 15:13