Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. LaMetric oder JSON-POST per IOBroker Javascript

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.2k

LaMetric oder JSON-POST per IOBroker Javascript

Scheduled Pinned Locked Moved Skripten / Logik
69 Posts 19 Posters 14.3k Views 8 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    mdsv
    wrote on last edited by
    #11

    ungefähr so ….

    var https = require('http'); 
    var apikey = '08cc1947<snip>.....</snip>4a28cb900457b9bd';
    var auth = 'Basic ' + new Buffer('dev:' + apikey).toString('base64');
    
    var options = {
        host: deviceIpAdress,
        port: 8080,
        auth: auth,
        path: cmd,
        method: 'POST',
    
        headers: {
            'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36',
            'Content-Type': 'application/json',
            'Accept': 'application/json',
            'Content-Length': data.length,
            'Authorization': 'Basic '+auth
    
        }
    };
    ....
    

    Meldung kommt immer noch.

    1 Reply Last reply
    0
    • ruhr70R Offline
      ruhr70R Offline
      ruhr70
      wrote on last edited by
      #12

      Da sind jetzt ein paar Punkte…

      Du nutzt http (8080).

      Wir verwenden aber das Module https

      Das muss geändert werden.

      Dann ist das auth in den Options noch drin.

      [EDIT]: OK, habe ich übersehen… Du hast es in http oben geändert 😉 sorry... 😉

      Adapter: Fritzbox, Unify Circuit
      Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

      1 Reply Last reply
      0
      • ruhr70R Offline
        ruhr70R Offline
        ruhr70
        wrote on last edited by
        #13

        @mdsv ich änder das Skript eben und poste es noch einmal.

        Adapter: Fritzbox, Unify Circuit
        Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

        1 Reply Last reply
        0
        • ruhr70R Offline
          ruhr70R Offline
          ruhr70
          wrote on last edited by
          #14

          mhh… wenn es nicht das überflüssige auth: auth, in den Options ist, bin ich mit meinem Latein fast am Ende.

          Muss mir das Teil wohl doch mal bestellen 😉

          Adapter: Fritzbox, Unify Circuit
          Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

          1 Reply Last reply
          0
          • M Offline
            M Offline
            mdsv
            wrote on last edited by
            #15

            Danke für die Mühe … vielleicht solltest dir eine holen 😉 ... man kann Notification einblenden (Tür öffnet), aber auch durch li/re Klick den Status anzeigen lassen (Wetter, ....).

            Durch lokale Update wird die Info dann übermittelt. Den Action-Modus habe ich noch nicht probiert und das ganze unscheinbar als nette Uhr.

            Per CURL bekomme ich es schon direkt hin, allerdings wäre Javascript besser, um die Parameter zu übermitteln.

            PS: die überflüssige auth war es auch nicht ....schade.

            1 Reply Last reply
            0
            • R Offline
              R Offline
              ronnyw
              wrote on last edited by
              #16

              Meine Programmierkenntnisse sind leider recht rudimentär und ich kann auch gerade nicht helfen. Aber als ioBroker Neuling mit einer LaMetric interessiert mich das Thema sehr (auch wenn ich später Richtung Button-App hinaus möchte und schon überlege, wie man wohl einen LaMetric Adapter hinbekommt, der das ermöglicht). Ich hoffe das Thema LaMetric findet hier noch breiteren Anklang 🙂

              1 Reply Last reply
              0
              • B Offline
                B Offline
                Ben
                wrote on last edited by
                #17

                Hier ist meine funktionierende Lösung. :geek:

                Dabei habe ich auch ein cooles ioBroker-Icon gebaut.

                Hier eine Vorschau:

                https://youtu.be/iDtKofIqIh8

                Einfach den API-Key und die IP ersetzen. 😉

                var http = require('http'); 
                var apikey = '1234567891011121314'; // der API-Key von developer.lametric.com
                var auth = 'Basic ' + new Buffer('dev:' + apikey).toString('base64');
                
                var deviceIpAdress = '192.168.178.??'; // IP vom LaMetric
                var port = '8080';
                var cmd = '/api/v2/device/notifications';
                
                var dataTemplate = {
                    model: {
                        cycles: 1,
                        frames: [{
                            icon: 'i10462',
                            text: null
                        }],
                        sound: {
                            category: 'notifications',
                            id: 'positive6'
                        }
                    }
                }
                
                var optionsTemplate = {
                    host: deviceIpAdress,
                    port: port,
                    path: cmd,
                    method: 'POST',
                    headers: {
                        'Content-Length': null,
                        'Authorization': 'Basic ' + new Buffer('dev' + ':' + apikey).toString('base64')
                    }
                };
                
                function lametricNotification(notificationText) {
                    var data = dataTemplate;
                    data.model.frames[0].text = notificationText;
                    var dataString = JSON.stringify(data);
                
                    var options = optionsTemplate;
                    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 != 200 ? '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();
                }
                
                

                https://www.alefo.de

                1 Reply Last reply
                0
                • ruhr70R Offline
                  ruhr70R Offline
                  ruhr70
                  wrote on last edited by
                  #18

                  Na das ist ja mal ein Einstieg 🙂

                  Adapter: Fritzbox, Unify Circuit
                  Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                  1 Reply Last reply
                  0
                  • R Offline
                    R Offline
                    ronnyw
                    wrote on last edited by
                    #19

                    Super, danke für die Hilfestellung.

                    Ich habe derweil den umgekehrten Weg probiert: eine Button-App auf der LaMetric schaltet ioBroker. Nachdem ich ein paar Grundlagen lernen musste, war das am Ende eigentlich ziemlich simpel zu realisieren über den Node-Red Adapter.

                    1 Reply Last reply
                    0
                    • ldittmarL Offline
                      ldittmarL Offline
                      ldittmar
                      Developer
                      wrote on last edited by
                      #20

                      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
                      0
                      • M Offline
                        M Offline
                        mdsv
                        wrote on last edited by
                        #21

                        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
                        0
                        • R Offline
                          R Offline
                          ronnyw
                          wrote on last edited by
                          #22

                          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
                          0
                          • M Offline
                            M Offline
                            mdsv
                            wrote on last edited by
                            #23

                            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
                            0
                            • R Offline
                              R Offline
                              ronnyw
                              wrote on last edited by
                              #24

                              @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
                              0
                              • R Offline
                                R Offline
                                ronnyw
                                wrote on last edited by
                                #25

                                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
                                0
                                • M Offline
                                  M Offline
                                  mdsv
                                  wrote on last edited by
                                  #26

                                  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
                                  0
                                  • R Offline
                                    R Offline
                                    ramses
                                    wrote on last edited by
                                    #27

                                    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
                                    0
                                    • M Offline
                                      M Offline
                                      malc
                                      wrote on last edited by
                                      #28

                                      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

                                      Fan von ioBroker!

                                      <size size="50">und falls ich eine Frage stelle die irgendwo schon mal beantwortet wurde: "Ja, Suchfunktion genutzt, aber keine Lösung gefunden / nicht die richtigen Suchbegriffe gewusst."

                                      …</size>

                                      1 Reply Last reply
                                      0
                                      • enzoE Offline
                                        enzoE Offline
                                        enzo
                                        wrote on last edited by
                                        #29

                                        Vorstellung von Matthias haus-automatisierung.com

                                        ist dabei LaMetric ioBroker adapta zu erstellen. 😉

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

                                        1 Reply Last reply
                                        0
                                        • ruhr70R Offline
                                          ruhr70R Offline
                                          ruhr70
                                          wrote on last edited by
                                          #30

                                          @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!

                                          Adapter: Fritzbox, Unify Circuit
                                          Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          768

                                          Online

                                          32.4k

                                          Users

                                          81.4k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe