Vorherigen Wert von input_select abfragen ?

Hey, ich verwende extra Begriffe, die in den Listen stehen (Nummer, Zustand, ...)
Das mag stimmen, ist aber für einen Neuling in HA wenig hilfreich wenn zu den Begriffen keine Erklärung kommt.
Wenn nach einiger Zeit das Verständnis da ist, dann können wir uns auf dem Level unterhalten, am Anfang ist das echt schwierig dem zu folgen. RudiP hat es richtig gut gemacht und mir den entscheidenden Tipp gegeben.
Schöne Grüße
Mercy
 
Wenn ich das richtig sehe schreibst Du in
input_number.i_dj_oase_jalousie_level
einen Wert, der in data angegeben ist, da is aber nix, somit wird der Wert wohl 0 sein.
Du müsstest dann in data die Jalousie Position auslesen und eintragen.
Kann Dir gerade nicht sagen wie das in YAML aussieht, {{ state(…. , wäre gut wenn die erfahren YAMLer dazu was schreiben könnten, sorry.

Hallo!
Ich bin hier grad am verzweifeln. Ich kenne aus der Softwareentwicklung dass Werte über das = Zeichen zugewiesen werden. Bei
i_test_1 = 10 hat die Variable den Wert 10. Die Variabel wird über die Deklaration als int bereit gestellt.
Das ist hier anders, das ist schon klar.

Ich habe einen Helfer namens i_dj_oase_jalousie_level erstellt. Dieser soll nur eine Ganzzahl (integer) am Ende aufnehmen. Der Wert der Ganzzahl soll aus einer Entität namens cover.dj_oase_jalousie übergeben werden. (in c++ wäre das i_dj_oase_jalousie_level = cover.dj_oase_jalousie)

Für Testzwecke habe ich eine kleine Automation erstellt nach dem drücken eines Helfers vom Type Schalter der aus cover.dj_oase_jalousie den Wert in i_dj_oase_jalousie_level schreiben.

Im HA Template erhalte ich mit

YAML:
Position ist: {{state_attr("cover.dj_oase_jalousie", "current_position")}}

den aktuellen Wert der Behanghöhe der Jalousie, also dachte ich dass es auch im YAML Code funktionieren sollte. Aber irgendwie ist da ein Bug enthalten:
YAML:
alias: 999 Jalousien.Cover to int_Variable
description: ""
trigger:
  - platform: state
    entity_id:
      - input_boolean.999_helper_switch
    from: "on"
    to: "off"
action:
  - service: input_number.set_value
    target:
      entity_id: input_number.i_dj_oase_jalousie_level
    data:
      value: "{{state_attr("cover.dj_oase_jalousie", "current_position")}}"
mode: single

Hat einer eine Idee was hier klemmt?
Wenn ich den Schalter betätige wird die Automation zwar angesprochen, aber die Variable i_dj_oase_jalousie_level bleibt leer :-(

Ich danke euch!
Schöne Grüße
Mercy
 
Wenn ich nen Kunden mit Computerproblemen habe, versuche ich immer, dem da so zu erklären, als wäre er ein jugendlicher, der gerade anfängt.
Das ist auch der Grund, warum meine Anleitungen hier meist recht ausführlich sind. Jemand, der schon tiefer in der Materie steckt, wird mich sicher verfluchen, aber ein Anfänger kommt damit meist besser klar.
Das ist der wesentliche Punkt.

Grundsätzlich - und besonders, wenn der User das explizit sagt - rechnen wir hier mit absoluten "Neulingen". Ausnahme, wenn durch vorherigen Forenkontakt sichergestellt ist, dass das nicht der Fall ist.

Und wenn man meint, man hat "diese absolut grundlegenden Kleinigkeiten" jetzt "wirklich das xfachte Mal ausreichend erklärt, kein Bock mehr"? Hey, schreib einmal ne Anleitung dafür, und zwar "für absolute Neulinge, die genau null Plan haben, ausführlich, jeder einzelne Schritt". Die kommt dann auf unsere Hauptseite, wenn Du magst mit Deinem Namen darunter, verlink dann einfach darauf. Die Option besteht immer - und ja, wirklich auch für Dinge, die Menschen, die sich schon nen Monat damit beschäftigt haben, wissen. Neulinge wissen diese nicht, und nicht alle Menschen haben Zeit und Nerv, sich erst reinzuarbeiten.

Und ja, "was wähle ich in Automatisierungen aus welchem Grund" wäre durchaus einen kleinen Text wert, @u5zzug.

---

@Mercyful ist sichergestellt, dass die gewünschten Daten auch in der erwarteten Art übermittelt werden? Falls nicht, nochmal konvertieren mittels | int - hin und wieder sind Dinge, die int erwarten, etwas mucksch, wenn sie string bekommen.
 
Zuletzt bearbeitet:
Mist, ich bekomme es einfach nicht hin dass ich einen Zustand (hier eine Zahl die die Behanghöhe der Jalousie angibt) in eine Variable zu übergeben.
In den Entwicklerwerkzeugen -> Template zeigt mir das Ergebnis bei
YAML:
Position ist: {{state_attr("cover.dj_oase_jalousie", "current_position")}}
die korrekte Position an.
Wenn ich dieses Argument in einer Automatisierung (s.o.) anwenden möchte, kann ich dieses gar nicht erst speichern. Auch eine Konvertierung zu einem int bringt keinen Erfolg. Die zu füllende Variable (Helfer) bleibt einfach leer.
Was mache ich da falsch? Es ist zum Haare raufen :-(
 
Ich hoffe ich versteh Dein Problem richtig, dann mußt Du es in der Automation als YAML code eintragen.
Das geht aber, soweit ich weiß, nicht in der GUI.
Du öffnest die Automation wie gewohnt, legst den Diesnt in dem Du den Wert lesen bzw. zuweisen willst und schaltest dan auf YAML um.
Dort träst Du dann obige Zeile ein.

Beispiel: In meinem Fall die Zuweisung an ein input_select.

dienst.jpg
 
Hallo HaUsr23!
Danke für deine Antwort!

Ich versuche mal das Problem detaillierter zu beschreiben.
Ich habe einen Helfer vom Type Nummer mit Namen
YAML:
i_dj_oase_jalousie_level
erstellt, da dieser Helfer eine Zahl im Bereich 0 - 100 aufnehmen soll.
HA legt daraufhin eine Entität namens
YAML:
input_number.i_dj_oase_jalousie_level
an.
Diese Entität (Helfer)
YAML:
input_number.i_dj_oase_jalouse_level
soll nach einem Ereignis (vereinfacht das Drücken eines Schalters für Testzwecke) den Wert der Entität
YAML:
cover.dj_oase_jalousie
annehmen, also übergeben bekommen.
Dazu habe ich eine Automation angelegt, die nach Drücken des virtuellen Schalters den Wert der Jalousie holen und an den Helfer übergeben soll
YAML:
# virtueller Schalter
alias: 999 Jalousien.Cover to int_Variable
description: "ein virtueller Schalter der ein Event auslösen soll wenn der Zustand auf OFF geht"
trigger:
  - platform: state
    entity_id:
      - input_boolean.999_helper_switch
    from: "on"
    to: "off"
action:
# was soll geholt werden
  - service: input_select.select_option
    data:
      option: "{{state_attr('cover.dj_oase_jalousie', 'current_position')}}"
# wohin soll es geschrieben werden
    target:
      entity_id: input_selection.i_dj_oase_jalousie_level
mode: single
Leider wird der Wert nicht in den Helfer geschrieben, ich kann, mangels Wissen in HA, auch keinen Tracert oder ähnliches benutzen um zu prüfen ob überhaupt irgendetwas übergeben wird.
Wozu das Ganze? Jalousien sollen nach automatischer Beschattung wieder auf die ursprüngliche Höhe gefahren werden.
Hast Du evtl. einen Tipp was ich nicht richtig mache?
Danke und schöne Grüße
Mercy
 
geh in die Entwicklertools -> Service und probier es dort aus
hast du das mal gemacht? Zu deutsch Entwicklertools -> Dienste.
Da wirst du zumind. merken, dass man ein input_number nicht mit input_select.xxx ändern kann - das geht nicht!!! Tipp number ein und guck was es dir anbietet, statt wild vermengtes yaml zu schreiben.

Und das gibt es auch nicht: input_selection.i_dj_oase_jalousie_level

Eigentlich solltest du in deinem Log einen Haufen Fehlermeldungen vorfinden.
 
Moin u5zzug!
Ich habe in den Entwicklertools -> Template dieses eingetippt
YAML:
Position ist: {{state_attr("cover.dj_oase_jalousie", "current_position") | int}}
und als Ergebnis sehe ich im rechten Fenster den Wert den die Jalousie hat. Da wird, wenn ich das richtig verstanden habe, das Attribut der Entität cover.dj_oase_jalousie angezeigt. Tja, und nun stehe ich wie der Ochs vorm Berg und weiß nicht weiter. Das ist im Moment das einzige Problem dass ich noch habe, alles andere konnte ich vom ioBroker bisher in HA umsetzen.
Dein Tipp in den Entwicklerwerkzeugen -> Dienste ist für mich nicht nachvollziehbar.
Als Dienst "Nummer" eingegeben und als Vorschlag "number.Set_value (Nummer festlegen)" erhalten.
Als Ziel wollte ich die Entity i_dj_oase_jalousie_level nehmen, wird mir nicht angeboten. Stattdessen diverse "number.xxxx"
Da fehlen mir deutlich mehr Infos als Du sie preis gibst. Wie der Mod schon schrieb, ein wenig mehr Text (oder mal ein Beispiel) ist hilfreich, aber das kommt von die leider nicht. Nun gut, ich geb vorerst auf und bleibe beim ioBroker, vielleicht erbarmt sich ja ein anderer Mensch mit Wissen um HA der mir brauchbarere Tipps gibt und nicht nur einen Happen vorwirft.
 
Ohne das jetzt genau getestet zu haben, aber wie wäre es den, wenn Du im Aktion Teil einer Variablen die Position des Rollo zuweist.
Code:
variables:
  Rollo_Position: value:{{ state_attr('cover.dj_oase_jalousie','current_position') }}
Und in einem zweiten Aktion Abschnitt kannst Du die Variable ja wieder irgendwem zuweisen.

Wie gesagt, ist nur gerade so ein Gedankengang von mir, ohne es ausgiebig getestet zu haben.
 
Du schreibst Datentypen vor entity Namen, aber du wirfst die Helfertypen wild durcheinander.
Ein input_number ist was anderes als number.
Was vor dem Punkt steht, ist nicht austauschbar.
Äh - ich hab nur num eingegeben, dann kommt auch ein numerischer Input.

Ich wüsste nicht, wozu du variable: brauchst.
 
Zuletzt bearbeitet:
anbietet, statt wild vermengtes yaml zu schreiben.
Kurz nebenbei bemerkt, ich schreibe kein vermengtes yaml Zeugs. Ich versuche mit der UI meine Wünsche zu generieren und da diese UI nicht einfach abbildbar sind hier, poste ich den dort erzeugten yaml Code. Ja, und ich versuche anhand diverser Dokumentationen das Problem zu lösen, und da ist eben auch hier und da mal der Hinweis dass der yaml code im yaml Editor anzupassen ist.
Mehr mache ich nicht.
 
@Mercyful vielleicht als Gedankenansatz - wenn Du sagst, Du hast einen Helfer input_number.i_dj_oase_jalousie_level angelegt, dann benötigst Du den Dienst input_number.set_value - das muss immer zusammenpassen.

Wenn Du bei den Diensten in den YAML-Editor gehst und diesen Code ausführst:
YAML:
service: input_number.set_value
target:
  entity_id: input_number.i_dj_oase_jalousie_level
data:
  value: "{{ state_attr('cover.dj_oase_jalousie', 'current_position') | int }}"
sollte der Wert in dem Helfer landen.
 
Du schreibst Datentypen vor entity Namen, aber du wirfst die Helfertypen wild durcheinander.
Ein input_number ist was anderes als number.
Was vor dem Punkt steht, ist nicht austauschbar.
Äh - ich hab nur num eingegeben, dann kommt auch ein numerischer Input.

Ich wüsste nicht, wozu du variable: brauchst.
Scheinbar liest du meine Posts nicht richtig oder bis zum Ende.
Ich benötige eine Möglichkeit einen Cover State einer Jalousie in eine wieder verwendbare Variable zu schreiben damit diese Jalousie nach einem Ereignis wieder in die Ursprungslage gefahren wird.
Nochmal:
Eine Jalousie ist nicht ganz geöffnet und das Attribut hat den Wert current_position: 90, also fast komplett geöffnet.
Ein Ereignis, nehmen wir mal eine Beschattung, schließt die Jalousie auf 10 Prozent damit die Sonne nicht voll in den Raum scheint aber dennoch Licht in den Raum gelangt. Dann hat das Attribut current_postion den Wert: 10
Bevor die Jalousie geschlossen wird, soll die aktuelle Position (90) in eine, nennen wir es Variable, geschrieben werden.
Wenn die Beschattung beendet wird, soll die Jalousie wieder in die ursprüngliche Position von 90 gefahren werden. Dieser Wert der ursprünglichen Position ist nicht fix, da dieser der Benutzerin geändert werden kann, je nachdem was sie möchte.
Und genau hier hänge ich fest. Ich kenne es aus der Softwareentwicklung dass ich Werte von Variablen durch ein = Zeichen zuweisen kann.
dies_ist_eine_variable = 12, hier hat die Variable den Wert 12 (richtige Deklaration als Datentyp int ist gegeben)
Um jetzt den Wert von dies_ist_eine_variable (12) der Jalousieposition zuzuweisen müsste es doch reichen wenn ich
YAML:
{{ state_attr('cover.dj_oase_jalousie', 'current_position') }} = dies_ist_eine_variable
einsetze.
Leider bekomme ich das eben nicht hin und hier wäre es wirklich hilfreich wenn es konkrete Beispiele oder Hinweise auf Dokumentationen gibt, anstatt immer wieder die Leier "du machst das oder dieses falsch" zu schreiben.
Daher meine Bitte an dich: Wenn du nichts konstruktives beizutragen hast was mir wirklich weiter hilft, dann lass es bitte einfach, deine Posts verwirren mich nur!
Danke!
Schöne Grüße
Mercy
 
Ich kenne es aus der Softwareentwicklung dass ich Werte von Variablen durch ein = Zeichen zuweisen kann.
dies_ist_eine_variable = 12
Das funktioniert hier auch, aber nur bei eigenen Variablen - also beispielsweise (unter Template auszutesten) so:
YAML:
{% set var_xyz = 12 + 4 %}
{{ var_xyz }}

Bei Helfern musst Du, wie oben geschrieben, immer die zugehörigen Dienste verwenden, eine Zuweisung mittels = ist hier nicht möglich.
 
@Mercyful vielleicht als Gedankenansatz - wenn Du sagst, Du hast einen Helfer input_number.i_dj_oase_jalousie_level angelegt, dann benötigst Du den Dienst input_number.set_value - das muss immer zusammenpassen.

Wenn Du bei den Diensten in den YAML-Editor gehst und diesen Code ausführst:
YAML:
service: input_number.set_value
target:
  entity_id: input_number.i_dj_oase_jalousie_level
data:
  value: "{{ state_attr('cover.dj_oase_jalousie', 'current_position') | int }}"
sollte der Wert in dem Helfer landen.
Hallo Nival!
Vielen Dank für deine Hilfe. Wenn ich diese Zeilen unter den Entwicklerwerkzeugen -> Dienste eintrage und ausführe, dann wird der aktuelle Wert in die Variable i_dj_oase_jalousie_leel geschrieben. Das kann ich über die Zustände in den Entwicklerwerkzeugen auch sehen. Das ist schon mal ein großer Schritt in die für mich richtige Richtung.
Jetzt habe ich wieder einen Anhaltspunkt um weiter in der Doku zu lesen wie ich das in meinen Code einfüge um es zum laufen zu bringen.
Vielen Dank!
Schöne Grüße
Mercy
 
wie ich das in meinen Code einfüge
Das kannst Du genau so rauskopieren, und bei einer Automatisierung als "Aktion" einfügen (wenn Du den YAML-Code editierst) - rein über die GUI dürfte es nicht machbar sein, weil (um an den Wert zu kommen) Templates verwendet werden, das gibt dann eine Meldung wie "Templates werden im visuellen Editor nicht unterstützt".
 
Diese Variablen sind mWn nur vorübergehend innerhalb der Automation/des Templates gültig, die benutzt man, wenn man einen Wert berechnet, den man an mehreren Stellen braucht oder wegen der Lesbarkeit.
Für deinen Anwendungsfall -> Helfer = du brauchst kein variables:
 
Ist richtig, wollte es dennoch der Vollständigkeit halber erwähnen - eben diese Differenz zwischen Variable und Helfer. Wenn @Mercyful von Softwareentwicklung schreibt wird ohnehin klar sein, dass Variablen ohne gesonderte Definition als global / systemweit / wie auch immer ihren Wert nach Scriptdurchlauf verlieren.
 
Diese Variablen sind mWn nur vorübergehend innerhalb der Automation/des Templates gültig, die benutzt man, wenn man einen Wert berechnet, den man an mehreren Stellen braucht oder wegen der Lesbarkeit.
Für deinen Anwendungsfall -> Helfer = du brauchst kein variables:
Moin!
Ja, das sind viele neue Begrifflichkeiten für mich. Ich dachte immer dass Helfer = Variable.
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
4.638
Beiträge
47.422
Mitglieder
4.287
Neuestes Mitglied
Derabu1
Zurück
Oben