Downloads von NPM

Stationary

Well-known member
Weiß zufälligerweise jemand, wie man in der „types.js“ die hier bereitgestellt wird

https://www.npmjs.com/package/hap-nodejs-community-types?activeTab=code

in Zeile 447 den Datentyp korrigieren kann? Dort wird für einen barometrischen Wert UINT8 verwendet. Das ist natürlich falsch, da damit keine Werte über 255 möglich sind. Dort muß es korrekt UINT16 heißen.

Bei jedem Update der Homebridge wird von der npm-Webseite wieder die fehlerhafte types.js heruntergeladen und man muß sie dann nachträglich wieder korrigieren.
Der ursprüngliche Ersteller nimmt leider keine Chat/e-mail entgegen, er ist einer der Principal Engineers des Browsers “Brave”.
 
Zuletzt bearbeitet:
Naja, wenn A von B bezieht und Du als C bei B nix bewirken kannst... schwierig... Könntest halt lokal mit einem Script (sed) drübergehen und das immer ändern. Muss man sich nur überlegen, was der Auslöser dafür sein "kann" (hab von Homebridge und so halt keine Ahnung), aber ggf. kann man nach der System-Version von Homebridge schauen und darauf eine Automatisierung ansetzen? Halt irgendwas in die Richtung: Wenn die Versionsnummer sich ändert, führe Script XY aus. Alternativ kannst Du evtl. irgendwas "nach dem Update" ausführen? Wäre natürlich die netteste Möglichkeit.
 
Bisher gehe ich immer mit nano von Hand drüber, aber ich sollte mir einfach die “reparierte” Datei wegspeichern und dann nach einem Update zurückkopieren. Eleganter wäre einfach, wenn man bei npm irgendwie die Datei gefixt bekäme, weil ich ja nicht der einzige bin, der dort eine fehlerhafte Datei bezieht.
 
Hab's mal kurz installiert... Ich vermute mal, dass das Ding 24/7 durchläuft und nur bei Updates neugestartet wird, oder? Dann könnte man es ggf. mal über die Einstellungen versuchen... Dort unter "OS Specific Settings" -> "Linux", evtl. kriegt man ihm statt einfach nur "reboot" auch etwas in die Richtung "sed .... && reboot" untergeschoben... Falls das nicht geht, gibt man dort halt einfach nur das Script an, was dann wiederum hingeht und den Eintrag prüft (ggf. wieder ändert) und einen Reboot durchführt 😅
 
Najo, wenn der Typ sich nicht mehr darum kümmert (letzte Änderung ist ja nu auch 5+ Jahre her)... bzw. Github-Repo anscheinend sogar 8 Jahre... Könntest ja via Github eine Änderung einreichen 🙃
 
Wie hast Du das Ding denn laufen? Ich hab hier grade einfach ein Ubuntu 22.04 genommen, da kann man ja - abseits von Homebridge - so ziemlich alles machen was man will... Wenn mit einem Homebridge-Update ein Reboot einher geht... Mach einfach kurzerhand ein Script mit sed, wo die entsprechende Zeile ausgetauscht wird und sag in der Crontab, dass das Ding beim Reboot ausgeführt wird und jut ist... Alternativ halt inotify bzw. incron. Via incron kannste halt die "problematische" Datei auf Veränderung überwachen und falls das Ding zuckt, rattert direkt Dein Script drüber, welches den ungewünschten Inhalt wieder auf den gewünschten umschreibt.
 
Läuft bei mir auf RasPi4 mit RasPi OS Bullseye und Installation der Homebridge mit einem Plugin speziell für den Sensehat. Was geladen wird, ist die Version von npm, denke ich mal. Das sensehat Plugin wird beispielsweise “npm install -g homebridge-sensehat” geladen, beim Update der Homebridge wird die Datei im Verzeichnis
/var/lib/homebridge/node_modules/homebridge-sensehat/node_modules/hap-nodejs-community-types/types.js
auch erneuert. Üblicherweise wird nur das Homebridge-Paket neu gestartet, allerdings starte ich in der Tat den ganzen Pi nach einem Update neu. Da könnte ich in der Tat per cronjob einen Kopierbefehl oder einen sed command drüberlaufen lassen. Bei sed muß ich nochmal gucken, wie das genau geht.
 
