Ankündigung

Einklappen
Keine Ankündigung bisher.

XXANALOGUHR und XXCUST_VERSION

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    XXANALOGUHR und XXCUST_VERSION

    Hallo Zusammen,

    versuche mich gerade in xxAPI2 einzuarbeiten, allerdings mit vielen Schwierigkeiten.

    Habe xxAPI2 in mein Projekt eingebunden und in

    xxAPI_INIT alle XXMARK usw. eingetragen

    Die Anzeige funktioniert so weit ganz gut.


    Nun möchte ich aber so Dinge wie XXANALOGUHR und XXCUST_VERSION usw. hinzufügen

    In der custom.js habe hierzu folgendes eingetragen:
    Code:
    xxAPI.functions.XXCUST_VERSION = function ( oarg ) {
        debug( 2 , "XXCUST_VERSION" , oarg );
        oarg.item.text = "V 2.1";
    }
    
    hs.functions.element_loader("cache/station-clock.js");
    xxAPI.functions.XXANALOGCLOCK = function( oarg ) {
        var _id = "clock_" + oarg.item.uid;
        oarg.item.html = "<canvas id='" + _id + "' width='" + oarg.item.width + "px' height='" + oarg.item.height + "px' />";
        oarg.item.xxapi.analogclock = new StationClock(_id);
        $.extend(oarg.item.xxapi.analogclock,{
            "body" : StationClock.SmallWhiteBody,
            "dial" : StationClock.GermanHourStrokeDial,
            "hourHand" : StationClock.PointedHourHand,
            "minuteHand" : StationClock.PointedMinuteHand,
            "secondHand" : StationClock.BarSecondHand,
            "boss" : StationClock.RedBoss,
            "minuteHandBehavoir" : StationClock.BouncingMinuteHand,
            "secondHandBehavoir" : StationClock.OverhastySecondHand
        });  
        oarg.item.next_update = 1;
        oarg.item.update_code = function ( oarg ) {
            oarg.item.xxapi.analogclock.draw();
            oarg.item.next_update = $.now() + 100;
        };
    }

    In der xxAPI_INIT habe ich ein Textfeld erstellt: (Die Datei ist nach dem Upload auch erreichbar!)
    Code:
    XXEXECUTE*hs.functions.element_loader(?cache/station-clock.js?);
    und auf der VisuSeite ein weiteres Textfeld erstellt:
    Code:
    XXANALOGCLOCK*
    Leider wird bei mir nur das Textfeld mit dem Text angezeigt und keine Uhr :-(
    Die Anleitung hier habe ich schon befolgt: https://knx-user-forum.de/forum/play...-js-custom-css
    Vermute dass ich noch ein generelles Problem habe.
    Das gleiche Problem habe ich mit XXCUST_VERSION

    Was mache ich FALSCH? Wer kann mir helfen?

    Danke
    Gruß
    Marcus

    #2
    Zitat von MaPa Beitrag anzeigen
    Hallo Zusammen,
    .........
    Was mache ich FALSCH? Wer kann mir helfen?

    Danke
    Gruß
    Marcus
    Hallo Marcus,
    so schaut bei mir die custom.js aus:

    /*
    * in Visu HS Experte: Statischer Text: XXANALOGCLOCK*
    */
    hs.functions.element_loader("js/moment.min.js");
    hs.functions.element_loader("js/moment-timezone-with-data.min.js");
    hs.functions.element_loader("js/station-clock.tz.js");

    xxAPI.functions.XXANALOGCLOCK = function( oarg ) {
    var _id = "id_bahnhofsuhr";
    oarg.item.html = "<canvas id='id_bahnhofsuhr' width='128px' height='128px' style='width:64px; height:64px;'/>";
    oarg.item.xxapi.analogclock = new StationClock(_id);
    $.extend(oarg.item.xxapi.analogclock,{
    "body" : StationClock.SmallWhiteBody,
    "dial" : StationClock.SwissStrokeDial,
    "hourHand" : StationClock.PointedHourHand,
    "minuteHand" : StationClock.PointedMinuteHand,
    "secondHand" : StationClock.HoleShapedSecondHand,
    "boss" : StationClock.NoBoss,
    "minuteHandBehavoir" : StationClock.BouncingMinuteHand,
    "secondHandBehavoir" : StationClock.BouncingSecondHand
    });
    oarg.item.next_update = 1;
    oarg.item.update_code = function ( oarg ) {
    oarg.item.xxapi.analogclock.draw();
    oarg.item.next_update = $.now() + 500;
    };
    };

    schau ziemlich gleich aus.

    In der Visu habe ich ein statisches Textfeld (64x64 pixel) mit dem Text "XXANALOGCLOCK* definiert.

    das javascript habe ich im Unterverzeichnis "js" gelegt. JS ist dort wo das "custom.js" liegt (als Unterverzeichnis.

    DIE js.datei heißt bei mir: station-clock.tz.js

    Ich hab das schon lange eingebaut. Ich hoffe mich an alles zu erinnern.


    Hans
    Zuletzt geändert von TirochH; 26.10.2016, 13:40.
    Hans

    Kommentar


      #3
      Hallo Hans,

      habe jetzt genau dein Beispiel kopiert und alles abgeändert, aber sämtlicher JS Code wird nicht angezeigt.

      Auch wenn ich das Demo Projekt einspiele, sehe ich keine Analoguhr sondern nur den Platzhalter XXANALOGUHR* -> Kann es sein, dass die Analoguhr im Demoprojekt auch nicht funktioniert?

      Auch der Webbrowser funktioniert nicht?



      Gruß
      Marcus

      Zuletzt geändert von MaPa; 29.10.2016, 15:48.

      Kommentar


        #4
        DEMO PROJEKT ohne funktionierende Analoguhr
        xxAPI_Uebersicht.png
        Angehängte Dateien

        Kommentar


          #5
          Zitat von MaPa Beitrag anzeigen
          DEMO PROJEKT ohne funktionierende Analoguhr
          xxAPI_Uebersicht.png
          Kann schon sein daß im DEMO-Projekt Analoguhr nicht funktioniert. Habe eigene Lösung die nicht auf DEMO- Projekt basiert.

          Hans
          Hans

          Kommentar


            #6
            Hab jetzt im debug-modus nachgeschaut und nochmal ein anderes Beispiel aus dem Forum eingebunden.
            Er meldet immer diesen Fehler: unexpected token `?`

            xxAPI_Fehler.png
            Angehängte Dateien

            Kommentar


              #7
              Hi Mapa

              kann dir zwar leider nicht weiter Helfen. Ich stehe allerdings genau vor dem selben zwei Problem wie du.
              habe auch schon alles mgliche probiert, bekomme es allerdings auch nicht hin.

              Neue Bitmap.jpg

              Kommentar


                #8
                Also ich hab es hinbekommen, warum weiß ich noch nicht, aber was ich getan habe ist:

                im xxAPI2 Baustein remanent=0 gesetzt und das Verzeichnis von hsav auf xxapi geändert.

                wenn ich remanent=1 setze, dann geht es nicht mehr.

                somit bleibt vorerst auf meiner Spielwiese remanent=0

                Finde es schade das der Support für das mächtige xxAPI2 so schwach ist.
                xxAPI hat es mir angetan, wenn man sich mal eingearbeitet hat, kann man viele nette Dinge machen.

                Werde demnächst meine Erfolge zeigen...

                Kommentar


                  #9
                  Zitat von MaPa Beitrag anzeigen
                  Hab jetzt im debug-modus nachgeschaut und nochmal ein anderes Beispiel aus dem Forum eingebunden.
                  Er meldet immer diesen Fehler: unexpected token `?`

                  .....
                  Hi Marcus,

                  bitte probier es noch einmal mit folgenden einfachen Beispiel.

                  Ich möchte nur einen Text ("2.1.c") von der Datei "custom.js' in die VISU bekommen. Ich hab es auch bei mir nochmals getestet.

                  Erstens Eintrag In 'custrom.js'

                  Code:
                  /*
                   * in Visu HS Experte: Statischer Text: XXCUST_TEST*
                   */
                  xxAPI.functions.XXCUST_TEST = function ( oarg ) {
                      debug( 2 , "XXCUST_TEST" , oarg );
                      oarg.item.text = "2.1.c";
                  };

                  Im HS-Experten gib irgendwo auf der VISU folgendes ein:

                  fullsizeoutput_f87.jpeg


                  Dann wird bei der VISU "2.1.c" ausgegeben. Das ist ein sehr simples Beispiel. Sollte aber helfen das Problem zu finden.

                  Wichtig ist weiters, in welchem Verzeichnis die ganzen Dateien liegen müssen.

                  Der Ordner ist im Experten unter "Extras/Einstellungen/Projektordner" zu finden. Von dort noch in den Subordner der wie Dein Projektname heisst. Von dort noch in den Subordner "hsupload" dann noch in einen selbstgewählten Ordnerpfad. Dieser selbstgewählte Ordnerpfad ist unbedingt notwendig. Wenn ich mich zurückerinnre glaub ich, daß es auch bei mir die Fehlerursache war. Du darfst nicht direkt unter "hsupload" Deine custom.js haben.

                  Bei mir heisst der Ordnerpfad ..../Gira/HS+FS Experte 4.4/Projekte/Whng170/Whng170/hsupload/xxapi

                  Der Pfad im Browser ist <ip-adresse>/opt/xxapi/start.htm. Der Unter-Pfad - der bei mir mit xxapi bezeichnet ist - muß auch im Ordnerpfad der gleiche Name (= xxapi) sein.

                  Wenn das mit diesem einfachen Beispiel funktioniert, müßten Deine eigenen Beispiele auch laufen.

                  Hans
                  Zuletzt geändert von TirochH; 02.11.2016, 23:20.
                  Hans

                  Kommentar


                    #10
                    Hallo Hans,
                    es funkitioniert ja auch so weit. Nur mit remanent=1 im Logikbaustein geht es nicht mehr. Kannst du dir das erklären?

                    Gruß
                    Marcus

                    Kommentar


                      #11
                      Zitat von MaPa Beitrag anzeigen
                      Hallo Hans,
                      es funkitioniert ja auch so weit. Nur mit remanent=1 im Logikbaustein geht es nicht mehr. Kannst du dir das erklären?

                      Gruß
                      Marcus
                      warum remanent und welcher Logikbaustein?

                      Remanent speichert Daten über Neustart-Zyklen des Homeservers. Wenn Du diese Daten nicht kennst oder nicht unter Kontrolle hast, dann gibt es auch "unkontrollierbare" Ergebnisse. Dann ist auch klar warum es nicht funktioniert.

                      Hans
                      Zuletzt geändert von TirochH; 03.11.2016, 07:59.
                      Hans

                      Kommentar


                        #12
                        Hallo Hans, das habe ich schon weiter oben beschrieben. Siehe Beitrag von gestern 22:44Uhr

                        Standardmäßig ist beim Logikbaustein xxAPI unter einem Eingang "remanent=1" mit dieser Einstellung gehen die JavaSkripts nicht. Auch wenn man beim Übertragen den Remanent Speicher löscht. Natürlich lösche ich auch nach jeder Übertragung den Browsercache.
                        Wenn ich remanent=0 setze geht alles.

                        Kommentar


                          #13
                          Zitat von MaPa Beitrag anzeigen
                          Hallo Hans, das habe ich schon weiter oben beschrieben. Siehe Beitrag von gestern 22:44Uhr

                          Standardmäßig ist beim Logikbaustein xxAPI unter einem Eingang "remanent=1" mit dieser Einstellung gehen die JavaSkripts nicht. Auch wenn man beim Übertragen den Remanent Speicher löscht. Natürlich lösche ich auch nach jeder Übertragung den Browsercache.
                          Wenn ich remanent=0 setze geht alles.
                          Sorry, hab ich überlesen. Du und ich haben gleichzeitig geantwortet. Meine Antwort zu verfassen dauerte nur etwas länger.

                          Soweit ich das Problem verstehe, ist Dein Remanent-Speicher am Homeserver korrumpiert. Das heißt wenn du mit Remanent-Speicher startest, kriegst Du einen Fehler.
                          Ich gehe davon aus, daß DU mit dem Logikbaustein xxAPI das Kommunikationsobjekt (KO) xxAPI meinst (dynamischer Text).
                          Ist das erste Feld (unsichtbar) ganz links oben am Start-Schirm von xxAPI. Dieser Schirm wird im Experten unter "Stammdaten"/"Benutzer" und hier beim in der Visu von Dir verwendeten Benutzer unter dem Karteireiter "Benutzerrechte" unter Feld "Visu" angegeben.

                          Du mußt folgendes machen, um aus der von Dir geschilderten "Sackgasse" herauszukommen:
                          1. Das xxAPI KO (Kommunikationsobjekt) immer auf remanent = 1 (= ist ein Häckchen und keine 1) gesetzt lassen.
                          2. Beim "Projekt übertragen", Häckchen Remanent-Speicher löschen setzen (2. Spalte, 4. Zeile), das heißt das KO xxAPI braucht nicht auf den korrumpierten Remanent-Speicher-Inhalt zugreifen. Es läuft wie KO xxAPI ist Remanent ohne Häckchen (da Remanent-Speicher am Homeserver geleert). Das gesetzte Remanent-Häckchen beim KO stellt aber sicher, das jetzt der "neue" Inhalt vom KO xxAPI remanent am Homeserver - aber nicht korrumpiert - gespeichert wird.
                          3. Jetzt überträgst Du nochmals das Projekt, jetzt aber ohne "Remanent"-Häckchen beim "Projekt-Übertragen"-Schirm. Das Häckchen das ich jetzt meine, ist in der 2. Spalte, 4. Zeile.
                          4. Beim nächsten Projekt übertragen ist wieder alles OK. Du darfst nicht zu schnell starten. Der Home-Server braucht eine gewisse Zeit um den Remanent-Speicher zu aktualisieren (kann bis zu 15 Minuten dauern ==> siehe Hintergrundinfo am Ende)
                          Ich hoffe, meine Anleitung ist verständlich. Mit remanent definierte Werte nehmen beim Start/Restart immer die Inhalte vom Remanent-Zwischenspeicher des Homeservers. Wenn fehlerhafte Werte (d.h. nicht komplett und nicht kohärent ) enthalten sind, ensteht dann daraus die von Dir geschilderte Fehlersituation ("Sackgasse"). Und "nix" geht mehr ("nix" = wienerisch).

                          Meine Anleitung ist meiner Ansicht nach die einzige Möglichkeit das zu reparieren.

                          Hans

                          Hier noch ein bißchen Hintergrundinfo zum Remanent-Speicher am GIRA HS:
                          Der Remanent-Speicher des Homeservers ist ein Teil des Flash-Speichers, welcher die variablen Objekte aufnimmt, die nach einem Reboot (auch durch Stromausfall) des Homeservers noch vorhanden sein müssen. Dies sind die als „remanent“ markierten Kommunikationsobjekte, remanente Speichervariablen, Bausteine der Logikblätter, die verschiedenen Archive und Listen, sowie die Daten für die Anwesenheitssimulation.
                          Da Flash-Speicher langsam sind und eine begrenzte Lebenszeit haben, was die Anzahl von Schreibzyklen betrifft, werden beim
                          Homeserver die remanenten Objekte im RAM gespeichert, wo sie natürlich z.B. bei einem Stromausfall verloren gehen würden. Um dies zu vermeiden, werden die Daten alle 15 Minuten in den Flash-Speicher gespeichert. Im ungünstigsten Fall gehen also maximal 15 Minuten verloren (z.B. in einem Archiv). Diese Zeit kann sich im Fall des Speicherns während eines unkontrollierten Herunterfahren des Homeservers auf 30 Minuten erhöhen.
                          Die Objekte werden abwechselnd alle 15 Minuten in einen von zwei dafür vorgesehenen Flash-Speicher-Bereiche abgespeichert, was, von einem Hardware-Defekt mal abgesehen, sicherstellt, dass immer ein Bereich korrekt gespeichert ist. Fällt nämlich der Strom gerade während des Abspeicherns aus, dann ist die Abspeicherung nicht zu gebrauchen da die Daten nicht komplett und nicht kohärent sind.
                          Zuletzt geändert von TirochH; 03.11.2016, 16:28.
                          Hans

                          Kommentar


                            #14
                            Hallo Hans,

                            wie geschrieben, meinte ich den Logikbaustein xxAPI2, dort unter Option gibt es den Wert: remanent=1 (standardmäßig)
                            xxAPI.PNG
                            Deine Anleitung habe ich befolgt, hat keine Veränderung gebracht.

                            Das Problem besteht weiterhin, bei "remanent=1" dann funktionieren die JavaScripts nicht, bei "remanent=0" geht soweit alles.


                            @Nils
                            kannst du hier vielleicht helfen?

                            Danke

                            Gruß
                            Marcu

                            Kommentar


                              #15
                              Hallo MaPa

                              soweit ich weiß soll der Eingang vom Loader nur noch bei bedarf getriggert werden und nicht mit System nach Start immer 1
                              und sollte bei Eingang 5 nicht das ausgewählt design stehen?

                              Gruß Marco

                              Kommentar

                              Lädt...
                              X