Witajcie,
Szukam sposobu na dodawanie wydarzeń do kalendarza Google z poziomu node-red. Próbowałem kilku rozszerzeń, ale na razie bez sukcesu. Za każdym razem mam problem na etapie autentykacji.
Może ktoś z Was ma działające rozwiązanie?
Pozdrawiam,
Marcin
Jeżeli masz integracje kalendarza w HA to autoryzacje już posiadasz i można skorzystać z call service
Domain: google service add_event, create_event .
A wiesz moze jak pominąć dodawanie daty, czasu w tej automatyzacji ? Chce aby HA dodawal event na podstawie golokalizacji. Zawsze kiedy jestem w obszarze praca w tym dniu i konkretnej godzinie zeby dodal wpis do kalendarza. Jesli musze ustawic date lub czas to wpisy beda na zdefiniowanej dacie lub czasie.
Niektórych rzeczy nie da się pominąć bo są wymagane w API
Chcesz dokonać wpisu w kalendarzu bez podania czasu? Może jakiś notatnik byłby lepszy.
Właśnie chce podac czas ale nie date. Data bedzie dzien w którym bede w pracy czyli za kazdym razem inna. W opcjach zeby wyzwolic “add event* lub " create event” musze ustawic date lub date i czas lub dzien. Nie ma samego “time”. Ten wpis w kalendarzu chce zeby mi przypominal o pewnej czynnosci ktora musze wykonac za kazdym razem o okreslonej porze gdy jestem w pracy. W pracy jestem w nieregularnych dniach wiec wpis nie potrzebny kiedy mam wolne stad automatyzacja na podstawie zmiany strefy. Dodatkowo ulatwiloby mi rozliczenie z pracodawca bo sprawdze sobie w kalendarzu kiedy bylem w pracy.
Dzięki,
u mnie działa i robi to, co potrzebuje
Mario_Marecky
Ja u siebie ściągam aktualną datę w nodzie function. Tam tworzę cały string z niezbędnymi danymi, który potem przekazuje do w msg.payload do noda call service i dalej tak jak Artur napisał, czyli:
domain: google
service: add_event
data: {{{payload}}}
Mógłbyś podeslc flow?
Tak to wygląda:
[{"id":"abcc8e73b2e51ef6","type":"debug","z":"2d3bc166df3a87c4","name":"debug 7","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":560,"y":280,"wires":[]},{"id":"2c002053b775e7b8","type":"inject","z":"2d3bc166df3a87c4","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":140,"y":300,"wires":[["f7f1e07e16014b61"]]},{"id":"043fe2ac788d91f8","type":"api-call-service","z":"2d3bc166df3a87c4","name":"","server":"58eb3e98.b504f","version":5,"debugenabled":true,"domain":"google","service":"add_event","areaId":[],"deviceId":[],"entityId":[],"data":"{{{payload}}}","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":370,"y":380,"wires":[["abcc8e73b2e51ef6","d6adbfbf5288e494"]]},{"id":"f7f1e07e16014b61","type":"function","z":"2d3bc166df3a87c4","name":"function 2","func":"var states = global.get('homeassistant.homeAssistant.states');\n\nvar filtr1 = states[\"input_boolean.proud_czyszczenie_filtra_wewnetrznego\"].state;\nvar filtr2 = states[\"input_boolean.proud_czyszczenie_filtra_zewnetrznego\"].state;\nvar wegiel = states[\"input_boolean.proud_wymiana_wegla\"].state;\nvar butla = states[\"input_boolean.proud_wymiana_butli_co2\"].state;\n\nvar title = \"\";\nvar desc = \"\";\n\nvar czynnosci = 0;\n\ntitle = \"Proud - Serwis - Zrobiony\"\n\nif (filtr1 == \"on\") {\n desc += \" - Czyszczenie filtra wewnętrznego\\\\n\";\n czynnosci++;\n}\nif (filtr2 == \"on\") {\n desc += \" - Czyszczenie filtra wewnętrznego\\\\n\";\n czynnosci++;\n} \nif (wegiel == \"on\") {\n desc += \" - Wymiana węgla\\\\n\";\n czynnosci++;\n}\nif (butla == \"on\") {\n desc += \" - Wymiana butli\\\\n\";\n czynnosci++;\n}\n\nif (czynnosci == 0) { \n desc = \"Brak dodatkowych czynności do odnotowania\"; \n}\n\n\nconst d = new Date().toISOString().substr(0, 19).replace('T', ' ');\nvar start_time = d;\n\nconst d2 = new Date();\nvar end_time = d2.setTime(d2.getTime() + 2 * 60 * 60 * 1000);\nend_time = new Date(end_time).toISOString().substr(0, 19).replace('T', ' ');\n\nvar result;\n\nresult = \"{\"; \nresult += \"\\\"calendar_id\\\":\\\"id_kalendarza@group.calendar.google.com\\\",\";\nresult += \"\\\"summary\\\":\\\"\" + title + \"\\\",\";\nresult += \"\\\"description\\\":\\\"\" + desc + \"\\\",\";\nresult += \"\\\"start_date_time\\\":\\\"\" + start_time + \"\\\",\";\nresult += \"\\\"end_date_time\\\":\\\"\" + end_time + \"\\\"\" ;\nresult += \"}\";\n\nmsg.payload = result;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":180,"y":200,"wires":[["38646699089fe0bd"]]},{"id":"d18f48282484a7ed","type":"debug","z":"2d3bc166df3a87c4","name":"debug 8","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":520,"y":180,"wires":[]},{"id":"38646699089fe0bd","type":"json","z":"2d3bc166df3a87c4","name":"","property":"payload","action":"str","pretty":true,"x":330,"y":120,"wires":[["d18f48282484a7ed","043fe2ac788d91f8"]]},{"id":"d6adbfbf5288e494","type":"api-call-service","z":"2d3bc166df3a87c4","name":"","server":"58eb3e98.b504f","version":5,"debugenabled":false,"domain":"input_boolean","service":"turn_off","areaId":[],"deviceId":[],"entityId":["input_boolean.proud_czyszczenie_filtra_wewnetrznego","input_boolean.proud_czyszczenie_filtra_zewnetrznego","input_boolean.proud_wymiana_butli_co2","input_boolean.proud_wymiana_wegla"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":660,"y":360,"wires":[[]]},{"id":"ca940614412d6cc0","type":"server-state-changed","z":"2d3bc166df3a87c4","name":"","server":"58eb3e98.b504f","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_button.proud_serwis_zrobiony","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":true,"ignorePrevStateUnknown":true,"ignorePrevStateUnavailable":true,"ignoreCurrentStateUnknown":true,"ignoreCurrentStateUnavailable":true,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":230,"y":40,"wires":[["f7f1e07e16014b61"]]},{"id":"58eb3e98.b504f","type":"server","name":"Home Assistant","version":5,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":30,"areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m","enableGlobalContextStore":true}]