first commit

This commit is contained in:
Souti
2025-03-06 11:09:58 +01:00
commit 11f7d440ff
330 changed files with 38306 additions and 0 deletions

56
python/googlepubsub.py Normal file
View File

@@ -0,0 +1,56 @@
import httplib2
import argparse
import base64
import csv
import datetime
import random
import sys
import time
import base64
import domoticz
# This script connects Domoticz with Google Cloud PubSub API
# To make it works :
# 1 - Install the Google API Client Python Library : pip install --upgrade google-api-python-client (or see https://cloud.google.com/pubsub/libraries)
# 2 - Activate the Google Cloud PubSub API in the Google Cloud Console
# 3 - Generate a Service account key in the Google Cloud Console and download the private key in JSON format
# 4 - Transfer the json key into the domoticz install dir
# 5 - Set the ENV variable GOOGLE_APPLICATION_CREDENTIALS to the path of your Service account key
# 6 - Create a topic in the "PubSub" Google Cloud Console
# 7 - Modify the variable PUBSUB_TOPICNAME below with the topic name
# Required library to make pubsub google api working fine
from apiclient import discovery
from oauth2client import client as oauth2client
# Required privileges
PUBSUB_SCOPES = ['https://www.googleapis.com/auth/pubsub']
# Topic name defined in the Google Cloud PubSub Console
PUBSUB_TOPICNAME = 'projects/affable-enigma-136123/topics/domoticz'
def create_pubsub_client(http=None):
credentials = oauth2client.GoogleCredentials.get_application_default()
if credentials.create_scoped_required():
credentials = credentials.create_scoped(PUBSUB_SCOPES)
if not http:
http = httplib2.Http()
credentials.authorize(http)
return discovery.build('pubsub', 'v1', http=http)
def publish_message(client,topicname,message):
message1 = base64.b64encode(message)
body = {
'messages': [
{'data': message1}
]
}
resp = client.projects().topics().publish(topic=topicname, body=body).execute()
def main(argv):
client = create_pubsub_client()
publish_message(client,PUBSUB_TOPICNAME,data) # noqa: F821
if __name__ == '__main__':
main(sys.argv)