Hilfe bei Add On Integration von Smart Friends - wohin welcher Code?

Barry Ricoh

Active member
Hallo Forum,
ich versuche mich an der Integration von Smartfriends Rollos.
Da sind ganz schön viel unbekannte Ecken.
Es gibt 2 Möglichkeiten der Integration: über REST-API oder MQTT
Da ich nur 2 Rollos habe, möchte ich die REST API wählen, erscheint mir einfacher, da ich von mqtt auch (noch) keine Ahnung habe.
Es ist ein Code Beispiel dabei das ich auch schon auf meine Konfiguration angepasst habe,
ABER ----
Ich weiß nicht wo ich den Code eingeben muss, habe schon alles mögliche probiert, aber keine wurde vom System ohne diverse Fehlermeldungen akzeptiert.
Hier das Beispiel aus der Doku:

YAML:
shell_command:
    shutter_up:        "curl http://127.0.0.1:5001/set/{{ device_id }}/rollingShutter/up"
    shutter_down:      "curl http://127.0.0.1:5001/set/{{ device_id }}/rollingShutter/down"
    shutter_stop:      "curl http://127.0.0.1:5001/set/{{ device_id }}/rollingShutter/stop"
    shutter_position:  "curl http://127.0.0.1:5001/set/{{ device_id }}/position/{{ 100 - position }}"

sensor:
  - platform: command_line
    name: shutter_position_office
    command: "curl http://127.0.0.1:5001/get/10433/position"
    unit_of_measurement: "%"
    scan_interval: 5
    value_template: '{{ 100 - value_json.currentValue }}'

cover:
  - platform: template
    covers:
      shutter_office:
        friendly_name: "Shutter - Office"
        device_class: shutter
        position_template: "{{ states('sensor.shutter_position_office') }}"
        open_cover:
          service: shell_command.shutter_up
          data:
            device_id: 10433
        close_cover:
          service: shell_command.shutter_down
          data:
            device_id: 10433
        stop_cover:
          service: shell_command.shutter_stop
          data:
            device_id: 10433
        set_cover_position:
          service: shell_command.shutter_position
          data_template:
            device_id: 10433
            position: "{{ position }}"

Und das habe ich daraus gemacht:

YAML:
shell_command:
    wohnzimmer_shutter_up:        "curl http://127.0.0.1:5001/set/{{ 11291 }}/rollingShutter/up"
    wohnzimmer_shutter_down:      "curl http://127.0.0.1:5001/set/{{ 11291 }}/rollingShutter/down"
    wohnzimmer_shutter_stop:      "curl http://127.0.0.1:5001/set/{{ 11291 }}/rollingShutter/stop"
    wohnzimmer_shutter_position:  "curl http://127.0.0.1:5001/set/{{ 11291 }}/position/{{ 100 - position }}"


sensor:
  - platform: command_line
    name: wohnzimmer_rollo_position
    command: "curl http://127.0.0.1:5001/get/11291/position"
    unit_of_measurement: "%"
    scan_interval: 5
    value_template: '{{ 100 - value_json.currentValue }}'

cover:
  - platform: template
    covers:
      wohnzimmer_rollo:
        friendly_name: "Wohnzimmer Rollo"
        device_class: shutter
        position_template: "{{ states('sensor.wohnzimmer_rollo_position') }}"
        open_cover:
          service: shell_command.wohnzimmer_shutter_up
          data:
            device_id: 11291
        close_cover:
          service: shell_command.wohnzimmer_shutter_down
          data:
            device_id: 11291
        stop_cover:
          service: shell_command.wohnzimmer_shutter_stop
          data:
            device_id: 11291
        set_cover_position:
          service: shell_command.wohnzimmer_shutter_position
          data_template:
            device_id: 11291
            position: "{{ position }}"

Aber wo muss das rein?

In der configuration.yaml wird das so nicht akzeptiert.

Bestimmt kann mir jemand weiterhelfen.

Vielen Dank im Voraus.
 
Wo hast Du denn das Beispiel her?

Wenn Du das in eine bereits bestehende configuration.yaml hineinkopiert hast könnte es Probleme geben mit einem doppelten Eintrag von sensor:, so ein solcher schon vorhanden war - ansonsten sehen die Einträge schon so aus, als dürften sie dort landen.
 
Also eigentlich habe ich für diese Festlegungen jeweils eine eigene YAML Datei.
So auch für Templates.
Jetzt ist die Frage: kommt der „Cover“
In eine „Cover.yaml“ oder in die „Template.yaml“?
🤔
Ich hätte die eher in die Template.yaml gelegt weil dort ja auch zB Template Sensoren sind.
 
https://www.home-assistant.io/integrations/cover.template/ -> "Template Cover", würde ich fast behaupten, dass es vermutlich ganz gut in der template.yaml aufgehoben wäre (auf der Seite ist wiederum die Rede von "configuration.yaml"). Aber ich hab eh keine Ahnung... vermutlich kannste Dir auch einfach eine cover.yaml erstellen, in der configuration.yaml den Verweis auf diese via "include" hinterlegen und dann sollte das auch funktionieren 🙃
 
