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.
    • 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
                                          • sigi234
                                            sigi234 Forum Testing Most Active last edited by

                                            @Arnulf:

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

                                            Ja, ist das Bar Widget!

                                            Und CCS Klasse: mdui-blue-pulse

                                            2858_bar_widget.txt

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            819
                                            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