GPT lights

🧩 Syntax:
[{"id":"d1ffacfe9707aaf5","type":"tab","label":"Lights: Chat GPT color setting","disabled":false,"info":"","env":[]},{"id":"5dc68faaf78b40c1","type":"chatgpt","z":"d1ffacfe9707aaf5","name":"Chat GPT","API_KEY":"sk-xxx","Organization":"org-xxx","topic":"__EMPTY__","BaseUrl":"https://api.openai.com","x":1080,"y":120,"wires":[["a878c9fbeff819d9"]]},{"id":"90c003ffba205e79","type":"inject","z":"d1ffacfe9707aaf5","name":"Run","props":[],"repeat":"","crontab":"0 6-23 * * *","once":false,"onceDelay":0.1,"topic":"","x":330,"y":240,"wires":[["88adf7ade4f3ab96"]]},{"id":"2e8e3421dc8870b9","type":"debug","z":"d1ffacfe9707aaf5","name":"Debug","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1430,"y":340,"wires":[]},{"id":"a878c9fbeff819d9","type":"json","z":"d1ffacfe9707aaf5","name":"Parse JSON","property":"payload","action":"","pretty":true,"x":1250,"y":120,"wires":[["d8cf9fa2b1bbc2dc","f0c5ed208931c78f","7ed40bcc1d222e69"]]},{"id":"d8cf9fa2b1bbc2dc","type":"api-call-service","z":"d1ffacfe9707aaf5","name":"Set primary hue number","server":"b3e0a08f.2f71e","version":1,"debugenabled":false,"service_domain":"input_number","service":"set_value","entityId":"input_number.chat_gpt_lights_hue","data":"{    \"value\": msg.payload.primary_hue}","dataType":"jsonata","mergecontext":"","output_location":"payload","output_location_type":"none","mustacheAltTags":false,"x":1470,"y":180,"wires":[[]]},{"id":"a309461c5d5934c4","type":"api-call-service","z":"d1ffacfe9707aaf5","name":"Set input_text","server":"b3e0a08f.2f71e","version":1,"debugenabled":false,"service_domain":"input_text","service":"set_value","entityId":"input_text.chat_gpt_lights_hue_reason","data":"{    \"value\": msg.payload}","dataType":"jsonata","mergecontext":"","output_location":"payload","output_location_type":"none","mustacheAltTags":false,"x":1660,"y":120,"wires":[[]]},{"id":"f0c5ed208931c78f","type":"string","z":"d1ffacfe9707aaf5","name":"Truncate reason","methods":[{"name":"truncate","params":[{"type":"num","value":"252"},{"type":"str","value":""}]}],"prop":"payload.reason","propout":"payload","object":"msg","objectout":"msg","x":1440,"y":120,"wires":[["a309461c5d5934c4"]]},{"id":"1903bf7bc863769c","type":"server-state-changed","z":"d1ffacfe9707aaf5","name":"Bedtime state changed","server":"b3e0a08f.2f71e","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"binary_sensor.bedtime_sensor","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":"","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"x":120,"y":300,"wires":[["48dcab547f602bf4"]],"icon":"font-awesome/fa-bed"},{"id":"afef7fd9e12c81b1","type":"function","z":"d1ffacfe9707aaf5","name":"function 1","func":"\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":280,"y":2020,"wires":[[]]},{"id":"3a03913019a7fb81","type":"change","z":"d1ffacfe9707aaf5","name":"Set msg variables","rules":[{"t":"set","p":"topic","pt":"msg","to":"turbo","tot":"str"},{"t":"set","p":"max_tokens","pt":"msg","to":"1000","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":650,"y":120,"wires":[["7ca5628235e3183c"]]},{"id":"7ed40bcc1d222e69","type":"api-call-service","z":"d1ffacfe9707aaf5","name":"Set complementary hue number","server":"b3e0a08f.2f71e","version":1,"debugenabled":false,"service_domain":"input_number","service":"set_value","entityId":"input_number.chat_gpt_lights_hue_complementary","data":"{    \"value\": msg.payload.complementary_hue}","dataType":"jsonata","mergecontext":"","output_location":"payload","output_location_type":"none","mustacheAltTags":false,"x":1490,"y":240,"wires":[["2e8e3421dc8870b9"]]},{"id":"7ca5628235e3183c","type":"api-render-template","z":"d1ffacfe9707aaf5","name":"Prompt template","server":"b3e0a08f.2f71e","template":"Set the hue for my home's lights using the HSL/HSB scale from 0-360 by providing a primary and complementary colour which considers the current situation. The HSL color spectrum ranges from 0 (red), 120 (green), to 240 (blue) and back to 360 (red). Lower values (0-60) represent warmer colors, while higher values (180-240) represent cooler colors. Middle values (60-180) are neutral.\n\nConsider these factors in setting the primary hue (in order of importance):\n\n1. Preferences throughout the day:\n  - When about to wake: Reds, oranges or hot pinks\n  - Approaching bedtime: Hot pinks or reds\n  - During worktime: Blues, greens or yellows\n  - Other times: Greens, yellows or oranges\n2. {% if is_state('binary_sensor.bedtime_sensor', 'on') %}Activity: Bedtime{% elif is_state('binary_sensor.worktime_sensor', 'on') %}Activity: Worktime{% elif is_state('media_player.kodi_b0e5d324ca469c6965c8dba64870c68d', 'playing') %}Activity: Watching a {% if state_attr('media_player.kodi_b0e5d324ca469c6965c8dba64870c68d', 'media_content_type') == 'tvshow'%}TV show called \"{{ state_attr('media_player.kodi_b0e5d324ca469c6965c8dba64870c68d', 'media_series_title') }}\"{%else%}movie called \"{{ state_attr('media_player.kodi_b0e5d324ca469c6965c8dba64870c68d', 'media_title') }}\"{%endif%}{%else%}Currently on the computer with background music: {% if is_state('media_player.hyperborean_mpd', 'playing')%}Playing \"{{ state_attr('media_player.hyperborean_mpd', 'media_title') }}\"{%else%}Not playing{%endif%}{% endif %}\n3. Sleep schedule: Bedtime 23:00, Wake-up time 07:00\n4. Date & time: {{ now().strftime('%A %h %d, %H:%M') }}\n5. Current primary hue: {{ states('input_number.chat_gpt_lights_hue') | round }}\n6. Current complementary hue: {{ states('input_number.chat_gpt_lights_hue_complementary') | round }}\n7. Weather: {{ state_attr('weather.elsternwick', 'temperature') | round }}°C, wind speed {{ state_attr('weather.elsternwick', 'wind_speed') | round }} km/h, {{ states('sensor.season') }}\n\nRespond in this format and provide a reason in <250 characters:\n\n{\"primary_hue\": PRIMARY_HUE, \"complementary_hue\": COMPLEMENTARY_HUE, \"reason\":\"REASONING\"}","resultsLocation":"payload","resultsLocationType":"msg","templateLocation":"template","templateLocationType":"msg","x":870,"y":120,"wires":[["5dc68faaf78b40c1","2e8e3421dc8870b9"]],"icon":"font-awesome/fa-commenting"},{"id":"c12f16c089429109","type":"server-state-changed","z":"d1ffacfe9707aaf5","name":"Bobcat returns","server":"b3e0a08f.2f71e","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"group.bobcat","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"home","halt_if_type":"str","halt_if_compare":"is","outputs":2,"output_only_on_state_change":true,"for":"","forType":"num","forUnits":"minutes","ignorePrevStateNull":true,"ignorePrevStateUnknown":true,"ignorePrevStateUnavailable":true,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"x":140,"y":120,"wires":[["3a03913019a7fb81"],[]],"icon":"font-awesome/fa-home"},{"id":"48dcab547f602bf4","type":"delay","z":"d1ffacfe9707aaf5","name":"","pauseType":"delay","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":320,"y":300,"wires":[["88adf7ade4f3ab96"]]},{"id":"88adf7ade4f3ab96","type":"api-current-state","z":"d1ffacfe9707aaf5","name":"Is Bobcat home?","server":"b3e0a08f.2f71e","version":1,"outputs":2,"halt_if":"home","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"group.bobcat","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":510,"y":240,"wires":[["3a03913019a7fb81"],[]],"icon":"font-awesome/fa-home"},{"id":"b3e0a08f.2f71e","type":"server","name":"HomeAssistant","legacy":false,"addon":false,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}]