PArns / ioBroker.netatmo

Netatmo Adapter for ioBroker
http://www.patrick-arns.de
MIT License
26 stars 18 forks source link

Invalid object type with js-controller 3.x #36

Closed peer69 closed 3 years ago

peer69 commented 4 years ago
(27317) Object netatmo.0.My-Home.Events.5e9f02342a0asdfasdd6741ecf.time is invalid: obj.common.type has an invalid value (date) but has to be one of number, string, boolean, array, object, mixed, file,
(27317) This object will not be created in future versions. Please report this to the developer.
bergjet commented 4 years ago

The same here.

Nunmalfix commented 4 years ago

Habe ich auch! netatmo.0 (6250) Object netatmo.0.Zuhause.Events.5e9f74fe549ba5311351ca49.time is invalid: obj.common.type has an invalid value (date) but has to be one of number, string, boolean, array, object, mixed, file, json netatmo.0 (6250) This object will not be created in future versions. Please report this to the developer.

bergjet commented 4 years ago

Letzte Änderung auf Github vor 2 Jahren. Ob sich da noch was tut ist fraglich?

Nunmalfix commented 4 years ago

Na ja, ich bin kein Entwickler, aber so schwierig scheint das hier nicht zu sein. Problem ist ja das der Datentyp date nicht mehr geht (warum auch immer). Also mal eben schnell im Code gesucht (type: "date") - taucht in der netatmoWelcome.js genau 2 mal auf - Zeile 600 und Zeile 776. Dann hab ich mal untersucht, was die anderen Adapter so bei Datum/Zeitstempeln so nehmen (z.b. Backitup) - da wird immer string verwendet (auch wenn ich das nicht so ganz verstehe, weil der Zeitstempel eigentlich ne Zahl ist - Unix-Timestamp nur in Millisekunden). Ich war jetzt mal mutig und hab das in meinem iobroker in der netatmoWelcome.js geändert und ein neues Ereignis erzeugt (mal durch die Kamera gelaufen). Und siehe da, wie erwartet wird das Ereignis erzeugt und time ist vom typ string. Datum / Uhrzeit in der Objekte Ansicht sieht auch gut aus. Jetzt hab ich noch bei last_seen die Einträge von date auf string geändert, mal sehen was bei einem neuen Gesicht passiert. Da könnten nochmal Änderungen am Code notwendig sein. Mal sehen, was kann schon passieren?

Coffee-lover commented 4 years ago

@Nunmalfix Sorry für die vielleicht dumme Frage, aber wo finde ich den Adapter-Code? Dann würde ich es genauso fixen. Oder hast kam der Fehler wieder?

Nunmalfix commented 4 years ago

@Coffee-lover dumme Fragen gibts doch nicht. Also bei mir ist der Fehler weg und inzwischen sind bei allen events die time vom typ string. Also bei mir ist die Datei "netatmoWelcome.js" im Verzeichnis /opt/iobroker/node_modules/iobroker.netatmo - dort einfach mit einem Editor deiner Wahl (gut, wenn er Zeilennummern kann) öffnen und die Zeilen 600 und 776 ändern. Da steht sowas wie type: "date", und ich hab halt type: "string", daraus gemacht. Datei speichern, Netatmo Adapter neu starten und freuen ;-)

ChrisBGL commented 3 years ago

Hab leider auch etliche dieser Meldungen im Log.

Wird der Adapter aktualisiert?

Nunmalfix commented 3 years ago

Also die zwei Zeilen ändern ist wirklich nicht sooo schwer. Einfach mal probieren.

ChrisBGL commented 3 years ago

Ja, hat funktioniert.

Wäre trotzdem schön, wenn der Adapter noch weiter entwickelt werden würde. Wünsche mir z.B. eine Möglichkeit alle Personen als Abwesend zu setzen (so wie es eine Schaltfläche in der Netatmo-App gibt oder bei IFTTT).

peer69 commented 3 years ago

Ja, hat funktioniert.

Wäre trotzdem schön, wenn der Adapter noch weiter entwickelt werden würde. Wünsche mir z.B. eine Möglichkeit alle Personen als Abwesend zu setzen (so wie es eine Schaltfläche in der Netatmo-App gibt oder bei IFTTT).

Das geht bereits. Die Funktion heißt setAway und ist auch schon in der Doku beschrieben. Nutze ich zusammen mit den Location Services in Homekit für die Familie. Mir fehlt da bisher nur die Möglichkeit, bestimmt Personen auch wieder mit einer Funktion auf Anwesend zu setzen. So muss man das leider manuell machen oder warten bis die Welcome ein Gesicht erkannt hat. So lange gibt es Meldungen.

MojitoJoe1813 commented 3 years ago

Ich kenne mich leider nicht genug mit GitHub aus, aber mein Verständnis war immer, dass diese Platform dazu dient, dass ihre Repositories von beliebigen Entwicklern weiterentwickelt/upgedatet werden könnten. Leider weiß ich nicht, wie ich dazu vorgehen muss, aber bevor ich das lokal bei mir ändere, warum nicht gleich hier im Repository ändern und dann ein Update für alle machen?

Apollon77 commented 3 years ago

Am Ende ist es recht simpel und es gibt mehrere Wege. Wenn Du lokal die änderungen machst kannst du hier einfach auch das File editieren und so eine Änderung die bei dir tut vorschlagen. oder du machst einen "Fork", checkst diesen bei DIr aus und commiteetst dann ... da musst Du dich aber ein bissl einlesen - gibt aber gute Anleitungen

Magoo2 commented 3 years ago

@Coffee-lover dumme Fragen gibts doch nicht. Also bei mir ist der Fehler weg und inzwischen sind bei allen events die time vom typ string. Also bei mir ist die Datei "netatmoWelcome.js" im Verzeichnis /opt/iobroker/node_modules/iobroker.netatmo - dort einfach mit einem Editor deiner Wahl (gut, wenn er Zeilennummern kann) öffnen und die Zeilen 600 und 776 ändern. Da steht sowas wie type: "date", und ich hab halt type: "string", daraus gemacht. Datei speichern, Netatmo Adapter neu starten und freuen ;-)

Der Tipp funktioniert super!! Vielen Dank.

ChrisBGL commented 3 years ago

Ja, hat funktioniert. Wäre trotzdem schön, wenn der Adapter noch weiter entwickelt werden würde. Wünsche mir z.B. eine Möglichkeit alle Personen als Abwesend zu setzen (so wie es eine Schaltfläche in der Netatmo-App gibt oder bei IFTTT).

Das geht bereits. Die Funktion heißt setAway und ist auch schon in der Doku beschrieben. Nutze ich zusammen mit den Location Services in Homekit für die Familie.

Kannst du mir evtl. Hilfestellung geben, wie ich das per Blocky in iobroker mache (alle auf Abwesend setzen)?

peer69 commented 3 years ago

Ich nutze Javascript und da sieht das so aus: sendTo('netatmo.0', "setAway");

Das sollte sich mit dem SendTo Block von Blockly genau so machen lassen. Also einfach "setAway" an deine Netatmo Instanz senden.

ChrisBGL commented 3 years ago

Ja, das habe ich schon so versucht:

image

sieht im Code dann so aus:

{
      sendTo("netatmo.0", "send", {
         "parameter1": '"setAway"'
      });

Ergibt aber einen Fehler:

image

Ich weiß nicht, wie ich den Block umbauen muss.

peer69 commented 3 years ago

So auf den ersten Blick würde ich vermuten, dass setAway bei Befehl rein muss und du das ohne Parameter an den Adapter schickst.

Apollon77 commented 3 years ago

exakt

GermanBluefox commented 3 years ago

Please test 1.3.4