Jump to content

Welcome to Smart Home Forum by FIBARO

Dear Guest,

 

as you can notice parts of Smart Home Forum by FIBARO is not available for you. You have to register in order to view all content and post in our community. Don't worry! Registration is a simple free process that requires minimal information for you to sign up. Become a part of of Smart Home Forum by FIBARO by creating an account.

 

As a member you can:

  •     Start new topics and reply to others
  •     Follow topics and users to get email updates
  •     Get your own profile page and make new friends
  •     Send personal messages
  •     ... and learn a lot about our system!

 

Regards,

Smart Home Forum by FIBARO Team


Z-wave monitor 3.0

   (12 reviews)

7 Screenshots

About This File

This scene monitors and catches Z-wave commands traffic between controller and devices. The data displayed to user as a table which includes total commands and their properties per device, in addition same data displayed at graphical chart and shows system activities over the time. Since Z-wave protocol is not a fastest one  (in many case it's just freeze) this code helps to analyze the data and to take necessary actions to reduce overall Z-wave traffic and system load.

Scene functionality

1. This is not an auto started scene. You need to start it manually. While the scene is running, you can switch views  between table/chart and  monitor (follow instructions on screen).

2. User configurable parameters are:

gVar = true-- Create and use global predefined variable. The scene could work with local table as well, but by using global parameter you can keep history of the traffic. It very helpful when you're updating the system to new release, to compare Z-wave performance. In case you have decided to use global variable, copy the data to other variable to keep the history. To view data of saved variable please download and use Z-wave Viewer scene.  Z-wave Viewer could be executed in parallel to Z-wave Monitor as well (when using global variable only)

logRate = 5     -- Time rate in minutes to log Z-wave activity. Used as axis X scale in charts view. Reasonable value 5 to15 minutes for 24 hours of monitoring. In case to achieve better resolution the value could be decreased down to 1 minute.
time2monitor = 6   -- Time-slot in hours to monitor z-wave traffic, after that time, table and chart will be displayed on debug window and scene will stopped. Value of  0 hours disables auto ending. User needs to stop the monitoring. If less than hour monitoring required please use decimal fraction. For example to set monitor time to 15 minutes set, time2monitor = .25

 markId = "|0|0|", " Cyan" -- Devices (IDs) list and text color to display specific devices in defined color at monitor view for follow up purpose. In few cases you need to monitor specific device, so fill-in the device ID and it will be highlighted by different color from other devices.
deadOnTop = {true, "maroon"}  -- Display DEAD devices on top of the monitor view list in defined text color. Since we're not always looking on the screen, so in case the system will identify dead device it will continuously display the device (in red) on debug window.

 

All variables below are the same for Z-wave Monitor  and  Z-wave Viewer
chartHeight = 100        -- Chart height in percents (%). Chart's default height fits debug window.  The variable changes height of all charts (devices.scenes and events)
chartWidth = 100         -- Chart width in percents (%). Chart's default width expands according to number of samples.  User could expand the width  to get better detail view or to stretch to visualize the load on time axis or to take snap shot of entire time line. The variable changes width of all charts (devices.scenes and events)

 

topDev2disp = 6          -- Number of most active devices to display on devices chart.  If set to zero chart won't be displayed.
topScene2disp= 10        -- Number of most active scenes to display on scenes chart. If set to zero chart won't be displayed.

darkSkinMode = true      -- Charts display skin mode. Set false for light (white) skin.

dev2review={false,"|470|804"} -- Generate chart for every device in list of actual device readings over the monitoring time. For devices with two results (like power and energy) both reading will be displayed. On left and right sides of the chart  applicable scale displayed. Please note, no chart is generated for devices like motion, door and any other sensors, which provide values of true/false.
userDev={false,"|504|_531|"} -- User defined devices and scenes IDs to generate specific combined chart. Please write underscore before scene ID |_531| 

stackedChart=true        --  A stacked line chart is an line chart in which lines do not overlap because they are cumulative at each point. Set to false to view standard line char. All charts except ZKG chart (events,CPU and RAM) will be displayed according to this variable.

 

 

 

Brief explanation what is displayed:

1. Monitor view

Spoiler

Monitor.thumb.PNG.03a79c7e67f6ed17b938e4a6816358cc.PNG

This snap shot includes top and dead devices marked in different color from other devices.

Two main sections in this view:

Header

             1:08:07/ 6:00:00               1824 events/77 devices            event/2.3s               (Click Start for )

    Elapsed Time/Monitoring time             Number of Z-wave events/devices          Z-wave traffic rate        Click to switch to table/chart view

               

Devices list

Every device displayed at follow format -

 #2/34TV509@Salon(216.7 power

#2/34 -First number is number of events during logRate slot. Second number is total number for events so far.

TV509@Salon - device name, ID and room name

(216.7 power) - actual reading and reading property

 

 

2. Table view

Spoiler

Capture.thumb.PNG.b5997f3c8e4aa29e1831a47c8ede2f31.PNG

total # - number of total Z-wave events on device

total %  - Percentage of device's events of total system Z-wave events.

All yellow marked headers are received Z-wave properties, except two properties, dead and deadReason which are marked in red. For each device displayed the total number of this specific properties. Red marked ID, means that device was or is "dead" 

By hovering mouse over device IDs, device and room names will be display (tool-tip) at popup box.

At the end displayed few extra summaries 

Spoiler

Capture1.PNG.8065d5ab4803b5c68ddef7ddcf2a9871.PNG

 Elapsed time and Start-End timestamps

Sample log rate as defined by user. Total samples during monitoring time

Total Z-wave events and total number of active devices

Average Z-wave traffic rate

Z-traffic range. Shows the highest and lowest z-wave activities during monitoring time.

If dead devices have found, list of them is displayed

 

3. Most active devices chart

Spoiler

Capture.PNG.e90b7a56fa3058c789857fa0fb5ffdc1.PNG

Spoiler

Capture.thumb.PNG.f369d5fdde5948a8cabf0de9622d4d68.PNG

Example of stacked chart

This chart shows events number of most active devices ( up to number of all active devices allowed by setting topDevNum variable ) on monitoring time-line. On the right-upper corner displayed ID, name and room of the device. By hovering mouse on diagrams or legend, selected item will emphasized in bold to make the item more visible.

 

4. Most active scenes chart

Spoiler

Capture1.thumb.PNG.e38fafcb73177760815771169191cb2e.PNG

This chart shows triggers number of most active scenes ( up to number of all triggered scenes allowed by setting topDevNum variable ) on monitoring time-line. On the right-upper corner displayed ID, name and room of the scenes. By hovering mouse on diagrams or legend, selected item will emphasized in bold to make the item more visible.

5. Review device's actual readings - (dev2review)

Spoiler

Capture.thumb.PNG.f1fd2093d8d91a7f1dec7382596a7170.PNG

For devices with two results (like power and energy) both reading will be displayed. On left and right sides of the chart  applicable scale displayed.

This chart most useful to identify  if device configured to send reports interval at high rate and " differ in readings to send report" set to very low value.

By hovering mouse over the chart, will scale down the diagram to make visible entire range. In case the horizontal scrollbar is not in the middle of the chart , the diagram will flicker.

  

 

 

6. User defined combined chart

Spoiler

Capture.thumb.PNG.f2aa40a059c15f756bf6a3c7416ec0c9.PNG

In some cases we  need to inspect behavior of some devices and scene that triggered by the device. This chart shows user defined devices and scenes on monitoring time-line. On the right-upper corner displayed ID, name and room of the scenes and/or device. By hovering mouse on diagrams or legend, selected item will emphasized in bold to make the item more visible.

 

 

 

7. ZKG Chart View

Spoiler

Capture.thumb.PNG.70eb773105c5db8d90d4045e1c22b3a2.PNG

Chart view shows Z-wave traffic and system load on time line (based on logRate value). You actually could see your smart home beating heart (like EKG). I have named as ZKG (Z-wave cardiogram). Now it's possible to see the "rush" and "quiet" hours of the system.

Chart view includes 5 diagrams displayed over time-line of monitoring period. The diagrams are:

  1. Z-wave events
  2. Triggered scenes
  3. CPU1  percentage
  4. CPU2  percentage
  5. RAM  percentage

At top-right corner of the screen, displayed legend of the diagrams and colors.

Events total number in same color as a diagram line.

CPU1 min  > avg < max in same color as a diagram line.

CPU2 min  > avg < max in same color as a diagram line.

RAM min  > avg < max  in same color as a diagram line.

Triggered scenes total in same color as a diagram line.

Most triggered scene ID  and scene's name in same color as a triggered scenes

In case dead devices have found during the monitoring period, the time stamp where it happened will colored red and at the top of the screen, directly above the time stamp, dead device(s) ID displayed.

Axis Y has two scales. Left scale  represents occurrence numbers of Z-wave events and triggered scenes. Right scale is a percentage and it related to CPU1, CPU2 and RAM measured values.

By hovering mouse on diagrams or legend, selected item will emphasized in bold to make the item more visible.

I'm strongly advising to use global variable and to view the data using Z-wave Viewer in parallel to Z-wave Monitor

The idea behind, that you can change parameters to view different devices/scenes on the fly.

By changing user configurable parameters in Z-wave Monitor you'll need to start the scene all over again.

Note:

The debug text of these scenes is very big, so If you're using Clear Debug scene, please remove these scenes from the list.

 

Please let me know if extra info is required.

Please report if any bug occurred.


What's New in Version 3.0   See changelog

Released

Bug fix:

1. System reboot initializes Zwave global variable to blank.

 

New features:

Added monitoring of "hidden" communication for repeated,report and pooling Zwave traffic.

The data displayed as "rpt", new column in table

Repeated traffic, means that the user code sends same command over and over to device. In this case device broadcasts back with report status of all his logical endpoints and creates unnecessary load on Zwave traffic. ( Please see Reduce Ztraffic  file at download center https://forum.fibaro.com/files/file/246-reduce-ztraffic-fibaro_call/ ).

Added monitoring of failed communication packets between device and controller (Transfer failed). The data displayed on the table at " nack " new column. This data implies on bad communication to device due to range or something blocks the Zwave ( like walls).

 

Added at end of the table summary of prt and nack measurements



User Feedback

Recommended Comments



Hi @cag014

Is it possible to add graphic chart for device actual reading over time?

It could be very helpful to identify :

  1. If the thresholds are small, causing many reports on every small change (Lux, power, energy, humidity and temperature).   
  2. Levels send based on interval timing, which by mistake could be set to very fast rate.

 

Link to comment
Share on other sites

Yes, it possible. Will give it a try.

I think I can create a chart that can display simultaneously two devices only. Using scale on axis Y (on left and Right sides).

Chart with more than two devices will be very messy and useless.

 

Link to comment
Share on other sites

Guest amilanov

Posted (edited)

I get the following error in the zwave viewer . Can you please tell me what I need to do to remove it?

 

[DEBUG] 21:57:58: Please wait while generating Z-wave traffic detailed report....
[DEBUG] 21:57:59: [1;31m2019-01-24 21:57:59.111321 [ fatal] Unknown exception: /opt/fibaro/scenes/757.lua:233: attempt to index local 'jK' (a number value)

 

In the zwave monitor I cannot see any instructions on screen to switch between table/chart

"While the scene is running, you can switch views  between table/chart and  monitor (follow instructions on screen)."

 

These look like awesome scenes btw!!!

Edited by amilanov
Link to comment
Share on other sites

First of all on Z-wave monitor, press start button of the scene to see that report. It shows on the screen.

Spoiler

Capture.thumb.PNG.14f7e3d1e4cd3193b13b28eef5c9c136.PNG

 

Regarding Z-wave Viewer error, please verify that Global Variable name is correct (as used by monitor). The name should be like ( zwave_'sceneID' )

 

Link to comment
Share on other sites

Guest amilanov

Posted (edited)

image.png.c3bd765632c1d1448e3fcbaa0af680a2.pngThanks!

 

The scene id of my zwave_monitor is 756. Is it expected that this debug message appears when you run the zwave_monitor:

 

image.png.c3bd765632c1d1448e3fcbaa0af680a2.png

 

In my zwave_viewer I updated: gVarName = "zwave_756" 

And I created a global variablele called "zwave_756"

 

Have I configured this correctly now?

 

 

EDIT: After running the zwave_monitor for a couple of hours I then clicked on the start button and the following error message returned:

 

image.png.5cb8e6e5a458c63909b0d8f6d8c70e6c.png

 

The a few seconds later this one

 

image.png.5eabc79c3d5261593c793e7d612b981c.png

 

Any ideas?

 

The error above only happens when I click start on the zwave_monitor after letting it run for a while. The z-wave viewer works fine.

If I click start on the zwave_monitor when it has been running for a short while it doesn't error out.

For now I am only running the zwave_viewer and leaving the zwave_monitor alone.

 

BTW: Love your work. Truly awesome effort. I've needed something like this for a long time. I've already fixed one zwave issue by deleting and adding back a Fibaro RGBW device.

 

 

Edited by amilanov
Link to comment
Share on other sites

Amazing work! 

This should be built in right from the start in firmware!

 

Could you explain this setting little further?

I don't really understand how to use it.

 

userDev={false,"|504|_531|"} -- User defined devices and scenes IDs to generate specific combined chart. Please write underscore before scene ID |_531|

 

Again, great work!

Incredibly valuable tool.

Link to comment
Share on other sites

This will generate additional chart with defined devices/scenes as you choose.

 

The use is very simple:

Choose any device or scene (not an automatic scenes.. that runs all the time)  in your system and you will see additional chart that shows selected devices/scenes on monitoring timeline.

Link to comment
Share on other sites

8 minutes ago, cag014 said:

This will generate additional chart with defined devices/scenes as you choose.

 

The use is very simple:

Choose any device or scene (not an automatic scenes.. that runs all the time)  in your system and you will see additional chart that shows selected devices/scenes on monitoring timeline.

 

Now i understand, i change the numbers to my specified devices and scenes, and before the LAST id i insert "_" underscore.

503 is just an example.

 

Did i get that right? :-) 

 

Thank you very much for the information!

And again, fantastic work.

Link to comment
Share on other sites

Guest cag014

Posted (edited)

Thank you...

I don't understand what you mean before LAST ID?

Let me explain:

Since in the system, device ID could me the same as scene ID, you need to insert underscore for scenes IDs.

For example: You want to see devices 405, 605,503 and scenes 503, 532. The userDev variable should be:

userDev={true,"|405|_503|503|_532|605|"}

There is no specific order for IDs, but you must to keep scene IDs with underscore.  As you see in this example, there are two same IDs, but one is device and other is scene,. To distinguish between them, the scene starts with underscore.

 

 

 

Edited by cag014
Link to comment
Share on other sites

My next task is to figure out what is a "normal" range of commands for a device.

 

I have 3x Fibaro RGBW that are taking up over 35% of my zwave traffic. One of these devices I deleted and added back to fix an issue I had with zwave network comms not going through, however I'm not sure whether it's normal for Fibaro RGBW modules to take up so much traffic. They each reported around 4000 commands, in the total # column, on your zwave viewer in less than 24 hours.


I'm tempted to delete the other 2x Fibaro RGBW modules and add them back, but it takes time updating code etc and given the deletion one of the three didn't reduce the traffic, I'm not sure what good it will do.

 

My other devices range from 10's to 1000 of commands in the same period of less than 24 hours. With most devices falling below 250 commands.

 

Can you or anyone share what is a normal range for the number of commands per device per 24 hours?

Link to comment
Share on other sites

I think you need to find out, what exactly sent over Z-wave... by deleting and adding back the device you've returned  all device parameters to default.

Did you change any parameters on other devices?

I don't think there is a "normal" range of commands per device, but I assume there is a "normal" range for command per specific time.

In my case my rate is command per 2.5 seconds. (34,560 commands per 24 hours). I don't know yet if it's normal, but I do not experience Z-wave freeze or system overload.

I have started topic to find out what is normal...  you're welcome to join and share your information. May be together we'll find the answer.

 

 

Link to comment
Share on other sites

@cag014

I keep getting this error on the z-wave viewer:

 

[DEBUG] 22:37:35: 2019-02-01 22:37:35.706655 [ fatal] Unknown exception: /opt/fibaro/scenes/757.lua:69: attempt to index field '?' (a nil value)

Link to comment
Share on other sites

Guest cag014

Posted (edited)

Trying to find the bug w/o success

Could you post your global variable?

In order to copy the variable data please use API

http://hc2/api/globalVariables/zwave_XXX

Much easier to copy from web page

Will try to run it...

Edited by cag014
Link to comment
Share on other sites

Guest amilanov

Posted (edited)

11 hours ago, cag014 said:

Trying to find the bug w/o success

 

It has never come back again. I think maybe I was clicking "start" the second time too quickly. 

Don't waste any time on it for now. I'll report back with the global variable if it happens again.

 

@cag014

Can you help with understanding how to reduce or stop zwave traffic?

1) I have a lot of "log" and "logTemp" traffic. No idea how to stop/reduce it

2) Fibaro RGBW modules seem to send lots of data "color", "lastColorSet", "brightness", value" - is all this necessary?

