Получение времени захода и восхода солнца

Задача: получить время захода и восхода солнца в текущую дату..

Решение:

Яндекс предоставляет эту информацию в формате json по ссылке вида https://yandex.ru/time/sync.json?geo=21, где 21 — код города в сервисах Яндекса. Список на всякий случай здесь. Один нюанс — нет возможности получить данные на определённую дату.. Да и зависеть от Яндекса, так себе идея. Сегодня сервис работает, через год нет.

Второй вариант: по ссылке вида https://api.sunrise-sunset.org/json?lat=36.7201600&lng=-4.4203400&date=2024-01-22, мы можем получить восход/заход в любую указанную дату. А так как дней всего у нас 365 в году, то вполне возможно просто выкачать эти данные и разместить их у себя например в формате <день_года>.json

Grafana: использование выпадающего меню на дашборде

Задача: необходимо строить график в зависимости от выбранного значения в выпадающем списке.

Решение: в Grafana для этого есть штатный функционал.

Заходим в меню «Dashboard Settings» (шестренка) -> Variables (переменные). Создаём новую переменную:

  • name — имя переменной, для использования в дальнейших запросах
  • label — заголовок перед выпадающим меню
  • Query — запрос из которого идёт выборка в поле выбора. Причем поле обозначенное как __text будет использоваться как наименование поля выбора, а __value как его значение.

После сохранения, идём в редактирования панели дашборда и меняем запрос на вида:

select (dt),count(*) as "${division:text}" from (
                    select 
                            date_trunc('month', agreements_dt)::date as dt
                    from 
                            ls 
                    where agreements_dt>'2018-01-01' and
							owner in ('$division') and
                            agreements_dt is not null
                    ) as agr
            group by dt
            order by dt	desc

, где:

  • ${division:text} — текст выбранного (Например «Кудыкинский муниципыальный район»
  • $division — значение выбранного (Например «13432»)

В результате получаем чудную картину:

Grafana: выделения времени суток на шкале TimeScale

В одном из проектов (умный дом) у меня мониторится температура окружающего воздуха. Но график… ну так себе если честно..

Ну совершенно не понятно не поёрзав мышкой, где день, где ночь.. Решил неказисто,.. но хотя бы уже понятно:

Просто наложив поверх еще один запрос, где вывожу в зависимости от часа суток предопределенные значения.

SELECT
  $__time(m_data.dt),
  CASE
    WHEN hour(dt)>=21 and hour(dt)<=23 THEN -35
    WHEN hour(dt)>=0 and hour(dt)<=2 THEN -35
    WHEN hour(dt)>=3 and hour(dt)<=8 THEN -17
    WHEN hour(dt)>=9 and hour(dt)<=14 THEN 35
    WHEN hour(dt)>=15 and hour(dt)<=20 THEN 17
  END  as 'Время суток'
FROM
  m_data.m_data  
WHERE
  m_data.place=10 and m_data.source=17 and m_data.value_type=1  and $__timeFilter(m_data.dt)

1С: Поиск слова обрамлённого символами

В продолжение этого. Пользователи оказались немножко более изобретательными, чем предполагал программист, и начали в комментариях писать и что-то типа:

Контролер процесса {Коновалова Е.П.} очень хочет получить премию в размере (20 рублей)!

Соответственно описанная в предыдущей статье функция начала определять только «20 рублей». Т.е. алгоритм не предусматривал наличие нескольких вложений скобок внутри строки. Поправим это:


Функция СложитьМассивы(массив1,массив2) экспорт
	для каждого эл из массив2 цикл
		массив1.добавить(эл);
	конеццикла;	
	возврат массив1;
конецфункции	
              
             
Функция ВычленитьМассивФИОИзСкобок(стр,стрн,стрк) экспорт
	 МассивФИО=Новый Массив();
	 // сначала вычленяем из ()
	 массивКонцовСкобки=СтрРазделить(стр,стрк);
	 для каждого эл из массивКонцовСкобки цикл
		если СтрНайти(эл,стрн)>0 тогда
			МассивНачалСкобки=СтрРазделить(эл,стрн);	 		
			если СокрЛП(МассивНачалСкобки[1])<>"" тогда
				МассивФИО.Добавить(СокрЛП(МассивНачалСкобки[1]));		
			конецесли;
		конецесли;
	конеццикла;	 	
	возврат МассивФИО; 
конецфункции	

				контролеры=ВычленитьМассивФИОИзСкобок(body.message,"(",")");
				контролеры=СложитьМассивы(контролеры,ВычленитьМассивФИОИзСкобок(body.message,"{","}"));
				контролеры=СложитьМассивы(контролеры,ВычленитьМассивФИОИзСкобок(body.message,"<",">"));
				контролеры=СложитьМассивы(контролеры,ВычленитьМассивФИОИзСкобок(body.message,"[","]"));

В результате в переменную попадает массив слов заключенных в скобки

PHP Smarty: обработка json массива

Задача: обработать json строку при помощи шаблонизатора Smarty

Решение: необходимо преобразовать json строку в новую переменную:

{assign var="dop_me" value=$tovar.dop_ed_izm|@json_decode}
{foreach $dop_me as $row}
{/foreach}
1 31 32 33 34 35 310