Hauptmenü

Werkzeuge

Kategorien

Archiv

Einhell

PhP GiroCode Version 1.1

Erstellt in Allgemein am 7. Juni 2015 vom Daschmi

Mit Version 1.1 wurde ein kleiner Fehler bei der Speicherung des GiroCodes als Bildgrafik korrigiert. Folgendes Beispiel verdeutlicht die Speicherung als Grafik:

require_once 'phpgirocode-1.1/phpqrcode/qrlib.php';

require_once 'phpgirocode-1.1/phpgirocode.class.php';

$phpGiroCode = new PhpGirocode();

$phpGiroCode->setBIC("HELADEF1WEM");
$phpGiroCode->setIBAN("DE68820510001163220970");
$phpGiroCode->setAmount(100.14);
$phpGiroCode->setText("Beschreibung");
$phpGiroCode->setReciver("Max Mustermann");

// Pfad und Dateiname
$out_file = dirname(__FILE__).'/out.png';

// GiroCode als Datei speichern
$phpGiroCode->generate(PhpGirocode::OUTPUT_FILE, $out_file);

Sollte es Probleme bei der Generierung der GiroCodes geben, so kann man jetzt den Pfad für temporäre Dateien anpassen:

$phpGiroCode->setTmpPath('/tmp');

Standardmäßig wird der Pfad mittels sys_get_temp_dir ermittelt.

Mehr über PhPGiroCode erhalten Sie hier.

Ebenen (THREE.PlaneGeometry) nur von einer Seite sichtbar

Erstellt in Allgemein am 17. April 2015 vom Daschmi

Wer bei Threejs das Problem hat, dass seine Ebenen nur von einer Seite sichtbar sind sollte beim Material den Parameter side beachten.

Beispiel:

...
material = new THREE.MeshLambertMaterial( { color: color, side: THREE.DoubleSide } );

this.objects[oi] = new THREE.Mesh(
new THREE.PlaneGeometry(
this.planes[i][0],
this.planes[i][1]
),
material
);
...

PhpGiroCode

Erstellt in PHP am 1. März 2015 vom Daschmi

GiroCode für QR – Code Überweisung generieren

Mit Hilfe dieser Bibliothek ist es möglich QR Codes zu generieren, die das überweisen z.B. mit der Sparkassen App erleichtert. Die Funktion generiert dabei aus IBAN/BIC oder Kontonummer/BLZ einen QR-Code der für Überweisungen innerhalb Deutschlands genutzt werden kann.

Funktionen:

  • Generierung eines QR-Codes (GiroCode) für Überweisungen innerhalb Deutschlands
  • Ermittlung von IBAN/BIC aus Kontonummer und BLZ (BLZ Stand Januar 2015)
  • Validierung von IBAN mittels Prüfziffer
  • Rückgabe von Bankdaten aus BLZ oder BIC
  • Rückgabe an Browser oder Speicherung in Datei

Beispiel:


IBAN
BIC
Empfänger
Betrag
Betreff
QR - GiroCode



PhpGiroCode PHP Klassenbibliothek

Stückpreis: 10,00 EUR

Javascript Asynchron laden

Erstellt in Allgemein am 19. Februar 2015 vom Daschmi

Funktion um Javascript Dateien asynchron nachzuladen:

function loadJs(jsURL)
{

  var scriptTag = document.createElement(’script‘);
  scriptTag.src = jsURL;
  scriptTag.type = ‚text/javascript‘;
  scriptTag.async = true;
  var headTag = document.getElementsByTagName(‚head‘)[0];
  headTag.appendChild(scriptTag);

}

WordPress Option Cache leeren

Erstellt in Wordpress am 17. Februar 2015 vom Daschmi

Manchmal kann es nötig sein, den Cache zu löschen der die WordPress Optionen zwischenspeichert. Dazu kann folgende Funktion aufgerufen werden:

wp_cache_flush();

