В альфа-ветке обновился движок blockly -- потестируйте пожалуйста, не ломаются ли ранее созданные сценарии.
У меня вся система MD построена на blockly, поднял виртуальную машину, скопировал с работающей системы бэкап и проверил на виртуальной машине, все сценарии работают исправно. Есть одно, что мне не нравится, это раздел в blockly "Состояния", там пустые блоки и на них нет надписей, не ясно что за блок, приходится их ставить и потом смотреть в коде PHP, что очень не удобно.
После обновлении majordomo от 12.09.2019, blockly перестал нормально работать, первый раз сборка кода идет нормально, после 2-4 раз захода, чтобы отредактировать код, всплывает такая ошибка, приходится собирать код по новой. Скриншот ошибки можете посмотреть здесь
В догонку -- не могли бы вы в текстовом виде прислать полный текст ошибки?
Не удается скопировать саму ошибку, я смог скопировать только текст с раздела "Показать xml", ошибка всплывает, если часто редактируешь сценарии в blockly, отредактировал - закрыл, и так несколько раз, потом будет ошибка.
<xml xmlns="https://developers.google.com/blockly/xml">
<block type="controls_if" id="Pa8w2U]m7bs+v:M3%}@X" x="129" y="293">
<value name="IF0">
<block type="logic_operation" id="/admin.php?pd=pz_c2NyaXB0czp7aWQ9NTIsdmlld19tb2RlPWVkaXRfc2NyaXB0cyxpbnN0YW5jZT1hZG19pzcGFuZWw6e2FjdGlvbj1zY3JpcHRzfQ%3D%3Dpz&md=blockly_code&inst=&PQ73T-OtsbJnLG[S|wd">
<field name="OP">AND</field>
<value name="A">
<block type="logic_compare" id="F?@TcOQ8yFu75%svZn:i">
<field name="OP">EQ</field>
<value name="A">
<block type="majordomo_device_2_currentStatus" id="DH{R[2~V9UlR(j7V.9T;"/>
</value>
<value name="B">
<block type="math_number" id="dQ5OF[;)GQh+$gHZrVsC">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="majordomo_timebetween" id="X()v_zD7RN0]}^?Me1-l">
<value name="TIME1">
<block type="text" id="R.eZxt~@:5ObranSV$ml">
<field name="TEXT">10:00</field>
</block>
</value>
<value name="TIME2">
<block type="text" id="l.^{[s^h;#-wW.:gmX8v">
<field name="TEXT">23:00</field>
</block>
</value>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="majordomo_device_21turnOn" id="8pquUQ+vl3]j:q%;:[X"/>
</statement>
</block>
</xml>
Проблема из-за того, что новый GoogleBlockly меняет id элементов и временами они получаются со знаком вопроса в начале, на что система некорректно реагирует, добавляя туда путь admin.php с параметрами. В альфа версии я исправил этот момент, так что попробуйте пожалуйста сейчас.
хорошо, я проверю и отпишусь вам
Ого, вы исправили в blockly "Состояния" - круто!!! Теперь можно понимать что за блоки состояния. Пробовал в Альфа версии сломать blockly как в мастер версии, пока у меня не получилось, как я только откатил с Альфа версии на Мастер, ситуация повторилась. В Мастер версии blockly повреждаются, в Альфа версии blockly не повреждаются.
Скажите, если я на боевом сервере поставлю Альфу версию, потестирую, потом я смогу безболезненно перейти на Мастер версию?
Думаю да, не должно быть проблем с переходом на мастер.
Проверил на тестовой машине, проблем с переходом с Мастер версии на Альфа и обратно нет. Поставил Альфу версию на боевом сервере, пока проблем с blockly не наблюдаю. Скажите, а модуль блоки это относится к blockly? Там нет дерева по категориям, все смешано в одну кучу, надо, чтобы было как в сценариях.
За два дня тестирования с blockly, проблем не было обнаружено. Работает четко.
Отлично! Спасибо, что сообщили :)
Доброй ночи, столкнулся с проблемой, после обновления MD, при создании сценария в блокли, появляется ошибка
File "/var/www/cms/cached/d8bd62a7fb27e4bdbf46ad2be50b7e22.py", line 15
if (timeBetween('22:00', '05:00')) {
^
SyntaxError: invalid syntax
Содержимое в d8bd62a7fb27e4bdbf46ad2be50b7e22.py
import os
import sys
import re
import json
from mjd_constants import *
sys.path.append(os.path.abspath("/var/www/lib/python"))
import mjdm
if (sys.argv[1]):
params=json.loads(sys.argv[1])
else:
params = {}
if (timeBetween('', '')) {
}
Если вставлять код, то прокатывает нормально, а с блокли нет.
А не могли бы вы показать картинку, как код выглядит в Blockly чтобы я попробовал его в точности воспроизвести?
Конечно. Я записал видео, где вы можете увидеть сами - https://cloud.mail.ru/public/59Zo/3tQ1VXPuR
В альфа версии это исправлено, проверьте пожалуйста.
Проверил, теперь все работает, ошибка не всплывает - спасибо )
Вчера обновил MD на стабильную версию и при попытке открыть любой сценарии написанные в блокли, то я получаю такую ошибку
Напишите пожалуйста ошибку, не добавилась.
Скриншот ошибки https://cloud.mail.ru/public/27rk/3JNbx6NMc
А можете ещё сюда вставить код из раздела "Показать XML" для таких сценариев?
(для одного хотя бы)
Не все сценарий в блокли открываются с проблемой, но большинство
Выкладываю код 3 разных сценариев
Сценарий 1
if (getGlobal("SMonitorBacklight.status") == 0) {
callMethod("SMonitorBacklight.turnOn");
}
Сценарий 2
if (getGlobal("SСomputer_01.status") == 0 && getGlobal("SZeootaSmartPowerSwitch2.status") == 1) {
callMethod("SZeootaSmartPowerSwitch2.turnOff");
}
Сценарий 3
if (getGlobal("DarknessMode.active") == 1 && getGlobal("HomeMode.active") == 1 && getGlobal('HomeMode'.'.'.'blocked') == 0) {
runScript('Позиция шторы - 70', array());
callMethod("SSwitchXiaomi1.turnOn");
}
Это вид PHP, а посмотрите ещё пожалуйста вид XML (кнопка Показать XML)
Сценарий 2
if (getGlobal("SСomputer_01.status") == 0 && getGlobal("SZeootaSmartPowerSwitch2.status") == 1) {
callMethod("SZeootaSmartPowerSwitch2.turnOff");
}
XML принадлежит сценарию 2
<xml xmlns="https://developers.google.com/blockly/xml">
<block type="controls_if" id="qkd{VrMIbVphxR-aoFY" x="-21" y="133">
<value name="IF0">
<block type="logic_operation" id="MP2(}q?!a_73_YoYd;OC">
<field name="OP">AND</field>
<value name="A">
<block type="logic_compare" id="~)HhzEKTrenwXSwZKcjG">
<field name="OP">EQ</field>
<value name="A">
<block type="majordomo_device_10_currentStatus" id="9MbSzRcsY?:rFc2..}1?">
</value>
<value name="B">
<block type="math_number" id="4jH5UBrn},m5IkN]y.3~">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="logiccompare" id="[IC%oeG$dlF}R,|Ac%">
<field name="OP">EQ</field>
<value name="A">
<block type="majordomo_device_8_currentStatus" id="dH}QIHKN8OHtGYJKteR^">
</value>
<value name="B">
<block type="math_number" id="!_ic]uQKIAJPIpSb%">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="majordomo_device_8_switch" id="Uq:JF5;q,63V^X1T;uW">
<field name="MODE">OFF</field>
</block>
</statement>
</block>
</xml>
Хочу сообщить, те сценарии которые у меня перестали запускаться и выдавали ошибку выше, я их собрал в blockly по новой. Сейчас ошибка не вылазит, работает четко. В blockly добавились новшества, может это и вызвало сбой в старом коде?
Пожалуйста, войдите в систему, чтобы добавлять комментарии Присоединиться!