Seite 1 von 1

http request mit JSON Befehl / Java Script - HIlfe

Verfasst: 05.05.2024, 14:27
von superbraz
Gruß in die Runde,

ich möchte einen HTTP / Java Befehl durch ein Programm triggern...
also "wenn virtuelle Taste X, dann führe folgenden http befehl aus"

mit meinem Türöffner klappt es (AXIS)

da nutze ich folgenden Befehl und der Türöffner wird 3 Sekunden geöffnet:

Code: Alles auswählen

string stderr;
string stdout;
string url="http://USER:PASSWORD@IP/axis-cgi/io/port.cgi?action=PORT%3A%2F3000%5C";
system.Exec("wget -O /dev/null -q "#url, &stdout, &stderr);
nun soll das Ganze noch durch einen LED Stripe in der Türsprechstation signalisiert werden,
der Hersteller Support hat mir folgendes per Mail geschickt, aber ich bekomme es nicht über die CCU im Skript "gesendet",
also auf deutsch: es funktioniert nicht...nun habe ich aber von Skripten und Co. keine wirkliche Ahnung.
Kann mir das jemand von euch ggf so zusammenstellen, wie es korrekt ist?

Code: Alles auswählen

[http://{{username}}:{{password}}@{{ip}}/vapix/axdsapi]http://{{username}}:{{password}}@{{ip}}/vapix/axdsapi

{

  "axdsapi:SetUiFeedback": {

    "internal": false,

    "ledFeedbacks": [

      {

        "led": "stripe",

        "runStyle": "oneshot",

        "durationOnMillisec": 100,

        "durationOffMillisec": 100,

        "valueOn": "green",

        "valueOff": "off",

        "loops": 15

      }

    ]

  }

}
er hat noch auf folgenden LInk verwiesen: https://www.axis.com/vapix-library/subj ... -t10163356

wäre sehr dankbar für Hilfe! :)

Re: http request mit JSON Befehl / Java Script - HIlfe

Verfasst: 12.05.2024, 14:03
von Bembi
Moin,
ich interpretiere mal aus Deiner Doku Abschnitt "cURL Simple" und würde mal folgendes probieren:
(alles in einer Zeile, ich schreibe das hier nur mehrzeilig, damit es besser lesbar ist...)

http://USER:PASSWORD@IP/vapix/axdsapi

?SetUiFeedback_internal=false

&SetUiFeedback_ledFeedbacks_led="stripe"
&SetUiFeedback_ledFeedbacks_runStyle="oneshot"
&SetUiFeedback_ledFeedbacks_durationOnMillisec=100
&SetUiFeedback_ledFeedbacks_durationOffMillisec=100
&SetUiFeedback_ledFeedbacks_valueOn="green"
&SetUiFeedback_ledFeedbacks_valueOn="off"
&SetUiFeedback_ledFeedbacks_loops=15

oder

http://USER:PASSWORD@IP/vapix/axdsapi

?format=simple

&SetUiFeedback_internal=false
&SetUiFeedback_ledFeedbacks_led="stripe"
&SetUiFeedback_ledFeedbacks_runStyle="oneshot"
&SetUiFeedback_ledFeedbacks_durationOnMillisec=100
&SetUiFeedback_ledFeedbacks_durationOffMillisec=100
&SetUiFeedback_ledFeedbacks_valueOn="green"
&SetUiFeedback_ledFeedbacks_valueOn="off"
&SetUiFeedback_ledFeedbacks_loops=15

Re: http request mit JSON Befehl / Java Script - HIlfe

Verfasst: 18.05.2024, 11:25
von superbraz
hallo und vielen Dank schonmal, für deine Hilfe...

gebe ich die URL in den Browser ein (beide varianten) kommt:

Code: Alles auswählen

No action specified!
path:
/vapix/intercom
options:
SetUiFeedback_internal=false&SetUiFeedback_ledFeedbacks_led=%22stripe%22&SetUiFeedback_ledFeedbacks_runStyle=%22oneshot%22&SetUiFeedback_ledFeedbacks_durationOnMillisec=100&SetUiFeedback_ledFeedbacks_durationOffMillisec=100&SetUiFeedback_ledFeedbacks_valueOn=%22green%22&SetUiFeedback_ledFeedbacks_valueOn=%22off%22&SetUiFeedback_ledFeedbacks_loops=15
API functions:
axdsapi:GetServiceCapabilities
axdsapi:ValidateConfiguration
axdsapi:SetConfiguration
axdsapi:UpdateConfiguration
axdsapi:GetConfiguration
axdsapi:Configuration
axdsapi:GetServerReport
axdsapi:GetCardReaderConfiguration
axdsapi:GetSupportedTagTypes
axdsapi:GetDefaultTagTypes
axdsapi:GetTagTypes
axdsapi:SetTagTypes
axdsapi:GetLastTag
axdsapi:GetTag
axdsapi:InjectTag
axdsapi:RegisterReader
axdsapi:UnregisterReader
axdsapi:KeepAliveReader
axdsapi:GetCurrentReaders
axdsapi:ProbeIPAccessConfiguration
axdsapi:UpdateIPAccessConfiguration
axdsapi:GetCardData
axdsapi:WriteCardData
axdsapi:ReaderCommand
axdsapi:GetExternalOSDPStatus
axdsapi:GetKeySequence
axdsapi:GetLastKeySequence
axdsapi:InjectKeySequence
axdsapi:CallTerminate
axdsapi:CallAnswer
axdsapi:CallByPhonebookEntryId
axdsapi:InjectPresence
axdsapi:SetUIBehavior
axdsapi:GetLedCapabilities
axdsapi:SetStateVisualization
axdsapi:SetUiFeedback
axdsapi:GetContactUIAttributes
axdsapi:GetContacts
axdsapi:SetContacts
axdsapi:RemoveContacts
axdsapi:Contacts
axdsapi:ExportContacts
axdsapi:ImportContacts
axdsapi:RemoveAllContacts
axdsapi:GetPhonebookEntries
axdsapi:SetPhonebookEntries
axdsapi:RemovePhonebookEntries
axdsapi:PhonebookEntries
axdsapi:ExportPhonebookEntries
axdsapi:ImportPhonebookEntries
axdsapi:RemoveAllPhonebookEntries
axdsapi:GetScreenshot
axdsapi:InjectTouch
axdsapi:Backup
axdsapi:Restore
axdsapi:VAPIX
mache ich aus dem ? ein : hinter axdsapi kommt:

Code: Alles auswählen

Forbidden
You don't have permission to access this resource.
trotz korrecter credentials...

Re: http request mit JSON Befehl / Java Script - HIlfe

Verfasst: 28.05.2024, 11:07
von superbraz
hast du noch eine Idee oder kann noch jmd helfen?

Re: http request mit JSON Befehl / Java Script - HIlfe

Verfasst: 28.05.2024, 11:36
von Fonzo
superbraz hat geschrieben:
28.05.2024, 11:07
hast du noch eine Idee oder kann noch jmd helfen?
Entsprechend der API des Herstellers in der Payload als JSON und POST zu übergeben. Du versuchst es aber mit GET das kann nicht funktionieren.

Ich besitze so ein Gerät nicht, daher musst Du das wenn selber testen.

Du kannst mal zu Testzwecken aus dem NEO Server der HmIP-CCU3, falls eine HmIP-CCU3 genutzt wird, folgendes Skript zu Testzwecken ausführen.

Wenn das so grundsätzlich funktioniert, dann stimmt das so mit dem API Aufruf, dann musst Du das nur anpassen, wenn Du das nicht mit Javascript verschicken willst.

Code: Alles auswählen

const http = require('http');

// IP-Adresse und Anmeldeinformationen der Axis Türsprechstation
const ip = 'IP-ADRESSE';
const username = 'dein_benutzername';
const password = 'dein_passwort';

// JSON-Daten für die Anfrage
const data = JSON.stringify({
  "axdsapi:SetUiFeedback": {
    "internal": false,
    "ledFeedbacks": [
      {
        "led": "stripe",
        "runStyle": "oneshot",
        "durationOnMillisec": 100,
        "durationOffMillisec": 100,
        "valueOn": "green",
        "valueOff": "off",
        "loops": 15
      }
    ]
  }
});

// Optionen für die HTTP-Anfrage
const options = {
  hostname: ip,
  port: 80,
  path: '/vapix/axdsapi',
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Content-Length': data.length,
    'Authorization': 'Basic ' + Buffer.from(username + ':' + password).toString('base64')
  }
};

