Haus-Automation auf Webserver-Basis
SAS4PI-Web Version 4.00 (C)2014/15 BlueDragon

Funktionen und Variablen

Nachfolgend sind die Funktionen gelistet, die man in eigenen PseudoGeräte-Scripten nutzen kann.

Dazu muss nur im Kopfbereich des PseudoGeräte-Scripts include __DIR__."/../include/psg.php"; eingefügt werden. Ab diesem Zeitpunkt stehen dann die öffentlichen Funktionen und Variablen von SensorAndSwitch dem eigenen Script zur Verfügung.

Funktionen

  • + decodiere()

    - decodiere()

    $text=decodiere($kennwort,$schluessel);

    • $kennwort
      String des verschlüsselten Kennwortes, welches entschlüsselt werden soll.
      Beispiel: 12345*1234*123456*1234
    • $schluessel
      Zahl des Schlüssels, mit dem entschlüsselt werden soll.
      Beispiel: 12345
    • $text
      String enthält das Kennwort als Ergebnis im Klartext.
      Beispiel: geheim
  • + encodiere()

    - encodiere()

    $crypt=encodiere($kennwort,$schluessel);

    • $kennwort
      String des unverschlüsselten Kennwortes, welches verschlüsselt werden soll.
      Beispiel: geheim
    • $schluessel
      Zahl des Schlüssels, mit dem entschlüsselt werden soll.
      Beispiel: 12345
    • $crypt
      String enthält das Kennwort als verschlüsseltes Ergebnis.
      Beispiel: 12345*1234*123456*1234
  • + getConfInfo()

    - getConfInfo()

    $Conf=getConfInfo();

    • Die Funktion stellt das Array aller Konfigurationseinstellungen bereit.
    • $Conf
      Inhalt:
      • $Conf["PIC"]
        Bilderpfad (images/)
      • $Conf["DESIGN"]
        Designpfad (z. B. metallic/)
      • $Conf["INCLUDE"]
        "include"-Pfad (include/)
      • $Conf["PSG"]
        PseudoGeräte-Pfad (psg/)
      • $Conf["PRG"]
        Programmbezeichnung (Name)
      • $Conf["VER"]
        Versionsnummer
      • $Conf["FB"]
        Fritzbox-URL (1. Fritzbox)
      • $Conf["USER"]
        Fritzbox-Benutzer (1. Fritzbox)
      • $Conf["PASSWORD"]
        Fritzbox-Password (1. Fritzbox) (unverschlüsselt)
      • $Conf["AKTUALISIERUNG"]
        Aktualisierungsrate der WebGUI in Sekunden
      • $Conf["BRAIN"]
        Delay und Zufall ("Gehirn") ja oder nein
      • $Conf["UPFENSTER"]
        Neues Fenster/Tab bei Klick auf einen Link
      • $Conf["ANZEIGETYP"]
        Anzeigetyp des Gerätenamens (Schrifttyp)
      • $Conf["GERAETEDISPLAY"]
        Nummer des Tabs der Geräteseiten
      • $Conf["WEBINFO"]
        URL des SensorAndSwitch Webs
      • $Conf["UPDATE"]
        URL der SensorAndSwitch Updateinfo
      • $Conf["UPDL"]
        URL zur ZIP-Datei des Updates
      • $Conf["UPVER"]
        Updateversion
      • $Conf["UPDATUM"]
        Datum letzte Update-Prüfung
      • $Conf["ZEITZONE"]
        Zeitzone für Uhrfunktionen nach PHP-Vorgabe
      • $Conf["BREITENGRAD"]
        Breitengrad für Position
      • $Conf["LAENGENGRAD"]
        Längengrad für Position
      • $Conf["ZENITA"]
        Zenit für Sonnenaufgang
      • $Conf["ZENITU"]
        Zenit für Sonnenuntergang
      • $Conf["LOG"]
        Log-Datei erstellen (verschiedene Typen)
      • $Conf["MAILVERSENDER"]
        Mailversender für Log-Daten
      • $Conf["MAILEMPFAENGER"]
        Mailempfänger für Log-Daten
      • $Conf["MAILSERVER"]
        Mailserver für Log-Daten
      • $Conf["MAILSERVERPORT"]
        Mailserverport für Log-Daten
      • $Conf["MAILTLSSSL"]
        MailSSL für Log-Daten
      • $Conf["MAILBENUTZER"]
        Mailbenutzer für Log-Daten
      • $Conf["MAILKENNWORT"]
        Mailkennwort für Log-Daten (unverschlüsselt)
      • $Conf["INFO"]
        WebGUI-Wahl (ui)
      • $Conf["PRO"]
        Automationsscriptname (sensorandswitchautopro.php)
      • $Conf["EURL"]
        URL der WebGUI (sensorandswitch.php mit URL)
      • $Conf["SORTIERUNG"]
        Sortierung (Name)
      • $Conf["AKTVER"]
        Aktuelle Version
      • $Conf["FBLogin"][$nr]
        Fritzbox URL-Login
      • $Conf["FBUser"][$nr]
        Fritzbox Benutzer
      • $Conf["FBPassword"][$nr]
        Fritzbox Kennwort (unverschlüsselt)
      • $Conf["FBCommand"][$nr]
        Fritzbox Kommandozeile (URL) zur Abfrage oder zum Schalten
      • $nr
        Steht für die fortlaufende Nummer der Fritzboxen.
        Beispiel: 0 für die erste Fritzbox
  • + getGerInfo()

    - getGerInfo()

    $gerarray=getGerInfo($name);

    • $name
      String des vergebenenen Namens des Gerätes. Die Funktion stellt das Array des Gerätes mit dem angegebenen Namen mit allen Gerätedaten bereit.
      Beispiel: FX-Dose oder Wetter
    • $gerarray
      Inhalt:
      • $gerarray["Typ"]
        Gerätetyp (Info, Gruppe, Gerät)
      • $gerarray["Aktiv"]
        Gerät erreichbar, nicht erreichbar oder wartend (0/1/2)
      • $gerarray["Name"]
        Name des Gerätes, der Gruppe, der Info
      • $gerarray["FName"]
        Anzeige-Name des Gerätes, der Gruppe
      • $gerarray["ID"]
        ID des Gerätes (Fritzbox-Geräte)
      • $gerarray["AIN"]
        AIN des Gerätes (Fritzbox-Geräte)
      • $gerarray["Info"]
        Infotext bei Typ Info
      • $gerarray["Slottyp"]
        Infotext breiter Typ "b"
      • $gerarray["FBITI"]
        Funktionsbit für Typ Info (0/1)
      • $gerarray["FBITO"]
        Funktionsbit für Typ Pseudo-Einheiten (0/1)
      • $gerarray["FBITP"]
        Funktionsbit für Typ Pseudo (0/1)
      • $gerarray["PSensor"][0]
        Infotext und/oder Wert bei Typ Pseudo
      • $gerarray["PSensor"][1]
        Wertbezeichnung bei Typ Pseudo
      • $gerarray["FBIT7"]
        Funktionsbit für Energie (Watt) (0/1)
      • $gerarray["FBIT8"]
        Funktionsbit für Temperatur (Temp) (0/1)
      • $gerarray["FBIT9"]
        Funktionsbit für Schaltsteckdose (Schalter) (0/1)
      • $gerarray["FBIT10"]
        Funktionsbit für Repeater (0/1)
      • $gerarray["Firma"]
        Firma/Hersteller des Gerätes
      • $gerarray["Produkt"]
        Produktbezeichnung des Gerätes
      • $gerarray["FWV"]
        Firmwareversion des Gerätes
      • $gerarray["Einheiten"]
        Pseudo-Einheiten
      • $gerarray["Temp"]
        Temperaturwert (incl. Korrektur)
      • $gerarray["TempK"]
        Temperaturkorrekturwert
      • $gerarray["Watt"]
        Verbrauch in Watt
      • $gerarray["Energie"]
        Gesamtwert Verbrauch
      • $gerarray["Schalter"]
        Schalterstellung (0/1/2)
      • $gerarray["Mode"]
        Fritzbox-Automation eingeschaltet oder manuell für dieses Gerät
      • $gerarray["Lock"]
        Sperre (Fritzbox-Geräte) (0/1)
      • $gerarray["Members"]
        Gruppenmitglieder einer Gruppe
      • $gerarray["MemberOf"]
        Mitglied der Gruppe X
      • $gerarray["URLGerät"]
        Gerät ist ein PseudoGerät (0/1)
      • $gerarray["FBCMD"]
        Fritzbox-Kommandozeile für dieses Gerät für Abfrage- oder Schaltaufruf
      • $gerarray["FBLGN"]
        Fritzbox-Login-URL für dieses Gerät
      • $gerarray["FBUSR"]
        Fritzbox-Benutzer für dieses Gerät
      • $gerarray["FBPWD"]
        Fritzbox-Kennwort für dieses Gerät (verschlüsselt)
      • $gerarray["Counter"]
        Zählerwert für das Pseudo C##
      • $gerarray["Sts"]
        Zeit (hh:mm) letzter Schaltvorgang
      • $gerarray["schaltlog"][$index]["Schalter"]
        LOG: Schalterposition nach einem Schaltvorgang (0/1)
      • $gerarray["schaltlog"][$index]["aSchalter"]
        LOG: vorherige Schalterposition nach einem Schaltvorgang (0/1)
      • $gerarray["schaltlog"][$index]["sTyp"]
        LOG: Schalttyp (AUTO/KORR/MAN)
      • $gerarray["schaltlog"][$index]["sZeit"]
        LOG: Zeitstempel des Schaltvorgangs
      • $gerarray["schaltlog"][$index]["sSI"]
        LOG: Array des Schaltdatensatzes
      • $gerarray["schaltlog"][$index]["sgi"]
        LOG: Schaltstatus (PSG-schreibweise)
  • + getGerInfoAll()

    - getGerInfoAll()

    getGerInfoAll();

    • Die Funktion stellt das Array $GerListARR mit allen Gerätedaten aller Geräte zur Verfügung.
      Übersicht:
      • $GerListARR[$nr]["Typ"]
        Gerätetyp (Info, Gruppe, Gerät)
      • $GerListARR[$nr]["Aktiv"]
        Gerät erreichbar, nicht erreichbar oder wartend (0/1/2)
      • $GerListARR[$nr]["Name"]
        Name des Gerätes, der Gruppe, der Info
      • $GerListARR[$nr]["Name"]
        Anzeige-Name des Gerätes, der Gruppe
      • $GerListARR[$nr]["ID"]
        ID des Gerätes (Fritzbox-Geräte)
      • $GerListARR[$nr]["AIN"]
        AIN des Gerätes (Fritzbox-Geräte)
      • $GerListARR[$nr]["Info"]
        Infotext bei Typ Info
      • $GerListARR[$nr]["Slottyp"]
        Infotext breiter Typ "b"
      • $GerListARR[$nr]["FBITI"]
        Funktionsbit für Typ Info (0/1)
      • $GerListARR[$nr]["FBITO"]
        Funktionsbit für Typ Pseudo-Einheiten (0/1)
      • $GerListARR[$nr]["FBITP"]
        Funktionsbit für Typ Pseudo (0/1)
      • $GerListARR[$nr]["PSensor"][0]
        Infotext und/oder Wert bei Typ Pseudo
      • $GerListARR[$nr]["PSensor"][1]
        Wertbezeichnung bei Typ Pseudo
      • $GerListARR[$nr]["FBIT7"]
        Funktionsbit für Energie (Watt) (0/1)
      • $GerListARR[$nr]["FBIT8"]
        Funktionsbit für Temperatur (Temp) (0/1)
      • $GerListARR[$nr]["FBIT9"]
        Funktionsbit für Schaltsteckdose (Schalter) (0/1)
      • $GerListARR[$nr]["FBIT10"]
        Funktionsbit für Repeater (0/1)
      • $GerListARR[$nr]["Firma"]
        Firma/Hersteller des Gerätes
      • $GerListARR[$nr]["Produkt"]
        Produktbezeichnung des Gerätes
      • $GerListARR[$nr]["FWV"]
        Firmwareversion des Gerätes
      • $GerListARR[$nr]["Einheiten"]
        Pseudo-Einheiten
      • $GerListARR[$nr]["Temp"]
        Temperaturwert (incl. Korrektur)
      • $GerListARR[$nr]["TempK"]
        Temperaturkorrekturwert
      • $GerListARR[$nr]["Watt"]
        Verbrauch in Watt
      • $GerListARR[$nr]["Energie"]
        Gesamtwert Verbrauch
      • $GerListARR[$nr]["Schalter"]
        Schalterstellung
      • $GerListARR[$nr]["Mode"]
        Fritzbox-Automation eingeschaltet oder manuell für dieses Gerät
      • $GerListARR[$nr]["Lock"]
        Sperre (Fritzbox-Geräte) (0/1)
      • $GerListARR[$nr]["Members"]
        Gruppenmitglieder einer Gruppe
      • $GerListARR[$nr]["MemberOf"]
        Mitglied der Gruppe X
      • $GerListARR[$nr]["FBCMD"]
        Fritzbox-Kommandozeile für dieses Gerät für Abfrage- oder Schaltaufruf
      • $GerListARR[$nr]["URLGerät"]
        Gerät ist ein PseudoGerät (0/1)
      • $GerListARR[$nr]["FBLGN"]
        Fritzbox-Login-URL für dieses Gerät
      • $GerListARR[$nr]["FBUSR"]
        Fritzbox-Benutzer für dieses Gerät
      • $GerListARR[$nr]["FBPWD"]
        Fritzbox-Kennwort für dieses Gerät (verschlüsselt)
      • $GerListARR[$nr]["Counter"]
        Zählerwert für das Pseudo C##
      • $GerListARR[$nr]["Sts"]
        Zeit (hh:mm) letzter Schaltvorgang
      • $GerListARR[$nr]["schaltlog"][$index]["Schalter"]
        LOG: Schalterposition nach einem Schaltvorgang (0/1)
      • $GerListARR[$nr]["schaltlog"][$index]["aSchalter"]
        LOG: vorherige Schalterposition nach einem Schaltvorgang (0/1)
      • $GerListARR[$nr]["schaltlog"][$index]["sTyp"]
        LOG: Schalttyp (AUTO/KORR/MAN)
      • $GerListARR[$nr]["schaltlog"][$index]["sZeit"]
        LOG: Zeitstempel des Schaltvorgangs
      • $GerListARR[$nr]["schaltlog"][$index]["sSI"]
        LOG: Array des Schaltdatensatzes
      • $GerListARR[$nr]["schaltlog"][$index]["sgi"]
        LOG: Schaltstatus (PSG-schreibweise)
    • $nr
      Steht für die fortlaufende Nummer der Geräte im Array.
      Beispiel: 0 für das erste Gerät
    • $index
      Steht für die fortlaufende Nummer der protokollierten Schaltvorgänge des Gerätes bei einem Zyklusdurchlauf.
      Beispiel: 1 für den ersten Schaltvorgang
  • + getSessionID()

    - getSessionID()

    $fbSID=getSessionID($login,$user,$password);

    • $login
      String mit der Login-URL der Fritzbox. Diese Information kann aus dem Config-Pool ausgelesen werden.
      Beispiel: http://fritz.box/login_sid.lua
    • $user
      String mit dem Benutzernamen der Fritzbox. Diese Information kann aus dem Config-Pool ausgelesen werden.
      Beispiel: admin
    • $password
      String mit dem Kennwort der Fritzbox. Diese Information kann verschlüsselt aus dem Config-Pool ausgelesen werden und muss dann mit der Funktion encodiere() in Klartext zurückverwandelt und so übergeben werden.
      Beispiel: geheim
    • $fbSID
      Rückgabewert ist die SessionID zum weiteren Zugriff auf die Fritzbox.
      Beispiel: b40f78a230d4c8fd
  • + istOnline()

    - istOnline()

    $ok=istOnline($ip,$port);

    • $ip
      String mit der IP des Servers.
      Beispiel: 123.123.123.123
    • $port
      Portnummer.
      Beispiel: 123
    • $ok
      Rückgabewert true für erreichbar oder false für nicht erreichbar.
      Beispiel: true
  • + picdesign() (und disppicdesign() für disp-Scripte)

    - picdesign() (und disppicdesign() für disp-Scripte)

    $pfadpic=picdesign($picdateiname);

    $pfadpic=disppicdesign($picdateiname);

    • $picdateiname
      String mit dem Namen der Bilddatei.
      Beispiel: schalter0.png
    • $pfadpic
      String mit Inhalt des Namens der Bilddatei incl. des Pfades. Es wird zuerst im Design-Verzeichnis nach dieser Datei gesucht. Existiert sie dort nicht, wird das Standarddesign benutzt.
      Beispiel: metallic/schalter0.png
  • + web()

    - web()

    $status=web($url,$post);

    • $url
      String mit der aufzurufenden Web-URL als Inhalt. Diese kann noch mit Parametern ($_GET) ergänzt werden.
      Beispiel: http://www.example.com/pfad/seite.php?info=status&wert=123
    • $post
      String entweder leer oder mit POST-Parametern ($_POST).
      Beispiel: username=Irgendwas&passphrase=geheim&login=login
    • $status
      String mit Inhalt (bei erfolgreich) oder false ( bei Fehler) als Rückgabewert. Hier wird der Inhalt der aufgerufenen Webseite als String zur Verfügung gestellt.
      Beispiel: Hallo Welt

Variablen

  • + $BrainTmp

    - $BrainTmp

    $BrainTmp

    • Üblicher Name und Pfad: tmp/sasbrain.data
    • Dateiname und Pfad der "Gehirndatei" der Schaltautomation zuständig zum Merken von Delay und Zufall einer Schaltung. Die Text-Datei beinhaltet einen mehrdimensionalen Array und wird von SensorAndSwitch Automation Pro erstellt. Diese Datei sollte nicht manuell bearbeitet werden.
  • + $ConfigDat

    - $ConfigDat

    $ConfigDat

    • Üblicher Name und Pfad: conf/sas.conf
    • Dateiname und Pfad der Hauptkonfigurationsdatei. Eine Text-Datei, die mit Zuweisungen (NAME=Wert) von den WebGUI-Einstellungen erzeugt wird. Diese Datei kann mit einem Editor bearbeitet werden.
  • + $DisplayConfigDat

    - $DisplayConfigDat

    $DisplayConfigDat

    • Üblicher Name und Pfad: conf/sasd.conf
    • Dateiname und Pfad der Anzeigeseiten mit den gewählten Geräte-Slotinhalten. Eine Text-Datei, die einen mehrdimensionalen Array beinhaltet. Diese Datei sollte nicht manuell bearbeitet werden.
  • + $GerARRDat

    - $GerARRDat

    $GerARRDat

    • Üblicher Name und Pfad: tmp/sascache.db
    • Dateiname und Pfad des Geräte-Caches (SQLite Gerätedatenbank) der Schaltautomation und der WebGUI zuständig zum Merken von Gerätedaten. Diese Datei sollte nicht manuell bearbeitet werden.
  • + $SchaltConfigProDat

    - $SchaltConfigProDat

    $SchaltConfigProDat

    • Üblicher Name und Pfad: conf/sasap.conf
    • Dateiname und Pfad der Schaltdaten-Datei. Die Text-Datei wird von SensorAndSwitch Automation Pro (UI) erstellt. Diese Datei kann mit einem Editor bearbeitet werden.
  • + $TmpDir

    - $TmpDir

    $TmpDir

    • Üblicher Pfad: tmp/
    • Pfad des temporären Verzeichnisses. Hier abgelegte Dateien sind beim RaspberryPI (wegen eingerichteter RAM-Disk) flüchtig.
  • + $$pseudoURL

    - $pseudoURL

    $pseudoURL

    • Beinhaltet den HTTP-Pfad (URL) zu sas.php.