Bosch Indego Connect einbinden

Begonnen von AndreasR, 13 April 2016, 17:24:51

Vorheriges Thema - Nächstes Thema

belu

#75
@Vuffiraa

Irgendwas stimmt da immer noch nicht. am Intervall liegt es nicht.

2016.05.29 13:37:22 1: Including fhem.cfg
2016.05.29 13:37:24 2: Registering INDEGO 13C for URL /INDEGO/13C/map...
2016.05.29 13:37:24 2: eventTypes: loaded 409 events from ./log/eventTypes.txt
2016.05.29 13:37:26 1: Including ./log/fhem.save
2016.05.29 13:37:26 1: usb create starting
2016.05.29 13:37:32 1: usb create end
2016.05.29 13:37:32 0: Featurelevel: 5.7
2016.05.29 13:37:32 0: Server started with 29 defined entities (fhem.pl:11476/2016-05-18 perl:5.020002 os:linux user:fhem pid:13367)
Undefined subroutine &Encode::encode_utf8 called at ./FHEM/70_INDEGO.pm line 452.

452 im Modul =  $return = decode_json( Encode::encode_utf8($data) );

Irgendwas mit decode_json passt nicht.

apt-get install liburi-encode-perl

Hab noch libencode-perl nachinstalliert aber keinen erfolg

hat leider keinen erfolg gebracht.


Hat es was mit der Sprache zu tun, habe De_DE_UTF8 drin, stelle es mal auf iso um
LG



belu

Hat jemand ne Idee, warum mir FHEM sofort abschmiert wenn er Zeile 452 durchläuft?

$return = decode_json( Encode::encode_utf8($data) );

2016.05.29 13:37:32 0: Server started with 29 defined entities (fhem.pl:11476/2016-05-18 perl:5.020002 os:linux user:fhem pid:13367)
Undefined subroutine &Encode::encode_utf8 called at ./FHEM/70_INDEGO.pm line 452.

Irgendwie bekommt er das nicht hin...

LG

belu

belu

Hallo,

hab mal mit dem Code herumgefummelt.

Line 452:

$return = decode_json( Encode::encode_utf8($data) );

ersetzt mit:

$return = decode_json($data) ;

Damit läuft es, mein Perl hat ein Problem mit der Subroutine Encode::encode_utf8

Evt hat jemand noch eine Idee es sauber zu lösen. Aber es funktioniert zumindest etwas.

LG

vuffiraa

Zitat von: belu am 29 Mai 2016, 20:33:13
Hallo,

hab mal mit dem Code herumgefummelt.

Line 452:

$return = decode_json( Encode::encode_utf8($data) );

ersetzt mit:

$return = decode_json($data) ;

Damit läuft es, mein Perl hat ein Problem mit der Subroutine Encode::encode_utf8

Evt hat jemand noch eine Idee es sauber zu lösen. Aber es funktioniert zumindest etwas.

LG

Dir scheint in deiner Umgebung noch die Perl-Lib zu fehlen, die genau das Encode::encode_utf8 enthält. Ich habe leider nicht so richtig rausgefunden, was du nachinstallieren musst. Eventuell ist es libencode-perl.

Gruß vuffiraa
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

Oliver.O

#79
Hab' gerade erste Gehversuche mit Version 0.2.2 unternommen und Folgendes beobachtet:

Ein SET renewContext führte dazu, dass in schneller Folge neue Werte für das Reading "contextId" erschienen, bis schließlich FHEM nicht mehr reagierte.

Ansonsten scheint das Abrufen der Stati soweit zu funktionieren, vielen Dank für das Modul! Für alle, die es interessiert, habe ich noch eine gplot-Datei zur Visualisierung von Status und Mähfortschritt angehängt.

Viele Grüße, Oliver

---

Ergänzung: Das wiederholte Abrufen einer "contextId" passierte auch, als das Modul nach 2 Stunden eine neue Anmeldung vornahm. Im Log erschien dabei einmalig:

2016.06.23 20:11:36 1: PERL WARNING: Use of uninitialized value $cmd in concatenation (.) or string at ./FHEM/70_INDEGO.pm line 808.

