NEWS

[Teilgelöst] homee in ioBroker visualisieren


  • Starter

    Hallo zusammen,

    ich beschäftige mich zur Zeit mit der Visualisierung in ioBroker. Nun möchte ich versuchen homee in die Visualisierung mit einzubinden.

    Folgendes möchte ich mir in VIS anzeigen lassen:

    1. Anzahl der in homee vorhanden Geräte und homeegramme
    2. Auflistung der einzelnen Geräte mit verwendeten Funkstandard und Anzeige ob in homee verfügbar oder nicht
    3. Logfile
    4. Heizpläne eventuell diese sogar über ioBroker ändern

    Was ist davon möglich und wie setze ich das am dümmsten um?

    Gruß Oliver


  • Starter

    Hallo zusammen,

    ich habe es jetzt teilweise gelöst, anbei mal meine Vis und das dazugehörige Script.

    04a52249-7a4c-449f-8a02-d0bafaf71f34-image.png

    Das Script liest den homee Adapter aus und legt für jedes Gerät verschiedene State's an, zählt die Anzahl der Lichter, Rauchmelder und Fenster pro Etage.

    //Liest den homee Adapter aus und legt für jedes Gerät verschiedene State's an
    
    on({id:"system.adapter.admin.0.uptime",change:'any'}, function (obj) {
        createState('homee.Anzahl_Geräte', 0, { name: 'Anzahl der Geräte', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
        createState('homee.Anzahl_homeegramme', 0, { name: 'Anzahl der homeegramme', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
        createState('homee.Anzahl_Aktivierte_homeegramme', 0, { name: 'Anzahl der aktivierten homeegramme', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
        createState('homee.Anzahl_deaktivierte_homeegramme', 0, { name: 'Anzahl der deaktivierten homeegramme', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
        createState('homee.Anzahl_Batterie', 0, { name: 'Anzahl der Geräte mit Batterie', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
        createState('homee.Anzahl_Batteriealarm', 0, { name: 'Anzahl der Geräte mit schwacher Batterie', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
        createState('homee.Anzahl_ohne_Batterie', 0, { name: 'Anzahl der Geräte ohne Batterie', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
        createState('homee.Anzahl_Fenster', 0, { name: 'Anzahl der Fensterkontakte', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
        createState('homee.Anzahl_Fenster_offen', 0, { name: 'Anzahl der geöffneten Fenster', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
        createState('homee.Anzahl_Fenster_offen_EG', 0, { name: 'Anzahl der geöffneten Fenster im EG', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
        createState('homee.Liste_Fenster', 'empty', { name: 'Liste offener Fenster', desc: '', type: 'string', role: '',read: true, write: true });   
        createState('homee.Liste_Batterie', 'empty', { name: 'Liste schwacher Batterien', desc: '', type: 'string', role: '',read: true, write: true });
        createState('homee.Anzahl_Fenster_offen_OG', 0, { name: 'Anzahl der geöffneten Fenster im OG', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
        createState('homee.Anzahl_Fenster_offen_UG', 0, { name: 'Anzahl der geöffneten Fenster im UG', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
        createState('homee.Liste_Rauchalarm', 'empty', { name: 'Liste Rauchalarm', desc: '', type: 'string', role: '',read: true, write: true });
        createState('homee.Anzahl_Rauchmelder', 0, { name: 'Anzahl der Rauchmelder', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
        createState('homee.Anzahl_Rauchalarm', 0, { name: 'Anzahl Rauchalarm', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true }); 
        createState('homee.Liste_Licht', 'empty', { name: 'Liste Licht an', desc: '', type: 'string', role: '',read: true, write: true });
        createState('homee.Anzahl_Lichtquellen', 0, { name: 'Anzahl der Lichtquellen', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
        createState('homee.Anzahl_Licht_an', 0, { name: 'Anzahl der brennenden Lichter', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true }); 
        createState('homee.Anzahl_Licht_an_EG', 0, { name: 'Anzahl der brennenden Lichter im EG', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true }); 
        createState('homee.Anzahl_Licht_an_UG', 0, { name: 'Anzahl der brennenden Lichter im UG', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
        createState('homee.Anzahl_Licht_an_OG', 0, { name: 'Anzahl der brennenden Lichter im OG', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });        
    
        var cacheSelector = $('[id=homee.0.*]');  
        var counter =0;
        var batterie =0;
        var fenster = 0;
        var fensterO =0;
        var fensterEG =0;
        var fensterOG =0;
        var fensterUG =0;
        var rauchmelder =0;
        var rauchalarm =0;
        var licht =0;
        var lichtA =0;
        var lichtEG =0;
        var lichtOG =0;
        var lichtUG =0;
        var listeL = "";
        var listeR = "";
        var listeF = "";
        var lowbat =0;
        var listeB = "";    
        var blevel = 255;
        var akt = 0;
        var deakt = 0; 
        blevel = parseFloat(blevel);
        var level = 11; // full   
        
        cacheSelector.each(function(id, i) {        
            var contentstring = id; 
            var test = id 
            var suchstring = /(FirmwareRevision)/g; 
            var suchergebnis = suchstring.test( contentstring );       
            
            if (suchergebnis != false) {    
                counter = counter+1;              
                var devicenameName = id.replace(/homee.0./g, "");
                devicenameName = devicenameName.replace(/.FirmwareRevision/g, "");            
                var längeName = devicenameName.length;            
                var name = devicenameName.substring(0, längeName); 
                var bezeichnung = getObject(id).common.name;
                bezeichnung = bezeichnung.replace(/.FirmwareRevision/g, "");
                var name_array = name.split('-');
                name = name_array[0];
                var nummer = name_array[1];
                name = name + "-" + nummer;            
            
                var devicename="homee.Gerät"+counter.toString()+".NameGerät";
                createState(devicename, 'empty', { name: 'Name Gerät', desc: '', type: 'string', role: '',read: true, write: true });
                setStateDelayed(devicename, name, 800);
    
                devicename="homee.Gerät"+counter.toString()+".BezeichnungGerät";
                createState(devicename, 'empty', { name: 'Bezeichnung Gerät', desc: '', type: 'string', role: '',read: true, write: true });
                setStateDelayed(devicename, bezeichnung, 800);            
    
                var aSelector = $('[id=homee.0.' + name + '.*]');           
                aSelector.each(function(id, i) {
                    var contentstring1 = id;                               
                    var suchstring1 = /(BatteryLevel)/g; 
                    var suchergebnis1 = suchstring1.test( contentstring1 );
    
                    if (suchergebnis1 != false) {
                        batterie = batterie+1;
                        var anhang = id.slice(id.lastIndexOf("."));
                        var strStatePath = "homee.0." + name + anhang;                    
    
                        if (isState(strStatePath, true)) {
                            blevel = getState(id).val;
                            blevel = parseFloat(blevel);                         
                            if(blevel == 255) level = 11; // 100 % 
                            if(blevel == 100) level = 10; // 100 %                      
                            if(blevel < 100) level = 9; // 90 %
                            if(blevel <= 90) level = 8; // 80 %
                            if(blevel <= 80) level = 7; // 70 %
                            if(blevel <= 70) level = 6; // 60 %
                            if(blevel <= 60) level = 5; // 50 %
                            if(blevel <= 50) level = 4; // 40 %
                            if(blevel <= 40) level = 3; // 30 %
                            if(blevel <= 30) level = 2; // 20 %
                            if(blevel <= 20) { 
                                level = 1; // 10 %
                                lowbat = lowbat+1;
                                listeB = listeB + " " + bezeichnung;
                            }     
                            if(blevel <= 10) level = 0; // empty                                             
                        }                 
                    }                                
                    
                    devicename="homee.Gerät"+counter.toString()+".BatterieStand";
                    createState(devicename, 0, { name: 'Batterie Ladezustand', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });               
                    setStateDelayed(devicename, blevel, 800); 
    
                    devicename="homee.Gerät"+counter.toString()+".BatterieLevel";
                    createState(devicename, 0, { name: 'Batterie Level', desc: '', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });               
                    setStateDelayed(devicename, level, 800);                          
                });
    
                var bSelector = $('[id=homee.0.' + name + '.*]');           
                bSelector.each(function(id, i) {
                    var contentstring2 = id;                               
                    var suchstring2 = /(OpenClose-)/g; 
                    var suchergebnis2 = suchstring2.test( contentstring2 );
    
                    if (suchergebnis2 != false) {
                        fenster = fenster+1;                    
                        
                        if(getState(id).val != 0) {
                            fensterO = fensterO+1;
                            var bezeichnung1 = getObject(id).common.name;
                            var test1 = getObject(id).common.name;
                            bezeichnung1 = bezeichnung1.replace(/.OpenClose/g, "");
                            listeF = listeF + " " + bezeichnung1;
    
                            var contentstring3 = bezeichnung1;                               
                            var suchstring3 = /(EG)/g; 
                            var suchergebnis3 = suchstring3.test( contentstring3 );
                            if (suchergebnis3 != false) {
                                fensterEG = fensterEG+1
                            }
    
                            var suchstring4 = /(UG)/g; 
                            var suchergebnis4 = suchstring4.test( contentstring3 );
                            if (suchergebnis4 != false) {
                                fensterUG = fensterUG+1
                            }
    
                            var suchstring5 = /(DG)/g; 
                            var suchergebnis5 = suchstring5.test( contentstring3 );
                            if (suchergebnis5 != false) {
                                fensterOG = fensterOG+1
                            }                                                        
                        }
                        
                        if (fensterO == 0) {
                            listeF = "Alle Fenster geschlossen!"
                        }
                        
                        setStateDelayed('homee.Anzahl_Fenster', fenster, 800);
                        setStateDelayed('homee.Anzahl_Fenster_offen', fensterO, 800);
                        setStateDelayed('homee.Liste_Fenster', listeF, 800);
                        setStateDelayed('homee.Anzahl_Fenster_offen_EG', fensterEG, 800);
                        setStateDelayed('homee.Anzahl_Fenster_offen_OG', fensterOG, 800);
                        setStateDelayed('homee.Anzahl_Fenster_offen_UG', fensterUG, 800);
                    }
                });
    
                var rSelector = $('[id=homee.0.' + name + '.*]');           
                rSelector.each(function(id, i) {
                    var contentstring4 = id;                               
                    var suchstring6 = /(SmokeAlarm-)/g; 
                    var suchergebnis6 = suchstring6.test( contentstring4 );
    
                    if (suchergebnis6 != false) {
                        rauchmelder = rauchmelder+1;
    
                        if(getState(id).val != false) {
                            rauchalarm = rauchalarm+1;
                            var bezeichnung2 = getObject(id).common.name;
                            var test2 = getObject(id).common.name;
                            bezeichnung2 = bezeichnung2.replace(/.SmokeAlarm/g, "");
                            listeR = listeR + " " + bezeichnung2;                              
                        }
    
                        if (rauchalarm == 0) {
                            listeR = "Kein Rauchalarm!"
                        }
                        
                        setStateDelayed('homee.Anzahl_Rauchmelder', rauchmelder, 800);
                        setStateDelayed('homee.Anzahl_Rauchalarm', rauchalarm, 800);
                        setStateDelayed('homee.Liste_Rauchalarm', listeR, 800);
                    }
                });
    
                var lSelector = $('[id=homee.0.' + name + '.*]');           
                lSelector.each(function(id, i) {
                    var contentstring5 = getObject(id).common.name;                               
                    var suchstring7 = /(Licht.OnOff)/g; 
                    var suchergebnis7 = suchstring7.test( contentstring5 );
    
                    if (suchergebnis7 != false) {
                        licht = licht+1;
    
                        if(getState(id).val != false) {
                            lichtA = lichtA+1;
                            var bezeichnung3 = getObject(id).common.name;
                            var test3 = getObject(id).common.name;
                            bezeichnung3 = bezeichnung3.replace(/.OnOff/g, "");
                            listeL = listeL + " " + bezeichnung3;
    
                            var contentstring5 = bezeichnung3;                               
                            var suchstring7 = /(EG)/g; 
                            var suchergebnis7 = suchstring7.test( contentstring5 );
                            if (suchergebnis7 != false) {
                                lichtEG = lichtEG+1
                            }
    
                            var suchstring8 = /(UG)/g; 
                            var suchergebnis8 = suchstring8.test( contentstring5 );
                            if (suchergebnis8 != false) {
                                lichtUG = lichtUG+1
                            }
    
                            var suchstring9 = /(DG)/g; 
                            var suchergebnis9 = suchstring9.test( contentstring5 );
                            if (suchergebnis9 != false) {
                                lichtOG = lichtOG+1
                            }                                       
                        }
    
                        if (lichtA == 0) {
                            listeL = "Alle Lichter aus!"
                        }
                        
                        setStateDelayed('homee.Anzahl_Lichtquellen', licht, 800);
                        setStateDelayed('homee.Anzahl_Licht_an', lichtA, 800);
                        setStateDelayed('homee.Liste_Licht', listeL, 800);
                        setStateDelayed('homee.Anzahl_Licht_an_EG', lichtEG, 800);
                        setStateDelayed('homee.Anzahl_Licht_an_OG', lichtOG, 800);
                        setStateDelayed('homee.Anzahl_Licht_an_UG', lichtUG, 800);
                    }
                });                                                                
            };
    
            if (lowbat == 0) {
                listeB = "Alle Batterien in Ordnung!"
            }
    
            setStateDelayed('homee.Anzahl_Geräte', counter, 800);    
            setStateDelayed('homee.Anzahl_Batterie', batterie, 800);
            setStateDelayed('homee.Anzahl_Batteriealarm', lowbat, 800);
            setStateDelayed('homee.Liste_Batterie', listeB, 800);   
    
            var ohne = counter - batterie;
            setStateDelayed('homee.Anzahl_ohne_Batterie', ohne, 800);                
            
            function isState(strStatePath, strict) {
                let mSelector;
                if (strict) {
                    mSelector = $('state[id=' + strStatePath + '$]');
                } else {
                    mSelector = $('state[id=' + strStatePath + ']');
                }
                if (mSelector.length > 0) {
                    return true;
                } else {
                    return false;
                }
            }           
        });    
        
        var hSelector = $('[id=homee.0.Homee-0.Homeegrams.*]'); 
        var counter =0;
        hSelector.each(function(id, i) {              
            var devicename = getObject(id).common.name;
                   
            if(devicename == "active") {
                counter = counter+1
    
                var status = getState(id).val;
                if(status != false) {
                    akt = akt+1
                } 
            } else {
                counter = counter
            }
                                   
        });
        
        deakt = counter - akt;
        
        setStateDelayed('homee.Anzahl_homeegramme', counter, 800);
        setStateDelayed('homee.Anzahl_Aktivierte_homeegramme', akt, 800);
        setStateDelayed('homee.Anzahl_deaktivierte_homeegramme', deakt, 800);    
    });        
        
    

    Für Vorschläge oder Anregungen, wie ich die Logdatei oder die Heizpläne darstellen kann bin ich immer offen.

    Lg Oliver


Log in to reply
 

Suggested Topics

686
Online

28.6k
Users

35.5k
Topics

469.9k
Posts