FHEM als Thing in der SAP Cloud Platform

Begonnen von betateilchen, 29 November 2017, 20:33:31

Vorheriges Thema - Nächstes Thema

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

fischit

Wenn du hier weiter bist würden mich mal Anwendungsbeispiele interessieren, die du da realisieren kannst.

nils_

viele Wege in FHEM es gibt!

betateilchen

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 :)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!