Aufgrund derzeit hohem Spamaufkommens werden neue Nutzer sehr restriktiv behandelt. Nach kurzer "Bewährungszeit" hat man als normaler Nutzer weitreichende Rechte und benötigt auch kein Captcha mehr.
.
Nutzer, die sich danach dennoch als Spammer oder Trolle erweisen, können jederzeit wieder auf diesen Status zurückgesetzt oder gebannt werden.
Dasselbe gilt für Versuche, politische Überzeugungen kund zu tun, egal aus welcher Richtung diese kommen.
.
.:!: Achtung! Derzeit ist Robonect (noch) nicht mit dem Automower 305 ab Baujahr 2020 zusammen mit der neuen Mäher-FW MSW 41.4.0 kompatibel!
Aber: Im DailyBuild ist ein Patch enthalten, der getestet werden kann! (Stand 15.02.2024)
.
.Du hast Deinen Gardena-Mäher auf die Gardena-Firmware von 2023 aktualisiert?
.:arrow: Testmöglichkeit für das Daily Build.

Das FW-Update am Mäher wird dennoch nicht empfohlen, da das Daily Build nach aktuellen Berichten von Beta-Testern noch keine vollständige Kompatibilität gewährleisten kann! (Stand: 15.02.2024)
Wir empfehlen, das Gardena-Update noch nicht durchzuführen!

.
.

iobroker - Meine Einbindung sowie Scripte

Einbindung von Robonect Hx und IO in Deine bereits bestehende MQTT-Infrastruktur
bahnuhr
sehr erfahrener Forum-Nutzer
Beiträge: 115
Registriert: Di 4. Apr 2017, 21:05
Wohnort: Eichenzell
Mäher: Husqvarna Automower 420
Firmware des Mähers (MSW): MSW 7.xx.xx
Herstellungsjahr: 2016
Robonect-Modul: Robonect Hx (Rev.4)
Robonect Firmware: V1.2RC0

iobroker - Meine Einbindung sowie Scripte

Beitrag von bahnuhr »

Guten Abend,

ich habe meinen Husqvarna 420 nun erfolgreich in iobroker eingebunden.

Anbei mal, für alle die es interessiert und evtl. Anregungen brauchen, meine Scripte sowie die vis Darstellung.

1. Variablen anlegen:

Code: Alles auswählen

// Mähroboter -------------------------------------------------------------------------------------------------------------
createState('javascript.0.Status.Mähroboter.Status','', {type: 'string',name: 'Status',read: true,write: true,role: 'per Script'});
createState('javascript.0.Status.Mähroboter.Duration',0, {type: 'number',name: 'Zeit in diesem Status',unit: 'Sekunden',read: true,write: true,role: 'per Script'});
createState('javascript.0.Status.Mähroboter.Mode','', {type: 'string',name: 'Mode',read: true,write: true,role: 'per Script'});
createState('javascript.0.Status.Mähroboter.Battery',0, {type: 'number',name: 'Akku',unit: 'Prozent',min: 0,read: true,write: true,role: 'per Script'});
createState('javascript.0.Status.Mähroboter.Hours',0, {type: 'number',name: 'Betriebstunden',unit: 'Stunden',min: 0,read: true,write: true,role: 'per Script'});
createState('javascript.0.Status.Mähroboter.Wlan',0, {type: 'number',name: 'Wlan Signalstärke',min: -110,read: true,write: true,role: 'per Script'});
createState('javascript.0.Status.Mähroboter.Auftrag',0, {type: 'number',name: 'Auftrag Betriebsmodus',min: 0,read: true,write: true,role: 'per Script'});
createState('javascript.0.Status.Mähroboter.Auftrag2',1, {type: 'number',name: 'Auftrag Start (=0) - Stop (=1)',min: 0,read: true,write: true,role: 'per Script'});
createState('javascript.0.Status.Mähroboter.Temperatur',0, {type: 'number',name: 'Temperatur',unit: '°C', read: true,write: true,role: 'per Script'});
createState('javascript.0.Status.Mähroboter.Luftfeuchtigkeit',0, {type: 'number',name: 'Luftfeuchtigkeit',unit: '%', read: true,write: true,role: 'per Script'});
createState('javascript.0.Status.Mähroboter.Timer.Status','', {type: 'string',name: 'Timer-Status',read: true,write: true,role: 'per Script'});
createState('javascript.0.Status.Mähroboter.Timer.next_date','', {type: 'string',name: 'Timer-next-date',read: true,write: true,role: 'per Script'});
createState('javascript.0.Status.Mähroboter.Timer.next_time','', {type: 'string',name: 'Timer-next-time',read: true,write: true,role: 'per Script'});
createState('javascript.0.Status.Mähroboter.Mähauftrag.Uhrzeit_Start',"", {type: 'string',name: 'manueller Mähauftrag - Uhrzeit.Start',read: true,write: true,role: 'per Script'});
createState('javascript.0.Status.Mähroboter.Mähauftrag.Uhrzeit_Ende',"", {type: 'string',name: 'manueller Mähauftrag - Uhrzeit.Ende',read: true,write: true,role: 'per Script'});
createState('javascript.0.Status.Mähroboter.Mähauftrag.Uhrzeit_Auswahl_Start',"", {type: 'string',name: 'manueller Mähauftrag - Uhrzeit.Auswahl.Start',read: true,write: true,role: 'per Script'});
createState('javascript.0.Status.Mähroboter.Mähauftrag.Uhrzeit_Auswahl_Ende',"", {type: 'string',name: 'manueller Mähauftrag - Uhrzeit.Auswahl.Ende',read: true,write: true,role: 'per Script'});
createState('javascript.0.Status.Mähroboter.Mähauftrag.wie_lange',0, {type: 'number',name: 'manueller Mähauftrag - Auftrag wie lange',unit: 'Minuten', min: 0,read: true,write: true,role: 'per Script'});
createState('javascript.0.Status.Mähroboter.Mähauftrag.Mode_danach',"", {type: 'string',name: 'manueller Mähauftrag - Modus nach dem Auftrag',read: true,write: true,role: 'per Script'});
createState('javascript.0.Status.Mähroboter.Mähauftrag.Taster_ausführen',false, {type: 'boolean',name: 'manueller Mähauftrag - Taster _ ausführen',read: true,write: true,role: 'per Script'});
createState('javascript.0.Status.Mähroboter.Mähauftrag.Mitteilung',"", {type: 'string',name: 'manueller Mähauftrag - Mitteilung',read: true,write: true,role: 'per Script'});
createState('javascript.0.Status.Mähroboter.Auto_nachts',false, {type: 'boolean',name: 'nachts wieder auf Auto schalten',read: true,write: true,role: 'per Script'});
2. Scripte

Code: Alles auswählen

// Mähroboter


// Werte holen ------------------------------------------------------------------------------------------------------------------------

