Du musst zb mit curl deine Sprache im Header mitgeben (das macht der Browser automatisch). Schau dir mit F12 im Browser den Request an, irgendwo steht deine Sprache. Diesen Header musst du zb mit curl mitgeben.
LoxBerry XL - EXtended Logic
Einklappen
X
-
Das hat überhaupt nichts mit den locales zu tun, und wenn du das änderst, geht wahrscheinlich LoxBerry nicht mehr.
Du musst zb mit curl deine Sprache im Header mitgeben (das macht der Browser automatisch). Schau dir mit F12 im Browser den Request an, irgendwo steht deine Sprache. Diesen Header musst du zb mit curl mitgeben.Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine -
Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraineKommentar
-
Super, Danke! hab es grad irgendwie hinbekommen:-)
PHP-Code://set URL $url = "<APIurl>"; $curl = curl_init($url); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $headers = array( "Accept-Language: de", ); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); $resp = curl_exec($curl); curl_close($curl); // JSON auslesen $json_decoded = json_decode($resp);
Kommentar
-
Danke EdiB für die Inspiration.
Wer here verwenden will statt google, hier das Script, abgewandelt auf die REST API von here (kostenlos anmelden: https://developer.here.com/ - Bestätigungsmail anklicken, sonst sind die API Keys nur 60 Minuten gültig)
PHP-Code:<?php require_once ("loxberry_XL.php"); // APIKey und Start/End Koordinaten für erste Route festlegen $APIKey = "XHuFrumm-32t4784rhweflsdfguea554a868A"; $From = "49.18375,7.16422"; // Home (Latitude,Longitude) $To= "49.33329,7.10057"; // Office (Latitude,Longitude) $maxTravelLength = 50 * 1000; //50 km $requestInfo = array( 'http' => // The wrapper to be used array( 'method' => 'GET' // Request Method ) ); $context = stream_context_create($requestInfo); //set direction api url (Home > Office) $url = "https://router.hereapi.com/v8/routes?transportMode=car&origin=$From&destination= $To&routingMode=fast&lang=de-DE&return=polyline,mlDuration,travelSummary,summary,incidents&alternatives=3&apiKey=$APIKey"; // JSON auslesen $json = file_get_contents($url, false, $context); if ($json == false) { print("Bad content: " . $json); } else { $json_decoded = json_decode($json); list($route, $re_route_detected) = get_desired_route($json_decoded, $maxTravelLength); if (!empty($route)) { $durationMinutes = round($route->sections[0]->travelSummary->baseDuration / 60); $durationRealtimeMinutes = round($route->sections[0]->travelSummary->duration / 60); $durationDifferenceMinutes = $durationRealtimeMinutes - $durationMinutes; print_r("Duration=".$durationMinutes ." Min\nRealTimeDuration=".$durationRealtimeMinutes." Min\nDelay=".$durationDifferenceMinutes." Min"); // Publish to local MQTT broker $mqtt->publish("LoxBerryXL/FahrRouten/Home-Office/durationRealtimeMinutes", $durationRealtimeMinutes); $mqtt->publish("LoxBerryXL/FahrRouten/Home-Office/durationDifferenceMinutes", $durationDifferenceMinutes); $mqtt->publish("LoxBerryXL/FahrRouten/Home-Office/reRoutingDetected", $re_route_detected); } } /** * @param $json_decoded contains the routes * @param $maxTravelLength it's the shortest route i usually drive so i know the distance to travel. If it exceeds, the preferred route is not available * @return array|null desired route and true if it is a fallback route which exceeds normal length limit due to obstacles and alternative routing */ function get_desired_route($json_decoded, $maxTravelLength): ?array { $count = 0; $fallback_route = null; $fallback_section_length = null; foreach ($json_decoded->routes as $route) { //print_r($route); $section_length = $route->sections[0]->travelSummary->length; if ($section_length <= $maxTravelLength) { return array($route, 0); } else { print_r("Section length on route #".$count." too long. length=".$section_length."\n"); //maybe the desired route has obstacles if($section_length < $fallback_section_length || $fallback_section_length == null ) { $fallback_section_length = $section_length; $fallback_route = $route; print_r("Current fallback route length=".$section_length."\n"); } } $count++; } return array($fallback_route, 1); }
Zuletzt geändert von Witte; 26.05.2021, 12:26.Kommentar
-
Witte Müsste ich ja direkt auch noch implementieren um es zu vergleichen
Mein Inspirator war Christian Fenzl mit Waze Routing!
Wenn ich es richtig interpretiere fragst du für $durationMinutes und $durationRealtimeMinutes zweimal den selben Wert ab!?
$durationMinutes = round($route->sections[0]->travelSummary->baseDuration / 60);
$durationRealtimeMinutes = round($route->sections[0]->travelSummary->baseDuration / 60);Zuletzt geändert von EdiB; 26.05.2021, 08:55.Kommentar
-
Hi @all, ich bin schon ziemlich lange hier dabei und bisher haben sich alle Fragen irgendwie durch das Forum von alleine geklärt. Jetzt habe ich habe ein Problem, wo ich nicht weiter komm.
Als Beispiel hab ich mal angelegt:
PHP-Code:<?PHP require_once "loxberry_XL.php"; $mqtt->set( "judo/test", 123 ); echo ("mqtt: ".$mqtt->get("judo/test")."\n"); echo ("keepaliveepoch: ".$mqtt->get( "loxberry/mqttgateway/keepaliveepoch")."\n"); ?>;
Code:loxberry@loxberry:~/webfrontend/html/XL/user $ /usr/bin/php test.php LoxBerry XL Version 2.2.0.2 Miniserver 1 (xxxxxxxxxxxxxxxxxxxxxxxx) accessible by $ms1 MQTT (localhost) accessible by $mqtt mqtt: keepaliveepoch: 1626270956 loxberry@loxberry:~/webfrontend/html/XL/user $
Ich bin nun nicht der Programmierprofi, aber ich sehe erstmal keinen Fehler. Bitte helft mir mal auf die Sprünge, wo ich den Bock drin habe.
Gruss DirkZuletzt geändert von Sunny; 14.07.2021, 16:55.Kommentar
-
Servus Dirk!
Das liegt am Design von MQTT: Ein Publish ist flüchtig - wenn du den Wert danach abfragst, ist er schon wieder weg.
Verwende bei set das retain-Flag. Der Wert ist dann nicht flüchtig, sondern wird am Broker gespeichert. Dann bekommst du den Wert auch wieder zurück.
lg, ChristianHilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraineKommentar
-
Hallo Christian,
danke für deine Rückmeldung, aber irgendwie will es auch so nicht:
PHP-Code:$mqtt->retain( "judo/test", 123.456 ); echo ("mqtt: ".$mqtt->get("judo/test")."\n");
PHP-Code:$mqtt->set( "judo/test", 123.456, true);
Die Zeilen sind ja auch nur der Test, eigentlich wollte ich was aus dem Miniserver über MQTT weiterreichen. Im Broker ist es auch da. Aber eben dann nicht im PHP.
Loxberry und das MQTT-Plugin sind auf dem neuesten Stand.
Gruß DirkKommentar
-
Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraineKommentar
-
Ich hab seit einigen Monaten über den XL die Corona Zahlen unseres sowie des Nachbarkreises eingebunden.
Das ganze sieht so aus:
Code:#!/usr/bin/env php <?php require_once "loxberry_XL.php"; $mqtt->publish( "Corona-WW", file_get_contents( "https://api.corona-zahlen.org/districts/07143" ) ); $mqtt->publish( "Corona-LM", file_get_contents( "https://api.corona-zahlen.org/districts/06533" ) );
Hat jemand einen Tipp woran das liegen kann?
Grüße!Kommentar
-
Wenn du das Script so ausführst wie im Srcreenshot (php /opt/..... ), bleibt es dann evt. am Schluss stehen ohne Prompt-Rückgabe?Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraineKommentar
-
Hm, sieht soweit gut aus würde ich sagen, sowohl als root wie auch als loxberry:
Code:loxberry@loxberry:/root $ php /opt/loxberry/system/cron/cron.10min/corona cron=10min LoxBerry XL Version 2.2.1.2 Miniserver 1 (Smarthome-1) accessible by $ms1 Miniserver 2 (Smarthome-2) accessible by $ms2 Miniserver 3 (Smarthome-3) accessible by $ms3 MQTT (localhost) accessible by $mqtt loxberry@loxberry:/root $
Kommentar
-
Kannst du mal das hier als loxberry mehrfach ausführen:
Code:cd / && for f in /opt/loxberry/system/cron/cron.10min/*; do ($f cron=10min > /dev/null 2>&1 &); done
Das ist, was wir alle 10 Minuten von Cron ausführen lassen.
https://github.com/mschlenstedt/Loxb...lbdefaults#L10Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraineKommentar
-
sieht soweit auch gut aus, würde ich sagen:
Code:loxberry@loxberry:/ $ cd / && for f in /opt/loxberry/system/cron/cron.10min/*; do ($f cron=10min > /dev/null 2>&1 &); done loxberry@loxberry:/ $ cd / && for f in /opt/loxberry/system/cron/cron.10min/*; do ($f cron=10min > /dev/null 2>&1 &); done loxberry@loxberry:/ $ cd / && for f in /opt/loxberry/system/cron/cron.10min/*; do ($f cron=10min > /dev/null 2>&1 &); done loxberry@loxberry:/ $ cd / && for f in /opt/loxberry/system/cron/cron.10min/*; do ($f cron=10min > /dev/null 2>&1 &); done loxberry@loxberry:/ $ cd / && for f in /opt/loxberry/system/cron/cron.10min/*; do ($f cron=10min > /dev/null 2>&1 &); done loxberry@loxberry:/ $ cd / && for f in /opt/loxberry/system/cron/cron.10min/*; do ($f cron=10min > /dev/null 2>&1 &); done loxberry@loxberry:/ $ cd / && for f in /opt/loxberry/system/cron/cron.10min/*; do ($f cron=10min > /dev/null 2>&1 &); done loxberry@loxberry:/ $ cd / && for f in /opt/loxberry/system/cron/cron.10min/*; do ($f cron=10min > /dev/null 2>&1 &); done loxberry@loxberry:/ $ cd / && for f in /opt/loxberry/system/cron/cron.10min/*; do ($f cron=10min > /dev/null 2>&1 &); done loxberry@loxberry:/ $ cd / && for f in /opt/loxberry/system/cron/cron.10min/*; do ($f cron=10min > /dev/null 2>&1 &); done
Code:oxberry@loxberry:/ $ cd / && for f in /opt/loxberry/system/cron/cron.10min/*; do ($f cron=10min &); done loxberry@loxberry:/ $ LoxBerry XL Version 2.2.1.2 Miniserver 1 ( accessible by $ms1 Miniserver 2 () accessible by $ms2 Miniserver 3 () accessible by $ms3 MQTT (localhost) accessible by $mqtt loxberry@loxberry:/ $ cd / && for f in /opt/loxberry/system/cron/cron.10min/*; do ($f cron=10min); done LoxBerry XL Version 2.2.1.2 Miniserver 1 () accessible by $ms1 Miniserver 2 () accessible by $ms2 Miniserver 3 () accessible by $ms3 MQTT (localhost) accessible by $mqtt PHP Warning: file_get_contents(https://api.corona-zahlen.org/districts/07143): failed to open stream: HTTP request failed! HTTP/1.1 502 Bad Gateway in /opt/loxberry/webfrontend/html/XL/user/corona.php on line 4 Warning: file_get_contents(https://api.corona-zahlen.org/districts/07143): failed to open stream: HTTP request failed! HTTP/1.1 502 Bad Gateway in /opt/loxberry/webfrontend/html/XL/user/corona.php on line 4 PHP Warning: file_get_contents(https://api.corona-zahlen.org/districts/06533): failed to open stream: HTTP request failed! HTTP/1.1 502 Bad Gateway in /opt/loxberry/webfrontend/html/XL/user/corona.php on line 5 Warning: file_get_contents(https://api.corona-zahlen.org/districts/06533): failed to open stream: HTTP request failed! HTTP/1.1 502 Bad Gateway in /opt/loxberry/webfrontend/html/XL/user/corona.php on line 5 loxberry@loxberry:/ $ cd / && for f in /opt/loxberry/system/cron/cron.10min/*; do ($f cron=10min); done LoxBerry XL Version 2.2.1.2 Miniserver 1 () accessible by $ms1 Miniserver 2 () accessible by $ms2 Miniserver 3 ( accessible by $ms3 MQTT (localhost) accessible by $mqtt /1.1 502 Bad Gateway in /opt/loxberry/webfrontend/html/XL/user/corona.php on line 4
Hab das ganze jetzt mal auf stündlich gestellt, vielleicht bringt das ja schon was.Kommentar
Kommentar