Kate-ubuntu
Anmeldungsdatum: 18. Juli 2013
Beiträge: 95
|
Hallo zusammen, ich habe hier schon ab und an sehr gute Hilfe bekommen, nun habe ich ein weiteres Anliegen, mit dem ich nicht weiter komme, und würde mich sehr über Eure Hilfe freuen. Ich habe mir den o.g. Logger vor einigen Tagen zugelegt. Die Herstellerfirma Pearl bietet keinen Linux-Support, aber zu meiner Freude fand ich die quelloffene Lesesoftware freetecreader hier: https://github.com/hoehermann/freetecreader. Ich habe sie unter /opt/ installiert. Leider funktioniert das Auslesen damit bislang nicht, auch kann ich das Gerät nicht im Dateimanager sehen. Offenbar ist es ein HID-Gerät. Ich fand bei Euch diesen Thread https://forum.ubuntuusers.de/topic/blutzuckermessgeraete-free-style-libre-und-akk/ mit einem ähnlichen Problem und habe versucht, die dortigen Informationen für mich zu nutzen. Immerhin habe ich nun schon einen Symlink - siehe unten, das Auslesen funktioniert aber nach wie vor nicht. Zunächst einige Informationen zum Gerät (per USB-Kabel ans Notebook gehängt): "lsusb" liefert
| Bus 003 Device 004: ID 10c4:8468 Cygnal Integrated Products, Inc.
|
"dmesg" liefert
| usb 3-1: USB disconnect, device number 3
[ 8633.076084] usb 3-1: new full-speed USB device number 4 using uhci_hcd
[ 8633.252381] usb 3-1: New USB device found, idVendor=10c4, idProduct=8468
[ 8633.252389] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 8633.252395] usb 3-1: Product: HIDtoSPI Slave
[ 8633.252400] usb 3-1: Manufacturer: SLAB
[ 8633.262652] hid-generic 0003:10C4:8468.0003: hiddev0,hidraw1: USB HID v1.01 Device [SLAB HIDtoSPI Slave] on usb-0000:00:1d.1-1/input0
|
Wie im verlinkten Thread (https://forum.ubuntuusers.de/post/8852663/quote/) vorgeschlagen habe ich mir die udev-Attribute für das Gerät anzeigen lassen mit | for device in /dev/hidraw*; do
udevadm info --query=all -a --name="$device"
done
|
Ergebnis für das Gerät:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 | looking at parent device '/devices/pci0000:00/0000:00:1d.1/usb3/3-1':
KERNELS=="3-1"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{authorized}=="1"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{bConfigurationValue}=="1"
ATTRS{bDeviceClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{bMaxPower}=="64mA"
ATTRS{bNumConfigurations}=="1"
ATTRS{bNumInterfaces}==" 1"
ATTRS{bcdDevice}=="0000"
ATTRS{bmAttributes}=="80"
ATTRS{busnum}=="3"
ATTRS{configuration}==""
ATTRS{devnum}=="4"
ATTRS{devpath}=="1"
ATTRS{idProduct}=="8468"
ATTRS{idVendor}=="10c4"
ATTRS{ltm_capable}=="no"
ATTRS{manufacturer}=="SLAB"
ATTRS{maxchild}=="0"
ATTRS{product}=="HIDtoSPI Slave"
ATTRS{quirks}=="0x0"
ATTRS{removable}=="unknown"
ATTRS{speed}=="12"
ATTRS{urbnum}=="11"
ATTRS{version}==" 1.10"
|
und habe gemäß diesem Beitrag: https://forum.ubuntuusers.de/post/8852939/quote/ eine udev-Regel in /etc/udev/rules.d/99-freetecreader.rules abgelegt:
| KERNEL=="hidraw*", SUBSYSTEMS=="usb", ATTRS{idProduct}=="8468", ATTRS{idVendor}=="10c4", SYMLINK+="freetecreader", GROUP="plugdev", MODE="0660
|
Mein Nutzer befindet sich bereits in der Gruppe plugdev. Es gibt jetzt (bei angestecktem Gerät) einen Symlink /dev/freetecreader, der auf ein hidraw-Gerät zeigt, das dem Besitzer root und der Gruppe plugdev gehört. Nun hoffte ich, dass der Aufruf vom "Freetecreader" funktioniert mit
Leider erscheint (mit vorangestelltem "sudo" gleichlautend) die Fehlermeldung:
1
2
3
4
5
6
7
8
9
10
11
12
13 | Traceback (most recent call last):
File "freetecreader.py", line 123, in <module>
ftd = FreeTecDevice(data = data, debug = args.debug)
File "freetecreader.py", line 16, in __init__
self.hd = hidapi.Device(vendor_id=vendor_id, product_id=product_id)
File "/usr/lib/python3/dist-packages/hidapi.py", line 154, in __init__
serial_number)
TypeError: initializer for ctype 'wchar_t *' must be a cdata pointer, not NoneType
Exception ignored in: <bound method Device.__del__ of <hidapi.Device object at 0xb6a76b0c>>
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/hidapi.py", line 164, in __del__
if self._device is not None:
AttributeError: 'Device' object has no attribute '_device'
|
(während sich die Hilfe mit "python3 freetecreader.py -h" anzeigen lässt). Und hier komme ich nicht weiter (fand im Web zu dieser Art Fehlermeldung nur diesen einen Link: https://github.com/trackmastersteve/alienfx/issues/41). Hidapi hat irgendein Problem (findet die Serial Number nicht?). Noch eine vielleicht wichtige Info: Getestet unter Linux mit Python 3.6.6 und hidapi 0.2.1.
https://github.com/hoehermann/freetecreader Ich habe hier folgende Versionen: python3 3.6.9 und python3-hidapi 0.2.1-1.1, wenn ich das richtig sehe. Wollte aber python3 nicht downgraden. Ich wäre Euch für jede Hilfe bei diesem Problem dankbar. Meine Programmierkenntnisse sind leider rudimentär und uralt (Algol68 hieß das glaube ich), mit Python habe ich keine Erfahrung - ich bitte hier um Nachsicht. Viele Grüße
Kate
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 12801
|
Kate-ubuntu schrieb:
Ich habe mir den o.g. Logger vor einigen Tagen zugelegt.
Was macht denn dieser Logger und was hast Du damit vor?
Leider erscheint (mit vorangestelltem "sudo" gleichlautend) die Fehlermeldung:
1
2
3
4
5
6
7
8
9
10
11
12
13 | Traceback (most recent call last):
File "freetecreader.py", line 123, in <module>
ftd = FreeTecDevice(data = data, debug = args.debug)
File "freetecreader.py", line 16, in __init__
self.hd = hidapi.Device(vendor_id=vendor_id, product_id=product_id)
File "/usr/lib/python3/dist-packages/hidapi.py", line 154, in __init__
serial_number)
TypeError: initializer for ctype 'wchar_t *' must be a cdata pointer, not NoneType
Exception ignored in: <bound method Device.__del__ of <hidapi.Device object at 0xb6a76b0c>>
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/hidapi.py", line 164, in __del__
if self._device is not None:
AttributeError: 'Device' object has no attribute '_device'
|
(während sich die Hilfe mit "python3 freetecreader.py -h" anzeigen lässt).
Ich kenne mich wenig mit Python und gar nicht mit der Anbindung von C-Code in Python aus. Die Fehlermeldung sieht aber für mich so aus, dass es ein Problem mit genau dieser Integration gibt. Das könnte daran liegen, dass sich mindestens eine der beiden Seiten (Python 3 oder die Shared Lib, die hier genutzt wird) geändert hat, ohne dass die andere angepasst wurde.
|
Kate-ubuntu
(Themenstarter)
Anmeldungsdatum: 18. Juli 2013
Beiträge: 95
|
Hallo rklm, das ging ja schnell -danke ☺ rklm schrieb: Kate-ubuntu schrieb:
Ich habe mir den o.g. Logger vor einigen Tagen zugelegt.
Was macht denn dieser Logger und was hast Du damit vor?
Temperatur und Luftfeuchtigkeit in einem bestimmten Raum meiner Wohnung über einen längeren Zeitraum (Einstellung: alle 60 Minuten) aufzeichnen und auswerten per Tabelle und Grafik. Ein .csv würde mir dazu reichen, dann würde ich es mit LibreOffice Calc machen. Aber auch der Export als .csv klappt mit der in der Hilfe angegebenen Option "--csv" nicht (gleiche Fehlermeldung, wie ja auch zu erwarten). Die Windows-Software macht auch nicht mehr und ist überhaupt recht spartanisch (habe ich mir auf einem anderen Rechner kurz angesehen; Ubuntu-Installation unter wine hat zwar geklappt, aber das liefert auch eine Fehlermeldung und funktioniert nicht - dazu würde ich notfalls einen weiteren Thread aufmachen; aber vorerst möchte ich es noch mit einem Linux-Programm versuchen).
Ich kenne mich wenig mit Python und gar nicht mit der Anbindung von C-Code in Python aus. Die Fehlermeldung sieht aber für mich so aus, dass es ein Problem mit genau dieser Integration gibt. Das könnte daran liegen, dass sich mindestens eine der beiden Seiten (Python 3 oder die Shared Lib, die hier genutzt wird) geändert hat, ohne dass die andere angepasst wurde.
Hm, damit kenne ich mich auch nicht aus - aber zumindest könnte es schonmal die Richtung zeigen. Danke erstmal ☺
Kate
|
Kate-ubuntu
(Themenstarter)
Anmeldungsdatum: 18. Juli 2013
Beiträge: 95
|
Hallo zusammen, das ursprünglich geschilderte Problem
Kate-ubuntu schrieb: ... fand ich die quelloffene Lesesoftware freetecreader hier: https://github.com/hoehermann/freetecreader. Ich habe sie unter /opt/ installiert. Leider funktioniert das Auslesen damit bislang nicht, ...
... habe ich zwar nicht lösen können, fand aber heute bei meiner (schon fast aufgegebenen) Recherche eine für mich ausreichend funktionierende Lösung, indem ich auf https://github.com/hoehermann beim freetecreader das Symbol unten rechts mit der Verzweigung angeklickt habe und hier landete: https://github.com/hoehermann/freetecreader/network/members und von dort dann auf einer Seite, wo ein Fork des hoehermann/freetecreaders angeboten wird: https://github.com/coldhand7/freetecreader Nachdem ich so wie dort vorgeschlagen vorging, erhielt ich zunächst beim Aufruf von des Programms mit "python3 freetecreader.py" die Fehlermeldung: Used HIDAPI lib: hidapi-libusb
Reading from device… 99%
Done.
Traceback (most recent call last):
File "freetecreader.py", line 118, in <module>
raise RuntimeError("Incorrect device ROM magic number (is %04x, should be 55aa). This software is not meant to be used with your device."%(init_ok))
RuntimeError: Incorrect device ROM magic number (is 5555, should be 55aa). This software is not meant to be used with your device.
Damit kann ich ohne weitere Recherche nicht viel anfangen. Als ich "python3 freetecreader.py --csv" probierte (das Auslesen des Gerätes als .csv ist mir das Wichtigste) erschien die Meldung: Used HIDAPI lib: hidapi-libusb
Reading from device… 99%
Done.
Device ID: 892bb080
WARNING: Unknown settings detected (only the exact combination of 24h format, degrees celsius, and 5 minute sample interval was tested). Expect havoc.
Das "hacoc" (Verwüstung) war dann auch der Fall. Nachdem ich in der Datei "freetecreader.py" die entsprechende Stelle, an der das "5 minute sample interval" eingetragen ist, auf 60 Minuten geändert hatte, wie von mir auf dem Gerät eingestellt, hat es funktioniert. Ich konnte ein .csv mit plausiblen Daten exportieren (und im LibreOffice Calc - mit dem Tabulator als Trennzeichen - aufrufen). An die Geräteeinstellungen, die teils nicht am Gerät selbst änderbar sind, komme ich mit diesem Programm offenbar nicht ran; das ist für mich aber ok, weil ich die für mich relevanten Einstellungen am Gerät vornehmen konnte (Details darüber, was am Gerät einstellbar ist und was nur per Software, könnt Ihr bei Bedarf der auf der Pearl-Website downloadbaren Bedienungsanleitung entnehmen). Vielleicht hilft das ja jemandem weiter, der diesen - vergleichsweise preiswerten - Temperatur- und Luftfeuchtigkeitslogger benutzen möchte. Ich bin mit github bisher nicht so vertraut, habe etwas dazugelernt, und bedanke mich bei allen, die meine Frage gelesen haben, und bei rklm für den Versuch, mir weiter zu helfen. Viele Grüße Kate
|
hoehermann
Anmeldungsdatum: 30. Oktober 2007
Beiträge: 29
|
Moin Kate Es freut mich, dass du meine Software brauchen kannst. Ich habe gerade ein Update veröffentlicht. https://github.com/hoehermann/freetecreader kann jetzt auch Messreihen verarbeiten, wo das Intervall nicht auf exakt fünf Minuten eingestellt ist. ☺ Viele Grüße Hermann
|
Kate-ubuntu
(Themenstarter)
Anmeldungsdatum: 18. Juli 2013
Beiträge: 95
|
Moin Hermann, das ist ja nett, dass Du Dich hier meldest ☺ Meine späte Reaktion liegt daran, dass anderes anlag und der Temperatur-Logger auch mehr im Sommer interessant für mich ist. Hattest Du mitbekommen, dass das Auslesen in eine csv-Datei bei mir nur mit dem Fork von "coldhand" überhaupt funktioniert hat? Und das im Prinzip auch schon bevor ich in der Datei "freetecreader.py" das "5 minute sample interval" auf 60 Minuten geändert hatte, nur waren die ausgelesenen Daten eben "Datensalat". Bei Deiner (Original-)Version wurde dagegen beim Versuch, die Daten als .csv zu exportieren garnichts ausgelesen (zur Fehlermeldung siehe oben). Von daher habe ich Zweifel, ob es Sinn macht, nun noch einmal Deine Version zu probieren. Aber für andere Mitleser könnte Deine Info natürlich interessant sein. Viele Grüße
Kate
|
hoehermann
Anmeldungsdatum: 30. Oktober 2007
Beiträge: 29
|
Bei Deiner (Original-)Version wurde dagegen beim Versuch, die Daten als .csv zu exportieren garnichts ausgelesen (zur Fehlermeldung siehe oben). Von daher habe ich Zweifel, ob es Sinn macht, nun noch einmal Deine Version zu probieren.
Nun ja dir hilft es n der Tat nicht, aber für mich ist das schon interessant. Ich will ja auch wissen, ob die neue Version nicht nur für mich, sondern auch für andere besser funktioniert. 😉
|
Kate-ubuntu
(Themenstarter)
Anmeldungsdatum: 18. Juli 2013
Beiträge: 95
|
Ja, das verstehe ich ☺ Für mich (und evtl. andere?) könnte interessant sein, ob Dir zu meinen o.g. Problemen mit Deiner Version etwas einfällt. Denn womöglich hätte Deine Version ja mehr Funktionen zu bieten für mich (und andere) als der Fork. Gruß
Kate
|
hoehermann
Anmeldungsdatum: 30. Oktober 2007
Beiträge: 29
|
Kate-ubuntu schrieb: Für mich (und evtl. andere?) könnte interessant sein, ob Dir zu meinen o.g. Problemen mit Deiner Version etwas einfällt.
Denn womöglich hätte Deine Version ja mehr Funktionen zu bieten für mich (und andere) als der Fork.
Ich habe die Änderungen von "coldhand7" in meine Version übernommen (bzw. die Änderungen, die mir gefallen). Er benutzt eine andere Methode zum Auswählen des Datenloggers. Es scheint, ich verbinde zum erstbesten USB-Gerät der sogenannten HID-Klasse. Er hingegen sucht gezielt nach einem Logger. Bei mir funktionieren beide Methoden gleich gut. Ich kann mir aber vorstellen, dass es zu Fehlverhalten kommen kann, wenn mehrere dieser HID USB-Geräte angeschlossen sind.
|
Kate-ubuntu
(Themenstarter)
Anmeldungsdatum: 18. Juli 2013
Beiträge: 95
|
Ich danke Dir. Falls ich irgendwann Deine neue Version probieren sollte, melde ich mich ☺ Gruß
Kate
|
Kate-ubuntu
(Themenstarter)
Anmeldungsdatum: 18. Juli 2013
Beiträge: 95
|
Kate-ubuntu schrieb: Ich danke Dir. Falls ich irgendwann Deine neue Version probieren sollte, melde ich mich ☺
Hallo Hermann (hoehermann), wie versprochen melde ich mich hier. Ich habe Deine "neue" Version inzwischen sowohl auf dem alten Notebook (Toshiba Satellite A100-547 mit Ubuntu 20.04 LTS), als auch auf einem neuen Convertible (Lenovo IdeaTab D330 mit Ubuntu 20.04 LTS) installiert und ausprobiert. Es funktioniert! Allerdings mit den von Coldhand für den Fork (https://github.com/coldhand7/freetecreader) geschilderten Vorbereitungen, also z.B. "Kopieren von 99-hid_freetec_nc_7004.rules nach /etc/udev/rules.d/". Ich habe noch einige kleine Anpassungen vorgenommen, obwohl ich nichts von Python verstehe. Z.B. im Dateinamen des erzeugten .csv-Files habe ich vorn "DataLogger-" stehen. Und da ich Datum und Uhrzeit in der Ergebnis-Datei in LibreOffice Calc auf zwei Spalten verteilt habe möchte, habe ich bei den Spalten-Überschriften und -Inhalten etwas geändert (u.a. das Wort Uhrzeit eingefügt). Ein Wunsch von mir wäre eine Fortschrittskontrolle im Terminal, so wie es Coldhands Version hat (einfach rüberkopieren des mutmaßlich dafür zuständigen Absatzes im .py-File hat erwartungsgemäß nicht funktioniert. Aber natürlich ist das hier kein Wunschkonzert und es ist auch so super ☺ Nur falls Du Lust haben solltest... Besonders erfreulich finde ich, dass ein Fehler von Coldhands Version bei Deiner nicht auftritt. Diese erzeugt ab und zu (nach Ab- und Anstecken des Gerätes?) in der Ergebnis-Datei vervielfachte Datensätze mit gleicher Datensatznummer und Zeitangabe, aber unsinnigen Temperatur- und Luftfeuchtigkeitswerten (6503,5 und 235). Es scheinen zwar
keine Datensätze stattdessen zu fehlen, aber ich muss vor der Auswertung immer die unsinnigen Datensätze aus den (großen) Dateien raussuchen und -löschen. Die korrekte Erstellung eines Starters (beim Fork ging das problemlos) habe ich bislang nicht hinbekommen. Im Terminal starte ich das Programm aus dem Verzeichnis opt/freetecreader mit | ./freetecreader.py --csv --suffix _$(date +%Y-%m-%d_%a_%H-%M)
|
In meinem Starter-Versuch steht: [Desktop Entry]
Type=Application
Name=FreeTec
Name[de_DE]=FreeTec1.desktop
Exec=bash -c "/opt/freetecreader/freetecreader.py --csv --suffix _$(date +%Y-%m-%d_%a_%H-%M)"
Path=../../opt/freetecreader/freetecreader.py
Icon=/opt/freetecreader/DataLogger.png
Terminal=true
Comment=Start ueber bash (ohne xterm) Der (das?) "suffix" wird nicht in den Dateinamen übertragen, der lautet einfach DataLogger-892bb080_--__-.csv Die Datei selbst ist offenbar korrekt. Wahrscheinlich ein banaler Fehler - kann mir jemand helfen? Einen Gruß,
Kate
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 12801
|
Kate-ubuntu schrieb:
Die Datei selbst ist offenbar korrekt. Wahrscheinlich ein banaler Fehler - kann mir jemand helfen?
Vermutlich wird in der Desktop-Datei keine Command Subsitution gemacht. Am einfachsten verschiebst Du den Aufruf in ein Skript, das Du dann in der Desktop-Datei einträgst.
|
Kate-ubuntu
(Themenstarter)
Anmeldungsdatum: 18. Juli 2013
Beiträge: 95
|
Wollte mich - wenn auch etwas spät - noch für den Tipp bedanken, rklm ☺ Ich hatte das zunächst erfolglos probiert (wenn man sich kaum mit Skripten und garnicht mit python auskennt, geht das nicht so mal eben) und ich hab's dann erstmal beiseite gelegt. Melde mich, wenn ich da was hinbekomme. Gruß,
Kate
|
Kate-ubuntu
(Themenstarter)
Anmeldungsdatum: 18. Juli 2013
Beiträge: 95
|
Kate-ubuntu schrieb: Melde mich, wenn ich da was hinbekomme.
Es funktioniert jetzt (nach einer sehr punktuellen Recherche, Grundlagenwissen fehlt nach wie vor). Starter FreeTec1.desktop
[Desktop Entry]
Type=Application
Name=FreeTec
Name[de_DE]=FreeTec1.desktop
Exec=bash -c "/home/kate/.local/share/applications/freetec1.sh"
Path=home/kate/.local/share/applications/freetec1.sh
Icon=/opt/freetecreader/4055_DataLogger3.3.2.0.png
Terminal=true
Comment=Start ueber bash (ohne xterm)
Das von dort aufgerufene Bash-Skript freetec1.sh:
| #!/bin/bash
# Hilfsskript fuer FreeTec1.desktop
ZEITPUNKT=$(date +%a_%Y-%m-%d_%H-%M)
echo "Freetec-DataLogger gestartet: $ZEITPUNKT"
bash -c "/opt/freetecreader/freetecreader.py --csv --suffix _$ZEITPUNKT ; read"
|
Was mich noch stört:
Im aufgerufenen Bash-Fenster gibt es keine "beendet"-Meldung und die Bash kehrt nicht zu einer Eingabezeile zurück, wie man das vom Terminal kennt, wenn ein Befehl ausgeführt wurde. Schließen tut es sich nach drücken der Return-Taste (was wohl mit dem "read"-Befehl im Skript zusammenhängt). Es gibt keine Fortschrittsanzeige (in Prozent).
Lässt sich das noch einfach einbauen? (Müsste sonst selbst gelegentlich nochmal recherchieren.) An sich ist das Problem aus dem Thread-Titel damit auch gelöst, jetzt geht's nur noch um Komfort-Aspekte ☺ Gruß,
Kate
|
hoehermann
Anmeldungsdatum: 30. Oktober 2007
Beiträge: 29
|
Moin Kate Bitte entschuldige, dass ich erst jetzt antworte. Die Benachrichtigungen über neue Beiträge in diesem Thema kamen irgendwie nicht an. Vielleicht vom Spamfilter gefressen. Eine Fortschrittsanzeige lasse ich im Debug-Modus einblenden. Er kann mit --debug eingeschaltet werden. ☺ Für weitere Funktionswünsche und Fehlermeldungen, öffne gerne eine Anfrage auf https://github.com/hoehermann/freetecreader/issues – da schaue ich häufiger rein als hier. Viele Grüße Hermann
|