Ich habe nicht viele Versuche abgewartet, sondern FHEM nach etwa 10-15 Sekunden neu gestartet. Ich befürchte, dass der Bosch-Server sonst irgendwann die häufigen Zugriffe übel nimmt...

vuffiraa

Zitat von: Oliver.O am 23 Juni 2016, 17:25:52
Hab' gerade erste Gehversuche mit Version 0.2.2 unternommen und Folgendes beobachtet:

Ein SET renewContext führte dazu, dass in schneller Folge neue Werte für das Reading "contextId" erschienen, bis schließlich FHEM nicht mehr reagierte.

Ansonsten scheint das Abrufen der Stati soweit zu funktionieren, vielen Dank für das Modul! Für alle, die es interessiert, habe ich noch eine gplot-Datei zur Visualisierung von Status und Mähfortschritt angehängt.

Viele Grüße, Oliver


Hallo Oliver,

Schön das dir das Modul gefällt. Die neueste Version habe ich noch nicht richtig stabil bekommen. Wenn du dir aus dem Git die letzte 0.1.x-er Version holst, läuft es wahrscheinlich stabiler.
Bosch hatte mit der Aktualisierung der App ein paar neue Funktionen hinzugefügt. Für das Modul interessant ist ein Longpoll auf den Status. Damit könnte man sich das Pollen des Status sparen. Als ich damit angefangen habe rumzuspielen, hat der Server aber Probleme gehabt. Daher hatte ich auch im Forum noch nichts darüber geschrieben.
Ihr könnt also gespannt sein ;-)

Gruß vuffiraa
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

Oliver.O

vuffiraa, danke für den Tipp. Ich versuche es dann mit Version: 0.1.10 (commit 98a1438).

Version 0.2.2 hab' ich mal durch einen Analyzer laufen lassen und auf dessen Hinweise hin ein paar Korrekturen vorgenommen (allerdings ungetestet). Patch im Anhang.

vuffiraa

Zitat von: Oliver.O am 23 Juni 2016, 23:03:47
Version 0.2.2 hab' ich mal durch einen Analyzer laufen lassen und auf dessen Hinweise hin ein paar Korrekturen vorgenommen (allerdings ungetestet). Patch im Anhang.

Das Ergebnis des Analyzers scheint nachvollziehbar, ich werde es mal testen. Gibt es das alleine oder nur als Teil von IntelliJ?
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

Oliver.O

Zitat von: vuffiraa am 25 Juni 2016, 21:04:33
Gibt es das alleine oder nur als Teil von IntelliJ?

Ich hab' dieses Perl5-Plugin für IntelliJ IDEA genutzt: https://github.com/Camelcade/Perl5-IDEA
Mir ist keine Lösung außerhalb dieser IDE bekannt, hab' allerdings auch nicht großartig herumgeschaut, weil ich nur wenig mit Perl arbeite.

Die Version 0.1.10 scheint übrigens zur Status-Überwachung bislang einen guten Job zu machen.  :)

Ich hätte noch einen Vorschlag für die neueren Versionen: Wenn durch einen Fehler im Modul eine Lawine von API-Aufrufen den Server belastet, könnten die Betreiber irgendwann mit Einschränkungen des Zugangs reagieren. Um eine Server-Überlastung zu verhindern, könnte das Modul einen Zähler für die REST-API-Aufrufe führen und nach Überschreitung eines Limits (vielleicht 10 pro Minute) sicherheitshalber den Betrieb einstellen.

vuffiraa

Hallo,

Ich habe mal eine entschärfte Version hochgeladen, die ein paar Daten aus den neuen Funktionen der App anzeigt. Es wird auch das angesprochene Longpoll verwendet, aber parallel erfolgt immer noch die normale Statusabfrage.
Mein Ansatz ist erstmal, nur ein Kommando zu wiederholen, wenn es zu einem Fehler kam. Das muss ohne Zähler funktionieren, da es nur eine Wiederholung gibt. Alle anderen Abfragen werden nicht wiederholt und müssen einfach aufs nächste Intervall warten.

Schönes Abend,
Vuffiraa
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

dieter114

Hallo vuffiraa

