[Script] solarprognose.de (Lite version)

Hier gibt es eine „wirklich“ LITE-Version von => [Script] solarprognose.de (Full version)

Um nicht bei den Skripten durcheinander zu kommen habe ich das mal getrennt!

<?php

declare(strict_types=1);

################################################################################
# Script:   Ammount.SolarForcastLite.ips.php
# Version:  1.0.20230304
# Author:   Heiko Wilknitz (@Pitti)
#
# Script zur Abholung und Aufbereitung der prognostizierten Solorproduktion
# von solarprognose.de (Lite-Version).
#
# API
#   https://www.solarprognose.de/web/solarprediction/api/v1
#       ?access-token=ACCESS-TOKEN
#       &project=Hier Ihre Projekt-Website oder Ihre Kontakt-E-Mail
#       &item=ITEM
#       &id=ID
#       &type=hourly|daily
#       &_format=json|xml
#       &algorithm=mosmix|own-v1|clearsky
#       &day=DAY
#       &start_epoch_time=START_EPOCH_TIME&end_epoch_time=END_EPOCH_TIME
#       &start_day=START_DAY&end_day=END_DAY
#       &snomminixml=true # für snom VoIP Telefone
#
# ------------------------------ Installation ----------------------------------
#
# Dieses Skript richtet automatisch alle nötigen Objekte bei manueller
# Ausführung ein. Eine weitere manuelle Ausführung setzt alle benötigten Objekte
# wieder auf den Ausgangszustand.
#
# - Neues Skript erstellen
# - Diesen PHP-Code hineinkopieren
# - Abschnitt 'Konfiguration' den eigenen Gegebenheiten anpassen
# - Skript Abspeichern
# - Skript Ausführen
# - Visualisierung per Link auf entstandene Variablen erstellen
#
# ------------------------------ Changelog -------------------------------------
#
# 04.03.2023 - Initalversion (v1.0)
#
# ------------------------------ Konfiguration ---------------------------------
#
# Global Debug Output Flag
$DEBUG = false;
#
# Solar Prognose API Parameter
$SP_TOKEN = '<api-key>';
$SP_ITEM = 'location';
$SP_PROJECT = '<mail>';
$SP_FORMAT = 'json';
$SP_TYPE = 'daily'; // 'hourly';
$SP_ID = <id>;
$SP_START = 0;
$SP_END = 1;
#
################################################################################
#
# Requires include of the global function script via autoload (__autoload.php)
# or direct in the script (uncomment next line)!
# require_once(IPS_GetKernelDir()."scripts".DIRECTORY_SEPARATOR.'System.Functions.ips.php');
# You can download it from here https://github.com/wilkware/ips-scripts
#
defined('WWX_FUNCTIONS') || die('Global function library not available!');

// EXECUTE
if ($_IPS['SENDER'] == 'Execute') {
    $data = UpdateForecast($SP_TOKEN, $SP_PROJECT, $SP_ITEM, $SP_ID, $SP_TYPE, $SP_FORMAT, $SP_START, $SP_END);
    $vid = CreateVariableByName($_IPS['SELF'], 'Vorhersage Heute', 2, 1, '', '~Electricity');
    if (isset($data['Heute'])) { 
        SetValue($vid, $data['Heute']);
    }
    $vid = CreateVariableByName($_IPS['SELF'], 'Vorhersage Morgen', 2, 2, '', '~Electricity');
    if (isset($data['Morgen'])) { 
        SetValue($vid, $data['Morgen']);
    }
}

#----------------------------------- Functions ---------------------------------

function UpdateForecast($token, $project, $item, $id, $type, $format, $start, $end, $day = null)
{
    $url = "https://www.solarprognose.de/web/solarprediction/api/v1?access-token=$token&project=$project&item=$item&id=$id&type=$type&_format=$format&algorithm=own-v1&start_day=$start&end_day=$end";
    EchoDebug('URL', $url);
    $json = file_get_contents($url);
    EchoDebug('Daten', $json);
    $result = [];
    if ($json !== false) {
        $data = json_decode($json, true);
        foreach ($data['data'] as $key => $value) {
            if (!isset($result['Heute'])) { // Heute
                $result['Heute'] = $value;
            }
            else if (!isset($result['Morgen'])) { // Morgen
                $result['Morgen'] = $value;
            }
        }
    }
    return $result;
}

################################################################################

Ciao Heiko

Na du bist ja wirklich „Pitti der Liebe …“ :wink:

Werde ich nachher mal ausprobieren.
Welche der Funktionen aus dem extra Script brauche ich denn noch, ist das nur die „CreateVariableByName“ oder brauche ich da noch etwas?

Danke u. viele Grüße,
Doc

Bin ich wirklich :innocent:

Sollte reichen denke ich.

Gruß Heiko

Super funktioniert.

Funktion „EchoDebug“ musste auch noch mit rein.

Aktuell ist ja die Abfrage > 2 Tage noch kostenlos bei Solarprognose.
Ist das ein großer Aufwand noch 2 weitere Tage mit abzufragen?

Danke u. viele Grüße,
Doc

Kannste auch löschen!

Sollte recht easy sein - bekommste vielleicht selber hin - einfach nach Schema F wie ich es gemacht habe!

Hallo Heiko,
kannst Du bitte mal die Schritte beschreiben, um ‚WWX_FUNCTIONS‘ zu installieren. Mein Versuch z.B. über die Modulverwaltung GitHub - Wilkware/ips-scripts: IPS script library einzubinden scheiterte mit folgender Fehlermeldung:
grafik
Viele Grüße,
Oliver

Mein kleine Skript-Bibo ist KEIN Modul!

Hmm, das hatte ich eigentlich in meinem Blogartikel alles geschrieben.

Grob gesagt sind es folgende Schrritte:

  1. Ein neues (leeres) Skript mit dem Namen System.Functions.ips.php in der Konsole anlegen
  2. den Inhalt aus meinem Skript von Github reinkopieren und speichern
  3. das „neue“ Script entweder …
    3.1 in der __autoload.php einbinden
    3.2 oder via require once im solarscript reinziehen

Das war es schon.

Gruß Heiko