Zitat von: Gunther am 21 März 2025, 06:07:12Nur die bestehenden Hue-Devices (Lampen, Zwischenstecker,....) verweisen auf die alte Conbee-Definition und schalten logischerweise mit der neuen Conbeedefinition nicht.
my $svg_icon=::FW_makeImage($ic);
if(!($svg_icon =~ s/\sheight="[^"]*"/ height="18"/)) {
$svg_icon =~ s/svg/svg height="18"/ }
if(!($svg_icon =~ s/\swidth="[^"]*"/ width="18"/)) {
$svg_icon =~ s/svg/svg width="18"/ }
$out.='<g transform="translate('.$ix.', '.$iy.') translate(9, 9) scale('.$iscale.') translate(-9, -9) rotate('.$rotate.',9,9) ">';
$out.= $svg_icon;
$out.='</g>';
EASTRON WaveShare M1 timeout waiting for reply to fc 4 to id 1, i200, len 26
EASTRON WaveShare M1 timeout waiting for reply to fc 4 to id 1, i200, len 26
EASTRON WaveShare M2 timeout waiting for reply to fc 4 to id 4, i0, len 18
EASTRON WaveShare M2 timeout waiting for reply to fc 4 to id 4, i200, len 26
EASTRON WaveShare M3 timeout waiting for reply to fc 4 to id 5, i342, len 32
EASTRON WaveShare M3 timeout waiting for reply to fc 4 to id 5, i104, len 2
EASTRON WaveShare M4 timeout waiting for reply to fc 4 to id 1, i104, len 2
EASTRON WaveShare M5 timeout waiting for reply to fc 4 to id 1, i374, len 8
EASTRON WaveShare M5 timeout waiting for reply to fc 4 to id 1, i0, len 18
EASTRON WaveShare M6 timeout waiting for reply to fc 4 to id 2, i0, len 32
EASTRON WaveShare M6 timeout waiting for reply to fc 4 to id 1, i0, len 14
EASTRON WaveShare M7 timeout waiting for reply to fc 4 to id 1, i0, len 32
EASTRON WaveShare M7 timeout waiting for reply to fc 4 to id 2, i0, len 14
M8 Reserve
Deye PV1 WaveShare timeout waiting for reply to fc 3 to id 12, h500, len 1
Deye PV1 WaveShare timeout waiting for reply to fc 3 to id 12, h666, len 2
Deye PV2 WaveShare timeout waiting for reply to fc 3 to id 15, h514, len 5
Deye PV2 WaveShare timeout waiting for reply to fc 3 to id 15, h591, len 5
EP-EVER Pi-Shild PV3 slave replied with error code 83 / 02, illegal data address
EP-EVER NoNameRS485 PV4 slave replied with error code 83 / 02, illegal data address
Internals:
CFGFN /media/hdd/fhem/mycfg/schnittstellen_rasp02.cfg
DEF /dev/ttyACM1@9600
DeviceName /dev/ttyACM1@9600
EXPECT idle
FD 52
FUUID 66881de9-f33f-f4d2-da3e-4cedc2ffd91c9e75
LASTOPEN 1742211635.67558
MODE master
NAME ModbusRS485_2WS_OG2_HZR
NOTIFYDEV global
NR 493
NTFY_ORDER 50-ModbusRS485_2WS_OG2_HZR
PARTIAL
PROTOCOL RTU
STATE opened
SerialConn 1
TYPE Modbus
devioLoglevel 3
devioNoSTATE 1
eventCount 9
nextOpenDelay 60
nextQueueRun 1742557062.73234
QUEUE:
HASH(0x5571ffca68)
HASH(0x5571e891d8)
HASH(0x5571ed46e8)
HASH(0x5571cfcbc0)
HASH(0x5571e20008)
HASH(0x5571e82fe0)
HASH(0x5571bb40a0)
HASH(0x5571bf0218)
HASH(0x5571e24a40)
HASH(0x5571f123b8)
HASH(0x5571634b88)
HASH(0x55717c76f0)
HASH(0x5571d830d0)
HASH(0x55719527b0)
HASH(0x5571bcbf80)
HASH(0x5572197088)
HASH(0x5571dd2648)
HASH(0x5571c7a6e0)
HASH(0x5571c93d70)
HASH(0x557133df98)
HASH(0x5571d5a640)
HASH(0x5570a190e8)
HASH(0x5571bc4f00)
READ:
BUFFER
READINGS:
2025-03-21 10:05:22 LAST_ERROR timeout waiting for reply to fc 3 to id 15, h591, len 5
2025-03-17 12:40:35 state opened
REMEMBER:
lid 15
lname Deye_15k
lrecv 1742557062.63206
lsend 1742557062.60082
defptr:
Deye_15k 15
Attributes:
alias ModBus RS485 2 | WaveShare USB - OG2 Heizraum
devStateIcon opened:lan_rs485@0CFB0C Open:lan_rs485@red disconnected:lan_rs485@red disabled:lan_rs485@orange
devStateStyle style="text-align:left;font-weight:bold;"
disable 0
dropQueueDoubles 1
group Schnittstellen Modbus
icon lan_rs485
queueDelay 1
queueMax 200
queueTimeout 20
room _RxTx
showError 1
sortby 01.02
Internals:
CFGFN /media/hdd/fhem/mycfg/schnittstellen_rasp02.cfg
DEF 192.168.17.185:44851
DeviceName 192.168.17.185:44851
EXPECT idle
FD 10
FUUID 67b5c89b-f33f-f4d2-7223-f064a5307ca304fc
IODev ModbusRS485_1WS_EG_VR
LASTOPEN 1742495828.10091
MODE master
NAME ModbusRS485_1WS_EG_VR
NOTIFYDEV global
NR 501
NTFY_ORDER 50-ModbusRS485_1WS_EG_VR
PARTIAL
PROTOCOL RTU
STATE opened
TCPConn 1
TYPE Modbus
devioLoglevel 3
devioNoSTATE 1
eventCount 3
nextOpenDelay 60
QUEUE:
READ:
BUFFER
READINGS:
2025-03-18 13:38:37 LAST_ERROR timeout waiting for reply to fc 4 to id 1, i200, len 26
2025-03-20 19:37:08 state opened
REMEMBER:
lid 1
lname HTZ_SDM630M_01
lrecv 1742557124.31934
lsend 1742557124.29492
defptr:
HTZ_SDM630M_01 1
Attributes:
alias ModBus RS485 1 | WaveShare USB - EG Vorraum HV
devStateIcon opened:lan_rs485@0CFB0C Open:lan_rs485@red disconnected:lan_rs485@red disabled:lan_rs485@orange
devStateStyle style="text-align:left;font-weight:bold;"
disable 0
dropQueueDoubles 1
group Schnittstellen Modbus
icon lan_rs485
queueDelay 1
queueMax 200
queueTimeout 20
room _RxTx
showError 1
sortby 02.01
Internals:
CFGFN /media/hdd/fhem/mycfg/schnittstellen_rasp02.cfg
DEF 192.168.17.184:40401
DeviceName 192.168.17.184:40401
EXPECT idle
FD 58
FUUID 6245d473-f33f-f4d2-401a-8391e63bf0d11667
IODev ModbusRS485_AB_WS
LASTOPEN 1742211635.70036
MODE master
NAME ModbusRS485_AB_WS
NOTIFYDEV global
NR 520
NTFY_ORDER 50-ModbusRS485_AB_WS
PARTIAL
PROTOCOL RTU
STATE opened
TCPConn 1
TYPE Modbus
devioLoglevel 3
devioNoSTATE 1
eventCount 11902
nextOpenDelay 60
QUEUE:
READ:
BUFFER
READINGS:
2025-03-21 12:39:30 LAST_ERROR slave replied with error code 83 / 02, illegal data address
2025-03-17 12:40:37 state opened
REMEMBER:
lid 1
lname EPEVER_T3210AN_PV3
lrecv 1742557171.13546
lsend 1742557171.108
defptr:
EPEVER_T3210AN_PV3 1
Attributes:
alias ModBus RS485 | Pi Shield - AB Wetterstation
devStateIcon opened:lan_rs485@0CFB0C Open:lan_rs485@red disconnected:lan_rs485@red
devStateStyle style="text-align:left;;font-weight:bold;;"
disable 0
dropQueueDoubles 1
group Schnittstellen Modbus
icon lan_rs485
queueDelay 1
queueMax 200
queueTimeout 20
room _RxTx
showError 1
toggletostate
Funktioniert nur bei auf falling oder rising gesetztem Attribut interrupt
Wenn auf "yes" gestellt wird bei jedem Triggerereignis das state reading invertiert
Standard: no, gültige Werte: yes, no
define fhempy_local BindingsIo fhempy
attr fhempy_local devStateIcon { my $attr_ver = "1.1.0";;;; my $status_img = "10px-kreis-gruen";;;; my $status_txt = "connected";;;; my $ver = ReadingsVal($name, "version", "-");;;; my $ver_available = ReadingsVal($name, "version_available", $ver);;;; my $update_icon = "";;;; my $refresh_img = "refresh";;;; my $refresh_txt = "Update fhempy";;;; if ($ver_available ne $ver) { $refresh_img = "refresh\@orange";;;; $refresh_txt = "Version ".$ver_available." available for update";;;; } if (ReadingsVal($name, "state", "disconnected") eq "disconnected") { $status_img = "10px-kreis-rot";;;; $status_txt = "disconnected";;;; } $update_icon = "<a href=\"/fhem?cmd.dummy=set $name update&XHR=1\" title=\"Start ".$ver_available." update\">".FW_makeImage($refresh_img, $refresh_txt)."</a>";;;; my $restart_icon = "<a href=\"/fhem?cmd.dummy=set $name restart&XHR=1\" title=\"Restart fhempy\">".FW_makeImage("control_reboot")."</a>";;;; "<div><a>".FW_makeImage($status_img, $status_txt)."</a><a> ".$ver." </a>".$update_icon.$restart_icon."</div>" }
attr fhempy_local group fhempy
attr fhempy_local icon file_json-ld2
attr fhempy_local room fhempy
attr fhempy_local verbose 0
# BindingType fhempy
# DEF fhempy
# DeviceName ws:127.0.0.1:15733
# FD 296
# FUUID 674dc883-f33f-a79d-0852-730e9d04a64d6aa9
# IP 127.0.0.1
# NAME fhempy_local
# NR 825
# NTFY_ORDER 50-fhempy_local
# PARTIAL
# PORT 15733
# STATE opened
# TYPE BindingsIo
# WEBSOCKET 1
# binary 1
# connecttime 1742553064.14896
# devioLoglevel 0
# eventCount 10
# installing 0
# localBinding 1
# nextOpenDelay 10
# prev_error 127.0.0.1: Verbindungsaufbau abgelehnt (111)
# READINGS:
# 2025-03-21 11:31:08 hostname R4
# 2025-03-21 11:31:08 os posix
# 2025-03-21 11:31:08 python 3.9.2
# 2025-03-21 11:31:08 release 6.6.62-v8+
# 2025-03-21 11:31:04 state opened
# 2025-03-21 11:31:08 system Linux
# 2025-03-21 11:31:08 version 0.1.753
# 2025-03-21 11:31:11 version_available 0.1.753
# 2025-03-21 11:31:11 version_release_notes <html><a href="https://github.com/fhempy/fhempy/releases" target="_blank">Release Notes</a></html>
# args:
# fhempy_local
# BindingsIo
# fhempy
# messages:
# 0:
# RCT:
# tuya_smartlife_bf4930061fa45b4ae2fnq9:
# tuya_smartlife_bfac6bd4d8dc1b8f09dahr:
# tuya_smartlife_bfaf7d2add5cbf5932vxir:
# tuya_smartlife_bfb2611eda4f2f54fcweii:
# tuya_smartlife_bfc79f5fc0a9ce7e03rpka:
# tuya_smartlife_bfc7c0fde4ad7252f61vwm:
# tuya_smartlife_integration:
#
setstate fhempy_local opened
setstate fhempy_local 2025-03-21 11:31:08 hostname R4
setstate fhempy_local 2025-03-21 11:31:08 os posix
setstate fhempy_local 2025-03-21 11:31:08 python 3.9.2
setstate fhempy_local 2025-03-21 11:31:08 release 6.6.62-v8+
setstate fhempy_local 2025-03-21 11:31:04 state opened
setstate fhempy_local 2025-03-21 11:31:08 system Linux
setstate fhempy_local 2025-03-21 11:31:08 version 0.1.753
setstate fhempy_local 2025-03-21 11:31:11 version_available 0.1.753
setstate fhempy_local 2025-03-21 11:31:11 version_release_notes <html><a href="https://github.com/fhempy/fhempy/releases" target="_blank">Release Notes</a></html>
pi@R4:~ $ find -name fhem.py
find: './.dbus': Keine Berechtigung
pi@R4:~ $ sudo find -name fhem.py
find: './thinclient_drives': Keine Berechtigung
<ftui-grid-tile row="2" col="6" height="1" width="1" shape="round">
<ftui-grid-header>Weather Bar</ftui-grid-header>
<ftui-weather-bar [min-temp]="WeatherLocal:fc0_Tn | fix(0)" [max-temp]="WeatherLocal:fc0_Tx | fix(0)" min="-5" max="30"></ftui-weather-bar>
<ftui-weather-bar [min-temp]="WeatherLocal:fc1_Tn | fix(0)" [max-temp]="WeatherLocal:fc1_Tx | fix(0)" min="-5" max="30"></ftui-weather-bar>
<ftui-weather-bar [min-temp]="WeatherLocal:fc2_Tn | fix(0)" [max-temp]="WeatherLocal:fc2_Tx | fix(0)" min="-5" max="30"></ftui-weather-bar>
<ftui-weather-bar [min-temp]="WeatherLocal:fc3_Tn | fix(0)" [max-temp]="WeatherLocal:fc3_Tx | fix(0)" min="-5" max="30"></ftui-weather-bar>
<ftui-weather-bar [min-temp]="WeatherLocal:fc4_Tn | fix(0)" [max-temp]="WeatherLocal:fc4_Tx | fix(0)" min="-5" max="30"></ftui-weather-bar>
</ftui-grid-tile>
<svg class="icon weather_barometric_pressure" data-txt="weather_barometric_pressure" version="1.0" xmlns="http://www.w3.org/2000/svg" width="468pt" height="470pt" viewBox="0 0 468 470" preserveAspectRatio="xMidYMid meet" style="--myRot: 0deg;">
<metadata> Created by potrace 1.8, written by Peter Selinger 2001-2007 </metadata>
<g transform="translate(0,470) scale(0.158108,-0.158108)" stroke="none">
<path d="M702 2958 c-6 -9 -6 -71 2 -188 11 -173 11 -175 35 -178 l24 -4 -8 184 c-7 171 -12 197 -36 198 -4 0 -11 -6 -17 -12z"></path>
<path d="M887 2963 c-3 -4 -6 -62 -8 -128 -4 -117 -3 -120 18 -123 20 -3 22 2 28 70 10 110 4 182 -17 186 -9 2 -18 -1 -21 -5z"></path>
<path d="M1057 2906 c-17 -118 -19 -203 -7 -211 21 -13 33 12 46 102 20 133 19 153 -10 153 -20 0 -24 -6 -29 -44z"></path>
<path d="M1230 2863 c-7 -32 -18 -86 -25 -120 -13 -66 -12 -73 16 -73 13 0 21 19 37 88 38 164 38 162 9 162 -23 0 -27 -6 -37 -57z"></path>
<path d="M1366 2710 c-46 -161 -51 -207 -24 -198 15 5 121 336 114 355 -3 7 -14 13 -24 13 -15 0 -26 -29 -66 -170z"></path>
<path d="M1575 2808 c-2 -7 -20 -55 -40 -106 -19 -52 -35 -100 -35 -108 0 -17 36 -19 43 -1 59 141 86 211 81 218 -8 13 -44 11 -49 -3z"></path>
<path d="M1689 2643 c-48 -103 -54 -133 -27 -133 16 0 118 189 118 219 0 15 -6 21 -20 21 -17 0 -31 -22 -71 -107z"></path>
<path d="M1837 2571 c-60 -103 -68 -131 -39 -131 25 0 145 199 130 217 -20 25 -34 12 -91 -86z"></path>
<path d="M1942 2434 c-56 -80 -102 -152 -102 -160 0 -8 8 -14 18 -14 14 1 179 212 215 276 8 14 -7 44 -22 44 -4 0 -53 -66 -109 -146z"></path>
<path d="M2103 2380 c-40 -48 -73 -96 -73 -105 0 -35 39 -8 114 78 62 72 75 92 65 103 -6 8 -17 14 -23 13 -6 0 -44 -40 -83 -89z"></path>
<path d="M2226 2271 c-62 -62 -87 -94 -83 -105 4 -9 11 -16 16 -16 15 0 181 160 181 175 0 7 -6 17 -13 23 -10 9 -34 -9 -101 -77z"></path>
<path d="M2333 2150 c-61 -54 -90 -86 -86 -95 9 -25 26 -17 108 51 113 93 111 90 95 108 -7 9 -15 16 -19 16 -4 0 -48 -36 -98 -80z"></path>
<path d="M2495 2068 c-228 -168 -254 -190 -249 -203 4 -8 11 -15 16 -15 6 0 75 45 155 101 100 70 143 106 141 117 -5 25 -29 24 -63 0z"></path>
<path d="M1865 1944 c-161 -147 -345 -232 -409 -190 -31 20 -60 21 -76 2 -19 -24 -7 -59 30 -84 31 -21 43 -23 105 -19 39 3 81 8 95 12 16 5 -84 -102 -264 -283 -273 -274 -291 -290 -315 -281 -37 14 -64 4 -101 -37 -28 -33 -31 -42 -26 -78 l6 -41 -288 -288 -289 -289 -41 21 c-89 45 -189 36 -258 -23 -31 -27 -36 -36 -30 -59 10 -40 46 -45 93 -13 45 31 110 35 153 10 66 -40 84 -134 37 -201 -31 -45 -27 -80 11 -90 35 -9 53 5 85 68 24 45 28 63 25 114 -2 36 -12 77 -25 101 l-21 41 291 290 292 290 42 -4 c39 -5 46 -2 79 31 34 34 36 40 31 79 l-6 43 289 289 c286 286 289 289 274 240 -28 -90 -7 -184 48 -219 13 -8 22 -6 37 8 25 23 26 42 5 85 -13 27 -14 40 -5 78 25 97 120 250 210 338 42 40 53 79 29 103 -23 23 -53 11 -113 -44z" style="transform-origin: 1000px 1000px; transform: rotate(var(--myRot));"></path>
<path d="M2590 1928 c-155 -98 -169 -108 -164 -123 4 -8 11 -15 17 -15 13 0 205 109 212 120 8 12 -6 40 -19 40 -6 0 -27 -10 -46 -22z"></path>
<path d="M2605 1745 c-93 -50 -120 -75 -96 -89 5 -3 59 17 121 46 93 43 110 55 108 72 -2 11 -10 22 -18 23 -8 0 -60 -23 -115 -52z"></path>
<path d="M2668 1593 c-60 -25 -108 -48 -108 -52 0 -3 4 -12 9 -20 7 -11 30 -6 125 29 102 38 117 46 114 64 -2 11 -10 22 -18 23 -8 1 -63 -19 -122 -44z"></path>
<path d="M2666 1420 c-157 -51 -178 -62 -158 -82 9 -9 52 0 184 39 146 42 173 53 173 69 0 31 -39 26 -199 -26z"></path>
<path d="M2763 1276 c-99 -23 -117 -33 -103 -56 7 -12 22 -11 107 4 125 24 143 31 143 56 0 26 -24 25 -147 -4z"></path>
<path d="M2795 1111 c-89 -13 -110 -19 -113 -34 -5 -27 17 -29 139 -15 111 13 114 14 114 38 0 31 -5 31 -140 11z"></path>
<path d="M2813 943 c-100 -4 -135 -16 -118 -43 10 -15 252 -13 258 3 6 17 -11 47 -26 45 -7 -1 -58 -4 -114 -5z"></path>
<path d="M2574 759 c-3 -6 -2 -15 4 -21 11 -11 184 -26 305 -27 64 -1 67 0 67 23 0 22 -4 23 -82 29 -131 11 -286 8 -294 -4z"></path>
<path d="M1680 621 l-35 -6 -3 -302 -2 -303 60 0 60 0 0 159 c0 173 -1 171 59 171 53 0 60 -21 63 -180 l3 -145 60 0 60 0 0 155 c0 174 -9 203 -76 248 -29 20 -44 23 -102 20 l-67 -3 0 98 c0 108 5 103 -80 88z"></path>
<path d="M2143 563 l-23 -4 0 -275 0 -274 65 0 65 0 0 95 0 95 58 0 c109 0 185 37 221 107 14 28 14 128 0 156 -23 44 -64 78 -113 92 -47 14 -217 19 -273 8z m243 -118 c19 -12 24 -24 24 -60 0 -55 -21 -71 -103 -81 l-57 -7 0 80 c0 44 3 83 8 87 11 12 102 -1 128 -19z"></path>
<path d="M2650 431 c-22 -6 -25 -12 -21 -47 1 -21 5 -42 7 -45 2 -3 37 -4 77 -1 66 4 77 2 96 -17 39 -39 28 -51 -47 -51 -125 0 -195 -61 -178 -154 19 -99 120 -135 293 -105 l63 11 0 155 c0 183 -8 211 -74 243 -44 21 -160 27 -216 11z m180 -286 l0 -45 -53 0 c-55 0 -77 12 -77 41 0 32 29 49 81 49 l49 0 0 -45z"></path>
</g>
</svg>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bla</title>
</head>
<body>
<button class="rotate-btn" onclick="rotateSVG(15)">Rotate SVG +</button>
<button class="rotate-btn" onclick="rotateSVG(-15)">Rotate SVG -</button>
<div id="svg-container">
<svg class="icon weather_barometric_pressure" data-txt="weather_barometric_pressure" version="1.0" xmlns="http://www.w3.org/2000/svg" width="468pt" height="470pt" viewBox="0 0 468 470" preserveAspectRatio="xMidYMid meet" style="--myRot: 0deg;">
<metadata> Created by potrace 1.8, written by Peter Selinger 2001-2007 </metadata>
<g transform="translate(0,470) scale(0.158108,-0.158108)" stroke="none">
<path d="M702 2958 c-6 -9 -6 -71 2 -188 11 -173 11 -175 35 -178 l24 -4 -8 184 c-7 171 -12 197 -36 198 -4 0 -11 -6 -17 -12z"></path>
<path d="M887 2963 c-3 -4 -6 -62 -8 -128 -4 -117 -3 -120 18 -123 20 -3 22 2 28 70 10 110 4 182 -17 186 -9 2 -18 -1 -21 -5z"></path>
<path d="M1057 2906 c-17 -118 -19 -203 -7 -211 21 -13 33 12 46 102 20 133 19 153 -10 153 -20 0 -24 -6 -29 -44z"></path>
<path d="M1230 2863 c-7 -32 -18 -86 -25 -120 -13 -66 -12 -73 16 -73 13 0 21 19 37 88 38 164 38 162 9 162 -23 0 -27 -6 -37 -57z"></path>
<path d="M1366 2710 c-46 -161 -51 -207 -24 -198 15 5 121 336 114 355 -3 7 -14 13 -24 13 -15 0 -26 -29 -66 -170z"></path>
<path d="M1575 2808 c-2 -7 -20 -55 -40 -106 -19 -52 -35 -100 -35 -108 0 -17 36 -19 43 -1 59 141 86 211 81 218 -8 13 -44 11 -49 -3z"></path>
<path d="M1689 2643 c-48 -103 -54 -133 -27 -133 16 0 118 189 118 219 0 15 -6 21 -20 21 -17 0 -31 -22 -71 -107z"></path>
<path d="M1837 2571 c-60 -103 -68 -131 -39 -131 25 0 145 199 130 217 -20 25 -34 12 -91 -86z"></path>
<path d="M1942 2434 c-56 -80 -102 -152 -102 -160 0 -8 8 -14 18 -14 14 1 179 212 215 276 8 14 -7 44 -22 44 -4 0 -53 -66 -109 -146z"></path>
<path d="M2103 2380 c-40 -48 -73 -96 -73 -105 0 -35 39 -8 114 78 62 72 75 92 65 103 -6 8 -17 14 -23 13 -6 0 -44 -40 -83 -89z"></path>
<path d="M2226 2271 c-62 -62 -87 -94 -83 -105 4 -9 11 -16 16 -16 15 0 181 160 181 175 0 7 -6 17 -13 23 -10 9 -34 -9 -101 -77z"></path>
<path d="M2333 2150 c-61 -54 -90 -86 -86 -95 9 -25 26 -17 108 51 113 93 111 90 95 108 -7 9 -15 16 -19 16 -4 0 -48 -36 -98 -80z"></path>
<path d="M2495 2068 c-228 -168 -254 -190 -249 -203 4 -8 11 -15 16 -15 6 0 75 45 155 101 100 70 143 106 141 117 -5 25 -29 24 -63 0z"></path>
<path d="M1865 1944 c-161 -147 -345 -232 -409 -190 -31 20 -60 21 -76 2 -19 -24 -7 -59 30 -84 31 -21 43 -23 105 -19 39 3 81 8 95 12 16 5 -84 -102 -264 -283 -273 -274 -291 -290 -315 -281 -37 14 -64 4 -101 -37 -28 -33 -31 -42 -26 -78 l6 -41 -288 -288 -289 -289 -41 21 c-89 45 -189 36 -258 -23 -31 -27 -36 -36 -30 -59 10 -40 46 -45 93 -13 45 31 110 35 153 10 66 -40 84 -134 37 -201 -31 -45 -27 -80 11 -90 35 -9 53 5 85 68 24 45 28 63 25 114 -2 36 -12 77 -25 101 l-21 41 291 290 292 290 42 -4 c39 -5 46 -2 79 31 34 34 36 40 31 79 l-6 43 289 289 c286 286 289 289 274 240 -28 -90 -7 -184 48 -219 13 -8 22 -6 37 8 25 23 26 42 5 85 -13 27 -14 40 -5 78 25 97 120 250 210 338 42 40 53 79 29 103 -23 23 -53 11 -113 -44z" style="transform-origin: 1000px 1000px; transform: rotate(var(--myRot)); transition: transform 1s ease-in-out;"></path>
<path d="M2590 1928 c-155 -98 -169 -108 -164 -123 4 -8 11 -15 17 -15 13 0 205 109 212 120 8 12 -6 40 -19 40 -6 0 -27 -10 -46 -22z"></path>
<path d="M2605 1745 c-93 -50 -120 -75 -96 -89 5 -3 59 17 121 46 93 43 110 55 108 72 -2 11 -10 22 -18 23 -8 0 -60 -23 -115 -52z"></path>
<path d="M2668 1593 c-60 -25 -108 -48 -108 -52 0 -3 4 -12 9 -20 7 -11 30 -6 125 29 102 38 117 46 114 64 -2 11 -10 22 -18 23 -8 1 -63 -19 -122 -44z"></path>
<path d="M2666 1420 c-157 -51 -178 -62 -158 -82 9 -9 52 0 184 39 146 42 173 53 173 69 0 31 -39 26 -199 -26z"></path>
<path d="M2763 1276 c-99 -23 -117 -33 -103 -56 7 -12 22 -11 107 4 125 24 143 31 143 56 0 26 -24 25 -147 -4z"></path>
<path d="M2795 1111 c-89 -13 -110 -19 -113 -34 -5 -27 17 -29 139 -15 111 13 114 14 114 38 0 31 -5 31 -140 11z"></path>
<path d="M2813 943 c-100 -4 -135 -16 -118 -43 10 -15 252 -13 258 3 6 17 -11 47 -26 45 -7 -1 -58 -4 -114 -5z"></path>
<path d="M2574 759 c-3 -6 -2 -15 4 -21 11 -11 184 -26 305 -27 64 -1 67 0 67 23 0 22 -4 23 -82 29 -131 11 -286 8 -294 -4z"></path>
<path d="M1680 621 l-35 -6 -3 -302 -2 -303 60 0 60 0 0 159 c0 173 -1 171 59 171 53 0 60 -21 63 -180 l3 -145 60 0 60 0 0 155 c0 174 -9 203 -76 248 -29 20 -44 23 -102 20 l-67 -3 0 98 c0 108 5 103 -80 88z"></path>
<path d="M2143 563 l-23 -4 0 -275 0 -274 65 0 65 0 0 95 0 95 58 0 c109 0 185 37 221 107 14 28 14 128 0 156 -23 44 -64 78 -113 92 -47 14 -217 19 -273 8z m243 -118 c19 -12 24 -24 24 -60 0 -55 -21 -71 -103 -81 l-57 -7 0 80 c0 44 3 83 8 87 11 12 102 -1 128 -19z"></path>
<path d="M2650 431 c-22 -6 -25 -12 -21 -47 1 -21 5 -42 7 -45 2 -3 37 -4 77 -1 66 4 77 2 96 -17 39 -39 28 -51 -47 -51 -125 0 -195 -61 -178 -154 19 -99 120 -135 293 -105 l63 11 0 155 c0 183 -8 211 -74 243 -44 21 -160 27 -216 11z m180 -286 l0 -45 -53 0 c-55 0 -77 12 -77 41 0 32 29 49 81 49 l49 0 0 -45z"></path>
</g>
</svg>
</div>
<script>
function rotateSVG(bla) {
const svgElement = document.querySelector('.icon');
let currentRotation = parseInt(getComputedStyle(svgElement).getPropertyValue('--myRot') || 0);
const newRotation = currentRotation + bla;
svgElement.style.setProperty('--myRot', `${newRotation}deg`);
}
</script>
</body>
</html>