Ankündigung

Einklappen
Keine Ankündigung bisher.

Ich möchte nur programmieren - wo finde ich hilfe?

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

    [EibStudio] Ich möchte nur programmieren - wo finde ich hilfe?

    Ich kann zwar in mehreren Sprachen programmieren (u.a. C, PhP, Phython und Java), aber mit dieser zusammengesetzten Pseudosprache komme ich überhaupt nicht zurecht. Als "Lerntyp4" bevorzuge ich das Lesen. Aber mit dem Handbuch komme ich nicht zurecht, weil es nicht wie ein "Lehrbuch" aufgebaut ist, sondern wie ein Nachschlagewerk mit fehlendem Input. Ein Nachschlagewerk geht davon aus, dass das Wissen bereits vorhanden ist und es nur als "Hilfswerk" zur Verfügung steht. Ich habe meine ETS fertig programmiert und möchte den EIB-PC² nur als Logikbaustein und IP-Router verwenden. Angeblich gibt es eine Hilfe im Programm, aber ich finde nur die Befehle werden vorgeschlagen und nicht die notwendigen Parameter, um die Befehle ausführen zu können. Selbst die fertigen Makros bekomme ich nicht zum Laufen. Gibt es zusätzliche INFO???
    Behind every great man is an even greater woman.

    #2
    Wir bieten auch regelmäßig Schulungen an. Die Befehle im Experten sind alle im Handbuch beschrieben, inkl Argumente.
    Im Handbuch findest du ab S. 220 einige Beispielprogramme für den Experten, ebenso sind kleine Beispielprogramme "verstreut" bei den einzelnen Funktionen zu finden.

    Hilfestellung ist für uns einfacher, wenn du schreibst, was du realisieren willst und wo du Hilfe benötigst.

    Kommentar


      #3
      Ich möchte Wetterdaten als Array über eine URL herunterladen - keine Karte, kein Icon, nur ein Array. Ich dachte, ich könnte den Befehl Httprequest oder Httpdownload verwenden. Ich glaube aber, dass eine Webseite erwartet wird und kein Array. Danach möchte ich einzelne Daten aus dem Array als GA-Wert an meine ETS zurückgeben. Ich dachte, das wäre sehr einfach. Ich könnte die Daten bis jetzt nicht herunterladen. Das ist sehr frustrierend.
      Behind every great man is an even greater woman.

      Kommentar


        #4
        Wenn die Gegenstelle HTTP spricht, und du die Daten nicht nur auf dem Webserver bereitstellen, sondern sie verarbeiten willst, dann brauchst du den httprequest.
        Die nächste Frage ist, in welchem Format die Daten vom Webserver kommen. Array kann alles sein, vmtl aber ein JSON-Array?
        Ist die Zuordnung zwischen Array-Index und GA, an die gesendet werden soll fest?

        Starte doch erstmal mit dem Webabfrage-Logikknoten. Dann brauchst du dich um Variablen usw. erstmal noch nicht kümmern sondern nur um einen Auslöser, wann der Request abgeschickt werden soll, z.B. mittels eines Zyklustimers.
        Das meiste relevante ist im Logikknoten selbst erklärt.​

        image.png

        Kommentar


          #5
          Guten Morgen,
          Wie gesagt, ich bin Programmierer und komme mit dem VISU nicht ganz klar. Ich habe nun versucht, mein Anliegen zusammenzufassen:

          Ich möchte Daten über eine API Datei einlesen und an einer GA weitergeben:


          API Adresse: https://api.openweathermap.org/data/2.5/weather?lat=53.7728&lon=8.9459
          &appid=4139bccf36af0************e89e2de&units=m etr ic&lang=de



          Ausdruck:
          {
          "coord":{"lon":8.9459,"lat":53.7728},
          "weather":[{"id":500, "main":"Rain", "description":"Leichter_Regen", "icon":"10d"}],
          "base":"stations",
          "main":{"temp":8.14,"feels_like":5.93,"temp_mi n":7 .79,"temp_max":8.14,"pressure":1010,"humidity":87, "sea_level":1010,"grnd_level":1010},
          "visibility":10000,
          "wind":{"speed":3.6,"deg":300},
          "rain":{"1h":0.41},
          "clouds":{"all":75},
          "dt":1745049510,
          "sys":{"type":1,"id":1840,"country":"DE","sunr ise" :1745036055,"sunset":1745087519},
          "timezone":7200,"id":6552609,"name":"Osterbruc h"," cod":200
          }

          Aus diesem JSON möchte ich zunächst NUR die Weather ID auslesen, also den Integer 500, und an eine GA übergeben:

          // Umwandlung Wettercode in 0–4

          if(id>800)then
          {write("weather-12/0/6"==1)} //Wolkig
          else{if(id=800)then
          {write("weather-12/0/6"==0)} // Sonnig
          else{if(id>600)then
          {write("weather-12/0/6"==4)} //Schnee
          else{if(id>500)then
          {write("weather-12/0/6"==3)} //Regen
          else{write("weather-12/0/6"==2)} // Gewitter
          endif

          Gibt es eine Möglichkeit zu überprüfen, welchen Wert die GA erhalten hat?






          Behind every great man is an even greater woman.

          Kommentar


            #6
            falls ich diche richtig verstehe:
            grundsätzlich ist der write und die Befehlsstruktur falsch:
            -> write(GA,Wert)
            -> else{if( gibt es nicht
            also

            write("weather-12/0/6","weather-12/0/6"==3)

            den Wert von GAs kannst du im Busmonitor oder noch besser im Debugger (auch Variablen) ansehen - die zu beobachtenden Objekte auswählen und dann siehst zu den Wert des Objektes

            Ich würde an deiner Stelle den Code von Makros ansehen - damit du den grundsätzlichen Aufbau siehst...
            EPIX
            ...und möge der Saft mit euch sein...
            Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

            Kommentar


              #7
              Als du mit "C, PhP, Phython und Java" angefangen hast - war dein erstes Programm eine komplexe Zerlegung einer Web-Abfrage?

              Also, ich würde mit einfachen Beispielen anfangen, wie sie in der KNX-Welt üblich sind, um mich in die ungewohnte Sprache und Entwicklungsumgebung reinzufühlen.

              Kommentar


                #8
                Tja, da hast du ja Recht! Ich wollte schon rennen, bevor ich laufen lernte!

                Nur zum Verständnis, ich benutze das EIB-Studio zum Programmieren und das EIBPC² dient als Gateway zwischen dem EIB-Studio und der ETS? Kann ich mit dem EIB-Studio üben (z.B. unterwegs...) ohne das EIBPC²?
                Behind every great man is an even greater woman.

                Kommentar


                  #9
                  Gateway zur ETS? Nein, die ETS spielt überhaupt keine Rolle.

                  EibStudio ist die IDE. Dort kannst du programmieren und kompilieren.
                  Hingegen simulieren / ausführen / debuggen kannst du dort nicht.
                  Also brauchst du deinen EibPC, um das Programm auszuprobieren, nachdem du es vom EibStudio dorthin überspielt hast.

                  p.s.
                  Wenn das EibStudio mit deinem laufenden EibPC verbunden bist, dann kannst du etwas ähnliches wie debuggen, nämlich zur Laufzeit den Zustand von Variablen ansehen - und sogar ändern.
                  Zuletzt geändert von DerRenovator; 21.04.2025, 00:31.

                  Kommentar


                    #10
                    Die ETS ist die Software um KNX-Geräte (alles, was ne Bus-Klemme hat) zu parametrieren. Die braucht es in jeder KNX-Installation zumindest einmalig zum Einrichten. Danach läuft das System alleine und die ETS braucht es nur, wenn man was ändern will.

                    Der EibPC ist ein KNX-Gerät, das u. a. Logik ausführen kann und damit das KNX-System "intelligenter" macht. Um den EibPC zu programmieren, brauchts Du das EibStudio.

                    EibStudio und ETS haben erst mal nichts miteinander zu tun.
                    ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

                    Kommentar


                      #11
                      Ich bin immer noch dabei. Da ich irgendwie meinen "Pseudocode" nicht zum Laufen bekomme, habe ich mir gedacht, ich mache es wie Foobar0815 mir vorgeschlagen hat und benutze die "Logik".

                      > Mein Zyklus funktioniert, da ich alle 6 Stunden eine Fehlermeldung bekomme.

                      > Mein Problem ist immer noch, dass ich den JSON aus dem Internet nicht fehlerfrei einlesen bzw. weiterleiten kann.

                      Also, mein kompletter URL-Code ist:
                      https://api.openweathermap.org/data/...pid=4139bccf36 af0************e89e2de&units=metric&lang=de

                      Wenn ich das Handbuch richtig verstanden habe, ist die Adresse:
                      https://api.openweathermap.org/data/2.5/weather

                      Und so soll die Query aussehen:
                      lat=53.7728&lon=8.9459%0b&appid=4139bccf36af0***** *******e89e2de&units=metric&lang=de
                      image.png

                      Oder kann ich einfach den kompletten Code in die Adresse kopieren und meine Query frei lassen?


                      Ich kann den Header und den Body leer lassen, richtig?

                      Meine Ausgabe ist auf Knoten 3 oder 4, richtig? Ich habe Node 3 verwendet - Datentyp C1400.
                      image.png

                      Bei meiner Ausgabe (Knoten 3) muss ich den JSON-String auswerten. Ich glaube, das ist eine weitere Fehlerquelle. Meine JSON-Pointer-Anfrage ist das erste Element "id" aus dem Array "weather".
                      Ich habe als JSON-Pointer "/weather/0", wenn ich mir das Video "Tankkönig" anschaue, hätte ich die JSON-Pointer-Anfrage so aufgebaut:
                      lat=53.7728&lon=8.9459%0b&appid=4139bccf36af0***** *******e89e2de&units=metric&lang=de/weather/0
                      oder nicht?

                      image.png

                      Noch etwas, ist es möglich zwei "strings" mit "größer" oder "kleiner" zu vergleichen oder muss ich erst den Datentyp ändern?
                      Behind every great man is an even greater woman.

                      Kommentar


                        #12
                        Meine Fehlermeldung:
                        image.png
                        Behind every great man is an even greater woman.

                        Kommentar


                          #13
                          Wenn das Programm läuft, kannst du in der Logik oben auf den Käfer drücken und den aktuellen Stand der Ausgänge der Logikknoten abfragen.
                          Fange vorne beim WebRequest an. Komtm da als HTTP Status 200 zurück? Und der passende Body?

                          Am Logikknoten hast du den Antwort-Header verbunden. Du willst aber den Antwort-Body. Das erklärt auch, warum das JSON-Parsen fehlschlägt.

                          Dein JSONPointer /weather/0 liefert dir wiedrrrum ein JSON-Objekt:
                          Code:
                          {"id":500, "main":"Rain", "description":"Leichter_Regen", "icon":"10d"}
                          Du kannst auch gleich /weather/0/id verwenden, wenn die ID relevant ist.

                          Kommentar


                            #14
                            Vielen Dank, ich habe das Programm gestartet. Ich könnte die ID in das U16 Format umwandeln und dann wieder als Zahlen 1-6 ausgeben.

                            Ein Array beginnt mit 0, ich dachte /weather/0 gibt mir die erste Position des Arrays, also "ID", warum brauche ich /weather/0/ID? Wie bekomme ich die Description? /weather/0/description?

                            Danke für dein Geduld!
                            Behind every great man is an even greater woman.

                            Kommentar


                              #15
                              weil /weather/ das Array ist, /weather/0 das erste Element, hier das o.g. Objekt und /weather/0/id den numerischen Wert 500.

                              Kommentar

                              Lädt...
                              X