Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. jarvis v2.2.0 - just another remarkable vis

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    jarvis v2.2.0 - just another remarkable vis

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      MCU @SKB last edited by

      @skb Ja.

      SKB 1 Reply Last reply Reply Quote 0
      • SKB
        SKB Developer Most Active @MCU last edited by

        @mcu

        {
          "_isSmallScreen": false,
          "_isMobile": false,
          "_isTablet": false,
          "token": "34f3e454dab3493c4f9d54645be194bc",
          "sendUsageData": true,
          "joyrideIntroduction": true,
          "joyrideConfiguration": true,
          "configTab": "layout",
          "configGroupDevices": "function",
          "configExpertMode": false,
          "columnsOnMediumScreenSizes": "3",
          "themeDarkMode": true
        }
        
        M 1 Reply Last reply Reply Quote 0
        • M
          MCU @SKB last edited by MCU

          @skb Danke. Aber ich dachte da wäre ein Notification-DP drin. Welcher Browser war das bei Dir?

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

            @mcu sagte in jarvis v2.2.0 - just another remarkable vis:

            @diginix Das geht nicht, auch nicht mit v3.
            Man kann aber versuchen die Farbe aus einer root-Variable zu ziehen:

            In CSS muss dann diese definiert werden:

            :root {
              --mein-bg-color: green;
            }
            
            {"default":{"color":"var(--mein-bg-color)"}}
            

            Habe ich noch nicht, muss gleich mal machen.

            EDIT: mit v3 funktioiniert es, v2 kann gerade nicht testen. Du vielleicht?

            Funktioniert perfekt mit v2.

            1 Reply Last reply Reply Quote 1
            • SKB
              SKB Developer Most Active @MCU last edited by

              @mcu Diese hätte ich noch.Screenshot_20210929-231241_Chrome.jpg

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

                @skb Bei welchem Browser hast du das Problem? Alle?
                Ist der Browser so eingestellt, das er nach der Sitzung die Browser-Daten komplett löscht? Dann verliert er natürlich dei Info, das man schon mal "Abbrechen" geklickt hat.
                Habe jetzt bei Chrome,Firefox,Edge probiert. Erhalte nur einmal die Nachfrage bzgl Notifications. Klicke auf Abbrechen und dann nach F5, bekomme ich keine Nachfrage mehr.

                SKB 1 Reply Last reply Reply Quote 0
                • SKB
                  SKB Developer Most Active @MCU last edited by

                  @mcu Also beim Fully Kiosk kann ich nicht akzeptieren sondern nur Abbrechen drücken.
                  Die anderen Browser frieren auf meinem Tablet nach x Stunden Laufzeit ein und die Oberfläche reagiert nicht mehr.
                  Aktuell läuft das Kiosk prima.
                  Ich schaue nochmal in die Reload Daten.
                  Ist aber eigentlich nicht notwendig, Jarvis neu zu laden, oder?

                  1 Reply Last reply Reply Quote 0
                  • S
                    Smart81 @Diginix last edited by

                    @diginix

                    Perfekt ! Das war das Problem 🙂 Vielen Dank diginix !!!!

                    Allerdings hast du natürlich recht , ich kann den map64 wert gar nicht für meine Ring anwenden 😞
                    Datenpunkt: ring.0.doorbell_83834915.snapshot_file

                    Wert: /opt/iobroker/iobroker-data/ring_0/snapshot/snapshot83834915_1632981871393.jpg

                    (Dieser wird immer wieder neu geschrieben sobald a) eine Aktivität ist oder ich den snapshotrequest file button drücke)

                    Eine aktualisierung kann man triggern , jedoch wenn ich diese nun in einen von mir erstellen Datenpunkt schreibe , weiss ich nicht was man noch dazu schreiben müsste 😕

                    Diginix 1 Reply Last reply Reply Quote 0
                    • Diginix
                      Diginix @Smart81 last edited by

                      @smart81 Theoretisch könnte das reichen:

                      <img src="hier der Wert aus dem Datenpunkt mit dem Pfad zum Bild" />
                      
                      S 1 Reply Last reply Reply Quote 0
                      • S
                        Smart81 @Diginix last edited by Smart81

                        @diginix

                        Hey !

                        Das wäre ja einfach , aber wie weiss er denn das er das letzte jpg dazu nutzen soll?

                        sprich , es sind immer andere Namen die das nächste Bild hat leider

                        Im pfad befindet sich jpgs und mp4 dateien , aber anzeigen tun er beides nicht 😕

                        snip.PNG

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

                          @smart81 Zeig doch mal was du in den DP für jarvis schickst.

                          Jarvis kann keine relative Pfade verarbeiten. Man muss einen HTTP-Server haben, damit jarvis direkt auf das File zugreifen kann: http://192.168.178.xx/ring/imageA.jpg oder man kopiert die Daten in /vis.0-Verzeichnis. Von dort kann jarvis die Daten auch lesen: http://192.168.178.xx:8082/vis.0/....

                          Wie lautet das Objekt für jarvis? 0_userdata.0......

                          S 1 Reply Last reply Reply Quote 1
                          • SKB
                            SKB Developer Most Active last edited by SKB

                            Gibt es eigentlich auch die Möglichkeit, JSON Daten in einen Datenpunkt zu schreiben?

                            Hintergrund: Der Roomba Adapter benötigt sowas:

                            {
                              "command": "stop",
                              "time": 0,
                              "initiator": "Skript",
                              "timestamp":0
                            }
                            

                            Dieser Ansatz klappt leider nicht:

                            {
                              '{"command":"start"}': 'Starten',
                            }
                            

                            Danke!

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

                              @mcu

                              Hallo mcu !

                              Vielen Dank für die Hilfe 🙂

                              Mein Object heißt so: 0_userdata.0.Camera das hatte ich als Datenpunkt für die ring angelegt.

                              Lieben Gruß

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

                                @smart81
                                Kleines Experiment: Ist noch nicht 100%ig. Müssen wir zusammen machen.
                                IP anpassen: const serverIP = '192.168.178.xx'; / IP anpassen /

                                // **********************************************
                                // script zur Erstellung eines DP mit html-Inhalt
                                // für die Darstellung von einem image oder einem
                                // video in jarvis
                                // **********************************************
                                // createState('0_userdata.0.jarvis.ringDP', {read: true, write: true, name: "Ring-DP", type: "string", role: "text", def: "" });
                                // /opt/iobroker/iobroker-data/files/vis.0/Anruferbild.jpg
                                // /media/shares/bilder/Anruferbild.jpg
                                
                                const jarvisDP = '0_userdata.0.Camera';
                                const ringDP = 'ring.0.doorbell_83834915.snapshot_file';
                                const serverIP = '192.168.178.xx';  /* IP anpassen */
                                let dataBild = '';
                                let dataText = 'Ring';
                                var fs = require('fs');
                                
                                on({id: ringDP, change: "any"}, function (obj) {
                                   let value = obj.state.val;
                                   // Kopieren der Daten in vis.0
                                   if (value.indexOf('http')>=0){
                                       makeHtml(value);
                                   }else
                                   {    
                                       const bild1 = fs.readFileSync(value);
                                       if (value.indexOf('jpg')>0){
                                           log(value);
                                           // Wechsel Bild
                                           // Auslesen der Verzeichnisse und filename
                                           let filename = filenameSuche(value);
                                           log("Filename: " +filename);
                                           if (dataText == 'Bild1'){
                                               dataText = 'Bild2';
                                           }else{
                                               dataText = 'Bild1';
                                           }
                                           if (dataText == 'Bild1'){
                                               writeFile('vis.0','/main/ring/' + filename, bild1,function(){});  
                                           }else{
                                               writeFile('vis.0','/main/ring/' + filename, bild1,function(){});  
                                           }
                                           log('http://'+serverIP+':8082/vis.0/main/ring/'+filename);
                                           setTimeout(function(){
                                               // Bildname toggeln, da sonst jarvis nicht aktualisiert
                                               if (dataText == 'Bild1'){
                                                   makeHtml('http://'+serverIP+':8082/vis.0/main/ring/'+filename);
                                               }else{
                                                   makeHtml('http://'+serverIP+':8082/vis.0/main/ring/'+filename);
                                               }
                                               
                                           },3000);
                                           //makeHtml('http://'+serverIP+':8082/vis.0/main/ring/bild.jpg');
                                       }
                                       if (value.indexOf('mp4')>0){
                                           log(value);
                                           writeFile('vis.0','/main/ring/video.mp4', bild1,function(){});
                                           if (dataText == 'Bild1'){
                                                   dataText = 'Bild2';
                                               }else{
                                                   dataText = 'Bild1';
                                               }
                                           setTimeout(function(){
                                               makeHtml('http://'+serverIP+':8082/vis.0/main/ring/video.mp4');
                                           },3000);
                                       }
                                   }
                                });
                                //makeHtml('http://192.168.178.89:8082/vis.0/main/ring/bild.jpg');
                                
                                function filenameSuche(data){
                                   let slash = String(data).lastIndexOf('/');
                                   let verzeichnis = data.substr(0,slash);
                                   log(verzeichnis);
                                   return data.substr(slash+1,data.length);
                                }
                                
                                
                                
                                
                                function makeHtml(data){
                                   //Rest nicht verändern
                                   let datasrc = data; // 'http://192.168.178.89/download/Just the Way You Are.mp3'
                                   let dataId = 'video1';
                                   let startTime = '';
                                   let imagealt = dataText;
                                   let imgwidth = '100%'; // auto, %, px
                                   let imgheight= 'auto'; // auto, % , px
                                   let videoposter = dataBild;  //'http://192.168.178.89/download/Wecker.gif';
                                   let autoPlay = ''; // autoplay
                                   let loop = ''; //loop
                                   let preload = 'none';
                                   let muted = ''; //muted
                                   let htmlCode ='';
                                
                                   htmlCode += '<div>';
                                   if (datasrc != null || datasrc != undefined) {
                                       if (datasrc.indexOf('.mp4')>0 ||datasrc.indexOf('.ogg')>0 || datasrc.indexOf('.mp3')>0 ){
                                           htmlCode += '<video id="'+ dataId +'"';
                                           htmlCode += ' poster="'+ videoposter +'" ';
                                           htmlCode +=  autoPlay;
                                           htmlCode += ' alt="' + imagealt + '"';
                                           htmlCode += loop;
                                           htmlCode += ' preload="'+ preload +'"';
                                           htmlCode += muted;
                                           htmlCode += ' width="'+ imgwidth + '"';
                                           htmlCode += ' height="' + imgheight + '" controls>';
                                           if (datasrc.indexOf('.mp3')>0){
                                               if (startTime!=''){
                                                   htmlCode += '<source src="'+ datasrc + '#t=' + startTime + '" type ="audio/mp3"';
                                               }else{
                                                   htmlCode += '<source src="'+ datasrc + '" type ="audio/mp3"';
                                               }
                                           }else{
                                               if (startTime!=''){
                                                   htmlCode += '<source src="'+ datasrc + '#t=' + startTime +'" type ="video/mp4"';
                                               }else{
                                                   htmlCode += '<source src="'+ datasrc +'" type ="video/mp4"';
                                               }
                                           }
                                           htmlCode += '</video>';
                                       }else{
                                           htmlCode += '<img width="' + imgwidth + '" height="'+imgheight+'" ';
                                           htmlCode += 'src ="'+ datasrc +'" alt="'+ imagealt +'" >';
                                       }
                                   }
                                   htmlCode += '</div>';
                                   //log(htmlCode);
                                   setState(jarvisDP,htmlCode);
                                }
                                
                                

                                S 1 Reply Last reply Reply Quote 1
                                • M
                                  MCU @SKB last edited by MCU

                                  @skb Also man müsste also in DP dann für Starten schreiben: ??

                                  {
                                    "command": "start",
                                    "time": 0,
                                    "initiator": "Skript",
                                    "timestamp":0
                                  }
                                  

                                  und für Stoppen

                                  {
                                    "command": "stop",
                                    "time": 0,
                                    "initiator": "Skript",
                                    "timestamp":0
                                  }
                                  

                                  Welche Version nutzt du v2 oder v3?

                                  SKB 1 Reply Last reply Reply Quote 0
                                  • SKB
                                    SKB Developer Most Active @MCU last edited by SKB

                                    @mcu Ja, genau.

                                    Es ist nur noch ein zusätzliches "Handicap" vorhanden.
                                    Ich versuche mal, es zu erklären.

                                    Also, der DP "roomba.0.commands._runCommand" nimmt das JSON auf:

                                    {
                                      "command": "start",
                                      "time": 0,
                                      "initiator": "Skript",
                                      "timestamp":0
                                    }
                                    

                                    Dieses wird dann durch den Adapter in 4 einzelne DP'S geschrieben.
                                    Sieht so aus:
                                    2021-09-30 21_17_53-objects - ioBroker.png

                                    Dort stehen die Werte dann einzeln drin. Jetzt würde ich gerne, das in der Dropdown-Box von "command" gelesen wird (geht ja), aber JSON in roomba.0.commands._runCommand geschrieben wird.

                                    Schreiben habe ich nun mit (erstmal ohne Initiator und timestamp):

                                    {
                                      "{\"command\":\"start\"": "Starten",
                                      "{\"command\":\"stop\"}": "Stoppen",
                                      "{\"command\":\"Pause\"}": "Pause",
                                      "{\"command\":\"resume\"}": "Fortsetzen",
                                      "{\"command\":\"dock\"}": "Aufladen",
                                      "{\"command\":\"train\"}": "Trainingslauf",
                                      "{\"command\":\"evac\"}": "Auffangbehälter leeren",
                                      "{\"command\":\"find\"}": "Suchen"
                                    }
                                    

                                    Man müsste quasi einmal lesen und entsprechend ersetzen und einmal schreiben und entsprechend ersetzen.

                                    Geht das überhaupt?
                                    Verwende V2.

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

                                      @skb Zeig mal den Inhalt von deiner Dropdown-Box in jarvis. Anzeigevariante.

                                      Dropdown-Box von "command" gelesen wird (geht ja)

                                      Die Dropdownliste wurde in der Anzeigevariante angelegt?

                                      SKB 1 Reply Last reply Reply Quote 0
                                      • SKB
                                        SKB Developer Most Active @MCU last edited by SKB

                                        @mcu Das ist die Anzeigevariante.

                                        {
                                          "{\"command\":\"start\"}": "Starten",
                                          "{\"command\":\"stop\"}": "Stoppen",
                                          "{\"command\":\"Pause\"}": "Pause",
                                          "{\"command\":\"resume\"}": "Fortsetzen",
                                          "{\"command\":\"dock\"}": "Aufladen",
                                          "{\"command\":\"train\"}": "Trainingslauf",
                                          "{\"command\":\"evac\"}": "Auffangbehälter leeren",
                                          "{\"command\":\"find\"}": "Suchen"
                                        }
                                        

                                        Wo setze ich denn die "Schreibvariante" ein?

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

                                          @skb Wenn man in den Command direkt ein Kommando schreibt passiert dann nichts?
                                          415f8d72-9f1f-4a71-8a7a-65c0d460619c-image.png
                                          Also wenn man da jetzt "start" oder "stop" bestätigt?

                                          SKB 1 Reply Last reply Reply Quote 0
                                          • SKB
                                            SKB Developer Most Active @MCU last edited by SKB

                                            @mcu Nein, das ist quasi "last" Command. Damit man weiss, was akzeptiert wurde bzw. was der Roomba tut.

                                            2021-09-30 21_36_09-objects - ioBroker.png

                                            Das reine Kommado geht nur über "roomba.0.commands._runCommand".

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            768
                                            Online

                                            31.7k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            jarvis material material ui materialdesign vis visualisierung visualization
                                            316
                                            6126
                                            3557934
                                            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