Danke für die Vorarbeit.
https://transport.stefan-biermann.de/publictransportapi/rest/station/suggest ...Das führt (ca. Zeile 626 und 856) zu Fehlermeldungen: ".... Data cannot be parsed by JSON". Als Folge dessen steigt das Programm aus, da kein neuer InternalTimer(gettimeofday()+AttrVal($name, "UpdateInterval", 60), ..... gesetzt wird. Ich habe das folgende Stück an das 'or do' angefügt: or do
{
Log3 $name, 3, $name. " : DepartureBnT_UpdateResponseResponse - Data cannot be parsed by JSON";
# Handling the error:
# 1. set Timer for next refresh cycle
InternalTimer(gettimeofday()+AttrVal($name, "UpdateInterval", 60), \&DepartureBnT_Update, $hash);
# 2. trigger the browser
FW_directNotify("FILTER=".$name, "#FHEMWEB:WEB", "location.reload('true')", "");
# 3. update 'state'
readingsSingleUpdate($hash, "state", "error", 1);
return;
};
Analoges habe ich für die zweite Fehlermeldung vorgesehen. Seither läuft es sehr stabil, vor allem werden die Ausfälle problemlos weggesteckt.### If the Details shall be the Departure Board with Map
if (AttrVal($name, "ShowDetails","Departure") eq "Departure")
{
### Calculation of parameters for the map
my $zoomOffset = 0.001;
my $lonMin = $longitude - $zoomOffset;
my $latMin = $latitude - $zoomOffset;
my $lonMax = $longitude + $zoomOffset;
my $latMax = $latitude + $zoomOffset;
$htmlCode = '
Dann muss man den Aufbau modifizieren (ca. Zeile: 1044): <td rowspan="' . $TableLines . '">
<iframe width="100%" height="' . $MapHeight . '" src="https://www.openstreetmap.org/export/embed.html?bbox=' . $lonMin . '%2C' . $latMin . '%2C' . $lonMax . '%2C' . $latMax . '&layer=transportmap&marker=' . $latitude . '%2C' . $longitude . '"style="border: 1px solid black"></iframe>
Beim Systemstart (oder reload) gab es zwei Warnungen wegen nicht initialisierten Variablen ( ca. Zeile 642). Erweiterung: my @UniqueDepartureEntries = grep({ my $e = $_; my $key = join '___', map { $e->{$_} // ''; } sort keys %$_;!$seen{$key}++ } @$DepartureEntries);
und etwa Zeile 724 Korrektur: Log3 $name, 5, $name. " : DepartureBnT_UpdateResponseResponse - DepartureEntryValue : " . ($DepartureEntry->{$DepartureEntryKey} // "n/a"); Falls jemand ähnliche Probleme hat; meine sind damit gelöst.Zitat********************************************
LinkUSB 1-wire Interface von ibuttonlink.com
********************************************
*** Kabel
Appendix F auf Seite 61 im The LINK Family Manual
Es handelt such um einen RJ-45-Anschluss. Verwendet wird ein Netzwerkkabel nach Auflegestandard TIA-568B (am häufigsten in Europa).
Prüfung: Am Stecker, Nase nach oben, ist Pin 1 links. Dort liegt bei TIA-568B das weiß-orange Kabel und bei TIA-568A das weiß-grüne Kabel.
RJ-45-Stecker zum Anschluss am LinkUSB wie folgt verkabeln:
1 weiß-orange Masse
2 orange +5V
3 grün-weiß
4 blau Daten
5 weiß-blau Masse
6 grün Aux
7 weiß-braun
8 braun
Ausgangskabel des Temperatursensors: Gelb (DATA) Rot (VCC) und Schwarz (GND)
Adapterplatine
1 Masse
2 Daten
3 +5V
*** Gerät einrichten
Dein User muss in der Gruppe dialout sein.
In einem Terminal laufen lassen zum Beobachten der Events auf dem USB:
sudo dmesg -H -e -w
...
[ +0,000005] usb 1-2: SerialNumber: AG123456
...
sudo vi /etc/udev/rules.d/69-onewire.rules
erstellen (mit angepasster Seriennummer des FTDI-Chips):
ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="AG123456", SYMLINK+="onewire", MODE="0660", GROUP="dialout"
sudo udevadm control --reload-rules && sudo udevadm trigger
ggf. abstecken und wieder anstecken, bis /dev/onewire erscheint
$ ls -l /dev/onewire
lrwxrwxrwx 1 root root 7 20. Feb 14:53 /dev/onewire -> ttyUSB0
*** Erstkontakt über Terminal
sudo apt-get -y install minicom
minicom -b 9600 -D /dev/onewire -8 -L
Befehle:
<Leertaste>: zeigt Version an
\s: zeigt Seriennummer des 1-wire-Masters an
\h: zeigt Hilfe für Kommandos an
*: listet Geräte am Bus
$: Bus scannen
r: Bus resetten P, N, S als Rückgabe (Geräte, keine Geräte, Kurzsschluss)
Minicom verlassen mit Ctrl-A x
*** 1-wire Server
sudo apt-get -y install owfs owserver owfs-doc ow-shell
sudo vi /etc/owfs.conf
erstellen: --> die Konfiguration in der Anleitung von OWServer aus der CommandRef, die und nur die! Die mitgelieferte Konfiguration funktioniert nicht.
owget
28.7B7015000000
/bus.0
/uncached
/settings
/system
/statistics
/structure
/simultaneous
/alarm
owget /28.7B7015000000/temperature
21.6875
(Messung in 1/16°, daher die krummen Werte)
*** Dokus
https://www.owfs.org/index_php_page_linkusb.html
https://de.wikipedia.org/wiki/TIA-568A/B
INFO 192.168.123.229:50369 - "POST /streaming/support/power_on HTTP/1.1" 404
INFO 192.168.123.229:50394 - "GET /streaming/sourceproviders HTTP/1.1" 404