I recall that I can stop or reduce "power" messages on the RGBW which will reduce some traffic.


DEBUG] 11:05:04: Z-wave Monitor v2.2

HC2_Master (HC2-xxx) Z-wave traffic report. (event/1.6s)

id

total #

total %

value

log

logTemp

color

lastColorSet

brightness

power

sceneActivation

Device description

891

205

12.1%

43

   

39

33

39

51

 

Loft Sky RGB 6P @ Corridors

722

190

11.2%

43

   

39

33

39

36

 

1st-2nd RGB Stairs2P @ Corridors

545

176

10.4%

 

88

88

         

Family Fan @ Family Bath

546

176

10.4%

 

88

88

         

Family Alcove @ Family Bath

530

174

10.3%

38

68

68

         

1st Corr Light 1P @ Corridors

735

150

8.9%

19

30

30

18

16

18

19

 

Gnd-1st RGB Stairs 2 @ Corridors

365

116

6.9%

8

   

6

6

2

94

 

Loft Office RGB @ Loft Office

391

107

6.3%

13

   

12

10

12

60

 

Loft Bath RGB 2P @ Loft Bath

372

97

5.7%

13

   

12

10

12

50

 

Loft Bath White RGB @ Loft Bath

Elapsed  time   =   0:44:08   [ Feb 02 10:19  -  Feb 02 11:04 ]
Sample log rate = 5 minutes. Total samples 9
Z-wave  events  = 1702 on 48 devices.
Average traffic = 1.6 sec.
Z-traffic range = 0.8 - 3.4 sec.

 

 

