Man nehme eine simple perl Funktion, um einen http-Request zu erzeugen
sub sapiot_send($$) {
my ($name,$event) = @_;
my $scp_account_id = 's0009...trial';
my $scp_landscape_host = '.hanatrial.ondemand.com';
my $device_id = '69a922df-...';
my $oauth_credentials_for_device = '49242e...';
my $message_type_id_event = '47778464e09f1f0184af';
my $url ='https://iotmms';
$url .= $scp_account_id;
$url .= $scp_landscape_host;
$url .= '/com.sap.iotservices.mms/v1/api/http/data/';
$url .= $device_id;
Log3("sapiot",4,"sapiot url: $url");
my $timestamp = int(time());
my $body = '{"mode":"async", "messageType":"';
$body .= $message_type_id_event;
$body .= '", "messages":[{"timestamp": "'.$timestamp.'", "devicename": "'.$name.'", "event": "'.$event.'", "blob": "" }]}';
Log3("sapiot",4,"sapiot body: $body");
my %hu_hash = ();
$hu_hash{url} = $url;
$hu_hash{timeout} = 5;
$hu_hash{header} = "User-Agent: None\r\nContent-Type: application/json;charset=utf-8\r\nAuthorization: Bearer $oauth_credentials_for_device";
$hu_hash{method} = "POST";
$hu_hash{data} = $body;
$hu_hash{callback} = sub($$$) { return undef };
HttpUtils_NonblockingGet(\%hu_hash);
}
und ein notify
define saptest notify .*:.* {sapiot_send($NAME,$EVENT)}
und schon schickt FHEM die ausgewählten events direkt an den IoT-Service der SAP Cloud Platform.
Ok - ein bisschen Vorarbeit auf SAP Seite ist noch notwendig, aber wenn man das Konzept durchschaut hat, ist das Ganze dort in 5 Minuten erledigt. Und das Beste: das Ganze gibts kostenlos von SAP :)
Als nächstes will ich herausfinden, wie ich die eingehenden Meldungen auch wieder nach außen verteilen kann. Dann brauche ich zwischen meinen FHEM-Installationen keine telnet-Verbindungen per FHEM2FHEM mehr.
Wenn du hier weiter bist würden mich mal Anwendungsbeispiele interessieren, die du da realisieren kannst.
/mitlese-merker :)
Zitat von: fischit am 30 November 2017, 10:01:11
Wenn du hier weiter bist würden mich mal Anwendungsbeispiele interessieren, die du da realisieren kannst.
Einfachstes Beispiel: Das gesamte Logging von FHEM anstatt per FileLog oder DbLog als messages an SCP schicken - und das von mehreren FHEM Installationen aus alles in einen großen Topf, unterscheidbar an der DeviceId (pro FHEM Installation genau eine)
Ausserdem "spricht" die SAP Cloud Platform im IoT-Service auch MQTT, wenn man das möchte.
Und andere SCP Services greifen auf die gesammelten Datenbankinhalte zu und machen schöne Grafiken daraus :)