Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. LaMetric oder JSON-POST per IOBroker Javascript

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.1k

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.4k

LaMetric oder JSON-POST per IOBroker Javascript

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
69 Beiträge 19 Kommentatoren 14.6k Aufrufe 8 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • ruhr70R Offline
    ruhr70R Offline
    ruhr70
    schrieb am zuletzt editiert von
    #4

    @mdsv:

    Per CURL geht es so ….

    curl -X POST -u "dev:<your api/key/here="">" -H "Content-Type: application/json" -d " { \"model\": { \"frames\": [ { \"icon\":\"a2867\", \"text\":\"Hello\!\"} ] } }" http://<ip address="">:8080/api/v2/device/notifications</ip></your>
    

    Ideen dazu, dies Javascript einzusetzen, habe jetzt schon lange probiert und es nicht hinbekommen… `

    mmh… es gibt mehrere Arten der Authentifizierung.

    Für die Basisauthentifizierung musst Du das Skript um die Variable auth erweitern und die Options anpassen:

    var auth = 'user:password';
    
    var options = {
        host: deviceIpAdress,
        port: 4343,
        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': 'applciation/json',
            'Content-Length': data.length
        }
    };
    

    Das sieht aber nicht nach Deinem <your api/key/here="">aus.

    Ich schau mal, was ich dazu finde.</your>

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

    1 Antwort Letzte Antwort
    0
    • M Offline
      M Offline
      mdsv
      schrieb am zuletzt editiert von
      #5

      Tja, geht leider nicht so … auf Seite http://lametric-documentation.readthedo … ation.html ist zwar alles beschrieben, funktioniert aber so nicht …ohne oder mit Base64 (https://www.base64encode.org) alles probiert. API_Key habe ich aber.

      Kann mich auch local nicht anmelden, hier kommt interessanterweise aber ein Anmeldefenster.

      ` > In order to send a notification you must do HTTP POST request to http://<lametric_time_ip_address>:8080/api/v2/device/notifications endpoint with headers:

      Authorization: Basic <base64(dev:api_key)>Content-Type: application/json

      and body:</base64(dev:api_key)></lametric_time_ip_address> `

      1 Antwort Letzte Antwort
      0
      • ruhr70R Offline
        ruhr70R Offline
        ruhr70
        schrieb am zuletzt editiert von
        #6

        @mdsv:

        ` > In order to send a notification you must do HTTP POST request to http://<lametric_time_ip_address>:8080/api/v2/device/notifications endpoint with headers:

        Authorization: Basic <base64(dev:api_key)>Content-Type: application/json

        and body:</base64(dev:api_key)></lametric_time_ip_address>

        Und so?

        var apikey = '<your api/key/here="">';
        var auth = 'Basic ' + new Buffer('dev:' + apikey).toString('base64');
        
        var options = {
            host: deviceIpAdress,
            port: 4343,
            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': 'applciation/json',
                'Content-Length': data.length
            }
        };</your> 
        

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

        1 Antwort Letzte Antwort
        0
        • ruhr70R Offline
          ruhr70R Offline
          ruhr70
          schrieb am zuletzt editiert von
          #7

          Und eine zweite Variante, falls das oben so nicht funktioniert:

          var apikey = '<your api/key/here="">';
          var auth = 'Basic ' + new Buffer('dev:' + apikey).toString('base64');
          
          var options = {
              host: deviceIpAdress,
              port: 4343,
              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',
                  'Authorization': 'Basic <'+auth+'>',
                  'Accept': 'applciation/json',
                  'Content-Length': data.length
              }
          };</your> 
          

          Ich würde auf diese zweite Variante tippen… wg. der Beschreibung Authorization: Basic<base64(dev:api_key)></base64(dev:api_key)>

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

          1 Antwort Letzte Antwort
          0
          • M Offline
            M Offline
            mdsv
            schrieb am zuletzt editiert von
            #8

            Feedback Var. 1

            Leider nicht … habe sogar mit <> und ohne probiert.

            ` > 21:50:06.426 [info] javascript.0 Start javascript script.js.LeMetric.notification

            21:50:06.426 [info] javascript.0 script.js.LeMetric.notification: Data to request body: {"priority":"warning","model":{"cycles":1,"frames":[{"icon":"data:image/png;base64,iVBORw0KGgoAAAANGRkUFBQZ0…....................<snip>...","text":"HELLO!"}],"sound":{"category":"notifications","id":"cat"}}}

            21:50:06.426 [info] javascript.0 script.js.LeMetric.notification: registered 0 subscriptions and 0 schedules

            21:50:06.441 [info] javascript.0 script.js.LeMetric.notification: http Status: 401

            21:50:06.441 [warn] javascript.0 script.js.LeMetric.notification: HEADERS: {"www-authenticate":"Basic realm="global"","content-type":"application/json;charset=UTF8","content-length":"96","connection":"close","date":"Tue, 02 May 2017 19:50:05 GMT","server":"lighttpd/1.4.35"}

            21:50:06.441 [info] javascript.0 script.js.LeMetric.notification: body: { "errors":[ { "message":"Authorization is required" } ] }</snip> `

            Feedback Var.2

            OK, habe den Unterschied gefunden :D

            'Authorization': 'Basic <'+auth+'>' im Header

            -> gleiche Fehlermeldung.

            1 Antwort Letzte Antwort
            0
            • ruhr70R Offline
              ruhr70R Offline
              ruhr70
              schrieb am zuletzt editiert von
              #9

              @mdsv:

              Feedback Var.2

              OK, habe den Unterschied gefunden :D

              'Authorization': 'Basic <'+auth+'>' im Header

              -> gleiche Fehlermeldung. `

              Und das auth: über den Header weg.

              Ich glaube die < > gehören auch nicht dazu…

              Also:

              'Authorization': 'Basic '+auth,
              

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

              1 Antwort Letzte Antwort
              0
              • ruhr70R Offline
                ruhr70R Offline
                ruhr70
                schrieb am zuletzt editiert von
                #10

                Poste mal bitte, wie dieser Bereich jetzt bei Dir aussieht:

                var apikey = '<your api/key/here="">';
                var auth = 'Basic ' + new Buffer('dev:' + apikey).toString('base64');
                
                var options = {
                    host: deviceIpAdress,
                    port: 4343,
                    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',
                        'Authorization': 'Basic '+auth,
                        'Accept': 'applciation/json',
                        'Content-Length': data.length
                    }
                };</your>
                

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

                1 Antwort Letzte Antwort
                0
                • M Offline
                  M Offline
                  mdsv
                  schrieb am zuletzt editiert von
                  #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 Antwort Letzte Antwort
                  0
                  • ruhr70R Offline
                    ruhr70R Offline
                    ruhr70
                    schrieb am zuletzt editiert von
                    #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 Antwort Letzte Antwort
                    0
                    • ruhr70R Offline
                      ruhr70R Offline
                      ruhr70
                      schrieb am zuletzt editiert von
                      #13

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

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

                      1 Antwort Letzte Antwort
                      0
                      • ruhr70R Offline
                        ruhr70R Offline
                        ruhr70
                        schrieb am zuletzt editiert von
                        #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 Antwort Letzte Antwort
                        0
                        • M Offline
                          M Offline
                          mdsv
                          schrieb am zuletzt editiert von
                          #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 Antwort Letzte Antwort
                          0
                          • R Offline
                            R Offline
                            ronnyw
                            schrieb am zuletzt editiert von
                            #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 Antwort Letzte Antwort
                            0
                            • B Offline
                              B Offline
                              Ben
                              schrieb am zuletzt editiert von
                              #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 Antwort Letzte Antwort
                              0
                              • ruhr70R Offline
                                ruhr70R Offline
                                ruhr70
                                schrieb am zuletzt editiert von
                                #18

                                Na das ist ja mal ein Einstieg :-)

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

                                1 Antwort Letzte Antwort
                                0
                                • R Offline
                                  R Offline
                                  ronnyw
                                  schrieb am zuletzt editiert von
                                  #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 Antwort Letzte Antwort
                                  0
                                  • ldittmarL Offline
                                    ldittmarL Offline
                                    ldittmar
                                    Developer
                                    schrieb am zuletzt editiert von
                                    #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 Antwort Letzte Antwort
                                    0
                                    • M Offline
                                      M Offline
                                      mdsv
                                      schrieb am zuletzt editiert von
                                      #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 Antwort Letzte Antwort
                                      0
                                      • R Offline
                                        R Offline
                                        ronnyw
                                        schrieb am zuletzt editiert von
                                        #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 Antwort Letzte Antwort
                                        0
                                        • M Offline
                                          M Offline
                                          mdsv
                                          schrieb am zuletzt editiert von
                                          #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 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          400

                                          Online

                                          32.5k

                                          Benutzer

                                          81.7k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe