Encja switch z http

Witam

Proszę o podpowiedź w jaki sposób można przestawić daną encje typu switch za pomocą linky http://192.168.x.x/
Miałem taką funkcjonalność w domoticzu lecz w HA nie potrafię sobie z tym poradzić

Chodzi ci o switch po http:// ?

# przekazniki anita espswitch1
- platform: command_line
  switches:
  
    espswitch0:
      command_on: "curl -X GET 'http://192.168.1.58/control?cmd=relay,0,1'"
      command_off: "curl -X GET 'http://192.168.1.58/control?cmd=relay,0,0'"
      #command_state: "curl -X GET 'http://192.168.1.58/control?cmd=relay/'"
      value_template: "{{ value_json.status == '1' }}"
      #value_template: '{{ value_json["espswitch0"]["state"] == "on" }}'
      #friendly_name: espswitch0
    
    espswitch1:
      command_on: "curl -X GET 'http://192.168.1.58/control?cmd=relay,1,1'"
      command_off: "curl -X GET 'http://192.168.1.58/control?cmd=relay,1,0'"
     # command_state: "curl -X GET 'http://192.168.1.58/control?cmd=relay/'"
      value_template: "{{ value_json.status == '1' }}"
      #value_template: '{{ value_json["espswitch1"]["state"] == "on" }}'
      #friendly_name: espswitch1

Opcji jest kilka, nie przedstawiłeś szczegółów więc musisz sam wybrać, np.

Wydaje mi się, że autorowi chodziło o wywołanie encji po http, ale mogę się mylić :slight_smile:

Dla przykładu wywołanie z innego hosta:
curl -X POST -H ‘Authorization: Bearer twoj_token’ -H ‘Content-Type: application/json’ -d ‘{“entity_id”: “switch.lampka”}’ http://192.168.1.77:8123/api/services/switch/toggle

Dziękuje za zainteresowanie
Chodzi mi dokładnie o to by na urządzeniu shelly po wciśnięciu “long push” została przełączona jedna z encji. Mogę to zrobić jedynie za pomocą “switched url”.
Próbowałem uruchomić “long push” w samym NR ale nie poradziłem sobie bo mam jednak za małą wiedzę, więc pomyślałem, że wykonam to w ten sposób.

A gdzie jest ta “encja”? Źle opisałeś co chcesz zrobić i w jakich systemach. Spróbuj jeszcze raz, będzie prościej.

No to tak, chce aby po dłuższym naciśnięciu na wyłączniku podłączonym do shelly przełączyć switch w HA
Więc w samym interfejsie SHELLY mogę wpisać w polu “long push” url jaki ma być odpalony by włączyć tryb “home office”

innymi słowy w dowolnej przeglądarce jak wpisze w pasku adresu:
http://192.168.5.3/xxxxxx/turnON
to załączy mi przełącznik w HA

Aby to zrobić musisz podać token do autentykacji w HA, w ten sposób:

curl -k -X POST -H "Authorization: Bearer myVeryLoooo0ooOOOngAndSecretToken" -H "Content-Type: application/json" -d '{"entity_id": "switch.door_light"}' https://hass.example.org:8123/api/services/switch/turn_on

Szczegóły w dokumentacji HA - REST API | Home Assistant Developer Docs

A nie prościej skorzystać z integracji Shelly MQTT i automatyzacji HA - naciśnięcie “long push” generuje wiadomość mqtt (zakładam, że Shelly na oryginalnym oprogramowaniu publikuje takie zdarzenie), na podstawie której uruchamia się automatyzacja, która to załącza przełacznik w HA.

MQTT + NodeRED zadziałało, dzięki za podpowiedź

edit
tak to teraz wygląda (automat ON/OFF to pomocnik typu switch):

swiatlo z blokada longpush.json (7,7 KB)

Hmm :thinking: można i tak zakończyć opisywany na początku problem ale to niczego nie wnosi.

Odświeżam temat, potrzebuję zrobić pilot z HA po http. Jedna encja - jedna komenda http. Fajnie by było gdyby po włączeniu drugiej encji ta wcześniej włączona się wyłączyła tak abym widział aktualny stan zadania na urządzeniu. Czy ktoś pomoże?

Rozwiń temat lub podaj więcej szczegółów.

Za pomocą http uruchamiam poszczególne funkcje klimatyzatora i chciałbym aby w HA były dostępne te “przyciski” Chciałem to zrobić przez pomocnika - pole wyboru ale nie wiem jak dodać http
przykład:
21°C → http://192.168.3.102/cm?cmnd=
22°C → http://192.168.3.102/cm?cmnd=
off → http://192.168.3.102/cm?cmnd=

Musisz sobie zrobić switch coś na wzór tego

- platform: command_line
  switches:
  
    espswitch0:
      command_on: "curl -X GET 'http://192.168.1.58/control?cmd=relay,0,1'"
      command_off: "curl -X GET 'http://192.168.1.58/control?cmd=relay,0,0'"
      #command_state: "curl -X GET 'http://192.168.1.58/control?cmd=relay/'"
      value_template: "{{ value_json.status == '1' }}"
      #value_template: '{{ value_json["espswitch0"]["state"] == "on" }}'
      #friendly_name: espswitch0
    
    espswitch1:
      command_on: "curl -X GET 'http://192.168.1.58/control?cmd=relay,1,1'"
      command_off: "curl -X GET 'http://192.168.1.58/control?cmd=relay,1,0'"
     # command_state: "curl -X GET 'http://192.168.1.58/control?cmd=relay/'"
      value_template: "{{ value_json.status == '1' }}"
      #value_template: '{{ value_json["espswitch1"]["state"] == "on" }}'
      #friendly_name: espswitch1

    espswitch2:
      command_on: "curl -X GET 'http://192.168.1.58/control?cmd=relay,2,1'"
      command_off: "curl -X GET 'http://192.168.1.58/control?cmd=relay,2,0'"
     # command_state: "curl -X GET 'http://192.168.1.58/control?cmd=relay/'"
      value_template: "{{ value_json.status == '1' }}"
      #value_template: '{{ value_json["espswitch2"]["state"] == "on" }}'
      #friendly_name: espswitch2

    espswitch3:
      command_on: "curl -X GET 'http://192.168.1.58/control?cmd=relay,3,1'"
      command_off: "curl -X GET 'http://192.168.1.58/control?cmd=relay,3,0'"
    # command_state: "curl -X GET 'http://192.168.1.58/control?cmd=relay/'"
      value_template: "{{ value_json.status == '1' }}"
      #value_template: '{{ value_json["espswitch3"]["state"] == "on" }}'
      #friendly_name: espswitch3

po wpisaniu jak wyżej mam taki błąd:
Integration error: switches - Integration ‘switches’ not found.

Może zrób kartę pilota i dobierz pod przyciskiem usługę

Pewnie zmienił się zapis,

# Example configuration.yaml entry
switch:
  - platform: command_line
    switches:
      kitchen_light:
        command_on: switch_command on kitchen
        command_off: switch_command off kitchen

Ok, błędu się pozbyłem- literówka
Ale mam problem ponieważ moje http wykrywa jako błąd:
Error loading /config/configuration.yaml: while parsing a block mapping
in “/config/switches.yaml”, line 4, column 7
expected , but found ‘’
in “/config/switches.yaml”, line 4, column 71

Natomiast jeśli przerobie link np. w tiny.pl to HA nie wywala błędu i switch działa lecz komenda jest nie wykonywana

To wklej tu swój kod.

- platform: command_line
   switches:
     switch0:
      command_on: "curl -X GET 'http://192.168.3.102/cm?cmnd=IRHVAC:{"Vendor":"HAIER_AC_YRW02","Model":-1,"Mode":"Heat","Power":"On","Celsius":"On","Temp":20,"FanSpeed":"Auto","SwingV":"Low","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"Off","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}'"
      command_off: "curl -X GET 'http://192.168.3.102/cm?cmnd=IRHVAC:{"Vendor":"HAIER_AC_YRW02","Model":-1,"Mode":"Heat","Power":"Off","Celsius":"On","Temp":20,"FanSpeed":"Auto","SwingV":"Low","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"Off","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}'"
      value_template: "{{ value_json.status == '1' }}"