node-red-contrib-loewe-tv 0.2.3 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/doc/.gitkeep +0 -0
- package/doc/ActionMessages.txt +57 -0
- package/doc/control_interface_specification_SL3xx-SL4xx_V4.1.1.pdf +0 -0
- package/doc/de-loewe-tablet-wse.wsdl +248 -0
- package/doc/remote_api_1.0.47_Loewe.pdf +0 -0
- package/examples/.gitkeep +0 -0
- package/lib/loewe-tv-config.html +33 -0
- package/lib/loewe-tv-config.js +11 -0
- package/lib/loewe.html +4 -9
- package/lib/loewe.js +1083 -227
- package/package.json +9 -3
- package/test/.gitkeep +0 -0
- package/test/alive.py +30 -30
- package/test/byebye.py +24 -24
- package/test/sddp.txt +0 -1196
package/doc/.gitkeep
ADDED
|
File without changes
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
<message name="RequestAccess">
|
|
2
|
+
<message name="GetChannelList">
|
|
3
|
+
<message name="GetCurrentEvent">
|
|
4
|
+
<message name="GetNextEvent">
|
|
5
|
+
<message name="GetMediaItem">
|
|
6
|
+
<message name="GetMediaEvent">
|
|
7
|
+
<message name="PlayerPrepare">
|
|
8
|
+
<message name="PlayerReleasePrepared">
|
|
9
|
+
<message name="PlayerPlay">
|
|
10
|
+
<message name="PlayerPause">
|
|
11
|
+
<message name="PlayerResume">
|
|
12
|
+
<message name="PlayerStop">
|
|
13
|
+
<message name="PlayerSetSpeed">
|
|
14
|
+
<message name="PlayerSeekTo">
|
|
15
|
+
<message name="GetVolume">
|
|
16
|
+
<message name="SetVolume">
|
|
17
|
+
<message name="GetMute">
|
|
18
|
+
<message name="SetMute">
|
|
19
|
+
<message name="Standby">
|
|
20
|
+
<message name="ProgramTimer">
|
|
21
|
+
<message name="GetDeviceData">
|
|
22
|
+
<message name="GetValueFromBrowserJS">
|
|
23
|
+
<message name="GetBrowserJSChangeList">
|
|
24
|
+
<message name="SetValueToBrowserJS">
|
|
25
|
+
<message name="GetCurrentPlayback">
|
|
26
|
+
<message name="GetCurrentStatus">
|
|
27
|
+
<message name="ZapToApplication">
|
|
28
|
+
<message name="ZapToMedia">
|
|
29
|
+
<message name="InjectRCKey">
|
|
30
|
+
<message name="InjectKeyboardKey">
|
|
31
|
+
<message name="SetActionField">
|
|
32
|
+
<message name="GetActionField">
|
|
33
|
+
<message name="GetFeature">
|
|
34
|
+
<message name="ActivateFeaturePackage">
|
|
35
|
+
<message name="DeactivateFeaturePackage">
|
|
36
|
+
<message name="GetUpgradeInfo">
|
|
37
|
+
<message name="GetListOfChannelLists">
|
|
38
|
+
<message name="AddFavoriteList">
|
|
39
|
+
<message name="RemoveFavoriteList">
|
|
40
|
+
<message name="RenameFavoriteList">
|
|
41
|
+
<message name="AddServicesFavoriteList">
|
|
42
|
+
<message name="RemoveServicesFavoriteList">
|
|
43
|
+
<message name="MoveServicesFavoriteList">
|
|
44
|
+
<message name="AddFavoriteListFromVirtual">
|
|
45
|
+
<message name="GetListOfVirtualLists">
|
|
46
|
+
<message name="ImportServiceLists">
|
|
47
|
+
<message name="ExportServiceLists">
|
|
48
|
+
<message name="GetDRPlusArchive">
|
|
49
|
+
<message name="GetVolumes">
|
|
50
|
+
<message name="PlayMultiroom">
|
|
51
|
+
<message name="GetSettings">
|
|
52
|
+
<message name="SetSetting">
|
|
53
|
+
<message name="ParentalLock">
|
|
54
|
+
<message name="GetParentalLock">
|
|
55
|
+
<message name="GetTimerList">
|
|
56
|
+
<message name="CreateIterator">
|
|
57
|
+
<message name="CloseIterator">
|
|
Binary file
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
2
|
+
<wsdl:definitions targetNamespace="http://www.w3.org/2011/03/ws-evt"
|
|
3
|
+
xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata"
|
|
4
|
+
xmlns:wse="http://www.w3.org/2011/03/ws-evt" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
|
|
5
|
+
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:lor="urn:loewe.de:RemoteTV:Tablet#Reference"
|
|
6
|
+
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns="http://schemas.xmlsoap.org/wsdl/">
|
|
7
|
+
|
|
8
|
+
<!-- ########## wsdl:types ###################################################### -->
|
|
9
|
+
|
|
10
|
+
<wsdl:types>
|
|
11
|
+
<xsd:schema targetNamespace="urn:loewe.de:RemoteTV:Tablet">
|
|
12
|
+
<xsd:import namespace="http://www.w3.org/2011/03/ws-evt"
|
|
13
|
+
schemaLocation="http://www.w3.org/2011/03/ws-evt/eventing.xsd"
|
|
14
|
+
xmlns:wsa="http://www.w3.org/2005/08/addressing" />
|
|
15
|
+
<xsd:complexType name="EventType" mixed="true">
|
|
16
|
+
<xsd:sequence>
|
|
17
|
+
<xsd:any namespace="##any" processContents="lax" minOccurs="0"
|
|
18
|
+
maxOccurs="unbounded" />
|
|
19
|
+
</xsd:sequence>
|
|
20
|
+
<xsd:attribute name="actionURI" type="xsd:anyURI" use="optional" />
|
|
21
|
+
<xsd:anyAttribute namespace="##other"
|
|
22
|
+
processContents="lax" />
|
|
23
|
+
</xsd:complexType>
|
|
24
|
+
<xsd:element name="Notify" type="wse:EventType" />
|
|
25
|
+
</xsd:schema>
|
|
26
|
+
</wsdl:types>
|
|
27
|
+
|
|
28
|
+
<!-- ########## wsdl:message #################################################### -->
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
<wsdl:message name="SubscribeMsg">
|
|
32
|
+
<wsdl:part name="body" element="wse:Subscribe" />
|
|
33
|
+
</wsdl:message>
|
|
34
|
+
<wsdl:message name="SubscribeResponseMsg">
|
|
35
|
+
<wsdl:part name="body" element="wse:SubscribeResponse" />
|
|
36
|
+
</wsdl:message>
|
|
37
|
+
|
|
38
|
+
<wsdl:message name="RenewMsg">
|
|
39
|
+
<wsdl:part name="body" element="wse:Renew" />
|
|
40
|
+
</wsdl:message>
|
|
41
|
+
<wsdl:message name="RenewResponseMsg">
|
|
42
|
+
<wsdl:part name="body" element="wse:RenewResponse" />
|
|
43
|
+
</wsdl:message>
|
|
44
|
+
|
|
45
|
+
<wsdl:message name="GetStatusMsg">
|
|
46
|
+
<wsdl:part name="body" element="wse:GetStatus" />
|
|
47
|
+
</wsdl:message>
|
|
48
|
+
<wsdl:message name="GetStatusResponseMsg">
|
|
49
|
+
<wsdl:part name="body" element="wse:GetStatusResponse" />
|
|
50
|
+
</wsdl:message>
|
|
51
|
+
|
|
52
|
+
<wsdl:message name="UnsubscribeMsg">
|
|
53
|
+
<wsdl:part name="body" element="wse:Unsubscribe" />
|
|
54
|
+
</wsdl:message>
|
|
55
|
+
<wsdl:message name="UnsubscribeResponseMsg">
|
|
56
|
+
<wsdl:part name="body" element="wse:UnsubscribeResponse" />
|
|
57
|
+
</wsdl:message>
|
|
58
|
+
|
|
59
|
+
<wsdl:message name="SubscriptionEnd">
|
|
60
|
+
<wsdl:part name="body" element="wse:SubscriptionEnd" />
|
|
61
|
+
</wsdl:message>
|
|
62
|
+
|
|
63
|
+
<wsdl:message name="notifyEvent">
|
|
64
|
+
<wsdl:part name="parameter" element="wse:Notify" />
|
|
65
|
+
</wsdl:message>
|
|
66
|
+
|
|
67
|
+
<!-- ########## wsdl:portType ################################################### -->
|
|
68
|
+
|
|
69
|
+
<wsdl:portType name="EventSource">
|
|
70
|
+
<wsdl:operation name="SubscribeOp">
|
|
71
|
+
<wsdl:input message="wse:SubscribeMsg"
|
|
72
|
+
wsa:Action="http://www.w3.org/2011/03/ws-evt/Subscribe" />
|
|
73
|
+
|
|
74
|
+
<wsdl:output message="wse:SubscribeResponseMsg"
|
|
75
|
+
wsam:Action="http://www.w3.org/2011/03/ws-evt/SubscribeResponse" />
|
|
76
|
+
</wsdl:operation>
|
|
77
|
+
</wsdl:portType>
|
|
78
|
+
|
|
79
|
+
<wsdl:portType name="SubscriptionEndPortType">
|
|
80
|
+
<wsdl:operation name="SubscriptionEnd">
|
|
81
|
+
<wsdl:input message="wse:SubscriptionEnd"
|
|
82
|
+
wsam:Action="http://www.w3.org/2011/03/ws-evt/SubscriptionEnd" />
|
|
83
|
+
</wsdl:operation>
|
|
84
|
+
</wsdl:portType>
|
|
85
|
+
|
|
86
|
+
<wsdl:portType name="SubscriptionManager">
|
|
87
|
+
<wsdl:operation name="RenewOp">
|
|
88
|
+
<wsdl:input message="wse:RenewMsg"
|
|
89
|
+
wsam:Action="http://www.w3.org/2011/03/ws-evt/Renew" />
|
|
90
|
+
<wsdl:output message="wse:RenewResponseMsg"
|
|
91
|
+
wsam:Action="http://www.w3.org/2011/03/ws-evt/RenewResponse" />
|
|
92
|
+
</wsdl:operation>
|
|
93
|
+
|
|
94
|
+
<wsdl:operation name="GetStatusOp">
|
|
95
|
+
<wsdl:input message="wse:GetStatusMsg"
|
|
96
|
+
wsam:Action="http://www.w3.org/2011/03/ws-evt/GetStatus" />
|
|
97
|
+
<wsdl:output message="wse:GetStatusResponseMsg"
|
|
98
|
+
wsam:Action="http://www.w3.org/2011/03/ws-evt/GetStatusResponse" />
|
|
99
|
+
</wsdl:operation>
|
|
100
|
+
|
|
101
|
+
<wsdl:operation name="UnsubscribeOp">
|
|
102
|
+
<wsdl:input message="wse:UnsubscribeMsg"
|
|
103
|
+
wsam:Action="http://www.w3.org/2011/03/ws-evt/Unsubscribe" />
|
|
104
|
+
<wsdl:output message="wse:UnsubscribeResponseMsg"
|
|
105
|
+
wsam:Action="http://www.w3.org/2011/03/ws-evt/UnsubscribeResponse" />
|
|
106
|
+
</wsdl:operation>
|
|
107
|
+
</wsdl:portType>
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
<wsdl:portType name="WrappedSinkPortType">
|
|
111
|
+
<wsdl:operation name="NotifyEvent">
|
|
112
|
+
<wsdl:input message="wse:notifyEvent"
|
|
113
|
+
wsam:Action="http://www.w3.org/2011/03/ws-evt/WrappedSinkPortType/NotifyEvent" />
|
|
114
|
+
</wsdl:operation>
|
|
115
|
+
</wsdl:portType>
|
|
116
|
+
|
|
117
|
+
<!-- ########## wsdl:binding #################################################### -->
|
|
118
|
+
|
|
119
|
+
<wsdl:binding name="LOEWE_Tablet_Port_WSE_EventSource_SOAP"
|
|
120
|
+
type="wse:EventSource">
|
|
121
|
+
<soap12:binding style="document"
|
|
122
|
+
transport="http://schemas.xmlsoap.org/soap/http" />
|
|
123
|
+
<wsa:UsingAddressing wsdl:required="true"
|
|
124
|
+
xmlns:wsa="http://www.w3.org/2006/05/addressing/wsdl" />
|
|
125
|
+
<wsdl:operation name="SubscribeOp">
|
|
126
|
+
<soap12:operation soapAction="http://www.w3.org/2011/03/ws-evt/Subscribe"
|
|
127
|
+
soapActionRequired="true" />
|
|
128
|
+
<!-- soapAction="urn:loewe.de:RemoteTV:Tablet/SubscriptionManager" /> -->
|
|
129
|
+
<wsdl:input>
|
|
130
|
+
<soap12:body use="literal" />
|
|
131
|
+
</wsdl:input>
|
|
132
|
+
<wsdl:output>
|
|
133
|
+
<soap12:body use="literal" />
|
|
134
|
+
</wsdl:output>
|
|
135
|
+
</wsdl:operation>
|
|
136
|
+
</wsdl:binding>
|
|
137
|
+
|
|
138
|
+
<wsdl:binding name="LOEWE_Tablet_Port_WSE_SubscriptionEndPortType_SOAP"
|
|
139
|
+
type="wse:SubscriptionEndPortType">
|
|
140
|
+
<soap12:binding style="document"
|
|
141
|
+
transport="http://schemas.xmlsoap.org/soap/http" />
|
|
142
|
+
<wsa:UsingAddressing wsdl:required="true" />
|
|
143
|
+
<wsdl:operation name="SubscriptionEnd">
|
|
144
|
+
<soap12:operation soapAction="http://www.w3.org/2011/03/ws-evt/SubscriptionEnd"
|
|
145
|
+
soapActionRequired="true" />
|
|
146
|
+
<!-- soapAction="urn:loewe.de:RemoteTV:Tablet/SubscriptionEndPortType"
|
|
147
|
+
/> -->
|
|
148
|
+
<wsdl:input>
|
|
149
|
+
<soap12:body use="literal" />
|
|
150
|
+
</wsdl:input>
|
|
151
|
+
</wsdl:operation>
|
|
152
|
+
</wsdl:binding>
|
|
153
|
+
|
|
154
|
+
<wsdl:binding name="LOEWE_Tablet_Port_WSE_SubscriptionManager_SOAP"
|
|
155
|
+
type="wse:SubscriptionManager">
|
|
156
|
+
<soap12:binding style="document"
|
|
157
|
+
transport="http://schemas.xmlsoap.org/soap/http" />
|
|
158
|
+
<wsa:UsingAddressing wsdl:required="true" />
|
|
159
|
+
<wsdl:operation name="RenewOp">
|
|
160
|
+
<soap12:operation soapAction="http://www.w3.org/2011/03/ws-evt/Renew"
|
|
161
|
+
soapActionRequired="true" />
|
|
162
|
+
<!-- soapAction="urn:loewe.de:RemoteTV:Tablet/SubscriptionManager/RenewOp"
|
|
163
|
+
/> -->
|
|
164
|
+
<wsdl:input>
|
|
165
|
+
<soap12:body use="literal" />
|
|
166
|
+
</wsdl:input>
|
|
167
|
+
<wsdl:output>
|
|
168
|
+
<soap12:body use="literal" />
|
|
169
|
+
</wsdl:output>
|
|
170
|
+
</wsdl:operation>
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
<wsdl:operation name="GetStatusOp">
|
|
174
|
+
<wsa:UsingAddressing wsdl:required="true" />
|
|
175
|
+
<soap12:operation soapAction="http://www.w3.org/2011/03/ws-evt/GetStatus"
|
|
176
|
+
soapActionRequired="true" />
|
|
177
|
+
<!-- soapAction="urn:loewe.de:RemoteTV:Tablet/SubscriptionManager/GetStatusOp"
|
|
178
|
+
/> -->
|
|
179
|
+
<wsdl:input>
|
|
180
|
+
<soap12:body use="literal" />
|
|
181
|
+
</wsdl:input>
|
|
182
|
+
<wsdl:output>
|
|
183
|
+
<soap12:body use="literal" />
|
|
184
|
+
</wsdl:output>
|
|
185
|
+
</wsdl:operation>
|
|
186
|
+
|
|
187
|
+
<wsdl:operation name="UnsubscribeOp">
|
|
188
|
+
<wsa:UsingAddressing wsdl:required="true" />
|
|
189
|
+
<soap12:operation soapAction="http://www.w3.org/2011/03/ws-evt/Unsubscribe"
|
|
190
|
+
soapActionRequired="true" />
|
|
191
|
+
<!-- soapAction="urn:loewe.de:RemoteTV:Tablet/SubscriptionManager/UnsubscribeOp"
|
|
192
|
+
/> -->
|
|
193
|
+
<wsdl:input>
|
|
194
|
+
<soap12:body use="literal" />
|
|
195
|
+
</wsdl:input>
|
|
196
|
+
<wsdl:output>
|
|
197
|
+
<soap12:body use="literal" />
|
|
198
|
+
</wsdl:output>
|
|
199
|
+
|
|
200
|
+
</wsdl:operation>
|
|
201
|
+
</wsdl:binding>
|
|
202
|
+
|
|
203
|
+
<wsdl:binding name="LOEWE_Tablet_Port_WSE_NotifyEvent_SOAP"
|
|
204
|
+
type="wse:WrappedSinkPortType">
|
|
205
|
+
<soap12:binding style="document"
|
|
206
|
+
transport="http://schemas.xmlsoap.org/soap/http" />
|
|
207
|
+
<wsa:UsingAddressing wsdl:required="true" />
|
|
208
|
+
<wsdl:operation name="NotifyEvent">
|
|
209
|
+
<soap12:operation soapAction="urn:loewe.de:RemoteTV:Tablet#Reference"
|
|
210
|
+
soapActionRequired="true" />
|
|
211
|
+
<!-- soapAction="urn:loewe.de:RemoteTV:Tablet/NotifyEvent" /> -->
|
|
212
|
+
<wsdl:input>
|
|
213
|
+
<soap12:body use="literal" />
|
|
214
|
+
</wsdl:input>
|
|
215
|
+
</wsdl:operation>
|
|
216
|
+
</wsdl:binding>
|
|
217
|
+
|
|
218
|
+
<!-- ########## wsdl:service #################################################### -->
|
|
219
|
+
|
|
220
|
+
<wsdl:service name="EventSource">
|
|
221
|
+
<wsdl:port binding="wse:LOEWE_Tablet_Port_WSE_EventSource_SOAP"
|
|
222
|
+
name="LOEWE_Tablet_Port_WSE_EventSource_SOAP">
|
|
223
|
+
<soap12:address location="http://192.168.169.220:905/loewe_tablet_0001" />
|
|
224
|
+
</wsdl:port>
|
|
225
|
+
</wsdl:service>
|
|
226
|
+
|
|
227
|
+
<wsdl:service name="SubscriptionEndPortType">
|
|
228
|
+
<wsdl:port binding="wse:LOEWE_Tablet_Port_WSE_SubscriptionEndPortType_SOAP"
|
|
229
|
+
name="LOEWE_Tablet_Port_WSE_SubscriptionEndPortType_SOAP">
|
|
230
|
+
<soap12:address location="http://192.168.169.220:905/loewe_tablet_0001" />
|
|
231
|
+
</wsdl:port>
|
|
232
|
+
</wsdl:service>
|
|
233
|
+
|
|
234
|
+
<wsdl:service name="SubscriptionManager">
|
|
235
|
+
<wsdl:port binding="wse:LOEWE_Tablet_Port_WSE_SubscriptionManager_SOAP"
|
|
236
|
+
name="LOEWE_Tablet_Port_WSE_SubscriptionManager_SOAP">
|
|
237
|
+
<soap12:address location="http://192.168.169.220:905/loewe_tablet_0001" />
|
|
238
|
+
</wsdl:port>
|
|
239
|
+
</wsdl:service>
|
|
240
|
+
|
|
241
|
+
<wsdl:service name="WrappedSinkPortType">
|
|
242
|
+
<wsdl:port binding="wse:LOEWE_Tablet_Port_WSE_NotifyEvent_SOAP"
|
|
243
|
+
name="LOEWE_Tablet_Port_WSE_NotifyEvent_SOAP">
|
|
244
|
+
<soap12:address location="http://192.168.169.220:905/loewe_tablet_0001" />
|
|
245
|
+
</wsdl:port>
|
|
246
|
+
</wsdl:service>
|
|
247
|
+
|
|
248
|
+
</wsdl:definitions>
|
|
Binary file
|
|
File without changes
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<script type="text/javascript">
|
|
2
|
+
RED.nodes.registerType('loewe-tv-config',{
|
|
3
|
+
category: 'config',
|
|
4
|
+
defaults: {
|
|
5
|
+
name: {value:"", required: true },
|
|
6
|
+
ip: {value:"", required: true },
|
|
7
|
+
fcid: {value:"8761291", validate: RED.validators.number()},
|
|
8
|
+
mac: {value:"", required: false }
|
|
9
|
+
},
|
|
10
|
+
label: function() {
|
|
11
|
+
return this.name;
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
</script>
|
|
15
|
+
|
|
16
|
+
<script type="text/x-red" data-template-name="loewe-tv-config">
|
|
17
|
+
<div class="form-row">
|
|
18
|
+
<label for="node-input-name"><i class="fa fa-tag"></i>Name</label>
|
|
19
|
+
<input type="text" id="node-config-input-name" placeholder="LoeweTV">
|
|
20
|
+
</div>
|
|
21
|
+
<div class="form-row">
|
|
22
|
+
<label for="node-input-ip"><i class="icon-tag"></i>IP</label>
|
|
23
|
+
<input type="text" id="node-config-input-ip" placeholder="192.168.0.180">
|
|
24
|
+
</div>
|
|
25
|
+
<div class="form-row">
|
|
26
|
+
<label for="node-input-fcid"><i class="icon-tag"></i>fcid</label>
|
|
27
|
+
<input type="text" id="node-config-input-fcid" placeholder="8761291">
|
|
28
|
+
</div>
|
|
29
|
+
</script>
|
|
30
|
+
|
|
31
|
+
<script type="text/x-red" data-help-name="loewe-tv-config">
|
|
32
|
+
<p>Interface to Loewe TV for Node-Red</p>
|
|
33
|
+
</script>
|
package/lib/loewe.html
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
<script type="text/javascript">
|
|
2
|
-
RED.nodes.registerType('LOEWE-TV',{
|
|
2
|
+
RED.nodes.registerType('LOEWE-TV', {
|
|
3
3
|
category: 'function',
|
|
4
4
|
color: '#a6bbcf',
|
|
5
5
|
defaults: {
|
|
6
|
-
|
|
7
|
-
ip: {value:""}
|
|
6
|
+
tv: {type:"loewe-tv-config", required: true }
|
|
8
7
|
},
|
|
9
8
|
inputs:1,
|
|
10
9
|
outputs:1,
|
|
@@ -17,13 +16,9 @@
|
|
|
17
16
|
|
|
18
17
|
<script type="text/x-red" data-template-name="LOEWE-TV">
|
|
19
18
|
<div class="form-row">
|
|
20
|
-
<label for="node-input-
|
|
21
|
-
<input type="text" id="node-input-
|
|
19
|
+
<label for="node-input-tv"><i class="fa fa-tag"></i>LOEWE TV</label>
|
|
20
|
+
<input type="text" id="node-input-tv">
|
|
22
21
|
</div>
|
|
23
|
-
<div class="form-row">
|
|
24
|
-
<label for="node-input-ip"><i class="icon-tag"></i> TV-IP</label>
|
|
25
|
-
<input type="text" id="node-input-ip" placeholder="192.168.0.180">
|
|
26
|
-
</div>
|
|
27
22
|
</script>
|
|
28
23
|
|
|
29
24
|
<script type="text/x-red" data-help-name="LOEWE-TV">
|