Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. LaMetric oder JSON-POST per IOBroker Javascript

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    LaMetric oder JSON-POST per IOBroker Javascript

    This topic has been deleted. Only users with topic management privileges can see it.
    • ldittmar
      ldittmar Developer last edited by

      Nur ein kurze Info zu LaMetric: LaMetric kann mit IFTTT kommunizieren und die neueste Version vom Cloud-Adapter (ab Version 1.0.2) wird IFTTT unterstützen. 😉

      Grüße,

      ldittmar

      1 Reply Last reply Reply Quote 0
      • M
        mdsv last edited by

        Ergänzend von den Möglichkeiten:

        Es gibt Notification … per Script steuerbar als einmalig eingeblendete Nachrichten, z.B. "Fenster auf".

        Es gibt (Indication) Apps. Durch linke / rechte Taste kann auf seine eigene Apps umschalten, die dann Statusmeldungen anzeigen (folgende Fenster sind offen ...., Benzinpreis ist ...). Per Script erfolgt im Hintergrund eine Aktualisierung. Bei Interesse kann man sich informieren.

        Und natürlich die Button Apps... z.B. Anzeige einer Mülltonne -> wenn man sie rausgebracht hat und in der Mitte drückt, dann wird per Http-Request die Systemvariable wieder false gesetzt. Durch ein Script wird zum Zeitpunkt auf diese Apps komplett umgeschaltet und es wird dann das gewünschte Symbol angezeigt, statt der Uhr.

        Das beste finde ich inzwischen:

        Es zeigt unscheinbar eine Uhr an, aber wenn die Alarmanlage scharf ist, dann eben ein Symbol und eine Warnung. Falls manchmal Geofency nicht richtig die Deaktivierung vornimmt. Das Umschalten auf diese habe ich über das Umschalten auf diese Apps per Script gelöst. Finde ich sogar besser, als irgendwelche große Bildschirme, wo jeder Besucher die Augen verdreht.

        Die Geschwindigkeit ist auch beeindruckend, wenn dies über Script erfolgt.

        Was habt Ihr so?

        1 Reply Last reply Reply Quote 0
        • R
          ronnyw last edited by

          Dank der Vorarbeit hier bin ich schon relativ weit gekommen.

          Das Script, das Ben angepasst hat, funktioniert erstmal ganz gut, ich bekomme alle möglichen Arten von Notifications hin.

          Darauf aufbauend wollte ich jetzt den Inhalt von Indicator-Apps verändern.

          Ich hab dafür das gleiche Script genutzt, den Pfad angepasst, so wie es in dem Developerbereich vorgeschlagen wird. Also für die var cmd habe ich z.B. "api/v1/dev/widget/update/com.lametric.<id>/1" gesetzt.

          Das Dataformat hab ich auch angepasst.

          Nun habe ich wahlweise zwei Fehler.

          Wenn ich das per http auf Port 8080 probiere, bekomme ich von der LaMatric den Error "Wrong API Key". Versteh ich nicht. Es gibt ja nur einen, der in dem gleichen Script mit der normalen Notification funktioniert.

          Wenn ich wie im Developerbereich von LaMetric vorgeschlagen lokal https nutze und den Port auf 4343 setze bekomme ich im Log "unable to very the first certificate" - kenne mich aber mit der Zertifikatskette nicht aus. Per CURL mit dem Beispielaufruf aus dem Developerbereich funktioniert alles (auch per https).

          Ich weiß also weder, ob ich eigentlich SSL nutzen MUSS (und wie ich aus dem Zertifikatsfehler rauskomme) oder warum ich den "wrong API key" zurückbekomme.

          @mdsv, wie steuerst Du die Infos Indicator-Apps von ioBroker aus?!</id>

          1 Reply Last reply Reply Quote 0
          • M
            mdsv last edited by

            http://xx.xx.xx.xx:8080 mit lokaler IP Adresse geht … siehe auch https://developer.lametric.com .. dort sind die Beispiele.

            Bei mir ging SSL mit lokaler IP auch nicht, aber ist lokal auch nicht notwendig

            Oder SSL über Internet … aber warum drüber schleusen?

            1 Reply Last reply Reply Quote 0
            • R
              ronnyw last edited by

              @mdsv:

              http://xx.xx.xx.xx:8080 mit lokaler IP Adresse geht … siehe auch https://developer.lametric.com .. dort sind die Beispiele.

              Bei mir ging SSL mit lokaler IP auch nicht, aber ist lokal auch nicht notwendig

              Oder SSL über Internet … aber warum drüber schleusen? `

              Genau, über den LaMetric Server wollte ich auch nicht gehen, nur lokal. Danke, dass Du bestätigst, dass es auch ohne SSL geht (ich hatte in irgendeinem Forenbeitrag bei LaMetric aufgeschnappt, dass bestimmte Funktionen nur über SSL gehen - vielleicht ist das aber auch schon wieder überholt). Allerdings bleibt dann das Problem, dass ich einen "wrong API key" zurückbekomme.

              Hier mal meine angepasste Funktion:

              var http = require('http'); 
              var apikey = '1234'; // API-Key von developer.lametric.com
              var deviceIpAddress = getState("javascript.0.LaMetric.Device.IPAddress").val; // LaMetric IP
              var port = '8080';
              
              var optionsTemplate = {
                  host: deviceIpAddress,
                  port: port,
                  path: null,
                  method: 'POST',
                  headers: {
                      'Content-Length': null,
                      'Authorization': 'Basic ' + new Buffer('dev' + ':' + apikey).toString('base64')
                  }
              };
              
              function LaMetricIndicator(options,data) {
              
                  var dataString = JSON.stringify(data);
                  options.headers['Content-Length'] = dataString.length;
              
                  var req = http.request(options, function(res) {
                      log('http Status: ' + res.statusCode);
                      log('HEADERS: ' + JSON.stringify(res.headers), (res.statusCode != 201 ? 'warn' : 'info'));
              
                      var bodyChunks  = [];
                      res.on('data', function(chunk) {
                          bodyChunks.push(chunk);
                      }).on('end', function() {
                          var body = Buffer.concat(bodyChunks);
                          log('body: ' + body);
                      });
                  });
              
                  req.on('error', function(e) {
                      log('ERROR: ' + e.message, 'warn');
                  });
              
                  (dataString ? req.write(dataString) : log('Daten: keine Daten im Body angegeben'));
                  req.end();
              }
              
              // Indicator Fensterstatus setzen
              
              optionsTemplate.path = '/api/v1/dev/widget/update/com.lametric.<hier-ein-schlüssel-dessen-vertraulichkeit-ich-nicht-einschätzen-kann>/1';
              var dataTemplate = {
                  frames:[{
                      text: 'Alle zu.',
                      icon: 'a135',
                      index: 0,
                  }]
              }
              
              // Notification
              
              /*
              optionsTemplate.path = '/api/v2/device/notifications';
              var dataTemplate = {
                  model: {
                      cycles: 0,
                      frames: [{
                          icon: 'i10462',
                          text: 'Hallo Welt.'
                      }],
                      sound: {
                          category: 'notifications',
                          id: 'positive6'
                      }
                  }
              }*/
              
              LaMetricIndicator(optionsTemplate,dataTemplate);</hier-ein-schlüssel-dessen-vertraulichkeit-ich-nicht-einschätzen-kann>
              

              Indicator geht nicht ("wrong api key"), Notification geht :roll:

              (der Sample-Push-Request mit CURL, der einem auf der Developer-Seite mitgegeben wird, funktioniert. (EDIT: Diese Annahme war wohl falsch, zumindest ist es nicht das gleiche! >) Dort wird der API Key ja in den Token encoded (< Ende falsch 😉 ), das Data-Schema sieht gleich aus… ich finde den Unterschied nicht)

              1 Reply Last reply Reply Quote 0
              • R
                ronnyw last edited by

                Mit einem Tipp vom LaMetric-Support funktioniert es jetzt doch. Ich dachte zwar, dass ich die Kombination auch ausprobiert hätte, aber anscheinend nicht: die Indicator Apps brauchen als Authentifizierung immer den generierten Token (von dem ich erst dachte er wäre das gleiche wie der in dem Script base64 encodete API Key - ist er aber nicht) in den Headern ("X-Access-Token"), die Notification braucht als Authentifizierung wie in dem Beispiel den API-Key ("Authorization"). (Als Fehlermeldung bei der Indicator App wäre vielleicht statt "Wrong API Key" hilfreicher gewesen "Wrong/missing Token" - das hätte mich eher drauf gebracht 😉 )

                Nun habe ich verschiedene Anzeigebereiche in der LaMetric:

                Fensterstatus

                Aktuelle gespielte Liedtitel (Chromecast)

                Status von Waschmaschine und Trockner mit Benachrichtigung wenn eins fertig ist (steht in der Waschküche im Keller)

                Wetterdaten (die nicht von einer eigenen Wetterstation kommen sondern von einer Station der nahegelegenen Uni geparsed werden)

                Als nächstes möchte ich ein paar Komfortfunktionen umsetzen:

                "Aufstehen"

                "Zu Bett gehen"

                "Wohnung verlassen"

                "Anwesend"

                Wie von mdsv schon erwähnt, können dann die jeweiligen Apps (jede Funktion ist eine eigene kleine App) zu bestimmten Zeiten in den Vordergrund geholt werden, so dass man nicht durchschalten muss (was dann zumindest bei einem festen Tagesrhythmus funktioniert).

                Ich denke ich werde alles über Indicator-Apps lösen, die können alles, was eine Button-App kann, zusätzlich kann ich aber die Anzeigeinhalte flexibler gestalten.

                Wenn ich ein besserer Programmierer (mit mehr Zeit 😉 ) wäre, würde ein LaMetric-Adapter ja ziemlich naheliegen. In Gedanken habe ich schon den kompletten Status- und App-Objekte-Baum in ioBroker liegen, einfaches Ändern der angezeigten Inhalte über die Objekte. Die LaMetric-API ist - soweit ich das beurteilen kann - auch recht simpel. Wäre echt super, wenn diese "Uhr" mehr Anklang finden würde 🙂

                Ach ja, ich habe noch ein Problem wenn ich Sonderzeichen in meinen Daten habe (z.B. würden einfache Umlaute im Text in dem Beispielscript derzeit nicht gehen). Hat das schon jemand gelöst? Wie muss ich das encoden?

                1 Reply Last reply Reply Quote 0
                • M
                  mdsv last edited by

                  Wie es scheint, kann LaMetric keine Umlaute und unterdrückt Notification mit Umlauten sogar.

                  Bei Unwetterwarnung filtere ich diese dann vorher raus.

                  var txt2=txt.replace(/ä/, "ae");

                  Geht bestimmt besser.

                  1 Reply Last reply Reply Quote 0
                  • R
                    ramses last edited by

                    hatte mir auch überlegt ob ich das geld für dieses minderwertige produkt ausgebe.

                    leider mangelts an alternativen.

                    ich glaub ich warte noch mal ein jahr weiter 🙂 Vielleicht gibts dann ja was, was sein Geld auch wirklich wert ist.

                    1 Reply Last reply Reply Quote 0
                    • M
                      malc last edited by

                      Nabend 🙂

                      Ich kram mal den Post hervor…

                      Ich hab das Script erfolgreich eingesetzt, aber:

                      Eines meiner Lametric Displays befindet sich meist im Schlafmodus (dunkler Raum). Wenn ich auf dem eine Nachricht anzeigen will erhalte ich:

                      script.js.common.Alert: body: { "errors" : [ { "message" : "Only notifications with priority 'critical' are allowed when screensaver is activated" } ] 
                      
                      

                      Ich hab nicht herausgefunden wo ich die Priority einstellen kann, hat da wer einen Tipp für mich?

                      Malc

                      1 Reply Last reply Reply Quote 0
                      • enzo
                        enzo last edited by

                        Vorstellung von Matthias haus-automatisierung.com

                        ist dabei LaMetric ioBroker adapta zu erstellen. 😉

                        https://github.com/klein0r/ioBroker.lametric

                        1 Reply Last reply Reply Quote 0
                        • ruhr70
                          ruhr70 last edited by

                          @enzo:

                          Vorstellung von Matthias haus-automatisierung.com

                          ist dabei LaMetric ioBroker adapta zu erstellen. 😉

                          https://github.com/klein0r/ioBroker.lametric `

                          Daumen hoch!

                          Danke für die Info!

                          1 Reply Last reply Reply Quote 0
                          • Espace0401
                            Espace0401 last edited by

                            Ich habe diesen mal ausprobiert. Klappt bisher einwandfrei.

                            1 Reply Last reply Reply Quote 0
                            • S
                              Siegfried Forum Testing last edited by

                              Gibt es auch eine anleitung zu dem Adapter?

                              1 Reply Last reply Reply Quote 0
                              • Espace0401
                                Espace0401 last edited by

                                Nur das was auf Github steht. Reicht aber doch fürs erste. Einfach mal ausprobieren.

                                1 Reply Last reply Reply Quote 0
                                • S
                                  Siegfried Forum Testing last edited by

                                  Ich bekomme es nicht zu laufen

                                  Vieleicht mache ich einen fehler mit dem Key

                                  1 Reply Last reply Reply Quote 0
                                  • Espace0401
                                    Espace0401 last edited by

                                    Du musst dir hier: https://developer.lametric.com/user/devices einen API Key zulegen und den dann eintragen. Dann sollte der Adapter grün werden und es funktioniert.

                                    1 Reply Last reply Reply Quote 0
                                    • S
                                      Siegfried Forum Testing last edited by

                                      Danke

                                      Fehler gefunden … ich habe versucht einen Key zu erstelle unter "MY APP" anstelle den API-Key vom Gerät zu nehmen 😞

                                      Bin nun mal ein blutiger Anfänger

                                      Aber nun kann ich schon mal einen Text Senden.

                                      Hab nur noch das Problem dass wenn ich versuche einen Wert zu senden (nicht reiner Text der kommt richtig an); dan steht auf mein LaMetric nur was von jasonobjekt usw... geht das bei dir?

                                      1 Reply Last reply Reply Quote 0
                                      • S
                                        Siegfried Forum Testing last edited by

                                        Wenn ich folgenden code

                                        5988_code.jpg

                                        Bekomme ich nur eine Unverständliche Meldung aud meinem Lametric.

                                        Selbes bei Telegram gibt saubere werte.

                                        Mache ich da was falsch?

                                        1 Reply Last reply Reply Quote 0
                                        • T
                                          tristaaan last edited by

                                          Hi zusammen,

                                          ich habe mir nun auch das Skript von Matthias Kleine installiert. Das Skript funktioniert bei mir leider nicht. Nachdem ich den IP-Adresse & API Key hinterlegt habe, springt die Instanz auf grün. Soweit so gut. Wenn eine Nachricht an die LaMetric versendet wird, auch egal welchen Inhalt die Nachricht enthält, bekomme ich im Log folgende Fehlermeldung: error Status Code: 400 / Content: [object Object]

                                          Auszug vom Log:

                                          lametric.0	2018-07-11 09:39:06.731	error	Status Code: 400 / Content: [object Object]
                                          lametric.0	2018-07-11 09:39:06.680	info	sending request to http://192.168.177.21:8080/api/v2/device/notifications with data: {"priority":"warning","icon_type":"none","lifeTime":3000,"model":{"frames":[{"icon":"'a647'","text":"([getState(\"s
                                          lametric.0	2018-07-11 09:39:06.680	info	message {"priority":"warning","icon_type":"none","lifeTime":3000,"model":{"frames":[{"icon":"'a647'","text":"([getState(\"spotify-premium.0.playbackInfo.artistName\").val,' - ',getState(\"spotify-prem
                                          lametric.0	2018-07-11 09:39:06.680	info	received message
                                          

                                          Hat jemand von euch eine Idee, was ich ausprobrobieren kann um den Fehler zu beheben?

                                          Beste Grüße Tristaaan

                                          1 Reply Last reply Reply Quote 0
                                          • M
                                            manmac last edited by

                                            Gibt es schon eine Lösung für den

                                            status Code: 400 / Content: [object Object]?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            384
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            19
                                            69
                                            10343
                                            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