Ich würde die zweite Variante mit "-i" und nur einmal dem Filename nehmen.
Bei der oberen wirst Du eher ein unerwartetes Ergebnis erhalten. ;)
 
Naja..... "eigentlich" willst Du ja etwas "bestimmtes" in einer "variablen"(!) Zeile ändern (die Datei kann sich schliesslich auch ändern und die Zeilennummern verrutschen). Ändert man einfach nur eine Zeile anhand einer Zeilennummer, kann da schon mächtig in die Hose gehen, falls sich die Zeilennummer mal ändert. Zurück bleibt eine geschrottete Datei mit sonstwas für Auswirkungen - recht ähnlich verhält es sich mit dem reinen überschreiben der kompletten Datei. Wäre also schon etwas zielführender, wenn man sich an einem bestimmten (einmaligen) String orientiert und dann - abhängig vom gesuchten String - die entsprechend gewünschten Dinge ändert 🙃
 
Wenn man wollen würde könnte man, unabhängig von der Zeilennummer, auch mit Regex drangehen. Ist unter sed leider greedy und mir ist auch kein Parameter bekannt um das einzuschränken, also zwei Punkte möglichst nahe davor und dahinter finden (die nicht weiter entfernt nochmal auftauchen) - das wäre in dem Sinne eine Option:
Bash:
#!/bin/bash

cp /var/lib/homebridge/node_modules/homebridge-sensehat/node_modules/hap-nodejs-community-types/types.js /var/lib/homebridge/node_modules/homebridge-sensehat/node_modules/hap-nodejs-community-types/types.js.BAK

sed -i -z -E 's/(Barometric Pressure.*)UINT8(.*CommunityTypes.AtmosphericPressureLevel.UUID)/\1UINT16\2/' /var/lib/homebridge/node_modules/homebridge-sensehat/node_modules/hap-nodejs-community-types/types.js
Barometric Pressure und CommunityTypes.AtmosphericPressureLevel.UUID rahmen das gesuchte Vorkommen von UINT8 ein, also sicher zu finden.

Überprüfen dann ggf. mittels
Bash:
grep -A 2 "Barometric" /var/lib/homebridge/node_modules/homebridge-sensehat/node_modules/hap-nodejs-community-types/types.js
Also - nur für den Fall, dass die Zeilennummer sich eventuell mal ändern können sollte, sonst reicht die obige Variante natürlich :)
 
@blurrrr Am gewünschten String kannst Du Dich nicht orientieren,
Code:
 format:   Characteristic.Formats.UINT8,
taucht mindestens 14 mal in der Datei auf:
1715520577712.png
D.h. ich muß drauf hoffen, daß eine Datei, die seit 5 Jahren statisch ist, das auch in Zukunft ist.
Ich habe jetzt mal an die Presseabteilung von Brave geschrieben, mit der Bitte um Weiterleitung einer Nachricht an einen ihrer Entwickler.
 
Aber mal ganz praktisch... ;) Die Datei hat sich in den letzten 5 Jahren bei npm nicht mehr verändert. Würde da nicht ganz "dumpf" ein cp reichen. Also einfach nach einem Update / Reboot, die von Dir angepasste Datei einfach drüber kopieren.

Wer es etwas feiner will... man hält eine Kopie der aktuell falschen npm-Datei vor und eine Kopie der von Dir korrigierten Datei.
Nach jedem Reboot prüft man ob die Datei gleich der falschen npm-Datei ist, ist sie gleich der falschen npm-Datei kopiert man die korrigierte Datei von Dir drüber.
Ist die Datei nicht gleich der falschen npm-Datei, prüft man ob sie gleich Deiner korrigierten Datei ist, falls ja, ist man fertig.
Ist die Datei aber weder gleich der aktuell falschen npm-Datei noch gleich Deiner korrigierten Datei, dann gibt man einen "Alarm" (Mail oder what ever)... dann hat sich vielleicht wirklich was an der Datei nach über 5 Jahren geändert. :D
 

Zurzeit aktive Besucher

Keine Mitglieder online.

Letzte Anleitungen

Statistik des Forums

Themen
5.215
Beiträge
52.080
Mitglieder
4.954
Neuestes Mitglied
jakes
Zurück
Oben