Jump to content

MAN_Jay

Members
  • Gesamte Inhalte

    3
  • Benutzer seit

  • Letzter Besuch

Posts erstellt von MAN_Jay

  1. Hallo Backdraft007,

    endlich habe ich Zeit gefunden mich darum zu kümmern. Letztendlich habe ich mich für den Enumerate Callback entschieden. Als C++ Programmierer tue ich mich mit J-Script immer noch schwer aber es funktioniert.

    Die Schwierigkeit lag darin genau heraus zu bekommen welcher Teilnehmer ausgefallen ist. Der Callback sagt einem ja nur was da ist, er weiß nicht, wenn etwas fehlt. Mein Programm ist sicher nicht optimal aber im Grunde bekommt jede UID eine Variable die ich mit einer Zeitverzögerung vom Callback abfrage. Meinen Testcode hänge ich hier mal an, falls noch mal jemand auf die gleiche Problematik stößt:

    var Tinkerforge = require('tinkerforge');
    
    var HOST = 'localhost';
    var PORT = 4223;
    
    
    var UID7 = 'Qv8' //Temperature Bricklet 2.0 Port A MasterBrick 2
    var UID11 = '6feC5Q' //MasterBrick 3
    var UID12 = 'SWt' //Industrial In
    
    var ipcon = new Tinkerforge.IPConnection(); // Create IP connection
    
    
    var t = new Tinkerforge.BrickletTemperatureV2(UID7, ipcon);
    
    var ma3 = new Tinkerforge.BrickMaster(UID11, ipcon); //MasterBrick3
    
    var device1;
    var device2;
    var device3;
    
    
    ipcon.connect(HOST, PORT,
        function (error) {
            console.log('Error: ' + error);
        }
    );
    
     function roundTo(value, places){
         var power = Math.pow(10, places);
         return Math.round(value * power) / power;
     }
    // Register Enumerate Callback
    ipcon.on(Tinkerforge.IPConnection.CALLBACK_ENUMERATE,
        // Print incoming enumeration
        function(uid, connectedUid, position, hardwareVersion, firmwareVersion,
                 deviceIdentifier, enumerationType) {
                     switch (uid) {
                    case UID7:
                        // Anweisungen werden ausgeführt,
                        // falls expression mit value1 übereinstimmt
                        device1=1;
                        break;
                    case UID11:
                        // Anweisungen werden ausgeführt,
                        // falls expression mit value2 übereinstimmt
                        device2=1;
                        break;
                    case UID12:
                        // Anweisungen werden ausgeführt,
                        // falls expression mit value2 übereinstimmt
                        device3=1;
                        break;
                    default:
                        // Anweisungen werden ausgeführt,
                        // falls keine der case-Klauseln mit expression übereinstimmt
                        break;
                    }
        }
    );
    
    ipcon.on(Tinkerforge.IPConnection.CALLBACK_CONNECTED,
    
        function (connectReason) {
            setInterval(function(){
                device1=0;
                device2=0;
                device3=0;
    
                // Trigger Enumerate
                ipcon.enumerate();
    
                setTimeout(function ()
                    {
                        if(device1===0) {
                             console.log('ERROR1');
                        }
                        if(device2===0) {
                             console.log('ERROR2');
                        }
                        if(device3===0) {
                             console.log('ERROR3');
                        }
                    }, 800);
                },1000); 
        }
    );

     

  2. Hi Chris,

    das Problem besteht weniger beim basteln als viel mehr beim Fahren mit dem Offroadmobil. Durch Vibrationen kann es immer zu einem Verbindungsabbruch kommen und ich merke das nur dadurch, dass zum Beispiel das Licht nicht mehr geht. Es wäre schön, wenn ich hier eine Fehlermeldung auf meinem IO-Broker generieren könnte indem das Javascrip eine Variable im Fehlerfall ändert.

    Ich bin eher der C++ Programmierer, daher habe ich Javascript sicher falsch verwendet. Ich würde mich sehr darüber freuen, wenn mir jemand helfen könnte.

    var Tinkerforge = require('tinkerforge');
    
    var HOST = '192.168.0.20';
    var PORT = 4223;
    
    var UID1 = 'Mkj' //Industrial Dual Analog In Bricklet 2.0 Port C MasterBrick 2
    var UID2 = 'Mmh' //Industrial Dual Analog In Bricklet 2.0 Port D MasterBrick 2
    var UID3 = 'H2J'; // Industrial Digital Out 4 Bricklet 2.0 Port D MasterBrick 1
    var UID4 = 'H3C'; // Industrial Digital Out 4 Bricklet 2.0 Port C MasterBrick 1
    var UID5 = 'Q6m'; // IO-16 Bricklet 2.0 Port A MasterBrick 1
    var UID6 = '2gaETX'; // IO-16 Bricklet 2.0 Port B MasterBrick 1
    var UID7 = 'Qvu' //Temperature Bricklet 2.0 Port A MasterBrick 2
    var UID8 = 'R2J' //LCD 128x64 Bricklet Port B MasterBrick 2
    var UID9 = '6KTNip' //MasterBrick 1
    var UID10 = '69DeZc' //MasterBrick 2
    var UID11 = '6feC5Q' //MasterBrick 3
    var UID12 = 'R2V'; // Change XYZ to the UID of your OLED 128x64 Bricklet
    var UID13 = 'RzB'; // Industrial quad relais Bricklet
    var UID14 = '6CQzJH';  //IMU Bricklet
    
    
    var SCREEN_WIDTH = 128;
    var SCREEN_HEIGHT = 64;
    var A0duty = 0;
    var A1duty = 0;
    var A2duty = 0;
    var A3duty = 0;
    var A4duty = 0;
    var A5duty = 0;
    var A6duty = 0;
    var A7duty = 0;
    
    var m1;
    var m2;
    var m3;
    var BalkenFWlinks;
    var ProzentFWlinks;
    var BalkenFWrechts;
    var ProzentFWrechts;
    var BalkenAbwasser;
    var ProzentAbwasser;
    var m1_1;
    var m2_1;
    var m3_1;
    
    var ipcon = new Tinkerforge.IPConnection(); // Create IP connection
    
    var idai1 = new Tinkerforge.BrickletIndustrialDualAnalogInV2(UID1, ipcon); // Create device object
    var idai2 = new Tinkerforge.BrickletIndustrialDualAnalogInV2(UID2, ipcon); // Create device object
    var ido1 = new Tinkerforge.BrickletIndustrialDigitalOut4V2(UID3, ipcon); // Create device object
    var ido2 = new Tinkerforge.BrickletIndustrialDigitalOut4V2(UID4, ipcon); // Create device object
    var ido3 = new Tinkerforge.BrickletIO16V2(UID5, ipcon); // Create device object
    var ido4 = new Tinkerforge.BrickletIO16V2(UID6, ipcon); // Create device object
    var t = new Tinkerforge.BrickletTemperatureV2(UID7, ipcon);
    var ma1 = new Tinkerforge.BrickMaster(UID9, ipcon); //MasterBrick1
    var ma2 = new Tinkerforge.BrickMaster(UID10, ipcon); //MasterBrick2
    var ma3 = new Tinkerforge.BrickMaster(UID11, ipcon); //MasterBrick3
    var lcd = new Tinkerforge.BrickletLCD128x64(UID12, ipcon); // Create device object
    var iqr = new Tinkerforge.BrickletIndustrialQuadRelayV2(UID13, ipcon); // Create device object
    var imu = new Tinkerforge.BrickIMUV2(UID14, ipcon); // Create device object
    
    ipcon.connect(HOST, PORT,
        function (error) {
            console.log('Error: ' + error);
        }
    );
    
     function roundTo(value, places){
         var power = Math.pow(10, places);
         return Math.round(value * power) / power;
     }
    
    
    ipcon.on(Tinkerforge.IPConnection.CALLBACK_CONNECTED,
        function (connectReason) {
    
            	//IO16 Als Ausgänge setzen
                // Outputs 0-7 als Ausgang mit Startwert "true" konfigurieren
                //Outputs Wasserventile Steuerung
                ido3.setConfiguration(0, 'o', true);
                ido3.setConfiguration(1, 'o', true);
                ido3.setConfiguration(2, 'o', true);
                ido3.setConfiguration(3, 'o', true);
                ido3.setConfiguration(4, 'o', true);
                ido3.setConfiguration(5, 'o', true);
                ido3.setConfiguration(6, 'o', true);
                //Outputs Druckwasserpumpe
                ido3.setConfiguration(7, 'o', true);
    
                //Eingänge Schalter nr. 1 Seitenklappe links
                ido3.setConfiguration(8, 'i', true);
                ido3.setInputValueCallbackConfiguration(8, 100, true);
    
                //Eingänge Schalter nr. 2 Seitenklappe links
                ido3.setConfiguration(9, 'i', true);
                ido3.setInputValueCallbackConfiguration(9, 100, true);
    
                //Eingänge Schalter nr. 3 Seitenklappe links
                ido3.setConfiguration(10, 'i', true);
                ido3.setInputValueCallbackConfiguration(10, 100, true);
    
                //Eingänge Schalter nr. 4 Seitenklappe links
                ido3.setConfiguration(11, 'i', true);
                ido3.setInputValueCallbackConfiguration(11, 100, true);
    
                //Eingänge Schalter nr. 5 Seitenklappe links
                ido3.setConfiguration(12, 'i', true);
                ido3.setInputValueCallbackConfiguration(12, 100, true);
    
                //Eingänge Schalter nr. 6 Seitenklappe links
                ido3.setConfiguration(13, 'i', true);
                ido3.setInputValueCallbackConfiguration(13, 100, true);
    
                //Eingänge Schalter nr. 7 Seitenklappe links
                ido3.setConfiguration(14, 'i', true);
                ido3.setInputValueCallbackConfiguration(14, 100, true);
    
                //Eingänge Schalter nr. 8 Seitenklappe links
                ido3.setConfiguration(15, 'i', true);
                ido3.setInputValueCallbackConfiguration(15, 100, true);
                
                //Eingänge Schalter nr. 9 Seitenklappe links
                ido4.setConfiguration(0, 'i', true);
                ido4.setInputValueCallbackConfiguration(0, 100, true);
                
                //Eingänge Eingangstür Reedkontakt
                ido4.setConfiguration(1, 'i', true);
                ido4.setInputValueCallbackConfiguration(1, 100, true);
    
                //Eingänge Bedienpanel
                ido4.setConfiguration(3, 'i', true);
                ido4.setInputValueCallbackConfiguration(3, 100, true);
                ido4.setConfiguration(4, 'i', true);
                ido4.setInputValueCallbackConfiguration(4, 100, true);
                ido4.setConfiguration(5, 'i', true);
                ido4.setInputValueCallbackConfiguration(5, 100, true);
                ido4.setConfiguration(6, 'i', true);
                ido4.setInputValueCallbackConfiguration(6, 100, true);
                ido4.setConfiguration(7, 'i', true);
                ido4.setInputValueCallbackConfiguration(7, 100, true);
            
                //Eingänge abfragen
                // Register input value callback
                ido3.on(Tinkerforge.BrickletIO16V2.CALLBACK_INPUT_VALUE,
                // Callback function for input value callback
                function (channel, changed, value) {
                    if(channel === 8){
                       setState('0_userdata.0.Tinkerforge.SeitenklappeLinks.Schalter1'/*Schalter1*/,!value); 
                    }
                    if(channel === 9){
                       setState('0_userdata.0.Tinkerforge.SeitenklappeLinks.Schalter2'/*Schalter2*/,!value); 
                    }
                    if(channel === 10){
                       setState('0_userdata.0.Tinkerforge.SeitenklappeLinks.Schalter3'/*Schalter3*/,!value); 
                    }
                    if(channel === 11){
                       setState('0_userdata.0.Tinkerforge.SeitenklappeLinks.Schalter4'/*Schalter4*/,!value); 
                    }
                    if(channel === 12){
                       setState('0_userdata.0.Tinkerforge.SeitenklappeLinks.Schalter5'/*Schalter5*/,!value); 
                    }
                    if(channel === 13){
                       setState('0_userdata.0.Tinkerforge.SeitenklappeLinks.Schalter6'/*Schalter6*/,!value); 
                    }
                    if(channel === 14){
                       setState('0_userdata.0.Tinkerforge.SeitenklappeLinks.Schalter7'/*Schalter7*/,!value); 
                    }
                    if(channel === 15){
                       setState('0_userdata.0.Tinkerforge.SeitenklappeLinks.Schalter8'/*Schalter8*/,!value); 
                    }
                    }
                );
                //Callbackeingänge 16IO
                ido4.on(Tinkerforge.BrickletIO16V2.CALLBACK_INPUT_VALUE,
                // Callback function for input value callback
                function (channel, changed, value) {
                    if(channel === 0){
                       setState('0_userdata.0.Tinkerforge.SeitenklappeLinks.Schalter9'/*Schalter9*/,!value); 
                    }
                    if(channel === 1){
                       setState('0_userdata.0.Tinkerforge.Eingangstür.Reedkontakt'/*Reedkontakt*/,!value); 
                    }
                    if(channel === 3){
                       setState('0_userdata.0.Tinkerforge.Bedienpanel.BedienpanelSchalter1'/*BedienpanelSchalter1*/,!value); 
                    }
                    if(channel === 4){
                       setState('0_userdata.0.Tinkerforge.Bedienpanel.BedienpanelSchalter2'/*BedienpanelSchalter2*/,!value); 
                    }
                    if(channel === 5){
                       setState('0_userdata.0.Tinkerforge.Bedienpanel.BedienpanelSchalter3'/*BedienpanelSchalter3*/,!value); 
                    }
                    if(channel === 6){
                       setState('0_userdata.0.Tinkerforge.Bedienpanel.BedienpanelSchalter4'/*BedienpanelSchalter4*/,!value); 
                    }
                    if(channel === 7){
                       setState('0_userdata.0.Tinkerforge.Bedienpanel.BedienpanelSchalterLandstrom'/*BedienpanelSchalterLandstrom*/,!value); 
                    }
                    }
                );
            setInterval(function(){
    
                //Temperatursensor am Bedienpanel
                t.getTemperature(function (temperature) {
                    setState('0_userdata.0.Tinkerforge.Bedienpanel.Temperatur1'/*Temperatur1*/,roundTo((temperature/100.0)-0.5, 1));
                
                    },
                );
                //Diagnose LEDs
                    if(getState('0_userdata.0.Tinkerforge.Diagnose').val ===true) {
                        lcd.setStatusLEDConfig(1);
                        ma1.enableStatusLED();
                        ma2.enableStatusLED();
                        ma3.enableStatusLED();
                        ido1.setStatusLEDConfig(1);
                        ido2.setStatusLEDConfig(1);
                        ido3.setStatusLEDConfig(1);
                        ido4.setStatusLEDConfig(1);
                        t.setStatusLEDConfig(1);
                        ido1.setChannelLEDConfig(0,3);
                        ido1.setChannelLEDConfig(1,3);
                        ido1.setChannelLEDConfig(2,3);
                        ido1.setChannelLEDConfig(3,3);
                        ido2.setChannelLEDConfig(0,3);
                        ido2.setChannelLEDConfig(1,3);
                        ido2.setChannelLEDConfig(2,3);
                        ido2.setChannelLEDConfig(3,3);
                        idai1.setChannelLEDConfig(0,1);
                        idai1.setChannelLEDConfig(1,1);
                        idai2.setChannelLEDConfig(0,1);
                        idai2.setChannelLEDConfig(1,1);
                        idai1.setStatusLEDConfig(1);
                        idai2.setStatusLEDConfig(1);
                        //iqr.setStatusLEDConfig(1);
                        iqr.setChannelLEDConfig(0,3);
                        iqr.setChannelLEDConfig(1,3);
                        iqr.setChannelLEDConfig(2,3);
                        iqr.setChannelLEDConfig(3,3);
                    }
                    if(getState('0_userdata.0.Tinkerforge.Diagnose').val ===false) {
                        lcd.setStatusLEDConfig(0);
                        ma1.disableStatusLED();
                        ma2.disableStatusLED();
                        ma3.disableStatusLED();
                        ido1.setStatusLEDConfig(0);
                        ido2.setStatusLEDConfig(0);
                        ido3.setStatusLEDConfig(0);
                        ido4.setStatusLEDConfig(0);
                        t.setStatusLEDConfig(0);
                        ido1.setChannelLEDConfig(0,0);
                        ido1.setChannelLEDConfig(1,0);
                        ido1.setChannelLEDConfig(2,0);
                        ido1.setChannelLEDConfig(3,0);
                        ido2.setChannelLEDConfig(0,0);
                        ido2.setChannelLEDConfig(1,0);
                        ido2.setChannelLEDConfig(2,0);
                        ido2.setChannelLEDConfig(3,0);  
                        idai1.setChannelLEDConfig(0,0);
                        idai1.setChannelLEDConfig(1,0);
                        idai2.setChannelLEDConfig(0,0);
                        idai2.setChannelLEDConfig(1,0);
                        idai1.setStatusLEDConfig(0);
                        idai2.setStatusLEDConfig(0);
                        //iqr.setStatusLEDConfig(0);
                        iqr.setChannelLEDConfig(0,0);
                        iqr.setChannelLEDConfig(1,0);
                        iqr.setChannelLEDConfig(2,0);
                        iqr.setChannelLEDConfig(3,0);
                    }
                    //230V Steuerung
                    if(getState('0_userdata.0.Tinkerforge.230V.230VChanel1'/*230VChanel1*/).val ===true){
                    iqr.setSelectedValue(0, true);
                    }
                    else{
                    iqr.setSelectedValue(0, false); 
                    }
                    if(getState('0_userdata.0.Tinkerforge.230V.230VChanel2'/*230VChanel2*/).val ===true){
                    iqr.setSelectedValue(1, true);
                    }
                    else{
                    iqr.setSelectedValue(1, false); 
                    }
                    if(getState('0_userdata.0.Tinkerforge.230V.230VChanel3'/*230VChanel3*/).val ===true){
                    iqr.setSelectedValue(2, true);
                    }
                    else{
                    iqr.setSelectedValue(2, false); 
                    }
                    if(getState('0_userdata.0.Tinkerforge.230V.230VChanel4'/*230VChanel4*/).val ===true){
                    iqr.setSelectedValue(3, true);
                    }
                    else{
                    iqr.setSelectedValue(3, false); 
                    }
    
    
                    //Schreibt die Dutycyclelänge auf die Variable oder 0 wenn das Licht aus geschaltet ist
                    if(getState('0_userdata.0.Tinkerforge.A0').val ===true){
                    A0duty = getState('0_userdata.0.Tinkerforge.IOc1A0duty').val;
                    }
                    else{
                        A0duty = 0;
                    }
                    if(getState('0_userdata.0.Tinkerforge.A1').val ===true){
                    A1duty = getState('0_userdata.0.Tinkerforge.IOc1A1duty').val;
                    }
                    else{
                        A1duty = 0;
                    }
                    if(getState('0_userdata.0.Tinkerforge.A2').val ===true){
                    A2duty = getState('0_userdata.0.Tinkerforge.IOc1A2duty').val;
                    }
                    else{
                        A2duty = 0;
                    }
                    if(getState('0_userdata.0.Tinkerforge.A3').val ===true){
                    A3duty = getState('0_userdata.0.Tinkerforge.IOc1A3duty').val;
                    }
                    else{
                        A3duty = 0;
                    }
                    if(getState('0_userdata.0.Tinkerforge.A4').val ===true){
                    A4duty = getState('0_userdata.0.Tinkerforge.IOc1A4duty').val;
                    }
                    else{
                        A4duty = 0;
                    }
                    if(getState('0_userdata.0.Tinkerforge.A5').val ===true){
                    A5duty = getState('0_userdata.0.Tinkerforge.IOc1A5duty').val;
                    }
                    else{
                        A5duty = 0;
                    }
                    if(getState('0_userdata.0.Tinkerforge.A6').val ===true){
                    A6duty = getState('0_userdata.0.Tinkerforge.IOc1A6duty').val;
                    }
                    else{
                        A6duty = 0;
                    }
                    //Steuerung Lüfter in Hecktüren
                    if(getState('0_userdata.0.Tinkerforge.A7').val ===true){
                    A7duty = getState('0_userdata.0.Tinkerforge.IOc1A7duty').val;
                    }
                    else{
                        A7duty = 0;
                    }
                    //Konfiguration Industrial Out Bricklet als PWM
                    //Bricklet IndustrialDo4 an Port C
                    ido1.setPWMConfiguration(0, 10000, A0duty);
                    ido1.setPWMConfiguration(1, 10000, A1duty);
                    ido1.setPWMConfiguration(2, 10000, A2duty);
                    ido1.setPWMConfiguration(3, 10000, A3duty);
                    ido2.setPWMConfiguration(0, 10000, A4duty);
                    //ido2.setPWMConfiguration(1, 10000, A5duty);
                    //ido2.setPWMConfiguration(2, 10000, A6duty);
                    ido2.setPWMConfiguration(3,210000, A7duty);
    
                    //IO16 Bricklets
                    // Steuerung Wasserventile als Output
                    if(getState('0_userdata.0.Tinkerforge.Ventile.Ventil1Öffnen').val ===true){
                    ido3.setSelectedValue(0, false);
                    }
                    else{
                    ido3.setSelectedValue(0, true);  
                    }
                    if(getState('0_userdata.0.Tinkerforge.Ventile.Ventil2Öffnen').val ===true){
                    ido3.setSelectedValue(1, false);
                    }
                    else{
                    ido3.setSelectedValue(1, true);  
                    }
                    if(getState('0_userdata.0.Tinkerforge.Ventile.Ventil3Öffnen').val ===true){
                    ido3.setSelectedValue(2, false);
                    }
                    else{
                    ido3.setSelectedValue(2, true);  
                    }
                    if(getState('0_userdata.0.Tinkerforge.Ventile.Ventil4Öffnen').val ===true){
                    ido3.setSelectedValue(3, false);
                    }
                    else{
                    ido3.setSelectedValue(3, true);  
                    }
                    if(getState('0_userdata.0.Tinkerforge.Ventile.Ventil5Öffnen').val ===true){
                    ido3.setSelectedValue(4, false);
                    }
                    else{
                    ido3.setSelectedValue(4, true);  
                    }
                    if(getState('0_userdata.0.Tinkerforge.Ventile.Ventil6Öffnen').val ===true){
                    ido3.setSelectedValue(5, false);
                    }
                    else{
                    ido3.setSelectedValue(5, true);  
                    }
                    //Alle Ventile mit Ground verbinden
                    if(getState('0_userdata.0.Tinkerforge.Ventile.VentileEinschalten'/*VentileEinschalten*/).val ===true){
                    ido3.setSelectedValue(6, false);
                    }
                    else{
                    ido3.setSelectedValue(6, true);  
                    }
                    //Druckpumpe einschalten
                    if(getState('0_userdata.0.Tinkerforge.Ventile.PumpeEinschalten'/*PumpeEinschalten*/).val ===true){
                    ido3.setSelectedValue(7, false);
                    }
                    else{
                    ido3.setSelectedValue(7, true);  
                    }
                
                    //Analoge Wassertanksensoren
                    //Auslesen der Tanksensoren
                    idai1.getVoltage(0,function (voltage) {
                        setState('0_userdata.0.Tinkerforge.Wassertanks.FrischwasserLinksSpannung'/*FrischwasserLinksSpannung*/,voltage/1000.0);
                    },
                    );
                    idai2.getVoltage(1,function (voltage) {
                        setState('0_userdata.0.Tinkerforge.Wassertanks.FrischwasserRechtsSpannung'/*FrischwasserLinksSpannung*/,voltage/1000.0);
                    },
                    );
                    idai2.getVoltage(0,function (voltage) {
                        setState('0_userdata.0.Tinkerforge.Wassertanks.AbwasserSpannung'/*AbwasserSpannung*/,voltage/1000.0);
                    },
                    );
                    m1 = (getState('0_userdata.0.Tinkerforge.Wassertanks.FrischwasserLinksSpannung'/*FrischwasserLinksSpannung*/).val - 0) / (2.2 - 0);
                    BalkenFWlinks=m1 * (125 - 2) + 2;
                    ProzentFWlinks=m1 * (100 - 0) + 0;
                    setState('0_userdata.0.Tinkerforge.Wassertanks.Prozent_FrischwasserLinks'/*Prozent FrischwasserLinks*/,Math.round(m1 * (100 - 0) + 0));
                    setState('0_userdata.0.Tinkerforge.Wassertanks.LiterFrischwasserLinks'/*LiterFrischwasserLinks*/,Math.round(m1 * (105 - 0) + 0));
                    m2 = (getState('0_userdata.0.Tinkerforge.Wassertanks.FrischwasserRechtsSpannung'/*FrischwasserLinksSpannung*/).val - 0) / (2.2 - 0);
                    BalkenFWrechts=m2 * (125 - 2) + 2;
                    ProzentFWrechts=m2 * (100 - 0) + 0;
                    setState('0_userdata.0.Tinkerforge.Wassertanks.Prozent_FrischwasserRechts'/*Prozent FrischwasserRechts*/,Math.round(m2 * (100 - 0) + 0));
                    setState('0_userdata.0.Tinkerforge.Wassertanks.LiterFrischwasserRechts'/*LiterFrischwasserRechts*/,Math.round(m2 * (105 - 0) + 0));
                    m3 = (getState('0_userdata.0.Tinkerforge.Wassertanks.AbwasserSpannung'/*AbwasserSpannung*/).val - 0) / (2.2 - 0);
                    BalkenAbwasser=m3 * (125 - 2) + 2;
                    ProzentAbwasser=m3 * (100 - 0) + 0;
                    setState('0_userdata.0.Tinkerforge.Wassertanks.Prozent_Abwasser'/*Prozent Abwasser*/,Math.round(m3 * (100 - 0) + 0));
                    setState('0_userdata.0.Tinkerforge.Wassertanks.LiterAbwasser'/*LiterAbwasser*/,Math.round(m3 * (75 - 0) + 0));
    
                //Steuerung LCD Display Seiteklappe
                if(getState('0_userdata.0.Tinkerforge.SeitenklappeLinks.Schalter1').val ===true) {
                    lcd.setDisplayConfiguration(15, 100, false, true);
                    
                }
                else {
                    lcd.setDisplayConfiguration(0, 0, false, true);
                    lcd.clearDisplay();
    
                    m1_1=-1;
                    m2_1=-1;
                    m3_1=-1;
                }
    
                if(((m1!=m1_1)||(m2!=m2_1)||(m3!=m3_1))&&(getState('0_userdata.0.Tinkerforge.SeitenklappeLinks.Schalter1').val ===true)) {
    
                    lcd.clearDisplay();
                    lcd.drawText(64, 0,0,1, Math.round(ProzentFWlinks)+'%');
                    lcd.drawText(1, 0,0,1, 'FW links');
                    lcd.drawBox(1, 8, 126, 16, false, true);
                    lcd.drawBox(2, 9, BalkenFWlinks, 15, true, true);
    
                    lcd.drawText(64, 22,0,1, Math.round(ProzentFWrechts)+'%');
                    lcd.drawText(1, 22,0,1, 'FW rechts');
                    lcd.drawBox(1, 30, 126, 38, false, true);
                    lcd.drawBox(2, 31, BalkenFWrechts, 37, true, true);
    
                    lcd.drawText(64, 44,0,1, Math.round(ProzentAbwasser)+'%');
                    lcd.drawText(1, 44,0,1, 'Abwasser');
                    lcd.drawBox(1, 53, 126, 61, false, true);
                    lcd.drawBox(2, 52, BalkenAbwasser, 60, true, true);
    
                    m1_1=m1;
                    m2_1=m2;
                    m3_1=m3;
                }
    
            },100); 
        }
    );

     

  3. hallo,

    ich bin neu hier und auch was Javascript angeht noch grün hinter den Ohren. Ich steuere mein selbst ausgebautes Wohnmobil mit einem RasPi4 auf dem IoBroker läuft und einigen Tinkerforge Modulen. Das Ganze ist via Ethernet verbunden und funktioniert grundsätzlich ganz gut. Leider kommt es in der aktuellen Bastelphase schon mal vor, dass ich die Verbindung zu einzelnen Bricks und Bricklets verliere (Die 7/10 Pin Kabel machen viele Probleme). Ich würde das gerne auf meiner VIS von IoBroker als Fehlermeldung visualisieren aber bekomme das auf der JS Seite nicht hin. Hat jemand schon mal sowas gemacht und könnte mir bitte helfen?

    MfG Julien

×
×
  • Neu erstellen...