function weiter() {
    var request = require('request');
    request('http://192.168.243.22/json?cmd=status', function (error, response, body) {
        if (!error && response.statusCode == 200) {
            log ("json = " + body);
            var obj = JSON.parse(body);
                var v_status = obj.status.status;
                    if (v_status === 1) setState('javascript.0.Status.Mähroboter.Status', 'parkt');
                    if (v_status === 2) setState('javascript.0.Status.Mähroboter.Status', 'mäht');
                    if (v_status === 3) setState('javascript.0.Status.Mähroboter.Status', 'sucht die Ladestation');
                    if (v_status === 4) setState('javascript.0.Status.Mähroboter.Status', 'lädt');
                    if (v_status === 5) setState('javascript.0.Status.Mähroboter.Status', 'wartet auf Umsetzen im manuellen Modus');
                    if (v_status === 7) setState('javascript.0.Status.Mähroboter.Status', 'Fehlerstatus');
                    if (v_status === 8) setState('javascript.0.Status.Mähroboter.Status', 'Schleifensignal verloren');
                    if (v_status === 16) setState('javascript.0.Status.Mähroboter.Status', 'abgeschaltet');
                    if (v_status === 17) setState('javascript.0.Status.Mähroboter.Status', 'schläft');
                var v_stopped = obj.status.stopped;
                    if (v_stopped === false) setState('javascript.0.Status.Mähroboter.Auftrag2', 0);
                    if (v_stopped === true) setState('javascript.0.Status.Mähroboter.Auftrag2', 1);
                setState('javascript.0.Status.Mähroboter.Duration', obj.status.duration); 
                var v_mode = obj.status.mode;
                    if (v_mode === 0) setState('javascript.0.Status.Mähroboter.Mode', 'Auto');
                    if (v_mode === 1) setState('javascript.0.Status.Mähroboter.Mode', 'manuell');
                    if (v_mode === 2) setState('javascript.0.Status.Mähroboter.Mode', 'Home');
                    if (v_mode === 3) setState('javascript.0.Status.Mähroboter.Mode', 'Demo');
                    if (v_mode === 0) setState('javascript.0.Status.Mähroboter.Auftrag', 0);
                    if (v_mode === 1) setState('javascript.0.Status.Mähroboter.Auftrag', 3);
                    if (v_mode === 2) setState('javascript.0.Status.Mähroboter.Auftrag', 2);
                setState('javascript.0.Status.Mähroboter.Battery', obj.status.battery);
                setState('javascript.0.Status.Mähroboter.Hours', obj.status.hours);
                setState('javascript.0.Status.Mähroboter.Wlan', obj.wlan.signal);
                setState('javascript.0.Status.Mähroboter.Temperatur', obj.health.temperature);
                setState('javascript.0.Status.Mähroboter.Luftfeuchtigkeit', obj.health.humidity);
                var v_timer_status = obj.timer.status;
                    if (v_timer_status === 0) setState('javascript.0.Status.Mähroboter.Timer.Status', 'Deaktiviert');
                    if (v_timer_status === 1) setState('javascript.0.Status.Mähroboter.Timer.Status', 'Aktiv');
                    if (v_timer_status === 2) setState('javascript.0.Status.Mähroboter.Timer.Status', 'Standby');
                    if (obj.timer.next) {
                        setState('javascript.0.Status.Mähroboter.Timer.next_date', obj.timer.next.date.substr(0,obj.timer.next.date.length-4));
                        setState('javascript.0.Status.Mähroboter.Timer.next_time', obj.timer.next.time.substr(0,obj.timer.next.time.length-3));
                    } else {
                        log ('Timer.next: date und time nicht gesetzt - Diese Werte sind im json nicht vorhanden.');
                        setState('javascript.0.Status.Mähroboter.Timer.next_date', '');
                        setState('javascript.0.Status.Mähroboter.Timer.next_time', '');
                    }
        } else {
            log("Error = " + error);
        }
        });
}



// alle 2 Minuten ------------------------------------------------------------------------------------------------------------------------

schedule("*/2 * * * *", function () {
    weiter();           // Werte holen
    weiter_regen();     // prüfen ob es regnet
});



// Aufträge ------------------------------------------------------------------------------------------------------------------------

on({id: "javascript.0.Status.Mähroboter.Auftrag2", change: "ne"}, function() {   // Start - Stop
    log("Auslöser : Start - Stop");
    var request = require('request');
    var Auftrag = getState('javascript.0.Status.Mähroboter.Auftrag2').val;
    if (Auftrag === 0) request('http://192.168.243.22/json?cmd=start');
    if (Auftrag === 1) request('http://192.168.243.22/json?cmd=stop');
    setTimeout(function() {
        weiter();
    }, 5000);
}); 

