Seite 1 von 1

IOBroker - MQTT - Blockly Fehler rücksetzen und Neustart des Mähvorgangs

Verfasst: Di 15. Sep 2020, 13:41
von Amokd0c
INFO: Threat Titel wurde geändert und die Verwirrung gering zu halten.
Der Threat wurde von Lamp (Danke dafür) in die richtige Sparte verschoben!


Servus zusammen!

Was API Schnittstellen, etc. angeht bin ich ne 0 :) ... deswegen drücke ich mich da wahrscheinlich meistens falsch aus!

Was habe ich ?
-IOBroker mit diversen Adapter und Blockly um die Werte mit MQTT auszulesen, etc. das klappt auch alles
-KNX mit Visualisierung

Was möchte ich haben?
- Bei Fehler (zb. angehoben, sollte Status 17 sein) sollte der Mäher 30s nichts tun
- anschließend sollte der Fehler zurückgesetzt werden, und der Mähvorgang fortgesetzt werden.

Vorgehen:
m.E. ginge das nur über IOBroker - Blockly - Befehle API Schnittstelle, und nicht über MQTT, korrekt?


Könnte mir hier einer bitte behilflich sein, und mir zumindest einen Anhaltspunkt geben, wie ich das verwirklicht bekomme?

Des weiteren wollte ich wissen, wenn ich zum Beispiel "http:\\192.168.100.30\json?cmd=battery" eingebe. Werden mir diverse Werte eben zur Batterie angezeigt. Jetzt benötige ich aber nur den einen Wert zB.Chargelevel in % "100"
Wie bekomme ich diesen einen Wert (100) aus dem Ergebnis der Anfrage heraus? (geht das mit dem Parser Adapter im IOBroker?) Gibt es andere Möglichkeiten? Andere Befehle, die mir gleich genau diesen Wert liefern?

Ich steh da noch ziemlich am Anfang, deswegen entschuldigt bitte manch dämliche Frage!

Besten Dank im voraus!

Grüße

Re: benötige Hilfe bei der API Schnittstelle einzelne Werte auslesen

Verfasst: Mi 16. Sep 2020, 12:57
von Lampi
Hallo Amokd0c,
Amokd0c hat geschrieben:
Di 15. Sep 2020, 13:41
m.E. ginge das nur über IOBroker - Blockly - Befehle API Schnittstelle, und nicht über MQTT, korrekt?
Soweit richtig. Den Befehl an die API kann man aus Blockly heraus senden. Hier war das mal Thema. Ist nicht ausführlich erklärt aber vielleicht hilft es dir schon mal etwas weiter.


Amokd0c hat geschrieben:
Di 15. Sep 2020, 13:41
Des weiteren wollte ich wissen, wenn ich zum Beispiel "http:\\192.168.100.30\json?cmd=battery" eingebe. Werden mir diverse Werte eben zur Batterie angezeigt. Jetzt benötige ich aber nur den einen Wert zB.Chargelevel in % "100"
Wie das mit Blockly geht müsste ich auch erst Versuchen.
Hier aber mal ein Codeschnipsel wie es mit Java funktioniert.

Code: Alles auswählen

request('http://192.168.100.30/json?user=xxx&pass=xxx&cmd=battery', function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log ("json = " + body);
    var obj = JSON.parse(body);
    var vAkku = obj.batteries[0].charge;
    console.log ("Akku1 = " + vAkku);
    //setState('DatenpunktDerGesetztWerdenSoll', vAkku);
    //vAkku = obj.batteries[1].charge;
    //console.log ("Akku2 = " + vAkku);
    //setState('DatenpunktDerGesetztWerdenSoll', vAkku);
  } else {
    console.log("Error = " + error);
  }
});
Die xxx müssen entsprechend ersetzt werden.
Da mein Mäher zwei Akkus hat und dein 105'er nur einen, habe ich die Zeilen für den zweiten Akku durch // auskommentiert. Da ich die Antwort bei nur einem Akku nicht kenne, kann es sein, dass es dennoch nicht funktioniert. In dem Fall bräuchte ich mal von dir die Antwort auf den request.
Bei dem Abfragen des Akkustandes über battery musst du aber beachten, dass Robonect die Daten vom Mäher holt und wenn der Mäher schläft bei jeder Abfrage geweckt wird was dann ein piepen zur Folge hat.
Eine Alternative wäre die Abfrage über cmd=Status (weckt den Mäher nicht auf!) in dem der Ladestand auch enthalten ist oder den Wert <topic>.mower.battery.charge aus MQTT zu verwenden.


Gruß
Lampi

Re: benötige Hilfe bei der API Schnittstelle einzelne Werte auslesen

Verfasst: Mi 16. Sep 2020, 19:25
von Amokd0c
Oh cool! Extra für mich geschrieben?
Hab es mal eingefügt und laufen lassen. Leider endet es in einem Fehler.
Aber ist nicht tragisch. Die API Befehle für die Anfragen habe ich beisammen. Jetzt baue ich mir mit Blockly was, da tue ich mir wesentlich leichter. Die meisten Werte bekomme ich aus MQTT raus.
Es braucht einfach Zeit, die ich leider nicht im Überfluß habe.
Den Summer habe ich vorerst abgeklemmt.

Danke nochmal für deine Hilfe!!!

Grüße doc

Re: benötige Hilfe bei der API Schnittstelle einzelne Werte auslesen

