- Odd message with Command 8 #60
- Comments
- dekuwrangler commented Jun 16, 2019 •
- AMoo-Miki commented Sep 6, 2019
- misanthrophy commented Sep 7, 2019 •
- AMoo-Miki commented Sep 7, 2019
- misanthrophy commented Sep 7, 2019
- AMoo-Miki commented Sep 7, 2019
- misanthrophy commented Sep 7, 2019
- AMoo-Miki commented Sep 7, 2019
- chyumcha commented Jun 9, 2020 •
- The command «node . » failed #7
- Comments
- yuraplohov commented Oct 8, 2018 •
- khejit commented Jan 8, 2019
- d4rkr3pt0r commented Jan 21, 2019
- khejit commented Jan 21, 2019
- d4rkr3pt0r commented Jan 21, 2019
- yuraplohov commented Jan 22, 2019
- ohdoski commented Feb 26, 2019 •
- d4rkr3pt0r commented Feb 26, 2019
- vintprox commented Apr 24, 2019 •
- Символы Unicode: о чём должен знать каждый разработчик
- Введение в кодировку
- Краткая история кодировки
- Проблемы с ASCII
- Что такое кодовые страницы ASCII?
- Безумие какое-то.
- Так появился Unicode
- Unicode Transform Protocol (UTF)
- Что такое UTF-8 и как она работает?
- Напоследок про UTF
- Это всё?
- Заключение
Odd message with Command 8 #60
Comments
dekuwrangler commented Jun 16, 2019 •
My homebridge app is seeing the smart bulb but is unable to control it and it shows as “no response” within the home app. When controlling my smart bulb from the tuya app I get this odd message
[TuyaAccessory] Odd message from Ikea Lamp with comm�and 8: < cmd: 8, data: '\u0011FÑ$LïÉ@àߨÐ\u0007t-\u0014Õ2þ0e\u000�f\u00193�?¿Ûé’o¶Ù^¦�V2�H�u\u0007Á;�\u000e\b\b¨kÏî¥r�We@y=¡a4>�ÔÊt�Ô%\u0014´�Uw�°’ >
The tuya app communicates fine with the bulb. My config file for the bulb is
The text was updated successfully, but these errors were encountered:
AMoo-Miki commented Sep 6, 2019
Please give the latest rc release a shot by doing npm i -g homebridge-tuya-lan@rc . It includes logic to understand this newer API.
A known issue is that the current state is not reported by some devices; they however work fine as soon as you interact with them. I have reached out to Tuya for a solution.
The Setup Instructions have changed in case you need to obtain a fresh id and key .
misanthrophy commented Sep 7, 2019 •
Hey, I got the same error message with the official release of this plugin.
Before the multioutlet was online, but I just could not power on/power off any device. Only in the Tuya app.
As soon as I installed the latest .rc7 update the multioutlet shows with no response. I tried to check for a new ID/KEY with your service without any success. I always get:
Intercepted certificate request
Failed to intercept secure communications. This could happen due to bad CA certificate.
So right now I have a «dead» device in my homebridge, which is not a big deal, I just don’t know what steps I should try to get it working!
After a while homebridge discovered the outlet:
[2019-9-7 19:10:33] [TuyaLan] Discovered Steckdosenleiste (86371672dc4f22e58ac8) identified as MultiOutlet (3.1)
[2019-9-7 19:10:33] [TuyaLan] Connected to Steckdosenleiste
[TuyaAccessory] Sending first query to Steckdosenleiste (3.1)
[2019-9-7 19:10:33] [TuyaLan] Ready to handle Steckdosenleiste (MultiOutlet:3.1) with signature
IU see now that if I power off one outlet, it triggers the state in homebridge log, but it does not execute. If I change the state of one outlet on the Tuya app, homebridge immediately crashes with this error log:
[2019-9-7 19:17:53] Error: error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt
at Decipheriv.final (crypto.js:183:26)
at TuyaAccessory._msgHandler_3_1 (/usr/local/lib/node_modules/homebridge-tuya-lan/lib/TuyaAccessory.js:201:42)
at queue (/usr/local/lib/node_modules/homebridge-tuya-lan/node_modules/async/dist/async.js:3205:13)
at Object.process (/usr/local/lib/node_modules/homebridge-tuya-lan/node_modules/async/dist/async.js:1431:21)
at setImmediate$1 (/usr/local/lib/node_modules/homebridge-tuya-lan/node_modules/async/dist/async.js:1289:23)
at Immediate.defer [as _onImmediate] (/usr/local/lib/node_modules/homebridge-tuya-lan/node_modules/async/dist/async.js:73:45)
at runCallback (timers.js:810:20)
at tryOnImmediate (timers.js:768:5)
at processImmediate [as _immediateCallback] (timers.js:745:5)
I hope that helps you!
AMoo-Miki commented Sep 7, 2019
After installing the certificate, did you get a chance to go to About and switch the trust on? Delete this from your phone by following the Cleanup Instructions and then start from scratch following the Setup Instructions again. Despite knowing the steps by heart, I still miss a step sometimes.
The third part of you message is just an indicator of a bad key.
I have heard about devices going nuts when they receive garbage a lot; our bad key was causing us to send a ton of garbage to the device. Power-cycling a device should get it out of the limbo.
Right now, our primary goal is to get you a good key and for that we need to get your device correctly talking to the proxy. By the way, don’t stop the setup instruction if you see any error in the tuya-lan-find console; just continue as if nothing happened.
misanthrophy commented Sep 7, 2019
Dammit, I forgot to give the cert root privileges. That was the issue all the time 😀 hahaha. It took 1-2 Min until the multioutlet worked.
[2019-9-7 21:38:24] [TuyaLan] Failed to discover Steckdosenleiste (86371672dc4f22e58ac8) in time but will keep looking.
[2019-9-7 21:40:54] [TuyaLan] Discovered Steckdosenleiste (86371672dc4f22e58ac8) identified as MultiOutlet (3.1)
[2019-9-7 21:40:54] [TuyaLan] Connected to Steckdosenleiste
[TuyaAccessory] Sending first query to Steckdosenleiste (3.1)
[2019-9-7 21:40:54] [TuyaLan] Ready to handle Steckdosenleiste (MultiOutlet:3.1) with signature <"1":true,"2":true,"3":true,"4":true,"7":true,"101":0,"102":0,"103":0,"104":0,"105":0>
I also changed it no successfully to CustomMultiOutlet.
AMoo-Miki commented Sep 7, 2019
Excellent. We are at a great place now. Can please you share your config block for the CustomMultiOutlet ? Black out your key though.
misanthrophy commented Sep 7, 2019
<
«platform»: «TuyaLan»,
«devices»: [
<
«name»: «Steckdosenleiste»,
«type»: «CustomMultiOutlet»,
«manufacturer»: «Unknown»,
«model»: «Steckdosenleiste»,
«id»: «xxxxxxx»,
«key»: «xxxxxxxx»,
«outlets»: [
<
«name»: «Wireless Charger»,
«dp»: 1
>,
<
«name»: «Nachttischlampe»,
«dp»: 2
>,
<
«name»: «USB-C Charger»,
«dp»: 3
>,
<
«name»: «Hue»,
«dp»: 4
>,
<
«name»: «USB»,
«dp»: 7
>
]
>
]
>
Now everything is fine. Just too bad, that the outlets do not support amp, volt, watt information.
AMoo-Miki commented Sep 7, 2019
I am glad we were able to solve your problem. Let’s hope @dekuwrangler will also check this out and tell us if that problem is solved too.
chyumcha commented Jun 9, 2020 •
I’ve gone through setup instructions twice and still having a similar issue after starting from scratch each time.
I get lots of ECONNRESET errors when I open the Tuya app (which I assume are ignorable?) but nothing seems to come through with in the console (or the homebridge log file).
In Home app i can see my heater online (it shows the temperature) but its not responding to on-off commands. I’ve tried a bunch of different override commands in the config.json (doesn’t seem to do it).
edit: also the tuya app can send commands fine — just not from home app.
Источник
The command «node . » failed #7
Comments
yuraplohov commented Oct 8, 2018 •
I launched a project and set in my .env
NODE_PATH=node
APP_ENV=production
But I have this error:
The command «node W:\OSPanel\domains\example\storage\app/ssr\342a336ef63a6e8f23f78828aec4b37a.js» failed. Exit Code: 1(General error) Working directory: W:\OSPanel\domains\example\public Output: ================ Error Output: ================ «node» �� ���� ����७��� ��� ���譥� ��������, �ᯮ��塞�� �ணࠬ��� ��� ������ 䠩���. (View: W:\OSPanel\domains\example\resources\views\vue.blade.php)
Tell me please what can I do. Thank in advance
The text was updated successfully, but these errors were encountered:
khejit commented Jan 8, 2019
I have the same error. System: windows 10. I linked the domain using valet.
Without APP_ENV=production ssr is not used and there is no error, but when I want to check ssr I get this error with output that some js file can not be found. Directory storage/app/ssr contains only .gitignore.
d4rkr3pt0r commented Jan 21, 2019
same problem here:
The command «node C:\xampp\htdocs\storage\app/ssr\04113a0c6676e9396b9c85fba11a1bdd.js» failed. Exit Code: 1(General error) Working directory: C:\xampp\htdocs\public Output: ================ Error Output: ================ ‘node’ is not recognized as an internal or external command, operable program or batch file. (View: C:\xampp\htdocs\resources\views\vue.blade.php)
Nodejs is installed and working properly. environment variable is set.
khejit commented Jan 21, 2019
@mdnpro : it’s not the same error. Your says that node command hasn’t been found, you have to provide full path to node or register node command so you can just use ‘node’ in your terminal anywhere.
We, on the other hand, had problem after node had been run. I eventually got it to work, but I didn’t change anything. I just tried the same configuration on Mac, then reinstalled on Windows and everything worked. Very strange.
d4rkr3pt0r commented Jan 21, 2019
@khejit I did all instructions but no luck.
Node path as environment variable.
NODE_PATH=node in .env file
APP_ENV=production in .env file
Still getting the same error. I’m using windows 10 x64.
I can use node in CMD and it’s working fine.
yuraplohov commented Jan 22, 2019
I transferred the same code to the server with centos and it works, but on windows 10 it does not work
ohdoski commented Feb 26, 2019 •
Same error here. I think it maybe path problem in window. So i changed path like
, but neither work. I also try
but it`s same. anyone help?
d4rkr3pt0r commented Feb 26, 2019
@ohdoski The reason of my problem was using serve command to run laravel. This way windows was unable to lock and terminate nodejs processes. But it works fine without using serve command.
vintprox commented Apr 24, 2019 •
I don’t understand why I have same issue. I use Laragon with PHP 7.2.17 + V8js extension enabled on Windows 10.
Made everything fine in configurations
then I saw render() !!> empty and breaking response, so eveything after it was not rendered. So I proceed in ssr.php configuration to disable mix resolver of path, and using path like this fallback(‘
I assume the path is correct, because when I misspell it fails with Server script at path ‘blahblah’ doesn’t exist. Seems it has node run with correct one, but script fails on undefined next . I’m not able to debug it further since files are terminated.
Also I don’t know why public_path helper is unaccessible when I put it in blade template. Maybe it’s the cause?
Источник
Символы Unicode: о чём должен знать каждый разработчик
Если вы пишете международное приложение, использующее несколько языков, то вам нужно кое-что знать о кодировке. Она отвечает за то, как текст отображается на экране. Я вкратце расскажу об истории кодировки и о её стандартизации, а затем мы поговорим о её использовании. Затронем немного и теорию информатики.
Введение в кодировку
Компьютеры понимают лишь двоичные числа — нули и единицы, это их язык. Больше ничего. Одно число называется байтом, каждый байт состоит из восьми битов. То есть восемь нулей и единиц составляют один байт. Внутри компьютеров всё сводится к двоичности — языки программирования, движений мыши, нажатия клавиш и все слова на экране. Но если статья, которую вы читаете, раньше была набором нулей и единиц, то как двоичные числа превратились в текст? Давайте разберёмся.
Краткая история кодировки
На заре своего развития интернет был исключительно англоязычным. Его авторам и пользователям не нужно было заботиться о символах других языков, и все нужды полностью покрывала кодировка American Standard Code for Information Interchange (ASCII).
ASCII — это таблица сопоставления бинарных обозначений знакам алфавита. Когда компьютер получает такую запись:
то с помощью ASCII он преобразует её во фразу «Hello world».
Один байт (восемь бит) был достаточно велик, чтобы вместить в себя любую англоязычную букву, как и управляющие символы, часть из которых использовалась телепринтерами, так что в те годы они были полезны (сегодня уже не особо). К управляющим символам относился, например 7 (0111 в двоичном представлении), который заставлял компьютер издавать сигнал; 8 (1000 в двоичном представлении) — выводил последний напечатанный символ; или 12 (1100 в двоичном представлении) — стирал весь написанный на видеотерминале текст.
В те времена компьютеры считали 8 бит за один байт (так было не всегда), так что проблем не возникало. Мы могли хранить все управляющие символы, все числа и англоязычные буквы, и даже ещё оставалось место, поскольку один байт может кодировать 255 символов, а для ASCII нужно только 127. То есть неиспользованными оставалось ещё 128 позиций в кодировке.
Вот как выглядит таблица ASCII. Двоичными числами кодируются все строчные и прописные буквы от A до Z и числа от 0 до 9. Первые 32 позиции отведены для непечатаемых управляющих символов.
Проблемы с ASCII
Позиции со 128 по 255 были пустыми. Общественность задумалась, чем их заполнить. Но у всех были разные идеи. Американский национальный институт стандартов (American National Standards Institute, ANSI) формулирует стандарты для разных отраслей. Там утвердили позиции ASCII с 0 по 127. Их никто не оспаривал. Проблема была с остальными позициями.
Вот чем были заполнены позиции 128-255 в первых компьютерах IBM:
Какие-то загогулины, фоновые иконки, математические операторы и символы с диакретическим знаком вроде é. Но разработчики других компьютерных архитектур не поддержали инициативу. Всем хотелось внедрить свою собственную кодировку во второй половине ASCII.
Все эти различные концовки назвали кодовыми страницами.
Что такое кодовые страницы ASCII?
Здесь собрана коллекция из более чем 465 разных кодовых страниц! Существовали разные страницы даже в рамках какого-то одного языка, например, для греческого и китайского. Как можно было стандартизировать этот бардак? Или хотя бы заставить его работать между разными языками? Или между разными кодовыми страницами для одного языка? В языках, отличающихся от английского? У китайцев больше 100 000 иероглифов. ASCII даже не может всех их вместить, даже если бы решили отдать все пустые позиции под китайские символы.
Эта проблема даже получила название Mojibake (бнопня, кракозябры). Так говорят про искажённый текст, который получается при использовании некорректной кодировки. В переводе с японского mojibake означает «преобразование символов».
Пример бнопни (кракозябров).
Безумие какое-то.
Именно! Не было ни единого шанса надёжно преобразовывать данные. Интернет — это лишь монструозное соединение компьютеров по всему миру. Представьте, что все страны решили использовать собственные стандарты. Например, греческие компьютеры принимают только греческий язык, а английские отправляют только английский. Это как кричать в пустой пещере, тебя никто не услышит.
ASCII уже не удовлетворял жизненным требованиям. Для всемирного интернета нужно было создать что-то другое, либо пришлось бы иметь дело с сотнями кодовых страниц.
��� Если только ������ вы не хотели ��� бы ��� читать подобные параграфы. �֎֏0590��׀ׁׂ׃ׅׄ׆ׇ
Так появился Unicode
Unicode расшифровывают как Universal Coded Character Set (UCS), и у него есть официальное обозначение ISO/IEC 10646. Но обычно все используют название Unicode.
Этот стандарт помог решить проблемы, возникавшие из-за кодировки и кодовых страниц. Он содержит множество кодовых пунктов (кодовых точек), присвоенных символам из языков и культур со всего мира. То есть Unicode — это набор символов. С его помощью можно сопоставить некую абстракцию с буквой, на которую мы хотим ссылаться. И так сделано для каждого символа, даже египетских иероглифов.
Кто-то проделал огромную работу, сопоставляя каждый символ во всех языках с уникальными кодами. Вот как это выглядит:
Префикс U+ говорит о том, что это стандарт Unicode, а число — это результат преобразования двоичных чисел. Стандарт использует шестнадцатеричную нотацию, которая является упрощённым представлением двоичных чисел. Здесь вы можете ввести в поле что угодно и посмотреть, как это будет преобразовано в Unicode. А здесь можно полюбоваться на все 143 859 кодовых пунктов.
Уточню на всякий случай: речь идёт о большом словаре кодовых пунктов, присвоенных всевозможным символам. Это очень большой набор символов, не более того.
Осталось добавить последний ингредиент.
Unicode Transform Protocol (UTF)
UTF — протокол кодирования кодовых пунктов в Unicode. Он прописан в стандарте и позволяет кодировать любой кодовый пункт. Однако существуют разные типы UTF. Они различаются количеством байтов, используемых для кодировки одного пункта. В UTF-8 используется один байт на пункт, в UTF-16 — два байта, в UTF-32 — четыре байта.
Но если у нас есть три разные кодировки, то как узнать, какая из них применяется в конкретном файле? Для этого используют маркер последовательности байтов (Byte Order Mark, BOM), который ещё называют сигнатурой кодировки (Encoding Signature). BOM — это двухбайтный маркер в начале файл, который говорит о том, какая именно кодировка тут применена.
В интернете чаще всего используют UTF-8, она также прописана как предпочтительная в стандарте HTML5, так что уделю ей больше всего внимания.
Этот график построен в 2012-м, UTF-8 становилась доминирующей кодировкой. И всё ещё ею является.
Что такое UTF-8 и как она работает?
UTF-8 кодирует с помощью одного байта каждый кодовый пункт Unicode с 0 по 127 (как в ASCII). То есть если вы писали программу с использованием ASCII, а ваши пользователи применяют UTF-8, они не заметят ничего необычного. Всё будет работать как задумано. Обратите внимание, как это важно. Нам нужно было сохранить обратную совместимость с ASCII в ходе массового внедрения UTF-8. И эта кодировка ничего не ломает.
Как следует из названия, кодовый пункт состоит из 8 битов (один байт). В Unicode есть символы, которые занимают несколько байтов (вплоть до 6). Это называют переменной длиной. В разных языках удельное количество байтов разное. В английском — 1, европейские языки (с латинским алфавитом), иврит и арабский представлены с помощью двух байтов на кодовый пункт. Для китайского, японского, корейского и других азиатских языков используют по три байта.
Если нужно, чтобы символ занимал больше одного байта, то применяется битовая комбинация, обозначающая переход — он говорит о том, что символ продолжается в нескольких следующих байтах.
И теперь мы, как по волшебству, пришли к соглашению, как закодировать шумерскую клинопись (Хабр её не отображает), а также значки emoji!
Подытожив сказанное: сначала читаем BOM, чтобы определить версию кодировки, затем преобразуем файл в кодовые пункты Unicode, а потом выводим на экран символы из набора Unicode.
Напоследок про UTF
Коды являются ключами. Если я отправлю ошибочную кодировку, вы не сможете ничего прочесть. Не забывайте об этом при отправке и получении данных. В наших повседневных инструментах это часто абстрагировано, но нам, программистам, важно понимать, что происходит под капотом.
Как нам задавать кодировку? Поскольку HTML пишется на английском, и почти все кодировки прекрасно работают с английским, мы можем указать кодировку в начале раздела .
Важно сделать это в самом начале , поскольку парсинг HTML может начаться заново, если в данный момент используется неправильная кодировка. Также узнать версию кодировки можно из заголовка Content-Type HTTP-запроса/ответа.
Если HTML-документ не содержит упоминания кодировки, спецификация HTML5 предлагает такое интересное решение, как BOM-сниффинг. С его помощью мы по маркеру порядка байтов (BOM) можем определить используемую кодировку.
Это всё?
Unicode ещё не завершён. Как и в случае с любым стандартом, мы что-то добавляем, убираем, предлагаем новое. Никакие спецификации нельзя назвать «завершёнными». Обычно в год бывает 1-2 релиза, найти их описание можно здесь.
Если вы дочитали до конца, то вы молодцы. Предлагаю сделать домашнюю работу. Посмотрите, как могут ломаться сайты при использовании неправильной кодировки. Я воспользовался этим расширением для Google Chrome, поменял кодировку и попытался открывать разные страницы. Информация была совершенно нечитаемой. Попробуйте сами, как выглядит бнопня. Это поможет понять, насколько важна кодировка.
Заключение
При написании этой статьи я узнал о Майкле Эверсоне. С 1993 года он предложил больше 200 изменений в Unicode, добавил в стандарт тысячи символов. По состоянию на 2003 год он считался самым продуктивным участником. Он один очень сильно повлиял на облик Unicode. Майкл — один из тех, кто сделал интернет таким, каким мы его сегодня знаем. Очень впечатляет.
Надеюсь, мне удалось показать вам, для чего нужны кодировки, какие проблемы они решают, и что происходит при их сбоях.
Источник