FHEM Forum

FHEM => Sonstiges => Thema gestartet von: TWART016 am 10 Juni 2017, 17:41:25

Titel: von PC Daten an FHEM senden
Beitrag von: TWART016 am 10 Juni 2017, 17:41:25
Hallo,

mein Ziel ist es einen Wert von einem Windows PC an einen dummy in FHEM zu senden. Es läuft ein kleines batch Programm, welches Dateien kopiert. Die Anzahl speichere ich in einer Variable. Wie kann ich diesen Wert an FHEM senden?

Für mich sind es 2 Teile
1) Aufrufen einer URL aus dem batch, nofalls auch Umwege über poweshell. Es wäre schön, wenn der Wert übertragen wird, ohne dass ein Browserfenster sich öffnet.
2) Übertragen des Wertes an FHEM. Wie kann ich in einen dummy einen oder mehrere Werte schreiben?

Eventghost läuft zwar auf dem PC, damit kann ich aber keine Werte an einen anderen Webserver senden.

Wie habe ihr sowas gelöst?


Gruß TWART016
Titel: Antw:von PC Daten an FHEM senden
Beitrag von: CoolTux am 10 Juni 2017, 17:49:06
Du kannst deine Ergebnisse als setreading befehl per Telnet senden oder als url Aufruf. Sowas hatten wir hier schon Recht oft. Bitte einmal suchen.
Titel: Antw:von PC Daten an FHEM senden
Beitrag von: TWART016 am 10 Juni 2017, 18:56:37
Jetzt kann ich zumindest per URL einen Status setzen
https://192.168.178.11:8083/fhem?cmd.testStatus1=set%20testStatus1%20off

Nur wie kann ich anstatt off eine Variable mitgeben?

Jemand eine Idee wie ich aus batch oder powershell eine URL im Hintergrund aufrufen kann?
Titel: Antw:von PC Daten an FHEM senden
Beitrag von: amenomade am 10 Juni 2017, 19:00:57
Zitathttps://192.168.178.11:8083/fhem?cmd.testStatus1=set%20testStatus1%20off

Da fehlt noch den CSRF Token oder?  :P  :-X

Mit curl kannst Du in Powershell o.ä. Urls aufrufen, ohne dass ein Browserfenster aufgeht.
Titel: Antw:von PC Daten an FHEM senden
Beitrag von: TWART016 am 10 Juni 2017, 19:10:47
Zitat von: amenomade am 10 Juni 2017, 19:00:57
Da fehlt noch den CSRF Token oder?  :P  :-X
csrfToken ist noch auf none. Brauche ich das trotzdem?

Zitat von: amenomade am 10 Juni 2017, 19:00:57
Mit curl kannst Du in Powershell o.ä. Urls aufrufen, ohne dass ein Browserfenster aufgeht.
danke, schaue ich mir mal an. Oder hast du einen Code, vielleicht sogar um das aus batch aufzurufen?
Titel: Antw:von PC Daten an FHEM senden
Beitrag von: amenomade am 10 Juni 2017, 20:45:48
ZitatcsrfToken ist noch auf none. Brauche ich das trotzdem?
Nein nein... in dem Fall brauchst Du es nicht...

Für curl, kannst Du einfach
$url = "http://www.google.de"
$result = curl $url


Ansonsten: http://lmgtfy.com/?q=powershell+curl+return+code
Titel: Antw:von PC Daten an FHEM senden
Beitrag von: Otto123 am 10 Juni 2017, 21:57:07
Hi,

ich hätte ein Powershell Beispiel für Dich. Vielleicht hilft das. Diese PS Script wird von FHEM über ssh aufgerufen und meldet an einen Dummy in FHEM den Abarbeitungs Status zurück.

Bei Fragen bitte fragen  ;)

#Aufruf des Backups mit Parameter
param(
[string]$Hostname = "192.168.178.104",
[string]$Name,
[string]$Event
)
$Hostname=$Hostname + ":8083"
$Servername="ServerS1"

Set-Location $PSScriptRoot

#Der Server hat Probleme mit Zugriff über IPv4
# Die Namensauflösung macht nur IPv6
# out-nulll verhindert Ausgaben und verhindert Sicherheitsmeldungen vom System
$wp=Invoke-WebRequest -UseBasicParsing -Uri "http://$Hostname/fhem?XHR=1"
$token = $wp.Headers["X-FHEM-csrfToken"]

#Push-Location $(Split-Path $Script:MyInvocation.MyCommand.Path)

$URL="http://$Hostname/fhem?cmd=set%20$Name%20_$Event&fwcsrf=$token"
Invoke-WebRequest -UseBasicParsing -Uri $URL | out-null

#sleep 10 # Nur für Test
Write-Output "$(Get-Date -Format yyyy.MM.dd" "HH:mm:ss) Datei-Backup $Servername gestartet"
.\BackupNeueVersion.ps1 -Test $false > $null

$URL="http://$Hostname/fhem?cmd=set%20$Name%20ServerBackup&fwcsrf=$token"
Invoke-WebRequest -UseBasicParsing -Uri $URL | out-null
Write-Output "$(Get-Date -Format yyyy.MM.dd" "HH:mm:ss) Server-Backup $Servername gestartet"
wbadmin start backup -quiet > $null

$URL="http://$Hostname/fhem?cmd=set%20$Name%20beendet&fwcsrf=$token"
Invoke-WebRequest -UseBasicParsing -Uri $URL | out-null
Write-Output "$(Get-Date -Format yyyy.MM.dd" "HH:mm:ss) Backup $Servername beendet"


Gruß Otto
Titel: [gelöst] Antw:von PC Daten an FHEM senden
Beitrag von: TWART016 am 11 Juni 2017, 16:52:54
Besten Dank. So habe ich es nun hinbekommen.

In der Batch folgende Zeile:
powershell -Command "& {(New-Object System.Net.WebClient).DownloadString('https://192.168.178.11:8083/fhem?cmd.testStatus1=set%20testStatus1%20off')}"

Auch mit Variablen möglich:
set variable1=testNummer1
powershell -Command "& {(New-Object System.Net.WebClient).DownloadString('http://192.168.178.11:8085/fhem?cmd.testStatus1=set%%20testStatus1%%20%variable1%')}"