Re: JSON-APIs auswerten
Verfasst: 25.06.2023, 09:46
Nur zur Richtigstellung. Cuxd muss nicht installiert werden, es steht dem Anwender nur als Alternative zur Verfügung.
Heimautomation mit ELV HomeMatic und FHZ Funk-Hauszentralen
https://homematic-forum.de/forum/
Wenn Du persönlich unbedingt meinst, alles was der Hersteller eQ-3 auf der CCU3 im Auslieferungszustand installiert hat, wieder unbedingt persönlich entfernen zu müssen, wird es eben komplizierter in der Durchführung, weil Du dann keine dokumentierten statischen JavaScript Methoden benutzen kannst. Auch Henke benutzt JavaScript, das wird vom Hersteller auf der CCU3 mit Node.js vorinstalliert. Wenn Du das vorinstallierte Node.js auf der CCU3 wieder unbedingt entfernen willst, kannst Du auch kein JavaScript benutzen bzw. aufrufen. Jeder hat für sich die freie Wahl es eben so kompliziert zu machen, wie man es eben persönlich haben will.
Wenn Du das unbedingt in einen anderen Thread ausgelagert haben willst, dann kannst Du in Deinem Eingangspost aber auch gleich wieder den Hinweis auf Henke entfernen, wenn Dir der Aufruf von Javascript über Node.js auf der CCU persönlich nicht passt.
Das Javascript kann im von eQ-3 standardmäßig auf der CCU3 vorinstalliertem - und von Henke oben genannten - node.js ausgeführt werden:
Code: Alles auswählen
# node -e "
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'
var url = 'https://dummyjson.com/products';
// Benutze das HTTP- oder HTTPS-Modul je nach URL.
var httpx = (url.indexOf('https://') === 0) ? require('https') : require('http');
var req = httpx.get(url, function(response) {
console.log('Antwort erhalten.', response.statusCode);
var responseData = '';
response.on('data', function(chunk) {
responseData += chunk;
});
response.on('end', function() {
var jsonData = JSON.parse(responseData);
const product = jsonData.products.find(item => item.id === 6);
console.log('Title:', product.title);
console.log('Description:', product.description);
});
});
req.on('error', function(err) {
console.error(err);
});
"
Antwort erhalten. 200
Title: MacBook Pro
Description: MacBook Pro 2021 with mini-LED display may launch between September, November
Ja das kann es, nur eben nicht, wenn man wie Black der persönlichen Meinung ist, man müsste Node.js wieder unbedingt von der CCU3 entfernen, dann funktioniert auch kein JavaScript mehr.
gleiches Beispiel mit jq (s. https://jqlang.github.io/jq/; kommt mit der Installation von CUxD auf die CCU):
Code: Alles auswählen
# echo '{
"Vorname": "Ronald",
"Nachname": "Reagan",
"Geburtsdatum": "1911-02-06",
"Nationalitaet": "US-amerikanisch",
"Partei":
{
"Name": "Republican Party",
"Synonyme": ["Republikaner", "Grand Old Party", "GOP"],
"Hauptsitz": "Washington/D.C.",
"Gründungsdatum": "1854-03-20",
"Gründungsdoort": "Ripon"
},
"Amt": "US-Präsident", ,
"Hobbys": ["Reiten", "Golfen", "Lesen"],
"verheiratet": true,
"Kinder": [
{
"Vorname": "Michael",
"Nachname": "Reagan" },
{
"Vorname": "Patti",
"Nachname": "Davis" },
{
"Vorname": "Ron",
"Nachname": "Reagan" }]
}' | ./cuxd-tools/jq '.Vorname'
"Ronald"
--- und ---
...
}' | ./cuxd-tools/jq '.Kinder[1].Nachname'
"Davis"
Ich weiss, lieber Fonzo, dass du ein mittelschweres Defizit im Fachbereich Leseverstehen hast... Das Vorgebrachte Zitat von dir ist niemals so in der Form von mir verbreitet worden...Ich bin nicht dafür verantwortlich, was du dir in deinem Hinterzimmer zusammenphantasierst.
Es ist mir persönlich vollkommen egal, was Du für Dich meinst persönlich entfernen zu müssen, um dann danach vielleicht wieder etwas nachträglich auf eigene Verantwortung auf einer CCU3 zu installieren. Der Hersteller eQ-3 installiert Node.js mit dem NEO Server auf der CCU3 bereits vor. Das kann man benutzen bzw. ansprechen und damit Javascript auf der CCU3 ausführen oder es eben auch sein lassen.
Genau dieser Ansatz funktioniert deshalb von sich aus mit der original CCU3, ohne weiteres Zutun oder dem nachträglichen installieren von weiterer Zusatzsoftware, weil eben auf der original CCU3 bzw. RaspberryMatic bereits Node.js mit dem NEO Server von eQ-3 installiert worden ist, um Javascript bei Bedarf benutzen zu können.