EDIT_1: I wonder if I untick this whether lof and logTemp will stop: Save logs to Event Panel

EDIT_2: Nope, "log" and "logTemp" keep happening with the above box unchecked on a dimmer 1 module v2.2

 

@cag014

I can't tell you how amazing your code is. I have already reduced my zwave traffic enormously. Something I had no visibility into previously. Brilliant work!!!

 

Edited by amilanov
Link to comment
Share on other sites

1. Regarding log and logTemp, they are not part of "Save logs to event panel". There is a specific property for that named "saveLogs" which are ignored by Z-wave monitor.

It is very interesting what kind of report it is? Might be it's not a Z-wave event.

Could you tell me what kind of devices they are ?

May I ask you to post your zwave global variable and I'll try to see if it's part of Z-wave traffic or not?

 

2. Regarding RGBW device the "color", "lastColorSet", "brightness",  they are commands that sent from HC2.

Looks like you're sending too many commands to change the color and brightness. When the brightness or color changed, it causes to changes in power and device send new power level reading.

Trying to understand from table events, it looks to me that RGBW triggered by motion sensor and you set color and brightness.

If so, I suggest to check the brightness and color before sending the commands and if they are correct don't send any command.

 

 

 

Link to comment
Share on other sites

Finished the 24h test. For the size of the network i think the results are very good.


Elapsed time = 24:00:02 [ Feb 01 17:53 - Feb 02 17:54 ]
Sample log rate = 5 minutes. Total samples 287
Z-wave events = 4533 on 126 devices.
Average traffic = 19.1 sec.
Z-traffic range = 3.4 - 332 sec
.

Link to comment
Share on other sites

Guest cag014

Posted (edited)

Wow...  an excellent results. Looks like your network is very optimized and you have 126 devices, great job

You probably the user that need to share your knowledge how to make correct configuration of devices. .

Interesting... do you have big delays or freezes on your system?

 

Edited by cag014
Link to comment
Share on other sites

Eh.. i had some delays from time to time but i managed to always track down the source and fix it :) 

 

I have to admit it was always an explanation.  I still get the occasional HC2 freeze (the box, not only zwave engine) like once every 2 weeks but i live with that - installed an internet controlled dlink power plug on the HC2 so i can reboot it.

Scenes - the light ones are those who annoy me the most if they have delays - are working almost instant  95% of the time.  There are times when they take longer , for example when i get home and the house wakes up by first opening the blinds - 28 of them :D, but i think that's understandable.

I think it also helps that most of the fibaro motion sensors are hard wired to DC current  (6 out of 8 )

 

One thing that i can mention and i haven't seen it mentioned anywhere else on the forum so far it is that at some point in time - fw 4.x.x cant remember exactly which - i started to have serious lag issues and random zwave freezes.  I tracked those down to some fibaro UBS devices - i had about 7 of those. I removed 6 , only kept one outside the house that measures temperature and the water index :)  and all those problems went away.

 

I think somewhere along the FW line something has changed in how the UBS is managed . I tried to add one or two a while back and the issues came back, so i ditched them - they might be somewhat technically old and not 100% compatible with the latest FW versions :roll:

 

Anyways if i can help out in any way i will gladly do so, i learned so much from the users of this forum - without which i would have dumped Fibaro a looong time ago :)  @petergebruers, @AutoFrank, @cag014 and many others thank you again !!!

 

 

 

Link to comment
Share on other sites

Guest amilanov

Posted (edited)

On 2/2/2019 at 2:16 PM, cag014 said:

1. Regarding log and logTemp, they are not part of "Save logs to event panel". There is a specific property for that named "saveLogs" which are ignored by Z-wave monitor.

It is very interesting what kind of report it is? Might be it's not a Z-wave event.

Could you tell me what kind of devices they are ?

 

FIbaro Relay and Fibaro Dimmer 1

 

On 2/2/2019 at 2:16 PM, cag014 said:

May I ask you to post your zwave global variable and I'll try to see if it's part of Z-wave traffic or not?

 

I'll PM you the log later today.

 

On 2/2/2019 at 2:16 PM, cag014 said:

2. Regarding RGBW device the "color", "lastColorSet", "brightness",  they are commands that sent from HC2.

Looks like you're sending too many commands to change the color and brightness. When the brightness or color changed, it causes to changes in power and device send new power level reading.

 

