Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. Einfach mal zeigen will….. :-) - Teil 1

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Einfach mal zeigen will….. :-) - Teil 1

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

      @tempestas:

      Danke, aber das Lob gebührt Marcel85, mrMuppet und uhula. Auf deren Ideen und Beispiele greife ich ja ganz wesentlich zurück bzw bei uhula (teilweise) seine Material Design Arbeit.

      Ich habe nur hier und da etwas angepasst. ` Respekt. Ist richtig Klasse geworden. Da bin ich Meilenweit entfernt.

      Wäre echt super wenn du das auf der Demo-Seite hochladen würdest.

      LG Torsten

      1 Reply Last reply Reply Quote 0
      • S
        schittl last edited by

        @tempestas:

        ich konnte es ja nicht lassen und habe jetzt für mein neues Tablet wieder alles etwas umgestellt: `
        Geniale Ansichten. Super Arbeit. 2 kleine Fragen habe ich mal dazu:

        1. Woher bekommst Du die Informationen zu deinen Geräten in der Technik-Seite? Per Ping-Adapter?

        2. Wie hast Du die Zeitschaltung realisiert? Per Skript? Ähnlich wie das am Beispiel des Skriptes Eieruhr?

        Wäre prima wenn es auf der Demo-Seite landet.

        vg

        Falk

        1 Reply Last reply Reply Quote 0
        • T
          tempestas last edited by Jey Cee

          Hallo,

          1a) die grünen "online Signale" sind per Ping Adapter, genau richtig getippt.

          1b) die Infos zur Internet Verbindung stammen aus dem Skript von Cybertron & Pix http://forum.iobroker.net/viewtopic.php?f=21&t=4170

          1c) die übrigen infos habe ich mit dem System-Info Skript von Blackmike extrahiert, welches ich teilweise noch etwas ergänzt habe http://forum.iobroker.net/viewtopic.php?t=7590

          1. Die Zeitschaltung habe ich via Skript gemacht. Ich habe es auch hier im Forum schon veröffentlicht, wie die meisten meiner Skripte (wenn ich denn mal was lauffähiges hinbekomme mit meiner Laienkompetenz). Das hier genutzte ist etwas abgewandelt zu dem veröffentlichten, da ich nun mit dem jqui ctrl input widget arbeite statt mehrere Knöpfe. Ob das wirklich ideal ist fürs Tablet, da bin ich mir noch nicht sicher.

          Hier das Skript:

          // ##########
          // Skript zum Schalten einer Steckdose zwischen zu zwei definierten Zeitpunkten. Steuerbar über Vis
          // Dank an paul53 für das Schedule Skript
          // v 1.0 stable, tempestas 24.1.2018; Zeitauswahl stark vereinfacht (jqui input date time overlay), zu steuernder Aktor via VIS auswählbar
          // v 0.2, stable, tempestas, 2.12.2017
          // Changes: boolean neu angelegt
          // telegram eingefügt
           // Skripteinstellungen
           var force = false;         // true erzwingt bei Neustart des Skripts das Anlegen der States mit den nachfolgend definierten Werten
          var debug = true;
           // STATES FÜR AKTIV UND TELEGRAM INFO 
           createState('javascript.0.Zeitschaltung.Aktor1.Aktiv', false, force, {
            read: true, 
            write: true, 
            name: "Zeitschaltung aktiv oder aus?", 
            type: "boolean", 
            def: false
          });
           createState('javascript.0.Zeitschaltung.Aktor1.telegram', false, force, {
            read: true, 
            write: true, 
            name: "Telegram senden?", 
            type: "boolean", 
            def: false
          });
           // State für zu steuernden Aktor anlegen
           createState('javascript.0.Zeitschaltung.Aktor1.Aktor','', force, {               
              name: 'Einstellung zu steuernder Aktor',
              type: 'string',
          });
           // STARTZEIT STATES
           createState('javascript.0.Zeitschaltung.Aktor1.Start.Zeit',"17:00:00", force, {          // String der Startzeit      
              name: 'Startzeit ',
              type: 'string',
           });
           createState('javascript.0.Zeitschaltung.Aktor1.Start.Stunde',"", force, {          // Startzeit-Stundenstring für Anzeige in VIS
              name: 'Startstunde ',
              type: 'string',
           });
           createState('javascript.0.Zeitschaltung.Aktor1.Start.Minute',"", force, {          // Startzeit-Minutenstring für Anzeige in VIS
              name: 'Startminute ',
              type: 'string',
           });
           // ENDZEIT STATES
           createState('javascript.0.Zeitschaltung.Aktor1.Ende.Zeit',"20:00:00", force, {          // String der Endzeit      
              name: 'Startzeit ',
              type: 'string',
           });
           createState('javascript.0.Zeitschaltung.Aktor1.Ende.Stunde','', force, {           // Endzeit-Stundenstring für Anzeige in VIS    
              name: 'Endminute ',
              type: 'string',
           });
           createState('javascript.0.Zeitschaltung.Aktor1.Ende.Minute','', force, {           // Endzeit-Minutenstring für Anzeige in VIS    
              name: 'Endminute ',
              type: 'string',
           });
           var idAktor = 'javascript.0.Zeitschaltung.Aktor1.Aktor';     
          var aktor;
           var idAktiv         =   "javascript.0.Zeitschaltung.Aktor1.Aktiv";
          var idTelegram      =   "javascript.0.Zeitschaltung.Aktor1.telegram";
           var idStartzeit     =   "javascript.0.Zeitschaltung.Aktor1.Start.Zeit";
          var idEndzeit       =   "javascript.0.Zeitschaltung.Aktor1.Ende.Zeit";
           var idMinStart      = "javascript.0.Zeitschaltung.Aktor1.Start.Minute" ;
          var idStdStart      = "javascript.0.Zeitschaltung.Aktor1.Start.Stunde";
           var idMinEnd        = "javascript.0.Zeitschaltung.Aktor1.Ende.Minute";
          var idStdEnd        = "javascript.0.Zeitschaltung.Aktor1.Ende.Stunde";
           var einschalten,
              timerEinschalten;
          
          var ausschalten,
              timerAusschalten;
          
          // ##################################################################################################
          //                                      Functions und Trigger
          // ##################################################################################################
           // FUNCTION WECHSEL DES ZU SCHALTENDEN AKTORS
           on({id: idAktor, change: "any"}, function(obj){
              aktor = obj.state.val;
             if(debug) log("Aktor ist "+aktor);    
          });
           // STARTZEIT TRIGGER (SCHEDULE)
           on(idStartzeit, function(dp) {                                                                          // Triggern bei Änderung des Startzeit-Strings
              einschalten= dp.state.val.split(':');                                             
          
              setState(idStdStart, einschalten[0]);                                                               // States für VIS Visualisierung setzen
              setState(idMinStart, einschalten[1]);                                                               // States für VIS Visualisierung setzen
               clearSchedule(timerEinschalten);                                                                    // altes Schedule löschen
              timerEinschalten = schedule(einschalten[1] + ' ' + einschalten[0] + ' * * 0-6', fEinschalten);      // neues Schedule einstellen
          });
           // ENDZEIT TRIGGER ( SCHEDULE)
           on(idEndzeit, function(dp) {                                                                            // Triggern bei Änderung des Endzeit-Strings
              ausschalten= dp.state.val.split(':');
          
              setState(idStdEnd, ausschalten[0]);                                                                 // States für VIS Visualisierung setzen
              setState(idMinEnd, ausschalten[1]);                                                                 // States für VIS Visualisierung setzen
          
              clearSchedule(timerAusschalten);                                                                    // altes Schedule löschen
              timerAusschalten = schedule(ausschalten[1] + ' ' + ausschalten[0] + ' * * 0-6', fAusschalten);      // neues Schedule einstellen
          });
           // Functions ein- und ausschalten (Festlegen der durch Schedule getriggerten Aktionen)
           function fAusschalten(){
              if (getState(idAktiv).val === true) {
                      setState(aktor, false);         // nur, wenn die Automatik eingeschaltet ist wird die Steckdose geschaltet
                       if(getState(idTelegram).val === true) {sendTo('telegram.0', {                                          // Nachricht per Telegram
                          text: "Test-Zeitschaltung wurde ausgeschaltet"         
                      });
                  }
              }
          }
          
          function fEinschalten(){
              if (getState(idAktiv).val === true) {
                      setState(aktor, true);         // nur, wenn die Automatik eingeschaltet ist wird die Steckdose geschaltet
                       if(getState(idTelegram).val === true) {sendTo('telegram.0', {                                          // Nachricht per Telegram
                          text: "Test-Zeitschaltung wurde eingeschaltet"        
                      });
                  }
              }
          }
           // FUNCTION FÜR ERSTMALIGES EINLESEN
           function fSkriptStart(){
              einschalten = getState(idStartzeit).val.split(':'); 
              timerEinschalten = schedule(einschalten[1] + ' ' + einschalten[0] + ' * * 0-6', fEinschalten); 
              if(debug) log("Einschalten um:" +einschalten[0] + " / " + einschalten[1]+ " / " + einschalten[2] );
              setState(idStdStart, einschalten[0]);
              setState(idMinStart, einschalten[1]);
          
              ausschalten = getState(idEndzeit).val.split(':'); 
              timerAusschalten = schedule(ausschalten[1] + ' ' + ausschalten[0] + ' * * 0-6', fAusschalten); 
              if(debug) log("Ausschalten um:" + ausschalten[0] + " / " + ausschalten[1]+ " / " + ausschalten[2] );
              setState(idStdEnd, ausschalten[0]);
              setState(idMinEnd, ausschalten[1]);    
          
          }
           // Bei Start eine Sekunde verzögert, damit States angelegt werden können
          setTimeout(fSkriptStart, 1000) ; 
          

          Hier pflege ich eine Liste für die Dropdown Auswahl der Aktoren, die geschaltet werden sollen. Einfach unter Klartext einen beliebigen Namen eingeben und bei Liste den Datenpunkt (OID).

          createState('javascript.0.Zeitschaltung.ListeKlartext','',  {               
              name: 'Einstellung zu steuernder Aktor',
              type: 'string',
          });
          createState('javascript.0.Zeitschaltung.Liste','',  {               
              name: 'Einstellung zu steuernder Aktor',
              type: 'string',
          });
          var Klartext ='HM Steckdose 1 Schlafzimmer;HM IP Steckdose Küche';
          log(Klartext);
          var Liste = "hm-rpc.0.OEQ0817114.1.STATE;hue.0.Philips_hue.Steckdose_Sterne.on";
          log(Liste);
          setState("javascript.0.Zeitschaltung.ListeKlartext"/*Einstellung zu steuernder Aktor*/, Klartext);
          setState("javascript.0.Zeitschaltung.Liste"/*Einstellung zu steuernder Aktor*/, Liste);
          
          1 Reply Last reply Reply Quote 0
          • M
            Marcel85 last edited by Jey Cee

            Hier mal ein neuer Entwurf.
            3473_dashboard.png

            1 Reply Last reply Reply Quote 0
            • P
              ple last edited by

              Respekt Respekt 🙂

              Wäre schöne wenn die Views noch hochgeladen werden könnten. 🙂

              Gruß

              1 Reply Last reply Reply Quote 0
              • D
                dali3 last edited by

                Marcel, wie immer, deine View/Designs sind einfach hammer 😉

                Würde mich auch über einen Upload freuen!

                Gruess

                1 Reply Last reply Reply Quote 0
                • sigi234
                  sigi234 Forum Testing Most Active last edited by

                  Hallo, bin auch gerade dabei neue Views zu erstellen…...sind aber noch in Bearbeitung. 🙂

                  2858_screenshot__296_.png

                  2858_screenshot__290_.png

                  2858_screenshot__291_.png

                  2858_screenshot__292_.png

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

                    @xADDRx:

                    Nice Marcel!

                    Hier eine View für meine Hue Lampen… `
                    Hammer Arbeit. Kompliment. Finde es fantastisch was mit VIS und IObroker alles möglich ist.

                    Könntest Du die View mit den Hue Lights und Programmen hochladen?

                    Wäre super.

                    Klasse Arbeit Daumen hoch.

                    1 Reply Last reply Reply Quote 0
                    • S
                      Stoni last edited by

                      @Marcel85:

                      Ich habe für einen User mal ein anderes Wetter-View gebastelt.

                      edit: Ich sehe gerade das da wohl was verrutscht ist. ` Funktioniert das mit einem Adapter? Irgendwoher müssen ja die Daten kommen…

                      Könntest du den Widget Code hier zur Verfügung stellen? Ich bin noch auf der Suche nach einer vollflächigen Wettervorschau...

                      Gruß Stoni

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

                        Das dürften weatherunderground und dasWetter Adapter sein. WU hat nur 3 Tage Vorschau, muss also ein zweiter sein.

                        Im Hintergrund hat er dann irgendein blurred Bild gelegt, darüber ein img src Widget, dass auf den WU State mit dem Image verlinkt. So tippe ich das mal

                        Gestern ist bei mir mein Abschnitt "Alarm" zumindest iW. fertig geworden:

                        2395_alarm.png

                        1 Reply Last reply Reply Quote 0
                        • sigi234
                          sigi234 Forum Testing Most Active last edited by

                          Hallo,

                          wie hast du die Meldungen quittieren umgesetzt?

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

                            Meinst du wirklich nur das quittieren, oder inklusive Meldung?

                            Das Quittieren ist als Teil meines Alarmanlagenskripts so eingebaut, der button verweist dann auf den idAlarmQuittieren State.

                            on(idAlarmQuittieren, function(obj){
                            
                               if(obj.state.val){
                            
                                    alarmMeldung = [];                          // Alarmmeldungsarray leeren
                                    setState(idAlarmcounter, 0 );            // Alarmcounter auf 0 setzen
                                    setState(idAlarm, 0);                       // Alarmtrigger zurückgesetzt
                                    setState(idAlarmmeldung, "");            // VIS Alarmmeldungsstate wieder leeren
                                    setState(idAlarmQuittieren, false);      // Quittierensbutton wieder auf false setzen
                               }
                            
                            });
                            
                            

                            Da das so stand alone wahrscheinlich nicht sehr aussagekräftig ist kurz ein paar Erläuterungen:

                            alarmMeldungen ist ein Array, in den bei Alarm (z.B. Fenster, Unreach oder BWM oder Kameras) aus den jeweiligen Abschnitten des Alarmskripts die Meldung reingeschrieben wird

                            idAlarmcounter ist einfach nur eine (eigentlich nicht benötigte) State, in der ich die Anzahl der vorhandenen Meldungen zähle.

                            idAlarm ist einfach nur 0 / 1 für Alarm ausgelöst oder nicht

                            idAlarmmeldung ist der state, in den die Infos aus dem alarmMeldung Array reingeschrieben werden und den ich dann anzeige

                            idAlarmQuittieren ist eine boolean Variable für den Button selbst, wobei mir gerade aufgefallen ist, dass man die eigentlich nicht braucht.

                            Falls du das inklusive der eigentlichen Meldung wissen wolltest, kurze Meldung dann gebe ich es gern

                            1 Reply Last reply Reply Quote 0
                            • A
                              Arnulf last edited by

                              @sigi234:

                              ich habe die Menüleiste links schon immer versucht zu installieren.

                              Aber leider finde ich dazu das Widget nicht.

                              Bzw. weiß nicht, welches Paket dazu benötigt wird.

                              Ich habe ja in der click-Seite eine Demo gesehen, aber bei mir erscheint dieses Widget nicht im editor

                              1 Reply Last reply Reply Quote 0
                              • Homoran
                                Homoran Global Moderator Administrators last edited by

                                @Arnulf:

                                Aber leider finde ich dazu das Widget nicht.

                                Bzw. weiß nicht, welches Paket dazu benötigt wird. `
                                vis-Bars

                                Gruß

                                Rainer

                                1 Reply Last reply Reply Quote 0
                                • C
                                  csamaggi last edited by

                                  Dann möchte ich von mir auch mal ein Paar Screens zeigen ich habe es eher schlicht gehalten von den Farben.

                                  Bin auch noch längst nicht fertig.

                                  1901_home.png

                                  1901_eg.png

                                  1901_media.png

                                  1901_sonos.png

                                  1901_tv.png

                                  1901_it.png

                                  1901_carport.png

                                  1901_wetter.png

                                  MFG Maggi

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

                                    @tempestas:

                                    Das Quittieren ist als Teil meines Alarmanlagenskripts so eingebaut, `
                                    So ist die Alarmquittierung nicht korrekt: Es dürfen nur die Alarme quittiert (zurück gesetzt) werden, deren Ursache (Auslöser) zum Zeitpunkt der Quttierung nicht mehr vorhanden ist.

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

                                      Hallo Paul,

                                      mein quittieren ist mehr ein "löschen und zur Kenntnis nehmen". Ich kann ohnehin nur quittieren, wenn die Alarmanlage abgeschaltet wurde, was wiederum bedeuted: ich war daheim und konnte prüfen, ob wirklich was los war oder meine Frau einfach nur bei laufender Alarmanlage ein Fenster geöffnet hat.

                                      Aber ich verstehe, was du meinst. Denke aber mal, das würde auch ein komplettes rework benötigen; ich müsste ja (denke ich mir mal) irgendwie einen Array mit den Nachrichten haben und ienen mit den auslösenden Aktoren und dessen Zustand. Beim quittieren muss dann geschaut werden, ob der auslösende Aktor nun wieder seinen Zustand geändert hat.

                                      Ganz vielleicht würde ich das hinbekommen (eine Idee habe ich, ist aber bestimmt viel zu umständlich); für <u>meine</u> Zwecke letztlich aber nicht relevant.

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

                                        @tempestas:

                                        für meine Zwecke letztlich aber nicht relevant.

                                        …in den bei Alarm (z.B. Fenster, Unreach oder BWM oder Kameras) `
                                        Für Alarme, die auf die Alarmanlage bezogen sind, ist das sicherlich so ausreichend. Aber was ist mit "Unreach" ?

                                        1 Reply Last reply Reply Quote 0
                                        • T
                                          tempestas last edited by Jey Cee

                                          Ahh, da kommt die Frage her. Valider Punkt.

                                          Mein Alarmskript reagiert natürlich nicht bei einzelnen Unreach Meldungen (Homematic hat ja dauernd mal Unreach: mein Glasbruchsensor ist mehr Deko dadurch) sondern bei einer definierten Menge innerhalb kurzer Zeit. Ist mehr ein Addon, wirklich testen konnte ich es noch nicht. Der Abschnitt sieht so aus, in der Hoffnung, dass keine Fehler drin sind:

                                          // ###############################################################
                                          //                      UNREACH ALARM
                                          // ###############################################################
                                           // Sendet Alarmmitteilung an Telegram, sofern eine bestimmte anzahl an Sicherheitssensoren binnen einer definierten Zeit "unreach" melden (Verdacht auf Jammer)
                                          // Ist immer aktiv
                                           // VARIABLEN
                                           var triggered = false;           // Var als Bedingung, damit während der Laufzeit nicht ständig neu getriggered wird
                                          var timing = 15;                // Zeit in Sekunden, nach deren Ablauf durchgezählt wird 
                                          var minCount = 3;               // Mindestanzahl an unreach Meldungen im definierten Gewerk die erreicht sein müssen, um Alarm auszulösen
                                           var cacheSelectorUNREACH  = $('channel[state.id=*.UNREACH](functions="Verschluss")');      // Test soll sich nur auf die sicherheitsrelevanten Sensoren beziehen, kein Alarm wg. ausgestöpselter Steckdosen o.ä.
                                           // TRIGGER
                                           cacheSelectorUNREACH.on(function() {   
                                              if(!triggered) {   
                                          
                                                   setTimeout(countUNREACH, timing * 1000);
                                                   triggered = true;
                                                }
                                          });
                                           // FUNCTION
                                           function countUNREACH() {
                                              var count = 0;
                                                    cacheSelectorUNREACH.each(function (id, i) {
                                                         var status = getState(id).val; 
                                                         if (status === true) ++count;                                       
                                                   }); 
                                          
                                                triggered = false;
                                          
                                             if(count >= minCount){
                                          
                                                nachricht = "Ungewöhnliche Anzahl von Unreach-Meldungen. Insgesamt " +count +" Sensoren nicht erreichbar";
                                                sendTo('telegram.0', nachricht);
                                                list();
                                                }
                                          
                                          1 Reply Last reply Reply Quote 0
                                          • paul53
                                            paul53 last edited by

                                            @tempestas:

                                            Homematic hat ja dauernd mal Unreach `
                                            Bei mir tritt Unreach nur sehr selten auf.
                                            @sigi234:

                                            wie hast du die Meldungen quittieren umgesetzt? `
                                            Mit meiner Anmerkung zu dem Skript wollte ich darauf aufmerksam machen, dass es nur bedingt als Vorlage für eine Alarmquittierung geeignet ist.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            867
                                            Online

                                            31.7k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

                                            133
                                            649
                                            298990
                                            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