Konfiguration für Cisco 9951 9971 an FritzBox inkl. HD Telefonie G722 und Services

Also...

In die "weather.config.inc.php" könnte für den APPID Key eine zusätzliche Variable definiert werden.
...vielleicht so...
PHP:
<?php
/*
 * @author Christian Bartsch <cb AT dreinulldrei DOT de>, bt43a
 * @copyright (c) Christian Bartsch, bt43a
 * @license GPL v2
 * @date 2013-12-06
 */
    $weather_city = 'Berlin';
    $weather_id = ; // can be omitted, unless there are several matches for your city by name
    $weather_appid = 'APPID REQUIERED'; // since 2015-10-10 APPID is nessasary
    $lang = 'de';
    $units = 'metric';
    $gmt_offset = 1; // adjust for your timezone
    $target = '7945'; // currently supports 7941, 7945 and 99xx (standard), affects graphics resolution
    $weather_refresh = 180; // refresh weather display after xx seconds
 
    $wallpaper_path = 'weather/wallpaper/';
    $wallpaper_file = 'XXXbyYYY_whatever.png'; // should match 498x289 for 99x, 289x168 or 298x156 for 79xx phones
?>
...und diese Variable gehört dann zusätzlich zu jeden Vorkommen des API Aufrufs in der "weather.php".
(&APPID=".$weather_appid)
Und das sind mehrere, deswegen erspar ich euch den Code an dieser Stelle.

EDIT: Anscheinend steht der eigentliche API Aufruf als Funktion getWeather() in der "require('lib/cmfcmf/OpenWeatherMap.php');".

Dann muss der Funktionsaufruf und diese Datei natürlich auch angepasst werden.
Beispiel für den Funktionsaufruf dann: getWeather($location_id, $units, $lang, $weather_appid);
 
Zuletzt bearbeitet:
Für die Variablendeklaration schaut das mal soweit gut aus.
Kannst du mal den original weather.php file modifizieren und den kompletten file mit den Änderungen hier hochladen? :) Wäre super dann könnte ich es mal testen?
 
Ok, ich mach mal eine Version für dich, zum Testen.
...aber das dauert etwas, ist ja WE. ;)
 
Soll ich dir evtl mal den fertigen Verzeichniss Tree zippen für den Webserver?
also im Endeffekt das funktionsfähige das du es mal gleich ausprobieren kannst? schick mir mal dein email andresse im PM ;-) wenn es das Wochenende dauert kein problem.
 
Moins

Kurzer Zwischenstand zu fritzco

In den meisten Fällen dürfte das hardcodieren der APPID in der OpenWeatherMap API ausreichen.
Denn nur wenn das IP-Telefon eine APPID mitsendet/n soll, ist das Ändern der fritzco PHPs nötig.
Und die umfangreichereren Änderrungen der fritzco PHPs, die dann aber eine Default APPID aus der Konfigurationsdatei benutzt, halte ich nicht für sooo sinnvoll.

Die Funktion getWeather() in "lib/cmfcmf/OpenWeatherMap.php" ändern von...
Code:
public function getWeather($query, $units = 'imperial', $lang = 'en', $appid = '')
...auf...
Code:
public function getWeather($query, $units = 'imperial', $lang = 'en', $appid = '[COLOR=#ff0000]HIER DIE APPPID REINSCHREIBEN[/COLOR]')
...und die Funktion getWeatherForecast() ändern von...
Code:
public function getWeatherForecast($query, $units = 'imperial', $lang = 'en', $appid = '')
...auf...
Code:
public function getWeatherForecast($query, $units = 'imperial', $lang = 'en', $appid = '[COLOR=#ff0000]HIER DIE APPPID REINSCHREIBEN[/COLOR]')
Dann sollte die APPID schon benutzt werden, ohne die fritzco Skripte umschreiben/korrigieren zu müssen.
...oder das CISCO IP-Telefon selber.