I'm only sending commands when I have to turn on a light, dim the light level down or fully turn it off.

I significantly reduced my zwave traffic by only dimming after a 4-5 second sleep, where as before it was after a 1 second sleep

 

 

22 hours ago, Momos said:

Z-wave events = 4533 on 126 devices.

 

Wow! Do you have automated lighting?

It seems my automated lighting is creating most of my traffic

 

21 hours ago, Momos said:

fw 4.x.x cant remember exactly which - i started to have serious lag issues and random zwave freezes

 

Since 4.5x I have had a persistent lag issue. My automated lighting is taking at least 1 second longer to turn lights on.

It's livable only because it is working fine again now, but it is annoying. I have no dea what is causing it.

 

21 hours ago, Momos said:

i learned so much from the users of this forum - without which i would have dumped Fibaro a looong time ago :)  @petergebruers, @AutoFrank, @cag014 and many others thank you again !!!

 

I would have to agree. Thankfully we have a forum with people that are interested in helping each other out.

Edited by amilanov
Link to comment
Share on other sites

Of course i have automated lights. 11 light circuits i think.  They should not generate much traffic. Biggest traffic generators should be motion sensors.  But the lights scenes should be on top of the scenes list. At least that's in my case. 

Link to comment
Share on other sites

8 hours ago, amilanov said:

I'm only sending commands when I have to turn on a light, dim the light level down or fully turn it off.

Do you check the light state before? I mean you can check if the light is on, the color and the level before sending commands.

From your report looks like you Z-wave traffic is very high  (average event/1.6 sec is very high). I believe you do have large delays time to time.

Link to comment
Share on other sites

2 hours ago, Momos said:

They should not generate much traffic.

 

How are you dimming them without creating much traffic?

1 hour ago, cag014 said:

Do you check the light state before?

 

Yes, of course. Checking values doesn't create traffic. I always check values before changing them over the network. 

 

Most of my traffic comes from dimming lights, which I have NOW changed to only happen after a 5x 1 second sleeps, so in reality now dim commands are only sent every 8-10 seconds rather than every 1.5 seconds.

 

Commands to softly dim lights off creates lots of traffic.

 

Link to comment
Share on other sites


Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...