Der nächste Aufruf von get_option liefert dann den aktuellen Wert aus der Datenbank.

Media Dateien aus Seite mit Extbase auslesen

Erstellt in Extension Entwicklung, TYPO3 am 15. Februar 2015 vom Daschmi

Um die Elemente die unter „Media“ bei den Seiteneigenschaften gespeichert sind auszulesen kann folgende Methode in einem Repository verwendet werden:

public function getMediaFromPid($pid)
{

  $query = $this->createQuery();
  $query->getQuerySettings()->setReturnRawQueryResult(true);
  $query->statement("
    SELECT
      *
    FROM
      `sys_file_reference` AS REF, `sys_file` AS FILE
    WHERE
      REF.`tablenames` = ‚pages‘ AND
      REF.`fieldname` = ‚media‘ AND
      REF.pid = ? AND
      FILE.`uid` = REF.`uid_local`", array($pid));

  return $query->execute();

}

oder besser:

$fileRepository = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(‚TYPO3\\CMS\\Core\\Resource\\FileRepository‘);
$fileObjects = $fileRepository->findByRelation(‚pages‘, ‚media‘, $p[‚uid‘]);

Google Maps ohne Points of Interest (Keine Google Places)

Erstellt in Allgemein am 1. Februar 2015 vom Daschmi

Um mit der Google Maps API V3 eine Karte darzustellen, die keine Google Places Adressen oder Points of Interest anzeigt kann folgender Code verwendet werden:

var styles = [ { featureType: "poi", stylers: [ { visibility: "off" } ] } ];
var noPOIMapStyle = new google.maps.StyledMapType(styles, { name: "noPOIMapStyle" } );

var mapOptions = {
  zoom: 16,
  scrollwheel: false,
  center: new google.maps.LatLng(50.36510, 8.74674)
};

var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);

map.mapTypes.set('noPOIMapStyle', noPOIMapStyle);
map.setMapTypeId('noPOIMapStyle');

WebView Event wenn Content geladen

Erstellt in Android SDK am 1. Februar 2015 vom Daschmi

Möchte man eine Aktion auslösen, nachdem Inhalt in einen Webview geladen wurde so kann muss man die Webview Klasse überschreiben:

public class MyWebView extends WebView {
  public eplanetWebView(Context context) {
    super(context);
  }

  @Override
  public void invalidate() {
    super.invalidate();
    if (getContentHeight() > 0) {
      // Aktion auslösen
    }
  }
}

 

Längen und Breitengrad als FLOAT Werte aus EXIF Daten

Erstellt in PHP am 2. Januar 2015 vom Daschmi

Um mittels PHP die Längen- und Breitengrade aus einer Datei mit EXIF Metadaten zu extrahieren, können folgende Funktionen verwendet werden:

    function ds_gps2Num($coord)
{

$arParts = explode(‚/‘, $coord);

if (sizeof($arParts) <= 0) return 0;
else if (sizeof($arParts) == 1) return $arParts[0];
else return (floatval($arParts[0]) / floatval($arParts[1]));

}

function ds_getGps($exifCoord, $h)
{

$deg = ((sizeof($exifCoord) > 0)?ds_gps2Num($exifCoord[0]):0);
$min = ((sizeof($exifCoord) > 1)?ds_gps2Num($exifCoord[1]):0);
$sec = ((sizeof($exifCoord) > 2)?ds_gps2Num($exifCoord[2]):0);

return (($h == ‚W‘ || $h == ‚S‘)?-1:1) * ($deg + $min / 60 + $seconds / 3600);

}

Der Aufruf erfolgt dann beispielsweise so:

$exif = exif_read_data($filepath, ‚ANY_TAG‘);
$image_longitude = ds_getGps($exif["GPSLongitude"], $exif[‚GPSLongitudeRef‘]);
$image_latitude = ds_getGps($exif["GPSLatitude"], $exif[‚GPSLatitudeRef‘]);

