Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. Test Adapter flexcharts - Stapeldiagramme und mehr

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Test Adapter flexcharts - Stapeldiagramme und mehr

    This topic has been deleted. Only users with topic management privileges can see it.
    • da_Woody
      da_Woody @jrbwh last edited by

      @jrbwh "sondern muss es per Javascript oder Blockly erstellen."
      sorry, das ist für mich kein adapter.

      jrbwh sigi234 2 Replies Last reply Reply Quote 0
      • jrbwh
        jrbwh @da_Woody last edited by

        @da_woody Danke für Deine Rückmeldung. Aus meiner Sicht stellt dieser Ansatz Funktionalität für ioBroker bereit, die bisher nicht verfügbar ist. Es wird das volle Potenzial von Apache ECharts erschlossen.

        Z.B. ist es mir bisher nicht gelungen, Stapeldiagramme in ioBroker zu erzeugen. Auch im Forum konnte mir niemand eine Lösung zeigen. Mit Grafana mag das gehen, aber das funktioniert weitgehend außerhalb ioBroker und ich wollte bei ECharts bleiben.

        Mit flexcharts ist das nun innerhalb von ioBroker möglich. Und sehr viele weitere Arten von Darstellungen sind ebenfalls nutzbar, ECharts hat da ja eine große Bandbreite.

        Die Schnittstelle von flexcharts ist zwar etwas ungewöhnlich, eröffnet aber auch sehr viele Möglichkeiten. Deshalb sehe ich das schon als Adapter.

        Wenn Du eine einfachere Möglichkeit siehst, das volle Potenzial von Apache ECharts für ioBroker verfügbar zur machen, bin ich daran sehr interessiert.

        1 Reply Last reply Reply Quote 0
        • sigi234
          sigi234 Forum Testing Most Active @da_Woody last edited by

          @da_woody sagte in Test Adapter flexcharts 0.0.1 - Stapeldiagramme und mehr:

          @jrbwh "sondern muss es per Javascript oder Blockly erstellen."
          sorry, das ist für mich kein adapter.

          Sehe ich auch so. Blicke da nicht durch.
          Gibt es ein Blockly Beispiel? Wie bekomme ich die History Daten da rein?

          jrbwh 1 Reply Last reply Reply Quote 1
          • jrbwh
            jrbwh @sigi234 last edited by

            @sigi234 Danke für Deine Rückmeldung.
            Leider arbeite ich selbst nicht mit Blockly, deshalb gibt es da noch kein Beispiel.

            Grundsätzlich geht es so:

            • Darzustellende Daten beschaffen, z.B. aus der History lesen
            • Ein Objekt erstellen, das eine für ECharts passende Struktur hat. Beispiel für ein einfaches Balkendiagramm s.u. Deine einzelnen Datenreihen musst Du jeweils im Key "data" speichern.
            • Das Objekt im JSON-Format in einem State speichern, z.B. unter der ID 0_userdata.0.flexcharts.chart1
            • In einem Browser-Tab oder in einem iFrame die ID des States an flexcharts übergeben. Also mit http://localhost:8200/echarts.html?source=state&id=0_userdata.0.flexcharts.chart1

            Mir ist schon klar, dass das ein bisschen kompliziert ist und sich nicht direkt erschließt. Das ist für Fälle gedacht, wenn man mit den GUI-basierten Ansätzen nicht weiter kommt und man bereit ist, mehr Zeit in das Thema zu investieren.

            Template für ein einfaches Balkendiagramm mit einer Datenreihe:

            {"tooltip":{"trigger":"axis","axisPointer":{"type":"shadow"}},
            "legend":{},
            "xAxis":[{"type":"category","data":["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]}],
            "yAxis":[{"type":"value"}],
            "dataZoom":[{"show":true,"start":0,"end":100}],
            "series":[
              {"name":"Meine Datenreihe 1","type":"bar","color":"#a30000","data":[8,19,21,50,26,1,36]}
            ]}
            
            M 1 Reply Last reply Reply Quote 0
            • M
              MCU @jrbwh last edited by

              @jrbwh
              Kannst du einen Fehler bzgl. Port abfangen? In meinem Fall ist es der cameras-Adapter, der nutzt auch 8200.
              Oder evtl. direkt einen anderen Port verwenden?
              7aa0dde0-d6f4-4d8f-99e9-82949d774327-image.png

              error: flexcharts.0 (458177) Exception-Code: EADDRINUSE: listen EADDRINUSE: address already in use :::8200
              
              jrbwh 1 Reply Last reply Reply Quote 0
              • jrbwh
                jrbwh @MCU last edited by

                @mcu Danke für den Hinweis. Nein, habe ich nicht abgefangen. Werde ich einbauen.

                Den Default ändere ich dann auch gleich. Gibt es eine Liste der bereits verwendeten Ports?

                M 1 Reply Last reply Reply Quote 0
                • M
                  MCU @jrbwh last edited by

                  @jrbwh
                  https://mcuiobroker.gitbook.io/iobroker-tipps/tipps/allgemein/iobroker/ubersicht-ports

                  jrbwh 2 Replies Last reply Reply Quote 0
                  • jrbwh
                    jrbwh @MCU last edited by

                    @mcu Super. Danke!

                    1 Reply Last reply Reply Quote 0
                    • jrbwh
                      jrbwh @MCU last edited by

                      @mcu Habe den Default-Port jetzt auf 3100 geändert. Da grafana auf 3000 liegt, scheint mir das passend.
                      Mein Versuch, einen Port-Konflikt abzufangen, funktioniert aber bisher nicht. Ich habe den Start des http-Servers in ein try-catch gepackt, trotzdem stürzt der Adapter im Konfliktfall ab und meldet für die Zeile von this.webServer.listen diesen Fehler: uncaught exception: listen EADDRINUSE: address already in use. Der Code sieht so aus:

                      		try {
                      			this.webServer.listen({port: this.config.port}, () => {
                      				this.log.info(`Server started on localhost:${this.config.port}`);
                      				this.setState('info.connection', true, true);
                      			});
                      		} catch (e) {
                      			this.log.error(`Start of http server failed on localhost:${this.config.port} - err=${e.message}`);
                      			this.setState('info.connection', false, true);
                      		}
                      

                      Verstehe ich nicht. Wie hast Du das gelöst?

                      L 1 Reply Last reply Reply Quote 0
                      • L
                        Lucky_ESA Developer Most Active @jrbwh last edited by

                        @jrbwh Nimm die Funktion.

                        const check_port = await this.getPortAsync(this.config.port);
                        

                        Ist der Prot belegt gibt check_port den nächsten freien wieder.

                        Gruß//Lucky

                        jrbwh 1 Reply Last reply Reply Quote 0
                        • jrbwh
                          jrbwh @Lucky_ESA last edited by

                          @lucky_esa Wow, kaum macht man es richtig, funktioniert's.

                          Vielen Dank für die super schnelle Hilfe!

                          1 Reply Last reply Reply Quote 0
                          • D
                            darkiop Most Active @jrbwh last edited by

                            @jrbwh sagte in Test Adapter flexcharts 0.0.1 - Stapeldiagramme und mehr:

                            An einem Skript für z.B. täglich gespeicherte Daten bin ich dran. Wie sieht denn Dein Datenformat konkret aus?

                            Ich bin leider immer noch nicht dazugekommen mich damit zu beschäftigen ... 😉 Aber der Winter ist ja lange 😄

                            Hier mal ein einfaches Beispiel wofür ich deine Charts verwenden würde:

                            160df428-d88c-4023-845d-08a329ef21cc-image.png

                            Die 3 Werte werden täglich um 23:59 ermittelt und in eine MariaDB mit dem SQL-Adapter geschrieben. Für das Chart stelle ich mir ein Balkendiagram mit den 3 Werten pro Tag und vielleicht 7 Tage zurück vor. In etwa so, nur eben xAxis.data ausgehende vom heutigen Tag -7d.

                            option = {
                              xAxis: {
                                type: 'category',
                                data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
                              },
                              yAxis: {
                                type: 'value'
                              },
                              series: [
                                {
                                  data: [120, 200, 150, 80, 70, 110, 130],
                                  type: 'bar'
                                },
                                {
                                  data: [120, 200, 150, 80, 70, 110, 130],
                                  type: 'bar'
                                },
                                {
                                  data: [120, 200, 150, 80, 70, 110, 130],
                                  type: 'bar'
                                }
                              ]
                            };
                            
                            jrbwh 1 Reply Last reply Reply Quote 0
                            • jrbwh
                              jrbwh @darkiop last edited by

                              @darkiop Das sollte mit dem Skript-Template direkt möglich sein, wie in meinem Post vom 31. Aug. 2024, 11:54 beschrieben. Folgendes musst Du anpassen:
                              "instanceHistory": Deine History-Instanz eintragen
                              "yAxis": Die 2te y-Achse entfernen
                              "mySeries.daily": Für die ersten 3 Zeilen Deine Datenpunkte eintragen, alles "stack_a" zuordnen (sofern es ein Stapeldiagramm mit einem Balken werden soll). Die restlichen Zeilen löschen.
                              "mySeries.monthly" und "mySeries.yearly": Alle Zeilen löschen, also nur [] übrig lassen
                              Aufrufen mit " ...params={"period":"daily", "start":7}

                              D 1 Reply Last reply Reply Quote 0
                              • L
                                legro @jrbwh last edited by legro

                                @jrbwh

                                Mir fehlte der direkte Link zur Installation. Dieser ist hier zu finden.

                                jrbwh 1 Reply Last reply Reply Quote 0
                                • jrbwh
                                  jrbwh @legro last edited by

                                  @legro Danke für den Hinweis. Habe den Link in der Beschreibung ergänzt.

                                  L 1 Reply Last reply Reply Quote 0
                                  • D
                                    darkiop Most Active @jrbwh last edited by

                                    @jrbwh Ja, kann ich bestätigen ... mit etwas selber code lesen hätt ich das auch hinbekommen ... aber wie gesagt, die Prios haben sich gerade verändert. Danke dir - ich werd mal schauen wie ich die Charts nutzen kann.

                                    Hast du auch vorgesehen den Dark-Mode der echarts zu implementieren?

                                    jrbwh 1 Reply Last reply Reply Quote 0
                                    • jrbwh
                                      jrbwh @darkiop last edited by

                                      @darkiop Dark Mode war noch nicht drin. Habe ich eben mit V0.0.4 ergänzt. Aktivieren mit &darkmode im HTML-Aufruf.

                                      1 Reply Last reply Reply Quote 0
                                      • L
                                        legro @jrbwh last edited by

                                        @jrbwh

                                        Ich bin verwirrt: Der von mir oben eingestellte Link zeigt nicht mehr auf die Installationsseite. Wo ist die Installationsanweisung abgeblieben?

                                        jrbwh 1 Reply Last reply Reply Quote 0
                                        • jrbwh
                                          jrbwh @legro last edited by

                                          @legro Ich habe die Installationsanleitung nach dem Hinweis von Martin rausgenommen.

                                          Du kannst den Adapter aber einfach per npm installieren:

                                          cd /opt/iobroker
                                          npm i iobroker.flexcharts
                                          

                                          Dann in der Adapter-Ansicht eine Instanz ergänzen.

                                          D 1 Reply Last reply Reply Quote 0
                                          • D
                                            Delphinis @jrbwh last edited by

                                            @jrbwh
                                            Hallo,
                                            bin sehr an diesem Adapter interessiert. Machst du da noch einen offiziellen Adapter draus?

                                            jrbwh 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            434
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            chart charts diagramme echarts visualisierung visualization
                                            18
                                            231
                                            19463
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo