Sterowanie roletami poprzez Node-RED Google Assistant Bridge

Witam
Przez cały weekend próbowałem opanować sterowanie roletą z wykorzystaniem Node-RED Google Assistant Bridge (Nody google-home i google-home-response) ale przerosło mnie to :frowning:
Komuś może się udało?
tzn. nie mam problemu z wysterowaniem poziomu otwarcia z GH, natomiast nie mogę sobie poradzić z komunikacją w drugą stronę (google-home-response), tak żeby GH dostał właściwy poziom otwarcia w momencie gdy steruje roletami z poziomu HA

Jakieś hinty/przykłady?

z góry dzięki

Masz włączone raportowanie stanów i udostępnione encje dla GH :thinking:

hmmmmm, prawdę mówiąc nie wiem… a co gorsze nie wiem gdzie to sprawdzić, nie moge znaleźć takiej opcji w HA :frowning:

Ustawienia ⇾ Home Assistant Cloud ⇾ Asystent Google ⇾

Włącz raportowanie stanów
Jeśli włączysz raportowanie stanów, 
Home Assistant wyśle wszystkie zmiany stanu udostępnionych encji na serwery Google. 
Przyspiesza to wykonywanie komend głosowych i 
zawsze możesz zobaczyć najnowsze stany w aplikacji Google.

A co to ma do mojego pytania??
Nie mam Home Assistant Cloud…
Pytałem o Node-RED Google Assistant Bridgen:)

Ale dzięki za chęci :slight_smile:

W jaki sposób zintegrowałeś Home Assistant z Google Assistant-em?

Koledzy, proszę o czytanie ze zrozumieniem… ja pytam o sterowanie poprzez GH z wykorzystaniem NR, a nie o bezpośrednie sterowanie HA…
Sterowanie nie jest jakieś super intuicyjne, ale działa bez większych opóźnień i to najważniejsze
Nie mam w żaden sposób bezpośrednio zintegrowanego HA, bo nie mam publicznego IP, a nie że samo sterowanie głosowe traktuje raczej jako zabawkę niż realną potrzebę to nie widzę też sensu płacenia 6,5$ miesięcznie za chmurę HA.

To nie trzeba tego podpiąć pod Google Home app ?

@Robert_Król
Nody google-home i google-home-response nie obsługuje poziomu otwarcia

Traits:

  • OnOff
  • Brightness
  • ColorSetting
  • FanSpeed
  • TemperatureSetting
  • OpenClose ⇐ tylko Open/Close
  • CameraStream

oczywiście że trzeba, ale nie poprzez HA a poprzez integrację którą wcześniej podawałem

Edit:

@artpc Obsługują \o/
wczoraj udało mi się to opanować, mogę zarówno z poziomu HA, jaki z poziomu GH (również głosowo) sterować roletami. Mam też ogarnięte sprzężenie zwrotne, tzn. zmieniając ustawienie poprzez GH zmienia się wartość w HA i co ważniejsze odwrotnie.
Podsumowując, bez problemu działa mi komenda głosowa “set blinds 50%” \o/

@Robert_Król jak będziesz miał ogarnięte to podziel się proszę flow i opisz dla wszystkich.

Proszę bardzo

