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 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
                                        • M
                                          MCU @SKB last edited by MCU

                                          @skb Und du willst alle Kommandos verwenden oder nur "Start" und "Stop"?
                                          runcommand braucht immer alle Daten im JSON :

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

                                          oder reicht auch

                                          {
                                            "command": "start"
                                          }
                                          
                                          SKB 1 Reply Last reply Reply Quote 0
                                          • SKB
                                            SKB Developer Most Active @MCU last edited by SKB

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

                                            @skb Und du willst alle Kommandos verwenden oder nur "Start" und "Stop"?
                                            runcommand braucht immer alle Daten im JSON :

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

                                            Ich würde gerne alle Verwenden, wenn es geht.

                                            oder reicht auch

                                            {
                                              "command": "start"
                                            }
                                            

                                            2020-04-12 14_38_55-adapters - ioBroker.png
                                            Das reicht, um den Roomba zu steuern - aber leider werden die 4 DP's nicht gefüllt, da sie nicht komplett übermittelt werden.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            714
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

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