on({id: "javascript.0.Status.Mähroboter.Auftrag", change: "ne"}, function() {   // Betriebsmodus
    log("Auslöser : Auftrag Betriebsmodus");
    var request = require('request');
    var Auftrag = getState('javascript.0.Status.Mähroboter.Auftrag').val;
    if (Auftrag === 0) {
        request('http://192.168.243.22/json?cmd=mode&mode=auto');  // Modus = Auto
        setState('javascript.0.Status.Mähroboter.Auto_nachts', false);  
    }
    if (Auftrag === 1) {
        request('http://192.168.243.22/json?cmd=mode&mode=eod');  // Modus = Feierabend
        setState('javascript.0.Status.Mähroboter.Auto_nachts', true);  
    }
    if (Auftrag === 2) {
        request('http://192.168.243.22/json?cmd=mode&mode=home');  // Modus = Home
        setState('javascript.0.Status.Mähroboter.Auto_nachts', true);  
    }
    if (Auftrag === 3) {
        request('http://192.168.243.22/json?cmd=mode&mode=man');  // Modus = Manuell
        setState('javascript.0.Status.Mähroboter.Auto_nachts', true);  
    }
    setTimeout(function() {
        weiter();
    }, 10000);
}); 




// Jalousie ------------------------------------------------------------------------------------------------------------------------

schedule("50 11 * * *", function () {   // Jalousie hoch fahren
    var v_jalousie = getState('hm-rpc.0.NEQ1688463.1.LEVEL').val;  // Jalousie: Robo-Maeh
    if (v_jalousie === 0) {
        log("Jalousie Mäh-Roboter hoch gefahren."); 
        sendTo('telegram', "Jalousie Mäh-Roboter hoch gefahren.");
        setState('hm-rpc.0.NEQ1688463.1.LEVEL', 100);
    }
});

schedule("15 20 * * *", function () {   // Jalousie runter fahren
    var v_Status = getState ('javascript.0.Status.Mähroboter.Status').val;
    var v_jalousie = getState('hm-rpc.0.NEQ1688463.1.LEVEL').val;  // Jalousie: Robo-Maeh
    if ((v_Status == "parkt" || v_Status == "schläft" || v_Status == "lädt") && v_jalousie == 100) {
        log("Jalousie Mäh-Roboter runter gefahren."); 
        sendTo('telegram', "Jalousie Mäh-Roboter runter gefahren.");
        setState('hm-rpc.0.NEQ1688463.1.LEVEL', 0);
    } else if (v_jalousie === 0) {
        log("Jalousie Mäh-Roboter wurde nicht runter gefahren; weil die Jalousie schon unten ist."); 
        sendTo('telegram', "Jalousie Mäh-Roboter wurde nicht runter gefahren; weil die Jalousie schon unten ist.");
    }
});



// Es regnet ------------------------------------------------------------------------------------------------------------------------

on({id: 'hm-rpc.0.KEQ0153039.2.STATE', change: "ne", val: true}, function() {   // Regensensor
    weiter_regen();
}); 


// Script "Es regnet"
function weiter_regen() {       // Aufruf von "Schedule Regensensor" oder "Schedule alle 2 Min."
    var r_status = getState ('hm-rpc.0.KEQ0153039.2.STATE').val;                // Regensensor
    var m_status = getState ('javascript.0.Status.Mähroboter.Status').val;      // Status Mähroboter
    if (r_status === true && m_status == "mäht") {
        var request = require ('request');
        var Auto_S = getState('hm-rega.0.29816').val;  // Auto Sprache
        log ('Achtung, es regnet. Der Mähroboter fährt nach Hause.');
        sendTo('telegram', 'Achtung, es regnet.\nDer Mähroboter fährt nach Hause.'); 
        request('http://192.168.243.22/json?cmd=mode&mode=eod');  // Modus = Feierabend
        setState('javascript.0.Status.Mähroboter.Auto_nachts', true);  
        if (Auto_S === true) {
            request('http://192.168.243.76:50000/track=tng_red_alert2.wav');
            setTimeout(setState('sayit.0.tts.text', 'Achtung, es regnet. Der Mähroboter fährt nach Hause.'), 3000);
        }
    }
}



// Jalousie ändert sich ------------------------------------------------------------------------------------------------------------------------

on({id: 'hm-rpc.0.NEQ1688463.1.WORKING', change: "ne", val: true}, function() {   // Jalousie ändert sich
    setState ('hm-rpc.0.NEQ0675013.3.PROGRAM', 4);  // Robo-Maeh: Stripes - Programm Lagerfeuer
    setState ('hm-rpc.0.NEQ0675013.1.LEVEL', 100);  // Robo-Maeh: Stripes - ein
    setStateDelayed('hm-rpc.0.NEQ0675013.1.LEVEL', 0, 8000);   // nach 8 Sek. wieder aus
});


// nachts wieder Auto schalten wenn Variable true --------------------------------------------------------------------------------------------------------

schedule("10 0 * * *", function () {   
    var request = require('request');
    var v_Auto_nachts = getState('javascript.0.Status.Mähroboter.Auto_nachts').val;  
    if (v_Auto_nachts === true) {
        log("Modus Mäh-Roboter wieder auf Auto gesetzt."); 
        sendTo('telegram', "Modus Mäh-Roboter wieder auf Auto gesetzt.");
        request('http://192.168.243.22/json?cmd=mode&mode=auto');  // Modus = Auto setzen
    }
});

3. Script für Auftrag

Code: Alles auswählen

// Mähroboter - Manueller Auftrag


// alle 30 Min. Daten für die Variablen erneuern -----------------------------------------------------------

schedule("1,31 * * * *", function () {   // jede 1 und 31 Minute jeder Stunde 
    var v_Stunde = new Date().getHours();
    var v_Minute = new Date().getMinutes();
    var s_Start = "";
    var s_Ende = "";
    //v_Stunde = 15;
    //v_Minute = 40;

    if (v_Minute < 30) {
        if ((v_Stunde) <= 22) s_Start = "Sofort;" + v_Stunde + ":30";
        if ((v_Stunde + 1) <= 23) s_Ende = (v_Stunde + 1) + ":00;" + (v_Stunde + 1) + ":30";
        for (z = 1; z < 5; z = z + 1) {
            if ((v_Stunde + z) <= 22) s_Start = s_Start + ";" + (v_Stunde + z) + ":00;" + (v_Stunde + z) + ":30";
            if ((v_Stunde + 1 + z) <= 23) s_Ende = s_Ende + ";" + (v_Stunde + 1 + z) + ":00;" + (v_Stunde + 1 + z) + ":30";
        }
    } else {
        if ((v_Stunde + 1) <= 22) s_Start = "Sofort";
        if ((v_Stunde + 1) <= 23) s_Ende = (v_Stunde + 1) + ":30";
        for (z = 1; z < 5; z = z + 1) {
            if ((v_Stunde + z) <= 22) s_Start = s_Start + ";" + (v_Stunde + z) + ":00;" + (v_Stunde + z) + ":30";
            if ((v_Stunde + 1 + z) <= 23) s_Ende = s_Ende + ";" + (v_Stunde + 1 + z) + ":00;" + (v_Stunde + 1 + z) + ":30";
        }
        if ((v_Stunde + 5) <= 22) s_Start = s_Start + ";" + (v_Stunde + 5) + ":00";
        if ((v_Stunde + 6) <= 23) s_Ende = s_Ende + ";" + (v_Stunde + 6) + ":00";
    }
    setState('javascript.0.Status.Mähroboter.Mähauftrag.Uhrzeit_Auswahl_Start', s_Start);
    setState('javascript.0.Status.Mähroboter.Mähauftrag.Uhrzeit_Auswahl_Ende', s_Ende);
    setState('javascript.0.Status.Mähroboter.Mähauftrag.Uhrzeit_Start', "");
    setState('javascript.0.Status.Mähroboter.Mähauftrag.Uhrzeit_Ende', "");
    setState('javascript.0.Status.Mähroboter.Mähauftrag.Mode_danach', "");
});



// Manueller Mähauftrag -------------------------------------------------------------------------------------------------------------------------------------------

on({id: "javascript.0.Status.Mähroboter.Mähauftrag.Taster_ausführen", change: "ne", val:true}, function() {   // Taster wurde gedrückt
    log("Auslöser : Manueller Mähauftrag");
    var request = require('request');
    var v_start = getState('javascript.0.Status.Mähroboter.Mähauftrag.Uhrzeit_Start').val;
    var v_ende = getState('javascript.0.Status.Mähroboter.Mähauftrag.Uhrzeit_Ende').val;
    var v_danach = getState('javascript.0.Status.Mähroboter.Mähauftrag.Mode_danach').val;
    var v_jalousie = getState('hm-rpc.0.NEQ1688463.1.LEVEL').val;  // Jalousie: Robo-Maeh
    var v_start_min = 0;
    var v_ende_min = 0;
    var v_after = 4;
    if (v_start == "Sofort") {
        /*var v_Stunde = new Date().getHours();
        var v_Minute = new Date().getMinutes();
        v_start = v_Stunde + ":" + v_Minute;*/
        v_start = "00:00";
    }
    v_start_min = parseInt(v_start.substring(0,2)) * 60 + parseInt(v_start.substring(3,5));
    v_ende_min = parseInt(v_ende.substring(0,2)) * 60 + parseInt(v_ende.substring(3,5));
    if (v_danach == 'Auto') v_after = 4;
    if (v_danach == 'Feierabend') v_after = 2;
    if (v_danach == 'Home') v_after = 1;
    if (v_danach == 'Manuell') v_after = 3;
    
    if (v_start_min >= v_ende_min) {   // Parameter prüfen: "Start-Uhrzeit liegt später als Ende-Uhrzeit"
        setState('javascript.0.Status.Mähroboter.Mähauftrag.Mitteilung', "Parameter stimmen nicht!");
        setStateDelayed('javascript.0.Status.Mähroboter.Mähauftrag.Mitteilung', "", 3000);   // nach 3 Sek. Mitteilung wieder ausblenden
        log ("Manueller Mähauftrag: Parameter stimmen nicht! Auftrag nicht ausgeführt!");
        sendTo('telegram', "Manueller Mähauftrag:\nParameter stimmen nicht!\nAuftrag nicht ausgeführt!");
    } else if (v_jalousie === 0) {
        setState('javascript.0.Status.Mähroboter.Mähauftrag.Mitteilung', "Jalousie ist nicht offen!");
        setStateDelayed('javascript.0.Status.Mähroboter.Mähauftrag.Mitteilung', "", 3000);   // nach 3 Sek. Mitteilung wieder ausblenden
        log ("Manueller Mähauftrag: Jalousie ist nicht offen! Auftrag nicht ausgeführt!");
        sendTo('telegram', "Manueller Mähauftrag:\nJalousie ist nicht offen!\nAuftrag nicht ausgeführt!");
    } else {
        setState('javascript.0.Status.Mähroboter.Mähauftrag.Mitteilung', "Auftrag wird ausgeführt!");
        var befehl = 'http://192.168.243.22/json?cmd=mode&mode=job&remotestart=1&start=' + v_start + '&end=' + v_ende + '&after=' + v_after;
        // remotestart = 1 (Normaler Start, ohne Fernstart-Punkt; after = 1=home, 2=feierabend, 3=manuell, 4=auto; end = wenn nichts angegeben, dann start + 1h; start = wenn nichts angegeben, dann 0)
        log (befehl);
        request(befehl);
        setStateDelayed('javascript.0.Status.Mähroboter.Mähauftrag.Mitteilung', "", 3000);   // nach 3 Sek. Mitteilung wieder ausblenden
        log ("Manueller Mähauftrag: Start: " + v_start + "; Ende: " + v_ende + "; Danach: " + v_danach + "; wird ausgeführt!");
        if (v_start == "00:00") {
            sendTo('telegram', "Manueller Mähauftrag:\n  Start: Sofort\n  Ende: " + v_ende + "\n  Danach: " + v_danach + "\n wird ausgeführt!");
        } else {
            sendTo('telegram', "Manueller Mähauftrag:\n  Start: " + v_start + "\n  Ende: " + v_ende + "\n  Danach: " + v_danach + "\n wird ausgeführt!");
        }
    }
   setState('javascript.0.Status.Mähroboter.Mähauftrag.Taster_ausführen', false);   // Taster wieder auf false setzen
});