[{"id":"f02625c8db8fa366","type":"google-home","z":"b50b6131c6bfd935","conf":"bb4d89d0.814208","device":"21466","acknowledge":true,"name":"roleta","topic":"","x":270,"y":220,"wires":[["1dd38cb3060ba221"]]},{"id":"379c7dce7235317d","type":"google-home-response","z":"b50b6131c6bfd935","conf":"bb4d89d0.814208","device":"21466","name":"Roleta","x":890,"y":340,"wires":[]},{"id":"7080dae7e6e5955b","type":"server-state-changed","z":"b50b6131c6bfd935","name":"Roleta Open","server":"d5fc27fd.c95118","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"cover.roleta_salon","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"open","halt_if_type":"str","halt_if_compare":"is","outputs":2,"output_only_on_state_change":true,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"}],"x":150,"y":340,"wires":[["d76f1ba888cd3409"],[]]},{"id":"7eb724b5d88a3ad4","type":"api-call-service","z":"b50b6131c6bfd935","name":"Roleta","server":"d5fc27fd.c95118","version":5,"debugenabled":false,"domain":"cover","service":"set_cover_position","areaId":[],"deviceId":["b041a8576e2c6139b274cbfd5d0eedcb"],"entityId":["cover.roleta_salon"],"data":"{\"position\":\"{{pozycja}}\"}","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":650,"y":220,"wires":[[]]},{"id":"1dd38cb3060ba221","type":"function","z":"b50b6131c6bfd935","name":"Pozycja","func":"var pozycja = msg.payload.params.openPercent;\n\nmsg.pozycja = pozycja;\n\n//return['jasnosc','barwa'];\nreturn msg;\n\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":460,"y":220,"wires":[["7eb724b5d88a3ad4"]]},{"id":"5fea8e4ab5f05b78","type":"function","z":"b50b6131c6bfd935","name":"","func":"var Newmsg3 = { \"payload\" : {\"command\": \"action.devices.commands.OpenClose\", \"params\" : {\"openPercent\": 100} } }\nvar pozycja = msg.data.attributes.current_position\n\nNewmsg3.payload.params.openPercent = pozycja;\n\n\nreturn Newmsg3;\n\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":720,"y":340,"wires":[["379c7dce7235317d"]]},{"id":"dae705cae21775cd","type":"api-current-state","z":"b50b6131c6bfd935","name":"Roleta stan","server":"d5fc27fd.c95118","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"cover.roleta_salon","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":550,"y":340,"wires":[["5fea8e4ab5f05b78"]]},{"id":"d76f1ba888cd3409","type":"delay","z":"b50b6131c6bfd935","name":"","pauseType":"delay","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":360,"y":340,"wires":[["dae705cae21775cd"]]},{"id":"bb4d89d0.814208","type":"google-home-conf","username":"rkarolek"},{"id":"d5fc27fd.c95118","type":"server","name":"Home Assistant","version":2,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":30}]

myślę że flow jest tak prosty że nie trzeba tłumaczyć, największy problem miałem z zapisem funkcji response, ale udało się

Pytanko - w tych nodach nie da się odczytać urządzeń, które już są zintegrowane GH? A nie ma ich w HA?

Nie bezpośrednio. Nod - Google-home, odczytuje tylko urządzenie dodane do “bridge”.
Krótko tym z ciekawości się pobawiłem i wydaje mnie się, że zasada tego “bridga” jest następująca : tworzysz “wirtualne” urządzenie na stronie Mostek Asystenta Google Node-RED i urządzenie jest widoczne w GH (po dodaniu NR-GAB), następnie w NR (w HA) możesz odczytać stan tego urządzenia (nod: Google-home). Zmiana stanu (ręcznie lub głosowo {u mnie tylko po angielsku} jest widoczna w NR, dalej to możesz wysłać do HA. Sytuacja kiedy zmieniasz stan w HA to z NR wysyłasz stosowną komendę nodem : Google-home-response, który aktualizuje stan w GH.

Stan innych urządzeń: mam np. gniazdko gosunda (bez możliwości przejścia na tasmotę) więc sobie wisi na GH, aby go zobaczyć w HA, stworzyłem w GH automatyzację → jak gosund ON to testowy ON, jak OFF to OFF (testowy to ten dodany do “bridga”). To tyle z krótkiej dzisiejszej zabawy.

Z tym że u mnie roleta, wiec wartość 1-100%. Jeszcze kombinuję z Alexą, bo też się integruje, ale nie wiem, jak ją wpiąć pod NR, by widzieć urządzenia, które tam są. Z tego co zaobserwowałem, to Alexa prawidłowo u mnie odczytuje % położenia rolety, a GH tego nie robi. Pokazuje tylko czy otwarte, czy zamknięte. Taka ciekawostka. Inna sprawa, ze Alexa źle mi zakwalifikowała roletę jako oświetlenie i w appce nie mogę tego zedytować :wink: Pole type jest dla tego urządzenia nieklikalne. Nie wiem dlaczego.


Inaczej dziś do tego podchodzę, ale nadal mi nie działa. Zrobiłem sobie pomocnika input_number z zakresem 0-100. Czyli procentowy układ rolety. I robię automatyzację, która powinna wysyłać komendę do Google SDK przy każdej zmianie wartości. Wtedy to by mi działało i mógłbym w NR zmieniać wartość pomocnika tak jak chcę. Co tutaj jest nie tak, że nie reaguje na zmiany pomocnika:

alias: RoletaBalkon
description: ""
trigger:
  - platform: numeric_state
    entity_id: input_number.roletabalkon
    above: 0
    below: 100
condition: []
action:
  - service: google_assistant_sdk.send_text_command
    data:
      command: ustaw roletę balkon na {{input_number.roletabalkon}}
mode: single

Dodam, że kompletnie nie znam automatyki w HA, ani skryptów.