Siemens AWL mit Javascript / PHP abfragen

  • 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 :)

  • 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?

  • 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>
  • 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?

  • 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…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

  • 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 ="

  • 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!