Phillips HUE Lampen über Standby Modus der Dreambox deaktivieren

Erstellt in Allgemein am 25. Dezember 2014 vom Daschmi

Ziel war es die Lampen des Phillips Hue Systems, die links und rechts von meinem TV angebracht sind mit dem Standby Modus der Dreambox zu deaktivieren.

Phillips stellt für die Kontrolle der Lampen und der Bridge eine REST Api zur Verfügung, die über das JSON Format kommuniziert. Um die Anfragen an die Bridge zu senden habe ich mich entschieden das Systemkommando curl zu verwenden. Alternativ wäre auch python-requests oder ähnliches möglich. Es gibt auch mehrer Schnittstellen (verwenden auch python-requests) zu Python direkt, eine Übersicht gibt es hier.

Schritt 1 – Curl auf der Dreambox installieren

Die Installation von Curl ist von dem verwendeten Image abhängig. Bei mir war Curl im Repository direkt verfügbar und konnte mittels

opkg install curl

direkt installiert werden.

Schritt 2 – API User bei der Bridge registrieren

Zuerst muss man die IP der Phillips HUE Bridge herausfinden, in meinem Fall ist dies die 192.168.1.2.

Damit die API verwendet werden kann, muss ein Benutzer an der Bridge angemeldet werden. Klicken sie dazu den Link Button an der Phillips HUE Bridge und führen sie direkt danach folgendes Kommando auf der Dreambox aus:

curl -d '{"devicetype":"dm800","username":"testapiuser"}' 192.168.1.2/api

devicetype und username können beliebig sein. Bei meinen Tests hat sich aber herausgestellt, das der username mindestens aus 10 Zeichen bestehen muss.

Die Rückgabe müsste wie folgt aussehen:
[{„success“:{„username“:“testapiuser“}}]

Schritt 3 – Lampen testen

Die einzelnen an der HUE Bridge angeschlossenen Lampan lassen sich über eigene API Urls ansprechen. Um zum Beispiel die 3. Lampe auszuschalten kann folgendes Kommando benutzt werden:

curl -d '{"on":false}' -X PUT 192.168.1.2/api/testapiuser/lights/3/state

Am besten einfach alle Lampen einschalten und dann testen welche Lampe welche Nummer bekommen hat.

Schritt 4 – Script zum ausschalten der Lampen schreiben

Ich habe ein einfaches Shell Script geschrieben welches ich unter /mnt/hdd/hueoff.sh abgelegt habe. Die Datei muss mittels chmod +x ausführbar gemacht werden. Das Shell Script sieht in meinem Fall wie folgt aus:

#!/bin/sh
sleep 30s
curl -d '{"on":false}' -X PUT  192.168.1.2/api/testapiuser/lights/1/state
curl -d '{"on":false}' -X PUT  192.168.1.2/api/testapiuser/lights/3/state

In Zeile 2 habe ich ein Sleep eingebaut, so habe ich nach 30 Sekunden noch Licht nachdem ich die Dreambox in den Standby Modus geschaltet habe.

 Schritt 5 – Script beim Standby der Dreambox ausführen

Die Dreambox führ das Script /usr/lib/enigma2/python/Screens/Standby.ph aus, wenn die Box in den Standby Modus geschalten wird. Damit wir externe Befehle aufrufen können, müssen wir die os Bibliothek importieren. Dies geschieht mittels

import os 

Das Scriptt aus Schritt 4 führen wir mittes

os.system("sh /mnt/hdd/hueoff.sh &") 

aus. Der Systemaufruf sollte hinter die Zeile print „enter standby“ platziert werden.
Schritt 6 – Dreambox neu starten und testen

Damit die Änderungen am standby.py wirksam werden, muss Enigma neu gestartet werden. Anschließend sollten die Lampen ausgehen sobald die Dreambox in den Standby Modus geschaltet wird.