Verfasst: Mi 16. Sep 2020, 20:39
von Lampi
Amokd0c hat geschrieben:
Mi 16. Sep 2020, 19:25
Oh cool! Extra für mich geschrieben?
Da war auch viel eigenes Interesse dabei. ;)

Amokd0c hat geschrieben:
Mi 16. Sep 2020, 19:25
Jetzt baue ich mir mit Blockly was, da tue ich mir wesentlich leichter.
Ich fänds super, wenn du uns dann an deiner Lösung teilhaben lässt. Ist bestimmt auch für andere interessant.

Re: benötige Hilfe bei der API Schnittstelle einzelne Werte auslesen

Verfasst: Mi 16. Sep 2020, 22:44
von Amokd0c
mach ich! Habe auch schon damit angefangen, nur noch nicht getestet.

Re: benötige Hilfe bei der API Schnittstelle einzelne Werte auslesen

Verfasst: So 20. Sep 2020, 21:07
von Amokd0c
Nabend!
OK! Ich hab da mal mit angefangen und bin zu folgendem Ergebnis gekommen.
Ist meine erste Idee die ich poste.
Wäre toll, wenn ihr mal kurz drüber schauen könnt, ob das so funktionieren könnte!

Idee:
Mein Mäher hat bei mir 2 Stellen, an der er immer des öfteren mit dem Fehler "angehoben" stoppt. Ich hab das immer über die Kameras gesehen. Konnte ihn aber mit "Fehler zurücksetzen" + "Start" wieder weiter mähen lassen.
Folglich, wollte ich einfach beruhigt in Urlaub fahren können, ohne an den Mähtagen immer wieder auf die Kamera schauen zu müssen.

Umsetzung:
- als Objekt ID habe ich den Status von MQTT genommen /mower/Status/plain . Da dieser allgemein gehalten ist. Man könnte auch die Fehlernummer vergleichen. Sollte auch nur funktionieren, wenn der Fehler rücksetzbar ist.

IOBroker - Blockly

wenn "Fehler" erkannt wird (Eintrag in Objekt ID), vergleiche mit "Fehler", wenn ja - dann 30s warten, dann
http://192.168.100.30/json?user=xxx&pas ... rror&reset
dann 150s warten (Abfrageintervall bei MQTT war in dem Moment ca 60s), wenn nicht mehr "Fehler", dann
http://192.168.100.30/json?user=xxx&pas ... =job&start
Mower Fehler rücksetzen - start.PNG
Grüße doc...

Re: benötige Hilfe bei der API Schnittstelle einzelne Werte auslesen

Verfasst: Mo 21. Sep 2020, 19:31
von Amokd0c
Update:

Heute hat er sich festgefahren, sprich das Mähwerk hat aufgesetzt, weil das rechte Rad über die Rabatten gefahren ist.
Das ist die eine Sache, die man evtl. auch nochmal beleuchten könnte. Das evtl. man erst das eine Rad drehen lässt, bei Erfolg, er dann sich wieder selbst befreien könnte. Wenn nicht, könnte das andere Rad drehen, und selbiges versuchen.

Aber! Das Script hat soweit funktioniert, jedoch war er bei dem Fehler im manuellen Modus.
Habe den Moduswechsel noch mit eingepflegt. Siehe Bild!
Mower Fehler rücksetzen - start.PNG

Re: benötige Hilfe bei der API Schnittstelle einzelne Werte auslesen

Verfasst: Di 22. Sep 2020, 11:28
von Lampi
vielen Dank für das Einstellen deiner Lösung.

Bei einer solchen generellen automatischen Rückstellung von Fehler ohne Prüfung weiterer Bedingungen wäre ich allerdings sehr vorsichtig. Es ist dabei zu bedenken warum es zu dem Fehler gekommen ist, vor allem wenn man Kinder oder Haustiere hat. Oder mal etwas an Mäher machen möchte und vergisst ihn am Hauptschalter auszuschalten.
Ich würde es immer vorziehen den Grund für den Fehler zu finden und durch entsprechende Maßnahmen abzustellen.


Gruß
Lampi

Ich habe das Thema hierher verschoben. Ich denke es passt hier besser als unter API für Robonect® Hx.

Re: IOBroker - MQTT - Blockly Fehler rücksetzen und Neustart des Mähvorgangs

Verfasst: Di 22. Sep 2020, 13:25
von Amokd0c
Bzgl. Kinder etc. hast du natürlich völlig recht.
Die Objekt ID "Fehler" kann natürlich gegen jede x-beliebige Fehlernummer ersetzt werden.
Die Anzeige "Fehler" war jetzt zum testen und der Bequemlichkeit geschuldet, weil ich das "angehoben" mit einem Holzkeil nicht reproduzieren konnte.

Hintergrund bei mir:
Er stößt gegen feste hochgesetze Rabatten, und genau in so einem Winkel, dass sich das Gehäuse mit dem Magneten so verschiebt, dass er meldet "angehoben" Fehlerstatus 15. Da lässt sich bautechnisch in meinem Fall nichts machen, außer ich lege ihm ein Hinderniss in den Weg, dass er gar nicht bis dorthin kommt.

Aber ja! Es sollte eine gewisse Sicherheitsfunktion noch mit eingebaut werden. Meine Kinder hauen eigentlich immer auf die Stoptaste, wenn er Sie nervt, oder deren Wege kreuzt! :)