// Erstelle die Anfrage
const req = http.request(options, (res) => {
  let responseData = '';

  res.on('data', (chunk) => {
    responseData += chunk;
  });

  res.on('end', () => {
    console.log('Response:', responseData);
  });
});

// Fehlerbehandlung
req.on('error', (error) => {
  console.error('Error:', error);
});

// Sende die Anfrage mit den JSON-Daten
req.write(data);
req.end();

Re: http request mit JSON Befehl / Java Script - HIlfe

Verfasst: 28.05.2024, 14:14
von Black
Du brauchst System.Exec, musst aber curl und Post benutzen und nicht wget.

Nicht brauchen tust du fonzo seine werbelösung.

Curl und Post wurde schon xfach erfolgreich eingesetzt hier im forum

Black

Dieser Tipp ist wie immer kostenlos und braucht weder Softwareinvestitionskosten noch jährliche SUS oder Abo Gebühren

Re: http request mit JSON Befehl / Java Script - HIlfe

Verfasst: 28.05.2024, 14:30
von Silverstar
Und mit Postman kann man solche api-requests schön zusammenbauen und ausprobieren und sich dann z.B. im curl-Format ausgeben lassen. Wenn man das Programm herunterlädt statt die Webversion zu verwenden, braucht es auch keinen SignUp/Login (und keine weiteren eventuell kostenpflichtigen Dinge).

https://www.postman.com/