Siemens AWL mit Javascript / PHP abfragen

  • Klar hab ich Power^^ bei deiner Vorarbeit wäre es doch schade, nicht daran weiter zu machen :) - setze mich mal ran

  • Werde zum späteren Nachmittag dann eine Seite für einen Raum, nach dieser Vorgabe erstellen. Wie hast du dir dann das Javascript für die Verarbeitung vorgestellt?

  • Musst ja nur bei jedem {toggle] noch die ID des jeweiligen Feldes noch rein schreiben..
    Hier mal das Komplette HTML. JS und CSS solltest du in eigene Dateien auslagern.. bei mir funktioniert es einwandfrei

    Hoffe das ist verständlich erklärt alles :)

    3 Mal editiert, zuletzt von wolf (2. Juni 2015 um 14:49)

  • Da hat sich aber jemand Mühe gemacht... Weiß gar nicht, wie ich mich bedanken soll :-). Nach der Arbeit versuche ich es gleich mal! Danke!

  • fange jetzt erst an :) ... Arbeit musste mal kurz vor gehen. Gestern konnte ich dazwischen das hier immer wieder rein mogeln. Ging heute leider nicht. Aber jetzt...
    Bier auf, Shisha an.. los gehts

  • Guten Morgen,

    bin noch nicht 100% dahinter gestiegen. Sag mal kannst du mir vielleicht zeigen, wie genau die Daten auszusehen haben, welche ich ich per floorLoader.php schicke? Glaube dann ergründet sich mir alles. Danke dir.

  • Mein floorLoader.php antwortet bei mir mit

    Code
    {"schalter_02": 0, "schalter_06": 1}
    Code
    {"schalter_03": 1, "schalter_91": 1}


    Je nach dem welches Geschoss gefordert ist..

    du kannst mal testweise dir die Daten anzeigen wenn sie da sind (am besten nach 'JSON.parse()'

    JavaScript
    console.log(json)

    dann landen die in der Konsole (strg+shift+i)

  • Das wars gar nicht. Hatte mein floorLoader zu sehr verbogen^^ Jetzt gehts. Arbeite das jetzt in meiner Visu ein. Vielen Dank! Wenn ich das fertig habe, mache ich mein SVG-Grundriss weiter :)

    Wenn ich so weit durch bin, gib ich dir dann mal eine Adresse, ums zu sehen^^

    EDIT: Sehr eigenartig. Habe Fehler beim holen der Daten "Error while pasring JSON data! SyntaxError: Unexected token { " Wenn ich lokal diese hole, funktionierts, aber nicht vom externen SIemens-Webserver. Hab zum Test auch mal nur deine zwei Beispielschalter vom EG und OG genommen... komisch

    genau die gleiche Datei, wenn ich nur mal floorLoader.php öffne:
    24 {"schalter_02": 0, "schalter_06": 1} 0 -> der macht Zahlen vorn und hinten? Beim lokalen nicht.

    HTML
    686 { "EG_AB_LE01_Leistung": 1, "EG_AB_LE01_1Schalter": 0, "EG_AB_LE01_2Schalter": 0, "EG_AB_LE07_Leistung": 1, "EG_AB_LE07_1Schalter": 0, "EG_AB_LE07_2Schalter": 0, "EG_AB_LE03_1Schalter": 0, "EG_AB_SD01": 1, "EG_AB_LE01_Leistung": 1, "EG_AB_LE01_1Schalter": 0, "EG_AB_LE01_2Schalter": 0, "EG_AB_LE07_Leistung": 1, "EG_AB_LE07_1Schalter": 0, "EG_AB_LE07_2Schalter": 0, "EG_AB_LE03_1Schalter": 0, "EG_AB_SD01":1, "EG_AR_SD04": 1, "EG_AR_LE01": 0, "EG_AR_RM01_hoch": 0, "EG_AR_RM01_runter": 0, "EG_BD_SD01": 0, "EG_BD_SD06": 1, "EG_BD_LE01": 0, "EG_BD_RM01_hoch": 0, "EG_BD_RM01_runter": 0, "EG_FL_SD01": 1, "EG_FL_SD06": 0, "EG_FL_LE01": 0, "EG_FL_LE03": 1, "EG_FL_LE14": 0, "EG_KU_LE01": 0, "EG_KU_LE02": 0, "EG_KU_LE03": 0, "EG_KU_SD01": 1, "EG_KU_SD05": 1, "EG_KU_SD09": 0, "EG_KU_SD10": 1, "EG_KU_RM01_hoch": 0, "EG_KU_RM01_runter": 0, "EG_KU_RM02_hoch": 0, "EG_KU_RM02_runter": 0, "EG_TR_SD01": 0, "EG_TR_LE01": 0, "EG_TR_RM01_hoch": 1, "EG_TR_RM01_runter": 0, "EG_WZ_LE01": 0, "EG_WZ_LE02": 0, "EG_WZ_LE03": 0, "EG_WZ_LE08": 0, "EG_WZ_LE09": 0, "EG_WZ_LE10": 0, "EG_WZ_SD01": 1, "EG_WZ_SD03": 1, "EG_WZ_SD05": 0, "EG_WZ_SD07": 1, "EG_WZ_SD10": 1, "EG_WZ_RM01_hoch": 0, "EG_WZ_RM01_runter": 0, "EG_WZ_RM02_hoch": 0, "EG_WZ_RM02_runter": 0, "EG_WZ_RM03_hoch": 0, "EG_WZ_RM03_runter": 0, "EG_WZ_RM04_hoch": 0, "EG_WZ_RM04_runter": 0, "EG_Z1_LE01": 0, "EG_Z1_LE02": 0, "EG_Z1_LE03": 0, "EG_Z1_SD02": 1, "EG_Z1_SD04": 1, "EG_Z1_SD07": 1, "EG_Z1_RM01_hoch": 0, "EG_Z1_RM01_runter": 0, "EG_Z1_RM02_hoch": 0, "EG_Z1_RM02_runter": 0, "EG_Z1_RM03_hoch": 0, "EG_Z1_RM03_runter": 0 } 0

    Der Vogel generiert irgendwelche Zahlen :wacko:

    Habe es mir einfach gemacht:

    [...]


    [...]

    kürze einfach nach und hinter der Klammer das Zeug raus ^^

    Wenn es nun richtig verstanden habe, dann wird derzeit noch nichts gesendet bei Betätigung des Toogle-Schalters?

    9 Mal editiert, zuletzt von Lostb1ker (3. Juni 2015 um 14:45)

  • Genau, gesendet wird noch nix..
    du brauchst eine funktion die die buttons überwacht ob sie verändert wurden
    In jQery heist diese '$element.change( callback )'.
    Das ganze packst du dann in eine Funktion die du immer wieder aufrufen kannst und somit nach jedem nachladen einfach ausführen kannst..
    Diese Funktion ruft dann eine zum sichern der Daten auf

    Das ganze kannst du dann nach dem einfügen des Templates (append) immer aufrufen

    JavaScript
    $(target).append(render_list(floor, json));//template füllen und ausgeben
    
    
    
    
              setTimeout(init_toggle, 20);//kurz warten (20ms) damit auch alles da ist.. dann den button überwachen


    Bei save() habe ich das Objekt mal mitgegeben damit man z.B. ein loading-icon zeigen kann währen die Daten an den server gesendet werden und dann nach dem senden wieder entfernen.. ;)

    ! Das Template für den on/off switch muss noch leicht geändert werden..
    In zeile 4&6 wurde jeweils das Attibut 'value' hinzugefügt, was dann an den Server gesendet werden kann als neuer Status ..(Zeile 8 im JS oberhalb)

    HTML
    <!-- TEMPLATE FÜR DEN ON/OFF SWITCH (muss nicht verändert werden) -->
      <template data-template="toggle">
        <div class="switch">
          <input id="radio-a-{id}" type="radio" value="0" name="{id}" {off}/>
          <label for="radio-a-{id}">Off</label>
          <input id="radio-b-{id}" type="radio" value="1" name="{id}" {on}/>
          <label for="radio-b-{id}">On</label>
          <span class="toggle-outside"><span class="toggle-inside"></span></span>
        </div>
      </template>

    4 Mal editiert, zuletzt von wolf (3. Juni 2015 um 20:23)

  • Hallo,

    bin gerade beim save -> senden. Habe es mal versucht über ajax -> GET und Post probiert, aber habe keinen Zugriff. Hast du eine Idee, wie ich nun schlussendlich den Befehl absende?

  • Ähm, kannst du mir nochmal ein gaaaaanz simples Beispiel zeigen, wie du bisher die Daten via HTML an den Server gesendet hast? (also das Formular dazu)

  • Hallo :)

    also so funktioniert es ja:

    HTML
    <form target="hiddenIFrame" method="post" action="http://192.168.???.???/awp/Haus/index.html" method="GET">
      <input class="Z1_Button1" type="submit" value="OFF">
      <input type="hidden" name='"DB_OG_Ansteuerung_PLC".WZ.LE06_off' value="1">   
     </form>

    jetzt habe ich mir es so gedacht:

    Leider erhalte ich aber bei der Diagnose einen Fehler:

    "XMLHttpRequest cannot load http://192.168.???.???/awp/Haus/index.html?%27DB_EGAnsteuerung_PLC%27.AR_LE01_on. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access."

    Danke für deine Hilfe!

    Versuche es damit zu lösen:
    http://aktuell.de.selfhtml.org/artikel/javascript/wertuebergabe/

  • Kannst du mir kurz mal eine Beispiel ID sagen?

    ...zum daten senden müssen wir wohl auch auf PHP umsteigen.
    Sendest du immer '1' als value? (also bei an und aus?)

    Hiermit gehts an? '<input type="hidden" name='"DB_OG_Ansteuerung_PLC".WZ.LE06_on' value="1">'
    Und hiermit aus? '<input type="hidden" name='"DB_OG_Ansteuerung_PLC".WZ.LE06_off' value="1">'

    Das mit den frames ist übelster Pfusch..

    saveValue.php

    So kann man's machen .. :D
    Zeilen 18 + 19 muss man halt nochmal machen.. dafür bräucht ich deine ID

    6 Mal editiert, zuletzt von wolf (7. Juni 2015 um 13:35)

  • Hallo,

    Beispiel-ID wäre:

    "DB_EG_Ansteuerung_PLC".FL.LE01_off

    -> stimmt. Ich setze den jeweiligen Zustand immer auf "1" -> also für jeden Zustand, gibt es eine ID -> on oder off (bei Schaltern) und hoch / runter (bei Rollos).

    Muss erstmal durchblicken, was hier alles passiert. Möchte nicht einfach kopieren -> wills verstehen :)

    Irgendwie mag mein Browser nicht die Zeile:

    JavaScript
    function save(key, value, $object = null){

    -> also $Object = null -> "Uncaught SyntaxError: Unexpected token ="

    3 Mal editiert, zuletzt von Lostb1ker (8. Juni 2015 um 09:52)

  • Lösch das = null einfach weg, wird hier nicht gebraucht.
    Das macht man wenn man variablen an funktionen mit einem standart Wert befüllen möchte wenn diese var nicht übergeben wurde.. verstehst du? :D

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!