Fritzco benutzt diese Funktionen...
weather.php
Code:
if ($position == 0) {
    try {
        $weather = $owm->[COLOR=#ff0000]getWeather[/COLOR]($location_id, $units, $lang);
    } catch (Exception $e) {
        $error_abort = $e->getMessage();
    }
} else{
    try {
        $forecast = $owm->[COLOR=#ff0000]getWeatherForecast[/COLOR]($location_id, $units, $lang, '', 3);
        $forecast_size = count($forecast);
        $i = 0;
        foreach($forecast as $weather) {
            if ($i == $position) {
                break;
            }
            $i++;
        }
        unset($value);
    } catch (Exception $e) {
        $error_abort = $e->getMessage();
    }
    
}
 
Zuletzt bearbeitet:
Danke @koyaanisqatsi, der erste Screen funktioniert nach der Aenderung, aber zumindest bei mir bekomme ich nun beim Druck auf Vorhersage Error: $query has the wrong format. See the documentation of OpenWeatherMap::getRawData() to read about valid formats.

Wenn ich auf Aktualisieren druecke bekomme ich eine HTTP 404. Konfiguration wurde nicht veraendert.

Kann das evtl. noch wer testen?
 
Moins

Den Aufruf der Vorhersage in weather.php mal ändern, von...
Code:
$forecast = $owm->getWeatherForecast($location_id, $units, $lang, '', 3);
...auf...
Code:
$forecast = $owm->getWeatherForecast($location_id, $units, $lang, '[COLOR=#ff0000]HIER DIE APPPID REINSCHREIBEN[/COLOR]', 3);
...oder eventuell auslassen/nicht angeben...
Code:
$forecast = $owm->getWeatherForecast($location_id, $units, $lang,, 3);
...weil die APPID wohl als Parameter hinter $lang erwartet wird.
 
$forecast = $owm->getWeatherForecast($location_id, $units, $lang, 'HIER DIE APPPID REINSCHREIBEN', 3);

loest das Problem mit dem Forecast - Vielen Dank!

allerdings bleibt der HTTP 404 beim Druecken auf Aktualisieren.
 
Ja, verdammt.

Das gehört dann zu den umfangreicheren Änderungen, die ich eigentlich vermeiden wollte. :D

Probier mal diese weather.php...
PHP:
<?php
/*
 * @author Christian Bartsch <cb AT dreinulldrei DOT de>, bt43a
 * @copyright (c) Christian Bartsch, bt43a
 * @license GPL v2
 * @date 2013-12-18
 *
 * Installation:
 * 
 * 1. Copy all files from "fritzco" into a folder on your server 
 * 2. Creater weather subfolder, then create folders: font, wallpaper and icons.
 * 2. Extract OpenWeatherMap API to /lib folder (=place cmfcmf folder in /lib folder)
 * 3. Copy true type fonts arial.ttf and arialbd.ttf (Windows/Fonts) to weather/font
 * 4. Change line 56 in /lib/cmfcmf/OpenWeatherMap/Util/Unit.php to:
        $this->value = round((float)$value, 1);
 * 5. Edit config file in /weather
 */
 
require('lib/cmfcmf/OpenWeatherMap.php');
require_once 'weather.config.inc.php';
require_once 'weather.locale.german.inc.php';
require_once __DIR__ . '/lib/cipxml/cipxml.php';

use cmfcmf\OpenWeatherMap;
use cmfcmf\OpenWeatherMap\Exception as OWMException;
use cipxml\CiscoIPPhoneImageFile;
use cipxml\SoftKeyItem;

if (isset($_GET["loc"])) {
    $location = $_GET["loc"];
    $location_id = $location;
}else{
    $location = $weather_city;
    $location_id = $weather_id;
}
if (isset($_GET["id"])) {
    $location_id = $_GET["id"];
}
if (isset($_GET["lang"])) {
    $lang = $_GET["lang"];
}
if (isset($_GET["units"])) {
    $units = $_GET["units"];
}
if (isset($_GET["pos"])) {
    $position = intval($_GET["pos"]);
} else {
    $position = 0;
}
if (isset($_GET["target"])) {
    $target = $_GET["target"];
}
if (isset($_GET["appid"])) {
    $appid = $_GET["appid"];
    $appid = $appid;
}else{
    $appid = $weather_appid;
    $appid = $appid;
}

switch ($target) {
    case '7941' :
        $display_x = 298;
        $display_y = 144;
        $display_scale = 0.55;
        $symbol_scale = 1;
        $display_offset_x = -15;
        $display_offset_y = -13;
        $display_font = 'weather/font/arial.ttf';
        $display_color = false;
        break;
    case '7945' :
        $display_x = 298;
        $display_y = 156;
        $display_scale = 0.59;
        $symbol_scale = 1;
        $display_offset_x = -15;
        $display_offset_y = -15;
        $display_font = 'weather/font/arialbd.ttf';
        $display_color = true;
        break;
    case '7971' :
        $display_x = 298;
        $display_y = 168;
        $display_scale = 0.59;
        $symbol_scale = 1;
        $display_offset_x = -15;
        $display_offset_y = -5;
        $display_font = 'weather/font/arialbd.ttf';
        $display_color = true;
        break;
    default : // 9971
        $display_x = 498;
        $display_y = 289;
        $display_scale = 1;
        $symbol_scale = 2;
        $display_offset_x = -5;
        $display_offset_y = -10;
        $display_font = 'weather/font/arial.ttf';
        $display_color = true;
}

$display_background = $wallpaper_path . $display_x . 'x' .$display_y . '_' . $wallpaper_file;


$owm = new OpenWeatherMap();
//Werte auslesen
if ($position == 0) {
    try {
        $weather = $owm->getWeather($location_id, $units, $lang, $appid);
    } catch (Exception $e) {
        $error_abort = $e->getMessage();
    }
} else{
    try {
        $forecast = $owm->getWeatherForecast($location_id, $units, $lang, $appid, 3);
        $forecast_size = count($forecast);
        $i = 0;
        foreach($forecast as $weather) {
            if ($i == $position) {
                break;
            }
            $i++;
        }
        unset($value);
    } catch (Exception $e) {
        $error_abort = $e->getMessage();
    }
    
}

if (isset($_GET["png"])) {
    // start PNG output
        
    header('Content-Type: image/png');
    
    $img=imagecreatetruecolor($display_x,$display_y);
    
    if ($display_color) {
        //Farbe für Schrift & Rahmen festlegen
        $white = imagecolorallocate($img, 255, 255, 255);
        $grey1 = imagecolorallocate($img, 220, 220, 220);
        $grey2 = imagecolorallocate($img, 150, 150, 150);
        $black = imagecolorallocate($img, 50, 50, 50);
        $img_tmp = imagecreatefrompng($display_background);
        imagecopyresampled($img,$img_tmp,0,0,0,0, $display_x,$display_y,$display_x,$display_y);
        imagedestroy($img_tmp);
    } else {
        //Farbe für Schrift & Rahmen festlegen
        $white = imagecolorallocate($img, 0, 0, 0);
        $grey1 = imagecolorallocate($img, 35, 35, 35);
        $grey2 = imagecolorallocate($img, 150, 150, 150);
        $black = imagecolorallocate($img, 255, 255, 255);
        imagefill ($img, 0, 0, $black);
    }
    
    if (!isset($error_abort)) {
    
        $symbol = imagecreatefrompng("http://openweathermap.org/img/w/". $weather->weather->icon .".png"); //Symbol aus Internet verwenden
        // $symbol = imagecreatefrompng("weather/icons/".$weather->weather->icon . ".png"); //eigene Symbole verwenden
    
        $symbol_x = (imagesx($symbol) * $symbol_scale);
        $symbol_y = (imagesy($symbol) * $symbol_scale);
        //Wetter Symbol einfügen
        if (!$display_color) {
            imagefilter($symbol, IMG_FILTER_NEGATE);
            imagefilter($symbol, IMG_FILTER_GRAYSCALE);
        }
        imagecopyresampled($img, $symbol, (335 * $display_scale + $display_offset_x), (35 * $display_scale + $display_offset_y), 0, 0, $symbol_x, $symbol_y, imagesx($symbol), imagesy($symbol));
        //Werte in background schreiben
        ImageTTFText ($img, (33 * $display_scale + 1), 0, (50 * $display_scale + $display_offset_x +1), (85 * $display_scale + $display_offset_y +1), $black, $display_font, $weather->temperature->now);
        ImageTTFText ($img, (33 * $display_scale + 1), 0, (50 * $display_scale + $display_offset_x), (85 * $display_scale + $display_offset_y), $white, $display_font, $weather->temperature->now);
        
        ImageTTFText ($img, (13 * $display_scale + 1), 0, (50 * $display_scale + $display_offset_x +1), (110 * $display_scale + $display_offset_y +1), $black, $display_font, WEATHER_TEMP_MIN . ' ' . $weather->temperature->min . ' / ' . WEATHER_TEMP_MAX . ' ' . $weather->temperature->max);
        ImageTTFText ($img, (13 * $display_scale + 1), 0, (50 * $display_scale + $display_offset_x), (110 * $display_scale + $display_offset_y), $white, $display_font, WEATHER_TEMP_MIN . ' ' . $weather->temperature->min . ' / ' . WEATHER_TEMP_MAX . ' ' . $weather->temperature->max);
        
        ImageTTFText ($img, (13 * $display_scale + 1), 0, (50 * $display_scale + $display_offset_x +1), (155 * $display_scale + $display_offset_y+1), $black, $display_font, WEATHER_COLUMN_PRESSURE . ' ' . $weather->pressure);
        ImageTTFText ($img, (13 * $display_scale + 1), 0, (50 * $display_scale + $display_offset_x), (155 * $display_scale + $display_offset_y), $white, $display_font, WEATHER_COLUMN_PRESSURE . ' ' . $weather->pressure);
        
        ImageTTFText ($img, (13 * $display_scale + 1), 0, (50 * $display_scale + $display_offset_x +1), (180 * $display_scale + $display_offset_y +1), $black, $display_font, WEATHER_COLUMN_HUMIDITY . ' ' . $weather->humidity);
        ImageTTFText ($img, (13 * $display_scale + 1), 0, (50 * $display_scale + $display_offset_x), (180 * $display_scale + $display_offset_y), $white, $display_font, WEATHER_COLUMN_HUMIDITY . ' ' . $weather->humidity);
        
        ImageTTFText ($img, (13 * $display_scale + 1), 0, (50 * $display_scale + $display_offset_x +1), (205 * $display_scale + $display_offset_y +1), $black, $display_font, WEATHER_COLUMN_WIND . ' ' . $weather->wind->speed ." @ ". $weather->wind->direction);
        ImageTTFText ($img, (13 * $display_scale + 1), 0, (50 * $display_scale + $display_offset_x), (205 * $display_scale + $display_offset_y), $white, $display_font, WEATHER_COLUMN_WIND . ' ' . $weather->wind->speed ." @ ". $weather->wind->direction);
        
        //richtige Position für die weatherdescription berechnen
        $xpos_tmp = imageftbbox((13 * $display_scale + 1), 0, $display_font, $weather->weather->description, array("linespacing" => 1));
        $xpos_tmp = round (($display_x - $xpos_tmp[4])-15);
        if ($xpos_tmp > (330 * $display_scale + $display_offset_x)) {
            $xpos_tmp = 330 * $display_scale + $display_offset_x;
        }
        ImageTTFText ($img, (13 * $display_scale + 1), 0, ($xpos_tmp +1), (140 * $display_scale + $display_offset_y +1), $black, $display_font, $weather->weather->description);
        ImageTTFText ($img, (13 * $display_scale + 1), 0, $xpos_tmp, (140 * $display_scale + $display_offset_y), $white, $display_font, $weather->weather->description);
        if ($position == 0) {
            ImageTTFText ($img, (13 * $display_scale + 1), 0, (50 * $display_scale + $display_offset_x +1), (255 * $display_scale + $display_offset_y +1), $black, $display_font, WEATHER_COLUMN_SUNRISE . ' ' . ($weather->sun->rise->format('H')+ $gmt_offset) . ":". $weather->sun->rise->format('i') . '      ' . WEATHER_COLUMN_SUNSET . ' '. ($weather->sun->set->format('H')+ $gmt_offset) .":" . $weather->sun->set->format('i'));        
            ImageTTFText ($img, (13 * $display_scale + 1), 0, (50 * $display_scale + $display_offset_x), (255 * $display_scale + $display_offset_y), $white, $display_font, WEATHER_COLUMN_SUNRISE . ' ' . ($weather->sun->rise->format('H')+ $gmt_offset) . ":". $weather->sun->rise->format('i') . '      ' . WEATHER_COLUMN_SUNSET . ' '. ($weather->sun->set->format('H')+ $gmt_offset) .":" . $weather->sun->set->format('i'));
        } else{
            ImageTTFText ($img, (13 * $display_scale + 1), 0, (50 * $display_scale + $display_offset_x +1), (255 * $display_scale + $display_offset_y +1), $black, $display_font, WEATHER_COLUMN_FORECAST_FROM . ' ' . $weather->time->from->format('H:i') . ' ' . WEATHER_COLUMN_FORECAST_TO . ' ' .  $weather->time->to->format('H:i') . ' ' . WEATHER_SYMBOL_TIME);
            ImageTTFText ($img, (13 * $display_scale + 1), 0, (50 * $display_scale + $display_offset_x), (255 * $display_scale + $display_offset_y), $white, $display_font, WEATHER_COLUMN_FORECAST_FROM . ' ' . $weather->time->from->format('H:i') . ' ' . WEATHER_COLUMN_FORECAST_TO . ' ' .  $weather->time->to->format('H:i') . ' ' . WEATHER_SYMBOL_TIME);
        }
        
        $xpos_tmp = imageftbbox((8 * $display_scale + 1), 0, $display_font, date("H:i:s"), array("linespacing" => 1));
        $xpos_tmp = round (($display_x - $xpos_tmp[4])-5);        
        ImageTTFText ($img, (8 * $display_scale + 1), 0, $xpos_tmp, (280 * $display_scale + $display_offset_y), $white, $display_font, date("H:i:s"));
    
    } else {
        ImageTTFText ($img, (13 * $display_scale + 1), 0, (50 * $display_scale + $display_offset_x +1), (50 * $display_scale + $display_offset_y +1), $black, $display_font, wordwrap($error_abort, 35, "\n", true));
        ImageTTFText ($img, (13 * $display_scale + 1), 0, (50 * $display_scale + $display_offset_x), (50 * $display_scale + $display_offset_y), $white, $display_font, wordwrap($error_abort, 35, "\n", true));
    
    }
    
    imagerectangle($img, 0, 0, $display_x-2, $display_y-2, $grey1);
    imagerectangle($img, 1, 1, $display_x-1, $display_y-1, $grey2);
    
    if (!$display_color) {
        imagetruecolortopalette($img, true, 4);
    }
    imagepng($img);
    imagedestroy($img);    

} else {

    // show XML output
    
    if (!isset($error_abort)) {
    
        if ($position == 0) {
        $menu = new CiscoIpPhoneImageFile(WEATHER_TITLE, $location . ' ' . WEATHER_TEXT_NOW, "http://". $_SERVER["SERVER_NAME"] .  $_SERVER["PHP_SELF"] . "?png&loc=" . $location ."&id=" . $location_id . "&lang=" . $lang . "&appid=" . $appid . "&units=" . $units . "&target=" . $targetv . "&pos=" . $position );
        $menu->addSoftKeyItem(new SoftKeyItem(WEATHER_BUTTON_REFRESH, 1, 'SoftKey:Update'));
        } else {
        $menu = new CiscoIpPhoneImageFile(WEATHER_TITLE, $location . ' ' . WEATHER_TEXT_AT . ' ' . $weather->time->day->format('d.m.Y'), "http://". $_SERVER["SERVER_NAME"] .  $_SERVER["PHP_SELF"] . "?png&loc=" . $location . "&id=" . $location_id . "&lang=" . $lang . "&appid=" . $appid . "&units=" . $units . "&target=" . $target . "&pos=" . $position);
        $menu->addSoftKeyItem(new SoftKeyItem(WEATHER_BUTTON_BACK, 1, "http://". $_SERVER["SERVER_NAME"] .  $_SERVER["PHP_SELF"] . "?loc=" . $location . "&id=" . $location_id . "&lang=" . $lang . "&appid=" . $appid . "&units=" . $units . "&target=" . $target . "&pos=" . ($position-1)));
        }
    
        if ($position < 41) {
            if ($position == 0) {
                $button_temp = WEATHER_COLUMN_FORECAST;
            } else {
                $button_temp = WEATHER_BUTTON_NEXT;
            }
            $menu->addSoftKeyItem(new SoftKeyItem($button_temp, 2, "http://". $_SERVER["SERVER_NAME"] .  $_SERVER["PHP_SELF"] . "?loc=" . $location . "&id=" . $location_id . "&lang=" . $lang . "&appid=" . $appid . "&units=" . $units . "&target=" . $target . "&pos=" . ($position+1)));
        }
    
    } else {
    
        $menu = new CiscoIpPhoneImageFile(WEATHER_TITLE, 'ERROR' , "http://". $_SERVER["SERVER_NAME"] .  $_SERVER["PHP_SELF"] . "?png&loc=" . $location ."&id=" . $location_id . "&lang=" . $lang . "&appid=" . $appid . "&units=" . $units . "&target=" . $target . "&pos=" . $position);
          
    }
    
    $menu->addSoftKeyItem(new SoftKeyItem(WEATHER_BUTTON_EXIT, 3, 'Init:Services'));

    header("Content-type: text/xml");
    header("Refresh: $weather_refresh;");
    echo $menu;

}

?>

Die benutzt die Anfangs beschriebene Standard APPID aus: weather.config.inc.php
($weather_appid)
...auch darf hier jedes CISCO seine eigene APPID mitgeben: weather.php?appid=HIER_DIE_APPPID_REINSCHREIBEN
 
Zuletzt bearbeitet:
Hallo Koyaanisqastsi,

gute Arbeit! Geht wichtig für alle die es Benutzen ein Nachtrag zu der Variablendeklartion in der weather.config.php.inc
Ihr müsst die APPUD Variable als letzten Block unten deklarieren sonst bekommt ihr die Meldung: "City not found".

Habe alle 2 Varianten getestet:

V1. Hardcodet eintragen der Appid in /web/lib/Cmfcmf/OpenWeatherMap.php <-- GEHT Super aber ändern sich die libs muss hier immer wieder die Appid angepasst werden :)

V2. Update der Files: weather.config.inc.php mit der Variable am Ende: weather.php?appid=HIER_DIE_APPPID_REINSCHREIBEN
weather.php mit dem Code Update von Koyaanisqasti <-- GEHT!!!
 
Frage wegen der Anzeige der Daten in Celius:

habe in der der weather.php die Zeile 162 aktiviert so das er sich alle Icons und Symbole aus dem Internet lädt.

in der weather.config.inc.php habe ich mal 2 Werte getest:
metric = Celsius
imperial = Fahrenheit

Die Anzeige mit Fahreneit also "imperial" geht perfekt.

Bei Celsius also mit der Variable "metric" werden folgende Anzeigen gebracht:

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

12.5 &dec;C
min: 12 &deg;C /max: 13 &deg;C

Druck: 1021 hPa
Luftfreuchte: 71%
Wind: 2.6 m/s @ 160SSE
Sonnenaufgang: 6:48 Sonnenuntergang: 16:52


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

Was hat es mit dem &deg;C auf sich?
 
So, Update im Repository für API KEY
 
@mr.vince: Dankeschön

@raindancer2204: &deg; ist ein Entity, welches vom (Web)browser in das richtige Zeichen (z.B. 60°C) umgewandelt dargestellt wird.

Vielleicht hilft, ganz Unten in der weather.php...
PHP:
header("Content-type: text/xml");
...in...
PHP:
header('Content-type: text/xml; Charset="UTF-8"');
...zu Ändern?

Wenn nicht, dann kann der CISCO XML Browser nicht damit umgehen.

Obwohl :gruebel:
Es wird ja als PNG ausgeliefert?!
...dann müsste es (der Text) vor der Bilderzeugung richtig dekodiert werden.
Da fällt mir auf Anhieb nicht der richtige PHP Code aus der Tasche. :D
 
Zuletzt bearbeitet:
Heist das dann im kehrtschluss das wir wieder was am script anpassen müsssen? da in der interne webbrowser des cisco das Celsis Zeichnen nicht darstellen kann?
Wie geschrieben ich lade die Icons aus dem Internet. Hat jemand eigene Icons unter /weather/icons im Einsatz? :)
 
