[Gelöst] Variable an Datenpunkt schreiben

  • Hallo zusammen,

    Was ich machen will:

    Variablen/Werte, die im IOBroker stehen an einen anderen Datenpunkt (z.B. eine Homematic-Systemvariable schreiben)

    Was ich hab:

    Als Programmier DAU hab ich es dennoch geschafft mir einen Hochleistungs-Multifunktionssensor^^ zurecht zu arduinonnn :) das ganze läuft auf nem ESP und wird per mqtt auch artig im IOBrocker aktualisiert. Da stehen nun allerlei Datenpunkte - analoge und digitale Werte. Bspw. ein Regensensor

    schimmer-media.de/index.php?attachment/2528/

    Kann ich mit in der Vis anzeigen lassen..alles top. Ich will diese INformation aber in meiner Homematic weiterverarbeiten. Wenns regnet (und Wind >bft12) sollen meine Rolläden in Beschattungsposition gehen. Das Programm für die Beschattung läuft. Was mir fehlt ist die die Regeninfo. Dazu gibts eine Systemvariable "PWS_Rollo_Regen" - ausgeführ als Logikvariable 0/1 ; wahr/falsch ; Rollo runter/Rollo hoch... Diese Variable wird auch über den Homematicadapter im IOBroker angezeigt. Manuelle Ändeurng führt auch zur Änderung in der WebUi.


    Was nicht geht:

    ich schaffe es nicht mittels Blockly den Wert der Variable "Rain_do" an das Objekt, die Systemvariable PWS-Wetterrollo zu schreiben.

    schimmer-media.de/index.php?attachment/2529/

    eigentlich schaffe ich es mittels Blockly überhaupt nichts irgendwohin zu schreiben.

    Meine Bitte:

    könnt Ihr hier weiterhelfen??

  • Hättest du es nicht im anderen Thread erwähnt, wäre es wahrscheinlich an mir vorbeigegangen...

    Komisch, obwohl ich eigentlich (sehr zum Leidwesen hier Ansässiger) alles lese...

    Ich bin zwar nicht der Blockly-Held, aber "Schreibe" unter "System" hat im Quellcode den benötigten Javascript-Code von "setstate" den du dafür benötigst. Ersetze also mal versuchsweise dein "steuere" damit :)

    Die letzten Worte vor dem Weltuntergang: "...das ist technisch völlig unmöglich..."

    aktuelle Projekte: <<< Magic Mirror +++ RMS +++ Wetterstation +++ Somfy Fernbedienung >>>

  • das funktioniert und damit ist die Frage eigentlich beantwortet. AAAAber das löst mein Problem nicht :D

    schimmer-media.de/index.php?attachment/2530/

    das Blockly prüft ja nur obs eine Änderung gibt und der Wert der Variable wird wahr...jo

    hab ich aber auch erst na 14mal probieren und wundern gerafft.

    Ich will ja aber den Status des Regensensors (ja/nee; on/off; 1/0) prüfen und bzw bei Änderung den jeweiligen Status setzen. Naja und da dachte ich so bei mir:

    schimmer-media.de/index.php?attachment/2531/

    das könnte ja funktionieren.

    Nein, tut es nicht. (Variable Rain_do ist ne Zahl, aber auch als Logikwert krieg ich das Blockly nicht zum laufen)

    Glaube ich bin noch nihct hinter die Logik gestiegen...

    weiß wer Rat?

  • Ist das ganz hinten bei "falls" Mathematik (müsste eigentlich, da blau)?

    Falls ja, ersetze es mal mit "Text" und schreibe die 1 hinein.

    ...und frage bloß nicht warum...;)

    Die letzten Worte vor dem Weltuntergang: "...das ist technisch völlig unmöglich..."

    aktuelle Projekte: <<< Magic Mirror +++ RMS +++ Wetterstation +++ Somfy Fernbedienung >>>

  • Du meinst "PWS_Rollo_Regen"?

    Ich weiß nicht wie du die Datenpunkte genau erzeugt hast (per Hand, JS mittels setstate), aber "variable" ist IMO falsch. Ändere es mal auf "value".

    Die letzten Worte vor dem Weltuntergang: "...das ist technisch völlig unmöglich..."

    aktuelle Projekte: <<< Magic Mirror +++ RMS +++ Wetterstation +++ Somfy Fernbedienung >>>

  • Ja genau. Ich werd noch verrückt. Es kann doch so schwer nicht sein.

    Der Datenpunkt "PWS_Rollo_Regen" und der jetzt noch zusätzlich zum Test erzeugte Datenpunkt "IOBroker_Test" wird über den Homematicadapter erzeugt. Das sind Systemvariablen die dort angelegt sind Beide sehen so aus

    schimmer-media.de/index.php?attachment/2535/

    Ich habe mit Value, State , Variable rumprobiert...ohne Erfolg

    Der Datenpunkt Rain_do kommt über dem mqtt adapter in den IOBroker

    schimmer-media.de/index.php?attachment/2536/

    DEn habe ich auch schon mal auf Logikwert und Zeichenkette gesetzt und probiert. Alles ohne Erfolg

    Das Script sieht jetzt so aus (da war Rain_do mal testweise noch ein Logikwert)

    schimmer-media.de/index.php?attachment/2537/

    und das ist der Code dazu

    Code
    on({id: "mqtt.0.sensors.rain.Rain_do"/*sensors/rain/Rain_do*/, change: "ne"}, function (obj) {
      var value = obj.state.val;
      var oldValue = obj.oldState.val;
      if (getState("mqtt.0.sensors.rain.Rain_do").val == '1') {
        setStateDelayed('hm-rega.0.45335', true, true, parseInt(0, 10), false);
      } else {
        setStateDelayed('hm-rega.0.45335', false, true, parseInt(0, 10), false);
      }
    });


    hat noch jemand eine Idee warum das nicht läuft?

  • das hatte ich schonmal probiert. komm damit aber nicht klar. Habe heute ein wenig Zeit und setze mich damit mal auseinander. Ich höre aber heraus, dass das Blockly erstmal soweit korrekt sein dürfte??

  • Soweit ja. Setze einfach mal einen Debug-Block jeweils noch vor das "schreibe". Die lässt du dann auf Info und schreibst z.B. "Hier 1" und "Hier 2" rein.

    Wenn du dann dein Blockly startest und die Aktion antriggerst (z.B. Regen "simulierst"), sollte im Log nun der Text "Hier 1" oder "Hier 2" auftauchen. Dann weißt du schon mal, dass "falls" funktioniert.

    Die letzten Worte vor dem Weltuntergang: "...das ist technisch völlig unmöglich..."

    aktuelle Projekte: <<< Magic Mirror +++ RMS +++ Wetterstation +++ Somfy Fernbedienung >>>

  • Moin, bin neu hier. Bis jetzt hat mir das lesen gereicht.

    Bin durch ein, denke ich, ähnliches Problem auf diesen Beitrag gestoßen und habe eine Lösung zumindest bei mir gefunden. Vielleicht hilft es dir ja weiter

    Kurz zu meinem Problem:

    Und zwar hatte eine Zeit lang meine AstroFunktion nicht richtig funktioniert. Habe mir dann ein Script geschrieben womit mir die Sonnenuntergangs Zeit immer in ein von mir erstelltes Objekt geschrieben wird.

    Dieses Objekt war direkt unter den Javascripts erstellt. Dies funktionierte auch.

    Da ich gestern mein Sonoff POW mit der Waschmaschinen "Überwachung" eingebaut habe, musste ich mir da auch ein Objekt erstellen. Im Beitrag zur Waschmaschine wurde ja gesagt das man für selbst erstellte Objekt einen eigenen Ordner erstellen sollte. Klang für mich schlüssig und so habe ich dies auch gemacht. Für den POW und dem Waschmaschinen Status hat dies auch wunderbar geklappt. Wollte dann auch alle anderen umstellen. Er hat mir zu verrecken nicht die Sonnenuntergangszeit in das Objekt geschrieben. Sobald ich wieder das Objekt im Javascript "Ordner" ausgewählt habe, ging es wieder.

    Nun zu meiner Lösung:

    Bei den BlockyScripts habe ich von Anfang an 2 Ordner gehabt.

    - Common

    - Global

    Ich habe alle Scripts, mit teilweise Unterordnern, in Common gespeichert. Hier auch das Script für den Sonnenuntergang.

    Ich habe es testweise gerade in Global gespeichert. Und sofort wurde alle meine Objekte in den selbst erstellten "Ordner" richtig geschrieben und gespeichert.

    Vielleicht hilft es dir auch.

    Ansonsten sorry für den langen Post ;)

    Gruß

  • ok nehme meine Aussage zurück. Ich habe mich gewundert warum meine Telegram Nachrichten öfters ankommen. In der Hilfe steht das unten den Globalen Scripts die Scripte vor jedem anderen Ausgeführt werden. Habe das Script wieder aus Global raus genommen und jetzt kommt die Nachrichten nur einmal an.

    Habe also auch das Problem das meine selbst erstellen Objekte "Variablen" nicht über den JavaScript Objekt gespeichert werden.

    Ich wollte für die Waschmaschine auch eine Berechnung der Kosten erstellen. Das Objekt habe ich unten EigeneDatenpunkte speichern wollen. Leider speichert er diese da nicht ab.
    Sobald ich das Objekt im JaveScript Objekt speichern will, funktioniert das ganze ohne Probleme.

    Wie aber erwähnt würde ich gerne meine selbst erstellen Objekte "Variablen" gerne extra Abspeichern falls wirklich mal etwas mit dem Adapter sein sollte.

    Vielleicht kann doch noch jemand helfen

    Gruß

  • soo...schwere Geburt aber nun läuft es. Was nun genau das Problem war weiß ich nicht. Auch hat es ne Weile gebraucht bis ich den LOG unterm Script dazu überreden konnte eine Ausgabe zu machen.

    Bisl googlen half dann noch

    Im JS Adapter war [Erlaube Kommando "setObjekt"] und [Nicht alle Zustände beim Start abbonieren] zu deaktivieren. Den Adapter hatte ich auch gelöscht und neu installiert.

    Na jedenfalls gehts jetzt und ich bedanke mich bei allen Beteiligten für die Hilfe und Kommentare...

    ...bis zum nächsten Problem :)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!