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!

.
.

Skript MQTT Wochenprogramm

Einbindung von Robonect Hx und IO in Deine bereits bestehende MQTT-Infrastruktur
Antworten
Blubbel
Forum-Nutzer
Beiträge: 31
Registriert: Di 19. Jul 2016, 10:00
Mäher: Gardena R70Li
Firmware des Mähers (MSW): MSW 5.xx.xx
Herstellungsjahr: 2014
Robonect-Modul: Robonect H30x (Rev.1)
Robonect Firmware: V0.9

Skript MQTT Wochenprogramm

Beitrag von Blubbel »

Hallo Ihr,

hier mein Skript, um das Wochebprogramm , im MQTT Adapter dargestellt als HEX Wert, als Wochenprogramm anzeigen zu lassen. Den Datenpunkt hab ich im Vorfeld schon angelegt. Nochwas, ich bin kein SW Entwickler und hab nach bestem Wissen das Skript zusammengestoppelt ;)

Code: Alles auswählen

on({id: 'mqtt.0.Robonect.mower.timer.ch0.weekdays', change: "ne"}, function (obj) {
var obj= 'mqtt.0.Robonect.mower.timer.ch0.weekdays'/*Robonect/mower/timer/ch0/weekdays*/
var  myNum = getState(obj).val;
var myHex = myNum.toString(16);
var myNum = parseInt(myHex, 16);
var myBin = myNum.toString(2);
var Length = myBin.length;

var VorneDran = "0"
var VorneDran = 8 - Length

for(i=0; i<VorneDran; i++)
 {
 myBin = "0" + myBin
 } 
var Woche = "";
var Montag = myBin.slice(7,8);
var Dienstag = myBin.slice(6,7);
var Mittwoch = myBin.slice(5,6);
var Donnerstag = myBin.slice(4,5);
var Freitag = myBin.slice(3,4);
var Samstag = myBin.slice(2,3);
var Sonntag = myBin.slice(1,2);

if(Montag == 1) {Woche = "Mo "}
if(Dienstag == "1") {Woche = Woche + "Di "}
if(Mittwoch == "1") {Woche = Woche + "Mi "}
if(Donnerstag == "1") {Woche = Woche + "Do "}
if(Freitag == "1") {Woche = Woche + "Fr "}
if(Samstag == "1") {Woche = Woche + "Sa "}
if(Sonntag == "1") {Woche = Woche + "So "}

setState('javascript.0.Robonect.WochenTimer', Woche); 
});

Blubbel
Forum-Nutzer
Beiträge: 31
Registriert: Di 19. Jul 2016, 10:00
Mäher: Gardena R70Li
Firmware des Mähers (MSW): MSW 5.xx.xx
Herstellungsjahr: 2014
Robonect-Modul: Robonect H30x (Rev.1)
Robonect Firmware: V0.9

Re: Skript MQTT Wochenprogramm

Beitrag von Blubbel »

Da hier im Forum seltenst genau beschrieben wurde, was und warum es wie gemacht wurde hier mal eine Beschreibung, die auch SuperAnfängern die Logik dahinter erklärt, dass da keine große Magie dahinter steckt:

Zur Erklärung was ich gemacht habe:
1.) DIe Daten für das Wochenprogramm liegen in HEX vor. Somit lag der Verdacht nahe, dass die Wochentage als Bits gesetzt werden, so war es dann auch, leider anders als gedacht, dazu später.
Leider kann JS nicht drekt von HEX nach BIN sondern üner Strings nach DEC und dann weiter nach BIN.

Das passiert hier:

Code: Alles auswählen

var  myNum = getState(obj).val;
var myHex = myNum.toString(16);
var myNum = parseInt(myHex, 16);
var myBin = myNum.toString(2);
var Length = myBin.length;
Wenn alle Tage gesetzt sind, schaut der Output so aus:

0 1 1 1 1 1 1 1 1 -> 0 (ist für nix, es sind ja nur 7 Wochentage) also 0 So Sa Fr Do Mi Di Mo
Problem: Setzt man Montag und Dienstag schaut das BIN so aus: 1 1 :(
Deshalb hab ich eine Schleife gebaut, die immer 8 Bits generiert. Welche Length kommt raus? Vornedran kommt immer eine "0". Wie viele "0" muss ich vornedran hängen, dass wieder 8 Bits rauskommen?Per Schleife hänge ich die dann vorne an.

Code: Alles auswählen

var Length = myBin.length;
var VorneDran = "0"
var VorneDran = 8 - Length
for(i=0; i<VorneDran; i++)
 {
 myBin = "0" + myBin
 } 
Wie gehts weiter? Jetzt schneide (Slize) ich die einzelnen Bits auf:
Was steht am Montag für ein Bit

Code: Alles auswählen

var Montag = myBin.slice(7,8);
0 1 0 0 0 0 0 1

Richtig eine 1. das merken wir uns.
Dienstag usw.

Code: Alles auswählen

var Dienstag = myBin.slice(6,7);
Jetzt bauen wir uns dien Wochenprogramm - String zusammen, ein Tag nach dem Anderen:

Code: Alles auswählen

if(Montag == 1) {Woche = "Mo "}
if(Dienstag == "1") {Woche = Woche + "Di "}
if(Mittwoch == "1") {Woche = Woche + "Mi "}
if(Donnerstag == "1") {Woche = Woche + "Do "}
if(Freitag == "1") {Woche = Woche + "Fr "}
if(Samstag == "1") {Woche = Woche + "Sa "}
if(Sonntag == "1") {Woche = Woche + "So "}
Und am Schluss ab in den Datenpunkt:

Code: Alles auswählen

setState('javascript.0.Robonect.WochenTimer', Woche); 
Hab ich was vergessen? Kann ich was anders, besser machen, Feedback ist wilkommen.

Viel Spaß, Andi :)

P.S.

Antworten

Zurück zu „MQTT-Nutzer“