So habe es mal mit dem Code getestet bringt immer noch den gleichen Output :(. Steht immer noch &deg,C da.
Setzt noch jemand das weather.php ein?

@koyaanisqatsi kannst du den Fehler nachstellen? Auf deinem Telefon daheim?

Würde ja schon reichen wenn da anstatt &deg; --> Celsius stehen würde :)
 
Bei mir ist's alles korrekt...

Ich kann natürlich vor der Ausgabe einfach ein "&sonderZ;" durch was auch immer ersetzen, nur kommt es ja hier richtig an...

Ist die aktuellste Cmfcmf unter "lib" installiert?
 
Kurze Frage noch welche war die letzten Firmware für das CP-9971 wo das NTP noch funktioniert?
 
  • Like
Reaktionen: Retz
Also habe mir die aktuelle Zip von https://github.com/cmfcmf/OpenWeatherMap-PHP-Api geladen. Leider immer noch kein Erfolg.
Der Zip von Github sollte doch immer die aktuellste Version wiederspiegeln oder?

Welche Änderung würdest wo in den Skripten vornehmen das das ° z.B. Celsius anzeigt :)

Ich würde in der Funktion, die in die Grafik die Temperaturen schreibt, den String parsen und "&deg;" durch "o" (<- eben das Grad-Symbol) ersetzen...
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
246,183
Beiträge
2,247,562
Mitglieder
373,729
Neuestes Mitglied
ChTh
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.