[Neues Modul] 98_QRCode.pm - QRCodes erzeugen und darstellen

Begonnen von Benni, 23 Januar 2017, 16:39:55

Vorheriges Thema - Nächstes Thema

Benni

Hallo zusammen,

weil ich neulich mal selbst Bedarf für ein Paar QRCodes zur Darstellung auf meinem Info-Tablet hatte, bin ich über einen Dienst gestolpert, bei dem man solche direkt per Web-API erzeugen kann.
Das hat mich dazu animiert ein passendes Modul dazu zu schreiben.

Das Modul ist per Update ab 24.01.2017 ab ca. 8:00 Uhr verfügbar.

Support dazu leiste ich im Forum unter "Unterstützende Dienste". Alle Fragen und Anregungen bitte dort einstellen.

Der nächste Post enthält die deutsche Dokumentation aus der Commandref und im letzten Post in diesem Thread gibt es noch einen Beispiel Screenshot.

Ich hoffe, es kann sonst noch wer gebrauchen.

Über konstruktives Feedback freue ich mich natürlich immer!

VG Benni.

Benni


QRCode

Mit hilfe dieses Moduls, kann auf einfache Weise eine URL generiert werden, mit der vom Dienstleister TEC-IT ein QRCode abgerufen werden kann.
Ein Device dieses Moduls kann außerdem den QRCode auch selbst direkt in FHEMWEB darstellen und auch anderen Devices (bspw. weblink) als HTML zur Verfügung stellen.

HINWEIS:
   Es ist ohne schriftliche Genehmigung des Diensteanbieters nicht erlaubt, mehr als 30 QRCode-Abrufe pro Minute durchzuführen.
   Siehe dazu auch die Nutzungsbedingungen von TEC-IT

Define
      define <name> QRCode

Set
    set <name> update
    Führt eine Aktualisierung der QRCode-Url durch.


Attributes

QRCode-URL-relevante Attribute

Die folgenden Attribute sind für die Erzeugung der Abruf-URL relevant und haben somit direkten Einfluß auf die Erzeugung des QRCode-Images.
Für diese Attribute wird bei Änderung, standardmäßig ein automatisches Udate der QRCode-URL durchgeführt. Dies kann durch setzen des Attirbutes qrNoAutoUpdate (s.w.u.) deaktiviert werden.

       
  • qrData
    Dieses Attribut legt die Daten fest, die im QRCode kodiert werden sollen.
    Ist dieses Attribut nicht gesetzt, wird beim update eine entsprechende Fehlermeldung erzeugt.
       
  • qrSize
    Dieses Attribut legt die Größe fest, in der das QRCode-Image erstellt werden soll.
    Mögliche Ausprägungen sind small, medium (default), large.
       
  • qrResolutionDPI
    Dieses Attribut legt die Auflösung fest, in der das QRCode-Image erstellt werden soll.
    Mögliche Werte liegen zwischen 96 und 600 (Default ist 300dpi)
       
  • qrColor
    Dieses Attribut legt die Vordergrundfarbe fest, in der das QRCode-Image erstellt werden soll.
    Der Wert ist ein RGB-Farbwert in Hexadezimaler schreibweise (Bspw. FF0000 für rot)
    Default ist 000000 (schwarz)
       
  • qrBackColor
    Dieses Attribut legt die Hintergrundfarbe fest, in der das QRCode-Image erstellt werden soll.
    Der Wert ist ein RGB-Farbwert in Hexadezimaler schreibweise (Bspw. 0000FF für blau)
    Default ist FFFFFF (weiß).
       
  • qrTransparent
    Dieses Attribut legt fest, ob der Hintergrund transparent sein soll.
    Mögliche Werte sind True für transparenten Hintergrund und False für nicht-transparenten Hintergrund (default)
       
  • qrQuietZone
    Über diesen Wert kann eine Ruhe-Zone, also ein Rand um den eigentlichen QRCode festgelegt werden.
    Dies ermöglicht ggf. ein erleichtertes Erfassen des QRCodes beim Scannen.
    Mögliche Werte sind positive numerische Werte. Default ist 0, wenn das Attribut nicht gesetzt ist.
       
  • qrQuietUnit
    Über diesen Wert kann die Maßeinheit für das Festlegen einer Ruhe-Zone eingestellt werden.
    Mögliche Ausprägungen sind mm (default), in (=inch), mil (=mils), mod (=Module) oder px (=Pixel).
       
  • qrCodepage
    Über diesen Wert kann die Zeichentabelle für die QRCode-Erzeugung festgelegt werden.
    Mögliche Werte sind UTF8 (default), Cyrillic oder Ansi
       
  • qrErrorCorrection
    Über diesen Wert kann Fehlerkorrektur für die QRCode-Erzeugung festgelegt werden.
    Mögliche Werte sind L (default), M,Q oder H
       

darstellungsrelevante Attribute

Die folgenden Attribute haben nur Einfluß auf das Verhalten und die Darstellung in FHEMWEB in der Deatailansicht des QRCode-Devices, bzw. beim Abruf der HTML-Daten mittels QRCode_getHtml (s.u.)
Im Fehlerfall wird weder der QRCode, noch qrDisplayText dargestellt, sondern eine entsprechend Fehlermeldung stattdessen eingeblendet.


       
  • qrDisplayWidth
    Breite des Images bei der Darstellung in FHEMWEB in der Detailübersicht
    Default ist 200
       
  • qrDisplayHeight
    Höhe des Images bei der Darstellung in FHEMWEB in der Detailübersicht
    Default ist 200
       
  • qrDisplayData
    Wenn dieses Attribut gesetzt ist, wird unterhalb des QRCodes der Datenteil als einfacher Text dargestellt.
       
  • qrDisplayNoImage
    Wenn dieses Attribut gesetzt ist, der QRCode nicht in der Detailansicht dargestellt.
       
  • qrDisplayText
    Hier kann ein beliebiger Text eingetragen werden, der unterhalb des QRCodes eingeblendet werden soll.
       
  • qrDisplayNoText
    Ist dieses Attribut gesetzt, so wird der, im Attribut qrDisplayText eingetragene Text nicht   eingeblendet, auch ohne das Attribut qrDisplayText zu löschen.
       
  • qrNoAutoUpdate
    Ist dieses Attribut gesetzt, so wird bei Änderung eines für die QRCode-Erzeugung relevanten Attributs kein automatisches Update der QRCode-URL durchgeführt.
       

  Erzeugte Readings

 

         
  • data
    Dieses Reading enthält die vom QRCode zu kodierenden Daten.
    Das ist im Normalfall der Inhalt aus dem Attribut qrData.
    Im Fehlerfall steht hier stattdessen der entsprechende Fehlertext.
         
  • qrcode_url
    Dies ist die durch set update erzeugte URL, die für den Abruf des QRCode-Image verwendet wird.
         
  • state
    Status des QRCode-Device.
    Das ist entweder defined, oder der Zeitpunkt des letzten set update, bzw. auto-update
         
 
  Enthaltene Funktionen

  Es gibt im Modul noch eine Funktion, die auch für andere Anwendungsfälle einsetzbar ist, wie bspw. in einem weblink

QRCode_getHtml($;$$)

Die Funktion gibt den HTML-Code zurück, wie er auch für die Darstellung im QRCode-Device in der Detail-Ansicht verwendet wird.

      Parameter:
      

          
  • QRCodeDevice
    Hier ist der Name des QRCode-Devices anzugeben, dessen HTML-Code abgerufen werden soll.
          
  • noImage (Optional)
    Entspricht dem Attribut qrDisplayNoImage
    Wenn dieser Parameter angezeigt wird, wird also keine Referenz auf QRCode-Image im HTML-Code erzeugt.
          
  • noText (Optional)
    Entspricht dem Attribut qrDisplayNoText
    Wenn dieser Parameter angezeigt wird, wird also Benutzerdefinierter Text unterhalb des QRCode im HTML-Code erzeugt.
      Beispiel:
      QRCode_getHtml('MyQRCode',1,0)

Damit wird der HTML-Code für das (QRCode-)Device MyQRCode abgerufen, das nur das Image enthält,aber nicht den Benutzerdefinierten text.

Benni