4. vis-Anzeige
bild1.jpg
bild1.jpg (120.1 KiB) 8224 mal betrachtet

So, viel Spaß beim basteln.

mfg
Dieter

tesso
erfahrener Forum-Nutzer
Beiträge: 82
Registriert: Mi 13. Jul 2016, 22:14
Mäher: Gardena R70Li
Firmware des Mähers (MSW): MSW 6.xx.xx
Herstellungsjahr: 2016
Robonect-Modul: Robonect Hx (Rev.2)
Robonect Firmware: 1.2

Re: iobroker - Meine Einbindung sowie Scripte

Beitrag von tesso »

Sehr schön. Ich bin gerade dabei eine ähnliche Lösung zu skripten. Kann das dann gleich aufgeben, da du schneller warst.

Könntest du den vis-view vielleicht auch noch exportieren und zur Verfügung stellen?
Das erspart mir das Nachbauen des views.

vielen Dank.

shufnagl
Forum-Anfänger
Beiträge: 9
Registriert: Mo 21. Aug 2017, 10:06
Mäher: Gardena smart SILENO+
Firmware des Mähers (MSW): MSW 7.xx.xx
Herstellungsjahr: 2016
Robonect-Modul: Robonect Hx (Rev.4)
Robonect Firmware: 0.9c

Re: iobroker - Meine Einbindung sowie Scripte

Beitrag von shufnagl »

Hallo bahnuhr, tesso,

klasse Arbeit...wie schon in anderen Beiträgen erwähnt schreibe ich gerade einen ioBroker Adapter für Robonect.
Gerne würde ich auf den Code Snippets aufsetzen, wenn es Euch recht ist.

Würde mich über Feedback freuen.

Stefan

bahnuhr
sehr erfahrener Forum-Nutzer
Beiträge: 115
Registriert: Di 4. Apr 2017, 21:05
Wohnort: Eichenzell
Mäher: Husqvarna Automower 420
Firmware des Mähers (MSW): MSW 7.xx.xx
Herstellungsjahr: 2016
Robonect-Modul: Robonect Hx (Rev.4)
Robonect Firmware: V1.2RC0

Re: iobroker - Meine Einbindung sowie Scripte

Beitrag von bahnuhr »

Hallo Stefan,

na klar ist das recht.

Falls du Hilfe brauchst sag Bescheid.

Mit code-schnipseln kann ich helfen.

Bei Adapter bin ich aber raus. Ist mir "noch" zu hoch.
Vielleicht kannst du mir da helfen.

mfg
Dieter

shufnagl
Forum-Anfänger
Beiträge: 9
Registriert: Mo 21. Aug 2017, 10:06
Mäher: Gardena smart SILENO+
Firmware des Mähers (MSW): MSW 7.xx.xx
Herstellungsjahr: 2016
Robonect-Modul: Robonect Hx (Rev.4)
Robonect Firmware: 0.9c

Re: iobroker - Meine Einbindung sowie Scripte

Beitrag von shufnagl »

Morgen bahnuhr,

Danke für Dein "OK"...ansonsten ist das wirklich nicht schwer einen Adapter zu schreiben. Der eigentliche Aufwand
war eine iobroker Entwicklungsumgebung zu erstellen mit der man auch den Adapter debuggen kann.

Eine große Hilfe wäre für mich ein Code Reviewer/Tester.

Wenn es Dir/Euch recht ist werde ich in 2-3 Tagen mein Git Repo hier posten.

Stefan

bahnuhr
sehr erfahrener Forum-Nutzer
Beiträge: 115
Registriert: Di 4. Apr 2017, 21:05
Wohnort: Eichenzell
Mäher: Husqvarna Automower 420
Firmware des Mähers (MSW): MSW 7.xx.xx
Herstellungsjahr: 2016
Robonect-Modul: Robonect Hx (Rev.4)
Robonect Firmware: V1.2RC0