Also kann man solch einen Eintrag (Sensor oder Template oder …..) nur einmal haben in seiner Konfiguration?
Ja, aber die Einträge die "dadrunter" gelistet sind dürfen mehrfach vorkommen.

Das gilt afaik für alle Einträge, die nicht eingerückt sind, dürfte also z.B. cover: genauso betreffen, nur, dass sensor: eben sehr häufig bereits in der configuration.yaml vorkommt / damit in solchen Fällen eine häufige Fehlerquelle ist.

Wenn Du den Codeblock ab - platform: command_line (eingerückt wie jetzt) unter die vermutlich vorhandenen anderen Einträge unterhalb von sensor: kopierst sollte das zumindest diese Fehlerquelle eliminieren.

Ob cover: in eine andere Datei ausgelagert werden kann weiß ich nicht, würde das auch vorerst einfach mal in der originalen probieren und erst wenn das läuft schauen, was wohin ausgelagert werden kann.
 
Ja so einfach hatte ich mir das auch vorgestellt, aber irgendwie klappt das nicht so.
Vielleicht ist das aber auch wieder so ein Leerzeichen Problem.
Ich bin aber etwas weiter, und hatte den Sensor in die Sensor.yaml verbannt, und das Cover und die Shell Commands in der configuration.
So läuft es.
Es hat sich rausgestellt das ich den Sensor nicht brauche, weil mein Rollo keine Positionen meldet.
Jetzt versuche ich das Cover mal noch in die Template.yaml zu verschieben.
Wenn man weiß das die Kopplung prinzipiell läuft muss man dann beim Verschieben hauptsächlich auf die Formatierung achten.
 
Und immer mal gucken, wie alt die Beispiele sind. Ich meine mich zu erinnern, dass jetzt template -> platform: cover bevorzugt wird gegenüber cover -> platform: template.
Also immer hübsch die Doku der Integratiorn zu Rate ziehenund hoffen, dass sie aktuell ist.
 
Ich habe jetzt den Code in die template.yaml verschoben, und bekomme immer den Fehler:

Logger: homeassistant.config
Source: config.py:974
First occurred: 14:30:03 (1 occurrences)
Last logged: 14:30:03

Invalid config for [template]: [cover] is an invalid option for [template]. Check: template->cover. (See /config/configuration.yaml, line 24).

YAML:
cover:
  - platform: template
    covers:
      wohnzimmer_rollo:
      unique_id: "Wohnzimmer Rollo"
      friendly_name: "Wohnzimmer Rollo"
      device_class: shutter
#        position_template: "{{ states('sensor.wohnzimmer_rollo_position') }}"
      open_cover:
        service: shell_command.shutter_up
        data:
          device_id: 11291
      close_cover:
        service: shell_command.shutter_down
        data:
          device_id: 11291
      stop_cover:
         service: shell_command.shutter_stop
         data:
           device_id: 11291


Auch wenn ich die 2 Zeilen weglasse, ändert das nichts

YAML:
cover:
  - platform: template
 
Mal mit ner cover.yaml (einbinden nicht vergessen!) und dann ab - platform: template versucht?
 
Wenn du

template:
irgendwas:

hast und machst ein

template: include...

lässt du im include.yaml das template: weg und rückst alles zwei Zeichen weniger ein.
Von daher kannst du nicht irgendwas irgendwohin schreiben oder weglassen.
Du kannst, was unter template gehört, nicht unter cover eintragen und umgekehrt.
 
So ich habe es dank eurer Hilfe hinbekommen.
Und zwar so sieht es jetzt aus:

Configuration.yaml
YAML:
#Cover
cover: !include include/cover.yaml

shell_command:
    shutter_up:        "curl http://127.0.0.1:5001/set/{{ device_id }}/rollingShutter/up"
    shutter_down:      "curl http://127.0.0.1:5001/set/{{ device_id }}/rollingShutter/down"
    shutter_stop:      "curl http://127.0.0.1:5001/set/{{ device_id }}/rollingShutter/stop"

cover.yaml
YAML:
  - platform: template
    covers:
      wohnzimmer_rollo:
        friendly_name: "Wohnzimmer Rollo"
        unique_id: "Wohnzimmer Rollo"
        device_class: shutter
        open_cover:
          service: shell_command.shutter_up
          data:
            device_id: 11291
        close_cover:
          service: shell_command.shutter_down
          data:
            device_id: 11291
        stop_cover:
          service: shell_command.shutter_stop
          data:
            device_id: 11291


Vielleicht hilft es ja dem einen oder anderen mal.

Und wir lesen uns beim nächsten Problem: Energy Board. ;)
 

Letzte Anleitungen

Statistik des Forums

Themen
4.380
Beiträge
45.241
Mitglieder
3.982
Neuestes Mitglied
ThomasW
Zurück
Oben