ich habe im parallel Thread einiges zum Thema Programmsteuerung https://forum.fhem.de/index.php/topic,53622.msg452905.html#msg452905 dargestellt.
Ist es möglich mit deiner Routine nur dann in die Indego Steuerung einzugreifen wenn irgend ein Ereignis eintritt?
Hintergrund: Die neueste APP von Bosch funktioniert eigentlich so gut, dass ein Eingriff von außen kaum noch notwendig ist.
Bei mir werden Mähzeiten abhängig vom örtlichen Wetter geregelt - bis auf - plötzlich einsetzenden Regen.
Ich möchte nun wenn meine kleine Wetterstation meldet "es regnet" den Indego zurücksenden,
aber nur wenn er gerade mäht!
Also sollte eigentlich eine Abfrage 1 mal pro Tag (Mähplan auslesen) ausreichen - oder?

Gruß Dieter
RPi II+III+V,OWX,div.1W Module,HM Zisterne,div. CUL, sduino MAPLESDuino(adv), div ESPEasy, div Tasmota, MQTT2Server,WU-Upload,TabletUI,Poolsteuerung mit fhem, Fronius, BYD Solaranlage

vuffiraa

Zitat von: dieter114 am 02 August 2016, 23:00:43
Hallo vuffiraa

ich habe im parallel Thread einiges zum Thema Programmsteuerung https://forum.fhem.de/index.php/topic,53622.msg452905.html#msg452905 dargestellt.
Ist es möglich mit deiner Routine nur dann in die Indego Steuerung einzugreifen wenn irgend ein Ereignis eintritt?
Hintergrund: Die neueste APP von Bosch funktioniert eigentlich so gut, dass ein Eingriff von außen kaum noch notwendig ist.
Bei mir werden Mähzeiten abhängig vom örtlichen Wetter geregelt - bis auf - plötzlich einsetzenden Regen.
Ich möchte nun wenn meine kleine Wetterstation meldet "es regnet" den Indego zurücksenden,
aber nur wenn er gerade mäht!
Also sollte eigentlich eine Abfrage 1 mal pro Tag (Mähplan auslesen) ausreichen - oder?

Gruß Dieter

Hallo Dieter,

das Modul verhält sich insgesamt so, als ob du die App bedienst. Das sollte für deinen Fall auch reichen.
Etwas weniger technisch betrachtet, wäre doch dein Fall, wenn du aus dem Fenster schaust, siehst es regnet, und dann in der App den Mäher zurück zur Basis schickst.
Oder willst du noch das Intervall im Modul so hoch setzten, dass der Status des Mähers nur einmal pro Tag abgerufen wird? Mit den Smartfunktionen weißt du dann aber nicht sicher, ob er wirklich mäht. Das heißt, du müsstest ein Statusupdate triggern. Das geht im Modul über den Setter "renewContext".
Also insgesamt lautet meine Antwort auf deine Frage JA :)

Viele Grüße,
vuffiraa
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

greg4b

hab' mir die Readings angesehen und da ist mir aufgefallen, dass

latitude
longitude

nicht die Geoposition ist, die auf der Karte für SmartMow eingeben wurde. Diese ist fc_loc_latitude
fc_loc_longitude



Ist latitude
longitude
die Funkzelle?
Bosch Indego Connect 1200, Neato BotVac 85 D, Raspberry Pi, JeeLink V3, Homematic, Sony KDL-40HX756,

buennerbernd

Zitat von: greg4b am 17 August 2016, 12:03:27


Ist latitude
longitude
die Funkzelle?

Davon gehe ich auch aus. Diese Position wird verwendet, um bei der Ortseingabe in der App schon eine grobe Vorauswahl zu haben.
Modulentwickler von KLF200 und KLF200Node

vuffiraa

Zitat von: buennerbernd am 17 August 2016, 14:32:00
Davon gehe ich auch aus. Diese Position wird verwendet, um bei der Ortseingabe in der App schon eine grobe Vorauswahl zu haben.
Es gab in den Daten, die vom Server geliefert werden 2 Ortsangaben. Interpretiert haben Buennerbernd und ich das als Funkzelle und Ortsangabe für das Wetter. Ich kann morgen mal nachschauen, was das Modul davon in welches Reading schreibt. Heute genieße ich noch meinen Urlaub
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean