Beiträge von birdy1964

    Hallo Jens,


    das hat mir nun enorm weitergeholfen - um es vorweg zu nehmen, ich kann nun per PHP State-Werte auslesen udn ich kann Werte auf den Bus senden (zumindest ein Lampe ein/aus) habe ich realisiert. Bis hierher sage ich einfach mal ein ganz herzliches Danke-Schön an Dich - das ist wirklich ein exzellentes Forum und ich hoffe, dass der ein oder andere nach mir auch davon profitieren wird. Anmerkung:
    Eine Anomalie habe ich noch - immer wenn mit dem Script ein Befehl auf den Bus gesendet wird, bekomme ich eine leere Nachricht/Meldung (rotes Ausrufezeichen, Fehlernummer 90) in meine InBx, mit dem Status "Nummer fehlt" - hast Du ne Ahnung woher die kommt?


    Mitunter ein Problem für mich war, dass die Doku für C geschrieben ist und wir aber eben mit PHP arbeiten. Die Field-IDs beispielsweise lauten in der Doku z.B. Field_Subject und sind als Hex-Werte definiert, in PHP muss ich aber 'Subject' eintragen (also ohen Filed_, dafür aber mit Hochkommas. Das muss man erst mal wissen.


    Einen ähnlichen Fall hatte ich noch mit dem Script für den Sendeauftrag. Die Konstante DvEMailItem ist leider nicht definiert. Hiefür habe ich nun einfach den Wert 2 eingetragen, wie in den DvItemTypes als enum definiert. Aber das sind so kleine Probleme, wo man viel Zeit verlieren kann wenn man nicht weiss was ist defineirt und was nicht und wie heisst das Feld und wann brauch ich Hochkommas, ....


    Die nächsten Schritte sind:
    - herauszufinden, wie ich aus der Internetseite heraus Variable an die php Skripte übergeben kann
    - herausfinden, wie man am besten die Adressen als Konstate definiert
    - herausfinden wie die Gültigkeiten der Variablen sind, reicht es das Archiv einmal auf der Seite zu öffen?
    - wie gehe ich mit Pop-ups und Unterseiten um
    - wie kann ich auf Datenzugreiffen, die auf einer anderen Seite definiert wurden (xy.php ruft seite zz.php auf - in xy.php ist etwas definiert, gilt das auch auf der Seite zz?)
    - u.s.w.


    Jedenfalls war es ein erhebendes Gefühl, als sich die Arbeitszimmerbeleuchtung nach einem Scriptaufruf einschaltete.


    Soviel für heute - Danke und Gruß


    Holger

    So, ich habe es nun geschafft das Script zum Laufen zubringen.


    Vorab, den Apache will ich bnicht installieren, weil ich den IIS am Laufen habe - ich habe schlichtweg Bedenken, dass ich irgendwann meinen WHS in einen Zustand installiert habe, dass er nicht mehr sauber läuft - und da habe ich dann ein Thema.
    Also reine Angst und die Meinung, dass der IIS für diese einfache Web-Anwendung genügt.


    Das Script läuft und der Hauptgrund warum nichts angezeigt wurde lag im Pfad zum Archiv. Hier habe ich nun einen gültigen Pfad eingetragen

    Code
    $str_archive = "\\\\hsahp\david\\Archive\\SYSTEM\\DAVID\\AUTOMTN\\STATE\\";

    und schon listet mein Script in Klarschrift alle Namen der State Variablen auf.


    Nu muss ich noch zwei Dinge schaffen, und mir ist klar hier heisst es jetzt auch die Doku zu wälzen (was ich bisher ohne Erfolg auch mache) ...
    1. Alle Daten aus dem State Archiv auszulesen
    Der erste Versuch mit $item->Value; oder $item->To; zuzugreiffen sind gescheitert (ich dachte ich kann Subject ersetzen durch die Namen der anderen Felder). Leider schint ausser Subject nicht zu funktionieren. In der Referenz finde ich nur Methoden mit get und put. Wie komme ich an die anderen Informationen???
    Nachtrag: mit $item->_ID; bekomme ich eine ID ausgelesen ... mal sehen was mit einem vorangestellten _ noch so alles geht - leider steht das nirgends in der Doku - und warum heisst es dann nicht _Subject ... ?
    Nachtrag2: Nur Type geht noch - ich komme einfach nicht auf die Feldinhalte ... Verzweifel ..



    2. Einen Wert auf den Bus zu senden (oh jeh)



    Als dritten Punkt ist mir noch nicht ganz klar, ob ich dieses php Script dann in jede Datei einbinden muss, oder ob es sowas wie einen Funktionsaufruf geben kann den ich von jeder Stelle der Webseite anspringen kann (also so was in der Art setSTATEvalue(BusAdr, Wert) und getSATEvalue(BusAdr, Wert).


    Thema Sicherheit habe ich jetzt verstanden. Das Script läuft auf dem Server und macht imer nur das was programmiert ist. OK!


    Dann mach ich mal weiter! Wenn das alles klappt bekomme ich eine geniale Steuerungswebseite!!


    Danke und Gruß


    Holger

    Das Problem liegt wohl wiklich beim Logon beim David-Server. Immer wenn ich das .php Script aufrufe erzeugt mir David einen neuen Benutzer (Internetbenutzer) im Archiv. Im IIS ist der Zugriff auf meine Web-Seiten für Anonymen Zugriff eingerichtet. der WHS nutz dann immer ein Gastkonto mit dem User IUSR_servername - und genau dieser User wird dann als David-Benutzer hinzugefügt. Trage ich hier einen bekannten User ein geht es dennoch nicht :(


    Display errors ist off, aber log_error ist on -> Fehler werden in eine Datei geschrieben (steht aber nix hilfreiches drin)


    Muss der korrekte Logon nicht mit diesem Befehl erfolgen?


    Logon('','','','','','AUTH');


    Wo finde ich denn die Dokumentation für diese Befehle?


    Danke und Gruß


    Holger

    Hmmm ...


    Der WWW-Publishing Dienst läuft wie falst alles als "Lokales Systemkonto". Auf dem Server ist ein David-Client installiert, aber es ist ja lokal niemand angemeldet, ausser wenn ich mit der Remote-Console als Admin auf den Server zugreiffe. Dann arbeite ich im lokalen Server Client als Administrator (was ich auch sei muss, um im State-Archiv zu schreiben).


    Ich werde dann mal probieren was passiert, wenn ich dem WWW-Dienst einen user zuordne ...


    Was mich etwas beunruhigt, ist, dass man dann ja per PHP als Admin auf meine David Archive zugreiffen kann, oder?

    So ...


    PHP läuft auf meinem WHS zusammen mit IIS - die Funktionsweise ist verstanden - soweit so gut.


    Das Test-Script um das State Archive auszulesen funktioniertleider nicht richtig.


    <?php


    $dvApi = new COM("DVOBJAPILib.DvISEApi") or die("Cannot create DVApi object");
    $Acc = $dvApi->Logon('','','','','','AUTH') or die("kein Logon");


    $str_archive = "\\\\hsahp\\david\\archive\\common\\";


    if ($Acc->ValidArchive($str_archive))
    {
    $Archive = $Acc->ArchiveFromID($str_archive);
    echo "Archive gefunden";
    } else {
    echo "Archive nicht gefunden";
    die ("Archive nicht gefunden {$str_archive}");
    }


    echo "\n\n<h2>Alle Eintr&auml;ge</h2>\n";
    $arr_entries = $Archive->GetArchiveEntries("default");
    echo "Array Entries: ";
    foreach ($arr_entries as $item)
    {
    echo "Zeile";
    echo $item->Subject;
    echo "\n";
    }
    echo "ENDE";


    $Acc->Logoff();
    ?>


    Das Archive wird gefunden, aber die Schleife läuft leer (GetArchiveEntries scheint NULL zurückzuliefern) - Nun sollte man debuggen können!


    Debuggen von PHP
    Ich habe mir den CodeLobster installiert, aber ich bekomme den Debugger nicht zum laufen. Obwohl die Foren sagen, dass man auch IIS debuggen kann scheint es am fehlende Apache Server zu scheitern - somit arbeite ich momentan im Blindflug mit der russischen Debug Methode echos"" einzubauen.


    Mit welchem Debugger arbeitest Du Jens? Hast Du eine Idee warum das mit dem State Archiv nicht klappt?


    Grüße


    Holger

    Hallo Jens,


    tausend Dank für die tolle Unterstützung in 2011 ... hoffe auch auf 2012 ...


    Programmiererfahrung habe ich als Dipl.-Ing. hauptsächlich mit C, allerdings ist das ewig her - vielleicht einer der Gründe warum ich privat mich gerne mit solchen Dingen beschäftige. Ich habe inzwischen einiges an Web-Design gemacht (NOF und Dreamweaver), aber mehr leider auch nicht.


    Fassen wir zusammen:


    Wenn wir mit David an den Bus wollen muss die SW auf dem Server laufen auf dem David installiert ist -> damit fallen Webhoster aus
    Wenn wir vom Inet aus zugreiffen wollen müssen wir PHP verwenden, da auf dem Server ausgeführt, und nicht JS.


    Fazit:
    Da ich ja einen WHS habe auf dem David läuft, werde ich ganz einfach diesen verwenden und nicht noch einen Webserver aufsetzen. Dazu habe ich heute mal PHP auf dem WHS nachinstalliert. Meine erste Automations-Webseite habe ich erstellt und ich kann darauf per WHS-Intranet oder Internet darauf zugreiffen. Der INternetzugriff ist noch ein Problem, da ich hier noch keinen Schutzmechanismus gefunden habe (so wie beim Hoster .htaccess geht es leider nicht) - aber das sollte später zu lösen sein.


    Nun muss ich es "nur" noch schaffen per PHP auf das State Archiv zuzugreiffen, bzw. Befehle auf den Bus zhu senden ... dann kann ich richtig loslegen.


    Guten Rutsch - Gruß Holger


    ======================================


    Das Beispielscript läuft noch nicht so richtig ... ich habe die Zeilen 8nach EIntrag meines Servers) mal in mein html File gepackt und es erscheint folgender Text:



    Admin Edit: Code formatiert, geht mit dem #-Zeichen im Editor, liest sich einfacher.

    .. soweit verstanden!


    Ich habe mir mal die DvAPI Dok runtergeladen. Wenn ich das recht verstehe, kann ich auch per Java Script auf die API zu greiffen.


    Das würde mir ja genügen, da ich ja nur das State-Archiv lesen/schreiben will. Und wenn alle Stricke reissen mach ich es wie Rene, aber das ist viel Handarbeit. Die letzte Alternative wäre David ganz zu eliminieren und sich den für den Buszugriff notwendigen Falcon-Treiber mit API zu besorgen. Aber bis das läuft ist Weichnachten - 2015.


    Ich will das ganze noch nicht aufgeben ...


    Gruß Holger

    Hallo Jens,


    gute Idee, ich mach demnächst mal ein neues Thema auf.


    Zwei Bemekungen:
    Der Grund warum ich mir ein Bus-System leisten konnte (und leider nur für Licht :) ist der, das ich alles selbst gemacht habe. Bei der damaligen Suche nach einer Steuermöglichleit bin ich auf "Hausmeister David" gestoßen, eine aus meiner Sicht tolle und preiswerte Lösung für diesen Zweck (verglichen mit den anderen Lösungen wie Gira Home Server und Co).


    Für David habe ich dennoch bisher einen ganzen Batzen Geld ausgegeben, nutzen tu ich nur 5% des Systems - Email und Automation. Ich hatte gehofft dass David den Privatnutzer Gedanken weitertreibt, aber das Gegenteil ist passiert.


    Gruß Holger

    Ja, der Jonathan mach was ganz ähnliches .. interessant!


    Ich habe nun versucht eine einfache Struktur mit dem NOF zu erzeugen, aber leider bekomme ich das ganze nicht in der Webbox zum Laufen. In meinem Verzeichnis, in dem die webindex Datei steht habe ich das vom NOF erezugte index.html hineinkopiert. Aus der webindex heraus kann ich diese Seite auch aufrufen.


    ABER ..
    Sobald ich aus der index.html auf Unterseiten zugreiffe, die in einem physikalischen Unterverzeichnis liegen funktioniert dies nicht. Diese Dateeien, wie auch jegliche Bilder liegen in einem Unterverzeichnis unter meinem Archiv. Diese Unterverzeichnisse habe ich über den Explorer erstellt. Ich vermute nun dass die Webbox Verzeichnisse die man händisch erstellt nicht kennt, bzw. den Zugriff darauf verbietet. Oder was mach ich falsch ?????


    Rene, hast Du wirklich alle Seiten per Hand im TAS erzeugt und dann verlinkt? Ich denke ja ... (großer Respekt)
    Deine Idee mit dem DefOK ist ja echt clever ..., da muss man erstmal draufkommen.
    Das Problem sehe ich bei dieser Methode, dass wenn man das Formular mit Parametern aus verschiedenen Seiten heraus aufruft, man verschidenene DefOK Dateien haben muss. Es muss doch möglich sein das Formular aufzurufen und weiter nichts ...



    Ein echter Webserver ...
    klingt ja ganz gut, aber David hat doch einen Webserver integriert .. :(
    In dem Fall überlege ich die Dateien auf einem gehosteten Server zu platzieren, den Zugriff über Passwort zu sperren und von dort aus über die Webbox Funktion zum lesen/schreiben auf das State Archiv zu nutzen.


    Vielleicht kann ich den Windows Home Server (WHS), der ja auf Basis WS2003 arbeitet, verwenden. DIeser hat m.W. nach auch
    einen Webserver an Bord.



    Was ich nicht verstehe ist wenn ich einen eigenen Web-Server auf meinem W2003 Server aufsetze, wie kann ich dann auf das State-Archiv zugreiffen ber die API wenn es aus der Webbox heraus nicht geht?
    Nachtrag:
    Ich habe es geschafft eine Webseite von aussensochtbar auf dem WHS laufen zulassen. Enn ich nun noch auf das State-Archive komme wäre es perfekt - dann muss ich den Zugriff von aussen nur noch irgendwie absichern ...



    Grüßle Holger

    Als Privatanwender habe ich mit der Home Edition + 1 user = 2 user / 1 port mit David.10 begonnen. Hauptauslöser war das Thema Automation, welches David ganz gut beherrscht. Die Upgrades auf fx und später fx.11 habe ich mitgemacht, da das erste Upgrade preislich in Ordnung war und das zweite die Strongbox enthielt.


    Die Home Edition gibt es schon lange nicht mehr, Privatanwender wurden völlig vergessen, da Sie unattraktiv sind. Somit soll ich nun knapp 400 Euro für einen AUpgrade auf fx.12 bezahlen ohne einen Nutzen zu sehen (benötige keinen MAc Client, keine Facebook Spielerei, ...). Ich muss als Privater die MWSt. bezahlen und ich kann die SW nicht abschreiben - es bleiben also wiklich knapp 400 Euro für wenig Leistung.


    Das werde ich also nicht tun - wenn die AUsrichtung so bleibt werden wir wieder auf Outlook umsteigen für die Mails und David wird im Hintergrund die Automation bedienen.


    Tobit könnte sich das einfacher machen wenn man den Privatnutzern wie früher eine Home Edition anbietet. Mit der Basic Version geht das ja leider nicht, da kein Automation Port dabei ist.


    Tobit scheint sich die Arroganz jeoch leisten zu können ... Schade

    So, dank eurer Tips habe ich es mit Hilfe von 24/7, Automation.pdf, Webbox.pdf und googlen folgendes zu schaffen:


    Auslesen und Anzeigen per ''AUTOMATIONADDRESSSTATUS ..## funktioniert
    Setzen von Werten, bzw. schreiben auf den Bus via AUTO-Name_CTRL funktioniert auch ...


    ABER-1:
    Nach dem Aufruf des AUto-Formulars versucht die Webseite irgend etwas zu laden und landet dann auf einer Fehlermeldung
    Ups, Internet Explorer konnte keine Verbindung herstellen - die Adresse die er zu laden versucht ist
    xyz.&shy;homeserver.&shy;com:&shy;123/&shy;smartcontrol/&shy;I02C9147-&shy;_01.&shy;htm!bus_Adr=3/&shy;1/&shy;1&var_Wert=0


    Komisch dabei ist der Port 123 (müsste bei mir 81 sein, 123 ist der ALternativport). Woran liegt das? Ich habe im Verzeichnis die Dateien DefOK-Name_CTRL und DefError-Name_CTRL erzeugt, die Dateien sind leer, da ich ja nicht will, dass etwas angezeigt wird.


    Der Inhalt der Steuerdatei lautet:
    @@; var_Wert wird an bus_Adr gesendet
    @@dataformat automation@@
    @@an EIB:##bus_Adr##@@
    @@value ##var_Wert##@@
    @@jobende@@


    ABER-2
    Der zweite Punkt betrifft das Thema refresh. Dieses erzeugt bei mir ein furchtbaren blinken/blitzen wenn die Seite neu geladen wird. Wie kann ich das abstellen?


    Nächster Schritt:
    Ich habe mir überlegt eine Webseitenstruktur mit einem grafischen System (NetFusion Objects) zu erstellen und dann die Auto-Formulare aus der Seite heraus aufzurufen. Das müsste doch funktionieren oder? Damit wäre die Gestaltung deutluch vereinfacht.


    Danke und Gruß Holger

    Hallo Rene, Jens


    danke für das Video und die Hinweise, darauf bin ich gerade auch gestoßen und Dein Hinweis auf diese Vorgehensweisen hilft mir schon mal weiter. Ich bin grundsätzlich erst einmal froh endlich jemand zu finden, der sich auch mit Automation auseinandersetzt - völlig ergal ob EIB oder Homematik oder wa auch immer. Wir haben eine umfangreiche Visualisieung mit dem Dashboard in Gebrauch und nutzen David auch als Steuerzentrale für diverse keine AUtomationsaufgaben (Jalousien steuern, Szenen, ..).


    Was mir immer gefehlt hat war zum einen der Zugriff von aussen bzw. via diverser Endgeräte (z.B. iPad) über einen Browser. Das Beispiel mit der Web-Box hatte mich immer abgeschreckt weil es so übel aussah, daher habe ich mich nie damit beschäftigt. Als ich Deine Visu sah hat sich der Wunsch nun festgesetzt .. sowas will ich auch!


    Zu meinem Verständnins:
    Ich muss ersteinmal schaffen, dass ich auf den das State Archiv zugreiffen kann via .html Seiten die im TAS abgelegt sind, so wie im Vido gezeigt - richtig? Nächster Schritt ist dann diese .html-Dateien mit Dreamveaver soweit aufzuboren dass solch ein tolles Ergebnis wie bei Dir herauskommt. Aber alle Seiten die Du generiert hat liegen im TAS unter Automation und sind via Webbox zugänglich?


    Was mir unklar ist, warum man auf einer .html Seite im TAS mit ##AUTOMATIONSTATUS ## arbeiten muss und nicht einfacht die Java Befehle nutzen kann, so wie in einem Automations-Skript. Dort kann ich auf das State-Archive zugreiffen via


    var oBusAdr_Helligkeit = "5/0/0";
    var stateHell = getDeviceEntry(oBusAdr_Helligkeit); // Helligkeit auslesen


    oder Daten auf den Bus senden mit


    xreturn(oBusAdr_MinTemp, newValue); // und auf den Bus senden


    Also widme ich nun mal erst der Aufgabe das Beispiel in dem Video nachzuvollziehen.


    Noch zu Thema WebControl - wenn ich das richtig gesehen habe arbeitet diese Steuerung nur mit einem Homematik Server. Wir haben aber ein EIB System im Einsatz.


    Bis demnächst Grüße aus dem Schwarzwald


    Holger

    Hallo zusammen,


    ich bin sehr beeindruckt von der Idee eine individuell programmierte Web-Oberfläche zur Automations Visualisierung zu erstellen und würde mich gerne auch an solch ein Projekt wagen. Unsere Visualisierung basiert aktuell auf dem Dashboard, erste Versuche mit dem iPhone Dashboard funktionieren zwar teilweise, aber nicht wirklich befriedigend. Wir nutzen ein EIB System welches mit David verbunden ist.


    Was ich mir wünsche wäre, die Möglichkeit wie hier gezeigt eigene Web-Oberflächen zu generieren (z.B. via Dreamweaver) um eine plattformunabhängige Lösung zu haben.


    Was mir fehlt ist das Know-How des Zugriffs auf das StateArchiv über die hier erwähnten Methoden getautomationstatus und AUTO-Name-CTRL. Zuerst muss es mir gelingen auf diese Daten lesend und schreibend zuzugreifen. Erste Versuche über z.B. ##AUTOMATIONADDRESSSTATUS eib: 1/1/10## im html Code sind gescheitert.


    Wie kann ich per Web und .html Seite auf das Archiv zugreifen? Bin gespannt ob wir da hinbekommen können.


    Erst mal Danke und frohe Weihnachten


    Gruß


    Holger