Hallo zusammen,
ich bin in der freiwilligen Feuerwehr aktiv.
Wir verwenden eine Software mit App für Alarmierung, Termine und Verfügbarkeit von Fahrzeugen und Einsatzkräften. Auch die Rückmeldung ob man zum Einsatz kommt läuft in das Portal.
Nun möchte die API (Swagger UI) in integrieren.
Die Hilfeseite von Feuersoftware hilft mir nur bedingt weiter. Connect Benutzer API - Feuer Software GmbH
Hätten jemand eine Vorgehensweise für mich ?
Was muss ich in IPS tun um an die Daten zu kommen ?
Hallo Heiko,
ich habe damit gar keine Erfahrung.
Die Dokumentation kann ich lesen. Meist ist diese halt von jemand verfasst der das kann. Ich zweifle dann schon nach 2 Sätzen.
Habe mit Hilfe des Forum und anderer Quellen schon einiges lösen können. Mir fehlt halt noch etwas Wissen um zu sagen so oder so gehe ich da ran.
API Key habe ich.
Viele Grüße
Mario
diese beide
/interfaces/public/user/useravailability]
/interfaces/public/vehicle/{radioId}/status]
beispielsweise.
Wobei ich nicht weis ob ich auf die Daten außerhalb von User zugreifen kann.
erweitern bekomme ich dann hin…
DANKE
Hier mal auf die schnelle ohne Garantie zusammengekloppt …
<?php
$API_KEY = '<here api key>';
$BASE_URL = 'https://connectapi.feuersoftware.com';
// Funktionsaufruf
userAvailability($BASE_URL, $API_KEY,'available', 7) {
/*
* userAvailability
*
* @param string $base Basis URL
* @param string $token Dies ist der Hex-String zur Authentifizierung welchen Sie zuvor im Connect Portal erzeugt haben.
* @param string $status Hier wird ein String erwartet mit einem der folgenden Werten ('available'/'limitedAvailable'/'notAvailable')
* @param int $lifetime Gibt an für wie viele Tage die Verfügbarkeit gesetzt wird. Nach Ablauf der Zeit wird die Verfügbarkeit automatisch zurück gesetzt.
*/
function userAvailability($base, $token, $status, $lifetime) {
// Build url
$url = $base . '/interfaces/public/user/useravailability';
$url .= '?token=' . $token;
$url .= '&status=' . $status;
$url .= '&lifeTimeDays=' . $lifetime;
$response = doRequest($url, null);
if($response !== false) {
echo 'ERFOLGREICH' . PHP_EOL;
}
else {
echo 'NICHT ERFOLGREICH' . PHP_EOL;
}
}
/*
* doRequest - Sends the API call
*
* If $request not null, we will send a POST request, else a GET request.
* Over the $method parameter can we force a POST or GET request!
*/
function doRequest($url, $request, $method = 'GET')
{
// Return
$ret = false;
// CURL
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_USERAGENT, USER_AGENT);
if($request != null) {
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_POSTFIELDS, $request);
}
else {
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
}
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
curl_close($curl);
//var_dump($response);
if($response != null) {
return $response;
}
return $ret;
}
Es wirft einen Fehler.
Parse error: syntax error, unexpected ‚userAvailability‘ (T_STRING), expecting ‚(‘ in C:\ProgramData\Symcon\scripts\18742.ips.php on line 18
Was hat es mit dem token auf sich ? Für was ist der ?
<?php
$API_KEY = '<here api key>';
$BASE_URL = 'https://connectapi.feuersoftware.com';
// Funktionsaufruf
userAavailability($BASE_URL, $API_KEY,'available', 7);
/*
* userAavailability
*
* @param string $base Basis URL
* @param string $token Dies ist der Hex-String zur Authentifizierung welchen Sie zuvor im Connect Portal erzeugt haben.
* @param string $status Hier wird ein String erwartet mit einem der folgenden Werten ('available'/'limitedAvailable'/'notAvailable')
* @param int $lifetime Gibt an für wie viele Tage die Verfügbarkeit gesetzt wird. Nach Ablauf der Zeit wird die Verfügbarkeit automatisch zurück gesetzt.
*/
function userAavailability($base, $token, $status, $lifetime) {
// Build url
$url = $base . '/interfaces/public/user/useravailability';
$url .= '?token=' . $token;
$url .= '&status=' . $status;
$url .= '&lifeTimeDays=' . $lifetime;
$response = doRequest($url, null);
if($response !== false) {
echo 'ERFOLGREICH' . PHP_EOL;
}
else {
echo 'NICHT ERFOLGREICH' . PHP_EOL;
}
}
/*
* doRequest - Sends the API call
*
* If $request not null, we will send a POST request, else a GET request.
* Over the $method parameter can we force a POST or GET request!
*/
function doRequest($url, $request, $method = 'GET')
{
// Return
$ret = false;
// CURL
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
if($request != null) {
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_POSTFIELDS, $request);
}
else {
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
}
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
curl_close($curl);
//var_dump($response);
if($response != null) {
return $response;
}
return $ret;
}
es kommt diese Meldung aber die Verfügbarkeit wird geändert.
Warning: Use of undefined constant USER_AGENT - assumed ‚USER_AGENT‘ (this will throw an Error in a future version of PHP) in C:\ProgramData\Symcon\scripts\18742.ips.php on line 48
NICHT ERFOLGREICH
Wenn ich die Verfügbarkeit nur wissen möchte muss ich das anders machen ?
Viele Webseiten prüfen den User-Agent (also das, was der Browser vorgibt zu sein). So könnte man theoretisch dem alten Internet-Explorer eine andere (auf seine kaputte Engine zugeschnittene) Webseite liefern, als anderen Browsern. Einige dieser APIs prüfen auf den Useragent ‚Hersteller Android App‘. Nur wenn der gesendet wird, liefern sie überhaupt was. In deinem Fall scheint er nicht nötig zu sein, also kannst du die Zeile einfach löschen.
Alternativ eben einen User-Agent angeben (z.B. 'Mescalero IP-Symcon'.
Die Fehlermeldung sagt, dass du eine sog. Konstante verwendest. Die ist aber nicht definiert.
Ok verstanden. Wenn ich diese availability nur lesen und nicht schreiben möchte wo muss ich da anfassen.
Hintergrund den Status möchte ich eigentlich nur in der App und nicht aus Symcon setzen.
Wegen dem userAgent ? Das hatte ich missverstanden. Sorry
Bin jetzt an dem Rückmeldestatus zum Einsatz, den möchte ich auch aus IPS schreiben.
mal sehen, ich haue mal in die Tasten.
hmm muss ich den Teil der Funktion komplett auf userstatus kopieren?
/* userStatus
*Funktionsaufruf
*/
userstatus($BASE_URL, $API_KEY, $status, $driveTimeSeconds, $siteid);