Re: iobroker - Meine Einbindung sowie Scripte

Beitrag von bahnuhr »

na klar werde ich testen!

Must mir nur sagen, wie und wo ?

mfg

shufnagl
Forum-Anfänger
Beiträge: 9
Registriert: Mo 21. Aug 2017, 10:06
Mäher: Gardena smart SILENO+
Firmware des Mähers (MSW): MSW 7.xx.xx
Herstellungsjahr: 2016
Robonect-Modul: Robonect Hx (Rev.4)
Robonect Firmware: 0.9c

Re: iobroker - Meine Einbindung sowie Scripte

Beitrag von shufnagl »

Hallo Dieter,

eine Frage hätte ich noch...ich verstehe den SInn dieser Zeilen nicht so ganz:

if (v_mode === 0) setState('javascript.0.Status.Mähroboter.Mode', 'Auto');
...
if (v_mode === 0) setState('javascript.0.Status.Mähroboter.Auftrag', 0);


Du fragst "v_mode === 0" eine Zeile vorher schon mal ab und dann nochmals?
Ausserdem, was hat es mit Auftrag2 und Auftrag auf sich?

Danke

BTW, der Adapter läuft schon, nur wie kannst Du Ihn dann testen?

Stefan

shufnagl
Forum-Anfänger
Beiträge: 9
Registriert: Mo 21. Aug 2017, 10:06
Mäher: Gardena smart SILENO+
Firmware des Mähers (MSW): MSW 7.xx.xx
Herstellungsjahr: 2016
Robonect-Modul: Robonect Hx (Rev.4)
Robonect Firmware: 0.9c

Re: iobroker - Meine Einbindung sowie Scripte

Beitrag von shufnagl »

Hallo,

anbei der Link zu meinem Robonect Github: https://github.com/sthufnagl/ioBroker.robonect

Ist eine Beta Version, mit einigen Code Teilen bin ich noch nicht zufrieden bzw. müssen erweitert werden.

Man kämpft eben an vielen Baustellen:
* Git, Travis-CI
* ioBroker Architektur
* Robonect Besonderheiten.
:-)

Würde mich über Feedback freuen.

Stefan

bahnuhr
sehr erfahrener Forum-Nutzer
Beiträge: 115
Registriert: Di 4. Apr 2017, 21:05
Wohnort: Eichenzell
Mäher: Husqvarna Automower 420
Firmware des Mähers (MSW): MSW 7.xx.xx
Herstellungsjahr: 2016
Robonect-Modul: Robonect Hx (Rev.4)
Robonect Firmware: V1.2RC0

Re: iobroker - Meine Einbindung sowie Scripte

Beitrag von bahnuhr »

Habs versucht zu installieren.

Bekomme aber zahlreiche Fehlermeldungen.

Fazit:
Installation wieder gelöscht.

shufnagl
Forum-Anfänger
Beiträge: 9
Registriert: Mo 21. Aug 2017, 10:06
Mäher: Gardena smart SILENO+
Firmware des Mähers (MSW): MSW 7.xx.xx
Herstellungsjahr: 2016
Robonect-Modul: Robonect Hx (Rev.4)
Robonect Firmware: 0.9c

Re: iobroker - Meine Einbindung sowie Scripte

Beitrag von shufnagl »

Hallo Dieter,

Bin gerade auf dem Sprung in den 3 Wochen Urlaub. Gerne würde ich es danach analysieren was beim Installieren schief geht. Hast Du Details dazu?

Danke fürs Testen.

BTW, wenn es dich interessiert können wir den Adapter gemeinsam weiter entwickeln. Vieles von Deinem Code könnte man sehr gut verwenden...es ist nur eine leicht andere Struktur (JavaScript vs. IoBroker Adapter).

Stefan

Antworten

Zurück zu „MQTT-Nutzer“