Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. SolarW

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    S
    • Profile
    • Following 0
    • Followers 0
    • Topics 3
    • Posts 38
    • Best 0
    • Groups 1

    SolarW

    @SolarW

    0
    Reputation
    32
    Profile views
    38
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    SolarW Follow
    Starter

    Latest posts made by SolarW

    • RE: Расчёт абсолютной влажности из относительной и обратно.

      Наткнулся случайно на свою же тему и понял что не написал в нее решение которое использую после подсказок более опытных товарищей и поиска примеров математики на JS в интернете.
      В общем более двух лет используется следующий скрипт:

      // Выполнение скрипта каждые 15 минут
      schedule('*/15 * * * *', function () {
          var out_t = getState('mqtt.0.test.Garazh01.dhtt2').val; //температура с уличного датчика
          // log('Температура улица = '+ out_t);
          var out_h = getState('mqtt.0.test.Garazh01.dhth2').val; //влажность с уличного датчика
          // log('Влажность улица = '+ out_h);
          var in_t = getState('mqtt.0.test.Garazh01.dhtt1').val; //температура внутри гаража
          // log('Температура гараж = '+ in_t);
          var in_h = getState('mqtt.0.test.Garazh01.dhth1').val; //влажность внутри гаража
          // log('Влажность гараж = '+ in_h);
          var pres_hgmm = getState('javascript.0.narodmon.sensor.press.mid').val; //атмосферное давление полученное с narodmon
          // log('Атмосферное давление = '+ pres_hgmm);
          var Rv = 461.5; //отсюда пересчет относительной влажности в абсолютную с учётом температуры и атмосферного давления
          var pres_hpa = (pres_hgmm * 133.322)/100; // атм давление в гПа
          var et = 6.112*Math.exp( (17.62*out_t)/(243.12+out_t) );
          var fp = 1.0016 + 3.15 * Math.pow(10,-6) * pres_hpa - 0.074/pres_hpa;
          var ept = fp*et;
          var var_e = (out_h/100)*ept;
          var out_t_k = out_t + 273.15; //внешняя температура в К
          var in_t_k = in_t + 273.15; //внутренняя температура в К
          var out_h_abs = var_e*100/(Rv*out_t_k); //абсолютная влажность снаружи
          // log('Абсолютная влажность улица = '+ out_h_abs);
          var in_h_abs = out_h_abs+0.0004; //коррекция желаемой влажности внутри
          var ew = ept*100;
          var var_e1 = in_h_abs*Rv*in_t_k;
          // log('Желаемая абс влажность гараж = '+ in_h_abs);
          var to_in_h = Math.round((var_e1/ew)*100+1);
          // log('Желаемая относ влажность гараж = '+ to_in_h);
          // log('Текущая относ влажность гараж = '+ in_h);
          setState('mqtt.0.test.Garazh02.thermset1',to_in_h,true); //назначение параметров термостата
       })
      

      В принципе в скрипте все достаточно подробно откомментировано, единственно пара моментов:

      • в исходной задаче была корректировка относительной влажности в 0.2 г/куб но практика показала что этого маловато, пришлось поднять до 0.4 г/куб
      • пока не нашел нормальных датчиков которые бы с одной стороны в уличных условиях не дохли бы а с другой стороны были совместимы с DHT22 чтобы можно было по две шт цеплять на модуль ESP8266 с прошивкой WiFi-iot
        Обычные DHT22 дохнут практически сразу, поставленные им на замену AM2320 тоже не сильно лучше, после начала сезона дождей часто "залипает" влажность на 100% и восстанавливается только после нескольких дней сухой и желательно теплой погоды.
      • на самом деле крутятся два таких скрипта, один из которых работает на вытяжку в самом гараже а второй на отдельную вытяжку в подвале.

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

      posted in ioBroker скрипты
      S
      SolarW
    • RE: Скрипт "say time". Проговаривание времени.

      Полный вариант который у меня запускается без ошибок

      createState('tempOutside','');
      var idSayIt = "sayit.0.tts.text";
       
      schedule("*/10 7-23 * * *", function () {
          var date = new Date();
          var day = date.getDay(); // 0-воскр. 6-суббота
          var hour = date.getHours();
          var min = (date.getMinutes()<10?'0':'') + date.getMinutes(); // если минута меньше 10, то добавляем 0
          var message = [];
       
          // Проговариваем время по будням в 00 минут
          if((day >= 1 && day <= 5) && min == '00'){
              if(hour == 7){
                  // Если 7:00, то желаем доброго утра
                  message.push({text: 'Доброе утро.', interval: 1000});
                  // и проговариваем температуру за окном
      //            message.push({text: 'Температура за окном '+getState("tempOutside").val+' °.', interval: 5000});
                  // проговариваем прогноз на сегодняшний день
                  message.push({text: 'Погода на сегодня: '+getState("forecast.today").val, interval: 7000});
              }else{
                  // Проговариваем каждый час
                  message.push({text: hour+':'+min, interval: 1000});
              }
          // В 8:30, проговариваем, что пора выходить
          }else if ((day >= 1 && day <= 5) && (hour == 8 && min == 30)){
              message.push({text: hour+':'+min+' Пора выходить на работу!', interval: 1000});
          // Погода вечером
          }else if (hour == 21 && min == 30){
              message.push({text: 'Прогноз погоды на завтра: '+getState("forecast.tomorrow").val, interval: 1000});
              //log("погода");
          // Проговариваем время по выходным начиная с 9:30 
          }else if((day == "0" || day == 6 ) && ((hour == 9 && min == 30) || (hour >= 10 && min == '00'))){
              message.push({text: hour+':'+min, interval: 1000});
          }
       
       // Проговариваем наши сообщения c указанным в сообщении
          var interval = 0;
          for(var i=0; i < message.length; i++){
              setTimeout(function(text){
                  setState(idSayIt,text);
                  log(text);
              }, interval, message[i].text);
              interval +=message[i].interval; 
              }
          });
      
      posted in ioBroker скрипты
      S
      SolarW
    • RE: Скрипт "say time". Проговаривание времени.

      Конец скрипта должен выглядеть так (tnx to @instalator )

      // Проговариваем наши сообщения c указанным в сообщении
         var interval = 0;
         for(var i=0; i < message.length; i++){
             setTimeout(function(text){
                 setState(idSayIt,text);
                 log(text);
             }, interval, message[i].text);
             interval +=message[i].interval; 
             }
         });
      
      posted in ioBroker скрипты
      S
      SolarW
    • RE: Скрипт "say time". Проговаривание времени.

      @vtec said in Скрипт "say time". Проговаривание времени.:

      Да, есть небольшие изменения 🙂

      Может кто-то подскажет что не так с последней строкой?

      posted in ioBroker скрипты
      S
      SolarW
    • RE: sayit не хочет говорить

      Участник @Vod написал в sayit не хочет говорить:

      @SolarW Страничка вашу проблемную фразу проговаривает без проблем, но там капча;)

      Чьорт, точно.
      Протупил, на капчу механически клацнул и забыл что она есть.
      Ладно, тогда согласно рекомендации более опытных товарищей понес деньги господину Безосу.

      P.S. Хотя ответ на вопрос где встроено ограничение в 70 символов в случае с Google TTS по прежнему интересен. 🙂

      posted in ioBroker ошибки
      S
      SolarW
    • RE: sayit не хочет говорить

      Кстати попутно ещё вопрос - адаптер SayIt каким образом Google TTS дергает?
      https://cloud.google.com/text-to-speech#section-2 - случайно не прикидываясь этой страничкой?

      posted in ioBroker ошибки
      S
      SolarW
    • RE: sayit не хочет говорить

      Участник @Bluefox написал в sayit не хочет говорить:

      @SolarW ну понятно же, что ограничение на количество символов. У всего есть пределы.
      Возьми полли, я за неё деньги плачу и она должна работать

      Спасибо, попробую.
      Но всё-таки хотелось бы разобраться - срабатывающее ограничение оно где?
      В адаптере sayit или уже у Гугла?
      Если у Гугла - вопрос снят.
      Если в sayit - то может сделать макс количество символов настраиваемым в адаптере, установив по дефолту текущее значение?
      Таким образом и текущий функционал сохранится, и бОльшее число символов можно будет попробовать.

      posted in ioBroker ошибки
      S
      SolarW
    • RE: sayit не хочет говорить

      Попробовал обрезать фразу

      Облачно, небольшой кратковременный дождь. Температура ночью 15°, днём
      

      Это работает

      Облачно, небольшой кратковременный дождь. Температура ночью 15°, днём 27
      

      А это уже нет.

      Температура ночью 15°, днём 27°.
      

      Такой вариант тоже работает.

      posted in ioBroker ошибки
      S
      SolarW
    • RE: sayit не хочет говорить

      https://github.com/ioBroker/ioBroker.sayit/issues/103 - issue

      SolarWind13 created this issue in ioBroker/ioBroker.sayit

      closed sayit not work #103

      posted in ioBroker ошибки
      S
      SolarW
    • RE: Скрипт "say time". Проговаривание времени.

      Участник @vtec написал в Скрипт "say time". Проговаривание времени.:

      Да, есть небольшие изменения 🙂

      По моему что-то не так с последней строкой скрипта - ругается на ошибки попытка его запустить

      javascript.0	2020-08-28 15:04:01.268	error	(4718) at processTicksAndRejections (internal/process/task_queues.js:97:5)
      javascript.0	2020-08-28 15:04:01.268	error	(4718) at runMicrotasks (<anonymous>)
      javascript.0	2020-08-28 15:04:01.268	error	(4718) at /opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49
      javascript.0	2020-08-28 15:04:01.267	error	(4718) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23)
      javascript.0	2020-08-28 15:04:01.267	error	(4718) at /opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:616:17
      javascript.0	2020-08-28 15:04:01.267	error	(4718) at /opt/iobroker/node_modules/iobroker.javascript/main.js:1139:17
      javascript.0	2020-08-28 15:04:01.267	error	(4718) at /opt/iobroker/node_modules/iobroker.javascript/main.js:1555:17
      javascript.0	2020-08-28 15:04:01.267	error	(4718) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1502:37)
      javascript.0	2020-08-28 15:04:01.267	error	(4718) at compile (/opt/iobroker/node_modules/iobroker.javascript/main.js:1279:28)
      javascript.0	2020-08-28 15:04:01.267	error	(4718) at Object.createScript (vm.js:261:10)
      javascript.0	2020-08-28 15:04:01.266	error	(4718) at new Script (vm.js:88:7)
      javascript.0	2020-08-28 15:04:01.266	error	(4718) SyntaxError: Unexpected token '/'
      javascript.0	2020-08-28 15:04:01.266	error	(4718) ^
      javascript.0	2020-08-28 15:04:01.266	error	(4718) for(var i=0; i<message.length; i++){/settimeout(function/(text)/{/setstate/(idsayit,/text);/log(text);/},/interval,/message[i].text);/interval/+="message[i].interval;" }/});<e=""></message
      javascript.0	2020-08-28 15:04:01.265	error	at script.js.common.govorun01:38
      javascript.0	2020-08-28 15:04:01.265	error	(4718) script.js.common.govorun01 compile failed:
      javascript.0	2020-08-28 15:04:01.238	info	(4718) Start javascript script.js.common.govorun01
      
      posted in ioBroker скрипты
      S
      SolarW
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo