[gelöst] nodejs für alexa connector

Begonnen von theophilou85, 25 Juni 2020, 09:56:32

Vorheriges Thema - Nächstes Thema

theophilou85

Hallo

Ich hatte eine alte Alexa-FHEM Installation und versuche diese seit 2 Tagen wegen auslaufendem Amazon-Webservice-Support von Nodejs v4.3 auf Alexa-Connector laut der Wikianleitung zu ändern.

sudo apt-get install nodejs npm hat zur Folge The following packages have unmet dependencies:
nodejs : Conflicts: npm
E: Unable to correct problems, you have held broken packages.


Also habe ich es laut einem anderen Tutorial folgenderweise versucht:
curl -sL https://deb.nodesource.com/setup_14.x | sudo bash -

sudo apt-get install -y nodejs


Bekomme aber folgende Meldung:
The following packages have unmet dependencies:
nodejs : Depends: libstdc++6 (>= 5.2) but 4.9.2-10+deb8u2 is to be installed
E: Unable to correct problems, you have held broken packages.


Da habe ich inzwischen schon alles mögliche durchprobiert, andere Nodeversionen etc, möchte hier aber nicht jeden Mist den ich versucht habe erwähnen, damit es zu keinen Verwirrungen kommt.
Kann mir bitte jemand sagen wie ich dieses Problem erstmal löse. Leider geht es dann mit den Problemchen weiter  ;)

MadMax-FHEM

Wie wäre es mal zu schreiben:

Welches System, also HW und OS!?

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

theophilou85

Hallo Madmax

Natürlich:

Raspberry Pi 3

PRETTY_NAME="Raspbian GNU/Linux 8 (jessie)"
NAME="Raspbian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"


update und dist-upgrade habe ich bereits gemacht.

MadMax-FHEM

Dir ist schon klar, dass Jessie sehr, sehr alt ist!!

Wheezy -> Jessie -> Stretch -> Buster -> RaspbianOS (kommt wohl gerade)

Vermutlich gibt es in den "eingestellten" Repositories "nichts mehr"...

Oder es ist generell "was verbogen"...

Außerdem wäre (verm.) die nodejs/npm Version von Jessie eh zu alt.
(steht doch mittlerweile auch im Wiki!?)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

theophilou85

Hallo

Habe jetzt den Pi neu aufgesetzt, mir damit aber eine ganze Menge Arbeit eingetreten.
Ich nutze den Busware SCC und das Startskript was die GPIO-Pins hochzieht lässt sich nicht mehr so installieren wie damals.

https://blog.krannich.de/hausautomation-fhem-auf-rpi-installieren/ Hier unter Punkt 5.

Weißt du wo sich dieses Startskript unter Buster befindet?

MadMax-FHEM

#5
Bei jessie war noch initd.

Buster ist auf systemd.

initd funktioniert aber noch...

Du drückst dich etwas knapp aus...
...wenn du meinst wo das fhem-Startscript ist: /etc/systemd/system

ABER: dort kannst du nicht einfach was zusätzlich eintragen wie bei initd!

Es gibt aber Threads im Forum genau zu SCC und so Zeugs und Buster...

EDIT: hier ein paar Links (aber nicht wirklich [genau] gelesen)...
https://forum.fhem.de/index.php/topic,106060.msg1004403.html#msg1004403
https://forum.fhem.de/index.php/topic,103388.msg970857.html#msg970857
https://forum.fhem.de/index.php/topic,101819.msg1052355.html#msg1052355
https://forum.fhem.de/index.php/topic,106657.msg1005082.html#msg1005082

EDIT: und warum nutzt du so "eigenartige" externe Quellen, statt fhem Wiki und Forum!?

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

theophilou85

#6
Hab mich durch alle Beiträge durchgekämpft und es mit bisschen Glück zum Laufen gebracht.
Jetzt bin ich nach einem Tag wieder am Anfang  ;D
pi@RaspberryPi3:~ $ node --version
v10.21.0
pi@RaspberryPi3:~ $ sudo npm install -g alexa-fhem
npm WARN npm npm does not support Node.js v10.21.0
npm WARN npm You should probably upgrade to a newer version of node as we
npm WARN npm can't make any promises that npm will work with this version.
npm WARN npm Supported releases of Node.js are the latest release of 4, 6, 7, 8,                                 9.
npm WARN npm You can find the latest version at https://nodejs.org/
/usr/local/bin/alexa-fhem -> /usr/local/lib/node_modules/alexa-fhem/bin/alexa
+ alexa-fhem@0.5.55
added 63 packages from 71 contributors in 29.57s
pi@RaspberryPi3:~ $


Da machen mir die Warnings zwar Sorgen, aber ich hoffe das ist ok. Dann weiter wie im Wiki und da ich https verwende noch attr alexa alexaFHEM-auth bn:pw gemacht. Benutzername und Passwort so wie ich es im Chrome zum Einloggen eingebe.
Bekomme leider immer noch den ursprünglichen Fehler.
stopped; failed to connect to fhem: Error: read ECONNRESET


Auszug aus dem log:
[25.6.2020, 22:37:22] os.homedir()=/opt/fhem
[25.6.2020, 22:37:22] this is alexa-fhem 0.5.55
[25.6.2020, 22:37:22] connecting to FHEM ...
[25.6.2020, 22:37:22] [FHEM] defaults to: will not send proactive events
[25.6.2020, 22:37:24] [FHEM] trying longpoll to listen for fhem events
[25.6.2020, 22:37:24] [FHEM] starting longpoll: http://127.0.0.1:8083/fhem?XHR=1&inform=type=status;addglobal=1;filter=.*;since=null;fmt=JSON×tamp=1593117444468
[25.6.2020, 22:37:24] [FHEM] longpoll error: Error: read ECONNRESET, retry in: 5000msec
*** FHEM: connection failed: Error: read ECONNRESET
[25.6.2020, 22:37:24] Got SIGTERM, shutting down alexa-fhem...
[25.6.2020, 22:37:24] Reading alexaFHEM.ProxyConnection set to stopping;; alexa-fhem terminating

MadMax-FHEM

Frage: User und Passwort und dann KEIN https!? Wo liegt da der Sinn!?

Oder nutzt du https!?
Dann muss das alexa-fhem nat. auch tun...

EDIT: warnings hatte ich auch... Kein Problem...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

theophilou85

Ich verstehe die Frage leider nicht.

Ich verbinde mich per http://domainname.net, was mich auf https://ipadresse:8083/fhem/ftui weiterleitet

Meine wahrscheinlich falsche Vermutung ist, dass ich wenn ich das Attribut alexaFHEM-auth nutze, Alexa weiß dass ich https verwende? Wenn dem nicht so ist, könntest du mir sagen wie ich dem Alexamodul erkläre dass ich https verwende?
Danke

MadMax-FHEM

#9
Wie ist denn dein FHEMWEB konfiguriert!?

alexa-fhem versucht ja auf fhem LOKAL zugreifen und das schlägt fehl:

Zitat
[25.6.2020, 22:37:24] [FHEM] starting longpoll: http://127.0.0.1:8083/fhem?XHR=1&inform=type=status;addglobal=1;filter=.*;since=null;fmt=JSON×tamp=1593117444468
[25.6.2020, 22:37:24] [FHEM] longpoll error: Error: read ECONNRESET, retry in: 5000msec

Und alexa-fhem greift eben per http und nicht per https zu...
Wobei ich nicht weiß wie du eben FHEMWEB auf Port 8083 "abgesichert" hast (wenn überhaupt)...

Und dass du offenbar mit deiner Aussage meinst, du gehst von extern (Internet) auf FTUI usw.: musst du wissen...
(ich nutze von "außen" maximal vpn)

Also:

- läuft alexa-fhem auf DEMSELBEN "Rechner" wie fhem!?
(daher 127.0.0.1 -> local host)

- ist FHEMWEB!! auf Port 8083 per https oder http konfiguriert!?

- hast du ein allowed-Device für FHEMWEB auf 8083!?

EDIT: falls dort (FHEMWEB 8083) https aktiviert ist, dann muss das wohl ins alexa-fhem.cfg (unter Edit Files) eingtragen werden. Zumindest habe ich dafür kein Attribut gefunden... Siehe: https://wiki.fhem.de/wiki/Alexa-Fhem#Wie_kann_ich_via_Alexa-FHEM_auf_FHEM_zugreifen.2C_wenn_der_Port_mit_Benutzername.2FKennwort_gesch.C3.BCtzt_ist.3F Also beim Eintrag "connections" noch "ssl":true eintragen...


{
"connections":
[
{
"port": "8083",
"webname": "fhem",
"uid": 999,
"filter": "alexaName=..*",
"server": "127.0.0.1",
"name": "FHEM",
"ssl": true
}
],
"sshproxy":
{
"ssh": "/usr/bin/ssh",
"description": "FHEM Connector"
}
}


Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MadMax-FHEM

#10
Ok, weil du so lappidar geantwortet hast trotzdem noch ein Satz:

es geht NICHT um's Licht einschalten...

Wenn jemand auf deinem fhem Server ist, kann er weit MEHR tun als nur Licht ein/ausschalten!

Man kann per FHEMWEB-cmd auch SYSTEM-Commandos ausführen!! -> eingach mal in FHEMWEB-cmd probieren: "mkdir /opt/fhem/test" MIT Anführungszeichen in FHEMWEB eingeben und dann mal "ls -la /opt/fhem" ;)

Hast du zufällig einen Eintrag für fhem in der sudoers!? Oder ein no-passwd File für fhem!? -> dann hat der "Angreifer" sogar root-Rechte ;)

So genug...

Also du hast https gesetzt, ergo: muss auch alexa-fhem per https zugreifen

Da du kein allowed gepostet hast: hast du eines für FHEMWEB 8083!?

EDIT: bin ich "bekloppt" oder hast du deine Antwort gelöscht!? Sehr hilfreich...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

theophilou85

Hab sie gelöscht da sie einige Fehler enthielt.
Das Sicherheitsbefinden von Menschen ist sehr unterschiedlich und steht meistens im Widerspruch zu Komfort/Kosten. Für mich ist das jedenfalls so okay.
Dein Tipp mit SSL hat erstmal geklappt. Vielen Dank. Leider verliere ich jetzt alle paar Sekunden die Verbindung zur Webinstanz. Da ich das Problem aber schon vorher hatte und auch dann wenn ich den "ssl"-Eintrag wieder entferne, glaube ich, dass da noch irgend ein Hund begraben ist.

2020.06.26 11:19:50 1: Including fhem.cfg
2020.06.26 11:19:50 3: tabletui: new ext defined infix:ftui/: dir:./www/tablet:
2020.06.26 11:19:50 3: Registering HTTPSRV tabletui for URL /ftui   and assigned link ftui/ ...
2020.06.26 11:19:51 2: eventTypes: loaded 353 events from /media/usb0/Logs/eventTypes.txt
2020.06.26 11:19:51 3: telnet: port 7072 opened
2020.06.26 11:19:51 3: web: port 8083 opened
2020.06.26 11:19:54 2: Registering GEOFANCY geo for URL /geo...
2020.06.26 11:19:55 4: RESIDENTStk alarm_per00: Wakeuptime recalculation triggered by at-device at_alarm_per00
2020.06.26 11:19:55 4: RESIDENTStk alarm_per00: wakeupGetBegin source: wakeupDefaultTime
2020.06.26 11:19:55 4: RESIDENTStk alarm_per00: wakeupGetBegin result: 08:00 = 27000 s - 30 m = 07:30:00
2020.06.26 11:19:56 2: TSCUL_condUpdateHM: scc00 new condition disconnected
2020.06.26 11:19:56 3: Opening scc00 device /dev/ttyAMA0
2020.06.26 11:19:56 3: Setting scc00 serial parameters to 38400,8,N,1
2020.06.26 11:19:57 3: scc00: Possible commands: *ABCEFGJKMNRTUVWXYZbefilmtx
2020.06.26 11:19:58 1: scc00 is VERSION_TS, VTS 0.26 CSM868, SCC_V1.2
2020.06.26 11:19:58 2: TSCUL_condUpdateHM: scc00 new condition non-HM
2020.06.26 11:19:59 3: scc00 device opened
2020.06.26 11:19:59 2: TSCUL_condUpdateHM: scc00 new condition init
2020.06.26 11:19:59 2: Switched scc00 rfmode to HomeMatic
2020.06.26 11:20:00 1: min00: Broadlink_Load: Cannot open ./broadlink.save: No such file or directory
2020.06.26 11:20:01 3: LGTV_WebOS (tv00) - defined with host 192.168.0.203
2020.06.26 11:20:02 3: XiaomiBTLESens (pla00) - defined with BTMAC C4:7C:8D:66:1C:4C
2020.06.26 11:20:02 3: XiaomiBTLESens (pla00) - set interval to 3600
2020.06.26 11:20:02 3: XiaomiBTLESens (pla01) - defined with BTMAC C4:7C:8D:66:1E:79
2020.06.26 11:20:02 3: XiaomiBTLESens (pla01) - set interval to 3600
2020.06.26 11:20:02 3: XiaomiBTLESens (pla02) - defined with BTMAC C4:7C:8D:66:20:C7
2020.06.26 11:20:02 3: XiaomiBTLESens (pla02) - set interval to 3600
2020.06.26 11:20:03 1: Including ./fhem.save
2020.06.26 11:20:03 2: alexa: starting alexa-fhem: /usr/local/bin/alexa-fhem -c ./alexa-fhem.cfg -a xx:xx
2020.06.26 11:20:03 3: alexa: starting
2020.06.26 11:20:03 3: alexa: using logfile: /media/usb0/Logs/alexa-2020-06-26.log
2020.06.26 11:20:03 3: Device con00 added to ActionDetector with 002:50 time
2020.06.26 11:20:03 3: Device con01 added to ActionDetector with 002:50 time
2020.06.26 11:20:04 3: Device ins00 added to ActionDetector with 001:00 time
2020.06.26 11:20:04 3: Device mod00 added to ActionDetector with 001:00 time
2020.06.26 11:20:04 3: Device sed00 added to ActionDetector with 000:10 time
2020.06.26 11:20:04 3: Device sed01 added to ActionDetector with 000:10 time
2020.06.26 11:20:04 3: Device smo00 added to ActionDetector with 099:00 time
2020.06.26 11:20:04 3: Device swt07 added to ActionDetector with 001:00 time
2020.06.26 11:20:04 3: Device swt08 added to ActionDetector with 001:00 time
2020.06.26 11:20:04 3: Device swt09 added to ActionDetector with 001:00 time
2020.06.26 11:20:05 3: Device the00 added to ActionDetector with 000:10 time
2020.06.26 11:20:05 3: Device the01 added to ActionDetector with 000:10 time
2020.06.26 11:20:06 1: usb create starting
2020.06.26 11:20:06 3: Probing ZWDongle device /dev/serial1
2020.06.26 11:20:06 3: Probing CUL device /dev/ttyS0
2020.06.26 11:20:07 1: usb create end
2020.06.26 11:20:07 0: Featurelevel: 6
2020.06.26 11:20:07 0: Server started with 273 defined entities (fhem.pl:22261/2020-06-25 perl:5.028001 os:linux user:fhem pid:1148)
2020.06.26 11:20:07 4: RESIDENTStk alarm_per00: Wakeuptime recalculation triggered by at-device at_alarm_per00
2020.06.26 11:20:07 4: RESIDENTStk alarm_per00: wakeupGetBegin source: wakeupDefaultTime
2020.06.26 11:20:07 4: RESIDENTStk alarm_per00: wakeupGetBegin result: 08:00 = 27000 s - 30 m = 07:30:00
2020.06.26 11:20:10 3: CUL_HM set the01_WindowRec getConfig
2020.06.26 11:20:14 3: CUL_HM set the01_remote getConfig
2020.06.26 11:20:15 2: AttrTemplates: got 170 entries
2020.06.26 11:20:18 3: CUL_HM set the01_SwitchTr getConfig
2020.06.26 11:20:24 3: CUL_HM set sed01_remote getConfig
2020.06.26 11:20:47 3: Watchdog mod00_det_wd0 triggered
2020.06.26 11:20:47 3: CUL_HM set swt09_swt00 off
2020.06.26 11:21:21 1: Server shutdown delayed due to alexa for max 10 sec
2020.06.26 11:21:22 1: FHEMWEB SSL/HTTPS error:  SSL accept attempt failed (peer: 127.0.0.1)
2020.06.26 11:21:22 3: alexa: read: end of file reached while sysread
2020.06.26 11:21:22 3: alexa: stopped
2020.06.26 11:21:22 1: FHEMWEB SSL/HTTPS error:  SSL accept attempt failed (peer: 127.0.0.1)
2020.06.26 11:21:22 1: FHEMWEB SSL/HTTPS error:  SSL accept attempt failed (peer: 127.0.0.1)
2020.06.26 11:21:22 0: Server shutdown


MadMax-FHEM

#12
Was soll mir das jetzt sagen!?

Ich bin kein Hellseher!?

Wie wäre es mit etwas ausführlicherer (Fehler)Beschreibung!?

Was du tust/nicht tust...

Was geschieht/nicht geschieht und v.a. WO/WOMIT...

Und was mir der Logausschnitt zeigen soll!?

Da sieht man nur, dass fhem runtergefahren wird...

EDIT: gut, ok passiert wohl "zyklisch"... Ich würde auf jeden Fall initialUsbCheck deaktivieren. Dann Frage: hast du einen watchdog eingerichtet, der fhem immer wieder neu startet!?

Bzgl. Sicherheit: dein System... Aber hast du meine Anmerkungen gelesen!? Und auch mal ausprobiert!? Aber jaja, ich hör schon auf: dein System...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

theophilou85

Okay, dann führe ich mal aus.
FHEM läuft auf einem Raspbi3 mit aktuellstem Buster-OS. http://domain.net --> https://ip:8083/fhem aufgerufen über Chrome schmiert nach einem reboot des PI über SSH, nach zirka 30Sekunden ab und ich komme nicht mehr auf die Oberfläche. Mit Filezilla hab ich mir dann das Log geholt und gepostet in der Hoffnung du siehst daraus irgendwas.
Habe jetzt das Internet abgesteckt und mich per LAN auf die Weboberfläche verbunden und sie schmiert trotzdem nach 30Sekunden ab.

Anbei nochmal die Info zum allowed
define web FHEMWEB 8083 global
setuuid web 5e348e74-f33f-b16d-7e1b-79cd8e912541a8f6
attr web HTTPS 1
attr web alias Fhemweb
attr web csrfToken none
attr web editConfig 1
attr web group Connections
attr web hiddenroom Save config,Unsorted,Remote doc,
attr web longpoll 1
attr web room FHEM
attr web stylesheetPrefix dark
attr web webname fhem
#attr web JavaScripts codemirror/fhem_codemirror.js

define access allowed
setuuid access 5e348e75-f33f-884c-aa68-aabb8e403c910068
attr access alias Access
attr access basicAuth XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
attr access group Connections
attr access room FHEM
attr access validFor web


Deine Anmerkungen habe ich gelesen und ich habe es so aufgefasst, dass du mir die "Gefahr" verdeutlichen willst. Ist in Ordnung. Aktuell versuche ich aber einfach mal meine Haussteuerung wieder zum Laufen zu bekommen und hinten nach um weitere Bugfixes/Sicherheitslücken. Ich hoffe du hast dafür Verständnis.

MadMax-FHEM

#14
Du brauchst mein Verständnis nicht ;)

Noch eine Anmerkung, dann höre ich auf (weil wie geschrieben: dein System bzw. dein Heimnetzwerk, deine Daten, ...): du gehst von außen wirklich per http OHNE s auf deinen offenen Port!? Dir ist schon klar, dass dann User/PW in "plain Text" also NICHT verschlüsselt übertragen werden!? Wenn das so ist, dann eben erst ab der internen Weiterleitung auf https://fhem... (die wodurch geschieht!?). Aber egal...


Ich sehe, dass fhem eben wohl immer wieder neu startet.

Einen Grund sehe ich nicht.

Daher ja die Frage nach einem Watchdog etc.

Evtl. ist es auch "nur" systemd. Gibt einige Threads, vielleicht "passt" was:
https://forum.fhem.de/index.php/topic,45202.msg369954.html#msg369954
https://forum.fhem.de/index.php/topic,108133.msg1021069.html#msg1021069
https://forum.fhem.de/index.php/topic,107864.msg1018402.html#msg1018402

Ansonsten muss ich leider sagen: zu wenig Infos... Zumindest wäre ja interessant: seit wann, also seit welcher Änderung, ist das nun so!?

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)