Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. iob69

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    I
    • Profile
    • Following 0
    • Followers 0
    • Topics 11
    • Posts 62
    • Best 1
    • Groups 1

    iob69

    @iob69

    Starter

    1
    Reputation
    8
    Profile views
    62
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    iob69 Follow
    Starter

    Best posts made by iob69

    • RE: [Neuer Adapter] MeteoSchweiz

      @baerengraben
      Hallo,
      also die aktuellen Wetterdaten (z.B. Bodenmessdaten) sind ab Mai dieses Jahres verfügbar.
      Und das sind (für mich wenigstens) doch die wichtigsten: https://opendatadocs.meteoswiss.ch/de/
      Die Nutzungsbedingungen (Request-Limit) findest du unter: https://www.geo.admin.ch/de/allgemeine-nutzungsbedingungen-bgdi#2.-Datennutzung
      z.B. API Rest Services: 40 Requests/minute. Wenn da z.b. sämtliche Daten eines typs (wind, luftdruck etc) mit einem Request geladen werden können, reichen wohl 10-20 Requests für die wichtigsten Daten. Aber ich weiss da nicht was genau in ein Request gepackt wird.
      Aber es währe halt schon toll, wenn das ein offizieller Adapter werden würde (siehe Meinung von "mcm 1957" oben).

      posted in Entwicklung
      I
      iob69

    Latest posts made by iob69

    • RE: Test Adapter flexcharts - Stapeldiagramme und mehr

      @jrbwh
      Vielen Dank für die Antwort. Ich werde das mal versuchen.
      Eigentlich wollte ich da nicht so "basteln" 😉 , denn ich wollte den selben Chart für verschiedene Zeitbereiche nutzen, da müsste ich jeden einzelnen so hinmurksen. Aber solche Bespiele geben immer super Input!

      Weisst du wie ich funktionen einbauen kann?
      Ich hab das mal so wie im ECharts-Beispiel "Confidence Band" versucht:

              "axisLabel": {
                "formatter": function (value, idx) {
                  var date = new Date(value);
                  return idx === 0
                    ? value
                    : [date.getMonth() + 1, date.getDate()].join('-');
                }
              },
      

      Aber das scheint keine Funktion zu haben, auch eine vereinfachte Funktion mit:

      return value/1000;
      

      hat nichts bewirkt.

      posted in Tester
      I
      iob69
    • RE: Test Adapter flexcharts - Stapeldiagramme und mehr

      @jrbwh
      Hallo,
      ich brauche Deinen Adapter in Zukunft wohl öfters und hab auch schon ein paar einfache Charts machen können.
      Aber hier komme ich nicht weiter. Die Doku ist so umfangreich und ich weiss nicht, ob ich den richtigen Ansatz verfolge. Du kennst dich offenbar super mit echarts aus, villeicht hast du eine Idee:
      Ich möchte einen Chart aufbauen, der mir den 7-Tagesverlauf einer Aktie anzeigt z.B. so:
      2ae41223-6d59-40a3-90ff-48899c470829-grafik.png

      Dabei möchte ich folgende Darstellung:

      • Die Börsenkurse sollten hintereinander (ohne grosse Lücke) gereiht werden, da diese ja nur von 9-17:30 gehandelt werden.
      • Jedes Datum z.B. "9.7." soll jeweils nur einmal in der X-Achse vorkommen, die Tage getrennt mit einem dünnen vertikalen Strich, das Datum wenn möglich in der Mitte.

      Bisher hab ich das hingekriegt:
      cd6bb30e-db27-4632-8fce-d5c8c5e88e87-grafik.png
      mit folgendem Code:

                 a = {
                      "animation": false,
                      "radius": '100%', // self  
                      "grid": {
                          "left": '43',
                          "right": '5%',
                          "top": 55,
                          "bottom": 20
                      },  
                      "tooltip": {
                          "trigger": 'axis',
                          "axisPointer": {
                              type: 'cross',
                              "label": {
                              "backgroundColor": '#6a7985'
                              }
                          }
                      },
                      "legend": {
                          "top": 3,
                          "data": [title],
                          "padding": [ 30, 0, 0,  0 ] // up right down left
                      },
                      "xAxis": {
                          "type": 'category',
                          "data": times,
                      },
                      "yAxis": {
                          "type": 'value',
                          "min" : min,
                          "max" : max,
                          "offset" : 0
                      },
                      "series": [
                          {
                              "name": title,
                              "data": values,
                              "type": 'line',
                              "lineStyle": {
                                  "width": 3
                              },
                              "color": firstVal > lastVal?'red':'ForestGreen'
                          }
                      ]
                  };
      

      Das Problem: ich musste "type" der x-Achse als "category" definieren, damit es mir die Daten zusammen schiebt.
      Mittlerweile zeigt er mir auch die Daten so an, wenn ich "time" einstelle:?

      86610613-83f9-41a1-9473-8e8427fdce53-grafik.png
      Hättest du mir einen Ansatz wie ich das anstellen könnte?

      posted in Tester
      I
      iob69
    • RE: Eigene Typescript Module schreiben

      @ticaki
      Unter der Klasse "Kalender" steht:

      module.exports = { Kalender};
      
      posted in JavaScript
      I
      iob69
    • RE: Eigene Typescript Module schreiben

      @oliverio
      Ich mache doch genau das was im Typesript-Beispiel steht, nur auf umwegen, weil module.exports nicht tut:

      • Typescript-Klasse geschrieben und in eine Datei abgespeichert
      • Datei kompiliert
      • Datei in richtigen Pfad kopiert
      • Datei in neuem Typescript einbinden

      Also eigentlich sollte ja das Script die Dateien ablegen. mit "module.exports = { Kalender};" oder nicht?
      Ich hab mittlerweile herausgefunden, wo Module eingerichtet werden, wenn man sie im Javascript adapter configuriert:
      C:\ioBroker\node_modules@iobroker-javascript.0
      Dort hab ich dann auch die kompilierte datei kalender.js hingetan. (C:\ioBroker\node_modules@iobroker-javascript.0\kalender\kalender.js)
      Das problem ist ja auch nicht der Pfad, denn er findet die Datei ja, sonst würde er ja nicht über etwas meckern, was dort drin steht...

      posted in JavaScript
      I
      iob69
    • RE: Eigene Typescript Module schreiben

      Bin nun etwas weiter gekommen. Hab die .ts-Datei von Hand kompiliert und dies hat folgende .js-Datei ergeben:

      var Kalender = /** @class */ (function () {
          function Kalender(adapter, myState) {
              this.adapter = adapter;
              this.myState = myState;
          }
          Kalender.prototype.getCurrentWeekdayAsInteger = function () {
              var now = new Date();
              return now.getDay();
          };
          Kalender.prototype.updateState = function () {
              this.adapter.log("Update state within external file");
              this.adapter.setState(this.myState, this.getCurrentWeekdayAsInteger());
          };
          Kalender.prototype.sendTelegram = function () {
              this.adapter.log("Send telegram within external file");
              this.adapter.sendTo("telegram.0", "Weekday is: " + this.getCurrentWeekdayAsInteger());
          };
          return Kalender;
      }());
      

      soweit, so gut.
      Nun wollte ich die Datei verwenden, wieder in einer typescript-Datei nach vorlage von @uwe72

      const { Kalender } = require('kalender.js');
      
      var myStateState = "0_userdata.0.html.test_module";
      
      createState(myStateState, -1, {
          name: myStateState,
          desc: myStateState,
          type: 'number', 
          read: true,
          write: true
      });
      
      setState(myStateState, -1);
      
      const myCalender = new Kalender(this, myStateState);
      log("Heute ist: " + myCalender.getCurrentWeekdayAsInteger());
      
      log("Wochentag is: " + getState(myStateState).val);
      myCalender.updateState();
      log("Wochentag is: " + getState(myStateState).val);
      

      Fehler:

      javascript.0	2025-07-06 09:41:03.285	error	at Script.runInContext (node:vm:149:12)
      javascript.0	2025-07-06 09:41:03.285	error	at script.js.Eigene_Scripte.HowTo.ModuleExportImport:41:18
      javascript.0	2025-07-06 09:41:03.284	error	TypeError: Kalender is not a constructor
      javascript.0	2025-07-06 09:41:03.284	error	^
      javascript.0	2025-07-06 09:41:03.284	error	var myCalender = new Kalender(this, myStateState);
      javascript.0	2025-07-06 09:41:03.284	error	script.js.Eigene_Scripte.HowTo.ModuleExportImport: script.js.Eigene_Scripte.HowTo.ModuleExportImport:41
      

      Importieren/einbinden kann er die Datei offenbar...
      Aber ich weiss nicht was bei mir fehlt, und wieso dass es bei uwe72 funktioniert, aber bei mir nicht?

      posted in JavaScript
      I
      iob69
    • RE: Eigene Typescript Module schreiben

      @oliverio
      Mittlerweile hab ich herausgefunden, wie man dann wahrscheinlich kompilieren kann. Man muss ins Verzeichnis c:\iobroker wechseln und dort den befehl

      C:\ioBroker>npx tsc kalender.ts
      

      eingeben. Bei mir kommt im Moment noch:

      C:\ioBroker>npx tsc kalender.ts
      error TS6053: File 'kalender.ts' not found.
        The file is in the program because:
          Root file specified for compilation
      
      Found 1 error.
      

      Weil es ja offenbar noch keine Datei gibt. Ein Test mit einer selbst erstellten .ts - Datei hat funktioniert, ich müsste dann nur noch wissen, wo er die Datei hinschreibt, wenn er denn das Modul exportieren würde. Aber das finde ich dann schon heraus.
      Also mein Problem liegt noch darin, dass er das modul nicht exportieren will. Was fehlt in dieser Datei ganz oben?
      Zur Not könnte ich die Datei ja einfach von Hand dort rein kopieren, ich weiss aber nicht in welches Verzeichnis sie hingehört. Deshalb wäre es gut, wenn das "module.exports" funktionieren würde. Dann wäre das Modul gleich an der richtigen Stelle.
      @uwe72 könntest du vielleicht diese Datei nochmals testen und hier posten, vielleicht war da ja noch ein kleiner Fehler drin?

      posted in JavaScript
      I
      iob69
    • RE: Eigene Typescript Module schreiben

      @uwe72
      Ich hab wie gesagt noch nicht mehr. Das Script das ich gepostet hab ist alles. Es kompiliert aber nicht, wegen dem Fehler.
      Deshalb wird wohl auch nichts erzeugt.
      hier das log:

      javascript.0	2025-07-06 08:49:27.271	error	at Script.runInContext (node:vm:149:12)
      javascript.0	2025-07-06 08:49:27.271	error	at script.js.Eigene_Scripte.HowTo.ModuleExportImport:23:1
      javascript.0	2025-07-06 08:49:27.271	error	ReferenceError: module is not defined
      javascript.0	2025-07-06 08:49:27.270	error	^
      javascript.0	2025-07-06 08:49:27.270	error	module.exports = { Kalender: Kalender };
      javascript.0	2025-07-06 08:49:27.270	error	script.js.Eigene_Scripte.HowTo.ModuleExportImport: script.js.Eigene_Scripte.HowTo.ModuleExportImport:23
      
      posted in JavaScript
      I
      iob69
    • RE: Eigene Typescript Module schreiben

      @oliverio
      Hallo,
      soweit bin ich noch nicht ;-). Erst wollte ich das Modul auslagern. Aber wenn du das gerade ansprichst: kann ich das auch mit dem Befehl in der Win-Konsole machen? Das hab ich nämlich jetzt gerade versucht, da kam die Meldung:

      C:\Users\Admin>npx tsc kalender.ts
      
      
                      This is not the tsc command you are looking for
      
      
      To get access to the TypeScript compiler, tsc, from the command line either:
      
      - Use npm install typescript to first add TypeScript to your project before using npx
      - Use yarn to avoid accidentally running code from un-installed packages
      
      C:\Users\Admin>
      

      Ich weiss jetzt nicht, ob ich das einfach mit "npm install" machen darf, normalerweise sollte man ja soche dinge über iob machen?

      posted in JavaScript
      I
      iob69
    • Eigene Typescript Module schreiben

      Hallo,
      ich schreibe alles in Typescript und möchte meine Klassen auslagern, so dass ich sie in anderen Skripten einbinden kann.
      Sie in global zu kopieren ist für micht keine Lösung. Das gibt nur Probleme.
      Im Forum hab ich unter anderem folgender Beitrag gefunden: https://forum.iobroker.net/topic/78632/info-auslagerung-von-global-scripten-ins-filesystem von @uwe72
      Hier der Code davon:

      class Kalender  {
          private adapter: any;
          private myState: string;
      
          constructor(adapter, myState) {
             this.adapter = adapter;
             this.myState = myState;
          }
      
          public getCurrentWeekdayAsInteger() : number {
              var now = new Date();
              return now.getDay();
          }
      
          public updateState() {
              this.adapter.log("Update state within external file");
      	   this.adapter.setState(this.myState, this.getCurrentWeekdayAsInteger());
          }
      
          public sendTelegram() {
              this.adapter.log("Send telegram within external file");        
              this.adapter.sendTo("telegram.0", "Weekday is: " + this.getCurrentWeekdayAsInteger());
          }
      }
      
      module.exports = { Kalender};
      

      Kurz mal ausprobiert, das Modul auszulagern, aber das gibt bei mir immer den Fehler

      "ReferenceError: module is not defined"
      

      Was mache ich falsch?

      PS: Arbeite mit Windows Pro 11. In welchem Pfad würde ich das Modul finden?

      posted in JavaScript
      I
      iob69
    • RE: [Neuer Adapter] MeteoSchweiz

      @baerengraben
      Hallo,
      also die aktuellen Wetterdaten (z.B. Bodenmessdaten) sind ab Mai dieses Jahres verfügbar.
      Und das sind (für mich wenigstens) doch die wichtigsten: https://opendatadocs.meteoswiss.ch/de/
      Die Nutzungsbedingungen (Request-Limit) findest du unter: https://www.geo.admin.ch/de/allgemeine-nutzungsbedingungen-bgdi#2.-Datennutzung
      z.B. API Rest Services: 40 Requests/minute. Wenn da z.b. sämtliche Daten eines typs (wind, luftdruck etc) mit einem Request geladen werden können, reichen wohl 10-20 Requests für die wichtigsten Daten. Aber ich weiss da nicht was genau in ein Request gepackt wird.
      Aber es währe halt schon toll, wenn das ein offizieller Adapter werden würde (siehe Meinung von "mcm 1957" oben).

      posted in Entwicklung
      I
      iob69
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo